Загрузка Linux.
Для Linux свойственно два способа загрузки:
- Загрузка через boot sector ядра;
- Загрузка через boot manager LILO (Linux Loader);
Процесс загрузки через ядро используется обычно на 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.
Содержание раздела