メモ〜仮想化関係

ここではOracleから提供されているVirtualBoxについて記す。

インストール

Guest Additionsインストール

Guest Additionsを追加でインストールしておくと、ホストキーでホストOS、ゲストOSの間を切り替えることなく透過的にマウスが移動できる、ホストOS、ゲストOS間でクリップボードの内容がやりとりできるなどの付加機能が使えるようになる。

VirtualBox上のFedora系OS(RedHat,CentOSなど)で、Guest Additionsをインストールすると、そのままでは失敗するよう(CentOS 6では失敗した)。パス設定に関する環境変数値の問題らしい[4]

1. 以下のパッケージをインストール
$ su -
# yum install gcc kernel-devel kernel-headers
(前略)
Dependencies Resolved
==============================================================
 Package         Arch  Version             Repository  Size
==============================================================
Installing:
 gcc             i686  4.4.4-13.el6        base        8.1 M
 kernel-devel    i686  2.6.32-71.29.1.el6  updates     6.4 M
 kernel-headers  i686  2.6.32-71.29.1.el6  updates     991 k
Installing for dependencies:
 cloog-ppl       i686  0.15.7-1.2.el6      base         93 k
 cpp             i686  4.4.4-13.el6        base        3.4 M
 glibc-devel     i686  2.12-1.7.el6_0.5    updates     961 k
 glibc-headers   i686  2.12-1.7.el6_0.5    updates     600 k
 mpfr            i686  2.4.1-6.el6         base        153 k
 ppl             i686  0.10.2-11.el6       base        1.3 M

Transaction Summary
==============================================================
Install       9 Package(s)
Upgrade       0 Package(s)

Total download size: 22 M
Installed size: 56 M
Is this ok [y/N]: y
Downloading Packages:
(1/9): cloog-ppl-0.15.7-1.2.el6.i686.rpm           |  93 kB 00:00
(2/9): cpp-4.4.4-13.el6.i686.rpm                   | 3.4 MB 00:00
(3/9): gcc-4.4.4-13.el6.i686.rpm                   | 8.1 MB 00:00
(4/9): glibc-devel-2.12-1.7.el6_0.5.i686.rpm       | 961 kB 00:00
(5/9): glibc-headers-2.12-1.7.el6_0.5.i686.rpm     | 600 kB 00:00
(6/9): kernel-devel-2.6.32-71.29.1.el6.i686.rpm    | 6.4 MB 00:00
(7/9): kernel-headers-2.6.32-71.29.1.el6.i686.rpm  | 991 kB 00:00
(8/9): mpfr-2.4.1-6.el6.i686.rpm                   | 153 kB 00:00
(9/9): ppl-0.10.2-11.el6.i686.rpm                  | 1.3 MB 00:00
------------------------------------------------------------------
Total                                     8.8 MB/s |  22 MB 00:02
(後略)
※なぜか下記パッケージもインストールしないとうまくいかない。
Guest Additionsインストール時にこのコマンドが表示されるが実行できていないよう
# yum install kernel-devel-2.6.32-71.el6.i686
(前略)
Installed:
  kernel-devel.i686 0:2.6.32-71.el6

