Difference between revisions of "VirtualBox (日本語)"

From ArchWiki
Jump to: navigation, search
m
m
Line 54: Line 54:
 
{{Note|(Not working currently) To load/compile virtualbox modules automatically at startup you can install and add {{pkg|dkms}} in your DAEMONS array.}}
 
{{Note|(Not working currently) To load/compile virtualbox modules automatically at startup you can install and add {{pkg|dkms}} in your DAEMONS array.}}
  
==== カーネルのアップデート毎に自動で virtualbox モジュールをリコンパイルする ====
+
==== カーネルのアップデート毎に自動で virtualbox ホストモジュールをリコンパイルする ====
  
[[Arch User Repository (日本語)|AUR]] にある {{AUR|virtualbox-hook}} によってこれを行うことができます。'''virtualbox-hook''' では、'''linux-headers''' パッケージがアップデートされた後に [[mkinitcpio]] の '''vbox hook''' を使って'自動リコンパイル'が行われます。動かすために、/etc/mkinitcpio.conf の HOOKS 行に 'vbox' を追加して、'linux-headers' とあなたのカスタムカーネルのヘッダを /etc/pacman.conf の SyncFirst 行に追加する必要があります。
+
[[Arch User Repository (日本語)|AUR]] にある {{AUR|vboxhost-hook}} によってこれを行うことができます。'''vboxhost-hook''' では、'''linux-headers''' パッケージがアップデートされた後に [[mkinitcpio]] の '''vboxhost hook''' を使って'自動リコンパイル'が行われます。動かすために、/etc/mkinitcpio.conf の HOOKS 行に 'vboxhost' を追加して、'linux-headers' とあなたのカスタムカーネルのヘッダを /etc/pacman.conf の SyncFirst 行に追加する必要があります。
  
このフックは '''dkms''' コマンドを使ってあなたのカーネルバージョンにあわせて virtualbox モジュールをアップデートします。
+
このフックは '''dkms''' コマンドを使ってあなたのカーネルバージョンにあわせて virtualbox ホストモジュールをアップデートします。
  
