そうだ Raspberry Pi 5 に ArchLinux をインストールしよう

1.普通に SDカード にインストールする方法
2.SDカード にインストールする方法を用いて外付けUSBメモリ(SSD/HDD)にインストールする方法
3.SDカード にインストールした ArchLinux ARM を起動ディスクとして、新規インストールする方法

◆◆◆ インストールと新規インストールの違いについて ◆◆◆
1. インストール
  既にどなたかが構築されたパッケージを解凍してコピーする、いわば複製のようなもの
2. 新規インストール
  従来の Arch Linux 同様に最初から自分で構築していく方法
つまり、ある程度有志の方が作成したものを元に自分で修正・追加していくか、最初から自分で構築したい人によって変わってきます
前者であれば、最初から SSH 接続が可能ですが、後者は出来ません
ただ、SSH 接続については鍵認証によるものの方が相応しいと思いますので、どちらにしても最終的にはパスワードも含め自分で構築していく必要性が出てくると思います

ともかく、当方の環境ではうまく行きましたので、とりあえず公開します
参考にし、または丸パクったサイトは下記のとおりです

◆ArchLinux ARM を SDカードにインストールするスクリプトが公開されています
https://kiljan.org/2023/11/24/arch-linux-arm-on-a-raspberry-pi-5-model-b/

◆ArchLinux ARM 公式 ※ ArchLinux ARM の起動ディスクを有していることが条件です
https://archlinuxarm.org/forum/viewtopic.php?t=16659

◆サイトの後半に、USBメモリから起動するための解決方法の一つを提供されています
https://qiita.com/tyokai/items/a425d5abceb7f335294d

最後に、いつもは初心者の方でも出来るだけ分かるように心がけていますが、今回はコマンドや必要条件等のみにしています
予めご了承願います
また、誤植や脱文があるかも知れません
ある程度の経験があれば解ると思いますが、こちらも予めご了承願います
自己責任で試せる方を対象としていますが、特にドライブの指定には気をつけて下さい

それでは始まります

 

1.普通に SDカード にインストールする方法 

条件1:PC でも ラズパイ実機でも構いませんが空のSDを挿入し、そこにインストールが可能な環境があること
 例)Linux 環境のある PC を持ち、かつ、SDカードアダプタがある
 例)USBメモリ に ラズパイOS をインストールしており、SDカードアダプタに空きがある状態である
条件2:対象の SDカード は アンマウント されていると想定します( mmcblk0 )
条件3:下記の全てのコマンドが打てる環境であること(環境によっては libarchive-tools gdisk f2fs-tools base base-devel devtools dosfstools ntfs-3g などのインストールが追加で必要となる場合があります)
条件4:デスクトップ環境まで説明はありません( root / alarm ユーザー環境だけのコマンド操作までです)

$ lsblk  ※ インストール先のドライブを必ず確認して読み替えて下さい

$ sudo mkdir -p /tmp/pi

$ cd /tmp/pi

$ sudo curl -JLO http://os.archlinuxarm.org/os/ArchLinuxARM-rpi-aarch64-latest.tar.gz

$ sudo gdisk /dev/mmcblk0
パーティション1・・・256-512MB、EF00
パーティション2・・・それ以外 8300

$ sudo mkfs.vfat -F 32 /dev/mmcblk0p1

$ sudo mkfs.ext4 -E lazy_itable_init=0,lazy_journal_init=0 -F /dev/mmcblk0p2

$ sudo mkdir -p /mnt/sd

$ sudo mount /dev/mmcblk0p2 /mnt/sd

$ sudo mkdir -p /mnt/sd/boot

$ sudo mount /dev/mmcblk0p1 /mnt/sd/boot

※ 次の bsdtar のコマンドには libarchive-tools が必要です 

$ sudo bsdtar -xpf /tmp/pi/ArchLinuxARM-rpi-aarch64-latest.tar.gz -C /mnt/sd

