Ubuntu 20.04 , 21.10 での環境構築

# 環境構築時の手順の忘備録
* nvidia の GPU を搭載してて、リモートで機械学習等を行う環境を想定してます。
* メモです。

## IPアドレス固定化
* 「アクティビティー」→「設定」→「ネットワーク」→「有線」の歯車ボタン 
    * IPv6 が不要なら「無効」にしておく
    * IPv4 で固定アドレスを指定
    * IdentyタブにMTU (auto にしておいて遅い時は 1400 位にしてみるのもいいかも)

## 初期パッケージ更新
```bash
sudo apt -y update
sudo apt -y upgrade
```

## リモートディスクトップ
```bash
# インストール
sudo apt install xrdp

# 有効化＆開始
sudo systemctl enable xrdp
sudo systemctl start xrdp

# 確認
sudo systemctl status xrdp
```


## Nvidia Driver

```bash
# nvidiaグラフィックカードのモデルと推奨ドライバーを検出
ubuntu-drivers devices

# 推奨されるすべてのドライバーをインストール
sudo ubuntu-drivers autoinstall

# 一旦Reboot
sudo reboot

# 動作確認
nvidia-smi
```

## Docker インストール
https://www.digitalocean.com/community/tutorials/how-to-install-and-use-docker-on-ubuntu-20-04-ja

## User 追加
* ↓のユーザ名とユーザIDは例、置き換えること

```bash
# ユーザとグループの作成
sudo adduser takada takada

# ユーザID の変更
sudo usermod -u 1023 takada

# グループID の変更
sudo groupmod -g 1023 takada

# sudo 権限追加
sudo gpasswd -a takada sudo

# docker 追加
sudo usermod -aG docker takada
```

# SSH-Server

[Ubuntu 20.04 LTS : OpenSSH : パスワード認証 : Server World](https://www.server-world.info/query?os=Ubuntu_20.04&p=ssh&f=1)

## 背景色
* 単一色にしたい場合の例。

```bash
gsettings set org.gnome.desktop.background picture-uri ''
gsettings set org.gnome.desktop.background color-shading-type 'solid'
gsettings set org.gnome.desktop.background primary-color '#0B5345' 
```

## カラーマネジメントダイアログの非表示

[mieki256's diary](http://blawat2015.no-ip.com/~mieki256/diary/202007102.html)

## フォント追加

[Ubuntu Desktop (20.04/18.04) にフォントを追加インストールする！](https://lab4ict.com/system/archives/879)

## NVIDIA-Docker

```bash
# インストール
distribution=ubuntu20.04
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit
sudo systemctl restart docker

# 動作確認（nvidia-smiコマンドをコンテナ上で実行してみる）
sudo docker run --gpus all nvidia/cuda:10.1-base nvidia-smi

# ↑が失敗した場合、docker daemon を再起動すると復活することもある
systemctl restart docker.service
```

# chrome

[Ubuntu20.04にChromeをインストールする - Qiita](https://qiita.com/yamagarsan/items/44609a619d50f7eac7f7)

# Prometheus
* prometheus のサーバの方に、このマシンを監視する用に設定しておくこと。
* ↓はこのマシンでの設定

## node_exporter

```bash
# インストール
sudo apt install prometheus-node-exporter
sudo systemctl enable prometheus-node-exporter
sudo systemctl start prometheus-node-exporter

# 確認
sudo systemctl status prometheus-node-exporter
```

## dcgm-exporter
* バージョンは github の dcgm-exporter のリポジトリを見て最新のものにすること。

```bash
docker run -d --gpus all --restart=always -p 59400:9400 nvcr.io/nvidia/k8s/dcgm-exporter:2.3.2-2.6.3-ubuntu20.04
```

# HDD 有効化
* 終了はHDDの容量に合わせること。

```bash
# HDD のデバイスポイントの確認 (今回は SATA接続は HDD のみ)
ls -l /dev/sd*

# パーティーション作成
sudo parted /dev/sda

> mklabel 
  gpt

> mkpart
  開始 1MB 
  終了 4TB

# ファイルシステム作成
sudo mkfs -t ext4 /dev/sda1

# マウントポイント作成
sudo mkdir /hdd

# パーティーションの UUID 確認
ls -l /dev/disk/by-uuid/

569a90ae-1a4c-4891-a15d-13fc4f83aee0 -> ../../sda1

# ↑を /etc/fstab にコピー

```

# vscode

- <注意！！> Ubuntu Software からインストールすると日本語入力に対応していない
- [https://code.visualstudio.com/download](https://code.visualstudio.com/download) から ダウンロード
    - バージョン名はダウンロードした最新のものに置き換えること

```bash
cd ~/ダウンロード
sudo apt install ./code_1.55.2-1618307277_amd64.deb
```

# jupyter

```bash
# インストール
sudo apt update
sudo apt install python3-pip python3-dev
sudo apt install jupyter-notebook

# 実行
cd ~/Repos/(your-target-repo)
jupyter-notebook
```

# albert
[Alfredの代わりとして使えるLinux向けのランチャーAlbertのインストール手順と使い方](https://www.virment.com/how-to-setup-albert-ubuntu/)
* ランチャー 
    * アプリ起動や、google 検索が楽になる

# ターミナル分割
```
sudo apt install screen terminator
```
* screen コマンド
    * ターミナル内で分割可能。
* terminator
    * GUIで複数ターミナル