Rework payload handling to only provide two options:
- Payload file - No payload Document the current procedure in the README. Signed-off-by: Uwe Hermann <uwe@hermann-uwe.de> Acked-by: Stefan Reinauer <stepan@coresystems.de> git-svn-id: svn://coreboot.org/repository/LinuxBIOSv3@350 f3766cd6-281f-0410-b1cd-43a5c92072e9
This commit is contained in:
parent
e32e8c3144
commit
1e384b3bb9
4 changed files with 106 additions and 78 deletions
75
Kconfig
75
Kconfig
|
|
@ -76,71 +76,32 @@ menu "Payload"
|
|||
|
||||
choice
|
||||
prompt "Payload type"
|
||||
default PAYLOAD_ELF
|
||||
|
||||
config PAYLOAD_FILO
|
||||
bool "FILO"
|
||||
help
|
||||
TODO
|
||||
|
||||
config PAYLOAD_ETHERBOOT
|
||||
bool "Etherboot"
|
||||
help
|
||||
TODO
|
||||
|
||||
config PAYLOAD_MEMTEST86
|
||||
bool "Memtest86"
|
||||
help
|
||||
TODO
|
||||
|
||||
config PAYLOAD_LINUX
|
||||
bool "Linux kernel"
|
||||
help
|
||||
TODO
|
||||
default PAYLOAD_NONE
|
||||
|
||||
config PAYLOAD_ELF
|
||||
bool "Any ELF executable"
|
||||
bool "An ELF executable payload file"
|
||||
help
|
||||
TODO
|
||||
Select this option if you have a payload image (an ELF file)
|
||||
which LinuxBIOS should run as soon as the basic hardware
|
||||
initialization is completed.
|
||||
|
||||
config PAYLOAD_DUMMY
|
||||
bool "Dummy payload"
|
||||
You will be able to specify the location and file name of the
|
||||
payload image later.
|
||||
|
||||
config PAYLOAD_NONE
|
||||
bool "No payload"
|
||||
help
|
||||
For testing purposes only.
|
||||
Select this option if you want to create an "empty" LinuxBIOS
|
||||
ROM image for a certain mainboard, i.e. a LinuxBIOS ROM image
|
||||
which does not yet contain a payload.
|
||||
|
||||
For such an image to be useful, you have to use the 'lar' tool
|
||||
to add a payload to the ROM image later.
|
||||
|
||||
endchoice
|
||||
|
||||
config PAYLOAD_FILO_DIR
|
||||
string "FILO source code directory"
|
||||
depends PAYLOAD_FILO
|
||||
default "/tmp/filo-0.5"
|
||||
help
|
||||
The directory where the FILO source code is located.
|
||||
|
||||
config PAYLOAD_FILO_CONFIGFILE
|
||||
string "Filename of the FILO 'Config' file"
|
||||
depends PAYLOAD_FILO
|
||||
default "Config"
|
||||
help
|
||||
The filename of the FILO 'Config' file to use. This file must reside
|
||||
in the directory specified via PAYLOAD_FILO_DIR.
|
||||
|
||||
config PAYLOAD_LINUX_DIR
|
||||
string "Linux kernel source code directory"
|
||||
depends PAYLOAD_LINUX
|
||||
default "/usr/src/linux"
|
||||
help
|
||||
The directory where the Linux kernel source code is located.
|
||||
|
||||
config PAYLOAD_LINUX_CONFIGFILE
|
||||
string "Path and filename of the Linux .config file to use"
|
||||
depends PAYLOAD_LINUX
|
||||
default ".config" # FIXME!
|
||||
help
|
||||
The path and filename of the Linux .config file to use.
|
||||
|
||||
config PAYLOAD_ELF_FILE
|
||||
string "Path and filename of the ELF file to use as payload"
|
||||
config PAYLOAD_FILE
|
||||
string "Payload path and filename"
|
||||
depends PAYLOAD_ELF
|
||||
default "payload.elf"
|
||||
help
|
||||
|
|
|
|||
78
README
78
README
|
|
@ -6,7 +6,7 @@ LinuxBIOS is a Free Software project aimed at replacing the proprietary
|
|||
BIOS you can find in most of today's computers.
|
||||
|
||||
It performs just a little bit of hardware initialization and then executes
|
||||
one of many possible payloads, e.g. a Linux kernel.
|
||||
one of many possible payloads.
|
||||
|
||||
|
||||
Payloads
|
||||
|
|
@ -39,37 +39,90 @@ For details please consult:
|
|||
* http://www.linuxbios.org/Supported_Chipsets_and_Devices
|
||||
|
||||
|
||||
Building and Installing
|
||||
Building And Installing
|
||||
-----------------------
|
||||
|
||||
Note: Currently only the x86 QEMU target is supported in LinuxBIOSv3.
|
||||
|
||||
1) Build a payload:
|
||||
|
||||
For example: FILO.
|
||||
THIS IS NOT IMPLEMENTED YET. PLEASE BUILD YOUR PAYLOAD MANUALLY.
|
||||
|
||||
$ make payload
|
||||
|
||||
This step is optional. The 'make payload' command will execute a
|
||||
helper tool which allows you to easily build and configure a wide
|
||||
variety of payloads. The result of this step is usually a file
|
||||
called 'payload.elf' in the top-level directory.
|
||||
|
||||
2) Configure LinuxBIOS:
|
||||
|
||||
$ make menuconfig
|
||||
|
||||
Select at least the desired mainboard vendor, the mainboard device,
|
||||
the size of your ROM chip, and a payload.
|
||||
Select at least the desired mainboard vendor, the mainboard device, and
|
||||
the size of your ROM chip. Per default LinuxBIOS will look for a file
|
||||
called 'payload.elf' in the current directory and use that as the payload.
|
||||
|
||||
If that's not what you want, you can change the path/filename of the
|
||||
payload to use some other payload file. Or you can choose 'No payload'
|
||||
in the configuration menu, in which case the resulting LinuxBIOS ROM image
|
||||
will not contain any payload. You'll have to manually add a payload
|
||||
later using the 'lar' utility for the LinuxBIOS ROM image to be useful.
|
||||
|
||||
3) Build the LinuxBIOS ROM image:
|
||||
|
||||
$ make
|
||||
|
||||
The generated ROM image is build/linuxbios.rom.
|
||||
The generated ROM image is the file linuxbios.rom in the build/ directory.
|
||||
|
||||
4) You can now test the LinuxBIOS image using:
|
||||
4) Flash the LinuxBIOS ROM image on a BIOS chip:
|
||||
|
||||
$ flashrom -wv linuxbios.rom
|
||||
|
||||
NOTE: This step will OVERWRITE the current BIOS located on the ROM chip!
|
||||
Make sure you have adequate backup facilities before performing this
|
||||
step, otherwise you might not be able to recover in case of problems.
|
||||
If you have any questions, please contact us on the mailing list!
|
||||
|
||||
The 'flashrom' tool is located in util/flashrom where you can build it
|
||||
from source code by typing 'make'. Alternatively, your favorite Linux
|
||||
distribution might ship a 'flashrom' package which provides the 'flashrom'
|
||||
program in (e.g.) /usr/bin. On Debian GNU/Linux systems you can get
|
||||
the flashrom package via 'apt-get install flashrom'.
|
||||
|
||||
|
||||
Testing LinuxBIOS Without Modifying Your Hardware
|
||||
-------------------------------------------------
|
||||
|
||||
If you want to test LinuxBIOS without any risks before you really decide
|
||||
to use it on your hardware, you can use the QEMU system emulator to run
|
||||
LinuxBIOS virtually in QEMU.
|
||||
|
||||
The required steps are:
|
||||
|
||||
$ make menuconfig
|
||||
|
||||
Select 'Emulated systems' as mainboard vendor and 'QEMU x86' as
|
||||
mainboard model.
|
||||
|
||||
$ make
|
||||
|
||||
$ qemu -L build -hda /dev/zero -serial stdio
|
||||
|
||||
If you have a full QEMU image with a Linux distribution installed,
|
||||
you can boot that Linux kernel by using a proper FILO payload and typing:
|
||||
This will run LinuxBIOS in QEMU and output all debugging messages (which
|
||||
are usually emitted to a serial console) on stdout. It will not do
|
||||
anything useful beyond that, as you provided no virtual harddrive to
|
||||
QEMU (-hda /dev/zero).
|
||||
|
||||
If you have a full QEMU hard drive image (say /tmp/qemu.img) with a Linux
|
||||
distribution installed, you can boot that Linux kernel by using a proper
|
||||
FILO payload with LinuxBIOS and typing:
|
||||
|
||||
$ qemu -L build -hda /tmp/qemu.img -serial stdio
|
||||
|
||||
Installing a Linux distribution in QEMU and building the FILO payload is
|
||||
beyond the scope of this document.
|
||||
|
||||
|
||||
Website and Mailing List
|
||||
------------------------
|
||||
|
|
@ -92,10 +145,9 @@ developers and companies. Please check the individual source files for details.
|
|||
|
||||
LinuxBIOS is licensed under the terms of the GNU General Public License (GPL).
|
||||
Some files are licensed under the "GPL (version 2, or any later version)",
|
||||
and some files (mostly those derived from the Linux kernel) are licensed under
|
||||
the "GPL, version 2". For some parts, which were derived from other projects,
|
||||
other (GPL-compatible) licenses may apply. Please check the individual
|
||||
source files for details.
|
||||
and some files are licensed under the "GPL, version 2". For some parts,
|
||||
which were derived from other Free Software projects, other (GPL-compatible)
|
||||
licenses may apply. Please check the individual source files for details.
|
||||
|
||||
This makes the resulting LinuxBIOS images licensed under the GPL, version 2.
|
||||
|
||||
|
|
|
|||
|
|
@ -36,14 +36,25 @@ SILENT := >/dev/null 2>&1
|
|||
|
||||
ROM_SIZE := $(shell expr $(CONFIG_LINUXBIOS_ROMSIZE_KB) \* 1024)
|
||||
|
||||
$(obj)/linuxbios.rom: $(obj)/linuxbios.bootblock $(obj)/util/lar/lar lzma $(obj)/linuxbios.initram $(obj)/linuxbios.stage2 $(obj)/option_table payload
|
||||
$(obj)/linuxbios.rom: $(obj)/linuxbios.bootblock $(obj)/util/lar/lar lzma $(obj)/linuxbios.initram $(obj)/linuxbios.stage2 $(obj)/option_table payload_compress
|
||||
$(Q)rm -rf $(obj)/lar.tmp
|
||||
$(Q)mkdir $(obj)/lar.tmp
|
||||
$(Q)mkdir $(obj)/lar.tmp/normal
|
||||
$(Q)cp $(obj)/linuxbios.initram $(obj)/lar.tmp/normal/initram
|
||||
$(Q)cp $(obj)/linuxbios.stage2 $(obj)/lar.tmp/normal/stage2
|
||||
$(Q)cp $(obj)/option_table $(obj)/lar.tmp/normal/option_table
|
||||
$(Q)cp $(CONFIG_PAYLOAD) $(obj)/lar.tmp/normal/payload
|
||||
ifeq ($(CONFIG_PAYLOAD_NONE),y)
|
||||
$(Q)printf " PAYLOAD none (as specified by user)\n"
|
||||
else
|
||||
$(Q)# TODO: Print sth. other than $(CONFIG_PAYLOAD_FILE) if compressed.
|
||||
$(Q)if [ -r $(CONFIG_PAYLOAD_FILE) ]; then \
|
||||
printf " PAYLOAD $(CONFIG_PAYLOAD_FILE)\n"; \
|
||||
cp $(CONFIG_PAYLOAD_FILE) $(obj)/lar.tmp/normal/payload; \
|
||||
else \
|
||||
printf "Error: payload file '$(CONFIG_PAYLOAD_FILE)' not found.\n"; \
|
||||
exit 1; \
|
||||
fi
|
||||
endif
|
||||
$(Q)printf " LAR $(subst $(shell pwd)/,,$(@))\n"
|
||||
$(Q)cd $(obj)/lar.tmp && ../util/lar/lar -c ../linuxbios.rom . \
|
||||
-s $(ROM_SIZE) -b $(obj)/linuxbios.bootblock
|
||||
|
|
@ -147,15 +158,17 @@ $(obj)/linuxbios.stage2: $(obj)/stage0.init $(STAGE2_OBJ)
|
|||
|
||||
|
||||
#
|
||||
# The payload as we love it. Get it from somewhere.
|
||||
# Is this a place to incorporate buildrom?
|
||||
#
|
||||
# TODO: This is not implemented yet.
|
||||
# TODO: This needs to be compressed with the default compressor.
|
||||
# TODO: Compress the payload (CONFIG_PAYLOAD_FILE) with the default compressor.
|
||||
#
|
||||
|
||||
payload:
|
||||
$(Q)printf " BUILD PAYLOAD (skipped)\n"
|
||||
payload_compress:
|
||||
ifeq ($(CONFIG_PAYLOAD_NONE),y)
|
||||
else
|
||||
ifeq ($(CONFIG_DEFAULT_COMPRESSION_NONE),y)
|
||||
else
|
||||
$(Q)printf " ZIP $(CONFIG_PAYLOAD_FILE) (skipped)\n"
|
||||
endif
|
||||
endif
|
||||
|
||||
|
||||
#
|
||||
|
|
|
|||
|
|
@ -33,7 +33,9 @@ endif
|
|||
#
|
||||
|
||||
lzma:
|
||||
ifeq ($(CONFIG_DEFAULT_COMPRESSION_LZMA),y)
|
||||
$(Q)printf " BUILD LZMA (skipped)\n"
|
||||
endif
|
||||
|
||||
$(obj)/lib/%.o: $(src)/lib/%.c
|
||||
$(Q)mkdir -p $(obj)/lib
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue