Когда система загружается , 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 ГБ
Emanual.ru – это сайт, посвящённый всем значимым событиям в IT-индустрии: новейшие разработки, уникальные методы и горячие новости! Тонны информации, полезной как для обычных пользователей, так и для самых продвинутых программистов! Интересные обсуждения на актуальные темы и огромная аудитория, которая может быть интересна широкому кругу рекламодателей. У нас вы узнаете всё о компьютерах, базах данных, операционных системах, сетях, инфраструктурах, связях и программированию на популярных языках!