Процесс загрузки через ядро используется обычно на Floppy дисках и происходит в следующем порядке:
boot sector переписывает свой код по адресу 9000h:0;
Загружает с диска Setup, который записан в нескольких последующих секторах, по адресу: 9000h:0200h;
Загружает ядро по адресу 1000h:0. Ядро так же следует в последующих секторах за Setup. Ядро не может быть больше чем 508 килобайт, но так как оно, чаще всего, архивируется - это не страшно;
Запускается Setup;
Проверяется корректность Setup;
Производится проверка оборудования средствами BIOS. Определяется размер памяти, инициализируется клавиатура и видеосистема, наличие жестких дисков, наличие шины MCA (Micro channel bus), PC/2 mouse, APM BIOS (Advanced power management);
Производится переход в защищенный режим;
Управление передается по адресу 1000h:0 на ядро;
Если ядро архивировано, оно разархивируется. иначе просто переписывается по адресу 100000h (за пределы первого мегабайта);
Управление передается по этому адресу;
Активируется страничная адресация;
Инициализируются idt и gdt, при этом в кодовый сегмент и в сегмент данных ядра входит вся виртуальная память;
Инициализируются драйвера;
Управление передается неуничтожимому процессу init;
init запускает все остальные необходимые программы в соответствии с файлами конфигурации;
В случае загрузки через LILO:
boot sector LILO переписывает свой код по адресу 9a00h:0;
До адреса 9b00h:0 размещает свой стек;
Загружает вторичный загрузчик по адресу 9b00h:0 и передает ему управление;
Вторичный загрузчик загружает boot sector ядра по адресу 9000h:0;
Загружает Setup по адресу 9000h:0200h;
Загружает ядро по адресу 1000h:0;
Управление передается программе Setup. Зачем загружает boot sector из ядра? не понятно;
В Linux есть такое понятие как "big kernel". Такой kernel сразу загружается по адресу 100000h.