Added Arch Linux on Raspberry Pi 5 article
This commit is contained in:
parent
bf65047c60
commit
d65d84bd67
136
posts/arch-linux-on-raspberry-pi-5.md
Normal file
136
posts/arch-linux-on-raspberry-pi-5.md
Normal file
@ -0,0 +1,136 @@
|
||||
---
|
||||
title: Arch Linux on Raspberry Pi 5
|
||||
tags: article arch linux arm raspberry pi5 nvme
|
||||
created: 2024-04-05T18:26:55Z
|
||||
published: true
|
||||
---
|
||||
|
||||
If you already have Raspberry Pi OS running on an SD card and you want to switch to Arch Linux ARM booting from an NVMe drive with the `linux-rpi-16k` kernel, this post is for you.
|
||||
|
||||
## Activate NVMe
|
||||
|
||||
Run `lsblk`. Does it show the NVMe device `/dev/nvme0n1`? If not, we need to append this to `/boot/firmware/config.txt` at the end:
|
||||
|
||||
```
|
||||
dtparam=nvme
|
||||
dtparam=pciex1_gen=3
|
||||
```
|
||||
|
||||
Changes in `config.txt` need to be followed up by a reboot to see the changes.
|
||||
|
||||
## Wipe the NVMe SSD
|
||||
|
||||
Make sure you don't have any important data remaining on your SSD.
|
||||
|
||||
```shell
|
||||
sudo umount /dev/nvme0n1p?
|
||||
sudo wipefs --all --force /dev/nvme0n1p?
|
||||
sudo wipefs --all --force /dev/nvme0n1
|
||||
sudo dd if=/dev/zero of=/dev/nvme0n1 bs=1024 count=1
|
||||
```
|
||||
|
||||
## Clone the boot volume to your NVMe SSD
|
||||
|
||||
```shell
|
||||
git clone https://github.com/geerlingguy/rpi-clone.git
|
||||
cd rpi-clone
|
||||
sudo cp rpi-clone rpi-clone-setup /usr/local/sbin
|
||||
sudo rpi-clone nvme0n1
|
||||
```
|
||||
|
||||
You could now boot from your NVMe SSD if all you need is Raspberry Pi OS.
|
||||
This is a good timing to check if your NVMe drive works at all.
|
||||
Otherwise, continue to download Arch Linux ARM.
|
||||
|
||||
## Clear both partitions
|
||||
|
||||
```shell
|
||||
sudo mount /dev/nvme0n1p2 --mkdir /nvme
|
||||
sudo rm -rf /nvme/*
|
||||
sudo mount /dev/nvme0n1p1 --mkdir /nvme/boot
|
||||
sudo rm -rf /nvme/boot/*
|
||||
```
|
||||
|
||||
## Install Arch Linux
|
||||
|
||||
```shell
|
||||
wget http://os.archlinuxarm.org/os/ArchLinuxARM-rpi-aarch64-latest.tar.gz
|
||||
sudo apt install libarchive-tools
|
||||
sudo bsdtar -xpf ArchLinuxARM-rpi-aarch64-latest.tar.gz -C /nvme/
|
||||
```
|
||||
|
||||
## Install linux-rpi-16k
|
||||
|
||||
For the following kernel download, change the URL to the [latest version](https://archlinuxarm.org/packages/aarch64/linux-rpi-16k).
|
||||
|
||||
```shell
|
||||
wget http://mirror.archlinuxarm.org/aarch64/core/linux-rpi-16k-6.6.23-1-aarch64.pkg.tar.xz
|
||||
sudo rm -rf /nvme/boot/*
|
||||
sudo tar xf linux-rpi-16k-6.6.23-1-aarch64.pkg.tar.xz -C /nvme/boot/
|
||||
```
|
||||
|
||||
## Update `/etc/fstab`
|
||||
|
||||
Get the `PARTUUID` from running `blkid` and edit your `/nvme/etc/fstab` accordingly:
|
||||
|
||||
```
|
||||
PARTUUID=0b322c87-01 /boot vfat defaults 0 2
|
||||
PARTUUID-0b322c87-02 / ext4 defaults,noatime 0 1
|
||||
```
|
||||
|
||||
## Activate NVMe boot again
|
||||
|
||||
Add this to the end of `/nvme/boot/config.txt`:
|
||||
|
||||
```
|
||||
dtparam=nvme
|
||||
dtparam=pciex1_gen=3
|
||||
```
|
||||
|
||||
## Update root device
|
||||
|
||||
Edit the `root` parameter in `/nvme/boot/cmdline.txt`:
|
||||
|
||||
```
|
||||
root=/dev/nvme0n1p2 rw rootwait console=serial0,115200 console=tty1 fsck.repair=yes
|
||||
```
|
||||
|
||||
## Unmount
|
||||
|
||||
```shell
|
||||
sync
|
||||
sudo umount -R /nvme
|
||||
```
|
||||
|
||||
## Boot from NVMe
|
||||
|
||||
The password for `alarm` is `alarm`. You can `su -` with the password `root` to get root access.
|
||||
|
||||
## Repair your installation
|
||||
|
||||
```shell
|
||||
pacman-key --init
|
||||
pacman-key --populate archlinuxarm
|
||||
pacman -R linux-aarch64 uboot-raspberrypi
|
||||
pacman -Syu --overwrite "/boot/*" linux-rpi-16k
|
||||
```
|
||||
|
||||
This will modify your boot config files, so you need to verify their contents again.
|
||||
|
||||
## Fix IPv6 connectivity
|
||||
|
||||
To avoid IPv6 connectivity problems later, install `networkmanager` and enable the service:
|
||||
|
||||
```shell
|
||||
pacman -S networkmanager
|
||||
systemctl enable NetworkManager
|
||||
```
|
||||
|
||||
Now you can `reboot`.
|
||||
|
||||
## Thank you
|
||||
|
||||
The information in this post is based on these amazing people:
|
||||
|
||||
- [Jeff Geerling](https://jeffgeerling.com/) for the `rpi-clone` fork and showing how to boot from NVMe
|
||||
- [Sven Kiljan](https://kiljan.org/) for the steps to replace `uboot` with `linux-rpi`
|
Loading…
x
Reference in New Issue
Block a user