fedoraでwindows11を起動

前に環境作ったときはwin10からのアップグレードだったので
すんなり行ったんだけど今すごく面倒になっている
あと、24H2でなんかガード入ったのかもしれない

こちらで動作した手順を以下に記載

# 環境

- Fedora rawhide(2025-03-12 fc43相当) + xfce
- qemu 9.2.0
- Windows 11 24H2

# 用意するもの(必須)

Windows11のライセンスキー

# 手順

## Windowsのダウンロード

https://www.microsoft.com/ja-jp/software-download/windows11


## SDLのインストール（SDLを使う場合）

`sudo yum install -y gtk3-devel SDL2 SDL2-devel`

yumはdnfに変わったみたいだがシンボリックリンクで
リンク先が同じなのでどちらでも良さそう

## qemuのインストール

`sudo yum install -y qemu`

## 仮想ディスクの作成

```shell
sudo chmod go+rw /opt/
mkdir /opt/vdisk
qemu-img create -f qcow2 /opt/vdisk/win11.qcow2 80G
```

lsで確認するとわかるが、作成してすぐに80G消費するわけでは無い
例)
```shell
tyano Downloads$ ls -l /opt/vdisk/
total 196
-rw-r--r--. 1 tyano tyano 197888 Mar  4 10:10 win11.qcow2
```

## セキュアブート可能なbiosの作成

原因は不明だがyumでインストールしたedk2が動かなかったので

以下から `RELEASEX64_OVMF_CODE.fd` と `RELEASEX64_OVMF_VARS.fd`
をダウンロード

https://retrage.github.io/edk2-nightly/



### (仮想)biosにセキュアブートを適用するための準備

`development-tools`はgroupinstallされている前提です


```shell
# 念のため
sudo yum install nasm

# edk2の recursive つけた clone は結構時間かかる
# --depth=1 つけてもよいかも
git clone --recursive https://github.com/tianocore/edk2.git
git clone --recursive https://github.com/rhuefi/qemu-ovmf-secureboot.git
wget https://github.com/emojifreak/qemu-arm-image-builder/raw/main/OVMF-Fedora/UefiShell.fedora-amd64.iso
cd edk2
python3 -m venv .venv

# セキュアブート適用しなおしはここから再開
. .venv/bin/activate
echo "*venv*/**" >> .git/info/exclude
pip install -r pip-requirements.txt --upgrade

# ここでダウンロードしたOVMF... を持ってくる
# mvでも可
cp ~/Downloads/RELEASEX64_OVMF_CODE.fd OVMF_CODE.fd
cp ~/Downloads/RELEASEX64_OVMF_VARS.fd OVMF_VARS.fd

```
### セキュアブート用biosの作成

次は長いのでコピペ推奨
venvが有効なターミナル上で（つまり↑に続けて実施）

