Robert Foss
February 16, 2017
Reading time:
How to set up a fully functional ChromiumOS development environment on actual Chromebook hardware.
export DEV_DIR="/opt" mkdir -p $DEV_DIR export CHROMIUM_DIR="$DEV_DIR/chromiumos" mkdir -p $CHROMIUM_DIR export PATH="$DEV_DIR/depot_tools:$PATH" # The BOARD variable used here is specific for the Chromebook that is # being targeted, a more generic target like "amd64-generic" could # be more useful for you needs. export BOARD=chell # The USB_DEVICE variable refers to the USB device that will be used # for flashing ChromiumOS onto a Chromebook. # Make sure that this device does not contain anything important! export USB_DEVICE="/dev/sda" |
sudo apt install git-core gitk git-gui subversion curl cd $DEV_DIR git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git |
cd ${CHROMIUM_DIR} repo init -u https://chromium.googlesource.com/chromiumos/manifest.git repo sync -j25 |
cros_sdk -- ./build_packages --board=${BOARD} cros_sdk -- ./build_image --board=${BOARD} |
cros_sdk -- cros flash --board=${BOARD} usb:/$USB_DEVICE |
Enter Chromebook into dev-mode
This part is highly device specific, and depends on how the manufacturer of your device has chosen to implement the dev-mode switch.
A partial list of devices and how to enter them into dev-mode can be found here.
Flash ChromiumOS to Chromebook
Fire up your Chrombook device and hit Ctrl+Alt+Back, followed by 'chronos' and hit enter. Followed by the below command to install the ChromiumOS build that was just flashed.
/usr/sbin/chromeos-install |
On Chromebook
Again fire up your Chrombook device and hit Ctrl+Alt+Back, followed by 'chronos' and hit enter.
# Remount the root drive read / write sudo mount -o remount,rw / # Open port so that gdbserver can be reached sudo /sbin/iptables -A INPUT -p tcp --dport 1234 -j ACCEPT # Run gdb server, listening on port 1234 (opened in iptables command above) sudo gdbserver :1234 chrome |
On dev machine
# On x86 cros_sdk -- sudo USE=expat emerge cross-i686-pc-linux-gnu/gdb # On ARMv7 cros_sdk -- sudo USE=expat emerge cross-armv7a-cros-linux-gnueabi/gdb cros_sdk -- i686-pc-linux-gnu-gdb "/build/$BOARD/opt/google/chrome/chrome" (gdb) set sysroot /build/$BOARD/ (gdb) target remote IP_ADDR_CHROMEBOOK:1234 (gdb) continue |
This is a bit of a rough outline, and is only suitable for Chromebook devices that already are in dev-mode.
This post has been a part of work undertaken by my employer Collabora.
ChromiumOS Depo Tools
ChromiumOS Quick Start
ChromiumOS Dev Mode
ChromiumOS Debug
09/06/2025
In this final article based on Matt Godbolt's talk on making APIs easy to use and hard to misuse, I will discuss locking, an area where…
21/05/2025
In this second article of a three-part series, I look at how Matt Godbolt uses modern C++ features to try to protect against misusing an…
12/05/2025
Powerful video analytics pipelines are easy to make when you're well-equipped. Combining GStreamer and Machine Learning frameworks are the…
06/05/2025
Gustavo Noronha helps break down C++ and shows how that knowledge can open up new possibilities with Rust.
29/04/2025
Configuring WirePlumber on embedded Linux systems can be somewhat confusing. We take a moment to demystify this process for a particular…
24/04/2025
Collabora's Board Farm demo, showcasing our recent hardware enablement and continuous integration efforts, has undergone serious development…
Comments (1)
Mr. Elder Glen Dawes:
Jan 22, 2019 at 03:43 PM
Looks like Chrome
Reply to this comment
Reply to this comment
Add a Comment