Complete!
2. 環境変数追加
# ls /usr/src/kernels
2.6.32-71.29.1.el6.i686  2.6.32-71.el6.i686
# KERN_DIR="/usr/src/kernels/2.6.32-71.29.1.el6.i686"
# export KERN_DIR
# printenv KERN_DIR
/usr/src/kernels/2.6.32-71.29.1.el6.i686
3. 仮想マシンメニューの[デバイス]-[Guest Additionsのインストール]で、インストールCDイメージをマウント
4. CD実行
Terminalで実行。CD自動起動でもうまく行くかは不明(設定したKERN_DIRが有効ならばうまく行く?)。
# /media/VBOXADDITIONS_4.1.2_73507/VBoxLinuxAdditions.run
Verifying archive integrity... All good.
Uncompressing VirtualBox 4.1.2 Guest Additions for Linux........
VirtualBox Guest Additions installer
Removing installed version 4.1.2 of VirtualBox Guest Additions...
Removing existing VirtualBox DKMS kernel modules           [  OK  ]
Removing existing VirtualBox non-DKMS kernel modules       [  OK  ]
Building the VirtualBox Guest Additions kernel modules
Building the main Guest Additions module                   [  OK  ]
Building the shared folder support module                  [  OK  ]
Building the OpenGL support module                         [  OK  ]
Doing non-kernel setup of the Guest Additions              [  OK  ]
Starting the VirtualBox Guest Additions
Installing the Window System drivers
Installing X.Org Server 1.7 modules                        [  OK  ]
Setting up the Window System to use the Guest Additions    [  OK  ]
You may need to restart the hal service and the Window System (or just restart
the guest system) to eneble the Guest Additions.

Installing graphics libraries and desktop services componen[  OK  ]

設定

CD/DVDドライブの追加

設定-ストレージ-IDEコントローラ→CD/DVDの追加→空のドライブ 属性右のディスクアイコン→ドライブ名選択 パススルーチェックON

空のフロッピーディスクイメージ作成

【例】容量1.44MBの空のフロッピーディスクイメージ作成[3]
$ mkfs.msdos -C ~/fd.img 1440
    

ディスク容量の拡張

ゲストOSのディスク(パーティション)容量が少なくなっても、ホストOSの環境が許せばディスクとパーティションを拡張して容量不足を解消することができる[5][8][9]。

1. 仮想ディスクを複製する

仮想ディスクのサイズをいきなり拡張してもよいが、バックアップを残しておく意味で複製を作ってそちらを操作する。なお、スナップショットを作っていると拡張しても拡張前の容量しか認識しないので、この場合はスナップショットを削除するかあるいは複製を利用することになる[10]

複製操作はVirtualBoxの仮想メディアマネージャで、[ハードディスク(D)]タブを選択し、拡張対象ディスクを選択して[Copy]ボタンをクリック。または端末上で以下のコマンドを実行。

$ VBoxManage clonehd 仮想ディスク名
2. 仮想ディスクのサイズを拡張する

端末で以下のコマンドを実行する[1 Chap.8 VBoxManage modifyhd]

【書式】指定した仮想ディスクのサイズを指定値(MB単位)に変更
VBoxManage modifyhd 仮想ディスクファイル名 --resize 数値
【書式】指定した仮想ディスクのサイズを指定値(バイト単位)に変更
VBoxManage modifyhd 仮想ディスクファイル名 --resizebyte 数値
【例】25GB(25600MB)に拡張
$ VBoxManage modifyhd pc-xp.vdi --resize 25600
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
3. gpartedをダウンロード、パーティションを編集

通常、ゲストOS上でゲストOSのブートパーティションを編集することはできないので、パーティション編集ツールgpartedのディスクイメージからgpartedを起動し、パーティションを編集する。

仮想マシンの設定の[ストレージ]で、拡張したディスクをストレージツリー(S)のSATAなどに、gpartedのisoイメージをIDEなどに追加。

ただ、最新のgparted(2014/04/06現在、0.18.0-1)では最初のメニューは出るものの、その後の起動が進まない。0.10.0-3だと動作した。

4. VirtualBox設定で旧ディスクを除去し、新ディスクを接続して起動

共有フォルダの設定

ホストOSがWindows 10、ゲストOS(仮想マシンOS)がUbuntu 16.04の場合

1. 共有フォルダ設定を開く

ゲストマシンウインドウ右下のフォルダアイコンを右クリックするとポップアップメニューが出る。

共有フォルダ設定を開く

その中の「共有フォルダ設定...」をクリック。→仮装マシン設定の「共有フォルダ」が開く。

2. 共有フォルダを追加1

