• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Frage zum Kernel patchen

Midnight

Newbie
Zuerst einmal etwas zum Hintergrund:
Ich habe ein Shuttle Barebone mit einem Mainboard mit ATI Chipsatz. Leider wird dieser Chipsatz bisher nicht richtig von Linux unterstützt. Nachdem ich mich längere Zeit umgesehen habe bin ich nun auf einen "Kernelpatch" - atiixp_ide-2.6.3-2.patch - gestossen. Dieser patch scheint meine Probleme mit dem DMA Modus für das Board zu lösen. Leider habe ich bisher noch einige Probleme ihn zu installieren.

Ich habe mich auch da ein wenig schlau gemacht und das so verstanden (bitte korrigieren wenn ich falsch liege), dass zuerst der Patch mit "patch -p0 < atiixp_ide-2.6.3-2.patch" auf die kernelsourcen angewendet und diese anschliessend neu kompiliert werden müssen.

Das hat allerdings ein paar neue Fragen aufgeworfen.
Zum einen mal bezieht sich der patch explizit auf den Kernel 2.6.3 und ich frage mich nun, ob er auch auf neueren Versionen läuft (die aktuell erschienene Version ist ja derzeit die 2.6.10). Wie finde ich überhaupt zweifelsfrei heraus, welche Kernelversion gerade in Betrieb ist? Wie kann ich beim neuen Kernel kompilieren auf meine aktuelle und funktionierende Kernelkonfiguration zurückgreifen um diese nur an bestimmten stellen abzuändern (komplett freihändiges neu zusammenstellen per make menuconfig gingen bei mir bisher irgendwie immer in die Hose)?

So ich glaube das sind vorerst einmal genug fragen. Ich wünsche euch allen noch ein Frohes neues Jahr.
Gruß,
Midnight

edit: habe gerade noch einmal auf dieser Seite nachgelesen, wo jemand scheinbar genau dasselbe Barebone hat wie ich und wie ich das dort verstehe ist der DMA support ab Kernel Version 2.6.5 schon eingebaut. Das würde das Patchen überflüssig machen aber ich müsste nach wie vor eine lauffähige Version eines aktuelleren Kernels hinbekommen (letzte Frage im obigen Post).
 

Jongking

Newbie
Hallo!

Also normalerweise geht das nicht so einfach mit verschiedenen Versionen, aber anscheinend kann man da auch tricksen.

Deine aktuelle Kernelversion bekommst du mit
Code:
uname -r
raus.

Natürlich musst du nicht immer alles manuell und nochmal machen:

Code:
cd /usr/src/linux-2.xx.xx
zcat /proc/config.gz > .config
und mit einem anschließenden
Code:
make oldconfig
werden alle neuen Einstellmöglichkeiten überprüft und überflüssige entfernt.

Ich hoffe, dass ich dir wenigstens ein bisschen weiterhelfen konnte,
Gruß.
 
OP
M

Midnight

Newbie
Nachdem ich mir jetzt einen Tag damit um die Ohren gehauen habe ist von den oben beschriebenen Problemen kaum noch etwas übrig und stattdessen habe ich neue.

Ich habe mich versucht an dem how-to fürs Kernel kompilieren zu orientieren und folgende Schritte durchgeführt:

- 2.6.5er Sourcen runterladen und nach /usr/src/linux-2.6.5 entpacken.
- Die hier angebotene config-2.6.5 runterladen, "make menuconfig" ausführen und die config dort laden.
- In der geladenen config habe den low level driver für meinen SCSI Controler (Adaptec 2940U) noch hinzufügen und die config dann abspeichern.
- Mit "make" selbigen kompilieren.
- "make modules_install" ausführen.
- Den kernel als vmlinuz-2.6.5-scsi und die system.map nach /boot kopieren.
- "mkinitrd -k vmlinuz-2.6.5-scsi -i initrd-2.6.5-scsi -s 1280x1024" ausführen

An dieser Stelle bekomme ich die Ausgabe:
Code:
Root device:    /dev/hda3 (mounted on / as reiserfs)
Module list:    scsi_mod sd_mod aic7xxx reiserfs
Kernel version: 2.6.5 (i386)
Kernel image:   /boot/vmlinuz-2.6.5-scsi
Initrd image:   /boot/initrd-2.6.5-scsi
Shared libs:    lib/ld-2.3.2.so lib/libc.so.6
Cannot determine dependencies of module aic7xxx. Is modules.dep up to date?
Cannot determine dependencies of module reiserfs. Is modules.dep up to date?
Modules:
none
Bootsplash:     SuSE (1280x1024)

- "generate-modprobe > /etc/modprobe.conf" liefert mir dann einige Zeilen "Warning: not translating ...".
- Eintragen des neuen Kernels in /boot/grub/menu.lst

Nachdem ich all das getan habe und den Kernel beim Bootmenu
auswähle bekomme ich, nach anfänglich normalem booten, Meldungen der Art:
Code:
Loading kernel/drivers/scsi/aic7xxx/aic7xxx.o
No module found in object
insmod: error inserting '/lib/modules/2.4.21-266-default/kernel/drivers/scsi/aic7xxx/aic7xxx.o': -1 Invalid module format
Loading kernel/fs/raiserfs/raiserfs.o
No module found in object
insmod: error inserting '/lib/modules/2.4.21-266-default/kernel/fs/raiserfs/raiserfs.o': -1 Invalid module format
Kurz danach bricht Linux dann mit folgender Fehlermeldung komplett ab:
Code:
Failed to open the filesystem.

If the partition table has not been changed, and the partition is
valid and the and it really contains a raiserfs partition, then the
superblock is corrupted and you need to run this utility with
--rebuild-sb.

Warning... fsck.raiserfs for device /dev/hda3  exited with signal 6.
fsck.raiserfs /dev/hda3 failed (status 0x8). Run manually!
(...)
fsck failed. Please repair manually and reboot. The root
file system is currently mounted read-only. To remount it
read-write do:

      bash# mount -n -o remount,rw /

Attention: only Control-D will reboot the system in this
maintanance mode. shutdown or reboot will not work.

Was mache ich falsch?
 

Jongking

Newbie
Ähm ja,

welches SuSE hast du denn? Du solltest nicht irgendeine, sondern unbedingt DEINE config nehmen, sonst kanns echt richtig in die Hose gehen. Da fehlt dann dein root- filesystem und solche Sachen.

Also wenn du SuSE 9.0 hast brauchst du die module-init-tools, weil die Module des Kernels jetzt anders heißen und modutils sie nicht mehr laden kann. Dazu gibts auch ein RPM, das die Abhängigkeiten erfüllt.

http://www.thomashertweck.de/kernel26.html

Dort steht es unter "Dummy.rpm". Danach die module-init-tools installieren und alles sollte gehen.

Und am Schluss mit frischen Kernelsourcen

Code:
make mrproper

nochmal mit deiner(!) config den Kernel backen.

Code:
zcat /proc/config.gz > .config
 
Oben