Probleme beim Starten eines selbstkompilierten Kernels

Welches Modul/Treiber für welche Hardware, Kernel compilieren...
Antworten
FKH
Beiträge: 2
Registriert: 23.02.2005 02:39:49

Probleme beim Starten eines selbstkompilierten Kernels

Beitrag von FKH » 23.02.2005 05:05:44

Hallo zusammen,

zuersteinmal, das ist mein erster Kernel, an dem ich mich versuche. Auch in Sachen Linux bzw. Debian selbst bin ich noch ziemlicher Anfänger (mein aktuelles Debian ist seit ca. 1 Woche auf meinem Notebook, davor warens Jahre als ich das letzte mal n Desktop Linux vor mir sah) ;)

Ok, kurze Rede, langer Sinn
Ich versuche jetzt schon ne ganze Zeit, mir nen 2.6.10er Kernel selbst zu compilieren und mit diesem zu booten. Aber der will nicht so, wie ich will ;)

Meine Quellen (in genau dieser Reihenfolge):

http://www.debianforum.de/wiki/AtiTreiberInstallieren
http://www.tuxhausen.de/kurs_kernel.html
http://www.debianforum.de/wiki/?page=Ke ... ompilieren
unzählige Beiträge in diesem Forum und auf anderen Websites

Nachfolgend mal meine Vorgehensweise:

1)
Image von kernel.org laden
In meinem Fall handelt es sich dabei um diesen hier: http://www.kernel.org/pub/linux/kernel/ ... .10.tar.gz

2)
In /usr/src/linux-2.6.10 den Kernel entpackt und nen symbolischen Link auf /usr/src/linux/ gesetzt

3)
Dann ins linux-2.6.10 - Verzeichnis gewechselt und folgenden Befehl ausgeführt:

Code: Alles auswählen

make mrproper && make distclean && make clean
Keine Hinweise etc.

4)
Jetzt folgenden Befehl ausgeführt:

Code: Alles auswählen

make xconfig
Nachfolgend das Ergebnis:

Code: Alles auswählen

Xlib: connection to ":0.0" refused by server
Xlib: No protocol specified

qconf: cannot connect to X server :0.0
make[1]: *** [xconfig] Fehler 1
make: *** [xconfig] Fehler 2

Hier weiß ich leider keinen Rat. Aufruf erfolgte aus ner Konsole aus KDE heraus, XServer müsste also eigentlich laufen. Weiß da jemand Rat, wo ich das Protokoll festlege? Oder ist das gar nicht der Fehler?

5)
Ok, versuch ichs halt mit folgendem Befehl und verzichte auf die schöne Oberfläche

Code: Alles auswählen

make menuconfig 
Jetzt erscheint auch der Auswahldialog, in dem ich die einzelnen Bestandteile als Module, fest einkompiliert oder gar nicht auswählen kann. Hierbei orientiere ich mich wieder an der Vorgehensweise wie in http://www.debianforum.de/wiki/AtiTreiberInstallieren beschrieben. Also erstmal die alte Config laden, anschließend die Änderungen vornehmen. Unter Device Drivers --> Character devices --> lässt sich Direct Rendering Manager (XFree86 4.1.0 or higher DRI support) jedoch nicht als Modul zuschalten. Hier gibts nur die Auswahl zwischen ganz oder gar nicht (entscheide mich für letztere Option wie im Tutorial angeraten). Der AGP-Support ist schon als Modul drin, also keine Änderung nötig.

6)
Als nächstes führe ich folgenden Befehl aus:

Code: Alles auswählen

make dep

Als Ergebnis bekomme ich folgende Meldung:

Code: Alles auswählen

Meldung: *** Warning: make dep is unnecessary now.
7)
Jetzt

Code: Alles auswählen

make bzImage
Als Ergebnis bekomme ich hier am Schluss:

Code: Alles auswählen

Root device is (3, 6)
Boot sector 512 bytes.
Setup is 4943 bytes.
System is 1138 kB
Kernel: arch/i386/boot/bzImage is ready

8)
Als nächstes der Befehl

Code: Alles auswählen

make modules

Nach Durchlauf erscheint zum Schluss keine Fehlermeldung. Scheint also alles richtig geklappt zu haben (mal von den ganzen Warnungen zwischendrin abgesehen, die aber, wie mir berichtet wurde, anscheinend normal sind).

9)
Jetzt noch ein

Code: Alles auswählen

