133 lines
4.7 KiB
Text
133 lines
4.7 KiB
Text
|
Welcome to OpenBIOS
|
||
|
-------------------
|
||
|
|
||
|
OpenBIOS is a free, portable implementation of IEEE 1275-1994
|
||
|
(Open Firmware). Find detailed information about OpenBIOS at
|
||
|
http://www.openbios.org/
|
||
|
|
||
|
What is OpenBIOS?
|
||
|
-----------------
|
||
|
|
||
|
OpenBIOS can replace your system firmware (BIOS) partly or completely. It
|
||
|
can also be used as a bootloader to create an Open Firmware compatible
|
||
|
interface between legacy firmware and an operating system.
|
||
|
|
||
|
This is achieved by a modular concept that consists of a portable Forth
|
||
|
kernel and three interfaces for user interaction, device initialization
|
||
|
and client (operating system) control.
|
||
|
|
||
|
While far not all possible applications of OpenBIOS are implemented yet,
|
||
|
a lot of functionality is already there. OpenBIOS can be used to enhance
|
||
|
LinuxBIOS (http://www.linuxbios.org), or be booted from any multiboot
|
||
|
capable bootloader to bring Open Firmware to your machine. OpenBIOS can
|
||
|
also be used when an operating system is already running. It provides
|
||
|
the needed OpenFirmware functionality to MOL (MacOnLinux) to boot MacOS
|
||
|
9 and X on PPC machines, as well as Linux (all supported platforms)
|
||
|
|
||
|
OpenBIOS build options
|
||
|
---------------------
|
||
|
|
||
|
config/scripts/switch-arch <platform> - build for specified platform
|
||
|
Look in config/example for
|
||
|
platforms.
|
||
|
|
||
|
make - build all configured binaries
|
||
|
|
||
|
make run - run unix example.
|
||
|
|
||
|
|
||
|
How OpenBIOS works
|
||
|
------------------
|
||
|
|
||
|
The OpenBIOS forth core is split into a forth kernel written in portable
|
||
|
C and a forth dictionary which operated on by the kernel.
|
||
|
|
||
|
When building the forth core, you get different versions of
|
||
|
the forth kernel:
|
||
|
|
||
|
* a unix executable program
|
||
|
|
||
|
- to execute a forth dictionary from a file. This can be used for
|
||
|
easily testing and developing OpenBIOS on a unix host.
|
||
|
|
||
|
- to create a dictionary file. Such a dictionary file sets up
|
||
|
all of the forth language. Primitives are indexed to save relocations.
|
||
|
|
||
|
The default is to create a forth dictionary forth.dict from
|
||
|
forth/start.fs. This file includes all of the basic forth language
|
||
|
constructs from forth/bootstrap.fs and starts the interpreter.
|
||
|
|
||
|
To achieve this, the hosted unix version contains a basic set of
|
||
|
forth words coded in C that allow creating a full dictionary.
|
||
|
|
||
|
* a varying number of target specific binaries. On x86 you can start
|
||
|
openbios for example from GRUB or LinuxBIOS. They are all based on
|
||
|
the same forth engine consisting of a dictionary scheduler, primitive
|
||
|
words needed to build the forth environment, 2 stacks and a simple
|
||
|
set of console functions. These binaries can not be started directly
|
||
|
in the unix host environment.
|
||
|
|
||
|
Requirements
|
||
|
------------
|
||
|
* gcc
|
||
|
* gnu make
|
||
|
* OpenBIOS FCode Utils
|
||
|
Download with svn co svn://openbios.org/openbios/fcode-utils
|
||
|
* grub or any other multiboot loader to run the multiboot
|
||
|
binary "openbios.multiboot" with it's module "openbios-<platform>.dict"
|
||
|
* xsltproc
|
||
|
|
||
|
Building & Usage
|
||
|
----------------
|
||
|
|
||
|
* make
|
||
|
|
||
|
this builds "openbios.multiboot", the standalone image and "openbios-unix",
|
||
|
the hosted image. Additionally it creates a forth dictionary
|
||
|
file from forth/start.fs. All generated files are written to
|
||
|
the absolute directory held by the variable BUILDDIR, which defaults
|
||
|
to obj-[platform]. Some compile time parameters can be tweaked in
|
||
|
include/config.h
|
||
|
|
||
|
* use "openbios-unix" to create a forth dictionary on your own:
|
||
|
$ obj-x86/openbios-unix -Iforth start.fs
|
||
|
creates the file forth.dict from forth source forth/start.fs.
|
||
|
|
||
|
* use "openbios-unix" to run a created dictionary:
|
||
|
$ obj-x86/openbios-unix obj-x86/openbios-unix.dict
|
||
|
This is useful for testing
|
||
|
|
||
|
* booting openbios
|
||
|
You can boot openbios i.e. in grub. Add the following lines to
|
||
|
your menu.lst:
|
||
|
|
||
|
title openbios
|
||
|
kernel (hd0,2)/boot/openbios.multiboot
|
||
|
module (hd0,2)/boot/openbios-x86.dict
|
||
|
|
||
|
Note: change (hd0,2) to the partition you copied the openbios image and
|
||
|
openbios-x86.dict to.
|
||
|
|
||
|
To boot OpenBIOS from LinuxBIOS/etherboot, you can either use
|
||
|
"openbios-plain.elf" or "openbios-builtin.elf":
|
||
|
|
||
|
- openbios-plain.elf is the pure kernel that loads the dictionary from a
|
||
|
hardcoded address in flash memory (0xfffe0000)
|
||
|
|
||
|
- openbios-builtin.elf also includes the dictionary directly so that it
|
||
|
can be easily used from etherboot or the LinuxBIOS builtin ELF
|
||
|
loader without taking care of the dictionary
|
||
|
|
||
|
CREDITS
|
||
|
-------
|
||
|
OpenBIOS was developed by Stefan Reinauer, Samuel Rydh and Patrick Mauritz.
|
||
|
The OpenBIOS IDE driver was written by Jens Axboe.
|
||
|
For license details on this piece of software, see the file COPYING.
|
||
|
|
||
|
|
||
|
If you have patches, questions, comments, feel free to contact the OpenBIOS
|
||
|
mailinglist.
|
||
|
|
||
|
Regards,
|
||
|
the OpenBIOS team
|