もし、手の届かない離島に電源ブチ切りラズパイを置くなら、私ならばoverlayもfuseも使わない。理由は、デバイス屋/組込屋としての直感から来る警告だが、ここ⇐ に現実に沿ったコメントもある。
以下に紹介する方法は、X-Windowの利用が不要もしくは削除されているようなラズパイを、長期安定運用する場合などに適する。一方で、手に届く範囲の運用や趣味レベルならば、overlayfs方式を推奨する。overlayfs方式の方が起動は少し速い。なお、いずれも、ご利用は自己責任で。
前提1:tmpfsにコピーする領域は500MB未満で、なるべく小さくすること。そうできない場合には、overlayfs方式でとなる。
前提2:準備①〜③が完了していること。fuseとoverlayは不要。
~# mkdir /tmpfsroot
~# dosfslabel /dev/mmcblk0p1 boot
~# e2label /dev/mmcblk0p2 rootfs
~# mount -oremount,rw /boot
~# cp -a /boot/cmdline.txt /boot/cmdline_org.txt
/boot/cmdline.txt:
・・・・・ init=/sbin/myinit fastboot ro
~# mount -oremount,ro /boot
/etc/fstab_tmpfsroot:
# tmpfsroot用の/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 # /tmpもroになるのでtmpfsにする tmpfs /tmp tmpfs defaults 0 0
/sbin/myinit:
#!/bin/bash ## /tmpfsrootが存在すればtmpfsrootを構築する if [ -d /tmpfsroot ] ; then ## tmpfsを作成 mount -t tmpfs tmpfs /tmpfsroot ## 主要rwフォルダをtmpfsにコピーし、bindマウントで元位置に戻す。 ## tmpfs容量(500MB)より小さくなるように調整すること。/varは別処置する。 #for d in etc home root; do for d in etc root; do cp -a /${d} /tmpfsroot/ mount -obind /tmpfsroot/${d} /${d} done ## /varは選択的に処置 mkdir /tmpfsroot/var find /var/ -type d | cpio -pdm /tmpfsroot/ find /var/ -type l | cpio -pdm /tmpfsroot/ rm -rf /tmpfsroot/var/lib/* cp -a /var/lib/* /tmpfsroot/var/lib/ mount -obind /tmpfsroot/var /var ## tmpfsroot用の/etc/fstabを設定。tmpfsroot化済みのため元ファイルは消えない。 [ -e /etc/fstab_tmpfsroot ] && mv -f /etc/fstab_tmpfsroot /etc/fstab ## tmpfsroot用のログインロゴがあれば設定 [ -e /etc/issue_tmpfsroot ] && mv -f /etc/issue_tmpfsroot /etc/issue [ -e /etc/motd_tmpfsroot ] && mv -f /etc/motd_tmpfsroot /etc/motd fi ## Start Systemd exec /sbin/init
~# chmod +x /sbin/myinit ← 忘れずに!
元の環境に戻す場合:
~# mount -oremount,rw /boot
~# cp -a /boot/cmdline.txt /boot/cmdline_tmpfsroot.txt
~# cp -a /boot/cmdline_org.txt /boot/cmdline.txt
~# mount -oremount,ro /boot
~# reboot
デコレーション(任意):
/etc/issue_tmpfsroot:
______ _______ _______ _______ _______ ___ _______ __ _ | _ | | _ || || || _ || | | _ || | | | | | || | |_| || _____|| _ || |_| || | | |_| || |_| | | |_||_ | || |_____ | |_| || || | | || | | __ || ||_____ || ___|| _ | | | | || _ | | | | || _ | _____| || | | |_| || | | _ || | | | |___| |_||__| |__||_______||___| |_______||___| |__| |__||_| |__|
/etc/motd_tmpfsroot:
,--. ,---. ,--. ,-' '-.,--,--,--. ,---. / .-' ,---. ,--.--. ,---. ,---. ,-' '-. '-. .-'| || .-. || `-,( .-' | .--'| .-. || .-. |'-. .-' | | | | | || '-' '| .-'.-' `)| | ' '-' '' '-' ' | | `--' `--`--`--'| |-' `--' `----' `--' `---' `---' `--' `--'
↑ 環境が分かりやすくなるので推奨。