
私はLinuxとVagrantに比較的初めて接しました。最近、私のVMゲスト(WindowsホストのVirtualBox 5.0.18 + Vagrant 1.8.1)をXubuntu 15.10からXubuntu 16.04に更新しました。その瞬間または直後にマウスカーソルが間違って整列され(数ピクセルほどずれ)、共有ディレクトリが欠落するなど奇妙な現象を発見しました。私の推測では、次のエラーが報告されたためです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
VagrantとVirtualBoxを一緒に使ってオンラインでバグを見つけましたが、私が見つけたケースは私とは少し違ったようです。人々はそれを書きましたが、/etc/udev/rules.d/70-persistent-net.rules
私のコンピュータにはないようで、存在しません/etc/sysconfig
。
/sbin/ifup eth1
ログイン後にさらに情報を取得するために実行しようとすると、次のようになります。
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.
私のVagrantファイルは次のとおりです。
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
ゲストアドインがインストールされており、vagrant-vbguest
以前に正しいゲストプラグインバージョンが設定されているプラグインを使用しています。
問題が何であるかを知っている人はいますか?それとも、もっと詳しく知る方法についてのヒントはありますか?
修正する: 私はこれを指摘しました:https://github.com/mitchellh/vagrant/issues/7155(これは私の場合には正確には適用されません。)これは次のような結果になります。https://askubuntu.com/questions/689070/network-interface-name-changes-after-update-to-15-10-udev-changes/732638#732638
私はrootに変更し/etc/default/grub
て再起動しようとしましたが、役に立ちませんでしたGRUB_CMDLINE_LINUX="net.ifnames=0"
。update-grub
より多くの調査により、次のことがわかりました。
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
アップデート2:ここで必要なのはdmesgの出力と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"
答え1
設定ファイルを確認しました/etc/network/interfaces
か?ゲートウェイが複数ある場合もあります。ここ。
とにかくファイルを少し修正して使用すると、トラブルシューティングifconfig
に役立ちます。また、権限を確認してください。そこから出てくるかどうか疑われますが、それでも:/
/etc/network/interfaces
まだそうでない場合は、より簡単な設定に戻り、少しずつ元の設定ファイルに戻ることを試してみてください。やります。
編集:dmesg
出力結果によると、リンクが準備されているように見えるので、ネットワーク部分は問題ありません。作成された場合、dmesg | grep eth
関連情報はありますか?
そして猫を育てることができますか/etc/network/if-up.d/ubuntu-fan
?終了コード 1 で終了しました。そこで何が起こっているのかを確認するのは面白いかもしれません。
修正する:
出力dmesg
は問題なく見え、最終的にeth0/1リンクが準備されたため、ネットワークは正常に動作します。
ubuntu-fan
スクリプトを1行ずつ実行して、終了コード(echo $?
、でなければならない)を確認する必要があります0
。fanctl
最終プログラムに問題があるかどうか疑問に思います。通常、マシンのファンを制御するために使用されますが、ここは仮想マシンなので、このラインから出ると失敗する理由がわかりますが、そのfanctl
ラインを削除してから全体を削除することもできます。ファイルの事実。私は他の行が解雇されるイベントを処理するためにここにいると思いますfanctl
。
私は放浪するVM(主にUbuntu 14.04)を確認しましたが、fanctl
どこにも何も表示されません...