状況:カーネル付きのGentoo3.8.4
AMD64
Udev 218
systemdなし、initramなし、古いネットワークudevルールなし
以前は、ネットワークインターフェイス3つ(オンボードインターフェイス2つ、pciインターフェイス1つ、すべての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/*
(およびすべてのサブディレクトリ) は構成ファイルのエントリを表示しません。
Webを検索すると、表示されていないインターフェイスに反応する方法のみが表示され、現在の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
- 削除後に置き換えられた項目を
dmesg | grep renamed
確認するには、aを実行します。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ハッキングを削除して再度有効にしてください。
need net
- 再起動