我目前正在预置 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' ')