```shell
export DEBIAN_KEY="4e32566d-8e9e-4f52-81d3-5bb9715f9727:MIIDvTCCAqWgAwIBAgIURQHuOT5SKXg234VCyOV7u4jRSzcwDQYJKoZIhvcNAQELBQAwbjEPMA0GA1UECgwGRGViaWFuMS0wKwYDVQQDDCREZWJpYW4gVUVGSSBTZWN1cmUgQm9vdCAoUEsvS0VLIGtleSkxLDAqBgkqhkiG9w0BCQEWHWRlYmlhbi1kZXZlbEBsaXN0cy5kZWJpYW4ub3JnMB4XDTE5MDcwODIzNDI0OVoXDTI5MDcwNTIzNDI0OVowbjEPMA0GA1UECgwGRGViaWFuMS0wKwYDVQQDDCREZWJpYW4gVUVGSSBTZWN1cmUgQm9vdCAoUEsvS0VLIGtleSkxLDAqBgkqhkiG9w0BCQEWHWRlYmlhbi1kZXZlbEBsaXN0cy5kZWJpYW4ub3JnMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAm6tJi7ql+lQqcZp5BcQbRhHFs71ZYoBxrbtsxFColtaJ6+gR1Ig8SeSPUc2lh8PS/lEeOhu/2Fs4U7WdaFLRPoLL2/1eAYEwxL5z4NZWP0oo8TPXUmF7hKJAohiIeFsU0B5tariuEESvEpmmey3puo0KWJM4aett8G+XIv7gD7Sk+cgrO3O5Uc8fH+VmB8vd907zVypJaVNBgPzVanXZug1nvVPGHdXlZb8LjfwWWGXtWaZXjzNIpmwn3LQdnpSeY4sZAr/gAVI0KKQTiP75ewYd4neFB55OG6rKDGrk3yvpiqxCBd4y1TT54m+WwtQFX8kg2DOaAYJdlGl4Ti7gxwIDAQABo1MwUTAdBgNVHQ4EFgQUiAnrn/p9LV3bMGenr7mJjqPuAnMwHwYDVR0jBBgwFoAUiAnrn/p9LV3bMGenr7mJjqPuAnMwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEACnQviYBeHsTyyaJNtjTusWid8r13heVoZtX/diApnw3zzRufIk4mnREZk5ajmwz9iN+g7xEJHsJwbyD2/r7DWjxAR3mgLILGQjzEPK9Vf4rDDQxqz598nby1bTNzzfkTDo5Nzvj2VHTHkCjrb1gx1kGeJacEQIoo2zY5c+rknow+Qlp7BSB45k1pH7q/obcC2eOr/ELZd83g3Qg7vpZ5XF1x7sdo6KYIaS3/mK1RyxvvObBScAPTPKfOpfCTYsprYUvce8cAnoA6v6+Veff2FH5F8bRsyDGfCjgn/Dz7RCJOetNyFy92XMYAiyYFFZXrcVJfW5DIy/1TAaT/CsitJQ=="
export UBUNTU_KEY="4e32566d-8e9e-4f52-81d3-5bb9715f9727:MIIDNjCCAh4CCQCUy69JzVan2DANBgkqhkiG9w0BAQsFADBdMS0wKwYDVQQDDCRVYnVudHUgT1ZNRiBTZWN1cmUgQm9vdCAoUEsvS0VLIGtleSkxLDAqBgkqhkiG9w0BCQEWHXVidW50dS1kZXZlbEBsaXN0cy51YnVudHUuY29tMB4XDTE4MDYyMDIxNDg0NloXDTI4MDYxNzIxNDg0NlowXTEtMCsGA1UEAwwkVWJ1bnR1IE9WTUYgU2VjdXJlIEJvb3QgKFBLL0tFSyBrZXkpMSwwKgYJKoZIhvcNAQkBFh11YnVudHUtZGV2ZWxAbGlzdHMudWJ1bnR1LmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMuwK+l3nl5x6ebrHYVShs/7jPAKeTTMu4MQlTbNoOZvVQhOcedjkBNaPPdd63TBxYFAnJhUBLl9hW/GB5Fn9itT0yh5G64XCBafy3rJLF8L99VDUYEuvB+a3boYATCToVnODb8h0ImORBF8sgKZm65CJlgQ93YGZbjLePnuawhU2EVH2HFyLZEWjd3JPxstlzGj+JiwvETdFX/fHbnrW+fLCLEnLLZ/YPo6We0mtVTEqHWm6G5WUIbpzPzOOGpiCKHdI+VFsX7w1TBdMhCqnxcpLn7NRXEEgw+OQ5gnOLR9kTKI+MRkux9pDGZ5v9VMcPZi2iZTHRd9briIGOL/fo0CAwEAATANBgkqhkiG9w0BAQsFAAOCAQEAGLAtUs7fnf5oKU7E7+woUrHP03WXAwhTNI9eTs7YLPgwC2qGAGkzdUZUbzc4zS4SaItITlYYeWfZ9PvPhPGyIZOeuBMoUeBknsC2daRVX11aAcgOnQhxMD0WjSRG5nQ5rXRZ/NwYvctJR81l41kDToNqjBIjJ3FThzz8hHyMv/DCh3ch/X2Hj7ib+1IPfoHFk+mD/6e+y46wHWS5u0Bol9w4VBMwa3FYniFgKrAmnoiuo2br5fBbgH/7326lJ7Qb/H4mBLKz/c3iw4PF+KQxspc04tJdvQ+pDEtTUiXVE0zcBip2EJgPVK0szO5H6gtXbfyoTqDr1DKaD4x9JD3yKQ=="
export FEDORA_KEY="4e32566d-8e9e-4f52-81d3-5bb9715f9727:MIIDoDCCAoigAwIBAgIJAP71iOjzlsDxMA0GCSqGSIb3DQEBCwUAMFExKzApBgNVBAMTIlJlZCBIYXQgU2VjdXJlIEJvb3QgKFBLL0tFSyBrZXkgMSkxIjAgBgkqhkiG9w0BCQEWE3NlY2FsZXJ0QHJlZGhhdC5jb20wHhcNMTQxMDMxMTExNTM3WhcNMzcxMDI1MTExNTM3WjBRMSswKQYDVQQDEyJSZWQgSGF0IFNlY3VyZSBCb290IChQSy9LRUsga2V5IDEpMSIwIAYJKoZIhvcNAQkBFhNzZWNhbGVydEByZWRoYXQuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAkB+Ee42865cmgm2Iq4rJjGhw+d9LB7I3gwsCyGdoMJ7j8PCZSrhZV8ZB9jiL/mZMSek3N5IumAEeWxRQ5qiNJQ31huarMMtAFuqNixaGcEM38s7Akd9xFI6ZDom2TG0kHozkL08l0LoG+MboGRh2cx2BbajYBc86yHsoyDajFg0pjJmaaNyrwE2Nv1q7K6k5SwSXHPk2u8U6hgSur9SCe+Cr3kkFaPz2rmgabJBNVxk8ZGYD9sdSm/eUz5NqoWjJqs+Za7yqXgjnORz3+A+6Bn7xy+h23f4i2q06Xls06rPJ4E0EKX64YLkF77XZF1hWFmC5MDLwNkrD8nmNEkBw8wIDAQABo3sweTAJBgNVHRMEAjAAMCwGCWCGSAGG+EIBDQQfFh1PcGVuU1NMIEdlbmVyYXRlZCBDZXJ0aWZpY2F0ZTAdBgNVHQ4EFgQUPOlg4/8ZoQp7o0L0jUIutNWccuwwHwYDVR0jBBgwFoAUPOlg4/8ZoQp7o0L0jUIutNWccuwwDQYJKoZIhvcNAQELBQADggEBAFxNkoi0gl8drYsR7N8GpnqlK583VQyNbgUArbcMQYlpz9ZlBptReNKtx7+c3AVzf+ceORO06rYwfUB1q5xDC9+wwhu/MOD0/sDbYiGY9sWv3jtPSQrmHvmGsD8N1tRGN9tUdF7/EcJgxnBYxRxv7LLYbm/DvDOHOKTzRGScNDsolCZ4J58WF+g7aQolqXM2fp43XOzoP9uR+RKzPc7n3RXDrowFIGGbld6br/qxXBzll+fDNBGF9YonJqRwNuwM9oM9kPc28/nzFdSQYr5TtK/TSa/v9HPoe3bkRCo3uoGkmQw6MSRxoOTktxrLR+SqIs/vdWGA40O3SFdzET14m2k="

python3 ../qemu-ovmf-secureboot/ovmf-vars-generator --qemu-binary qemu-system-x86_64 --verbose --verbose --enable-kvm --ovmf-binary OVMF_CODE.fd --ovmf-template-vars OVMF_VARS.fd --uefi-shell-iso ../UefiShell.fedora-amd64.iso --skip-testing --oem-string "$FEDORA_KEY" --oem-string "$DEBIAN_KEY" --oem-string "$UBUNTU_KEY" OVMF_VARS.secboot.fd
```

