「VirtualBox」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(typo fix)
(他言語リンクを追加)
(7人の利用者による、間の106版が非表示)
1行目: 1行目:
[[Category:エミュレ]]
+
[[Category:ハイパバイザ]]
[[Category:仮想化]]
+
[[Category:Oracle]]
[[cs:VirtualBox]]
 
 
[[de:VirtualBox]]
 
[[de:VirtualBox]]
[[el:VirtualBox]]
 
 
[[en:VirtualBox]]
 
[[en:VirtualBox]]
 
[[es:VirtualBox]]
 
[[es:VirtualBox]]
[[fr:VirtualBox]]
 
[[hu:VirtualBox]]
 
[[it:VirtualBox]]
 
[[pt:VirtualBox]]
 
 
[[ru:VirtualBox]]
 
[[ru:VirtualBox]]
[[zh-CN:VirtualBox]]
+
[[zh-hans:VirtualBox]]
 
{{Related articles start}}
 
{{Related articles start}}
  +
{{Related|VirtualBox/ヒントとテクニック}}
  +
{{Related|:Category:ハイパーバイザ}}
 
{{Related|PhpVirtualBox}}
 
{{Related|PhpVirtualBox}}
  +
{{Related|RemoteBox}}
 
{{Related|既存環境を仮想マシンに (から) 移動}}
 
{{Related|既存環境を仮想マシンに (から) 移動}}
 
{{Related articles end}}
 
{{Related articles end}}
   
  +
