以下在ubuntu16.04(一定要root模式下(sudo -s)下测试通过
dd if=/dev/zero bs=512 count=2880 of=floppy.img
为了方便我们需要在镜像文件中建立文件系统,有了文件系统才比较方便放置、修改我们自己的内核和应用程序。
首先将软盘镜像与某个 Loop 设备关联。
losetup /dev/loop7 floppy.img
然后格式化:
mkfs.msdos /dev/loop7
这里推荐采用fat12 格式创建文件系统
这是文件系统就建立好了。下面是在镜像文件中安装 GRUB。
首先将镜像文件中的文件系统挂在到我们主系统的目录树上。
mount -o loop /dev/loop7 /mnt/
然后建立 GRUB 需要的目录结构。
mkdir -p /mnt/boot/grub
再然后拷贝需要的文件(可能用虚拟机的同学boot/grub没有stage1和stage2和stage1.5,需要下载GRUB Legacy的最后一个版本0.97的编译好的文件ftp://alpha.gnu.org/gnu/grub/grub-0.97-i386-pc.tar.gz,然后stage改到相应的目录即可)
cp /boot/grub/stage1 /mnt/boot/grub
cp /boot/grub/stage2 /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(内核文件相对于/mnt(根目录)中位置)
卸载镜像文件
umount /mnt/
在镜像文件中安装 GRUB
grub --device-map=/dev/null
grub> device (fd0) /dev/loop7
grub> root (fd0)
grub> setup (fd0)
grub> quit
有必要可以修改memu.lst文件(mount floppy.img /mnt 然后修改)
将软盘镜像与 loop 设备的关联解除。
losetup -d /dev/loop7
这时软盘镜像已经可以使用了。
可以用 file 命令查看一下:
file floppy.img
floppy.img: DOS/MBR boot sector, code offset 0x48+2, OEM-ID "mkfs.fat", root entries 224, sectors 2880 (volumes <=32 MB) , sectors/FAT 9, sectors/track 18, serial number 0xd621015, unlabeled, FAT (12 bit), followed by FAT
如果要修改软盘镜像中的文件也很简单,将其挂载到某个目录就可以了。
mount floppy.img /mnt/
然后就是正常的文件操作了。
附上自己做得软盘:
链接: https://pan.baidu.com/s/1i4DJx9j 密码: vdrf
可以sudo mount floppy.img /mnt 然后修改
Done!!!
引用: