|
发表于 2006-9-6 10:47:08
|
显示全部楼层
Post by home_king
接着上面的话题。
stage1_5究竟被放在哪呢?很多兄弟可能以为它就是/boot/grub/底下的哪些xxfs_stage1_5文件,但试想一下,要找到boot分区所在的stage1_5文件,那么就必须使得stage1具备文件系统识别功能,而stage1_5本身就是文件系统的支撑代码,它必须加载stage1_5才能具备这种功能。那么,我们又回到了那种矛盾体的悖论──要加载stage1_5来找到stage1_5? 呵呵。
所以用来识别boot分区文件系统的stage1_5不能作为文件来被stage1读取,它只能被存放在固定的扇区中。这里强调"用来识别boot分区文件系统",那是因为并不是所有的stage1_5文件都被放在固定扇区的,只有boot分区的文件系统对应的stage1_5才会被放在固定的扇区中去!比如说,你的boot分区的文件系统是ext2,那么在安装GRUB的stage1的时候,e2fs_stage1_5就会被存放至一个固定的扇区集,而其他的如reiserfs_stage1_5就依然作为文件来存放,以供GRUB使用root()命令来识别其他的boot分区(那时候,stage2已经被加载了,所以这个不成问题)。
那么,如何验证我上面的说法呢?还是使用dd命令。
- 1. dd if=/dev/hda of=STAGE1_5.img bs=1k skip=1 count=20
- 将STAGE1_5.img用emacs打开,转换为hex格式查看。
- 2. 将/boot/grub/e2fs_stage1_5拷贝一份到当前目录,用emacs打开,转换为hex格式查看。
- 注意,如果你的boot分区是别的文件系统,应该打开对应的stage1_5文件来查看。我这里的boot分区为ext2文件系统。
复制代码
查找这两个文件中相同的字符串,如"Loading stage1.5","GRUB"等,同时注意到它们交集的行数数量,你会发现,原来e2fs_stage1_5被放在0面0道的第3个扇区开始往后10多K的扇区集里。 To home_king and all:
你好,我的系统是sda硬盘,有F5和XP两个系统
执行以下命令:
dd if=/dev/sda of=START.img skip=512 bs=1 count=512
dd if=/dev/sda of=STAGE1_5.img bs=1k skip=1 count=20
得到的都是0
这是为什么? |
|