CRUX-ARM 2.8 auf dem Raspberry Pi
Für den Raspberry Pi gibt es mittlerweile eine große Auswahl an Betriebssystemen - darunter auch eine ARM-Variante der quellbasierten Linux-Distribution CRUX.
Wer also gerne bastelt oder Raspbian "zu Mainstream" findet, kann mit einer SD-Speicherkarte mit mindestens 1 GB Speicher und einer Kanne Kaffee jede Menge Spaß haben. 😉
Partitionierung und Einhängen
Die folgenden Partitionen müssen auf der SD-Karte angelegt werden:
- 1.Partition, später /dev/mmcblk0p1 -
/boot
, VFAT, mindestens 100 MB - 2.Partition, später /dev/mmcblk0p2 -
/
, ext3, mindestens 512 MB - 3.Partition, später /dev/mmcblk0p3 -
swap
, idealerweise 100-512 MB
Idealerweise macht man das unter Linux, da im Anschluss noch Archive im neuen Dateisystem entpackt werden müssen:
1# fdisk /dev/sdX
2...
3# mkfs.vfat /dev/sdX1
4# mkfs.ext3 /dev/sdX2
5# mkswap /dev/sdX3
6# mkdir -p /mnt/{b,r}oot
7# mount /dev/sdX2 /mnt/root
8# mount /dev/sdX1 /mnt/boot
Kopieren und Konfigurieren
Auf die FAT-Partition werden nun die folgenden Dateien kopiert:
- alle Dateien (mit Ausnahme von
kernel_emergency.img
) aus dem folgenden GIT-Tree: https://github.com/raspberrypi/firmware/tree/master/boot - Angepasster Kernel: http://crux-arm.nu/files/devices/raspberrypi/current/kernel.img
- RAMDisk: http://crux-arm.nu/files/devices/raspberrypi/current/initrd.gz
- Boot-Konfigurationsdatei: http://crux-arm.nu/files/devices/raspberrypi/cmdline-ramdisk.txt - bitte als
cmdline.txt
speichern - Kernel-Module: http://crux-arm.nu/files/devices/raspberrypi/current/modules-3.6.1-raspberrypi_20130305.tar.xz
- CRUX-ARM 2.8 Root-Dateisystem für den Raspberry Pi: http://crux-arm.nu/releases/2.8/crux-arm-rootfs-2.8-hardfp-raspberrypi.tar.xz
Nachdem alle Dateien kopiert wurden, werden das Root-Dateisystem und die Kernel-Module entpackt:
1# tar -pxf /mnt/boot/crux-arm-rootfs-2.8-hardfp-raspberrypi.tar.xz -C /mnt/root
2# tar -pxf /mnt/boot/modules-3.6.1-raspberrypi_20130305.tar.xz -C /mnt/root
Anschließend werden noch einige Zeilen der /etc/fstab
angepasst:
1# vi /mnt/root/etc/fstab
2...#/dev/#REISERFS_ROOT# / reiserfs defaults 0 0
3/dev/mmcblk0p2 / ext3 defaults 0 1
4/dev/mmcblk0p1 /boot vfat defaults 0 2
5...
6#/dev/#XFS_ROOT# / xfs defaults 0 0
7/dev/mmcblk0p3 swap swap defaults 0 0
8...
9
10ESC ZZ
Die Datei cmdline.txt
muss noch wie folgt angepasst werden:
1# vi /mnt/boot/cmdline.txt
2smsc95xx.turbo_mode=N dwc_otg.lpm_enable=0 console=tty0 root=/dev/mmcblk0p2 rootfstype=ext3 rootwait
3
4ESC ZZ
Nach sicherem Aushängen der SD-Karte sollte CRUX-ARM 2.8 bootfähig sein:
1# cd
2# umount /mnt/{b,r}oot
3# eject /dev/sdX
😉
Netzwerkkonfiguration
Die Netzwerkkonfiguration muss noch angepasst werden. Standardmäßig wird eine statische IP (192.168.1.100/24) vergeben, was wohl in einigen Fällen nicht passen dürfte - z. B., wenn man DHCP verwendet:
1# vi /etc/rc.d/net
2...
3start)
4 # loopback
5 /sbin/ip addr add 127.0.0.1/8 dev lo broadcast + scope host
6 /sbin/ip link set lo up
7 # ethernet
8 /sbin/ip link set eth0 up
9 /sbin/dhcpcd eth0
10 ;;
11stop)
12 /usr/bin/killall dhcpcd
13 /sbin/ip route del default
14 /sbin/ip link set eth0 down
15 /sbin/ip link set lo down
16 /sbin/ip addr del 127.0.0.1/8 dev lo
17 ;;
18
19ESC ZZ
Nach einem Neustart des Netzwerk-Dienstes sollte das Netzwerk funktionieren:
1# /etc/rc.d/net restart
2# ping google.de
Wenn nicht, einfach mal einen Blick auf die Fehlermeldung werfen.
Updates
Seit der Erstellung des CRUX-ARM 2.8 Raspberry Pi-Images wurden einige Updates veröffentlicht - diese kann (und sollte!) man installieren. Wichtig ist dabei, erstmal das richtige Datum/die richtige Uhrzeit zu setzen, da ansonsten die Übersetzung mit einem Fehler abbricht:
1# date --set="3 Apr 2013 19:50:00" # bitte ersetzen!
2# ports -u
3# echo "Updates: $(ports -d|tail -n+2|wc -l)"
4# prt-get sysup
5...
Hier unbedingt Zeit und/oder Zeit mitbringen. Der Raspberry Pi darf jetzt sämtliche verfügbare Aktualisierungen übersetzen - und das dauert (im Anbetracht der verbauten CPU) natürlich etwas.. 😉
Tools
Im Minimal-Image von CRUX-ARM 2.8 fehlen noch einige rudimentäre Tools, wie beispielsweise GNU screen, elinks und ntp:
1# useradd ntp; groupadd ntp
2# prt-get depinst screen ntp elinks python
Bitte auch hier etwas Geduld mitbringen - der Winzling ist natürlich nicht der schnellste und braucht für das Übersetzen der einzelnen Quellcodes ein wenig Zeit.
Tweaks
Wer möchte, kann den Raspberry Pi noch ein wenig "tunen" und ihn übertakten, Overscaling deaktivieren, etc.:
1# vi /boot/config.txt
2disable_overscan=1
3arm_freq=950
4gpu_mem=16
5core_freq=250
6sdram_freq=450
7
8ESC ZZ
Diese Einstellungen entsprechen weitestgehend der Raspbian "High"-Einstellung und übertakten die CPU auf 950 Mhz, Core auf 250 Mhz und den RAM auf 450 Mhz. Overscan wird deaktiviert und für die GPU werden 16 MB Speicher reserviert - ideal, wenn man den Raspberry Pi als Server einsetzen möchte.