如果我们在实时 USB 中使用 initrd,为什么还需要 squashfs?
答案1
Initrd 已被弃用并由 Initramfs(以及某种程度上的 upstart)取代。
initramfs 更像是启动过程的一部分,是一个用于引导内核和初始化硬件的最小文件系统。
suqashfs 是一个压缩工具,它可以将大型(5 Gb)文件系统压缩成更小的尺寸,但它是 ro。
因此,squashfs 用于整个文件系统,/以及 Ubuntu 运行所需的所有二进制文件和库。
也可以看看:
https://help.ubuntu.com/community/LiveCDCustomizationFromScratch
https://wiki.ubuntu.com/Initramfs
Initramfs 是您的机器可以访问的第一个根文件系统。它用于挂载包含所有数据的真实 rootfs。initramfs 包含挂载 rootfs 所需的模块。
这是我构建的 initramfshttp://blog.bodhizazen.com/linux/initramfs/
和
http://squashfs.sourceforge.net/
Squashfs 是 Linux 的压缩只读文件系统。Squashfs 适用于一般只读文件系统、存档(即可以使用 .tar.gz 文件的情况)以及需要低开销的受限块设备/内存系统(例如嵌入式系统)。
答案2
squashfs 与压缩的 initramfs
值得注意的是,initramfs 也可以被压缩:https://unix.stackexchange.com/questions/2221/can-the-initramfs-image-use-a-compression-format-other-than-gzip/429880#429880
我认为 squashfs 的优点在于您不必在每次启动时对巨大的图像进行完全解压缩,这会很慢。
这就是 initramfs 所做的,因为它只是一个压缩的 .cpio。
相反,squashfs 允许您在进行过程中仅解压缩文件,因为它必须分别压缩单个文件和磁盘数据结构。