ラズパイであそぼ　〜UbuntuServerを入れて〜

ラズパイにUbuntuを入れて遊びたいようのはじめにすることを自分用にまとめました。

[1. 用意するもの](#1-用意するもの)
[2. まずOS](#2-まずOS)
[3. セットアップ](#3-セットアップ)
[4. 最後に](#4-最後に)

# 1. 用意するもの
- Raspberry Pi
- microSDカード
- キーボード
- OS書き込む用のPC

# 2. まずOS
Ubuntu Desktop 22.04をいれたいと思ったのですが、発火しそうだったので、Ubuntu Server 22.04をいれることにしました。

Raspberry Pi Imagerがくそ便利。
![raspi_imager1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1868844/38450d25-8d3b-1e65-af42-0cde5ef7cadc.png)

OSは、
Other general-purpose OS　→ Ubuntu → Ubuntu Server 22.04 LTS
Ubuntu serverの64-bit server OS for arm64 architecturesの方を選びます。
![raspi_imager2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1868844/dbb67e80-b422-4815-1824-dffcf24a8307.png)

ストレージはSDカードを選択して、書き込むを押します。
![raspi_imager3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1868844/c7726726-9a3e-1a72-876a-5f8e152d2063.png)

# 3. セットアップ

## 3.1 ログイン

**Username: ubuntu**
**Password: ubuntu**

最初はこれでログインできます。
新しいパスワードを求められるので、自分で決めたパスワードを2回入力します（2回目は確認）。

### 注意点

- 記号に関してはキーボードの設定がまだできていないので、使用するのはやめておいた方がよさそうです。
- パスワードが短すぎると怒られます。

## 3.2 キーボードの設定

以下のコマンドでキーボードの設定を行います。
```
$ sudo dpkg-reconfigure keyboard-configuration
```

（普通の日本語キーボードを使用している場合）
矢印キーとエンターキーで操作して、
Generic 105-key PC　→ Japanese　→ Japanese
と選択します。
あとはデフォルトの設定で問題ないです。
テンキーのあるなしなどは関係ありません、たぶん。

## 3.3 ユーザ作成

### root
rootにログインできるようにしておきたい人用です。（おすすめです）
rootはパスワードさえ設定すれば、ログインできるようになります。
この作業しなくても、`sudo`は使えます。

```:rootのパスワード設定
$ sudo passwd root
```

### 他のユーザ
つくりたいひとは作ってください。

```: ユーザの追加
$ sudo adduser [username]
```

```: ユーザの削除
$ sudo userdel -r [username]
$ sudo userdel -r ubuntu  # みたいな感じで
```

## 3.4 ネットワーク(Wi-Fi)

`/etc/netplan/`に以下のようなファイル`99_config.yaml`を作成します。

```yaml:/etc/netplan/99_config.yaml
network:
  version: 2
  wifis:
    wlan0:
      dhcp4: true
      access-points:
        "SSID":
          password: "暗号化キー"
```

`"SSID"`と`"暗号化キー"`は置き換えてください。

ファイルを作成したら、以下のコマンドでnetplanを再起動してあげます。
```bash
$ sudo netplan apply
```

そして、設定が反映されているか確認してあげます。
```bash
$ ip a
```

## 3.5 ネットワーク（有線）

`/etc/netplan/`に以下のようなファイル`99_config.yaml`を作成します。

```yaml:/etc/netplan/99_config.yaml
network:
  version: 2
  renderer: networkd
  ethernets:
    eth0:
      dhcp4: true
```

```yaml:/etc/netplan/99_config.yaml(固定IPアドレス)
network:
  version: 2
  renderer: networkd
  ethernets:
    eth0:
      dhcp4: false
      addresses:
      - 192.168.**.**/24
      routes:
      - to: default
        via: 192.168.**.1
```

192.168.**.**/24のところは自分のルータと相談して、変更してください。
また、routesのviaは、ゲートウェイを指定してあげてください。(たいがい、最後が.1になると思います)

多くの人が、`gateway4`を使っています。
が、`gateway4`は非推奨だとbashで注意されるので、私は`routes`を使いました。

ファイルを作成したら、以下のコマンドでnetplanを再起動してあげます。
```bash
$ sudo netplan apply
```

そして、設定が反映されているか確認してあげます。
```bash
$ ip a
```

## 3.6 パッケージの更新

いつものコマンドを実行します。

```
$ sudo apt update
$ sudo apt -y upgrade
```

けっこう時間かかります。

## 3.7 日本語化

正直しなくてもいいような気が、、、します、、、
なぜかはあとでいいます。

```bash
$ sudo apt install language-pack-ja-base language-pack-ja ibus-mozc
$ locale set-locale LANG=ja_JP.UTF-8 LANGUAGE="ja_JP:ja"
$ source /etc/default/locale
```

`sudo reboot`でもして、`date`コマンドをしばいてみてください。

日本語になって、、、、いない！！
**文字化け**してる！！

なんか文字化け直すの無理みたいです。
リモートでログインした場合だと、うまく日本語化されるようですが、
直接触る場合、**文字化けは避けられません**。たぶん

「わしゃSSHしか使わん」とかの人なら、日本語化するのありかも。

あと、[この方法](http://www.alb.jp/%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF/ubuntu%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E3%81%AE%E6%97%A5%E6%9C%AC%E8%AA%9E%E5%8C%96%EF%BC%8D%E6%96%87%E5%AD%97%E5%8C%96%E3%81%91%E3%81%AB%E5%AF%BE%E5%87%A6%E3%81%99%E3%82%8B%EF%BC%81/)のように、`.bashrc`を編集して、サーバーを直接触る場合はロケールを英語にするという技を使うのもありかも。

http://www.alb.jp/%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF/ubuntu%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E3%81%AE%E6%97%A5%E6%9C%AC%E8%AA%9E%E5%8C%96%EF%BC%8D%E6%96%87%E5%AD%97%E5%8C%96%E3%81%91%E3%81%AB%E5%AF%BE%E5%87%A6%E3%81%99%E3%82%8B%EF%BC%81/

しょうみ必要になったときに、やればいいかなって。

## 3.8 SSH

デフォルトで起動してるっぽいので、そんなに難しくないです。

```bash: 自分のメインPCのターミナルから
$ ssh-copy-id ubuntu@192.168.**.**  # username@IP_address
```

ユーザを作成した人はubuntuのところをユーザ名に変えてください。
IPアドレスに関しては、サーバー（IPアドレスを知りたいPC）で`ip a`コマンドを叩くとわかります。

`/etc/ssh/sshd_config`の設定をいじって、公開鍵認証を使えるようにします。

```config: /etc/ssh/sshd_config
#PubkeyAuthentication yes
↓
PubkeyAuthentication yes
```

また、パスワード認証がいらないという設定をしたい人はしてください。

```config: /etc/ssh/sshd_config
PasswordAuthentication yes
↓
PasswordAuthentication no
```

いろいろ設定ファイルの修正が終わったら、以下のコマンドでデーモンを再起動して、設定を反映させます。

```bash: デーモンの再起動
$ sudo service ssh restart
```

## 3.9 cloud-initの無効化

cloud-initはいまいちわからないが、今回(実機で遊んでいく)場合はいらないと思われる。
あと、起動時にcloud-initがいちいち発動するのが嫌だったので、無効化します。

```:cloud-initの無効化
$ sudo touch /etc/cloud/cloud-init.disabled
```

## 3.10 プロンプトの色付け

`~/.bashrc`の中の一部を書き換えます。

```config: ~/.bashrc
#force_color_prompt yes
↓
force_color_prompt yes
```

`exit`コマンドでログインし直したらプロンプトに色がつきます。**やったー**

# 4. 最後に

楽しい開発ライフを。