Jetson Xavier NXのIPアドレス固定化とVNCの設定

# 概要
Jetson Xavier NXをセットアップするときにIPアドレスの固定やVNCの設定で苦労したのでその内容をまとめます。

# 環境
|名称|バージョン|
|:--:|:--:|
|macOS|Catalina 10.15.5|
|Jetson NX Developer Kit SD Card Image|JP 4.4|
|Ubuntu|18.04.4 LTS|
|VNC Server （Vino）|3.22.0-3ubuntu1|
|VNC Viewer （Real VNC）|6.20.529|

# IPアドレスの固定
CUIから設定しようとすると、なぜがうまくいかなかったのでGUIから設定しました。
下の画像のような手順でネットワーク編集画面を開きます。
![IPアドレス固定化方法_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/662956/c5160b4f-678a-f93d-3ae8-af5820939ebe.png)
![IPアドレス固定化方法_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/662956/4c2c32c8-be13-a44c-22db-017333a5ca94.png)
![IPアドレス固定化方法_3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/662956/989d2046-6f83-3e00-bdcf-8638fdb8574e.png)
![図IPアドレス固定化方法_4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/662956/d08d6fbb-7d13-0d64-9b92-866418c8d1fb.png)
![IPアドレス固定化方法_5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/662956/7cca094b-c455-4159-e3b5-a7962fa962a8.png)
編集画面で方式を手動にして、アドレス（固定化したいIPアドレス）、ネットマスク、ゲートウェイ（ルータのIPアドレス）、DNSサーバ（ルータのIPアドレス）をそれぞれ自分の環境に合わせて入力します。
最後に、**編集の保存とXavier NXの再起動**を行います。

# VNCの設定
Ubuntuにデフォルトで入っているVNCサーバのVinoを使いますが、そのままでは設定を編集するアプリが使えないので下記のように設定します。
まず、GNOMEの設定ファイルを開きます。

```
sudo vim /usr/share/glib-2.0/schemas/org.gnome.Vino.gschema.xml
```

次に、開いたファイルの最後にコードを追加します。

```
    <key name='enabled' type='b'>
      <summary>Enable remote access to the desktop</summary>
      <description>
        If true, allows remote access to the disktop via the RFB
        protocol. Users on remote machines may then connect to the
        desktop using a VNC viewer.
      </description>
      <default>false</default>
    </key>
```

最後に、コマンドを実行します。

```
sudo glib-compile-schemas /usr/share/glib-2.0/schemas
```

そうするとシステム設定画面にデスクトップの共有のアプリが登場します。
![VNCの設定_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/662956/72dc7e91-3514-4aef-f553-9f53de90df05.png)
このアイコンをクリックして編集を行います。この際、「You must confirm each access to this machine」のチェックを外しましょう。
![VNCの設定_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/662956/baa80a06-cfb1-ec3a-7939-0f066488ac17.png)
次に、以下のようにXavier NXを立ち上げたときにアクセスできるようにする自動起動設定を行います。
![VNCの設定_3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/662956/7a34fe9e-4790-adf7-307c-8255fc1ec5b6.png)
自動起動するアプリケーションの設定から、追加ボタンをクリックしてVinoサーバを自動起動させるように編集します。この際、自動起動させるプログラムの参照元は`/usr/lib/vino/vino-server`です。
![VNCの設定_4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/662956/38e00ca5-48e6-4407-dd8d-230e4e2bddc3.png)
保存ボタンをクリックしたのちに、最後にコマンドを実行します。

```
sudo gsettings set org.gnome.Vino prompt-enabled false
```

```
sudo gsettings set org.gnome.Vino require-encryption false
```

解像度の変更は[解像度変更方法](https://forums.developer.nvidia.com/t/jetson-tx1-desktop-sharing-resolution-problem-without-real-monitor/48041/11)に従っておこないます。
僕は以下のように1280*800にしています。

```
# Copyright (c) 2017, NVIDIA CORPORATION.  All Rights Reserved.
#
# This is the minimal configuration necessary to use the Tegra driver.
# Please refer to the xorg.conf man page for more configuration
# options provided by the X server, including display-related options
# provided by RandR 1.2 and higher.

# Disable extensions not useful on Tegra.
Section "Module"
    Disable     "dri"
    SubSection  "extmod"
    Option  "omit xfree86-dga"
    EndSubSection
EndSection

Section "Device"
    Identifier  "Tegra0"
    Driver      "nvidia"
    Option      "AllowEmptyInitialConfiguration" "true"
EndSection

Section "Monitor"
   Identifier "DSI-0"
   Option    "Ignore"
EndSection

Section "Screen"
   Identifier    "Default Screen"
   Monitor        "Configured Monitor"
   Device        "Default Device"
   SubSection "Display"
       Depth    24
       Virtual 1280 800
   EndSubSection
EndSection
```

そうすると、やっとのことVNCを利用できます。
![VNCの設定_5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/662956/db579ce3-edb4-bc01-55d1-d9730f81c2ec.png)


# 最後に一言
意地でCUIから設定を行なっていましたが何故かIPアドレスの固定化とVNCサーバの設定・自動起動がうまくいきませんでした。（原因が分かる方、解決方法が分かる方がいたら教えていただけると嬉しいです。）そこで、大人しくGUIから設定を行なったところすんなり解決しました。CUIでかかった時間返して欲しいって思いましたが、なんとか設定することができたのでよかったです。

# 参考文献
IPアドレス固定:
https://linuxfan.info/ubuntu-1804-desktop-static-ip-address
VNCの設定：
https://www.hackster.io/news/getting-started-with-the-nvidia-jetson-nano-developer-kit-43aa7c298797
http://www1.meijo-u.ac.jp/~kohara/cms/remote-desktop-for-ubuntu18-04
解像度の変更：
https://forums.developer.nvidia.com/t/jetson-tx1-desktop-sharing-resolution-problem-without-real-monitor/48041