Chromebooks are widely used nowadays, providing quality hardware mostly used for lightweight workloads.
While ChromeOS provides many interesting capabilities, it simply does not match a Linux Operating System when it comes to be used as a dev environment, it also does not mean a product on "chromebook HW" cannot be based on pure Linux either.
This layer allows you to build a Linux distribution for Chromebook devices using the OpenEmbedded Infrastructure.
Please see the corresponding sections below for details.
Master
Kernel | Pixelbook | X86 Chromebook | Mediatek 8173 Chromebook |
---|---|---|---|
Linux Yocto | N/A | ||
Linux Intel | N/A | ||
Linux Chromium |
Dunfell
Kernel | Pixelbook | X86 Chromebook | Mediatek 8173 Chromebook |
---|---|---|---|
Linux Yocto | N/A | ||
Linux Intel | N/A | ||
Linux Chromium |
This layer allows users to build a customized Linux Distribution for Chromebook devices.
The layer contains:
-
X86 based Chromebooks
-
ARM64 (Mediatek 8173) based Chromebooks See README.ARM for details.
-
Pixelbook (Chromebook EVE) * A specific tune for Skylake devices is added since the tune coming from meta-intel uses a very old TUNE at this point (Nehalem).
- Images work properly with Linux-Yocto, Linux-Chromium and Linux-Intel, and are updated to their latest version (to the day this was written).
To change the default setting adding the following to your local.conf should suffice, e.g.:
PREFERRED_PROVIDER_virtual/kernel = "linux-chromium"
PREFERRED_VERSION_linux-chromium = "4.19.%"
- chromebook-image-minimal: Console image with network, VPN and firmware update capabilities
- chromebook-image-xfce: A full image, capable to boot using a graphics environment (XFCE), by definition it contains more cmdline utilities, network utilities, and its meant to be used mostly as a dev environment, it also contains python, vim and obviously the CHROMIUM web browser.
- flashrom
- futility
- vbutil
- rootdev
- crossystem
- cbfstool
- Seabios (MrChromeBox Fork)
- MrChromeBox Firmware Utility Scripts
Which can be used to update the firmware of chromebook devices and such.
- An extra user is used on both images (chronospoky)
- Keymaps: a keymap is provided both for console en X11 to be used on Chromebooks
- xkeyboard-config already provides a chromebook model, but cant be used without X11
- A chromebook keymap is provided to be used on the console without X11
- A pixelbook-eve keymap model is added to the xkeyboard-config to allow the pixelbook keyboard to work properly, since its keyboard is a little different than most chromebooks.
- Touchpad: libinput is used for both the touchpad and touchscreen devices, a few customizations are added both for Chromebooks in general and the Pixelbook
OE-core (meta)
meta-poky
meta-intel
meta-oe
meta-python
meta-networking
For a full GUI image using xfce and featuring the chromium browser, the following layers are also required:
meta-multimedia
meta-gnome
meta-xfce
meta-browser
meta-clang
1.- Clone the required repositories
$ git clone https://git.yoctoproject.org/git/poky -b dunfell
$ cd poky
$ git clone https://git.yoctoproject.org/git/meta-intel -b dunfell
$ git clone https://git.openembedded.org/meta-openembedded -b dunfell
$ git clone https://github.com/aehs29/meta-chromebook.git -b dunfell
2.- Add layers to your bblayers.conf:
$ source oe-init-build-env
$ bitbake-layers add-layer ../meta-intel
$ bitbake-layers add-layer ../meta-openembedded/meta-oe
$ bitbake-layers add-layer ../meta-openembedded/meta-python
$ bitbake-layers add-layer ../meta-openembedded/meta-networking
$ bitbake-layers add-layer ../meta-chromebook
3.- Add the required variables to your local.conf
$ echo "MACHINE = \"eve-chromebook\"" >> ./conf/local.conf
$ echo "DISTRO = \"chronos\"" >> ./conf/local.conf
4.- Build an image
$ bitbake chromebook-image-minimal
5.- Flash the image to a storage device
$ dd if=tmp/deploy/images/eve-chromebook/chromebook-image-minimal-eve-chromebook.wic of=/dev/<your-dev>
Boot from USB (it is assumed the BIOS has been flashed to allow legacy boot), for more information on upgrading Coreboot or SeaBIOS please see: https://mrchromebox.tech/#chromeos
Seabios can be built from source as well from this layer and installed via an RPM, which will install it on /usr/share/firmware/ and the necessary tools to flash it are also provided (flashrom).
6.- Login as chronospoky (Reference to the chronos user used by Chromebooks running Chrome/Chromium OS)
Chronos (Poky based Linux for Chromebooks) 1.0 eve-chromebook /dev/ttyS0
eve-chromebook login: chronospoky
To use a different kernel:
$ echo "PREFERRED_PROVIDER_virtual/kernel = \"linux-chromium\"" >> ./conf/local.conf
or
$ echo "PREFERRED_PROVIDER_virtual/kernel = \"linux-intel\"" >> ./conf/local.conf
To use a different MACHINE:
$ echo "MACHINE = \"x86-chromebook\"" >> ./conf/local.conf
To build a full GUI Linux Image which includes XFCE and Chromium (Repeat step 1 and 2 to add extra required layers: meta-clang, meta-browser, meta-xfce, etc. see II. Layer Dependencies.):
$ bitbake chromebook-image-xfce
and
$ dd if=tmp/deploy/images/eve-chromebook/chromebook-image-xfce-eve-chromebook.wic of=/dev/<your-dev>
Please submit any patches against the meta-chromebook layer to the github repo https://github.com/aehs29/meta-chromebook and cc: the maintainer: aehs29 at gmail