在 Debian 安装期间使用预置安装 NetworkManager 时出现的问题

在 Debian 安装期间使用预置安装 NetworkManager 时出现的问题

我目前正在预置 Debian 安装,并在实际安装后运行自定义安装脚本,以创建一个简单的安装程序,该安装程序将创建我需要的一切。

现在我找到了如何安装其他软件包并添加了 NetworkManager 软件包,以简化网络工作。然而,该设备有多个以太网接口,并且在 Debian 安装期间安装 NetworkManager 会创建该文件/etc/NetworkManager/system-connections/Wired connection 1。但是,该文件对于实际系统的配置不​​正确。因此,如果我在 NetworkManager 关闭并重新启动时将其删除,一切都会正常工作。但是拥有该文件会使 NetworkManager 将所有接口标记为“有线连接 1”,并且只有一个接口可以处于活动状态,等等。总而言之,需要删除该文件。

现在,我首先尝试在调用脚本期间删除文件preseed/late_command(脚本运行并删除文件,我检查过)。但安装后启动进入系统后,该文件又回来了。接下来,我尝试在使用 删除文件之前停止 NetworkManager 服务in-target systemctl stop NetworkManager,但这只是给了我可爱的日志行in-target: Running in chroot, ignoring request.,当然这也不起作用。

如何在预置过程中使用空白的“系统连接”配置安装 NetworkManager?

综上所述,相关(和工作)我的线路preseed.cfg是:

d-i pkgsel/include string ... network-manager ...
d-i preseed/late_command string sh /.../postinstall.sh

postinstall.sh尝试过

in-target rm /etc/NetworkManager/system-connections/*

(实际上在那一刻删除了文件)

in-target systemctl stop NetworkManager
in-target rm /etc/NetworkManager/system-connections/*

更新:

按照建议,我尝试直接删除连接nmcli
这是我的脚本:

in-target nmcli con delete $(in-target nmcli -g uuid con)

这是结果:

May  6 09:16:43 log-output: + in-target
May  6 09:16:43 log-output:  nmcli -g uuid con
May  6 09:16:43 log-output: dpkg-divert: warning: diverting file '/sbin/start-stop-daemon' from an Essential package with rename is dangerous, use --no-rename
May  6 09:16:43 in-target: Error: Could not create NMClient object: Could not connect: No such file or directory.
May  6 09:16:44 log-output: + in-target nmcli con delete
May  6 09:16:44 log-output: dpkg-divert: warning: diverting file '/sbin/start-stop-daemon' from an Essential package with rename is dangerous, use --no-rename
May  6 09:16:44 in-target: Error: Could not create NMClient object: Could not connect: No such file or directory.

答案1

使用有线连接

默认情况下,NetworkManager 会为其找到的每个有线以太网连接生成一个连接配置文件。在生成连接时,它不知道是否会有更多可用的以太网适配器。因此,它将第一个有线连接称为“有线连接 1”。您可以通过配置来避免生成此连接no-auto-default(请参阅man NetworkManager.conf),或者直接删除它。然后NetworkManager会记住不再为该接口生成连接。您还可以编辑连接(并将其保存到磁盘)或删除它。 NetworkManager 不会重新生成新连接。然后您可以将名称更改为您想要的任何名称。您可以使用 nm-connection-editor 之类的工具来完成此任务。

因此,您可以在安装网络管理器之前创建并根据您的硬件和选项(如果需要)NetworkManager.conf进行设置。 no-auto-default(还要检查安装后配置文件是否未被覆盖“不应该是这样......”)

另一种替代方法可以是使用chmod u-w或锁定对有问题文件的写访问权限chattr +i,但不建议这样做,因为它不打算以这种方式工作,并且可能会引入其他问题。

来源:拱门维基

答案2

我怀疑连接文件 ( /etc/NetworkManager/system-connections/Wired connection 1) 是在常规的启动过程。如果无法避免创建连接,一种选择是使用以下命令创建连接后删除连接nmcli

nmcli connection delete id <connection name>
# OR
nmcli connection delete CONNECTION_NAME
# OR
nmcli connection delete <uuid>

获取“有线连接1”的UUID:

nmcli con|grep 'Wired connection 1'|tr -s ' ' |cut -f2 -d' '

因此:

nmcli connection delete $(nmcli con|grep 'Wired connection 1'|tr -s ' ' |cut -f2 -d' ')

相关内容