Topics

question about qemu+kvm+ovmf+winxp

Junhao Gao
 

Hi edk2 members

 

               I have a question for your help.

               I want to enable qemu+kvm+ovmf to boot up windows xp, then ovmf support winxp starting-up?

               qemu command:

               qemu-system-x86_64 -hda winxp.img -boot c -enable-kvm -cpu host -bios ./OVMF.fd -m 512 -vga cirrus -net nic,model=rtl8139 -net user -usbdevice tablet -localtime

               Then if ovmf support, could you provide me the way to compile the OVMF.fd?

 

Thanks,

Junhao

 

Laszlo Ersek
 

On 10/10/19 16:37, Junhao Gao wrote:
Hi edk2 members

I have a question for your help.
I want to enable qemu+kvm+ovmf to boot up windows xp,
then ovmf support winxp starting-up?
To my understanding, the first Windows "family" with any kind of UEFI
support is Windows 7.

OvmfPkg/README has some comments on Windows support:

* UEFI Windows 8 boots
* UEFI Windows 7 & Windows 2008 Server boot (see important notes below!)
and

=== UEFI Windows 7 & Windows 2008 Server ===

* One of the '-vga std' and '-vga qxl' QEMU options should be used.
* Only one video mode, 1024x768x32, is supported at OS runtime.
* The '-vga qxl' QEMU option is recommended. After booting the installed
guest OS, select the video card in Device Manager, and upgrade its driver
to the QXL XDDM one. Download location:
<http://www.spice-space.org/download.html>, Guest | Windows binaries.
This enables further resolutions at OS runtime, and provides S3
(suspend/resume) capability.
If you'd like to virtualize Windows XP on QEMU/KVM, please use SeaBIOS for
guest firmware.

You can also try to build OVMF with -D CSM_ENABLE, but for that, you'll
have to build SeaBIOS in CSM mode first, and embed that binary into OVMF
at build time. Please ask David for details (CC'd).

Thanks
Laszlo

qemu command:
qemu-system-x86_64 -hda winxp.img -boot c -enable-kvm -cpu host -bios ./OVMF.fd -m 512 -vga cirrus -net nic,model=rtl8139 -net user -usbdevice tablet -localtime
Then if ovmf support, could you provide me the way to compile the OVMF.fd?

Thanks,
Junhao




Junhao Gao
 

Hi Laszlo
Thank you very much for your great support.

Hi David
Refer to http://www.linux-kvm.org/downloads/lersek/ovmf-whitepaper-c770f8c.txt.

Interested users and developers should look for OVMF's "-D CSM_ENABLE"
build-time option, and check out the <https://www.kraxel.org/repos/> continuous
integration repository, which provides CSM-enabled OVMF builds.

Could you help me to choose which branch supporting CSM, and more details, thanks very much.

Thanks,
Junhao

-----Original Message-----
From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Laszlo Ersek
Sent: Friday, October 11, 2019 2:11 AM
To: Gao, Junhao <junhao.gao@...>
Cc: devel@edk2.groups.io; David Woodhouse <dwmw2@...>
Subject: Re: [edk2-devel] question about qemu+kvm+ovmf+winxp

On 10/10/19 16:37, Junhao Gao wrote:
Hi edk2 members

I have a question for your help.
I want to enable qemu+kvm+ovmf to boot up windows xp,
then ovmf support winxp starting-up?
To my understanding, the first Windows "family" with any kind of UEFI support is Windows 7.

OvmfPkg/README has some comments on Windows support:

* UEFI Windows 8 boots
* UEFI Windows 7 & Windows 2008 Server boot (see important notes
below!)
and

=== UEFI Windows 7 & Windows 2008 Server ===

* One of the '-vga std' and '-vga qxl' QEMU options should be used.
* Only one video mode, 1024x768x32, is supported at OS runtime.
* The '-vga qxl' QEMU option is recommended. After booting the installed
guest OS, select the video card in Device Manager, and upgrade its driver
to the QXL XDDM one. Download location:
<http://www.spice-space.org/download.html>, Guest | Windows binaries.
This enables further resolutions at OS runtime, and provides S3
(suspend/resume) capability.
If you'd like to virtualize Windows XP on QEMU/KVM, please use SeaBIOS for guest firmware.

You can also try to build OVMF with -D CSM_ENABLE, but for that, you'll have to build SeaBIOS in CSM mode first, and embed that binary into OVMF at build time. Please ask David for details (CC'd).

