Basic Informations: Chromium OS Developer Guide
Advanced Informations: The Dev server
Informations for really advanced users: Kernel Configuration
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
For the begening (or mobility)
If you like and want use it permantly on the same device (on heavy old laptop)
/usr/sbin/chromeos-install --yes
reboot
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.
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)
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)
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).
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
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}
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>