ubuntu通过bochs调好grub2

最近学习grub2相关知识,调试过程中使用虚拟机来避免不停的重启机器,这里使用bochs作为虚拟机。

1、制作一个硬盘镜像,用于安装我们将要调试的grub2;并作为我们的bochs中运行系统的引导盘;

dd if=/de v/zero of=hard-grub.img bs=512 count=524160

在当前目录先生成一个大约256M的hard-grub.img文件,524160(cylinkers=520,header=16,spt=63;520*16*63)

2、在hard-grub.img 上创建一个分区,并格式化为ext3,作为虚拟系统的boot分区;

fdisk hard-grub.img

输入m,可以查看fdisk所有命令

这里我们输入n->p->1->默认起始扇区->默认结束扇区->w结束命令

sudo losetup /dev/loop0 hard-grub.img   (删除是losetup -d)

sudo kpartx -a /dev/loop0     (在/dev/mapper下生成分区设备文件loop0p1,删除用kpartx -d) 

sudo mkfs.ext3  /dev/mapper/loop0p1 (格式化loop0p1分区)        

sudo mount  /dev/mapper/loop0p1 ~/hard-grub  (挂在loop0p1)

3、安装grub2

sudo grub-install --boot-directory ~/hard-grub --force --allow-floppy /dev/loop0

安装成功,最后会显示No error reported,在我们挂载的hard-grub中会生成grub文件夹和一些文件。

4、以如下bochs.rc启动脚本,启动我们的虚拟机  bochs -f bochs.rc

megs:256  
romimage:file=/usr/share/bochs/BIOS-bochs-latest 
vgaromimage:file=/usr/share/bochs/VGABIOS-lgpl-latest  
#floppya:1_44=bochs.img,status=inserted 
#boot:floppy 
ata0:enabled=1,ioaddr1=0x1f0,ioaddr2=0x3f0,irq=14
ata0-master:type=disk,path="hard-grub.img",cylinders=520,heads=16,spt=63
boot:disk 
log:bochsout.txt  
mouse:enabled=0 
display_library:sdl

                       

至此说明我们的grub已经在虚拟磁盘上安装成功,并且识别到了我们的boot分区,msdos1

5、测试我们的grub引导功能

因为我们已经把我们的分区loop0p1作为我们的boot分区挂载到了hard-grub中,因此我们直接可以在ubuntu的hard-grub中,对虚拟机的boot分区进行操作。

把 ubuntu下的/boot/grub/grub.cfg 文件考到hard-grub/grub中。

把ubuntu下的/boot下的某一版本的相关文件考到hard-grub/boot中(boot目录需要自己创建,相关文件如config-xxx、System.map-xxx、vmlinz-xxxx、initrd.img-xxx)

启动虚拟机,看见引导界面和我们宿主机ubuntu引导界面一样了,着了由于grub.cfg内容与实际的虚拟机的配置不一致(我们只是单纯的拷过来的),系统不会引导成功,在grub下安"c",我们主动引导,界面如下:  

     

这了vmlinuz可以自动补全,说明我们的grub已经找到了内核镜像,此处还未设置root文件系统。

boot,即可引导我们的内核。

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值