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

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

【目次】

[1]はじめに

本記事は、前の記事『PC上の自分用Ubuntu日本語デスクトップ開発環境サービスを作る(Vagrant+VirtualBox)』で書いた、『UbuntuのベースBOXから日本語デスクトップ環境のBOXを作成する』の項目について、具体的な構築手順を書きます。

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

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

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

動作確認した環境は以下の通りです。
  • ホストOS:Microsoft Windows 10 Pro 10.0/.18363 ビルド 18363
  • VirtualBox:6.1.16 r140961
  • Vagrant: 2.2.13
  • ゲストOSのベースBOX: bento/ubuntu-18.04

(参考)
Ubuntu 22.04 LTSについては、記事『Ubuntu 22.04 LTS 日本語デスクトップ環境のVagrant BOXを作る』を参照してください。

Ubuntu 20.04 LTSについては、手順はほぼ同じですが、記事『Ubuntu 20.04 LTS 日本語デスクトップ環境のVagrant BOXを作る』を参照してください。

また、Vagrantの基本的なコマンドについては、記事『Vagrantコマンドを仮想マシンの作成と状態の管理を中心に整理してみる』も参考にしてください。

[2]仮想マシンの定義

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

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

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

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

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

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

(2)Vagrantfileの作成

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

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

vagrant init bento/ubuntu-18.04

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

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

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

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

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

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

  config.vm.provision "shell", inline: <<-SHELL
    apt-get -y update
    apt-get -y upgrade
    apt-get -y install ubuntu-desktop
  SHELL
end

(補足)
vagrant initは初期状態のVagrantfileを作成するだけですので、vagrant initコマンドを利用せず、上記内容のVagrantfileを直接作成しても問題ありません。

簡単ですが、以下に設定内容を説明します。

①vb.gui = true

Vagrantは、デフォルトではヘッドレスモード(UI無し)で仮想マシン起動します。デスクトップ環境を作りたいので、UI有りを指定するために、gui=trueを指定します。

②仮想マシンの設定

今回作成する仮想マシンは、開発作業などに利用する仮想マシンではなく、日本語デスクトップ環境のBOXを作成するための仮想マシンですので、VagrantのベースBOXの要件を引き継ぐように、ホストPCに依存する具体的な設定を極力行わない方針としています。

このため、メモリ、CPU、VRAMの設定はUbuntuの最低限のシステム要件程度としています。また、このVagrantfileにはネットワーク、共有設定などの設定は行いません。

ただし、デスクトップ環境を作成する際の利便性のため、「クリップボードの共有:双方向」( "--clipboard", "bidirectional")の設定を行っています。

また、「--graphicscontroller」、「--accelerate3d」、「--vrde」については、『(補足2)VirtualBoxの設定画面に「無効な設定が見つかりました」への対処』と『(補足3)画面のリサイズ時に「VBoxClient: Failed to get display change request,rc=VERR_...」と表示される場合の対処』を参考に、必要に応じて調整してください(環境によるかもしれません)。

それ以外のCPU、メモリやその他のシステムリソース、ネットワークや共有設定などの具体的な環境に依存する設定は、今回作成するBOXから新しく作成する仮想マシンのVargrantfileで設定するようにします。

とはいうものの、上記の設定値は、実情に合わせてもう少し大きな値に設定したほうが作業しやすいと思います。ただ、どれくらい大きくできるかは実際の環境に依存することと、上記の設定でも以降のデスクトップ環境を作る作業はできましたので、ここでは小さな値のままとしています。

(参考)

③プロビジョニングの設定(config.vm.provision)

初回のvagrant upコマンドで実行するシェルスクリプトなどを指定することができます。仮想マシン作成直後にvagrant sshなどで実行する内容があれば、ここに記述しておくと仮想マシンの作成プロセスに統合、自動化できます。

上記Vagrantfileでは、Ubuntuデスクトップパッケージ(ubuntu-desktop)のインストールを指定しています。
このパッケージをインストールした直後は英語環境ですので、日本語環境の設定は作成した仮想マシンのデスクトップ画面から行うことにします。

