net 脚本尝试升级旧的物理已删除网络接口

net 脚本尝试升级旧的物理已删除网络接口

情况:带有内核的 Gentoo3.8.4

AMD64

乌德夫218

没有 systemd,没有 initram,没有旧的网络 udev 规则

以前 3 个网络接口(2 个板载接口、1 个 pci 接口、所有 r8189 模块接口)

网络短路后,2 个板载设备停止工作,我在 Bios 中禁用了它们,并添加了一个运行良好的 PCI R8189 Gibt 模块(互联网、ssh、数据传输,一切正常)

lspci |grep Eth
03:01.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8169 PCI Gigabit Ethernet Controller (rev 10)

然而,将 samba 升级到版本 4 并重新启动 samba 服务后出现以下错误消息:

 /etc/init.d/samba restart
 * Caching service dependencies ...                                                                               [ ok ]
 * Bringing up interface enp2s0
 *   ERROR: interface enp2s0 does not exist
 *   Ensure that you have loaded the correct kernel module for your hardware
 * ERROR: enp2s0 failed to start
 * ERROR: cannot start samba as enp2s0 would not start

所以我试图找出“旧”信息仍然显示的位置:

rc-update show
         bootmisc | boot
       consolekit | boot
            devfs |                       sysinit
            dmesg |                       sysinit
             fsck | boot
           hdparm |      default
         hostname | boot
          hwclock | boot
          keymaps | boot
        killprocs |              shutdown
       lm_sensors |      default
            local |      default
       localmount | boot
         loopback | boot
          modules | boot
         mount-ro |              shutdown
             mtab | boot
           net.lo | boot
         netmount |      default
             nrpe |      default
           procfs | boot
             root | boot
            samba |      default
        savecache |              shutdown
             sshd |      default
             swap | boot
        swapfiles | boot
           sysctl | boot
            sysfs |                       sysinit
        syslog-ng |      default
     termencoding | boot
     tmpfiles.dev |                       sysinit
   tmpfiles.setup | boot
             udev |                       sysinit
          urandom | boot
       vixie-cron |      default

AN grep enp2s0 2>/dev/null /etc/*(和所有子目录)在任何配置文件中都没有显示任何条目。

在网上搜索,这里只向我展示了如何对未显示的接口做出反应,解释了重命名为现在的 PredictableNetworkInterfaceNames 命名接口。类似问题列表确实显示了一些有希望的问题,但实际上没有任何相关的问题。 (OP 安装了错误的内核,重命名接口时遇到问题等。)

那么网络脚本从哪里获取至少还有 2 个活动以太网接口的信息呢?

现在我删除了 /etc/init.d/samba 中对“need net”的依赖,但显然这只是一个短期内有效的解决方法。

bastille-firewall binfmt bootmisc busybox-ntpd busybox-watchdog   consolefont 
consolekit cpufrequtils cups-browsed cupsd dbus devfs dhcpcd dmesg enp2s0 
fancontrol fsck functions.sh gdm_mine git-daemon gpm hddtemp hdparm heimdal-kadmind 
heimdal-kcm heimdal-kdc heimdal-kpasswdd hostname hwclock ip6tables iptables 
keymaps killprocs kmod-static-nodes lm_sensors local localmount loopback 
modules mount-ro mtab net.lo netmount nrpe ntp-client ntpd numlock openvpn 
osclock pciparm procfs psad pydoc-2.7 pydoc-3.3 reboot.sh root rsyncd 
s6-svscan samba savecache shutdown.sh sntp sshd swap swapfiles swclock 
sysctl sysfs syslog-ng sysstat termencoding tmpfiles.dev tmpfiles.setup udev 
udev-settle udev-trigger urandom vixie-cron

和 DMESG 输出(从 MAC 编辑)

dmesg |grep eth
[   10.012637] r8169 0000:03:01.0 eth0: RTL8169sb/8110sb at 0xffffc90010e84c00, [MAC], XID 10000000 IRQ 17
[   10.012641] r8169 0000:03:01.0 eth0: jumbo features [frames: 7152 bytes, tx checksumming: ok]

答案1

为什么命名奇怪?

您还记得手册中的这个花絮吗?特别重要的是手册:AMD64/网络/简介

要开始配置网卡,请告诉 Gentoo RC 系统。这是通过在 /etc/init.d 中创建从 net.lo 到 net.eth0(或系统上的任何网络接口名称)的符号链接来完成的。

root # cd /etc/init.d
root # ln -s net.lo net.eth0

在您的情况下,这被重写为:

root # cd /etc/init.d
root # ln -s net.lo net.enp2s0

因为持久命名规则以及默认的sys-fs/udev内核设置。net.ifnames=0


使固定

在执行此操作之前,如果您想要使所有网络脱机,您可以发出:rc-update del net.lo boot,执行下面的前 4 个步骤,然后发出:rc-update add net.lo boot,然后发出步骤 5。这有效,因为所有网络设备都链接到net.lo

  1. 发出 admesg | grep renamed以查看enp2s0删除后被替换的内容。
  2. 然后rm -v /etc/init.d/net.enp2s0,以及其他不存在的接口,即。上面grep将为您提供内核“看到”的内容,因此如果您有多余的网络文件,请删除它们,但不要删除 net.lo
  3. 如果您有多个新的 NICS,ln -s /etc/init.d/net.lo /etc/init.d/net.the_new_names_from_step1请为其中的每个设备重新创建链接。grep
  4. 删除您的 Samba hack,即重新启用need net
  5. 重启

相关内容