調整の手間が若干少ない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
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):
# overlayfs/fuse用の/etc/fstab # proc proc /proc proc defaults 0 0 # 軟弱なFAT領域はroマウント LABEL=boot /boot vfat ro,defaults 0 2 # rootfsはコメントアウト #LABEL=rootfs / ext4 ro,defaults,noatime 0 1 # fuse+overlay mount_ov.sh /overlay fuse nofail,defaults 0 0 # /tmpもroになるのでtmpfsにする tmpfs /tmp tmpfs defaults 0 0
⑦ /usr/local/bin/mount_ov.shを作成
ここではoverlayでrwとするフォルダは/usr /etc /home /root /varとするが、必要に応じてFHSを確認すること。
#!/bin/bash ## /.overlayが存在すればoverlayにする。 if [ -e /.overlay ]; then ## /var/logのツリー構成だけを退避 find /var/log/ -type d | cpio -pdm /dev/shm/ find /var/log/ -type l | cpio -pdm /dev/shm/ ## overlayのrw実体となるtmpfsを作成 mount -t tmpfs tmpfs /overlay ## 主要フォルダを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 #### Option-A:退避した/var/logをtmpfsに移動 mount -t tmpfs tmpfs /var/log mv /dev/shm/var/log/* /var/log/ rm -rf /dev/shm/log #### Option-B:退避した/var/logをoverlayfsに移動 ## rm -rf /var/log ## mv /dev/shm/var/log /var/ else ## rootfsをrw,noatimeに設定 mount -o remount,rw,noatime / fi exit 0
念の為:
chmod +x /usr/local/bin/mount_ov.sh
⑧ シャットダウンフリー起動の設定
mkdir /overlay touch /.overlay # ↓ディスクチェック無効設定。rwマウント時には消去される。忘れても問題無い。 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