[https://www.virtualbox.org VirtualBox] は 既存のオペレーティングシステム上で仮想マシンと
'''VirtualBox''' は [[VMware]] に似た仮想 PC エミュレータです。継続的に開発が行われており、新しい機能が日夜追加されています。例えば、バージョン 2.2 では Linux と Solaris をゲストにした OpenGL 3D アクセラレーションがサポートされました。VirtualBox には仮想マシンを管理するために [[Qt]] による GUI インターフェースや、[[Wikipedia:ja:SDL|SDL]] によるコマンドラインツールが用意されています。ゲスト OS によっては ''guest additions'' を使って、ファイルやクリップボードの共有・ビデオアクセラレーション・"シームレス"なウィンドウ統合モードなどのゲスト・ホストを統合する機能を使うことができます。
 
  +
呼ばれる特別な環境でオペレーティングシステムを実行するために使用される [[Wikipedia:ja:ハイパーバイザ|ハイパーバイザ]] です。VirtualBoxは常に開発されており、新機能は継続的に実装されています。[[Qt]] GUIインターフェイスに加えて、仮想マシンを管理および実行するためのヘッドレスおよび [[Wikipedia:ja:SDL|SDL]] コマンドラインツールが付属しています。
   
  +
共有フォルダーやクリップボード、ビデオアクセラレーション、シームレスウィンドウ統合モードなど、ホストシステムの機能をゲストに統合するために、一部のゲストオペレーティングシステムにゲストの追加機能が提供されています。
{{Wikipedia/ja|VirtualBox}}
 
   
 
== ホストとしてインストール ==
 
== ホストとしてインストール ==
  +
  +
Arch Linux 上で VirtualBox の仮想マシンを起動するには、以下のインストール手順に従いってください。
   
 
=== コアパッケージのインストール ===
 
=== コアパッケージのインストール ===
   
{{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}} パッケージ) [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 は必要ありません。
 
   
=== 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''' サービスを使用して起動時にモジュールをロードします。
+
{{Pkg|virtualbox-host-modules-arch}} と {{Pkg|virtualbox-host-dkms}} は {{ic|systemd-modules-load}} サービスを使用して起動時にモジュールをロードします。インストール後にモジュールをロードするには、再起動するか、モジュールを手動で一回ロードします。モジュールのリストは、{{ic|/usr/lib/modules-load.d/virtualbox-host-modules-arch.conf}} または {{ic|/usr/lib/modules-load.d/virtualbox-host-dkms.conf}} にあります。
   
{{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|virtualbox-host-modules-dkms.conf}}) という名前の空のファイル (あるいは {{ic|/dev/null}} のシンボリックリンク) を作成して {{ic|/usr/lib/modules-load.d/virtualbox-host-modules-arch.conf}} (または {{ic|/usr/lib/modules-load.d/virtualbox-host-dkms.conf}}) 無効化する必要があります。}}
   
VirtualBox が使っている[[カーネルモジュール]]の中には {{ic|vboxdrv}} と呼ばれる必須モジュールがあり、仮想マシンを起動する前にロードする必要があります。Arch Linux 起動時に自動でロードすることも、必要なときだけ手動でロードすることもできます。
+
VirtualBox が使っている[[カーネルモジュール]]の中には {{ic|vboxdrv}} と呼ばれる必須モジュールがあり、仮想マシンを起動する前にロードする必要があります。
 
dkms でモジュールを使う場合、最初に、''modprobe'' によって使用されたカーネルモジュールの依存関係データベースを {{ic|depmod -a}} でアップデートしてください。DKMS パッケージ (e.g. {{Pkg|virtualbox-host-modules}}, {{Pkg| virtualbox-host-modules-lts}},...) を使わないユーザーはこのコマンドを実行する必要はありません、データベースは[https://projects.archlinux.org/svntogit/community.git/tree/trunk/virtualbox-host-modules.install?h=packages/virtualbox-modules インストール時に更新されるためです]。
 
   
 
手動でモジュールをロードするには:
 
手動でモジュールをロードするには:
 
# modprobe vboxdrv
 
# modprobe vboxdrv
   
  +
次のモジュールは、高度な構成でのみ必要です。
次のモジュールは任意ですが、高度な設定をするときは面倒くさいことにならないようにロードすることを推奨します: {{ic|vboxnetadp}}, {{ic|vboxnetflt}}, {{ic|vboxpci}}。
 
   
 
* {{ic|vboxnetadp}} と {{ic|vboxnetflt}} はどちらも [https://www.virtualbox.org/manual/ch06.html#network_hostonly "ホストオンリーネットワーク"] 機能を使うときに必要になります。正確に言えば、{{ic|vboxnetadp}} は VirtualBox のグローバル設定でホストインターフェイスを作成するのに必要で、{{ic|vboxnetflt}} はそのネットワークインターフェイスを使って仮想マシンを起動するのに必要です。
 
* {{ic|vboxnetadp}} と {{ic|vboxnetflt}} はどちらも [https://www.virtualbox.org/manual/ch06.html#network_hostonly "ホストオンリーネットワーク"] 機能を使うときに必要になります。正確に言えば、{{ic|vboxnetadp}} は VirtualBox のグローバル設定でホストインターフェイスを作成するのに必要で、{{ic|vboxnetflt}} はそのネットワークインターフェイスを使って仮想マシンを起動するのに必要です。
 
* {{ic|vboxpci}} は仮想マシンでホストの PCI デバイスをパススルーするときに必要になります。
 
   
 
{{Note|モジュールを更新したときにカーネルに VirtualBox カーネルモジュールがロードされていた場合、更新された新しいバージョンを使うためには手動でリロードしなくてはなりません。root で {{ic|vboxreload}} を実行してください。}}
 
{{Note|モジュールを更新したときにカーネルに VirtualBox カーネルモジュールがロードされていた場合、更新された新しいバージョンを使うためには手動でリロードしなくてはなりません。root で {{ic|vboxreload}} を実行してください。}}
 
最後に、上記の "ホストオンリーネットワーク" 機能を使う場合、{{pkg|net-tools}} がインストールされていることを確認してください。VirtualBox は {{ic|ifconfig}} と {{ic|route}} を使って IP を割り当て {{ic|VBoxManage hostonlyif}} や GUI の ''Settings > Network > Host-only Networks > Edit host-only network (space) > Adapter'' で設定されたホストインターフェイスに接続します。
 
   
 
=== ユーザー名を vboxusers グループに追加 ===
 
=== ユーザー名を vboxusers グループに追加 ===
98行目: 67行目:
 
VirtualBox を動かすホスト側 (Arch Linux) には、{{Pkg|virtualbox-guest-iso}} もインストールすることが推奨されています。これはゲスト OS に guest additions をインストールするために使われるディスクイメージです。''.iso'' ファイルは {{ic|/usr/lib/virtualbox/additions/VBoxGuestAdditions.iso}} に配置され、仮想マシンの中から手動でマウントする必要があります。マウントしたら、ゲストの中で guest additions インストーラーを実行できます。
 
VirtualBox を動かすホスト側 (Arch Linux) には、{{Pkg|virtualbox-guest-iso}} もインストールすることが推奨されています。これはゲスト OS に guest additions をインストールするために使われるディスクイメージです。''.iso'' ファイルは {{ic|/usr/lib/virtualbox/additions/VBoxGuestAdditions.iso}} に配置され、仮想マシンの中から手動でマウントする必要があります。マウントしたら、ゲストの中で guest additions インストーラーを実行できます。
   
=== エクステンションパック ===
+
=== 無人テンプレート ===
   
  +
ゲストシステムを手動でインストールする必要をなくすために、一部の OS では ''無人インストール'' がサポートされています。これにより、ユーザーは、マシンを起動する前に、VirtualBox のインターフェイスにインストールされるようにシステムを構成できます。セットアッププロセスの最後に、それ以上のユーザー操作を必要とせずに OS がインストールされます。この機能には {{aur|virtualbox-unattended-templates}} パッケージが必要です。
VirtualBox 4.0 から、GPL ではないコンポーネントはアプリケーションから分割されるようになりました。フリーでない、'''個人利用においてのみ利用可能'''なライセンスでリリースされていますが、[https://www.virtualbox.org/manual/ch01.html#intro-installing 追加機能]が入っている Oracle エクステンションパックに興味をひかれるかもしれません。手動でインストールする代わりに、[[AUR]] には {{aur|virtualbox-ext-oracle}} パッケージが存在します。ビルド済みのバージョンは [[非公式ユーザーリポジトリ#seblu|seblu]] リポジトリにあります。
 
   
  +
=== 拡張パック ===
伝統的な手動のインストールをしたい場合: エクステンションを手動でインストールして GUI (''File > Preferences > Extensions'') または {{ic|VBoxManage extpack install <.vbox-extpack>}} でインストールしてください。VirtualBox に特権アクセスを与えるためのツールキット ([[Polkit]] や gksu など) が必須です。このエクステンションのインストールには [https://www.virtualbox.org/ticket/8473 root 権限が必要になります]。
 
   
  +
VirtualBox 4.0 から、GPL ではないコンポーネントはアプリケーションから分割されるようになりました。フリーでない、'''個人利用においてのみ利用可能'''なライセンスでリリースされていますが、[https://www.virtualbox.org/manual/ch01.html#intro-installing 追加機能]が入っている Oracle Virtualbox 拡張パックに興味をひかれるかもしれません。手動でインストールする代わりに、[[AUR]] には {{aur|virtualbox-ext-oracle}} パッケージが存在します。ビルド済みのバージョンは [[非公式ユーザーリポジトリ#seblu|seblu]] リポジトリにあります。
=== 適切なフロントエンドの使用 ===
 
   
  +
伝統的な手動のインストールをしたい場合: 拡張パックを手動でインストールして GUI (''File > Preferences > Extensions'') または {{ic|VBoxManage extpack install <.vbox-extpack>}} でインストールしてください。VirtualBox に特権アクセスを与えるためのツールキット ([[Polkit]] や gksu など) が必須です。このエクステンションのインストールには [https://www.virtualbox.org/ticket/8473 root 権限が必要になります]。
これで、VirtualBox を使う準備はできました。おめでとうございます。
 
   
複数のフロントエンドが存在しており、デフォルトでは2つが利用可能です:
+
=== フロントエンド ===
  +
  +
VirtualBox には複数のフロントエンドが存在しています:
  +
* 普通の GUI で VirtualBox を使いたい場合は {{ic|VirtualBox}} を使ってください。
 
* コマンドライン内だけで VirtualBox を使いたい場合 (起動と既存の仮想マシンの設定変更だけ)、{{ic|VBoxSDL}} コマンドが使えます。VBoxSDL はメニューやコントロールがない、''ピュア''な仮想マシンだけを含んだシンプルなウィンドウのみを表示します。
 
* コマンドライン内だけで VirtualBox を使いたい場合 (起動と既存の仮想マシンの設定変更だけ)、{{ic|VBoxSDL}} コマンドが使えます。VBoxSDL はメニューやコントロールがない、''ピュア''な仮想マシンだけを含んだシンプルなウィンドウのみを表示します。
* GUI を (サーバーなどで) 実行せずにコマンドラインで VirtualBox を使って仮想マシンを作成・起動・設定したい場合、ホスト側で全く目に見える出力を行わず VRDP データだけを送信する {{ic|VBoxHeadless}} を使います。
+
* GUI を (サーバーなどで) 実行せずにコマンドラインで VirtualBox を使って仮想マシンを作成・起動・設定したい場合、ホスト側で全く目に見える出力を行わず VRDP データだけを送信する {{ic|VBoxHeadless}} を使います。
  +
  +
Wayland のセキュリティ機能 (つまり GDM を使用する場合) は VirtualBox がすべてのキーボード入力を取得することを禁止しています。これはゲスト OS にウィンドウマネージャのショートカットを渡したいときに厄介です。これは VirtualBox をホワイトリスト化することで回避できます。
  +
  +
$ gsettings get org.gnome.mutter.wayland xwayland-grab-access-rules
  +
$ gsettings set org.gnome.mutter.wayland xwayland-grab-access-rules "['VirtualBox Machine']"
   
  +
最初のコマンドは、他のアプリケーションがすでにホワイトリストに登録されているかどうかを表示します。もしあれば、'VirtualBox Machine'をそのリストに追加してください(唯一のリストにするのではありません)。
任意の依存パッケージとして {{Pkg|qt4}} をインストールした場合、マウスで使える見た目の良い GUI インターフェイスが使えます。
 
   
 
また、[[PhpVirtualBox]] を使えばウェブインターフェイスで仮想マシンを管理することが可能です。
 
また、[[PhpVirtualBox]] を使えばウェブインターフェイスで仮想マシンを管理することが可能です。
122行目: 99行目:
 
== Arch Linux をゲストにする ==
 
== Arch Linux をゲストにする ==
   
=== 仮想マシンの中に Arch Linux をインストール ===
+
[[VirtualBox/Arch Linux をストにする]] を参照してください。
   
  +
== 仮想ディスクの管理 ==
仮想マシンの仮想ドライブを使って Arch のインストールメディアを起動します。そして、[[ビギナーズガイド]]や[[インストールガイド]]に書かれている方法に従って Arch のインストールを完了してください。グラフィックドライバーのインストールはしません: 次のステップで VirtualBox のグラフィックドライバーをインストールします。
 
   
  +
[[VirtualBox/ヒントとテクニック#VirtualBox の仮想マシンを他のハイパーバイザにインポート・エクスポート]]も参照。
==== EFI モードでインストール ====
 
   
  +
=== VirtualBox によってサポートされているフォーマット ===
VirtualBox の中に EFI モードで Arch Linux をインストールしたい場合、仮想マシンの設定で、左側のパネルの ''System'' アイテムを選んでから右側のパネルの ''Motherboard'' を選択して ''Enable EFI (special OSes only)'' のチェックを入れて下さい。Arch Linux のインストールメディアを起動すると Arch Linux の標準の [[Gummiboot]] メニューが素早く表示されます:
 
   
  +
VirtualBox は以下の仮想ディスクフォーマットをサポートしています:
{{bc|
 
Arch Linux archiso x86_64 UEFI USB
 
UEFI Shell x86_64 v1
 
UEFI Shell x86_64 v2
 
EFI Default Loader}}
 
   
  +
* '''VDI''' (Virtual Disk Image): VirtualBox で仮想マシンを作成したときにデフォルトで使用されるオープンなコンテナです。
最初のアイテムを選択してカーネルをロードした後、メディアは1分30秒ほど止まった後、通常通りにカーネルの起動に進みます。絶望しないで待機して下さい。
 
   
  +
* '''VMDK''' (Virtual Machine Disk): VMware によって開発されたフォーマットです。最初は仕様が公開されていませんでしたが、今では VirtualBox でサポートされるオープンなフォーマットになっています。VMDK では 2GB のファイルに分割することができます。巨大なファイルをサポートしていない環境に仮想マシンを保存したい場合に有用です。Parallels の HDD フォーマット以外で、このような機能を提供するフォーマットはありません。
システムとブートローダーをインストールしたら、VirtualBox はまず ESP から {{ic|/EFI/BOOT/BOOTX64.EFI}} を実行します。最初のオプションが失敗した場合、VirtualBox は次に EFI のシェルスクリプト {{ic|startup.nsh}} を ESP のルートから試行します。つまり、システムを起動する方法として以下の選択肢があります:
 
   
  +
* '''VHD''' (Virtual Hard Disk): Microsoft によって Windows Virtual PC や [[Hyper-V]] で使用されているフォーマットです。Microsoft 製品を使用する場合、このフォーマットを選択する必要があります。
* 毎回 [[Unified Extensible Firmware Interface#UEFI シェル|EFI シェル]]から手動でブートローダーを起動する。
 
  +
:{{Tip|Windows 7 から、VHD は直接マウントできるようになっています。}}
* ブートローダーをデフォルトの {{ic|/EFI/BOOT/BOOTX64.EFI}} パスに移動する。
 
* ESP のルートに {{ic|startup.nsh}} スクリプトを作成してブートローダーアプリケーションのパスを記述する。例: {{ic|\EFI\grub\grubx64.efi}}。
 
   
  +
* '''VHDX''' (読み取り専用): Microsoft によって開発された Virtual Hard Disk フォーマットの拡張版です。2012年9月4日に Windows Server 2012 に搭載された Hyper-V 3.0 と一緒にリリースされました。VHDX は (ブロックアライメントの改善により) パフォーマンスが向上しており、大きなブロックサイズとジャーナルをサポートしています。VirtualBox は読み取り専用で VHDX をサポートしています [https://www.virtualbox.org/manual/ch15.html#idp63002176]。
[[GRUB]] や [[Gummiboot]] を使うなら、デフォルトの ''EFI Hard Drive'' エントリが完璧に動作します。起動時に {{ic|F2}} キーを押すことで使える、VirtualBox Boot Manager を使用しないで下さい: 起動時に手動で追加した、もしくは {{Pkg|efibootmgr}} による EFI エントリは再起動しても残りますが [https://www.virtualbox.org/ticket/11177 VM をシャットダウンすると消えます]。
 
   
  +
* '''HDD''' (バージョン 2): Parallels Inc によって開発されている HDD フォーマットは Parallels Desktop for Mac などのハイパーバイザ製品で使われています。プロプライエタリなフォーマットで、ドキュメントがないために、新しいバージョンの HDD (バージョン 3 と 4) はサポートされていません。 {{Note|バージョン 1 のサポートに関しては論争が存在します。公式 VirtualBox マニュアルでは [https://www.virtualbox.org/manual/ch05.html#vdidetails HDD ファイルフォーマットのバージョン 2 しかサポートしていない] と書かれていますが、Wikipedia の投稿者によれば[[Wikipedia:Comparison of platform virtual machines#Image type compatibility|バージョン 1 も使える]]という話です。}}
[https://bbs.archlinux.org/viewtopic.php?id=158003 UEFI Virtualbox installation boot problems] も参照。
 
   
  +
* '''QED''' (QEMU Enhanced Disk): オープンソースのハイパーバイザである QEMU で使われていた古いファイルフォーマットです。2010年に設計されたフォーマットで、今では QCOW2 などに取って代わられています。特徴として完全な非同期 I/O パス、強力なデータ整合性、バッキングファイル、スパースファイルなどがあります。QED フォーマットは古いバージョンの QEMU で作成された仮想マシンとの互換性のためだけにサポートされています。
=== Guest Additions をインストール ===
 
   
  +
* '''QCOW''' (QEMU Copy On Write): QEMU の現行フォーマットです。QCOW フォーマットは zlib ベースの透過圧縮や暗号化をサポートしています (暗号化は問題があるため推奨されていません)。QCOW にはふたつのバージョンが存在します: QCOW と QCOW2 です。QCOW2 は QCOW よりも優れています。VirtualBox が完全にサポートしているのは QCOW です [https://www.virtualbox.org/manual/ch15.html#idp63002176]。QCOW2 にはリビジョン違いがふたつあります: QCOW2 0.10 と QCOW2 1.1 になります (QEMU で仮想ディスクを作成した場合、後者がデフォルトです)。VirtualBox は QCOW2 をサポートしていません。
VirtualBox の [https://www.virtualbox.org/manual/ch04.html Guest Additions] にはゲストオペレーティングシステムを最適化するドライバーやアプリケーションが含まれています。画像解像度の改善やマウスのより良い制御などもされます。インストールしたゲスト環境の中で、グラフィカル環境を使用する場合、{{Pkg|virtualbox-guest-utils}} をインストールしてください。グラフィカル環境を使わないときは X のサポートを外した VirtualBox Guest ユーティリティの {{Pkg|virtualbox-guest-utils-nox}} をインストールしてください。
 
   
  +
* '''OVF''' (Open Virtualization Format): 異なるハイパーバイザ間での仮想マシンの相互運用性を考えて設計されたオープンなフォーマットです。VirtualBox は VBoxManage のインポート・エクスポート機能によって OVF フォーマットをサポートしています [https://www.virtualbox.org/manual/ch08.html#idp55423424]。ただし [https://www.virtualbox.org/manual/ch14.html#KnownProblems 既知の制限] が存在します。
どちらのパッケージも依存パッケージとして {{Pkg|virtualbox-guest-dkms}} をインストールします。{{ic|virtualbox-guest-dkms}} の virtualbox モジュールをコンパイルするには、インストールしたカーネルに適合するヘッダーパッケージが必要です [https://lists.archlinux.org/pipermail/arch-dev-public/2016-March/027808.html]:
 
   
  +
* '''RAW''': 特定のファイルフォーマットのコンテナに格納せず直接ディスクに仮想ディスクを配置するモードです。VirtualBox は複数の方法で RAW 機能をサポートしています: RAW ディスクを [https://www.virtualbox.org/manual/ch08.html#idp59139136 特定のフォーマット] に変換、[https://www.virtualbox.org/manual/ch08.html#vboxmanage-clonevdi ディスクを RAW にクローン]、あるいは物理ディスクやファイルを指し示す VMDK ファイルを直接使用する [https://www.virtualbox.org/manual/ch09.html#idp57804112]。
* {{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|
 
* ISO を使って、ホスト環境に {{Pkg|virtualbox-guest-iso}} パッケージをインストールして、Guest Additions をインストールすることもできます。その場合、デバイスメニューを開いて Insert Guest Additions CD Image をクリックしてください。
 
* vbox カーネルモジュールを再コンパイルするには、root で {{ic|rcvboxdrv}} を実行してください。
 
}}
 
   
  +
[https://www.virtualbox.org/manual/ch08.html#vboxmanage-clonemedium VBoxManage clonemedium] を使うことで VDI, VMDK, VHD, RAW を相互に変換することができます。
=== Virtualbox カーネルモジュールをロード ===
 
   
  +
$ VBoxManage clonemedium disk ''inputfile'' ''outputfile'' --format ''outputformat''
自動的にモジュールをロードするには {{ic|vboxservice}} サービスを[[有効化]]してください。モジュールをロードしてゲストのシステム時刻をホストと同期します。
 
   
  +
例えば VDI を VMDK に変換するには:
手動でモジュールをロードするには、次のコマンドを入力:
 
# modprobe -a vboxguest vboxsf vboxvideo
 
   
  +
$ VBoxManage clonemedium disk ''source.vdi'' ''destination.vmdk'' --format VMDK
起動時に VirtualBox モジュールをロードさせるには、[[カーネルモジュール#ロード]]を参照して以下の内容で {{ic|/etc/modules-load.d/}} に {{ic|*.conf}} ファイルを作成してください (例: {{ic|virtualbox.conf}}):
 
{{hc|/etc/modules-load.d/virtualbox.conf|
 
vboxguest
 
vboxsf
 
vboxvideo}}
 
   
  +
==== QCOW ====
VirtualBox で準仮想化を使用する場合、[[Systemd#ユニットファイルの編集|ユニットを編集]]して次のパラメータを使う必要があります: {{ic|1=
 
ConditionVirtualization=''paravirtualization''
 
}}。
 
   
  +
VirtualBox は [[QEMU]] の QCOW2 ディスクイメージフォーマットをサポートしていません。VirtualBox で QCOW2 ディスクイメージを使うには変換する必要があります。{{Pkg|qemu}} の {{ic|qemu-img}} コマンドを使うことで変換できます。{{ic|qemu-img}} は QCOW を VDI, VMDK, VHDX, RAW などのフォーマットに変換します ({{ic|qemu-img --help}} を実行することで変換可能なフォーマットを確認できます)。
コンソールで {{ic|systemd-detect-virt}} を実行すると準仮想化を確認できます。
 
   
  +
$ qemu-img convert -O ''output_fmt'' ''inputfile'' ''outputfile''
=== VirtualBox ゲストサービスを起動 ===
 
   
  +
例えば QCOW2 を VDI に変換するには:
VirtualBox カーネルモジュールのインストールが終わったら、ゲストサービスを起動する必要があります。ゲストサービスは {{ic|VBoxClient}} という名前のバイナリ実行ファイルであり X Window System と対話を行います。{{ic|VBoxClient}} は以下の機能を管理します:
 
* 共有クリップボードとホストとゲスト間のドラッグアンドドロップ。
 
* シームレスウィンドウモード。
 
* ゲストのウィンドウサイズに自動的にゲストの表示をリサイズ。
 
* VirtualBox ホストバージョンのチェック。
 
   
  +
$ qemu-img convert -O vdi ''source.qcow2'' ''destination.vdi''
これらの機能は全てフラグを使って個別・手動で有効にすることができます。
 
$ VBoxClient --clipboard --draganddrop --seamless --display --checkhostversion
 
   
  +
{{Tip|{{ic|-p}} パラメータを使うことで変換の進捗を確認できます。}}
ゲストサービスには他の機能もあります:
 
* ホストとゲスト間での時刻同期。
 
* ホストとゲスト間での読み取り専用・自動マウントの共有フォルダ。
 
   
  +
QCOW2 には 0.10 と 1.1 がありますが、{{ic|1=-o compat=''revision''}} でどちらを使うか指定できます。
今のところドキュメントになっていませんが VirtualBox には X11 サーバーが実際に動作中かどうか確認して全ての機能を自動的に有効にする Bash スクリプト {{ic|VBoxClient-all}} が入っています。
 
# VBoxClient-all
 
   
  +
=== 仮想ディスクのマウント ===
システムが起動した時に自動的にスクリプトを実行するには root で以下のコマンドを実行してください:
 
# systemctl enable vboxservice
 
   
  +
==== VDI ====
上記の 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}}
 
   
  +
VDI イメージのマウントは容量固定のイメージ (静的イメージ) でしか使えません。動的 (動的容量割当) イメージのマウントは簡単にできません。
これで、Arch Linux ゲストが動くようになったはずです。おめでとうございます。
 
   
  +
マウントするには (VDI 内の) パーティションのオフセットが必要です。それから {{ic|offData}} の値を {{ic|32256}} に追加してください (例: 69632 + 32256 = 101888):
ホストと Arch Linux ゲスト間でフォルダを共有したい場合は、次のセクションを読んで下さい。
 
   
  +
$ VBoxManage internalcommands dumphdinfo <storage.vdi> | grep "offData"
=== ハードウェアアクセラレーション ===
 
   
  +
そうしたら以下のコマンドでマウントできます:
ハードウェアアクセラレーションはホストコンピュータの VirtualBox のオプションから有効にできます。gdm ディスプレイマネージャ 3.16 以上はハードウェアアクセラレーションのサポートを破壊するので [https://bbs.archlinux.org/viewtopic.php?id=200025]、ハードウェアアクセラレーションに問題が発生する場合、別のディスプレイマネージャを使用することを推奨します (lightdm は問題なく動作します)。
 
   
  +
# mount -t ext4 -o rw,noatime,noexec,loop,offset=101888 <storage.vdi> /mntpoint/
=== 共有サービスの起動 ===
 
   
  +
[https://github.com/pld-linux/VirtualBox/blob/master/mount.vdi mount.vdi] スクリプトを使うこともできます (スクリプトを {{ic|/usr/bin/}} にインストールしてください):
上記の通り {{Pkg|virtualbox-guest-utils}} をインストールした後、{{ic|VBoxClient-all}} を使ってクリップボード共有、画面リサイズなどのサービスを起動してください。
 
* GNOME や KDE など、{{Ic|/etc/xdg/autostart/vboxclient.desktop}} を実行するものを使っている場合、なにもなさらなくて結構です。
 
* {{Ic|.xinitrc}} を使って実行する場合、{{Ic|.xinitrc}} で WM を起動する前に次の行を追加してください。
 
   
  +
# mount -t vdi -o fstype=ext4,rw,noatime,noexec ''vdi_file_location'' ''/mnt/''
# VBoxClient-all &
 
   
  +
もしくは {{Pkg|qemu}} のカーネルモジュールを使う方法もあります [http://bethesignal.org/blog/2011/01/05/how-to-mount-virtualbox-vdi-image/]:
=== USB ウェブカメラ/マイクロフォンを使う ===
 
   
  +
# modprobe nbd max_part=16
{{Note|以下の作業をする前に VirtualBox 拡張パックをインストールする必要があります。}}
 
  +
# qemu-nbd -c /dev/nbd0 <storage.vdi>
  +
# mount /dev/nbd0p1 /mnt/dir/
   
  +
アンマウントするには:
# 仮想マシンを止め、ウェブカメラ/マイクロフォンが使われていないのを確認します。
 
  +
# umount /mnt/dir/
# メイン VirtualBox ウィンドウを立ち上げ Arch マシンの設定に行き、USB セクションを見ます。
 
  +
# qemu-nbd -d /dev/nbd0
# "Enable USB Controller" を選択します。それから "Enable USB 2.0 (EHCI) Controller" を選択します。
 
# "Add filter from device" ボタンをクリック ('+' アイコンとケーブル)。
 
# リストから USB ウェブカメラ/マイクロフォンデバイスを選択する。
 
# OK をクリックして VM を起動。
 
   
  +
パーティションノードが反映されない場合、{{ic|partprobe /dev/nbd0}} を使ってみてください。VDI パーティションは直接ノードにマッピングすることもできます: {{ic|qemu-nbd -P 1 -c /dev/nbd0 <storage.vdi>}}。
== ゲスト側の Arch Linux の共有フォルダ ==
 
   
  +
==== VHD ====
共有フォルダはホスト側にある VirtualBox によって管理されます。共有フォルダが追加されると、自動でマウントされ読み込み専用になります。
 
VirtualBox から共有フォルダを作成すると {{Ic|/media/sf_''SHAREDFOLDERNAME''}} の中にとフォルダが設置されます。この時、ゲスト側の Arch の中のフォルダを使うには設定が必要になります。ゲスト側の Arch に共有フォルダを作成するには、pacman で Guest Additions パッケージをインストールした後、コマンドラインで以下を実行してください:
 
   
  +
VDI と同様に、VHD イメージも [[QEMU]] の nbd モジュールでマウントできます。
# groupadd vboxsf
 
# gpasswd -a $USER vboxsf
 
   
  +
# modprobe nbd
{{Note|'''自動マウント'''を機能させるには、'''vboxservice''' サービスを有効にする必要があります。次のセクションの説明を見て下さい。}}
 
  +
# qemu-nbd -c /dev/nbd0 ''storage''.vhd
  +
# mount /dev/nbd0p1 /mnt
   
  +
unmount は以下の通り。
望むなら、シンボリックを作って home ディレクトリにアクセスしやすくすることができます。例として、"Dropbox" という名の共有フォルダがホスト側の VirtualBox の中に作成されている場合、/media/sf_Dropbox をゲスト側に自動で作成するには次のようにしてください:
 
   
  +
# umount /mnt
$ ln -s /media/sf_Dropbox/* ~/dropbox
 
  +
# qemu-nbd -d /dev/nbd0
   
  +
=== 仮想ディスクの縮小 ===
Guest Additions iso が提供している .run スクリプトでも同じことができますが、Arch はこれを使うことを推奨しません、手動で行うべきだからです。このことについての提言はここで見られます: (pastebin: [http://pastebin.com/6cUE3kjF])。
 
   
  +
仮想ディスクの縮小は ''.vdi'' ファイルでしか行うことができません。
共有フォルダが自動でマウントされない場合、[https://bbs.archlinux.org/viewtopic.php?id=70780 手動でマウント]するか次のセクションを読んで下さい。
 
   
  +
仮想マシンを起動して無駄なファイルを削除してください。{{Pkg|bleachbit}} などのツールを使うことができます ([http://bleachbit.sourceforge.net/download/windows Windows でも利用できます])。
[[systemd]] を使うと起動時に問題が起こる時は、{{ic|/etc/fstab}} に {{ic|1=comment=systemd.automount}} を加えて下さい。こうすると、スタートアップ時ではなくマウントポイントにアクセスしたときに共有フォルダがマウントされます。さもなければカーネルアップデート後にシステムが使えなくなるかもしれません(guest additions を手動でインストールした場合)。
 
   
  +
空き領域をゼロ埋めするツールは複数存在します:
''sharedFolderName'' ''/path/to/mntPtOnGuestMachine'' vboxsf  uid=''user'',gid=''group'',rw,dmode=700,fmode=600,comment=systemd.automount 0 0
 
  +
* Bleachbit を使用する場合、GUI で ''System > Free disk space'' にチェックを入れるか、CLI で {{ic|bleachbit -c system.free_disk_space}} を使ってください。
  +
* UNIX ベースの環境の場合、{{ic|dd}} または {{AUR|dcfldd}} を使います (違いについては [http://superuser.com/a/355322 こちら] を参照):
  +
:{{bc|1=# dcfldd if=/dev/zero of=''/fillfile'' bs=4M}}
  +
:{{ic|fillfile}} がパーティションの上限に達すると、{{ic|1280 blocks (5120Mb) written.dcfldd:: No space left on device}} というメッセージが表示されます。ユーザースペースと予約ブロック以外が全てゼロで埋められたということになります。全ての空きブロックを上書きするために root でコマンドを実行してください。ext ファイルシステムを使っている場合、デフォルトではファイルシステムブロックの数パーセントがスーパーユーザー用に予約されています ([[Ext4#予約ブロック]]を参照)。
  +
:ゼロ埋めが完了したら、作成された {{ic|''fillfile''}} ファイルを削除してください。
   
  +
* Windows の場合、以下のツールが存在します:
* {{ic|''sharedFolderName''}}: 仮想マシンの ''Settings > SharedFolders > Edit > FolderName'' メニューの値。ホストマシンの実際のフォルダ名とは違う可能性があります。仮想マシンの ''Settings'' を確認するには、ホスト OS の VirtualBox アプリケーションから、適切な仮想マシンを選択して ''Settings'' をクリックしてください。
 
  +
:*[http://technet.microsoft.com/en-us/sysinternals/bb842062.aspx Sysinternals Suite] の {{ic|sdelete}} を使う場合、仮想マシンに存在するドライブごとに {{ic|sdelete -s -z ''c:''}} を実行してください。
* {{ic|''/path/to/mntPtOnGuestMachine''}}: 存在しない場合、このディレクトリは手動で作成する必要があります ([[Core Utilities#mkdir|mkdir]] などを使用)。
 
  +
:* スクリプトを使いたい場合、[http://blog.whatsupduck.net/2012/03/powershell-alternative-to-sdelete.html PowerShell を使う方法] が存在します (全てのドライブで繰り返してください)。
* {{ic|dmode}}/{{ic|fmode}} は {{ic|''/path/to/mntPtOnGuestMachine''}} のなかのディレクトリやファイルのパーミッションです。
 
  +
::{{bc|PS> ./Write-ZeroesToFreeSpace.ps1 -Root ''c:\'' -PercentFree 0}}
  +
::{{Note|上記のスクリプトは PowerShell で管理者権限を使って実行する必要があります。デフォルトではスクリプトは実行できません。{{ic|Get-ExecutionPolicy}} で実行ポリシーを確認してください。ポリシーは {{ic|Set-ExecutionPolicy RemoteSigned}} で設定できます。}}
   
  +
空きディスク領域を消去できたら、仮想マシンをシャットダウンしてください。
2012年8月2日現在、{{ic|mount.vboxsf}} は {{ic|nofail}} オプションに対応していません:
 
   
  +
仮想マシンを起動したら、ファイルシステムのチェックを実行することを推奨します。
''desktop'' ''/media/desktop'' vboxsf uid=''user'',gid=''group'',rw,dmode=700,fmode=600,nofail 0 0
 
  +
* UNIX ベースのシステムの場合、{{ic|fsck}} を手動で使うことができます。
  +
:* [[Fsck#強制的にチェック|カーネルパラメータ]]を設定することで起動時に強制的にディスクチェックを行うことができます。
  +
* Windows システムの場合:
  +
:* {{ic|chkdsk ''c:'' /F}} を実行する ({{ic|''c:''}} はスキャンを行いたいディスクに置き換えてください)。
  +
:* [http://therightstuff.de/2009/02/14/ChkDskAll-ChkDsk-For-All-Drives.aspx こちら] の {{ic|FsckDskAll}} を使う。{{ic|chkdsk}} と基本的に同じソフトウェアですが、全てのドライブで繰り返し実行する必要がありません。
   
  +
[https://www.virtualbox.org/manual/ch08.html#vboxmanage-modifymedium VBoxManage modifymedium] を使って ''.vdi'' からゼロ領域を削除:
=== ゲストの時刻をホストに同期させる ===
 
  +
$ VBoxManage modifymedium disk ''your_disk.vdi'' --compact
   
  +
{{Note|仮想マシンにスナップショットが存在する場合、存在する {{ic|.vdi}} ファイルごとに上記のコマンドを実行してください。}}
時刻を同期させるには、まずホスト側に {{Pkg|virtualbox-guest-utils}} をインストールする必要があります([[#Guest Additions をインストール|前のセクション]]を見て下さい)。それから次を実行して次のブート時にサービスを有効にします
 
# systemctl enable vboxservice.service
 
   
  +
=== 仮想ディスクの拡大 ===
今すぐサービスを開始するには
 
# systemctl start vboxservice.service
 
   
  +
==== 一般的な方法 ====
共有フォルダの自動マウント機能を使うときにもこのデーモンを起動する必要があります。
 
   
  +
仮想マシンを作成したときに選択したハードドライブのサイズが小さすぎて、容量一杯まで使い切ってしまった場合、VirtualBox マニュアルでは [https://www.virtualbox.org/manual/ch08.html#vboxmanage-modifymedium VBoxManage modifymedium] を使うことが推奨されています。しかしながら、このコマンドは VDI と VHD ディスクで動的にサイズを割り当てているときしか機能しません。固定サイズの仮想ディスクのサイズを変更したい場合、以下の手順に従ってください。
== トラブルシューティング ==
 
   
  +
まず、拡大したいディスクのとなりに新しく仮想ディスクを作成:
=== VERR_ACCESS_DENIED ===
 
   
  +
$ VBoxManage createmedium disk -filename ''new.vdi'' --size ''10000''
windows ホストにある raw vmdk イメージにアクセスするには、管理者として VirtualBox GUI を起動してください。
 
   
  +
サイズは MiB で指定します。例えば 10000MiB ~= 10GiB です。''new.vdi'' は新しく作成するハードドライブの名前になります。
=== modprobe Exec フォーマットエラー ===
 
   
  +
{{Note|デフォルトでは、このコマンドは標準(動的割り当てに対応する)ファイル形式のバリアントを使用するためソースの仮想ディスクと同じファイル形式のバリアントは使用されません。 old.vdi のサイズが固定されていてこのバリアントを保持したい場合は、パラメーターを追加します {{ic|--variant Fixed}}.}}
あなたのシステムを最新状態にしてください:
 
pacman -Syu
 
   
  +
次に、古い仮想ディスクを新しい仮想ディスクに複製します (しばらく時間がかかります):
=== VBOX_E_INVALID_OBJECT_STATE (0x80BB0007) ===
 
   
  +
$ VBoxManage clonemedium disk ''old.vdi'' ''new.vdi'' --existing
これは VM を正常終了しないと発生することがあります。VM をアンロックしてください:
 
VBoxManage controlvm nArch poweroff
 
   
  +
古いハードドライブを取り外して新しいドライブを接続してください (斜体の引数は適当な文字列に置き換えてください):
=== USB サブシステムがホスト側もしくはゲスト側で動かない ===
 
   
  +
$ VBoxManage storageattach ''VM_name'' --storagectl ''SATA'' --port ''0'' --medium none
時々 usb サブシステムが自動で検知されずホスト側の USB ドライブが表示されなかったりエラーが出ることがあります (例: Could not load the Host USB Proxy service: VERR_NOT_FOUND)。これはユーザーが '''vboxusers''' グループになっていても起こります。詳しくは [https://bbs.archlinux.org/viewtopic.php?id=125785] を見て下さい。
 
  +
$ VBoxManage storageattach ''VM_name'' --storagectl ''SATA'' --port ''0'' --medium ''new.vdi'' --type hdd
   
  +
ストレージコントローラとポート番号を確認するには、{{ic|VBoxManage showvminfo ''VM_name''}} コマンドを使います。以下のように出力されます (斜字に注目):
{{Ic|~/.bashrc}} に以下を加え再起動するか新しいインスタンスを開始すれば USB サブシステムが動作します。
 
   
  +
{{bc|
VBOX_USB=usbfs
 
  +
[...]
  +
Storage Controller Name (0): IDE
  +
Storage Controller Type (0): PIIX4
  +
Storage Controller Instance Number (0): 0
  +
Storage Controller Max Port Count (0): 2
  +
Storage Controller Port Count (0): 2
  +
Storage Controller Bootable (0): on
  +
Storage Controller Name (1): SATA
  +
Storage Controller Type (1): IntelAhci
  +
Storage Controller Instance Number (1): 0
  +
Storage Controller Max Port Count (1): 30
  +
Storage Controller Port Count (1): 1
  +
Storage Controller Bootable (1): on
  +
IDE (1, 0): Empty
  +
''SATA'' (''0'', 0): /home/wget/IT/Virtual_machines/GNU_Linux_distributions/ArchLinux_x64_EFI/Snapshots/{6bb17af7-e8a2-4bbf-baac-fbba05ebd704}.vdi (UUID: 6bb17af7-e8a2-4bbf-baac-fbba05ebd704)
  +
[...]
  +
}}
   
  +
[http://gparted.org/download.php GParted live イメージ] をダウンロードして仮想 CD/DVD ディスクファイルとしてマウントし、仮想マシンを起動して、パーティションを拡大・移動してください。そして GParted live をアンマウントして再起動してください。
また、あなたのユーザーを '''storage''' グループのメンバーに追加してください。
 
   
  +
{{Note|GPT ディスクの場合、ディスクの容量を増やすとバックアップ GPT ヘッダーがディスクの末尾ではなくなります。GParted は修正するかどうか聞いてくるので ''Fix'' をクリックしてください。MBR ディスクの場合、ディスクの末尾にヘッダーは存在しないため問題は起こりません。}}
=== ホストオンリーのネットワークインターフェースを作成できない ===
 
   
  +
最後に、VirtualBox から仮想ディスクの登録を解除してファイルを削除してください:
Host-Only Network Adapter や Bridged Network Adapter を作るためには、カーネルモジュールの {{ic|vboxnetadp}} と {{ic|vboxnetflt}} をロードする必要があります。また、{{pkg|net-tools}} パッケージがインストールされているか確認してください。これらのカーネルモジュールを手動でロードするには:
 
   
  +
$ VBoxManage closemedium disk ''old.vdi''
# modprobe -a vboxnetadp vboxnetflt
 
  +
$ rm ''old.vdi''
   
  +
==== VDI ディスクの容量を拡大 ====
起動時に自動でロードするには {{ic|/etc/modules-load.d/virtualbox.conf}} にモジュール毎に新しい行を追加してください:
 
   
  +
仮想ディスクが VDI の場合、以下のコマンドを実行:
vboxdrv
 
vboxnetadp
 
vboxnetflt
 
   
  +
$ VBoxManage modifymedium disk ''your_virtual_disk.vdi'' --resize ''the_new_size''
{{Note|These used to be added to the {{ic|MODULES}} array in {{ic|/etc/rc.conf}}. This is now deprecated.}}
 
   
  +
実行したら上記と同じように Gparted を使ってパーティションのサイズを変更してください。
このトピックについて詳しい情報が[https://bbs.archlinux.org/viewtopic.php?id=130581 ここ]にあります。
 
   
  +
=== .vbox ファイルから仮想ディスクを手動で交換 ===
=== WinXP: ビット深度を 16 より上げることができない ===
 
   
  +
GUI や {{ic|VBoxManage}} を使うよりも ''XML'' ファイルを編集するほうが簡単だという場合、仮想マシンの ''.vbox'' ファイルで仮想ディスクを交換(あるいは追加)することができます。GUID とフォーマットを必要に応じて置き換えるだけです:
16-ビット色深度で動作させている場合、アイコンの見た目が毛羽立ったりむらがでるかもしれません。しかし、色深度をもっと高く変えようとすると、システムの解像度が低くなってしまったり、もしくは全く深度が変えられないかもしれません。これを修正するには、{{ic|regedit}} を起動し次のキーをゲスト側の Windows XP レジストリに追加します:
 
   
  +
{{hc|ArchLinux_vm.vbox|2=
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services]
 
  +
<HardDisk uuid="''{670157e5-8bd4-4f7b-8b96-9ee412a712b5}''" location="''ArchLinux_vm.vdi''" format="''VDI''" type="Normal"/>
"ColorDepth"=dword:00000004
 
  +
}}
   
  +
{{ic|<StorageController>}} のサブタグ {{ic|<AttachedDevice>}} の GUID も新しく置き換えてください:
それからデスクトップのプロパティウィンドウから色深度を変えてください。何も怒らない場合、強制的に画面を再描写させてください(つまり、{{ic|Host+F}} で再描写するか、フルスクリーンにしてください)。
 
   
  +
{{hc|ArchLinux_vm.vbox|2=
=== .vdi イメージのマウント ===
 
  +
<AttachedDevice type="HardDisk" port="0" device="0">
  +
<Image uuid="''{670157e5-8bd4-4f7b-8b96-9ee412a712b5}''"/>
  +
</AttachedDevice>
  +
}}
   
  +
{{Note|追加するドライブの GUID がわからない場合は、{{ic|VBoxManage showhdinfo ''file''}} を使用できます。 以前に {{ic|VBoxManage clonemedium}} を使用して仮想ディスクをコピー/変換した場合、このコマンドは、コピー/変換が完了した直後に GUID を出力するはずです。 ランダムなGUIDを使用しても機能しません。 [http://www.virtualbox.org/manual/ch05.html#cloningvdis UUID is stored inside each disk image].}}
以下の方法では'''静的な'''サイズの vdi イメージしか動きません!動的なサイズのイメージは'''簡単にはマウントできません'''!まず .vdi イメージの情報が必要です:
 
   
  +
==== Linux ホストと他のホスト間で転送 ====
$ VBoxManage internalcommands dumphdinfo Arch_64min.vdi |grep offData
 
Header: offBlocks=4096 offData=69632
 
   
  +
ハードディスクとスナップショットが保存されるパスの情報は ''.vbox'' 拡張子のファイルの {{ic|<HardDisks> .... </HardDisks>}} タグにあります。手動で編集したりスクリプトを使うことで必要な変更を行うことができます。
ここで、{{ic|offData}} に 32256 を'''加算してください'''。例: 32256 + 69632 = 101888
 
   
  +
{{bc|1=
そして vdi イメージをマウントします:
 
  +
#!/bin/bash
  +
NewPath="${PWD}/"
  +
Snapshots="Snapshots/"
  +
Filename="$1"
   
  +
awk -v SetPath="$NewPath" -v SnapPath="$Snapshots" '{if(index($0,"<HardDisk uuid=") != 0){A=$3;split(A,B,"=");
# mount -t ext4 -o rw,noatime,noexec,loop,offset=101888 Arch_64min.vdi /mnt/
 
  +
L=B[2];
  +
gsub(/\"/,"",L);
  +
sub(/^.*\//,"",L);
  +
sub(/^.*\\/,"",L);
  +
if(index($3,"{") != 0){SnapS=SnapPath}else{SnapS=""};
  +
print $1" "$2" location="\"SetPath SnapS L"\" "$4" "$5}
  +
else print $0}' "$Filename"
  +
}}
   
  +
{{Note|
=== マウント失敗によるスタートアップ時の問題 ===
 
  +
* Windows ホストで使用する仮想マシンを準備する場合は、パス名の末尾に/ではなくバックスラッシュ\を使用する必要があります。
  +
*スクリプトは、ファイル名で {{ic|{}} を検索してスナップショットを検出します。
  +
*新しいホストで実行するには、まず ''Machine -> Add...'' をクリックしてレジスタに追加するか、ホットキー Ctrl + A を使用して 設定も含む ".vbox" を参照するか。コマンドライン {{ic|VBoxManage registervm "filename" '.vbox を使用します。}}
  +
}}
   
  +
=== 仮想ディスクを複製して新しい UUID を割り当てる ===
カーネルをアップグレードした後、[[systemd]] セットアップで問題が発生したら、システムを起動するときに ''init=/bin/bash'' (緊急シェルが動かない場合) を付ける必要があります。
 
   
  +
UUID は VirtualBox で広く使われています。仮想マシンと仮想ディスクにはそれぞれ異なる UUID が存在します。VirtualBox で仮想マシンを起動すると、VirtualBox は仮想マシンのインスタンスの全ての UUID を記録します。VirtualBox で登録されるアイテムを確認するには [http://www.virtualbox.org/manual/ch08.html#vboxmanage-list VBoxManage list] を参照してください。
root=/dev/mapper/vg_main-lv_root ro vga=792 resume=/dev/mapper/vg_main-lv_swap init=/bin/bash
 
   
  +
仮想ディスクファイルを手動でコピーして仮想ディスクを複製した場合、同じ仮想マシンでディスクを使うときは複製した仮想ディスクに新しい UUID を割り当てる必要があります。
それから ''root''-ファイルシステムを書き込み権限付きでマウントします:
 
   
  +
以下のコマンドを使って新しい UUID を仮想ディスクに割り当てられます:
# mount / -o remount,rw
 
  +
$ VBoxManage internalcommands sethduuid ''/path/to/disk.vdi''
   
  +
{{Tip|[http://www.virtualbox.org/manual/ch08.html#vboxmanage-clonevdi VBoxManage clonemedium] を使用する場合は手動で UUID を新しく割り当てる必要はありません。}}
[[#ゲスト側の Arch Linux の共有フォルダ]] に合わせて /etc/fstab を変更します。そして bash シェルから systemd を exec します:
 
   
  +
{{Note|上記のコマンドは [[#VirtualBox によってサポートされているフォーマット|VirtualBox によってサポートされている仮想ディスクフォーマット]]を全てサポートしています。}}
# exec /bin/systemd
 
   
  +
== ヒントとテクニック ==
=== ゲスト側の Arch Linux でコピーアンドペーストが機能しない ===
 
   
  +
高度な設定については、[[VirtualBox/ヒントとテクニック]] を見てください。
{{ic|virtualbox-guest-additions}} がバージョン {{ic|4.2.0-2}} にアップデートされてからホスト OS からゲスト側の Arch Linux へのコピーアンドペーストができなくなりました。{{ic|VBoxClient-all}} に ''root'' 権限が必要なったためだと思われます。以前のバージョンでは ''VBoxClient-all &'' を ''~/.xinitrc'' に追加しておけばコピーアンドペーストが機能していました。''~/.xinitrc'' を {{ic|sudo VBoxClient-all &}} にして {{ic|, 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 を編集する時は {{ic|visudo}} を使って下さい。保存するときに構文エラーをチェックします。}}
 
   
  +
これは、仮想マシンがキーボードとマウスの入力をキャプチャしたことを意味します。右の {{ic|Ctrl}} キーを押すだけで、入力は再びホストを制御することができます。
=== ゲスト 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
 
   
  +
キーを押すことなくマウスでホストを行ったり来たりして仮想マシンを透過的にコントロールし、シームレスに統合するには、guest addtions をゲスト内にインストールします。[[VirtualBox/Arch Linux をゲストにする#Guest Additions をインストール]]を読んで下さい、あなたのゲストが Arch Linux ならば、公式の VirtualBox ヘルプを読んで下さい。
それからユーザーを '''uucp''' グループに追加して:
 
# gpasswd -a $USER uucp
 
ログインしなおして下さい。
 
   
  +
=== 64ビット OS のクライアントオプションが表示されない ===
=== Windows 8.x Error Code 0x000000C4===
 
   
OS Type で Win 8選んだのに、起動以下のエラーコード表示される場合、{{ic|CMPXCHG16B}} CPU 命令を有効化してください:
+
VM クライアントを起動したとき、64ビットオプション使えない場合、CPU の仮想化機能 ({{ic|VT-x}}) BIOS で有効になっいることを確認してください
   
  +
Windows をホストとして使っている場合、Hyper-V を無効化する必要があります。Hyper-V が有効になっていると VirtualBox が VT-x を使えなくなります [https://www.virtualbox.org/ticket/12350]。
$ vboxmanage setextradata ''virtual_machine_name'' VBoxInternal/CPUM/CMPXCHG16B 1
 
   
=== Windows 8, 8.1, 10インストール・起動できない、あるいは "ERR_DISK_FULL" エラーが表示される ===
+
=== VirtualBox GUIストの GTK テマと一致しない ===
''Settings > Storage > Controller:SATA'' から "Use Host I/O Cache" にチェックを入れて VM の設定を更新してください。
 
   
  +
VirtualBox のような Qt ベースのアプリケーションのテーマ化に関する情報については、[[Qt と GTK アプリケーションの外観の統合]]を参照してください。
=== Linux ゲストの音が遅い/早い ===
 
   
  +
=== Ctrl+Alt+Fn をゲストに送信できない ===
Linux カーネルの AC97 ドライバーは Virtual Box の中で実行されたときに、クロック設定を間違って認識することがあり、それによって音が遅くなったり早回しになったりします。この問題を修正するには、以下の内容で {{ic|/etc/modprobe.d}} にファイルを作成してください:
 
   
  +
ゲスト OS が GNU/Linux ディストリビューションで、{{ic|Ctrl+Alt+F2}} で新しい TTY シェルを開きたい、または {{ic|Ctrl+Alt+Backspace}} で現在の X セッションを終了したい場合、これらのキーボードショートカットを適応させずに入力すると、ゲストは入力を受け取らず、ホスト (GNU/Linux ディストリビューションの場合) はこれらのショートカットキーをインターセプトしてしまいます。例えば {{ic|Ctrl+Alt+F2}} をゲストに送るには、単にあなたの ''Host Key'' (通常は右の {{ic|Ctrl}} キー) と {{ic|F2}} を同時に押してください。
options snd-intel8x0 ac97_clock=48000
 
   
=== Xorg の起動後にゲストがフリーズする ===
+
=== USB サブシステムがホスト側もしくはゲスト側で動かない ===
   
  +
時々 usb サブシステムが自動で検知されずホスト側の USB ドライブが表示されなかったりエラーが出ることがあります (例: Could not load the Host USB Proxy service: VERR_NOT_FOUND)。これはユーザーが '''vboxusers''' グループになっていても起こります。詳しくは [https://bbs.archlinux.org/viewtopic.php?id=125785] を見て下さい。
間違ったドライバーを使っている、あるいはドライバーが存在しない場合、Xorg の起動後にゲストはフリーズします。[https://bbs.archlinux.org/viewtopic.php?pid=1167838] や [https://bbs.archlinux.org/viewtopic.php?id=156079] を見てください。''Settings > Display'' から 3D アクセラレーションを無効化して、[[Xorg]] ドライバーが全てインストールされていることを確認してください。
 
  +
  +
{{Ic|~/.bashrc}} に以下を加え再起動するか新しいインスタンスを開始すれば USB サブシステムが動作します。
  +
  +
VBOX_USB=usbfs
  +
  +
また、あなたのユーザーを '''storage''' グループのメンバーに追加してください。
  +
  +
=== USB モデム ===
  +
  +
USB モデムをゲスト OS で使っている場合、ゲスト OS を終了するとホスト環境からモデムが使えなくなることがあります。{{ic|VBoxSVC}} を終了・再起動すれば問題は解決します。
  +
  +
=== USBデバイスがゲストをクラッシュさせる ===
  +
  +
USB デバイスをゲストに取り付けるとクラッシュやその他の異常な動作が発生する場合は、USB コントローラを USB 2 (EHCI)から USB 3 (xHCI)、またはその逆に切り替えてみてください。
  +
  +
=== 仮想マシン起動時にホストがフリーズする ===
  +
  +
一般的に、VirtualBox や Linux カーネルをアップグレードした後に、このような問題が発生することがあります。これらを以前のバージョンにダウングレードすると解決する場合があります。
  +
  +
=== ゲストでアナログマイクロフォンが使えない ===
  +
  +
アナログマイクロフォンからの音声入力がホストでは上手く出来るのに、ゲストでは音声が録音できない場合、ホストに [[PulseAudio]] などの[[サウンドシステム#サウンドサーバー|サウンドサーバー]]をインストールすることで問題は解決します。
  +
  +
==== アップグレード後に音声入力 (マイクロフォン) が使えなくなった ====
  +
  +
5.1.x バージョンには音声入力まわりに問題が存在しています [https://forums.virtualbox.org/viewtopic.php?f=7&t=78797]。
  +
  +
VirtualBox を[[ダウングレード]]することで問題は解決します。
  +
  +
=== ISO に変換されたイメージに関する問題 ===
  +
  +
一部のイメージ形式は、確実に ISO に変換できません。たとえば、{{Pkg|ccd2iso}} は .ccd および .sub ファイルを無視するため、破損したファイルを含むディスクイメージが作成される可能性があります。
  +
  +
この場合、VirtualBox 内で [[CDemu]] for Linux を使用するか、ディスク イメージのマウントに使用する他のユーティリティを使用する必要があります。
  +
  +
=== ホストオンリーのネットワークインターフェースを作成できない ===
  +
  +
Host-Only Network Adapter や Bridged Network Adapter を作るためには、カーネルモジュールの {{ic|vboxnetadp}} と {{ic|vboxnetflt}} をロードする必要があります。また、{{pkg|net-tools}} パッケージがインストールされているか確認してください。これらのカーネルモジュールを手動でロードするには:
  +
  +
# modprobe -a vboxnetadp vboxnetflt
  +
  +
起動時に自動でロードするには {{ic|/etc/modules-load.d/virtualbox.conf}} にモジュール毎に新しい行を追加してください:
  +
  +
vboxdrv
  +
vboxnetadp
  +
vboxnetflt
  +
  +
{{Note|これらは、以前は {{ic|/etc/rc.conf}} の {{ic|MODULES}} 配列に追加されていましたが、現在は廃止されました。}}
  +
  +
このトピックについて詳しい情報が[https://bbs.archlinux.org/viewtopic.php?id=130581 ここ]にあります。
  +
  +
=== Failed to insert module ===
  +
  +
モジュールをロードしようとすると以下のような問題が発生する場合:
  +
Failed to insert 'vboxdrv': Required key not available
  +
モジュールが署名されていること、あるいはカーネルコンフィグで {{ic|CONFIG_MODULE_SIG_FORCE}} が無効になっていることを確認してください。
  +
  +
=== VBOX_E_INVALID_OBJECT_STATE (0x80BB0007) ===
  +
  +
これは VM を正常終了しないと発生することがあります。VM をアンロックしてください:
  +
VBoxManage controlvm nArch poweroff
   
 
=== "NS_ERROR_FAILURE" が表示されメニューアイテムが表示されない ===
 
=== "NS_ERROR_FAILURE" が表示されメニューアイテムが表示されない ===
424行目: 466行目:
 
新しい仮想ディスクを作成するときに ''QCOW''/''QCOW2''/''QED'' ディスク形式を選択すると時々発生します。
 
新しい仮想ディスクを作成するときに ''QCOW''/''QCOW2''/''QED'' ディスク形式を選択すると時々発生します。
   
  +
=== 仮想化命令が使用できない場合の OpenBSD の使用不可 ===
=== USB モデム ===
 
   
  +
OpenBSD は、仮想化命令 (VT-x AMD-V) が有効になっていない他のハイパーバイザー上では正常に動作すると報告されていますが、これらの命令がない VirtualBox 上で実行される OpenBSD 仮想マシンは、 多くのセグメンテーションフォールトを発生させて使用不能になるでしょう。VirtualBox を ''-norawr0'' 引数で起動すれば、[https://www.virtualbox.org/ticket/3947 この問題は解決するかも]しれません。このようにしてみてください。
USB モデムをゲスト OS で使っている場合、ゲスト OS を終了するとホスト環境からモデムが使えなくなることがあります。{{ic|VBoxSVC}} を終了・再起動すれば問題は解決します。
 
  +
  +
$ VBoxSDL -norawr0 -vm ''name_of_OpenBSD_VM''
   
 
=== Windows ゲストで "The specified path does not exist. Check the path and then try again." エラー ===
 
=== Windows ゲストで "The specified path does not exist. Check the path and then try again." エラー ===
436行目: 480行目:
 
# 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" を追加
 
# 起動 -> "gpedit.msc" と入力してエンター -> Computer Configuration -> Administrative Templates -> Windows Components -> Internet Explorer -> Internet Control Panel -> Security Page -> Size to Zone Assignment List -> "VBOXSVR" を "2" に追加して再起動
 
   
  +
インターネット上には信頼されるサイトのリストに VBOXSVR を追加するように書かれていることもありますが、その方法は Windows 7 以上では上手く行きません。
=== 64ビット OS のクライアントオプションが表示されない ===
 
   
  +
=== Windows 8.x Error Code 0x000000C4===
VM クライアントを起動したときに、64ビットオプションが使えない場合、CPU の仮想化機能 ({{ic|VT-x}}) が BIOS で有効になっていることを確認してください。
 
   
  +
OS Type で Win 8 を選んだのに、起動時に以下のエラーコードが表示される場合、{{ic|CMPXCHG16B}} CPU 命令を有効化してみてください:
=== 仮想マシンが起動するとホスト OS がフリーズする ===
 
   
  +
$ vboxmanage setextradata ''virtual_machine_name'' VBoxInternal/CPUM/CMPXCHG16B 1
原因と解決方法:
 
* SMAP
 
SMAP が有効になっているカーネルでは Intel Broadwell の大抵のチップセットで動作しないという既知の問題があります。問題は調査中ですが、問題を解決するとうたわれている様々な vboxhost モジュールが世に出回っています。これを書いている時点では、100% 完全に解決できるという方法は、カーネルブートコマンドラインに "nosmap" オプションを追加して SMAP を無効にする方法しかありません。
 
* ハードウェア仮想化
 
ハードウェア仮想化 (VT-x/AMD-V) を無効化することで問題が解決する場合があります。
 
* 様々なカーネルバグ
 
** Fuse でマウントしたパーティション (ntfs など) [https://bbs.archlinux.org/viewtopic.php?id=185841], [https://bugzilla.kernel.org/show_bug.cgi?id=82951#c12]
 
   
  +
=== Windows 8, 8.1, 10 がインストール・起動できない、あるいは "ERR_DISK_FULL" エラーが表示される ===
通常、上記のような問題は VirtualBox や Linux カーネルのアップデートで発生します。前のバージョンにダウングレードすることで解決するかもしれません。
 
  +
''Settings > Storage > Controller:SATA'' から "Use Host I/O Cache" にチェックを入れて VM の設定を更新してください。
   
  +
=== WinXP: ビット深度を 16 より上げることができない ===
=== 起動時に終了コード 1 (0x1) で仮想マシンが終了してしまう ===
 
   
  +
16-ビット色深度で動作させている場合、アイコンの見た目が毛羽立ったりむらがでるかもしれません。しかし、色深度をもっと高く変えようとすると、システムの解像度が低くなってしまったり、もしくは全く深度が変えられないかもしれません。これを修正するには、{{ic|regedit}} を起動し次のキーをゲスト側の Windows XP レジストリに追加します:
仮想マシンを起動すると、以下のようなエラーメッセージが表示される場合:
 
   
  +
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services]
{{bc|The virtual machine has terminated unexpectedly during startup with exit code 1 (0x1)
 
  +
"ColorDepth"=dword:00000004
NS_ERROR_FAILURE 0x80004005
 
Component: MachineWrap
 
Interface: IMachine}}
 
   
  +
それからデスクトップのプロパティウィンドウから色深度を変えてください。何も怒らない場合、強制的に画面を再描写させてください(つまり、{{ic|Host+F}} で再描写するか、フルスクリーンにしてください)。
上記の問題は {{Pkg|virtualbox}} や {{Pkg|virtualbox-host-modules}} パッケージのアップデートによって引き起こされることがあります。{{ic|vboxdrv}} モジュールをリロードしてください:
 
   
  +
=== Windows: 3D アクセラレーションが有効な場合の画面のちらつき ===
{{bc|# modprobe -r vboxdrv
 
# modprobe vboxdrv
 
}}
 
   
  +
VirtualBox > 4.3.14 には、3D アクセラレーションを使用する Windows ゲストがちらつくリグレッションがあります。r120678 以降、[[環境変数]]の設定を認識するパッチが実装されているため、次のように VirtualBox を起動します。
=== ゲストでアナログマイクロフォンが使えない ===
 
   
  +
$ CR_RENDER_FORCE_PRESENT_MAIN_THREAD=0 VirtualBox
アナログマイクロフォンからの音声入力がホストでは上手く出来るのに、ゲストでは音声が録音できない場合、ホストに [[PulseAudio]] などの[[サウンドシステム#サウンドサーバー|サウンドサーバー]]をインストールすることで問題は解決します。
 
   
  +
VirtualBox サービスがまだ実行されていないことを確認します。[https://www.virtualbox.org/ticket/13653 VirtualBox bug 13653] を参照してください。
== 外部リンク ==
 
  +
  +
=== Wayland で VirtualBox を起動できない: Segmentation fault ===
  +
  +
この問題は、Qt が Wayland を検出する (例えば、{{ic|1=XDG_SESSION_TYPE=wayland}})一方で、VirtualBox がまだ Wayland で動作しないために発生します。{{Bug|58761}} と [https://www.virtualbox.org/ticket/18679 upstream bug] を参照してください。
  +
  +
[[環境変数]] {{ic|1=QT_QPA_PLATFORM=xcb}} を設定することで、Qt のプラットフォーム検出を無効にし、Wayland 上で X11 を強制的に動作させることができます。他の Qt アプリケーション (通常は Wayland でうまく動作する) に影響を与えないように、{{ic|1=QT_QPA_PLATFORM=xcb}} は VirtualBox 起動時のみ設定されるべきです。
  +
  +
[[デスクトップエントリ]]から起動する場合は、[[デスクトップエントリ#環境変数の修正]]の指示に従い、{{ic|1=Exec=VirtualBox ...}} で始まる行を {{ic|1=Exec=env QT_QPA_PLATFORM=xcb VirtualBox ...}} に変更してください。シェルから起動する場合は、エイリアス([[Bash#エイリアス]]) を {{ic|virtualbox}} から {{ic|1=env QT_QPA_PLATFORM=xcb virtualbox}} に変更します。
  +
  +
{{Note|Wayland でマウスやキーボードに問題がある場合は、上記の設定もお試しください。}}
  +
  +
=== Intel グラフィックスを使用したゲストでのランダムフリーズ ===
  +
  +
Intel CPU およびグラフィックスでは、ゲストに多くのプロセッサを割り当てるとレンダリングパフォーマンスが低下し、ランダムフリーズが発生する可能性があります。より少ないプロセッサまたは 1 つのプロセッサを割り当てることで解決できます。
  +
  +
=== フルスクリーンモードでゲストの画面が表示されない ===
  +
  +
ウィンドウマネージャによっては (例: [[i3]])、オーバーレイバーが原因で VirtualBox のフルスクリーンモードで問題が発生します。この問題を回避するには、"Guest Settings --> User Interface --> Mini ToolBar" から "Show in Full-screen/Seamless" オプションを無効にしてください。詳しくは [https://www.virtualbox.org/ticket/14323 上流のバグレポート] を参照。
  +
  +
=== Intel Tiger Lake チップセット搭載の Windows 10 ゲスト OS でランダムクラッシュが発生する ===
  +
  +
[[カーネルパラメータ]]に {{ic|1=split_lock_detect=off}} を追加して、スプリットロック検出を無効にする。
  +
  +
詳細は VirtualBox の [https://www.virtualbox.org/ticket/20180/#comment:8 Ticket #20180] に記載されています。
  +
  +
=== 第11世代Intel CPUでの仮想マシン起動時のフリーズ ===
  +
  +
{{ic|1=traps: Missing ENDBR}} と {{ic|1=kernel BUG at arch/x86/kernel/traps.c}} というメッセージが [[journal]] に表示されたら、[[カーネルパラメータ]]として {{ic|1=ibt=off}} を追加してみるとよいでしょう。{{Bug|74891}} にリンクしているようです。
  +
  +
=== セキュアブートを有効にすると、設定の保存に失敗する ===
  +
  +
VirtualBox 7.0.0 では、以前のバージョンの VirtualBox で作成された仮想マシンで Secure Boot を有効にすると、nondescript エラー ({{Bug|76234}}) が発生して失敗することがあります。
  +
  +
Failed to save the settings.
  +
  +
解決方法するには、''Enable Secure Boot'' チェックボックスのすぐ下にある ''Reset Keys to Default'' ボタンをクリックします。
  +
  +
== 参照 ==
   
 
* [http://www.virtualbox.org/manual/UserManual.html VirtualBox User Manual]
 
* [http://www.virtualbox.org/manual/UserManual.html VirtualBox User Manual]
  +
* [[Wikipedia:VirtualBox]]
  +
  +
{{TranslationStatus|Virtualbox|2022-10-20|753657}}

2023年3月1日 (水) 14:23時点における版

関連記事

VirtualBox は 既存のオペレーティングシステム上で仮想マシンと 呼ばれる特別な環境でオペレーティングシステムを実行するために使用される ハイパーバイザ です。VirtualBoxは常に開発されており、新機能は継続的に実装されています。Qt GUIインターフェイスに加えて、仮想マシンを管理および実行するためのヘッドレスおよび SDL コマンドラインツールが付属しています。

共有フォルダーやクリップボード、ビデオアクセラレーション、シームレスウィンドウ統合モードなど、ホストシステムの機能をゲストに統合するために、一部のゲストオペレーティングシステムにゲストの追加機能が提供されています。

目次

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

Arch Linux 上で VirtualBox の仮想マシンを起動するには、以下のインストール手順に従いってください。

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

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

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

モジュールに署名する

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
ノート: ハッシュのアルゴリズムは必ずしも設定と一致している必要はありませんが、カーネルの中に組み込まれている必要はあります。

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

virtualbox-host-modules-archvirtualbox-host-dkmssystemd-modules-load サービスを使用して起動時にモジュールをロードします。インストール後にモジュールをロードするには、再起動するか、モジュールを手動で一回ロードします。モジュールのリストは、/usr/lib/modules-load.d/virtualbox-host-modules-arch.conf または /usr/lib/modules-load.d/virtualbox-host-dkms.conf にあります。

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

VirtualBox が使っているカーネルモジュールの中には vboxdrv と呼ばれる必須モジュールがあり、仮想マシンを起動する前にロードする必要があります。

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

# modprobe vboxdrv

次のモジュールは、高度な構成でのみ必要です。

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

ユーザー名を 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 インストーラーを実行できます。

無人テンプレート

ゲストシステムを手動でインストールする必要をなくすために、一部の OS では 無人インストール がサポートされています。これにより、ユーザーは、マシンを起動する前に、VirtualBox のインターフェイスにインストールされるようにシステムを構成できます。セットアッププロセスの最後に、それ以上のユーザー操作を必要とせずに OS がインストールされます。この機能には virtualbox-unattended-templatesAUR パッケージが必要です。

拡張パック

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

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

フロントエンド

VirtualBox には複数のフロントエンドが存在しています:

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

Wayland のセキュリティ機能 (つまり GDM を使用する場合) は VirtualBox がすべてのキーボード入力を取得することを禁止しています。これはゲスト OS にウィンドウマネージャのショートカットを渡したいときに厄介です。これは VirtualBox をホワイトリスト化することで回避できます。

$ gsettings get org.gnome.mutter.wayland xwayland-grab-access-rules
$ gsettings set org.gnome.mutter.wayland xwayland-grab-access-rules "['VirtualBox Machine']"

最初のコマンドは、他のアプリケーションがすでにホワイトリストに登録されているかどうかを表示します。もしあれば、'VirtualBox Machine'をそのリストに追加してください(唯一のリストにするのではありません)。

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

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

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

Arch Linux をゲストにする

VirtualBox/Arch Linux をゲストにする を参照してください。

仮想ディスクの管理

VirtualBox/ヒントとテクニック#VirtualBox の仮想マシンを他のハイパーバイザにインポート・エクスポートも参照。

VirtualBox によってサポートされているフォーマット

VirtualBox は以下の仮想ディスクフォーマットをサポートしています:

  • VDI (Virtual Disk Image): VirtualBox で仮想マシンを作成したときにデフォルトで使用されるオープンなコンテナです。
  • VMDK (Virtual Machine Disk): VMware によって開発されたフォーマットです。最初は仕様が公開されていませんでしたが、今では VirtualBox でサポートされるオープンなフォーマットになっています。VMDK では 2GB のファイルに分割することができます。巨大なファイルをサポートしていない環境に仮想マシンを保存したい場合に有用です。Parallels の HDD フォーマット以外で、このような機能を提供するフォーマットはありません。
  • VHD (Virtual Hard Disk): Microsoft によって Windows Virtual PC や Hyper-V で使用されているフォーマットです。Microsoft 製品を使用する場合、このフォーマットを選択する必要があります。
ヒント: Windows 7 から、VHD は直接マウントできるようになっています。
  • VHDX (読み取り専用): Microsoft によって開発された Virtual Hard Disk フォーマットの拡張版です。2012年9月4日に Windows Server 2012 に搭載された Hyper-V 3.0 と一緒にリリースされました。VHDX は (ブロックアライメントの改善により) パフォーマンスが向上しており、大きなブロックサイズとジャーナルをサポートしています。VirtualBox は読み取り専用で VHDX をサポートしています [2]
  • HDD (バージョン 2): Parallels Inc によって開発されている HDD フォーマットは Parallels Desktop for Mac などのハイパーバイザ製品で使われています。プロプライエタリなフォーマットで、ドキュメントがないために、新しいバージョンの HDD (バージョン 3 と 4) はサポートされていません。
    ノート: バージョン 1 のサポートに関しては論争が存在します。公式 VirtualBox マニュアルでは HDD ファイルフォーマットのバージョン 2 しかサポートしていない と書かれていますが、Wikipedia の投稿者によればバージョン 1 も使えるという話です。
  • QED (QEMU Enhanced Disk): オープンソースのハイパーバイザである QEMU で使われていた古いファイルフォーマットです。2010年に設計されたフォーマットで、今では QCOW2 などに取って代わられています。特徴として完全な非同期 I/O パス、強力なデータ整合性、バッキングファイル、スパースファイルなどがあります。QED フォーマットは古いバージョンの QEMU で作成された仮想マシンとの互換性のためだけにサポートされています。
  • QCOW (QEMU Copy On Write): QEMU の現行フォーマットです。QCOW フォーマットは zlib ベースの透過圧縮や暗号化をサポートしています (暗号化は問題があるため推奨されていません)。QCOW にはふたつのバージョンが存在します: QCOW と QCOW2 です。QCOW2 は QCOW よりも優れています。VirtualBox が完全にサポートしているのは QCOW です [3]。QCOW2 にはリビジョン違いがふたつあります: QCOW2 0.10 と QCOW2 1.1 になります (QEMU で仮想ディスクを作成した場合、後者がデフォルトです)。VirtualBox は QCOW2 をサポートしていません。
  • OVF (Open Virtualization Format): 異なるハイパーバイザ間での仮想マシンの相互運用性を考えて設計されたオープンなフォーマットです。VirtualBox は VBoxManage のインポート・エクスポート機能によって OVF フォーマットをサポートしています [4]。ただし 既知の制限 が存在します。
  • RAW: 特定のファイルフォーマットのコンテナに格納せず直接ディスクに仮想ディスクを配置するモードです。VirtualBox は複数の方法で RAW 機能をサポートしています: RAW ディスクを 特定のフォーマット に変換、ディスクを RAW にクローン、あるいは物理ディスクやファイルを指し示す VMDK ファイルを直接使用する [5]

ディスクイメージフォーマットの変換

VBoxManage clonemedium を使うことで VDI, VMDK, VHD, RAW を相互に変換することができます。

$ VBoxManage clonemedium disk inputfile outputfile --format outputformat

例えば VDI を VMDK に変換するには:

$ VBoxManage clonemedium disk source.vdi destination.vmdk --format VMDK

QCOW

VirtualBox は QEMU の QCOW2 ディスクイメージフォーマットをサポートしていません。VirtualBox で QCOW2 ディスクイメージを使うには変換する必要があります。qemuqemu-img コマンドを使うことで変換できます。qemu-img は QCOW を VDI, VMDK, VHDX, RAW などのフォーマットに変換します (qemu-img --help を実行することで変換可能なフォーマットを確認できます)。

$ qemu-img convert -O output_fmt inputfile outputfile

例えば QCOW2 を VDI に変換するには:

$ qemu-img convert -O vdi source.qcow2 destination.vdi
ヒント: -p パラメータを使うことで変換の進捗を確認できます。

QCOW2 には 0.10 と 1.1 がありますが、-o compat=revision でどちらを使うか指定できます。

仮想ディスクのマウント

VDI

VDI イメージのマウントは容量固定のイメージ (静的イメージ) でしか使えません。動的 (動的容量割当) イメージのマウントは簡単にできません。

マウントするには (VDI 内の) パーティションのオフセットが必要です。それから offData の値を 32256 に追加してください (例: 69632 + 32256 = 101888):

$ VBoxManage internalcommands dumphdinfo <storage.vdi> | grep "offData"

そうしたら以下のコマンドでマウントできます:

# mount -t ext4 -o rw,noatime,noexec,loop,offset=101888 <storage.vdi> /mntpoint/

mount.vdi スクリプトを使うこともできます (スクリプトを /usr/bin/ にインストールしてください):

# mount -t vdi -o fstype=ext4,rw,noatime,noexec vdi_file_location /mnt/

もしくは qemu のカーネルモジュールを使う方法もあります [6]:

# modprobe nbd max_part=16
# qemu-nbd -c /dev/nbd0 <storage.vdi>
# mount /dev/nbd0p1 /mnt/dir/

アンマウントするには:

# umount /mnt/dir/
# qemu-nbd -d /dev/nbd0

パーティションノードが反映されない場合、partprobe /dev/nbd0 を使ってみてください。VDI パーティションは直接ノードにマッピングすることもできます: qemu-nbd -P 1 -c /dev/nbd0 <storage.vdi>

VHD

VDI と同様に、VHD イメージも QEMU の nbd モジュールでマウントできます。

# modprobe nbd
# qemu-nbd -c /dev/nbd0 storage.vhd
# mount /dev/nbd0p1 /mnt

unmount は以下の通り。

# umount /mnt
# qemu-nbd -d /dev/nbd0

仮想ディスクの縮小

仮想ディスクの縮小は .vdi ファイルでしか行うことができません。

仮想マシンを起動して無駄なファイルを削除してください。bleachbit などのツールを使うことができます (Windows でも利用できます)。

空き領域をゼロ埋めするツールは複数存在します:

  • Bleachbit を使用する場合、GUI で System > Free disk space にチェックを入れるか、CLI で bleachbit -c system.free_disk_space を使ってください。
  • UNIX ベースの環境の場合、dd または dcflddAUR を使います (違いについては こちら を参照):
# dcfldd if=/dev/zero of=/fillfile bs=4M
fillfile がパーティションの上限に達すると、1280 blocks (5120Mb) written.dcfldd:: No space left on device というメッセージが表示されます。ユーザースペースと予約ブロック以外が全てゼロで埋められたということになります。全ての空きブロックを上書きするために root でコマンドを実行してください。ext ファイルシステムを使っている場合、デフォルトではファイルシステムブロックの数パーセントがスーパーユーザー用に予約されています (Ext4#予約ブロックを参照)。
ゼロ埋めが完了したら、作成された fillfile ファイルを削除してください。
  • Windows の場合、以下のツールが存在します:
  • Sysinternals Suitesdelete を使う場合、仮想マシンに存在するドライブごとに sdelete -s -z c: を実行してください。
  • スクリプトを使いたい場合、PowerShell を使う方法 が存在します (全てのドライブで繰り返してください)。
PS> ./Write-ZeroesToFreeSpace.ps1 -Root c:\ -PercentFree 0
ノート: 上記のスクリプトは PowerShell で管理者権限を使って実行する必要があります。デフォルトではスクリプトは実行できません。Get-ExecutionPolicy で実行ポリシーを確認してください。ポリシーは Set-ExecutionPolicy RemoteSigned で設定できます。

空きディスク領域を消去できたら、仮想マシンをシャットダウンしてください。

仮想マシンを起動したら、ファイルシステムのチェックを実行することを推奨します。

  • UNIX ベースのシステムの場合、fsck を手動で使うことができます。
  • Windows システムの場合:
  • chkdsk c: /F を実行する (c: はスキャンを行いたいディスクに置き換えてください)。
  • こちらFsckDskAll を使う。chkdsk と基本的に同じソフトウェアですが、全てのドライブで繰り返し実行する必要がありません。

VBoxManage modifymedium を使って .vdi からゼロ領域を削除:

$ VBoxManage modifymedium disk your_disk.vdi --compact
ノート: 仮想マシンにスナップショットが存在する場合、存在する .vdi ファイルごとに上記のコマンドを実行してください。

仮想ディスクの拡大

一般的な方法

仮想マシンを作成したときに選択したハードドライブのサイズが小さすぎて、容量一杯まで使い切ってしまった場合、VirtualBox マニュアルでは VBoxManage modifymedium を使うことが推奨されています。しかしながら、このコマンドは VDI と VHD ディスクで動的にサイズを割り当てているときしか機能しません。固定サイズの仮想ディスクのサイズを変更したい場合、以下の手順に従ってください。

まず、拡大したいディスクのとなりに新しく仮想ディスクを作成:

$ VBoxManage createmedium disk -filename new.vdi --size 10000

サイズは MiB で指定します。例えば 10000MiB ~= 10GiB です。new.vdi は新しく作成するハードドライブの名前になります。

ノート: デフォルトでは、このコマンドは標準(動的割り当てに対応する)ファイル形式のバリアントを使用するためソースの仮想ディスクと同じファイル形式のバリアントは使用されません。 old.vdi のサイズが固定されていてこのバリアントを保持したい場合は、パラメーターを追加します --variant Fixed.

次に、古い仮想ディスクを新しい仮想ディスクに複製します (しばらく時間がかかります):

$ VBoxManage clonemedium disk old.vdi new.vdi --existing

古いハードドライブを取り外して新しいドライブを接続してください (斜体の引数は適当な文字列に置き換えてください):

$ VBoxManage storageattach VM_name --storagectl SATA --port 0 --medium none
$ VBoxManage storageattach VM_name --storagectl SATA --port 0 --medium new.vdi --type hdd

ストレージコントローラとポート番号を確認するには、VBoxManage showvminfo VM_name コマンドを使います。以下のように出力されます (斜字に注目):

[...]
Storage Controller Name (0):            IDE
Storage Controller Type (0):            PIIX4
Storage Controller Instance Number (0): 0
Storage Controller Max Port Count (0):  2
Storage Controller Port Count (0):      2
Storage Controller Bootable (0):        on
Storage Controller Name (1):            SATA
Storage Controller Type (1):            IntelAhci
Storage Controller Instance Number (1): 0
Storage Controller Max Port Count (1):  30
Storage Controller Port Count (1):      1
Storage Controller Bootable (1):        on
IDE (1, 0): Empty
SATA (0, 0): /home/wget/IT/Virtual_machines/GNU_Linux_distributions/ArchLinux_x64_EFI/Snapshots/{6bb17af7-e8a2-4bbf-baac-fbba05ebd704}.vdi (UUID: 6bb17af7-e8a2-4bbf-baac-fbba05ebd704)
[...]

GParted live イメージ をダウンロードして仮想 CD/DVD ディスクファイルとしてマウントし、仮想マシンを起動して、パーティションを拡大・移動してください。そして GParted live をアンマウントして再起動してください。

ノート: GPT ディスクの場合、ディスクの容量を増やすとバックアップ GPT ヘッダーがディスクの末尾ではなくなります。GParted は修正するかどうか聞いてくるので Fix をクリックしてください。MBR ディスクの場合、ディスクの末尾にヘッダーは存在しないため問題は起こりません。

最後に、VirtualBox から仮想ディスクの登録を解除してファイルを削除してください:

$ VBoxManage closemedium disk old.vdi
$ rm old.vdi

VDI ディスクの容量を拡大

仮想ディスクが VDI の場合、以下のコマンドを実行:

$ VBoxManage modifymedium disk your_virtual_disk.vdi --resize the_new_size

実行したら上記と同じように Gparted を使ってパーティションのサイズを変更してください。

.vbox ファイルから仮想ディスクを手動で交換

GUI や VBoxManage を使うよりも XML ファイルを編集するほうが簡単だという場合、仮想マシンの .vbox ファイルで仮想ディスクを交換(あるいは追加)することができます。GUID とフォーマットを必要に応じて置き換えるだけです:

ArchLinux_vm.vbox
<HardDisk uuid="{670157e5-8bd4-4f7b-8b96-9ee412a712b5}" location="ArchLinux_vm.vdi" format="VDI" type="Normal"/>

<StorageController> のサブタグ <AttachedDevice> の GUID も新しく置き換えてください:

ArchLinux_vm.vbox
<AttachedDevice type="HardDisk" port="0" device="0">
  <Image uuid="{670157e5-8bd4-4f7b-8b96-9ee412a712b5}"/>
</AttachedDevice>
ノート: 追加するドライブの GUID がわからない場合は、VBoxManage showhdinfo file を使用できます。 以前に VBoxManage clonemedium を使用して仮想ディスクをコピー/変換した場合、このコマンドは、コピー/変換が完了した直後に GUID を出力するはずです。 ランダムなGUIDを使用しても機能しません。 UUID is stored inside each disk image.

Linux ホストと他のホスト間で転送

ハードディスクとスナップショットが保存されるパスの情報は .vbox 拡張子のファイルの <HardDisks> .... </HardDisks> タグにあります。手動で編集したりスクリプトを使うことで必要な変更を行うことができます。

#!/bin/bash
NewPath="${PWD}/"
Snapshots="Snapshots/"
Filename="$1"

 awk -v SetPath="$NewPath" -v SnapPath="$Snapshots" '{if(index($0,"<HardDisk uuid=") != 0){A=$3;split(A,B,"=");
L=B[2];
 gsub(/\"/,"",L);
  sub(/^.*\//,"",L);
  sub(/^.*\\/,"",L);
 if(index($3,"{") != 0){SnapS=SnapPath}else{SnapS=""};
  print $1" "$2" location="\"SetPath SnapS L"\" "$4" "$5}
else print $0}' "$Filename"
ノート:
  • Windows ホストで使用する仮想マシンを準備する場合は、パス名の末尾に/ではなくバックスラッシュ\を使用する必要があります。
  • スクリプトは、ファイル名で { を検索してスナップショットを検出します。
  • 新しいホストで実行するには、まず Machine -> Add... をクリックしてレジスタに追加するか、ホットキー Ctrl + A を使用して 設定も含む ".vbox" を参照するか。コマンドライン VBoxManage registervm "filename" '.vbox を使用します。

仮想ディスクを複製して新しい UUID を割り当てる

UUID は VirtualBox で広く使われています。仮想マシンと仮想ディスクにはそれぞれ異なる UUID が存在します。VirtualBox で仮想マシンを起動すると、VirtualBox は仮想マシンのインスタンスの全ての UUID を記録します。VirtualBox で登録されるアイテムを確認するには VBoxManage list を参照してください。

仮想ディスクファイルを手動でコピーして仮想ディスクを複製した場合、同じ仮想マシンでディスクを使うときは複製した仮想ディスクに新しい UUID を割り当てる必要があります。

以下のコマンドを使って新しい UUID を仮想ディスクに割り当てられます:

$ VBoxManage internalcommands sethduuid /path/to/disk.vdi
ヒント: VBoxManage clonemedium を使用する場合は手動で UUID を新しく割り当てる必要はありません。
ノート: 上記のコマンドは VirtualBox によってサポートされている仮想ディスクフォーマットを全てサポートしています。

ヒントとテクニック

高度な設定については、VirtualBox/ヒントとテクニック を見てください。

トラブルシューティング

キーボードとマウスが仮想マシンにロックされる

これは、仮想マシンがキーボードとマウスの入力をキャプチャしたことを意味します。右の Ctrl キーを押すだけで、入力は再びホストを制御することができます。

キーを押すことなくマウスでホストを行ったり来たりして仮想マシンを透過的にコントロールし、シームレスに統合するには、guest addtions をゲスト内にインストールします。VirtualBox/Arch Linux をゲストにする#Guest Additions をインストールを読んで下さい、あなたのゲストが Arch Linux ならば、公式の VirtualBox ヘルプを読んで下さい。

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

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

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

VirtualBox の GUI がホストの GTK テーマと一致しない

VirtualBox のような Qt ベースのアプリケーションのテーマ化に関する情報については、Qt と GTK アプリケーションの外観の統合を参照してください。

Ctrl+Alt+Fn をゲストに送信できない

ゲスト OS が GNU/Linux ディストリビューションで、Ctrl+Alt+F2 で新しい TTY シェルを開きたい、または Ctrl+Alt+Backspace で現在の X セッションを終了したい場合、これらのキーボードショートカットを適応させずに入力すると、ゲストは入力を受け取らず、ホスト (GNU/Linux ディストリビューションの場合) はこれらのショートカットキーをインターセプトしてしまいます。例えば Ctrl+Alt+F2 をゲストに送るには、単にあなたの Host Key (通常は右の Ctrl キー) と F2 を同時に押してください。

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

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

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

VBOX_USB=usbfs

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

USB モデム

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

USBデバイスがゲストをクラッシュさせる

USB デバイスをゲストに取り付けるとクラッシュやその他の異常な動作が発生する場合は、USB コントローラを USB 2 (EHCI)から USB 3 (xHCI)、またはその逆に切り替えてみてください。

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

一般的に、VirtualBox や Linux カーネルをアップグレードした後に、このような問題が発生することがあります。これらを以前のバージョンにダウングレードすると解決する場合があります。

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

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

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

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

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

ISO に変換されたイメージに関する問題

一部のイメージ形式は、確実に ISO に変換できません。たとえば、ccd2iso は .ccd および .sub ファイルを無視するため、破損したファイルを含むディスクイメージが作成される可能性があります。

この場合、VirtualBox 内で CDemu for Linux を使用するか、ディスク イメージのマウントに使用する他のユーティリティを使用する必要があります。

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

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

# modprobe -a vboxnetadp vboxnetflt

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

vboxdrv
vboxnetadp
vboxnetflt
ノート: これらは、以前は /etc/rc.confMODULES 配列に追加されていましたが、現在は廃止されました。

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

Failed to insert module

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

Failed to insert 'vboxdrv': Required key not available

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

VBOX_E_INVALID_OBJECT_STATE (0x80BB0007)

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

VBoxManage controlvm nArch poweroff

"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 ディスク形式を選択すると時々発生します。

仮想化命令が使用できない場合の OpenBSD の使用不可

OpenBSD は、仮想化命令 (VT-x AMD-V) が有効になっていない他のハイパーバイザー上では正常に動作すると報告されていますが、これらの命令がない VirtualBox 上で実行される OpenBSD 仮想マシンは、 多くのセグメンテーションフォールトを発生させて使用不能になるでしょう。VirtualBox を -norawr0 引数で起動すれば、この問題は解決するかもしれません。このようにしてみてください。

$ VBoxSDL -norawr0 -vm name_of_OpenBSD_VM

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 以上では上手く行きません。

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 の設定を更新してください。

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

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

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

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

Windows: 3D アクセラレーションが有効な場合の画面のちらつき

VirtualBox > 4.3.14 には、3D アクセラレーションを使用する Windows ゲストがちらつくリグレッションがあります。r120678 以降、環境変数の設定を認識するパッチが実装されているため、次のように VirtualBox を起動します。

$ CR_RENDER_FORCE_PRESENT_MAIN_THREAD=0 VirtualBox

VirtualBox サービスがまだ実行されていないことを確認します。VirtualBox bug 13653 を参照してください。

Wayland で VirtualBox を起動できない: Segmentation fault

この問題は、Qt が Wayland を検出する (例えば、XDG_SESSION_TYPE=wayland)一方で、VirtualBox がまだ Wayland で動作しないために発生します。FS#58761upstream bug を参照してください。

環境変数 QT_QPA_PLATFORM=xcb を設定することで、Qt のプラットフォーム検出を無効にし、Wayland 上で X11 を強制的に動作させることができます。他の Qt アプリケーション (通常は Wayland でうまく動作する) に影響を与えないように、QT_QPA_PLATFORM=xcb は VirtualBox 起動時のみ設定されるべきです。

デスクトップエントリから起動する場合は、デスクトップエントリ#環境変数の修正の指示に従い、Exec=VirtualBox ... で始まる行を Exec=env QT_QPA_PLATFORM=xcb VirtualBox ... に変更してください。シェルから起動する場合は、エイリアス(Bash#エイリアス) を virtualbox から env QT_QPA_PLATFORM=xcb virtualbox に変更します。

ノート: Wayland でマウスやキーボードに問題がある場合は、上記の設定もお試しください。

Intel グラフィックスを使用したゲストでのランダムフリーズ

Intel CPU およびグラフィックスでは、ゲストに多くのプロセッサを割り当てるとレンダリングパフォーマンスが低下し、ランダムフリーズが発生する可能性があります。より少ないプロセッサまたは 1 つのプロセッサを割り当てることで解決できます。

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

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

Intel Tiger Lake チップセット搭載の Windows 10 ゲスト OS でランダムクラッシュが発生する

カーネルパラメータsplit_lock_detect=off を追加して、スプリットロック検出を無効にする。

詳細は VirtualBox の Ticket #20180 に記載されています。

第11世代Intel CPUでの仮想マシン起動時のフリーズ

traps: Missing ENDBRkernel BUG at arch/x86/kernel/traps.c というメッセージが journal に表示されたら、カーネルパラメータとして ibt=off を追加してみるとよいでしょう。FS#74891 にリンクしているようです。

セキュアブートを有効にすると、設定の保存に失敗する

VirtualBox 7.0.0 では、以前のバージョンの VirtualBox で作成された仮想マシンで Secure Boot を有効にすると、nondescript エラー (FS#76234) が発生して失敗することがあります。

Failed to save the settings.

解決方法するには、Enable Secure Boot チェックボックスのすぐ下にある Reset Keys to Default ボタンをクリックします。

参照

翻訳ステータス: このページは en:Virtualbox の翻訳バージョンです。最後の翻訳日は 2022-10-20 です。もし英語版に 変更 があれば、翻訳の同期を手伝うことができます。