Настройка hdc для загрузки, как hda, и использование опции bios=

Lilo позволяет установить ядро на одно устройство и заставить BIOS читать его с другого устройства. Например, я часто устанавливаю Linux на диск, подключенный к hdc (главный диск на вторичном IDE-контроллере) и загрузиться с него, как с системы на другом компьютере. Я скопировал инсталляционный диск на маленький раздел, поэтому могу запустить команду chroot на виртуальной консоли для установки Lilo на hdc, пока я занимаюсь чем-то другим.

Файл lilo.conf, который я использую для инсталляции Lilo выглядит примерно так:

# Этот файл должен использоваться для системы, видящей этот диск как /dev/hdc
boot = /dev/hdc   # перезаписать MBR на hdc
disk = /dev/hdc   # Указать, как hdc будет выглядеть в системе:
   bios = 0x80    #  BIOS увидит его, как первый диск
delay = 0
vga = 0

image = /boot/vmlinux  # это уже на /dev/hdc1
  root = /dev/hda1     # но во время загрузки это будет hda1
  label = Linux
  read-only

Этот конфигурационный файл должен читаться Lilo, запускаемым с /dev/hdc1. Таблицы Lilo, которые будут записаны в загрузочный сектор (/dev/hdc), должны описывать файлы в каталоге /boot (который в свою очередь находится на hdc); эти файлы будут доступны при доступе к hda, когда диск будет загружен в виде отдельной системы.

Я назвал этот файл /mnt/etc/lilo.conf.hdc (/mnt - это место, куда был подключен диск hdc во время инсталляции). Я устанавливаю Lilo командой "cd /mnt; chroot . sbin/lilo -C /etc/lilo.conf.hdc". Читайте документацию по chroot, если эта команда вам не понятна.

Директива "bios=" в файле lilo.conf нужна для того, чтобы указать Lilo, что думает о ваших устройствах Lilo. Вызовы BIOS определяют флоппи-диски и жесткие диски номерами: 0x00 и 0x01 означают флоппи-дисководы, 0x80 и более означают винчестеры (старые версии BIOS могли работать только с двумя дисками). Поэтому "bios = 0x80" в предыдущем примере означает "использовать 0x80 в вызовах BIOS при доступе к /dev/hdc".

Эта директива Lilo может быть применима и в другой ситуации: когда, например, ваш BIOS имеет возможность загружаться со SCSI-дисков вместо IDE. Когда есть и IDE-, и SCSI-устройства, Lilo не может определить, к которому будет относиться цифра 0x80, потому что пользователь выбирает порядок в конфигурационных меню BIOS, и они не доступны во время работы Linux.

По умолчанию Lilo считает, что IDE-диски идут первыми, поэтому, в противном случае, в файле /etc/lilo.conf должно находиться примерно следующее:

disk = /dev/sda bios = 0x80