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镜像的位置。