ブログ

Armadillo:udhcpc(DHCPクライアント)起動時に独自のresolv.confを簡易的に設定する方法

at_kazutaka.bito
2016年1月27日 19時12分

独自のDNSサーバー等を設定する場合は、resolv.confに記述します。 ただ、udhcpc(DHCPクライアント)が起動すると、resolv.confがクリアされます。 udhcpc起動の度に、resolv.confを編集するのは面倒ですので、udhcpc起動に 独自のresolv.confを簡易的に設定する方法を考えました。

下記の方法は、ROMのconfig領域(/etc/config/)に、独自のresolv.confをresolv.conf_customという名前で 保存しておいて、udhcpc起動時にresolv.conf_customをresolv.confに書きこむようにしています。

1.独自のresolv.conf

独自のDNSサーバー等を /etc/config/resolv.conf_custom というファイルに記述しておきます。 (ファイル名は任意でよい。今回は、例としてresolv.conf_customという名前にしてある。)

2.udhcpc起動時のスクリプトの編集

/etc/config/rc.localの末尾に

ifdown eth0

sleep 3

cp /usr/share/udhcpc/default.script /usr/share/udhcpc/default.script_org
sed -e "s!echo -n > \$RESOLV_CONF!cat /etc/config/resolv.conf_custom > /etc/config/resolv.conf!g" /usr/share/udhcpc/default.script_org > /usr/share/udhcpc/default.script

ifup eth0

を追加します。

補足)Armadillo起動時に自動実行される/etc/config/rc.localに、 udhcpc起動時のスクリプト /usr/share/udhcpc/default.script を修正して、udhcpcを再起動するスクリプトを追加しています。

オリジナルのdefault.scriptでは、udhcpc起動時に /etc/config/resolv.conf を新規ファイルで作成するようになっていますが、上記の修正で、udhcpc起動時に、 /etc/config/resolv.conf_custom の内容を /etc/config/resolv.conf にコピーするようになっています。

3.config領域(/etc/config/)の保存

上記手順で編集したconfig領域(/etc/config/)のファイルを flatfsd -s コマンドで、ROMに保存します。

次回のArmadillo起動以降、udhcpc(DHCPクライアント)起動時に独自のresolv.conf(上記例では、resolv.conf_custom)が反映されるようになります。