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