Chrome OS devices: Difference between revisions
setting unsigned_boot and usb_boot is not possible in crosh anymore it seems, at least on kukui/krane/duet |
|||
Line 62: | Line 62: | ||
# Enter <code>shell</code> in console. | # Enter <code>shell</code> in console. | ||
# Enter <code>sudo crossystem dev_boot_usb=1 dev_boot_signed_only=0</code> in shell. | # Enter <code>sudo crossystem dev_boot_usb=1 dev_boot_signed_only=0</code> in shell. | ||
If this throws errors regarding flags preventing sudo like | |||
<code>sudo: The "no new privileges" flag is set, which prevents sudo from running as root.</code> | |||
<code>sudo: If sudo is running in a container, you may need to adjust the container configuration to disable the flag.</code> | |||
which seems to happen more with newer ChromeOS versions after 116, please follow these steps: | |||
# {{Button|Ctrl}} + {{Button|Alt}} + {{Button|Refresh/F3}} to open VT2 (full screen terminal) | |||
# log in as chronos (default no password) | |||
# Enter <code>sudo crossystem dev_boot_usb=1 dev_boot_signed_only=0</code> | |||
After that you can boot from external storage (SD or USB) with {{Button|Ctrl}} + {{Button|U}}. | After that you can boot from external storage (SD or USB) with {{Button|Ctrl}} + {{Button|U}}. |
Revision as of 14:50, 8 November 2023
Devices
Generic device ports
These devices are combined into generic ports. Refer to chipset when looking for your device.
Device | Codename | Architecture | Category | Chipset |
---|---|---|---|---|
Google Oak Chromebook | google-oak | aarch64 | community | MediaTek MT8173C |
Google Kukui Chromebook | google-kukui | aarch64 | community | MediaTek MT8183 |
Google Corsola Chromebook | google-corsola | aarch64 | testing | MediaTek MT8186 |
Google Asurada Chromebook | google-asurada | aarch64 | testing | MediaTek MT8192 |
Google Cherry Chromebook | google-cherry | aarch64 | testing | MediaTek MT8195 |
Google Trogdor Chromebook | google-trogdor | aarch64 | community | Qualcomm Snapdragon 7c |
Google Gru Chromebook | google-gru | aarch64 | community | Rockchip RK3399 |
Google Veyron Chromebook | google-veyron | armv7 | community | Rockchip RK3288 |
Google Chromebooks with x64 CPU | google-x64cros | x86_64 | community | Various x86_64 |
Non-generic device ports
Other devices that are not combined into generic ports.
Device | Codename | Architecture | Category | Chipset |
---|---|---|---|---|
Acer Chromebook 13 (CB5-311) | google-nyan-big | armv7 | testing | Nvidia Tegra K1 (T124) |
Acer Chromebook 514 (CB514-2H / CB514-2HT) | google-spherion | aarch64 | testing | MediaTek MT8192 |
Acer Chromebook Spin 513 (CP513-2H) | google-tomato | aarch64 | testing | MediaTek MT8195 |
Asus Chromebook Flip CM3 (CM3200, MT8192) | google-hayato | aarch64 | testing | MediaTek MT8192 |
Google Asurada Chromebook | google-asurada | aarch64 | testing | MediaTek MT8192 |
Google Cherry Chromebook | google-cherry | aarch64 | testing | MediaTek MT8195 |
Google Corsola Chromebook | google-corsola | aarch64 | testing | MediaTek MT8186 |
HP Chromebook 11 G1 | google-spring | armv7 | testing | Samsung Exynos 5250 |
HP Chromebook 14 G3 | google-nyan-blaze | armv7 | testing | Nvidia Tegra K1 (T124) |
HP Chromebook x360 13b-ca0xxx | google-dojo | aarch64 | testing | MediaTek MT8195 |
Lenovo 300e Yoga Chromebook Gen 4 | google-steelix | aarch64 | testing | MediaTek Kompanio 520 (MT8186) |
Lenovo IdeaPad Slim 3 Chromebook (14M868) | google-magneton | aarch64 | testing | MediaTek MT8186 |
Samsung Chromebook | google-snow | armv7 | community | Samsung Exynos 5250 |
Samsung Chromebook 2 11.6" | google-peach-pit | armv7 | community | Samsung Exynos 5420 |
Samsung Chromebook 2 13.3" | google-peach-pi | armv7 | testing | Samsung Exynos 5800 |
Preparation
Enable developer mode
NOTE: Switch to developer mode will factory reset your device (erase all user data). |
NOTE: The process is different depending on keyboard presence. |
Enable developer mode on laptop or tablet with keyboard
- Turn off the device.
- Press + + .
- Press + .
- Confirm switch to developer mode.
After that you have to press
+ to boot from internal storage.Enable developer mode on tablet without keyboard
- Press and buttons at the same time and boot the device.
- You should see prompt saying Please insert a recovery USB stick with a helpful image showing USB port that doesn't exist on Duet.
- Press button, now you should see a menu with options like "Show Debug Info", "Cancel", "Power Off", and "Language".
- Press and buttons at the same time. Option "Show Debug Info" will be replaced with "Confirm Disabling OS Verification".
- Select this option by using volume buttons and confirm by pressing .
Enable booting from external storage
- Boot into Chrome OS.
- Open console:
- without keyboard: open
chrome-untrusted://crosh
in the browser.
+ + .
- without keyboard: open
- Enter
shell
in console. - Enter
sudo crossystem dev_boot_usb=1 dev_boot_signed_only=0
in shell.
If this throws errors regarding flags preventing sudo like
sudo: The "no new privileges" flag is set, which prevents sudo from running as root.
sudo: If sudo is running in a container, you may need to adjust the container configuration to disable the flag.
which seems to happen more with newer ChromeOS versions after 116, please follow these steps:
- + + to open VT2 (full screen terminal)
- log in as chronos (default no password)
- Enter
sudo crossystem dev_boot_usb=1 dev_boot_signed_only=0
After that you can boot from external storage (SD or USB) with + .
It might be necessary to reseat the storage (SD or USB) between bootup and triggering the boot from external storage.
Installation
Installation to SD card or USB storage
There are 2 ways to install it: prebuilt image or pmbootstrap. See Installation article.
Installation from pmbootstrap requires another device with pmbootstrap installed, but installation from prebuilt image is possible from Chrome OS itself.
You can find images at https://images.postmarketos.org/bpo/edge.
Installation to eMMC
- Install pmOS to SD card or USB and boot it.
- Install pmbootstrap with
apk add pmbootstrap
- Go through
pmbootstrap init
command - Figure out which block device is your eMMC with
lsblk
- Use
pmbootstrap install --sdcard=/dev/mmcblk0
- Make sure your eMMC is
/dev/mmcblk0
, otherwise replace it with correct device - For FDE use
--fde --add unl0kr
- If you have a custom bootloader and you don't want a cgpt partition table use
--no-cgpt
(doesn't work on veyron)
- Make sure your eMMC is
GBB flags
Firmware on armv7 devices has a bug that causes losing boot from USB setting on battery discharge. Follow this to workaround it.
This also reduces the developer mode screen from 30 to 2 seconds which will avoid the annoying beep. If you don't want the Ctrl+U boot option as default (maybe want to pretend it is a normal ChromeOS device) use --flags=0x18
instead.
Setting GBB flags from Chrome OS
- Disable write protect
- On older devices (all armv7) there is a special screw on motherboard to remove
- On newer devices with cr50 remove battery
- Enable developer mode if it is not enabled
- Boot into Chrome OS
- Run
crossystem | grep wpsw_cur
, make sure it is 0 - Run
flashrom -p linux_mtd --wp-status
- If it reports that software write protect is enabled run
flashrom -p linux_mtd --wp-disable
- If it reports that software write protect is enabled run
- Run
flashrom -p linux_mtd -r backup.bin
and save it somewhere - Run
futility gbb --set --flash --flags=0x19
- Google has made modifications to the futility/gbb_utility behavior, you may need to use their wrapper script instead.
- if the above reports 'ERROR: unrecognized option (possibly "--flash")', then you'll want to use the Google provided GBB wrapper scripts
/usr/share/vboot/bin/get_gbb_flags.sh -d -e
to read the current flags setting and print out the flags it will interpret that as/usr/share/vboot/bin/set_gbb_flags.sh 0x19
to set the flags you want (per above 0x19 is to shorten the boot time and default to internal storage, use 0x18 to default to external).- Use
/usr/share/vboot/bin/set_gbb_flags.sh
with no arguments to see the flags it can define
- (optionally) Run
flashrom -p linux_mtd --wp-enable
Setting GBB flags from pmOS (or another Linux OS)
Assuming you've already disabled write protect Assuming you've already enabled developer mode and possibly forced USB boot to be enabled via GBB flags
- Boot into pmOS or Alpine
- Check write protect status
- Since we are missing a crossystem dependency, its functionality is limited, so it throws some errors, this suppresses them while querying all supported crossystem entries
- Run
crossystem 2>/dev/null | grep -v '(error)'
, this prints successful queries, a much shorter output than in ChromeOS - Run
crossystem wpsw_boot
, this should print 0, and means write protect is still disabled
- Install flashrom with
sudo apk add flashrom
- Run
sudo flashrom -p linux_mtd --wp-status
- If it reports that software write protect is enabled run
sudo flashrom -p linux_mtd --wp-disable
- If it reports that software write protect is enabled run
- Run
sudo flashrom -p linux_mtd -r backup.bin
and save it somewhere- The latest futility has removed `--flash` option, instead preferring the user to use flashrom to create a bios_bin backup file for it to alter.
- Run
sudo futility gbb --get --flags backup.bin
which will show any flags you'd set previously - Run
sudo futility gbb --set --flags=0x19 backup.bin
set a new set of flags, in my case enabling the shortened boot 0x19 vs the 30 second 0x18 to get rid of the beep - Run
sudo flashrom -p linux_mtd -w backup.bin
to write the updated firmware back to the system - (optionally) Run
flashrom -p linux_mtd --wp-enable
Contributing
Testing
There are too many variants of these devices. We are trying to do our best to support them all, but sometimes there are unexpected issues appearing on devices that haven't been tested.
You can help us by joining our Testing Team. See Testing Team page for more details.