Inhaltsverzeichnis

Linux-Probleme

seit Ubuntu 16.10 funktioniert die /etc/rc.local nicht mehr

Seit Ubuntu 16.10 wird die /etc/rc.local nicht mehr ausgeführt. Jetzt sollen SystemD-Mechanismen verwendet werden.

Hier ein Beispiel, wie man in SystemD die /etc/rc.local zum ausführen beim System-Start einträgt und so die gewohnte Funktionalität wieder zurückgewinnt.

> chmod 0755 /etc/rc.local 
> systemctl edit --full rc-local

Wenn es eine ausführbare /etc/rc.local gibt, dann wird sie beim ersten Start dieses Kommandos automatisch eingetragen.

BUG: soft lockup - CPU#1 stuck for 61s!

Bonding, Bridge und DHCP funktionieren nicht Fehlerfrei zusammen:

Bei diesem Problem nimmt der Rechner nach dem hoch fahren einfach keine Eingaben mehr an (auch kein [Strg]+[Alt]+[Entf]) und zeigt auf dem Bildschirm nur noch diese Meldungen:

Das Problem wurde schon als BUG reportet:

2009 dachte ein Entwickler schon, er hätte dieses Problem gelöst, leider besteht es jetzt (im Jahre 2011) immer noch.

Nach meiner Erfahrung, tritt das Problem nur auf, wenn Bonding zusammen mit Bridging konfiguriert wird und das System parallelisiert (z.B. mit Upstart) startet.

In manchen Fällen hilft es, einen anderen NIC-Treiber zu verwenden. Hilft das nicht, dann muss man das System nur mit Bonding starten und Bridging nach dem Start konfigurieren.

work around

Bei dieser (nicht ganz sauberen) Lösung, wird das System ohne Bridging gestartet.

Anschließend wird das Netzwerk wieder runter gefahren und dann die komplette Konfiguration mit Bridging eingespielt.

Jetzt startet das Netzwerk mit allem drum und dran, wie es sein soll.

Zum Schluss muss allerdings die "bootfähige" Konfiguration wieder eingespielt werden, sonst läuft der Rechner nur bis zum nächsten "reboot".

Am besten trägt man diese Arbeitsschritte in die Datei "/etc/rc.local" ein, dann läuft das ganz von alleine.

/etc/network/interfaces_bond
# The loopback network interface
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet manual
        bond-master bond0
        bond-primary eth0 eth1

auto eth8
iface eth8 inet manual
        bond-master bond0
        bond-primary eth0 eth1

auto bond0
iface bond0 inet static
        slaves none
        bond_mode 1
        bond_miimon 100
        bond_updelay 200
        bond_downdelay 200
        address 192.168.1.213
        netmask 255.255.255.0
        network 192.168.1.0
        broadcast 192.168.1.255
        gateway 192.168.1.3
/etc/network/interfaces_bond_br
# The loopback network interface
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet manual
        bond-master bond0
        bond-primary eth0 eth1

auto eth8
iface eth8 inet manual
        bond-master bond0
        bond-primary eth0 eth1

auto bond0
iface bond0 inet static
        slaves none
        bond_mode 1
        bond_miimon 100
        bond_updelay 200
        bond_downdelay 200

auto br0
iface br0 inet static
        address 192.168.1.213
        netmask 255.255.255.0
        network 192.168.1.0
        broadcast 192.168.1.255
        gateway 192.168.1.3
        bridge_ports bond0
        bridge_fd 9
        bridge_hello 2
        bridge_maxage 12
        bridge_stp off
/etc/rc.local
sleep 60
/etc/init.d/networking stop
cat /etc/network/interfaces_bond_br > /etc/network/interfaces
/etc/init.d/networking start
cat /etc/network/interfaces_bond > /etc/network/interfaces
sleep 60
br-Überprüfung

Diese Zeile sorgt dafür, dass abgebrochen wird, wenn es kein "br"-NIC gibt:

# if [ -z "$(brctl show | awk '/^br[0-9].*eth[0-9]+$/ {print $1}')" ] ; then exit;fi

Lösung

Dieses Problem wurde mit Ubuntu 10.04 LTS beobachtet, nach einem Upgrade auf Ubuntu 12.04 LTS trat es nicht mehr auf.