Thanks
Laszlo

qemu command:
qemu-system-x86_64 -hda winxp.img -boot c -enable-kvm -cpu host -bios ./OVMF.fd -m 512 -vga cirrus -net nic,model=rtl8139 -net user -usbdevice tablet -localtime
Then if ovmf support, could you provide me the way to compile the OVMF.fd?

Thanks,
Junhao




Junhao Gao
 

Hi David

I have found this compiled OVMF-with-csm.fd can support winxp booting up.
OVMF-with-csm.fd path: https://www.kraxel.org/repos/jenkins/seabios/seabios.git-csm-1.12.0-33.63.g43f5df7.x86_64.rpm
Then could you help to provide me the compile method and base code to reproduce this OVMF-with-csm.fd?

Thanks,
Junhao

-----Original Message-----
From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Junhao Gao
Sent: Friday, October 11, 2019 9:33 AM
To: devel@edk2.groups.io; lersek@...
Cc: David Woodhouse <dwmw2@...>
Subject: Re: [edk2-devel] question about qemu+kvm+ovmf+winxp

Hi Laszlo
Thank you very much for your great support.

Hi David
Refer to http://www.linux-kvm.org/downloads/lersek/ovmf-whitepaper-c770f8c.txt.

Interested users and developers should look for OVMF's "-D CSM_ENABLE"
build-time option, and check out the <https://www.kraxel.org/repos/> continuous
integration repository, which provides CSM-enabled OVMF builds.

Could you help me to choose which branch supporting CSM, and more details, thanks very much.

Thanks,
Junhao

-----Original Message-----
From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Laszlo Ersek
Sent: Friday, October 11, 2019 2:11 AM
To: Gao, Junhao <junhao.gao@...>
Cc: devel@edk2.groups.io; David Woodhouse <dwmw2@...>
Subject: Re: [edk2-devel] question about qemu+kvm+ovmf+winxp

On 10/10/19 16:37, Junhao Gao wrote:
Hi edk2 members

I have a question for your help.
I want to enable qemu+kvm+ovmf to boot up windows xp,
then ovmf support winxp starting-up?
To my understanding, the first Windows "family" with any kind of UEFI support is Windows 7.

OvmfPkg/README has some comments on Windows support:

* UEFI Windows 8 boots
* UEFI Windows 7 & Windows 2008 Server boot (see important notes
below!)
and

=== UEFI Windows 7 & Windows 2008 Server ===

* One of the '-vga std' and '-vga qxl' QEMU options should be used.
* Only one video mode, 1024x768x32, is supported at OS runtime.
* The '-vga qxl' QEMU option is recommended. After booting the installed
guest OS, select the video card in Device Manager, and upgrade its driver
to the QXL XDDM one. Download location:
<http://www.spice-space.org/download.html>, Guest | Windows binaries.
This enables further resolutions at OS runtime, and provides S3
(suspend/resume) capability.
If you'd like to virtualize Windows XP on QEMU/KVM, please use SeaBIOS for guest firmware.

You can also try to build OVMF with -D CSM_ENABLE, but for that, you'll have to build SeaBIOS in CSM mode first, and embed that binary into OVMF at build time. Please ask David for details (CC'd).

Thanks
Laszlo

qemu command:
qemu-system-x86_64 -hda winxp.img -boot c -enable-kvm -cpu host -bios ./OVMF.fd -m 512 -vga cirrus -net nic,model=rtl8139 -net user -usbdevice tablet -localtime
Then if ovmf support, could you provide me the way to compile the OVMF.fd?

Thanks,
Junhao




Laszlo Ersek
 

On 10/11/19 09:44, Gao, Junhao wrote:
Hi David

I have found this compiled OVMF-with-csm.fd can support winxp booting up.
OVMF-with-csm.fd path: https://www.kraxel.org/repos/jenkins/seabios/seabios.git-csm-1.12.0-33.63.g43f5df7.x86_64.rpm
Then could you help to provide me the compile method and base code to reproduce this OVMF-with-csm.fd?
Ah, good point, I should have remembered that Gerd offers a CSM build in
his repo!

