建立一个启动软盘,并安装GRUB

来源:互联网 发布:算法公平和效率 知乎 编辑:程序博客网 时间:2024/06/06 03:29

最近在试着写一个简单的操作系统,打算在11周内写完。会不定期的在这里写东西记录一下。

今天完成了引导程序和第一个进程,这倒不是很难。反而制作启动软盘花费了不少的时间…所以才打算把制作方法写在这里。

  • 开发环境:Ubuntu 14
  • 虚拟机:qemu

具体步骤

用dd命令建立一个.img文件,大小为1.44M.我建立的这个文件的名字叫做floppy.img

dd if=/dev/zero of=floppy.img bs=512 count=2880

用loop0把floppy.img虚拟成块设备

sudo losetup /dev/loop0 floppy.img

将它格式化成FAT12文件系统

sudo mkfs.fat /dev/loop0

然后把它挂载到目录树的/mnt文件夹下

sudo mount /dev/loop0 /mnt

然后可以去ftp://alpha.gnu.org/pub/gnu/grub/下在一个编译好的GRUB软件包。也可以选择自己编译。接着在映像文件中建立相应的文件夹,把GRUB的stage1和stage2复制进去。

sudo mkdir -p /mnt/boot/grubsudo cp ./boot/grub/stage1 /mnt/boot/grubsudo cp ./boot/grub/stage2 /mnt/boot/grub

我用的GRUB版本非常低,是0.97版的。也建议在家在玩的时候不要选择太高的版本,因为会麻烦很多。接下来我们需要写两个配置文件,一个是grub.conf另一个是menu.lst,由它们来告诉GRUB我们的操作系统是什么名字,内核放在什么地方

sudo vim /mnt/boot/grub/grub.conf

这个配置文件中的内容是
title=TLOS 0.01
root (fd0)
kernel /kernel

sudo vim /mnt/boot/grub/menu.lst

这个配置文件中的内容是
timeout 3
title TLOS 0.01
root (fd0)
kernel /kernel

然后进入GRUB命令行,把GRUB安装在floppy.img上。如果没有安装GRUB的话,可以通过包管理工具安装,在Ubuntu上用这一条命令:

sudo apt-get install grub

安装GRUB到映像文件的方法是:

>grub device (fd0) /dev/loop0>grub root (fd0)>grub setup (fd0)

现在这个软盘映像文件就已经做好了。只剩下一些收尾工作了:
把loop0从/mnt文件夹上解除挂载,把loop0和floppy.img之间的映射解除。

sudo umount /mnt/sudo losetup -d /dev/loop0
原创粉丝点击