Как геометрия диска (C/H/S) была определена в таблице разделов флэш-памяти?

Я собираюсь написать программу создания дисковых разделов для съемных устройств флэш-памяти, которая в основном управляется вводом-выводом на основе SCSI и осуществляется с адреса LBA.

Для справки я изучаю таблицу разделов на SD-картах, которые были разбиты на разделы и отформатированы утилитой дисков Ubuntu.

Я использовал команду "unit" программного обеспечения "parted" в Linux для просмотра параметров карт с модулем CHS и байтовым модулем.

Ниже приведена карта SD на 8 ГБ с 15122432 секторами LBA:

pi@raspberrypi:~ $ sudo parted /dev/sda
GNU Parted 3.2
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) unit chs print
Model: Generic CRM01 SD Reader (scsi)
Disk /dev/sda: 1020,130,11
Sector size (logical/physical): 512B/512B
BIOS cylinder,head,sector geometry: 1020,239,62.  Each cylinder is 7587kB.
Partition Table: msdos
Disk Flags:

Number  Start  End          Type     File system  Flags
 1      0,1,0  1019,238,61  primary  ext3

(parted) unit b print
Model: Generic CRM01 SD Reader (scsi)
Disk /dev/sda: 7742685184B
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:

Number  Start   End          Size         Type     File system  Flags
 1      31744B  7738552319B  7738520576B  primary  ext3

Ниже приведено описание для SD-карты емкостью 4 ГБ с 7585792 секторами LBA:

(parted) unit chs print
Model: Generic CRM01 SD Reader (scsi)
Disk /dev/sda: 1019,71,29
Sector size (logical/physical): 512B/512B
BIOS cylinder,head,sector geometry: 1019,120,62.  Each cylinder is 3809kB.
Partition Table: msdos
Disk Flags:

Number  Start  End          Type     File system  Flags
 1      0,1,0  1018,119,61  primary  ext3

(parted) unit b print
Model: Generic CRM01 SD Reader (scsi)
Disk /dev/sda: 3883925504B
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:

Number  Start   End          Size         Type     File system  Flags
 1      31744B  3881656319B  3881624576B  primary  ext3

По моим наблюдениям, значения геометрии диска (C/H/S) различаются на SD-карте разной емкости, и значения геометрии, похоже, связаны с адресом конца CHS конца раздела. Это похоже на..

Карта с разделом, в котором заканчивается кортеж CHS (c, h, s), геометрия диска будет (c + 1 / h + 1 / s + 1). Они связаны?

Но как определяются значения? Это зависит от ОС или файловой системы?

1 ответ

Решение

Геометрия диска находится во встроенном контроллере устройства, и ОС запрашивает ее у контроллера через драйвер. Формат запроса / ответа указан в определении протокола такого устройства.

Давным-давно я написал драйвер IDE для PDP-11 и кое-что вспомнил о протоколе IDE/ATA. Я не знаю подробностей о современных устройствах SATA или SCSI, поэтому могу ответить только о ATA/IDE.

Устройство IDE имеет специальную операцию "идентификация" (код 0xEC), которую драйвер отправляет устройству. Драйвер отправляет эту команду кода операции на порт управления, и после этого, когда устройство устанавливает флаг DRDY (устройство готово), считывает блок 512 байт, содержит ответ. Ответ содержит информацию о диске (производитель, серийный номер и т. Д.) И геометрию.

Посмотрите, например, этот код, где программа отправляет запрос в ATA и анализирует ответ, содержит геометрию диска.

Что я могу сказать дополнительно:

  1. Устройство IDE может принимать "загруженную геометрию" (код 0x91). Т.е. драйвер может отправить запрос устройству и сказать "у вас будет X секторов, Y головок, Z цилиндров", и после этого устройство примет и использует эту "виртуальную геометрию".
  2. Некоторые устройства не знают свою геометрию, и во время запуска BIOS должен объяснить устройству, какая у него геометрия. Иначе это просто не работает.
  3. Некоторые устройства хранят внешнюю виртуальную геометрию, указанную компьютером в 1, и запоминают ее и используют даже после отключения питания.
  4. Если вы установите "виртуальную геометрию", отличную от стандартной, то некоторые устройства могут автоматически вернуться к стандартной геометрии после ошибки ввода-вывода. В результате это приводит к разрушению файловой системы.
Другие вопросы по тегам