(参考)日本語Remix

本記事は開発環境としての利用を意図しているため、日本語の入力や表示ができる程度のデスクトップ環境の構築を行っています。
一方、Ubuntu Japanese Teamにより、日本語サポートをより良いものとするため、「現在のところUbuntuに追加できていない修正を加えたパッケージ、および日本語環境に必要とされるパッケージを収録したRemixイメージ」が作成・配布されています。

日本語Remixの日本語環境を作成する場合は、 config.vm.provisionに、上記ページに書かれている「Japanese Teamのパッケージレポジトリを追加する」の内容を追加して調整するか、または、以降の手順で作成する仮想マシンのデスクトップ環境から指定の操作を行うことで日本語Remixの内容を反映できると思います。

[3]仮想マシンの作成

Vagrantfileを用意できましたので、vagrant upコマンドを実行して仮想マシンを作成します。
vagrant up

なお、Vagrantfileのプロビジョニングで指定したubuntu-desktopのインストールは非常に時間がかかりますので、他の作業などを行いながら、辛抱強く待ちます。(時間帯にもよりますが、私の環境だと2時間以上。。。)

vagrant upコマンドでは以下のことが行われています。
  • 元となるBOX「bento/ubuntu-18.04」がローカルPC上になければ、Vagrant CloudからダウンロードしてBOX登録してくれます。
  • VirtualBoxに、ubuntu18_jpgui_default...という仮想マシンが登録され、VirtualBoxの設定画面から内容の確認ができます。
  • 初めてvagrant upを実行するときは、config.vm.provisionで指定したコマンドが実行されます。
    • これにより、ubuntu-desktopがインストールされます。
    • なお、初回以外(2回目以降)のvagrant upでは、 config.vm.provisionの内容は実行されません。(明示的に実行する必要があります。)

初回のvagrant upコマンドを実行すると、(vb.gui = trueと指定しているため、)以下のようなコンソール画面が表示されます。これは、vagrant upコマンドが終了しても(デスクトップパッケージのインストールが終了しても)、このコンソール画面のままです。

Ubuntu 18.04:ubuntu-desktopをインストール中のVirtualBoxの画面

初回のvagrant upでは、デスクトップのコンポーネントをインストールしただけですので、デスクトップ画面に切り替えるため、仮想マシンを再起動する必要があります。

vagrant upコマンドが正常に終了したら、以下のコマンドで再起動します。
vagrant reload

再起動すると、以下のようなデスクトップ画面に切り替わっていると思います。
VirtualBox Guest Addinがインストール済ですので、ウィンドウの大きさの変更が可能です。

Ubuntu 18.04:ubuntu-desktopインストール後のログイン画面

(参考)vagrant upがエラーで終了した時

ubuntu-desktopをインストール中に、以下のようなエラーが表示されて、vagrant upが途中終了してしまうことがあります。
default: E: Unable to fetch some archives, maybe run apt-get update or try with --fix-missing?
The SSH command responded with a non-zero exit status. Vagrant
assumes that this means the command failed. The output for this command
should be in the log above. Please read the output to determine what
went wrong.

このような場合、気持ち悪いという事で、時間をおいて、最初からやり直すという方法もあります。
しかし、混雑している時間帯はやり直しても成功するとは限らないし、とりあえず先に進みたいという場合は、プロビジョンを再実行するという方法もあります。

通常は、初回起動時以外は、config.vm.provisionは実行されませんが、以下のように、provisionオプションをつけてvagrant reloadを実行すると、config.vm.provisionの内容を実行してくれます。

vagrant reload --provision

これにより、インストールを継続することができると思います。

なお、vagrant reload --provision が正常終了してもパッケージをインストールしただけですのでコンソール画面のままです。今度はprovisionオプション無しで再起動します。

vagrant reload

すると、前述のようなデスクトップ画面に切り替わると思います。
(なお、正しくインストールが完了できているかどうかは、仮想マシンを利用して確認して下さい。)

