前文 阐述的方法脱离了广大机械硬盘和 USB 2.0 群众的实际情况,是不得人心的。下面介绍一种更加符合科学发展观的定制方法。
启动时,GRUB 或 extlinux 先引导运行 /live/vmlinuz 和 /live/initrd.img, initrd.img 初始化之后会寻找 /live 目录下以 squashfs ext2 ext3 ext4 xfs jffs2 后缀的文件和以 dir 为后缀的目录,然后将它们 union mount 成根目录。union filesystem,联合文件系统是将多个文件夹联合挂载在一个文件夹下,对联合目录的读写作用在指定为 rw 的分支目录上。
#initrd.img/bin/boot/9990-overlay.sh:
69 if [ -n "${addimage_directory}" ] && [ -d "${addimage_directory}" ]
70 then
71 for FILESYSTEM in squashfs ext2 ext3 ext4 xfs jffs2 dir
72 do
73 for IMAGE in "${addimage_directory}"/*."${FILESYSTEM}"
74 do
75 if [ -e "${IMAGE}" ]
76 then
77 image_string="${image_string} ${IMAGE}"
78 fi
79 done
80 done
81 fi
这里使用工具 unionfs-fuse,相对于 aufs,unionfs 支持在用户层上,兼容性较好