resolv.conf は常に空です。

resolv.conf は常に空です。

私は2つの異なる組み込みデバイスを持っています。 1つはTI arago Linuxを実行している古いデバイス、もう1つはXilinxデバイス(petalinux)です。

dns-nameservers/etc/network/interfacesネットワークを追加して再構成し/etc/init.d/networking restartたり、デバイスを再起動すると、両方のデバイスで同じ結果が表示されます。
ファイルは/etc/resolv.conf常に空です。


パッケージ、デーモン、または.domainがシステムに存在しませんdhclientresolvconfnetwork-managermdns

ここにいる/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呼び出されます。ifupifdown

不変のファイル属性ソリューションが言及されている場合:システムの設計方法と完全に反対しているように見えるので、手動でファイルを作成し、resolv.confファイルの属性を変更して不変()にしたくありません。永続的でなければならない場合は、もともと揮発性メモリ(populate-揮発性.shによって生成された)に保存されるのはなぜですか?chattr +iresolv.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/interfacesPS:たとえば...以外のディレクティブ/名前を使用している場合にmy-dns置き換えます。知っておくと良いですが、ルールに固執して使用することをお勧めします。$IF_DNS_NAMESERVERS$IF_MY_DNSdns-nameservers

おすすめ記事