ジャンル不定の日記です。

QEMUでOEMのWindowsを起動する実験

実際にクリーンインストールするのはめんどいし、WindowsのVMイメージをqcow2化すると容量もったいないのとsmbios以外でライセンス弾かれそうな気がしてめんどいので、
smbiosの変更の実験をArch Linuxのイメージで試してみた。

以前行ったVirtualboxへのWindows(OEM版)のインストールに関する記事を参考に。
手元にあるOEMのWindowsは東芝のノートPCから抜き取ったやつだが、これ起動させるのに dmidecode コマンドで確認できるSMBIOSの情報を書き換える必要がある。
以前の記事ではVirtualboxでやったが今回はQEMUでのSMBIOSの変更。

今回の実験で変更する必要があるのは、
DMI type 0
Vendor: TOSHIBA
DMI type 1
Product Name: dynabook Satellite B450/B
Serial Number: XXXX
UUID: XXXX
SKU Number: 0000000000
Family: 0000000000
の6項目。
メーカーによってインストール時にチェックされる項目は違う。

ゲストOS上でdmidecodeが使えればいいのでArch Linuxを使ったが、インストールするのも面倒なのでVirtualboxのvdiイメージをqcow2に変換した。
$ qemu-img convert -f vdi -O qcow2 ArchLinux.img ArchLinux.qcow2
VDI→QCOW2の変換は簡単。

$ qemu-system-x86_64 -enable-kvm -m 2G -boot c -hda ArchLinux.qcow2
QEMUで起動。
以前はqemuコマンドがあった気がするのだが、最近はqemu-system-x86_64コマンドしか無い?
まあ、これで起動した。
ネットワークは設定無しでユーザーモードネットワークが有効になってる。(ICMP無効なのでpingコマンドは使えない)

起動して、マウスカーソルなんかは普通にシームレスになってるんだが、グラフィックが遅い感じ。
$ qemu-system-x86_64 -enable-kvm -m 2G -boot c -hda ArchLinux.qcow2 -vga qxl
-vga qxlオプションをつけて起動して、ゲストに xf86-video-qxl を入れて再起動した。
速くなった。
qxlは2Dサポートのある準仮想化グラフィックらしく、Virtualboxより速いかもしれん。
ホストと全く遜色ない感じで動く。

dmidecode をインストールして確認したが、
Vendor: SeaBIOS
Product Name: Standard PC (i440FX + PIIX, 1996)
Serial Number: Not Specified
UUID: Not Settable
SKU Number: Not Specified
Family: Not Specified
こんなんなってた。

-smbios type=0[,vendor=MYVENDOR ][,version=018][,date=07/06/2009][,release=%d.%d]
-smbios type=1[,manufacturer=str][,product=str][,version=str][,serial=str][,uuid=uuid][,sku=str][,family=str]
こんな感じのオプションをつけてQEMUを起動すれば変更できるぽい。
type0とtype1は別々に書く必要があるぽい?

$ qemu-system-x86_64 -enable-kvm -m 2G -boot c -hda ArchLinux.qcow2 -vga qxl -smbios type=0,vendor=TOSHIBA -smbios type=1,product="dynabook Satellite B450/B",serial=XXXX,uuid=XXXX,sku=0000000000,family=0000000000
これで起動して dmidecode で確認してみた。
期待通りに変わってた。
Virtualboxの時はskuとfamilyをstring指定しないと数値になっちゃってたが、QEMUの場合は全部stringになるぽい。
スペースが含まれる項目だけクォートで囲む。

割と簡単ね。
Virtualboxの場合はVBoxManage setextradataコマンドでVMに対して設定する必要があるが、
起動オプションで指定できるからQEMUの方が簡単かも。

これでたぶんリカバリー領域やリカバリーディスクからクリーンインストールできそうだが、
インストール済みのディスクイメージ使うと他のハードウェア構成で弾かれそうな気がする・・・

QT環境かGTK環境のどちらかに統一する時にQTのVirtualboxをGTKアプリで代替するのが難しいと思うが、
QEMUでOEMのWindowsを起動するのは問題無さそう。

だが、
  • ウインドウサイズ変更時のゲストの画面サイズ変更。
  • USBデバイスをゲストで使う。
  • クリップボードの共有。
  • ファイルの共有。
あたりがVirtualboxに比べてめんどそう。
SPICEってのでできるのか?

あと、GUIフロントエンド。
Archの公式リポジトリにvirt-managerとgnome-boxesがあるが、
virt-managerは試したがrootで使う前提になってて一般ユーザーで使うのは難しい感じだった。
gnome-boxesは簡単そうではあるが、gnome3風のUIでコレジャナイ感がすごいw