MacOS 上に VirtualBox + Vagrant で Ubuntu 18.04 GUI 環境を構築する

最近仮想化というと Docker が主流で、Docker でも頑張れば Linux GUI 環境を構築できたりもするが、もっと生の Linux マシンっぽく使いたい場合は、やはり今でも VirtualBox を使った方が精度が良い。

ということで久々に MacOS 上に VirtualBox と Vagrant を入れて、Ubuntu 18.04 ベースの GUI 環境を構築してみる。

目次

環境情報

VirtualBox と Vagrant のインストール手順は省略。いずれも公式サイトからインストーラをダウンロードして普通にインストールしただけ。

Vagrantfile を書く

適当な作業ディレクトリを作り、次のような Vagrantfile を書く。

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

Vagrant.configure("2") do |config|
  # ベースイメージ
  config.vm.box = "bento/ubuntu-18.04"
  # 共有ディレクトリ設定
  config.vm.synced_folder "./shared", "/home/vagrant/shared"
  
  # VirtualBox 設定
  config.vm.provider :virtualbox do |vb|
    vb.gui    = true    # デスクトップ環境を使うので GUI を有効にする
    vb.cpus   = 2       # CPU 割り当て
    vb.memory = "4096"  # メモリ割り当て
    vb.customize [
      "modifyvm"          , :id,
      "--vram"            , "256",
      "--clipboard"       , "bidirectional",
      "--accelerate3d"    , "on",
      "--hwvirtex"        , "on",
      "--nestedpaging"    , "on",
      "--largepages"      , "on",
      "--ioapic"          , "on",
      "--pae"             , "on",
      "--paravirtprovider", "kvm",
    ]
  end
  
  # 初期構築スクリプト
  config.vm.provision :shell, :inline => <<-EOL
    # 日本語化設定
    sudo cp /etc/apt/sources.list /etc/apt/sources.list.BAK
    sudo sed -i 's/archive.ubuntu.com/jp.archive.ubuntu.com/g' /etc/apt/sources.list
    wget -q https://www.ubuntulinux.jp/ubuntu-ja-archive-keyring.gpg -O- | sudo apt-key add -
    wget -q https://www.ubuntulinux.jp/ubuntu-jp-ppa-keyring.gpg -O- | sudo apt-key add -
    sudo wget https://www.ubuntulinux.jp/sources.list.d/bionic.list -O /etc/apt/sources.list.d/ubuntu-ja.list
    sudo apt update -y
    sudo apt upgrade -y
    # 日本語関連パックをインストールする
    sudo apt install -y $(check-language-support -l ja) language-pack-ja ubuntu-defaults-ja manpages-ja manpages-ja-dev
    # 日本語フォントをインストールする
    sudo apt install -y fonts-noto fonts-ipafont fonts-ipaexfont fonts-vlgothic fonts-takao
    # デスクトップ環境をインストールする
    sudo apt install -y ubuntu-desktop gnome-tweak-tool
    # 日本語環境に切り替える
    sudo update-locale LANG=ja_JP.UTF-8
    # タイムゾーンを日本時間に変更する
    sudo timedatectl set-timezone Asia/Tokyo
    # デフォルトのエディタを vim に変更する
    sudo update-alternatives --set editor /usr/bin/vim.basic
EOL
end

もう何度か Ubuntu 系の記事で書いてきた、「日本語 Remix」の適用と ubuntu-desktop のインストール、各種日本語化設定を行っている。

共有ディレクトリ設定を書いているので、念のため作業ディレクトリ配下に shared/ ディレクトリを作っておこう。

初回起動・各種設定

Vagrantfile が書けたら、初回起動を行う。Vagrantfile があるディレクトリに移動して以下のコマンドを実行する。

$ vagrant up

初回は環境構築系のスクリプトが動作するので、少々時間がかかる。気長に待つ。

しばらくすると Ubuntu の GUI 環境が立ち上がるはずだ。初期登録されているユーザは vagrant で、パスワードも vagrant だ。

ログインできたら、Ubuntu の「端末」を開き、以下を実行していく。

# タイムゾーンを設定する
sudo dpkg-reconfigure tzdata

# MS フォントをインストールする
sudo apt install -y ttf-mscorefonts-installer

# Fcitx-Mozc をインストールする
sudo apt install -y fcitx fcitx-mozc fcitx-config-gtk fcitx-frontend-gtk2 fcitx-frontend-gtk3 fcitx-frontend-qt4 fcitx-frontend-qt5 fcitx-ui-classic kde-config-fcitx mozc-utils-gui dbus-x11
im-config -n fcitx
sudo apt purge -y ibus ibus-mozc

# 自動起動スクリプトを記述する
sudo sh -c 'echo "fcitx-autostart &>/dev/null" > /etc/profile.d/fcitx'
sudo sh -c 'echo "#!/bin/bash" > /etc/profile.d/fcitx.sh'
sudo sh -c 'echo "export QT_IM_MODULE=fcitx" >> /etc/profile.d/fcitx.sh'
sudo sh -c 'echo "export GTK_IM_MODULE=fcitx" >> /etc/profile.d/fcitx.sh'
sudo sh -c 'echo "export XMODIFIERS=@im=fcitx" >> /etc/profile.d/fcitx.sh'
sudo sh -c 'echo "export DefaultIMModule=fcitx" >> /etc/profile.d/fcitx.sh'

さらに、「自動起動するアプリケーション」を開き、fcitx-autostart を追加すれば完了。

Mac 用 US キーボード向けに設定ファイルを調整する

自分は Mac 用の US 配列のフルサイズキーボードを使っていて、左下は「Control」「Option」「Command」とキーが並んでいる

Ubuntu を操作する際は、これらのキーを押した時に 「Control」「Super」「Alt (Meta)」キー と認識してほしいと思っていたのだが、どうも「Alt (Meta)」と「Super」キーの認識が逆なようだ。

そこで、「端末」で以下のファイルを開き、編集する。

$ sudo vi /usr/share/X11/xkb/keycodes/evdev

70〜80行目あたりに、<LALT> = 64; とか <LWIN> = 133; といった記述があるはずなので、これらを逆に書き換えてやる。<LALT> 部分を <LWIN> と書き換えても良いし、後半のキーコード (番号) を入れ替えてやっても良い。

自分の場合は次の組み合わせでキー設定をしてやると、思ったとおりのキー配置にできた。

<LCTL> = 37;
<LALT> = 133;
<LWIN> = 64;

<RWIN> = 108;
<RALT> = 134;
<RCTL> = 105;

設定ファイルを反映するには、ファイルを書き換えたあと一度再起動してやる必要がある。思いどおりのキー配置になったかどうかは、「設定」→「地域と言語」→「入力ソース」で「英語 (US)」を選択し、キーボードアイコンを押下してキーボードを画面上に表示させ、確かめてみよう。

Vagrantfile を書き換えたら

Vagrantfile の内容を変更したりして、仮想マシンを再起動したくなった時は、以下のコマンドで再起動できる。

$ vagrant reload

以上

ココまで設定できれば、あとは生の Ubuntu マシン同様に設定していけるはずだ。

こんなところだろうか。