mkinitramfs

Welches Modul/Treiber für welche Hardware, Kernel compilieren...
Antworten
soeri
Beiträge: 11
Registriert: 18.08.2013 15:58:15

mkinitramfs

Beitrag von soeri » 11.05.2014 10:56:27

Hi,
ich weiß nicht, ob ich hier im richtigen Thema bin...
Ich bin in der Vorbereitung zur LPI I und habe ein Problem mit der Lösung zu folgender Frage:

Der Befehl mkinitramfs erzeugt automatisch ein Image einer Initial-Ramdisk. Die Initial-Ramdisk besteht jedoch nur aus einer Datei, deren Inhalte (z. B. enthaltene Befehle, aufrufbare Module etc.) nicht direkt auslesbar sind. Mit welcher Option für den Befehl mkinitramfs kann man auf die Informationen der gespeicherten Inhalte der Initial-Ramdisk nach deren Erzeugung zurückgreifen und wie heißen die Verzeichnisse,
in denen die die Inhalte der Initial-Ramdisk während deren Erzeugung zwischengespeichert werden?

danke fürs schauen
Söri

DeletedUserReAsG

Re: mkinitramfs

Beitrag von DeletedUserReAsG » 11.05.2014 11:58:11

Im Fall von Wheezy ist’s ein gzip-komprimiertes cpio-Archiv. Entsprechend ließe es sich z.B. mittels cat file | gzip -d | cpio -i auspacken und analog wieder zusammenpacken. Andere Distris/Releases können mit anderen Methoden arbeiten (z.B. gepacktes FS-Image).

Edit: Wenn’s um LPIC geht, ist sicher die Manpage einen Blick wert. Dort steht eigentlich alles drin ….

soeri
Beiträge: 11
Registriert: 18.08.2013 15:58:15

Re: mkinitramfs

Beitrag von soeri » 11.05.2014 13:23:28

Hi niemand,
danke für die schnelle Antwort.
Ich habe natürlich in der man zu initramfs geschaut, dort gibt es 4 Optionen mit -o und cpio kann ich mir das anschauen, so wie Du ja auch schreibst.
Ich bin nur nicht sicher, ob das so richtig ist, da cpio doch mit mkinitramfs nichts zu tun hat?!

grüße
Söri

DeletedUserReAsG

Re: mkinitramfs

Beitrag von DeletedUserReAsG » 11.05.2014 13:25:54

Code: Alles auswählen

niemand@cubietruck:~$ apt-cache depends initramfs-tools
initramfs-tools
  Hängt ab von: klibc-utils
  Hängt ab von: cpio
[…]

niemand@cubietruck:~$ file /usr/sbin/mkinitramfs 
/usr/sbin/mkinitramfs: POSIX shell script, ASCII text executable
Kurz: es ist ein Script, das diverse andere Sachen hernimmt (unter Anderem halt cpio) und mit diversen Parametern bestückt. Theoretisch könnte man die initrd auch ebensogut manuell aus einer Shell heraus erstellen.

soeri
Beiträge: 11
Registriert: 18.08.2013 15:58:15

Re: mkinitramfs

Beitrag von soeri » 11.05.2014 19:25:38

Danke, nun bin ich sicher.

gruß
soeri

borgelite
Beiträge: 2
Registriert: 02.08.2016 09:11:42

Re: mkinitramfs

Beitrag von borgelite » 02.08.2016 09:15:04

Die frage ging aber noch weiter. "und wie heißen die Verzeichnisse,
in denen die die Inhalte der Initial-Ramdisk während deren Erzeugung zwischengespeichert werden?" hat die schon jemand beantwortet. müste ja /etc /lib /sbin / bin sein oder?

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: mkinitramfs

Beitrag von rendegast » 02.08.2016 11:18:45

"und wie heißen die Verzeichnisse,
in denen die die Inhalte der Initial-Ramdisk während deren Erzeugung zwischengespeichert werden?"

Code: Alles auswählen

$ cat /usr/sbin/mkinitramfs | grep temp
DESTDIR="$(mktemp -d ${TMPDIR:-/var/tmp}/mkinitramfs_XXXXXX)" || exit 1
__TMPCPIOGZ="$(mktemp ${TMPDIR:-/var/tmp}/mkinitramfs-OL_XXXXXX)" || exit 1
__TMPEARLYCPIO="$(mktemp ${TMPDIR:-/var/tmp}/mkinitramfs-FW_XXXXXX)" || exit 1

niemand hat geschrieben: mittels cat file | gzip -d | cpio -i auspacken
Ich mache das mit einem Link so

Code: Alles auswählen

$ ll /boot/*3.16*
lrwxrwxrwx 1 root root       25 Feb  8  2015 /boot/3.16.0-4-amd64.cpio.gz -> initrd.img-3.16.0-4-amd64
...
-rw-r--r-- 1 root root 17372971 Jul 14 10:21 /boot/initrd.img-3.16.0-4-amd64
Gängige Dateisystemmanager (midnight-commander) entpacken das Ding dann on-the-fly.

Evtl. Problem,
bei Verwendung von Debianintel-microcode und Einstellung
IUCODE_TOOL_INITRAMFS=auto (gegebenenfalls, kernelabhängig) oder
IUCODE_TOOL_INITRAMFS=early
wird ein cpio mit der intel-cpu-Firmware vor die eigentliche initrd gesetzt und muß zuvor abgeschnitten werden:

Code: Alles auswählen

$ 7z l /boot/initrd.img-3.16.0-4-686-pae 

7-Zip 9.20  Copyright (c) 1999-2010 Igor Pavlov  2010-11-18
p7zip Version 9.20 (locale=en_US.UTF-8,Utf16=on,HugeFiles=on,1 CPU)

Listing archive: /boot/initrd.img-3.16.0-4-686-pae

--
Path = /boot/initrd.img-3.16.0-4-686-pae
Type = Cpio

   Date      Time    Attr         Size   Compressed  Name
------------------- ----- ------------ ------------  ------------------------
2016-07-25 04:22:37 D....            0            0  kernel
2016-07-25 04:22:37 D....            0            0  kernel/x86
2016-07-25 04:22:37 D....            0            0  kernel/x86/microcode
2016-07-25 04:22:37 .....        40960        40960  kernel/x86/microcode/GenuineIntel.bin
------------------- ----- ------------ ------------  ------------------------
                                 40960        40960  1 files, 3 folders
Das ist aber unzureichend, daher

Code: Alles auswählen

$ cpio -t < initrd.img-3.16.0-4-686-pae
kernel
kernel/x86
kernel/x86/microcode
kernel/x86/microcode/GenuineIntel.bin
82 blocks
Das firmware-cpio ist also 82 Blöcke resp. 41984 Byte lang.
In einem Skript mache ich das so

Code: Alles auswählen

...
    INITRD=$(cpio -t < $i 2>&1 | awk '$2=="blocks" {print $1}')

    dd if=$i skip=$INITRD > $i.initrd-tail.cpio.gz
...
(Debianamd64-microcode packt seine firmware IN die initrd)
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

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

Re: mkinitramfs

Beitrag von KBDCALLS » 02.08.2016 20:27:15

Anscheinend gibst da keine feste Größe . Bei mit ist sie nur 44 Block groß.

Code: Alles auswählen

matthias@tatjana:/boot$ cpio -t < initrd.img-4.6.0-0.bpo.1-amd64 
kernel
kernel/x86
kernel/x86/microcode
kernel/x86/microcode/GenuineIntel.bin
44 blocks
Die Microcode Dateien für Intel sind zwischen 2048 und 30720 Bytes groß.
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