Raspberry Pi Zero 2 Wは結構前に買えたものの全然活用できていませんでした。欲しくて買った割にやらせたいことが特にないんですよね。電源すら入れていないもの勿体無いので、とりあえず使えるようにするところまでやっていきます。
必要なもの
- Raspberry Pi Zero 2 W
- Linuxマシン
- microSDカード
セットアップ
こちらの情報を参考に進めていきます。
Raspberry Pi Zero 2 | Arch Linux ARM
パーティションの設定
MBR形式のパーティションテーブルで初期化して、パーティションを2つ作って行きます。1つ目のパーティションは1MiBから201MiBのFAT32、2つ目のパーティションは201MiBから最後までをext4で作ります。
※ SDカードをLinuxマシンに刺すと私の環境ではmmcblk0
という名前でデバイスを認識したのでmmcblk0
で進めます。
※ 公式のドキュメントではfdisk
を使っていますが、私はparted
でパーティションをセットアップする方が慣れているのでparted
で進めます。
parted -s /dev/mmcblk0 -- mklabel msdos mkpart primary fat32 1MiB 201MiB mkpart primary ext4 201MiB 100%
以下のコマンドでパーティションを確認できます。
parted -s /dev/mmcblk0 -- print
私の環境では以下のように出力されました。
Model: SD USD (sd/mmc) Disk /dev/mmcblk0: 32.0GB Sector size (logical/physical): 512B/512B Partition Table: msdos Disk Flags: Number Start End Size Type File system Flags 1 1049kB 211MB 210MB primary fat16 lba 2 211MB 32.0GB 31.7GB primary ext4
ファイルシステムを作成
パーティション1をvfatで、パーティション2をext4で作成します。
mkfs.vfat /dev/mmblk0p1 mkfs.ext4 /dev/mmblk0p2
マウント
マウント先のディレクトリを用意します。
mkdir root boot
それぞれマウントします。
mount /dev/mmcblk0p1 boot mount /dev/mmcblk0p2 root
ファイルシステムをダウンロードして展開
展開先ディレクトリを作成します。パーティション1をbootディレクトリに、パーティション2をrootディレクトリにマウントします。
mkdir boot root
rootディレクトリにファイルシステムを展開します。
※ 公式ドキュメントではwget
を使ってファイルシステムをダウンロードしていますが、私はcurl
の方が使い慣れているのでcurl
で進めます。
curl -fsSL http://os.archlinuxarm.org/os/ArchLinuxARM-rpi-armv7-latest.tar.gz | bsdtar -xpf- -C root sync
root/bootディレクトリ(mmcblk0p2)にはブートに必要なファイルが入っています。bootディレクトリ(mmcblk0p1)に移動します。
mv root/boot/* boot
ネットワーク周りの設定
wl*
インターフェイスでDHCPを有効化します。
cat <<EOF > root/etc/systemd/network/wl.network [Match] Name=wl* [Network] DHCP=yes DNSSEC=no EOF
もし固定IPの方がよければ以下を実行してください。
※ 仮にIPアドレスを192.168.100.Xとしましたが、これは環境に合わせて変更してください。
cat <<EOF > root/etc/systemd/network/wl.network [Match] Name=wl* [Network] Address=192.168.100.X/24 Gateway=192.168.100.1 DNS=192.168.100.1 EOF
Wi-Fiの設定
作業しているLinuxマシンにwpa_supplicantがインストールされている場合は以下のコマンドを実行します。
<SSID>
と<PASSPHRASE>
は環境に合わせて変更してください。
wpa_passphrase <SSID> <PASSPHRASE> | grep -v '#psk=' > root/etc/wpa_supplicant/wpa_supplicant-wlan0.conf
wpa_supplicantがインストールされておらず、かつ、インストールしたくない場合は直接ファイルを作ることもできます。
cat <<EOF > root/etc/wpa_supplicant/wpa_supplicant-wlan0.conf network={ ssid="<SSID>" psk="<PASSPHRASE>" }
ブート時にwpa_supplicantが起動するようにシムリンクを作成しておきます。
ln -s /usr/lib/systemd/system/wpa_supplicant@.service root/etc/systemd/system/multi-user.target.wants/wpa_supplicant@wlan0.service
ふぁいならいず
umount root boot
SDカードを作業マシンから抜いてSDカードの作成作業は完了です。
Zero 2 Wを起動
抜き取ったSDカードをZero 2 Wに挿して起動してみます。IPアドレスはDHCPならルーターのログなどを確認してください。用意されているユーザーはalarm
とroot
です。初期でSSHできるユーザーはalarm
だけです。
ssh alarm@<IP-ADDRESS>
alarm
ユーザーの初期パスワードはalarm
です。root
ユーザーになる場合はsu -
などでユーザーを変更してください。root
ユーザーの初期パスワードはroot
です。
パッケージマネージャーの初期化
Arch Linuxのパッケージマネージャーはpacman
です。初期化作業は特権ユーザーで行う必要があるのでroot
になっておきます。
su -
pacmanのキーリングを初期化します。
pacman-key --init pacman-key --populate archlinuxarm
ここまで済ませるとpacman
が使えるようになるはずなので、パッケージのアップデートをしておきましょう。
pacman -Syu
ここまでくると普通にArch Linuxが使えるようになります。ユーザー名を変更したり、パスワードをロックしたりなど、ぼくの考えたさいきょうのArch Linuxに育ててみてください。