Kernel

kartoffel200

kartoffel200

AMD Fanboy Since 2003
Also ich hab bis jetzt schon 3 mal versucht den Kernel selbst zu kompilieren. Ich habe dafür die Kernelsources von Kernel.org heruntergeladen. Als OS hab ich Fedora verwendet. Bis jetzt ist es immer fehlgeschlagen. Also entweder frohr der neue Kernel beim start ein oder er gab Kernel Panic aus und konnte nix mounten.

Vorgegangen bin ich folgend.
Kernelsources nach /usr/src/kernels/linux2.6.... kopiert.

dann make menuconfig

module aktiviert usw Treiber aus und abgewählt ...

dann
make && modules_install

als das fertig war

make install.


Meine Frage ist nun sollte ich es erst mal mit einem anderen OS versuchen oder hab ich einfach was falsch gemacht.?

Ich werde echt nicht schlau daraus weil ich keine wichtigen Treiber abgewählt habe, oder irgend was abgewählt hab was ich nicht kenne.

Was mir nur aufgefallen ist es scheint so, dass Debian und Fedora ihre Kernel irgend wie modifizieren. Weil bei Debian kann ich ja z.B.ein lspci als nicht Root ausführen und unter Fedora 7 nur als Root.
 
Zuletzt bearbeitet:
Was mir nur aufgefallen ist es scheint so, dass Debian und Fedora ihre Kernel irgend wie modifizieren. Weil bei Debian kann ich ja z.B.ein lspci als nicht Root ausführen und unter Fedora 7 nur als Root.

Jede Distribution nimmt sich die sourcen von kernel.org und patched die - oftmals - anders.

Und genau deshalb solltest du auch die Fedora-sourcen nehmen und nicht die von kernel.org.
 
Das liest sich trotzdem so, als hättest du den Kernel nicht richtig eingerichtet. Ich spekuliere mal, config von Fedora genommen und vergessen die InitialRamDisk einzurichten.
Wenn du an einem ungepatchten Kernel herumspielen willst, nimm Slackware.
 
Wenn du die config vom laufenden Fedora-Kernel nach /usr/src/linux-2.6* /.config kopiert hättest, hättest du schonmal eine funktionstüchtige config gehabt. Ausgehend davon hättest du dann deine spezifischen Einstellungen machen können.
oder hab ich einfach was falsch gemacht.?
Es gibt viel, was man bei einer Kernelkompilierng falsch machen kann.
z.B.
- keine initrd (ramdisk) erstellt
- wenn ohne initrd, dann müssen die Treiber für das FS und den Festplattencontroller fest einkompiliert werden.
- sonstige Module falsch oder garnicht ausgewählt. Welche das sind, ist natürlich abhängig von deiner Hardware, die du kennen musst.
- menu.lst nicht richtig konfiguriert
- ...

ohne genauere Angaben zum Problem wird man dir aber nicht helfen können.
 
Zuletzt bearbeitet:
Ich habe meinen Kernel immer von Kernel.org genommen. (Debian)
Damit musst du trotzdem einen Kernel hinbekommen.

Häufigste Fehler sind vergessene FS des / mit einzupacken.

BTW Ramdisk wird nur benötigt, wenn nicht alles Essentielle in den Kernel fest eingebaut ist.

Gruß Wolfgang
 
ich tippe mal dass es an der initrd liegt, aber das haben ja schon andere gesagt, was ich eigentlich sagen wollte ist: Wenn man keinen eigenen modifizierten Kernel benötigt, dann sollte man den standard Kernel verwenden.
Vor allem wenn man keine große Erfahrung mit linux hat.

Was genau sind denn deine Intentionen einen eigenen Kernel zu verwenden?
 
Vor allem wenn man keine große Erfahrung mit linux hat.

Was genau sind denn deine Intentionen einen eigenen Kernel zu verwenden?
hm, aber da liegt ja schon eine Intention: Diese Erfahrung zu sammeln. Das überhaupt mal machen zu wollen, kann nicht falsch sein.