$ sudo rm -rf /mnt/sd/boot/*

$ sudo mkdir -p /tmp/pi/linux-rpi

$ pushd /tmp/pi/linux-rpi

$ sudo curl -JLO http://mirror.archlinuxarm.org/aarch64/core/linux-rpi-6.6.18-1-aarch64.pkg.tar.xz   

$ sudo tar xf *

$ sudo cp -rf boot/* /mnt/sd/boot/

$ popd

$ sudo sync

$ sudo umount /dev/mmcblk0p1

$ sudo umount /dev/mmcblk0p2

$ sudo shutdown -h now

ラズパイ実機のSDカードアダプタに挿入し、起動。
ユーザー名:alarm パスワード:alarm
root パスワード:root

Windows 環境のターミナルから SSH でアクセスできます
ssh [email protected]

root で下記のコマンドを実行
新規インストールではないので、キーリングの初期化をしないとアップデート出来ない可能性があります
スクリプトを公開している方のやり方のとおり、処理をお願いします

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

pacman -R linux-aarch64 uboot-raspberrypi
pacman -Syu --overwrite "/boot/*" linux-rpi
2.SDカード にインストールする方法を用いて外付けUSBメモリ(SSD/HDD)にインストールする方法

条件1:PC でも ラズパイ実機でも構いませんが、USBスロットに空きがあること、いずれの場合も Linux のコマンドが打てる環境にあること
条件2:対象の USBメモリ(SSD/HDD含む) は アンマウント されていると想定します( sdb )
条件3:下記の全てのコマンドが打てる環境であること(環境によっては libarchive-tools gdisk f2fs-tools base base-devel devtools dosfstools ntfs-3g などのインストールが追加で必要となる場合があります)
条件4:デスクトップ環境まで説明はありません( root / alarm ユーザー環境だけのコマンド操作までです)
条件5:OSの入った USBメモリ等 のみを挿して起動することを想定しています( 記録用の USBメモリも挿して起動する場合は cmdline.txt や fstab を UUID を使ったものに編集する必要があります)

$ lsblk  ※ インストール先のドライブを必ず確認して読み替えて下さい

$ sudo mkdir -p /tmp/pi

$ cd /tmp/pi

$ sudo curl -JLO http://os.archlinuxarm.org/os/ArchLinuxARM-rpi-aarch64-latest.tar.gz

$ sudo gdisk /dev/sdb
パーティション1・・・256-512MB、EF00
パーティション2・・・それ以外 8300

$ sudo mkfs.vfat -F 32 /dev/sdb1

$ sudo mkfs.ext4 -E lazy_itable_init=0,lazy_journal_init=0 -F /dev/sdb2

$ sudo mkdir -p /mnt/usb

$ sudo mount /dev/sdb2 /mnt/usb

$ sudo mkdir -p /mnt/usb/boot

$ sudo mount /dev/sdb1 /mnt/usb/boot

※ 次の bsdtar のコマンドには libarchive-tools が必要です 

$ sudo bsdtar -xpf /tmp/pi/ArchLinuxARM-rpi-aarch64-latest.tar.gz -C /mnt/usb

$ sudo rm -rf /mnt/usb/boot/*

$ sudo mkdir -p /tmp/pi/linux-rpi

$ pushd /tmp/pi/linux-rpi

$ sudo curl -JLO http://mirror.archlinuxarm.org/aarch64/core/linux-rpi-6.6.18-1-aarch64.pkg.tar.xz   

$ sudo tar xf *

$ sudo cp -rf boot/* /mnt/usb/boot/

$ popd

$ sudo nano /mnt/usb/boot/config.txt  ※一番下に追記
[all]
dtparam=usb

$ sudo nano /mnt/usb/boot/cmdline.txt  ※下記のように変更を施す

#root=/dev/mmcblk0p2 rw rootwait console=serial0,115200 console=tty1 fsck.repair=yes
root=/dev/sda2 rw rootwait console=serial0,115200 console=tty1 fsck.repair=yes

$ sudo nano /mnt/usb/etc/fstab  ※下記のように変更を施す

# <file system> <dir> <type> <options> <dump> <pass>
#/dev/mmcblk0p1  /boot   vfat    defaults        0       0
/dev/sda1  /boot   vfat    defaults        0       0

$ sudo sync

$ sudo umount /dev/sdb1

$ sudo umount /dev/sdb2

$ sudo shutdown -h now

ラズパイ実機のSDカードアダプタに挿入し、起動。
ユーザー名:alarm パスワード:alarm
root パスワード:root

Windows 環境のターミナルから SSH でアクセスできます
ssh [email protected]

root で下記のコマンドを実行
新規インストールではないので、キーリングの初期化をしないとアップデート出来ない可能性があります
スクリプトを公開している方のやり方のとおり、処理をお願いします

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

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

3.SDカード / USBメモリ等 にインストールした ArchLinux ARM を起動ディスクとして、新規インストールする方法

条件1:Arch Linux ARM を起動出来る環境下であること、USBスロットに空きがあることが条件です。
 例)ラズパイなど 中央演算装置に ARM が採用されている機種
条件2:対象の USBメモリ(SSD/HDD含む) は アンマウント されていると想定します( sda )
条件3:下記の全てのコマンドが打てる環境であること(環境によっては libarchive-tools gdisk f2fs-tools base base-devel devtools dosfstools ntfs-3g などのインストールが追加で必要となる場合があります)
条件4:デスクトップ環境まで説明はありません( root 環境だけのコマンド操作までです)
条件5:OSの入った USBメモリ等 のみを挿して起動することを想定しています( 他の記録用のUSBメモリも挿して起動する場合は cmdline.txt を UUID を使ったものに編集する必要があります)


$ lsblk  ※ インストール先のドライブを必ず確認して読み替えて下さい

$ su

# gdisk /dev/sda
パーティション1・・・256-512MB、EF00
パーティション2・・・それ以外 8300

# mkfs.ext4 -E lazy_itable_init=0,lazy_journal_init=0 -F /dev/sda2

# mkfs.vfat -F 32 /dev/sda1

# mount /dev/sda2 /mnt               

# mkdir /mnt/boot                          

# mount /dev/sda1 /mnt/boot    

# pacstrap /mnt base base-devel linux-rpi linux-firmware raspberrypi-bootloader firmware-raspberrypi archlinuxarm-keyring f2fs-tools dosfstools iwd openssh nano dhcpcd

# genfstab -U /mnt >> /mnt/etc/fstab

# cat /mnt/etc/fstab

# arch-chroot /mnt

# ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime

# hwclock --systohc

# hwclock 

# nano /etc/locale.gen  ※ リストの中の該当箇所の先頭の # を削除
en_US.UTF-8 UTF-8 
ja_JP.UTF-8 UTF-8 

# locale-gen

# nano /etc/locale.conf  ※ コンソールの段階では ja は必要ないので先頭に # をつける
LANG=en_US.UTF-8
#LANG=ja_JP.UTF-8

# nano /etc/vconsole.conf
KEYMAP=jp106

# nano /etc/hostname  ※ WC2 はあくまで例です
WC2

# nano /etc/hosts  ※ WC2 の箇所は上記のホストネームに合わせる、sが大文字なのはブログの仕様です
127.0.0.1 localhost
::1 localhost
127.0.1.1 WC2.localdomain WC2

# passwd  ※ root パスワードの設定

# nano /boot/config.txt  ※一番下に追記
[all]
dtparam=usb

# nano /boot/cmdline.txt  ※下記のように変更を施す

#root=/dev/mmcblk0p2 rw rootwait console=serial0,115200 console=tty1 fsck.repair=yes
root=/dev/sda2 rw rootwait console=serial0,115200 console=tty1 fsck.repair=yes

# exit

# shutdown -h now

起動ディスクに使ったものを外して、再度起動

root でログインした後、アップデートするのですが、普通にアップデートコマンドを入力しただけでは失敗することがあるみたいです。
その場合は、以下のやり方を試して下さい。

# systemctl status dhcpcd.service

恐らく上記のやり方をした場合、そもそも disable のままと思われますので…

# systemctl start dhcpcd.service
# systemctl enable dhcpcd.service

その後でアップデートを実行します

# pacman -Syu

それでも出来ないときはキーリングの初期化を行って再度アップデートを実行してみて下さい
pacman-key の初期化

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


あとは、自分でお好きなように環境を整えて下さい
当方の ArchLinux インストール日記や他のサイトを参考に・・・

上記の2つと違い、SSH の設定等も何もしていないまっさらの状態となります

再起動後、root でログインして、下記のコマンドを実行して最新状態にしてください

# pacman -Syu

Comment

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