[4]日本語環境の設定

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

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

Ubuntu 18.04:ubuntu-desktopインストール後に初めてログインしたときの画面


「What's new in Ubuntu」画面から、画面内容を確認しながら右上の「Next」ボタンをクリックして進めます。Ready to goの画面まで進むと右上のボタンが「Done」になり、クリックすると画面が閉じられます。


この状態で以下のようにロケールやキーボード設定を確認すると、英語版の状態になっています。
vagrant@vagrant:~$ localectl status
   System Locale: LANG=en_US.UTF-8
                  LANGUAGE=en_US:
       VC Keymap: n/a
      X11 Layout: us
       X11 Model: pc105

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

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

以降では、主にこの4点について対処していきます。

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

ログイン後、しばらくすると以下のようなメッセージが表示される場合があると思います。

まず、以下のアップグレードのメッセージについては、今回は18.04をインストールしようとしていまですので、「Don’t Upgrade」を選択しておきます。

Ubuntu 18.04:Ubuntu 20.04 LTC Upgrade AvailableでDon’t Upgradeをクリック

それ以外の、以下のようなメッセージについては、後から対処することにして、ここでは放置します。(これらは日本語設定が完了すると、日本語のメッセージに切り替わります。)

※「(6)ソフトウェアの更新など」で対処します。
Ubuntu 18.04:Software Updater


Ubuntu 18.04:System program problem detected

(2)言語サポート(日本語)の追加とフォーマットの変更

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

Ubuntu 18.04:Settingsボタン


するとSettings画面が表示されます。ここで左側メニューの「Region & Language」をクリックします。

Ubuntu 18.04:Settings,/ Region & Language 画面でManage Installed Languagesをクリック


この画面で「Manage Installed Languages」ボタンをクリックします。
すると以下のような、言語サポートが完全にはインストールされていない旨の画面が出ると思います。

Ubuntu 18.04:The language support is not installed completelyでInstallをクリック

ここで「Install」ボタンをクリックしてインストールを行います。
実行中に認証画面が出たらパスワードを入力してAuthenticateをクリックします。

インストールが終わると「Language Support」画面が表示されます。

Ubuntu 18.04:Language Support / Language 画面でInstall/Remove Languagesをクリック

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

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

Ubuntu 18.04:Installed Languages 画面でJapaneseをチェックしてApplyをクリック

これにより日本語サポートに必要なパッケージのダウンロードとインストールが開始されます。
もし「Authentication Required」の画面が表示されたら、パスワードを入力してEnterキーまたはAuthenticateをクリックして続行します。

このダウンロードとインストールには、かなり時間がかかりますので、気長に待ちます(時間帯などにもよるかもしれません)。

終了すると「Language Support」の画面に戻ります。
「Language for menus and windows:」のリストを下にスクロールすると、一番下に日本語が追加されていますと思います。

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

Ubuntu 18.04:Language Support / Language 画面で、Language for menus and windowsを日本語にしてApply System-Wideをクリック


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

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

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

Ubuntu 18.04:Language Support / Regional Formats 画面で、Display numbers, dates and currency amounts in the usual format forを日本語にして Apply System-Wideをクリック



ここで2つの操作を行います。
  1. フォーマットを日本語に切り替えるため、「Dispaly numbers,dates and currency ammounts in the usual format for:」の項目を「English(United States)」から「日本語」に変更します。
  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 18.04:標準フォルダーの名前を現在の言語に合わせて更新しますか?で、次回から表示しないをチェックして、古い名前のまま(英語)または名前を更新する(日本語)をクリック


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

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

また、この段階でのロケールの内容は以下のようになっていると思います。
vagrant@vagrant:~$ localectl status
   System Locale: LANG=ja_JP.UTF-8
                  LANGUAGE=ja:en_US:en
       VC Keymap: n/a
      X11 Layout: us
       X11 Model: pc105

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

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

