Начальным загрузчиком, который определяет активный раздел диска и загружает в память ядро, в Linux являются LILO (сокращенно от Linux Loader) и GRUB(GRand Unified Bootloader). Загрузчик GRUB - является более новым загрузчиком с большими возможностями и используется в большинстве современных дистрибутивов. LILO, который долгое время был стандартом, потихоньку сдает позиции, уступая место более современному GRUB. Основное преимущество GRUB в том, что он умеет обращаться к файловой системе Linux.
Задача загрузчика загрузить в память ядро операционной системы и передать ему управление. Ядро Linuxрасположено в файле /boot/vmlinuz-2.6.24, где цифры обозначают номер (версию) ядра. Размер файла колеблется примерно от 400 Кб до 2 Мб. Ядро на диске находится в сжатом виде, поэтому происходит процедура распаковки ядра и уже потом, оно записывается в область оперативной памяти, которая недоступна пользовательским процессам. Ядро после того как записано в память берет управление в “свои руки” и проводит повторную инициализацию оборудования. Дело в том, что Linuxв своей работе не использует функции БИОС, а “общается” с железом напрямую. Windowsумеет работать с железом через функции БИОС.
Рассмотрим пример. На современных материнских платах есть возможность создавать рейды. Например, объединить два жестких диска в рейд 1 (зеркало). Это реализуется с помощью БИОС. Windows будет работать с таким рейдом, так как умеет обращаться к БИОС. Linux, тоже сможет обращаться с рейдом, но только если поддержка такого рейда будет реализована в ядре.
Загрузчик может передавать ядру некоторые параметры, которые влияют на загрузку системы. Например, если передать ядру параметр single, то Linux загрузится в однопользовательском режиме (можно грубо сравнить с безопасным режимом Windows XP). Параметры, передаваемые ядру, прописаны в конфигурационном файле. Для GRUB это файл /boot/grub/menu.lst.
Дальше ядро загружает несколько системных процессов: менеджер памяти и менеджер процессов. И только потом загружается первый пользовательский процесс - init. Процесс init является основным (родительским) процессом с идентификатором 1. Это первый процесс, к которому имеет доступ системный администратор. Система Linux работает до тех пор, пока “жив” процесс init. Получив управление, init выполняет алгоритм, описанный в конфигурационном файле /etc/inittab. В результате работы init запускаются скрипты собранные в директории /etc/init.d/.
Далее запускаются процессы, которые позволяют зарегистрироваться в системе. Эти процессы называются getty (сокращение от get teletype). Каждый процесс getty связывается с виртуальной (и не только виртуальной) консолью, которая отображается при помощи видеоадаптера и позволяет пользователю работать с этой консолью после того как пользователь зарегистрируется в системе. Это так называемый текстовый или алфавитно-цифровой режим работы с системой. Таких процессов запускается по умолчанию шесть штук.
Параллельно загружается служба - X Server для работы в графическом режиме. Кроме X Server в графическом режиме запускается программа, которая называется дисплей-менеджер. Наиболее популярные дисплей-менеджеры это xdm, gdm, kdm. Основная задача этих программ это регистрация пользователя в системе, только уже в графическом режиме.
Когда мы видим на экране приглашение в текстовом или графическом режиме, можно считать, что система уже почти загрузилась. Далее нужно ввести имя пользователя и пароль. В текстовом режиме при вводе пароля информация не отображается на экране (то есть, нет ни “звездочек” ни кружочков). Когда вы прошли регистрацию в текстовом режиме загружается так называемая программа-оболочка (shell), в которой пользователи и работают далее.