Cześć!
Po kilku latach korzystania z Virtualbox'a przeniosłem się na "natywne" rozwiązanie w świecie Linuksa, czyli tytułowe Qemu/KVM. Rozwiązanie te jest szeroko stosowane w różnych serwerowniach (nie zawsze, są również inne rozwiązania). W zastosowania bardziej "konsumenckich" używany np w Proxmoxie.
Z upływem czasu będę publikował kolejne notki dotyczące domowej wirtualizacji z wykorzystaniem Qemu, a dziś zacznę od... przygotowania maszyny wirtualnej (VM) Windowsa 11 (preferuję wersje serwerowe, ale podstawowe wymagania co do sprzętu mają względnie zbliżone).
Domyślnie qemu/kvm emuluje bios starszego typu. Windows 11 do poprawnego działania wymaga uefi, tpm oraz secure boot.
W Debianie instalujemy następujące pakiety:
aptitude install ovmf swtpm swtpm-libs swtpm-tools
Tworzenie dysku o rozmiarze 80GB:
qemu-img create -f raw win11.img 80G
Emulujemy moduł tpm:
swtpm socket \--tpm2 \--tpmstate dir=/dev/shm/ \--ctrl type=unixio,path=/dev/shm/win11.tpm \--daemon;
ovmf ma pliki z uefi. Możemy korzystać z oryginalnych ścieżek lub skopiować dwa potrzebne pliki do folderu z VM'ką:
cp /usr/share/OVMF/OVMF_CODE_4M.secboot.fd win11.code.fdcp /usr/share/OVMF/OVMF_VARS_4M.fd win11.vars.fd
Odpalamy naszą VM'kę:
qemu-system-x86_64 \-cpu host -m 16G -smp 4 -enable-kvm \-machine q35 -usb -device usb-tablet \-device VGA,vgamem_mb=2048 \-drive media=disk,format=raw,file=win11.img \-drive if=pflash,format=raw,readonly=on,file=win11.code.fd \-drive if=pflash,format=raw,file=win11.vars.fd \-chardev socket,id=chrtpm,path=/dev/shm/win11.tpm \-tpmdev emulator,id=tpm0,chardev=chrtpm \-device tpm-tis,tpmdev=tpm0 \-nic user \-drive media=cdrom,file=/sciezka/do/obrazu.iso
Gdyby z jakiegoś powodu nie dało się zainstalować z użyciem konta lokalnego, wówczas:
- na ekranie tworzenia użytkownika odpalamy konsolę za pomocą Shift + F10
- wpisujemy oobe\bypassnro
- VM'ka zacznie się restartować, musimy wychwycić odpowiedni moment żeby Escapem wejść w menu bootowania VM'ki i na ekranie wyboru nośnika po prostu ją wyłączyć
- teraz wystarczy uruchomić VM'kę z opcją -nic none zamiast -nic user
- uruchamiamy, gdzieś po drodze będzie okienko umożliwiające instalację bez dostępu do internetu (dosłownie)
- jak przejdziemy resztę etapów to przed następnym uruchomieniem możemy przywrócić -nic user
Efekt finalny:
qemu-system-x86_64 \-cpu host -m 16G -smp 4 -enable-kvm \-machine q35 -usb -device usb-tablet \-device VGA,vgamem_mb=2048 \-drive media=disk,format=raw,file=win11.img \-drive if=pflash,format=raw,readonly=on,file=win11.code.fd \-drive if=pflash,format=raw,file=win11.vars.fd \-chardev socket,id=chrtpm,path=/dev/shm/win11.tpm \-tpmdev emulator,id=tpm0,chardev=chrtpm \-device tpm-tis,tpmdev=tpm0 \-nic user
