QEMU для начинающих.

Модератор: adventurer

Аватара пользователя

Автор темы
serg666
Сообщения: 690
Зарегистрирован: 26 фев 2013, 21:15

QEMU для начинающих.

#1

Сообщение serg666 » 10 ноя 2019, 23:26

Поговорим о том как установить Windows 10 в виртуальную машину и использовать на любом компьютере

Несмотря на то что последние лет 15 я использую только линукс, иногда возникает потребность в винде, в основном это касается случаев прошивки firmware в какую либо аппаратуру. Я решил купить себе внешний ssd, установить на него линукс с личными файлами, настройками, паролями и брать его в командировку вместо ноубука (или вместе с ним). Линукс это хорошо, но винда нужна для перепрошивки аппаратуры , которую мне приходится налаживать. Итак цель - поставить винду в виртуальную машину, прокинуть COM порт, прокинуть USB флешку(и), организовать обмен файлами/буфером обмена между хостом (линукс) и гостевой машиной (виндоуз 10) и при этом сохранить максимальную совместимость с неизвестно какими физическими компьютерами, где я все это буду загружать.

1) Что нам понадобится:
  • Скачать с сайта майкрософта установочный образ Windows 10 (гугл или яндекс в помощь)
  • Скачать образ диска с драйверами для виртуальной машины virtio-win iso c этой страницы
  • Установить в системе пакеты qemu, seabios, virt-viewer (может еще что, мне уже сейчас не понять).
Мы не будем использовать всякие GUI менеджеры виртуальных машин, а будем использовать командную строку и минимум опций qemu для большей совместимости и переносимости.

2)Первым делом надо создать виртуальный диск для гостевой машины, это делается командой
qemu-img create -f qcow2 -o compat=1.1 windows-10-vm.qcow2 100G
здесь написано создать диск в формате qcow2 (родном и наиболее продвинутом формате qemu), версия этого формата 1.1, диск будет в файле windows-10-vm.qcow2 и иметь максимальный объем 100GB.
После выполнения этой команды у вас появится маленький файл:
196 -rw-r--r-- 1 user user 198208 Nov 10 20:52 windows-10-vm.qcow2
3) Можно приступать к установке винды, это делается командой
qemu-system-x86_64-spice -enable-kvm -machine type=q35,accel=kvm -m 4096 -cpu qemu64 -smp 4 -vga qxl -usb -device usb-tablet -hda windows-10-vm.qcow2 -cdrom /home/user/Downloads/Win10_1903_V2_EnglishInternational_x64.iso
здесь написано использовать эмулятор персонального компьютера qemu-system-x86_64-spice с вкомпилированной поддержкой протокола spice (поддержка буферов обмена и драг'н'дроп файлов для удаленного подключения), использовать встроенный в ядро линукса гипервизор виртуальных машин kvm, тип эмулируемого компьютера q35, включить оптимизацию для kvm, выделить виртуальной машине 4096 Мегабайт памяти (исправьте в соответствии с вашими возможностями), эмулировать виртуальный процессор qemu64 с неким общим множеством команд с 4 ядрами (можете поправить в соответствии с вашим физическим процессором, у меня 8-ядерный), эмулировать виртуальную видеокарту qxl, -usb -device usb-tablet позволит нам не ограничивать мышь в окне виртуальной машины, далее указано где наш виртуальный диск и установочный образ винды.
Закончите установку виндоуз как обычно, настройте что вы там обычно настраиваете в винде и выключите виндоуз.

4) Создайте еще один временный маленький виртуальный диск для qemu, он нам понадобится для установки драйвера виртуального дискового контроллера:
qemu-img create -f qcow2 -o compat=1.1 temp.qcow2 100M

5) Теперь запустим виртуальную машину, подключив к ней еще этот виртуальный диск и образ диска с драйверами:
qemu-system-x86_64 -enable-kvm -machine type=q35,accel=kvm -m 4096 -cpu qemu64 -smp 4 -vga qxl -usb -device usb-tablet -soundhw hda -hda windows-10-vm.qcow2 -drive file=temp.qcow2,if=virtio -cdrom /home/user/Downloads/virtio-win-0.1.171.iso
Здесь уже видно, что мы подключили эмуляцию звуковой карты -soundhw hda, подключили второй диск -drive file=temp.qcow2,if=virtio но уже подключенный к другому интерфейсу (первый пока по прежнему сидит на эмулированном IDE) и подключили образ диска с драйверами.

