Установка эмулятора аппаратного обеспечения различных платформ QEMU и гиппервизора KVM и работа с ними в консольно-терминальном режиме (продолжение) в Ubuntu/Linux Mint ⚡️ ⚡️
Данная статья является продолжением, опубилкованной в нашем блоге ранее статьи с той лишь разницей, что в этой статье пойдёт речь о работе данной связки софта в консольно-терминальном режиме. В этом режиме можно выполнять всё, что в GUI, а при получении навыков, даже быстрее.
Итак, давайте начнём с Установки всех необходимых пакетов для дальнейшей работы, если у вас они ещё не установлены. Если вы уже всё устанавливали из предыдущей статьи, то пропустите этот пункт.
Открываем Терминал (Ctrl+Alt+T), копируем или прописываем следующий код и жмём на Enter:
Далее, везде, ниже, где в кодах будет написано ваше_имя_Пользователя, не забываем вписать его - ваше Имя Пользователя в системе, например: vasyapupkin!!!
Имя VM (виртуальная машина - далее ВМ) в данном примере её создания из ubuntu-22.04-desktop-amd64.iso-файла (вы можете использовать любой образ, любой ОС) будет ubuntu, но вы можете обозвать ВМ, как вам угодно, на ваш вкус и цвет...
И сразу же, чтобы в дальнейшем, при создании/старте ВМ (Виртуальной машины) не было ошибки:
Permission denied (отказано в доступе)
к созданным ниже каталогу и подпапке в нём libvirt/images, устанавливаем правильные ACL-права доступа для Пользователя - libvirt-qemu в Домашнем каталоге: (вы спросите: - А для чего?! А для того, чтобы была возможность создавать сколько угодно ВМ и любого размера, что нельзя сделать в каталоге по умолчанию /var/lib/libvirt/images, т.к., если вы разметили свой жёсткий диск по феншую, а именно на корневой каталог, как правило ограниченного размера и Домашний каталог, как правило всё оставшееся, большее место на жёстком диске)
Теперь создаём в Домашнем каталоге папку (каталог) libvirt и подпапку images (или с др. названиями, удобными вам) командой:
mkdir -p libvirt/images
Создаём pool (далее - пул) с именем default в созданных выше в Домашнем каталоге папке (каталоге) libvirt и подпапке images: (вы можете задать любое, приятное вашему глазу имя пула и тогда далее в кодах ниже его и надо будет прописывать вместо default, но при первой установке/старте ВМ в пул с придуманным вами именем, пулdefault будет создан в любом случае автоматически, но в каталоге по умолчанию /var/lib/libvirt/images помимо придуманного вами)
virsh pool-define-as --name default --type dir --target /home/ваше_имя_Пользователя/libvirt/images
Запускаем созданный pooldefault:
virsh pool-start default
Помещаем созданный pooldefault в автозагрузку, чтобы после перезагрузки системы он стартовал вместе с ней:
virsh pool-autostart default
Создание ВМ ubuntu.
Как и при обычной установке ОС, есть 2 (два) способа установки.
1.Создание ВМ в режиме UEFI: (расписывать роль каждого префикса не буду, virt-install --help в помощь. В коде size=30 - это размер в Гб самой ВМ, --ram=2048 - это размер оперативки, --vcpus=2 - это виртуальное количество ядер процессора, --destroy-on-exit - это выключение установщика после выхода из системы или перезагрузки, чтобы процесс не висел в активном режиме, & - оставляет процесс в фоновом режиме, позволяя и дальше пользоваться этой же сессией Терминала (просто нажимаете на Ctrl+C). Вы можете изменять эти значения на свой вкус и цвет. Пути папочек (каталогов) у вас могут быть свои и отличаться от кода здесь...) a.)
Старт (запуск) ВМ ubuntu: (ещё раз напомню, что опперанд & в конце команд даёт возможность далее пользоваться этим же окном Терминала, например, для коннекта/дисконекта флешки, создания скриншотов ВМ. Просто жмёте в активном этом окне Терминала на Ctrl+C, ВМ продолжает работать, а вы далее продолжаете в Терминале делать, всё что угодно...)
a.) - запуск ВМ
virsh start ubuntu
b.) - старт ВМ, если есть необходимость подключить флешку в ней (смотрите ниже в разделе Подключение/выключение флешки)
Подключение/выключение флешки. Определение номера флешки (Device):
lsusb
В выводе Терминала ищем запись Flash Drive и слева от неё, в этой же строке секцию Device 00X: (здесь Device 004:), где 00Х (здесь 004) - это и есть номер вашей флешки. Запоминаем (записываем) его:
Создание xml-файла в Домашнем каталоге хоста: (не забываем вместо номер_флешки в коде вставить её номер из вывыда выше, только без двух нулей, т.е. в данном случае 4)
Для чего? Ну, например, если вы пишете статью об Установке того или иного дистрибутива для своего блога и сопровождаете её скриншотами процесса установки и дальнейшей работы самого дистрибутива или просто для себя, чтобы потом визуально смотреть процесс установки шаг за шагом. Да, для чего угодно...
И ещё один немаловажный фактор! Если делать скриншоты в Графическом режиме (GUI), то скриншоты будут с рамками окна и полосами меню и потом придётся редактировать в редакторе изображений, дабы удалить всё это. А таким способом, скриншот создаётся без рамок и полос Менеджера виртуальных машин, просто активное окно дистрибутива, как есть, без необходимости его редактирования:
1.Создание скриншотов активного окна ВМ в выбранную папку в QEMU/KVM в формате .ppm. Вы спросите, а почему именно в формате .ppm, если можно сразу в .png или .jpg и т.д.? Дело в том, что, да, можно, но! Скриншот сохраняется и даже просматривается в Просмотрщике изображений, но если вы его попытаетесь куда-нибудь загрузить, например в свой блог, то вы получите ошибку вроде такой:
Ошибка:
Сбой при загрузке:
Загружать можно только изображения и видео
И если внимательно прочесть вывод Терминала после выполнения команды ниже, то всё сразу будет понятно, а именно то, что скрин сохраняется в экстра-портативном pixmap-формате:
Pixmap-формат:
$ virsh screenshot ubuntu Изображения/`date +%Y-%m-%d-%T`.jpg Screenshot saved to Изображения/2022-05-14-09:52:24.jpg, with type of image/x-portable-pixmap
И какое бы расширение вы не поставили, а по умолчанию утилита screenshot из KVM работает с .ppm-форматом, результат будет один и тот же - все скрины сохранятся в экстра-портативном pixmap-формате, а значит будет та же ошибка при их загрузке на какой-либо ресурс. Поэтому сохранять скриншоты будем именно в .ppm-формате (по умолчанию), а потом из .ppm уже конвертировать в .png, но уже в полноценный формат изображения, а значит их можно будет без проблем загружать куда угодно.
А по сему, делаем скриншоты именно в формате .ppm (делаем это в этом же Терминале, просто нажав на Ctrl+C, чтобы активировать приглашение командной строки): (каждое новое выполнение команды делает скриншот со своим уникальным именем именно активной, рабочей области ОС, без рамок, панелей - только рабочая область, что удобно для создание статей и мануалов по установке той или иной ОС)
2. После сохранения скриншотов в формате .ppm переходим в папку со скриншотами (здесь Изображения) и массово (все сразу) конвертируем .ppm-файлы в .png-формат:
cd Изображения; mogrify -format png *.ppm
3. После массовой конвертации файлов в .png-формат выполняем массовое переименование сконвертированных файлов по порядковым номерам:
a=0; for i in *.png; do let a+=1; mv $i $a.png; done
В результате чего каждый файл будет под своим цифромвым номером: - 1.png, 2.png, 3.png и т.д...
4. После массового переименования файлов удаление не нужных более .ppm-файлов и возврат в Домашний каталог:
rm *.ppm; cd
В результате, в папке Изображения остануться только скриншоты в формате .png, под порядковыми номерами... Однострочник всего этого с п.1 по п.4:
cd Изображения; mogrify -format png *.ppm; a=0; for i in *.png; do let a+=1; mv $i $a.png; done; rm *.ppm; cd
И на последок, полное Удаление созданных раздела (vol) ВМ ubuntu и пула (pool) default (или любых других, созданных вами).
1. Удаление созданного раздела (vol) ВМ ubuntu (или любого другого, созданного вами): (при этом пул (pool) остаётся для использования)
2. Удаление созданного пула (pool) default (или любого другого, созданного вами): (если удалить пул (pool) без предварительного удаления созданного раздела (vol) ВМ, то все созданные в пуле (pool) разделы (vol) ВМ также автоматически будут удалены!)
virsh pool-undefine default
В принципе, на этом можно и закончить...
Мы с вами ознакомились на практике с основными, базовыми принципами Установки и работы с эмулятором аппаратного обеспечения различных платформ QEMU и гиппервизора KVM и работы с ними в консольно-терминальном режиме.
P.S. Если у вас появились вопросы или мнения по данной статье, обсудить их можно на нашем форуме: