Что значит все выше сказанное? Для пользователей Линукс только
одну вещь: необходимость быть уверенными в том, что LILO и fdisk
используют правильную геометрию. Правильная геометрия для
fdisk - та, которая используется ОС находящейся на том же диске,
а для LILO - та которая позволяет успешно взаимодействовать с
BIOS во время загрузки. (обычно эти две геометрии совпадают)
Как fdisk узнает о геометрии?
Он спрашивает ядро,используя HDIO_GETGEO ioctl.
Но пользователь может заставить fdisk использовать
другую геометрию в интерактивном режиме или в командной строке.
Как LILO узнает о геометрии?
Оно запрашивает ядро, используя HDIO_GETGEO ioctl.
Но пользователь также может обойти эту геометрию, указав специальный
параметр `disk=' в файле /etc/lilo.conf (см. lilo.conf(5)).
Возможно также задание опции linear , которая заставит
LILO хранить в его map файле LBA адреса, вместо CHS и будет
определять геометрию при загрузке с помощью INT13(функция 8).
Как ядро узнает о геометрии?
Во первых, возможно,что пользователь указал детальную геометрию
в командной строке ядра `hda=cyls,heads,secs'
(см. bootparam(7)),вручную или указав загрузчику необходимость передать
эти параметры ядру.
Например,для LILO нужно добавить строку `append =
"hda=cyls,heads,secs"'
в /etc/lilo.conf (см. lilo.conf(5)).
Или же ядро может само догадаться о геометрии, опросив BIOS
или "железо".
Начиная с версии ядра 2.1.79 возможно указание геометрии ядру
с помощью файловой системы /proc.
Например:
Иногда бывает удобно указать какую либо конкретную геометрию
указав `hda=cyls,heads,secs'
в командной строке ядра. Почти всегда необходимо указывать secs=63,
для того чтобы указать heads.
(Наиболее удачными значениями на сегодняшний день будут heads=16 и heads=255.)
Что необходимо указать для cyls? Это должно быть число соответствующее
полной емкости диска в секторах C*H*S.
Например для диска с 71346240 секторами (36529274880 байт)
С должно быть вычислено как 71346240/(255*63)=4441 (посчитать это можно например с помощью bc)
, и заданы следующие параметры hdc=4441,255,63.
Как можно узнать полную емкость диска? Например ,
говорит нам о (как минимум) 34837*2048=71346176 секторах и
соотвественно о 70780*16*63=71346240 секторах.
В данном случае вторая величина корректна, но в общем то обе
могут быть округлены в меньшую сторону.
Это хороший способ получить представление о размере диска когда
hdparm не доступен.
Но некогда не задавайте слишком большое значение для cyls!
В случае с SCSI дисками, точное число секторов выдается ядром при загрузке.
Emanual.ru – это сайт, посвящённый всем значимым событиям в IT-индустрии: новейшие разработки, уникальные методы и горячие новости! Тонны информации, полезной как для обычных пользователей, так и для самых продвинутых программистов! Интересные обсуждения на актуальные темы и огромная аудитория, которая может быть интересна широкому кругу рекламодателей. У нас вы узнаете всё о компьютерах, базах данных, операционных системах, сетях, инфраструктурах, связях и программированию на популярных языках!