到目前为止我遇到的每个LiveUSB都使用squashfs或一些类似的“伪造”方法和ext4文件系统,同时实际上保留USB闪存驱动器上已经找到的分区类型。
为什么 Linux LiveUSB 不像ext4
内部硬盘那样直接格式化 USB 驱动器?
答案1
Squashfs 通常与联合 FS(overlayfs、aufs)结合使用来创建不可变的实时映像。
这意味着,squashfs 映像以只读方式挂载,而 tmpfs 以读写方式挂载。然后我们组装这两层并将它们作为一个联合体安装在 / 上。这些组装和安装步骤通常在 chroot 到组装的根文件系统之前在 initramfs 中完成。
所有只读访问都直接对squashfs映像进行,而所有更改都提交到RAM中易失性的tmpfs,以便下次启动时,映像将保持不变。
恕我直言,使用squashfs readwrite 不太相关。在这种情况下,除非您确实需要满足空间限制,否则您应该像您建议的那样使用 ext4。
答案2
squashfs 速度更快,尤其是对于 USB 闪存等慢速介质。
从 squashfs 启动会产生更少的 IO,因为数据被有效压缩,元数据也并不那么复杂。squashfs
有一些缺点:它占用大量 CPU,不允许任何数据修改,因此它在桌面上并不广泛使用,但它非常适合 liveUSB 等任务。
答案3
主要原因是解压后的镜像在启动时会自行扩展,但是在哪里呢?
如果它位于 RAM 上,则计算机可能没有足够的 RAM 来实现它。但如果它是在 ext4 分区上的 USB 密钥本身上完成的,则“映像”将不再完整,因为文件是写入同一分区上的。
更糟糕的是,某些更改可能会使更改持久化,这是您不希望在图像上发生的情况。