VirtualBox/Arch Linux をゲストにする

提供: ArchWiki
2020年8月28日 (金) 10:53時点におけるKusanaginoturugi (トーク | 投稿記録)による版 (VirtualBoxより分離)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
ナビゲーションに移動 検索に移動

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

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

EFI モードでインストール

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

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

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

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

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

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

UEFI Virtualbox installation boot problems も参照。

Guest Additions をインストール

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

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

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

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

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

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

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

# modprobe -a vboxguest vboxsf vboxvideo

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

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

VirtualBox ゲストサービスを起動

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

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

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

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

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

# VBoxClient-all

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

# systemctl enable vboxservice.service

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

# systemctl start vboxservice.service

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

ホストからゲストに SSH

仮想マシン設定のネットワークタブの "Advanced" にはポートフォワーディングを作成するツールがあります。ゲストの ssh ポート 22 をホストの 3022 ポートなどに転送することで、以下のように接続できるようになります:

user@host$ ssh -p 3022 $USER@localhost

共有フォルダのかわりに SSHFS を使う

ポートフォワーディングと sshfs を使うことで、ゲストのファイルシステムをホストにマウントすることができます:

user@host$ sshfs -p 3022 $USER@localhost:$HOME ~/shared_folder