LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
楼主: phyma

Grub 源代码分析

[复制链接]
发表于 2011-8-11 09:38:14 | 显示全部楼层
Post by home_king;1068860
0面0道的所有扇区都是保留的,BIOS不会放置任何数据在此。
注意,第一个主分区也是从1面0道的第1扇区开始的。
你好,我看很多文章都说0面0道xxx扇区的描述。但是我接触的是CHS,也就是柱面,磁头和扇区。不指定磁头的情况下,柱面和磁道应该是同一个概念,而同一个柱面上的磁道应该是用磁头号来标识区别的吧,所以我希望能够得到确认。
回复 支持 反对

使用道具 举报

发表于 2011-9-5 22:12:56 | 显示全部楼层
Post by myzhzygh;2146450
你好,我看很多文章都说0面0道xxx扇区的描述。但是我接触的是CHS,也就是柱面,磁头和扇区。不指定磁头的情况下,柱面和磁道应该是同一个概念,而同一个柱面上的磁道应该是用磁头号来标识区别的吧,所以我希望能够得到确认。


两位版主所说的面应该是磁头,这没有什么疑义。
倒是之前有人提到的从7000拷到8000有些诡异。
回复 支持 反对

使用道具 举报

发表于 2011-9-26 01:11:30 | 显示全部楼层

Grub中为什么要设置C运行环境呢?

Grub中为什么要设置C运行环境呢?
回复 支持 反对

使用道具 举报

发表于 2012-2-14 19:45:05 | 显示全部楼层
参照楼下回答
回复 支持 反对

使用道具 举报

发表于 2012-2-14 19:46:10 | 显示全部楼层
答问题1:

ecx中会填写 磁盘上扇区的总数
这个磁盘总数是grub在安装的时候,从磁盘上读取出来的,然后填写在stage1预留的地方。
并非BIOS填写的数据。这些都是grub传递参数的一种方法。省的在启动时候还好确定硬盘有多少扇区等信息。
grub可参考intall_func来看。

lilo就没有预留BPB空间,貌似直接通过中断调用获取的。

我查到如下终端调用可读取硬盘、软盘信息。
下面是INT 13H,功能08H
(9)、功能08H
功能描述:读取驱动器参数
入口参数:AH=08H
DL=驱动器,00H~7FH:软盘;80H~0FFH:硬盘
出口参数:CF=1——操作失败,AH=状态代码,参见功能号01H中的说明,否则, BL=01H — 360K
=02H — 1.2M
=03H — 720K
=04H — 1.44M
CH=柱面数的低8位
CL的位7-6=柱面数的该2位
CL的位5-0=扇区数
DH=磁头数
DL=驱动器数
ESI=磁盘驱动器参数表地址
Post by chin09;2031590
我选的是grub0.93,假设启动盘是默认的硬盘启动,且支持lba寻址,
问题一:
读stage1时,有这么一句
lba_mode:
/* save the total number of sectors */
movl        0x10(%si), %ecx
则ecx=?,the total numbers of sectors 作何解?,有何用处?是bios先在0x10(%si)设置好的吗?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表