initrd entpacken und wieder verändert zusammenbauen
Moin, wie der Betreff schon sagt: ich muss bei Leap 15.x die initrd für den PXE-Boot entpacken, verändern und dann wieder zusammenbauen. Gibt es da eine Anleitung zu oder kann mir jemand sagen, wie das geht? Danke. -- Mit freundlichen Grüßen Sebastian Gödecke
On 04.05.21 09:01, Sebastian Gödecke wrote:
Moin, wie der Betreff schon sagt: ich muss bei Leap 15.x die initrd für den PXE-Boot entpacken, verändern und dann wieder zusammenbauen. Gibt es da eine Anleitung zu oder kann mir jemand sagen, wie das geht?
Die initrd ist ein mit xz gepacktest cpio Archiv. Das sollte also im Prinzip so gehen: # auspacken xzcat /usr/share/tftpboot-installation/openSUSE-Leap-15.2-x86_64/boot/x86_64/loader/initrd
initrd.img mkdir working cd working cpio -i < ../initrd.img
# jetzt modifizieren ... # und wieder einpacken find . | cpio -H newc -o > ../initrd.tmp cd .. xz initrd.tmp > initrd.new Ungetestet, HTH, Ulf
Danke, gerade probiert und nun gleich mal testen. Btw macht das etwas,
wenn ich das auf einem ubuntu baue und dann wieder in ein LEAP packe?
Die datei ist nun doch größer als sie ursprünglich war. die Änderung
war minimal.
Am Di., 4. Mai 2021 um 12:19 Uhr schrieb Ulf Volmer
On 04.05.21 09:01, Sebastian Gödecke wrote:
Moin, wie der Betreff schon sagt: ich muss bei Leap 15.x die initrd für den PXE-Boot entpacken, verändern und dann wieder zusammenbauen. Gibt es da eine Anleitung zu oder kann mir jemand sagen, wie das geht?
Die initrd ist ein mit xz gepacktest cpio Archiv.
Das sollte also im Prinzip so gehen:
# auspacken xzcat /usr/share/tftpboot-installation/openSUSE-Leap-15.2-x86_64/boot/x86_64/loader/initrd
initrd.img mkdir working cd working cpio -i < ../initrd.img
# jetzt modifizieren ...
# und wieder einpacken find . | cpio -H newc -o > ../initrd.tmp cd .. xz initrd.tmp > initrd.new
Ungetestet, HTH, Ulf
-- Mit freundlichen Grüßen Sebastian Gödecke
On 04.05.21 13:45, Sebastian Gödecke wrote:
Danke, gerade probiert und nun gleich mal testen. Btw macht das etwas, wenn ich das auf einem ubuntu baue und dann wieder in ein LEAP packe? Die datei ist nun doch größer als sie ursprünglich war. die Änderung war minimal.
Sowohl xz als auch cpio sollten auf einem Ubuntu analog funktionieren, wird also vermutlich keinen Userschied machen. BTW: bitte bei Antworten an die Listen- Adresse schreiben, nicht an meine Mail Adresse. Viele Grüße Ulf
Ulf Volmer schrieb:
On 04.05.21 09:01, Sebastian Gödecke wrote:
Moin, wie der Betreff schon sagt: ich muss bei Leap 15.x die initrd für den PXE-Boot entpacken, verändern und dann wieder zusammenbauen. Gibt es da eine Anleitung zu oder kann mir jemand sagen, wie das geht?
Die initrd ist ein mit xz gepacktest cpio Archiv.
Soweit ich weiß, nur teilweise. Die Struktur ist etwas komplexer. Aber schon von daher würde ich die Erzeugung der initrd immer dem Tool überlassen, was genau dafür gepflegt wird, nämlich dracut, und dem halt die richtigen Qualifier übergeben, siehe meine andere Mail direkt an Sebastian. -- Manfred Härtel, DB3HM mailto:Manfred.Haertel@rz-online.de http://rz-home.de/mhaertel
On 04.05.21 14:42, Manfred Haertel, DB3HM wrote:
Ulf Volmer schrieb:
On 04.05.21 09:01, Sebastian Gödecke wrote:
Moin, wie der Betreff schon sagt: ich muss bei Leap 15.x die initrd für den PXE-Boot entpacken, verändern und dann wieder zusammenbauen. Gibt es da eine Anleitung zu oder kann mir jemand sagen, wie das geht?
Die initrd ist ein mit xz gepacktest cpio Archiv.
Soweit ich weiß, nur teilweise. Die Struktur ist etwas komplexer.
Das bitte etwas genauer ausführen. Bei anderen Distros hast Du recht, das besteht die initrd teilweise aus geschachteteln Archiven. Bei Suse ist m.W. meine Beschreibung korrekt. Viele Grüße Ulf
Ulf Volmer schrieb:
On 04.05.21 14:42, Manfred Haertel, DB3HM wrote:
Ulf Volmer schrieb:
On 04.05.21 09:01, Sebastian Gödecke wrote:
Moin, wie der Betreff schon sagt: ich muss bei Leap 15.x die initrd für den PXE-Boot entpacken, verändern und dann wieder zusammenbauen. Gibt es da eine Anleitung zu oder kann mir jemand sagen, wie das geht?
Die initrd ist ein mit xz gepacktest cpio Archiv.
Soweit ich weiß, nur teilweise. Die Struktur ist etwas komplexer.
Das bitte etwas genauer ausführen. Bei anderen Distros hast Du recht, das besteht die initrd teilweise aus geschachteteln Archiven. Bei Suse ist m.W. meine Beschreibung korrekt.
Mit dracut gibt es ja seit einiger Zeit einen Standard für initrd, den nach meiner Kenntnis mittlerweile auch alle Distris unterstützen. Früher gab es da alle möglichen Formate. Eine genaue Beschreibung des Formats kenne ich NICHT (die würde mich auch interessieren), aber die initrd meines OpenSuse15.2 kann ich schon mal NICHT mit "unxz" oder "xzcat" entpacken. Soweit ich weiß (ich lasse mich da aber gerne korrigieren), handelt es sich im Prinzip schon um ein mit xz (wunschweise aber auch mit anderen Komprimierern) komprimiertes cpio-Archiv, dem allerdings mindestens noch ein umkomprimiertes cpio-Archiv mit dem Microcode des Systems vorangestellt ist. Jedenfalls legt auch "lsinitrd" so etwas nahe. -- Manfred Härtel, DB3HM mailto:Manfred.Haertel@rz-online.de http://rz-home.de/mhaertel
On 04.05.21 18:49, Manfred Haertel, DB3HM wrote:
Ulf Volmer schrieb:
On 04.05.21 14:42, Manfred Haertel, DB3HM wrote:
Ulf Volmer schrieb:
On 04.05.21 09:01, Sebastian Gödecke wrote:
Moin, wie der Betreff schon sagt: ich muss bei Leap 15.x die initrd für den PXE-Boot entpacken, verändern und dann wieder zusammenbauen. Gibt es da eine Anleitung zu oder kann mir jemand sagen, wie das geht?
Die initrd ist ein mit xz gepacktest cpio Archiv.
Soweit ich weiß, nur teilweise. Die Struktur ist etwas komplexer.
Das bitte etwas genauer ausführen. Bei anderen Distros hast Du recht, das besteht die initrd teilweise aus geschachteteln Archiven. Bei Suse ist m.W. meine Beschreibung korrekt.
Mit dracut gibt es ja seit einiger Zeit einen Standard für initrd, den nach meiner Kenntnis mittlerweile auch alle Distris unterstützen. Früher gab es da alle möglichen Formate.
Eine genaue Beschreibung des Formats kenne ich NICHT (die würde mich auch interessieren), aber die initrd meines OpenSuse15.2 kann ich schon mal NICHT mit "unxz" oder "xzcat" entpacken.
Evtl. hast Du es verpaßt, dass es hier um die mitgelieferten PXE initrd ging? Die läßt sich mit xz entpacken: ulf@leap152-p330:~/working2> file /usr/share/tftpboot-installation/openSUSE-Leap-15.2-x86_64/boot/x86_64/loader/initrd /usr/share/tftpboot-installation/openSUSE-Leap-15.2-x86_64/boot/x86_64/loader/initrd: XZ compressed data Viele Grüße Ulf
Ulf Volmer schrieb:
On 04.05.21 18:49, Manfred Haertel, DB3HM wrote:
Ulf Volmer schrieb:
On 04.05.21 14:42, Manfred Haertel, DB3HM wrote:
Ulf Volmer schrieb:
On 04.05.21 09:01, Sebastian Gödecke wrote:
Moin, wie der Betreff schon sagt: ich muss bei Leap 15.x die initrd für den PXE-Boot entpacken, verändern und dann wieder zusammenbauen. Gibt es da eine Anleitung zu oder kann mir jemand sagen, wie das geht?
Die initrd ist ein mit xz gepacktest cpio Archiv.
Soweit ich weiß, nur teilweise. Die Struktur ist etwas komplexer.
Das bitte etwas genauer ausführen. Bei anderen Distros hast Du recht, das besteht die initrd teilweise aus geschachteteln Archiven. Bei Suse ist m.W. meine Beschreibung korrekt.
Mit dracut gibt es ja seit einiger Zeit einen Standard für initrd, den nach meiner Kenntnis mittlerweile auch alle Distris unterstützen. Früher gab es da alle möglichen Formate.
Eine genaue Beschreibung des Formats kenne ich NICHT (die würde mich auch interessieren), aber die initrd meines OpenSuse15.2 kann ich schon mal NICHT mit "unxz" oder "xzcat" entpacken.
Evtl. hast Du es verpaßt, dass es hier um die mitgelieferten PXE initrd ging? Die läßt sich mit xz entpacken:
Hm, zumindest fehlte mir die Phantasie, davon auszugehen, dass DORT die initrd ein anderes Format haben kann (und die dann auch vermutlich auch NICHT einfach mit dracut in veränderter Form erstellt werden kann). Den Sinn dahinter muss ich auch vermutlich nicht verstehen. Dann bitte ich um Entschuldigung, dass ich von falschen Voraussetzungen ausgegangen bin. -- Manfred Härtel, DB3HM mailto:Manfred.Haertel@rz-online.de http://rz-home.de/mhaertel
On 05.05.21 06:02, Manfred Haertel, DB3HM wrote:
Hm, zumindest fehlte mir die Phantasie, davon auszugehen, dass DORT die initrd ein anderes Format haben kann (und die dann auch vermutlich auch NICHT einfach mit dracut in veränderter Form erstellt werden kann). Den Sinn dahinter muss ich auch vermutlich nicht verstehen.
Warum die PXE initrd anders gehandhabt wird, ob das technische oder historische Gründe hat, entzieht sich auch meiner Kenntnis. Viele Grüße Ulf
Ulf Volmer schrieb:
Hm, zumindest fehlte mir die Phantasie, davon auszugehen, dass DORT die initrd ein anderes Format haben kann (und die dann auch vermutlich auch NICHT einfach mit dracut in veränderter Form erstellt werden kann). Den Sinn dahinter muss ich auch vermutlich nicht verstehen.
Warum die PXE initrd anders gehandhabt wird, ob das technische oder historische Gründe hat, entzieht sich auch meiner Kenntnis.
Nach genauerem Betrachten, da ich es verstehen wollte: Da *fehlt* einfach das ansonsten "vorgeschaltete" cpio-Archiv mit dem Microcode. Der scheint auf den ersten Blick auch nicht anderweitig geladen zu werden. Wahrscheinlich weil der beim Installieren nicht so wichtig ist. :-) lsinitrd funktioniert auch bei dieser initrd, also wurde die wohl auch mit dracut erzeugt und man könnte die vermutlich auch mit dracut verändert neu erzeugen. Da die Datei aber so ist, wie sie ist, ist Dein Ratschlag mit xz und cpio völlig korrekt für diese Datei, zumal eben das dracut-Kommando nicht bekannt ist. Für die "allgemeine" initrd ist dracut hingegen wohl das einzig zuverlässige Mittel. -- Manfred Härtel, DB3HM mailto:Manfred.Haertel@rz-online.de http://rz-home.de/mhaertel
Sebastian Gödecke schrieb:
Moin, wie der Betreff schon sagt: ich muss bei Leap 15.x die initrd für den PXE-Boot entpacken, verändern und dann wieder zusammenbauen. Gibt es da eine Anleitung zu oder kann mir jemand sagen, wie das geht?
Könnte es nicht einfacher sein, eine initrd für diesen Zweck eigens zu erzeugen, mit entsprechenden Qualifiern beim dracut-Kommando? -- Manfred Härtel, DB3HM mailto:Manfred.Haertel@rz-online.de http://rz-home.de/mhaertel
participants (3)
-
Manfred Haertel, DB3HM
-
Sebastian Gödecke
-
Ulf Volmer