创建带有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工具断开对应的回环设备。