Ich bin relativ neu bei Linux und Vagrant. Ich habe mein VM-Gastsystem (VirtualBox 5.0.18 + Vagrant 1.8.1 auf einem Windows-Host) vor einiger Zeit von Xubuntu 15.10 auf Xubuntu 16.04 aktualisiert. Zu diesem Zeitpunkt oder kurz danach bemerkte ich einige Merkwürdigkeiten, z. B. einen falsch ausgerichteten Mauszeiger (ein paar Pixel daneben) und fehlende freigegebene Verzeichnisse. Ich vermute, dass dies auf den folgenden Fehler zurückzuführen ist, der während der Aktualisierung gemeldet wurde vagrant up
:
==> default: Clearing any previously set forwarded ports...
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
default: Adapter 1: nat
default: Adapter 2: hostonly
==> default: Forwarding ports...
default: 8080 (guest) => 8080 (host) (adapter 1)
default: 9000 (guest) => 9000 (host) (adapter 1)
default: 22 (guest) => 2222 (host) (adapter 1)
==> default: Running 'pre-boot' VM customizations...
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
default: SSH address: 127.0.0.1:2222
default: SSH username: vagrant
default: SSH auth method: private key
==> default: Machine booted and ready!
GuestAdditions 5.0.18 running --- OK.
==> default: Checking for guest additions in VM...
==> default: Configuring and enabling network interfaces...
The following SSH command responded with a non-zero exit status.
Vagrant assumes that this means the command failed!
/sbin/ifup eth1
Stdout from the command:
Failed to bring up eth1.
Stderr from the command:
mesg: ttyname failed: Inappropriate ioctl for device
run-parts: /etc/network/if-up.d/ubuntu-fan exited with return code 1
Ich habe online nach dem Fehler in Kombination mit Vagrant und VirtualBox gesucht, aber die Fälle, die ich gefunden habe, schienen alle etwas anders zu sein als meiner. Die Leute schreiben über /etc/udev/rules.d/70-persistent-net.rules
-, aber es scheint auf meiner Maschine nicht aufzutreten, und auch nicht /etc/sysconfig
.
/sbin/ifup eth1
Wenn ich nach der Anmeldung versuche, weitere Informationen abzurufen, erhalte ich Folgendes:
vagrant@IDE-machine ~ $ sudo /sbin/ifup -v eth1
Configuring interface eth1=eth1 (inet)
/bin/run-parts --exit-on-error --verbose /etc/network/if-pre-up.d
run-parts: executing /etc/network/if-pre-up.d/bridge
run-parts: executing /etc/network/if-pre-up.d/ethtool
run-parts: executing /etc/network/if-pre-up.d/wireless-tools
run-parts: executing /etc/network/if-pre-up.d/wpasupplicant
/bin/ip addr add 192.168.56.21/255.255.255.0 broadcast 192.168.56.255 dev eth1 label eth1
RTNETLINK answers: File exists
Failed to bring up eth1.
Meine Vagrant-Datei sieht folgendermaßen aus:
Vagrant.configure(2) do |config|
# a locally stored box
config.vm.box = "IDE-machine"
config.ssh.private_key_path = "ssh/id_rsa"
config.vm.network "forwarded_port", guest: 8080, host: 8080
config.vm.network "forwarded_port", guest: 9000, host: 9000
config.vm.network "private_network", ip: "192.168.56.21"
config.vm.provider "virtualbox" do |vb|
vb.gui = true
vb.memory = "12288"
vb.cpus = 2
vb.name = "my_IDE-machine"
vb.customize ["modifyvm", :id, "--monitorcount", "1"]
vb.customize ["modifyvm", :id, "--vram", "64"]
vb.customize ["storageattach", :id, "--storagectl", "SATA", "--port", 1, "--device", 0, "--type", "hdd", "--medium", "V:/BoxStorage/Projects.vdi"]
end
config.vm.provision "shell", inline: "/vagrant/provision.sh"
end
Gasterweiterungen sind installiert, ich verwende das vagrant-vbguest
Plugin, das zuvor die richtige Gast-Add-on-Version eingerichtet hatte.
Hat jemand eine Idee, was das Problem sein könnte, oder Hinweise, wie ich weiter nachforschen kann?
Aktualisieren: Ich wurde darauf hingewiesen:https://github.com/mitchellh/vagrant/issues/7155(was auf meinen Fall nicht ganz zutrifft) Was mich zu folgendem führte:https://askubuntu.com/questions/689070/network-interface-name-changes-after-update-to-15-10-udev-changes/732638#732638
Ich habe versucht, die Änderung /etc/default/grub
mit vorzunehmen GRUB_CMDLINE_LINUX="net.ifnames=0"
, dann update-grub
als Root und einen Neustart durchzuführen, jedoch ohne Erfolg.
Beim weiteren Herumstöbern wurde mir Folgendes angezeigt:
vagrant@IDE-machine ~ $ cat /etc/network/interfaces
# interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback
#VAGRANT-BEGIN
# The contents below are automatically generated by Vagrant. Do not modify.
auto eth1
iface eth1 inet static
address 192.168.56.21
netmask 255.255.255.0
#VAGRANT-END
Aktualisierung 2:Wie gewünscht folgt hier die Ausgabe von dmesg und der Inhalt von ubuntu-fan:
vagrant@IDE-machine ~ $ dmesg | grep eth
[ 1.692133] e1000 0000:00:03.0 eth0: (PCI:33MHz:32-bit) 08:00:27:af:31:b4
[ 1.692144] e1000 0000:00:03.0 eth0: Intel(R) PRO/1000 Network Connection
[ 2.068113] e1000 0000:00:08.0 eth1: (PCI:33MHz:32-bit) 08:00:27:94:1e:dc
[ 2.068120] e1000 0000:00:08.0 eth1: Intel(R) PRO/1000 Network Connection
[ 5.732516] e1000: eth1 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: RX
[ 5.732980] IPv6: ADDRCONF(NETDEV_UP): eth1: link is not ready
[ 5.733061] IPv6: ADDRCONF(NETDEV_CHANGE): eth1: link becomes ready
[ 6.790923] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
[ 6.793512] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
[ 6.795646] e1000: eth0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: RX
[ 6.796069] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
vagrant@IDE-machine ~ $ cat /etc/network/if-up.d/ubuntu-fan
#!/bin/sh
set -e
case "$IFACE" in
lo) exit 0 ;;
fan-*) exit 0 ;;
esac
case "$ADDRFAM" in
inet) ;;
*) exit 0 ;;
esac
# NOTE: NetworkManager simply does not call out to the normal
# down hooks as it only checks _after_ the interface has
# been lost. Roll with this.
case "$PHASE::$METHOD" in
post-up::static|post-up::dhcp|post-up::NetworkManager) ;;
pre-down::static|pre-down::dhcp|post-down::NetworkManager) ;;
*) exit 0 ;;
esac
case "$MODE" in
start|stop) ;;
*) exit 0 ;;
esac
/usr/sbin/fanctl net "$MODE" "$IFACE"
Antwort1
/etc/network/interfaces
Hast du deine Konfigurationsdateien überprüft ? Vielleicht hast du mehrere Gateways, wie angegebenHier.
Wenn Sie die Datei ein wenig optimieren und damit herumspielen, ifconfig
können Sie das Problem auf jeden Fall lösen. Überprüfen Sie auch die Berechtigungen. Ich bezweifle, dass es von dort kommt, aber trotzdem :/
Sie können versuchen, zu einer einfacheren Konfiguration zurückzukehren, /etc/network/interfaces
falls dies nicht bereits der Fall ist, und Stück für Stück zur ursprünglichen Konfigurationsdatei zurückkehren. Ich denke, das würde ich tun.
EDIT: Aus Ihrer dmesg
Ausgabe scheint hervorzugehen, dass die Links bereit sind, sodass der Netzwerkteil in Ordnung sein sollte. Wenn Sie dies tun dmesg | grep eth
, gibt es relevante Informationen?
Können Sie auch cat /etc/network/if-up.d/ubuntu-fan
? Es wurde mit Exitcode 1 beendet. Es könnte interessant sein, zu prüfen, was dort passiert.
AKTUALISIEREN:
Ihre dmesg
Ausgabe scheint in Ordnung zu sein, die Links eth0/1 sind am Ende bereit, also sollte das Netzwerk funktionieren.
Sie sollten versuchen, das Skript Zeile für Zeile auszuführen ubuntu-fan
und nach Exitcodes zu suchen ( echo $?
, sollte sein 0
). Ich frage mich, ob das Problem nicht vom fanctl
Programm am Ende herrührt. Es wird normalerweise verwendet, um Lüfter auf einer Maschine zu steuern, aber hier ist es eine VM, also ... Wenn es von dieser Zeile kommt, können Sie versuchen, herauszufinden, warum es fehlschlägt, aber ich würde die fanctl
Zeile und dann vielleicht sogar die ganze Datei entfernen. Ich vermute, die anderen Zeilen sind hier, um Ereignisse zu verarbeiten, die ausgelöst werden sollen fanctl
.
Ich habe meine Vagrant-VMs überprüft (hauptsächlich jedoch Ubuntu 14.04) und kann nirgends welche sehen fanctl
… Ich bin nicht sicher, ob es Sinn macht, zu versuchen, die Lüfter innerhalb einer VM zu steuern.