[ zurück ] [ Inhalt ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ 16 ] [ 17 ] [ 18 ] [ weiter ]
Dazu gibt es das Paket kernel-package, dass alle Schritte von der Übersetzung des Quellcodes bis zu Erstellung eines Debian-Pakets mit dem angepassten Kernel für Dich übernimmt. Du installierst den
Kernel-Quellcode, entweder aus einem Debian-Paket oder von einem Server Deiner Wahl in das Verzeichnis /usr/src. Dort packst Du den Code aus und konfigurierst ihn, so wie üblich, z.B. mit make
menuconfig.
(Um schreibenden Zugriff auf /usr/src zu haben, musst Du Dich in der Gruppe src befinden.
Danach führst Du im Kernel-Quellcodeverzeichnis den folgenden Befehl aus: fakeroot make-kpkg kernel_image --revision=Konfigurationsname.Version
Wobei für 'Konfigurationsname' ein beliebiger Name für Deine neue Konfiguration und für 'Version' eine Versionsnummer für diese Konfiguration zu wählen ist, also z.B. --revision=mailserver.3.
Nachdem make-kpkg seine Arbeit getan hat, findest Du im übergeordneten Verzeichnis dann u.a. ein Debian-Paket mit der Bezeichnung 'kernel-image-Kernel-Version', das Du wie gewohnt mit dpkg
installieren kannst.
Ja, sind sie. Die Änderungen kannst Du in /usr/share/doc/kernel-source-VERSION/README.Debian.1st.gz nachlesen.
Ja, dies sollte problemlos möglich sein.
Prinzipiell kann es immer zu Problemen kommen, die gängigen Patches funktionieren aber eigentlich alle. Eine Suche mit Google nach 'patchname debian' hilft dir
eventuell weiter.
Ausserdem sind einige patches als Debian-Paket verfügbar und können mittels make-kpkg eingespielt werden. z.b. der freeswan patch:
apt-get install kernel-patch-freeswan
cd /usr/src/kernel-source-<version>
make-kpkg clean
export PATCH_THE_KERNEL=YES
make-kpkg --added-patches=freeswan --revision=revision.1 kernel_image
Das ist dank make-kpkg ganz einfach, es soll hier mal an dem Paket pcmcia-source gezeigt werden:
apt-get install pcmcia-source
cd /usr/src/
tar -xvzf pcmcia-cs.tar.gz
cd <Quellen zum laufenden Kernel>
make-kpkg modules_image
Make-kpkg kompiliert daraufhin alle module die im Verzeichnis /usr/src/modules für den (konfigurierten) Kernel liegen, danach findest Du in /usr/src/ Debian Pakete der Module für deine
Kernelversion.
Wahrscheinlich hast Du die Unterstützung für ein bestimmtes Kernel-device gar nicht oder fest in den Kernel kompiliert, versuchst aber trotzdem das entsprechende Modul zu laden. Um heraus zu bekommen welches device bzw.
Modul es ist, sind die Zahlen hinter char-major wichtig, char-major-10-135 ist z.B. für den 'Real Time Clock (RTC) Support'. Eine Liste der device-Nummern findest Du in
/usr/src/linux/Documentation/devices.txt.
Um den Fehler zu beheben kannst Du entweder den Kernel neu kompilieren und diesmal die ensprechende Option anwählen oder das laden des Moduls unterbinden (man 8 update-modules).
Du musst die Option 'Prompt for development and/or incomplete code/drivers' in dem Menü 'Code maturity level options' aktivieren, danach steht der Treiber zur Verfügung und kann ausgewählt werden.
Verwende das Paket procps und trage die Einstellungen in /etc/sysctl.conf ein. Um beispielsweise /proc/sys/net/ipv4/ip_dynaddr immer auf 5 zu setzen, verwendest du
einfach
net.ipv4.ip.ip_dynaddr=5
Die dort getätigten Einstellungen werden nach einem Reboot oder durch /etc/init.d/procps.sh reload aktiviert. Siehe sysctl.conf(5) und sysctl(8).
Setze $KLOGD="-c 3" in /etc/init.d/sysklogd (potato) bzw. /etc/init.d/klogd (woody/sid). -c 3 setzt den Log-Level der Konsole auf 2 (crit), d.h. nur Meldungen vom
Grad emerg(0), alert(1) und crit(2) werden auch auf der Konsole ausgegeben. Wenn der Log-Level auf 2 steht werden nur Meldungen vom Grad emerg(0) und alert(1) ausgegeben usw. Siehe klogd(8) und
/usr/include/sys/syslog.h.
Alternativ kann man in /proc/sys/kernel/printk '2 4 1 7' eintragen, der Eintrag für /etc/sysctl.conf wäre also
kernel.printk="2 4 1 7"
Siehe Kernel-Quelltext/Documentation/filesystems/proc.txt und Wie kann ich Einstellungen im /proc-Dateisystem machen, sodass sie einen Reboot des Systems überstehen?, Abschnitt 10.8!
Bei Debian geht es einfacher, ein zuständiges Skript ist bereits installiert. Die gewünschten Module werden in die Datei /etc/modules eingetragen. Siehe auch update-modules(8).
Bei den neuen Kernel-paketen ist kein Dateisystem mehr fest einkompiliert, das Modul für das Dateisystem muss also beim booten per initrd geladen werden bevor root gemountet werden kann. Bei der Installation des Kernels sollte eine Meldung angezeigt worden sein die Dich darauf hingewiesen hat, führe einmal
dpkg-reconfigure kernel-image-2.4.18-irgendwas
aus und achte auf die Meldung die sich auf initrd bezieht.
Beispiel an "Compex RL100 ATX-PCI":
(Dies ist nur eine Kurzfassung, eine ausführliche Version gibt es hier.)
Vorbereitung:
1. Zunächst benötigen wir installierte Kernel- Header. Wir stellen dieses z.B. nach einem Selbstbau des Kernels her. Unter Debian verwenden wir dazu das Kommando
make-kpkg kernel_headers
2. Wir downloaden die Pakete pci-scan.c, pci-scan.h und kern_compat.h vom ftp- server bei Scyld Computing Corporation, sowie das gewünschte treiber- file aus der source. Die Files legen
wir am besten unterhalb von /usr/src/modules ab.
Modul kompilieren:
In Treiber- file finden wir am Ende den Eintrag, wie das Modul zu kompilieren ist. Zum Beispiel:
gcc -DMODULE -Wall -Wstrict-prototypes -O6 -c TREIBER-FILE.c
Das Ergebins ist ein TREIBER-FILE.o Eventuell muessen wir noch angeben, wo der Kompiler die include- Dateien der Kernel- Header findet. Das sieht dann so aus:
gcc -DMODULE -Wall -Wstrict-prototypes -O6 -c TREIBER-FILE.c -I
/usr/src/kernel-headers-2.2.XX/include -v
Eventuell müssen Betreiber von Kernels der Reihe 2.4.x dies anhängen:
-I /usr/src/linux/include -include
/usr/src/linux/include/linux/modversions.h
Das Modul pci-scan kompilieren: Dies kompilieren wir z.B. wie es im File pci-scan.c am Ende beschrieben steht. Auch hier hängen wir wieder den o.g. Aufruf für die include- Dateien wie bereits
beschrieben (individuell je nach Kernel- Version anzupassen!) an z.B. (hier am Bsp. Kernel-Reihe 2.2.XX):
gcc -DMODULE -D__KERNEL__ -DEXPORT_SYMTAB -Wall -Wstrict-prototypes
-O6 -c pci-scan.c -I /usr/src/kernel-headers-2.2.XX/include -v
Installation:
Nach erfolgreichem Kompilieren ist das Netzwerk mit
ifconfig eth0 down
herunter zufahren. Alle geladenen Module werden angezeigt mit dem Befehl lsmod. Danach sind geladene Netzwerk- Module zu entladen z.B.
modprobe -r [Modul]
Wir testen das Laden der Module (alternativ modprobe):
insmod pci-scan.o
insmod driver.o
Mit lsmod wird der Ladevorgang geprüft. Eine Überprüfung mit depmod -a sollte keine Probleme anzeigen. Danach installieren wir die Module mit:
install -m 644 pci-scan.o driver.o /lib/modules/uname -r/net/
Der Aufruf von uname -r expandiert zur installierten Version des Kernels. Im allgemeinen muß nun noch in /etc/modules der Eintrag für das ständige Laden des Netzwerk- Modul nachgetragen werden
(siehe auch die Dokumentation zu modconf, update-modules, depmod). Das Netzwerk kann dann mit...
ifconfig eth0 192.168.0.xyz netmask 255.255.255.0 up
aktiviert werden.
[ zurück ] [ Inhalt ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ 16 ] [ 17 ] [ 18 ] [ weiter ]
debian-user-german FAQ
14 Dezember 2004dugfaq at sylence dot net