{{Note|If you are using this functionality it's '''important''' to look at the installation process of the linux (or any other kernel) package. vbox hook will tell you if anything goes wrong.}}
+
{{Note|この機能を使う場合は、Linux(やその他のカーネル)パッケージのインストールプロセスを注意して見ることが'''重要'''です。vboxhost hook が何か警告を表示することがあるかもしれません。}}
  
 
== セットアップ ==
 
== セットアップ ==
Line 122: Line 122:
 
vboxsf
 
vboxsf
 
vboxvideo}}
 
vboxvideo}}
 +
 +
==== カーネルのアップデート毎に自動で virtualbox ゲストモジュールをリコンパイルする ====
 +
 +
[[Arch User Repository (日本語)|AUR]] にある {{AUR|vboxguest-hook}} によってこれを行うことができます。'''vboxguest-hook''' では、'''linux-headers''' パッケージがアップデートされた後に [[mkinitcpio]] の '''vboxguest hook''' を使って'自動リコンパイル'が行われます。動作させるには、/etc/mkinitcpio.conf の HOOKS 行に 'vboxguest' を追加して、'linux-headers' とあなたのカスタムカーネルのヘッダを /etc/pacman.conf の SyncFirst 行に追加する必要があります。
 +
 +
このフックは '''dkms''' コマンドを使ってあなたのカーネルバージョンにあわせて virtualbox ゲストモジュールをアップデートします。
 +
 +
{{Note|この機能を使う場合は、Linux(やその他のカーネル)パッケージのインストールプロセスを注意して見ることが'''重要'''です。vboxguest hook が何か警告を表示することがあるかもしれません。}}
  
 
=== 共有サービスの起動 ===
 
=== 共有サービスの起動 ===
Line 282: Line 290:
  
 
matrix を一度変化させ、次に元の値に戻すことで、バグが回避されます。
 
matrix を一度変化させ、次に元の値に戻すことで、バグが回避されます。
 +
 +
=== レジュームが失敗する ===
 +
レジュームを失敗させるバグが報告されています: https://www.virtualbox.org/ticket/11289。回避方法はシンプルです: VM を終了するときにはいつも Host+q かメニューを使って下さい。
  
 
== 外部リンク ==
 
== 外部リンク ==
  
 
* [http://www.virtualbox.org/manual/UserManual.html VirtualBox User Manual]
 
* [http://www.virtualbox.org/manual/UserManual.html VirtualBox User Manual]

Revision as of 05:51, 23 January 2013

Template:Article summary start Template:Article summary text Template:Article summary heading Template:Article summary link Template:Article summary heading Template:Article summary wiki Template:Article summary wiki Template:Article summary wiki Template:Article summary wiki Template:Article summary wiki Template:Article summary wiki Template:Article summary end

VirtualBoxVMware に似た仮想 PC エミュレータです。継続的に開発が行われており、新しい機能が日夜追加されています。例えば、バージョン 2.2 では Linux と Solaris をゲストにした OpenGL 3D アクセラレーションがサポートされました。VirtualBox には仮想マシンを管理するために Qt による GUI インターフェースや、SDL によるコマンドラインツールが用意されています。ゲスト OS によっては guest additions を使って、ファイルやクリップボードの共有・ビデオアクセラレーション・"シームレス"なウィンドウ統合モードなどのゲスト・ホストを統合する機能を使うことができます。

Template:Wikipedia

Contents

ホストとしてインストール

GPL ライセンス版の VirtualBox のセットは公式リポジトリにある virtualbox パッケージでインストールできます。virtualbox パッケージでインストールしない場合、Arch Linux カーネル向けにコンパイル済みのモジュールを含んだ virtualbox-host-modules を別途インストールする必要があります。カスタムカーネルを使う場合、下のセクションを読んで下さい。

Qt による、グラフィカルインターフェース (VirtualBox コマンド) を使うには、qt パッケージもインストールしてください。シンプルな SDL の GUI (VBoxSDL コマンド) や VBoxHeadless コマンドを使う場合 qt は必要ありません。

linux-lts カーネルを使っている時は virtualbox-host-modules-lts パッケージもインストールしたほうがよいでしょう。

ホストでカスタムカーネルを使っている場合

公式の Arch カーネルパッケージをシステムで保持する必要がない限りLinux-ck などのカスタムカーネルを使っていても VirtualBox は問題なく動作します。pacman から Arch カーネルパッケージを外し続けるには virtualbox を virtualbox-host-dkms (virtualbox カーネルモジュール用のソースが含まれています) と一緒にインストールします。詳しい説明は FS#26721 を見て下さい。

virtualbox-host-dkms をインストールしたら、カスタムカーネルのためのカーネルモジュールを生成するために次を実行してください:

# dkms install vboxhost/<virtualbox-host-dkms version> -k <your custom kernel's version>/<your architecture>

入力するのが億劫な場合は次のコマンドを使って下さい:

# dkms install vboxhost/$(pacman -Q virtualbox|awk {'print $2'}|sed 's/\-.\+//') -k $(uname -rm|sed 's/\ /\//')

それからモジュールをロードします:

# modprobe vboxdrv
Note: (Not working currently) To load/compile virtualbox modules automatically at startup you can install and add dkms in your DAEMONS array.

カーネルのアップデート毎に自動で virtualbox ホストモジュールをリコンパイルする

AUR にある vboxhost-hookAUR によってこれを行うことができます。vboxhost-hook では、linux-headers パッケージがアップデートされた後に mkinitcpiovboxhost hook を使って'自動リコンパイル'が行われます。動かすために、/etc/mkinitcpio.conf の HOOKS 行に 'vboxhost' を追加して、'linux-headers' とあなたのカスタムカーネルのヘッダを /etc/pacman.conf の SyncFirst 行に追加する必要があります。

このフックは dkms コマンドを使ってあなたのカーネルバージョンにあわせて virtualbox ホストモジュールをアップデートします。

Note: この機能を使う場合は、Linux(やその他のカーネル)パッケージのインストールプロセスを注意して見ることが重要です。vboxhost hook が何か警告を表示することがあるかもしれません。

セットアップ

利用するユーザー名を vboxusers グループに追加してください。追加しなくても問題なく動作しますが、共有フォルダなどの任意機能を動かすためには必要です。新しいグループは自動では現在のセッションに適用されません; ユーザーは一度ログインしなおすか newgrpsudo -u username -s などのコマンドで新しい環境を始める必要があります。

# gpasswd -a username vboxusers

カーネルモジュールのロード

Linux 上で VirtualBox を動作させるとカーネルモジュールが使われますが、その中には vboxdrv と呼ばれる必須モジュールがあり、仮想マシンを起動する前にロードする必要があります。Arch Linux 起動時に自動でロードすることも、必要なときだけ手動でロードすることもできます。

起動時に VirtualBox ドライバをロードする場合、/etc/modules-load.d ディレクトリに "vboxdrv" を読み込む *.conf ファイル (例: virtualbox.conf) を追加してください:

# tee /etc/modules-load.d/virtualbox.conf <<< "vboxdrv"
Note: vboxdrv ロード時に 'no such file or directory' エラーが出る場合、カーネルモジュールデータベースをアップデートする必要があります。次を実行してください: depmod -a

手動でモジュールをロード:

# modprobe vboxdrv

VirtualBox グラフィカルマネージャを起動:

$ VirtualBox

Guest additions ディスク

virtualbox パッケージは VirtualBox を動かすホスト側 (Arch Linux) に、virtualbox-guest-iso もインストールすることを提案します。これはゲスト OS に guest additions をインストールするために使われるディスクイメージです。これを(動作中の)ゲストで利用するには Devices に行き "Install Guest Additions... Host+D" をクリックしてください。それからゲスト側で guest additions インストールを行います。

live ディスクの起動

'New' ボタンをクリックすることで新しい仮想環境を作ることができます。まず適当な名前をつけ、オペレーティングシステムのタイプとバージョンを選んで下さい。それからベースメモリーサイズを選択します(注意: ほとんどの OS は正しく動作させるのに少なくとも 512MB 必要です)。そして新しいハードディスクイメージを作成します(ハードディスクイメージとは OS のファイルシステムとファイルが含まれるファイルのことです)。

新しいイメージが作成されたら、'Settings' をクリックし、次に CD/DVD-ROM をクリック、'Mount CD/DVD Drive' をチェックして ISO イメージを選びます。

仮想マシンでサービスをセットアップする

仮想マシンで systemd サービスをセットアップする方法については Systemd/Services#VirtualBox_virtual_machines を見て下さい。

高度なセットアップ

高度な設定については VirtualBox Extras を見て下さい。

Arch Linux をゲストにする

VirtualBox の下で Arch をインストールするのは簡単です、pacman を使って additions をインストールしてください (VirtualBox の "Install Guest Additions" や、マウントした ISO イメージを使わないでください)。

Guest Additions をインストール

virtualbox-guest-utils パッケージをインストールします:

# pacman -S virtualbox-guest-utils

手動でモジュールをロードします:

# modprobe -a vboxguest vboxsf vboxvideo

以下の内容を持つ *.conf ファイル (例: virtualbox.conf) を /etc/modules-load.d/ に作成します:

/etc/modules-load.d/virtualbox.conf
vboxguest
vboxsf
vboxvideo

カーネルのアップデート毎に自動で virtualbox ゲストモジュールをリコンパイルする

AUR にある vboxguest-hookAUR によってこれを行うことができます。vboxguest-hook では、linux-headers パッケージがアップデートされた後に mkinitcpiovboxguest hook を使って'自動リコンパイル'が行われます。動作させるには、/etc/mkinitcpio.conf の HOOKS 行に 'vboxguest' を追加して、'linux-headers' とあなたのカスタムカーネルのヘッダを /etc/pacman.conf の SyncFirst 行に追加する必要があります。

このフックは dkms コマンドを使ってあなたのカーネルバージョンにあわせて virtualbox ゲストモジュールをアップデートします。

Note: この機能を使う場合は、Linux(やその他のカーネル)パッケージのインストールプロセスを注意して見ることが重要です。vboxguest hook が何か警告を表示することがあるかもしれません。

共有サービスの起動

上記の通り virtualbox-guest-utils をインストールした後、VBoxClient-all を使ってクリップボード共有、画面リサイズなどのサービスを起動してください。

  • GNOME や KDE など、/etc/xdg/autostart/vboxclient.desktop を実行するものを使っている場合、なにもなさらなくて結構です。
  • .xinitrc を使って実行する場合、.xinitrc で WM を起動する前に次の行を追加してください。
# VBoxClient-all &

USB ウェブカメラ/マイクロフォン を使う

Note: 以下の作業をする前に VirtualBox 拡張パックをインストールする必要があります。詳しくは VirtualBox_Extras#Extension_pack を見て下さい。
  1. 仮想マシンを止め、ウェブカメラ/マイクロフォンが使われていないのを確認します。
  2. メイン VirtualBox ウィンドウを立ち上げ Arch マシンの設定に行き、USB セクションを見ます。
  3. "Enable USB Controller" を選択します。それから "Enable USB 2.0 (EHCI) Controller" を選択します。
  4. "Add filter from device" ボタンをクリック ('+' アイコンとケーブル)。
  5. リストから USB ウェブカメラ/マイクロフォンデバイスを選択する。
  6. OK をクリックして VM を起動。

Virtualbox の EFI モードで Arch を使う

My experience with this configuration was pretty terrible, but it does work.

UPD. Using efibootmgr has the same effect as using VirtualBox boot menu (see the note below): settings disappear after VM shutdown. First, efibootmgr does *not* work. It will appear to work, but all changes it makes appear to be overwritten on reboot. After performing a standard UEFI/GPT installation, reboot and you should get dumped to the EFI shell. Type exit and you will get a menu. Select the Boot Management Manager, Boot Options, Add Boot Option. Use the file browser to find the grub efi file and select it. Add a label if you want. Afterwards, select Change Boot Order from the menu, use arrow keys to select your Arch option, and + to move it up to the top. GRUB should boot by default now.

Other options are: 1) move your loader to \EFI\boot\bootx64.efi, 2) create \stratup.nsh script, which executes desirable loader, like this:

\startup.nsh
HD16a0a1:\EFI\refind\refindx64.efi

Here I'm using consistent mapping name (HD16a0a1). It's probably a good idea, because they do survive configuration changes.

Note: Another useful way to get back to the EFI menu after autobooting is working is to press the Template:Keypress key inside GRUB and type exit. Obviously, this will only work with grub-efi, not grub-bios.

Regenerating the grub.cfg file may also be required to fix broken UUIDs. Check with the lsblk -f command that they match.

Yet another useful way to get to VirtualBox boot menu is pressing F12 right after starting virtual machine. It comes in handy when using rEFInd + EFISTUB, for example.

ゲスト側の Arch Linux の共有フォルダ

共有フォルダはホスト側にある VirtualBox によって管理されます。共有フォルダが追加されると、自動でマウントされ読み込み専用になります。 VirtualBox から共有フォルダを作成すると /media/sf_SHAREDFOLDERNAME の中にとフォルダが設置されます。この時、ゲスト側の Arch の中のフォルダを使うには設定が必要になります。ゲスト側の Arch に共有フォルダを作成するには、pacman で Guest Additions パッケージをインストールした後、コマンドラインで以下を実行してください:

# groupadd vboxsf
# gpasswd -a $USER vboxsf

望むなら、シンボリックを作って home ディレクトリにアクセスしやすくすることができます。例として、"Dropbox" という名の共有フォルダがホスト側の VirtualBox の中に作成されている場合、/media/sf_Dropbox をゲスト側に自動で作成するには次のようにしてください:

$ ln -s /media/sf_Dropbox/* ~/dropbox

Guest Additions iso が提供している .run スクリプトでも同じことができますが、Arch はこれを使うことを推奨しません、手動で行うべきだからです。このことについての提言はここで見られます: (pastebin: [1]) .

共有フォルダが自動でマウントされない場合、手動でマウントするか次のセクションを読んで下さい。

systemd (日本語) を使うと起動時に問題が起こる時は、/etc/fstabcomment=systemd.automount を加えて下さい。こうすると、スタートアップ時ではなくマウントポイントにアクセスしたときに共有フォルダがマウントされます。さもなければカーネルアップデート後にシステムが使えなくなるかもしれません(guest additions を手動でインストールした場合)。

desktop   /media/desktop    vboxsf  uid=user,gid=group,rw,dmode=700,fmode=600,comment=systemd.automount 0 0

nofail オプションをテストするのにも時間を取ってください。mount.vboxsf はこれを管理できません (2012-08-20)。

desktop   /media/desktop    vboxsf  uid=user,gid=group,rw,dmode=700,fmode=600,nofail 0 0

ゲストの時刻をホストに同期させる

時刻を同期させるには、まずホスト側に virtualbox-guest-utils をインストールする必要があります(前のセクションを見て下さい)。それから次を実行して次のブート時にサービスを有効にします

# systemctl enable vboxservice.service

今すぐサービスを開始するには

# systemctl start vboxservice.service

共有フォルダの自動マウント機能を使うときにもこのデーモンを起動する必要があります。

トラブルシューティング

USB サブシステムがホスト側もしくはゲスト側で動かない

時々 usb サブシステムが自動で検知されずホスト側の USB ドライブが表示されなかったりエラーが出ることがあります。これはユーザーが vboxusers グループになっていても起こります。詳しくは [2] を見て下さい。

Note: Linux 3.5 から usbfs は失くなりました。/etc/fstab を使う方法はすでに使えません。USB サブシステムを使う方法を取って下さい。

fstab

/etc/fstab にエントリを加えることで問題を解決できます:

none  /proc/bus/usb  usbfs  auto,busgid=108,busmode=0775,devgid=108,devmode=664  0  0

USB サブシステム

~/.bashrc に以下を加え再起動するか新しいインスタンスを開始すれば USB サブシステムが動作します。

VBOX_USB=usbfs

ホストオンリーのネットワークインターフェースを作成できない

Host-Only Network Adapter や Bridged Network Adapter を作るためには、カーネルモジュールの vboxnetadpvboxnetflt をロードする必要があります。これらのカーネルモジュールを手動でロードするには:

# modprobe -a vboxnetadp vboxnetflt

起動時に自動でロードするには /etc/modules-load.d/virtualbox.conf にモジュール毎に新しい行を追加してください:

vboxdrv
vboxnetadp
vboxnetflt
Note: These used to be added to the MODULES array in /etc/rc.conf. This is now deprecated.

このトピックについて詳しい情報がここにあります。

WinXP: ビット深度を 16 より上げることができない

16-ビット色深度で動作させている場合、アイコンの見た目が毛羽立ったりむらがでるかもしれません。しかし、色深度をもっと高く変えようとすると、システムの解像度が低くなってしまったり、もしくは全く深度が変えられないかもしれません。これを修正するには、regedit を起動し次のキーをゲスト側の Windows XP レジストリに追加します:

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services]
"ColorDepth"=dword:00000004

それからデスクトップのプロパティウィンドウから色深度を変えてください。何も怒らない場合、強制的に画面を再描写させてください(つまり、Template:Keypress で再描写するか、フルスクリーンにしてください)。

.vdi イメージのマウント

以下の方法では静的なサイズの vdi イメージしか動きません!動的なサイズのイメージは簡単にはマウントできません!まず .vdi イメージの情報が必要です:

$ VBoxManage internalcommands dumphdinfo Arch_64min.vdi |grep offData
Header: offBlocks=4096 offData=69632

ここで、offData に 32256 を加算してください。例: 32256 + 69632 = 101888

そして vdi イメージをマウントします:

# mount -t ext4 -o rw,noatime,noexec,loop,offset=101888 Arch_64min.vdi /mnt/

マウント失敗によるスタートアップ時の問題

カーネルをアップグレードした後、systemd (日本語) セットアップで問題が発生したら、システムを起動するときに init=/bin/bash (緊急シェルが動かない場合) を付ける必要があります。

root=/dev/mapper/vg_main-lv_root ro vga=792 resume=/dev/mapper/vg_main-lv_swap init=/bin/bash

それから root-ファイルシステムを書き込み権限付きでマウントします:

# mount / -o remount,rw

#ゲスト側の Arch Linux の共有フォルダ に合わせて /etc/fstab を変更します。そして bash シェルから systemd を exec します:

# exec /bin/systemd

ゲスト側の Arch Linux でコピーアンドペーストが機能しない

virtualbox-guest-additions がバージョン 4.2.0-2 にアップデートされてからホスト OS からゲスト側の Arch Linux へのコピーアンドペーストができなくなりました。VBoxClient-allroot 権限が必要なったためだと思われます。以前のバージョンでは VBoxClient-all &~/.xinitrc に追加しておけばコピーアンドペーストが機能していました。~/.xinitrcsudo VBoxClient-all & にして , NOPASSWD: /usr/bin/VBoxClient-all を sudoers ファイルのあなたのユーザ名のところに追加してください。これでまた動くはずです。sudoers ファイルの行はこのようになるはずです:

 # Allow sudo for user 'you' and let him run VBoxClient-all without requiring a password
 you ALL = PASSWD: ALL, NOPASSWD: /usr/bin/VBoxClient-all
Note: sudoers を編集する時は visudo を使って下さい。保存するときに構文エラーをチェックします。

時々ランダムにマウス位置が (0,0) にリセットされる

xorg bug 54353 (関連するバグも報告されています) によって VirtualBox のマウスの位置が画面の左上に頻繁に戻ってしまうことがあります。

バグディスカッションで提案されている解決方法は、/etc/X11/xinit/xinitrc.d に次のスクリプトを加えることです:

 for Z in $(xinput list | sed '/\(master\|slave \) \<pointer\>/!d;s/.*id=\([0-9]\+\).*/\1/'); do
   xinput set-prop $Z "Coordinate Transformation Matrix" 0.500000, 0.000000, 0.000000, 0.000000, 0.500000, 0.000000, 0.000000, 0.000000, 0.500000
   xinput set-prop $Z "Coordinate Transformation Matrix" 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
 done

matrix を一度変化させ、次に元の値に戻すことで、バグが回避されます。

レジュームが失敗する

レジュームを失敗させるバグが報告されています: https://www.virtualbox.org/ticket/11289。回避方法はシンプルです: VM を終了するときにはいつも Host+q かメニューを使って下さい。

外部リンク