ウインドウ右側上方にある、フォルダに+がついたアイコンをクリック。→追加設定ウインドウが開く。

共有フォルダ設定を開く
3. 共有フォルダを追加2

フォルダのパスの右方にある「V」をクリックし「その他」を選択。→フォルダ選択ウインドウが開く。

共有フォルダ設定を開く
4. 共有フォルダを追加3

ゲストOS(Ubuntu)と共有したいホストOS(Windows)上のディレクトリを指定する(例:C:¥Users¥Public)

共有フォルダ設定を開く
5. 共有フォルダを追加4

今後も使い続けたいなら「永続化する(M)」のチェックボックスをONにする。「自動マウント(A)」のチェックボックスをONにすると「/media/sf_共有名」(この例だと /media/sf_Public)へ自動的にマウントされる。

共有フォルダ設定を開く

ただし、このディレクトリの所有者は root:vboxsf でアクセス権は 770 なので一般ユーザは読み書きできない。一般ユーザがアクセスできる場所にマウントするには(1)「自動マウント」のチェックは外す(2)rootになってマウント設定(/etc/fstab)にマウント設定を追記する。以下は user (uid=1000, gid=1000) がホームディレクトリ/Publicにマウントする例:→「mount.vboxsf mounting failed with error Protocol」と表示されてマウントできない。Nautilusではfstabに書き込むだけで「Public」が左のリストに表示されるようになるが、クリックしても「mount:only root can mount Public on /home/pi/Public」と表示されてアクセス不可。

Public vboxsf default,uid=1000,gid=1000 0 0

仮想マシンの移動

仮想マシンを他のホストに移動(コピー)する際、単に仮想ディスクファイルをコピーするだけではだめらしく、仮想ディスクを複製する必要がある?[7]

仮想マシンにAndroidをインストール

Android 4.4インストールCDのISOイメージを使って、VirtualBox仮想マシンにAndroidをインストールすることができる。詳細は仮想マシン - Android関係

仮想マシンにChromium OSをインストール

Ubuntu 14.04 64bit環境にてビルドしたものをインストール[13]

1. Ubuntu 14.04 64bitのVirtualBox仮想マシンを起動
2. Git、バージョン管理システム、curlダウンロード支援ツールをインストール
$ sudo apt-get install git-core gitk git-gui subversion curl
3. depot_toolsをインストール
repoコマンドを使ってソースコードを取得できるようにするのに必要。
depot_toolsを取得
$ git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
depot_toolsをPATHを追加
$ export PATH=`pwd`/depot_tools:"$PATH"
4. sudoer設定を変更
cros_sdkの利用に必要。
$ cd /tmp
$ cat > ./sudo_editor <<EOF
#!/bin/sh
echo Defaults \!tty_tickets > \$1          # Entering your password in one shell affects all shells
echo Defaults timestamp_timeout=180 << \$1 # Time between re-requesting your password, in minutes
EOF
chmod +x ./sudo_editor
sudo EDITOR=./sudo_editor visudo -f /etc/sudoers.d/relax_requirements

トラブルシューティング

Windows8のインストールに失敗する

Windows 7 Enterprise上でWindows 8 EnterpriseへのUpgradeを実行したところ、失敗してWindows 7に戻ってしまった。Windows8のアップグレードアシスタントでチェックすると。問題点の一つに「プロセッサがNXをサポートするよう設定されていない。このままだとUpgradeを行ってもWindow7にロールバックされてしまう」との情報が出た。VirtualBox仮想マシンでNXを有効化するには、仮想マシン右クリック[設定]で設定を開き、[システム]の[プロセッサ(P)]タブで「拡張機能:PAE/NXを有効化(E)」のチェックボックスをONにする。

