为什么LiveUSB 使用squashfs(和类似的)文件系统?

为什么LiveUSB 使用squashfs(和类似的)文件系统?

到目前为止我遇到的每个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 密钥本身上完成的,则“映像”将不再完整,因为文件是写入同一分区上的。

更糟糕的是,某些更改可能会使更改持久化,这是您不希望在图像上发生的情况。

相关内容