首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从MBR的分区表中访问CHS信息?

如何从MBR的分区表中访问CHS信息?
EN

Stack Overflow用户
提问于 2016-12-19 15:36:41
回答 1查看 1.7K关注 0票数 1

我正在创建一个基本的MBR,它读取分区表并加载可引导分区的第一个扇区。我对CHS和LBA的寻址方式感到困惑。我在一个教程中读到,除了兼容性原因之外,CHS或多或少是不被使用的。因此,我选择使用LBA(int13h扩展)。要加载驱动器的扇区,我必须从分区的分区表中读取CHS值。只有这样,我才能将其转换为LBA,并将其存储在“磁盘地址包”中。

我的疑问是,分区表中的CHS是每个1字节。我应该直接接受这个值并将其转换为LBA (或),我必须首先将它转换为,

代码语言:javascript
运行
复制
Cylinder = 10 bits
Sector   = 6 bits
Head     = 8 bits

然后把它转化成LBA?

注意:我的MBR必须能够访问HDD和USB上的扇区--这就是动机。

操作系统: Ubuntu

装配者:气体

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-12-21 09:59:20

分区表条目使用CHS只是为了与非常老的OSes向后兼容。

它们还有LBA地址的字段:

请注意,这使用LBA32,因此分区大小和位置都有限制。引用维基百科的话:

由于块地址和大小存储在使用32位的MBR的分区表中,使用具有512字节扇区(实际或模拟)的驱动器的分区的最大大小和最高起始地址不能超过2−512字节(2,199,023,255,040字节或每扇区4,294,967,295 (232−1)扇区×512 (29)字节),从而缓解了这种容量限制是开发GPT的主要动机之一。

CHS地址也是如此。

使用CHS字段的OSes的大小限制约为8 GiB。

因此,如果你想要与他们兼容,你需要保持在这个限度内。

可以很容易地在Internet上导出或找到转换LBA <-> CHS的公式,您可以根据扇区编号(即LBA)进行思考,并在创建分区条目时将其转换为CHS (或对CHS太大的分区使用默认值1023、255、63 tuble )。

行的底部,使用LBA字段。

或者去找GPT

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41226127

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档