Ubuntu 22.04 LTS 日本語デスクトップ環境のVagrant BOXを作る

本記事は、Ubuntu 22.04 LTS のベースBOXから日本語デスクトップ環境のBOXを作成します。このBOXを利用すれば、デスクトップ環境の仮想マシンを素早く作ることができるようになり、さらに、開発ツールを追加したBOXを作成する際のベースBOXとしても利用できます。

【目次】

[1]はじめに

本ブログでは、Vagrant+VirtualBox+Ubuntu 上に日本語デスクトップ環境を構築する記事として、Ubuntu 18.04 LTS、Ubuntu 20.04 LTS 版を書きました。
本記事はその Ubuntu 22.04 LTS 版です。

基礎的なベースBOXにデスクトップ関連のパッケージを追加する作業は、(特にダウンロードに)かなり時間がかかりますので、一度作ったデスクトップ環境をパッケージ化してBOX登録しておくと、そのBOXからデスクトップ環境の仮想マシンを素早く作ることができるようになります。さらに、このBOXに開発ツールを追加したBOXを作成する際のベースBOXとして利用することもできます。

本記事では、Ubuntu 22.04 LTSを対象として、Vagrant Cloudで提供されているベースBOXから日本語デスクトップ環境を仮想マシンに作りこみ、それをパッケージ化してBOX登録します。

具体的には以下のような流れで作業を行います。
  1. Ubuntu日本語デスクトップ環境を構築するための仮想マシンを定義するため、プロジェクトディレクトリを作成してVagrantfileを設定します。
  2. 英語版デスクトップ環境の仮想マシンを作成します。
  3. 仮想マシン上に日本語環境を構築します。
  4. 仮想マシンの内容をパッケージ化してBOX登録を行います。
  5. 登録したBOXから新しい仮想マシンを作成して動作確認を行います。
  6. (オプション)BOX作成に利用した仮想マシン環境を破棄します。

私が BOX 作成に利用した環境は以下の通りです。
  • ホストOS:Microsoft Windows 11 Pro 21H2(OSビルド 22000.1098)
  • VirtualBox:7.0.10
  • Vagrant: 2.3.7
  • ゲストOSのベースBOX: bento/ubuntu-22.04 (v202309.08.0)

[2]仮想マシンの定義

Vagrantは、BOXからVagrantfileという名前のファイルに記述された設定に従ってVirtualBoxの仮想マシンを作成します。このVagrantfileがあるディレクトリを、便宜上、プロジェクトディレクトリということにします。

ここでは、プロジェクトディレクトリを作成し、Ubuntu 日本語デスクトップ環境構築用の仮想マシンを作成するためのVagrantfileを作成します。

(1)プロジェクトディレクトリの作成

はじめに、Vagrantのプロジェクトディレクトリを作成します。
今回はプロジェクトディレクトリ名を「jpgui_ubuntu22」として新規作成します。そして、そのディレクトリへ移動してカレントディレクトリにします。

mkdir  ubuntu22_jpgui
cd  ubuntu22_jpgui

以降は、このプロジェクトディレクトリをカレントディレクトリにして、コマンド操作を行います。

(参考)

プロジェクトディレクトリ名はVirrtualBoxの仮想マシンを作成した時の仮想マシン名の一部に使われます(VirtualBoxの画面にある仮想マシンの一覧から確認できます)。

(2)Vagrantfileの作成

