自宅の引き出しに眠っていたラズパイ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"のリンクからダウンロードできた。
入手したファイルを、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触っていきましょう。