aboutsummaryrefslogtreecommitdiff
path: root/util/ADLO/README
diff options
context:
space:
mode:
Diffstat (limited to 'util/ADLO/README')
-rw-r--r--util/ADLO/README231
1 files changed, 0 insertions, 231 deletions
diff --git a/util/ADLO/README b/util/ADLO/README
deleted file mode 100644
index d1ad9754a2..0000000000
--- a/util/ADLO/README
+++ /dev/null
@@ -1,231 +0,0 @@
-==========================================
-$Id: README,v 1.1 2002/11/25 02:07:53 rminnich Exp $
-==========================================
-
-ADLO
-
- A project to combine coreboot and BOCHS BIOS to add support
- for booting legacy applications, such as Microsoft Windows.
-
-==========================================
-
-Boot Overvew:
-
- ADLO requires an boot loader with ELF support.
- In our case it is either coreboot or EtherBOOT.
-
- Sample execution paths:
-
-coreboot -> ADLO -> LILO -> LINUX
-
-coreboot -> EtherBOOT -> ADLO -> LILO -> LINUX
-
- Then it can start any real mode application.
- In our case it could be LILO or GRUB, but
- choices are not limited to this.
-
-==========================================
-
-ADLO overview:
-
- -Elf header
- -mainteance routines
- -bochs bios
- -vga bios
-
-------------------------------------------
-
-Elf header
-
- hand crafted binary. Currently there are 3 diff binaries
- for three different sizes of payload (65kb,113kb,129kb).
-
- they are catted at beginning of file
-
-------------------------------------------
-
-mainteance routines
-
- this is the loader.s file which gets compiled into loader.o binary
-
- it is catted 2nd right after elf header and it is where
- control is being transfered when the elf is executed.
-
- it consist of :
- -tuneups:
- select device to boot
- set memory for Int15/EAX=E820
- enable LBA
- copy coreboot table [TODO]
- -shadow :
- enable/write/read
- -copy:
- bochs @ 0xF00000
- video bios (binary only) @ 0xC00000
- -switch
- from Real to Protected Mode
- -jump
- jmp to the bios at 0xFFFF:0x0000
-
- we must have bios payload always at 1kb
- offset from start of ELF payload so loader.o
- must be always 1024 bytes.
-
-------------------------------------------
-
-BOCHS BIOS
-
- we have taken the boch's project and just extracted
- its bios from it only. it took us (so far) only
- minor modifications in order to make it work.
-
- basically it is the following directory in the
- bochs sources
-
- bochs-cvs/bochs/bios
-
- of all files there the rombios.c is the key file.
- Most of the times our patches are against current
- version of the rombios.c file. We try to feed back
- the patches to bochs maintainers so that's possible
- to use the bochs bios as is.
-
- the boch's related stuff are in bochs subdirectory.
-
- building boch's bios is as simple as
-
- cd bochs/bochs-cvs/bochs/bios
- make
-
- the resulting file rombios.bin is our bios image.
-
- -----
- At present time, it is recommended to use
- dev86-0.16.3 + my patch in order to compile
- bochs' bios. The dev86 package can be found
- at:
-
- http://www.cix.co.uk/~mayday/
-
- prepatched sources at:
-
- http://www.missl.cs.umd.edu/~adam/dev86-0.16.3-MSR.tgz
-
-------------------------------------------
-
-Video BIOS
-
- Video BIOS we use is binary only, so far.
-
- At the present time we are using the original
- Video BIOS as supplied from the system.
-
- To get the image simply type:
-
- make makevideobios
-
- The right thing will happen. For refernece the
- magic line in the Makefile is:
-
- videobios:
- dd if=/proc/kcore \
- of=./video.bios.bin \
- bs=1 count=65536 skip=790528
-
- ---------------
-
- We assume it is located at 0xC00000-0xE00000
- and we use 'dd and /proc/kcore to extract it
- (obviously it works as root only).
-
- Obviously it needs to be done with original
- (as shipped by manufactuer bios) so it should
- be done as the first step of the ADLO setup.
-
- ---------------
-
- The /proc/kcore is in ELF format (linux kernel
- 2.4.x and later) so if we want to get accurate
- image of ram we must skip the ELF header.
- The magic command is :
-
- readelf -a /proc/kcore
-
-Program Headers:
- Type Offset VirtAddr PhysAddr FileSiz MemSiz
- NOTE 0x0007d4 0x00000000 0x00000000 0x005b0 0x00000
- LOAD 0x001000 0xc0000000 0x00000000 0xff60000 0xff60000
- ^^^^^^^^
-
- There we look for the first LOAD section, and see what
- is its offset (for us it is 0x1000)
-
- ---------------
-
- 64KiB = 65536
-
- 0x0C 00 00 + 0x10 00 = 790528
-
- ---------------
-
- On technical note in our case video bios
- is just 48kb, but for paranoia sake we copy
- 64kb.
-
-==========================================
-
-Environment overview
-
-ADLO is an ELF file and thus can be loaded either directly from 1)
-coreboot, or 2) via EtherBOOT, or 3) via EtherBOOT+ AA patch for FS
-support.
-
-1)
-Both coreboot and ADLO are on the same EEPROM chip. From end-user
-viewpoint it is probably the most similar to the bios classic.
-(computer boots up and just loads whatever is in MBR).
-
-2)
-Set it up in /tftpboot directory on dhcp/tftp server and have it served
-from there. (this is how we did the development)
-
-3)
-Use AA patch and put it as /kernel file and it will be then loaded by
-etherboot from local hard disk.
-
-
-------------------------------------------
-
-Before ADLO starts.
-
- ADLO requires an boot loader with ELF support.
- In our case it is:
-
- -coreboot
- -coreboot and EtherBOOT
- -coreboot and EtherBOOT + AA polled I/O patch (w/ FS support).
-
- As little as coreboot only is required to get ADLO
- up and running.
-
- For development purposes it is recommended full set of
- coreboot + EtherBOOT and boot via DHCP/TFTP.
-
-------------------------------------------
-
-After ADLO finish.
-
- ADLO will attempt to locate the first hard disk
- and read MBR from it and execute.
-
- Then it can start any real mode application.
- In our case it could be LILO or GRUB
- but choices are not limited to this.
-
- In our case it would cause LILO to load
- (fully usable) and from there it was able to
- execute simple programs. so far the list
- of the program is limited to linux which
- runs somewhat. More to come in future.
-
-==========================================