Как сохранить изменения в образе виртуальной машины QEMU?

#linux #virtual-machine #virtualization #qemu #kvm

Вопрос:

Я хочу использовать QEMU для эмуляции ОС Linux и создания виртуальной машины (VM) для крошечного ядра Linux (TCL). Я использовал следующие команды для запуска виртуальной машины TCL через QEMU.

Сначала я создал образ виртуальной машины в формате qcow2 (я также пытался создать .img образ, но, похоже, он имеет тот же эффект).:

 qemu-img create -f qcow2 TCLcoredisk.qcow2 1G
 

Затем я загрузил TCL с помощью эмулятора QEMU. Это хорошо работает, и я могу выполнять некоторые операции в виртуальной машине (например, создавать новый каталог и файл, монтировать файловую систему).

 qemu-system-x86_64 -boot d 
    -cdrom Core-current.iso 
    -m 500 
    -hda TCLcoredisk.qcow2 
    -nographic 
    -enable-kvm 
    -curses

 

Проблема заключалась в том, что после завершения работы QEMU (pkill процесса QEMU) я не могу сохранить изменения, внесенные при загрузке предыдущего файла образа. Хуже того, я даже не могу загрузить образ. Я могу загрузиться только -cdrom с файлом .iso изображения, но изменения будут потеряны. Однако, поскольку я смонтировал файловую систему во вновь созданном каталоге во время первой загрузки, вся информация о первой загрузке была потеряна, если я снова загрузил файл TCLcoredisk.qcow2 образа. Я использовал следующую команду для загрузки этого существующего файла образа:

 qemu-system-x86_64 -drive "file=TCLcoredisk.qcow2,format=qcow2" 
    -m 500 
    -nographic  
    -enable-kvm 
    -curses
 

Я понял ошибку Nothing to boot: No such file or directory (http://ipxe.org/2d03e13b) . Моя хост-машина поддерживает только командную строку без использования графических интерфейсов, поэтому я использовал -nographic и -curses . Я также хочу использовать TCL только в командной строке. Я думаю, что мне больше не нужно использовать файл .iso изображения после первой загрузки. Есть ли способ правильно загрузить существующий файл образа и сохранить изменения, внесенные при предыдущей загрузке? Спасибо!

Комментарии:

1. Следующая загрузка должна быть -boot c загружена с жесткого диска вместо boot -d . Ты можешь попробовать ??

2. @nhatnq Спасибо. Я попытался использовать -boot c , но у него все еще была та же ошибка Nothing to boot: No such file or directory (http://ipxe.org/2d03e13b) , и No bootable device. мне интересно, есть ли способ проверить, была ли ОС и мои изменения записаны в файл изображения. Я не уверен, была ли проблема связана с файлом изображения или с неправильной командой. Должна ли следующая команда загрузки включать сетевые конфигурации и/или другие конфигурации?

Ответ №1:

Было указано, что в FAQ Крошечное ядро Linux основано только на оперативной памяти. Таким образом, вы не можете использовать постоянную файловую систему

Какова архитектура загрузки?

Tinycore всегда загружается в оперативную память. Этот уникальный способ имеет ряд преимуществ, таких как 100% работоспособная загрузка по USB, потрясающая скорость и возможность загрузки без доступа к загрузочному устройству после загрузки. Например, вы можете выхватить USB-накопитель сразу после загрузки initrd. https://distro.ibiblio.org/tinycorelinux/faq.html#arch

Вам нужно будет использовать другой дистрибутив

Комментарии:

1. Спасибо. Отличная мысль. Есть ли способ для QEMU справиться с этим случаем (т. Е. Сохранить ОС на основе оперативной памяти)?

2. @Джеффри Я думаю, что нет, если вы не можете попробовать другой дистрибутив, который поддерживает дисковые пространства, например Ubuntu, Fedora. Alpine также является выбором для легких