[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Kernel Probleme mkinitrd?



Hallo Leute,


bin schon wieder ma verzeweiffeln. Ich habe mir einen Kernel nach folgender
Anleitung gebastelt.


----------------------------------------------------------------------------
---------------------------------------

Herunterladen der Kernel-Quellen - Alternative I (Debian-Archiv)

Möchte man die Kernel-Quellen aus dem Debian-Archiv installieren,
installiert man das entsprechende kernel-source-Paket:

# apt-get install kernel-source-2.4.18

Jetzt gibt es im Verzeichnis /usr/src eine Datei namens
kernel-source-2.4.18.tar.bz2. Wir wechseln in das Verzeichnis /usr/src und
entpacken die Kernel-Quellen:

# cd /usr/src
# bunzip2 -c kernel-source-2.4.18.tar.bz2 | tar x

Falls bzip2 noch nicht installiert sein sollte (im Basissystem ist nur gzip
enthalten), installiert man es vorher mit:

# apt-get install bzip2

Damit die Bezeichnungsweise im folgenden übereinstimmt, legen wir noch einen
symbolischen Link namens "linux" auf das entstandene Verzeichnis
kernel-source-2.4.18:

# ln -s kernel-source-2.4.18 linux

Herunterladen der Kernel-Quellen - Alternative II (kernel.org)

Möchte man die Kernel-Quellen von kernel.org beziehen, sollte man die
Quellen von einem geeigneten Mirror herunterladen, da es sich bei
linux-2.4.19.tar.bz2 immerhin um 25 MB handelt. Wir wechseln in das
Verzeichnis /usr/src und entpacken das Archiv:

# cd /usr/src
# bunzip2 -c linux-2.4.19.tar.bz2 | tar x

Damit die Bezeichnungsweise im folgenden übereinstimmt, legen wir noch einen
symbolischen Link namens "linux" auf das entstandene Verzeichnis
linux-2.4.19:

# ln -s linux-2.4.19 linux

Konfiguration des Kernels

Oft bietet es sich an, mit der Konfiguration eines Debian-Standard-Kernels
anzufangen und diese anzupassen, insbesondere, wenn die Hardware-Komponenten
schon (größtenteils) von diesem unterstützt werden. Ich möchte gerne die
Konfiguration des 2.4.18-bf2.4-Kernels an meine Bedürfnisse anpassen (z.B.
Deaktivieren des DRM, da ich den Code aus den XFree86-Quellen verwenden
möchte). Dazu übernehme ich die Datei /boot/config-2.4.18-bf2.4 als meine
Kernel-Konfigurationsdatei (/usr/src/linux/.config) und wechsele
anschließend nach linux:

# cp /boot/config-2.4.18-bf2.4 linux/.config
# cd linux

Falls man eine Konfiguration "from scratch" erstellen möchte, lässt man
obigen Schritt einfach aus oder übernimmt eine eigene (vielleicht
gebackupte) .config. Für die Konfiguration stehen mehrere Frontends zur
Verfügung, für die Konsole oder für X. Möchte man den Kernel mit einem
graphischen Frontend unter X konfigurieren, ist der nächste Schritt:

# make xconfig

Möchte man den Kernel lieber menügesteuert auf der Konsole konfigurieren
(diese Art ist meiner Meinung nach noch komfortabler als make xconfig, weil
das Menüsystem besser gemacht ist; außerdem kann man das prima in einem
xterm machen, während man in Mozilla die Dokumentation (z.B. HOWTOs)
durchgehen kann. Übrigens: die Konfiguration und das Kompilieren des Kernels
ist kein besonderer Prozess, man kann nebenbei das System ganz normal nutzen
(Internet etc.)), installiert man zunächst die Entwicklungsversion der
Ncurses-Bibliothek und startet dann make menuconfig:

# apt-get install libncurses5-dev
# make menuconfig

Nachdem man die Konfiguration abgeschlossen hat, gibt man nicht wie
vorgeschlagen make dep ein, sondern (wir wollen ja den Komfort von Debian
nutzen ;-)) erledigt die Kompilierung und das Erstellen eines Debian-Pakets
mittels kernel-package, das schnell installiert ist:

# apt-get install kernel-package

Bevor wir mittels kernel-package ein Debian-Paket unseres Kernels erstellen,
ist es sinnvoll, sich eine eigene Bezeichnung (z.B. dri) zu überlegen, die
nebst eigener Versionsnummer (z.B. startend mit 0) dem Kernel-Paket
mitgegeben wird, damit der Kernel bei Bedarf wieder sauber aus dem System
entfernt werden kann. Bevor man das folgende Kommando eingibt sollte man
sich außerdem im klaren sein, dass das Kompilieren des Kernels je nach
Systemleistung mehrere Stunden dauern kann (auf meinem Celeron 800-System
dauerte die Kompilierung meines 2.4.18-Kernels 39m59.274s laut time).

Also los...

# make-kpkg kernel_image --revision=dri.0

Jetzt kann man das in /usr/src liegende Debian-Archiv bequem mit dpkg
installieren:

# cd ..
# dpkg -i kernel-image-2.4.18-dri.0_i386.deb

Anschließend wird LILO konfiguriert. Sicherheitshalber sollte man
/etc/lilo.conf selbst noch einmal mit dem Editor öffnen und auch den alten
Kernel (mit dem das System ja auf jeden Fall gestartet werden kann) in das
Bootmenü aufnehmen. Dazu fügt man etwa folgende Zeilen nach dem
Standard-Kernel-Image ein:

image=/vmlinuz.old
    label=LinuxOLD
    read-only
#   restricted
#   alias=1

Anschließend müssen die Änderungen noch wirksam gemacht werden, indem lilo
aufgerufen wird:

# lilo

Jetzt kann das System neugestartet werden, und der neue Kernel sollte als
"Linux" im Bootmenü verfügbar sein. Sollte der eigene Kernel nicht starten,
kann das System mit dem alten Kernel ("LinuxOLD") gestartet werden und
erneut konfiguriert werden.

----------------------------------------------------------------------------
----------------------------------------------

wenn ich jetzt den Rechner neu starte bekomme ich das:

Kernel panic: VFS: Unable to mount root fs on unknow-block(3,2)

kann mein Fehler irgend etwas mit intird oder mkinitrd zu tun haben. Das
habe ich nehmlich nicht ausgeführt.

ich habe die Kernel Sourcen 2.6.....8 von Sarge http apt gezogen und
installiert. In meine lilo.conf steht für den normal installierten Kernel
(also der bei Betriebsystem Setup installiert wurde) etwas mit /initrd.img
drin. Beim automatischen Konfigurieren der lilo.conf (es wurde nach der
installation des neuen Kernesl gefragt ob lilo.conf angepasst werden
soll.)stand beim neuen Kernel also der als Label=LINUX heisst auch was mit
/initrd.img drin und beim Standard also old Kernel stand dann
/initrd.img.old. Das kominsche an der Sache ist nur das es für den Eintrag
/initrd.img in der neu Konfigurierten lilo.conf gar keine Datei gibt die
unter / liegt. Dort lag nur ein leerer Ordner der initrd heisst. Ich muss
irgend einen Schritt vergessen haben oder brauche ich das initrd.img nicht.
Aber wenn ich es nicht brauche müsste der Kernel ja starten. Was könnte an
der Anleitung nicht richtig sein bzw. was fehlt dort? Danke für jede Hilfe.








Reply to: