“openwrt-19.07.6-x86-64-combined-squashfs.img”图像大小为 20MB。如果我将文件名更改为“openwrt.raw”,我可以将其导入 virt-manager 并引导进入系统。但是根分区“/”没有空格。
如果我将“openwrt-19.07.6-x86-64-combined-squashfs.img” dd 到 U 盘中,然后将 U 盘 dd 到一个新文件,将 outfile 导入 virt-manager 并启动系统,根分区的大小为“256MB”。
dd if=openwrt-19.07.6-x86-64-combined-squashfs.img of=/dev/sde
dd if=/dev/sde of=./openwrt_with_256MB_root_partition.raw
“openwrt_with_256MB_root_partition.raw”的大小与U盘大小相同。但是如果我使用以下命令:
dd if=openwrt-19.07.6-x86-64-combined-squashfs.img of=/openwrt.raw
输出文件与输入文件大小相同。我明白这个动作是没有意义的。但是,当我将 256MB 根分区插入 USB 驱动器时,有人能解释一下是什么让其可用吗?有没有办法在不需要物理 USB 驱动器或其他磁盘的情况下创建具有 256MB 根空间的映像文件?
不知道 OpenWRT 现在做了什么。
但是,您所做的只是在文件末尾添加一些垃圾数据。因为文件大小最终是虚拟机内部的设备大小,所以很容易理解结果。
您还可以使用
truncate
:严格来说,这是不一样的,因为它会导致文件稀疏,但它更快且足够好。
为了得到完全相同的结果,您实际上需要将一些数据写入文件,如下所示:
您还可以在
dd
. 256 - 20 = 236与此相关的另一个工具是
fallocate
.更新:看图片,是这样的:
(注意“大小”列。)
第二个分区应该包含压缩的只读根映像和一个读写 F2FS 区域,不知道它是如何工作的。也许它在第一次启动时调整了大小或其他东西。