hi,
liefert bei Google genau einen Treffer und da heißt es: "mach das nicht, es geht ohne viel besser" Das war ja immer mein Reden, aber jetzt könnte ich eine gebrauchen und finde nur Tipps, wie man mkinitrd austrickst und so was. Das ist mir aber viel zu kompliziert und auch mit Kanonen auf Spatzen geschossen; ich brauche keine Automatik, ich weiß selbst, was eingebaut werden soll. Kennt jemand zufällig ein Howto "initrd from scratch"?
Ich möchte nämlich nur eine Art Boot Manager haben, dem ich ein paar Tricks beibringen kann. Zum Beispiel sollte er die root-Pastition aus einem tar.gz wieder herstellen oder die Uhr aus einer seriell angebundenen Quelle stellen oder einen Clone des Systems erzeugen können. Natürlich wäre es am einfachsten, dafür ein komplettes Wartungs-System zu booten. Umgekehrt kann man diese Funktionen wohl auch in einem einzigen statischen Programm unterbringen, das mit "init=" gestartet wird. Naja, eine initrd wäre eben der Mittelweg, da müsste ich nicht tar oder wenigstens "cp -a" nachbauen.
"initrd for dummies"
"initrd for dummies"
Beware of programmers who carry screwdrivers.
- r900
- Beiträge: 1053
- Registriert: 09.10.2011 20:06:11
- Lizenz eigener Beiträge: GNU Free Documentation License
- Wohnort: Stockholm
Re: "initrd for dummies"
Wenn du eh schon weißt was rein muss wozu brauchst du dann ein howto?
Wenn du alle Dateien zusammen hast führst du im root deines zukünftigen initramfs folgenden Befehl aus:
und fertig ist dein komprimiertes initramfs.
Wenn du alle Dateien zusammen hast führst du im root deines zukünftigen initramfs folgenden Befehl aus:
Code: Alles auswählen
find . -print -depth | cpio -Hnewc -ov | gzip > ../initrd.img
Re: "initrd for dummies"
Danke, du bist mein Held! Das war ein großer Schritt auf dem Weg zur Weltherrschaft
Dass das so einfach geht, da fragt man sich schon, warum die meinen ersten Versuche so völlig misslungen sind. Der nächste Stolperstein wird dann wohl pivot_root(2)...
Ach ja, eine kleine Ungereimtheit gibt es noch: ich muss "-depth" weglassen, sonst funktioniert "cpio --extract" nicht und auch der Kernel findet init nicht.
Dass das so einfach geht, da fragt man sich schon, warum die meinen ersten Versuche so völlig misslungen sind. Der nächste Stolperstein wird dann wohl pivot_root(2)...
Ach ja, eine kleine Ungereimtheit gibt es noch: ich muss "-depth" weglassen, sonst funktioniert "cpio --extract" nicht und auch der Kernel findet init nicht.
Beware of programmers who carry screwdrivers.
- r900
- Beiträge: 1053
- Registriert: 09.10.2011 20:06:11
- Lizenz eigener Beiträge: GNU Free Documentation License
- Wohnort: Stockholm
Re: "initrd for dummies"
Ging mir nicht anders. Zuerst wusste ich nicht dass man die Option "-Hnewc" braucht und dann habe ich es mit xz gepackt und da muss man auch noch eine spezielle Einstellung wählen. Trial and error..cosmac hat geschrieben: Dass das so einfach geht, da fragt man sich schon, warum die meinen ersten Versuche so völlig misslungen sind.
Jetzt wo du es sagst.. Auf der info-page von cpio steht das mit --depth, aber ich glaube die Option hatte ich tatsächlich nicht benutzt. Entpacken geht recht einfach so:cosmac hat geschrieben: Ach ja, eine kleine Ungereimtheit gibt es noch: ich muss "-depth" weglassen, sonst funktioniert "cpio --extract" nicht und auch der Kernel findet init nicht.
Code: Alles auswählen
zcat ../initrd.img | cpio -idv
Nachtrag: Jetzt merke ich was. Wenn man find die Option "-depth" mitgibt muss man beim Entpacken mit cpio auch die Option "-d" benutzen. Also "-depth" bei find weglassen und "-d" cpio sicherheitshalber trotzdem mitgeben kann nicht schaden. Außerdem "-print0" um Probleme mit sonderbaren Dateinamen zu vermeiden.
Code: Alles auswählen
find . -print0 | cpio -0ov -H newc | gzip > ../initrd.img
zcat ../initrd.img | cpio -idv