您的位置:首页 > 其它

[原]Ubuntu下制作GRUB引导的软盘

2012-09-21 13:20 183 查看
声明

本文基于GRUB Legacy来进行操作,最终获得一个可以用GRUB引导内核启动的软盘镜像(即下文中的bootflp.img)。

本文的操作最好是在root超级用户权限下操作,可以省去sudo的麻烦。

本文是基于http://wiki.osdev.org/GRUB#Installing_to_floppy,感谢各位无名Geek的辛勤付出。

需求

操作系统:Ubuntu x86

预先安装的软件:bochs

步骤

(1)准备:

1.从ftp://alpha.gnu.org/gnu/grub/下载GRUB Legacy的最后一个版本0.97的编译好的文件grub-0.97-i386-pc.tar.gz

解压后获得stage1和stage2文件,其他不要。

2.还需要一个编译好的内核文件(必须是支持多重引导规范的),用来验证我们的成果。这里我是用的是Bran's Kernel Development Tutorial中的kernel.bin文件。

现在我们的工作目录下已经有了三个文件stage1,stage2,kernel.bin。

(2)开工:

创建两个软盘镜像:

#dd if=/dev/zero of=auxiflp.img bs=512 count=2880
#dd if=/dev/zero of=bootflp.img bs=512 count=2880


auxiflp.img用来安装GRUB文件,为我们提供grub命令行,方便对引导盘(bootflp.img)进行操作:

#dd if=stage1 of=auxiflp.img bs=512 count=1 ;将stage1写入软盘镜像的第一个扇区
#dd if=stage2 of=bootflp.img bs=512 seek=1  ;将stage2写入从第二个扇区开始的一系列扇区中


这样,auxiflp.img就完成了。

bootflp.img就是我们最终要得到的引导盘,不过还需要进行下面一系列的操作才能为我们所用:

#mkfs.vfat -F12 bootflp.img      ;将这个软盘镜像格式化成FAT12格式
#mkdir floppy            ;在当前工作目录下建个floppy的文件夹,用来挂载bootflp.img软盘镜像
#mount -o loop bootflp.img floppy    ;挂载bootflp.img镜像到floppy文件夹,对floppy文件夹的操作就是对bootflp.img的操作
#mkdir -p floppy/boot/grub       ;在软盘镜像内建立需要的目录
#cp stage* floppy/boot/grub       ;将stage1和stage2拷贝到floppy/boot/grub目录下
#cp kernel.bin floppy/boot       ;将用来测试的kernel.bin内核文件放到floppy/boot/目录下


最后,我们还需要一个menu.lst文件:

#vi menu.lst


内容如下:

title TestOS
root (fd0)
kernel /boot/kernel.bin


保存后拷贝到floppy/boot/grub 目录下:

#cp menu.lst floppy/boot/grub
#umount floppy/           ;反挂载软盘镜像


到这里,我们的bootflp.img还欠缺一个小操作,用auxiflp.img来帮助它完成GRUB的安装。

#bochs 'boot:a' 'floppya:1_44=auxiflp.img,status=inserted'


用auxiflp.img来引导系统,最后会出现grub>的命令提示符,这时候我们切换一下软盘,将软盘镜像换成bootflp.img,然后执行命令:

grub>install (fd0)/boot/grub/stage1 (fd0) (fd0)/boot/grub/stage2 (fd0)/boot/grub/menu.lst


这样我们就完成了bootflp.img引导软盘镜像的制作。

接下来我们测试一下制作好的bootflp.img:

#bochs 'boot:a' 'floppya:1_44=bootflp.img,status=inserted'


能够出现GRUB的选择引导界面的话,就算是成功了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: