Although this article mentions ADLO, ADLO has been superseded by [[SeaBIOS]] which supports more recent Windows versions out of the box. Please read the [[SeaBIOS]] instructions if you want to boot Windows.

+

+

This page is outdated! The [[SeaBIOS]] page explains what you need.

+

</div>

−

LinuxBIOS itself has many positive aspects that should be made widely available. In order to make LinuxBIOS a very strong alternative firmware for PC's we cannot afford not considering support for windows since it owns about 90% in the PC market.

=== Project Overview ===

=== Project Overview ===

−

This project was accepted for the Google Summer Of Code 2007 and its main goal is to figure out how to boot Windows Vista/XP/2003. There is not a chosen approach to achieve that. Having a dedicated LinuxBIOS loader is the most desired solution but since some success has been reported using [http://www.linuxbios.org/ADLO ADLO], it has been chosen in this phase of understanding better the problem.

+

This project was accepted for the Google Summer Of Code 2007 and its main goal is to figure out how to boot Windows Vista/XP/2003. There is not a chosen approach to achieve that. Having a dedicated coreboot loader is the most desired solution but since some success has been reported using [http://www.coreboot.org/ADLO ADLO], it has been chosen in this phase of understanding better the problem.

Instead of a real hardware, [http://qemu.org/ QEMU] emulator will be used since it is easily available for anyone who wishes to contribute.

Instead of a real hardware, [http://qemu.org/ QEMU] emulator will be used since it is easily available for anyone who wishes to contribute.

Line 12:

Line 14:

I intend to describe in detailed all the steps taken up to now and some of the problems faced. My first goal is to repeat the stages to boot windows 2000 described in the paper entitled [http://www.usenix.org/events/usenix03/tech/freenix03/agnew/agnew_html/index.html/ Flexibility in ROM: A Stackable Open Source BIOS]. After that, we will focus on windows XP and Vista that require a more complicated support.

I intend to describe in detailed all the steps taken up to now and some of the problems faced. My first goal is to repeat the stages to boot windows 2000 described in the paper entitled [http://www.usenix.org/events/usenix03/tech/freenix03/agnew/agnew_html/index.html/ Flexibility in ROM: A Stackable Open Source BIOS]. After that, we will focus on windows XP and Vista that require a more complicated support.

−

Any suggestion is welcome, please use the [[Mailinglist|LinuxBIOS mailing list]] or email [mailto:augusto.pedroza@gmail.com Augusto Pedroza].

+

Any suggestion is welcome, please use the [[Mailinglist|coreboot mailing list]] or email [mailto:augusto.pedroza@gmail.com Augusto Pedroza].

Check the [http://tracker.linuxbios.org/trac/LinuxBIOS/browser/trunk/LinuxBIOSv2/util/ADLO/README README] file to see some information about installing as86 + patch in order to compile bochs' bios. You can also get a [http://www.cix.co.uk/~mayday/ prepatched version] of as86. I downloaded the newest version and patched it.

+

After running ''make'', a file named ''payload'' will be generated.

After running ''make'', a file named ''payload'' will be generated.

−

== Building LinuxBIOSv2 ==

+

== Building coreboot v2 ==

−

Now it is time to build linuxBIOS.

+

Now it is time to build coreboot.

−

$ cd LinuxBIOSv2/targets/emulation/qemu-i386

+

$ cd coreboot-v2/targets/emulation/qemu-i386

You should edit the Config.lb file, where it says payload put the path of the file generated by ADLO. It should look like this:

You should edit the Config.lb file, where it says payload put the path of the file generated by ADLO. It should look like this:

* payload path/to/adlo/payload

* payload path/to/adlo/payload

Line 79:

Line 91:

$ make

$ make

−

This creates the LinuxBIOS image (qemu-bios.rom). Copy this file to a specific folder and rename it to bios.bin.

+

This creates the coreboot image (qemu-bios.rom). Copy this file to a specific folder and rename it to bios.bin.

−

== Building LinuxBIOSv3 ==

+

== Building coreboot v3 ==

−

Now it is time to build linuxBIOSv3.

+

Now it is time to build coreboot v3.

You should first download it:

You should first download it:

−

$ svn co svn://linuxbios.org/repository/LinuxBIOSv3

+

$ svn co svn://coreboot.org/repository/coreboot-v3

−

$ cd LinuxBIOSv3/util

+

$ cd coreboot-v3/util

−

$ svn co svn://linuxbios.org/repos/trunk/LinuxBIOSv2/util/ADLO

+

$ svn co svn://coreboot.org/repos/trunk/coreboot-v2/util/ADLO

−

$ Apply patch that puts ADLO into LinuxBIOSv3

+

$ Apply patch that puts ADLO into coreboot-v3

$ make menuconfig

$ make menuconfig

There are few options that should be enabled:

There are few options that should be enabled:

Line 97:

Line 109:

$ make

$ make

−

This creates a LinuxBIOS image named /build/bios.bin. Copy this file to a specific folder. I will call this folder 'LinuxBIOS_bios/'

+

This creates a coreboot image named /build/bios.bin. Copy this file to a specific folder. I will call this folder 'coreboot_bios/'

== Creating an Appropriate Disk Image ==

== Creating an Appropriate Disk Image ==

Line 108:

Line 120:

−

Windows seems to be very sensitive to BIOS changes. I got the following error when installing windows with QEMU default BIOS and later trying to run it using LinuxBIOS:

+

Windows seems to be very sensitive to BIOS changes. I got the following error when installing windows with QEMU default BIOS and later trying to run it using coreboot:

Before executing the next command, copy a file named ''vgabios-cirrus.bin'' to the same folder where the ''bios.bin'' file is, in my case, LinuxBIOS_bios/. This file can be found in the qemu directory at ''qemu-0.9.0/pc-bios''.

+

Before executing the next command, copy a file named ''vgabios-cirrus.bin'' to the same folder where the ''bios.bin'' file is, in my case, coreboot_bios/. This file can be found in the qemu directory at ''qemu-0.9.0/pc-bios''.

Project Overview

This project was accepted for the Google Summer Of Code 2007 and its main goal is to figure out how to boot Windows Vista/XP/2003. There is not a chosen approach to achieve that. Having a dedicated coreboot loader is the most desired solution but since some success has been reported using ADLO, it has been chosen in this phase of understanding better the problem.

Instead of a real hardware, QEMU emulator will be used since it is easily available for anyone who wishes to contribute.

I intend to describe in detailed all the steps taken up to now and some of the problems faced. My first goal is to repeat the stages to boot windows 2000 described in the paper entitled Flexibility in ROM: A Stackable Open Source BIOS. After that, we will focus on windows XP and Vista that require a more complicated support.

Building QEMU

Configure and make QEMU (use the --cc option if your default gcc is newer than version 3.4):

If you need some bios debug messages from qemu add --extra-cflags="-DDEBUG_BIOS" to the configuration line below.
Since coreboot already outputs debug messages without this option, turning it on will mess Qemu output error
messages. It is useful for some situations though.

Download these two patches and save them in the QEMU source directory:

Exit and when asked to generate a config file say yes. After, execute:

$ make

This creates a coreboot image named /build/bios.bin. Copy this file to a specific folder. I will call this folder 'coreboot_bios/'

Creating an Appropriate Disk Image

Installing Windows

There are few options to create an image, I chose to use the qemu-img tool.
Create an image no smaller than 1.2GB to avoid any kind of problems during windows installation. The qcow format is very appropriate because will only take up as much space as is really needed. Since I wanted to install a small version of linux, I created an image of 2GB.

$ qemu-img create -f qcow /path/to/win.cow 2000M

Insert the installation CD, and install Windows 2000/XP in the QEMU image. During the installation process you can choose whether ACPI support is desired. This is done pressing F7 or F5 during the screen with the message "press F6 if you need to install a SCSI or RAID controller" on the bottom. F7 lets windows choose the most appropriate option. F5 shows all the available options so the user can choose. I have successfully tested a win2k and a winXP images with and without ACPI support on.

Windows seems to be very sensitive to BIOS changes. I got the following error when installing windows with QEMU default BIOS and later trying to run it using coreboot:
*** STOP: 0x0000007B (0xF781B84C,0xC0000034,0x00000000,0x00000000) INACCESSIBLE_BOOT_DEVICE[1].

So, the BIOS used during windows installation should be the same as the one that will be used to run windows.

Before executing the next command, copy a file named vgabios-cirrus.bin to the same folder where the bios.bin file is, in my case, coreboot_bios/. This file can be found in the qemu directory at qemu-0.9.0/pc-bios.
Then run:

Useful Links

This file is licensed under the Creative CommonsAttribution ShareAlike 3.0 License.In short: you are free to share and make derivative works of the file under the conditions that you appropriately attribute it, and that you distribute it only under a license identical to this one.