Verzeichnis als initrd in QEMU verwenden

1602
kasperd

Gibt es eine Möglichkeit, ein Verzeichnis als initrd zu verwenden, wenn Sie QEMU starten?

Ich weiß, wie man die Markierungen -kernelund -initrdfür QEMU verwendet, um einen Kernel und Initrd zu booten, ohne zuerst ein bootfähiges Gerät mit diesen beiden Dateien erstellen zu müssen. Jetzt frage ich mich, ob es eine Möglichkeit gibt, den Schritt der Verwendung cpioder Initrd-Datei zu überspringen .

Normalerweise, wenn Änderungen an dem Verzeichnis vorgenommen werden, das alle Dateien für meine initrd enthält. Ich würde sie testen, indem ich renne

(cd initrd ; find . | cpio --quiet -R 0:0 -o -H newc) | gzip >initrd.gz qemu-system-i386 -kernel /boot/vmlinuz -initrd initrd.gz 

Kann ich das irgendwie erreichen, ohne die initrd-Datei im Dateisystem erstellen zu müssen?

Was ich bisher ausprobiert habe, war folgendes:

qemu-system-i386 -kernel /boot/vmlinuz -initrd initrd 

Dies führt dazu, dass der Kernel startet, aber beim Versuch, das Root-Dateisystem zu mounten, Panating

qemu-system-i386 -kernel /boot/vmlinuz -initrd <( cd initrd ; find . | cpio --quiet -R 0:0 -o -H newc) 

was dazu führt, dass QEMU stirbt mit:

qemu: error reading initrd /dev/fd/63: Illegal seek 
6

1 Antwort auf die Frage

0
Virtually Nick

Ich vermute es nicht - soweit ich aus der QEMU-Dokumentation entnehmen kann, wird das Lesen von Kernel oder Initrd von stdin nicht unterstützt. Dies ist im Wesentlichen das, was Sie mit der Weiterleitung versucht haben. Ich glaube, Qemu erwartet einen tatsächlichen Dateideskriptor (basierend auf dem / dev / fd / 63-Fehler), so dass Sie wahrscheinlich kein Glück haben. Sie könnten auf der Qemu-Mailingliste oder im IRC-Kanal nachfragen, ob dort spezielles Fachwissen vorhanden ist, um das zu erreichen, was Sie zu tun versuchen, aber ich schätze, Sie müssen das jedes Mal neu aufbauen.

Ich habe bereits eine Implementierung dieser Funktion an die Mailingliste gesendet. Es gab aber keine Antwort. kasperd vor 7 Jahren 1