Использование Lilo, когда BIOS не видит корневой раздел

У меня два IDE-диска, и один SCSI. SCSI-диск не виден из BIOS. Загрузчик Linux, Lilo, использует вызовы BIOS и может видеть только те диски, которые видит BIOS. Мой глупый AMI BIOS может загрузиться только с "A:" или "C:" Моя корневая файловая система находится на SCSI-диске.

Решение состоит в том, чтобы держать ядро, файл таблиц (map file) и цепочный загрузчик (chain loader) в Linux-разделе на первом IDE-диске. Заметьте, что необязательно в этом случае иметь ядро на корневом разделе.

Второй раздел на моем первом IDE-диске (/dev/hda2, Linux-раздел для загрузки системы) подключен к /u2. Вот файл /etc/lilo.conf, который я использовал.

#  Установка Lilo на MBR
#  первого IDE-диска.
#
boot = /dev/hda
#  /sbin/lilo (установщик) копирует загрузочную запись Lilo
#  из следующего файла в месторасположение MBR.
install = /u2/etc/lilo/boot.b
#
#  Я написал сложное загрузочное меню.  Lilo найдет его здесь.
message = /u2/etc/lilo/message
#  Установщик создаст следующий файл. Он подскажет
#  загрузчику, где находятся блоки ядра.
map = /u2/etc/lilo/map
compact
prompt
#  Ожидать 10 секунд, затем загрузить ядро версии 1.2.1 по умолчанию.
timeout = 100
#  Ядро можно скопировать туда, где его увидит BIOS командой:
#      cp -p /usr/src/linux/arch/i386/boot/zImage /u2/z1.2.1
image = /u2/z1.2.1
        label = 1.2.1
#  Lilo указывает ядру - подключить первый раздел на SCSI
#  в качестве корневого. Для этого BIOS не обязательно должен его видеть.
        root = /dev/sda1
#  Этот раздел будет проверен и переподключен (remount) в скрипте /etc/rc.d/rc.S
        read-only
#  Я оставил старое ядро Slackware на случай, если я соберу нерабочее ядро
#  Кстати, мне это пригодилось
image = /u2/z1.0.9
        label = 1.0.9
        root = /dev/sda1
        read-only
#  Мой раздел с DR-DOS 6.
other = /dev/hda1
        loader=/u2/etc/lilo/chain.b
        label = dos
        alias = m