Разработки проекта PuppyRus > Программирование и компиляция

Cli оболочка для быстрого запуска ISO с помощью Qemu/Kvm.

(1/20) > >>

totiks2012:
Хочу представить скрипт который позволит быстро запустить iso образ с помощью Qemu/Kvm.
Скрипт с помощью peco позволяет выбрать интересующий вас iso образ, проверяет если образ вирт. машины создан ранее, запускает его, если нет создаёт, в опциях Qemu задействована опция запуска звуковой карты, то есть звук в гостевой системе должен работать.
Условие все iso образы должны быть в каталоге ~/ISO  ,(в моём скрипте ISO заглавными буквами)
Зависимости для работы  скрипта :
peco
qemu-system-x86
qemu-utils
Процессор вашего компьютера должен поддерживать систему виртуализации KVM.
-------------------------
финальная версия cfQemu
cfQemu_23_totiks_fin_gpt.sh
-------------------
https://disk.yandex.ru/d/XFcWzcYxCYMBEg
-----------------
-------------------------
лог изменений:
Изменена более структурирована логика скрипта, причесал код.
Изменена опция подключения usb к qemu
что умеет скрипт и как работать с ним
1. Можно выбрать пункт меню с включенным оптическим приводом<Опт-Прив_вкл>, тогда создаёт меню из списка всех Iso из каталога ~/ISO , и выбрать ISO образ для загрузки, а так же попутно создаёт виртуальный образ жесткого диска qcow2
2. Можно выбрать пункт меню с выключенным оптическим приводом<Опт-Прив_выкл>, выводит меню списка iso образов,выбираем интересующий нас iso,и после если находит установленную на образ жесткого диска qcow2 систему, грузится с неё, если нет- грузится с виртуального  оптического привода.
3. И теперь в оба режима если подключить отформатированую ,до запуска скрипта, флэшку , то можно использовать для установки на неё дистрибутива прямо из гостевой сессии(спасибо еще раз    krasnyh). В гостевой сессии флэшка жестко смонтирована, и потому не доступна для форматирования, то есть её нужно подготовить до запуска скрипта и QEMU. Хочу добавить скрипт полностью автоматизирован, то есть умеет в автомонтирование флэшек, ничего руками в терминал не нужно вводить, воткнули флэшку, выбираем соответствующий пунк меню , и дальше скрипт всё делает сам.
4. Если дистрибутив установлен на флэшку с одним разделом, то есть на всю , можно протестировать её загрузку в виртуальной машине QEMU , используя пункт меню <Загрузка_с_флэшки_без_метки>
5. Если дистрибутив установлен на флэшку с несколькими разделами, например загрузчик находится в первом разделе, а ресурсы дистрибутива на втором, то создаем на  первом разделе с загрузчиком, метку QFlag , и запускаем для тестирования пункт меню <Загрузка_с_флэшки_с_меткой_QFlag>

ниже устаревший код который на всякий пожарный оставил:
--------------------
cfQemu_19_totiks_gpt.sh
-------------------
https://disk.yandex.ru/d/FrL4muv2aAZZYw
-------------------

Запускаем скрипт, peco   ,откроет список с выбором опций оптического привода, после выбора опции для привода, откроется список с  iso , выбираем нужный скажем my.iso, жмем ввод, образ iso будет запущен в Qemu, если захотим позже опять запустить этот образ вирт машины достаточно опять  запустить этот скрипт, и запустить этот же  my.iso, скрипт увидит что образ В.М. уже создан и при условии что раздел настроен как boot , и на него  установлена система запустит его. Образы В.М хранятся в каталоге со скриптом, скрипт можно   повесить на горячую клавишу, получится песня. Вроде получилось хорошо.

sfs:
peco = консоль. Подобный скрипт удобнее иметь в виде GUI. Оптимально и так и так.
В прошлой вашей теме я уже писал про yad и ntf. Если что-то не понятно - готов помочь

