InitRD erstellen

Warum Debian und/oder eine seiner Spielarten? Was muss ich vorher wissen? Wo geht es nach der Installation weiter?
Antworten
viktor1980
Beiträge: 288
Registriert: 18.09.2020 15:42:01

InitRD erstellen

Beitrag von viktor1980 » 21.09.2020 01:27:09

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.8)
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.

mludwig
Beiträge: 793
Registriert: 30.01.2005 19:35:04

Re: InitRD erstellen

Beitrag von mludwig » 21.09.2020 06:50:52

Damit der Kernel von deiner Festplatte booten kann, benötigt er alle dazu notwendigen Treiber. Diese müssen daher
  • 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).
Zu diesen Treibern gehören: Chipsatz (SATA Chip deines Mainboards etc), Dateisystem (z. B. ext2/3/4 oder btrfs) usw.

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

viktor1980
Beiträge: 288
Registriert: 18.09.2020 15:42:01

Re: InitRD erstellen

Beitrag von viktor1980 » 22.09.2020 03:09:52

Ich verwende virtuelle Maschinen! Könnte sein, dass die virtuelle Maschine Probleme macht ?

Benutzeravatar
Tintom
Moderator
Beiträge: 3029
Registriert: 14.04.2006 20:55:15
Wohnort: Göttingen

Re: InitRD erstellen

Beitrag von Tintom » 22.09.2020 11:26:07

viktor1980 hat geschrieben: ↑ zum Beitrag ↑
22.09.2020 03:09:52
Ich verwende virtuelle Maschinen! Könnte sein, dass die virtuelle Maschine Probleme macht ?
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
Beiträge: 288
Registriert: 18.09.2020 15:42:01

Re: InitRD erstellen

Beitrag von viktor1980 » 24.09.2020 14:31:39

Hallo,

Muss bzw. kann man unter ,,make menuconfig'' initRD.img eintragen?

Danke!

fischig
Beiträge: 3600
Registriert: 24.12.2019 12:25:08
Lizenz eigener Beiträge: MIT Lizenz

Re: InitRD erstellen

Beitrag von fischig » 24.09.2020 14:40:18

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

Code: Alles auswählen

Initial RAM filesystem and RAM disk (initramfs/initrd) support
ausgewählt werden.

Code: Alles auswählen

CONFIG_BLK_DEV_INITRD
in der config.

viktor1980
Beiträge: 288
Registriert: 18.09.2020 15:42:01

Re: InitRD erstellen

Beitrag von viktor1980 » 24.09.2020 16:29:14

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.8) 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.

Benutzeravatar
Livingston
Beiträge: 1365
Registriert: 04.02.2007 22:52:25
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: 127.0.0.1

Re: InitRD erstellen

Beitrag von Livingston » 24.09.2020 16:37:46

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.

viktor1980
Beiträge: 288
Registriert: 18.09.2020 15:42:01

Re: InitRD erstellen

Beitrag von viktor1980 » 24.09.2020 17:32:47

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. :D
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

KP97
Beiträge: 3403
Registriert: 01.02.2013 15:07:36

Re: InitRD erstellen

Beitrag von KP97 » 24.09.2020 18:43:54

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 Debianfakeroot, falls Du das nicht hast, nachinstallieren.

NoPaste-Eintrag41141

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.

viktor1980
Beiträge: 288
Registriert: 18.09.2020 15:42:01

Re: InitRD erstellen

Beitrag von viktor1980 » 24.09.2020 19:21:37

Danke!

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

Re: InitRD erstellen

Beitrag von KBDCALLS » 24.09.2020 21:36:31

Kernel 4.12 ist ja schon etwas älter. Aber ich würde mal das Hilfesystem der Kernelsourcen befragen.
Das innerhalb der Kernelsourcen ausführen. Das weglassen der beiden Bindestriche ist kein Fehler. Ansonsten erhält man die Hilfe von make selbst.
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.

Antworten