調整の手間が若干少ないoverlay編(fuse無し)も参照の上、どちらを使うか検討下さい。本編では、overlayとfuse(Filesystem in Userspace)を使います。ご利用は自己責任で。
前提:準備①〜⑤が終わっていること。
ここで作成・編集するフォルダ/ファイル:
|
フォルダ/ファイル名 |
内容 |
⑥ |
/etc/fstab |
デフォルトマウントの定義 |
⑦ |
/usr/local/bin/mount_ov.sh |
/etc/fstabから呼び出すシェル |
⑧ |
/overlay/ /.overlay |
overlayの実体 overlayマウントする時のフラグ |
⑥ /etc/fstabの調整
LABELで認識させるのは私の趣味だが、raspbianのkernel起動パラメータ(/boot/cmdline.txt)では対応できない様子で中途半端な対応となる。必要に応じてアレンジすること。
準備:
# バックアップ
mv /etc/fstab /etc/fstab_org
cp -a /etc/fstab_org /etc/fstab
# BLocK device IDを確認(任意)
blkid
# ラベル付与
dosfslabel /dev/mmcblk0p1 boot
e2label /dev/mmcblk0p2 rootfs
/etc/fstabを編集(rw→ro):
proc /proc proc defaults 0 0
LABEL=boot /boot vfat ro,defaults 0 2
mount_ov.sh /overlay fuse nofail,defaults 0 0
tmpfs /tmp tmpfs defaults 0 0
⑦ /usr/local/bin/mount_ov.shを作成
ここではoverlayでrwとするフォルダは/usr /etc /home /root /varとするが、必要に応じてFHSを確認すること。
if [ -e /.overlay ]; then
find /var/log/ -type d | cpio -pdm /dev/shm/
find /var/log/ -type l | cpio -pdm /dev/shm/
mount -t tmpfs tmpfs /overlay
for d in usr etc home root var; do
mkdir -p /overlay/${d} /overlay/${d}_rw
OPTS="-o lowerdir=/${d},upperdir=/overlay/${d},workdir=/overlay/${d}_rw"
mount -t overlay ${OPTS} overlay /${d}
done
mount -t tmpfs tmpfs /var/log
mv /dev/shm/var/log/* /var/log/
rm -rf /dev/shm/log
else
mount -o remount,rw,noatime /
fi
exit 0
念の為:
chmod +x /usr/local/bin/mount_ov.sh
⑧ シャットダウンフリー起動の設定
mkdir /overlay
touch /.overlay
touch /fastboot
⑨ その他
元の環境に戻す時:
mount -oremount,rw /
rm /.overlay
reboot
/boot/config.txt, cmdline.txt 編集 or raspi-config実行時:
mount -oremount,rw /boot
$HOME/.bashrcへの追記(任意):
if [[ $- != *i* ]]; then return; fi
findmnt /etc | grep overlay > /dev/null
[ $? == 0 ] && printf "\n<<<< The Overlay Environment! >>>>\n\n"
Reference:
Setting up overlayFS on Raspberry Pi - Domoticz
FilesystemHierarchyStandard - Debian Wiki