InitRD erstellen
-
- Beiträge: 288
- Registriert: 18.09.2020 15:42:01
InitRD erstellen
Hallo,
ich habe mein eigens Kernel zusammengestellt und installiert. (installiertes System Debian9_Stretch)
Der Kernel bootet aber findet meine Festplatte nicht bzw . InitRD findet das Gerät /dev/sda3 nicht!
Frage) Ich habe gelesen, dass ältere Systeme mit InitRD arbeiten und nicht mit initramfs ? Arbeitet Debian_Stretch mit Initrd oder initramfs?
Ich habe in dem Verzeichnis /usr/src/linux/linux-4.12.8 mit dem Befehl : update-initramfs -c -k 4.12.8 eigenes initRD Image Abbild erstellt und würde automatisch in /boot/ abgelegt mit der
Bezeichnung ,,initrd.img-4.12.8
Folgende Dateien habe ich in /boot/ Verzeichnis kopiert: (bzImage-4.12.8, initrd.img-4.12.8(wurde automatisch angelegt), System.map-4.12.
Ich habe Grub2 installiert, obwohl in der Literatur stand Grub2 ist bei Debian Stretch installiert.
Anschließend habe ich in 40_custom eingetragen.
menuentry ,,bzImage-4.12.8'' {
set root=(hd0,1)
linux /bzImage-4.12.8 root=/dev/sda3 ro
initrd /initrd.img-4.12.8
}
Auf der 1.Festplatte (sda1) habe ich für /boot/ eigene Partition angelegt und für ,,/'' (sda3)angelegt. ( und Root-Verzeichnis auf (sda7))
Also: Es wird beim booten angezeigt: /dev/sda3 does not exist.
(initramfs)--- sucht von alleine und gibt irgendwelche Zahlen an und bootet nicht mehr, was auch logisch ist, wenn die Festplatte nicht findet.
ich habe mein eigens Kernel zusammengestellt und installiert. (installiertes System Debian9_Stretch)
Der Kernel bootet aber findet meine Festplatte nicht bzw . InitRD findet das Gerät /dev/sda3 nicht!
Frage) Ich habe gelesen, dass ältere Systeme mit InitRD arbeiten und nicht mit initramfs ? Arbeitet Debian_Stretch mit Initrd oder initramfs?
Ich habe in dem Verzeichnis /usr/src/linux/linux-4.12.8 mit dem Befehl : update-initramfs -c -k 4.12.8 eigenes initRD Image Abbild erstellt und würde automatisch in /boot/ abgelegt mit der
Bezeichnung ,,initrd.img-4.12.8
Folgende Dateien habe ich in /boot/ Verzeichnis kopiert: (bzImage-4.12.8, initrd.img-4.12.8(wurde automatisch angelegt), System.map-4.12.
Ich habe Grub2 installiert, obwohl in der Literatur stand Grub2 ist bei Debian Stretch installiert.
Anschließend habe ich in 40_custom eingetragen.
menuentry ,,bzImage-4.12.8'' {
set root=(hd0,1)
linux /bzImage-4.12.8 root=/dev/sda3 ro
initrd /initrd.img-4.12.8
}
Auf der 1.Festplatte (sda1) habe ich für /boot/ eigene Partition angelegt und für ,,/'' (sda3)angelegt. ( und Root-Verzeichnis auf (sda7))
Also: Es wird beim booten angezeigt: /dev/sda3 does not exist.
(initramfs)--- sucht von alleine und gibt irgendwelche Zahlen an und bootet nicht mehr, was auch logisch ist, wenn die Festplatte nicht findet.
Re: InitRD erstellen
Damit der Kernel von deiner Festplatte booten kann, benötigt er alle dazu notwendigen Treiber. Diese müssen daher
Debian nutzt bei den mitgelieferten Kerneln Module, was ins initramfs soll trägt man in /etc/initramfs-tools/modules ein, danach
- entweder fest in den Kernel einkompiliert sein
- oder als Modul vorliegen, dann müssen sie Teil der initrd/initramfs sein (da der Kernel ja ohne Treiber nichts von Festplatte nachladen kann).
Debian nutzt bei den mitgelieferten Kerneln Module, was ins initramfs soll trägt man in /etc/initramfs-tools/modules ein, danach
Code: Alles auswählen
update-initramfs -u
-
- Beiträge: 288
- Registriert: 18.09.2020 15:42:01
Re: InitRD erstellen
Ich verwende virtuelle Maschinen! Könnte sein, dass die virtuelle Maschine Probleme macht ?
Re: InitRD erstellen
Den meisten Mitlesenden macht die übersichtliche Informationslage Probleme. Du könntest versuchen etwas Licht ins Dunkel zu bringen mit dem Posten der genauen Fehlermeldungen und der Kernel-Config (je nach Umfang ggf. bitte direkt nach nopaste). Ansonsten hat @mludwig schon die entscheidenden Hinweise gegeben, virtuelle Maschinen machen idR keine Probleme bei selbstgebauten Kerneln.viktor1980 hat geschrieben:22.09.2020 03:09:52Ich verwende virtuelle Maschinen! Könnte sein, dass die virtuelle Maschine Probleme macht ?
-
- Beiträge: 288
- Registriert: 18.09.2020 15:42:01
Re: InitRD erstellen
Hallo,
Muss bzw. kann man unter ,,make menuconfig'' initRD.img eintragen?
Danke!
Muss bzw. kann man unter ,,make menuconfig'' initRD.img eintragen?
Danke!
Re: InitRD erstellen
Unter Debian bootet kein Kern ohne initrd, wenn udev aktiv ist. Das ist Standard und du schreibst nichts davon, dass du auf udev verzichtet hast. Ich riete es auch nicht, wenn du nicht über genauere Kenntnisse verfügst, was das nach sich zieht.
Insofern: Ja, mit make menuconfig muss ausgewählt werden. in der config.
Insofern: Ja, mit make menuconfig muss
Code: Alles auswählen
Initial RAM filesystem and RAM disk (initramfs/initrd) support
Code: Alles auswählen
CONFIG_BLK_DEV_INITRD
-
- Beiträge: 288
- Registriert: 18.09.2020 15:42:01
Re: InitRD erstellen
Es handelt es sich um eine Aufgabe ohne Bewertung zum lernen, daher möchte ich einfach die Aufgabe umsetzten und verstehen wie es funktioniert.
Ich habe folgende Einträge vorgenommen:
in menuconfig: (initrd.img-4.12. Initramfs Source file (s), natürlich habe ich support auch aktiviert.
und gespeichert ( muss man nach dem speichern, menuconfig updaten? oder gibt es die Möglichkeit nicht?)
Anschließend den Befehl: update-initramfs -u ausgeführt . Ergebnis: update-initramfs..../boot/initrd.img-4.12.8 so wie es aussieht update war erfolgreich.
Als nächstes: update-grub2
shutdown -r now
zuletzt taucht wieder in der Boottabelle mein Kernel mit der Bezeichnung ,,bzImage-4.12.8'' auf und nach der Ausführung bleibt wieder bei initramfs hängen.
Ich habe folgende Einträge vorgenommen:
in menuconfig: (initrd.img-4.12. Initramfs Source file (s), natürlich habe ich support auch aktiviert.
und gespeichert ( muss man nach dem speichern, menuconfig updaten? oder gibt es die Möglichkeit nicht?)
Anschließend den Befehl: update-initramfs -u ausgeführt . Ergebnis: update-initramfs..../boot/initrd.img-4.12.8 so wie es aussieht update war erfolgreich.
Als nächstes: update-grub2
shutdown -r now
zuletzt taucht wieder in der Boottabelle mein Kernel mit der Bezeichnung ,,bzImage-4.12.8'' auf und nach der Ausführung bleibt wieder bei initramfs hängen.
- Livingston
- Beiträge: 1816
- Registriert: 04.02.2007 22:52:25
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: 127.0.0.1
Re: InitRD erstellen
Das liest sich so, als hättest Du nach make menuconfig den Kernel nicht neu kompiliert.
Und was mir auch schon mal in Deinen Beiträgen auffiel: Man sieht nicht, welche kernel source Du nutzt. Die von Debian oder die von kernel.org? Ich kann mir vorstellen, dass sich die Übungsaufgaben auf das Original beziehen. Debian hat eine gepatchte und aufgemöbelte Version, die bereits sämtliche oft gebrauchten Config-Einstellungen beinhaltet.
Und was mir auch schon mal in Deinen Beiträgen auffiel: Man sieht nicht, welche kernel source Du nutzt. Die von Debian oder die von kernel.org? Ich kann mir vorstellen, dass sich die Übungsaufgaben auf das Original beziehen. Debian hat eine gepatchte und aufgemöbelte Version, die bereits sämtliche oft gebrauchten Config-Einstellungen beinhaltet.
-
- Beiträge: 288
- Registriert: 18.09.2020 15:42:01
Re: InitRD erstellen
Debian 4.12.8 Kernel , und soll später gepacht werden.
Ich habe Debian9_Strech mit dem Kernel 4.9.0-12-amd64 installiert und hat sich im Laufe der Zeit von alleine aktualisiert auf 4.9.0-13.
Da mein Kernel 4.12.8 nicht läuft kann ich patchen erstmal vergessen.
Jetzt erzähle ich euch wie ich vorgegangen bin.
- Kernelquellen in dem Verzeichnis kopiert und entpackt: /usr/src/linux/linux-4.12.8/ und tar -xvf linux-4.12.8.tar.gz
- make menuconfig
- /usr/src/linux/linux-4.12.8/ make clean
- make bzImage-4.12.8
- make modules_install
(neu)System.map in System.map-4.12.8 umbenannt und bzImage-4.12.8 in /boot/ kopiert
Als nächstes habe ich initRD erstellt und installiert: update-initramfs -c -k 4.12.8 und wurde automatisch in /boot/ angelegt.
Anschließend habe ich mein System mitgeteilt: /etc/grub.d/40_custom
menuentry "bzImage-4.12.8" {
set root=(hd0,1) da sich mein /boot/ Verzeichnis aus sda1 befindet
linux /bzImage-4.12.8 roo=/dev/sda3 ro da sich mein Wurzelverzeichnis ,,/'' auf sda3 befindet
initrd /initrd-img-4.12.8 befindet sich in /boot/ Verzeichnis sda1
Im Anschluss habe ich Sicherheitshalber 2 Befehle ausgeführt: update-initramfs -u , und update-grub2
Ich habe Debian9_Strech mit dem Kernel 4.9.0-12-amd64 installiert und hat sich im Laufe der Zeit von alleine aktualisiert auf 4.9.0-13.
Da mein Kernel 4.12.8 nicht läuft kann ich patchen erstmal vergessen.
Jetzt erzähle ich euch wie ich vorgegangen bin.
- Kernelquellen in dem Verzeichnis kopiert und entpackt: /usr/src/linux/linux-4.12.8/ und tar -xvf linux-4.12.8.tar.gz
- make menuconfig
- /usr/src/linux/linux-4.12.8/ make clean
- make bzImage-4.12.8
- make modules_install
(neu)System.map in System.map-4.12.8 umbenannt und bzImage-4.12.8 in /boot/ kopiert
Als nächstes habe ich initRD erstellt und installiert: update-initramfs -c -k 4.12.8 und wurde automatisch in /boot/ angelegt.
Anschließend habe ich mein System mitgeteilt: /etc/grub.d/40_custom
menuentry "bzImage-4.12.8" {
set root=(hd0,1) da sich mein /boot/ Verzeichnis aus sda1 befindet
linux /bzImage-4.12.8 roo=/dev/sda3 ro da sich mein Wurzelverzeichnis ,,/'' auf sda3 befindet
initrd /initrd-img-4.12.8 befindet sich in /boot/ Verzeichnis sda1
Im Anschluss habe ich Sicherheitshalber 2 Befehle ausgeführt: update-initramfs -u , und update-grub2
Re: InitRD erstellen
Ach Viktor, das wird so nix. Wo gräbst Du eigentlich diese völlig veralteten Anleitungen aus? make bzimage wird schon seit Jahren nicht mehr genutzt.
Und wie @Livingstone schon sagt, welche Quelle nutzt Du denn? Du mußt schon die Vanilla Kernel von kernel.org nehmen, damit das Ergebnis unverfälscht ist.
Was mir noch auffällt, Dir fehlen grundlegende Basiskenntnisse, ohne die es nunmal nicht geht. Ja, ein Unix ist nicht mal eben so zu erlernen, das braucht seine Zeit.
Zum Nachlesen:
https://debian-handbook.info/browse/de-DE/stable/
Aus meinem Fundus habe ich eine Kernelbauanleitung gekramt, ich habe nochmal drüber gesehen, kann man so gebrauchen.
Ich baue meine Kernel seit vielen Jahren selbst, da hat man das im Kopf.
Vorab:
In Deinem Home solltest Du einen Ordner namens Temp erstellen. Dahinein den Vanilla Kernel entpacken und alle weiteren Aktionen in diesem Verzeichnis ausführen.
Du brauchst auch das Paket fakeroot, falls Du das nicht hast, nachinstallieren.
41141
In meiner Anleitung habe ich oldconfig als Parameter, Du willst wahrscheinlich menuconfig nutzen. Alle Möglichkeiten für make sind aufgeführt und beschrieben.
Ein make clean wird nur genutzt, wenn Du bereits einen eigenen Kernel kompiliert hast, und in den Sourcen noch Änderungen vornehmen willst.
Sonst nicht, da ja die Defaultwerte wieder hergestellt werden und Du die Änderungen wieder überschreiben würdest.
Üben, üben, üben, bis man eine brauchbare config hat, baucht es mehrere Versuche.
Und wie @Livingstone schon sagt, welche Quelle nutzt Du denn? Du mußt schon die Vanilla Kernel von kernel.org nehmen, damit das Ergebnis unverfälscht ist.
Was mir noch auffällt, Dir fehlen grundlegende Basiskenntnisse, ohne die es nunmal nicht geht. Ja, ein Unix ist nicht mal eben so zu erlernen, das braucht seine Zeit.
Zum Nachlesen:
https://debian-handbook.info/browse/de-DE/stable/
Aus meinem Fundus habe ich eine Kernelbauanleitung gekramt, ich habe nochmal drüber gesehen, kann man so gebrauchen.
Ich baue meine Kernel seit vielen Jahren selbst, da hat man das im Kopf.
Vorab:
In Deinem Home solltest Du einen Ordner namens Temp erstellen. Dahinein den Vanilla Kernel entpacken und alle weiteren Aktionen in diesem Verzeichnis ausführen.
Du brauchst auch das Paket fakeroot, falls Du das nicht hast, nachinstallieren.
41141
In meiner Anleitung habe ich oldconfig als Parameter, Du willst wahrscheinlich menuconfig nutzen. Alle Möglichkeiten für make sind aufgeführt und beschrieben.
Ein make clean wird nur genutzt, wenn Du bereits einen eigenen Kernel kompiliert hast, und in den Sourcen noch Änderungen vornehmen willst.
Sonst nicht, da ja die Defaultwerte wieder hergestellt werden und Du die Änderungen wieder überschreiben würdest.
Üben, üben, üben, bis man eine brauchbare config hat, baucht es mehrere Versuche.
- KBDCALLS
- Moderator
- Beiträge: 22449
- Registriert: 24.12.2003 21:26:55
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Dortmund
-
Kontaktdaten:
Re: InitRD erstellen
Kernel 4.12 ist ja schon etwas älter. Aber ich würde mal das Hilfesystem der Kernelsourcen befragen.
Code: Alles auswählen
make help
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:
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.