如何为实时系统重命名 squashfs 中的接口?

如何为实时系统重命名 squashfs 中的接口?

我正在运行定制的 Debian 操作系统。

我尝试了各种方法,在未打包的 squashfs 中将 Grub 标准 wlp3s0 重命名为实时系统中更易用的 wlan0,包括广泛建议的 udev 规则。在 .iso 构建和启动后,所有方法均失败。

解压并 chroot 条目如下,如果有帮助的话:

rsync -a /[SQUASHFS]/ /[UNPACKED SQUASH]/
chroot [UNPACKED SQUASH]
mount -t proc none /proc/
mount -t sysfs none /sys/
export HOME=/root

我还想避免必须以除分配给任何初始无线设备的标准名称之外的任何形式来识别 iface 的特殊性,因此无论它是什么,都会为初始无线分配一个重命名的标签。

如何在解压的 squashfs 中重命名接口?在正在运行的实时系统中重命名 iface 很容易,那么我是否可以将某些东西复制到系统中,并且保持足够通用,以便在任何无线接口称为 wlp3s0 的系统上工作?

答案1

Linux 直播套件可能是一个解决方案。创建自定义的 Linux 发行版(可能在 VM 中),然后将其转换为实时 USB。

一组 shell 脚本,允许您从已安装的 Linux 发行版创建自己的 Live Linux。您创建的 Live 系统将可从 CD-ROM 或 USB 闪存驱动器启动。

它要求 奥夫斯squashfs内核模块均受您的内核支持。在某些发行版中,两者都自动包含在内。您可能需要aufs-dkms在某些 Linux 发行版上安装该软件包。

您还应该尽力精简您的 Linux 安装。

更多信息请参阅 Linux Live Kit 网站。

答案2

在 Debian 操作系统中,可能有效的解决方案是编辑 /etc/init/network-interface.conf 中的网络接口配置规则。此文件包含如下用于环回的条目:

if [ "$INTERFACE" = lo ]; then
    # bring this up even if /etc/network/interfaces is broken
    ifconfig lo 127.0.0.1 up || true
    initctl emit -n net-device-up \
        IFACE=lo LOGICAL=lo ADDRFAM=inet METHOD=loopback || true

对于任何名为 wlp3s0 的无线设备,此处正确的脚本条目应在操作系统启动时将 wlp3s0 重命名为 wlan0。因此需要正确的条目。

我可以尝试以下操作,并提供一个选项:

if [ "$INTERFACE" = wlp3s0 ]; then
ifconfig wlp3s0 down \
ip link set dev wlp3s0 name wlan0 \
#ifconfig wlan0 up
fi

答案3

我没有阅读过 udev 的手册页,在看过网上的示例后,我就忽略了它。它引导读者使用 man systemd.link 进行界面配置。我从未在网上看到过这方面的信息,我将在下一次重建时对其进行测试。

因此,自定义命名规则显然很简单,只需将编号规则文件 .link 添加到 /etc/systemd/network 即可,但前提是按顺序在三个位置(/lib/systemd/network 中的系统、/run 中的易失性以及 /etc/systemd/network 中的管理)评估规则,并且似乎应该不存在内核命名策略以允许管理规则。

[Match]
OriginalName=wlp3s0

[Link]
Name=wlan0

相关内容