6) Теперь в запустившейся виндоуз открываем cdrom с драйверами и устанавливаем guest-agent, драйвер для virtio scsi (он помечен знаком вопроса в менеджере устройств), драйвер видеокарты qxldod, cкачиваем пакет Windows guest tools - spice-guest-tools, устанавливаем его и выключаем винду.

7) Опять запускаем виртуальную машину уже с новыми драйверами и без лишних дисков:
qemu-system-x86_64 -enable-kvm -machine type=q35,accel=kvm -m 4096 -cpu qemu64 -smp 4 -vga qxl -usb -device usb-tablet -soundhw hda -drive file=windows-10-vm.qcow2,if=virtio
Проведите оставшиеся настройки виндоуз - например заставить виндоуз и линукс показывать одинаковое время, можно отключить fast boot у виндоуз (гугл в помощь, но в принципе на этом установка винды закончена).

8\) Теперь надо написать скрипт для запуска виртуальной машины и включить поддержку буферов обмена и перекидывания файлов. Но я уже написал за вас:

Код: Выделить всё

#!/bin/sh
#
#  This script will start emulation with spice (with clipboard, file dropping, usb redirection)
#

qemu-system-x86_64 -enable-kvm \
        -machine type=q35,accel=kvm \
        -m 3072 \
        -cpu qemu64 \
            -smp 2 \
        -vga qxl \
        -usb \
            -device usb-tablet \
        -soundhw hda \
        -drive file=/home/qemu/win10/wirtual-10.qcow2,if=virtio \
        -name wirtual-10 \
\
        -device virtio-serial-pci \
        -device virtserialport,chardev=spicechannel0,name=com.redhat.spice.0 \
            -chardev spicevmc,id=spicechannel0,name=vdagent \
        -spice unix,addr=/tmp/vm_spice.socket,disable-ticketing \
\
        -device ich9-usb-ehci1,id=usb \
        -device ich9-usb-uhci1,masterbus=usb.0,firstport=0,multifunction=on \
        -device ich9-usb-uhci2,masterbus=usb.0,firstport=2 \
        -device ich9-usb-uhci3,masterbus=usb.0,firstport=4 \
        -chardev spicevmc,name=usbredir,id=usbredirchardev1 \
            -device usb-redir,chardev=usbredirchardev1,id=usbredirdev1 \
        -chardev spicevmc,name=usbredir,id=usbredirchardev2 \
            -device usb-redir,chardev=usbredirchardev2,id=usbredirdev2 \
        -chardev spicevmc,name=usbredir,id=usbredirchardev3 \
            -device usb-redir,chardev=usbredirchardev3,id=usbredirdev3 \
\
"$@"&

sleep 2
exec remote-viewer -t "Windows 10" "spice+unix:///tmp/vm_spice.socket"
Этот скрипт запустит вашу виртуальную машину и откроет окно удаленного доступа к ней, вы сможете копировать текст/файлы туда и обратно, подключать USB устройства.

Вот собственно и всё, вам осталось только подкорректировать в этом скрипте количество ядер CPU, RAM выделяемых виртуальной машине и путь к виртуальному диску.
Последний раз редактировалось serg666 13 ноя 2019, 22:19, всего редактировалось 3 раза.


loej
Сообщения: 67
Зарегистрирован: 30 сен 2019, 02:59

Re: QEMU для начинающих.

#2

Сообщение loej » 11 ноя 2019, 00:41

serg666 писал(а):
10 ноя 2019, 23:26
Мы не будем использовать всякие GUI менеджеры виртуальных машин, а будем использовать командную строку и минимум опций qemu для большей совместимости и переносимости.
Но можно как альтернативу установить тот же Windows и в VirtualBox, тем более, что VirtualBox использует тот же самый код виртуализации из QEMU, что и отмечено в их (VirtualBox) документации.

Аватара пользователя

Автор темы
serg666
Сообщения: 690
Зарегистрирован: 26 фев 2013, 21:15

Re: QEMU для начинающих.

#3

Сообщение serg666 » 11 ноя 2019, 00:46

