Raspberry Piのfsprotectを簡単に解除出来るようにしてみた。

以前の記事でfsprotectを導入してReadOnly化して運用しているRaspberry Pi。

ここ数日mail2faxをいろいろ試していてReadOnlyを解除して実験しては作業をしていない時にトラブルを起こさないようにfsproctを有効にしての繰り返し。

以前の記事に書いたようにSSH上からDDで処理出来るので手間は少ないけど毎回DDを手動で打ち込んでいるとたまに間違えて違うパーティションに書き込んでしまい全データがオジャンなんて事もあって…

と、言うことで簡単にfsprotectを解除出来るようにしてみました!

 

まずは下準備。

Bootのイメージをまだ作っていない場合は手動でfsprotectを無効化して

dd if=/mmcblk0p1 of=保存先

と入力してbootパーティション以外の適当な場所にbootパーティションのイメージを作成しましょう。(自分は/usr/aufs/というディレクトリに保存してある。)

続いてエディターで/usr/local/binにファイルを作ります。

# nano /usr/local/bin/fsprotect

#!/bin/sh

if [ `grep -c “nofsprotect" /boot/cmdline.txt` = 1 ]
then
sed -i -e “s/nofsprotect/fsprotect/g" /boot/cmdline.txt
reboot
else
echo fsprotect
fi

fsprotect有効化用スクリプト。

# nano /usr/local/bin/nofsprotect

#!/bin/sh

if [ `grep -c “nofsprotect" /boot/cmdline.txt` = 1 ]
then
echo nofsprotect
else
dd if=/usr/aufs/boot.img of=/dev/mmcblk0p1
reboot
fi

fsprotect無効化用スクリプト。

書けたら2つのファイルにchmodで実行権限を与えて完成。

 

処理内容は/boot/cmgline.txtの中身をみてnofsprotectと書かれていれば現在はfsprotect無効なのでfsprotectに書き換えて再起動。

nofsprotectと書かれていなければfsprotectが有効なので/usr/aufs/boot.imgをDDで/dev/mmcblk0p1に焼いて再起動。

 

/usr/local/binに設置したスクリプトはどこからでも実行可能なのでSSHで「fsprotect」「nofsprotect」と入力するだけで簡単に切り替え可能になりました!

ちょっとした事だけどaufsを導入したRaspberry Piを使っている場合はかなり便利なのでお試しあれ!