Bau eines kompletten 32Bit Systems für Sparc64 durch CrossCompiling

franco98

NetBSDler aus Leidenschaft
Hallo UltraSparc Fans,

ich habe mal aus meiner Liebe zu NetBSD und zur UltraSparc(64) eine Idee verfolgt, auf die mich der frühere Einsatz von Debian Sparc64 und Solaris Sparc gebracht haben - den Bau eines kompletten 32Bit Systems für die UltraSparc CPUs (z.B. Ultra 5, 10, 60, 80).

Hier für alle die es interessiert mein Vorgehen und Fazit!

1. Die Quellen des NetBSD-2.1 Source habe ich auf einen schnellen 0815 PC mit NetBSD-2.0 als Betriebsystem mit Hilfe von CVS geholt:

export CVSROOT=anoncvs@anoncvs.netbsd.org:/cvsroot
export CVS_RSH=ssh
mkdir /usr/src
mkdir /usr/obj
cd /usr
cvs checkout -r netbsd-2-1 -PA src

2. Pizza bestellen und Bier holen

3. Die 32Bit Sparc Distribution baute ich wie folgt mit Crosscompiling:

cd /usr/src
./build.sh -m sparc -a sparc tools kernel=GENERIC_SUN4U distribution sets

Der Trick dabei ist der, dass man im Verzeichnis

/usr/src/sys/arch/sparc/conf

die Kernelkonfiguration "GENERIC_SUN4U" hat, die mit intergriertem "include" einen Verweis zur
"arch/sparc64/conf/GENERIC32" Kernelkonfiguration zeigt!

Mit dieser baut man dann einen 32Bit Kernel für die 64er Sparc-CPUs. Baut man die Distribution ohne die Flags -m sparc -a sparc mit dem kernel=Generic32 aus dem "sparc64/conf" Ordner, wird der Prozess mit einer Fehlermeldung abgebrochen. Es macht ja auch keinen Sinn, ein 64Bit Userland mit 32Bit Kernel zu bauen und zu hoffen, dass das noch läuft!

4. Die nun erzeugten Sets (ich habe keine X-Sets gebaut, diese erstelle ich später über das Pkgsrc-System) befinden sich im Ordner:

/usr/src/releasedir/sparc/binary/sets

5. Der 32Bit Kernel (netbsd) befindet sich im Ordner:

/usr/obj/sys/arch/sparc/compile/GENERIC_SUN4U

Diesen Kernel (netbsd) habe ich mit:

tar cvfz kern-GENERIC.tgz netbsd

in das später geforderte Set "kern-GENERIC.tgz" gepackt und das dann in das Verzeichnis zu den anderen Sets der Distribution gesteckt!
Die Bezeichnung ist wichtig, sonst wird der Kernel auf der Sparc nicht installiert! (Es gibt jedoch Alternativen, die etwas umständlicher sind, ich lasse das jetzt aber mal)
Folgende Sets müssen nun vornanden sein:

base.tgz
comp.tgz
etc.tgz
evt. games.tgz
man.tgz
misc.tgz
text.tgz
kern-GENERIC.tgz

6. Die Installation auf meine UltraSparc habe ich dann mittels NFS so gestalltet:

Booten von der normalen Sparc64-CD (hier war es die NetBSD-2.0.2 Sparc64 CD)
Partitionieren wie üblich mit sysinstall
Netzwerk konfigurieren wie üblich mit sysinstall
Als Auswahlmedium habe ich NFS gewählt (zum CD-ROM sparen!)
und als PATH dann das Verzeichnis zu den Sets auf dem PC angegeben!
Nun werden die 32Bit Sets vom NFS-Server statt der 64Bit Sets von CD installiert!

7. Rest der Installation wie üblich (root-Password ect.) und REBOOT!

8. Bier öffnen und happy sein!!!

Ein "uname -a" zeigt dann den Erfolg und ein wahlloses "file /bin/xyz" usw. bestätigt, dass die Binaries echte 32Bit Bin's sind!


Fazit von mir:

Es geht leichter als man glaubt, die 64Bit Distribution für SUN Ultra Sparcs in eine reine 32Bit Distribution umzuwandeln und um der lahmen Ultra Sparc die Arbeit abzunehmen, baut man es auf einem schnellen PC in kurzer Zeit mit CrossCompiling! Die User-Programme wie X11R6, WindowManager ect. können dann in reiner 32Bit Umgebung auf der Sparc mittels pkgsrc erstellt werden, bei mir compiliert gerade X!

Einen Geschwindigkeitsverlust bzw. -gewinn muss aber jeder selbst beurteilen, mir ging es einzig um die Machbarkeit, da ich im Internet und in der Sparc64-Mailingliste nur negative Berichte, unvollständige Builds usw. gefunden habe.

Ich hoffe es nutzt jemanden,

Gruß Frank aus LE!
 
Coolomat

Klingt ja sehr interessant.

Ich glaube das probiere ich auch mal. Muß allerdings warten bis meine Ultra aus der "Werkstatt" zurück ist.

Vielen Dank für Deinen Bericht !
 
Vieleicht steh ich ja ein wenig auf dem Schlauch. Aber was ist der Unterschied zwischen deiner Idee und der normalen NetBSD-sparc?
Geht es nur darum, das System nicht neu installieren musst?
 
Ich habe das normale NetBSD-Sparc nie auf einer UltraSparc installiert bekommen, dass liegt wohl an dem Sparc-GENERIC Kernel der ja SUN4U CPUs nicht unterstützt, also keine Ultra 5-80 z.B.! Weiterhin sollte es nur mal zeigen, was man mit dem Sources so alles anstellen kann!

Es gab im Netz Unmengen Versuche, Fragen ect. die mich alle neugierig gemacht haben und dann natürlich besonders folgendes von der org. NetBSD-Sparc64-Seite:

NetBSD/sparc64 supports both 32-bit and 64-bit kernels. A 32-bit kernel runs all NetBSD/sparc binaries. A 64-bit kernel runs 64-bit binaries, and has support for running most 32-bit binaries as well, with the exception of some low level kernel groveling tools...

Es ging also schon immer, es war nur wiedermal ganz unscheinbar verpackt und nicht weiter beschrieben.

Jetzt weiß ich, dass NetBSD Sparc durchaus für die 64er CPUs funktioniert, bei richtigem Kernel natürlich!

Es ist nur nicht bei Supported System Models auf der NetBSD Sparc Seite aufgelistet, dass das System auch für 64er Modelle funktioniert!

Gruß Frank aus LE!

P.S. Ich habe u.a. auch gelesen, dass bestimmte Programme aus dem pkgsrc sich absolut nicht im reinen 64Bit Modus compilieren lassen, den Grund kenne ich nicht!
 
Es werden afaik fuer jedes unterstuetztes system ein eigenes verzeichnis oder makefile angelegt. Wenn es noch nicht gemacht wurde bleibt einem nur die Installation aus den sourcen wo wesentlich mehr configurationen und chains beachtet werden muessen.
Ich bin fuer die meisten bauten aus den Sourcen zu daemlich. Aber ein make && make install in der pkgsrc krieg ich gerade noch hin.
 
Zurück
Oben