
LILO
Подсистема загрузки LILO использует и для первичного, и для вторичного загрузчика схему с картой размещения. Это делает работу с LILO занятием, требующем повышенной аккуратности, так как изменение процедуры загрузки не атомарно: сначала пользователь изменяет ядро или его модули, потом - редактирует файл /etc/lilo.conf
, в котором содержатся сведения обо всех вариантах загрузки компьютера, а затем - запускает команду lilo
, которая собирает таблицы размещения для всех указанных ядер и вторичного загрузчика и записывает первичный и вторичный загрузчик вместе с картами в указанное место диска. Первичный загрузчик LILO (он называется LI ) можно записывать и в MBR, и в начало раздела Linux.
Простейший файл lilo.conf
может выглядеть так:
boot=/dev/hda
map=/boot/map
image=/boot/vmlinuz-up
root=/dev/hda1
Пример 10.1. Простейшая настройка LILO: пример файла lilo.conf
Такая настройка LILO определяет только один вариант загрузки: первичный загрузчик записывается в начало первого жесткого диска (строчка boot=/dev/hda
), карту размещения утилита lilo
записывает в файл /boot/map
, ядро добывается из файла /boot/vmlinuz-up
, а запись root=/dev/hda1
указывает ядру, что корневая файловая система находится на первом разделе первого диска.
Одна из машин, за которыми случалось работать Ивану, использовалась иногда для запуска единственной программы, написанной для MS-DOS. Исходные тексты этой программы давно потерялись, автор - тоже, поэтому на машине пришлось устанавливать и MS-DOS и Linux. В результате lilo.conf
оказался таким:
[root@localhost root]# cat /etc/lilo.conf
boot=/dev/hda
map=/boot/map
default=linux-up
prompt
timeout=50
image=/boot/vmlinuz-up
label=linux-up
root=/dev/hda5
initrd=/boot/initrd-up.img
read-only
image=/boot/vmlinuz-up
label=failsafe
root=/dev/hda5
initrd=/boot/initrd-up.img
vga=normal
append=" failsafe noapic nolapic acpi=off"
read-only
other=/dev/hda1
label=dos
other=/dev/fd0
label=floppy
unsafe
Пример 10.2. Настройка LILO на двухсистемной машине
Здесь Linux была установлена на пятый раздел диска (о нумерации разделов в IBM-совместимых компьютерах будет рассказано в лекции 11), а на первом находится MS-DOS. Кроме загрузки MS-DOS предусмотрено два варианта загрузки Linux и еще один - любой операционной системы с дискеты. Каждый вариант загрузки помечен строкой label=вариант
. При старте LILO выводит простейшее окошко, в котором перечислены все метки (в данном случае - linux-up
, failsafe
, dos
и floppy
). Пользователь с помощью «стрелочек» выбирает нужный ему вариант и нажимает Enter
. При необходимости пользователь может вручную дописать несколько параметров, они передадутся ядру системы. Если пользователь ничего не трогает, то по истечении тайм-аута выбирается метка, указанная в поле default
.
Еще несколько пояснений. Метки linux-up и failsafe в примере используют одно и то же ядро (vmlinuz-up), но во втором случае перенастраивается режим графической карты и добавляются параметры, отключающие поддержку необязательных для загрузки аппаратных расширений (многопроцессорность, автоматическое управление электропитанием и т.п.). Строчку, стоящую после append=
, пользователь мог бы ввести и самостоятельно, это и есть параметры ядра. Поле initrd=
указывает, в каком файле находится стартовый виртуальный диск (ему посвящен раздел «Стартовый виртуальный диск и модули» этой лекции), а внушающая некоторые опасения надпись unsafe
(для метки floppy) означает всего лишь, что дискета - съемное устройство, поэтому бессмысленно во время запуска lilo проверять правильность ее загрузочного сектора и составлять карту.
Наконец, записи вида other=устройство
говорят о том, что LILO неизвестен тип операционной системы, находящейся на этом устройстве, а значит, загрузить ядро невозможно. Зато ожидается, что в первом секторе устройства будет обнаружен еще один первичный загрузчик, LILO загрузит его и передаст управление по цепочке. Так и загружается MS-DOS на этой машине: первичный загрузчик берется (по метке dos) из начала первого раздела первого диска.