Difference between revisions of "Firmware"
(→crossystem) |
(→crossystem) |
||
Line 93: | Line 93: | ||
The 'dev_boot_legacy' flag needs to be set (=1) in order to enable legacy booting (and installation/booting of GalliumOS). Most users do not need to set this manually, as it is set automatically when installing a RW_LEGACY firmware payload, but should be aware that it can be unset via battery drain/disconnect. This can be problematic if GalliumOS is the only OS installed on the system (as it would require the user to restore ChromeOS to re-enable legacy booting), and so it is recommended that users set the GBB flags below to ensure legacy boot capability is not "turned off" if battery power is lost. | The 'dev_boot_legacy' flag needs to be set (=1) in order to enable legacy booting (and installation/booting of GalliumOS). Most users do not need to set this manually, as it is set automatically when installing a RW_LEGACY firmware payload, but should be aware that it can be unset via battery drain/disconnect. This can be problematic if GalliumOS is the only OS installed on the system (as it would require the user to restore ChromeOS to re-enable legacy booting), and so it is recommended that users set the GBB flags below to ensure legacy boot capability is not "turned off" if battery power is lost. | ||
− | Note: many other sources mistakenly insist that 'dev_boot_usb' needs to be set as well, but it does not - that flag only enables booting ChromeOS (or an OS with a ChromeOS-signed kernel) via CTRL+ | + | Note: many other sources mistakenly insist that 'dev_boot_usb' needs to be set as well, but it does not - that flag only enables booting ChromeOS (or an OS with a ChromeOS-signed kernel) via CTRL+U on the develper mode boot screen; it has nothing to do with booting from USB in legacy boot mode (CTRL+L). |
=== GBB Flags === | === GBB Flags === | ||
Google BIOS Block (GBB) flags are firmware level settings stored directly in the firmware flash chip itself in a read-only (RO) area, and so require the firmware write protect screw to be removed before setting. The GBB flags are used to set the default boot mode (ChromeOS or legacy boot), developer mode boot screen timeout (1s or 30s), prevent exiting developer mode via spacebar, and to enable legacy booting regardless of crossystem setting, among other things. Most users should not attempt to set these manually, but instead use MattDevo's (/u/MrChromebox) ChromeOS firmware utility script to set them based on their preferred default boot mode and boot timeout (the script automatically sets the dev mode and legacy boot mode overrides for all options except factory default). For those curious, a full description of all the GBB flags can be [https://chromium.googlesource.com/chromiumos/platform/vboot_reference/+/master/firmware/include/gbb_header.h found in the Google source code here] | Google BIOS Block (GBB) flags are firmware level settings stored directly in the firmware flash chip itself in a read-only (RO) area, and so require the firmware write protect screw to be removed before setting. The GBB flags are used to set the default boot mode (ChromeOS or legacy boot), developer mode boot screen timeout (1s or 30s), prevent exiting developer mode via spacebar, and to enable legacy booting regardless of crossystem setting, among other things. Most users should not attempt to set these manually, but instead use MattDevo's (/u/MrChromebox) ChromeOS firmware utility script to set them based on their preferred default boot mode and boot timeout (the script automatically sets the dev mode and legacy boot mode overrides for all options except factory default). For those curious, a full description of all the GBB flags can be [https://chromium.googlesource.com/chromiumos/platform/vboot_reference/+/master/firmware/include/gbb_header.h found in the Google source code here] |
Revision as of 16:30, 8 April 2016
Contents
Custom Firmware
The stock/factory firmware on some Chromebooks and Chromeboxes contains a legacy boot payload (RW_LEGACY) capable of running Linux out of the box; however, many ChromeOS devices, particularly those with BayTrail/Braswell CPUs, do not include this capability stock and must use a 3rd party firmware update in order to run GalliumOS (or any other OS).
Three types of custom firmware updates are available (though not all types are available for every device):
Types
- RW_LEGACY
- Updates/replaces the stock legacy boot payload (SeaBIOS) included on many models; supplements the ChromeOS / secure boot payload (BOOT_STUB)
- Leaves all stock functionality intact, including the developer mode boot (white "OS verification is OFF") screen
- Allows device to dual-boot GalliumOS alongside ChromeOS
- Does not require disabling the firmware write-protect
- Carries zero risk of bricking the device
- On some models, includes bugfixes and enables additional functionality
- BOOT_STUB
- Replaces the ChromeOS verified boot payload with a legacy boot payload (SeaBIOS)
- Removes the developer mode boot (white "OS verification is OFF") screen
- Requires the firmware write-protect screw to be removed
- Removes the ability to run ChromeOS, creating a small risk of bricking your device
- Leaves the recovery mode (ESC + REFRESH + POWER) functionality of the stock ROM intact
- If you engage this key sequence, device will reboot and try to run ChromeOS Recovery (which will fail)
- This process will repeat on every boot until you disassemble the device and briefly disconnect the battery
- Full Firmware / ROM
- A complete firmware image which replaces the hardware init component (coreboot) and payload components (BOOT_STUB, RW_LEGACY) of the stock firmware with updated and/or customized versions of coreboot and SeaBIOS
- Removes the developer mode boot (white "OS verification is OFF") screen
- Removes the ability to run ChromeOS, creating a small risk of bricking your device
- Offers the best support for booting all OSes besides ChromeOS (including Windows).
- On many models, adds full hardware support for virtualization (vmx / VT-x)
- Fixes many bugs and/or idiosyncrasies associated with the stock firmware (but could potentially add new ones)
- Essentially turns your ChromeOS device into a "regular" PC / laptop
Availability Options
Check Hardware Compatibility and the appropriate Support page to determine the status of your model.
There are several custom firmware options available, depending on your Chromebook/box model class, and the features you require:
Firmware Provider / Link | ARM | Pineview | Sandy/Ivy Bridge | Haswell | Broadwell | Bay Trail | Braswell | notes |
---|---|---|---|---|---|---|---|---|
CoolStar | No | No | No | Full Firmware (Chromebooks) | Full Firmware (Chromebooks) | No | No | • Fixes factory firmware bugs • Boots Linux, Mac OS X, and Windows! • Install Guide: Haswell, Broadwell • Firmware build scripts |
johnlewis.ie | No | No | Full Firmware, BOOT_STUB (all) | Full Firmware, BOOT_STUB, RW_LEGACY (all) | RW_LEGACY (all) | BOOT_STUB (all) | No | • Fixes factory firmware bugs • General purpose firmware for Linux • Single script works for all supported models • Firmware build scripts/configs not published |
MattDevo (MrChromebox) |
No | No | Full Firmware (Chromeboxes) | Full Firmware (Chromeboxes), RW_LEGACY (all) | Full Firmware (Chromeboxes), RW_LEGACY (all) | RW_LEGACY (all) | No | • Fixes factory firmware bugs • Headless boot support for servers • PXE booting support • Supports integration of Kodi Media Center • Firmware source/build scripts and payload source |
Additions and corrections, please let us know: contact
@galliumos.org
Firmware and NVRAM Flags
Both the crossystem and GBB flags listed below are only relevant when booting legacy mode via RW_LEGACY (CTRL+L on dev mode boot screen); they do not have any affect when using a custom BOOT_STUB firmware.
crossystem
ChromeOS System (crosssytem) flags are firmware level settings which are stored in volatile memory, and are therefore lost/reset if the battery on your Chromebook is fully drained or disconnected; they do not require firmware write protect to be disabled in order to set/unset them.
The 'dev_boot_legacy' flag needs to be set (=1) in order to enable legacy booting (and installation/booting of GalliumOS). Most users do not need to set this manually, as it is set automatically when installing a RW_LEGACY firmware payload, but should be aware that it can be unset via battery drain/disconnect. This can be problematic if GalliumOS is the only OS installed on the system (as it would require the user to restore ChromeOS to re-enable legacy booting), and so it is recommended that users set the GBB flags below to ensure legacy boot capability is not "turned off" if battery power is lost.
Note: many other sources mistakenly insist that 'dev_boot_usb' needs to be set as well, but it does not - that flag only enables booting ChromeOS (or an OS with a ChromeOS-signed kernel) via CTRL+U on the develper mode boot screen; it has nothing to do with booting from USB in legacy boot mode (CTRL+L).
GBB Flags
Google BIOS Block (GBB) flags are firmware level settings stored directly in the firmware flash chip itself in a read-only (RO) area, and so require the firmware write protect screw to be removed before setting. The GBB flags are used to set the default boot mode (ChromeOS or legacy boot), developer mode boot screen timeout (1s or 30s), prevent exiting developer mode via spacebar, and to enable legacy booting regardless of crossystem setting, among other things. Most users should not attempt to set these manually, but instead use MattDevo's (/u/MrChromebox) ChromeOS firmware utility script to set them based on their preferred default boot mode and boot timeout (the script automatically sets the dev mode and legacy boot mode overrides for all options except factory default). For those curious, a full description of all the GBB flags can be found in the Google source code here