Gründe mag es auch sonst geben: Obwohl ja viel als Modul geladen wird, könnte man mal einen Kernel bauen wollen, in dem wirklich nur noch das ist, was man überhaupt an Hardware nutzt und das statisch. Dann hätte man aber das Problem mit der initrd nicht... (was Wolfgang sagt, oft wird zunächst vergessen, z.B. ext3 oder reiser oder was immer "/" hat, in die initrd zu packen -> Kernel panic und Schluß beim Start)
Wenn du die config vom laufenden Fedora-Kernel nach /usr/src/linux-2.6* /.config kopiert hättest, hättest du schonmal eine funktionstüchtige config gehabt.
wenn im Kernel aktiviert, daß er seine eigene Config speichert, ist die in /proc/config.gz und wird mit make cloneconfig dahin gepackt, wo vorher die alte war (oder make oldconfig), bevor man make menuconfig oder make xconfig macht....

ohne genauere Angaben zum Problem wird man dir aber nicht helfen können.
Das sehe ich aber auch so.... weil du wohl keinen Screenshot machen kannst außer mit ner Cam, solltest du mal abschreiben, was passiert, wenn du so einen Kernel starten möchtest bzw. überhaupt mal beschreiben, was nicht klappt...
 
Also unter Suse klappt das auch mit Kernel.org.
Ich habe damals auch einige versuche gebraucht um einen Lauffähigen Kernel zu basteln. Dafür gibt es zu viele "Variabeln" für einen Unwissenden (wie mich).
Der Tipp mit "cloneconfig" ist schon Gold wert und hat mich damals auch meinem Ziel näher gebracht.
Mir hat das Howto von redlabour auch einige Wertvolle Tipps gegeben - habs aber gerade nicht mehr gefunden.
 
Also der Kernel spuckt beim booten das aus
Kernel panic - not syncing
Attempted to kill init!
switchroot: error mounting /dev
switchroot: error mounting /proc
switchroot: error mounting /devsys
Naja das sind die relevanten inhalte.
Die Kofiguration war make oldconfig. Dann make && make modules_install
dann make install und dann und dann und dann kernel panic :(
 
Nun hast du vor make oldconfig auch die Konfiguration deines laufenden Kernels in das Quellverzeichnis kopiert? Entweder hab ichs überlesen oder du hast es nicht erwähnt.

Mein Weg dazu ist immer:
Code:
zcat /proc/config.gz > .config
(natürlich im Quellverzeichnis)

Ansonsten bringt die oldconfig nicht viel. (meines Wissens nach)

Es empfielt sich auch immer, ne customversion anzulegen, um bei gleichen Versionen strikt voneinander abzutrennen.

Den von Sinn3r geposteten Link kann ich da auch nur empfehlen.

Ich nutz übrigens auch immer die Quellen von Kernel.org. Bei SuSE wie auch heute bei Arch. Sollte der Kenrel der Distribution keine relevanten Hardwarepatches für DEINE spezielle Hardware enthalten (und das sollte in jeder guten Doku des distri-Kernels zu finden sein), dann sollte es auch problemlos möglich sein, den Kernel ans rennen zu kriegen.

Ausserdem verwende ich prinzipiell kein make install. Kopieren tu ich noch von Hand und trage diesen Kernel dann auch in die LILO/Grub config ein. Initrd natürlich nicht vergessen, wenn benötigt.
 
Also der Kernel spuckt beim booten das aus

Code:
Kernel panic - not syncing
 Attempted to kill init!
 switchroot: error mounting /dev
[color=gray][i][....][/i][/color]
Das sieht genau so aus wie wenn der eine Initrd läd und da ist das Kernel-Modul für das Dteisystem nicht drin. Das liegt nämlich auf der Festplatte, aber um es zu lesen, braucht er ja das Dateisystem, also das Modul.

Gleiches passiert auch, wenn das richtige nicht statisch in den Kernel gelinkt wird, wenn du keine initrd benutzt. Er kann einfach das Modul nicht laden, weil er es bräuchte, um es zu laden. Der Schlüssel zur Kiste ist in der Kiste...

  • man mkinitrd
 
Zico schrieb:
zcat /proc/config.gz > .config
Falls diese nicht vorhanden ist:
Code:
 cp /boot/config-2.6* /usr/src/linux-2.6*/.config
$> make oldconfig
$> make modules_prepare
 

Ähnliche Themen

Debian Kernel kompilieren

ubuntu erkennt netzwerkarte nicht

Debian: Kernel nicht bootbar.

Custom Kernel 2.6.29.3 - Installation scheitert

Welcher Kernel ist im Betrieb?

Zurück
Oben