ArchLinuxのQEMUにWindows 11
This content is a draft and will not be included in production builds.
Windows 11をダウンロードするからisoイメージをダウンロードしておく。
virtioを使う場合は、Creating Windows virtual machines using virtIO driversからISOイメージを落としておく。
sudo pacman -S qemu swtpm edk2-ovmfイメージを作る。rawの方が早いけど、あまり容量を使いたくないし、NVMeなのでqcow2にする。
qemu-img create -f qcow2 win11.img 64GCDからブート。
$ swtpm socket --tpmstate dir=s --ctrl type=unixio,path=s/swtpm-sock --tpm2 &
# QEMU_AUDIO_DRV=[none|alsa|coreaudio|dsound|oss|pa|sdl|spice|wav]# pipewireがないので、paにする$ qemu-system-x86_64 -m 4G -smp 2 -machine (q35,smm=on,)type=pc,accel=kvm \ -device nvme,drive=nvme0,serial=0 \ -drive file=win.img,cache=writethrough,id=nvme0,if=none \ #-device virtio-scsi-pci,id=scsi -device scsi-hd,drive=hd0 \ #-drive file=win.img,cache=writethrough,id=hd0,if=none,index=0 \ -device virtio-net-pci,netdev=ether0 \ -netdev user,id=ether0,net=10.0.2.0/24 \ (-usb -device usb-tablet)? \ -chardev socket,id=chrtpm,path=s/swtpm-sock \ -tpmdev emulator,id=tpm0,chardev=chrtpm -device tpm-tis,tpmdev=tpm0 \ -drive if=pflash,unit=0,format=raw,read-only=on,file=/usr/share/ovmf/x64/OVMF_CODE(.secboot).fd \ -drive if=pflash,unit=1,format=raw,file=/usr/share/ovmf/x64/OVMF_VARS.fd \ -global driver=cfi.pflash01,property=secure,value=on \ -global ICH9-LPC.disable_s3=0 \ -audiodev pa,id=snd0,server=/run/user/xxx/pulse/native \ -device intel-hda -device hda-duplex,audiodev=snd0 \ -vga virtio -display gtk,grab-on-hover=on,gl=on \
-drive file=Win11_Japanese_x64v1.iso,index=2,media=cdrom \ -drive file=virtio-win-0.1.215.iso,index=3,media=cdrom \ -boot order=dなんかDNSに届かない。アダプタに直接8.8.8.8を設定すればできた。
Win10で、インストールするときにsdvirtioドライバは入れる。ethervirtioは使用不可アイコンが付いているので、E:ドライブを選択してスキャン。vgavirtioは「Microsoft基本ディスプレイアダプタ」で認識されているが、E:ドライブをスキャンするとRed Hat VirtIO GPU DOD controllerに更新できる。
サウンドは-soundhw hdaすると認識された。-soundhw helpでリストが取れる。
-bios /usr/share/ovmf/x64/OVMF_CODE.secboot.fdすると起動に失敗する。
Guest has not initialized the display (yet).
このオプションを外すと「要件を満たしていない」としてインストールできない。Win10をインストールして、診断プログラムを実行するとセキュアブートが必須だった。
q35,smm=on -global ICH9-LPC.disable_s3=1 https://github.com/quickemu-project/quickemu/issues/102
ライセンス認証 https://www.onebizlife.com/freewin10transfer-12297
- OVMF.fd: OVMF_CODEとOVMF_VARSが一緒になったもの
- OVMF_CODE.fd: コード実行部分だけ(loader)
- OVMF_VARS.fd: 設定が反映される領域、一般的にはコピーして使う(nvram)
vaiants
- secboot: セキュアブート
- ms: MSの証明書を持ったloaderまたはnvram
- secbootにsymlinkされている場合もある
- SMM: System Management Modeをサポートしている
- 4M: large pflash size
Fedora
Archのedk2パッケージはベンダーでもないしMSの証明書も持っていない。 なので.secboot.や.ms.なnvramが含まれていない。
https://koji.fedoraproject.org/koji/buildinfo?buildID=1954596
からRPMをダウンロードして、
sudo pacman -S rpmextract cpiorpm2cpio edk2-ovmf-20220221gitb24306f15daa-4.fc36.noarch.rpm | unzstdcpio -id <edk2-ovmfダメだった。