原文地址:https://fedoraproject.org/wiki/LiveOS_image
1、简介
Fedora为GNU/LINUX操作系统开发了Live CD USB DVD镜像。因为镜像文件中的/LiveOS目录存储了镜像文件系统,所以我们会用这个名称代指产品。
这个文档共享了一些关于LiveOS设计的关键信息,这些信息可以帮助用户更好的利用比通常情况下限制更多的文件系统存储资源。
2、参考
3、多live镜像启动安装
4、存储
当一个Live CD或一个Live DVD(只读光盘介质上的LiveOS镜像)启动的时候,initrd.img中的/sbin/dmsquash-live-root会在RAM中为系统的每一次启动准备一个临时的存储空间-初始的ramdisk文件系统。默认情况下,这是一个32G、处于内存中、系统overlay的稀疏文件(见下文文件系统部分)。内核命令行选项rd.live.overlay.size可以用来设置一个不同的临时的overlay大小。因为这个临时的overlay是一个在tmpfs中的稀疏文件,所以可能被指定了一个较大,甚至比可用内存还要大的空间,但在实际分配的时候是按照需求进行分配的。
当内核命令行选项rd.live.overlay在启动时被提供,例如使用一个Live USB设备的时候,脚本dmsquash-live-root.sh会寻找一个持久的overlay文件,用于存储根文件系统的更改。具体查看https://github.com/dracutdevs/dracut/blob/master/dracut.cmdline.7.asc#booting-live-images。
LiveOS设备的使用者需要注意overlay的状态。参考下文中的overlay分配状态部分,监控overlay的空间消耗情况,提前预测避免overlay溢出或无效的情况。
4.1 LiveOS文件系统结构
Live操作系统(LiveOS)的文件系统在光盘镜像.img文件中。
4.1.1 Live.iso
如果挂载了一个Fedora-Workstation-Live.iso文件或一个Live CD,文件系统会列出下述目录:
/EFI
/images
/isolinux
/LiveOS
|- squashfs.img
(Systems before Fedora 24 also had these files
|- livecd-iso-to-disk - a Bash script for installing the LiveOS image onto a USB device
|- osmin.img - a minimized OS image formerly used to aid installation to a hard disk
4.1.2 squashfs.img
squashfs.img是一个SquashFS、压缩、只读的文件系统,内含fedora操作系统的根文件系统。squashfs.img在/LiveOS目录下:
squashfs.img包含一个rootfs.img文件:
/LiveOS
|- rootfs.img (This contains a filesystem of type ext4. Before F-24 it was named ext3fs.img.)
挂载rootfs.img会最终展示fedora操作系统的根文件系统。
4.1.3 Live.iso + squashfs.img
整体结构如下所示:
Fedora-Workstation-Live.iso
!(mount)
/EFI
/image
/isolinux
/LiveOS
|- squashfs.img
!(mount)
/LiveOS
|- rootfs.img
!(mount)
/bin -> usr/bin
/boot
/dev
/etc
/home
/lib -> usr/lib
/lib64 -> usr/lib64
/lost+found
/media
/mnt
/opt
/proc
/root
/run
/sbin -> usr/sbin
/srv
/sys
/tmp
/usr
/var
4.1.4 安装到LiveUSB/SD设备
当LiveOS镜像被加载到一个USB或SD磁盘,/isolinux目录会被拷贝到/syslinux目录。
如果通过--overlay-size-mb NNN这个选项要求了持续性,会在/LiveOS中为根文件系统创建一个Device-mapper的overlay文件。
如果通过--home-size-mb NNN选项指定了一个独立的home文件系统,一个ext4格式的home.img文件系统会被创建。
文件系统现在如下所示:
Fedora-Workstation-Live USB/SD device
!(mounted on /run/initramfs/live) (Before Fedora 17 the mount point is /mnt/live in the root file system.)
/syslinux
/LiveOS
|- home.img
!(mounted on /home) (This occurs during boot up by the /etc/rc.d/init.d/livesys script.)
/liveuser
/Desktop
/Documents
/Downloads
...
/lost+found
|- livecd-iso-to-disk
|- overlay-NAME-XXXX-XXXX (Where NAME is the device partition name and XXXX are hex numerals.)
|- squashfs.img
!(mount) (At boot up by the /usr/sbin/dmsquash-live-root.sh script in the initramfs.)
/LiveOS
|- rootfs.img
!(mounted on '/') (This occurs during boot up by the dmsquash-live-root.sh script.)
/bin -> usr/bin
/boot
/dev
/etc
/home (If there is a home.img, then this is its mount point directory.)
4.1.5 无压缩的LiveUSB/SD安装
如果在使用livecd-iso-to-disk加载时指定了--skipcompress选项,压缩的squashfs.img会被扩展出来。结构如下:
Fedora-Workstation-Live USB/SD device
!(mounted on /run/initramfs/live)
/syslinux
/LiveOS
|- home.img
!(mounted on /home)
/liveuser
/...
|- livecd-iso-to-disk
|- overlay-NAME-XXXX-XXXX
|- rootfs.img
!(mounted on '/')
/bin -> usr/bin
/boot
/dev
/etc
/home
...
4.1.6 展平的squashfs.img
对于OverlayFS加载overlays,squashfs.img结构可能是一个直接压缩的根文件系统(在fedora 30中的049版dracut中支持启动这个结构)。
squashfs.img | SquashFS from LiveCD .iso
!(mount)
/bin | Live filesystem
/boot |
/dev |
... |
4.2 持久存储
Fedora LiveOS允许在3个地方使用持久存储:
1. 一个通用的、持久性的、基于overlay的文件空间。用于存储所有对LiveOS根文件系统的更新和改变。这个存储空间被一次性、固定大小的方式被分配,并有一些注意事项(见下文中的文件系统部分)。
2. 一个持久性的home文件系统。
3. 主机设备空间。
/run/initramfs/live
/LiveOS
|- home.img
|- livecd-iso-to-disk
|- overlay-NAME-XXXX-XXXX
|- squashfs.img
/syslinux
通用的、持续性overlay被用于启动期间保持操作系统的改变和更新。
每一次的文件系统启动都会使用/etc/rc.d/init.d/livesys script进行登记。
4.3 HOME文件系统
4.4 设备文件系统
4.5 安装选项
5、文件系统
注意:
因为LiveOS根文件系统在一个压缩的SquashFS镜像中,所以对于空闲磁盘的标准测算(df命令和带界面的文件管理器显示的),显示的是“表面的”文件空间(文件系统没有压缩的时候),这会对实际物理可用空间产生过高的评估。内含的rootfs.img文件系统区域,经常被调整到适合操作系统第一次创建时的大小。
例如,Fedora-Workstation-Live-x86_64-28-1.1.iso包含一个6.4G的ext4根文件系统,这个文件系统分散压缩在一个小于1.6G的.iso文件中(或在一个安装LiveOS设备的文件系统中)。对一个未被挂载的根文件系统使用df -h,在总空间为6.4G的情况下,会显示使用了4.9G,剩余1.5G空间。
根文件系统实际分配和可用物理磁盘空间决定于device-mapper overlay文件的大小,仅可以通过dmsetup status命令查询。
5.1 overlay的分配状态
上述提到了一种苛刻的限制条件,LiveOS的持续性overlay是一次性分配、固定大小的文件空间。这与它采用了device mapper的快照有关。device mapper快照将一个只读的文件系统镜像和写时复制服务结合在一起。这个只读的文件系统镜像是从压缩的SquashFS.img中复制过来的,SquashFS.img在只读LiveCD或其他.iso安装文件中。写时复制服务跟踪只在快照(overlay)文件中被修改的数据,并重定向指向被修改数据块的文件指针。overlay中只存储文件中被更改的扇区。
(device mapper将rootfs.img和写时复制服务联合在一起)
6、针对可持续overlay镜像的内核升级
7、参考