net scripts tentam atualizar a antiga interface de rede física removida

1

Situação: Gentoo com kernel 3.8.4

amd64

udev 218

sem systemd, sem initram, sem regras antigas do udev de rede

Anteriormente, 3 interfaces de rede (2 x onboard, 1 pci, todas as do módulo r8189)

Depois de um curto-circuito na rede, os dois dispositivos internos pararam de funcionar e eu os desativei no BIOS e adicionei um módulo PCI R8189 Gibt que funciona bem (internet, ssh, transferência de dados, tudo bem)

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

No entanto, após atualizar o samba para a versão 4 e reiniciar o serviço samba após a mensagem de erro:

 /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

Então eu tentei descobrir onde as informações "antigas" ainda estão sendo exibidas:

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/* (e todos os subdiretórios)  não mostrou entrada em nenhum arquivo de configuração.

Pesquisando na net e aqui apenas me mostrou como reagir uma interface que não mostra, explicou a renomeação para o agora PredictableNetworkInterfaceNames chamado interfaces.  A lista de perguntas similiares mostrou algumas questões promissoras, mas nada estava realmente relacionado. (O OP instalou o kernel errado, teve problemas em renomear as interfaces, etc.)

Então, onde o script de rede está obtendo as informações de que ainda há pelo menos duas interfaces Ethernet ativas?

Por enquanto, eu removi o dependany de "need net" em /etc/init.d/samba, mas obviamente isso é apenas um workarround que só funciona em breve.

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

E saída DMESG (redigida a partir do 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]
    
por Dennis Nolte 15.03.2015 / 01:31

1 resposta

1

Por que o nome estranho?

Você se lembra deste Tidbit do Manual? De particular importância é o Manual: AMD64 / Networking / Introdução

To get started configuring the network card, tell the Gentoo RC system about it. This is done by creating a symbolic link from net.lo to net.eth0 (or whatever the network interface name is on the system) in /etc/init.d.

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

No seu caso, isso foi reescrito para:

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

devido às Regras de Nomenclatura Persistente em sys-fs/udev e à configuração do kernel net.ifnames=0 que é o padrão.

Corrigir

Antes de fazer isso, se você quiser desativar toda a rede, poderá emitir: rc-update del net.lo boot , executar as primeiras 4 etapas abaixo e, em seguida, emitir: rc-update add net.lo boot e emitir a Etapa 5. Isso funciona porque todos dispositivos de rede estão vinculados a net.lo

  1. Emita um dmesg | grep renamed para ver o que enp2s0 foi substituído quando você o removeu.
  2. Então rm -v /etc/init.d/net.enp2s0 e as outras interfaces que não existem, ie. o grep acima lhe dará o que o kernel "vê", então se você tiver arquivos extras de rede, exclua-os, mas não remova net.lo !
  3. Recrie o link com ln -s /etc/init.d/net.lo /etc/init.d/net.the_new_names_from_step1 para cada dispositivo que estava em grep se você tiver vários novos NICS.
  4. Exclua seu hack do Samba, ou seja, reative need net
  5. Reinicializar
por 30.06.2015 / 22:00