Процесс загрузки

Ядро ОС загружается загрузчиком GRUB с диска и размещается в первых 16 Мб памяти, начиная с адреса 0х100000 (1 Мб). 32-битный загрузочный код ядра сохраняет векторы прерываний реального режима, настраивает страничную адресацию первых 8 Мб и переводит процессор в 64-битный режим. После этого начинается исполнение 64-битного С-кода.

Настраивается полноценная страничная адресация (ядро в первых 16 Мб и куча ядра в верхней половине виртуальной памяти). Инициализируется эмулятор терминала. Заполняется IDT, устанавливаются обработчики исключений, таймера PIT, клавиатуры. Включается планировщик задач, создаются поток простоя (idle thread) и поток, ответственный за перерисовку терминала. Создается VFS, к ней подключаются корневая и прочие файловые системы (devfs, procfs). С диска загружается исполняемый файл /bin/init и запускается на выполнение в отдельном процессе. Позже, при остановке системы, init будет выполнять остановку прочих процессов и запрос на отключение питания.