それでもまだ失敗。Upgrade途中「パーソナル設定」が表示され配色を選択待ちしている画面が表示されている時、VitrualBox仮想マシン画面をアクティブにしてマウスポインタを仮想画面内に入れるとブルースクリーン画面となった。「DRIVER IRQL NOT LESS OR EQUAL」というメッセージが表示されていて自動的に再起動がかかる、ということが数度繰り返され、最終的には「自動修復でPCを修復できませんでした [詳細オプション]を押してその他のオプションでPCの修復を試すか、[シャットダウン]を押してPCの電源を切ってください。 ログ ファイル: D:¥Windows¥System32¥Logfiles¥Srt¥SrtTrail.txt」と記載されたブルースクリーン画面になった。[詳細オプション]に進み、[続ける]をクリックすると再び同じ事が繰り返された。

[詳細オプション]で[電源を切る]を選択して仮想マシンOFF。仮想マシン右クリック[設定]で設定画面を開き、[一般]でOSの選択を[Windows7]から[Windows8]に変更。しかし、状況は変わらず。

(前項実施前後で変わらなかったのかも知れないが)今度はマウスポインタを仮想マシン画面内に入れないようにして、アクセスキー(Alt + キー)でインストールを進めた。今度はインストール自体は成功したらしい。デスクトップ画面が出るようになった。しかし、マウスポインタを画面内に入れた途端ブルースクリーン画面になる状況は同じ。

「USBサブシステムのアクセスに失敗しました」と記された警告が出る

以下のように「USBサブシステムのアクセスに失敗した」こと示す警告ダイアログが表示された場合、を現在ログイン中ユーザをvboxusersグループに追加する[6]

VitrualBox - 警告「USBサブシステムのアクセスに失敗しました」
# vboxusrsグループが存在するか確認
$ grep vboxusers /etc/group
vboxusers:x:131:

# もしvboxusrsグループがなければ作る
$ sudo groupadd vboxusers

# VirtualBoxを使うユーザをvboxusrsグループ追加
$ sudo usermod -G vboxusers VirtualBoxを使うユーザ
# または
$ sudo gpasswd -a vboxusers VirtualBoxを使うユーザ

# vboxusrsグループに追加されたことを確認
$ grep vboxusers /etc/group
vboxusers:x:131:VirtualBoxを使うユーザ

ホストOS共有フォルダのマウントができない

ホストOSの領域をゲストOSで共有する設定を行った時、ゲストOS一般ユーザでアクセスできるようにしようと思ってユーザホーム領域配下にマウントをかけようとしたが、「/sbin/mount.vboxsf: mounting failed with the error: Protocol error」というエラーがでてマウントできなかって件の対処方法について(参考:[11])。

ホスト:Windows7 Pro. SP1 64bit
ゲスト:Ubuntu 12.04 32bit
VirtualBox:4.3.12 r93733
共有フォルダ名:kudou
マウント先:/home/kudou/Shared
VirtualBox共有フォルダの設定

ユーザのuid、gidを調べる
root@ubuntu:~# grep kudou/etc/passwd
kudou:x:1000:1000:kudou,,,:/home/kudou:/bin/bash
マウント実行
root@ubuntu:~# mount -t vboxsf -o defaults,uid=1000,gid=1000 kudou /home/kudou/Shared
/sbin/mount.vboxsf: mounting failed with the error: Protocol error

VirtualBoxの共有フォルダ設定で、「自動マウント」がONになっていたことが原因とのこと。ゲストOSを一旦シャットダウンし、OFFにしてから起動し再実行したらマウントできた。fstabに書いてmount -aでもOK。

kudou /home/kudou/Shared vboxsf defaults,uid=1000,gid=1000 0 0

Ubunbu を12.04から14.04にUpgradeしたらマウントできなくなった。「自動マウント」をONにすると、/media/sf_共有フォルダ名に自動マウントされるので、それからユーザホームにシンボリックリンクを張ればいいとの情報[12]があったのでやってみたが、作ったシンボリックリンクにアクセスしようとすると、「許可がありません」と出た。sudo付けてやってみたが、「〜が作成できません。プロトコルエラー」と出るのは変わらず。