原文地址:https://github.com/dracutdevs/dracut/blob/master/dracut.cmdline.7.asc#booting-live-images
Dracut为live的启动镜像提供了多种选项:
只读文件系统镜像-SquashFS
系统会从SquashFS中的只读文件系统启动,并为只读的基文件系统申请挂载一个可读写的Device-mapper快照或OverlayFS ovely,这种方法很大程度上确保了快速启动和更少的RAM占用。用户必须很小心,避免向块照卷中写入过多的块数据。一旦快照overlay的块被耗尽,根文件系统将变为只读,并可能引起应用程序出错。这种情况下,快照overlay文件会被标记为Overflow,并需要进行复杂的脱机修复和空间扩展。这些临时的overlay本质上是RAM中的稀疏文件,会使用被分配的空间用作实际的块申请。它们在RAM中被默认分配名义上的32G空间。这个空间的大小可以在内核命令行中的rd.live.overlay.size=进行调整。
经典的文件系统结构如下所示:
squashfs.img | SquashFS from LiveCD .iso
!(mount)
/LiveOS
|- rootfs.img | Filesystem image to mount read-only
!(mount)
/bin | Live filesystem
/boot |
/dev |
... |
对于OverlayFS挂载overlay,文件系统结构也可能是一个直接压缩的根文件系统:
squashfs.img | SquashFS from LiveCD .iso
!(mount)
/bin | Live filesystem
/boot |
/dev |
... |
Dracut会从各种live overlay启动方案中选择一种作为默认方式。
解压缩的live文件系统镜像
可读写文件系统镜像
系统会取出一个压缩的文件系统镜像,提取到/run/initramfs/fsimg/rootfs.img,并将它链接到一个循环设备,在/dev/mapper/live-rw创建一个可写的、线性Device-mapper设备,并把该设备以可写卷的方式挂载到/。这样会在启动的时候占用更多的RAM资源,但live的文件系统也变得更加容易管理。用户可以制作一个自定义大小的文件系统镜像,系统在启动的过程中,这块空间会被保留。这种模式下,根文件系统的修改都是临时的(重启后丢失)。
文件系统的结构:
rootfs.tgz | Compressed tarball containing filesystem image
!(unpack)
/rootfs.img | Filesystem image at /run/initramfs/fsimg/
!(mount)
/bin | Live filesystem
/boot |
/dev |
... |
如果使用这个启动选项,确保内核命令行中的rd.writable.fsimg=1,通过添加root=live:<URL>指定压缩的文件系统镜像tar包或SquashFS镜像的位置。