概要

Raspberry Pi 5 model B 8GM RAM を購入しました。ArchLinuxARMをインストールしようとしたのですが、2024-09-16 時点では Raspberry Pi 5 への ArchLinuxARM 公式対応版はリリースされていないようでしたので、有志の方のブログを参考にインストールを試みました。

  1. Arch Linux ARM のブータブルメディアを作成する
  2. Raspberry Pi 5 で Arch Linux ARM を起動する
  3. パッケージを更新する

Arch Linux ARM のブータブルメディアを作成する

Arch Linux ARM のブータブルメディア作成のため、下記を準備します。

  • VirtualBox 上の Arch Linux 環境
    • ブータブルメディアの作成に使用します。
  • USBストレージ(16GB)
    • ブータブルメディアにするデバイスです。

VirtualBox 上の Arch Linux 環境へUSBストレージを接続します。私の環境では /dev/sdb として認識されました。

fdiskコマンドで下記の通りにパーティションを作成します。

# fdisk /dev/sdb

Command (m for help): g
Created a new GPT disklabel (GUID: 74018460-45A0-404D-BDCB-235D43872A19).

Command (m for help): n #EFIシステムパーティション用のパーティション1を作成
Partition number (1-128, default 1): 1
First sector (2048-31389278, default 2048):
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-31389278, default 31387647): +256M

Command (m for help): t #パーティション1をEFIシステムパーティションへ変更
Selected partition 1
Partition type or alias (type L to list all): 1
Changed type of partition 'Linux filesystem' to 'EFI System'.

Command (m for help): n #ルート(`/`)のパーティション2作成
Partition number (2-128, default 2):
First sector (526336-31389278, default 526336):
Last sector, +/-sectors or +/-size{K,M,G,T,P} (526336-31389278, default 31387647):

Command (m for help): p #全てのパーティション情報の確認
Disk /dev/sdb: 14.97 GiB, 16071327744 bytes, 31389312 sectors
Disk model: USB Flash Disk
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 74018460-45A0-404D-BDCB-235D43872A19

Device      Start      End  Sectors  Size Type
/dev/sdb1    2048   526335   524288  256M EFI System
/dev/sdb2  526336 31387647 30861312 14.7G Linux filesystem

Command (m for help): w #パーティション情報の書き込み

先ほど作成したパーティション上でファイルシステムを作成して、ArchLinuxARMのパッケージをインストールします。

wget http://os.archlinuxarm.org/os/ArchLinuxARM-rpi-aarch64-latest.tar.gz

mkfs.vfat -F 32 /dev/sdb1
mkfs.ext4 -E lazy_itable_init=0,lazy_journal_init=0 -F /dev/sdb2

mount --mkdir /dev/sdb2 /mnt/usb # sdb1ではなくsdb2です
mount --mkdir /dev/sdb1 /mnt/usb/boot

bsdtar -xpf ArchLinuxARM-rpi-aarch64-latest.tar.gz -C /mnt/usb

rm -rf /mnt/usb/boot/*

wget http://os.archlinuxarm.org/aarch64/core/linux-rpi-16k-6.6.47-3-aarch64.pkg.tar.xz
mkdir linux-rpi-16k
tar xf linux-rpi-16k-6.6.47-3-aarch64.pkg.tar.xz -C linux-rpi-16k
cp -rf linux-rpi-16k/boot/* /mnt/usb/boot/

ルート /(sdb2)と/boot(sdb1)のPARTUUIDを確認します。

# ls -l /dev/disk/by-partuuid/
total 0
lrwxrwxrwx 1 root root 10 Sep 16 20:37 8b1d5d01-24b9-4ba0-b051-351238437d65 -> ../../sdb1
lrwxrwxrwx 1 root root 10 Sep 16 20:37 8b836060-b825-49ba-b9e0-9732563c7f74 -> ../../sdb2

/mnt/usb/boot/cmdline.txt を開いて、root=PARTUUID=<ルート(sdb2)のPARTUUID> を設定します。

root=PARTUUID=8b836060-b825-49ba-b9e0-9732563c7f74 rw rootwait console=serial0,115200 console=tty1 fsck.repair=yes

/mnt/usb/etc/fstab を開いて、/boot(sdb1) のマウントを設定します。

PARTUUID=8b1d5d01-24b9-4ba0-b051-351238437d65  /boot   vfat    defaults        0       0

USBストレージを取り出します。

sync && umount -R /mnt/usb

Raspberry Pi 5 で Arch Linux ARM を起動する

USBストレージを Raspberry Pi 5 の任意のUSBポートへ接続して、電源を投入します。

電源不足の場合、起動直後に電力不足のエラー画面が出てブートが止まりますが、電源ボタンを押すとブートを続行できます。

パッケージを更新する

パッケージを更新する前に /etc/pacman.d/mirrorlist を編集してミラー先を近くのリージョンへ設定することをお勧めします。

pacman-key --init
pacman-key --populate archlinuxarm

pacman -R linux-aarch64 uboot-raspberrypi
pacman -Syu --overwrite "/boot/*" linux-rpi-16k

参考にしたサイト

https://kiljan.org/2023/11/24/arch-linux-arm-on-a-raspberry-pi-5-model-b

Tags:

2 Comments

  1. 情報ありがとうございます。
    一点、
    “先ほど作成したパーティション上でファイルシステムを作成して、ArchLinuxARMのパッケージをインストールします。

    11. rm -rf /mnt/usb/*

    は、
    rm -rf /mnt/usb/boot/*
    ではないでしょうか。

    1. おっしゃる通りです。typoしていましたので修正しました。
      ご指摘ありがとうございます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です