欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

制作带有 GRUB 引导功能的软盘镜像文件

发布时间:2025/6/15 编程问答 47 豆豆
生活随笔 收集整理的这篇文章主要介绍了 制作带有 GRUB 引导功能的软盘镜像文件 小编觉得挺不错的,现在分享给大家,帮大家做个参考.
试自己的操作系统时一般都会用到虚拟机、软盘镜像文件或硬盘镜像文件。我用的虚拟机是 Bochs ,无论是软盘镜像还是硬盘镜像文件的格式都很简单,或者说根本就没格式,就是个空白的文件,而磁头数、柱面数等参数在 Bochs 的配置文件中指定。

这样有个好处就是生成镜像文件非常简单。比如说创建软盘镜像:

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

为了方便我们需要在镜像文件中建立文件系统,有了文件系统才比较方便放置、修改我们自己的内核和应用程序。
下面的命令在 Fedora 12 中测试通过。其他的 Linux 系统可能命令有些区别。

首先将软盘镜像与某个 Loop 设备关联。
losetup /dev/loop7 floppy.img

然后格式化:
mkfs.ext2 /dev/loop7

或者:
mkfs.msdos /dev/loop7

这里推荐采用fat12 格式创建文件系统,方便在win下用 winImage 操作。

这是文件系统就建立好了。下面是在镜像文件中安装 GRUB。

首先将镜像文件中的文件系统挂在到我们主系统的目录树上。
mount -o loop /dev/loop7 /mnt/

然后建立 GRUB 需要的目录结构。
mkdir -p /mnt/boot/grub

再然后拷贝需要的文件。
cp /boot/grub/stage1 /mnt/boot/grub
cp /boot/grub/stage2 /mnt/boot/grub

cp /boot/grub/e2fs_stage1_5 /mnt/boot/grub
或者
cp /boot/grub/fat_stage1_5 /mnt/boot/grub

创建 grub 配置文件:
vi /mnt/boot/grub/grub.conf

内容如下(这里假设我们的内核文件放在软盘镜像的/boot/目录,命名为kernel):
title test os 0.0.1
    root (fd0)
    kernel /boot/kernel

卸载镜像文件
umount /mnt/

在镜像文件中安装 GRUB

grub --device-map=/dev/null
grub> device (fd0) /dev/loop7
grub> root (fd0)
grub> setup (fd0)
grub> quit

将软盘镜像与 loop 设备的关联解除。
losetup -d /dev/loop7

这时软盘镜像已经可以使用了。
可以用 file 命令查看一下:

file floppy.img
floppy.img: DOS floppy 1440k, x86 hard disk boot sector

如果要修改软盘镜像中文件也很简单,将其挂载到某个目录就可以了。

losetup /dev/loop7 floppy.img

mount -o loop /dev/loop7 /mnt/

然后就是正常的文件操作了。

如果需要在 win 下操作,可以使用 winImage, 或者自己写个小程序来操作。

 

后记:

原文写于几年前,当时 GRUB2 还不成熟,用的人很少。现在 GRUB2 大有替代 GRUB 的趋势,本文中的方法在使用 GRUB2 的系统上已经不适用了。因此本文的内容对喜欢折腾操作系统的新手来说可能有些过时了。不过我还是选择保留了这篇Blog ,一是纪念学生时代的那段时光,也希望能对仍旧使用 GRUB 作为引导程序的爱好者们提供一点帮助。
 关于在 GRUB2 上如何创建可引导软盘镜像还有硬盘镜像文件,我将另写一篇 Blog 来说明。

总结

以上是生活随笔为你收集整理的制作带有 GRUB 引导功能的软盘镜像文件的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。