CRUX Linux auf SPARC64

Wer Besitzer einer SUN-Maschine ist, hat mit dem Betriebsystem die Qual der Wahl. Windows kommt nicht in Frage und wäre auch nicht so schnell ohne weiteres zu bewerkstelligen. Kommt also BSD oder Linux in Frage. Erdenkbar wäre das offene Pedant zu Solaris: OpenSolaris. Wer bisher nur mit Linux intensiv gearbeitet hat, steht hier wie "der Ochs vorm Berg" und darf vieles neu lernen, was natürlich keineswegs spaßig ist. NetBSD und FreeBSD lassen sich übrigens gar nicht so leicht installieren, wie man denkt. Für die SPARC64-Architektur gibt es nicht einmal ein fertig Image, so müsste man von Floppy oder aus dem LAN booten und einen minimalistischen Kernel fahren, mit dem man dann den Kernel und die Programme installiert - von einem Medium, was man noch vorher aufwendig einbinden muss. Meines Erachtens nach ist das selbst für BSD/*nix-Veterane zu viel Arbeit. Also wäre eine Linux-Distribution auf der SPARC64-Architekturbasis nicht schlecht. Einige Distributoren geben Images für die Plattform an, darunter Ubuntu, Debian und CRUX. Da ich die Ultra 10 in diesem Beispiel als Server benutzen möchte, kommen also kein Ubuntu und Debian in Frage. Meiner Meinung nach sind diese Server für die Architektur etwas überladen - ferner mag ich apt nicht sonderlich.

Also wäre CRUX erdenkbar. CRUX ist eigentlich eine Distribution, welche speziell für i686 angepasst wurde und extrem minimalistisch ist. Ferner ist sie an BSD angelehnt und benutzt das Ports-System. Zur Vereinfachung gibt es einen Paketmanager, der automatisch per SVN die Quellcodes bezieht, kompiliert und die Anwendungen als Paket installiert: prt-get (an apt-get angelehnt).

Zurück zum Thema, es gibt neben der offiziellen i686-ISO von CRUX auch inoffizielle, leider auch z.T. nicht aktuelle Images für i486, i586 und auch SPARC64. Letzteres kann zur Installation auf der SUN Ultra 10 benutzt werden.

Also, Image herunterladen, auf einen Rohling brennen und in die SUN einlegen.

Nach der Speicherprüfung den automatischen Bootvorgang mit einem Druck auf STOP und A abbrechen.

Sicherheitsmodus der SUN deaktivieren:

1setenv security-filter false

Nun von der CD booten, ich hab hierzu ein IDE-Laufwerk benutzt:

1boot cdrom

Hinweis: Bei SCSI-Geräten stellt sich das Ganze schwieriger dar. (Tipps siehe Linksammlung)

Nun sollte der SILO-Bootloader von der CD geladen werden und einen Prompt anzeigen, bei welchem wir eingeben:

1boot: crux root=/dev/hdc

Der Device-String muss natürlich an die Hardwarekonfiguration angepasst werden! Hier handelte es sich um ein IDE-CD Laufwerk, das auf Secondary Master gejumpert war. SCSI-CDs werden mit /dev/scd0 oder /dev/sdX deklariert. Der richtige Device-String ist wichtig, da sonst der Kernel die CRUX-Daten nicht findet und mit einem kernel panic abraucht.

Ist CRUX hochgefahren, loggen wir uns mit root ein und widmen uns der Partionierung. Bei SCSI-Festplatten müssen vorher evtl. Treibermodule für den Controller noch geladen werden - die mit den SUN Ultra 10 verkaufen SCSI-Controller werden in der Regel automatisch erkannt und eingebunden.

1# fdisk /dev/hda

Die Partionierung für die SUN-Kiste unterscheidet sich ein wenig von der für eine "normale" Linux-Kiste. So müssen das SUN disklabel ausgewählt und in der Regel 6 Partitionen erstellt werden:

hda1 | kleiner als 2 GB (für alte SUNs, wie die Ultra 10) - ext3 / hda2 | SWAP ~512MB hda3 | "entire hard disk" hda4 | min. 2 GB - ext3 /tmp hda5 | min. 2 GB - ext3 /usr hda6 | Rest der Festplatte - ext3 /home

Danach werden die Partitionen erstellen und gemountet, damit setup die Dateien kopieren kann:

 1# mkfs.ext3 /dev/hda1
 2# mkfs.ext3 /dev/hda4
 3# mkfs.ext3 /dev/hda5
 4# mkfs.ext3 /dev/hda6
 5# mkswap /dev/hda2
 6# swapon /dev/hda2
 7# mount /dev/hda1 /mnt
 8# mkdir /mnt/usr
 9# mkdir /mnt/tmp
10# mkdir /mnt/home
11# mount /dev/hda4 /mnt/tmp
12# mount /dev/hda5 /mnt/usr
13# mount /dev/hda6 /mnt/home
14# setup

Ist die Installation abgeschlossen, wird in das neue Linux "gechrootet", damit es konfiguriert werden kann - außerdem muss noch der Kernel kompiliert werden:

1# mount --bind /dev /mnt/dev
2# mount --bind /tmp /mnt/tmp
3# mount -t proc proc /mnt/proc
4# mount -t sysfs none /mnt/sys
5# chroot /mnt /bin/bash

Setzen wir zuerst das root-Passwort:

1# passwd

Danach wird der Hostname in der /etc/rc.conf gesetzt:

1# vi /etc/rc.conf

Nun folgt /etc/fstab - ohne diese findet CRUX nachher sonst nichts (Achtung: Das ist nur ein Beispiel!):

 1/dev/hda1   /               ext3        noatime              0 1
 2/dev/hda2   none            swap        sw                   0 0
 3/dev/hda4   /usr            ext3        noatime              0 2
 4/dev/hda5   /var            ext3        noatime              0 2
 5/dev/hda6   /home           ext3        noatime              0 2
 6
 7# You must add the rules for openprom
 8openprom    /proc/openprom  openpromfs  defaults             0 0
 9
10/dev/cdrom  /mnt/cdrom      auto        noauto,user          0

Einen Kernel brauchen wir auch noch:

1# cd /usr/src/linux-2.6-x.xx..
2# make menuconfig
3# make && make image modules_install
4# cp arch/SPARC64/boot/image /cruxSPARC
5# cp System.map /boot

Als letztes folgt noch der SILO-Bootloader, alles andere folgt nach der Installation. In der SILO-Konfigurationsdatei müssen die Partitionsnummern und Kernelnamen angepasst werden.

1# vim /etc/silo.conf
2# cp /etc/silo.conf /boot
3# silo -C /boot/silo.conf

Fertig und reboot:

1# init 6

So einfach gehts! 😄

Anbei mal die CPU-Info meiner SPARC:

 1# cat /proc/cpuinfo
 2cpu             : TI UltraSparc IIi (Sabre)
 3fpu             : UltraSparc IIi integrated FPU
 4promlib         : Version 3 Revision 19
 5prom            : 3.19.4
 6type            : sun4u
 7ncpus probed    : 1
 8ncpus active    : 1
 9Cpu0Bogo        : 663.55
10Cpu0ClkTck      : 0000000013d92d40
11MMU Type        : Spitfire