WSL2でRaspberry Pi 4BにArchLinuxを入れる
概要
Raspberry Pi 4BにArch Linuxを導入する手順をまとめた備忘録です。MicroSDというか、archのuboot起因のエラーぽく忘れないように
問題となる症状
-
mmc1: unrecognised SCR structure version 4
エラー -
mmc1: error -22 whilst initialising SD card
エラー -
PARTUUID not found
エラー
これらは主にRaspberry Pi 4の新しいリビジョン(1.4以降)で発生します。
準備するもの
ハードウェア
- Raspberry Pi 4B
- MicroSD カード(64GB以上推奨)
- MicroSD カードリーダー
ソフトウェア
- Windows 11 + WSL2
- USBIPD-WIN
セットアップ手順
1. WSL環境とMicroSDリーダーを接続
Windows PowerShell(管理者権限)で実行
# WSL に接続するデバイスのバス IDを確認
usbipd list
# デバイスを共有(初回のみ)
usbipd bind --busid {device-ID}
Windows PowerShell(通常権限)で実行
# WSLを起動している状態で実行
# USB デバイスを接続する
usbipd attach --wsl --busid <busid>
WSL内で確認
# デバイスが認識されているか確認
lsusb
# ブロックデバイスとして認識されているか確認
lsblk
2. WSL上でMicroSDにArch Linuxを展開
必要なパッケージをインストール
# Ubuntu/Debianの場合
sudo apt update
sudo apt install u-boot-tools bsdtar wget
SDカードのパーティション作成
# SDカードのパーティション作成(/dev/sdeの部分は環境に応じて変更)
sudo fdisk /dev/sde
fdiskでの操作手順:
-
o
- 新しいDOSパーティションテーブルを作成 -
n
→p
→1
→Enter
→+512M
- bootパーティション作成 -
t
→c
- FAT32に設定 -
n
→p
→2
→Enter
→Enter
- rootパーティション作成 -
w
- 変更を書き込み
ファイルシステムの作成
# ファイルシステム作成
sudo mkfs.vfat /dev/sde1
sudo mkfs.ext4 /dev/sde2
Arch Linux ARMのダウンロードと展開
# 作業ディレクトリを作成
mkdir ~/arch-linux-setup
cd ~/arch-linux-setup
# 最新版をダウンロード
wget http://os.archlinuxarm.org/os/ArchLinuxARM-rpi-aarch64-latest.tar.gz
# マウントポイントを作成
mkdir boot root
# パーティションをマウント
sudo mount /dev/sde1 boot
sudo mount /dev/sde2 root
# Arch Linux ARMを展開
sudo bsdtar -xpf ArchLinuxARM-rpi-aarch64-latest.tar.gz -C root
# bootファイルを適切な場所に移動
sudo mv root/boot/* boot/
3. 起動エラー修正の適用
Arch Linux ARM フォーラムよりuboot起因のエラー対応を起こなう
boot.txtの修正(重要)
# boot.txtを編集
sudo nano boot/boot.txt
修正内容: 以下の2箇所で ${fdt_addr_r}
を ${fdt_addr}
に変更
修正前:
booti ${kernel_addr_r} ${ramdisk_addr_r}:${filesize} ${fdt_addr_r};
booti ${kernel_addr_r} - ${fdt_addr_r};
修正後:
booti ${kernel_addr_r} ${ramdisk_addr_r}:${filesize} ${fdt_addr};
booti ${kernel_addr_r} - ${fdt_addr};
boot.scrの再生成
cd boot
sudo mkimage -A arm -T script -O linux -d boot.txt boot.scr
最新DTBファイルの適用(念のため)
# GitHubから最新のDTBファイルを取得
wget https://github.com/raspberrypi/firmware/raw/master/boot/bcm2711-rpi-4-b.dtb
# 両方の場所に配置
sudo cp bcm2711-rpi-4-b.dtb boot/bcm2711-rpi-4-b.dtb
sudo cp bcm2711-rpi-4-b.dtb boot/dtbs/broadcom/bcm2711-rpi-4-b.dtb
4. 安全なアンマウント
# 全ての書き込み処理を完了
sudo sync
# アンマウント
sudo umount boot root
# 再度同期
sudo sync
# USBデバイスの安全な取り外し(オプション)
sudo eject /dev/sde
5. Raspberry Piでの動作確認
- MicroSDカードをRaspberry Pi 4Bに挿入
- 電源を接続
- 正常に起動することを確認
ログイン情報
-
一般ユーザー:
alarm
/alarm
-
root ユーザー:
root
/root
loginしたら絶対変更しよう