Raspberry Pi Zero Headless Install mit ArchLinux

511 Wörter 3 Minuten Lesezeit

Headless-Installation eines Raspberry Pi Zero W mit Arch Linux

Der neu angeschaffte RP0W wird anstelle des mitgelieferten Noobs nun mit Arch Linux installiert. Die MicroSD in den Kartenleser und los gehts… sdX wie immer durch das tatsächliche Laufwerk ersetzen.

Aktuelle Partitionierung (Noobs)

sudo fdisk -l /dev/sdX

Disk /dev/sdX: 14,86 GiB, 15931539456 bytes, 31116288 sectors
Disk model: USB  SD Reader  
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: dos
Disk identifier: 0x000b624d

Device     Boot   Start      End  Sectors  Size Id Type
/dev/sdX1          8192  3232421  3224230  1,6G  e W95 FAT16 (LBA)
/dev/sdX2       3232422 31116287 27883866 13,3G  5 Extended
/dev/sdX5       3235840  3301373    65534   32M 83 Linux
/dev/sdX6       3301376  3825661   524286  256M  c W95 FAT32 (LBA)
/dev/sdX7       3825664 31116287 27290624   13G 83 Linux

Neu partitionieren

Für Archlinux legen wir 2 Partitionen auf der MicroSD an.

sudo fdisk /dev/sdX

sudo fdisk -l /dev/sdX

Disk /dev/sdX: 14,86 GiB, 15931539456 bytes, 31116288 sectors
Disk model: USB  SD Reader  
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: dos
Disk identifier: 0xc7d94423

Device     Boot  Start      End  Sectors  Size Id Type
/dev/sdX1         2048   206847   204800  100M  c W95 FAT32 (LBA)
/dev/sdX2       206848 31116287 30909440 14,8G 83 Linux

Dateisysteme anlegen - VFAT für die Boot-Partition und EXT4 für Archlinux.

sudo mkfs.vfat /dev/sdX1
sudo mkfs.ext4 /dev/sdX2

ArchLinux installieren

mkdir _zero && cd $_
mkdir root
sudo mount /dev/sdX2 ./root
sudo mkdir -p root/boot
sudo mount /dev/sdX1 ./root/boot
curl -# -L -o ArchLinuxARM-rpi-latest.tar.gz http://os.archlinuxarm.org/os/ArchLinuxARM-rpi-latest.tar.gz
sudo bsdtar -vxpf ArchLinuxARM-rpi-latest.tar.gz -C root

WLAN einrichten

cat << EOF | sudo tee ./root/etc/systemd/network/wlan0.network
[Match]
Name=wlan0

[Network]
DHCP=yes
EOF
cat << EOF | sudo tee ./root/etc/wpa_supplicant/wpa_supplicant-wlan0.conf
country=AT
ctrl_interface=DIR=/run/wpa_supplicant
ctrl_interface_group=wheel
update_config=1
EOF

WLAN SSID und Passwort setzen…

SSID='myssid' PASS='mypass' sh -c 'wpa_passphrase "${SSID}" "${PASS}"' | sudo tee -a ./root/etc/wpa_supplicant/wpa_supplicant-wlan0.conf
sudo sed -i '/#psk/d' ./root/etc/wpa_supplicant/wpa_supplicant-wlan0.conf
ln -s \
   /usr/lib/systemd/system/wpa_supplicant@.service \
   ./root/etc/systemd/system/multi-user.target.wants/wpa_supplicant@wlan0.service

Alles auf der microSD speichern, unmounten und neu starten…

sync
sudo umount root/boot
sudo umount root

SSH Login

Der RP0W sollte nun booten und sich im WLAN einloggen - die IP via DHCP. Die Standardpasswörter sind alarm/alarm und root/root.

ssh -l alarm 192.168.0.105
Welcome to Arch Linux ARM

     Website: http://archlinuxarm.org
       Forum: http://archlinuxarm.org/forum
         IRC: #archlinux-arm on irc.Freenode.net
uname -a
Linux alarmpi 4.19.75-2-ARCH #1 SMP PREEMPT Tue Oct 1 00:34:07 UTC 2019 armv6l GNU/Linux
hostnamectl
   Static hostname: alarmpi
         Icon name: computer
        Machine ID: 00000000000000000000000000000000
           Boot ID: 00000000000000000000000000000000
  Operating System: Arch Linux ARM
            Kernel: Linux 4.19.75-2-ARCH
      Architecture: arm

System-Update

Mangels installiertem+konfiguriertem sudo arbeiten wir nun als root

su

Paketmanager initialisieren, alle User dürfen sudo (TESTSYSTEM!) und reboot…

pacman-key --init
pacman-key --populate archlinuxarm
pacman -Syu
pacman -S --needed base-devel git sudo
echo '%wheel   ALL=(ALL) ALL' >> /etc/sudoers
reboot
uname -a
Linux alarmpi 4.19.83-1-ARCH #1 SMP PREEMPT Wed Nov 13 02:54:13 UTC 2019 armv6l GNU/Linux

Raspi-Config installieren

Raspi-Config installieren, um z.B. den Memory-Split einzustellen.

mkdir -p ~/build && cd $_
sudo pacman -S xorg-xrandr libnewt
git clone https://aur.archlinux.org/raspi-config.git && cd raspi-config
makepkg -i
sudo raspi-config

Benchmark

zum UnixBench