設定画面を表示して「地域と言語」をクリックします。(Settings/Region & Languageの画面が日本語に代わっています。)

Ubuntu 18.04:設定/地域と言語の入力ソースの+ボタンをクリックして日本語を追加

入力ソースのエリアにある、「+」ボタンをクリックします。

「入力ソースの追加」画面が表示されますので、日本語をクリックします。

Ubuntu 18.04:入力ソースの追加で日本語をクリックして追加

続いて「日本語(Mozc)」を選択して追加します。
Ubuntu 18.04:日本語(Mozc)を選択して追加

同様の手順で、日本語(OADG 109A)も追加します。
Ubuntu 18.04:日本語(OADG 109A)を選択して追加

この段階で、「地域と言語」画面の入力ソースのリストには「英語(US)」、「日本語(Mozc)」、「日本語(OADG 109A)」が表示されていると思います。

ここで、入力ソースの「英語(US)」を選択し、「ー」ボタンをクリックして「英語(US)」を削除します。

下記画面のように、入力ソースが、「日本語(Mozc)」、「日本語(OADG 109A)」となるようにします。

Ubuntu 18.04:設定/地域と言語の日本語設定


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

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

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

Ubuntu 18.04:日本語入力ソースの設定


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

この段階でロケールは以下のようになっています。
vagrant@vagrant:~$ localectl status
   System Locale: LANG=ja_JP.UTF-8
                  LANGUAGE=ja:en_US:en
       VC Keymap: jp106
      X11 Layout: jp
     X11 Variant: OADG109A


(5)日付と時間の設定

設定画面の左側メニューの一番下にある「詳細」をクリックします(表示されていない場合は下方向にスクロールすると表示されます)。

「詳細」画面に切り替わりますので、左側メニューの「日付と時刻」をクリックして、以下のような日付と時刻画面を表示します。

Ubuntu 18.04:日付と時刻の設定でタイムゾーンをクリック


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

Ubuntu 18.04:タイムゾーンをJST(UTC+09)に設定

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

(6)ソフトウェアの更新など

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

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

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

デスクトップ左上の「アクティビティ」をクリックして、検索ワードに「ソフトウェアの更新」と入力すると、更新情報があれば、以下の画面が表示されます。

Ubuntu 18.04:ソフトウェアの更新

インストールする場合は、「今すぐインストールする」をクリックします。

(補足1)「システムプログラムの問題が見つかりました」の解消

英語版では「System program problem detected」と表示されていたメッセージが、日本語環境になると以下のように表示されると思います。

Ubuntu 18.04:システムプログラムの問題が見つかりました

このメッセージは apport サービスが出しているらしいです。(私は詳しく知らないのですが。。。)

メッセージが表示されている理由は、/var/crashの下にファイルがあるからだと思います。
ちなみに、「問題を報告する」としても、/var/crashの下のファイルが削除されるわけではなく、メッセージは表示され続けるようです。

