orange's学习--第十一章:使用grub多操作系统引导

本文介绍如何将引导扇区安装到Orange'S分区,实现与硬盘上其他操作系统的共存。通过安装grub并利用其stage1和stage2,实现多重引导。文章详细解释了使用dd命令进行分区引导扇区安装的过程,以及启动时输入grub命令的具体意义。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

将引导扇区安装到Orange'S分区的引导扇区,而不是整块硬盘的引导扇区,这样Orange'S就可以跟硬盘上其他操作系统和平共处了。做到这一点其实很容易,只需要安装一个grub就可以了。

我们先将引导扇区装到Orange'S分区(硬盘的一个逻辑分区)的引导扇区:

dd if=boot/hdboot.bin of=$img_file seek=`echo "obase=10;ibase=16;\`egrep -e '^ROOT_BASE' boot/include/load.inc | sed -e 's/.*0x//g'\`*200" | bc` bs=1 count=446 conv=notrunc
dd if=boot/hdboot.bin of=$img_file seek=`echo "obase=10;ibase=16;\`egrep -e '^ROOT_BASE' boot/include/load.inc | sed -e 's/.*0x//g'\`*200+1FE" | bc` skip=510 bs=1 count=2 conv=notrunc


把grub写入整块硬盘的引导扇区,也就是说,我们并没有完全安装grub,只是使用它的stage1和stage2,有了它们,多重引导就可以实现了。

dd if=$stage1 of=$img_file bs=1 count=446 conv=notrunc
dd if=$stage2 of=$img_file bs=512 seek=1 conv=notrunc

安装了grub的stage1和stage2之后,启动时会出现grub提示符,这时我们输入三个命令:
grub> rootnoverify (hd0,4)
grub> chainloader +1
grub> boot

boot之后敲一个回车,我们的OS就启动起来了,很容易不是吗?
下面简单介绍一下grub中输入的三个命令的意义。
“rootnoverify”意为将指定分区作为根分区,但不试图挂载(mount)它。我们知道,grub可以用来启动Linux,并且可以指定启动哪个内核,要做到这一点,grub显然应该是可以识别存放内核文件的文件系统的。这就是root命令试图去挂载文件系统的原因。然而,grub并不认识我们的文件系统──至少目前如此,所以我们用一个rootnoverify来告诉grub,不要试图挂载它,只需要将分区作为根就好了。需要注意一点,grub对硬盘分区的编号跟Linux下的规则有所不同,它是从零开始编号的。hd[0,1,2,3]表示四个主分区,hd4表示第一个逻辑分区──这正是我们的根分区。
“chainloader+1”会把刚刚指定的根分区的引导扇区加载到0x7c00处,也就是说,这一命令完成了之前BIOS完成的工作。
“boot”的作用显而易见,它将控制权交给刚刚读入的引导扇区,于是系统就归我们管了。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值