initrd beim kernelbauen

Welches Modul/Treiber für welche Hardware, Kernel compilieren...
Antworten
Magnia
Beiträge: 17
Registriert: 10.12.2004 20:53:04

initrd beim kernelbauen

Beitrag von Magnia » 11.12.2004 13:11:23

hallo
also bin dabei mir ne kernel zu bauen
jetzt habe ich den kernel erstellt mit :
make-kpkg buildpackage -rev Custom.1 kernel_image
habe lilo aktualisiert doch lilo sagt mir :
Fatal: open /initrd.img: No such file or directory
ich habe noch nicht mal ne initrd angegeben nur mein aktueller kernel hat das noch !
ich bin jetzt ratlos muss ich doch eine erstellen und wenn wie ?
kann ich das beim kernel bauen auch irgend wo sagen das das nicht mit initrd gemacht werden soll und wenn wo ? (module fest einbinden)

ich habe schon gesucht aber die boardsuche hier geht ja irgend wie nicht bin auch nicht bei google,de fündig gewurden ...

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 » 11.12.2004 14:08:55

du hast --initrd vergessen. Du kannst dir aber eine initrd mit mkinitrd bauen.

mkinitrd -o /boot/initrd kernelrversion
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.

Magnia
Beiträge: 17
Registriert: 10.12.2004 20:53:04

Beitrag von Magnia » 11.12.2004 15:20:58

wo meinst du habe ich --initrd vergessen ?
also ist eine initrd nötig ?
nach dem kernel bau muss ich dann nur mkinitrd -o /boot/initrd kernelrversion
und für kernelversion nen belibigen namen eingeben oder was ?

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 » 11.12.2004 17:56:44

Der make-kpkg Aufruf muß damit beim Installieren des Kernelimages eine Initrd erstellt wird so lauten

Code: Alles auswählen

make-kpkg --initrd buildpackage -rev Custom.1 kernel_image  
Kernelversion ist natürlich die Version deines Kernels mit gemeint. So sähe es aus wenn ich bei einem laufen Kernel 2.6..9 für einen Kernel 2..6.7 eine Initrd erstellen wollte

Code: Alles auswählen

mkintrd -o /boot/initrd.img-2.6.7-1-386  2.6.7-1-386 
Wenn man natürlich alles in den Kernel hineinkompiliert , was zum Booten des Systems benötigt wird dann braucht man allerdings keine Initrd, wenn ich aber eine Originalkonfig von Debian 1 zu 1 übernehme dann allerdings ja.
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.

Magnia
Beiträge: 17
Registriert: 10.12.2004 20:53:04

Beitrag von Magnia » 11.12.2004 22:37:55

Hallo
Also baue gerade mit make-kpkg buildpackage -rev Custom.1 kernel_image meinen kernel also brauche ich danach dann einfach nochmal
make-kpkg --initrd buildpackage -rev Custom.1 kernel_image
eingeben und habe meine initrd !
der kernel is ja noch nicht am laufen also fällt
mkintrd -o /boot/initrd.img-2.6.7-1-386 2.6.7-1-386 weg ?

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 » 11.12.2004 22:49:55

Das hast du falsch verstanden, wenn du einen Kernel hast für den du eine Initrd erstellen willst, dann mit mkinitrd, aber wenn du einen neuen Kernel kompilierst der eine Initrd brauch dann immer mit

Code: Alles auswählen

make-kpkg --initrd build-package --rev 

--initrd  ist eine Option von make-kpkg
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.

Magnia
Beiträge: 17
Registriert: 10.12.2004 20:53:04

Beitrag von Magnia » 12.12.2004 15:08:14

hallo
mein selbstgebauter kernel läuft jetzt habe ich probiert ne initrd.img zu machen bekomme folgenden fehler :

michi:/boot# mkinitrd -o /boot/initrd.img-2.6.9 vmlinuz-2.6.9
/usr/sbin/mkinitrd: /lib/modules/vmlinuz-2.6.9: Not a directory
/usr/sbin/mkinitrd: MODULES needs to be set to none?

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 » 12.12.2004 18:52:01

Der mkinitrd Aufruf was fast richtg

Bei mir sind zum Beisoiel zwei Kernel installier 2.6.7 und 2.6,9

2.6.7-1-386
2.6.9-1-k7

Das sähe dann zum Beispiel so aus für die Kernel

Code: Alles auswählen

Für Kernel 2.6.7
mkinitrd -o /boot/initrd.img-2.6.7-1-386 2.6.7-1-386

Für Kernel 2.6.9
mkinitrd -o /boot/initrd.img-2.6.9-1-k7   2.6.9-1-k7
Wobei der Name hinter -o noch nicht mal so wichtig ist. Der muß natürlich dann richtig in die Lilo.conf oder in menu.lst des Grubs eingetragen werden. Der letzte Teil der Befehlszeile muß stimmen, da die Module normal in /lib/moduls stehen würden und Debian legt noch mal ein Unterverzeichnis für jeden Kernel darin an.
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.

Benutzeravatar
INXS
Beiträge: 25
Registriert: 13.10.2003 17:58:05

Beitrag von INXS » 12.12.2004 19:03:36

Du kannst auch einfach

Code: Alles auswählen

# cd /usr/src/linux(kernelversion)
# make install
Das impliziert "mkinitrd" !
Dabei wird auch automatisch der bootloader angepasst egal ob Grub oder Lilo!
Ausserdem wird auch der Link des compilierten kernels (bei dir /boot/vmlinuz-2.6.9)
auf /boot/vmlinuz aktualisiert ! Auch /boot/initrd-2.6.9.img
wird auf /boot/inird.img gelinkt!
und die entsprechende System.map, kernel.h angepasst

Wenn du ein initrd partout mit der Hand machen willst und alle links von manuell
anpassen willst, dann muss natürlich die Version des Modulverzeichnisses
der neugebauten Module(make modules_install) angegeben werden!

Code: Alles auswählen

mkinitrd -o /boot/initrd-2.6.9.img /lib/modules/linux-2.6.9
bzw

Code: Alles auswählen

mkinitrd -o /boot/initrd-2.6.9.img linux-2.6.9
ist ausreichend!
Danach ist dann unbedingt darauf zu achten, dass der Kernel den du booten willst, auf das initrg.img zugreift welches in /boot mit der entsprechenden version liegt!
Bootloader anpassen!
Das mkinitrd ist insbesondere wichtig wenn beim booten auf einen Partitions(Typ) (zb reiserfs oder scsi) zugegriffen werden soll und die entsprechenden Module nicht fest eingebunden sind .
Ich hoffe es ist jetzt etwas klarer :)

Antworten