我想创建一个磁盘映像文件以包含在我的单元测试中。这个磁盘文件应该包含一些我想读取的文件。当我创建 SD 卡或 USB 记忆棒的副本时,dd
磁盘映像非常大,即使压缩它,大小也太大。
所以我想创建一个新的磁盘映像并随后安装它。然后添加新数据并压缩磁盘映像以进行版本控制
我目前的步骤:
- 创建磁盘映像:
dd if=/dev/zero of=DISK1.img bs=1M count=1200
- 打开分开:
sudo parted DISK1.img
- 创建分区表(使用parted):
mklabel msdos
- 创建分区(带parted):
mkpart primary fat32 1MB 100%
- 打印:
(parted) print Modell: (file) Festplatte <path>/DISK1.img: 1258MB Sektorgröße (logisch/physisch): 512B/512B Partitionstabelle: msdos Disk-Flags: Nummer Anfang Ende Größe Typ Dateisystem Flags 1 1049kB 1258MB 1257MB primary fat32 lba
现在,当我退出并重新打开parted时,文件系统不再被识别:
(parted) print
Modell: (file)
Festplatte <path>/DISK1.img: 1258MB
Sektorgröße (logisch/physisch): 512B/512B
Partitionstabelle: msdos
Disk-Flags:
Nummer Anfang Ende Größe Typ Dateisystem Flags
1 1049kB 1258MB 1257MB primary lba
如何从头开始创建图像?
编辑 2024-03-02
使用@Stephen Kitt 的评论,它起作用了:
dd if=/dev/zero of=DISK1.img bs=1M count=1200
parted DISK1.img
- 创建分区表(使用parted):
mklabel msdos
- 创建分区(带parted):
mkpart primary fat32 1MB 100%
- 退出分手
mkfs.vfat -v --offset 2048 DISK1.img
挂载分区:
- 找到startsector:(
fdisk -lu DISK1.img
同上) - 获取偏移量(以字节为单位):512bytes * 2048sectors = 1048576
- lopsetup分区:
sudo losetup -o 1048576 /dev/loop0 DISK1.img
- 山:
sudo mount /dev/loop0 DISK_MOUNT
- 将数据复制到已安装的分区(需要root)
- 卸载
sudo umount /dev/loop0
- 分离lostup:
sudo losetup -d /dev/loop0
现在新数据位于磁盘映像中