Home · Kontakt · Impressum
contents index previous up next
Next: 15. Shell-Scripting Up: 14.6 Kernelkompilierung Previous: 14.6.2 Konfiguration

Unterabschnitte


14.6.3 Aufräumen, Kompilieren, Installieren

14.6.3.1 Aufräumen

Vor dem eigentlichen Kompilieren müssen noch die wechselseitigen Abhängigkeiten der Quell- und Include-Dateien festgestellt werden. Der Befehl
make dep
erledigt diese Aufgaben. Danach sollten Sie die alten Objektdateien der letzten Kompilierungsrunde auch noch löschen.
make clean

Sie können die Befehle auch gemeinsam eingeben. Das doppelte kaufmännische Und bewirkt, daß make clean nur dann ausgeführt wird, wenn make dep erfolgreich ausgeführt wurde.

make dep && make clean

Hier noch einmal ein Auszug aus dem Makefile zu den beiden oben genannten Befehlen.

dep-files: scripts/mkdep archdep include/linux/version.h
        scripts/mkdep -- init/*.c > .depend
        scripts/mkdep -- `find $(FINDHPATH) -name SCCS -prune -o -follow -name \
	$(MAKE) $(patsubst %,_sfdep_%,$(SUBDIRS))
        $(MAKE) update-modverfile
endif

ifdef CONFIG_MODVERSIONS
MODVERFILE := $(TOPDIR)/include/linux/modversions.h
else
MODVERFILE :=
endif
export  MODVERFILE

depend dep: dep-files

clean:  archclean
        find . \( -name '*.[oas]' -o -name core -o -name '.*.flags' \) -type f - \
          | grep -v lxdialog/ | xargs rm -f
        rm -f $(CLEAN_FILES)
        rm -rf $(CLEAN_DIRS)
        $(MAKE) -C Documentation/DocBook clean

14.6.3.2 Kernel kompilieren

Und jetzt kommen wir zum eigentlichen Kompilieren. Der Befehl
make zImage
startet das Kompilieren des Kernels.

Soll der Kernel gleich auf einer Diskette untergebracht werden, so können Sie den Befehl

make zImage
verwenden. Dabei müssen Sie natürlich darauf achten, daß der Kernel nicht zu groß für die Diskette wird.

Apropos großer Kernel: Ab einer gewissen Größe funktioniert eine Kompilieren mit make zImage nicht mehr. Hier kommt der Befehl

make bzImage
zum Einsatz, der größere Kernels erlaubt.

14.6.3.3 Kernel installieren

Nach der Installation finden Sie den Kernel im Verzeichnis /usr/src/linux/arch/i386/boot/. Die fertige Datei heiß zImage. Diese muß in das Verzeichnis /boot kopiert werden und eventuell in vmlinuz umbenannt werden. Sicherheitshalber sollte man den alten Kernel nicht einfach löschen sondern umbenennen. Danach muß auf jeden Fall der Lilo neu geschrieben werden.

enterprise:/ # mv /boot/vmlinuz /boot/vmlinuz.old
enterprise:/ # mv /usr/src/linux/arch/i386/boot/zImage /boot/vmlinuz
enterprise:/ # lilo

Wer auf Nummer sicher gehen will, bindet beide Kernels als Bootimages in den Bootloader ein. So kann, falls der neue Kernel nicht funktioniert, mit dem alten Kernel ohne weitere Probleme gebootet werden.

14.6.3.4 Module

Enthält der Kernel Module, was sehr wahrscheinlich ist, so müssen auch diese erzeugt und installiert werden. Das Erstellen übernimmt der Befehl
make modules
und mit dem Befehl
make modules_install
werden die Moduldateien in das nach der Kernelversion benannte Verzeichnis in /lib/modules installiert.

14.6.3.5 Kernelkompilierung mit SuSE

Der Kernel der SuSE-Distribution ist nicht identisch mit dem von Linus Thorvald freigegebenen Kernel. SuSE hat Elemente des Kernels weiterentwickelt und an die Distribution angepaßt. Auf der Distribution sind daher auch zwei Pakete mit dem Kernelquellcode vorhanden. Das Paket kernel-source enthält die SuSE-Linux-Kernelquellen und das Paket linux enthält den original Linux-Kernelquellcode.

Die Konfigurationsdatei für den vom System bei der Installation installierten Kernel finden Sie im Verzeichnis /boot in der Datei vmlinuz.config. Sie können diese Datei z. B. beim Befehl make menuconfig importieren und damit die von SuSE vorgegebenen Einstellung als Grundlage für Ihren eigenen Kernel benutzen.

Den neuen SuSE-Kernel können Sie vom SuSE-FTP-Server herunterladen. Sie finden ihn unter der Rubrik update.

ftp://ftp.suse.com/pub/suse/i386/update/Distributionsnummer/kernel/kernelversion

Es ist aber anzuraten nicht vom Original-SuSE-Server die Dateien herunterzuladen, sondern einen auf der SuSE-Seite angegebenen Spiegelserver zu verwenden. Diese sind meist weniger belastet als der Originalserver und das spielt bei einer Downloadgröße von rund 30 MByte schon eine wichtige Rolle.

Das Paket wird mit dem RPM-Manager ausgepackt und erzeugt ein Verzeichnis mit der Versionsnummer und den Link /usr/src/linux auf dieses Verzeichnis.

enterprise:~/download # rpm -ivh kernel-source-2.4.16.SuSE-31.i386.rpm
kernel-source               ##################################################
enterprise:~/download # cd /usr/src
enterprise:/usr/src # ls -l linux*
lrwxrwxrwx    1 root     root           17 Mär 26 21:35 linux -> linux-2.4.16.SuSE
drwxr-xr-x   15 root     root          530 Mär 26 21:36 linux-2.4.16.SuSE
enterprise:/usr/src # cd linux
enterprise:/usr/src/linux # make menuconfig
enterprise:/usr/src/linux # ls -l .config
-rw-r--r--    1 root     root        38008 Mär 26 22:12 .config
enterprise:/usr/src/linux # make dep && make clean
.
. (Eine Menge Meldungen)
.
enterprise:/usr/src/linux # make bzImage && make modules && make modules_install
.
. (Eine Menge Meldungen)
.
enterprise:/usr/src/linux # ls -ld /lib/modules/2.4.16-4GB
drwxr-xr-x    5 root     root          313 Mär 26 22:37 /lib/modules/2.4.16-4GB
enterprise:/usr/src/linux # cd /boot
enterprise:/boot # cp /usr/src/linux/arch/i386/boot/bzImage vmlinuz-2.4.16
enterprise:/boot # vi /etc/lilo.conf
enterprise:/boot # lilo

Mit dem vi wurde in die /etc/lilo.conf folgender Block eingefügt:

  image  = /boot/vmlinuz-2.4.16
  label  = linux
  root   = /dev/hdb7
  initrd = /boot/initrd
  append = "enableapic vga=0x0317"


Notizen:
Notizen:

Programminstallation und Kernelkompilierung % latex2html id marker 21763
\framebox{
\parbox{161mm}{
\parbox{25mm}{\Large ...
...25mm}{\Large ~ \hfill
\arabic{arbeitsblatt}.\arabic{arbeitsblattseite}
}
}
}

480
Welche Bibliotheken benötigt das Programm passwd?

481
Bei der Standardinstallation der SuSE-Distribution wird Java zumeist nur in einer älteren Version installiert. Laden Sie aus dem Internet (http://www.javasoft.com) oder Intranet die neueste Version des Java-Development-Kits als RPM-Paket herunter und installieren Sie das Paket. Zum Entpacken der Datei lesen Sie die Instruktionen auf der Webseite.

482
Für die Ausführung der Programme ist die ``virtuelle Kaffeemaschine'' java verantworlich. Sie befindet sich im Unterverzeichnis bin des Java-Verzeichnis. Überprüfen Sie, ob nun die richtige Java-Version läuft. Führen Sie als normaler Benutzer den Befehl java -version aus. Welche Information bekommen Sie?

483
Die Version ist eindeutig nicht richtig. Woran kann es liegen?

484
Wo befindet sich die Datei, die durch die Eingabe von java gestartet wurde.

485
Aus welchem Paket stammt Sie?

486
Finden Sie heraus, wohin die Datei java des RPM-Paket installiert worden ist.

487
Damit nun der ``richtige'' richtige Java-Interpreter aufgerufen werden kann, muß der Soft-Link /usr/lib/linux auf das richtige Paket umgelenkt werden.

488
Lassen Sie sich eine alphabetisch sortierte Liste aller installierten Pakete ausgeben.

489
Wieviele Pakete sind installiert?

490
Welchen Kernel verwendet Ihr System?

491
Lassen Sie sich eine Liste aller geladenen Module ausgeben.

492
Laden Sie die RPM-Pakete des aktuellen SuSE-Kernels aus dem Internet bzw. Intranet oder installieren Sie sie von der Distributions-CD/DVD.

493
Erstellen Sie eine neue Konfiguration auf Basis des aktuellen Kernels und optimieren Sie den Kernel für Ihren Prozessortyp.

494
Tragen Sie im Makefile bei EXTRAVERSION den Prozessornamen ein. Kompilieren Sie auf der Basis der neuen Konfiguration einen neuen Kernel und dessen Module.

495
Installieren Sie den Kernel als vmlinuz-VERSION-PATCHLEVEL-SUBLEVEL-EXTRAVERSION im Verzeichnis /boot sowie die Module ins entsprechende Verzeichnis.

496
Tragen Sie für den neuen Kernel einen neuen Eintrag im Bootloader ein.

497
Testen Sie das neue System und vergleichen Sie es mit dem alten System.

498
Welche Dateisysteme unterstützt der aktuelle SuSE-Kernel als Modul oder fest integriert? Beschreiben Sie mit einem Satz das Einsatzgebiet des Dateisystems.


Notizen:


contents index previous up next
Next: 15. Shell-Scripting Up: 14.6 Kernelkompilierung Previous: 14.6.2 Konfiguration
  © 2004 by IT-Dozent Ole Vanhoefer · Zum Seitenanfang