もし、手の届かない離島に電源ブチ切りラズパイを置くなら、私ならば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:
proc /proc proc defaults 0 0
LABEL=boot /boot vfat ro,defaults 0 2
tmpfs /tmp tmpfs defaults 0 0
/sbin/myinit:
if [ -d /tmpfsroot ] ; then
mount -t tmpfs tmpfs /tmpfsroot
for d in etc root; do
cp -a /${d} /tmpfsroot/
mount -obind /tmpfsroot/${d} /${d}
done
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
[ -e /etc/fstab_tmpfsroot ] && mv -f /etc/fstab_tmpfsroot /etc/fstab
[ -e /etc/issue_tmpfsroot ] && mv -f /etc/issue_tmpfsroot /etc/issue
[ -e /etc/motd_tmpfsroot ] && mv -f /etc/motd_tmpfsroot /etc/motd
fi
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:
______ _______ _______ _______ _______ ___ _______ __ _
| _ | | _ || || || _ || | | _ || | | |
| | || | |_| || _____|| _ || |_| || | | |_| || |_| |
| |_||_ | || |_____ | |_| || || | | || |
| __ || ||_____ || ___|| _ | | | | || _ |
| | | || _ | _____| || | | |_| || | | _ || | | |
|___| |_||__| |__||_______||___| |_______||___| |__| |__||_| |__|
↑ SSH/Telnetログインでは見れない。
/etc/motd_tmpfsroot:
,--. ,---. ,--.
,-' '-.,--,--,--. ,---. / .-' ,---. ,--.--. ,---. ,---. ,-' '-.
'-. .-'| || .-. || `-,( .-' | .--'| .-. || .-. |'-. .-'
| | | | | || '-' '| .-'.-' `)| | ' '-' '' '-' ' | |
`--' `--`--`--'| |-' `--' `----' `--' `---' `---' `--'
`--'
↑ 環境が分かりやすくなるので推奨。