PaPeRo iでは/etcはRAMディスクになっており、起動シーケンスの中で毎回同じファイルが生成されるようになっています。
そのため手で作成したり編集しても再起動すると消えてしまいます。
再起動でも消えないようにするためには/Extension/scriptにスクリプトを作成する必要があります。
ファイルをコピーする
例として/Extension/etc/resolv.confを用意しておき、新たに作成する/Extension/script/S90etcというスクリプトファイルで起動時に/etcにコピーするようにした例です。
rcスクリプトの作法としては
# /Extension/script/S90etc start
とした場合にコピーし、
# /Extension/script/S90etc stop
とした場合には元に戻すべきと思われ、そのようにしていますが、今回の目的であればstopで元に戻すようにする必要・意味はないかも知れません。
なおファイル名をS90etcとしていますが「90」を小さくするほど早く実行されるようになりますので、必要であれば/etc/init.dで他のサービスの起動タイミングを調べ、適切な数字を決定して下さい。
/Extension/script/S90etc:
#!/bin/sh
export PATH=/usr/bin:/bin:/usr/sbin:/sbin
start() {
if [ -f /Extension/etc/resolv.conf ] ; then
if [ ! -f /etc/resolv.conf.orig ] ; then
mv /etc/resolv.conf /etc/resolv.conf.orig
fi
cp -p /Extension/etc/resolv.conf /etc
fi
}
stop() {
if [ -f /etc/resolv.conf.orig ] ; then
mv /etc/resolv.conf.orig /etc/resolv.conf
fi
}
restart() {
stop
start
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
*)
echo "usage: $0 { start | stop | restart }" >&2
exit 1
;;
esac
exit 0
また/Extension/script/S90etcには実行権限を付与してください。
# chmod +x /Extension/script/S90etc
ファイルの内容を直接記述する
SXXファイルに/etcの設定ファイルの内容を直接記述するには以下のように記述します。”EOF”で囲まれた文字列が/etc/resolv.confに書き込まれます(“EOF”はどんな文字列でも構いません)。
start() {
if [ ! -f /etc/resolv.conf.orig ] ; then
mv /etc/resolv.conf /etc/resolv.conf.orig
fi
cat > /etc/resolv.conf <<EOF
nameserver 192.168.5.1
## this file was created by /Extension/script/S90etc
EOF
}
既存ファイルを修正する
busybox版(簡易版)ですがsedやawkは存在していますのでこれらを使って既存ファイルを変更する方法もあります。”timeout:2″を”timeout:10″に書き換える例です。
start() {
if [ ! -f /etc/resolv.conf.orig ] ; then
mv /etc/resolv.conf /etc/resolv.conf.orig
fi
sed 's/timeout:2/timeout:10/' < /etc/resolv.conf.orig > /etc/resolv.conf
}