在执行新的 Subiquity 服务器自动安装程序的网络部分期间,它会失败并返回非零代码 on netplan apply
,然后它会udevadm settle -t 0
一遍又一遍地运行,返回退出代码 1 直到它最终放弃。
来自一份/var/crash
报告:
# date/time removed for readability
DEBUG subiquitycore.netplan:111 config for ens2f0 = {}
DEBUG subiquitycore.netplan:111 config for ens2f0 = {}
DEBUG subiquitycore.netplan:135 config for bond0 =
{'dhcp4': True, 'interfaces': ['ens2f0', 'ens2f1'], 'parameters': {'lacp-rate': 'slow', 'mode': '802.3ad', 'transmit-hash-policy', 'layer2'}}
DEBUG subiquitycore.utils:74 arun_command called: ['netplan', 'apply']
DEBUG subiquitycore.utils:48 run_command called: ['udevadm', 'settle', '-t', '0']
DEBUG subiquitycore.utils:61 ['udevadm', 'settle', '-t', '0'] exited with code 1
DEBUG subiquitycore.controller.network:196 waiting 0.1 to let udev event queue settle
<repeating udevadm settle commands issued>
(相关)自动安装配置:
#cloud-config
autoinstall:
version: 1
# double network due to a bug
# see https://ubuntu.com/server/docs/install/autoinstall-reference#network
network:
network:
version: 2
ethernets:
ens2f0: {}
ens2f1: {}
bonds:
bond0:
dhcp4: true
interfaces:
- ens2f0
- ens2f1
parameters:
mode: 802.3ad
lacp-rate: slow
transmit-hash-policy: layer2
这会生成以下 Netplan 配置 ( /etc/netplan/00-installer-config.yaml
):
# This is network config written by 'subiquity'
network:
bonds:
bond0:
dhcp4: true
parameters:
mode: 802.3ad
lacp-rate: slow
transmit-hash-policy: layer2
ethernets:
ens2f0: {}
ens2f1: {}
version: 2
我还尝试了一个更简单的 netplan 配置,在一个端口 ( ens2f0
) 上只有一个静态地址,甚至在任何接口匹配eth*
或en*
(在本例中ens2f0
为ens2f1
我的理论是,有一个模块或其他东西在 udev 中创建了一个未处理甚至可能不相关的事件,但是我将如何调试呢?
此外,即使正确配置了相关设备和接口,如果udev中存在此类未处理的事件,Netplan也不会继续进行下去,这不是很大的侵略性吗?
设置:
Ubuntu 20.04 每日构建 20200923(尝试 20.04.1 和初始 LTS 版本)
Netplan 0.99-ubuntuu3~20.04.2
Systemd 245.4-4ubuntu3.2
Supermicro X11DDW-L
Mellanox ConnectX-5 (PCI-E)
BIOS/旧版启动(由于 UEFI 中此 NIC/主板之间不兼容)
这实际上是由于我 的自动安装程序配置的存储 部分中的错误,而不是由于 Netplan 本身。
我的服务器有 2 个磁盘,我想在软件 RAID 中使用
mdadm
. 由于我使用的是 BIOS 引导和 gpt 分区表,因此我按照 curtin 文档中的建议在每个驱动器上为 grub 创建了一个 1MB 的未格式化分区。但是除此之外,我错误地认为我还必须为这些 1MB 分区创建一个 RAID,这是没有必要的。在 syslog(标识符)中找到了让我忽略的错误消息,
curtin_log.<pid>
而在常规 subiquity 日志(/var/log/installer
和/var/crash
)中没有提到。它也可以在/var/log/curtin
我以前不知道的 curtin 自己的日志 ( ) 中看到。这似乎触发了未处理的 udev 事件以及
udevadm settle
返回退出代码 1、停止 Netplan 和安装程序的原因。奇怪的是,来自 curtin 的退出代码 1mdadm
在到达 Netplan 之前还不足以使其崩溃。删除我的存储配置的这一部分解决了这个问题,
完整的存储配置: