the Chromium logo

The Chromium Projects

CrOS work command cheat sheet

Chromium development


$ git pull origin main && gclient sync -D

Build & run chrome locally (not on real hardware)

$ autoninja -C out/Default chrome sandbox && ./out/Default/chrome \
--user-data-dir=~/.config/cros --login-manager

You can choose any name beside Default if you desire, but most engineers use Default for any non board-specific work like this.

Build chrome for a particular board, and deploy to it

$ autoninja -C out_${BOARD}/Release chrome chrome_sandbox nacl_helper && \
./third_party/chromite/bin/deploy_chrome --build-dir=out_${BOARD}/Release \
--device=${DUT} --nostrip --compress=always


$ autoninja -C out/Default ${TEST_NAME} && ./out/Default/${TEST_NAME} \
--gtest_filter=${FILTER} --log-level=0

ChromiumOS development

Enter shell

$ cd ~/chromiumos/src && cros_sdk

Flash pre-built chromiumos images from goldeneye to your DUT

(cr)$ cros flash ssh:// xbuddy://remote/eve/latest-dev \
      --no-ping \
      --send-payload-in-parallel \

Be sure to use the correct port for your device. Replace eve with your board name and replace latest-dev with another channel or a version number such as R84-13099.42.0.

Package workspace

Get a list of packages by running

(cr)$ cros_workon --board=${BOARD} --all list

Mark package as active to work on

(cr)$ cros_workon --board=${BOARD} start ${PACKAGE}

Then sync the repo with steps below.


$ repo sync -j8
$ cros build-packages --board=${BOARD}

Build and run

Using emerge

(cr)$ emerge-${BOARD} ${PACKAGE} && cros deploy ${DUT} ${PACKAGE}

Replace ${PACKAGE} with the one you are working on e.g. chromeos-base/feedback.

Using cros_workon_make

(cr)$ cros_workon_make --board=${BOARD} ${PACKAGE} && \
cros_workon_make --board=${BOARD} ${PACKAGE} --install && \
cros build-image --board=${BOARD} --noenable_rootfs_verification dev

Then reimage your test device with instructions in flash chromiumOS.


(cr)$ cros_workon_make --board=${BOARD} ${PACKAGE} --test


(cr)$ FEATURES=test emerge-${BOARD} ${PACKAGE}

Tast integration test

(cr)$ tast run ${DUT} ${TEST_NAME}

Replace ${TEST_NAME} with test package and function name e.g.) crash.UncleanShutdownCollector.

Sometimes you might need to include --extrauseflags chrome_internal, such as when working with metrics_consent.