Raspberry Pi OSでGNOME Desktopを使う

↓GNOMEを導入したRaspberry Pi OS
![このシステムについて.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/275790/9dfb80bc-c0dc-8afd-304b-0d651846c3d2.jpeg)

Raspberry Pi OSのデフォルトのGUI環境は動作が軽くていいが、日常的にデスクトップとして使うには質素すぎる。
しかしながら中身はほとんどDebianなので、実はDebianと同じGNOME Desktopを導入することが可能である。
ここではその導入方法を備忘録的に記す。

# やること
- Raspberry Pi OS のインストール
- パフォーマンス調整
- GNOME Desktop のインストール
- 日本語サポートのインストール
- ネットワーク設定 (NetworkManager)
- おまけ
    - オーバークロック
    - Flatpak & Snapのセットアップ
    - GNOMEのカスタマイズ

# 物理で用意するもの
- Raspberry Pi 4B
- USB SSD（SDカードでも良いが非推奨）
- ディスプレイに接続して作業する環境
    - ディスプレイ
    - Micro-HDMI to HDMIケーブル
    - USBキーボード
    - USBマウス

# Raspberry Pi OS のインストール
※すでにセットアップが済んでいればこの工程はスキップ可能。

- Raspberry Pi Imagerをインストール
    - Windowsなら公式サイトから
        - https://www.raspberrypi.com/software/
    - LinuxならFlatpakから
        - https://flathub.org/apps/details/org.raspberrypi.rpi-imager
- Raspberry Pi OSのイメージをSSDに書き込む
    - ここではLiteエディション（GUIなし）を想定しているが、別のエディションでも可能
    - アーキテクチャは armhf と arm64 のどちらでも良い
    - 2021-11-08以降はDebian 11 Bullseyeベース、それより前はDebian 10 Busterベース
    - 以下のページから使用するイメージを探してダウンロード
        - armhf: https://downloads.raspberrypi.org/raspios_lite_armhf/images/
        - arm64: https://downloads.raspberrypi.org/raspios_lite_arm64/images/
- 起動確認
    - 初期は user: pi, passwd: raspberry
- インターネットに接続
    - 横着せずに、起動させてから `sudo raspi-config` で行うのが吉
- キーボード設定を日本語に変更
- ロケールは英語のまま
- 必要があればユーザー作成やsshなどのセットアップ

# パフォーマンス調整
- デフォルトではGPUメモリが64MBしかないので`raspi-config`から増量する
    - 4 Performance Options -> P2 GPU Memory
- 4GBモデルなら256MB, 8GBモデルなら512MBあたりが無難

# GNOME Desktop のインストール
`task-gnome-desktop`をインストールすると、GNOME Desktopに必要なものが一気に入る。
※すでにlightdmがインストールされている場合にはインストールの途中で選択画面が出てくるので `gdm3` を選択する。

```bash
sudo apt install task-gnome-desktop
sudo reboot
```

インストール完了後に再起動するとGNOMEのログイン画面が出現するので、ログインできることを確認する。
デフォルトのウィンドウマネージャーはWaylandなので、X11の方を使いたい場合にはログイン時に画面右下の歯車ボタンから `GNOME Xorg` を選ぶ。

# 日本語サポートのインストール

```bash:
sudo apt install task-japanese
sudo localectl set-locale LANG=ja_JP.UTF-8 LANGUAGE="ja_JP:ja"
sudo apt install task-japanese-gnome-desktop fonts-noto
sudo reboot
```

日本語化後の初回ログイン時に、ホームフォルダ内のフォルダ名を日本語に変更するか聞かれるので、お好みで回答する。

# ネットワーク設定 (NetworkManager)
Raspberry Pi OSではネットワーク設定がdhcpcdによって管理されているため、WiFiなどをGNOMEから設定できない状態になっている。
GNOME Desktopとして使う上では都合が悪いので、NetworkManagerでの管理に切り替える。

```bash:
sudo apt update
sudo apt install network-manager  # おそらくすでに入っているが念の為
sudo systemctl disable dhcpcd.service  # dhcpcdの無効化
sudo reboot
```

WiFi接続をしていた場合、再起動後にはネットワークから切断された状態になっているので、GNOMEの設定からWiFiに接続する。


# 完成形
ここまでできればこうなるはず
![完成形.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/275790/912478ce-770e-e46c-3a50-4a6dd25d9b34.jpeg)


# おまけ：オーバークロック
Raspberry Pi 4Bの処理性能ならGNOMEも問題なく動かせるが、オーバークロックするとさらに快適になる。
※定格以上の電圧をかけることになるので故障のリスクが増します。言うまでもありませんが自己責任でお願いします。

- `/boot/config.txt` にオーバークロック関連の設定を追記

```config:/boot/config.txt(追記分)
# overclocking
over_voltage=4    # 電圧を上げる
arm_freq=2000     # 最大CPUクロック2GHz
arm_freq_min=600  # 最低CPUクロック600MHz
gpu_freq=750      # GPUクロック750MHz
```

- 動的クロック調整を導入

```bash:
sudo apt install cpufrequtils
sudo vi /etc/init.d/cpufrequtils
sudo reboot
```
```config:/etc/init.d/cpufrequtils(修正前)
ENABLE="true"
GOVERNOR="ondemand"
MAX_SPEED="0"
MIN_SPEED="0"
```
```config:/etc/init.d/cpufrequtils(修正後)
ENABLE="true"
GOVERNOR="conservative"
MAX_SPEED=2000000
MIN_SPEED=600000
```

- トラブルシューティング
    - 起動しなかったり起動後にカーネルパニックを起こす場合
        - Linuxが動作するPCにSSDを接続して、bootパーティションのconfig.txtを直接編集すれば戻せる
        - 起動するまでマイルドな設定に調整する
    - 負荷時のCPU温度が高すぎる
        - マイルドな設定に調整する
        - より冷やせるケースを導入する

# おまけ：Flatpak & Snapのセットアップ
Debianのパッケージは古いものが多い。
新しいバージョンのアプリケーションを手軽に使うために、FlatpakとSnapを導入してGNOME Softwareと統合する。

```bash:Flatpakのセットアップ
sudo apt install flatpak gnome-software-plugin-flatpak
sudo flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
sudo reboot
```

```bash:Snapのセットアップ
sudo apt install snapd gnome-software-plugin-snap
sudo snap install core
sudo reboot
```

# おまけ：GNOMEのカスタマイズ
Arm版のGNOMEでもAMD64などと同様に拡張機能を導入できる。
おすすめの拡張機能

- Dash to Dock
    - ドックが表示されるようになる
    - 設定はアプリ一覧のボタンを右クリック（3x3ドットのアイコン）
- Tray Icons: reloaded
    - システムトレイアイコンを表示させる
- Alternatetab
    - Alt + Tab でウィンドウ単位で切り替えられるようにする（デフォルトはアプリ単位）