Archlinux auf dem Raspberry Pi
Diese Anleitung zum Installieren und Einstellen des Archlinux auf dem Raspberry Pi ist aus vielen
Versuchen und unter Zuhilfenahme der deutschen und englischen Archlinux-Wikis und jeder Menge mehr
oder weniger zufällig aufgefundener Forenbeiträge entstanden.
Sie wird stetig und bei Bedarf fortgeführt.
ArchLinuxArm unterstützt ARMV6 leider nicht mehr, deswegen bin ich
für die alten RaspBerry Pis auf Raspberry Pi OS umgestiegen.
Trotzdem lasse ich diese Anleitung mal hier stehen, vielleicht hilft sie noch jemandem weiter.
Quelle :
http://archlinuxarm.org/platforms/armv6/raspberry-pi, Tab „Installation“ (existiert leider nicht
mehr)
Mit gparted auf sdX (X ist das Laufwerk der SD-Karte)
1. primäre Partition mit fat32, 100Mbyte
2. primäre Partition mit dem Rest mit etx4
anlegen und beide formatieren.
Folgendes als "root" !
Verzeichnisse anlegen und mounten :
> mkdir boot
> mount /dev/sdX1 boot
> mkdir root
> mount /dev/sdX2 root
ArchLinux-Archiv herunterladen :
> wget http://archlinuxarm.org/os/ArchLinuxARM-rpi-latest.tar.gz
Achtung : wenn schon eine Datei namens ArchLinuxARM-rpi-latest.tar.gz im aktuellen
Verzeichnis vorhanden ist, hängt wget einen Punkt und eine laufende Nummer an den Dateinamen an.
Deswegen entpackt der folgende Befehl nicht unbedingt das zuletzt heruntergeladene Archiv!
Darauf sollte man unbedingt achten!
Entpacken :
> tar -xvzf ArchLinuxARM-rpi-latest.tar.gz -C root
> sync
Boot-Dateien in die Boot-Partition verschieben :
> mv root/boot/* boot
Unmounten :
> umount boot root
Ab hier auf dem Raspberry Pi
SD-Karte entnehmen und in einen RaspberryPi stecken, 5V einstecken ...
Erster Login : alarm alarm
Superuser : root root
# su
Sprache einstellen :
# echo LANG=de_DE.UTF-8 > /etc/locale.conf
# echo KEYMAP=de-latin1 > /etc/vconsole.conf
- in /etc/locale.gen die Raute vor de_DE.UTF-8 entfernen
# nano /etc/locale.gen
# locale-gen
# shutdown -r now
Passwort ändern :
# passwd
User anlegen :
# useradd -m -g users -s /bin/bash <name>
# passwd <name>
# shutdown -r now
Standard-User löschen :
# userdel alarm
Adresse suchen :
> ifconfig
Über Netzwerk, z.B mit puTTy als <name> (vorher angelegter User) einloggen.
Dann mit
# su
in den Root-Modus wechseln.
Auf einer Konsole mehrfach
# ls -R /.
ausführen, um Entropie für bessere Zufallszahlen zu erzeugen.
- während dessen auf einer anderen Konsole den Schlüssel für pacman generieren :
# pacman-key --init
# pacman-key --populate archlinuxarm
Linux auf aktuellen Stand bringen (Ethernet muss angeschlossen sein) :
# pacman -Syu
Zeitzone einstellen :
# ln -fs /usr/share/zoneinfo/Europe/Berlin /etc/localtime
- in /etc/timezone "Europe/Berlin" einfügen
# nano /etc/timezone
Europe/Berlin
Zeitserver ergänzen :
# pacman -S ntp
- in /etc/ntp.conf vor den "server"-Zeilen eintragen :
# nano /etc/ntp.conf
server ptbtime1.ptb.de iburst
- ntp neu starten :
# systemctl restart ntpd.service
Rechnername setzen :
- in /etc/hostname Name anpassen
# nano /etc/hostname
Ethernet mit fester IP
Nur für die aktuelle Session
- dhcp stoppen :
# systemctl stop dhcpcd.service
- Device identifizieren (fängt mit 'e' an) :
# ip link
...
eth0 : ... state UP
...
- wenn state DOWN erstmal aktivieren :
# ip link set eth0 up
- Adresse setzen :
# ip addr add ip_address/mask_bits dev interface_name
- Beispiel :
# ip addr add 192.168.1.2/24 dev eth0
- Gateway setzen :
# ip route add default via ip_address
- Nameserver und Domain setzen :
# nano /etc/resolv.conf
nameserver <nameserver ip>
search <domain>
Dauerhafte Einstellung
- dhcp stoppen und abschalten (nicht unbedingt nötig ?):
# systemctl stop dhcpcd.service
# systemctl disable dhcpcd.service
# nano /etc/systemd/network/eth0.network
[Match]
Name=eth0
[Network]
DHCP=no
- Netzwerk-Konfiguration
# mkdir /etc/conf.d
# nano /etc/conf.d/net-conf-eth0
address=192.168.1.2
netmask=24
broadcast=192.168.1.255
gateway=192.168.1.1
- systemd einrichten (in : /etc/systemd/system/network@.service )
[Unit]
Description=Network startup (%i)
Wants=network.target
Before=network.target
BindsTo=sys-subsystem-net-devices-%i.device
After=sys-subsystem-net-devices-%i.device
[Service]
Type=oneshot
RemainAfterExit=yes
EnvironmentFile=/etc/conf.d/net-conf-%i
ExecStart=/sbin/ip link set dev %i up
ExecStart=/sbin/ip addr add ${address}/${netmask} broadcast ${broadcast} dev %i
ExecStart=/sbin/ip route add default via ${gateway}
ExecStop=/sbin/ip addr flush dev %i
ExecStop=/sbin/ip link set dev %i down
[Install]
WantedBy=multi-user.target
- Einschalten und Starten :
# systemctl enable network@eth0.service
Created symlink /etc/systemd/system/multi-user.target.wants/network@eth0.service
/etc/systemd/system/network@.service.
# systemctl start network@eth0.service
s.a.
https://wiki.archlinux.de/title/Statische_IP
WLan mit fester IP
- dhcp stoppen :
# systemctl stop dhcpcd.service
- Device identifizieren (fängt mit 'w' an) :
# ip link
...
wlan0 : ... state DOWN
...
- wenn state DOWN erstmal aktivieren :
# ip link set wlan0 up
- Schlüsseldatei sichern :
# cp
/etc/wpa_supplicant/wpa_supplicant.conf /etc/wpa_supplicant/wpa_supplicant.conf_org
- Schlüssel setzen :
# wpa_passphrase essid passphrase > /etc/wpa_supplicant/wpa_supplicant.conf
- Inferface erzeugen (in : /etc/conf.d/network-wireless@interface) :
address=192.168.0.10
netmask=24
broadcast=192.168.0.255
gateway=192.168.0.1
- systemd einrichten (in : /etc/systemd/system/network-wireless@.service) :
[Unit]
Description=Wireless network connectivity (%i)
Wants=network.target
Before=network.target
BindsTo=sys-subsystem-net-devices-%i.device
After=sys-subsystem-net-devices-%i.device
[Service]
Type=oneshot
RemainAfterExit=yes
EnvironmentFile=/etc/conf.d/network-wireless@%i
ExecStart=/usr/bin/ip link set dev %i up
ExecStart=/usr/bin/wpa_supplicant -B -i %i -c /etc/wpa_supplicant/wpa_supplicant.conf
ExecStart=/usr/bin/ip addr add ${address}/${netmask} broadcast
${broadcast} dev %i
ExecStart=/usr/bin/ip route add default via ${gateway}
ExecStop=/usr/bin/ip addr flush dev %i
ExecStop=/usr/bin/ip link set dev %i down
[Install]
WantedBy=multi-user.target
- Einschalten und Starten :
# systemctl enable network-wireless@wlan0.service
# systemctl start network-wireless@wlan0.service
s.a.
https://wiki.archlinux.org/index.php/Wireless_network_configuration
Compiler und Make
# pacman -S gcc
# pacman -S make
Serielle Schnittstelle
Die serielle Schnittstelle verbirgt sich hinter dem Device /dev/ttyAMA0. Um sie benutzen zu
können muss zuerst die Datei /boot/cmdline.txt geändert werden. Die beiden Einträge zu
ttyAMA0 werden gelöscht :
# nano /boot/cmdline.txt
vorher :
root=/dev/mmcblk0p2 rw rootwait console=ttyAMA0,115200
console=tty1 selinux=0 plymouth.enable=0 smsc95xx.turbo_mode=N dwc_otg.lpm_enable=0 kgdboc=ttyAMA0,115200 elevator=noop IP=none
nachher :
root=/dev/mmcblk0p2 rw rootwait console=tty1 selinux=0 plymouth.enable=0 smsc95xx.turbo_mode=N
dwc_otg.lpm_enable=0 elevator=noop IP=none
Dann gilt es die Verwendung durch das System abzustellen :
# systemctl disable serial-getty@ttyAMA0.service
© Uwe Jantzen 28.10.24