Kompilieren eines Kernels für APUS-geschrieben von Marco Augustin 



Die Benutzung dieser Anleitung erfolgt auf eigene Gefahr. 
Der Autor dieses Dokuments übernimmt keine Haftung für Schäden, die aufgrund dieser Anleitung enstehen.
LinucPPC5-User müssen übrigens  nicht den Kompiler wechseln!

Was ist ein Kernel?

Ein Kernel ist für den Betrieb von jeder Linux-Distribution unbedingt erforderlich.
Man könnte den Kernel auch schon als eigenes Betriebssystem bezeichnen. 
Ohne den Kernel ist es nicht möglich irgendeine Hardware auch nur anzusprechen. 
Software könnte ohne den Kernel auch nicht gestartet werden.
Der Kernel dient also als Grundsystem eines jeden Linux-Systems.
Um ihn herum existieren dann alle Programme.

Was brauch ich zum Kernelkompilieren?

Einen C-Kompiler wie gcc oder egcs,die Kernelsourcen und die entsprechenden amigaspezifischen Patch-Files.

Wo find ich das?

Am einfachsten-auf der hier erhältlichen aktuellen Apus-CD (alle  CDs ab 20.05.1999)
gcc und egcs gibt es für die LinuxPPC4-Version unter ftp://ftp.linuxppc.org im entsprechenden Contrib-Verzeichnis
Die Kernelsourcen gibt es unter ftp://sunsite.auc.dk/projects/680x0/
Die Patchfiles für den Kernel gibt es unter ftp://sunsite.auc.dk/projects/apus/2.2.x/

Installation eines Kompilers(mit glint)

Zum kompilieren des Kernels (aber auch für Programme!) benötigt man einen guten C-Kompiler.
Hier hat sich neben gcc2.8.0 egcs1.1b bewährt. Man findet beide Kompiler auf der Pre5-CD unter /contrib-linuxPPC4Wenn nicht, dann kann man sie sich von ftp://ftp.linuxppc.org downloaden.
Ich gehe bei diesem Abschnitt auf die Installation von egcs1.1b ein. Bei gcc2.8.0 gaukelte der Kernel einen Filesystemerror vor.Da aber jeder eine andere Konfiguration hat,muß der Fehler nicht bei jedem auftreten! Es empfehlt sich generell einen zweiten Kompiler auszuprobieren, falls bei der Kompilierung Fehler auftreten.
Und so wird installiert:

1. glint unter X starten (in eine Konsole glint eingeben)
2. Um das "alte" egcs zu löschen in das Verzeichnis Development/Languages wechseln und mit einen Mausklick alles Dateienmit egcs markieren.Dann rechts auf uninstall klicken Die alten egcs-Dateien sind nun fast alle gelöscht!3Jetzt mit cd /opt in das Verzeichnis /opt wechsel und das egcs-Verzeichnis löschen mit rm -r -f egcs
Jetzt muß die neue egcs-Version installiert werden,Direkt von der Olliweb-APUS-CD geht das,indem die 2.CD angemeldet wird undman dann in das Verzeichnis /mnt/Contrib-LinuxPPC4 wechselt.Jetzt alle rpms für egcs-1.1b installieren: rpm -i egcsDateien.rpmUser ohne CD wechseln in das Verzeichnis,welches die egcs-rpms enthält und installieren mit rpm -i egcsDateien.rpmDer Kompiler ist nun installiert.

Installation der Kernelsourcen

Zuerst muß man die Kernelsourcen von der Apus-CD auf die Festplatte kopieren. Sie befinden sich auf der 1.CD(Apus) unter/sunsite/kernels/.Als Kernelsourcen kann man momentan  linux-2.2.8.tar.gz empfehlen Die Kernelarchive  müssen nach /usr/src kopiert werden:

cp /mnt/sunsite/kernels/linux-2.2.3pre1.tar.gz /usr/src
Voraussetzung das dieses Verfahren klappt ist, daß man mittels  mount -t iso9660 /dev/hdb oder /dev/scd0 /mnt das CD-ROM  Laufwerk gemountet hat.

Nun geht es ans entpacken:

Mittels des Befehls tar xzvf linux-2.2.3pre1.tar.gz wird das Archiv im Verzeichnis /usr/src entpackt.
Es entsteht ein neuer Ordner: linux-2.2.3pre1.

