ラズパイを電源ブチ切りできるように
SDをRead-Onlyでマウントするシステムを構築
するためのメモ
2018年を迎えた今でもアクセスがあるのですが、
構築に失敗したという情報も見受けます。
十分にご注意ください。
Stretchでは確実に死にます。
aufs+fsprotectよりお手軽なunionfs-fuseを組み込んでみる。
※RAMDisk運用ができていることが前提
●パッケージ導入
# apt-get install unionfs-fuse
●スクリプト編集
# cp /usr/share/doc/unionfs-fuse/examples/S01a-unionfs-fuse-live-cd.sh /etc/init.d/a-unionfs-fuse-live-cd
# cp /usr/share/doc/unionfs-fuse/examples/rc.local.omit-pid.sh /usr/local/sbin/a-unionfs-fuse-omit-pid.sh
# vi /etc/init.d/a-unionfs-fuse-live-cd
先頭(#!/bin/shの後)にINIT INFOを追記
#!/bin/sh
### BEGIN INIT INFO
### BEGIN INIT INFO
# Provides: a-unionfs-fuse-live-cd
# Required-Start: mountall-bootclean
# Required-Stop:
# Default-Start: S
# Default-Stop:
# X-Start-Before: procps udev-mtab urandom
# Short-Description: UnionFS mode
# Descrition: Shutdown process will not be required
### END INIT INFO
前半の UBIN= の下に追記
UBIN=/usr/bin/unionfs-fuse
cd /boot
cd /boot
file=noprotect
if [ -e ${file} ]; then
echo "${file} exists"
exit 0
fi
mount -o remount,ro /dev/mmcblk0p1 /boot
末尾の pivot_root . oldroot の下に追記
pivot_root . oldroot
mount -o remount,ro /dev/root /oldroot
mount -o remount,ro /dev/root /oldroot
for d in dev run run/lock sys run/shm dev/pts boot
do
mount --bind /oldroot/$d /$d
done
同 init q の下に追記
init q
/usr/local/sbin/a-unionfs-fuse-omit-pid.sh
/usr/local/sbin/a-unionfs-fuse-omit-pid.sh
exit 0
●initスクリプト有効化
# update-rc.d a-unionfs-fuse-live-cd defaults
●切り替えスクリプト作成
# vi /usr/local/bin/noprotect
#!/bin/sh
mount -o rw,remount /boot
cd /boot
if [ -e "protect" ]; then
rm /boot/protect
fi
if [ -e "noprotect" ]; then
echo "noprotect mode"
else
touch /boot/noprotect
echo "noprotect mode"
fi
mount -o ro,remount /boot
# vi /usr/local/bin/protect
#!/bin/sh
mount -o rw,remount /boot
cd /boot
if [ -e "noprotect" ]; then
rm /boot/noprotect
fi
if [ -e "protect" ]; then
echo "protect mode"
else
touch /boot/protect
echo "protect mode"
fi
mount -o ro,remount /boot
# chmod a+x /usr/local/bin/noprotect
# chmod a+x /usr/local/bin/protect
●起動モード切り替え
通常(ReadWrite)モードで起動
# noprotect
ReadOnlyモードで起動
# protect
先日Raspberry Piを購入し四苦八苦しながらVPNサーバを構築しましたが
返信削除SDカードの寿命が気になり色々調べるとaufs+fsprotectの記事が沢山ありましたが
Linux初心者の私にはカーネルコンパイル等は、
まだ敷居が高く半分諦めかけていたところでした。
みそりん様の記事を参考にして
Read-Only環境構築に再チャレンジしてみようと思います!
備忘録な自分メモ的な表現なのでわかりにくいかもですが。
削除頑張ってみてください!
少し時間がとれましたの挑戦してみました。
返信削除結果は無事リードオンリーで動作しているようです!
起動モード切り替えスクリプトは大変便利ですね!
これでSDカードの寿命を気にしすぎないで済みそうです。
私にとって大変ありがたい記事でした、感謝いたします。