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>