ChromiumOS

ChomiumOS

Sources of inspiration

Basic Informations: Chromium OS Developer Guide

Advanced Informations: The Dev server

Informations for really advanced users: Kernel Configuration

Create a basic system on stick

Choices

I choose a 64 bits system as builder and as target, that is why you can notice some differences from the googles docs.

You need some basic ev tools like git and subversion.

I use the x86-generic, because the amd64-generic doesn t work for some package (chrome) yet.

As soon it work i will change the doc for using it, but the procedure is exactly the same with am64-genic.

Building once

mkdir /data/Chromiumos
cd /data/Chromiumos
svn co https://src.chromium.org/svn/trunk/tools/depot_tools
export PATH="$PATH":`pwd`/depot_tools  # add it to your bash profile
repo init -u https://git.chromium.org/git/chromiumos/manifest.git --repo-url https://git.chromium.org/git/external/repo.git -g minilayout 

If you want a few extra pounds and having to much time you can alse get the full layout system.

mkdir /data/Chromiumos
cd /data/Chromiumos
svn co https://src.chromium.org/svn/trunk/tools/depot_tools
export PATH="$PATH":`pwd`/depot_tools  # add it to your bash profile
repo init -u https://git.chromium.org/git/chromiumos/manifest.git --repo-url https://git.chromium.org/git/external/repo.git

Building for Dummies/Kiddies

You need around 30Go od disk space for full layout and arount 10Go for minilayout.

cd /data/Chromiumos
export PATH="$PATH":`pwd`/depot_tools
repo sync
./chromite/bin/cros_sdk
export BOARD=x86-generic
./setup_board --board=${BOARD}
./set_shared_user_password.sh
./build_packages --board=${BOARD}
./build_image --board=${BOARD} --noenable_rootfs_verification dev

The --noenable_rootfs_verification is very important for what we want to do.

Write to an usb stick (size >2Go)

./image_to_usb.sh --board=${BOARD} --to=/dev/<device>

or

dd if=../src/build/images/amd64-generic/latest/chromiumos_image.bin of=/dev/<device> bs=4M oflag=sync status=noxfer

Start to using ChromiumOS

For the begening (or mobility)

  • Boot from the usb stick you just create.
  • You should have wifi or ethernet acces to internet to add the first user.
  • Use it and enjoy.

If you like and want use it permantly on the same device (on heavy old laptop)

  • use console 2 - <ctrl>-<alt>-2
  • log as chronos user
  • sudo -i for root access
  • install chromiumos on the disk
/usr/sbin/chromeos-install --yes
reboot

Damned, i want to update

Damned i loose all my data - the bad way

Very simple, you have to redo the process.

Build a new usb stick and if necessary install on hard drive.

You will erase all your data with this methode, not very interesting, but useful for begening.

I heard about a live upgrade for the ChromeOS, i want the same

It's possible, you have to start the DEV Server.

cd /data/Chromiumos
export PATH="$PATH":`pwd`/depot_tools
cros_sdk
start_devserver --client_prefix ChromeOSUpdateEngine

When you boot ChromiumOS, or try to update (gui - chromium or cli - update_engine_client)

Upgrade the system

Verify the source and sync update, and upgrade the repository.

cd /data/Chromiumos
export PATH="$PATH":`pwd`/depot_tools
repo sync
cros_sdk
export BOARD=x86-generic
./setup_board --board=${BOARD} --force
./build_packages --board=${BOARD}

Now on the system you can update/upgrade your system (if DEV Server is started)

Add some new packages

Start DEV Server.

Start ChromiumOS and login on the console 2.

gmerge kbd
gmerge net-wireless/b43-fwcutter net-wireless/b43-firmware
loadkey fr

This command contact the dev server and ask for a compilation of kbd package (look at gentoo if you want know more about emerge).

Help, my wifi driver is missing

Locate and setup the kernel config

cd /data/Chromiumos
export PATH="$PATH":`pwd`/depot_tools
repo sync
cros_sdk
export BOARD=x86-generic
repo sync chromiumos/third_party/kernel   # if necessary
cd ../third_party/kernel/files

Compiling

chromeos/scripts/prepareconfig chromiumos-i386
export ARCH=i386
chromeos/scripts/kernelconfig editconfig
chromeos/scripts/kernelconfig oldconfig
(cd chromeos && git commit -a -m "My kernel config")
cros_workon start --board=${BOARD} sys-kernel/chromeos-kernel
repo sync
chromeos/scripts/prepareconfig chromiumos-i386
FEATURES="noclean" cros_workon_make --board=${BOARD} --install chromeos-kernel
cd ~/trunk/src/scripts
./build_packages --board=${BOARD}

Send it to my chromium computer

on the chrome host start sshd server and enable iptables rules

start openssh-server

on the dev server

cd /data/Chromiumos
export PATH="$PATH":`pwd`/depot_tools
repo sync
cros_sdk
export BOARD=amd64-generic
ssh-copy-id root@<ip of target>   # Push the ssh public key 
~/trunk/src/scripts/update_kernel.sh --remote <ip of target>