RaspberryPi3にAlmaLinux8をインストール

自宅の引き出しに眠っていたラズパイ3を有効活用するため、AlmaLinux8を入れてみる。

## 作業環境

* RaspberryPi 3 Model B
* microSDカード 
* (PCにSDカードスロットがない場合は) SDカードリーダ
* mac 16インチ
* HDMI接続モニタ
* USBキーボード
* インターネット回線+無線LAN環境(2.4Ghz/802.11b/g/n)

## 作業

### 公式のラズパイ向けAlmaLinuxイメージ入手

以下からダウンロードする。
※記事執筆時点(2022/1/17)では、"Step 1: Grab the image"のリンクからダウンロードできた。

https://github.com/AlmaLinux/raspberry-pi/

入手したファイルを、xzコマンドで解凍する。 ※"-d" オプションで解凍
(xzコマンドが入ってない方は利用環境に応じてインストールしてください。)

``` 
$ xz -d AlmaLinux-8-RaspberryPi-latest.aarch64.raw.xz
```
コマンド実行後、"AlmaLinux-8-RaspberryPi-latest.aarch64.raw"というファイルができあがる。

### 起動用のSDカード作成

手持ちのSDカードをPCに接続して内容確認。
自分のPCでは **/dev/disk2** としてmicroSDを認識していた。

```
$ diskutil list

/dev/disk0 (internal, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *500.3 GB   disk0
   1:                        EFI EFI                     314.6 MB   disk0s1
   2:                 Apple_APFS Container disk1         499.0 GB   disk0s2
/dev/disk1 (synthesized):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      APFS Container Scheme -                      +499.0 GB   disk1
                                 Physical Store disk0s2
   1:                APFS Volume Macintosh HD            15.7 GB    disk1s1
/dev/disk2
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:     FDisk_partition_scheme                        *32.0 GB     disk2
   1:                 DOS_FAT_32 NO NAME                 32.0 GB     disk2s1
```

以下コマンドで、フォーマット/アンマウントする。
※アンマウントしておかないと、このあとのddコマンドが成功しない
※フォーマット時パラメータは必要に応じて調整してください

```
$ diskutil eraseDisk MS-DOS alma-rspi3 /dev/disk2

$ diskutil unmountDisk /dev/disk2
```

フォーマットできたら、以下形式のddコマンドでrawファイルを書き込む。

> sudo dd if=[ファイル名] of=[デバイス名] bs=1m 

例として、解凍したrawファイルが配置されたディレクトリに移動後、以下コマンドで書き込む。
こちらのサイト曰く、デバイス名にrをつけると速く焼けるのでそのように指定
https://ledsun.hatenablog.com/entry/2014/10/26/174712

```
$ sudo dd if=AlmaLinux-8-RaspberryPi-latest.aarch64.raw of=/dev/rdisk2 bs=1m 
```

### OS起動確認

焼いたあとはラズパイにSDカードを接続し、電源ON。
接続したディスプレイに以下のようなログインプロンプトが表示されればOK。
初期状態ではroot/almalinuxでログインできる。

```
AlmaLinux 8.5 (Arctic Sphynx)
Lernel 5.18.78-v8.1.l8 on an aarch64

localhost login:  

(root / almalinux でログイン後)
[root@localhost ~]#

(一応OS確認)
# cat /etc/redhat-release 
AlmaLinux release 8.5 (Arctic Sphynx)
```

## OS起動後の初期設定

※以下、日本語環境で操作した場合の出力。
 英語環境の場合は適宜読み替えてください。

### ホスト名設定

localhostは無個性過ぎるので、好きなホスト名をつけましょう。

```
# hostnamectl set-hostname [ホスト名]
```
ログアウト/ログイン後に変更されたことを確認。

### rootユーザのPW変更

短いやつに設定したい。

```
# passwd
ユーザー root のパスワードを変更。
新しいパスワード:　★PW入力
新しいパスワードを再入力してください:　★PW再入力
passwd: すべての認証トークンが正しく更新できました。
```

### wifi設定

nmcliでwifiアダプタの状態確認、有効ではなかったらonにする。

```
# nmcli radio wifi
enabled

(disableだった場合)
# nmcli radio wifi on
```
以下コマンドで受信しているSSIDを確認、接続する。

```
# nmcli dev wifi list
IN-USE  BSSID              SSID             MODE      CHAN  RATE        SIGNAL  BARS  SECURITY  
        1A:EC:E7:XX:XX:XX  hoge-SSID1       インフラ  3     270 Mbit/s  59      ▂▄▆_  WPA2      
        1A:EC:E7:XX:XX:XX  hoge-SSID2       インフラ  11    195 Mbit/s  59      ▂▄▆_  WPA2      
        1A:EC:E7:XX:XX:XX  hoge-SSID3       インフラ  3     270 Mbit/s  57      ▂▄▆_  WPA1 WPA2 

# nmcli --ask dev wifi connect [接続したいSSID]
パスワード: [wifi PWを入力後Enter]

(接続後、SSID確認時のコマンドを実行すると、"IN-USE"の箇所に"*"が表示される)
# nmcli dev wifi list
IN-USE  BSSID              SSID             MODE      CHAN  RATE        SIGNAL  BARS  SECURITY  
        1A:EC:E7:XX:XX:XX  hoge-SSID1       インフラ  3     270 Mbit/s  59      ▂▄▆_  WPA2      
        1A:EC:E7:XX:XX:XX  hoge-SSID2       インフラ  11    195 Mbit/s  59      ▂▄▆_  WPA2      
 *      1A:EC:E7:XX:XX:XX  hoge-SSID3       インフラ  3     270 Mbit/s  57      ▂▄▆_  WPA1 WPA2 

(connectionも接続状態になっている)
# nmcli c s
NAME                UUID                                  TYPE      DEVICE 
hoge-SSID3          3b236d70-417d-491d-b580-c7511ffdbf7c  wifi      wlan0
```

### IP固定設定

外部からSSHで接続したいので、IP固定する。

```
# nmcli c m hoge-SSID3 ipv4.addresses 192.168.11.125/24
# nmcli c m hoge-SSID3 ipv4.method manual
# nmcli c up hoge-SSID3

(DHCPになっていないことを確認)
# nmcli c s tshome_G |grep ipv4.method
ipv4.method:                            manual
```
設定後、リブートしても外部から固定IP宛にSSHできていればOK。

### SELinux/firewalld

SELinuxは有効(Enforcing)のため、必要に応じてdisableにする。

```
# getenforce
Enforcing

(sedでdisableにした後で確認)
# sed -i 's/SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
# cat /etc/selinux/config |grep ^SELINUX=
SELINUX=disabled

(リブートで設定反映)
# reboot
```

firewalldも有効状態だが、ご丁寧にデフォルトのpublicゾーンはSSH許可済。
必要に応じて止めるなり追加の許可設定を入れる。

```
# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
   Active: active (running) since Fri 2018-06-22 11:12:05 UTC; 3 years 6 months ago

# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: wlan0
  sources: 
  services: cockpit dhcpv6-client ssh
  ports: 22/tcp
  protocols: 
  forward: no
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules:

(firewalldを止める/起動時に無効化する場合)
# systemctl stop firewalld
# systemctl disable firewalld
```

## おわり

CentOS8のサポートも終了したので、自宅で一番身近なラズパイでAlmaLinux触っていきましょう。