使用联合文件系统(只读 SquashFS + R/W 覆盖)的简单方法是什么/
?我正在考虑使用自定义启动脚本作为内核init=
参数。该脚本将安装 SquashFS + 覆盖,然后chroot
进入安装的文件系统并运行真实的/sbin/init
...但是我不确定这与systemd
init 的配合效果如何,我想知道是否没有更简单的选项。
答案1
该配置与称为 Live Linux 系统的主要应用程序类别相关。常见的实现包括Ubuntu Live CD(和卡斯帕)及其导数,Debian 直播(和实时启动)。他们正在使用分层文件系统奥夫斯对于/
,即 tmpfs on squashfs。
user@debian:~$ df -h
Filesystem Size Used Avail Use% Mounted on
aufs 501M 7.7M 493M 2% /
tmpfs 201M 4.4M 196M 3% /run
/dev/sr0 416M 416M 0 100% /lib/live/mount/medium
/dev/loop0 302M 302M 0 100% /lib/live/mount/rootfs/filesystem.squashfs
tmpfs 501M 0 501M 0% /lib/live/mount/overlay
devtmpfs 10M 0 10M 0% /dev
tmpfs 501M 0 501M 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 501M 0 501M 0% /sys/fs/cgroup
tmpfs 501M 0 501M 0% /tmp
user@debian:~$ mount
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
tmpfs on /run type tmpfs (rw,nosuid,relatime,size=204868k,mode=755)
/dev/sr0 on /lib/live/mount/medium type iso9660 (ro,noatime)
/dev/loop0 on /lib/live/mount/rootfs/filesystem.squashfs type squashfs (ro,noatime)
tmpfs on /lib/live/mount/overlay type tmpfs (rw,relatime)
tmpfs on /lib/live/mount/overlay type tmpfs (rw,noatime,mode=755)
aufs on / type aufs (rw,noatime,si=b1cf5f036a329049,noxino)
devtmpfs on /dev type devtmpfs (rw,nosuid,size=10240k,nr_inodes=124332,mode=755)
securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)
tmpfs on /run/lock type tmpfs (rw,nosuid,nodev,noexec,relatime,size=5120k)
tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,mode=755)
cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/lib/systemd/systemd-cgroups-agent,name=systemd)
pstore on /sys/fs/pstore type pstore (rw,nosuid,nodev,noexec,relatime)
cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset)
cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpu,cpuacct)
cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices)
cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer)
cgroup on /sys/fs/cgroup/net_cls,net_prio type cgroup (rw,nosuid,nodev,noexec,relatime,net_cls,net_prio)
cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,blkio)
cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,nosuid,nodev,noexec,relatime,perf_event)
systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=22,pgrp=1,timeout=300,minproto=5,maxproto=5,direct)
debugfs on /sys/kernel/debug type debugfs (rw,relatime)
hugetlbfs on /dev/hugepages type hugetlbfs (rw,relatime)
mqueue on /dev/mqueue type mqueue (rw,relatime)
tmpfs on /tmp type tmpfs (rw,nosuid,nodev,relatime)
rpc_pipefs on /run/rpc_pipefs type rpc_pipefs (rw,relatime)
目前基于 Debian jessie 的 Live CD 似乎可以完美地运行 systemd。
我推荐你在这里下载 ISO并在 VM 主机(VirtualBox、KVM 等)上尝试。 Debian Live 有一种相对复杂的方式来构建实时镜像(实时构建),这样您就可以轻松创建自己的基于 Debian Live 的 Live Linux 发行版。