Raspberry Pi 4 を買ったのでubuntu20.04(64bit)をヘッドレスインストールしてみた

# はじめに

ちまたでは、8GBも発売になって話題になっているRapberry Pi 4ですが、やっと購入したのでubuntuをインストールした話。
リサーチが甘く、本体しか購入せず、microHDMIとかなくて困ったため、ヘッドレスでインストールしてみました。

## 必要なもの

買ったもの

- Rapberry Pi 4 model B /4GB

以上

家にあったもの

- microSDカード(16GB)
- PD対応type-cアダプタ
- Windows10 PC
- microSDカードリーダーライター（100均で購入）
- 有線LANケーブル
- スイッチングHUB

## 使用ソフト

いつも、何で書き込んだらいいのかよくわからなくて困ってたのですが、とうとう公式ツールがリリースされました。
しかも、Windows,Mac,Ubuntu 3大OSに対応しています。もうこれからは悩む必要ないですね。
あとは、Windows Terminalが正式リリース版になりましたので使っています。
Windowsも2004がリリースされたため、WSL2がリリース版になりましたので使っています。

- [Raspberry Pi Imager](https://www.raspberrypi.org/downloads/)
- Windows Terminal
- WSL2 ubuntu 20.04

## インストール手順（PC編）

### SDカードの作成

上記 Raspberry Pi Imegerを利用します。

起動すると以下のような画面になります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/38676/e9165d47-ee55-46fe-1150-b8e3e66d3924.png)

「CHOOSE OS」をクリックしてOSを選択します。Ubuntu以外にも用意されています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/38676/c6840771-5875-01ed-aa5e-6c184db40149.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/38676/e30731d8-60c0-bd3a-26c8-b25a6cd514b4.png)

OS選択後は、SDカードを選択します。「CHOOSE SD CARD」をクリックしてください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/38676/42e63e74-c4b0-423c-8c2e-7ffba746524a.png)
SDカードが認識されている場合は表示されるため、クリックしてください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/38676/acc68d51-ae77-4ade-5c82-fecd6754049a.png)
SDカードが認識されていない場合は何も表示されないため、接続を確認してください。

OSとSDカードの選択が終わったら「WRITE」をクリックすると書き込み開始します。最終確認画面などは出ないので気を付けてください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/38676/7afecd34-a986-7fb0-69de-976b9b499d3d.png)


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/38676/ebf0cb2c-5052-8522-f424-a80358ac69e1.png)

書き込みが完了したら、ラズパイにSDカードを挿入して、LANケーブルを差します。USB電源はまだ待ってください。

### sshによる接続

普通はDHCPを利用していると思います。そうするとIPアドレスがどうなるかわかりません。なので事前に現状のIPを調べておきます。

Windows Terminalを利用してWSLのubuntuを起動してください。
そこで以下のコマンドを実行します。（なお、192.168.1.{1..254}は自分の環境に合わせて変更してください。）

```
$ echo 192.168.1.{1..254} | xargs -P254 -n1 ping -s1 -c1 -w1 | grep ttl | sort -V -k4
9 バイト応答 送信元 192.168.1.1: icmp_seq=1 ttl=63
9 バイト応答 送信元 192.168.1.3: icmp_seq=1 ttl=63
9 バイト応答 送信元 192.168.1.5: icmp_seq=1 ttl=63
9 バイト応答 送信元 192.168.1.6: icmp_seq=1 ttl=63
9 バイト応答 送信元 192.168.1.13: icmp_seq=1 ttl=63
9 バイト応答 送信元 192.168.1.28: icmp_seq=1 ttl=127
9 バイト応答 送信元 192.168.1.29: icmp_seq=1 ttl=254
9 バイト応答 送信元 192.168.1.49: icmp_seq=1 ttl=63
9 バイト応答 送信元 192.168.1.54: icmp_seq=1 ttl=127
9 バイト応答 送信元 192.168.1.111: icmp_seq=1 ttl=63
9 バイト応答 送信元 192.168.1.168: icmp_seq=1 ttl=63
9 バイト応答 送信元 192.168.1.201: icmp_seq=1 ttl=127
9 バイト応答 送信元 192.168.1.205: icmp_seq=1 ttl=63
```

その後、ラズパイのUSB電源も接続してください。
接続後、Windows Terminalで［Alt］＋［Shift］＋［+］キーを押して縦分割します。
それで、新しいペインにて、先ほどのコマンドを実行し、新しいIPが出現するのをチェックします。

新しいIPが見つかったら、そこに対して、sshで接続します。
ubuntuは初期ユーザはubuntu パスワードもubuntuです。

```
ssh ubuntu@192.168.1.169
```

接続できると、初期パスワードの変更を求められるので、変更します。
変更すると強制的に接続が切れるため、再度接続しなおします。

## インストール手順（設定編）

無事に接続できたら、まずは日本語化しましょう。

### 日本語化

日本語言語パックのインストール

```
sudo apt -y install language-pack-ja
```

ロケールを日本語に設定

```
sudo update-locale LANG=ja_JP.UTF8
```

TZ設定（CUIベースのGUI?になります）

```
sudo dpkg-reconfigure tzdata
```

### mDNS対応

ずっとIPで接続するのもIPが変わる可能性もあるし、覚えられないので、mDNSの設定をします。avasiを利用します。

```
sudo apt install -y avahi-daemon
```

設定すると、ubuntu.localでアクセスできるようになります。（※ wsl1だとmDNS非対応です。なので PowerShellで試してください。）

### ユーザの追加、ホスト名の変更

ホスト名は以下で変更します。（/etc/hostsにはホスト名の記述はありません。）

```
sudo hostnamectl set-hostname ホスト名
```

ユーザの追加は以下です。対話式でパスワードなどの情報も入力します。

```
sudo adduser ユーザ名
```

管理者権限を付与するには以下です。

```
sudo usermod -aG sudo ユーザ名
```

以上、設定終了したら再起動します。

```
sudo reboot
```

再起動後は、ホスト名.localでアクセスできるようになります。


## おわりに

Raspberry PiはRapberry Pi OS(旧Raspbian)がデフォルトで利用されることが多いのですが、互換性重視のためか32bit版しか用意されていません。
せっかく4GBのメモリがのっているので、64bitOSにしたかったのと、Linux系OSのデファクトスタンダートがubuntuになりつつあるので、ubuntuをインストールしてみました。