46

これは本質的に OSCeption (Operating System Inception) であることは理解していますが、私にとっては最も理にかなっていると思います (より良いオプションがあれば教えてください。これは本当にひどいようです)。

状況は次のとおり です。Windows 8 マシンを使用しています。私はそれが好きです-開発以外のすべてに最適です。開発には、Ubuntu を実行している VMWare 仮想マシンを使用しています。私は Cygwin の使用に手を出しましたが、気分が良くありませんでした。

私は現在、Vagrant を使用して開発環境を管理しているプロジェクトに参加しているので、Vagrant を使用できるようにする必要があります。しかし、私が見たところによると、Vagrant は主に一貫した環境内でコードを実行するために使用されますが、必ずしもコードを記述するために使用されるわけではありません。また、vagrant ボックスに SSH 接続してコードを書きたい場合は、.vimrc ファイルなどの設定をマシンごとに再構成する必要があります。

Ubuntu VirtualMachine 内に Vagrant をインストールするのは理にかなっていますか? ある時点で、VM 内の VM が手に負えなくなり、問題が発生するように感じます。これを行うより良い方法はありますか?

編集:それで試してみました-予想どおり、いくつかのエラーが発生しました。マシンを起動しようとすると、次のエラー メッセージが表示されます。

Failed to open a session for the virtual machine vagranttest_1371583212.

VT-x is not available. (VERR_VMX_NO_VMX).

Result Code: NS_ERROR_FAILURE (0x80004005)
Component: Console
Interface: IConsole {db7ab4ca-2a3f-4183-9243-c1208da92392}

VMware 仮想マシンが別の仮想マシンを実行できないようです。これを行う最善の方法についてのアイデアはありますか?

4

4 に答える 4

55

今日も同じ問題に遭遇しました。解決策は非常に簡単です。

  1. VMware 仮想マシンの電源をオフにします。
  2. 「仮想マシン設定の編集」に移動します
  3. プロセッサに移動します。そこに 3 つのチェックボックスがあります。
  4. 2 番目のチェックボックスをオンにします (VT-x/AMD-V を有効にします)
  5. マシンの電源を入れます。

この仮想ボックスの後、vmware 内で動作するはずです。

于 2014-04-08T08:45:45.490 に答える
4

元の質問と @blong の Vagrant フォーラムの投稿に答えるために、これを機能させるために私が行ったことです。

私は自分で似たようなことをしようとしていました (実際には Vagrant/VMware が Vagrant/Vbox をホストしています)、考えられるすべての最適化を実行し、「ホスト」VM に大量の RAM (24GB) と 6 コアを与え、スワッピングを無効にしました。 「すべての VM メモリを予約済みのホスト メモリに合わせる」を設定し、VM ごとのページ ファイルを許可する (そうしないと、それらはシステム ページ ファイルに存在し、実行できる VM の数が制限されます)。一度)。

私がやっていることは完璧に機能しています。私が抱えていたネットワークの問題は、私が背後にいる企業のプロキシが原因でした。VM がインターネットにアクセスできるように構成すると、すべてがうまくいきました。

サンプル (Virtualbox) Vagrantfile で既に設定されている natdnsproxy1 と naddnshostresolver1 に加えて、Vagrantfile を介して --natbindip1 と --natnet1 を手動で設定する必要がありました。これらの設定は、正しい使用法について Virtualbox のドキュメントに記載されています。

要約すると、VM CPU 設定で VT-x パススルー/「仮想化」オプションを使用し、VM に十分なメモリを与え、そのメモリが「ルート」ホスト マシンでスワップされるのを許可しないでください。ネットワーク範囲が重複していないか、ルーティングの問題が発生します。

これは、私が作業していた Vagrantfile です。ほぼ完全に、modern.ie vagrant セットアップに関する andreptb の要点に基づいています。https://gist.github.com/andreptb/57e388df5e881937e62a

# -*- mode: ruby -*-
# vi: set ft=ruby :

# box name into env var, same script can be used with different boxes. Defaults to win7-ie11.
box_name = box_name = ENV['box_name'] != nil ? ENV['box_name'].strip : 'win7-ie11'
# box repo into env var, so private repos/cache can be used. Defaults to http://aka.ms
box_repo = ENV['box_repo'] != nil ? ENV['box_repo'].strip : 'http://aka.ms'

Vagrant.configure("2") do |config|
  # If the box is win7-ie11, the convention for the box name is modern.ie/win7-ie11
  config.vm.box = "modern.ie/" + box_name
  # If the box is win7-ie11, the convention for the box url is http://aka.ms/vagrant-win7-ie11
  config.vm.box_url = box_repo + "/vagrant-" + box_name
  # big timeout since windows boot is very slow
  config.vm.boot_timeout = 500

  # rdp forward
  config.vm.network "forwarded_port", guest: 3389, host: 3389, id: "rdp", auto_correct: true

  # winrm config, uses modern.ie default user/password. If other credentials are used must be changed here
  config.vm.communicator = "winrm"
  config.winrm.username = "IEUser"
  config.winrm.password = "Passw0rd!"

  config.vm.provider "virtualbox" do |vb|
    # first setup requires gui to be enabled so scripts can be executed in virtualbox guest screen
    #vb.gui = true
    vb.customize ["modifyvm", :id, "--memory", "1024"]
    vb.customize ["modifyvm", :id, "--vram", "128"]
    vb.customize ["modifyvm", :id,  "--cpus", "2"]
    vb.customize ["modifyvm", :id, "--natdnsproxy1", "on"]
    vb.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]
    vb.customize ["guestproperty", "set", :id, "/VirtualBox/GuestAdd/VBoxService/--timesync-set-threshold", 10000]
  end
end

私の追加の変更:

# Need the WinRM gem for managing from Linux
$ sudo gem install winrm

    config.vm.communicator = "winrm"
+  config.winrm.host = "localhost"
    config.winrm.username = "IEUser"
    config.winrm.password = "Passw0rd!"
# This one may not be necessary, I added it for completeness
+  config.vm.guest = :windows

# In order to USE the two CPUs you need the ioapic
# Virtualbox gives an error in the GUI and only shows 1 CPU in the VM otherwise
      vb.customize ["modifyvm", :id, "--cpus", "2"]
+    vb.customize ["modifyvm", :id, "--ioapic", "on"]
# We had to modify the network range because we are running Virtualbox inside VMware
+    vb.customize ["modifyvm", :id, "--natnet1", "192.168.199.0/24"]

+ 記号を削除し、それらの行を上記の Vagrantfile に追加すると、私が使用しているものと同等の動作システムが得られるはずです。

于 2015-06-17T15:51:47.233 に答える
1

2 つの VMware 製品でこれを試しました。VM を右クリックします。

  • [ハードウェア] タブの vCloud Director 5.5 VM のプロパティには、[ハードウェア支援の CPU 仮想化をゲスト OS に公開する] チェックボックスがありますが、グレー表示されています。YMMV。
  • vSphere バージョン 5.5.0 では、[設定の編集] > [仮想ハードウェア] > [CPU] のチェックボックスは [ハードウェア支援仮想化をゲスト OS に公開する] と呼ばれ、私にとってはうまくいきました。
于 2016-11-04T21:35:01.590 に答える