Difference between revisions of "Buildrom"

From coreboot
Jump to: navigation, search
(Supported Platforms: put supported platforms in alphabetic order and added missing supermicro board)
(Supported Payloads)
(14 intermediate revisions by 4 users not shown)
Line 1: Line 1:
'''Buildrom''' is a tool that can construct a coreboot image (comprising the coreboot loader and payload) from scratch.   Starting from a configuration file, it will download and build all the code necessary to construct the final binary.
+
'''Buildrom''' is does not currently support coreboot V4 (which uses kconfig).  The payload and LAB building sections may be resurrected during [http://www.google-melange.com/gsoc/project/google/gsoc2011/dorileo/15001 Leandro's 2011 GSoC Project]. 
 +
 
 +
'''Buildrom''' is a tool that can construct a coreboot image (comprising the coreboot loader and payload) from scratch.
 +
 
 +
Starting from a configuration file, it will download and build all the code necessary to construct the final binary.
  
 
A tool with similar functionality is [[Etherboot]]'s [http://rom-o-matic.net/ ROM-o-matic] which builds etherboot as a coreboot ELF payload.
 
A tool with similar functionality is [[Etherboot]]'s [http://rom-o-matic.net/ ROM-o-matic] which builds etherboot as a coreboot ELF payload.
  
== Supported Platforms ==
+
== Supported Platforms/Boards ==
  
Buildrom supports the following platforms:
+
Buildrom currently supports the following platforms / mainboards:
  
* AMD DB800
+
{| border="0" style="font-size: smaller"
* AMD Geode LX 'Norwich'
+
|- bgcolor="#6699ff"
* AMD 'Serengeti Cheetah'
+
! align="left" | Vendor
* Artec Group DBE61
+
! align="left" | Mainboard
* Digital Logic MSM800SEV
+
! align="left" | Northbridge
* Gigabyte GA-M57SLI-S4
+
! align="left" | Southbridge
* Gigabyte 2761GXDK
+
! align="left" | Super I/O
* PC Engines ALIX1.C
+
! align="left" | CPU
* Supermicro H8DMR
+
! align="left" | Socket
* Tyan S2882
+
! align="left" | v2
* Tyan S2891
+
! align="left" | v3
 +
! align="left" | Tutorial
 +
 
 +
|- bgcolor="#eeeeee"
 +
| AMD
 +
| [http://www.amd.com/us-en/ConnectivitySolutions/ProductInformation/0,,50_2330_9863_13022%5E13060,00.html DB800] (Salsa)
 +
| AMD LX
 +
| AMD CS5536
 +
| Winbond™ W83627HF
 +
| AMD Geode™ LX
 +
| —
 +
| style="background:lime" | OK
 +
| style="background:yellow" | ?
 +
| —
 +
|- bgcolor="#eeeeee"
 +
| AMD
 +
| Norwich
 +
| AMD LX
 +
| AMD CS5536
 +
| —
 +
| AMD Geode™ LX
 +
| —
 +
| style="background:lime" | OK
 +
| style="background:yellow" | ?
 +
| —
 +
|- bgcolor="#eeeeee"
 +
| AMD
 +
| Serengeti Cheetah
 +
| AMD K8
 +
| AMD-8111™, 8151™, 8132™
 +
| Winbond™ W83627HF
 +
| AMD Opteron™
 +
| Socket F
 +
| style="background:lime" | OK
 +
| style="background:yellow" | ?
 +
| —
 +
 
 +
|- bgcolor="#dddddd"
 +
| Artec Group
 +
| [http://www.artecgroup.com/thincan/index.php?option=com_content&task=blogcategory&id=15&Itemid=34 DBE61]
 +
| AMD LX
 +
| AMD CS5536
 +
| —
 +
| AMD Geode™ LX
 +
| —
 +
| style="background:yellow" | ?
 +
| style="background:yellow" | ?
 +
| —
 +
 
 +
|- bgcolor="#eeeeee"
 +
| ASUS
 +
| [http://www.asus.com.tw/products.aspx?l1=3&l2=15&l3=143&l4=0&model=576&modelmenu=1 A8V-E SE]
 +
| AMD K8
 +
| VIA K8T890 / VT8237R
 +
| Winbond™ W83627EHG
 +
| AMD Athlon™ 64 / FX / X2
 +
| Socket 939
 +
| style="background:lime" | OK
 +
| style="background:red" | N/A
 +
| [[ASUS A8V-E SE Build Tutorial|Tutorial]]
 +
|- bgcolor="#eeeeee"
 +
| ASUS
 +
| [http://www.asus.com.tw/products.aspx?l1=3&l2=15&l3=143&l4=0&model=376&modelmenu=1 A8V-E Deluxe]
 +
| AMD K8
 +
| VIA K8T890 / VT8237R
 +
| Winbond™ W83627EHG
 +
| AMD Athlon™ 64 / FX / X2
 +
| Socket 939
 +
| style="background:lime" | OK
 +
| style="background:red" | N/A
 +
| [[ASUS A8V-E Deluxe Build Tutorial|Tutorial]]
 +
 
 +
|- bgcolor="#dddddd"
 +
| DIGITAL-LOGIC
 +
| [http://www.digitallogic.ch/english/products/datasheets/ms_pc104_detail.asp?id=MSM800SEV MSM800SEV]
 +
| AMD Geode™ LX
 +
| AMD Geode™ CS5536
 +
| —
 +
| AMD Geode™ LX
 +
| —
 +
| style="background:yellow" | ?
 +
| style="background:yellow" | ?
 +
| —
 +
 
 +
|- bgcolor="#eeeeee"
 +
| Emulation
 +
| [http://fabrice.bellard.free.fr/qemu/ QEMU x86]
 +
| Intel® 440BX
 +
| Intel® 82371EB (PIIX4E)
 +
| —
 +
| Intel® Pentium® II/III (?)
 +
| —
 +
| style="background:lime" | OK
 +
| style="background:lime" | OK
 +
| [[QEMU Build Tutorial|Tutorial]]
 +
 
 +
|- bgcolor="#dddddd"
 +
| GIGABYTE
 +
| [http://www.gigabyte.com.tw/Products/Motherboard/Products_Overview.aspx?ProductID=2287&ModelName=GA-M57SLI-S4 GA-M57SLI-S4]
 +
| AMD K8
 +
| NVIDIA MCP55
 +
| ITE IT8716F
 +
| AMD Sempron™ / Athlon™ 64 / FX / X2
 +
| Socket AM2
 +
| style="background:lime" | OK
 +
| style="background:red" | N/A
 +
| [[GIGABYTE GA-M57SLI-S4 Build Tutorial|Tutorial]]
 +
|- bgcolor="#dddddd"
 +
| GIGABYTE
 +
| [http://www.rssfeedbus.com/index.php?showtopic=1515 GA-2761GXDK] (Churchill)
 +
| AMD K8
 +
| SiS761GX/SiS966
 +
| ITE IT8716F
 +
| AMD Sempron™ / Athlon™ 64 / FX / X2 (?)
 +
| Socket AM2
 +
| style="background:lime" | OK
 +
| style="background:red" | N/A
 +
| [[GIGABYTE_GA-2761GXDK_Build_Tutorial|Tutorial]]
 +
 
 +
|- bgcolor="#eeeeee"
 +
| PC Engines
 +
| [http://pcengines.ch/alix1c.htm ALIX.1C]
 +
| AMD Geode™ LX
 +
| AMD Geode™ CS5536
 +
| Winbond® W83627HF
 +
| AMD Geode™ LX
 +
| —
 +
| style="background:lime" | OK
 +
| style="background:lime" | OK
 +
| [[PC Engines ALIX1.C Build Tutorial|Tutorial]]
 +
|- bgcolor="#eeeeee"
 +
| PC Engines
 +
| [http://pcengines.ch/alix2c3.htm ALIX.2C3]
 +
| AMD Geode™ LX
 +
| AMD Geode™ CS5536
 +
| —
 +
| AMD Geode™ LX
 +
| —
 +
| style="background:red" | N/A
 +
| style="background:lime" | OK
 +
| —
 +
 
 +
|- bgcolor="#dddddd"
 +
| Supermicro
 +
| [http://www.supermicro.com/Aplus/motherboard/Opteron2000/MCP55/H8DMR-i2.cfm H8DMR-i2]
 +
| AMD K8
 +
| NVIDIA MCP55
 +
| Winbond™ W83627EHG
 +
| AMD Opteron™
 +
| Socket F
 +
| style="background:lime" | OK
 +
| style="background:red" | N/A
 +
| —
 +
 
 +
|- bgcolor="#eeeeee"
 +
| Tyan
 +
| [http://www.tyan.com/archive/products/html/thunderk8sr.html Thunder K8SR (S2881)]
 +
| AMD K8
 +
| AMD-8111™, 8131™
 +
| Winbond™ W83627HF
 +
| AMD Opteron™
 +
| Socket 940
 +
| style="background:lime" | OK
 +
| style="background:red" | N/A
 +
| [[Tyan S2881 Build Tutorial|Tutorial]]
 +
|- bgcolor="#eeeeee"
 +
| Tyan
 +
| [http://www.tyan.com/archive/products/html/thunderk8spro.html Thunder K8S Pro (S2882)]
 +
| AMD K8
 +
| AMD-8111™, 8131™
 +
| Winbond™ W83627HF
 +
| AMD Opteron™
 +
| Socket 940
 +
| style="background:lime" | OK
 +
| style="background:red" | N/A
 +
| [[Tyan S2882 Build Tutorial|Tutorial]]
 +
|- bgcolor="#eeeeee"
 +
| Tyan
 +
| [http://www.tyan.com/archive/products/html/thunderk8sre.html Thunder K8SRE (S2891)]
 +
| AMD K8
 +
| AMD-8131™, NVIDIA CK804
 +
| Winbond™ W83627HF
 +
| AMD Opteron™
 +
| Socket 940
 +
| style="background:lime" | OK
 +
| style="background:red" | N/A
 +
| [[Tyan S2891 Build Tutorial|Tutorial]]
 +
|- bgcolor="#eeeeee"
 +
| Tyan
 +
| [http://www.tyan.com/archive/products/html/thunderk8se.html Thunder K8SE (S2892)]
 +
| AMD K8
 +
| AMD-8131™, NVIDIA CK804
 +
| Winbond™ W83627HF
 +
| AMD Opteron™
 +
| Socket 940
 +
| style="background:lime" | OK
 +
| style="background:red" | N/A
 +
| [[Tyan S2892 Build Tutorial|Tutorial]]
 +
|- bgcolor="#eeeeee"
 +
| Tyan
 +
| [http://www.tyan.com/archive/products/html/thunderk8we.html Thunder K8WE (S2895)]
 +
| AMD K8
 +
| AMD-8131™, NVIDIA CK804
 +
| SMSC® LPC47B397
 +
| AMD Opteron™
 +
| Socket 940
 +
| style="background:lime" | OK
 +
| style="background:red" | N/A
 +
| —
 +
 
 +
|}
  
 
== Supported Payloads ==
 
== Supported Payloads ==
  
Buildrom supports the following payloads:
+
Buildrom currently supports the following payloads:
  
* Linux kernel
+
* [[Linux]] (kernel)
 
* [[Etherboot]]
 
* [[Etherboot]]
 
* [[FILO]]
 
* [[FILO]]
* "Linux-as-bootloader" (LAB)
+
* [[Linux]] (as payload)
* Memtest86+ (except on the GA-M57SLI-S4 and the Tyan S2891)
+
* [[Memtest86]]
 +
* [[coreinfo]]
 +
* [[tint]]
 +
* [[libpayload]] as helper library for other payloads (e.g. [[coreinfo]])
 +
* [[GRUB2]] (experimental)
 +
* [[OpenFirmware]] (experimental)
 +
* Custom payloads provided by the user
 +
 
 +
Planned payloads:
 +
 
 +
* [[ADLO]](as helper payload)
 +
* [[GPXE]]
  
 
== Download ==
 
== Download ==
  
 
  $ svn co svn://coreboot.org/buildrom
 
  $ svn co svn://coreboot.org/buildrom
 +
 +
You can also visit the [http://tracker.coreboot.org/trac/buildrom web-based trac instance] to browse the code and outstanding issues.
  
 
== Prerequisites ==
 
== Prerequisites ==
Line 37: Line 264:
 
You will need the following packages on your system to use buildrom.  Please consult your distribution documentation on how to install new packages:
 
You will need the following packages on your system to use buildrom.  Please consult your distribution documentation on how to install new packages:
  
 +
* wget
 
* subversion
 
* subversion
 +
* git
 
* make
 
* make
 
* quilt
 
* quilt
* GNU compiler tools (as, ld, gcc)
+
* GNU compiler tools (gcc, as, ld)
 +
* Standard utilities (rm, cp, gzip, bzip2, tar, dd, md5sum, awk, etc.)
 
* iasl (for AMD K8 platforms)
 
* iasl (for AMD K8 platforms)
 +
* python
 +
* ruby (for the [[GRUB2]] payload)
 +
* flex and bison (for the LAB and the [[AVATT]] payloads)
 +
* libncurese5-dev (for filo-config)
  
 
== Configuration ==
 
== Configuration ==
  
 
In the buildrom-devel directory, type:
 
In the buildrom-devel directory, type:
  $ make menuconfig
+
 
 +
  $ make menuconfig
  
 
You can now navigate the configuration system (this is the same configuration engine that the Linux kernel uses, so it should be familiar to some readers).
 
You can now navigate the configuration system (this is the same configuration engine that the Linux kernel uses, so it should be familiar to some readers).
Line 52: Line 287:
 
== Building the ROM ==
 
== Building the ROM ==
  
Make sure you have access to the internet (to download new packages), and type the following to create your ROM:
+
Make sure you have access to the Internet (to download new packages), and type the following to create your ROM:
 +
 
 
  $ make
 
  $ make
  
Buildrom will download and build all the components of the ROM selected in the configuration stage.  if the build is successful, then the final ROM will be located in ''buildrom-devel/deploy''. If it is not successful, then you will see an error message.  You can see the build output for each package in by reading build.log in the work/<package>logs/ directory (i.e work/filo/logs/build.log).  
+
Buildrom will download and build all the components of the ROM selected in the configuration stage.  If the build is successful, then the final ROM will be located in the '''deploy''' subdirectory. If it is not successful, then you will see an error message.  You can see the build output for each package by reading '''build.log''' in the '''work/<package>/logs''' directory (e.g. '''work/filo/logs/build.log''').  
 
   
 
   
 
== Developing within Buildrom ==
 
== Developing within Buildrom ==
  
This section is for the developers who wish to change and rebuild the code. BuildROM builds the code for coreboot and the payloads in the work/ directory. Here is a typical view of the buildROM work/ directory:
+
This section is for the developers who wish to change and rebuild the code.
 +
Buildrom builds the code for coreboot and the payloads in the '''work/''' directory.
 +
 
 +
Here is a typical view of the buildrom '''work/''' directory:
 +
 
 
  $ ls work/
 
  $ ls work/
   linuxbios filo
+
   coreboot filo nrvb2
 +
 
 +
In each directory, you will find three directories.  Logs from the build will be found in '''logs/''' and timestamps that the build system uses are in '''stamps/'''.  You normally won't have to touch these directories.  The source code is located in the third directory, '''svn/'''.
 +
 
 +
Buildrom provides several commands to make it easy to rebuild individual packages and ROMs.
 +
* To clean a directory (but not remove the source code) use '''make <package>-clean'''.
 +
* You can build individual packages with '''make <package>'''.
 +
* If you wish to completely erase the source code and start again with a pristine version, use '''make <package>-distclean'''.
 +
* Typing '''make''' at any time will rebuild the ROM using the most current versions of the individual packages.
  
In each directory, you will find three directories.  Logs from the build will be found in logs/ and timestamps that the build system uses are in stamps/.  You normally won't have to touch these directories.  The source code is located in the third directory.    BuildROM provides several commands to make it easy to rebuild individual packages and ROMs.    To clean a directory (but not remove the source code) use 'make <package>-clean'.  You can build an individual packages with 'make <package>'.  f you wish to completely erase the source code and start again with a pristine version, use 'make <package>-distclean'. Typing 'make' at any time will rebuild the ROM using the most current versions of the individual packages.
 
 
Here is a typical work flow for modifying coreboot code:
 
Here is a typical work flow for modifying coreboot code:
  
#Build the initial ROM from scratch with 'make'
+
# Build the initial ROM from scratch with 'make'
#Edit the coreboot source code in work/linuxbios/svn/
+
# Edit the coreboot source code in work/coreboot/svn/
#Clean the coreboot package with 'make linuxbios-clean'
+
# Clean the coreboot package with '''make coreboot-clean'''
#Rebuild the ROM with 'make'
+
# Rebuild the ROM with '''make''''

Revision as of 08:47, 18 December 2013

Buildrom is does not currently support coreboot V4 (which uses kconfig). The payload and LAB building sections may be resurrected during Leandro's 2011 GSoC Project.

Buildrom is a tool that can construct a coreboot image (comprising the coreboot loader and payload) from scratch.

Starting from a configuration file, it will download and build all the code necessary to construct the final binary.

A tool with similar functionality is Etherboot's ROM-o-matic which builds etherboot as a coreboot ELF payload.

Supported Platforms/Boards

Buildrom currently supports the following platforms / mainboards:

Vendor Mainboard Northbridge Southbridge Super I/O CPU Socket v2 v3 Tutorial
AMD DB800 (Salsa) AMD LX AMD CS5536 Winbond™ W83627HF AMD Geode™ LX OK  ?
AMD Norwich AMD LX AMD CS5536 AMD Geode™ LX OK  ?
AMD Serengeti Cheetah AMD K8 AMD-8111™, 8151™, 8132™ Winbond™ W83627HF AMD Opteron™ Socket F OK  ?
Artec Group DBE61 AMD LX AMD CS5536 AMD Geode™ LX  ?  ?
ASUS A8V-E SE AMD K8 VIA K8T890 / VT8237R Winbond™ W83627EHG AMD Athlon™ 64 / FX / X2 Socket 939 OK N/A Tutorial
ASUS A8V-E Deluxe AMD K8 VIA K8T890 / VT8237R Winbond™ W83627EHG AMD Athlon™ 64 / FX / X2 Socket 939 OK N/A Tutorial
DIGITAL-LOGIC MSM800SEV AMD Geode™ LX AMD Geode™ CS5536 AMD Geode™ LX  ?  ?
Emulation QEMU x86 Intel® 440BX Intel® 82371EB (PIIX4E) Intel® Pentium® II/III (?) OK OK Tutorial
GIGABYTE GA-M57SLI-S4 AMD K8 NVIDIA MCP55 ITE IT8716F AMD Sempron™ / Athlon™ 64 / FX / X2 Socket AM2 OK N/A Tutorial
GIGABYTE GA-2761GXDK (Churchill) AMD K8 SiS761GX/SiS966 ITE IT8716F AMD Sempron™ / Athlon™ 64 / FX / X2 (?) Socket AM2 OK N/A Tutorial
PC Engines ALIX.1C AMD Geode™ LX AMD Geode™ CS5536 Winbond® W83627HF AMD Geode™ LX OK OK Tutorial
PC Engines ALIX.2C3 AMD Geode™ LX AMD Geode™ CS5536 AMD Geode™ LX N/A OK
Supermicro H8DMR-i2 AMD K8 NVIDIA MCP55 Winbond™ W83627EHG AMD Opteron™ Socket F OK N/A
Tyan Thunder K8SR (S2881) AMD K8 AMD-8111™, 8131™ Winbond™ W83627HF AMD Opteron™ Socket 940 OK N/A Tutorial
Tyan Thunder K8S Pro (S2882) AMD K8 AMD-8111™, 8131™ Winbond™ W83627HF AMD Opteron™ Socket 940 OK N/A Tutorial
Tyan Thunder K8SRE (S2891) AMD K8 AMD-8131™, NVIDIA CK804 Winbond™ W83627HF AMD Opteron™ Socket 940 OK N/A Tutorial
Tyan Thunder K8SE (S2892) AMD K8 AMD-8131™, NVIDIA CK804 Winbond™ W83627HF AMD Opteron™ Socket 940 OK N/A Tutorial
Tyan Thunder K8WE (S2895) AMD K8 AMD-8131™, NVIDIA CK804 SMSC® LPC47B397 AMD Opteron™ Socket 940 OK N/A

Supported Payloads

Buildrom currently supports the following payloads:

Planned payloads:

Download

$ svn co svn://coreboot.org/buildrom

You can also visit the web-based trac instance to browse the code and outstanding issues.

Prerequisites

You will need the following packages on your system to use buildrom. Please consult your distribution documentation on how to install new packages:

  • wget
  • subversion
  • git
  • make
  • quilt
  • GNU compiler tools (gcc, as, ld)
  • Standard utilities (rm, cp, gzip, bzip2, tar, dd, md5sum, awk, etc.)
  • iasl (for AMD K8 platforms)
  • python
  • ruby (for the GRUB2 payload)
  • flex and bison (for the LAB and the AVATT payloads)
  • libncurese5-dev (for filo-config)

Configuration

In the buildrom-devel directory, type:

$ make menuconfig

You can now navigate the configuration system (this is the same configuration engine that the Linux kernel uses, so it should be familiar to some readers).

Building the ROM

Make sure you have access to the Internet (to download new packages), and type the following to create your ROM:

$ make

Buildrom will download and build all the components of the ROM selected in the configuration stage. If the build is successful, then the final ROM will be located in the deploy subdirectory. If it is not successful, then you will see an error message. You can see the build output for each package by reading build.log in the work/<package>/logs directory (e.g. work/filo/logs/build.log).

Developing within Buildrom

This section is for the developers who wish to change and rebuild the code. Buildrom builds the code for coreboot and the payloads in the work/ directory.

Here is a typical view of the buildrom work/ directory:

$ ls work/
  coreboot  filo  nrvb2

In each directory, you will find three directories. Logs from the build will be found in logs/ and timestamps that the build system uses are in stamps/. You normally won't have to touch these directories. The source code is located in the third directory, svn/.

Buildrom provides several commands to make it easy to rebuild individual packages and ROMs.

  • To clean a directory (but not remove the source code) use make <package>-clean.
  • You can build individual packages with make <package>.
  • If you wish to completely erase the source code and start again with a pristine version, use make <package>-distclean.
  • Typing make at any time will rebuild the ROM using the most current versions of the individual packages.

Here is a typical work flow for modifying coreboot code:

  1. Build the initial ROM from scratch with 'make'
  2. Edit the coreboot source code in work/coreboot/svn/
  3. Clean the coreboot package with make coreboot-clean
  4. Rebuild the ROM with make'