我正在尝试制作一个具有两个分区的虚拟磁盘。第一个是 100M FAT(类型 0xC),第二个是 2G Linux 分区(类型 83)。我有一个可以使用真正的 USB 设备正确执行此操作的过程。但我想让图像虚拟化,所以我不需要使用USB设备。我发现了一个与底部链接非常相似的问题;但答案(或问题)是该文件存在于与主机共享的驱动器上。 (这是我的理解。)我正在虚拟机的磁盘上创建虚拟磁盘;所以我希望避免这个问题。
我可以创建单分区虚拟磁盘;格式化它们并向其中写入文件。我可以在单独的文件中创建这两种类型的分区,没有任何问题。只是当我尝试在单个虚拟磁盘中创建两个分区时,挂载失败。
我希望拥有一个图像文件,以便可以使用相同的信息创建 USB 驱动器;另外,我需要将图像放入公司的生产系统中。
来自“mount”的消息是:
mount:文件系统类型错误、选项错误、/dev/loop1p1 上的超级块错误、缺少代码页或帮助程序或其他错误
查看 dmesg 会出现以下消息:
[79703.646945] FAT-fs (loop1p1): 虚假的保留扇区数
[79703.646949] FAT-fs (loop1p1):找不到有效的 FAT 文件系统
fdisk 显示了我期望看到的内容:
须藤 fdisk -lu
/dev/loop1 磁盘 /dev/loop1:2.2 GiB、2306867200 字节、4505600 个扇区
单位:扇区 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节/512 字节
I/O 大小(最小/最佳):512 字节/512 字节
磁盘标签类型:dos
磁盘标识符:0xbe0f04f4
设备引导起始结束扇区大小 ID 类型
/dev/loop1p1 2048 206847 204800 100M c W95 FAT32 (LBA)
/dev/loop1p2 206848 4401151 4194304 2G 83 Linux
我在跑步:
uname -a
- Linux xxxxxxxxx 4.15.0-142-generic #146~16.04.1-Ubuntu SMP 四月 13 日星期二 09:27:15 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
答案1
看来我错过了 mkfs.* 步骤。在lostup命令和/dev/loop0p1和/dev/loop0p2可用之后,我需要格式化分区。
sudo mkfs.vfat -F 32 -n "BOOT" /dev/loop0p1
sudo mkfs.vfat -L -n "rootfs" /dev/loop0p2
在大多数示例中,磁盘映像似乎已被格式化;所以没有提到 mkfs.* 步骤。
希望这对将来有所帮助。