Fedora 30 の Silverblue をデスクトップ環境として使ってみている。
rpm の導入については rpm-ostree を使えば良いが、
ostree の機能の為 /usr が read only になっている為にそれ以外で
/usr に書き込みを行ないたい時は困る。
ostree admin unlock ではその変更が失われてしまうので、
/usr に overlayfs を使ってみることにした。
- オーバーレイ用ファイルシステムを作成し、 /mnt/overlay-usr に mount する。
- /mnt/overlay-usr/UPPER と /mnt/overlay-usr/WORK を作る。
- /usr 上に mount する。
# mount -t overlay overlay -o lowerdir=/usr,upperdir=/mnt/overlay-usr/UPPER,workdir=/mnt/overlay-usr/WORK /usr
#
# mount |fgrep overlay
/dev/md122 on /var/mnt/overlay-usr type btrfs (rw,relatime,seclabel,space_cache,subvolid=5,subvol=/)
overlay on /usr type overlay (rw,relatime,seclabel,lowerdir=/usr,upperdir=/mnt/overlay-usr/UPPER,workdir=/mnt/overlay-usr/WORK)
取り敢えずこれで目的は達したように見える。
これを起動時に mount したいと思って /etc/mtab を参照して、/etc/fstab に下記のように書いてみた。
overlay /usr overlay rw,seclabel,relatime,lowerdir=/usr,upperdir=/mnt/overlay-usr/UPPER,workdir=/mnt/overlay-usr/WORK 1 3
所が、うまく mount されない。はて?
起動後手動で
# mount /usr
する分には問題無く mount されるのだが?
色々厄介なようなので、今回は /etc/init.d/ 下のスクリプトに、
#
/usr/bin/mount | /usr/bin/fgrep "overlay on /usr"
if (( $? != 0 )); then
/usr/bin/mount /usr;
fi
#
と書き足して済ませることにしました。