Damit der Compiler alle nötigen Files findet müssen diverse Links gesetzt werden:

 Setzen der Links

Zuerst wechselt man ins Verzeichnis /usr/src

1.cd /usr/src

Nun folgt das Setzen der Links.

2. ln -s /usr/src/linux-2.2.3pre1 linux

3. cd linux-2.2.3pre1/include/

4. ln -s asm-ppc asm

5. cd /usr/include

6. ln -s /usr/src/linux/include/linux /usr/include/linux

7. ln -s /usr/src/linux/include/asm /usr/include/asm

Bei den Schritten 2-7 kann es passieren, daß noch alte Links existieren.Diese löscht man einfach mit
rm -f Link. Damit sind alle nötigen Links gesetzt.

Patchen der Kernelsourcen

Als nächstes folgt das Patchen der Kernelsourcen. Dies ist notwendig, damit auch amigaspezifische Hardware erkannt wird.

1. Den neuesten linux-2.2.3pre1-m68k-YYMMDD.diff.gz Patch in ein beliebiges Verzeichnis kopieren, z.B. /home

     cp /mnt/sunsite/kernels/linux-2.2.3pre1-m68k-YYMMDD.diff.gz /home

2. Entpacken des diff-Files

      gzip -d linux-2.2.3pre1-m68k-YYMMDD.diff.gz

3. Nun in das Kernel-Verzeichnis wechseln

        cd /usr/src/linux-2.2.3pre1

4. Jetzt folgt das Patchen des Kernels

        patch -d. -p0 < /home/linux-2.2.3pre1-m68k-YYMMDD.diff

5. Nun folgt der Linux-Apus Patch. Dazu geht man so vor wie in Schritt 1-4, nur daß man jetzt den neuesten
linux-apus-YYMMDD.diff.gz verwendet.Man findet ihn in sunsite/kernels. Auch dieses File ist zu entpacken.
Beim Patchvorgang wird man gefragt, ob man die einzelnen Files erneut patchen möchte. Hierauf antwortet man mit y.

Letzte Schritte

Bevor man nun den eigentlichen Kernel konfiguriert, ist noch ein wichtiger letzter Schritt zu erledigen.
Auf der Apus-CD befindet sich im sunsite/kernels Verzeichnis die vmapus-YYMMDD.lzh.
Man kopiert den neuesten Kernel z.B. in das /home Verzeichnis.

          cp /mnt/sunsite/kernels/vmapus-YYMMDD.lzh /home
oder   cp /mnt/cdrom/sunsite/kernels/vmapus-YYMMDD.lzh /home
Nicht CD-User entpacken einfach einen aktuellen Kernel von Sunsite-FTP-Server.
Da es ein lzh-Archiv ist, kann man es bequem unter Linux entpacken.

cd /home
lha -e vmapus-YYMMDD.lzh

Daraus enstehen 3 Dateien: vmlinux, System.map und .config.
Die .config Datei muß nach /usr/src/linux kopiert werden.
In der .config-Datei befinden sich alle Optionen des Kernels.

cp /home/.config /usr/src/linux

Konfigurieren des Kernels
-menuconfig
Wechsel nach /usr/src/linux

cd /usr/src/linux

Durch Eingabe von make oldconfig wird die Konfiguration gestartet.

Dieser Schritt ist insofern nötig, weil berichtet wurde, daß der Kompiler am Ende des kompilierens abbricht.
Mit diesem Schritt wird ein Makefile erzeugt, daß nachher mit Hilfe von make config oder make menuconfig verändert werden kann.

Die  Konfiguration des Kernels

Die Konfiguration wird mit make config oder make menuconfig gestartet.
Der unterschied zu make menuconfig ist, daß man ein grafisches Interface zur Bearbeitung der Kerneloptionen hat.
Dies hat den Vorteil, daß man Schritte zurück gehen kann, wenn man sich vertan hat, was bei make config nicht der Fall ist! Man sollte sich sehr viel Zeit bei der Konfiguration lassen. Wenn man einmal make gestartet hat ist es sehr ärgerlich
den ganzen Kompilationsvorgang noch einmal zu starten, bloß weil man einen Treiber vergessen hat.

A: cd /usr/src/linux
B:make menuconfig oder make config

