「VirtualBox」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(typo fix)
(同期)
13行目: 13行目:
 
[[zh-CN:VirtualBox]]
 
[[zh-CN:VirtualBox]]
 
{{Related articles start}}
 
{{Related articles start}}
  +
{{Related|VirtualBox/Tips and tricks}}
 
{{Related|PhpVirtualBox}}
 
{{Related|PhpVirtualBox}}
 
{{Related|既存環境を仮想マシンに (から) 移動}}
 
{{Related|既存環境を仮想マシンに (から) 移動}}
25行目: 26行目:
 
=== コアパッケージのインストール ===
 
=== コアパッケージのインストール ===
   
{{Pkg|virtualbox}} パッケージを[[インストール]]してください。依存パッケージとして {{Pkg|virtualbox-host-dkms}} もインストールされます。{{ic|virtualbox-host-dkms}} の virtualbox モジュールをコンパイルするには、インストールしているカーネルに対応するカーネルヘッダーが必要になります [https://lists.archlinux.org/pipermail/arch-dev-public/2016-March/027808.html]:
+
{{Pkg|virtualbox}} パッケージを[[インストール]]してください。さらに、ホストモジュールのパッケージ選択してインストールしてください:
   
* {{Pkg|linux}} カーネル: {{Pkg|linux-headers}}
+
* {{Pkg|linux}} カーネルを使用している場合 {{Pkg|virtualbox-host-modules-arch}} を選択してください。
* {{Pkg|linux-lts}} カーネル: {{Pkg|linux-lts-headers}}
+
* 他のカーネルを使っている場合 {{Pkg|virtualbox-host-dkms}} を選択してください。
* {{Pkg|linux-zen}} カーネル: {{Pkg|linux-zen-headers}}
 
* {{Pkg|linux-grsec}} カーネル: {{Pkg|linux-grsec-headers}}
 
   
  +
{{Pkg|virtualbox-host-dkms}} によって提供される virtualbox モジュールをコンパイルするには、インストールしているカーネルにあわせて適切なヘッダーパッケージをインストールする必要があります (例: {{Pkg|linux-lts}} なら {{Pkg|linux-lts-headers}} パッケージ、{{Pkg|linux-zen}} なら {{Pkg|linux-zen-headers}} パッケージ、{{Pkg|linux-grsec}} なら {{Pkg|linux-grsec-headers}} パッケージ) [https://lists.archlinux.org/pipermail/arch-dev-public/2016-March/027808.html]。VirtualBox かカーネルのどちらかがアップデートされると、[[DKMS]] の Pacman フックによって自動的にカーネルモジュールが再コンパイルされます。
[[Qt]] による、グラフィカルインターフェース ({{ic|VirtualBox}} コマンド) を使うには、{{Pkg|qt4}} パッケージもインストールしてください。シンプルな SDL の GUI ({{ic|VBoxSDL}} コマンド) や {{ic|VBoxHeadless}} コマンドを使う場合 qt は必要ありません。
 
   
  +
[[Qt]] による、グラフィカルインターフェース ({{ic|VirtualBox}} コマンド) を使うには、{{Pkg|qt5-x11extras}} パッケージもインストールしてください。シンプルな SDL の GUI ({{ic|VBoxSDL}} コマンド) や {{ic|VBoxHeadless}} コマンドを使う場合 qt は必要ありません。
=== VirtualBox カーネルモジュールのインストール ===
 
   
  +
=== モジュールに署名する ===
次に、VirtualBox がゲスト環境を仮想化できるようにするために、ホストのカーネルに[[カーネルモジュール]]を追加する必要があります。
 
   
  +
{{ic|CONFIG_MODULE_SIG_FORCE}} オプションを有効にしたカスタムカーネルを使っている場合、カーネルのコンパイル時に生成される鍵を使ってモジュールに署名する必要があります。
カーネルモジュールのバイナリ互換はモジュールがコンパイルされたカーネルの API に依存しています。問題はこれらのインターフェイスが他のバージョンのカーネルと異なる可能性があることです。互換性の問題によってやっかいなバグが出ないように、Linux カーネルを更新した時は毎回、そのインストールした Linux カーネルでカーネルモジュールを再コンパイルすることが推奨されています。これは VirtualBox カーネルモジュールのパッケージで Arch Linux のパッケージ作成者が実際にやっていることです: 新しい Arch Linux カーネルがリリースされる度に、Virtualbox は更新されるようになっています。
 
   
  +
カーネルツリーのフォルダに移動して、以下のコマンドを実行してください:
==== ホストでカスタムカーネルを使っている場合 ====
 
  +
# for module in `ls /lib/modules/$(uname -r)/kernel/misc/{vboxdrv.ko,vboxnetadp.ko,vboxnetflt.ko,vboxpci.ko}` ; do ./scripts/sign-file sha1 certs/signing_key.pem certs/signing_key.x509 $module ; done
   
  +
{{Note|ハッシュのアルゴリズムは必ずしも設定と一致している必要はありませんが、カーネルの中に組み込まれている必要はあります。}}
自分でソースからコンパイルしたカーネルを使う場合、VirtualBox は仮想化モジュール (例: virtuo, kvm,...) を必要としないことを知っておく必要があります。VirtualBox カーネルモジュールは VirtualBox を正しく動作させるために必要なもの全てを提供します。そのため Xen, KVM, QEMU などの他のハイパーバイザーを使わないときはカーネルの ''.config'' ファイルで仮想化モジュールを無効にすることができます。
 
 
Arch Linux の標準カーネルと違うバージョンのカスタムカーネルを使う場合は、{{Pkg|virtualbox-host-dkms}} もインストールする必要があります。このパッケージには VirtualBox カーネルモジュールのソースが同梱されており、あなたのカーネル用のモジュールを生成するようコンパイルされます。
 
 
{{Pkg|virtualbox-host-dkms}} パッケージはコンパイルを必要とするので、あなたの使っているカスタムカーネルに対応するカーネルヘッダーがインストールされていることを確認してください。インストールしていないと {{ic|Your kernel headers for kernel ''your custom kernel version'' cannot be found at /usr/lib/modules/''your custom kernel version''/build or /usr/lib/modules/''your custom kernel version''/source}} というエラーが発生します。
 
* 自分でコンパイルしたカーネルを使っていて {{ic|make modules_install}} でモジュールをインストールする場合、フォルダ {{ic|/usr/lib/modules/''your custom kernel version''/build}} と {{ic|(...)/source}} にはあなたのカーネルソースへのシンボリックリンクが作成されます。これらは必要なカーネルヘッダーとして扱われます。カーネルソースを削除していない場合は、することはありません。
 
* [[AUR]] のカスタムカーネルを使う場合は、{{Pkg|linux-headers}} パッケージをインストールしてください。
 
 
{{Pkg|virtualbox-host-dkms}} をインストールしたら、次のコマンドを実行してあなたのカスタムカーネルのためのカーネルモジュールを生成します:
 
# dkms install vboxhost/''virtualbox-host-source version'' -k ''your custom kernel version''/''your architecture''
 
 
{{Tip|上のコマンドを使いたくない場合は、オールインワンのコマンドを代わりに使って下さい:
 
{{bc|<nowiki># dkms install vboxhost/$(pacman -Q virtualbox|awk {'print $2'}|sed 's/\-.\+//') -k $(uname -rm|sed 's/\ /\//')</nowiki>}}
 
}}
 
 
ソースが更新されたときに (つまり {{Pkg|virtualbox-host-dkms}} パッケージが更新された際) 上の {{ic|dkms install}} コマンドを手動で再入力する手間を省いて VirtualBox カーネルモジュールが自動的に再コンパイルされるように、次のコマンドで {{ic|dkms}} サービスを有効にします:
 
# systemctl enable dkms.service
 
 
このサービスを有効にしない場合 {{Pkg|virtualbox-host-dkms}} パッケージが更新されても、VirtualBox モジュールは更新されないため上の {{ic|dkms install}} コマンドを手動で実行して最新の Virtualbox カーネルモジュールをコンパイルする必要があります。{{ic|dkms}} サービスが起動時に自動的にロードされるようになっていれば、再起動するだけで VirtualBox モジュールは再コンパイルされます。
 
 
それでも、このデーモンを無効にしておきたいときは、[[mkinitcpio|initramfs のフック]]を使って起動時に上の {{ic|dkms install}} コマンドを自動的に実行するよう設定することができます。VirtualBox モジュールを再コンパイルするには再起動が必要になります。このフックを有効にするには、[[Arch User Repository|AUR]] から {{AUR|vboxhost-hook}} パッケージをインストールして {{ic|/etc/mkinitcpio.conf}} の HOOKS 行に {{ic|vboxhost}} を追加してください。もちろん、新しいカーネルの linux ヘッダーが存在しないとコンパイルは失敗します。
 
 
{{Tip|{{ic|dkms}} コマンドと同じように、VirtualBox モジュールの再コンパイル中に何か問題が起こると {{ic|vboxhost}} フックは通知を行います。}}
 
   
 
=== カーネルモジュールのロード ===
 
=== カーネルモジュールのロード ===
バージョン 5.0.16 から、{{Pkg|virtualbox-host-dkms}} と {{Pkg|virtualbox-guest-dkms}} は '''systemd-modules-load''' サービスを使用して起動時にモジュールをロードします。
+
バージョン 5.0.16 から、{{Pkg|virtualbox-host-modules-arch}} と {{Pkg|virtualbox-host-dkms}} は '''systemd-modules-load''' サービスを使用して起動時にモジュールをロードします。
   
{{Note|起動時に VirtualBox モジュールをロードして欲しくない場合、古典的な systemd ロジックを使って {{ic|/etc/modules-load.d}} に空のファイル (あるいは {{ic|/dev/null}} のシンボリックリンク) を作成してモジュールマスクする必要があります。}}
+
{{Note|起動時に VirtualBox モジュールをロードして欲しくない場合、{{ic|/etc/modules-load.d}} に {{ic|virtualbox-host-modules-arch.conf}} (または {{ic|-dkms.conf}}) という名前の空のファイル (あるいは {{ic|/dev/null}} のシンボリックリンク) を作成して {{ic|/usr/lib/modules-load.d/virtualbox-host-modules-arch.conf}} (または {{ic|-dkms.conf}}) 無効化する必要があります。}}
   
 
VirtualBox が使っている[[カーネルモジュール]]の中には {{ic|vboxdrv}} と呼ばれる必須モジュールがあり、仮想マシンを起動する前にロードする必要があります。Arch Linux 起動時に自動でロードすることも、必要なときだけ手動でロードすることもできます。
 
VirtualBox が使っている[[カーネルモジュール]]の中には {{ic|vboxdrv}} と呼ばれる必須モジュールがあり、仮想マシンを起動する前にロードする必要があります。Arch Linux 起動時に自動でロードすることも、必要なときだけ手動でロードすることもできます。
112行目: 90行目:
 
* GUI を (サーバーなどで) 実行せずにコマンドラインで VirtualBox を使って仮想マシンを作成・起動・設定したい場合、ホスト側で全く目に見える出力を行わなず VRDP データだけを送信する {{ic|VBoxHeadless}} を使います。
 
* GUI を (サーバーなどで) 実行せずにコマンドラインで VirtualBox を使って仮想マシンを作成・起動・設定したい場合、ホスト側で全く目に見える出力を行わなず VRDP データだけを送信する {{ic|VBoxHeadless}} を使います。
   
任意の依存パッケージとして {{Pkg|qt4}} をインストールした場合、マウスで使える見た目の良い GUI インターフェイスが使えます。
+
任意の依存パッケージとして {{Pkg|qt5-x11extras}} をインストールした場合、マウスで使える見た目の良い GUI インターフェイスが使えます。
   
 
また、[[PhpVirtualBox]] を使えばウェブインターフェイスで仮想マシンを管理することが可能です。
 
また、[[PhpVirtualBox]] を使えばウェブインターフェイスで仮想マシンを管理することが可能です。
126行目: 104行目:
 
仮想マシンの仮想ドライブを使って Arch のインストールメディアを起動します。そして、[[ビギナーズガイド]]や[[インストールガイド]]に書かれている方法に従って Arch のインストールを完了してください。グラフィックドライバーのインストールはしません: 次のステップで VirtualBox のグラフィックドライバーをインストールします。
 
仮想マシンの仮想ドライブを使って Arch のインストールメディアを起動します。そして、[[ビギナーズガイド]]や[[インストールガイド]]に書かれている方法に従って Arch のインストールを完了してください。グラフィックドライバーのインストールはしません: 次のステップで VirtualBox のグラフィックドライバーをインストールします。
   
==== EFI モードでインストール ====
+
=== EFI モードでインストール ===
   
 
VirtualBox の中に EFI モードで Arch Linux をインストールしたい場合、仮想マシンの設定で、左側のパネルの ''System'' アイテムを選んでから右側のパネルの ''Motherboard'' を選択して ''Enable EFI (special OSes only)'' のチェックを入れて下さい。Arch Linux のインストールメディアを起動すると Arch Linux の標準の [[Gummiboot]] メニューが素早く表示されます:
 
VirtualBox の中に EFI モードで Arch Linux をインストールしたい場合、仮想マシンの設定で、左側のパネルの ''System'' アイテムを選んでから右側のパネルの ''Motherboard'' を選択して ''Enable EFI (special OSes only)'' のチェックを入れて下さい。Arch Linux のインストールメディアを起動すると Arch Linux の標準の [[Gummiboot]] メニューが素早く表示されます:
138行目: 116行目:
 
最初のアイテムを選択してカーネルをロードした後、メディアは1分30秒ほど止まった後、通常通りにカーネルの起動に進みます。絶望しないで待機して下さい。
 
最初のアイテムを選択してカーネルをロードした後、メディアは1分30秒ほど止まった後、通常通りにカーネルの起動に進みます。絶望しないで待機して下さい。
   
システムとブートローダーをインストールしたら、VirtualBox はまず ESP から {{ic|/EFI/BOOT/BOOTX64.EFI}} を実行します。最初のオプションが失敗した場合、VirtualBox は次に EFI のシェルスクリプト {{ic|startup.nsh}} を ESP のルートから試行します。つまり、システムを起動する方法として以下の選択肢があります:
+
システムとブートローダーをインストールしたら、VirtualBox はまず [[ESP]] から {{ic|/EFI/BOOT/BOOTX64.EFI}} を実行します。最初のオプションが失敗した場合、VirtualBox は次に EFI のシェルスクリプト {{ic|startup.nsh}} を ESP のルートから試行します。つまり、システムを起動する方法として以下の選択肢があります:
   
 
* 毎回 [[Unified Extensible Firmware Interface#UEFI シェル|EFI シェル]]から手動でブートローダーを起動する。
 
* 毎回 [[Unified Extensible Firmware Interface#UEFI シェル|EFI シェル]]から手動でブートローダーを起動する。
150行目: 128行目:
 
=== Guest Additions をインストール ===
 
=== Guest Additions をインストール ===
   
VirtualBox の [https://www.virtualbox.org/manual/ch04.html Guest Additions] にはゲストオペレーティングシステムを最適化するドライバーやアプリケーションが含まれています。画像解像度の改善やマウスのより良い制御などもされます。インストールしたゲスト環境の中で、グラフィカル環境を使用する場合、{{Pkg|virtualbox-guest-utils}} をインストールしてください。グラフィカル環境を使わないときは X のサポートを外した VirtualBox Guest ユーティリティの {{Pkg|virtualbox-guest-utils-nox}} をインストールしてください。
+
VirtualBox の [https://www.virtualbox.org/manual/ch04.html Guest Additions] にはゲストオペレーティングシステムを最適化するドライバーやアプリケーションが含まれています。画像解像度の改善やマウスのより良い制御などもされます。インストールしたゲスト環境の中で、グラフィカル環境を使用する場合、{{Pkg|virtualbox-guest-utils}} をインストールしてください。グラフィカル環境を使わないときは X のサポートを外した VirtualBox Guest ユーティリティの {{Pkg|virtualbox-guest-utils-nox}} をインストールしてください。どちらのパッケージをインストールした場合でも、ゲストモジュールのパッケージの選択が求められます:
   
  +
* {{Pkg|linux}} カーネルを使用する場合 {{Pkg|virtualbox-guest-modules-arch}} を選択してください。
どちらのパッケージも依存パッケージとして {{Pkg|virtualbox-guest-dkms}} をインストールします。{{ic|virtualbox-guest-dkms}} の virtualbox モジュールをコンパイルするには、インストールしたカーネルに適合するヘッダーパッケージが必要です [https://lists.archlinux.org/pipermail/arch-dev-public/2016-March/027808.html]:
 
  +
* 他のカーネルを使う場合 {{Pkg|virtualbox-guest-dkms}} を選択してください。
   
  +
{{Pkg|virtualbox-guest-dkms}} によって提供される virtualbox モジュールをコンパイルするには、インストールしているカーネルにあわせて適切なヘッダーパッケージをインストールする必要があります (例: {{Pkg|linux-lts}} なら {{Pkg|linux-lts-headers}} パッケージ、{{Pkg|linux-zen}} なら {{Pkg|linux-zen-headers}} パッケージ、{{Pkg|linux-grsec}} なら {{Pkg|linux-grsec-headers}} パッケージ) [https://lists.archlinux.org/pipermail/arch-dev-public/2016-March/027808.html]。VirtualBox かカーネルのどちらかがアップデートされると、[[DKMS]] の Pacman フックによって自動的にカーネルモジュールが再コンパイルされます。
* {{Pkg|linux}} カーネル: {{Pkg|linux-headers}}
 
* {{Pkg|linux-lts}} カーネル: {{Pkg|linux-lts-headers}}
 
* {{Pkg|linux-zen}} カーネル: {{Pkg|linux-zen-headers}}
 
* {{Pkg|linux-grsec}} カーネル: {{Pkg|linux-grsec-headers}}
 
   
 
{{Note|
 
{{Note|
163行目: 139行目:
 
* vbox カーネルモジュールを再コンパイルするには、root で {{ic|rcvboxdrv}} を実行してください。
 
* vbox カーネルモジュールを再コンパイルするには、root で {{ic|rcvboxdrv}} を実行してください。
 
}}
 
}}
  +
  +
ゲストで動作する Guest Additions と、ホストで動作する VirtualBox アプリケーションのバージョンは一致している必要があります。バージョンが食い違っていると (クリップボードの共有など) Guest Additions の機能が使えなくなります。ゲストをアップグレードする場合 (例: {{ic|pacman -Syu}})、ホスト側の VirtualBox アプリケーションも最新版になっていることを確認してください。VirtualBox の GUI にある "Check for updates" はときどき機能しないことがあります。virtualbox.org のウェブサイトを確認してください。
   
 
=== Virtualbox カーネルモジュールをロード ===
 
=== Virtualbox カーネルモジュールをロード ===
171行目: 149行目:
 
# modprobe -a vboxguest vboxsf vboxvideo
 
# modprobe -a vboxguest vboxsf vboxvideo
   
  +
バージョン 5.0.16 から、{{Pkg|virtualbox-guest-modules-arch}} や {{Pkg|virtualbox-guest-dkms}} は '''systemd-modules-load''' サービスを使って起動時にモジュールをロードします。
起動時に VirtualBox モジュールをロードさせるには、[[カーネルモジュール#ロード]]を参照して以下の内容で {{ic|/etc/modules-load.d/}} に {{ic|*.conf}} ファイルを作成してください (例: {{ic|virtualbox.conf}}):
 
{{hc|/etc/modules-load.d/virtualbox.conf|
 
vboxguest
 
vboxsf
 
vboxvideo}}
 
   
  +
{{Note|起動時に VirtualBox のモジュールをロードして欲しくない場合、{{ic|/etc/modules-load.d}} に {{ic|virtualbox-guest-modules-arch.conf}} (または {{ic|-dkms.conf}}) という名前の空のファイル (あるいは {{ic|/dev/null}} のシンボリックリンク) を作成して {{ic|/usr/lib/modules-load.d/virtualbox-guest-modules-arch.conf}} (または {{ic|-dkms.conf}}) を無効化する必要があります。}}
VirtualBox で準仮想化を使用する場合、[[Systemd#ユニットファイルの編集|ユニットを編集]]して次のパラメータを使う必要があります: {{ic|1=
 
ConditionVirtualization=''paravirtualization''
 
}}。
 
 
コンソールで {{ic|systemd-detect-virt}} を実行すると準仮想化を確認できます。
 
   
 
=== VirtualBox ゲストサービスを起動 ===
 
=== VirtualBox ゲストサービスを起動 ===
193行目: 163行目:
 
これらの機能は全てフラグを使って個別・手動で有効にすることができます。
 
これらの機能は全てフラグを使って個別・手動で有効にすることができます。
 
$ VBoxClient --clipboard --draganddrop --seamless --display --checkhostversion
 
$ VBoxClient --clipboard --draganddrop --seamless --display --checkhostversion
 
ゲストサービスには他の機能もあります:
 
* ホストとゲスト間での時刻同期。
 
* ホストとゲスト間での読み取り専用・自動マウントの共有フォルダ。
 
   
 
今のところドキュメントになっていませんが VirtualBox には X11 サーバーが実際に動作中かどうか確認して全ての機能を自動的に有効にする Bash スクリプト {{ic|VBoxClient-all}} が入っています。
 
今のところドキュメントになっていませんが VirtualBox には X11 サーバーが実際に動作中かどうか確認して全ての機能を自動的に有効にする Bash スクリプト {{ic|VBoxClient-all}} が入っています。
 
# VBoxClient-all
 
# VBoxClient-all
   
  +
{{Pkg|virtualbox-guest-utils}} はログイン時に {{ic|VBoxClient-all}} が実行されるように {{ic|/etc/xdg/autostart/vboxclient.desktop}} をインストールします。使用している[[デスクトップ環境]]や[[ウィンドウマネージャ]]が自動的にスクリプトを実行してくれない場合、自動で起動するように手動で設定してください。詳しくは[[自動起動#グラフィカル]]を参照。
システムが起動した時に自動的にスクリプトを実行するには root で以下のコマンドを実行してください:
 
# systemctl enable vboxservice
 
   
  +
VirtualBox にはホストとゲスト間で時刻を同期させる機能も存在します。{{ic|vboxservice.service}} を[[起動]]・[[有効化]]してください。
上記の systemd サービスを使いたくない場合は、代わりに2つの方法が存在します:
 
* [[デスクトップ環境]]を使っている場合、チェックボックスを有効にするか {{ic|/usr/sbin/VBoxClient-all}} を DE 設定の自動起動セクションに追加します (DE は {{ic|~/.config/autostart}} の ''.desktop'' ファイルにフラグを設定します。詳しくは[[自動起動#グラフィカル|自動起動]]セクションを見て下さい)。
 
* [[デスクトップ環境]]を使っていない場合、次の行を {{ic|~/.xinitrc}} (存在しない場合は {{ic|/etc/skel/.xinitrc}} からファイルをコピー) の一番上に追加してください:
 
{{hc|~/.xinitrc|
 
/usr/bin/VBoxClient-all}}
 
   
これで、Arch Linux ゲストが動ようになったはずです。おめでとざいます。
+
これで、Arch Linux ゲスト環境が動作するようになったはずです。クリップボードの共有などの機能はデフォルトは無効になっているので注意してください。使用したいきは VM との設定でオンにする必要があります (例: ''Settings > General > Advanced > Shared Clipboard'')
   
ホストと Arch Linux ゲストでフォルダを共有したい場合次のセクション読んで下さい。
+
Arch Linux ゲストとホストでフォルダを共有したい場合、見てください。
   
 
=== ハードウェアアクセラレーション ===
 
=== ハードウェアアクセラレーション ===
   
ハードウェアアクセラレーションはホストコンピュータの VirtualBox のオプションから有効にできます。gdm ディスプレイマネージャ 3.16 以上はハードウェアアクセラレーションのサポートを破壊するので [https://bbs.archlinux.org/viewtopic.php?id=200025]、ハードウェアアクセラレーションに問題が発生する場合、別のディスプレイマネージャを使用することを推奨します (lightdm は問題なく動作します)。
+
ハードウェアアクセラレーションはホストコンピュータの VirtualBox のオプションから有効にできます。[[GDM]] ディスプレイマネージャ 3.16 以上はハードウェアアクセラレーションのサポートを破壊するので [https://bbs.archlinux.org/viewtopic.php?id=200025]、ハードウェアアクセラレーションに問題が発生する場合、別のディスプレイマネージャを使用することを推奨します ([[LightDM]] は問題なく動作します)。
 
=== 共有サービスの起動 ===
 
 
上記の通り {{Pkg|virtualbox-guest-utils}} をインストールした後、{{ic|VBoxClient-all}} を使ってクリップボード共有、画面リサイズなどのサービスを起動してください。
 
* GNOME や KDE など、{{Ic|/etc/xdg/autostart/vboxclient.desktop}} を実行するものを使っている場合、なにもなさらなくて結構です。
 
* {{Ic|.xinitrc}} を使って実行する場合、{{Ic|.xinitrc}} で WM を起動する前に次の行を追加してください。
 
 
# VBoxClient-all &
 
 
=== USB ウェブカメラ/マイクロフォンを使う ===
 
 
{{Note|以下の作業をする前に VirtualBox 拡張パックをインストールする必要があります。}}
 
 
# 仮想マシンを止め、ウェブカメラ/マイクロフォンが使われていないのを確認します。
 
# メイン VirtualBox ウィンドウを立ち上げ Arch マシンの設定に行き、USB セクションを見ます。
 
# "Enable USB Controller" を選択します。それから "Enable USB 2.0 (EHCI) Controller" を選択します。
 
# "Add filter from device" ボタンをクリック ('+' アイコンとケーブル)。
 
# リストから USB ウェブカメラ/マイクロフォンデバイスを選択する。
 
# OK をクリックして VM を起動。
 
   
 
== ゲスト側の Arch Linux の共有フォルダ ==
 
== ゲスト側の Arch Linux の共有フォルダ ==
276行目: 218行目:
   
 
共有フォルダの自動マウント機能を使うときにもこのデーモンを起動する必要があります。
 
共有フォルダの自動マウント機能を使うときにもこのデーモンを起動する必要があります。
  +
  +
== Tips and tricks ==
  +
  +
高度な設定については、[[VirtualBox/Tips and tricks]] を見てください。
   
 
== トラブルシューティング ==
 
== トラブルシューティング ==
282行目: 228行目:
   
 
windows ホストにある raw vmdk イメージにアクセスするには、管理者として VirtualBox GUI を起動してください。
 
windows ホストにある raw vmdk イメージにアクセスするには、管理者として VirtualBox GUI を起動してください。
  +
  +
=== pacstrap スクリプトが動作しない ===
  +
  +
[[#Arch Linux をゲストにする|Arch Linux をゲストにする]]とき新しいゲストで起動する前に ''pacstrap'' を使って [[#Guest Additions をインストール|Guest Additions をインストール]]する場合、''pacstrap'' を実行する前に root で {{ic|umount -l /mnt/dev}} を実行する必要があります。
   
 
=== modprobe Exec フォーマットエラー ===
 
=== modprobe Exec フォーマットエラー ===
436行目: 386行目:
 
# Control Panel -> Action Center -> "Change User Account Control settings" の左側 -> スライダーを "Never notify" に設定 -> OK して再起動することで UAC を無効化する
 
# Control Panel -> Action Center -> "Change User Account Control settings" の左側 -> スライダーを "Never notify" に設定 -> OK して再起動することで UAC を無効化する
 
# 共有フォルダからゲストのフォルダにファイルをコピーしてから実行する
 
# 共有フォルダからゲストのフォルダにファイルをコピーしてから実行する
  +
# Control Panel -> Network and Internet -> Internet Options -> Security -> Trusted Sites -> Sites -> ウェブサイトとして "VBOXSVR" を追加
 
  +
インターネット上には信頼されるサイトのリストに VBOXSVR を追加するように書かれていることもありますが、その方法は Windows 7 以上では上手く行きません。
# 起動 -> "gpedit.msc" と入力してエンター -> Computer Configuration -> Administrative Templates -> Windows Components -> Internet Explorer -> Internet Control Panel -> Security Page -> Size to Zone Assignment List -> "VBOXSVR" を "2" に追加して再起動
 
   
 
=== 64ビット OS のクライアントオプションが表示されない ===
 
=== 64ビット OS のクライアントオプションが表示されない ===
   
 
VM クライアントを起動したときに、64ビットオプションが使えない場合、CPU の仮想化機能 ({{ic|VT-x}}) が BIOS で有効になっていることを確認してください。
 
VM クライアントを起動したときに、64ビットオプションが使えない場合、CPU の仮想化機能 ({{ic|VT-x}}) が BIOS で有効になっていることを確認してください。
  +
  +
Windows をホストとして使っている場合、Hyper-V を無効化する必要があります。Hyper-V が有効になっていると VirtualBox が VT-x を使えなくなります [https://www.virtualbox.org/ticket/12350]。
   
 
=== 仮想マシンが起動するとホスト OS がフリーズする ===
 
=== 仮想マシンが起動するとホスト OS がフリーズする ===
447行目: 399行目:
 
原因と解決方法:
 
原因と解決方法:
 
* SMAP
 
* SMAP
SMAP が有効になっているカーネルでは Intel Broadwell の大抵のチップセットで動作しないという既知の問題があります。問題は調査中ですが、問題を解決するとうたわれている様々な vboxhost モジュールが世に出回っています。これを書いている時点では、100% 完全に解決できるという方法は、カーネルブートコマンドラインに "nosmap" オプションを追加して SMAP を無効にする方法しかありません。
+
SMAP が有効になっているカーネルでは Intel Broadwell の大抵のチップセットで動作しないという既知の問題があります。問題は調査中ですが、問題を解決するとうたわれている様々な vboxhost モジュールが世に出回っています。これを書いている時点では、100% 完全に解決できるという方法は、[[カーネルパラメータ|カーネルブートコマンドライン]]{{ic|nosmap}} オプションを追加して SMAP を無効にする方法しかありません。
 
* ハードウェア仮想化
 
* ハードウェア仮想化
 
ハードウェア仮想化 (VT-x/AMD-V) を無効化することで問題が解決する場合があります。
 
ハードウェア仮想化 (VT-x/AMD-V) を無効化することで問題が解決する場合があります。
473行目: 425行目:
   
 
アナログマイクロフォンからの音声入力がホストでは上手く出来るのに、ゲストでは音声が録音できない場合、ホストに [[PulseAudio]] などの[[サウンドシステム#サウンドサーバー|サウンドサーバー]]をインストールすることで問題は解決します。
 
アナログマイクロフォンからの音声入力がホストでは上手く出来るのに、ゲストでは音声が録音できない場合、ホストに [[PulseAudio]] などの[[サウンドシステム#サウンドサーバー|サウンドサーバー]]をインストールすることで問題は解決します。
  +
  +
==== アップグレード後に音声入力 (マイクロフォン) が使えなくなった ====
  +
  +
5.1.x バージョンには音声入力まわりに問題が存在しています [https://forums.virtualbox.org/viewtopic.php?f=7&t=78797]。
  +
  +
VirtualBox を[[ダウングレード]]することで問題は解決します。
  +
  +
=== フルスクリーンモードでゲストの画面が表示されない ===
  +
ウィンドウマネージャによっては (例: [[i3]])、オーバーレイバーが原因で VirtualBox のフルスクリーンモードで問題が発生します。この問題を回避するには、"Guest Settings --> User Interface --> Mini ToolBar" から "Show in Full-screen/Seamless" オプションを無効にしてください。詳しくは [https://www.virtualbox.org/ticket/14323 上流のバグレポート] を参照。
  +
  +
=== Failed to insert module ===
  +
  +
モジュールをロードしようとすると以下のような問題が発生する場合:
  +
Failed to insert 'vboxdrv': Required key not available
  +
モジュールが署名されていること、あるいはカーネルコンフィグで {{ic|CONFIG_MODULE_SIG_FORCE}} が無効になっていることを確認してください。
   
 
== 外部リンク ==
 
== 外部リンク ==

2016年8月13日 (土) 22:35時点における版

関連記事

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

この項目について詳しくは Wikipedia の記事を見て下さい: VirtualBox

目次

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

コアパッケージのインストール

virtualbox パッケージをインストールしてください。さらに、ホストモジュールのパッケージを選択してインストールしてください:

virtualbox-host-dkms によって提供される virtualbox モジュールをコンパイルするには、インストールしているカーネルにあわせて適切なヘッダーパッケージをインストールする必要があります (例: linux-lts なら linux-lts-headers パッケージ、linux-zen なら linux-zen-headers パッケージ、linux-grsec なら linux-grsec-headers パッケージ) [1]。VirtualBox かカーネルのどちらかがアップデートされると、DKMS の Pacman フックによって自動的にカーネルモジュールが再コンパイルされます。

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

モジュールに署名する

CONFIG_MODULE_SIG_FORCE オプションを有効にしたカスタムカーネルを使っている場合、カーネルのコンパイル時に生成される鍵を使ってモジュールに署名する必要があります。

カーネルツリーのフォルダに移動して、以下のコマンドを実行してください:

# for module in `ls /lib/modules/$(uname -r)/kernel/misc/{vboxdrv.ko,vboxnetadp.ko,vboxnetflt.ko,vboxpci.ko}` ; do ./scripts/sign-file sha1 certs/signing_key.pem certs/signing_key.x509 $module ; done
ノート: ハッシュのアルゴリズムは必ずしも設定と一致している必要はありませんが、カーネルの中に組み込まれている必要はあります。

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

バージョン 5.0.16 から、virtualbox-host-modules-archvirtualbox-host-dkmssystemd-modules-load サービスを使用して起動時にモジュールをロードします。

ノート: 起動時に VirtualBox モジュールをロードして欲しくない場合、/etc/modules-load.dvirtualbox-host-modules-arch.conf (または -dkms.conf) という名前の空のファイル (あるいは /dev/null のシンボリックリンク) を作成して /usr/lib/modules-load.d/virtualbox-host-modules-arch.conf (または -dkms.conf) を無効化する必要があります。

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

dkms でモジュールを使う場合、最初に、modprobe によって使用されたカーネルモジュールの依存関係データベースを depmod -a でアップデートしてください。DKMS パッケージ (e.g. virtualbox-host-modules, virtualbox-host-modules-lts,...) を使わないユーザーはこのコマンドを実行する必要はありません、データベースはインストール時に更新されるためです

手動でモジュールをロードするには:

# modprobe vboxdrv

次のモジュールは任意ですが、高度な設定をするときは面倒くさいことにならないようにロードすることを推奨します: vboxnetadp, vboxnetflt, vboxpci

  • vboxnetadpvboxnetflt はどちらも "ホストオンリーネットワーク" 機能を使うときに必要になります。正確に言えば、vboxnetadp は VirtualBox のグローバル設定でホストインターフェイスを作成するのに必要で、vboxnetflt はそのネットワークインターフェイスを使って仮想マシンを起動するのに必要です。
  • vboxpci は仮想マシンでホストの PCI デバイスをパススルーするときに必要になります。
ノート: モジュールを更新したときにカーネルに VirtualBox カーネルモジュールがロードされていた場合、更新された新しいバージョンを使うためには手動でリロードしなくてはなりません。root で vboxreload を実行してください。

最後に、上記の "ホストオンリーネットワーク" 機能を使う場合、net-tools がインストールされていることを確認してください。VirtualBox は ifconfigroute を使って IP を割り当て VBoxManage hostonlyif や GUI の Settings > Network > Host-only Networks > Edit host-only network (space) > Adapter で設定されたホストインターフェイスに接続します。

ユーザー名を vboxusers グループに追加

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

# gpasswd -a $USER vboxusers

Guest additions ディスク

VirtualBox を動かすホスト側 (Arch Linux) には、virtualbox-guest-iso もインストールすることが推奨されています。これはゲスト OS に guest additions をインストールするために使われるディスクイメージです。.iso ファイルは /usr/lib/virtualbox/additions/VBoxGuestAdditions.iso に配置され、仮想マシンの中から手動でマウントする必要があります。マウントしたら、ゲストの中で guest additions インストーラーを実行できます。

エクステンションパック

VirtualBox 4.0 から、GPL ではないコンポーネントはアプリケーションから分割されるようになりました。フリーでない、個人利用においてのみ利用可能なライセンスでリリースされていますが、追加機能が入っている Oracle エクステンションパックに興味をひかれるかもしれません。手動でインストールする代わりに、AUR には virtualbox-ext-oracleAUR パッケージが存在します。ビルド済みのバージョンは seblu リポジトリにあります。

伝統的な手動のインストールをしたい場合: エクステンションを手動でインストールして GUI (File > Preferences > Extensions) または VBoxManage extpack install <.vbox-extpack> でインストールしてください。VirtualBox に特権アクセスを与えるためのツールキット (Polkit や gksu など) が必須です。このエクステンションのインストールには root 権限が必要になります

適切なフロントエンドの使用

これで、VirtualBox を使う準備はできました。おめでとうございます。

複数のフロントエンドが存在しており、デフォルトでは2つが利用可能です:

  • コマンドライン内だけで VirtualBox を使いたい場合 (起動と既存の仮想マシンの設定変更だけ)、VBoxSDL コマンドが使えます。VBoxSDL はメニューやコントロールがない、ピュアな仮想マシンだけを含んだシンプルなウィンドウのみを表示します。
  • GUI を (サーバーなどで) 実行せずにコマンドラインで VirtualBox を使って仮想マシンを作成・起動・設定したい場合、ホスト側で全く目に見える出力を行わなず VRDP データだけを送信する VBoxHeadless を使います。

任意の依存パッケージとして qt5-x11extras をインストールした場合、マウスで使える見た目の良い GUI インターフェイスが使えます。

また、PhpVirtualBox を使えばウェブインターフェイスで仮想マシンを管理することが可能です。

仮想マシンを作成する方法は VirtualBox マニュアルを参照してください。

警告: 仮想ディスクイメージを Btrfs ファイルシステムに保存する場合は、イメージを作成する前に、イメージを保存するディレクトリの Copy-on-Write を無効にすると良いでしょう。

Arch Linux をゲストにする

仮想マシンの中に Arch Linux をインストール

仮想マシンの仮想ドライブを使って Arch のインストールメディアを起動します。そして、ビギナーズガイドインストールガイドに書かれている方法に従って Arch のインストールを完了してください。グラフィックドライバーのインストールはしません: 次のステップで VirtualBox のグラフィックドライバーをインストールします。

EFI モードでインストール

VirtualBox の中に EFI モードで Arch Linux をインストールしたい場合、仮想マシンの設定で、左側のパネルの System アイテムを選んでから右側のパネルの Motherboard を選択して Enable EFI (special OSes only) のチェックを入れて下さい。Arch Linux のインストールメディアを起動すると Arch Linux の標準の Gummiboot メニューが素早く表示されます:

Arch Linux archiso x86_64 UEFI USB
UEFI Shell x86_64 v1
UEFI Shell x86_64 v2
EFI Default Loader

最初のアイテムを選択してカーネルをロードした後、メディアは1分30秒ほど止まった後、通常通りにカーネルの起動に進みます。絶望しないで待機して下さい。

システムとブートローダーをインストールしたら、VirtualBox はまず ESP から /EFI/BOOT/BOOTX64.EFI を実行します。最初のオプションが失敗した場合、VirtualBox は次に EFI のシェルスクリプト startup.nsh を ESP のルートから試行します。つまり、システムを起動する方法として以下の選択肢があります:

  • 毎回 EFI シェルから手動でブートローダーを起動する。
  • ブートローダーをデフォルトの /EFI/BOOT/BOOTX64.EFI パスに移動する。
  • ESP のルートに startup.nsh スクリプトを作成してブートローダーアプリケーションのパスを記述する。例: \EFI\grub\grubx64.efi

GRUBGummiboot を使うなら、デフォルトの EFI Hard Drive エントリが完璧に動作します。起動時に F2 キーを押すことで使える、VirtualBox Boot Manager を使用しないで下さい: 起動時に手動で追加した、もしくは efibootmgr による EFI エントリは再起動しても残りますが VM をシャットダウンすると消えます

UEFI Virtualbox installation boot problems も参照。

Guest Additions をインストール

VirtualBox の Guest Additions にはゲストオペレーティングシステムを最適化するドライバーやアプリケーションが含まれています。画像解像度の改善やマウスのより良い制御などもされます。インストールしたゲスト環境の中で、グラフィカル環境を使用する場合、virtualbox-guest-utils をインストールしてください。グラフィカル環境を使わないときは X のサポートを外した VirtualBox Guest ユーティリティの virtualbox-guest-utils-nox をインストールしてください。どちらのパッケージをインストールした場合でも、ゲストモジュールのパッケージの選択が求められます:

virtualbox-guest-dkms によって提供される virtualbox モジュールをコンパイルするには、インストールしているカーネルにあわせて適切なヘッダーパッケージをインストールする必要があります (例: linux-lts なら linux-lts-headers パッケージ、linux-zen なら linux-zen-headers パッケージ、linux-grsec なら linux-grsec-headers パッケージ) [2]。VirtualBox かカーネルのどちらかがアップデートされると、DKMS の Pacman フックによって自動的にカーネルモジュールが再コンパイルされます。

ノート:
  • ISO を使って、ホスト環境に virtualbox-guest-iso パッケージをインストールして、Guest Additions をインストールすることもできます。その場合、デバイスメニューを開いて Insert Guest Additions CD Image をクリックしてください。
  • vbox カーネルモジュールを再コンパイルするには、root で rcvboxdrv を実行してください。

ゲストで動作する Guest Additions と、ホストで動作する VirtualBox アプリケーションのバージョンは一致している必要があります。バージョンが食い違っていると (クリップボードの共有など) Guest Additions の機能が使えなくなります。ゲストをアップグレードする場合 (例: pacman -Syu)、ホスト側の VirtualBox アプリケーションも最新版になっていることを確認してください。VirtualBox の GUI にある "Check for updates" はときどき機能しないことがあります。virtualbox.org のウェブサイトを確認してください。

Virtualbox カーネルモジュールをロード

自動的にモジュールをロードするには vboxservice サービスを有効化してください。モジュールをロードしてゲストのシステム時刻をホストと同期します。

手動でモジュールをロードするには、次のコマンドを入力:

# modprobe -a vboxguest vboxsf vboxvideo

バージョン 5.0.16 から、virtualbox-guest-modules-archvirtualbox-guest-dkmssystemd-modules-load サービスを使って起動時にモジュールをロードします。

ノート: 起動時に VirtualBox のモジュールをロードして欲しくない場合、/etc/modules-load.dvirtualbox-guest-modules-arch.conf (または -dkms.conf) という名前の空のファイル (あるいは /dev/null のシンボリックリンク) を作成して /usr/lib/modules-load.d/virtualbox-guest-modules-arch.conf (または -dkms.conf) を無効化する必要があります。

VirtualBox ゲストサービスを起動

VirtualBox カーネルモジュールのインストールが終わったら、ゲストサービスを起動する必要があります。ゲストサービスは VBoxClient という名前のバイナリ実行ファイルであり X Window System と対話を行います。VBoxClient は以下の機能を管理します:

  • 共有クリップボードとホストとゲスト間のドラッグアンドドロップ。
  • シームレスウィンドウモード。
  • ゲストのウィンドウサイズに自動的にゲストの表示をリサイズ。
  • VirtualBox ホストバージョンのチェック。

これらの機能は全てフラグを使って個別・手動で有効にすることができます。

$ VBoxClient --clipboard --draganddrop --seamless --display --checkhostversion

今のところドキュメントになっていませんが VirtualBox には X11 サーバーが実際に動作中かどうか確認して全ての機能を自動的に有効にする Bash スクリプト VBoxClient-all が入っています。

# VBoxClient-all

virtualbox-guest-utils はログイン時に VBoxClient-all が実行されるように /etc/xdg/autostart/vboxclient.desktop をインストールします。使用しているデスクトップ環境ウィンドウマネージャが自動的にスクリプトを実行してくれない場合、自動で起動するように手動で設定してください。詳しくは自動起動#グラフィカルを参照。

VirtualBox にはホストとゲスト間で時刻を同期させる機能も存在します。vboxservice.service起動有効化してください。

これで、Arch Linux のゲスト環境が動作するようになったはずです。クリップボードの共有などの機能はデフォルトでは無効になっているので注意してください。使用したいときは VM ごとの設定でオンにする必要があります (例: Settings > General > Advanced > Shared Clipboard)。

Arch Linux ゲストとホストでフォルダを共有したい場合、下を見てください。

ハードウェアアクセラレーション

ハードウェアアクセラレーションはホストコンピュータの VirtualBox のオプションから有効にできます。GDM ディスプレイマネージャ 3.16 以上はハードウェアアクセラレーションのサポートを破壊するので [3]、ハードウェアアクセラレーションに問題が発生する場合、別のディスプレイマネージャを使用することを推奨します (LightDM は問題なく動作します)。

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

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

# groupadd vboxsf
# gpasswd -a $USER vboxsf
ノート: 自動マウントを機能させるには、vboxservice サービスを有効にする必要があります。次のセクションの説明を見て下さい。

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

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

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

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

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

sharedFolderName  /path/to/mntPtOnGuestMachine  vboxsf  uid=user,gid=group,rw,dmode=700,fmode=600,comment=systemd.automount  0  0
  • sharedFolderName: 仮想マシンの Settings > SharedFolders > Edit > FolderName メニューの値。ホストマシンの実際のフォルダ名とは違う可能性があります。仮想マシンの Settings を確認するには、ホスト OS の VirtualBox アプリケーションから、適切な仮想マシンを選択して Settings をクリックしてください。
  • /path/to/mntPtOnGuestMachine: 存在しない場合、このディレクトリは手動で作成する必要があります (mkdir などを使用)。
  • dmode/fmode/path/to/mntPtOnGuestMachine のなかのディレクトリやファイルのパーミッションです。

2012年8月2日現在、mount.vboxsfnofail オプションに対応していません:

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

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

Tips and tricks

高度な設定については、VirtualBox/Tips and tricks を見てください。

トラブルシューティング

VERR_ACCESS_DENIED

windows ホストにある raw vmdk イメージにアクセスするには、管理者として VirtualBox GUI を起動してください。

pacstrap スクリプトが動作しない

Arch Linux をゲストにするとき新しいゲストで起動する前に pacstrap を使って Guest Additions をインストールする場合、pacstrap を実行する前に root で umount -l /mnt/dev を実行する必要があります。

modprobe Exec フォーマットエラー

あなたのシステムを最新状態にしてください:

pacman -Syu

VBOX_E_INVALID_OBJECT_STATE (0x80BB0007)

これは VM を正常終了しないと発生することがあります。VM をアンロックしてください:

VBoxManage controlvm nArch poweroff

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

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

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

VBOX_USB=usbfs

また、あなたのユーザーを storage グループのメンバーに追加してください。

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

Host-Only Network Adapter や Bridged Network Adapter を作るためには、カーネルモジュールの vboxnetadpvboxnetflt をロードする必要があります。また、net-tools パッケージがインストールされているか確認してください。これらのカーネルモジュールを手動でロードするには:

# modprobe -a vboxnetadp vboxnetflt

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

vboxdrv
vboxnetadp
vboxnetflt
ノート: 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

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

.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
ノート: sudoers を編集する時は visudo を使って下さい。保存するときに構文エラーをチェックします。

ゲスト OS でシリアルポートを使う

シリアルポートのパーティションを確認してください:

$ /bin/ls -l /dev/ttyS*
crw-rw---- 1 root uucp 4, 64 Feb  3 09:12 /dev/ttyS0
crw-rw---- 1 root uucp 4, 65 Feb  3 09:12 /dev/ttyS1
crw-rw---- 1 root uucp 4, 66 Feb  3 09:12 /dev/ttyS2
crw-rw---- 1 root uucp 4, 67 Feb  3 09:12 /dev/ttyS3

それからユーザーを uucp グループに追加して:

# gpasswd -a $USER uucp 

ログインしなおして下さい。

Windows 8.x Error Code 0x000000C4

OS Type で Win 8 を選んだのに、起動時に以下のエラーコードが表示される場合、CMPXCHG16B CPU 命令を有効化してみてください:

$ vboxmanage setextradata virtual_machine_name VBoxInternal/CPUM/CMPXCHG16B 1

Windows 8, 8.1, 10 がインストール・起動できない、あるいは "ERR_DISK_FULL" エラーが表示される

Settings > Storage > Controller:SATA から "Use Host I/O Cache" にチェックを入れて VM の設定を更新してください。

Linux ゲストの音が遅い/早い

Linux カーネルの AC97 ドライバーは Virtual Box の中で実行されたときに、クロック設定を間違って認識することがあり、それによって音が遅くなったり早回しになったりします。この問題を修正するには、以下の内容で /etc/modprobe.d にファイルを作成してください:

options snd-intel8x0 ac97_clock=48000

Xorg の起動後にゲストがフリーズする

間違ったドライバーを使っている、あるいはドライバーが存在しない場合、Xorg の起動後にゲストはフリーズします。[6][7] を見てください。Settings > Display から 3D アクセラレーションを無効化して、Xorg ドライバーが全てインストールされていることを確認してください。

"NS_ERROR_FAILURE" が表示されメニューアイテムが表示されない

仮想マシンの最初の起動時に以下のエラーメッセージが表示される場合:

Failed to open a session for the virtual machine debian.
Could not open the medium '/home/.../VirtualBox VMs/debian/debian.qcow'.
QCow: Reading the L1 table for image '/home/.../VirtualBox VMs/debian/debian.qcow' failed (VERR_EOF).
VD: error VERR_EOF opening image file '/home/.../VirtualBox VMs/debian/debian.qcow' (VERR_EOF).

Result Code: 
NS_ERROR_FAILURE (0x80004005)
Component: 
Medium

VirtualBox を終了して新しいマシンのファイルを全て削除して、virtualbox の設定ファイルから MachineRegistry メニュー (あるいはあなたが作成した問題のマシン) の最後の行を削除してください:

~/.config/VirtualBox/VirtualBox.xml
...
<MachineRegistry>
  <MachineEntry uuid="{00000000-0000-0000-0000-000000000000}" src="/home/void/VirtualBox VMs/debian/debian.vbox"/>
  <MachineEntry uuid="{00000000-0000-0000-0000-000000000000}" src="/home/void/VirtualBox VMs/ubuntu/ubuntu.vbox"/>
  <MachineEntry uuid="{00000000-0000-0000-0000-000000000000}" src="/home/void/VirtualBox VMs/lastvmcausingproblems/lastvmcausingproblems.qcow"/>
</MachineRegistry>
...

新しい仮想ディスクを作成するときに QCOW/QCOW2/QED ディスク形式を選択すると時々発生します。

USB モデム

USB モデムをゲスト OS で使っている場合、ゲスト OS を終了するとホスト環境からモデムが使えなくなることがあります。VBoxSVC を終了・再起動すれば問題は解決します。

Windows ゲストで "The specified path does not exist. Check the path and then try again." エラー

管理者権限を必要とする .exe ファイルを Windows ゲストの共有フォルダから実行するとエラーメッセージが発生します。詳しくは バグレポート を見てください。

複数の対処方法があります:

  1. Control Panel -> Action Center -> "Change User Account Control settings" の左側 -> スライダーを "Never notify" に設定 -> OK して再起動することで UAC を無効化する
  2. 共有フォルダからゲストのフォルダにファイルをコピーしてから実行する

インターネット上には信頼されるサイトのリストに VBOXSVR を追加するように書かれていることもありますが、その方法は Windows 7 以上では上手く行きません。

64ビット OS のクライアントオプションが表示されない

VM クライアントを起動したときに、64ビットオプションが使えない場合、CPU の仮想化機能 (VT-x) が BIOS で有効になっていることを確認してください。

Windows をホストとして使っている場合、Hyper-V を無効化する必要があります。Hyper-V が有効になっていると VirtualBox が VT-x を使えなくなります [8]

仮想マシンが起動するとホスト OS がフリーズする

原因と解決方法:

  • SMAP

SMAP が有効になっているカーネルでは Intel Broadwell の大抵のチップセットで動作しないという既知の問題があります。問題は調査中ですが、問題を解決するとうたわれている様々な vboxhost モジュールが世に出回っています。これを書いている時点では、100% 完全に解決できるという方法は、カーネルブートコマンドラインnosmap オプションを追加して SMAP を無効にする方法しかありません。

  • ハードウェア仮想化

ハードウェア仮想化 (VT-x/AMD-V) を無効化することで問題が解決する場合があります。

  • 様々なカーネルバグ
    • Fuse でマウントしたパーティション (ntfs など) [9], [10]

通常、上記のような問題は VirtualBox や Linux カーネルのアップデートで発生します。前のバージョンにダウングレードすることで解決するかもしれません。

起動時に終了コード 1 (0x1) で仮想マシンが終了してしまう

仮想マシンを起動すると、以下のようなエラーメッセージが表示される場合:

The virtual machine has terminated unexpectedly during startup with exit code 1 (0x1)
NS_ERROR_FAILURE 0x80004005
Component: MachineWrap
Interface: IMachine

上記の問題は virtualboxvirtualbox-host-modules パッケージのアップデートによって引き起こされることがあります。vboxdrv モジュールをリロードしてください:

# modprobe -r vboxdrv
# modprobe vboxdrv

ゲストでアナログマイクロフォンが使えない

アナログマイクロフォンからの音声入力がホストでは上手く出来るのに、ゲストでは音声が録音できない場合、ホストに PulseAudio などのサウンドサーバーをインストールすることで問題は解決します。

アップグレード後に音声入力 (マイクロフォン) が使えなくなった

5.1.x バージョンには音声入力まわりに問題が存在しています [11]

VirtualBox をダウングレードすることで問題は解決します。

フルスクリーンモードでゲストの画面が表示されない

ウィンドウマネージャによっては (例: i3)、オーバーレイバーが原因で VirtualBox のフルスクリーンモードで問題が発生します。この問題を回避するには、"Guest Settings --> User Interface --> Mini ToolBar" から "Show in Full-screen/Seamless" オプションを無効にしてください。詳しくは 上流のバグレポート を参照。

Failed to insert module

モジュールをロードしようとすると以下のような問題が発生する場合:

Failed to insert 'vboxdrv': Required key not available

モジュールが署名されていること、あるいはカーネルコンフィグで CONFIG_MODULE_SIG_FORCE が無効になっていることを確認してください。

外部リンク