首页 文章

如何在闪存存储的分区表上确定磁盘几何(C / H / S)?

提问于
浏览
-2

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

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

我在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

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

具有结束CHS元组的分区的卡是(c,h,s),哪个磁盘几何将是(c 1 / h 1 / s 1) . 它们有关系吗?

但是 Value 如何确定?这些是依赖于操作系统还是文件系统?

1 回答

  • 0

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

    很久以前我为PDP-11编写了IDE驱动程序,并记住了IDE / ATA协议 . 我不知道有关现代SATA或SCSI设备的详细信息,因此只能回答有关ATA / IDE的问题 .

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

    例如,参见this code,其中程序向ATA发送请求并解析答案,包含磁盘几何 .

    我还可以说:

    • IDE设备可以接受"uploaded geometry"(代码0x91) . 即驱动程序可以向设备发送请求,并说"you will have X sectors, Y heads, Z cylinders",然后设备接受ahd使用"virtual geometry" .

    • 某些设备不知道它们的几何形状,并且在启动期间,BIOS必须向设备说明它具有哪种几何形状 . 否则,它只是不起作用 .

    • 某些设备存储由1中的计算机指定的外部虚拟几何体,并在电源循环后记住并使用它 .

    • 如果设置"virtual geometry",与默认值不同,则在I / O错误后,某些设备可以自动返回默认几何体 . 结果,它产生文件系统破坏 .

相关问题