ECS LIVA Z (N4200) (OS無し) に Ubuntu MATE  をインストールして SSH & VNC 接続するまで

# 本稿の目的

急にわけもなく「ミニPC」が欲しくなり実施した、[ECS LIVA Z (N4200)](https://www.links.co.jp/item/liva-z-n4200/) (OS無し) に [Ubuntu MATE](https://ubuntu-mate.org/) (ウブントゥ マテ) をインストールして SSH & VNC 接続するまでの記録です。このような情報のニーズは寡少かと思いますが、メモとして残します。


# 使用機材等

## ミニPC ECS LIVA Z (N4200) (OS無し)

[ECS LIVA Z (N4200)](https://www.links.co.jp/item/liva-z-n4200/) のアウトレット（メーカー再生品）を [Amazon で入手](https://www.amazon.co.jp/dp/B01MS4M6NT/)しました。18,800円（税・送料込）でした。スペックは以下です。

* SoC (CPU): [インテル Pentium N4200](https://ark.intel.com/content/www/jp/ja/ark/products/95592/intel-pentium-processor-n4200-2m-cache-up-to-2-5-ghz.html)
    * Apollo Lake
    * 4 コア （4 スレッド）
    * 1.1 GHz ～ 2.5 GHz
    * インテル HD グラフィックス 505
* メモリ: SO-DIMM DDR3L 4 GB
* ストレージ: eMMC 32 GB
* OS: 無し
* サイズ: 117 x 128 x 33 mm
* 重量: 約 365g
* 2017年1月～

![IMG_0411.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/157570/c6c73e87-9912-0a56-2b46-21fd8734efae.jpeg)


## メモリ増設

4 GB のメモリを1枚増設して、8 GB にしました。1,812円でした。増設方法は取説に詳しく書いてあり、とても簡単です。増設は必須ではありませんが、気分の問題です。

[シリコンパワー ノートPC用メモリ 1.35V (低電圧) DDR3L 1600 PC3L-12800 4GB](https://www.amazon.co.jp/dp/B00H4LDGSG/)

![IMG_0410.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/157570/3b9a8019-4026-2f17-85f7-3bc668fd3ffd.jpeg)



## SSD 増設

240 GB の SSD を1枚増設しました。3,899円でした。増設方法は取説に詳しく書いてあり、とても簡単です。増設は必須ではありませんが、気分の問題です。

[TCSUNBOW SSD M.2 NGFF 2242内蔵ソリッドステートドライブ（N4 240GB）](https://www.amazon.co.jp/dp/B078HHG8H3/)


![IMG_0413.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/157570/20259fdf-bb87-7c72-8049-ac58bd9b532d.jpeg)


## キーボード

以前からラズパイ遊びに使っていた以下のキーボード（2,680円）を使いました。「Bluetooth ではない」ほうです。

[Ewin ミニ キーボード ワイヤレス 2.4GHz タッチパッド搭載 超小型](https://www.amazon.co.jp/dp/B00WNRW9XE/)

![IMG_0433.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/157570/7b5505bf-2cf1-4d4b-2b5a-6f7bab0978a4.jpeg)


## 起動イメージ（SD カード & USB アダプタ）

OS のイメージは [Ubuntu MATE](https://ubuntu-mate.org/) の 18.04.2 LTS (64bit) を使いました。

* [ubuntu-mate-18.04.2-desktop-amd64.iso](http://cdimage.ubuntu.com/ubuntu-mate/releases/18.04/release/ubuntu-mate-18.04.2-desktop-amd64.iso)

起動イメージ用のメディアには、自宅で余っていた 8 GB の microSD カードを、[日経 Linux](https://info.nikkeibp.co.jp/media/LIN/) 2019年7月号の付録だった USB アダプタに挿して使いました。Windows の PC にて、これを [SDメモリカードフォーマッター](https://www.sdcard.org/jp/downloads/formatter/) でフォーマットして、[balena Etcher](https://www.balena.io/etcher/) で iso を書き込みました。


![IMG_0484.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/157570/9a135e41-c767-5436-231c-9f4fb6487054.jpeg)



## その他

* テレビ（HDMI 接続できるもの）
* HDMI ケーブル
* LAN ケーブル
* Windows10 の PC（イメージの準備と VNC 接続のための端末として）



# 起動確認

メモリと SSD を増設し、キーボードの USBドングルを挿した後、起動イメージを使わないで起動してみました。OS が入っていないので、当然ながら BIOS (UEFI) が起動するのみです。これの Boot タブで、Linux を指定して、起動ディスクの順序を適当に調整しました。

![IMG_0414.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/157570/d72a42df-bd8a-e33c-f051-48a533a4cfa7.jpeg)


ちなみに、OS インストール後に BIOS (UEFI) を表示させるには、起動開始直後に「F2」キーでした。


# Ubuntu MATE のインストール


## ブート

Ubuntu MATE の iso イメージを入れた USB ドングルを LIVA に挿し、起動すると、以下の選択肢が表示されます。上から2番目の「__Install Ubuntu MATE__」を選んで Enter します。

* Try Ubuntu MATE without installing
* __Install Ubuntu MATE__
* OEM install (for manufacturers)
* Check disk for defects


## その後の流れ

その後は GUI で進みます。今回は以下のように進めました。

* 「ようこそ」画面で「日本語」を選択
* 「キーボードレイアウト」で「日本語」「日本語（かな）」を選択
* 「アップデートの他のソフトウェア」では…
    * [o] 通常のインストール
    * [x] Ubuntu MATE のインストール中にアップデートをダウンロードする
    * [x] グラフィックスとWi-Fiハードウェアと追加のメディアフォーマットのサードパーティ製ソフトウェアをインストールする
* 「インストールの種類」では…
    * [o] ディスクを削除して Ubuntu MATE をインストール
* 「ドライブの選択」では…
    * 「MMC/SDカード」を選択（つまり内蔵 eMMC）
* 「どこに住んでいますか？」では…
    * Tokyo を選択（愛知県民ですが）
* 「あなたの情報を入力してください」では…
    * 任意の「あなたの名前」
    * 任意の「コンピューターの名前」
    * 任意の「ユーザー名」
    * 任意の「パスワード」
    * [o] ログイン時にパスワードを要求する

設定は以上です。あとはインストールが終わるまでしばらく待ちます。しばらくといっても、10分もかかりません。
インストールが完了すると再起動を促されるので、「今すぐ再起動する」をクリックします。
再起動が始まると「Please remove the installation medium, then press ENTER:」と表示されます。その指示の通り、iso イメージの入った USB アダプタを抜いて、キーボードで Enter します。
すると、起動しました！

![IMG_0445.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/157570/b9e74075-4306-1e3c-d034-a9bcb6de735a.jpeg)

この状態でログインして、普通のパソコンとして使えます。
これ以降は、SSH と VNC の設定をして、テレビやキーボードは使わず、リモート接続して使うように設定します。


# Ubuntu MATE の初期設定

## とりあえず更新

Linux を入れた後の定番、更新作業をしておきます。
ターミナル（MATE 端末）で以下を実行します。

```shell
$ sudo apt update
$ sudo apt upgrade
$ sudo apt autoremove
```


## SSH のインストール

リモートからコマンドで操作できるようにするために、SSH をインストールします。

```shell
$ sudo apt install ssh
```

## ユーザフォルダ以下のフォルダ名を英語にする

OS を日本語でインストールした状態だと、ユーザフォルダ以下のフォルダ名が「デスクトップ」や「ドキュメント」のようなカタカナになっています。この状態だと、ターミナル等からコマンドで操作するのに向きません。そこで、これを英語表記（Desktop や Documents）に変えます。

```shell
$ LANG=C xdg-user-dirs-gtk-update
```

これを実行すると「Update standard folders to current language?」というダイアログが出ますから、[x] Don't ask me this again にチェックを入れて、「Update Names」ボタンをクリックします。

参考にした情報は[こちら](https://qiita.com/take5249/items/13ada73bbd01ee12a2c3)。


## IP アドレスを固定する

SSH や VNC で接続するため、IPアドレスを固定しておきます。

* デスクトップの右上のネットワークアイコン（有線接続している場合は上下の矢印）をクリックすると出てくるメニューで、一番下の「接続を編集する...」をクリック
* つなげているネットワーク（例えば「有線接続1」）をダブルクリック
* 出てくるダイアログの「IPv4 設定」タブにて
    * 方式 (M)：「手動」を選択
    * 「アドレス」欄の右側の「追加 (A)」ボタンをクリック
    * アドレス：所望の IP アドレスを指定（例：192.168.0.100）
    * ネットマスク：所望のサブネットマスクを指定（例：255.255.255.0）
    * ゲートウェイ：ルータのアドレスを指定（例：192.168.0.1）
    * DNSサーバー：所望の DNS のアドレスを指定（例：8.8.8.8,8.8.4.4）← Google の DNS の場合
* 「保存」をクリック

最後にマシンを再起動して、固定 IP アドレスの設定を反映させます。

```shell
$ sudo reboot
```

これ以降の作業は全て SSH か VNC 経由で行うので、ここで HDMI ケーブルとキーボードは抜いてしまって構いません。



# VNC サーバのインストールと諸設定

## SSH で接続

SSH クライアントで LIVA （上述で固定した IP アドレス）に接続します。
私は [RLogin](http://nanno.dip.jp/softlib/man/rlogin/) を愛用しています。クライアントは何でも構いません。

## vnc4server のインストールとスタートアップスクリプトの編集

VNC 接続するためのサービスをインストールします。これまで使ったことがある CentOS では「tigervnc-server」というのが定番ですが、Ubuntu では「vnc4server」というのが定番のようです。

```shell
$ sudo apt install vnc4server
```

いったん vncserver を開始します。

```shell
$ vncserver :1
```

VNC 接続用のパスワードを聞かれるので、任意のパスワードを決めて、2回入力します。
起動すると以下のように表示され、デフォルトのスタートアップスクリプトが生成されます。

```shell
Creating default startup script /home/{ユーザ名}/.vnc/xstartup
Starting applications specified in /home/{ユーザ名}/.vnc/xstartup
```

ここでいったん vncserver を終了させ、上記のスタートアップスクリプト（/home/{ユーザ名}/.vnc/xstartup）を編集します。以下では例えば nano エディタを使っています。

```shell
$ vncserver -kill :1
$ nano ~/.vnc/xstartup
```

このスタートアップスクリプトの設定には様々あるようですが、私は今回以下のようにしました。

```sh:~/.vnc/xstartup
#!/bin/sh

# Uncomment the following two lines for normal desktop:
unset SESSION_MANAGER
exec /etc/X11/xinit/xinitrc

[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &
x-terminal-emulator -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
x-window-manager &

mate-session &
```

まず、上から4行目の「unset...」と5行目の「exec...」部分をコメントアウトしました。コメントに「普通のデスクトップを使う場合は以下の2行をコメントアウトせよ」と書いてあるので、その通りにしました。
あとは最後の1行「mate-session &」を追加しました。

## VNC サーバの起動

最後に vncserver を起動します。

```shell
$ vncserver :1
```

なお、解像度を指定する方法は以下です。例えば 1280x1024 の場合です。無指定（デフォルト）だと 1024x768 のようです。

```shell
$ vncserver :1 -geometry 1280x1024
```

## VNC クライアントで接続

あとは、好みの VNC クライアントで 5901 番ポートを指定して接続します。私は [VNC Viewer](https://www.realvnc.com/en/connect/download/viewer/) を愛用しています。

![ubuntuMATEs.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/157570/0b424f11-c3cc-6819-2212-53505ea241ad.png)

ただしこのままだと通信は暗号化されないので、SSH クライアント経由でポートフォワードして接続すると良いでしょう。


# その他の Tips

## VNC 経由での VSCode のトラブル

VNC 接続経由だと、「Software Boutique」で [Visual Studio Code](https://code.visualstudio.com/) のインストールができませんでした。また、「Software Boutique」を使わない[他の方法](https://code.visualstudio.com/docs/setup/linux)ではインストールできますが、起動しません。どうも GPU 絡みでうまく動かないということのようですが、詳しくは理解できていません。以下の1行を実行すると、VSCode が動作するようになりました。

```
$ sudo sed -i 's/BIG-REQUESTS/_IG-REQUESTS/' /usr/lib/x86_64-linux-gnu/libxcb.so.1
```

参考にした情報源は[こちら](http://msqleanmemo.blogspot.com/2017/07/vs-code-ubuntu-1604.html)と[こちら](https://github.com/Microsoft/vscode/issues/3451)。

## 無線 LAN も問題なし

2.4 GHz / 5 GHz ともに問題なく接続できました。ですから、電源さえあれば LIVA 本体はどこにでも置けます。


## プリンタドライバが自動で入っていた

OS インストールの際に特に何も指定していませんが、自宅 LAN 内のプリンタ（ブラザー MFC-J837DN）を認識して、ドライバも自動で入っており、ちゃんと印刷できました。
（スキャナとしては認識してくれなかったようですが）


## su したい時

Ubuntu は初期状態では root のパスワードが設定されていないそうです。よって初期状態では su で root になることができません。特に su しなくても、毎回 sudo と書けば済みますが、以下のようにすると root になれます。

```
$ sudo su -
```

こうすれば毎回 sudo と打つ必要がなくなります。
さらに root になった状態で以下を実行して root のパスワードを設定すれば su できるようになります。

```
# passwd
```



# 所感

思いつきで始めた遊びでしたが、個人的にけっこう楽しめました。とはいえこのPC、現状、明確な用途がないので、それを探すのが今後の課題です（笑）。

なお、実は Ubuntu MATE の前に、本家の Ubuntu 19.04 や 18.04 もインストールしました。しかしデフォルトでは VNC がうまくできずにハマりました。標準機能の「デスクトップ共有」だと動作がとても重たく、かつコンソールでログインしている必要がありますし…。デスクトップを Xfce にしたらうまく VNC で動きましたが、見た目がちょっと寂しい印象でした。そんな時に 日経 Linux の記事でみかけた Ubuntu MATE を試してみたら、いろいろと「すんなり」できて、動作も軽快でした。
Ubuntu MATE は Raspberry Pi でも動くようなので、それもそのうち試してみたいところです。

※ 本稿は筆者の思いつきで随時更新します。