Nun erscheint je nach Auswahl ein Fenster, in dem man die gewünschten Optionen einstellt. Bei make config werden die einzelnen Optionen nacheinander abgefragt. Wenn man Hilfe zu den einzelnen Optionen benötigt kann man das ? eingeben (nur bei make config) oder zweimal Cursor rechts drücken (make menuconfig).Startbild-menuconfig

1.Platform Support

Processor Type auf 6xx/7xx stellen
Machine Type APUS
Symetric multi-processing support auf no-Bild-menuconfig

2. General setup

Auf jeden Fall den ersten Punkt aktivieren, damit man auch Treiber angezeigt bekommt, die noch in der Betaphase sind.
Dies ist besonders wichtig für BlizzardPPc 603e+ User, damit sie SCSI-Unterstützung erhalten.
Wenn man einen Internetzugang hat, sollte man auch Networking support aktivieren.
Ebenfalls aktivierenswert: Sysctl support und System V IPC.
System V IPC ist insofern nötig, damit Programme untereinander Informationen austauschen können.
Viele Programme bestehen darauf (Copy and Paste).
Kernel support for MISC binaries und auch /proc/hardware aktivieren.
Ebenfalls aktiviert man in dieser Sektion Support for Frame buffer devices, da sonst keine Grafikkarten funktionieren (auch nicht Amiga native Modis).
Die Treiber die in diesem Abschnitt noch verfügbar sind, bedürfen eigentlich keine Erklärung.
Jeder User kann und muß selbst entscheiden, was für Treiber er in seinem Kernel benötigt.-Bild-menuconfig

3. Plug and Play support

Diese Option deaktivieren, wenn nicht schon geschehen.

4. Block devices

In dieser Sektion kann man entscheiden, welche Disktreiber man benötigt. Auf jeden Fall sollte AmigaFloppy support aktiviert werden.Die nachfolgende Option ist ebenfalls zu aktivieren. Wenn man eine IDE-Festplatte besitzt, dann Include IDE/ATA-2 Disk support aktivieren.Wenn man ein CD-ROM Laufwerk besitzt (was ich stark annehme), dann aktiviert man Include IDE/ATAPI CD-ROM support.Wenn die Festplatte am interen IDE-Port angeschlossen ist, muß man Amiga Gayle IDE interface support aktivieren,da sich sonst die Festplatten nicht ansteuern lassen.
Alle anderen Optionen sind selbst auszuwählen.-Bild-menuconfig

5. Networking Options

Wenn man über einen Internetzugang verfügt muß man TCP/IP networking aktivieren.
Alle anderen Einstellungen sind meistens unnötig, es sei denn, man möchte ein Netzwerk aufbauen.-Bild-menuconfig

6. SCSI support

Falls man über SCSI Peripherie verfügt, muß man dies hier mit dem Punkt SCSI support aktivieren.
SCSI disk support, SCSI tape support oder SCSI CD-ROM support sind die drei wichtigsten Treiber.
Je nachdem was man an SCSI Geräten hat, ist hier der entsprechende Treiber auszuwählen.
Verfügt man über einen Scanner ist zusätzlich der Punkt SCSI generic support auszuwählen.-Bild-menuconfig

6.1 SCSI low-level drivers

Wenn man im vorherigen Menü die SCSI-Unterstützung aktiviert hat, geht es nun an die Auswahl der entsprechenden Treiber.Achtung Cyberstorm-PPC User!!!Der UW-SCSI-Controller wird von den Linux-Kernen noch nicht unterstützt!
Man kann also keine SCSI Geräte benutzen, die an diesem Controller angeschlossen sind!-Bild-menuconfig

7. Network device support

In diesem Menü geht es um die Konfiguration der Netzwerkhardware, also auch um Modems für den Internet Zugang.
Wenn man solche Hardware besitzt, ist der erste Punkt auszuwählen: Network device support
Ethernetkartenbesitzer sollten den Punkt Ethernet (10 or 100Mbit) aktivieren und anschließend den Treiber für die Netzwerkkarte auswählen. Modembesitzer deaktivieren den Punkt. Die meisten Internetprovider setzen heutzutage das PPP Protokoll voraus.In diesem Fall muß die Option PPP (point-to-point) support aktiviert werden, da es sonst große Probleme bei Einwählen in das Internet geben wird.
Benötigt der Provider das SLIP Verfahren muß man SLIP (serial line) support aktivieren.-Bild-menuconfig

