今一度 ubuntu server 22.04 LTS と Raspberry Pi3 を installして設定 の 覚え書き

# Raspberry Pi3のOSをどうするか?

そろそろ連続稼働させているRaspberry Pi3のUbuntuが賞味期限切れなので、distributionをupdateしようとおもったが、partition sizeの問題でできなかったので、心機一転 clean installして、設定し直すことにした。

See [Ubuntu do-release-upgrade が 失敗したとき](https://qiita.com/hidenorly/items/554c4cfbac562c030077)

| OS | 所感 |
| :--: | :-- |
| Ubuntu Mate 22.04 arm32(armv7a) | RPi3 Rev.B では、色々とsdcardを変えてはみたが起動できなかった。同じsdcardでもarm64 imageは起動はできるので、本家の作成したimageで、RPi3 RevBで、ちゃんと確認できていないのでは無いかなと思われる。 |
| Ubuntu Mate 22.04 arm64(aarch64) | RPi3のCoretex-A53+1GBでは処理が重すぎた。しかも、sdcard上にdefaultでswapすら作っており、長時間稼働には向かない |
| Ubuntu 22.04 Desktop| Ubuntu Mateとの差はMateはgnome2を使っている点の差なので、もう22.04世代では実用的にRPi3ではDesktopは動かせないと判断 |
| Ubuntu Server 22.04 arm64 | 起動はしたが、X serverなし(GUIなし)なのに、key入力応答すらおいつかないぐらい遅い |
| Ubuntu Server 22.04 arm32(armv7a) | 過去のUbuntu Mate Desktop 16.04(armv7-aのみ)よりも遅いが、aarch64よりはマシだったのでこれにした |

Short Takeaway: Raspberry Pi3 B (Cortex-A53)では、もう最近のUbuntuをそのまま動かすにはつらい。Ubuntu Server (CLI = no GUI)であれば、 まだギリギリ動かせる。

2024/3/10追記:
arm32(armv7a)のUbuntu Server 22.04 LTSを使っていましたが、余りに遅く、18.04LTSがupgradeした環境との反応速度差が大きすぎるので、Ubuntu Mate 18.04LTS (armv7a) -> Ubuntu Mate 20.04LTS -> Ubuntu Mate 22.04LTSへdo-release-upgradeを繰り返したところ、最初からUbuntu 22.04を入れるよりも圧倒的に反応速度が速く動かすことができました。free -hで見てもGUIなのに300MB以上空いていました(1GBのRAMです)。

# Ubuntu Serverとは

* 通常 (Desktop版は)、GUIのDesktop環境があるが、それを廃したもの。
(なお、Desktop版でも、Desktopを無効化もできる)

* [Ubuntu 22.04ではまったこと](https://qiita.com/hidenorly/items/98df2616d0b0ee6835f1)　も参照

## 焼くとどうなるのか?

CLIで起動します。
ちゃんとhdmiでconsoleが出ます。USB keyboardも使えます。
が、Multi WindowのようなX環境はありません。

## sshは使えるの?

有線で接続した場合、sshが使えるように最初からconfigされています。

See [sshの設定覚書](https://qiita.com/hidenorly/items/eb0800515299bfe43ecb)

なお、上の[Ubuntu 22.04ではまったこと](https://qiita.com/hidenorly/items/98df2616d0b0ee6835f1)にもssh関係の記載あります


## user管理

### id/passwordは?

id/password共に、 ```ubuntu``` です。
初回ログイン時に、変更を求められます。

```
Current password: ubuntu
New password: 設定したいpassword
Retype password: 上と同じpassword
```
のようにして設定します


### Userを追加するには?

```
$ sudo adduser USER_NAME
```

### 追加したuserでsudoを可能にするには?

```
$ sudo gpasswd -a USER_NAME sudo
```

以下で確認を

```
$ groups USER_NAME
```

例
```
ubuntu@ubuntu:~$ groups ubuntu
ubuntu : ubuntu adm dialout cdrom floppy sudo audio dip video plugdev netdev lxd
```
のように ```sudo``` groupにも属していれば ```sudo```可能です


## Networkの設定

```/etc/netplan/50-cloud-init.yaml``` というファイルが
これは直接編集しないこと。
コピーなどして、これをベースにするのはOkですが

```
$ sudo vim /etc/netplan/99-myconfig.yaml
```

### 有線ネットワークの設定例 (dhcp)

```/etc/netplan/99-myconfig.yaml
network:
  version: 2
  ethernets:
    eth0:
      dhcp4: true
      optional: true
```

### 無線ネットワークの設定例 (dhcp)

上の有線ネットワークの後ろに```wifis:``` というsectionを追加する

```/etc/netplan/99-myconfig.yaml
network:
  version: 2
  wifis:
    wlan0:
      dhcp4: false
      access-points:
        "YOUR-SSID":
          password: "********"
      addresses: [192.168.1.10/24]
      nameservers:
        addresses: [192.168.1.1, 8.8.8.8]
      routes:
        - to: default
          via: 192.168.1.1
```

## 設定の反映

```
$ sudo netplan apply
```

記載ミスがあると怒られますので、修正しましょう。。。

## avahi : mDNSのinstall

```
$ sudo apt-get install avahi-daemon
```

```
$ cat /etc/hostname
```

## hostnameの設定

```
$ sudo hostnamectl set-hostname myhost
$ hostname
myhost
$ cat /etc/hostname
myhost
```

のようにして、defaultの ```ubuntu``` から 上の例では ```myhost``` へ変更

## TimeZone to JST

```
$ sudo timedatectl set-timezone Asia/Tokyo
```

## 電圧低下警告やthrottlingの無効化

電源容量が大丈夫だが、電圧低下はする場合、すぐにthrottlingされてしまうと、パフォーマンスの低下が気になります。

本来はやってはいけないのですが、電源容量が4.8A大丈夫(2.4A*2大丈夫なもの)とかの電源など、問題が無いことがわかっているのであれば、、、

```
$ sudo su
# vim /boot/firmware/config.txt
```

```/boot/firmware/config.txt
avoid_warnings=2
```

=1だと警告表示を無効化のみ
=2だとthrottlingを無効化

```
$ sync
$ sudo reboot
```
して確認.

```chmod +w /boot/firmware/config.txt``` しないと書けないかも.

### 確認方法 : 電圧低下によるthrottlingの状況把握

```~/bin/poll_throttling.sh 
#!/bin/bash
while true; do cat /sys/devices/platform/soc/soc:firmware/get_throttled; sleep 1; done
```

```poll_throttling.sh &``` して実行してみてください。

* ```0``` は通常動作
* ```0``` 以外 (```50005```のような)は、throttling (速度低下)状態
です。

なので、負荷を掛けても、ずっと、```0```　が表示され続ければ、Raspberry Piの電圧低下＋throttlingがされていません。