totiks2012:
Qemu может создать и подключить swap файл, вот тут начались сложности, и я решил отказатся от этого, можно например создать swap раздел в гостевой ситеме, и если система имеет возможность сохранения сесии, а в моём случае в качестве теста была vaniladpup-9-x86, то swap раздел сохранится, но есть системы которые не имеют сохранения сессии, и вот для них такая опция была бы полезной. Сложности какие 
вот что на генерировала машина
--- Код ---
#!/bin/bash

# Задаем переменные для размера оперативной памяти, жесткого диска и swap файла
MEMORY_SIZE=2048
HDD_SIZE=20G
SWAP_SIZE=2G

# Используем peco для выбора файла ISO из каталога ~/ISO
ISO_FILE=$(find ~/ISO -name "*.iso" | peco)

# Используем имя файла ISO для создания имени виртуального жесткого диска и swap файла
BASENAME=$(basename $ISO_FILE .iso)
HDD_FILE="$BASENAME.qcow2"
SWAP_FILE="$BASENAME.swap"

# Проверяем, существует ли файл с именем виртуального жесткого диска
if [ ! -f "$HDD_FILE" ]; then
  # Если файл не существует, то создаем виртуальный диск с заданным размером
  qemu-img create -f qcow2 "$HDD_FILE" $HDD_SIZE
fi

# Проверяем, существует ли файл с именем swap файла
if [ ! -f "$SWAP_FILE" ]; then
  # Если файл не существует, то создаем виртуальный диск для swap файла с заданным размером
  qemu-img create -f raw "$SWAP_FILE" $SWAP_SIZE

  # Форматируем виртуальный диск для swap файла в формат swap
  mkswap "$SWAP_FILE"
fi

# Запускаем QEMU с заданными параметрами и подключаем swap файл к виртуальной машине
qemu-system-x86_64 \
  -boot d \
  -cdrom "$ISO_FILE" \
  -hda "$HDD_FILE" \
  -m $MEMORY_SIZE \
  -display gtk \
  -device virtio-scsi-pci \
  -device scsi-hd,drive=swap \
  -drive file="$SWAP_FILE",format=raw,id=swap \
  -enable-kvm

--- Конец кода ---

вот ответ терминала
--- Код ---
Formatting 'vanilladpup-9.3.19.qcow2', fmt=qcow2 cluster_size=65536 extended_l2=off compression_type=zlib size=21474836480 lazy_refcounts=off refcount_bits=16
Formatting 'vanilladpup-9.3.19.swap', fmt=raw size=2147483648
./cQemu.sh: line 28: mkswap: command not found
qemu-system-x86_64: warning: dbind: AT-SPI: Error retrieving accessibility bus address: org.freedesktop.DBus.Error.ServiceUnknown: The name org.a11y.Bus was not provided by any .service files
qemu-system-x86_64: -device scsi-hd,drive=swap: Drive 'swap' is already in use because it has been automatically connected to another device (did you need 'if=none' in the drive options?)

--- Конец кода ---
из ответа видно что нет команды mkswap , при этом util-linux в которых содержится эта команда у меня установлены, в итоге я решил отказатся от своп файла, ибо пирог лучше кушать мелким откусыванием.

totiks2012:

--- Цитата: sfs от 04 Май 2023, 11:13:56 ---peco = консоль. Подобный скрипт удобнее иметь в виде GUI
--- Конец цитаты ---
Ну мне Cli просто ближе, но так-то если нужен на yad, попрбую и на yad.
upd: что такое ntf? если notify-send то  ... -->
upd2: Исходя из соображений которые привел sfs, также опубликовал Gui утилиту для запуска iso в виртуальной машине  Qemu/Kvm

sfs:

--- Цитата: totiks2012 от 04 Май 2023, 11:41:56 ---если нужен на yad
--- Конец цитаты ---
лично мне - нет. Мне в vbox удобнее

--- Цитата: totiks2012 от 04 Май 2023, 11:41:56 ---что такое ntf?
--- Конец цитаты ---
Моя обертка вокруг yad

Навигация

[0] Главная страница сообщений

[#] Следующая страница

Перейти к полной версии