Raspberry pi に Alpine Linux（64ビット）をインストールする方法

# 1. はじめに
今回は、自分自身への備忘録を兼ねて、Raspberry Pi にAlpine Linux（64ビット：aarch64）をインストールする方法を、お伝えしたいと思います。

参考：[Raspberry Piにdiskless modeのalpine linuxを導入してみる](https://www.slideshare.net/matoken/raspberry-pidiskless-modealpine-linux)
参考：[RaspberryPiで「alpinelinux」](https://tech.144lab.com/entry/rasp-alpine)
参考：[Alpine Linuxの使い方](https://qiita.com/syui/items/7851423ddc132b751fa3)
参考：[Ansibleでホスト名を利用する](https://kana-linux.info/linux/ansible%E3%81%A7%E3%83%9B%E3%82%B9%E3%83%88%E5%90%8D%E3%82%92%E5%88%A9%E7%94%A8%E3%81%99%E3%82%8B)
参考：[Raspberry PiにAlpine Linux入れてデスクトップ環境を構築した…い (2)](https://nitteru.hatenablog.com/entry/2019/05/18/213628)

# 2. この記事を読んでできること
- Raspberry Pi に Alpine Linux（aarch64）をインストールできるようになる。

# 3. 注意事項
- 標準ではCUIのみの操作となります。別途GUIをインストールすることで、GUIでも操作はできるようです。
- ssh接続は設定を有効化した後でないと使えません。

# 4. 必要なもの
- Raspberry Pi（この記事では Raspberry Pi3 を利用）
- SDカード（8GBもあれば十分だと思いますたぶん）
- インターネット環境（有線LAN推奨）
- キーボード
- マウス
- HDMIディスプレイ

# 5. Alpine Linux aarch64 の入手
- 以下のURLから、OSイメージファイル（[RASPBERRY PI Alpine Linux aarch64](https://alpinelinux.org/downloads/)）をダウンロードする。

```plaintext:AlpineLinuxaarch64ダウンロードサイトURL
https://alpinelinux.org/downloads/
```

参考：この記事作成時のファイルバージョン：[alpine-rpi-3.11.3-aarch64.tar.gz](http://dl-cdn.alpinelinux.org/alpine/v3.11/releases/aarch64/alpine-rpi-3.11.3-aarch64.tar.gz)

# 6. microSDカードのフォーマット
- [SD Formatter for Windows](https://www.sdcard.org/jp/downloads/formatter/index.html)などのソフトを用いて、使用するmicroSDカードをフォーマットする。
- フォーマット形式は「FAT32」を選択することを推奨します。

- 参考：参考画面
![fomatter.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240522/94af63eb-346c-229e-d908-886b65a9339b.png)

# 7. .tar.gz拡張子の解凍展開
- OSイメージファイル（alpine-rpi-3.11.3-aarch64.tar.gz）は、.tar.gz形式で圧縮されているため、[7-Zip](https://sevenzip.osdn.jp/download.html)などの解凍ソフトで圧縮ファイルの中身が参照できるよう解凍する。
- [7-Zip](https://sevenzip.osdn.jp/download.html)の場合は、連続2回（1回目で.gzを解凍、2回目で.tarを展開）解凍することで、圧縮ファイルの中身が参照できる状態になります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240522/2c84fd88-9ce5-e1e6-d506-a94048fbb26d.png)

# 8. microSDカードへOSイメージをコピー＆ペースト（所要時間：5分）
- 通常よく用いる[Etcher](https://www.balena.io/etcher/)などのソフトは用いずに、解凍展開した圧縮ファイルの中身を、そのままmicroSDカードへコピー＆ペーストします。

# 9. Alpine Linuxの起動
- Raspberry PiにmicroSDカードを挿入し、Alpine Linuxを起動する。
- 1分もしないうちにOSが起動すると思います。

# 10. rootユーザでログイン
- 初期起動時は、ssh接続はできないため、キーボード＆マウスを接続して、rootユーザでログインする。

```plaintext:デフォルトユーザ名／パスワード
ユーザ名　：root
パスワード：なし
```

# 11. 初期設定の実行
- 以下のコマンドを実行し、対話式で答えながら設定をすすめる。
- デフォルト選択肢が表示されている場合は、ENTERキー押下にてデフォルトを選択することが可能です。

```plaintext:コマンドプロンプト
// 初期設定の実行（対話式で答えながら設定していく）
# setup-alpine

// キーボードレイアウトの設定
Select keyboad layout [none]: jp

Select variant: jp

// ホスト名の設定（ご自由に設定してください）
Enter system hostname [localhost]: alpine-pi

// ネットワークの設定
Which one do you want to initialize? [eth0] ENTEREキー押下

Ip addres for eth0? [dhcp] ENTEREキー押下

Which one do you want to initialize? [wlan0] ENTEREキー押下

// 無線LANのSSID
Type the wireless network name to connect to: xxxxxxxx

// 無線LANのパスワード
Type the "xxxxxxxx" network Pre-Shared Key: xxxxxxxx

Ip address for wlan0? [dhcp] ENTEREキー押下

Do you want to do any manual network configuration? [no] ENTEREキー押下

// rootパスワードの設定
New password: xxxxxxxx

Retype password: xxxxxxxx

// タイムゾーンの設定
Which timezone are you in? [UTC] Japan

// プロキシの設定
HTTP/FTP proxy URL? [none] ENTEREキー押下

// NTPの設定
Which NTP client to run? [chrony] ENTEREキー押下

// パッケージを取得するミラーサイトの設定
// rはランダム、fはファステストまたは番号指定
Enter mirror number (1-46) or URL to add (or r/f/e/done) [1]: 1

// SSHの設定
Which SSH server? [openssh] ENTEREキー押下

// データの保存先
Enter where to store configs [mmcblk0p1]: ENTEREキー押下

Enter apk cache directory [/media/mmcblk0p1/cache]: ENTEREキー押下
```

# 12. IPアドレスの確認
- 現時点では、ホスト名の名前解決ができないため、IPアドレスを調べておく。

```plaintext:コマンドプロンプト
// IPアドレスの確認
# ip a
```

# 13. 設定の保存
- local backup commitをしないと設定が保存されずに失われるため、設定変更した際は必ず実施すること。

```plaintext:コマンドプロンプト
// 設定の保存
# lbu commit

// OS再起動
# reboot
```

# 14. パッケージを最新にして保存

```plaintext:コマンドプロンプト
// パッケージの更新
# apk update
# apk upgrade

// 設定の保存
# lbu commit

// OS再起動
# reboot
```

# 15. sudoパッケージの導入例

```plaintext:コマンドプロンプト
// sudoコマンドのインストール
# apk search sudo
# apk add sudo
```

# 16. wpa_supplicantサービスの起動設定有効化

```plaintext:コマンドプロンプト
// wpa_supplicantサービスの起動設定有効化
# rc-update add wpa_supplicant boot
```

# 17. ホスト名の名前解決ができるよう設定

```plaintext:コマンドプロンプト
// ホスト名の名前解決ができるよう設定
# apk add avahi
# apk add dbus
# rc-update add dbus
# rc-update add avahi-daemon
# service avahi-daemon restart
```

# 18. rootユーザでのssh接続できるよう許可

```plaintext:コマンドプロンプト
// sshd_configを編集
# vi /etc/ssh/sshd_config

＝＝追記内容＝＝
PermitRootLogin yes
＝＝＝＝＝＝＝＝

// 編集内容を反映
# /etc/init.d/sshd restart

// 設定の保存
# lbu commit

// OS再起動
# reboot
```

# 19. Broadcomファームウェアの導入

```plaintext:コマンドプロンプト
// Broadcomファームウェアの導入
# apk add linux-firmware-brcm
```

# 20. 電源オフ

```plaintext:コマンドプロンプト
// 電源オフ
# poweroff
```

# 21. おわりに
いかがでしたでしょうか？秘められたRaspberry piの64ビットCPUパワーが解放され、CUI好きにはたまらなく軽い操作性を体感できたのではないかなと思います。
今回の記事が、みなさまの学習の参考になれば幸いです。

2020/02/23 TAKAHIRO NISHIZONO