Difference between revisions of "ADLO"

From coreboot
Jump to: navigation, search
m (What is ADLO?)
m
 
(36 intermediate revisions by 7 users not shown)
Line 1: Line 1:
 +
<div style="margin-top:0.5em; padding:0.5em 0.5em 0.5em 0.5em; background-color:#ffdfdf; align:right; border:1px solid #aabbcc;">
 +
ADLO has been superseded by [[SeaBIOS]]. Please don't use ADLO for new installations anymore.
 +
</div>
 +
 +
 
== What is ADLO? ==
 
== What is ADLO? ==
  
ADLO is a glue layer which bonds LinuxBIOS to the 16-bit PC
+
ADLO is a Add-on layer that bonds to the coreboot project and it derives from the 16-bit PC-BIOS of the Bochs emulator project.
BIOS of the Bochs project.
+
  
It was originally written by Adam Sulmicki.
+
----
  
See the following url:
 
  
http://www.missl.cs.umd.edu/sebos_phase2.html
+
On Sun Nov 24th, 2002 at 22:30:42 UTC, Adam Sulmicki announced via [http://www.coreboot.org/pipermail/coreboot/2002-November/001191.html coreboot mailing list] that him and a group of collegues ([http://www.missl.cs.umd.edu/sebos_phase2.html SEBOS team]) were successful at creating ADLO. ADLO was accomplished by developing software that combined elements from two rather successful projects:
 +
coreboot (back then: LinuxBIOS) and BOCHS - with some help of the Etherboot project. The use of coreboot and BOCHS Bios source had helped them to create a wrapper to successfully boot a (Windows 2000 OS, OpenBSD, and Linux via GRUB or LILO as bootloaders) without a legacy, proprietary 16 bit BIOS.
  
Since the Bochs bios provides many of legacy BIOS services it allows you to boot some OS's that depend on those services.
+
With contribution from a grant from DARPA under the CHATS program, <b>Adam Sulmicki</b>, <b>Adam Agnew</b> and <b>William Arbaugh</b> had created a new way to succesfully boot multiple OS's without the need of proprietary software such as any BIOS from the market leaders AMI or Award.
  
== What bios services does ADLO provide and when would I need them. ==
+
The wrapper was originally written by [http://www.eax.com/ Adam Sulmicki.] and the [http://www.missl.cs.umd.edu/sebos_phase2.html SEBOS team].
 +
 
 +
Since Bochs BIOS provides many of the legacy BIOS services required by some x86 OS's it allows you to boot OS's that depend on those services.
 +
 
 +
The original release Supported OS's were:
 +
 
 +
1.Windows 2000 OS
 +
 
 +
2.OpenBSD
 +
 
 +
3.Linux via GRUB or LILO
 +
 
 +
 
 +
At the time of ADLO launch the group was still working on supporting FreeBSD and Windows XP, they had also expected to improving ATA support will permit Win98 and WinXP to boot successfully with ADLO, also adding PIRQ support wich would permit FreeBSD to boot with ADLO.
 +
 
 +
Before the team made the ADLO source code public it was called the SEBOS project.
 +
The motherboard used for testing was a <b>Matsonic 7308e</B> motherboard, and the support for ADLO on other motherboards was limited to that of the coreboot project at the time of release (Nov 2002).
 +
 
 +
The SEBOS team had also created it's adaptations to add security and encryption to an OS bootloader that has been  missing in a 16-bit proprietary PC-BIOS for decades. ADLO is a simple wrapper that binds to the Bochs BIOS which allows coreboot to make use of the BIOS interrupt services. ADLO can be found in the coreboot-v2/util/ADLO directory in the coreboot subversion. Instructions for using ADLO can be found in the README contained within the source files.
 +
 
 +
Find out more at the team's website at :
 +
 
 +
http://www.missl.cs.umd.edu/sebos.html
 +
http://www.missl.cs.umd.edu/sebos_phase2.html
 +
 
 +
== What is the current status and builds and contributions? ==
 +
 
 +
<B>At the moment we are working with the original developer of ADLO to see if we can update the Wrapper and make future builds that can boot operating systems that require further 16-bit BIOS information and services like Windows XP and Windows Vista that are currently not supported with ADLO.</B>
 +
 
 +
Not much has change from the original release of ADLO and we need a change badly. Keep in mind that the original release was back in Nov 2002.
 +
 
 +
WE ALSO NEED PEOPLE LIKE YOU WHO ARE INTERESTED IN CONTRIBUTING IN THE PROJECT.
 +
 
 +
If you can contribute, in any way to the ADLO project Please let US know. Contact bootblock at techgx.net with ideas, troubleshooting, or things that you know has worked for you.
 +
experiments with coreboot and ADLO and other motherboards
 +
 
 +
 
 +
 
 +
== What bios services does ADLO provide and when would I need them ? ==
  
 
The full gory details for XP are at:
 
The full gory details for XP are at:
Line 22: Line 64:
 
  http://www.missl.cs.umd.edu/winint/index1.html
 
  http://www.missl.cs.umd.edu/winint/index1.html
  
== How do I get LinuxBIOS to boot ADLO? ==
+
Microsoft also published an article about their use of BIOS here:
  
ADLO compiles as an ELF image so you have to set up LinuxBIOS to elf boot
+
  http://www.microsoft.com/whdc/archive/Lf.mspx
just as if you were using etherboot. Go read the etherboot IDE section of
+
this faq and get to where you can boot etherboot.
+
  
ADLO is distributed with LinuxBIOS in the freebios/util/ADLO directory.
+
== What bootloaders work with ADLO? ==
  
Int that directory are some README's.  Make sure you have read them.
+
Currently known to work are:
 +
* LILO
 +
* GRUB
 +
* NTLDR (Windows 2000)
  
Compiling ADLO is quite simple.  Mostly you just type 'make'  You need a copy
+
There is no technical reason why it couldn't work with *BSD, (Free)Dos,
of your video BIOS if you want VGA to work.  Again see the README.
+
and other versions of Windows after some tweaking.
  
Out-of-the box ADLO probally won't boot unless you are using the exact
+
We need Beta testers to start testing
mainboard that the ADLO project uses. The reason is that various areas of
+
* freeldr (React OS)
shadowing must be enabled for ADLO to boot.
+
* NTLDR (Windows XP)
 +
* NTLDR (Windows XP embedded)
 +
* NTLDR (Windows 2003)
 +
* and Vista via EFI or Boot Manager BCD
 +
 
 +
== Where is ADLO? ==
 +
 
 +
ADLO is part of the coreboot v2 repository under [http://coreboot.org/viewvc/trunk/coreboot-v2/util/ADLO/ coreboot-v2/util/ADLO].
 +
 
 +
An older version was already part of coreboot v1 and is available at the [http://www.coreboot.org/viewcvs/trunk/LinuxBIOSv1/util/ADLO/ coreboot-v1/util/ADLO] directory.
 +
 
 +
== How do I get coreboot to boot ADLO? ==
 +
 
 +
ADLO compiles as an ELF image so you have to set up coreboot to elf boot just as if you were using any other ELF payload. In the [http://www.coreboot.org/viewcvs/trunk/LinuxBIOSv2/util/ADLO/ ADLO directory] are some READMEs.  Make sure you have read them.
 +
 
 +
Compiling ADLO is quite simple.  Mostly you just type ''make''  You will need the 16-bit assembler as86 installed to build the Bochs BIOS.  You will also need a copy of your video BIOS if you want VGA to work.  Again see the README.
 +
 
 +
=== BIOS shadowing ===
 +
 
 +
Out-of-the box ADLO probally won't boot unless you are using the exact mainboard that the ADLO project uses which is the <b>Matsonic 7308e</b>. The reason is that various areas of shadowing must be enabled for ADLO to boot. (FIXME: please explain)
 +
 
 +
If you see '''elfboot''' indicate that it is 'Jumping to boot code at 0x7c00' and then the board resets or hangs then its very likely that your shadow settings are incorrect. Applying the serial debug patch to ADLO can help you further investigate this.
 +
 +
<div style="margin-top:0.5em; padding:0.5em 0.5em 0.5em 0.5em; background-color:#ffdfdf; align:right; border:1px solid #aabbcc;">
 +
FixMe Where is the ''de facto'' location for the serial patch?
 +
</div>
 +
 
 +
The shadow settings are set in '''loader.s''' in the freebios/util/ADLO.  Find section B.  These are writes to PCI space that enable various areas of shadowing.
 
 
If you see elfboot indicate that its 'Jumping to boot code at 0x7c00' and
+
Technically, all you need is only 64kb at 0xF0000 and 64kb at 0xC0000. Your mileage may vary.  Start by enabling Read/Write for all shadow ranges supported by your chipset and then back off to 0xF0000 and 0xC0000 after you get it working.
then the board resets or hangs then its very likely that your shadow settings
+
 
are incorrect.
+
=== Video BIOS ===
+
 
Applying the serial debug patch to ADLO can help you further investigate
+
The ADLO Makefile will copy your video bios from an existing setup.  See the '''README''' and '''Makefile''' for details.
this. /!\ Where is the defacto location for the serial patch?
+
 
+
ADLO expects the video bios to be 64k in size whereas a lot of video BIOS images are only 32k.  You can solve this by just duplicating in the same file and then letting ADLO use that.  Some creative work with 'dd' and padding would achieve the same result.
The shadow settings are set in loader.s in the freebios/util/ADLO.  Find
+
 
section B)  These are writes to PCI space that enable various areas of
+
=== Serial Output ===
shadowing.
+
 
+
Lastly if you have applied the serial debug patch to BOCHS then '''all''' the output is routed out to the serial port so your video screen will be blank.  
Technically all you need is the only 64kb at 0xF0000 and 64kb at 0xC0000.  
+
However VSYNC will still be generated if the video chip is initialized properly.  You can watch for VSYNC with a Oscope or plug a newer type monitor up to the video output.  Most modern monitors will tell you when they can/can't find the VSYNC signal.  Note you may have to power cycle the monitor between attempts as sometimes they can get very confused.
Your mileage may vary.  I would start by enabling Read/Write for all shadow  
+
ranges supported by your chipset and then backing off to 0xF0000 and 0xC0000  
+
after you get it working.
+
+
The ADLO makefile will copy your video bios from an existing setup.  See the  
+
README and makefile for details.  
+
+
If you have one of the BIOS kits provided by the video chipset mfg for your
+
board then you may have a stock image an then a program that allows you to
+
customize the stock image.  If so then you need to set things up so that the
+
video bios is set to be loaded at 0x0C0000 (sometimes called the C000
+
segment)
+
+
Also I found that ADLO expected the video bios to be 64k in size whereas my
+
image file was only 32k.  I solved this by just copying it twice in the same  
+
file and then letting ADLO use that.  Some creative work with 'dd' would  
+
probally achieve the same result.
+
+
Lastly if you have applied the serial debug patch to BOCHS then _all_ the  
+
output is routed out to the serial port so your video screen will be blank.  
+
However VSYNC will still be generated if the video chip is initialized  
+
properly.  You can watch for VSYNC with a Oscope or plug a newer type monitor  
+
up to the video output.  Most modern monitors will tell you when they  
+
can/can't find the VSYNC signal.  Note you may have to power cycle the  
+
monitor between attempts as sometimes they can get very confused.
+

Latest revision as of 15:47, 21 January 2009

ADLO has been superseded by SeaBIOS. Please don't use ADLO for new installations anymore.


Contents

What is ADLO?

ADLO is a Add-on layer that bonds to the coreboot project and it derives from the 16-bit PC-BIOS of the Bochs emulator project.



On Sun Nov 24th, 2002 at 22:30:42 UTC, Adam Sulmicki announced via coreboot mailing list that him and a group of collegues (SEBOS team) were successful at creating ADLO. ADLO was accomplished by developing software that combined elements from two rather successful projects: coreboot (back then: LinuxBIOS) and BOCHS - with some help of the Etherboot project. The use of coreboot and BOCHS Bios source had helped them to create a wrapper to successfully boot a (Windows 2000 OS, OpenBSD, and Linux via GRUB or LILO as bootloaders) without a legacy, proprietary 16 bit BIOS.

With contribution from a grant from DARPA under the CHATS program, Adam Sulmicki, Adam Agnew and William Arbaugh had created a new way to succesfully boot multiple OS's without the need of proprietary software such as any BIOS from the market leaders AMI or Award.

The wrapper was originally written by Adam Sulmicki. and the SEBOS team.

Since Bochs BIOS provides many of the legacy BIOS services required by some x86 OS's it allows you to boot OS's that depend on those services.

The original release Supported OS's were:

1.Windows 2000 OS

2.OpenBSD

3.Linux via GRUB or LILO


At the time of ADLO launch the group was still working on supporting FreeBSD and Windows XP, they had also expected to improving ATA support will permit Win98 and WinXP to boot successfully with ADLO, also adding PIRQ support wich would permit FreeBSD to boot with ADLO.

Before the team made the ADLO source code public it was called the SEBOS project. The motherboard used for testing was a Matsonic 7308e motherboard, and the support for ADLO on other motherboards was limited to that of the coreboot project at the time of release (Nov 2002).

The SEBOS team had also created it's adaptations to add security and encryption to an OS bootloader that has been missing in a 16-bit proprietary PC-BIOS for decades. ADLO is a simple wrapper that binds to the Bochs BIOS which allows coreboot to make use of the BIOS interrupt services. ADLO can be found in the coreboot-v2/util/ADLO directory in the coreboot subversion. Instructions for using ADLO can be found in the README contained within the source files.

Find out more at the team's website at :

http://www.missl.cs.umd.edu/sebos.html http://www.missl.cs.umd.edu/sebos_phase2.html

What is the current status and builds and contributions?

At the moment we are working with the original developer of ADLO to see if we can update the Wrapper and make future builds that can boot operating systems that require further 16-bit BIOS information and services like Windows XP and Windows Vista that are currently not supported with ADLO.

Not much has change from the original release of ADLO and we need a change badly. Keep in mind that the original release was back in Nov 2002.

WE ALSO NEED PEOPLE LIKE YOU WHO ARE INTERESTED IN CONTRIBUTING IN THE PROJECT.

If you can contribute, in any way to the ADLO project Please let US know. Contact bootblock at techgx.net with ideas, troubleshooting, or things that you know has worked for you. experiments with coreboot and ADLO and other motherboards


What bios services does ADLO provide and when would I need them ?

The full gory details for XP are at:

http://www.missl.cs.umd.edu/winint/index2.html

The full gory details for W2K are at:

http://www.missl.cs.umd.edu/winint/index1.html

Microsoft also published an article about their use of BIOS here:

http://www.microsoft.com/whdc/archive/Lf.mspx

What bootloaders work with ADLO?

Currently known to work are:

  • LILO
  • GRUB
  • NTLDR (Windows 2000)

There is no technical reason why it couldn't work with *BSD, (Free)Dos, and other versions of Windows after some tweaking.

We need Beta testers to start testing

  • freeldr (React OS)
  • NTLDR (Windows XP)
  • NTLDR (Windows XP embedded)
  • NTLDR (Windows 2003)
  • and Vista via EFI or Boot Manager BCD

Where is ADLO?

ADLO is part of the coreboot v2 repository under coreboot-v2/util/ADLO.

An older version was already part of coreboot v1 and is available at the coreboot-v1/util/ADLO directory.

How do I get coreboot to boot ADLO?

ADLO compiles as an ELF image so you have to set up coreboot to elf boot just as if you were using any other ELF payload. In the ADLO directory are some READMEs. Make sure you have read them.

Compiling ADLO is quite simple. Mostly you just type make You will need the 16-bit assembler as86 installed to build the Bochs BIOS. You will also need a copy of your video BIOS if you want VGA to work. Again see the README.

BIOS shadowing

Out-of-the box ADLO probally won't boot unless you are using the exact mainboard that the ADLO project uses which is the Matsonic 7308e. The reason is that various areas of shadowing must be enabled for ADLO to boot. (FIXME: please explain)

If you see elfboot indicate that it is 'Jumping to boot code at 0x7c00' and then the board resets or hangs then its very likely that your shadow settings are incorrect. Applying the serial debug patch to ADLO can help you further investigate this.

FixMe Where is the de facto location for the serial patch?

The shadow settings are set in loader.s in the freebios/util/ADLO. Find section B. These are writes to PCI space that enable various areas of shadowing.

Technically, all you need is only 64kb at 0xF0000 and 64kb at 0xC0000. Your mileage may vary. Start by enabling Read/Write for all shadow ranges supported by your chipset and then back off to 0xF0000 and 0xC0000 after you get it working.

Video BIOS

The ADLO Makefile will copy your video bios from an existing setup. See the README and Makefile for details.

ADLO expects the video bios to be 64k in size whereas a lot of video BIOS images are only 32k. You can solve this by just duplicating in the same file and then letting ADLO use that. Some creative work with 'dd' and padding would achieve the same result.

Serial Output

Lastly if you have applied the serial debug patch to BOCHS then all the output is routed out to the serial port so your video screen will be blank. However VSYNC will still be generated if the video chip is initialized properly. You can watch for VSYNC with a Oscope or plug a newer type monitor up to the video output. Most modern monitors will tell you when they can/can't find the VSYNC signal. Note you may have to power cycle the monitor between attempts as sometimes they can get very confused.