操作系统课程记录(2)——制作grub启动盘(2)

来源:互联网 发布:淘宝店铺起名大全家居 编辑:程序博客网 时间:2024/05/19 14:15

准备grub-0.97-i386-pc.tar.gz

grub是一个多操作系统启动程序。系统的引导过程是载硬盘启动的时候,Bios转向主引导记录,之后引导装载程序,实际上就是grub。它允许用户装载一个特定的操作系统(比如linux内核)。
下载到的可能并不是已经编译好的grub,如果不是需要自行编译。网上也提供编译好了的grub,所以为了方便,还是推荐直接下载编译好了的版本。
接下来解压:

tar -xzvf grub-0.97-i386-pc.tar.gz

准备映像

cddd if=/dev/zero of=a.img bs=512 count=2880

添加grub启动功能

sudo losetup /dev/loop3 a.imgsudo dd if=./grub-0.97-i386-pc/boot/grub/stage1 of=/dev/loop3 bs=512 count=1sudo dd if=./grub-0.97-i386-pc/boot/grub/stage2 of=/dev/loop3 bs=512 seek=1sudo losetup -d /dev/loop3

测试能否进入grub界面

qemu-system-i386 -fda a.img

我要是还提供图片说明grub界面正确的是怎么样,我就需要重新做一遍了。然而我比较懒,嗯。正不正确大致可以看出来的。

准备磁盘映像

dd if=/dev/zero of=32M.img bs=4096 count=8192sudo losetup /dev/loop3 32M.imgsudo fdisk /dev/loop3

fdisk这一步,操作顺序大致是n(添加新分区),p(列出分区列表),1(选择第一个分区),(默认的数字start),(默认的数字end),w(把分区写入硬盘并且退出)。这时候你需要记下那个数字start,因为你可能不采用它给的默认数字。下面第二句中的num_start等于start*512,一定要记得替换。

sudo losetup -d /dev/loop3sudo losetup -o  num_start /dev/loop3 32M.imgsudo mke2fs /dev/loop3sudo mount /dev/loop3 rootfs

拷贝前面制作的bzImage和rootfs.img。其中bzImage在linux源码目录中,rootfs.img在与rootfs相同的目录中。对于我这里,是这样操作的:

cdsudo cp rootfs.img rootfssudo cp ./Downloads/linux-3.10.98/arch/x86/boot/bzImage rootfs

增加grub功能

sudo mkdir rootfs/bootsudo mkdir rootfs/boot/grubsudo cp ./grub-0.97-i386-pc/boot/grub/* rootfs/boot/grub

在rootfs/boot/grub下编写menu.lst,具有以下内容:(你可以选择你喜欢的文本编辑器编写,你在rootfs写可能不能直接编写,你可以在home底下写完之后,然后sudo cp 到目标目录下。或者你通过sudo nautilus 打开能够资源管理器使得你能够操作里面普通用户不能操作的目录)。

 default 0 timeout 30 title linux on 32M.img root (hd0,0) kernel (hd0,0)/bzImage root=/dev/ram init=/bin/ash initrd (hd0,0)/rootfs.img

利用grub启动软盘,在硬盘映像上添加grub功能

qemu-system-i386 -boot a -fda a.img -hda 32M.img

进入grub界面后

root (hd0,0)setup (hd0)

然后esc,选择从linux进入。或者先退出grub,然后

qemu-system-i386 -hda 32M.img

运行

qemu -kernel arch/x86/boot/bzImage -s -S

可以看到新打开的qemu虚拟机上,整个都是黑屏,此时qemu在等待gdb的链接。

0 0
原创粉丝点击