Можно, но только совместимость слабовата. Переносишь машину в другой линукс и привет от майскрософта, винда не работает, где-то видимо отпечаток физической машины передается гостевой. Я лечил такой случай как-то раз, но больше желания нет.


abml
Сообщения: 97
Зарегистрирован: 03 фев 2015, 15:29
Откуда: Москва

Re: QEMU для начинающих.

#4

Сообщение abml » 11 ноя 2019, 16:52

Извините за, видимо, детский вопрос: а вайна для Ваших целей недостаточно? Ал-р

Аватара пользователя

Автор темы
serg666
Сообщения: 690
Зарегистрирован: 26 фев 2013, 21:15

Re: QEMU для начинающих.

#5

Сообщение serg666 » 11 ноя 2019, 17:24

Увы нет, проприетарное программное обеспечение для прошивки аппаратуры не работает под вайном.


loej
Сообщения: 67
Зарегистрирован: 30 сен 2019, 02:59

Re: QEMU для начинающих.

#6

Сообщение loej » 11 ноя 2019, 18:25

serg666 писал(а):
11 ноя 2019, 00:46
Можно, но только совместимость слабовата. Переносишь машину в другой линукс и привет от майскрософта, винда не работает, где-то видимо отпечаток физической машины передается гостевой.
Странно. Экспортированные виртуальные машины импортируются (восстанавливаются) "на ура"... Хотя я с Windows сталкиваюсь только эпизодически ("раз в год"), когда просят чего-то посмотреть...

Аватара пользователя

Автор темы
serg666
Сообщения: 690
Зарегистрирован: 26 фев 2013, 21:15

Re: QEMU для начинающих.

#7

Сообщение serg666 » 11 ноя 2019, 23:48

Тут возник вопрос - а как отрезать виртуальную машину от интернета, ибо незачем винде качать апдейты?
Вставьте в конце скрипта еще одну строку и интернет отвалится :D

Код: Выделить всё

...
         -device usb-redir,chardev=usbredirchardev3,id=usbredirdev3 \
\
         -net nic,model=virtio \
\
"$@"&
...


loej
Сообщения: 67
Зарегистрирован: 30 сен 2019, 02:59

Re: QEMU для начинающих.

#8

Сообщение loej » 12 ноя 2019, 18:36

QEMU для начинающих
Если уж для "начинающих", то, может, кому из начинающих окажется полезным что-то из вот здесь: QEMU - 7 страниц форумного обсуждения разных экспериментов с QEMU.

P.S. QEMU особенно полезным оказывается при работах с процессорными архитектурами, отличными от Intel x86, что позволяют делать далеко немногие гипервизоры виртуальных машин.

Аватара пользователя

XapoH
Сообщения: 61
Зарегистрирован: 14 июл 2018, 21:46
Откуда: Riga

Re: QEMU для начинающих.

#9

Сообщение XapoH » 12 ноя 2019, 21:01

Вопрос смены оси в случае необходимости решил для себя так - купил старый "леново".Точнее - два (Х200 и Т61)
Там жёсткие держатся на одном винте (точнее на нём держится крышка отсека). Причём на Х200 винт особо и не нужен - такая конструкция.
Так что ось меняется просто - снимаем крышку и переставляем винт.

ЗЫ. В теории, если часто "дёргать", может умереть SATA разьём. В этом случае лучше пользовать что-то типа Т61 со встроенным сидишником - под леново есть переходники в CD привод для жёстких дисков (у Х200 он в докинг-станции. Как и СОМ-порт) и смена устройства предусмотрена конструктино - просто нажать кнопочку (может ещё кто делает, что бы без раскручивания, но я не видел).
Остаётся выбрать при страте, откуда и что запускать. И никаких заморочек с виртуалкой - чистые честные сиситемы на любой вкус. Правда нужен рестарт :)

Аватара пользователя

zhart
Администратор
Сообщения: 1841
Зарегистрирован: 16 дек 2010, 13:09

Re: QEMU для начинающих.

#10

Сообщение zhart » 12 ноя 2019, 22:47

XapoH писал(а):
12 ноя 2019, 21:01
И никаких заморочек с виртуалкой - чистые честные сиситемы на любой вкус. Правда нужен рестарт
При таких раскладах проще уже обычный дуалбут настроить.

Ответить