Using ChromiumOS SDK as standalone, DIY

This page describes how to use the ChromiumOS SDK as standalone package, without anything on top.

Target audience

- Developers who want to experiment with the ChromiumOS binary enviroment, but not build any of ChromiumOS
- Developers who want just the toolchain
- People who need the chroot, but do not want to download any sources

For the most part, you should know what you're doing to go this way.

Provided by the SDK

* Complete system tools, just like in the normal SDK chroot
* Complete toolchain packages for:
 - host (no prefix or x86_64-cros-linux-gnu-)
 - all currently supported targets (armv7a-cros-linux-gnueabi-,x86_64-cros-linux-gnu-,i686-pc-linux-gnu-)
 - gold and ld

NOTE: It is not possible to switch toolchains or install new ones, as well as generally update the system in any way. If you want a newer version, delete all and start over.

Installation instructions

1. Getting the SDK

The latest version of SDK can be located in chromiumos-overlay.git repository, in sdk_version.conf
The individual SDK tarballs can be found in the gstore mirror: http://commondatastorage.googleapis.com/chromiumos-sdk/

In order to download the latest SDK automatically, you can execute:
  eval $(wget -O - "http://git.chromium.org/gitweb/?p=chromiumos/overlays/chromiumos-overlay.git;a=blob_plain;f=chromeos/binhost/host/sdk_version.conf;hb=HEAD")
  wget "http://commondatastorage.googleapis.com/chromiumos-sdk/cros-sdk-${SDK_LATEST_VERSION}.tbz2"

2. Unzipping, entering SDK

Unzip the SDK to a folder of your choice, for example "./sdk":
  mkdir sdk
  cd sdk
  tar -jxvf ../cros-sdk-${SDK_LATEST_VERSION}.tbz2

Enter by using chroot:
  sudo chroot . /bin/bash

3. Optional: setting up various environment bits prior to chroot

These are mostly optional and depend on what do you want to do inside the chroot. For merely running gcc, you should need neither.

  1. Mimic host network configuration: sudo cp /etc/resolv.conf /etc/hosts sdk/etc/
    This usually needs to be done only once unless your host's network is dynamic.
  2. Set up /proc, /sys: mount -t proc none /proc; sudo mount -t sysfs none /sys
    NOTE: If you set up these mounts, and then rm -rf sdk, you're up for a nasty surprise
  3. Bind /dev, if you're going to be working with any devices: sudo mount -o bind /dev sdk/dev
    NOTE: Same as above.
  4. Make a copy or bind-mount of any configuration/data you will need inside the chroot.

Remember to clean up the chroot (especially) from mounts after you stop using it.

Comments