8. Amateur radio support

Diese Option kann deaktiviert werden.

9. ISDN subsystem

Diese Option funktioniert noch nicht mit APUS!-nicht aktivieren

10. Old CD-ROM drivers

Aktiviert werden muß diese Option nur ,wenn man uralte CD-ROM Laufwerke besitzt, wie z.B. die ersten Mitsumi-Geräte.

11. Console drivers

In dieser Sektion konfiguriert man die Grafikausgabe unter Linux. Es empfiehlt sich nur die Grafikkarte auszuwählen, die man besitzt.Die Amiga nativen Bildschirme sind nur bedingt empfehlenswert, da der Bildschirmaufbau einfach zu langsam ist und das Arbeiten unter Linux keinen Spaß macht.-Bild-menuconfig---Bild-makeconfig

12. Character devices

In diesem Abschnitt empfiehlt es sich unbedingt die Option Virtual Terminal und Support for console on virtual terminal zu aktivieren,da man so bis zu sechs verschiedene Konsolen zur Verfügung hat.Die Option /dev/nvram unbedingt aktivieren,
da die Kernelkompilierung ansonsten fehlschlägt.Soll die serielle Schnittstelle des Amiga unterstützt werden, benötigt man außerdem noch die Option: Standard/generic (dump) serial port.-Bild-menuconfig

13. Filesystems

Hier kann man einstellen, welche Filesysteme man in den Kernel hineinkompiliert haben möchte.
Auf jeden Fall ist das Second extended fs support zu aktivieren, da es das Linuxeigene Dateisystem ist.
Ebenfalls die option /proc/hardware support aktivieren.Falls man MS-DOS oder MAC-Partitionen besitzt
und man diese in Linux verwenden möchte, empfiehlt es sich die benötigten Treiber in der Sektion Partition types zu aktivieren.-Bild-menuconfig

14. Sound

Möchte man gerne Musik oder MP3-Files abspielen benötigt man den Punkt Sound card support.
Nun folgt eine List der unterstützten Soundkarten. Die Auswahl ist nicht sehr groß für Amiga-Besitzer:
Amiga or PowerMac DMA sound support ermöglicht das Abspielen von Sounds.-Bild-menuconfig

15.Abspeichern der Einstellungen

Nun ist die Kernelkonfiguration beendet. Man braucht nur noch die neuen Werte abzuspeichern,
indem man make menuconfig mit exit verläßt. Es erscheint nun eine Abfrage. Diese bestätigt man mit yes.
Benutzt man make config entfällt dieser Schritt, da es automatisch gespeichert wird.-Bild-menuconfig

Kompilierung des Kernels

Nach der Konfigurationsphase geht es nun an das eigentliche kompilieren des Kernels.
Durch die Eingabe von make dep wird die Kompilierung in Gang gesetzt.
Wurde make dep erfolgreich beendet gibt man einfach make clean ein. Das löscht unötige Dateien-auch von alten Kompilierversuchen!Jetzt wir die Kompilierung mit make gestartet
Der Vorgang dauert je nach Prozessor und Anzahl der Treiber etwa 30-45 Minuten.

Nach dem Kompilieren liegt in /usr/src/linux ein Kernel namens vmlinux sowie das zugehörige .config-File

Einsatz des neuen Kernels

Der Kernel muß jetzt noch auf eine AmigaDos-Partition kopiert werden.

1. mount -t affs /dev/der Plattenname /mnt(Man muß nur noch der Plattenname für seinen Gerätetreiber ersetzen.)
2. cp /usr/src/linux/vmlinux /mnt
Damit wird der Kernel auf die AmigaDos Platte kopiert.
Als letztes wird das System heruntergefahren durch Eingabe von macos oder shutdown -f now.
Jetzt muß Linux nur noch mit dem neuen Kernel gestartet werden. Dieser Schritt muß hier nicht mehr erläutert werden.
Wenn man es geschafft hat Linux zu installieren, weiß man auch wie man Linux starten muß.

Herzlichen Glückwunsch zum neuen Kernel, der hoffentlich auch funktioniert.;-)