The Linux Bootdisk HOWTO: Загрузочные диски и процесс начальной загрузки.

Next Previous Contents

## 3. Загрузочные диски и процесс начальной загрузки.

Загрузочный диск - в основном миниатюрная, отдельная Linux система на дискете. Она должна выполнять многие из тех же самых функций, которые выполняет полная полноразмерная Linux система. Перед попыткой создания Вы должны понять основы процесса начальной загрузки Linux. Мы представляем здесь основы, которые являются достаточными для понимания остальной части этого документа. Много подробностей и альтернативные опции были опущены.

## 3.1 Процесс начальной загрузки.

Все системы PC начинают процесс начальной загрузки, выполняя код в ROM (обозначаемый BIOS), для загрузки сектора 0, цилиндра 0 загрузочного устройства. Загрузочное устройство - обычно первый дисковод для гибких дискет (обозначается `A`: в DOS и /dev/fd0 в Linux). BIOS затем пробует выполнить этот сектор. На большинстве загрузочных дисков, сектор 0, цилиндр 0 содержит либо:

- код загрузчика - типа LILO, который находит, загружает и выполняет ядро, начиная соответствующую начальную загрузку.
- начало ядра операционной системы, типа Linux.

Если Linux ядро было скопировано необработанным (raw) на дискету, первый сектор диска - является первым сектором ядра Linux. Этот первый сектор продолжит процесс начальной загрузки, загружая остальную часть ядра из устройства начальной загрузки.

Как только ядро полностью загружено, оно производит некоторую базовую инициализацию устройств. Затем пробует загрузить и монтировать корневую (root) файловую систему из некоторого устройства. Корневая файловая система - просто файловая система, которая монтируются как ``/''. Ядру нужно сообщать, где искать корневую файловую систему; если оно не может найти загрузочный образ, оно останавливается.

В некоторых ситуациях --- часто при загрузке с дискеты --- корневая файловая система загружена в ramdisk, который является оперативной памятью (RAM), к которой обращается система, как будто это был диск. Для этого есть две причины. Во-первых, RAM - на несколько порядков быстрее, чем дискета, так что операции системы выполняются быстро; и второй - ядро может загрузить сжатую файловую систему с дискеты и распаковать ее на ramdisk, позволяя поместить на дискете намного больше файлов.

Как только корневая файловая система загружена и примонтирована, Вы видите сообщение:

            VFS: Mounted root (ext2 filesystem) readonly.

В этой точке система находит `init` программу на корневой файловой системе (в `/bin` или `/sbin`) и выполняет ее. `init` читает конфигурационный файл /etc/inittab, ищет строку, обозначенную `sysinit`, и выполняет именованный скрипт. Скрипт `sysinit` - обычно что-то вроде /etc/rc или /etc/init.d/boot. Этот скрипт - набор команд оболочки, которые выполняют базовые действия системы, типа:

- Запуск `fsck` на всех дисках,
- Загрузка необходимых модулей ядра,
- Запуск подкачки (swaping),
- Инициализация сети,
- Монтирование дисков, указанных в `fstab`.

Этот скрипт часто вызывает различные другие скрипты, для инициализации модулей . Например, в общей структуре SysVinit, каталог /etc/rc.d/ содержит комплексную структуру подкаталогов, чьи файлы определяют, как запускать и завершать большинство служб системы. Однако, на загрузочных дисках сценарий sysinit часто очень прост.

Когда сценарий sysinit заканчивается, возвращается управление `init`, который затем входит в уровень запуска по умолчанию (default runlevel), определенный в `inittab` ключевым словом `initdefault`. Runlevel строка обычно определяет программу подобную `getty`, которая отвечает за связь с консолью и tty. Это - программа `getty`, которая печатает знакомое приглашение ```login:`''. Программа `getty` в свою очередь вызывает `login` программу, чтобы проверить доступ на вход в систему и установить сеансы пользователя.

## 3.2 Типы дисков.

Сделав базовый обзор процесса начальной загрузки, теперь мы можем определять различные типы предполагаемых дисков. Мы классифицируем диски по четырем типам. Здесь и далее в этом документе используется термин ``диск'' как дискета, если не оговорено иначе, хотя большинство обсуждаемого может применяться и для жестких дисков.

Загрузочный (boot)

  Диск, содержит ядро, которое может загружаться. Диск может использоваться, для загрузки ядра, которое затем может загрузить корневую файловую систему на другом диске. Ядру на загрузочном диске обычно нужно указать, где найти корневую файловую систему.

  Часто загрузочный диск загружает корневую файловую систему с другой дискеты, но вместо этого возможно указать загрузочному диску, загружать корневую файловую систему с жесткого диска. Это обычно делается при испытании нового ядра. (Фактически, ```make zdisk`'' создаст такой диск автоматически из исходного текста ядра).

Корневой (root)

  Диск с файловой системой, содержащей необходимые файлы для выполнения Linux системы. Такой диск не обязательно содержит или ядро или загрузчик.

  Корневой диск может использоваться для выполнения системы независимо от любых других дисков, как только загрузилось ядро. Обычно корневой диск автоматически копируется в ramdisk. Это делает корневой диск намного быстрее, и освобождает дисковод для сервисного диска.

Загрузочный / Корневой (boot/root)

  Диск, который содержит, и ядро и корневую файловую систему. Другими словами, он содержит все необходимое для загрузки и выполнения Linux системы без жесткого диска. Преимущество этого типа диска - все требуемое находится на одном диске. Однако, постепенно увеличивающийся размер всего означает, что все более и более трудно поместить все на одной дискете, даже со сжатием.

Сервисный (utility)

  Диск, который содержит файловую систему, которая не предназначена, для монтирования как корневая файловая система. Это - дополнительный диск данных. Вы можете использовать диск этого типа, для хранения дополнительных утилит, если у Вас слишком много помещено на вашем корневом диске.

Вообще, когда мы говорим относительно ``создания загрузочного диска'' мы подразумеваем создание обоих boot (ядро) и root (файлы) частей. Они могут быть или одним (одиночный загрузочный/корневой диск) или отдельные (загрузочный + корневой диски). Наиболее гибкий подход для спасательных дискет в использовании отдельно корневой и загрузочной дискет, и одна или более сервисных дискет, чтобы урегулировать превышение.

Next Previous Contents