本記事では、Ubuntu 22.04 LSTのベースBOXとして、Vagrant Cloud で公開されている「bento/ubuntu-22.04」(https://app.vagrantup.com/bento/boxes/ubuntu-22.04)を利用することにします。

以下のように、ベースBOXを指定してvagrant initコマンドを実行すると、カレントディレクトリにVagrantfileが作成されます。(「Vagrantfile」という名前のファイルが作成されます。)

vagrant init bento/ubuntu-22.04

このファイルの中身をテキストエディタで開くと、以下のように、config.vm.boxが「bento/ubuntu-22.04」と設定されていると思います。

config.vm.box = "bento/ubuntu-22.04"

ちなみに、#から始まる行はコメントです。結果として、config.vm.box以外の項目は設定されていないと思います。

今回は、Vagrantfileを以下の内容で設定します(コメントは削除しています)。

# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant.configure("2") do |config|
  config.vm.box = "bento/ubuntu-22.04"

  config.vm.provider "virtualbox" do |vb|
    vb.gui = true
    vb.memory = "8192"
    vb.cpus = 2
    vb.customize [
      "modifyvm", :id,
      "--vram", "256",
      "--graphicscontroller", "vmsvga",
      "--accelerate3d", "off",
      "--vrde",  "off",
      "--clipboard", "bidirectional",
    ]
  end
end

(補足)


[3]仮想マシンの作成

Vagrantfile が用意できたらコマンドプロンプト(または PowerShell)から vagrant up コマンドを実行して仮想マシンを作成します。

vagrant up

vagrant upコマンドでは以下のことが行われています。
  • 元となるBOX「bento/ubuntu-22.04」がローカルPC上になければ、Vagrant CloudからダウンロードしてBOX登録してくれます。
  • VirtualBoxに、ubuntu22_jpgui_default...という仮想マシンが登録され、VirtualBoxの設定画面から内容の確認ができます。
さて、仮想マシンが起動したら、コマンドプロンプト(または PowerShell)から以下の vagrant ssh を実行してシェルにログインします。

vagrant ssh

シェルから以下のコマンドを実行して Ubuntu のデスクトップ環境(英語版)をインストールします。

sudo apt-get -y update
sudo apt-get -y upgrade
sudo apt-get -y install ubuntu-desktop

なお、ubuntu-desktop のインストールには非常に時間がかかりますので、他の作業などを行いながら、辛抱強く待ちます。(時間帯にもよるかもしれませんが、私の場合は 15分ちょっとくらいでした。)

(参考)Package configuration 画面が出たとき

upgrade の終了時や Ubuntu desktop の終了時に以下の Package configuration 画面が表示されるかもしれません。

Ubuntu 22.04 Package configuration 画面

この画面で、タブキーを押すと<Ok>にカーソルが移動しますので、Enter キーで決定すると次の処理に移ります。


さて、ubuntu-desktop のインストールが終了すると、シェルからログアウトします。

logout

ところで Ubuntu desktop のインストールが終了してもコンソール画面のままです。

これまでの作業はデスクトップパッケージをインストールしただけですので、デスクトップ画面に切り替えるために、仮想マシンを再起動する必要があります。

このため以下のコマンドで再起動します。

vagrant reload

再起動すると、以下のようなデスクトップ画面に切り替わっていると思います。


Ubuntu 22.04 ログイン画面


(参考)スナップショット

セットアップ手順を進めていくと、ちょっと前の状態に戻してやり直したくなる場合があります。このような用途にはスナップショットが使えます。セットアップ中に適宜スナップショットを保存しておくと安心(便利)です。

デスクトップのダウンロードには時間がかかりますので、このタイミングで一度スナップショットを作っておくと安心ですし、その後の使い回しも可能です。

スナップショットを作成する場合は、vagrant reload のかわりに以下のように再起動します。(desktop-installed はスナップショット名ですので適当に変更してください。)

vagrant halt
vagrant snapshot save desktop-installed
vagrant up

スナップショットについては以下の記事も参考にしてください。

[4]日本語環境の設定

(1)デスクトップへログインして状況確認

ユーザ名をクリックして、vagrantユーザのパスワード(デフォルトはユーザ名と同じ)を入力し、Enterキーまたは「Sign In」ボタンをクリックしてログインすると、以下のような画面が表示されます。


上記画面から、画面内容を確認しながら右上の「Next」ボタンをクリックして進めます。最後の画面まで進むと右上のボタンが「Done」になり、クリックすると画面が閉じられます。

アプリケーションのメニュー表示などは英語ですが、この状態でも日本語のファイル名は日本語で表示されますし、Text EditorやLibreOfficeでも日本語ファイルの表示ができます。

しかしながら、日本語開発環境として考えると以下の点で困ります。
  • 日本語入力ができない。
  • キーボードレイアウトが日本語キーボードレイアウトとは異なるため、+、=などの配置が違っていて使いづらい。
  • 日時が9時間遅れている(初期状態ではタイムゾーンがJSTではなく、UTC(United Kingdom, London))。
  • (好みによると思いますが)メニュー表記が日本語ではない。

以降では、これらの点について改善していきます。

(参考1)Guest Additions の更新

(今回前提としている環境のように)VirtualBox のバージョンに対して、ゲストOSにインストールされている Guest Additions のバージョンが古いとデスクトップに以下の情報が表示されることがあります。

Guest Additions 更新通知

Guest Additions のバージョンがあっていないと、ホストOSとゲストOS間でカット&ペーストができなかったり、画面のリサイズに追従しないなど、不便なことがあります。

Guest Additions を更新する簡単な方法がありますので以下にメモしておきます。

まず、VirtualBoxの「デバイス」メニューから「Upgrade Guest Additions..」を選択します。

VirtualBox Upgrade Guest Additions メニュー

すると、画面右側に以下のようなインストールの進捗画面が出てきて、自動的にインストールが行われます。

VirtualBox Guest Additions インストール中

インストール完了後に、再起動後にカーネルの更新が反映される旨のメッセージ(英語)が表示されることがあります。この場合は、「vagrant reload」コマンドで仮想マシンを再起動します。その後は、画面のリサイズなどの Guest Additions の機能が正常に動作すると思います。

(参考2)メッセージが表示されたとき

ログイン後、しばらくすると以下のようなメッセージが表示される場合があると思いますが、後の「(6)ソフトウェアの更新など」で対処することにして、×で閉じます。(このメッセージは日本語設定が完了すると、日本語のメッセージに切り替わります。)

Ubuntu 22.04 ソフトウェアアップデート画面(英語)


(2)言語サポート(日本語)の追加

これから、日本語サポートを追加していきます。
画面右上の電源ボタンをクリックして表示されるダイアログのSettingsをクリックします。(赤色の円で囲っているボタンをクリックします。)

Ubuntu 22.04 の設定画面を開く


するとSettings画面が表示されます。ここで左側メニューの「Region & Language」をクリックします。(左側メニューを下へスクロールするとあります。)

Ubuntu 22.04 Region & Language 画面


この画面で「Manage Installed Languages」ボタンをクリックすると、「Language Support」画面が表示されます。

Ubuntu 22.04 Language Support 画面


ここで「Install / Remove Languages...」ボタンをクリックします。

「Installed Languages」画面が表示されますので、リストの中からJapaneseをチェックします。

Ubuntu 22.04 Installed Languages 画面


「Apply」ボタンをクリックするとダウンロードが始まります。

この時、認証(Authentication Required)画面が表示されたら、ログイン時に入力したパスワードを入力して認証を行います。

Ubuntu 22.04 ユーザ認証画面


このダウンロードとインストールには少し時間がかかるかもしれません(時間帯などにもよるかもしれません)。


ダウンロードが終了すると「Language Support」の画面に戻ります。

「Language for menus and windows:」のリストを下にスクロールすると、一番下に「Japanese」が追加されていると思います。

ここで、2つの操作を行います。
  1. メニューなどを日本語に切り替えるため、「Language for menus and windows:」の一番下にある「Japanese」をドラッグ&ドロップで、下図のように一番上にもっていきます。
    • 日本語をEnglishの上にドロップする?とうまくいくようです。
  2. 続いて、「Apply System-Wide」をクリックします。
    • 認証画面が表示されたらパスワードを入力して実行します。

Ubuntu 22.04 日本語追加


これにより、次回ログインした時からアプリケーションのメニューなどが日本語に切り替わります。

引き続き、フォーマットの変更を行います。

「Language Support」画面の「Regional Formats」タブをクリックします。


Ubuntu 22.04 Language Support 画面の Regional Formats タブ


ここで2つの操作を行います。
  1. フォーマットを日本語に切り替えるため、「Dispaly numbers,dates and currency ammounts in the usual format for:」の項目を「English」から「Japanese」に変更します。
  2. 続いて「Apply System-Wide」をクリックします。
    • 認証が必要な場合はパスワードを入力して実行します。

ところで、これらの操作を行うと、この画面下のExampleのDateの項目が[Failed to apply the ‘ja_JP.UTF-8 format choice. The examples may show up if you close and re-open Language Support.]と表示されます。

メッセージの通り再起動すると正しく表示されますので、ここは気にする必要はありません。

以上で、言語サポート(日本語)の追加とフォーマットの変更は終了となりますので、「Close」ボタンで画面を閉じます。

ここまで言語サポートの内容を反映させるため、以下のコマンドで再起動します。
vagrant reload

(3)標準フォルダーの名前を設定

再起動後にログインすると、以下のようなフォルダ名を変更するかどうかを選択する画面が表示されると思います。

Ubuntu 22.04 標準フォルダー名変更確認画面



「次回から表示しない」にチェックを入れて、お好みで、古い名前のままにする(英語のまま)、あるいは、名前を更新する(日本語に変更)を好みに応じて選択します。
(ちなみに、私は英語のまま利用しています。)

デスクトップ画面を見ると、メニューやToolTipsなどが日本語に切り替わっていると思います。

しかし、この段階ではまだキーボードレイアウトが英語版のままですので、引き続き変更していきます。

(4)入力ソース(日本語入力)の設定

設定画面を表示して「キーボード」をクリックします。


Ubuntu 22.04 キーボード設定画面



入力ソースのエリアにある、「+」ボタンをクリックすると、「入力ソースを追加」画面が表示されます。


Ubuntu 22.04 入力ソースを追加 画面


ここで「Japanese」をクリックすると「入力ソースを追加」画面が表示されます。

Ubuntu 22.04 入力ソースに日本語を追加


「Japanese(Mozc)」が追加済みになっています。

これに加えて「日本語」を選択して「追加」をクリックします。

すると「キーボード」画面の入力ソースのリストには「Japanese(Mozc)」、「英語(US)」、「日本語」が表示されていると思います。

ここで、入力ソースの「英語(US)」の項目にあるメニューボタンをクリックして、「英語(US)」を削除します。

Ubuntu 22.04 入力ソースから英語を削除


すると入力ソースが、「Japanese(Mozc)」と「日本語」になります。

Ubuntu 22.04 入力ソース



以上で入力ソースの設定は完了しましたが、まだ日本語入力はできません。

これまでの設定をシステムに反映させるために、vagrant reloadで再起動します。

vagrant reload

再起動後にログインすると、画面右上に「A」と表示されていると思います。ここをクリックすることで日本語入力の切り替えや設定ができます。

あるいは、半角/全角漢字キーで右上の「A」と「あ」が切り替わり、入力モードが切り替わります。また、Windowsキー+スペースで「Japanese(Mozc)」と「日本語」の入力ソースを切り替えることもできます。

Ubuntu 22.04 日本語入力の切替



(5)日付と時間の設定

設定画面の左側メニューの一番下にある「日付と時刻」をクリックして、以下の「日付と時刻」画面を表示します。

Ubuntu 22.04 日付と時刻 画面

タイムゾーンが「UTC(United Kingdom、London)」になっていますので、タイムゾーンをクリックします。世界地図の画面が表示されますので、日本をクリックして「JST(UTC+09) Japan, Tokyo」を選択し、右上の「×」ボタンで閉じます。


Ubuntu 22.04 タイムゾーン設定画面


日付と時刻の画面に戻ると、タイムゾーンが「JST(Japan、Tokyo)」に変わっていると思います。同時に、デスクトップの上部バーに表示されている曜日と時刻もJST表示に切り替わったと思います。

(6)ソフトウェアの更新や Firefox 文字化け対応など

これまでの手順で基本的な日本語環境は整ったと思います。

本記事は実際に利用する仮想マシンではなく、基本的な日本語デスクトップ環境のBOXを作成することが目的ですので、インストールなどの設定はここまでとしますが、これ以外にも必要に応じて、上記以外の設定やソフトウェアのインストールを行ってください。(私は、電源管理のブランクスクリーンあたりは調整してます。)

※次に進む前に、現段階のスナップショットを作成しておくと安心です。

ここでは、BOXを作成する前に、ソフトウェアの更新を行っておきます。

やり方はいくつかありますが、ここでは下図のように、デスクトップの左下①をクリックして、検索テキストに「Update」と入力すると(②)、「ソフトウェアの更新」が表示されますのでクリックします(③)。

Ubuntu 22.04 ソフトウエアの更新を起動


すると更新情報があれば、以下の画面が表示されます。

Ubuntu 22.04 ソフトウェアの更新画面(日本語)

ここで「今すぐインストールする」をクリックします。

(参考1)カーネルのバージョンアップ

元になる bento/ubuntu-22.04 のバージョンによるかもしれませんが、アップデートの終了前にカーネルのアップグレードが行われる場合があります。この場合は以下の画面が表示されますので「Next」をクリックして次に進みます。

Ubuntu 22.04 カーネルアップデート確認


インストールが完了すると以下の画面が表示されます。

Ubuntu 22.04 ソフトウェア更新 再起動確認画面


「あとで再起動(L)」として、Vagrant コマンドで再起動します。
vagrant reload

(参考2)Firefox の文字化け対応など

Ubuntu 22.04 には Snap版 Firefox がインストールされています。

日本語環境をインストールするまでは問題ありませんが、日本語環境を設定した後に Firefox を起動すると、メニュー画面その他すべてが文字化け状態になります。

この問題への対処として、ここではお手軽な Snap版 Firefox の再インストール手順をメモしておきます。

sudo snap remove firefox
sudo apt remove firefox
sudo apt update
sudo apt install firefox

上記手順では以下のパッケージ(Snap 版 Firefox)がインストールされます。

なお、Snap 版以外の Firefox のインストールなどについてはネット上にいろいろと情報がありますので、参考にしてください。

[5]パッケージ化してBOX登録する

これまでの作業で構築した日本語デスクトップ環境の仮想マシンをBOX登録します。これにより、登録したBOXから素早く日本語デスクトップ環境をもつ仮想マシンをインスタンス化できるようになります。

作業を行う前に、もし仮想マシンが起動していればシャットダウンしておきます。

vagrant halt

作業は、仮想マシンのパッケージ化を行い、そのパッケージをBOX登録するという2段階で行います。

(1)パッケージ化

現在の仮想マシンの内容を以下のコマンドでパッケージ化します。

vagrant package

このコマンドを実行すると、VirtualBoxの仮想マシンの内容がエクスポートされて、再利用可能なボックスにパッケージ化されます。その結果、カレントディレクトリに、package.boxというファイルが作成されます。

(2)BOX登録

続いて、以下のコマンドにより、このpackage.boxを「ubuntu22_jpgui」という名前でBOX登録します。

vagrant box add --name ubuntu22_jpgui  package.box

登録が完了すると、Vagrantfileのconfig.vm.boxに”ubuntu22_jpgui”を指定して新しい仮想マシンを作成できるようになります。

なお、BOX登録されたかどうかは、以下のコマンドで確認できます。

vagrant box list

実行すると「ubuntu22_jpgui (virtualbox, 0)」のように表示されると思います。

また、登録を取り消したり、やり直したい場合など、BOXを削除したい場合は以下のコマンドを実行します。

vagrant box remove ubuntu22_jpgui

(参考)他のPCでBOX登録する方法

ここで作成したpackage.boxは、VirutalBoxとVagrantがインストールされた他のPCでも利用できます。手順は、package.boxをBOX登録したいPCにコピーして、上記のvagrant box add コマンドを実行するだけです。

[6]BOXから新しい仮想マシンを作ってテストする

(1)簡単な動作確認

BOX登録した「ubuntu22_jpgui」から仮想マシンを作成して動作確認します。

ここで作成するVagrantfileは、BOX「ubuntu22_jpgui」から作成する仮想マシンのひな形として利用できるように、利用環境に応じてCPU、メモリその他の設定を行っておくとよいと思います。

テスト例として、今回はテスト用のプロジェクトディレクトリを「test_u22」として以下のように作成します。

mkdir  test_u22
cd  test_u22

続いて、BOX「ubuntu22_jpgui」を指定してvagrant initを実行します。

vagrant init  ubuntu22_jpgui

今回は、作成されたVagrantfileの内容を以下のように変更してみます。

# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant.configure("2") do |config|
  config.vm.box = "ubuntu22_jpgui"

  config.vm.provider "virtualbox" do |vb|
    vb.gui = true
    vb.memory = "8192"
    vb.cpus = 2
    vb.customize [
      "modifyvm", :id,
      "--vram", "256",
      "--graphicscontroller", "vmsvga",
      "--accelerate3d", "off",
      "--vrde",  "off",
      "--clipboard", "bidirectional",
    ]
  end
end

ここで、gui=trueは必須です。(設定しないとデスクトップ画面が表示されません。)
その他のCPU、メモリ等の項目などは実際の利用環境に応じて設定します。

(参考)


Vagrantfileができたら、vagrant upを実行して仮想マシンを作成して動作確認を行います。

vagrant up

実行すると、VirtualBoxの仮想マシンリストに「test_u22_default...」が追加されていると思います。この仮想マシンを選択して設定画面を表示すると、仮想マシンの設定内容を確認することができます。
この内容とホストPCの状況に応じて、Vagrantfileのパラメータを調整します。(vagrant reloadを行うと、config.vm.providerで指定した内容が反映されて再起動します。)

(参考)

(2)テスト用仮想マシンの削除

うまく動作すれば、test_u22は削除しても問題ありません。(削除しない場合は、VirtualBoxのテスト用の仮想マシンが残りますので、ディスクを浪費します。)

削除は以下の2ステップで行います。

①VirtualBoxの仮想マシンの削除

まず、vagrant destroyコマンドでVirtualBoxの仮想マシンを破棄します。これにより、VirtualBoxの仮想マシンリストから消えます。

vagrant destroy

②プロジェクトディレクトリの削除

vagrant destroyで仮想マシンが破棄されたことを確認したら、test_u22ディレクトリを削除できます。
但し、ここで作成したVagrantfileは、実利用で仮想マシンを作成する際に雛形として利用できますので、バックアップしておくとよいと思います。

[7]BOX作成用の仮想マシンとプロジェクトディレクトリの削除

登録したBOX「ubuntu22_jpgui」から問題なく仮想マシンが作成できることが確認できたら、BOXを作成に利用したVirtualBoxの仮想マシンとVagrantプロジェクトディレクトリを削除することができます。

作成したBOX「ubuntu22_jpgui」は、BOXを作成に利用した仮想マシンやプロジェクトディレクトリとは独立して、Vagrantの管理下にありますので、これらを削除しても、BOX「ubuntu22_jpgui」から新規に仮想マシンを作成することができます。

一方、削除しなくても問題はありませんが、VirtualBoxの仮想マシンが残っているため、ディスクを消費します。

削除は、以下の手順で行います。
  1. プロジェクトディレクトリのバックアップをとります。
    • 例えば、プロジェクトディレクトリごとコピーします。
    • package.boxはサイズが大きいですが、これをバックアップしておくと、BOXを復旧するときに利用できるだけでなく、他のPCでBOX登録する際にも使えます。
  2. vagrant destroyコマンドを実行して、VirtualBoxの仮想マシンを破棄します。
    • VirtualBoxの仮想マシンリストから削除されます。
  3. プロジェクトディレクトリを削除します。

後にBOX「ubuntu22_jpgui」を修正したくなったら、今回のと同様の手順で(但し、元にするBOXを「ubuntu22_jpgui」として)新しい仮想マシンを作成し、修正を加えた後に、同様の手順でパッケージ化してBOX登録することができます。

コメント

このブログの人気の投稿

マイナンバーカードの電子証明書(公的個人認証サービス)にJava APIでアクセスする

Google Document AIで画像から表形式データを抽出する(Vision API OCRとの違い)

Vagrantfileの仮想マシン設定項目とVirtualBoxの設定画面の対応