Рейтинг@Mail.ru
[Войти] [Зарегистрироваться]

Наши друзья и партнеры

UnixForum
Беспроводные выключатели nooLite

Lines Club

Ищем достойных соперников.




Книги по Linux (с отзывами читателей)

Библиотека сайта или "Мой Linux Documentation Project"

Next Previous Contents

10. Выводы

Что значит все выше сказанное? Для пользователей Линукс только одну вещь: необходимость быть уверенными в том, что 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. Например:

# sfdisk -g /dev/hdc
/dev/hdc: 4441 cylinders, 255 heads, 63 sectors/track
# cd /proc/ide/ide1/hdc
# echo bios_cyl:17418 bios_head:128 bios_sect:32 > settings
# sfdisk -g /dev/hdc
/dev/hdc: 17418 cylinders, 128 heads, 32 sectors/track
#

10.1 Вычисление параметров LILO.

Иногда бывает удобно указать какую либо конкретную геометрию указав `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. Как можно узнать полную емкость диска? Например ,

# hdparm -g /dev/hdc | grep sectors
 geometry     = 4441/255/63, sectors = 71346240, start = 0
# hdparm -i /dev/hdc | grep LBAsects
 CurCHS=16383/16/63, CurSects=16514064, LBA=yes, LBAsects=71346240
дает два способа нахождения полного числа секторов - 71346240. Нахождение путем просмотра сообщений выдаваемых ядром при загрузке
# dmesg | grep hdc
...
hdc: Maxtor 93652U8, 34837MB w/2048kB Cache, CHS=70780/16/63
 hdc: [PTBL] [4441/255/63] hdc1 hdc2 hdc3! hdc4 < hdc5 > ...
говорит нам о (как минимум) 34837*2048=71346176 секторах и соотвественно о 70780*16*63=71346240 секторах. В данном случае вторая величина корректна, но в общем то обе могут быть округлены в меньшую сторону. Это хороший способ получить представление о размере диска когда hdparm не доступен. Но некогда не задавайте слишком большое значение для cyls! В случае с SCSI дисками, точное число секторов выдается ядром при загрузке.
SCSI device sda: hdwr sector= 512 bytes. Sectors= 17755792 [8669 MB] [8.7 GB]
(и MB, GB округляются, но никогда в меньшую сторону, и являются `двоичными').
Next Previous Contents


Эта статья еще не оценивалась
Вы сможете оценить статью и оставить комментарий, если войдете или зарегистрируетесь.
Только зарегистрированные пользователи могут оценивать и комментировать статьи.

Комментарии отсутствуют