Когда Lilo загружает систему, он использует вызовы BIOS для загрузки ядра Linux с диска (IDE, флоппи или что-либо еще). Таким образом, ядро должно находиться в некотором месте на диске, доступном BIOS.
Во время загрузки ядра Lilo не имеет возможности читать данные файловой системы, поэтому все, что вы напишете в файле /etc/lilo.conf преобразовывается во время инсталляции (в момент исполнения команды /sbin/lilo). Время инсталляции - это то время, когда программа строит таблицы, содержащие список секторов, в которых находятся файлы для загрузки операционной системы. Как следствие этого, все эти файлы должны находиться на разделе, доступном BIOS (обычно все эти файлы находятся в каталоге /boot, то есть только корневая файловая система вашего Linux-а должна быть доступна BIOS). Вы должны переинсталлировать загрузчик (то есть запускать /sbin/lilo) каждый раз, когда изменяете настройку Lilo. Когда вы пересобираете ядро и перезаписываете старый образ ядра, вы должны переустанавливать Lilo.
Директива boot= в файле /etc/lilo.conf указывает Lilo, где должен находиться его главный загрузчик (primary boot loader). В общем случае, вы можете выбрать либо главный загрузочный сектор (master boot record) (/dev/hda) или загрузочный сектор корневого раздела вашего Linux-а (это обычно /dev/hda1 или /dev/hda2).
Если у вас есть другая операционная система на вашем жестком диске, вам лучше установить Lilo в загрузочный сектор вашей корневой файловой системы вместо MBR. В этом случае вы должны пометить ваш корневой раздел, как "загружаемый" ("bootable"), используя команду "a" в программе fdisk или команду "b" в программе cfdisk. Если вы не измените свой MBR, вам будет проще убрать свой Linux и Lilo, если это понадобится.
Конечно всегда можно избежать "правил" подобных вышеупомянутому. Вы можете установить Lilo в MBR, даже если у вас установлена другая система. Например, если вы установили Windows NT 4.0, как первую операционную систему на вашей машине, тогда загрузчик NT будет записан в MBR, т.о. ваш NT должен был загружаться без проблем. После установки Linux и выбора - установить Lilo в MBR, Lilo перепишет загрузчик NT. В следующий раз при загрузке машины вы не сможете загрузить NT. Но нет никаких проблем. Вы просто должны отредактировать ваш /etc/lilo.conf и добавить новую запись для NT. В следующий раз, перезагрузив систему, вы увидите в Lilo запись для меню.
Я лично не использую настройки LBA и LARGE в BIOS-е (но у меня на машине только Linux); это одни из самых ужасных изобретений, вызванное неэффективностью мира PC. Такое решение требует, чтобы ядро находилось на первых 1024 цилиндрах винчестера, но это не проблема, потому что вы разбиваете диск на разделы, и выделяете под корневой раздел небольшое пространство (что вы и должны всегда делать в любом случае).
Если на вашем диске есть другая операционная система, то вам наверно нельзя будет изменить настройки BIOS, иначе эта ОС перестанет работать. Все последние версии Lilo понимают настройки LBA и LARGE.
Заметьте, что ключевое слово "linear" в файле /etc/lilo.conf может помочь решить проблемы геометрии винчестера. Эта команда инструктирует Lilo использовать линейные адреса секторов, вместо троек сектор/головка/цилиндр. Преобразование из линейных в трехмерные адреса во время загрузки немного замедляет этот процесс, но он становится менее уязвим с точки зрения проблем геометрии.
Если у вас более, чем один винчестер, и некоторые из них используются только Linux-ом, и не включаются в процесс загрузки, вы можете сказать BIOS, что их нет. Ваша система будет загружаться быстрее, а Linux автоматически определит их наличие при загрузке. Я часто меняю винчестеры в моих компьютерах, не никогда не трогаю конфигурацию BIOS.
Когда вы видите приглашение Lilo, вы можете нажать <Tab> для того, чтобы увидеть список возможных вариантов. Если Lilo не настроен на интерактивный режим, то нажмите и держите <Alt> или <Shift> до появления сообщения "LILO".
Если вы выберете загрузку ядра Linux, вы можете добавить аргументы в командной строке после имени системы, которую вы выберете. У ядра достаточно аргументов командной строки. Все они описаны в документе "BootPrompt-HOWTO", автор Paul Gortmaker, я не буду пересказывать его работу здесь. Но некоторые аргументы достаточно важны, и их необходимо здесь описать:
root=: вы можете указать Linux подключить корневой раздел, отличный от того, что написано в lilo.conf. Например, в моей системе, есть маленький раздел, в котором находится минимальная установка Linux, и я смогу загрузить систему, даже если, по ошибке, полностью испорчу основной корневой раздел.
init=: ядра Linux версии 1.3.43 и новее могут исполнить команду, отличную от запуска /sbin/init, в соответствии с тем, что написано в командной строке. Если у вас возникают проблемы в процессе загрузки, вы можете получить доступ к чистой системе, набрав в командной строке init=/bin/sh (когда вы получите приглашение оболочки (shell prompt) вам скорее всего понадобится подключить диски: попробуйте "mount -w -n -o remount /; mount -a", и не забудьте сделать "umount -a" перед выключением компьютера).
Число: введя ядру в командной строке число, вы заставляете init запуститься на специфическом рабочем уровне (run-level) (по умолчанию обычно это бывают 3 или 2, в соответствии с тем, какой у вас дистрибутив). Прочтите документацию по команде init, изучите файлы /etc/inittab и /etc/rc*.d для дальнейших экспериментов.
Когда Lilo перезаписывает загрузочный сектор, он оставляет резервную копию в файле /boot/boot.xxyy, где xxyy - главное и зависимое число устройства (major and minor numbers), в шестнадцатеричном виде. Вы можете увидеть главное и зависимое число вашего диска или раздела, набрав команду "ls -l /dev/device". Например, первый сектор устройства /dev/hda (главное число - 3, зависимое - 0) будет записано в файл /boot/boot.0300, установка Lilo на /dev/fd0 создает файл /boot/boot.0200 и установка на устройство /dev/sdb3 (главное число - 8, зависимое - 19) создаст файл /boot/boot.0813. Заметьте, что Lilo не создаст резервную копию, если файл уже существует, поэтому вам не надо беспокоиться о сохранности этой копии при переустановке Lilo (например, после сборки нового ядра). Резервные копии в каталоге /boot/ всегда отражают общую ситуацию до установки Lilo.
Если вам надо деинсталлировать Lilo (например, в очень неудачном случае - деинсталляции Linux), вам достаточно восстановить исходный загрузочный сектор. Если Lilo установлен в /dev/hda, просто наберите "dd if=/boot/boot.0300 of=/dev/hda bs=446 count=1" (Я лично делаю "cat /boot/boot.0300 > /dev/hda", но это не совсем безопасно, так как это восстановит и стандартную таблицу разделов, которую вы могли изменить со времени сохранения загрузочного сектора). Эта команда значительно проще, чем "fdisk /mbr" из DOS-а: она позволяет вам начисто удалить Linux с диска без загрузки чего-либо, кроме Linux-а. После удаления Lilo не забудьте запустить команду fdisk Linux-а для удаления всех Linux-разделов (fdisk в DOS-е не удаляет не-DOS разделы) (Примечание переводчика: Это не верно для так называемого DOS 7.0, встроенного в Windows 95/98).
Если вы установили Lilo в корневой раздел (например, в /dev/hda2), ничего особенного не надо делать для деинсталляции Lilo. Просто уберите с диска все Linux-разделы при помощи fdisk. Вы также должны пометить DOS-раздел загружаемым (bootable).