
私は2つの異なる組み込みデバイスを持っています。 1つはTI arago Linuxを実行している古いデバイス、もう1つはXilinxデバイス(petalinux)です。
dns-nameservers
/etc/network/interfaces
ネットワークを追加して再構成し/etc/init.d/networking restart
たり、デバイスを再起動すると、両方のデバイスで同じ結果が表示されます。
ファイルは/etc/resolv.conf
常に空です。
パッケージ、デーモン、または.domainがシステムに存在しませんdhclient
。resolvconf
network-manager
mdns
ここにいる/etc/network/interfaces
:
# /etc/network/interfaces -- configuration file for ifup(8), ifdown(8)
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 192.168.1.2
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameservers 192.168.1.1
そしてresolv.conf
:
[root@linux:~] ls -l /etc/resolv.conf
lrwxrwxrwx 1 root root 20 Feb 3 18:17 /etc/resolv.conf -> /var/run/resolv.conf
[root@linux:~] ls -l /var/run/resolv.conf
-rw-r--r-- 1 root root 0 Feb 3 18:17 /var/run/resolv.conf
実行すると、/etc/init.d/networking restart
両方のデバイスが既定で呼び出され、ifdown -a
この場合と busybox ユーティリティの両方がifup -a
呼び出されます。ifup
ifdown
不変のファイル属性ソリューションが言及されている場合:システムの設計方法と完全に反対しているように見えるので、手動でファイルを作成し、resolv.conf
ファイルの属性を変更して不変()にしたくありません。永続的でなければならない場合は、もともと揮発性メモリ(populate-揮発性.shによって生成された)に保存されるのはなぜですか?chattr +i
resolv.conf
どんなヒントでもありがとう!
更新:解決策を見つけましたが、誰かが検索した場合に備えて質問を開いておきます。
答え1
/etc/network/if-up.d/dns
次の内容でスクリプトを作成します(この例でのみ考慮されますeth0
)。
#!/bin/sh
if [ "$IFACE" = "eth0" ];then
for NS in $IF_DNS_NAMESERVERS; do
R="${R}nameserver $NS
"
done
echo "$R" > /etc/resolv.conf
fi
実行可能にしてくださいchmod +x /etc/network/if-up.d/dns
。
デバイスを再起動するか、ネットワークサービスを再起動するたびに再resolv.conf
作成されます。奇跡的に動作します!
dns-nameservers
/etc/network/interfaces
PS:たとえば...以外のディレクティブ/名前を使用している場合にmy-dns
置き換えます。知っておくと良いですが、ルールに固執して使用することをお勧めします。$IF_DNS_NAMESERVERS
$IF_MY_DNS
dns-nameservers