「VirtualBox」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(他言語リンクを追加)
 
(8人の利用者による、間の112版が非表示)
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/ヒントとテクニック}}
{{Related4|PhpVirtualBox}}
 
  +
{{Related|:Category:ハイパーバイザ}}
{{Related4|Moving an existing install into (or out of) a virtual machine}}
 
  +
{{Related|PhpVirtualBox}}
  +
{{Related|RemoteBox}}
  +
{{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|VirtualBox}}
 
   
 
== ホストとしてインストール ==
 
== ホストとしてインストール ==
  +
  +
Arch Linux 上で VirtualBox の仮想マシンを起動するには、以下のインストール手順に従いってください。
   
 
=== コアパッケージのインストール ===
 
=== コアパッケージのインストール ===
   
まず、GPL ライセンス版の VirtualBox のセットは[[Official Repositories|公式リポジトリ]]にある {{Pkg|virtualbox}} パッケージ[[pacman|インストール]]できますSDL とヘッドレのコマンドラインツールが入っています。{{Pkg|virtualbox}} パッケージには依存パッケジとして {{Pkg|virtualbox-host-modules}} が付てきます。
+
{{Pkg|virtualbox}} パッケージ[[インストール]]してくださいさらに、ホトモジュールパッケージを選択してインストしてくださ:
   
  +
* {{Pkg|linux}} カーネルを使用している場合 {{Pkg|virtualbox-host-modules-arch}} を選択してください。
[[Qt|Qt]] による、グラフィカルインターフェース ({{ic|VirtualBox}} コマンド) を使うには、{{Pkg|qt4}} パッケージもインストールしてください。シンプルな SDL の GUI ({{ic|VBoxSDL}} コマンド) や {{ic|VBoxHeadless}} コマンドを使う場合 qt は必要ありません。
 
  +