So, you can easily look up the build instructions, in Gerd's SeaBIOS and
OVMF RPM "spec" files. Check out these git repositories:

https://git.kraxel.org/cgit/jenkins/seabios/
https://git.kraxel.org/cgit/jenkins/edk2/

Specifically:

https://git.kraxel.org/cgit/jenkins/seabios/tree/seabios.git.spec
https://git.kraxel.org/cgit/jenkins/edk2/tree/edk2.git.spec.template

HTH,
Laszlo


-----Original Message-----
From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Junhao Gao
Sent: Friday, October 11, 2019 9:33 AM
To: devel@edk2.groups.io; lersek@...
Cc: David Woodhouse <dwmw2@...>
Subject: Re: [edk2-devel] question about qemu+kvm+ovmf+winxp

Hi Laszlo
Thank you very much for your great support.

Hi David
Refer to http://www.linux-kvm.org/downloads/lersek/ovmf-whitepaper-c770f8c.txt.

Interested users and developers should look for OVMF's "-D CSM_ENABLE"
build-time option, and check out the <https://www.kraxel.org/repos/> continuous
integration repository, which provides CSM-enabled OVMF builds.

Could you help me to choose which branch supporting CSM, and more details, thanks very much.

Thanks,
Junhao

-----Original Message-----
From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Laszlo Ersek
Sent: Friday, October 11, 2019 2:11 AM
To: Gao, Junhao <junhao.gao@...>
Cc: devel@edk2.groups.io; David Woodhouse <dwmw2@...>
Subject: Re: [edk2-devel] question about qemu+kvm+ovmf+winxp

On 10/10/19 16:37, Junhao Gao wrote:
Hi edk2 members

I have a question for your help.
I want to enable qemu+kvm+ovmf to boot up windows xp,
then ovmf support winxp starting-up?
To my understanding, the first Windows "family" with any kind of UEFI support is Windows 7.

OvmfPkg/README has some comments on Windows support:

* UEFI Windows 8 boots
* UEFI Windows 7 & Windows 2008 Server boot (see important notes
below!)
and

=== UEFI Windows 7 & Windows 2008 Server ===

* One of the '-vga std' and '-vga qxl' QEMU options should be used.
* Only one video mode, 1024x768x32, is supported at OS runtime.
* The '-vga qxl' QEMU option is recommended. After booting the installed
guest OS, select the video card in Device Manager, and upgrade its driver
to the QXL XDDM one. Download location:
<http://www.spice-space.org/download.html>, Guest | Windows binaries.
This enables further resolutions at OS runtime, and provides S3
(suspend/resume) capability.
If you'd like to virtualize Windows XP on QEMU/KVM, please use SeaBIOS for guest firmware.

You can also try to build OVMF with -D CSM_ENABLE, but for that, you'll have to build SeaBIOS in CSM mode first, and embed that binary into OVMF at build time. Please ask David for details (CC'd).

Thanks
Laszlo

qemu command:
qemu-system-x86_64 -hda winxp.img -boot c -enable-kvm -cpu host -bios ./OVMF.fd -m 512 -vga cirrus -net nic,model=rtl8139 -net user -usbdevice tablet -localtime
Then if ovmf support, could you provide me the way to compile the OVMF.fd?

Thanks,
Junhao









David Woodhouse
 

On Fri, 2019-10-11 at 16:27 +0200, Laszlo Ersek wrote:
On 10/11/19 09:44, Gao, Junhao wrote:
Hi David

I have found this compiled OVMF-with-csm.fd can support winxp booting up.
OVMF-with-csm.fd path: https://www.kraxel.org/repos/jenkins/seabios/seabios.git-csm-1.12.0-33.63.g43f5df7.x86_64.rpm
Then could you help to provide me the compile method and base code to reproduce this OVMF-with-csm.fd?
Ah, good point, I should have remembered that Gerd offers a CSM build in
his repo!

So, you can easily look up the build instructions, in Gerd's SeaBIOS and
OVMF RPM "spec" files. Check out these git repositories:

https://git.kraxel.org/cgit/jenkins/seabios/
https://git.kraxel.org/cgit/jenkins/edk2/

Specifically:

