Author: stepan
Date: 2007-06-09 19:43:26 +0200 (Sat, 09 Jun 2007)
New Revision: 350

Modified:
   LinuxBIOSv3/Kconfig
   LinuxBIOSv3/README
   LinuxBIOSv3/arch/x86/Makefile
   LinuxBIOSv3/lib/Makefile
Log:
Rework payload handling to only provide two options:
  - Payload file
  - No payload

Document the current procedure in the README.

Signed-off-by: Uwe Hermann <[EMAIL PROTECTED]>
Acked-by: Stefan Reinauer <[EMAIL PROTECTED]>



Modified: LinuxBIOSv3/Kconfig
===================================================================
--- LinuxBIOSv3/Kconfig 2007-06-07 17:34:17 UTC (rev 349)
+++ LinuxBIOSv3/Kconfig 2007-06-09 17:43:26 UTC (rev 350)
@@ -76,71 +76,32 @@
 
 choice
         prompt "Payload type"
-        default PAYLOAD_ELF
+        default PAYLOAD_NONE
 
-config PAYLOAD_FILO
-       bool "FILO"
+config PAYLOAD_ELF
+       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_ETHERBOOT
-       bool "Etherboot"
-       help
-         TODO
+         You will be able to specify the location and file name of the
+         payload image later.
 
-config PAYLOAD_MEMTEST86
-       bool "Memtest86"
+config PAYLOAD_NONE
+       bool "No payload"
        help
-         TODO
+         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.
 
-config PAYLOAD_LINUX
-       bool "Linux kernel"
-       help
-         TODO
+         For such an image to be useful, you have to use the 'lar' tool
+         to add a payload to the ROM image later.
 
-config PAYLOAD_ELF
-       bool "Any ELF executable"
-       help
-         TODO
-
-config PAYLOAD_DUMMY
-       bool "Dummy payload"
-       help
-         For testing purposes only.
-
 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

Modified: LinuxBIOSv3/README
===================================================================
--- LinuxBIOSv3/README  2007-06-07 17:34:17 UTC (rev 349)
+++ LinuxBIOSv3/README  2007-06-09 17:43:26 UTC (rev 350)
@@ -6,7 +6,7 @@
 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,38 +39,91 @@
  * 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 @@
 
 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.
 

Modified: LinuxBIOSv3/arch/x86/Makefile
===================================================================
--- LinuxBIOSv3/arch/x86/Makefile       2007-06-07 17:34:17 UTC (rev 349)
+++ LinuxBIOSv3/arch/x86/Makefile       2007-06-09 17:43:26 UTC (rev 350)
@@ -36,14 +36,25 @@
 
 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 @@
 
 
 #
-# The payload as we love it. Get it from somewhere.
-# Is this a place to incorporate buildrom?
+# TODO: Compress the payload (CONFIG_PAYLOAD_FILE) with the default compressor.
 #
-# TODO: This is not implemented yet.
-# TODO: This needs to be compressed 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
 
 
 #

Modified: LinuxBIOSv3/lib/Makefile
===================================================================
--- LinuxBIOSv3/lib/Makefile    2007-06-07 17:34:17 UTC (rev 349)
+++ LinuxBIOSv3/lib/Makefile    2007-06-09 17:43:26 UTC (rev 350)
@@ -33,7 +33,9 @@
 #
 
 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


-- 
linuxbios mailing list
[email protected]
http://www.linuxbios.org/mailman/listinfo/linuxbios

Reply via email to