overlayroot を使ってファイルシステムを読み取り専用にしましたが、現在読み取り専用になっているのかどうかのチェックと、有効無効を簡単に切り替えられるようなスクリプトを作成してみました。
overlayroot のインストールや設定方法については以下の記事を参照してください。
overlayroot が有効か無効かをチェック
#!/bin/bash
mount | grep 'overlayroot on / type overlay' &> /dev/null
if [ $? == 0 ]; then
echo "overlayroot enabled"
else
echo "overlayroot disabled"
fi
&> /dev/null
は標準出力と標準エラー出力の破棄です。
$?
は直前に実行したコマンドの終了値です(0は成功、1は失敗)。
overlayroot を無効にする
#!/bin/bash
sudo overlayroot-chroot rm /etc/overlayroot.local.conf
overlayroot-chroot
で一時的に書き込み可能状態にして /etc/overlayroot.local.conf
を削除しているだけです。
overlayroot を有効にする
#!/bin/bash
echo 'overlayroot="tmpfs:recurse=0"' | sudo tee /etc/overlayroot.local.conf
/etc/overlayroot.local.conf
を作成して overlayroot="tmpfs:recurse=0"
を記述しているだけです。
サンプル
以上を踏まえて作成してみたのが以下のスクリプトです。
#!/bin/bash
# ex: ./overlayroot.sh disable
# ex: ./overlayroot.sh enable
# ex: ./overlayroot.sh
timeout=3
# 現在の overlayroot の状態を取得
mount | grep 'overlayroot on / type overlay' &> /dev/null
if [ $? == 0 ]; then
overlay=true
echo "overlayroot enabled"
else
overlay=false
echo "overlayroot disabled"
fi
if [[ $1 = disable ]]; then
# overlayroot を無効にする
if [ $overlay = true ]; then
echo "disable overlayroot..."
sudo overlayroot-chroot rm /etc/overlayroot.local.conf
echo -e "\nReboot after ${timeout} seconds"
sleep ${timeout}
sudo reboot
else
echo "overlayroot already disabled"
fi
elif [[ $1 = enable ]]; then
# overlayroot を有効にする
if [ $overlay = true ]; then
echo "overlayroot already enabled"
else
echo "enable overlayroot..."
echo 'overlayroot="tmpfs:recurse=0"' | sudo tee /etc/overlayroot.local.conf
echo -e "\nReboot after ${timeout} seconds"
sleep ${timeout}
sudo reboot
fi
fi
echo -e "\nCloses after ${timeout} seconds"
sleep ${timeout}