[操作系统原理与实现]创建带有GRUB2引导启动的磁盘映像文件

1、使用bximage或dd命令创建磁盘映像文件

bximage hd.img

dd if=/dev/zero of=hd.img bs=512 count=20480
  • 需要注意的是,如果是用dd命令创建磁盘映像文件,扇区数目通过count选项设定,需采用适当的大小。

2、使用fdisk工具创建分区

fdisk hd.img
  • 为了后面方便操作,不需要使用sudo执行这条命令。

3、使用losetup映射磁盘映像文件

sudo losetup -P /dev/loop6 hd.img
  • 回环设备/dev/loop6中可能并非是闲置的,需要按照系统运行的实际情况选择一个恰当的,如果所有已存在的回环设备均已被占用,需要自行创建一个回环设备。相应的,下文中提到的回环设备loop6也要更改为对应的loop*。
  • 参数-P 是要求losetup映射分区。

4、分区格式化

sudo mkfs.msdos /dev/loop6p1
  • 不一定非要格式化为fat12、fat16、fat32、ntfs等磁盘分区,ext*也是可以的。
  • 顺便提议下,使用mkfs.msdos、mkfs.fat、mkfs.vfat等工具格式化分区时都执行同样的操作,使用哪个都是一样的。但是,格式化不同大小的分区,得到的磁盘分区却是不同的(有fat12、fat16、fat32)。

5、挂载分区

sudo mount /dev/loop6p1 /mnt/vdisk/p1
  • 为了方便管理,已在文件系统中创建了需要的各个路径与目录(比如/mnt/vdisk/p1),以下再不解释。

6、安装GRUB2

sudo grub-install --boot-directory=/mnt/vdisk/p1 --target=i386-pc /dev/loop6
  • –boot-directory选项指定GRUB2文件的安装位置
  • –target选项指定GRUB2的安装目标
  • /dev/loop6指示GRUB2程序被安装在回环设备/dev/loop6,此程序的二进制代码被写入到磁盘前N个扇区中,不属于任何的分区,与–boot-directory选项指定的GRUB2文件安装位置不同。
  • 在安装过程中会提示“正在为 i386-pc 平台进行安装。”。如果安装成功,则会提示“安装完成。没有报告错误。”,如下图。如果存在其他提示,则有可能出现了别的问题,需要具体分析具体解决。
    在这里插入图片描述

7、卸载分区

sudo umount /mnt/vdisk/p1
  • 如果在控制台或文件管理器,再或者别的工具软件中打开了挂载点的目录,则该命令执行失败,提示“umount: /mnt/vdisk/p1: target is busy.”。关闭这些程序后,再执行即可。

8、断开映射

sudo losetup -d /dev/loop6
  • -d选项指示losetup工具断开对应的回环设备。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章