-2

我将为闪存可移动设备编写一个磁盘分区创建程序,主要由基于 SCSI 的 I/O 控制并使用 LBA 地址访问。

作为参考,我正在研究由 Ubuntu 的磁盘实用程序分区和格式化的 SD 卡上的分区表。

我在Linux中使用'parted'软件的'unit'命令来观察卡的CHS单位和字节单位的参数。

以下是针对具有 15122432 个 LBA 扇区的 8GB sd 卡:

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

以下是具有 7585792 个 LBA 扇区的 4GB sd 卡:

(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

根据我的观察,不同容量的 SD 卡上的磁盘几何值 (C/H/S) 是不同的,并且几何值似乎与分区结束的结束 CHS 地址相关联。好像..

带有以 CHS 元组结尾的分区的卡是 (c, h, s),其磁盘几何结构将是 (c + 1 / h + 1 / s + 1)。他们有关系吗?

但是这些值是如何确定的呢?这些是否取决于操作系统或文件系统?

4

1 回答 1

0

磁盘几何位于板载设备控制器中,操作系统通过驱动程序从控制器请求它。请求/应答格式在此类设备的协议定义中指定。

很久以前写过PDP-11的IDE驱动,想起IDE/ATA协议。我不知道有关现代 SATA 或 SCSI 设备的详细信息,因此只能回答有关 ATA/IDE 的信息。

IDE 设备具有特殊操作“识别”(代码 0xEC),驱动程序将其发送到设备。驱动程序将此操作码命令发送到控制端口,然后,当设备设置标志 DRDY(设备就绪)时,读取 512 字节块,包含答案。答案包含磁盘信息(制造商、序列号等)和几何形状。

例如,请参见此代码,其中程序向 ATA 发送请求并解析答案,其中包含磁盘几何形状。

我还可以说:

  1. IDE 设备可以接受“上传的几何图形”(代码 0x91)。即驱动程序可以向设备发送请求,并说“您将拥有 X 扇区、Y 磁头、Z 柱面”,然后设备接受并使用此“虚拟几何”。
  2. 一些设备不知道它们的几何结构,并且在启动期间,BIOS 必须向设备解释它具有哪些几何结构。否则,它只是行不通。
  3. 一些设备存储由计算机在1中指定的外部虚拟几何图形,并且即使在重启后也会记住并使用它。
  4. 如果您设置了与默认不同的“虚拟几何”,则某些设备可以在 I/O 错误后自动返回默认几何。结果,它会产生文件系统破坏。
于 2017-08-10T04:06:32.633 回答