Vagrant + VirtualBox + Ubuntu 環境の Guest Addtions を更新する手順
本記事では Vagrant+VirtualBox+Ubuntu環境の Guest Additions を手動で更新する手順について見ていきます。
【目次】
[1]はじめに
VirtualBox の Guest Additions は、共有フォルダ、時刻同期、マウスポインタの統合、クリップボード共有、画面リサイズ等々、ホストOSとゲストOSを密に統合して使いやすくしてくれる機能を提供してくれます。
- Guest Additions
Vagrant のベースBOXから作成した VirtualBox の仮想マシンには、この Guest Additions が予めインストールされていると思います。(Vagrant の VirtualBox 版ベースBOXの要件として、VirtualBox Guest Additions のインストールが必要となっているようです。)
- Creating a Base Box
しかし、ゲストOSをバージョンアップしたり、ホスト側の VirtualBox をバージョンアップした場合など、Guest Additions の再インストールが必要な場合もあります。
あるいは、Guest Additions が提供する機能(例えば画面リサイズや共有フォルダなど)がうまく動作しない場合などに、再インストールして試してみたい場合もあるかと思います。(特に、ソフトウェアのアップデートを行ったときなど)
ところで、Vagrant には、ホストの Guest Additions をゲストOSに自動的にインストールしてくれるプラグインがあるようです。(ネットを検索すると情報があります。)
しかし、余分な依存関係を増やしたくないとか、仮想マシン個別に対応したいとか、プラグインがオーバースペックな場合もあると思います。
そこで、本記事ではプラグインに頼らず、手動で Guest Additions を更新する手順について見ていきます。
なお、本記事は、ホストOSが Windows、ゲストOSが Ubuntu である環境を対象としています。また、ベースBOXとして、bento/ubuntu-18/20-04 で動作確認しています。
[2]概要:作業フロー
ここでは作業の流れを図で整理しておきます。以降ではこの流れに沿って具体的な作業手順を見ていきます。
[3]具体的な作業手順
以下では具体的な作業手順を見ていきますが、以下の作業を始める前にスナップショットを取っておくと、更新前の状態に戻せますので安心して作業ができます。
スナップショットについては以下の記事を参考にしてください。
(1)光学ドライブに VBoxGuestAdditions.iso ファイルを追加
Guest Additions のキット(デバイスドライバやシステムアプリケーション)は、「VBoxGuestAdditions.iso」(仮想 CD-ROM ファイル)で提供されています。
- Oracle® VM VirtualBox® User Manual
- 4.2.2. Guest Additions for Linux
- https://www.virtualbox.org/manual/ch04.html#additions-linux
この仮想 CD-ROM ファイル(VBoxGuestAdditions.iso)を仮想マシン(Ubuntu)から見える(マウントできる)ように設定します。
もし仮想化マシンが実行中の場合は、仮想マシンをシャットダウン(vagrant halt コマンドを実行)します。
そして、Oracle VM VirtualBoxマネージャーを起動し、Guest Addtions を設定したい仮想マシンの「設定」をクリックして「ストレージ」画面を表示します。
最終的には下図のように、「コントローラー IDE」に「VBoxGuestAdditions.iso」が表示されるようにします。また可能なら、属性を「IDE プライマリマスター」にします。
既に「VBoxGuestAdditions.iso」が表示されている場合は、追加済みですので、次の(2)仮想マシンの起動へ進みます。
もし「コントローラー IDE」に何も表示されていないか、他のCD-ROMが設定されている場合は、以下の手順で追加します。
「コントローラー IDE」のところをクリックすると、「光学ドライブの追加」と「ハードディスクの追加」ボタンが表示されますので、「光学ドライブの追加」ボタンをクリックします。
すると以下の「光学ディスク選択」画面が表示されます。
上図はリストに何も表示されていませんが、もし一覧に「Attached」または「Not Attached」のどちらかに「VBoxGuestAdditions.iso」が表示されていたら、それを選択して「選択」ボタンをクリックして画面を閉じます。
「VBoxGuestAdditions.iso」が一覧にない場合は、「追加」ボタンをクリックします。
するとWindowsのファイル選択画面が表示されます。
「VBoxGuestAdditions.iso」ファイルは、VirtualBox のインストールフォルダにありますので、このフォルダを開きます。
(私の Windows 環境だと、インストールフォルダは「C:\Program Files\Oracle\VirtualBox」です。)
ここで「VBoxGuestAdditions.iso」を選択して画面を閉じると、光学ディスク選択画面に戻り、リストの「Not Attached」に「VBoxGuestAdditions.iso」が表示されます。
ここで「VBoxGuestAdditions.iso」を選択して「選択」ボタンをクリックして閉じると、「コントローラー IDE」に追加されていると思います。
なお、「VBoxGuestAdditions.iso」以外の CD-ROM / DVD が設定されている場合(リストに2つ以上ある場合)、可能なら「VBoxGuestAdditions.iso」の属性を「IDE プライマリマスター」に変更しておくと後の作業が便利です。
「IDE プライマリマスター」に変更しない場合でも、手順(5)CD-ROM のマウント方法を調整することにより、インストールは可能です。
また、そもそも不要な CD-ROM が追加されていただけ、ということであれば「VBoxGuestAdditions.iso」以外を除去しておく方法もあります。除去は手順(10)でも触れます。
(2)仮想マシンの起動(vagrant up)
仮想マシンに Guest Additions の CD-ROM を追加したら、vagrant up コマンドで仮想マシンを起動します。
お好みの端末ソフト(コマンドプロンプトや Windows PowerShell)から以下のコマンドを実行します。
vagrant up
(3)仮想マシンにログイン(vagrant ssh)
仮想マシンが起動したら(vagrant up コマンドが終了したら)、引き続き vagrant ssh コマンドを実行して仮想マシンにログインします。
- vagrant ssh - Command-Line Interface
vagrant ssh
vagrant ssh コマンドを実行すると、パスワードを入力しなくても vagrant ユーザでログインします。
ログインしたら、プロンプトが「vagrant@vagrant:~$」になると思います。
なお、Vagrantfile の設定を「vb.gui = true」で仮想マシンを実行している場合、VitualBox の仮想マシンの画面からログインすることもできますが、ここでは VirtualBox の画面は利用せず、端末ソフト(コマンドプロンプトや Windows PowerShell)から vagrant ssh コマンドでログインします。
本作業内容は Guest Additions を構成してログアウトするだけなので、vagrant ssh コマンドを利用するほうがお手軽です。
また、GUI が不調な場合に Guest Additions の更新を行いたい場合も、vagrant ssh なら問題なく作業できる可能性があります。
(4)ビルドツールのセットアップ
Linux 版の Guest Additions のインストールでは外部カーネルモジュールのビルドが行われますので、関連する開発ツール群をインストールしておく必要があります。
以下のコマンドで、Guest Additionsのインストールに必要なパッケージ(Linuxカーネルヘッダーと基本的な開発ツール)をインストールしておきます。
sudo apt-get update
sudo apt-get install linux-headers-$(uname -r) build-essential dkms
(5)CD-ROM のマウント
最初の手順で光学ドライブに追加した「VBoxGuestAdditions.iso」の内容に Guest OSである Ubuntu からアクセスできるように、CD-ROM ドライブをマウントします。
本例ではカレントディレクトリに「vbox_cdrom」ディレクトリを作って、そこに CD-ROM をマウントします。(ディレクトリ名はお好みの名前を利用してください。)
mkdir ./vbox_cdrom
sudo mount /dev/cdrom ./vbox_cdrom
念のため、CD-ROMの内容を確認してみます。
(以下は VirtualBox 6.1.38 での内容です。)
vagrant@vagrant:~$ ls -1 ./vbox_cdrom
AUTORUN.INF
autorun.sh
cert
NT3x
OS2
runasroot.sh
TRANS.TBL
VBoxDarwinAdditions.pkg
VBoxDarwinAdditionsUninstall.tool
VBoxLinuxAdditions.run
VBoxSolarisAdditions.pkg
VBoxWindowsAdditions-amd64.exe
VBoxWindowsAdditions.exe
VBoxWindowsAdditions-x86.exe
windows11-bypass.reg
このうち Ubuntu 環境では「VBoxLinuxAdditions.run」を利用します。
(参考)CD-ROM のマウントについて
「/dev/cdrom」は「/dev/sr0」を指しています。IDEプライマリマスターのCD-ROMは、/dev/cdrom で参照できます。
IDEプライマリマスターではない2つ目の CD-ROM は、/dev/sr1 のように割り当てられますので、該当する /dev/srN を mount コマンドで割り当てます。
ちなみに、bento/ubuntu-18/20/24-04 を元に作成した BOX + Ubuntu Desktop 環境で GUI からログインすると、VirtualBox 画面で設定した光学ドライブは、 /media/vagrant ディレクトリ下に CD-ROM のラベルに対応したディレクトリにマウントされるようです。
(6)VBoxLinuxAdditions.run の実行
CD-ROM にある「VBoxLinuxAdditions.run」ファイルを実行することでバージョンアップを行います。
sudo sh ./vbox_cdrom/VBoxLinuxAdditions.run
成功すると、最後に以下のようなメッセージが表示されると思います。
VirtualBox Guest Additions: Running kernel modules will not be replaced until
the system is restarted
メッセージの通り、更新をシステムに反映させるにはシステムを再起動する必要があります。
以降の作業は、再起動するための後始末です。
(7)CD-ROM のマウント解除
Guest Additions のバージョンアップ処理が終われば、Guest Additions の CD-ROM は不要ですので、umount コマンドでマウントを解除しておきます。
sudo umount ./vbox_cdrom
また、マウント用に作成したディレクトリ(本例では vbox_cdrom)も削除してかまいません。
(8)ログアウト
ログアウトは、logout または exit コマンドを利用します。
logout
ログアウトすると、vagrant ssh を実行した端末ソフト(コマンドプロンプトや Windows PowerShell)に戻ります。
(9)仮想マシンの終了(vagrant halt)
以下のコマンドで仮想マシンを終了(停止)します。
vagrant halt
次回 vagrant up で仮想マシンを起動する時には、今回の変更内容が反映されています。
(10)光学ドライブから VBoxGuestAdditions.iso ファイルを除去
光学ドライブに「VBoxGuestAdditions.iso」を追加したままでも問題があるわけではありませんが、ここでは除去しておく手順を書きます。
Oracle VM VirtualBoxマネージャーを起動して、仮想マシンの「設定/ストレージ」のコントローラー IDE Controller に表示されている「VBoxGuestAdditions.iso」を選択します。
選択状態で右クリックすると「割り当てを除去」メニューが表示されますので、これを選択すると除去されます。
コメント
コメントを投稿