make modules_install
Wieder keine Meldung --> also denk ich mal, sollte hier auch alles funktioniert haben.

10)
Die erforderlichen Dateien (die Config-Datei, die System.map und das neu erstellte Kernel-Image) kopiere ich jetzt nach /boot

Der Inhalt meines /boot - Ordners sieht jetzt folgendermaßen aus:

config-2.6.10-1-386
config-2.6.8-1-386
grub
initrd.img-2.6.8-1-386
lost+found
System.map-2.6.10-1-386
System.map-2.6.8-1-386
vmlinuz-2.6.10-1-386
vmlinuz-2.6.8-1-386

An der Stelle hab ich jetzt ne Frage. In der menu.lst im Ordner grub geb ich bei meinem neuen Kernel die initrd vom alten 2.6.8er - Kernel an. Wie erstellt man so ne Datei für den eigenen Kernel bzw. wofür ist die genau gut? Aus dem Namen heraus schließe ich mal, dass die wohl für das Starten einiger Dienste/Programme oder sonstwas zuständig ist oder lieg ich damit mal wieder falsch?

11)
Abschließend editiere ich die menu.lst noch im ordner /boot/grub

Folgender Text füge ich in die o.g. menu.lst ein.

title Debian GNU/Linux, kernel 2.6.10-1-386
root (hd0,6)
kernel /vmlinuz-2.6.10-1-386 root=/dev/hda6 ro
initrd /initrd.img-2.6.8-1-386
savedefault
boot

title Debian GNU/Linux, kernel 2.6.10-1-386 (recovery mode)
root (hd0,6)
kernel /vmlinuz-2.6.10-1-386 root=/dev/hda6 ro single
initrd /initrd.img-2.6.8-1-386
savedefault
boot

In Anlehnung an den Ursprungstext, der in der Datei drinsteht (vor obigem Text)

title Debian GNU/Linux, kernel 2.6.8-1-386
root (hd0,6)
kernel /vmlinuz-2.6.8-1-386 root=/dev/hda6 ro
initrd /initrd.img-2.6.8-1-386
savedefault
boot

title Debian GNU/Linux, kernel 2.6.8-1-386 (recovery mode)
root (hd0,6)
kernel /vmlinuz-2.6.8-1-386 root=/dev/hda6 ro single
initrd /initrd.img-2.6.8-1-386
savedefault
boot

12) Reboot

Beim ersten Versuch kamen Fehlermeldungen, das etwas nicht gefunden wurde. Beim zweiten Versuch blieb der Bildschirm schwarz (unten links blinkte der Cursor und rückte dann ein Zeichen weiter nach rechts und das wars dann).

Kann mir jemand sagen, was ich falsch mache?

Schonmal vielen Dank für eure Hilfe ;)

mfg FKH

Benutzeravatar
Natas12
Beiträge: 1751
Registriert: 12.04.2002 20:59:12

Re: Probleme beim Starten eines selbstkompilierten Kernels

Beitrag von Natas12 » 23.02.2005 09:04:15

FKH hat geschrieben:

Code: Alles auswählen

Xlib: connection to ":0.0" refused by server
Xlib: No protocol specified

qconf: cannot connect to X server :0.0
make[1]: *** [xconfig] Fehler 1
make: *** [xconfig] Fehler 2
wenn du als root in einer konsole unterwegs bist, kannst du keine x-programme starten. der einfachste weg führt über kdesu (als user eingeloggt), also "kdesu xconfig". ich bin aber der meinung, dass man für die konfiguration des kernels ruhig das ncurses-teil nehmen kann. es sind ohnehin immer die gleichen einstellungen... :-)

FKH hat geschrieben:

Code: Alles auswählen

Meldung: *** Warning: make dep is unnecessary now.
ist absolut korrekt
FKH hat geschrieben: An der Stelle hab ich jetzt ne Frage. In der menu.lst im Ordner grub geb ich bei meinem neuen Kernel die initrd vom alten 2.6.8er - Kernel an. Wie erstellt man so ne Datei für den eigenen Kernel bzw. wofür ist die genau gut? Aus dem Namen heraus schließe ich mal, dass die wohl für das Starten einiger Dienste/Programme oder sonstwas zuständig ist oder lieg ich damit mal wieder falsch?
in der initrd sind die treiber enthalten, die der kernel während / vor dem eigentlichen booten braucht. z.b. die treiber für das dateisystem, auf dem der kernel selbst liegt. ich mache das allerdings immer so, dass ich diese treiber fest in den kernel einbaue. wie das mit der initrd geht, steht hier irgendwo. ich weiß es leider nicht auswendig, da ich es nie mache. du kannst aber keine initrd eines anderen kernels an einen neuen klemmen...

