我正在尝试dd为可与硬盘驱动器和闪存介质一起使用的操作系统创建分发映像(通过 Linux 的命令)。我已成功创建映像,但无法正常启动。我将布局以下步骤:
这将创建一个包含整个图像的空白文件:
dd if=/dev/zero of=/tmp/test.img bs=512 count=1250000
Run Code Online (Sandbox Code Playgroud)将环回设备文件与映像文件关联:
losetup /dev/loop0 /tmp/test.img
Run Code Online (Sandbox Code Playgroud)在我们可以操作之前,parted我们必须定义一个媒体标签类型:
parted -s /dev/loop0 mklabel msdos
Run Code Online (Sandbox Code Playgroud)使图像文件中的第一个分区为 512MB:
parted -s -a opt /dev/loop0 mkpart primary ext2 '0%' 512MB
Run Code Online (Sandbox Code Playgroud)将第一个分区设置为“可引导”:
parted -s /dev/loop0 set 1 boot on
Run Code Online (Sandbox Code Playgroud)在第一个分区上创建一个 Ext2 文件系统:
mkfs.ext2 -b 1024 /dev/loop0p1
Run Code Online (Sandbox Code Playgroud)安装 grub 引导代码的 stage1,同时保留上面创建的分区表:
dd if=/boot/grub/stage1 of=/dev/loop0 bs=446 count=1
Run Code Online (Sandbox Code Playgroud)在媒体的前 512 字节之后安装 grub 引导代码的 stage2(跳过 stage1 和分区表):
dd if=/boot/grub/stage2 of=/dev/loop0 bs=512 seek=1
Run Code Online (Sandbox Code Playgroud)将镜像文件的第一个分区挂载到一个挂载点:
mount /dev/loop0p1 /mnt/image
Run Code Online (Sandbox Code Playgroud)将所有数据复制到分区中并卸载。
dd 映像文件到任何硬盘驱动器或闪存介质。
使用这些步骤,我可以 …