* 他の[[カーネル]]を使っている場合 {{Pkg|virtualbox-host-dkms}} を選択してください。
   
  +
{{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 フックによって自動的にカーネルモジュールが再コンパイルされます。
=== VirtualBox カーネルモジュールのインストール ===
 
   
  +
=== モジュールに署名する ===
次に、VirtualBox がゲスト環境を仮想化できるようにするために、ホストのカーネルに[[カーネルモジュール]]を追加する必要があります。
 
   
  +
{{ic|CONFIG_MODULE_SIG_FORCE}} オプションを有効にしたカスタムカーネルを使っている場合、カーネルのコンパイル時に生成される鍵を使ってモジュールに署名する必要があります。
カーネルモジュールのバイナリ互換はモジュールがコンパイルされたカーネルの API に依存しています。問題はこれらのインターフェイスが他のバージョンのカーネルと異なる可能性があることです。互換性の問題によってやっかいなバグが出ないように、Linux カーネルを更新した時は毎回、そのインストールした Linux カーネルでカーネルモジュールを再コンパイルすることが推奨されています。これは VirtualBox カーネルモジュールのパッケージで Arch Linux のパッケージ作成者が実際にやっていることです: 新しい Arch Linux カーネルがリリースされる度に、Virtualbox は更新されるようになっています。
 
   
  +
カーネルツリーのフォルダに移動して、以下のコマンドを実行してください:
従って、[[公式リポジトリ]]のカーネルを使っているかカスタムカーネル (自分でコンパイルもしくは [[AUR|AUR]] からインストールしたカーネル) を使っているかで、インストールするカーネルモジュールのパッケージは変わってきます。
 
  +
# 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|ハッシュのアルゴリズムは必ずしも設定と一致している必要はありませんが、カーネルの中に組み込まれている必要はあります。}}
==== ホストで公式カーネルを使っている場合 ====
 
   
  +
=== カーネルモジュールのロード ===
* {{Pkg|linux}} カーネルを使っている場合、{{pkg|virtualbox-host-modules}} パッケージが既にインストールされていることを確認してください。このパッケージは {{Pkg|virtualbox}} パッケージをインストールした時にインストールされます。
 
  +
{{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}} にあります。
* LTS バージョンのカーネル ({{pkg|linux-lts}}) を使っている場合、{{pkg|virtualbox-host-modules-lts}} パッケージをインストールしてください。{{Pkg|virtualbox-host-modules}} は要らなければ削除することができます。
 
* {{aur|linux-ck}} カーネルを使っている場合、{{aur|virtualbox-ck-host-modules}} パッケージをビルドしてください。
 
   
  +
{{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}} と呼ばれる必須モジュールがあり、仮想マシンを起動する前にロードする必要があります。
自分でソースからコンパイルしたカーネルを使う場合、VirtualBox は仮想化モジュール (例: virtuo, kvm,...) を必要としないことを知っておく必要があります。VirtualBox カーネルモジュールは VirtualBox を正しく動作させるために必要なもの全てを提供します。そのため Xen, KVM, QEMU などの他のハイパーバイザーを使わないときはカーネルの ''.config'' ファイルで仮想化モジュールを無効にすることができます。
 
   
  +
手動でモジュールをロードするには:
{{ic|virtualbox-host-modules}} パッケージは Arch Linux の標準カーネルと同じバージョンのカスタムカーネル ({{AUR|linux-ck}} など) では問題なく動作します。{{ic|virtualbox-host-modules}} には依存パッケージとして公式 Arch Linux カーネル ({{Pkg|linux}}) が付いてくるため、このカーネルを使わない場合、代わりに {{Pkg|virtualbox-host-dkms}} をインストールしてください。
 
  +
# modprobe vboxdrv
   
  +
次のモジュールは、高度な構成でのみ必要です。
Arch Linux の標準カーネルと違うバージョンのカスタムカーネルを使う場合は、{{Pkg|virtualbox-host-dkms}} もインストールする必要があります。このパッケージには VirtualBox カーネルモジュールのソースが同梱されており、あなたのカーネル用のモジュールを生成するようコンパイルされます。
 
   
  +
* {{ic|vboxnetadp}} と {{ic|vboxnetflt}} はどちらも [https://www.virtualbox.org/manual/ch06.html#network_hostonly "ホストオンリーネットワーク"] 機能を使うときに必要になります。正確に言えば、{{ic|vboxnetadp}} は VirtualBox のグローバル設定でホストインターフェイスを作成するのに必要で、{{ic|vboxnetflt}} はそのネットワークインターフェイスを使って仮想マシンを起動するのに必要です。
{{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|AUR]] のカスタムカーネルを使う場合は、{{Pkg|linux-headers}} パッケージをインストールしてください。
 
   
  +
{{Note|モジュールを更新したときにカーネルに VirtualBox カーネルモジュールがロードされていた場合、更新された新しいバージョンを使うためには手動でリロードしなくてはなりません。root で {{ic|vboxreload}} を実行してください。}}
{{Pkg|virtualbox-host-dkms}} をインストールしたら、次のコマンドを実行してあなたのカスタムカーネルのためのカーネルモジュールを生成します:
 
# dkms install vboxhost/''virtualbox-host-source version'' -k ''your custom kernel version''/''your architecture''
 
   
  +
=== ユーザー名を vboxusers グループに追加 ===
{{Tip|上のコマンドを使いたくない場合は、オールインワンのコマンドを代わりに使って下さい:
 
{{bc|<nowiki># dkms install vboxhost/$(pacman -Q virtualbox|awk {'print $2'}|sed 's/\-.\+//') -k $(uname -rm|sed 's/\ /\//')</nowiki>}}
 
}}
 
   
  +
利用するユーザー名を '''vboxusers''' [[ユーザーとグループ|グループ]]に追加してください。追加しなくても問題なく動作しますが、共有フォルダなどの任意機能を動かすためには必要です。新しいグループは自動では現在のセッションに適用されません; ユーザーは一度ログインしなおすか {{Ic|newgrp}} や {{Ic|sudo -u $USER -s}} などのコマンドで新しい環境を始める必要があります。現在のユーザーを {{ic|vboxusers}} グループに追加するには、次を入力してください:
ソースが更新されたときに (つまり {{Pkg|virtualbox-host-dkms}} パッケージが更新された際) 上の {{ic|dkms install}} コマンドを手動で再入力する手間を省いて VirtualBox カーネルモジュールが自動的に再コンパイルされるように、次のコマンドで {{ic|dkms}} サービスを有効にします:
 
# systemctl enable dkms.service
 
   
  +
# gpasswd -a $USER vboxusers
このサービスを有効にしない場合 {{Pkg|virtualbox-host-dkms}} パッケージが更新されても、VirtualBox モジュールは更新されないため上の {{ic|dkms install}} コマンドを手動で実行して最新の Virtualbox カーネルモジュールをコンパイルする必要があります。{{ic|dkms}} サービスが起動時に自動的にロードされるようになっていれば、再起動するだけで VirtualBox モジュールは再コンパイルされます。
 
   
  +
=== Guest additions ディスク ===
それでも、このデーモンを無効にしておきたいときは、[[mkinitcpio|initramfs のフック]]を使って起動時に上の {{ic|dkms install}} コマンドを自動的に実行するよう設定することができます。VirtualBox モジュールを再コンパイルするには再起動が必要になります。このフックを有効にするには、[[Arch User Repository|AUR]] から {{AUR|vboxhost-hook}} パッケージをインストールして {{ic|/etc/mkinitcpio.conf}} の HOOKS 行に {{ic|vboxhost}} を追加してください。もちろん、新しいカーネルの linux ヘッダーが存在しないとコンパイルは失敗します。
 
   
  +
VirtualBox を動かすホスト側 (Arch Linux) には、{{Pkg|virtualbox-guest-iso}} もインストールすることが推奨されています。これはゲスト OS に guest additions をインストールするために使われるディスクイメージです。''.iso'' ファイルは {{ic|/usr/lib/virtualbox/additions/VBoxGuestAdditions.iso}} に配置され、仮想マシンの中から手動でマウントする必要があります。マウントしたら、ゲストの中で guest additions インストーラーを実行できます。
{{Tip|{{ic|dkms}} コマンドと同じように、VirtualBox モジュールの再コンパイル中に何か問題が起こると {{ic|vboxhost}} フックは通知を行います。}}
 
   
  +
=== 無人テンプレート ===
=== カーネルモジュールのロード ===
 
VirtualBox が使っている[[カーネルモジュール]]の中には {{ic|vboxdrv}} と呼ばれる必須モジュールがあり、仮想マシンを起動する前にロードする必要があります。Arch Linux 起動時に自動でロードすることも、必要なときだけ手動でロードすることもできます。
 
   
  +
ゲストシステムを手動でインストールする必要をなくすために、一部の OS では ''無人インストール'' がサポートされています。これにより、ユーザーは、マシンを起動する前に、VirtualBox のインターフェイスにインストールされるようにシステムを構成できます。セットアッププロセスの最後に、それ以上のユーザー操作を必要とせずに OS がインストールされます。この機能には {{aur|virtualbox-unattended-templates}} パッケージが必要です。
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
 
   
  +
VirtualBox 4.0 から、GPL ではないコンポーネントはアプリケーションから分割されるようになりました。フリーでない、'''個人利用においてのみ利用可能'''なライセンスでリリースされていますが、[https://www.virtualbox.org/manual/ch01.html#intro-installing 追加機能]が入っている Oracle Virtualbox 拡張パックに興味をひかれるかもしれません。手動でインストールする代わりに、[[AUR]] には {{aur|virtualbox-ext-oracle}} パッケージが存在します。ビルド済みのバージョンは [[非公式ユーザーリポジトリ#seblu|seblu]] リポジトリにあります。
起動時に VirtualBox ドライバをロードするには、{{ic|/etc/[[カーネルモジュール#ロード|modules-load.d]]}} ディレクトリにロードが必要なモジュールを全て含めた {{ic|*.conf}} ファイル (例: ''virtualbox.conf'') を追加してください:
 
   
  +
伝統的な手動のインストールをしたい場合: 拡張パックを手動でインストールして GUI (''File > Preferences > Extensions'') または {{ic|VBoxManage extpack install <.vbox-extpack>}} でインストールしてください。VirtualBox に特権アクセスを与えるためのツールキット ([[Polkit]] や gksu など) が必須です。このエクステンションのインストールには [https://www.virtualbox.org/ticket/8473 root 権限が必要になります]。
{{hc|/etc/modules-load.d/virtualbox.conf|
 
vboxdrv}}
 
   
  +
=== フロントエンド ===
次のモジュールは任意ですが、高度な設定をするときは面倒くさいことにならないようにロードすることを推奨します: {{ic|vboxnetadp}}, {{ic|vboxnetflt}}, {{ic|vboxpci}}。
 
   
  +
VirtualBox には複数のフロントエンドが存在しています:
* {{ic|vboxnetadp}} と {{ic|vboxnetflt}} はどちらも [https://www.virtualbox.org/manual/ch06.html#network_hostonly "ホストオンリーネットワーク"] 機能を使うときに必要になります。正確に言えば、{{ic|vboxnetadp}} は VirtualBox のグローバル設定でホストインターフェイスを作成するのに必要で、{{ic|vboxnetflt}} はそのネットワークインターフェイスを使って仮想マシンを起動するのに必要です。
 
  +
* 普通の GUI で VirtualBox を使いたい場合は {{ic|VirtualBox}} を使ってください。
  +
* コマンドライン内だけで VirtualBox を使いたい場合 (起動と既存の仮想マシンの設定変更だけ)、{{ic|VBoxSDL}} コマンドが使えます。VBoxSDL はメニューやコントロールがない、''ピュア''な仮想マシンだけを含んだシンプルなウィンドウのみを表示します。
  +
* GUI を (サーバーなどで) 実行せずにコマンドラインで VirtualBox を使って仮想マシンを作成・起動・設定したい場合、ホスト側で全く目に見える出力を行わず VRDP データだけを送信する {{ic|VBoxHeadless}} を使います。
   
  +
Wayland のセキュリティ機能 (つまり GDM を使用する場合) は VirtualBox がすべてのキーボード入力を取得することを禁止しています。これはゲスト OS にウィンドウマネージャのショートカットを渡したいときに厄介です。これは VirtualBox をホワイトリスト化することで回避できます。
* {{ic|vboxpci}} は仮想マシンでホストの PCI デバイスをパススルーするときに必要になります。
 
   
  +
$ gsettings get org.gnome.mutter.wayland xwayland-grab-access-rules
{{Note|モジュールを更新したときにカーネルに VirtualBox カーネルモジュールがロードされていた場合、更新された新しいバージョンを使うためには手動でリロードしなくてはなりません。}}
 
  +
$ gsettings set org.gnome.mutter.wayland xwayland-grab-access-rules "['VirtualBox Machine']"
   
  +
最初のコマンドは、他のアプリケーションがすでにホワイトリストに登録されているかどうかを表示します。もしあれば、'VirtualBox Machine'をそのリストに追加してください(唯一のリストにするのではありません)。
最後に、上記の "ホストオンリーネットワーク" 機能を使う場合、{{pkg|net-tools}} がインストールされていることを確認してください。VirtualBox は {{ic|ifconfig}} と {{ic|route}} を使って IP を割り当て {{ic|VBoxManage hostonlyif}} や GUI の ''Settings > Network > Host-only Networks > Edit host-only network (space) > Adapter'' で設定されたホストインターフェイスに接続します。
 
   
  +
また、[[PhpVirtualBox]] を使えばウェブインターフェイスで仮想マシンを管理することが可能です。
=== ユーザー名を vboxusers グループに追加 ===
 
   
  +
仮想マシンを作成する方法は [https://www.virtualbox.org/manual VirtualBox マニュアル]を参照してください。
利用するユーザー名を '''vboxusers''' [[ユーザーとグループ|グループ]]に追加してください。追加しなくても問題なく動作しますが、共有フォルダなどの任意機能を動かすためには必要です。新しいグループは自動では現在のセッションに適用されません; ユーザーは一度ログインしなおすか {{Ic|newgrp}} や {{Ic|sudo -u $USER -s}} などのコマンドで新しい環境を始める必要があります。現在のユーザーを {{ic|vboxusers}} グループに追加するには、次を入力してください:
 
   
  +
{{Warning|仮想ディスクイメージを [[Btrfs]] ファイルシステムに保存する場合は、イメージを作成する前に、イメージを保存するディレクトリの [[Btrfs#コピーオンライト_.28CoW.29|Copy-on-Write]] を無効にすると良いでしょう。}}
# gpasswd -a $USER vboxusers
 
   
=== Guest additions ディ ===
+
== Arch Linux をゲトにする ==
   
  +
[[VirtualBox/Arch Linux をゲストにする]] を参照してください。
VirtualBox を動かすホスト側 (Arch Linux) には、{{Pkg|virtualbox-guest-iso}} もインストールすることが推奨されています。これはゲスト OS に guest additions をインストールするために使われるディスクイメージです。
 
   
=== エクテンションパッ===
+
== 仮想ディスクの管理 ==
   
  +
[[VirtualBox/ヒントとテクニック#VirtualBox の仮想マシンを他のハイパーバイザにインポート・エクスポート]]も参照。
VirtualBox 4.0 から、GPL ではないコンポーネントはアプリケーションから分割されるようになりました。フリーでない、'''個人利用においてのみ利用可能'''なライセンスでリリースされていますが、[https://www.virtualbox.org/manual/ch01.html#intro-installing 追加機能]が入っている Oracle エクステンションパックに興味をひかれるかもしれません。手動でインストールする代わりに、[[AUR|AUR]] には {{aur|virtualbox-ext-oracle}} パッケージが存在します。
 
   
  +
=== VirtualBox によってサポートされているフォーマット ===
伝統的な手動のインストールをしたい場合: エクステンションを手動でインストールして GUI (''Settings > Extensions'') または {{ic|VBoxManage extpack install <.vbox-extpack>}} でインストールしてください。VirtualBox に特権アクセスを与えるためのツールキット ([[Polkit]] や gksu など) が必須です。このエクステンションのインストールには [https://www.virtualbox.org/ticket/8473 root 権限が必要になります]。
 
   
  +
VirtualBox は以下の仮想ディスクフォーマットをサポートしています:
=== 適切なフロントエンドの使用 ===
 
   
  +
* '''VDI''' (Virtual Disk Image): VirtualBox で仮想マシンを作成したときにデフォルトで使用されるオープンなコンテナです。
これで、VirtualBox を使う準備はできました。おめでとうございます。
 
   
  +
* '''VMDK''' (Virtual Machine Disk): VMware によって開発されたフォーマットです。最初は仕様が公開されていませんでしたが、今では VirtualBox でサポートされるオープンなフォーマットになっています。VMDK では 2GB のファイルに分割することができます。巨大なファイルをサポートしていない環境に仮想マシンを保存したい場合に有用です。Parallels の HDD フォーマット以外で、このような機能を提供するフォーマットはありません。
複数のフロントエンドが存在しており、デフォルトでは2つが利用可能です:
 
* コマンドライン内だけで VirtualBox を使いたい場合 (起動と既存の仮想マシンの設定変更だけ)、{{ic|VBoxSDL}} コマンドが使えます。VBoxSDL はメニューやコントロールがない、''ピュア''な仮想マシンだけを含んだシンプルなウィンドウのみを表示します。
 
* GUI を (サーバーなどで) 実行せずにコマンドラインで VirtualBox を使って仮想マシンを作成・起動・設定したい場合、ホスト側で全く目に見える出力を行わなず VRDP データだけを送信する {{ic|VBoxHeadless}} を使います。
 
   
  +
* '''VHD''' (Virtual Hard Disk): Microsoft によって Windows Virtual PC や [[Hyper-V]] で使用されているフォーマットです。Microsoft 製品を使用する場合、このフォーマットを選択する必要があります。
任意の依存パッケージとして {{Pkg|qt4}} をインストールした場合、マウスで使える見た目の良い GUI インターフェイスが使えます。
 
  +
:{{Tip|Windows 7 から、VHD は直接マウントできるようになっています。}}
   
  +
* '''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]。
また、[[PhpVirtualBox]] を使えばウェブインターフェイスで仮想マシンを管理することが可能です。
 
   
  +
* '''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://www.virtualbox.org/manual VirtualBox マニュアル]を参照してください。
 
   
  +
* '''QED''' (QEMU Enhanced Disk): オープンソースのハイパーバイザである QEMU で使われていた古いファイルフォーマットです。2010年に設計されたフォーマットで、今では QCOW2 などに取って代わられています。特徴として完全な非同期 I/O パス、強力なデータ整合性、バッキングファイル、スパースファイルなどがあります。QED フォーマットは古いバージョンの QEMU で作成された仮想マシンとの互換性のためだけにサポートされています。
{{Warning|仮想ディスクイメージを [[Btrfs|Btrfs]] ファイルシステムに保存する場合は、イメージを作成する前に、イメージを保存するディレクトリの [[Btrfs#コピーオンライト_.28CoW.29|Copy-on-Write]] を無効にすると良いでしょう。}}
 
   
  +
* '''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 をサポートしていません。
== Arch Linux をゲストにする ==
 
   
  +
* '''OVF''' (Open Virtualization Format): 異なるハイパーバイザ間での仮想マシンの相互運用性を考えて設計されたオープンなフォーマットです。VirtualBox は VBoxManage のインポート・エクスポート機能によって OVF フォーマットをサポートしています [https://www.virtualbox.org/manual/ch08.html#idp55423424]。ただし [https://www.virtualbox.org/manual/ch14.html#KnownProblems 既知の制限] が存在します。
=== 仮想マシンの中に Arch Linux をインストール ===
 
   
  +
* '''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]。
仮想マシンの仮想ドライブを使って Arch のインストールメディアを起動します。そして、[[ビギナーズガイド]]や[[インストールガイド]]に書かれている方法に従って Arch のインストールを完了してください。グラフィックドライバーのインストールはしません: 次のステップで VirtualBox のグラフィックドライバーをインストールします。
 
   
==== EFI モドでインスール ====
+
=== ディスクイメジフォーマッの変換 ===
   
  +
[https://www.virtualbox.org/manual/ch08.html#vboxmanage-clonemedium VBoxManage clonemedium] を使うことで VDI, VMDK, VHD, RAW を相互に変換することができます。
VirtualBox の中に EFI モードで Arch Linux をインストールしたい場合、仮想マシンの設定で、''Settings'' タブから ''Enable EFI (special OSes only)'' のチェックを入れて下さい。Arch Linux のインストールメディアを起動すると Arch Linux の標準の [[Gummiboot|Gummiboot]] メニューが素早く表示されます:
 
{{bc|
 
Arch Linux archiso x86_64 UEFI USB
 
UEFI Shell x86_64 v1
 
UEFI Shell x86_64 v2
 
EFI Default Loader}}
 
   
  +
$ VBoxManage clonemedium disk ''inputfile'' ''outputfile'' --format ''outputformat''
最初のアイテムを選択してカーネルをロードした後、メディアは1分30秒ほど止まった後、通常通りにカーベルの起動に進みます。絶望しないで待機して下さい。
 
   
  +
例えば VDI を VMDK に変換するには:
[[GRUB|Grub]] や [[Gummiboot|Gummiboot]] を使うなら、デフォルトの ''EFI Hard Drive'' エントリが完璧に動作します。起動時に {{ic|F2}} キーを押すことで使える、VirtualBox Boot Manager を使用しないで下さい: 起動時に手動で追加した、もしくは {{Pkg|efibootmgr}} による EFI エントリは再起動しても残りますが [https://www.virtualbox.org/ticket/11177 VM をシャットダウンすると消えます]。
 
   
  +
$ VBoxManage clonemedium disk ''source.vdi'' ''destination.vmdk'' --format VMDK
=== Guest Additions をインストール ===
 
   
  +
==== QCOW ====
ゲストシステムのインストールが完了した後は、ゲストオペレーティングシステムを最適化するドライバーとアプリケーションが含まれている VirtualBox [https://www.virtualbox.org/manual/ch04.html Guest Additions] をインストールします。
 
   
  +
VirtualBox は [[QEMU]] の QCOW2 ディスクイメージフォーマットをサポートしていません。VirtualBox で QCOW2 ディスクイメージを使うには変換する必要があります。{{Pkg|qemu}} の {{ic|qemu-img}} コマンドを使うことで変換できます。{{ic|qemu-img}} は QCOW を VDI, VMDK, VHDX, RAW などのフォーマットに変換します ({{ic|qemu-img --help}} を実行することで変換可能なフォーマットを確認できます)。
Arch の外で、2つの方法でインストールできます:
 
   
  +
$ qemu-img convert -O ''output_fmt'' ''inputfile'' ''outputfile''
* Virtualbox マニュアルに記述されている標準のインストールプロセスに従う (ホスト側で、Virtualbox メニューから "Install Guest Additions" をクリックして、{{ic|/mnt}} に cdrom を手動でマウントし、{{ic|/mnt/VBoxLinuxAdditions.run}} を実行します)。{{Note|この方法を最初に試行した場合、2番目の方法は[[Pacman#Q: アップデートでこんなエラーが出ました: "file exists in filesystem"|ファイル衝突]]で失敗します: {{ic|/usr/bin/VBox*}} と {{ic|/usr/lib/VBox* exists in filesystem}}。問題のファイルを削除して ({{ic|/opt}} へのシンボリックリンク)、インストールをやり直して下さい。}}
 
   
  +
例えば QCOW2 を VDI に変換するには:
* ディストリビューションの公式リポジトリからインストールできるパッケージを使う。
 
   
  +
$ qemu-img convert -O vdi ''source.qcow2'' ''destination.vdi''
Arch Linux ゲストでは、最初の方法は動作せずに {{ic|Unable to determine your Linux distribution}} エラーになります。そのため、2番目の方法を使って {{Pkg|virtualbox-guest-utils}} をインストールしてください、依存パッケージとして {{Pkg|virtualbox-guest-modules}} が入っています。
 
   
  +
{{Tip|{{ic|-p}} パラメータを使うことで変換の進捗を確認できます。}}
{{Pkg|virtualbox-guest-utils}} パッケージをインストールします:
 
   
  +
QCOW2 には 0.10 と 1.1 がありますが、{{ic|1=-o compat=''revision''}} でどちらを使うか指定できます。
=== VirtualBox ゲストカーネルモジュールをインストール ===
 
   
  +
=== 仮想ディスクのマウント ===
==== ゲストで公式カーネルを使っている場合 ====
 
   
  +
==== VDI ====
* {{Pkg|linux}} カーネルを使っている場合、{{pkg|virtualbox-guest-modules}} パッケージがインストールされていることを確認してください。このパッケージは {{Pkg|virtualbox-guest-utils}} パッケージをインストールした時にインストールされます。
 
* LTS バージョンのカーネル ({{pkg|linux-lts}}) を使っている場合、{{pkg|virtualbox-guest-modules-lts}} パッケージをインストールしてください。{{Pkg|virtualbox-guest-modules}} は要らなければ削除することができます。
 
* {{aur|linux-ck}} カーネルを使っている場合、{{aur|virtualbox-ck-guest-modules}} パッケージをビルドしてください。{{Pkg|virtualbox-guest-modules}} は要らなければ削除することができます。
 
   
  +
VDI イメージのマウントは容量固定のイメージ (静的イメージ) でしか使えません。動的 (動的容量割当) イメージのマウントは簡単にできません。
==== ゲストでカスタムカーネルを使っている場合 ====
 
   
  +
マウントするには (VDI 内の) パーティションのオフセットが必要です。それから {{ic|offData}} の値を {{ic|32256}} に追加してください (例: 69632 + 32256 = 101888):
上で説明しているホストの Vitualbox カーネルモジュールのセクションとほとんどインストールの手順は同じです。[[#VirtualBox カーネルモジュールのインストール|そのセクション]]を参照して {{Pkg|virtualbox-host-modules}}, {{Pkg|virtualbox-host-dkms}}, {{AUR|vboxhost-hook}} を {{Pkg|virtualbox-guest-modules}}, {{Pkg|virtualbox-guest-dkms}}, {{AUR|vboxguest-hook}} で置き換えて下さい。
 
   
  +
$ VBoxManage internalcommands dumphdinfo <storage.vdi> | grep "offData"
=== Virtualbox カーネルモジュールをロード ===
 
   
  +
そうしたら以下のコマンドでマウントできます:
手動でモジュールをロードするには、次のコマンドを入力:
 
# modprobe -a vboxguest vboxsf vboxvideo
 
   
  +
# mount -t ext4 -o rw,noatime,noexec,loop,offset=101888 <storage.vdi> /mntpoint/
起動時に VirtualBox モジュールをロードさせるには、[[カーネルモジュール#ロード]] を参照して以下の内容で {{ic|/etc/modules-load.d/}} に {{ic|*.conf}} ファイルを作成してください (例: {{ic|virtualbox.conf}}):
 
{{hc|/etc/modules-load.d/virtualbox.conf|
 
vboxguest
 
vboxsf
 
vboxvideo}}
 
   
  +
[https://github.com/pld-linux/VirtualBox/blob/master/mount.vdi mount.vdi] スクリプトを使うこともできます (スクリプトを {{ic|/usr/bin/}} にインストールしてください):
=== VirtualBox ゲストサービスを起動 ===
 
   
  +
# mount -t vdi -o fstype=ext4,rw,noatime,noexec ''vdi_file_location'' ''/mnt/''
VirtualBox カーネルモジュールのインストールが終わったら、ゲストサービスを起動する必要があります。ゲストサービスは {{ic|VBoxClient}} という名前のバイナリ実行ファイルであり X Window System と対話を行います。{{ic|VBoxClient}} は以下の機能を管理します:
 
* 共有クリップボードとホストとゲスト間のドラッグアンドドロップ。
 
* シームレスウィンドウモード。
 
* ゲストのウィンドウサイズに自動的にゲストの表示をリサイズ。
 
* VirtualBox ホストバージョンのチェック。
 
   
  +
もしくは {{Pkg|qemu}} のカーネルモジュールを使う方法もあります [http://bethesignal.org/blog/2011/01/05/how-to-mount-virtualbox-vdi-image/]:
これらの機能は全てフラグを使って個別・手動で有効にすることができます。
 
# VBoxClient --clipboard --draganddrop --seamless --display --checkhostversion
 
   
  +
# modprobe nbd max_part=16
ゲストサービスには他の機能もあります:
 
  +
# qemu-nbd -c /dev/nbd0 <storage.vdi>
* ホストとゲスト間での時刻同期。
 
  +
# mount /dev/nbd0p1 /mnt/dir/
* ホストとゲスト間での読み取り専用・自動マウントの共有フォルダ。
 
   
  +
アンマウントするには:
今のところドキュメントになっていませんが VirtualBox には X11 サーバーが実際に動作中かどうか確認して全ての機能を自動的に有効にする Bash スクリプト {{ic|VBoxClient-all}} が入っています。
 
  +
# umount /mnt/dir/
# VBoxClient-all
 
  +
# qemu-nbd -d /dev/nbd0
   
  +
パーティションノードが反映されない場合、{{ic|partprobe /dev/nbd0}} を使ってみてください。VDI パーティションは直接ノードにマッピングすることもできます: {{ic|qemu-nbd -P 1 -c /dev/nbd0 <storage.vdi>}}。
システムが起動した時に自動的にスクリプトを実行するには root で以下のコマンドを実行してください:
 
# systemctl enable vboxservice
 
   
  +
==== VHD ====
上記の 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 と同様に、VHD イメージも [[QEMU]] の nbd モジュールでマウントできます。
これで、Arch Linux ゲストが動くようになったはずです。おめでとうございます。
 
   
  +
# modprobe nbd
ホストと Arch Linux ゲスト間でフォルダを共有したい場合は、次のセクションを読んで下さい。
 
  +
# qemu-nbd -c /dev/nbd0 ''storage''.vhd
  +
# mount /dev/nbd0p1 /mnt
   
  +
unmount は以下の通り。
=== 共有サービスの起動 ===
 
   
  +
# umount /mnt
上記の通り {{Pkg|virtualbox-guest-utils}} をインストールした後、{{ic|VBoxClient-all}} を使ってクリップボード共有、画面リサイズなどのサービスを起動してください。
 
  +
# qemu-nbd -d /dev/nbd0
* GNOME や KDE など、{{Ic|/etc/xdg/autostart/vboxclient.desktop}} を実行するものを使っている場合、なにもなさらなくて結構です。
 
* {{Ic|.xinitrc}} を使って実行する場合、{{Ic|.xinitrc}} で WM を起動する前に次の行を追加してください。
 
   
  +
=== 仮想ディスクの縮小 ===
# VBoxClient-all &
 
   
  +
仮想ディスクの縮小は ''.vdi'' ファイルでしか行うことができません。
=== USB ウェブカメラ/マイクロフォン を使う ===
 
   
  +
仮想マシンを起動して無駄なファイルを削除してください。{{Pkg|bleachbit}} などのツールを使うことができます ([http://bleachbit.sourceforge.net/download/windows Windows でも利用できます])。
{{Note|以下の作業をする前に VirtualBox 拡張パックをインストールする必要があります。詳しくは [[VirtualBox_Extras#Extension_pack]] を見て下さい。}}
 
   
  +
空き領域をゼロ埋めするツールは複数存在します:
# 仮想マシンを止め、ウェブカメラ/マイクロフォンが使われていないのを確認します。
 
  +
* Bleachbit を使用する場合、GUI で ''System > Free disk space'' にチェックを入れるか、CLI で {{ic|bleachbit -c system.free_disk_space}} を使ってください。
# メイン VirtualBox ウィンドウを立ち上げ Arch マシンの設定に行き、USB セクションを見ます。
 
  +
* UNIX ベースの環境の場合、{{ic|dd}} または {{AUR|dcfldd}} を使います (違いについては [http://superuser.com/a/355322 こちら] を参照):
# "Enable USB Controller" を選択します。それから "Enable USB 2.0 (EHCI) Controller" を選択します。
 
  +
:{{bc|1=# dcfldd if=/dev/zero of=''/fillfile'' bs=4M}}
# "Add filter from device" ボタンをクリック ('+' アイコンとケーブル)。
 
  +
:{{ic|fillfile}} がパーティションの上限に達すると、{{ic|1280 blocks (5120Mb) written.dcfldd:: No space left on device}} というメッセージが表示されます。ユーザースペースと予約ブロック以外が全てゼロで埋められたということになります。全ての空きブロックを上書きするために root でコマンドを実行してください。ext ファイルシステムを使っている場合、デフォルトではファイルシステムブロックの数パーセントがスーパーユーザー用に予約されています ([[Ext4#予約ブロック]]を参照)。
# リストから USB ウェブカメラ/マイクロフォンデバイスを選択する。
 
  +
:ゼロ埋めが完了したら、作成された {{ic|''fillfile''}} ファイルを削除してください。
# OK をクリックして VM を起動。
 
   
  +
* Windows の場合、以下のツールが存在します:
== ゲスト側の Arch Linux の共有フォルダ ==
 
  +
:*[http://technet.microsoft.com/en-us/sysinternals/bb842062.aspx Sysinternals Suite] の {{ic|sdelete}} を使う場合、仮想マシンに存在するドライブごとに {{ic|sdelete -s -z ''c:''}} を実行してください。
  +
:* スクリプトを使いたい場合、[http://blog.whatsupduck.net/2012/03/powershell-alternative-to-sdelete.html PowerShell を使う方法] が存在します (全てのドライブで繰り返してください)。
  +
::{{bc|PS> ./Write-ZeroesToFreeSpace.ps1 -Root ''c:\'' -PercentFree 0}}
  +
::{{Note|上記のスクリプトは PowerShell で管理者権限を使って実行する必要があります。デフォルトではスクリプトは実行できません。{{ic|Get-ExecutionPolicy}} で実行ポリシーを確認してください。ポリシーは {{ic|Set-ExecutionPolicy RemoteSigned}} で設定できます。}}
   
  +
空きディスク領域を消去できたら、仮想マシンをシャットダウンしてください。
共有フォルダはホスト側にある VirtualBox によって管理されます。共有フォルダが追加されると、自動でマウントされ読み込み専用になります。
 
VirtualBox から共有フォルダを作成すると {{Ic|/media/sf_''SHAREDFOLDERNAME''}} の中にとフォルダが設置されます。この時、ゲスト側の Arch の中のフォルダを使うには設定が必要になります。ゲスト側の Arch に共有フォルダを作成するには、pacman で Guest Additions パッケージをインストールした後、コマンドラインで以下を実行してください:
 
   
  +
仮想マシンを起動したら、ファイルシステムのチェックを実行することを推奨します。
# groupadd vboxsf
 
  +
* UNIX ベースのシステムの場合、{{ic|fsck}} を手動で使うことができます。
# gpasswd -a $USER vboxsf
 
  +
:* [[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'' からゼロ領域を削除:
{{Note|'''自動マウント'''を機能させるには、'''vboxservice''' サービスを有効にする必要があります。次のセクションの説明を見て下さい。}}
 
  +
$ VBoxManage modifymedium disk ''your_disk.vdi'' --compact
   
  +
{{Note|仮想マシンにスナップショットが存在する場合、存在する {{ic|.vdi}} ファイルごとに上記のコマンドを実行してください。}}
望むなら、シンボリックを作って home ディレクトリにアクセスしやすくすることができます。例として、"Dropbox" という名の共有フォルダがホスト側の VirtualBox の中に作成されている場合、/media/sf_Dropbox をゲスト側に自動で作成するには次のようにしてください:
 
   
  +
=== 仮想ディスクの拡大 ===
$ ln -s /media/sf_Dropbox/* ~/dropbox
 
   
  +
==== 一般的な方法 ====
Guest Additions iso が提供している .run スクリプトでも同じことができますが、Arch はこれを使うことを推奨しません、手動で行うべきだからです。このことについての提言はここで見られます: (pastebin: [http://pastebin.com/6cUE3kjF]) .
 
   
  +
仮想マシンを作成したときに選択したハードドライブのサイズが小さすぎて、容量一杯まで使い切ってしまった場合、VirtualBox マニュアルでは [https://www.virtualbox.org/manual/ch08.html#vboxmanage-modifymedium VBoxManage modifymedium] を使うことが推奨されています。しかしながら、このコマンドは VDI と VHD ディスクで動的にサイズを割り当てているときしか機能しません。固定サイズの仮想ディスクのサイズを変更したい場合、以下の手順に従ってください。
共有フォルダが自動でマウントされない場合、[https://bbs.archlinux.org/viewtopic.php?id=70780 手動でマウント]するか次のセクションを読んで下さい。
 
   
  +
まず、拡大したいディスクのとなりに新しく仮想ディスクを作成:
[[systemd|systemd]] を使うと起動時に問題が起こる時は、{{ic|/etc/fstab}} に {{ic|1=comment=systemd.automount}} を加えて下さい。こうすると、スタートアップ時ではなくマウントポイントにアクセスしたときに共有フォルダがマウントされます。さもなければカーネルアップデート後にシステムが使えなくなるかもしれません(guest additions を手動でインストールした場合)。
 
   
  +
$ VBoxManage createmedium disk -filename ''new.vdi'' --size ''10000''
desktop /media/desktop vboxsf uid=user,gid=group,rw,dmode=700,fmode=600,comment=systemd.automount 0 0
 
   
  +
サイズは MiB で指定します。例えば 10000MiB ~= 10GiB です。''new.vdi'' は新しく作成するハードドライブの名前になります。
{{ic|nofail}} オプションをテストするのにも時間を取ってください。{{ic|mount.vboxsf}} はこれを管理できません (2012-08-20)。
 
   
  +
{{Note|デフォルトでは、このコマンドは標準(動的割り当てに対応する)ファイル形式のバリアントを使用するためソースの仮想ディスクと同じファイル形式のバリアントは使用されません。 old.vdi のサイズが固定されていてこのバリアントを保持したい場合は、パラメーターを追加します {{ic|--variant Fixed}}.}}
desktop /media/desktop vboxsf uid=user,gid=group,rw,dmode=700,fmode=600,nofail 0 0
 
   
  +
次に、古い仮想ディスクを新しい仮想ディスクに複製します (しばらく時間がかかります):
=== ゲストの時刻をホストに同期させる ===
 
   
  +
$ VBoxManage clonemedium disk ''old.vdi'' ''new.vdi'' --existing
時刻を同期させるには、まずホスト側に {{Pkg|virtualbox-guest-utils}} をインストールする必要があります([[#Guest Additions をインストール|前のセクション]]を見て下さい)。それから次を実行して次のブート時にサービスを有効にします
 
# systemctl enable vboxservice.service
 
   
  +
古いハードドライブを取り外して新しいドライブを接続してください (斜体の引数は適当な文字列に置き換えてください):
今すぐサービスを開始するには
 
# systemctl start vboxservice.service
 
   
  +
$ VBoxManage storageattach ''VM_name'' --storagectl ''SATA'' --port ''0'' --medium none
共有フォルダの自動マウント機能を使うときにもこのデーモンを起動する必要があります。
 
  +
$ VBoxManage storageattach ''VM_name'' --storagectl ''SATA'' --port ''0'' --medium ''new.vdi'' --type hdd
  +
  +
ストレージコントローラとポート番号を確認するには、{{ic|VBoxManage showvminfo ''VM_name''}} コマンドを使います。以下のように出力されます (斜字に注目):
  +
  +
{{bc|
  +
[...]
  +
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 をアンマウントして再起動してください。
  +
  +
{{Note|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 や {{ic|VBoxManage}} を使うよりも ''XML'' ファイルを編集するほうが簡単だという場合、仮想マシンの ''.vbox'' ファイルで仮想ディスクを交換(あるいは追加)することができます。GUID とフォーマットを必要に応じて置き換えるだけです:
  +
  +
{{hc|ArchLinux_vm.vbox|2=
  +
<HardDisk uuid="''{670157e5-8bd4-4f7b-8b96-9ee412a712b5}''" location="''ArchLinux_vm.vdi''" format="''VDI''" type="Normal"/>
  +
}}
  +
  +
{{ic|<StorageController>}} のサブタグ {{ic|<AttachedDevice>}} の GUID も新しく置き換えてください:
  +
  +
{{hc|ArchLinux_vm.vbox|2=
  +
<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].}}
  +
  +
==== Linux ホストと他のホスト間で転送 ====
  +
  +
ハードディスクとスナップショットが保存されるパスの情報は ''.vbox'' 拡張子のファイルの {{ic|<HardDisks> .... </HardDisks>}} タグにあります。手動で編集したりスクリプトを使うことで必要な変更を行うことができます。
  +
  +
{{bc|1=
  +
#!/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"
  +
}}
  +
  +
{{Note|
  +
* Windows ホストで使用する仮想マシンを準備する場合は、パス名の末尾に/ではなくバックスラッシュ\を使用する必要があります。
  +
*スクリプトは、ファイル名で {{ic|{}} を検索してスナップショットを検出します。
  +
*新しいホストで実行するには、まず ''Machine -> Add...'' をクリックしてレジスタに追加するか、ホットキー Ctrl + A を使用して 設定も含む ".vbox" を参照するか。コマンドライン {{ic|VBoxManage registervm "filename" '.vbox を使用します。}}
  +
}}
  +
  +
=== 仮想ディスクを複製して新しい UUID を割り当てる ===
  +
  +
UUID は VirtualBox で広く使われています。仮想マシンと仮想ディスクにはそれぞれ異なる UUID が存在します。VirtualBox で仮想マシンを起動すると、VirtualBox は仮想マシンのインスタンスの全ての UUID を記録します。VirtualBox で登録されるアイテムを確認するには [http://www.virtualbox.org/manual/ch08.html#vboxmanage-list VBoxManage list] を参照してください。
  +
  +
仮想ディスクファイルを手動でコピーして仮想ディスクを複製した場合、同じ仮想マシンでディスクを使うときは複製した仮想ディスクに新しい UUID を割り当てる必要があります。
  +
  +
以下のコマンドを使って新しい UUID を仮想ディスクに割り当てられます:
  +
$ VBoxManage internalcommands sethduuid ''/path/to/disk.vdi''
  +
  +
{{Tip|[http://www.virtualbox.org/manual/ch08.html#vboxmanage-clonevdi VBoxManage clonemedium] を使用する場合は手動で UUID を新しく割り当てる必要はありません。}}
  +
  +
{{Note|上記のコマンドは [[#VirtualBox によってサポートされているフォーマット|VirtualBox によってサポートされている仮想ディスクフォーマット]]を全てサポートしています。}}
  +
  +
== ヒントとテクニック ==
  +
  +
高度な設定については、[[VirtualBox/ヒントとテクニック]] を見てください。
   
 
== トラブルシューティング ==
 
== トラブルシューティング ==
   
  +
=== キーボードとマウスが仮想マシンにロックされる ===
=== modprobe Exec フォーマットエラー ===
 
   
  +
これは、仮想マシンがキーボードとマウスの入力をキャプチャしたことを意味します。右の {{ic|Ctrl}} キーを押すだけで、入力は再びホストを制御することができます。
あなたのシステムを最新状態にしてください:
 
pacman -Syu
 
   
  +
キーを押すことなくマウスでホストを行ったり来たりして仮想マシンを透過的にコントロールし、シームレスに統合するには、guest addtions をゲスト内にインストールします。[[VirtualBox/Arch Linux をゲストにする#Guest Additions をインストール]]を読んで下さい、あなたのゲストが Arch Linux ならば、公式の VirtualBox ヘルプを読んで下さい。
=== VBOX_E_INVALID_OBJECT_STATE (0x80BB0007) ===
 
   
  +
=== 64ビット OS のクライアントオプションが表示されない ===
これは VM を正常終了しないと発生することがあります。VM をアンロックしてください:
 
  +
VBoxManage controlvm nArch poweroff
 
  +
VM クライアントを起動したときに、64ビットオプションが使えない場合、CPU の仮想化機能 ({{ic|VT-x}}) が BIOS で有効になっていることを確認してください。
  +
  +
Windows をホストとして使っている場合、Hyper-V を無効化する必要があります。Hyper-V が有効になっていると VirtualBox が VT-x を使えなくなります [https://www.virtualbox.org/ticket/12350]。
  +
  +
=== VirtualBox の GUI がホストの GTK テーマと一致しない ===
  +
  +
VirtualBox のような Qt ベースのアプリケーションのテーマ化に関する情報については、[[Qt と GTK アプリケーションの外観の統合]]を参照してください。
  +
  +
=== Ctrl+Alt+Fn をゲストに送信できない ===
  +
  +
ゲスト 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}} を同時に押してください。
   
 
=== USB サブシステムがホスト側もしくはゲスト側で動かない ===
 
=== USB サブシステムがホスト側もしくはゲスト側で動かない ===
289行目: 381行目:
   
 
また、あなたのユーザーを '''storage''' グループのメンバーに追加してください。
 
また、あなたのユーザーを '''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 を使用するか、ディスク イメージのマウントに使用する他のユーティリティを使用する必要があります。
   
 
=== ホストオンリーのネットワークインターフェースを作成できない ===
 
=== ホストオンリーのネットワークインターフェースを作成できない ===
302行目: 422行目:
 
vboxnetflt
 
vboxnetflt
   
  +
{{Note|これらは、以前は {{ic|/etc/rc.conf}} の {{ic|MODULES}} 配列に追加されていましたが、現在は廃止されました。}}
{{Note|These used to be added to the {{ic|MODULES}} array in {{ic|/etc/rc.conf}}. This is now deprecated.}}
 
   
 
このトピックについて詳しい情報が[https://bbs.archlinux.org/viewtopic.php?id=130581 ここ]にあります。
 
このトピックについて詳しい情報が[https://bbs.archlinux.org/viewtopic.php?id=130581 ここ]にあります。
   
  +
=== Failed to insert module ===
=== WinXP: ビット深度を 16 より上げることができない ===
 
   
  +
モジュールをロードしようとすると以下のような問題が発生する場合:
16-ビット色深度で動作させている場合、アイコンの見た目が毛羽立ったりむらがでるかもしれません。しかし、色深度をもっと高く変えようとすると、システムの解像度が低くなってしまったり、もしくは全く深度が変えられないかもしれません。これを修正するには、{{ic|regedit}} を起動し次のキーをゲスト側の Windows XP レジストリに追加します:
 
  +
Failed to insert 'vboxdrv': Required key not available
  +
モジュールが署名されていること、あるいはカーネルコンフィグで {{ic|CONFIG_MODULE_SIG_FORCE}} が無効になっていることを確認してください。
   
  +
=== VBOX_E_INVALID_OBJECT_STATE (0x80BB0007) ===
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services]
 
"ColorDepth"=dword:00000004
 
   
  +
これは VM を正常終了しないと発生することがあります。VM をアンロックしてください:
それからデスクトップのプロパティウィンドウから色深度を変えてください。何も怒らない場合、強制的に画面を再描写させてください(つまり、{{ic|Host+F}} で再描写するか、フルスクリーンにしてください)。
 
  +
VBoxManage controlvm nArch poweroff
   
  +
=== "NS_ERROR_FAILURE" が表示されメニューアイテムが表示されない ===
=== .vdi イメージのマウント ===
 
   
  +
仮想マシンの最初の起動時に以下のエラーメッセージが表示される場合:
以下の方法では'''静的な'''サイズの vdi イメージしか動きません!動的なサイズのイメージは'''簡単にはマウントできません'''!まず .vdi イメージの情報が必要です:
 
   
  +
{{bc|Failed to open a session for the virtual machine debian.
$ VBoxManage internalcommands dumphdinfo Arch_64min.vdi |grep offData
 
  +
Could not open the medium '/home/.../VirtualBox VMs/debian/debian.qcow'.
Header: offBlocks=4096 offData=69632
 
  +
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:
ここで、{{ic|offData}} に 32256 を'''加算してください'''。例: 32256 + 69632 = 101888
 
  +
NS_ERROR_FAILURE (0x80004005)
  +
Component:
  +
Medium
  +
}}
   
  +
VirtualBox を終了して新しいマシンのファイルを全て削除して、virtualbox の設定ファイルから {{ic|MachineRegistry}} メニュー (あるいはあなたが作成した問題のマシン) の最後の行を削除してください:
そして vdi イメージをマウントします:
 
   
  +
{{hc|~/.config/VirtualBox/VirtualBox.xml|2=
# mount -t ext4 -o rw,noatime,noexec,loop,offset=101888 Arch_64min.vdi /mnt/
 
  +
...
  +
<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"/>
  +
<strike><MachineEntry uuid="{00000000-0000-0000-0000-000000000000}" src="/home/void/VirtualBox VMs/lastvmcausingproblems/lastvmcausingproblems.qcow"/></strike>
  +
</MachineRegistry>
  +
...
  +
}}
   
  +
新しい仮想ディスクを作成するときに ''QCOW''/''QCOW2''/''QED'' ディスク形式を選択すると時々発生します。
=== マウント失敗によるスタートアップ時の問題 ===
 
   
  +
=== 仮想化命令が使用できない場合の OpenBSD の使用不可 ===
カーネルをアップグレードした後、[[systemd]] セットアップで問題が発生したら、システムを起動するときに ''init=/bin/bash'' (緊急シェルが動かない場合) を付ける必要があります。
 
   
  +
OpenBSD は、仮想化命令 (VT-x AMD-V) が有効になっていない他のハイパーバイザー上では正常に動作すると報告されていますが、これらの命令がない VirtualBox 上で実行される OpenBSD 仮想マシンは、 多くのセグメンテーションフォールトを発生させて使用不能になるでしょう。VirtualBox を ''-norawr0'' 引数で起動すれば、[https://www.virtualbox.org/ticket/3947 この問題は解決するかも]しれません。このようにしてみてください。
root=/dev/mapper/vg_main-lv_root ro vga=792 resume=/dev/mapper/vg_main-lv_swap init=/bin/bash
 
   
  +
$ VBoxSDL -norawr0 -vm ''name_of_OpenBSD_VM''
それから ''root''-ファイルシステムを書き込み権限付きでマウントします:
 
   
  +
=== Windows ゲストで "The specified path does not exist. Check the path and then try again." エラー ===
# mount / -o remount,rw
 
   
  +
管理者権限を必要とする .exe ファイルを Windows ゲストの共有フォルダから実行するとエラーメッセージが発生します。詳しくは [https://www.virtualbox.org/ticket/5732 バグレポート] を見てください。
[[#ゲスト側の Arch Linux の共有フォルダ]] に合わせて /etc/fstab を変更します。そして bash シェルから systemd を exec します:
 
   
  +
複数の対処方法があります:
# exec /bin/systemd
 
   
  +
# Control Panel -> Action Center -> "Change User Account Control settings" の左側 -> スライダーを "Never notify" に設定 -> OK して再起動することで UAC を無効化する
=== ゲスト側の Arch Linux でコピーアンドペーストが機能しない ===
 
  +
# 共有フォルダからゲストのフォルダにファイルをコピーしてから実行する
   
  +
インターネット上には信頼されるサイトのリストに VBOXSVR を追加するように書かれていることもありますが、その方法は Windows 7 以上では上手く行きません。
{{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 ファイルの行はこのようになるはずです:
 
   
  +
=== Windows 8.x Error Code 0x000000C4===
# Allow sudo for user 'you' and let him run VBoxClient-all without requiring a password
 
you ALL = PASSWD: ALL, NOPASSWD: /usr/bin/VBoxClient-all
 
   
  +
OS Type で Win 8 を選んだのに、起動時に以下のエラーコードが表示される場合、{{ic|CMPXCHG16B}} CPU 命令を有効化してみてください:
{{Note|sudoers を編集する時は {{ic|visudo}} を使って下さい。保存するときに構文エラーをチェックします。}}
 
   
  +
$ vboxmanage setextradata ''virtual_machine_name'' VBoxInternal/CPUM/CMPXCHG16B 1
=== ゲスト 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
 
   
  +
=== Windows 8, 8.1, 10 がインストール・起動できない、あるいは "ERR_DISK_FULL" エラーが表示される ===
それからユーザーを '''uucp''' グループに追加して:
 
  +
''Settings > Storage > Controller:SATA'' から "Use Host I/O Cache" にチェックを入れて VM の設定を更新してください。
# gpasswd -a $USER uucp
 
ログインしなおして下さい。
 
   
  +
=== WinXP: ビット深度を 16 より上げることができない ===
=== レジュームが失敗する ===
 
レジュームを失敗させるバグが報告されています: https://www.virtualbox.org/ticket/11289。回避方法はシンプルです: VM を終了するときにはいつも Host+q かメニューを使って下さい。
 
   
  +
16-ビット色深度で動作させている場合、アイコンの見た目が毛羽立ったりむらがでるかもしれません。しかし、色深度をもっと高く変えようとすると、システムの解像度が低くなってしまったり、もしくは全く深度が変えられないかもしれません。これを修正するには、{{ic|regedit}} を起動し次のキーをゲスト側の Windows XP レジストリに追加します:
=== System Images in Btrfs ===
 
In 2010 there were reports that OS disk images would not start if they were attached via a virtual SATA device. It was reportedly fixed, and seemed to be. But as of around March 2013, that particular bug report has been [https://www.virtualbox.org/ticket/6905 repoened]. This can be fixed by enabling the use of the host I/O cache, which is disabled by default with virtual SATA interfaces.
 
   
  +
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services]
=== vagrant up の問題 ===
 
  +
"ColorDepth"=dword:00000004
最新バージョンの Virtualbox(4.2.14-1) では {{ic|vagrant up}} コマンドは以下のように失敗します:
 
   
  +
それからデスクトップのプロパティウィンドウから色深度を変えてください。何も怒らない場合、強制的に画面を再描写させてください(つまり、{{ic|Host+F}} で再描写するか、フルスクリーンにしてください)。
Command: ["import",
 
"/Users/username/.vagrant.d/boxes/precise32/virtualbox/box.ovf"]
 
Stderr: 0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
 
Interpreting
 
/Users/username/.vagrant.d/boxes/precise32/virtualbox/box.ovf...
 
OK.
 
0%...
 
Progress object failure: NS_ERROR_CALL_FAILED
 
   
  +
=== Windows: 3D アクセラレーションが有効な場合の画面のちらつき ===
[https://www.virtualbox.org/ticket/11895 修正]がリリースに入るまで、回避対策を取るか VirtualBox をダウングレードする必要があります。
 
   
  +
VirtualBox > 4.3.14 には、3D アクセラレーションを使用する Windows ゲストがちらつくリグレッションがあります。r120678 以降、[[環境変数]]の設定を認識するパッチが実装されているため、次のように VirtualBox を起動します。
Workaround by creating manifests for each box in {{ic|~/.vagrant.d/boxes/BoxName/virtualbox}}:
 
   
  +
$ CR_RENDER_FORCE_PRESENT_MAIN_THREAD=0 VirtualBox
openssl sha1 *.vmdk *.ovf > box.mf
 
   
  +
VirtualBox サービスがまだ実行されていないことを確認します。[https://www.virtualbox.org/ticket/13653 VirtualBox bug 13653] を参照してください。
You can downgrade Virtualbox. If you have the old package file inside your cache just downgrade it via:
 
   
  +
=== Wayland で VirtualBox を起動できない: Segmentation fault ===
sudo pacman -U /var/cache/pacman/pkg/virtualbox-4.2.12-3-x86_64.pkg.tar.xz
 
   
  +
この問題は、Qt が Wayland を検出する (例えば、{{ic|1=XDG_SESSION_TYPE=wayland}})一方で、VirtualBox がまだ Wayland で動作しないために発生します。{{Bug|58761}} と [https://www.virtualbox.org/ticket/18679 upstream bug] を参照してください。
This error seems to appear on all platforms: http://www.marshut.com/pzisi/progress-object-failure-ns-error-call-failed-when-running-vagrant-up-in-getting-started-guide.html#qhihz
 
   
  +
[[環境変数]] {{ic|1=QT_QPA_PLATFORM=xcb}} を設定することで、Qt のプラットフォーム検出を無効にし、Wayland 上で X11 を強制的に動作させることができます。他の Qt アプリケーション (通常は Wayland でうまく動作する) に影響を与えないように、{{ic|1=QT_QPA_PLATFORM=xcb}} は VirtualBox 起動時のみ設定されるべきです。
It's unclean for the moment. It could be regression inside Virtualbox or a issue inside Vagrant. When you delete the cache you can downgrade via ArchLinux [https://aur.archlinux.org/packages/downgrader/ downgrader ] (I didn't test it correctly, but I assume this works, else
 
check the wiki page for downgrading: https://wiki.archlinux.org/index.php/Downgrading_Packages)
 
   
  +
[[デスクトップエントリ]]から起動する場合は、[[デスクトップエントリ#環境変数の修正]]の指示に従い、{{ic|1=Exec=VirtualBox ...}} で始まる行を {{ic|1=Exec=env QT_QPA_PLATFORM=xcb VirtualBox ...}} に変更してください。シェルから起動する場合は、エイリアス([[Bash#エイリアス]]) を {{ic|virtualbox}} から {{ic|1=env QT_QPA_PLATFORM=xcb virtualbox}} に変更します。
For more Information, check the issue page on github [https://github.com/mitchellh/vagrant/issues/1847 Clean install on OS X 10.8.4 w/ latest VirtualBox not working]
 
   
  +
{{Note|Wayland でマウスやキーボードに問題がある場合は、上記の設定もお試しください。}}
According to the [https://twitter.com/mitchellh/status/348886504728305664 Vagrant creator on Twitter], this is a VirtualBox bug. On 2013-06-25, he said that they fixed the bug in SVN, and he's waiting on a release. Also, I can confirm that this is a multi-platform issue, 4.2.14 was broken for me on Win7.
 
   
  +
=== Intel グラフィックスを使用したゲストでのランダムフリーズ ===
This issue has been solved inside the virtualbox release virtualbox-4.2.16-1
 
   
  +
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 です。もし英語版に 変更 があれば、翻訳の同期を手伝うことができます。