6

Есть ли способ использовать каталог в качестве initrd при загрузке QEMU?

Я знаю, как использовать флаги -kernel и -initrd для QEMU для загрузки ядра и initrd без необходимости сначала создавать загрузочное устройство, содержащее эти два файла. Теперь мне интересно, есть ли способ пропустить шаг использования cpio для создания файла initrd.

Обычно при внесении изменений в каталог, содержащий все файлы для моего initrd. Я бы проверил их, запустив

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

Можно ли как-то добиться того же, не создавая файл initrd в файловой системе?

До сих пор я пробовал следующее:

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

в результате ядро запускается, но при попытке смонтировать корневую файловую систему.

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

в результате QEMU умирает с:

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

1 ответ1

0

Я подозреваю, что нет - насколько я могу судить по документации QEMU, он не поддерживает чтение ядра или initrd из stdin, что, по сути, вы пытались сделать с помощью перенаправления. Я полагаю, что Qemu ожидает фактический дескриптор файла (основанный на ошибке /dev /fd /63), так что вам, вероятно, не повезло. Вы можете спросить в списке рассылки Qemu или на канале IRC и посмотреть, есть ли какой-то конкретный опыт, чтобы выполнить то, что вы пытаетесь сделать, но я предполагаю, что вам придется восстанавливать его каждый раз.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .