我如何压缩 /usr 并在启动时挂载它?

我如何压缩 /usr 并在启动时挂载它?

我跑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?但是怎么做呢?

相关内容