Raspberry Pi5 で動く ArchLinux（CUI環境）を MicroSD カードにインストールする

※ **MicroSD** カードから立ち上げる事を想定しています。
※ USB/NVMe においても考え方は基本的に同じですが、config.txt や cmdline.txt 、fstab の設定を変更する必要があります（ここでは、それは説明しません）
※ ファイアウォールの設定の**説明はしていません**
※ 下記のサイトを参考にしています
https://kiljan.org/2023/11/24/arch-linux-arm-on-a-raspberry-pi-5-model-b/
※ 作業環境：Windows（ VitrualBox ＋ Extension Pack ＋ Manjaro ）
<br>

◆ MicroSD カードを挿入し、 Manjaro に認識させる。
　・仮想環境の Manjaro を起動
　・VirtualBox のメニューから デバイス → USB → 該当のカードリーダーを選択
　
◆ Manjaro アイコン → ターミナルエミュレータを立ち上げて下記のコマンドを実行
```
$ lsblk
NAME   MAJ:MIN  RM   SIZE  RO  TYPE MOUNTPOINTS
sda      8:0     0     8G   0  disk
┗━sda1   8:1     0     8G   0  part /
sdb      8:16    1    16G   0  disk
┗━sdb1   8:17    1    16G   0  part 
sr0      11:0    1  1024M   0  rom
```
この中で sdb が今回は MicroSDカード になります（環境によって異なります）

◆ MicroSD カードに ArchLinuxARM をインストールします
　※以下のコマンドをひたすら実行して行きます
　※全ての作業は root で行います
　※コマンドを実行する上で以下のパッケージのインストールが必要です
　libarchive-tools gdisk f2fs-tools base base-devel devtools dosfstools ntfs-3g 

```
$ su
passwd:
```
```
# pacman -Syu
```
```
# pacman -S libarchive-tools gdisk f2fs-tools base base-devel devtools dosfstools ntfs-3g

※既に全てインストールされているなら必要ありません
```


```
# mkdir -p /tmp/pi
```
```
# cd /tmp/pi
```
```
# curl -JLO http://os.archlinuxarm.org/os/ArchLinuxARM-rpi-aarch64-latest.tar.gz
```
```
# gdisk /dev/sdb
※ sdb の部分は環境によって異なります 

command:o	で y と答えて消す

Command:n
Partition number : 1
First sector : ENTER
Last sector  : 512MiB
Current type  is 8300 ~ Hex code or GUID : EF00

Command : n
Partition number : 2
First sector : ENTER
Last sector  : ENTER
Current type  is 8300 ~ Hex code or GUID : 8300

Command : w	で y と答えて保存終了する
```
```
# mkfs.vfat -F 32 /dev/sdb1
# mkfs.ext4 -E lazy_itable_init=0,lazy_journal_init=0 -F /dev/sdb2
```
```
# mkdir -p /mnt/sd
# mount /dev/sdb2 /mnt/sd
# mkdir -p /mnt/sd/boot
# mount /dev/sdb1 /mnt/sd/boot
```
```
# 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.12.6-1-aarch64.pkg.tar.xz   

※ http://mirror.archlinuxarm.org/aarch64/core/ にアクセスして最新バージョンを確認してください。これを書いている時点での最新バージョンは 6.12.6-1 です。
```

```
# tar xf *
```
```
# cp -rf boot/* /mnt/sd/boot/
```
```
# popd
# sync
```
```
# umount /dev/sdb1
# umount /dev/sdb2
```
```
# shutdown -h now
```

◆ インストールした MicroSD カードをラズパイに挿入して起動
ユーザー名：alarm	パスワード：alarm

１．ラズパイから直接ログインして作業する場合
```
login:root
passwd:root
```
２．Windows のターミナルから SSH でアクセスする場合（有線LAN接続）
　※書式は ssh ユーザー名@ホスト名.local
```
> ssh alarm@alarm.local
$ su
passwd:root
#
```
◆ ミラーリスト
```
# nano /etc/pacman.d/mirrorlist

※ Japanのサーバを一番上に持って来て、サーバーのアドレスの前に ＃ があれば消す
nano における 検索Ctrl+w　上書保存Ctrl+o　終了Ctrl+x　切取Ctrl+k　張付Ctrl+u
```


◆ Keyring の初期化と、アップデート
```
# pacman-key --init
# pacman-key --populate archlinuxarm
# pacman -Syu
```

※ MicroSD カードをメインとして使う場合、必ず下記の処理をして下さい

◆ ルートパスワードの変更
```
# passwd root
New password:
Retype new password:
```
◆ ホスト名の変更　※ホスト名を変更すれば、当然 SSH 接続時に入力する内容も変更になります
```
# nano /etc/hostname

※ alarl を消して、好きなホスト名に
```


```
# nano /etc/hosts

※ 下記の習って、ホスト名を変更します
127.0.0.1 localhost
::1 localhost
127.0.1.1 新ホスト名.localdomain 新ホスト名 
```


◆ 新しいユーザーの作成　※ホスト名の変更同様、 SSH 接続時に入力する内容が変わります
```
# useradd -m -s /bin/bash 新ユーザー名 
New password:
Retype new password:
```
◆ 既存の alarm ユーザーを削除
```
# userdel -r alarm
```
◆ 作成したユーザーに sudo 権限を付与
```
# EDITOR=nano visudo

※ 一番下まで移動して、以下の文面を追記して保存します
新ユーザー名 ALL=(ALL) ALL 
```


◆ sudo 権限付与の確認
```
# exit
xxxx login:新ユーザー名
Password:

$ sudo pacman -Syu
```
初回はごにょごにゅと表示されますが気にせずパスワードを入力
```
[sudo] password for 新ユーザー名 :

※ この処理でエラーが起きなければ sudo 権限付与は成功してます
```


これでラズパイで起動させる基本的な CUI 環境の構築は終わりです