LoginSignup
3
2

More than 5 years have passed since last update.

Win10にvagrantでubuntu仮想環境を設定

Posted at

開発で主に利用するための仮想環境を構築する。

  • ホストOS:Windows10
  • ゲストOS:ubuntu 16.04
  • vagrantを利用する
  • VM内でシンボリックリンクが作成できる
  • 仮想環境へはvagrant sshでのアクセスを基本とするが、VirtualBoxを使ってのGUIログインも可能なように構成する

VirtualBoxのインストール

  1. Virtualbox公式サイトからWindows用バイナリをダウンロードしてインストールする。 https://www.virtualbox.org/wiki/Downloads 現バージョンは5.2.11だった。

vagrantのインストール

以下からWin用をダウンロードする。
https://www.vagrantup.com/downloads.html

ここでSymantecProtectionから「ファイルの真偽が不明」系の警告が出た...
念のためvagrantダウンロードページに記載されているsha256sumとの一致を確認しておく。

sha256一覧
https://releases.hashicorp.com/vagrant/1.9.5/vagrant_1.9.5_SHA256SUMS?_ga=2.46683300.245237341.1495158313-1358839353.1495157650

ダウンロードしたmsiファイルのsha256確認

$ sha256sum vagrant_1.9.5.msi
8ce945cd01d1273b628aa101e035716c246dfbddad29cccc8d96c873f77d386b  vagrant_1.9.5.msi

一致を確認できた。

vagrantのboxを探す

Atlasから使いたいboxを検索する。Atlasは、vagrantの配布元Hashicorpによるboxの検索サイト。
https://atlas.hashicorp.com/boxes/search
今回はbento/ubuntu-16.04を使うことにした。

bento projectは、Packer(これもHashicorpの製品)を使ってビルドした様々なOSディストリビューションのboxを提供しているプロジェクト。

bento projectのページ:https://github.com/chef/bento

VMを作る

VMでの作業用ディレクトリを決め、そこへcdしてからVMを作る。
今回は c:\vagrants\ubuntu-xenial とした。

作成されたVMは基本的にこの作業ディレクトリに紐付けられ、VMを立ち上げたりログインする際は毎回このディレクトリへcdする事になる。

また一度VMを作成した後で作業ディレクトリを他へ移動するのは面倒なので、~/Download/などの適当なディレクトリにはしないことを推奨する。

cd /c/vagrants/ubuntu-xenial
vagrant init bento/ubuntu-16.04
vagrant up

VMの設定

開発マシンはメモリが16GBあるので、うち12GBをVMのメモリにまわすことにする。
vagrant initで作成されたVagrantfileを書き換え、vb.memoryに12288を割り当てる。

...
   config.vm.provider "virtualbox" do |vb|
   ...
     # Customize the amount of memory on the VM:
     vb.memory = "12288"
   end
...

また、vagrantではデフォルトでホスト側の作業用ディレクトリ(Vagrantfileを置いたディレクトリ)がゲスト側の /vagrant/ として共有フォルダになっているが、他にも開発用のディレクトリを共有しておきたいので config.vm.synced_folderに 以下の設定を追加する。

config.vm.synced_folder "c:/Develop", "/devevlop"

設定を適用してVMを再起動する。

$ vagrant reload

VM内にログインし、/proc/meminfoを見るなどして適用を確認する。

$ vagrant ssh
$ less /proc/meminfo

VM内でsymlinkを使えるようにする

ホストOSの事情により、初期状態ではVM内でシンボリックリンクを張れないはず。

VM内でsymlinkを有効にする。

(参考:https://iworks.cc/archives/57

管理者権限でのVirtualBox操作のコマンド実行は、場合によってはVMが起動しなくなる可能性もあるので自己責任で実行すること

Vagrantfileに以下を追記。
<directory>はsymlinkを有効化したいディレクトリを指定。

config.vm.provider "virtualbox" do |v|
    v.customize ["setextradata", :id, "VBoxInternal2/SharedFoldersEnableSymlinksCreate/<directory>", "1"]
end

vagrantを起動するターミナルを管理者権限で開いて以下のコマンドを実行する。

$ fsutil behavior set SymlinkEvaluation L2L:1 R2R:1 L2R:1 R2L:1

ターミナル(管理者権限)でvagrantを再起動する。

これで ln -s コマンドによるsymlinkの作成が可能になっているはず。

$ vagrant reload --provision

トラブルシューティング

※vagrant reloadの際にVBoxManage.exeが実行できない旨の警告でエラー終了する場合は、ターミナル(管理者権限)で以下を実行しておく。

<VM名>はVirtualBoxのGUIコンソールから確認できる。
おそらく、ubuntu-xenial_default_<数字> みたいな名前になっているはず。

"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" setextradata <VM名> VBoxInternal2/SharedFoldersEnableSymlinksCreate/<directory>

VMをGUIブート

開発のため、Ubuntu中でEclipseを利用したいのでGUIブートできるようにする。

ubuntu-desktopのインストール

参考:http://d.hatena.ne.jp/kamicup/20080624/1214322228

まずは以下のコマンドでubuntu-desktopをインストールする。

$ apt-get instsall ubuntu-desktop

※ものすごい数の追加ソフトウェアが入るので注意

インストールが完了したらstartxコマンドでGUIが起動できる。

$ startx

この状態で、ホストOSのVirtualBoxを起動する。

実行中のVMが表示されているはずなので、右クリックで「表示」を選択するとウインドウが開きUbuntuのデスクトップ画面が現れるはず。
でも多分メニューが表示されておらず何もできないのでsshしているターミナルでshutdown -r nowで再起動する。
これで通常のubuntu-desktopらしい画面が表示される。

トラブルシューティング

VirtualBoxで表示されているVMが実行中になっていない場合は、vagrant upを行ったユーザーとVirtualBoxを起動しているユーザーが別になっているかもしれない。
管理者権限のターミナルでvagrant upを実行したなら、VirtualBoxも管理者権限で実行する必要がある。

VMのビデオメモリを増やす

初期設定ではVMに割り当てられたビデオメモリは8MBだった。
これだと1920x1080以上のディスプレイサイズでの表示ができなかったので増やしておく。

   config.vm.provider "virtualbox" do |vb|
     ...
     # video memory
     vb.customize ["modifyvm", :id, "--vram", "16"]
   end

GUI初期設定

日本語環境

System Setting->Language Supportから日本語をインストールしておく。

設定->テキスト入力の入力ソースに「日本語(mozc)(iBus)」を追加する。

AppleWirelessKeyboardの場合、
mozcのツール->プロパティ->キー設定の選択を編集し、
入力文字なしのHiraganaとMuhenkanにそれぞれIME ONとOFFを割り付けることで「かな」「英数」と同機能になる。

memo

CLIへの切り替え方法のメモ

GUI起動中でもvagrant sshでのログインは可能なので困ることはないが、多分runlevel=2あたりで起動すればCLIオンリーになるのではと思う。(未確認)

GUIへの切り替え方法のメモ

vagrantがupになっている状態で、VirtualBoxの管理画面から「表示」を選択する。

また、Vagrantfileでvb.gui = trueを設定すると、vagrant up時に自動でGUIウインドウを開くようになるが、なぜか共有ディレクトリがマウントされない事があったので自分はこの設定はしていない。

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2