前回は、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 SSIDWi-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 ネットワークの設定および管理