为文件存储创建空白磁盘映像

joh*_*ran 11 partitioning mount disk-image

与 Mac OS X 用户创建和挂载空白 .dmg 文件的方式类似,可以随心所欲地添加和删除文件,并将该图像移动到任何他们想要的地方……就好像它是一个虚拟 USB 驱动器。

是否有 Ubuntu 的等价物?我知道“磁盘映像挂载器”允许我们挂载和编辑现有的 .img 文件,但是有没有同样简单的方法来创建/格式化空的 .img 文件?到目前为止,我发现的每个解决方案都实现了复制/克隆现有驱动器,但我不想要那样。

编辑:我根据下面接受的答案创建了一个脚本化的 GUI 应用程序。它只是一个基于 YAD 和 .sh 文件的对话框,它的目的是使 dd 命令/挂载/格式过程更容易让不太懂命令行的人处理。

这里是

kos*_*kos 21

是的。

这是从头开始创建自定义图像的分步指南;

我会假设以下几点:

  • 图像大小应为 100 MiB
  • 镜像分区表应该是 MBR
  • 映像应包含单个 FAT32 主分区

创建空白图像

创建空白图像:

dd if=/dev/zero of=image.img iflag=fullblock bs=1M count=100 && sync
Run Code Online (Sandbox Code Playgroud)
dd if=/dev/zero of=image.img iflag=fullblock bs=1M count=100 && sync
Run Code Online (Sandbox Code Playgroud)

挂载空白图像

列出已经繁忙的环回设备:

losetup
Run Code Online (Sandbox Code Playgroud)
ubuntu@ubuntu ~/tmp % dd if=/dev/zero of=image.img iflag=fullblock bs=1M count=100 && sync
100+0 records in
100+0 records out
104857600 bytes (105 MB) copied, 0.0415825 s, 2.5 GB/s
ubuntu@ubuntu ~/tmp % tree
.
??? image.img

0 directories, 1 file
Run Code Online (Sandbox Code Playgroud)

在第一个可用的环回设备上挂载镜像:

sudo losetup loop1 image.img
Run Code Online (Sandbox Code Playgroud)
losetup
Run Code Online (Sandbox Code Playgroud)

对空白图像进行分区/格式化

运行gparted将回送设备作为参数传递:

sudo -H gparted /dev/loop1
Run Code Online (Sandbox Code Playgroud)

截图1

点击“设备”->“创建分区表...”:

截图2

点击“申请”:

截图3

点击“分区”->“新建”:

截图4

从下拉菜单中选择“fat32”:

截图5

点击“添加”:

截图6

点击绿色勾号:

截图7

点击“申请”:

截图8

点击“关闭”:

截图9

并关闭 Gparted。

卸载镜像

最后,从环回设备卸载镜像:

sudo losetup -d /dev/loop1
Run Code Online (Sandbox Code Playgroud)
ubuntu@ubuntu ~/tmp % losetup                   
NAME       SIZELIMIT OFFSET AUTOCLEAR RO BACK-FILE
/dev/loop0         0      0         0  1 /cdrom/casper/filesystem.squashfs
Run Code Online (Sandbox Code Playgroud)

您可以将创建的图像用于任何您想要的目的;例如,您可以将其用作虚拟 USB 驱动器:

sudo losetup loop1 image.img
Run Code Online (Sandbox Code Playgroud)

打开文件:

截图10

截图11