NetworkManagerを唯一のネットワークデーモンとして使用し、PXE経由でボードを起動するカスタムBuildrootを構築しました。問題は、/etc/resolv.conf
実際のDNS IPとドメインが欠落していることです。カーネルが起動すると、DHCP要求を送信し、DHCPサーバーは必要なすべてのネットワーク設定を含む応答を送信します。
[ 8.278182] Sending DHCP requests ..., OK
[ 16.272817] IP-Config: Got DHCP answer from X.X.X.X, my address is X.X.X.X
[ 16.280985] IP-Config: Complete:
[ 16.284623] device=eth1, hwaddr=X:X:X:X:X:X, ipaddr=X.X.X.X, mask=255.255.0.0, gw=X.X.0.1
[ 16.295317] host=X.X.X.X, domain=*my-domain*.com, nis-domain=(none)
[ 16.302670] bootserver=0.0.0.0, rootserver=X.X.X.X, rootpath=
[ 16.302692] nameserver0=X.X.1.30, nameserver1=X.X.1.100
しかし、/etc/resolv.conf
行方不明です。
# cat /etc/resolv.conf
# This is /run/systemd/resolve/resolv.conf managed by man:systemd-resolved(8).
# Do not edit.
...
nameserver 1.1.1.1
nameserver 8.8.8.8
search .
/proc/net/pnp
によると、NFSルートを使用するときに必要な実際のネームサーバーとドメインがあります。文書。
# cat /proc/net/pnp
#PROTO: DHCP
domain my-domain.com
nameserver X.X.1.30
nameserver X.X.1.100
bootserver 0.0.0.0
ただし、/etc/resolv.conf
リンクする代わりにリンクしてください/run/systemd/resolve/resolv.conf
。
また、ホスト名でマザーボードをpingできないため、カーネルが最初のDHCP要求を送信したときにそれを保存するFSがないため、DNSサーバーでさえマザーボードIPとホスト名を含むレコードを生成しないと結論付けることができます。ホスト名。 PXEの起動中にカーネルコマンドラインパラメータでホスト名を設定できることはわかっていますが、Linuxでは「hostname」コマンドを使用して設定したいと思います。
DHCP クライアントを使用するには、この systemd-networkd 構成を使用します。
# cat /etc/systemd/network/80-dhcp.network
[Match]
Name=eth*
[Network]
DHCP=yes
[DHCP]
UseDomains=true
UseHostname=false
ClientIdentifier=mac
CriticalConnection=true
この構成では、systemd-networkd は内部 DHCP クライアントを起動して別の DHCP 要求を送信し、/etc/resolv.conf
実際のネットワーク設定を入力します。すべてがうまく機能しているようで、単にsystemd-networkdを再起動してDHCPリースを更新できますが、systemd-networkdを削除してNetworkManagerを唯一のネットワークデーモンとして使用したいと思います。
だから私はNetworkManagerがボードのホスト名で始まり、ネットワーク設定を受信して入力するときに別のDHCP要求を送信すると仮定しましたが、/etc/resolv.conf
そうではなく、ipv4.ethインタフェースのメソッドで手動でそれを行います。
設定されたインターフェイスからDHCP要求を送信するようにNetworkManagerをトリガする方法はありますか?より一般的な質問は、NetworkManagerがPXEブートで使用するのに適していますか、それとも別のネットワークユーティリティに切り替える必要がありますか?
修正する:
解決策dhcpcd
起動後、パラメータを使用して手動で起動します。
dhcpcd --nooption host_name --clientid -h $(hostname) -1
nfs-client.target と network.target の後、systemd サービスでこのコマンドを実行します。 NFSが依存するイーサネットインターフェイスのIPは変更されず、マイボードは関連するネットワーク設定を取得し、そのホスト名が解決されます。
ベストアンサー1
解決策起動後、次のパラメータを使用してdhcpcdを手動で起動します。
dhcpcd --nooption host_name --clientid -h $(hostname) -1
nfs-client.target と network.target の後、systemd サービスでこのコマンドを実行します。 NFSが依存するイーサネットインターフェイスのIPは変更されず、マイボードは関連するネットワーク設定を取得し、そのホスト名が解決されます。