OVMF_VARS.secboot.fd が作成されたら
pythonのvenv環境が効いているので
一旦ターミナルは閉じて別のターミナル開いた方が良いと思う

## qemuの起動

Windows11のインストーラを動かす

以下のbiosとかディスクの指定は相対か絶対でパス指定する
- OVMF_CODE.fd
- OVMF_VARS.secboot.fd
- Win11_24H2_Japanese_x64.iso
- win11.qcow2

コマンド例)
```shell
sudo qemu-system-x86_64 -cpu max -M q35,smm=on,accel=kvm \
 -m 8G -smp 2 -enable-kvm \
 -netdev user,id=net0 -device e1000,netdev=net0 \
 -global driver=cfi.pflash01,property=secure,value=on \
 -drive if=pflash,unit=0,format=raw,read-only=on,file=OVMF_CODE.fd \
 -drive if=pflash,unit=1,format=raw,file=OVMF_VARS.secboot.fd \
 -cdrom /opt/iso/Win11_24H2_Japanese_x64.iso \
 /opt/vdisk/win11.qcow2
```

あとはwindows10 -> 11の時と同じ

`セットアップオプションの選択`画面まで来たら

`Shift + f10`でコマンドプロンプトを表示

`regedit⏎` 

HKLM > System > Setup に
DWORD(32)で以下を作成して値を1に
- BypassTPMCheck
- BypassSecureBootCheck
- BypassCPUCheck

I agree to everything ...(ディスクの中身全部消すけど良い)にチェックを入れてインストール

なお、選択項目がめっちゃあってすごくだるいし時間かかる

# メニューへの登録(Whisker menuの場合)

vim などで `~/.local/share/applications/win11.desktop`を以下のように作成

```ruby
[Desktop Entry]
Name=Windows 11
Comment=Windows 11
GenericName=OS
Exec=sudo qemu-system-x86_64 -cpu max -M q35,smm=on,accel=kvm -m 8G -smp 2 -enable-kvm -netdev user,id=net0 -device e1000,netdev=net0 -global driver=cfi.pflash01,property=secure,value=on -drive if=pflash,unit=0,format=raw,read-only=on,file=OVMF_CODE.fd -drive if=pflash,unit=1,format=raw,file=OVMF_VARS.secboot.fd -cdrom /opt/iso/Win11_24H2_Japanese_x64.iso /opt/vdisk/win11.qcow2
Icon=/opt/icon/win11_icon.png
Type=Application
StartupNotify=false
StartupWMClass=win11
Categories=TextEditor;Development;IDE;
Actions=new-empty-window;
Keywords=windows;
Path=/home/tyano
Terminal=false

```

cdromは削除してok
アイコンは自分で作ってください

# 参考

https://qiita.com/kakinaguru_zo/items/f74bcfbf9f75d7e7a913