#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 также является выбором для легких