Драйвер IDE Линукс берет информацию о геометрии и емкости диска
(и множество другой информации) используя ATA IDENTIFY запрос.
До недавнего времени драйвер не верил возвращаемому значению
lba_capacity если оно было более чем на 10% больше чем емкость
вычисленная как C*
H*
S.
Хотя,по соглашению производителей,большие IDE диски (с более чем
16514064 секторами) возвращают C=16383, H=16, S=63,
что соотвествует 16514064 секторам (7.8 ГБ)
независимо от их реальных значений, но lba_capacity соотвествует
настоящему размеру.
Последние версии ядер Линукс (2.0.34, 2.1.90) знают о этом
и действуют правильно.
Если у вас более старое ядро и вы не хотите производить апгрейд,
то вы можете попытаться изменить процедуру lba_capacity_is_ok
в
/usr/src/linux/drivers/block/ide.c
приведя её примерно к такому
виду:
static int lba_capacity_is_ok (struct hd_driveid *id) {
id->cyls = id->lba_capacity / (id->heads * id->sectors);
return 1;
}
См. 2.1.90. (более хороший патч)
Как было только что замечено большие диски возвращают
геометрию:
C=16383, H=16, S=63
в независимости от реального размера.(настоящее значение
указывается в lba_capacity).
Некоторые BIOS не знают о этом и преобразуют 16383/16/63
в нечто с меньшим числом цилиндров и большим головок,
например 1024/255/63 или 1027/255/63.
Поэтому правильно распознавать 16383/16/63 геометрию должно
не только ядро , но и BIOS.
Начиная с версии 2.2.2 это делается правильно (
путем вычисления C = capacity/(H*S) на основе H и S полученных от BIOS ).
Обычно эта проблема решается путем установки типа диска
Normal в BIOS setup (или еще лучше None (не всегда доступно))
Если это не возможно, из за необходимости загружаться с этого
диска или использования его совместно с DOS/Windows, а апгрейд
ядра до версии 2.2.2 невозможен , то нужно использовать загрузочные
параметры ядра.
Если BIOS сообщает 16320/16/63, то это обычно делается
в надежде получить 1024/255/63 после преобразования.
Многие диска имеют перемычки которые позволяют выбирать между
15 и 16 головками. Установки по умолчанию дают вам 16 - головочную
геометрию. Иногда обе версии геометрии адресуют одинаковое количество
секторов,иногда 15 головок уменьшают количество адресуемых секторов.
Для такой настройки могут быть обьективные причины:
: Petri Kaukasoina пишет: `Диск на 10.1 ГиБ - IBM Deskstar 16 GP (model IBM-DTTA-351010)
был настроен с помощью перемычек для использования 16 головок по умолчанию,
но мой старый компьютер (с AMI BIOS) не загружался и я был вынужден
переключить его на использование 15 головок. hdparm -i говорит
RawCHS=16383/15/63 и LBAsects=19807200. Я использую 20960/15/63,
чтобы получить полную емкость.'
Если вы хотите подробнее узнать о настройке с помощью
джамперов, то вам вероятно будет полезен следующий адрес:
http://www.storage.ibm.com/techsup/hddtech/hddtech.htm.
Многие диски имеют джамперы,которые заставляют диск выглядеть
меньше, чем он есть на самом деле.
Довольно глупая опция,не правда ли,врядли кто либо из пользователей
Линукс захочет ей воспользоваться.
Некоторые BIOS зависают при наличии больших дисков.
Единственное решение в таком случае - сделать диск невидимым для
BIOS.Но это возможно лишь в том случае если данный диск не является
загрузочным в вашей системе.
Первым серьезным лимитом был лимит в 4096 цилиндра limit (
16 головок и 63 сектора/дорожка, 2.11 ГБ).
Например, Fujitsu MPB3032ATU 3.24 GB диск имеет геометрию по умолчанию
6704/15/63, но может быть установлен режим (перемычками) 4092/16/63,
и выдается LBAcapacity 4124736 сектора,
так чтобы операционная система не могла догадаться что в реальности
диск больше.
В таком случае (с BIOS который "падает" услышав о том какого размера диск
по настоящему, так что необходима установка джампера) необходима установка
загрузочных параметров ядра, чтобы указать Линукс истинный размер диска.
Это неудачное решение. Большинство дисков могут быть настроены так, чтобы
выглядеть как 2 Гб диск, они сообщают урезанную геометрию, но возвращают
полную LBAcapacity. Такие диски будут работать
под Линукс правильно(с полной емкостью) независимо от
установок джамперов.
Более "свежий" лимит это
33.8 Гб лимит.
Ядра Линукс ниже 2.3.21 требуют патча , чтобы работать с дисками
такого обьема.
Некоторые диски больше данного обьема, могут быть настроены, чтобы
выглядеть как 33.8 Гб диск.
Например,диск IBM Deskstar 37.5 GB (DPTA-353750)
может быть настроен так, чтобы казаться диском емкости 33.8 Гб,
и затем он сообщает геометрию 16383/16/63 как любой другой большой диск,
но LBAcapacity 66055248 (соответствующая 65531/16/63, или 4111/255/63)).
Такие диски при настройке для режима 33.8 Гб, требуют указания
загрузочных параметров для работы с полным обьемом под Линукс.
Также вы можете взглянуть сюда:
the BIOS 33.8 GB limit.
Вперед
Назад
Содержание