Difference between revisions of "Project Ideas"

From coreboot
Jump to navigation Jump to search
(→‎End user flash tool: Provide some more details)
Line 353: Line 353:
It copies other required components (EC/ME firmware, VGABIOS) from the running system (ie. dump flash, extract data) and compares their hash against a white list (so we can vouch for their compatibility), then writes the result to flash, unlocking flash if necessary.
It copies other required components (EC/ME firmware, VGABIOS) from the running system (ie. dump flash, extract data) and compares their hash against a white list (so we can vouch for their compatibility), then writes the result to flash, unlocking flash if necessary.


Ideally it's a portable graphical tool (assuming that flashrom is available for the target OS). It could use flashrom, the bios_extract tools, and cbfstool in the background and provide the glue to make things work.
Ideally it's a portable graphical tool (assuming that flashrom is available for the target OS). It could use libflashrom, the bios_extract tools, and cbfstool in the background and provide the glue to make things work.
 
Additional info about the purpose of this tool:
The challenge is to give users a simple way to create a '''working''' coreboot image with all the necessary components, including the components we can't provide as coreboot.org downloads for technical or legal reasons. This tool is intended as one-stop shop (one-click tool by default) to create working images without the user having to worry about which options are correct for his/her system. If any options are not applicable for a given system or if those options might result in a system not booting as expected, they should not be shown at all. It is explicitly not desired to just get a GUI exposing the complexity of the underlying tools (we have that, and it's called the command line).
 
Technical challenges for the design and implementation:
To provide a working image for a given board, hardware peculiarities have to be handled automatically as much as possible. The tool has to
 
* extract/dump some data/contents from the running system while coreboot is not yet installed, zero or more of the following
** EDID data
** PCI configuration (lspci -nn)
** old flash chip contents
** VGA BIOS in its mangled form dumped from memory (C segment)
** VGA BIOS in its original form extracted from the flash chip contents
** onboard network firmware/configuration/MACaddr, possibly extracted from the flash chip contents or other in-system data sources
* possibly download and mangle BIOS update files from a vendor site
** mostly in case the data mentioned above can't be extracted from the running system
* detect the exact variant of the hardware including any special handling needed (e.g. there are dozens of different Thinkpad T60/T60p variants all using the exact same coreboot code, but some need a VGA option ROM and some don't, the TFT panel definitions differ, etc.)
* check whether the extracted data (mostly VGA BIOS etc.) matches the data that's known to work, e.g. by comparing hashes
* check whether the extracted data has correct internal checksums and if not, check whether fixups are needed or wanted for this particular hardware (e.g. some C segment dumps from VGA option ROMs have broken checksums and their checksums should be fixed automatically by the tool, other VGA option ROMs should yield an error instead)
* present the end user only with the choices that make sense for this specific piece of hardware
* provide a way to import or store rules for doing all the stuff above for multiple boards or board variants
 


'''Skill Level'''
'''Skill Level'''

Revision as of 23:42, 19 April 2015