このメッセージが表示されないようにする簡単な方法として、以下のコマンドで/var/crashの下のファイルを削除します。
sudo rm /var/crash/*

これで表示されないようであれば、それでよいと考えることはできます。

別の方法として、メッセージを表示しているapportサービスを無効化する方法があります。(サービスを停止してもよいかどうかの判断はあります。)

/etc/default/apport というファイルの中身は以下のようになっています。
これによれば、このファイルのenabledの値を0にすれば無効化できるようです。(一時的に停止するだけなら、sudo service apport start force_start=0 とすればよいようです。)

vagrant@vagrant:~$ cat /etc/default/apport
# set this to 0 to disable apport, or to 1 to enable it
# you can temporarily override this with
# sudo service apport start force_start=1
enabled=1

(補足2)VirtualBoxの設定画面に「無効な設定が見つかりました」への対処

私の環境では、VirtualBoxの設定画面に「無効な設定が見つかりました」という表示があり、マウスカーソルを合わせると、以下のように2点ほど指摘が出ていました。

ディスプレイ:スクリーン 仮想マシンは推奨するグラフィックスコントローラー(VMSVGA)ではないものに設定されています。本当に選択したグラフィックスコントローラーを使用するのかよく考え、できれば変更してください。ディスプレイ:リモートディスプレイ リモートディスプレイがこの仮想マシンで有効です。しかし、これにはOracle VM VirtualBox Extension Packのインストールが必要です。VirtualBoxダウンロードサイトから拡張パックをインストールするか、マシンを開始するためにリモートディスプレイを無効にしてください。


VirtualBoxの仮想マシンの設定画面で確認すると以下のようになっていました。
  • ディスプレイ/スクリーン/グラフィックスコントローラーの値は「VBoxVGA」でした。
  • ディスプレイ/リモートディスプレイ/サーバーを有効化にチェクが入っていました。
    • なお、私の環境にはOracle VM VirtualBox Extension Packはインストールされていません。

この2つの設定を変更するには、Vagrantfileのvb.customizeに以下の項目を追加します。
  • "--graphicscontroller", "vmsvga",
    • グラフィックスコントローラーの値をVMSVGAに設定します。
  • "--vrde",  "off",
    • リモートディスプレイのサーバの有効化を無効にします。onにすると有効になります。環境に応じて設定してください。

加えて、VMSVGAに変更すると、3Dアクセラレーションが機能するようになります。
  • "--accelerate3d", "off",
    • ディスプレイ/スクリーン/3Dアクセラレーションを有効化(on)と無効化(off)を指定します。
    • 画面左端にあるアプリケーションのアイコンをクリックしたり、「アプリケーションを表示する」をクリックしたときアニメーション的な動きが加わります。ただ、私の環境では、少しゆったり動くので、無効(off)にしています。

(注意)
上記グラフィックスコントローラーの設定は、(補足3)の「VBoxClient: Failed to get display change request,rc=VERR_...」が表示される状態では機能しないようです。私の場合、このメッセージが出る状態でVMSVGAに切り替えると、画面のリサイズもできなくなりましたので、機能しない場合はGuest Additionsを確認して下さい。

(補足3)画面のリサイズ時に「VBoxClient: Failed to get display change request,rc=VERR_...」と表示される場合の対処

私の環境では、リサイズ時に下記のようなメッセージが表示されました。
VBoxClient: Failed to get display change request,rc=VERR_...

私の環境では、グラフィックスコントローラーがVBoxVGAの場合、画面をリサイズはできるのですが、上記メッセージが表示されます。一方、グラフィックスコントローラーをVMSVGAに切り替えると、上記メッセージが表示されて、かつリ画面のサイズもできなくなりました。

これは、VirtualBoxのGuest Additionsを再インストールすることで改善しました。(ということは、ベースBOXのバージョンとVirtualBoxのバージョンなどの組み合わせの問題かもしれません。)

(参考)
VirtualBoxのGuest Additionsを再インストールについては、記事『VagrantのベースBOXから作ったUbuntuデスクトップ環境のGuest Addtionsを再インストールする手順』を書きましたので参考にしてください。


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

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

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

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

(1)パッケージ化

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

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

(2)BOX登録

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

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

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

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

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

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

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

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

(1)簡単な動作確認

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

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

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

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

今回は、作成されたVagrantfileの内容を以下のように変更してみます。
# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant.configure("2") do |config|
  config.vm.box = "ubuntu18_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_u18_default...」が追加されていると思います。この仮想マシンを選択して設定画面を表示すると、仮想マシンの設定内容を確認することができます。
この内容とホストPCの状況に応じて、Vagrantfileのパラメータを調整します。(vagrant reloadを行うと、config.vm.providerで指定した内容が反映されて再起動します。)

(参考)

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

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

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

①VirtualBoxの仮想マシンの削除

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

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

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

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

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

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

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

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

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

コメント

このブログの人気の投稿

VirtualBoxのスナップショット機能

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

Ubuntu/Colab環境でPDFファイルのページを画像化する(pdf2image、pdftoppm、pdftocairo)