什么正在创建 /run/netplan/eth0.yaml?

什么正在创建 /run/netplan/eth0.yaml?

启动时会创建一些东西/run/netplan/eth0.yaml,但我不知道是什么。(我正在运行 18.04 Bionic Beaver。)该文件导致 eth0 由 systemd-networkd 管理,但我希望它由 NetworkManager 管理。是否有某个 udev 规则或 systemd 服务正在创建该文件?我查看了 netplan 的源代码,它似乎无法自行生成文件/run/netplan/*.yaml(它只能读取文件)。

内容/run/netplan/eth0.yaml

network:
  version: 2
  renderer: networkd
  ethernets:
    eth0:
      match:
        macaddress: "xx:xx:xx:xx:xx:xx"
      set-name: eth0
      dhcp4: true
      dhcp-identifier: mac
      critical: true
      nameservers:
        addresses: ["192.168.0.1"]
        search: ["example.com"]

答案1

当您在内核命令行上将网络配置选项传递给系统时(例如,使用 NFS 或 iSCSI 时,或者在 initramfs 中配置 ssh 以进行远程 cryptsetup 解锁时),此文件由 initramfs-tools 创建。

您应该能够覆盖renderer: NetworkManager按词汇排序的文件中设置eth0.yaml,并以此方式将此网络接口重定向到 NetworkManager。

答案2

更准确地说,这个文件是由例程创建的,由文件中的netinfo_to_netplan()顶级函数调用。我真的希望找到一个可以设置在某处的变量来禁用此功能,但我认为上面评论中的 Richard 的 init-bottom 脚本可能是最好的解决方案。configure_networkingscripts/functionsinitrd.img

请注意,你可以使用以下命令亲自查看脚本:

mkdir /tmp/initramfs
sudo unmkinitramfs /boot/initrd.img /tmp/initramfs/
cd /tmp/initramfs/
sudo find . -type f -exec grep -il netplan {} \;
sudo less main/scripts/functions

相关内容