Code: Alles auswählen

title           Debian GNU/Linux, kernel 2.6.10-1-386
root            (hd0,6)
kernel          /vmlinuz-2.6.10-1-386 root=/dev/hda6 ro
initrd          /initrd.img-2.6.8-1-386
savedefault
boot
leider ist das adressierungsschema von grub ein anderes - grub beginnt die festplatten bei 0 zu zählen. hda1 ist für grub (0,0). demnach ist hda6 für grub (hd 0,5). immer diese informatiker... ;-)

für dich also noch zu erledigen, damit es funzt:

(a) herausfinden, wie das mit der initrd geht oder alternativ das nötige zeug fest einbauen (trial and error notwendig): ide-unterstützung, unterstützung für das dateisystem, unix sockets (wichtig) und was dir sonst noch wichtig erscheint.

(b) grub anpassen

wie (a) geht, steht hier irgendwo. ansonsten antwortet vielleicht noch jemand, der da kompetenter ist.

gruß

natas12,
der sich für den wohlstrukturierten beitrag bedankt.
"In den reichen Ländern hat die Freiheit gesiegt - mit all den schrecklichen Folgen, die das für die anderen mit sich bringt und noch bringen wird. Die Demokratie ist auf andere Epochen verschoben." (L. Canfora)

srolle
Beiträge: 325
Registriert: 09.09.2003 10:08:13
Wohnort: Zeitz (bei Leipzig)

Beitrag von srolle » 23.02.2005 09:11:03

Hallo,

erstmal ein grosses Willkommen bei df.de. Nun zu Deinem Problem:

10) Du kannst die initrd aus dem Kernel 2.6.8 nicht nehmen. In diesem Image liegen u.a. Module, die zum Starten des Kernels benoetigt werden, z.B. Dateisysteme, SCSI u.a..
Somit brauchst Du ein Image mit den Modulen Deines Kernels. Dieses erzeugst Du mit:

Code: Alles auswählen

mkinitrd -o /boot/initrd.img-2.6.10 2.6.10
Hierbei gibt die Option -o den Namen des Images an. Das letzte Argument (2.6.10) gibt Deine Kernelversion an. Hierzu schaut initrd in das Verzeichnis /lib/modules ob es den Kernel mit dieser Bezeichnung gibt. Somit sollte unter /lib/modules ein Verzeichnis 2.6.10 liegen.


11) Du musst die neue initrd entsprechend in die menu.lst eintragen.

Benutzeravatar
KBDCALLS
Moderator
Beiträge: 22455
Registriert: 24.12.2003 21:26:55
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Dortmund
Kontaktdaten:

Beitrag von KBDCALLS » 23.02.2005 09:45:18

Wenn man eine Anleitung für einen Kernel 2.4.xx zum erstellen eines Kernels 2.6.xx benutzt, dann kommt es zu diesen Warnungen. Kernel 2.6.xx kennt und bracht auch kein,

Code: Alles auswählen

make dep
Wenn man mit

Code: Alles auswählen

make-kpkg --append-to-version=-1-k7  -revison xx --initrd kernel-image
kompiliert. Bracht man sich um das erstellen einer Initrd nicht meht kümmern. Denn es wird ein Debianpaket gebaut. Welches man mit

Code: Alles auswählen

dpkg -i 
installiert. Und auch wieder sauber entfernen kann. Als erstes würde ich die Konfig von einem Original Debiankernel nehmen , und auf meine Bedürfnisse abändern.
Was haben Windows und ein Uboot gemeinsam?
Kaum macht man ein Fenster auf, gehen die Probleme los.

EDV ist die Abkürzung für: Ende der Vernunft

Bevor du einen Beitrag postest:
  • Kennst du unsere Verhaltensregeln
  • Lange Codezeilen/Logs gehören nach NoPaste, in Deinen Beitrag dann der passende Link dazu.

FKH
Beiträge: 2
Registriert: 23.02.2005 02:39:49

Beitrag von FKH » 24.02.2005 16:20:27

Ok, Danke für eure Antworten & Hilfe ;)

mfg FKH

Antworten