2014-11-24 13 views
6

Ich kenne den Zweck der "biosdevname" Funktion in Linux, aber ich bin mir nicht sicher, wie genau funktioniert.Wie funktioniert "biosdevname" wirklich?

Getestet habe ich es mit Ubuntu 14.04 und Ubuntu 14.10 (beide 64-Bit-Server-Editionen) und es sieht aus wie sie es standardmäßig aktivieren - direkt nach dem Systemstart meiner Netzwerk-Schnittstelle einen Namen wie p4p1 statt eth0 hat, keine Anpassung wird benötigt. Wie ich es verstanden, um für biosdevname aktiviert sein, BEIDE dieser beiden Bedingungen müssen erfüllt sein:

  • eine Boot-Option biosdevname=1 muss
  • biosdevname Paket an einen Kernel übergeben werden muss installiert sein

wie ich bereits erwähnt, sowohl Ubuntu 14.04 und 14.10 scheinen biosdevname als Standard-Feature zu bieten: sie kommen mit biosdevname Paket bereits installiert ist, ich brauchte nicht 0.123.550 zu ändernentweder - GRUB_CMDLINE_LINUX_DEFAULT hat keine Parameter und mein Netzwerk-Interface hat noch einen BIOS-Namen (p*p*) anstelle einen Kernel-Namen

Später wollte ich die alten Stil Gerätenamen wieder herzustellen und das ist, wo die interessant (eth*.) Teil beginnt. Ich beschloss, ein wenig zu experimentieren, während ich versuchte, die biosdevname Funktion zu deaktivieren. Da es biosdevname Paket erfordert arbeiten (oder so las ich hier und da), nahm ich an dem Entfernen es ausreichen würde, die Funktion zu deaktivieren, so dass ich getippt:

sudo apt-get purge biosdevname 

Zu meiner Überraschung nach meinem Netzwerk neu starten Schnittstelle war immer noch p4p1, so biosdevname offenbar noch funktioniert, obwohl Paket ausgelöscht worden war.

Als nächsten Schritt habe ich angewandt entsprechenden Änderungen an /etc/network/interfaces in um den alten Namen meiner Netzwerk-Schnittstelle (entfernt Eintrag für p4p1 und zusätzlicher Eintrag für eth0) wiederherzustellen. Als Ergebnis, nach einem weiteren Neustart, ifconfig gemeldet weder eth0 noch p4p1, die ein weiterer Beweis, dass OS immer noch BIOS-Namen statt Kernel-Namen verstehen.

Es stellte sich heraus, dass ich auch die erwartete Ergebnis (biosdevname Behinderte und alte Name der Netzwerkschnittstelle wiederhergestellt) zu GRUB_CMDLINE_LINUX_DEFAULT=biosdevname=0 und aktualisieren GRUB Eintrag explizit GRUB ändern musste zu bekommen.

Meine Frage ist: wie könnte biosdevname funktionieren ohne biosdevname Paket? Ist es doch nicht erforderlich? Wenn ja, was genau bietet die biosdevname Funktionalität und wie funktioniert es?

+0

Möglicherweise möchten Sie auf die Dateien in /etc/udev/rules.d/, um zu sehen, ob es Regeln gibt Netzwerk-Interface Namensgebung fahren – ComputerDruid

Antwort

8

Der Grund, warum biosdevname Sie auch nach der Deinstallation des Pakets nervt, ist, dass es sich auch in der initrd initialen Ramdisk-Datei installiert hat.

Bei der Deinstallation wird/usr/share/initramfs-tools/hooks/biosdevname entfernt, aber es gibt kein postrm-Skript im Paket, so dass update-initramfs nicht ausgeführt wird und biosdevname immer noch in/boot/initrd vorhanden ist ... Datei, die in der ersten Phase des Systemstarts verwendet wird.

Sie können sich voll davon, wie diese loszuwerden:

$ sudo update-initramfs -u 
Verwandte Themen