Когда система загружается , BIOS считывает сектор 0 ,более известный под названием MBR - Master Boot Record(Главная Загрузочная Запись) с первого диска (или флопи-дисковода или CD-ROM), и передает управление на код содержащийся в нём - обычно это программа загрузчик. Обычно такие мини-программы не имеют собственного драйвера диска и используют соответствующие сервисы , предоставляемые BIOS. Это означает , что ядро Линукс , может быть загружено только если оно помещается в пределах первых 1024 цилиндров.
Это проблемы решается весьма просто , достаточно разместить ядро ( и сопутствующие файлы,используемые в процессе загрузки , такие как map файлы LILO), на разделе расположенном целиком в пределах первых 1024 цилиндров , к которым может получить доступ BIOS. Обычно это первый или второй раздел диска.
Итак : создайте небольшой раздел, скажем 10 МБ размером , так чтобы
было достаточно места для всех ядер , убедитесь , что он целиком расположен
в пределах первых 1024 цилиндров первого , либо второго диска.
Смонтируйте его как /boot
чтобы LILO держало там свои файлы.
Другой аспект проблемы - это то что начальный загрузчик и BIOS
должны иметь одинаковое представление о геометрии диска.
LILO опрашивает ядро на предмет геометрии , но все больше
авторов драйверов дисков , следуют дурной привычке - брать сведения
о геометрии из таблицы разделов , вместо того , чтобы указать LILO ,
какую геометрию будет использовать BIOS.
Поэтому , сведения о геометрии , предоставленные ядром , бесполезны.
В таких случаях может помочь установка опции `linear
'.
Данная опция включает специальный режим LILO , в котором ему не
требуется информация о геометрии диска во время установки загрузчика
(оно хранит линейные адреса в maps файлах) , но производит преобразование
линейных адресов во время загрузки.
Существует только одна проблема связанная с использованием данной опции -
LILO больше не знает о номерах цилиндров и не сможет предупредить вас , если
часть ядра перекроет лимит в 1024 цилиндра , в итоге вы можете получить
не загружаемую систему.
Тим Виллиамс пишет : 'Мой Линукс раздел располагался в пределах 1024 цилиндров и все равно не хочет работать.Сначала когда раздел располагался в пределах 1 Гб все работало нормально. Как такое может быть ? Это был SCSI диск с контроллером AHA2940UW, который имел следующие параметры : H=64, S=32 (каждый цилиндр 1 МиБ = 1.05 МБ) ,либо H=255, S=63 ( цилиндры по 8.2 МБ), в зависимости от установок в BIOS и фирменном ПО. Без сомнения BIOS полагал ,что 1024 цилиндровый лимит - это 1 ГиБ ( он использовал первые значения) , в то время как Линукс и LILO использовали последнии и LILO полагало что этот лимит находиться на 8.4 ГБ