https://git.kraxel.org/cgit/jenkins/seabios/tree/seabios.git.spec
https://git.kraxel.org/cgit/jenkins/edk2/tree/edk2.git.spec.template
Right, thanks.

Ultimately it's as simple as:

• Build SeaBIOS with CONFIG_CSM
• Drop the resulting Csm16.bin into OvmfPkg/Csm/Csm16/ in the EDK2 tree
• Build EDK2 with -DCSM_ENABLE

Someone else mailed me recently to say they'd copied the Csm packages
over from OvmfPkg to Quark and had Windows booting on Galileo boards.

Hm, I wonder if we should move the CSM support out of OVMF and into
somewhere more generic, since it really is generic and not platform-
specific?

Junhao Gao
 

-----Original Message-----
From: David Woodhouse <dwmw2@...>
Sent: Friday, October 11, 2019 10:36 PM
To: Laszlo Ersek <lersek@...>; Gao, Junhao <junhao.gao@...>;
devel@edk2.groups.io
Subject: Re: [edk2-devel] question about qemu+kvm+ovmf+winxp

On Fri, 2019-10-11 at 16:27 +0200, Laszlo Ersek wrote:
On 10/11/19 09:44, Gao, Junhao wrote:
Hi David

I have found this compiled OVMF-with-csm.fd can support winxp booting
up.
OVMF-with-csm.fd path:
https://www.kraxel.org/repos/jenkins/seabios/seabios.git-csm-1.12.0-
33.63.g43f5df7.x86_64.rpm
Then could you help to provide me the compile method and base code to
reproduce this OVMF-with-csm.fd?

Ah, good point, I should have remembered that Gerd offers a CSM build in
his repo!

So, you can easily look up the build instructions, in Gerd's SeaBIOS and
OVMF RPM "spec" files. Check out these git repositories:

https://git.kraxel.org/cgit/jenkins/seabios/
https://git.kraxel.org/cgit/jenkins/edk2/

Specifically:

https://git.kraxel.org/cgit/jenkins/seabios/tree/seabios.git.spec
https://git.kraxel.org/cgit/jenkins/edk2/tree/edk2.git.spec.template
Right, thanks.

Ultimately it's as simple as:

• Build SeaBIOS with CONFIG_CSM
• Drop the resulting Csm16.bin into OvmfPkg/Csm/Csm16/ in the EDK2 tree
• Build EDK2 with -DCSM_ENABLE
Thanks David, follow these steps, I can reproduce the OVMF-with-csm.fd.
However, I find that when I choose remotes/origin/master branch, after compiling, qemu+kvm+ovmf+winxp can't
boot up, but when I choose remotes/origin/UDK2018, the compiled OVMF.fd can work.
So the latest edk2 code have removed CSM support? Could I apply the CSM patch to
the latest edk2 code to support my work because our project is based on the latest EDK2 code, thanks.

Someone else mailed me recently to say they'd copied the Csm packages
over from OvmfPkg to Quark and had Windows booting on Galileo boards.

Hm, I wonder if we should move the CSM support out of OVMF and into
somewhere more generic, since it really is generic and not platform-
specific?
I can't make some decisions, from my view, maybe CSM module can be
an independent patch for user to apply or reject :)

Andrew Fish
 

Junhao  


FYI there is a regression in master for OVFM right now: https://bugzilla.tianocore.org/show_bug.cgi?id=2266 so you might be hitting that.


Thanks,

Andrew Fish

On Oct 11, 2019, at 11:13 PM, Junhao Gao <junhao.gao@...> wrote:



-----Original Message-----
From: David Woodhouse <dwmw2@...>
Sent: Friday, October 11, 2019 10:36 PM
To: Laszlo Ersek <lersek@...>; Gao, Junhao <junhao.gao@...>;
devel@edk2.groups.io
Subject: Re: [edk2-devel] question about qemu+kvm+ovmf+winxp

On Fri, 2019-10-11 at 16:27 +0200, Laszlo Ersek wrote:
On 10/11/19 09:44, Gao, Junhao wrote:
Hi David

      I have found this compiled OVMF-with-csm.fd can support winxp booting
up.
      OVMF-with-csm.fd path:
https://www.kraxel.org/repos/jenkins/seabios/seabios.git-csm-1.12.0-
33.63.g43f5df7.x86_64.rpm
      Then could you help to provide me the compile method and base code to
