前回は、AlmaLinuxでcloud-initを使用できるようになったことについてでした。cloud-initを使えるということは、従来のRaspberry Pi OSで使われていたようにディスプレイ、キーボード、マウスを接続しないで本体だけ(ヘッドレス)で起動して使用することができる可能性が出てきます。
そこで、ここではRaspberry PiにAlmaLinuxをヘッドレスインストールして使う方法を見ていくことにします。
AlmaLinuxのイメージをメディアにコピーしたら、コピーしたメディアのboot
パーティションにあるuser-data
を編集していきます。
ホスト名とユーザー設定
cloud-initで設定するために、boot
パーティションのuser-data
ファイルを編集していきます。
#cloud-config
hostname: almalinux.local
ssh_pwauth: false
users:
- name: almalinux
groups: [ adm, systemd-journal ]
sudo: [ "ALL=(ALL) NOPASSWD:ALL" ]
lock_passwd: false
passwd: $6$EJCqLU5JAiiP5iSS$wRmPHYdotZEXa8OjfcSsJ/f1pAYTk0/OFHV1CGvcszwmk6YwwlZ/Lwg8nqjRT0SSKJIMh/3VuW5ZBz2DqYZ4c1
ssh_authorized_keys:
- ssh-ed25519 AAAA(中略)OBY6
前回と同様に、ホスト名とユーザー名、パスワード、またヘッドレスですからリモートからsshでログインできるようにssh_authorized_keys
を設定しておきます。
ここではパスワードを、配布されているAlmaLinuxと同じ内容で書いていますが、「第3回 Raspberry Pi 4でAlmaLinuxのcloud-initを利用」のパスワードの設定にあるように実際に使用するパスワードに変更して下さい。
Wi-Fi接続の設定
有線の場合はLANケーブルを接続すれば良いのですが、Wi-Fiの場合には接続用の設定をする必要があります。
前回は、runcmd
を使って設定する方法を紹介しているのですが、AlmaLinuxのドキュメントではruncmd
を使用する方法とnetwork-config
ファイルを使用する方法が紹介されています。
ところが、それらの方法ではWi-Fiに接続できない場合がありました。その際の動作を見てみると、Wi-Fiのデバイスが使えるようになるまで時間がかかっている様子でした。そのため、runcmd
を使うことでWi-Fiに接続する前に少しだけ待ってから実行するようにしてみます。
runcmd:
- [ sh, -c, sleep 3 && nmcli dev wifi connect "SSID" password "パスワード" ]
nmcli
コマンドで接続する前に、3秒間
だけ待ってから実行するようにしています。SSID
とパスワード
は実際に接続するアクセスポイントのSSIDとパスワードで置き換えます。
これで、無事にWi-Fiに接続できるようになるかと思います。
なお、runcmd
を使用する場合に前回のように文字列で書いた場合には、sh
で実行されますが、この例のように[
、]
で囲んだリストで書いた場合にはexecve
で実行されることになっています。
固定IPアドレスの設定
これでWi-Fiに接続してssh
でログインできるようになったのですが、どのIPアドレスに接続したら良いのかわからない場合があります。
そこで、固定IPアドレスを設定してしまうことにしようと思います。先ほど、nmcli
コマンドでWi-Fiに接続しましたが、続けて固定IPアドレスを設定していきます。
runcmd:
- [ sh, -c, sleep 3 && nmcli dev wifi connect "SSID" password "パスワード" ]
- nmcli connection modify SSID ipv4.method manual ipv4.address 192.168.1.100 ipv4.gateway 192.168.1.1 ipv4.dns 8.8.8.8,192.168.1.1
- nmcli connection down SSID
- nmcli connection up SSID
Wi-Fiに接続した後で、コネクションの変更として手動
で、IPアドレスは192.168.1.100
、ゲートウェイが192.168.1.1
、DNSが8.8.8.8
と192.168.1.1
として設定しています。
もちろん、使用するIPアドレス、ゲートウェイ、DNSは実際の環境に合わせて修正して下さい。またDNSにはGoogleのパブリックDNSも追加しています。
固定IPアドレスの設定を反映させるために、コネクションを一旦ダウンしてから再起動しています。
なお、ここではSSID
と書きましたが実際にはコネクション名
でWi-Fiの場合には接続に使用したSSID
がコネクション名になっているはずなのでSSID
として書いています。
AlmaLinuxの起動
準備ができましたから、Raspberry Piにメディアを装填して電源を入れて起動します。
ディスプレイがありませんから、起動のタイミングがわかりづらいのですが、暫く待ってから設定したIPアドレスで接続します。あるいは、ping
で起動するのを監視しても良いでしょう。
$ ping -c 1 192.168.1.100
今回は、IPアドレスを192.168.1.100
で設定していますから、そのアドレスで応答が戻るのを待ちます。タイムアウトしてしまったら、起動するまで数回繰り返してみます。
無事に起動したらssh
でログインして、まずはパッケージを最新の状態に更新しておきます。
$ sudo dnf upgrade -y
$ sudo dnf clean all
ここでは、インストールされているパッケージを最新の状態に更新した後でキャッシュなどを削除しています。
これで、Raspberry PiにインストールするAlmaLinuxもヘッドレスでインストールして利用することができるようになりました。
参考: Configuration using cloud-init AlmaLinuxドキュメント
Run commands on first boot cloud-initドキュメント
11.2. nmcliを使用したWiFiネットワークへの接続 RHEL 9 ネットワークの設定および管理