我跑sudo mksquashfs /usr /usr_squash/usr.sfs -b 65536 -comp xz
我添加到 fstab:
/usr_squash/usr.sfs /usr_squash/sq squashfs loop,ro 0 0
overlay /usr overlay defaults,lowerdir=/usr_squash/sq,upperdir=/usr_squash/upd,workdir=/usr_squash/tmp 0 0
当然,也会创建挂载点sq、upd和tmp。
使用默认内核时,我出现以下错误:failed: No such device
这显然是因为 overlayfs 是内核 [M] 模块,而不是 [*]。
使用自定义内核,overlayfs 启动但产生以下错误:
overlayfs: failed to resolve '/usr_squash/upd': -2
mount: mounting overlay on /root/usr failed: No such file or directory
overlayfs: upper fs is r/o, try multi-lower layers mount
设置相对于初始 Ramdrive 根目录而非主根目录(upperdir=/root/usr_squash/upd
而不是upperdir=/usr_squash/upd
)的目录没有帮助。即使如此,我也无法在每次更新时重建自定义内核。
那么,挂载压缩的 /usr 的最佳方法是什么?我不想破坏自动更新,也不想让自动更新破坏我的系统。我应该编写自定义钩子并运行吗update-initramfs -u -k all
?但是怎么做呢?