BASH Programming - Введение

         

Преобразование и программы-загрузчики.


Геометрия диск (с головками,цилиндрами и дорожками) это анархаизмы оставшиеся в наследство от времен MFM и RLL. В те дни эти величины отражали физические параметра диска. Сегодня с IDE и SCSI, никому не интересна настоящая , физическая геометрия диска. По настоящему, количество секторов на дорожку переменная величина, чем ближе к внешнему кругу диска , тем она больше, поэтому величина секторов/дорожка всегда не настоящая. В тоже время команда IDE - INITIALIZE DRIVE PARAMETERS (91h) служит для того чтобы сказать диску , сколько головок и секторов/ дорожку он должен иметь. Для современного диска совершенно нормальна ситуация когда в действительности он имеет 2 головки , сообщает BIOS , что иx 15-16, а BIOS убеждает программы, что на самом деле головок 255.

Для пользователя удобнее всего представлять диск , как линейный массив секторов , пронумерованных по порядку, а задачу нахождения того , где расположен искомый сектор - оставить фирменному ПО. Такая линейная нумерация получила название LBA.

Таким образом на сегодняшний день концептуальная картина такова, DOS, или менеджер загрузки, сообщают BIOS значения c,h,s. BIOS преобразует эти значения в LBA , используя фальшивую геометрию диска ,которую использует пользователь. Если диск воспринимает LBA то эта величина используется для чтения/записи , иначе она преобразуется назад в c/h/s и используется.

Заметим что при использовании термина LBA могут возникнуть некоторые неточности, т.к. термин LBA - в оригинале означает 'Linear Block Addressing' (в противоположность CHS адресации). В BIOS Setup он означает схему преобразования , также иногда называемую 'поддержка LBA'.См. `

'

Иногда тоже самое срабатывает , когда фирменная прошивка не поддерживает LBA , но BIOS знает о преобразовании. (В SETUP это часто обозначается как 'Large').Теперь BIOS будет предоставлять геометрию C/H/S операционной системе, и использовать C`,H`,S` при общении с контроллером диска. Обычно S=S`,C=C`/N и H=H`*N,где N это наименьшая степень двойки, которая приблизит C` к 1024 (так чтобы были минимальные потери при переворачивание выражения C`=C/N). Это позволяет получить доступ к 7.8 ГиБ.

Третья опция в Setup - это обычно 'Normal', означающая что трансляция не производиться.

Если ваш BIOS не поддерживает режимы 'Large' или 'LBA',то существует несколько софтверных решений проблемы. Менеджеры Дисков,такие как OnTrack или EZ-Drive замещают процедуры BIOS для работы с дисками, своими собственными. Часто такие программы размещают свой код в MBR и последующих секторах (OnTrack называет этот код DDO: Dynamic Drive Overlay - Динамическое Замещение Диска),так что он загружается раньше любой операционной системы. Правда такой подход может создать проблемы при попытки загрузки с дискеты.

Достигаемый эффект примерно тот-же что и при преобразующим BIOS'ом. Отрицательная сторона использования менеджеров дисков - сложности возникающие при совмещении нескольких операционных систем на одном диске.

Линукс поддерживает OnTrack Disk Manager с версии 1.3.14, и EZ-Drive с версии 1.3.29. Более детально это описано далее.



Содержание раздела