Windows10環境にVagrant + VirtualBoxでUbuntu18.04(デスクトップ)環境を構築

このTweetを見てたら環境を構築したくなりました。今回はGVimを入れるまでを行います。

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">VirtualBox、パフォーマンスも良いしフルスクリーンにしつつ Linux だけで暮せば(Windows と何かを交換しなければ)まんま Linux なのでデュアルブートする意味が僕にはほぼ無くなったなぁ。いい時代になった。 <a href="https://t.co/0wLW6gDJcM">pic.twitter.com/0wLW6gDJcM</a></p>&mdash; mattn (@mattn_jp) <a href="https://twitter.com/mattn_jp/status/1220925868618305536?ref_src=twsrc%5Etfw">January 25, 2020</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>



##環境
ホストOS: Windows 10 Pro 64bit（1909 18363.592)
VirtualBox: 6.0.16 (released January 14 2020)
Vagrant: 2.2.6
ゲストOS: ubuntu-18.04LTS

Vagrantが対応しているVirtualBoxは下記からご確認ください。
[VirtualBox Provider - Vagrant by HashiCorp](https://www.vagrantup.com/docs/virtualbox/)

##ホストOSの準備

Windows側で必要な準備を行います。

```
#Windowsキー + Rで下記を入力。必要ならパスワードを入力
powershell start-process powershell -verb runas
#以下PSで入力

#必要なディレクトリを作成し作業用ディレクトリに移動。
New-Item "C:\Vagrant\tmp" -Force -ItemType Directory
New-Item "C:\Vagrant\ubuntu1804" -Force -ItemType Directory
New-Item "C:\Program Files\Oracle\VirtualBox" -Force -ItemType Directory
cd "C:\Vagrant\tmp"

#Virtualboxをインストール
Invoke-WebRequest -uri https://download.virtualbox.org/virtualbox/6.0.16/VirtualBox-6.0.16-135674-Win.exe -outfile C:\Vagrant\tmp\VirtualBox-6.0.16-135674-Win.exe
./VirtualBox-6.0.16-135674-Win.exe -path "C:\Program Files\Oracle\VirtualBox" --silent

#Vagrantをインストール
Invoke-WebRequest -uri https://releases.hashicorp.com/vagrant/2.2.6/vagrant_2.2.6_x86_64.msi -outfile C:\Vagrant\tmp\vagrant_2.2.6_x86_64.msi
msiexec /i C:\Vagrant\tmp\vagrant_2.2.6_x86_64.msi /passive /qn /norestart

```

これでVirtualBoxとVagrantの用意が出来ました。

##必要があればVagrantのプラグインを入れる
[Vagratfileに一行書くだけでVMのディスク容量を増やす方法](https://qiita.com/yut_h1979/items/c84c490053877beee5c1)

```
# vagrant plugin install vagrant-disksize
```

##Vagrantfileを作成

`C:\Vagrant\ubuntu1804`に作っていきます。`(C:\Vagrant\ubuntu1804\Vagrantfile)`

```
#Vagrantfile
Vagrant.configure("2") do |config|
  config.vm.box = "bento/ubuntu-18.04"
  config.vm.box_version = "201912.14.0"
  #config.disksize.size = '40GB'
  config.vm.box_check_update = false
  config.vm.provider :virtualbox do |vb|
    vb.memory = 4096
    vb.cpus = 2
    vb.gui = true
    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 => <<-EOS
    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-get update
    sudo apt-get upgrade -y
    sudo apt-get full-upgrade -y
    sudo apt-get autoremove -y
    sudo apt-get autoclean
    sudo apt-get clean
    sudo apt-get install -y ubuntu-desktop ubuntu-defaults-ja aptitude curl dnsutils lsof zip unzip lsb-release tree man
    sudo timedatectl set-timezone Asia/Tokyo
    sudo update-alternatives --set editor $(update-alternatives --list editor | grep 'vim.basic')
EOS
end
```

##VirtualBoxをVagrant経由で起動

```
#コマンドプロンプト
cd C:\Vagrant\ubuntu1804
vagrant up -d
```

※回線に問題がない環境で終わるまで約1時間掛かります。

#VirtualBoxに移動
上記のコマンドを打ち暫くするとVirtualBoxが立ち上がります。
※コマンドプロンプト側でvirtualbox内のupdate等をバックグラウンドでやっているのでコマンドプロンプトは処理が終わるまで終了しないでください（当たり前ですが）。

こんな感じ
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/290072/f9f6dec7-bc24-bd3e-f3f3-eba0a7f455b4.png" width="50%" alt="">

アップデートやインストールが終わっていないとGUIにはならない。
ちなみにVirtualBoxの抜け方は右Ctrlを押すかCtrl+Alt+Delete。

あと一応
> 途中で「Configuring grub-pc」の画面が出たら、なにもチェックせずにOKし、進んでいきます。
>（TabでOKをフォーカスしてEnter）

も注意。（筆者はこの現象は起きなかった）

他の記事やブログでも「ものすごい時間が掛かる」ということで待ってみましたが
vagrant upを実行してから大体「60分」くらいでした。

## コマンドプロンプト側の処理が終わったら

コマンドプロンプト側の処理が終わったら下記を実行します。

```
# vagrant reload
```

問題なければGUI版のUbuntuが立ちあがります。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/290072/3b4ce23e-d0b5-f310-0303-18f3669cec46.png" width="50%" alt="">


## Ubuntuの日本語化
ここからは日本語の設定を行います。

```
id vagrant
pw vagrant
```
でログインできます。

早速日本語化していきます。

１．左上の「Activities」をクリックし、「region」と入力。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/290072/e0ea45ac-56eb-10f4-e71b-6f2beb1aa84e.png" width="50%" alt="">

２．真ん中の「Region & Language」をクリックする。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/290072/0b985b18-7a83-1aeb-13eb-b0a6e2a373c3.png" width="50%" alt="">

３．Languageをクリック。「Japanese」を選択し、緑色の「Done」をクリックする。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/290072/a0db79a9-9a5d-b128-26f0-75ab1743283d.png" width="50%" alt="">

４．その下のFormatsをクリックし、「Japan」を選択し、「Done」をクリックする。

５．Input Sourcesの下にある「+」マークをクリックする。

６．その中からJapaneseを選ぶ⇒Japanese(Mozc)を選び、「Add」をクリックする。
　　Japanese(Mozc)をクリックしフォーカスさせ、「＾」のマークをクリックする。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/290072/cb0450f6-2356-e238-e5f2-861d57e80c10.png" width="50%" alt="">

７．この状態になったら、LanguageのところにあるRestartボタンを押下する。
　　ログアウトするかどうか聞かれるので「Log Out」をクリックする。

８．pw:vagrantで再度ログインする。ログインすると日本語化されています。

９．標準フォルダーの名前を変更するかどうか聞かれるので好みのままに。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/290072/88e0741b-b239-c614-f0a9-f3ed4aa9beae.png" width="50%" alt="">

## GVim をインストールする。
ターミナルから下記を実行。

```
sudo apt install -y vim-gnome
```

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/290072/226889aa-2ed2-4037-6747-3c6dfbbd72de.png" width="50%" alt="">

終わり。

## 感想

- Vagrant経由でubuntuを入れたのは初めてだったが、特に躓く点はなかった。
- 60分間待っている間にQiitaを作成していたので苦ではなかったが、作業中ではなく、暇なときに`vagrant up`したほうがよい。
- Vim周りの設定はお好みで大丈夫です。

## 追記：後からやったほうが良さそうなこと
### 日本語キーボードを直す
日本語キーボードにしたい
↓

```
# setxkbmap -layout jp
```

↓
直った

### ホイールを直す
ホイール遅い
↓
[ubuntuでマウスホイールのスクロール量を設定する[imwheel]](https://qiita.com/NOBIE41/items/fc1c516b5f91c45b0024)
↓
直った

### Ubuntu18.04でchromeなどを触っていると止まったりするのを直したい
vimなどはすらすら行くのにおかしい…
↓
[UbuntuでGoogle Chromeなどがフリーズするときに試してみる設定。](https://freefielder.jp/blog/2019/10/ubuntu-chrome-freeze-settings.html)
↓
直った

### 再起動すると日本語キーボードがおかしくなる
[Ubuntu 18.04 でキーボードレイアウトが突然変わってしまった](https://kokufu.blogspot.com/2019/05/ubuntu-1804.html)

永続化らへんはここの辺り
[Xorg でのキーボード設定](https://wiki.archlinux.jp/index.php/Xorg_%E3%81%A7%E3%81%AE%E3%82%AD%E3%83%BC%E3%83%9C%E3%83%BC%E3%83%89%E8%A8%AD%E5%AE%9A)

### Windows側のGit bashでエラーが出る

```
bash: $'\377\376': command not found
```
以前からなんだろう…と思っていて放置してましたが原因がわかりました。
どうやらpower shell経由でインストールすると文字コード等の問題でエラーが出るようです。

こちらを参考にしてる時に気づきました。
[Githubに繋ごうとすると\337\376hでエラーが出る](https://qiita.com/kam_Qiita/items/cad9e1515c071d880a86)

##参考リンク
[VagrantfileでVirtualBoxのVMパフォーマンス向上設定](https://qiita.com/hidekuro/items/385bcc4b9eb43945751d)
[Ubuntu 18.04 の日本語版デスクトップ環境を Vagrant + VirtualBox で作成する](https://kmiya-bbm.hatenablog.com/entry/2019/01/07/194238)
[Ubuntu18.04 インストール後の初期設定メモ](https://qiita.com/hatayan1126/items/c67f87a86f1538bb86af)
[Windows環境にVagrant+Ubuntuデスクトップ環境をインストール](https://qiita.com/mhagita/items/8f339106c3b48eb098ca)
[UbuntuへのGVimのインストール](https://sioyaki.com/entry/2018/10/02/113550)
[VM Ubuntuでキーボードを日本語配列に – 入力がおかしい場合にkeyboard layoutがUSになっているのを変更する](https://what-a-day.net/vm-keyboard-layout)