reproduce this OVMF-with-csm.fd?

Ah, good point, I should have remembered that Gerd offers a CSM build in
his repo!

So, you can easily look up the build instructions, in Gerd's SeaBIOS and
OVMF RPM "spec" files. Check out these git repositories:

 https://git.kraxel.org/cgit/jenkins/seabios/
 https://git.kraxel.org/cgit/jenkins/edk2/

Specifically:

 https://git.kraxel.org/cgit/jenkins/seabios/tree/seabios.git.spec
 https://git.kraxel.org/cgit/jenkins/edk2/tree/edk2.git.spec.template

Right, thanks.

Ultimately it's as simple as:

• Build SeaBIOS with CONFIG_CSM
• Drop the resulting Csm16.bin into OvmfPkg/Csm/Csm16/ in the EDK2 tree
• Build EDK2 with -DCSM_ENABLE


Thanks David, follow these steps, I can reproduce the OVMF-with-csm.fd.
However, I find that when I choose remotes/origin/master branch, after compiling, qemu+kvm+ovmf+winxp can't 
boot up, but when I choose remotes/origin/UDK2018, the compiled OVMF.fd can work.
So the latest edk2 code have removed CSM support? Could I apply the CSM patch to 
the latest edk2 code to support my work because our project is based on the latest EDK2 code, thanks.

Someone else mailed me recently to say they'd copied the Csm packages
over from OvmfPkg to Quark and had Windows booting on Galileo boards.

Hm, I wonder if we should move the CSM support out of OVMF and into
somewhere more generic, since it really is generic and not platform-
specific?

I can't make some decisions, from my view, maybe CSM module can be 
an independent patch for user to apply or reject :)


Laszlo Ersek
 

On 10/11/19 16:35, David Woodhouse wrote:
On Fri, 2019-10-11 at 16:27 +0200, Laszlo Ersek wrote:
On 10/11/19 09:44, Gao, Junhao wrote:
Hi David

I have found this compiled OVMF-with-csm.fd can support winxp booting up.
OVMF-with-csm.fd path: https://www.kraxel.org/repos/jenkins/seabios/seabios.git-csm-1.12.0-33.63.g43f5df7.x86_64.rpm
Then could you help to provide me the compile method and base code to reproduce this OVMF-with-csm.fd?
Ah, good point, I should have remembered that Gerd offers a CSM build in
his repo!

So, you can easily look up the build instructions, in Gerd's SeaBIOS and
OVMF RPM "spec" files. Check out these git repositories:

https://git.kraxel.org/cgit/jenkins/seabios/
https://git.kraxel.org/cgit/jenkins/edk2/

Specifically:

https://git.kraxel.org/cgit/jenkins/seabios/tree/seabios.git.spec
https://git.kraxel.org/cgit/jenkins/edk2/tree/edk2.git.spec.template
Right, thanks.

Ultimately it's as simple as:

• Build SeaBIOS with CONFIG_CSM
• Drop the resulting Csm16.bin into OvmfPkg/Csm/Csm16/ in the EDK2 tree
• Build EDK2 with -DCSM_ENABLE

Someone else mailed me recently to say they'd copied the Csm packages
over from OvmfPkg to Quark and had Windows booting on Galileo boards.

Hm, I wonder if we should move the CSM support out of OVMF and into
somewhere more generic, since it really is generic and not platform-
specific?
We moved the CSM infrastructure under OvmfPkg because IntelFrameworkPkg
/ IntelFrameworkModulePkg were slated for removal, and this was how we
could salvage the CSM:

https://bugzilla.tianocore.org/show_bug.cgi?id=1811

We could likely move it out of OVMF, but if the destination is still the
edk2 tree -- which I would strongly prefer, as long as we support the
CSM at all --, then it will take a new top level directory (CsmPkg, for
example).

No other package maintainer was willing to maintain the CSM, and even
under OvmfPkg, I agreed to it only if you'd assume its reviewership. So
now you'd likely have to introduce CsmPkg, and become its sole (or
primary) maintainer.

I'm 100% OK with that. (Both as OvmfPkg co-maintainer, and as one of the
stewards that might have to ACK (I think?...) the creation of another
top-level directory).

Thanks
Laszlo