Google Chromium OSのビルド方法
Google Chromium OSをソースからビルドする。
[1]Chromium OS Developer Guide - The Chromium Projects
以下は2010/12/17時点でのビルドログ兼ビルド方法です。ビルド方法は頻繁に変更されるため、最新のビルド方法は[1]を参照してください。
はじめに
ホームディレクトリ(/home/USER_NAME)に以下のような作業ディレクトリを作成するとします。
必要に応じて読み換えてください。
/home/USER_NAME /google /chromiumos
ビルドマシン
準備
64ビット版Ubuntuのインストールとrootアクセス可能なアカウントの作成
Ubuntuのインストールに関しては他のサイトを参照してください。
Ubuntu Lucid 10.04が推奨されています。
~/$ uname -m
64ビット版でないといけません。上記のコマンドでx86_64と出力されれば64ビット版のようです。
Chromium OSのファイルサイズはソースのみで2GB、ビルド後は12GB、VMWare用イメージ等を作成すると15GB程度になるのでHDD容量には注意が必要です。
ビルドに必要なパッケージのインストール
[2]chromium - An open-source project to help move the web forward. - Monorail
ビルド手順更新の際に[1]からは削除されたようですが、恐らく[2]に書いてあるパッケージが必要です。インストール用のスクリプトが用意されているのでそれを利用します。
~/google$ wget http://src.chromium.org/svn/trunk/src/build/install-build-deps.sh ~/google$ sudo chmod +x install-build-deps.sh ~/google$ ./install-build-deps.sh Do you want me to install them for you (y/N) y Gold is a new linker that links Chrome 5x faster than ld. Don't use it if you need to link other apps (e.g. valgrind, wine) REPLACE SYSTEM LINKER ld with gold and back up ld? (y/N) y
gitのインストールと設定
~/$ sudo aptitude install git-core gitk git-gui ~/$ git config --global user.email "you@example.com" ~/$ git config --global user.name "Your Name"
ソースコードの取得
depot_toolsの取得
[3]Install depot_tools - The Chromium Projects
[3]に書かれているdepot_toolsが必要です。
~/google$ wget http://src.chromium.org/svn/trunk/tools/depot_tools.zip ~/google$ unzip depot_tools.zip
repoを設定する
~/google$ cd chromiumos ~/google/chromiumos$ repo init -u http://git.chromium.org/git/manifest
emailなどのビルドユーザ情報やターミナル上での文字の色の設定を行う。
-m minilayout.xmlのオプションを付けると取得するソース量が減るようです。
Chromium OSのソースを取得する
~/google/chromiumos$ repo sync
-m minilayout.xmlオプション無しで5時間程度かかりました。21万ファイル。1.9GB
ビルド
ビルド環境を作成する
~/google/chromiumos$ cd src/scripts/ ~/google/chromiumos/src/scripts$ ./make_chroot
10分程度かかりました。~/google/chromiumosディレクトリにchrootディレクトリが作成されます。このディレクトリはrmで削除してはいけないようです。
boardを設定する
(cros-chroot) ~/trunk/src/scripts $./setup_board --board=x86-generic --default
ここではtargetをx86-genericにしています。
x86互換CPU用には x86-generic、ARMCPU用には arm-genericに設定します。
3分程度かかりました。
共有ユーザアカウントを設定する
(cros-chroot) ~/trunk/src/scripts $./set_shared_user_password.sh
ターミナル上でsudoを使用する際に必要となります。
imageを作成する
(cros-chroot) ~/trunk/src/scripts $./build_image
--withdev --noenable_rootfs_verificationフラグは開発者でもない限りつけないほうが良いらしい。10分程度かかりました。
イメージの作成
(任意)USBメモリにイメージを書き込む
4GB以上のUSBメモリをビルドマシンに挿入しておく。
(cros-chroot) ~/trunk/src/scripts $./image_to_usb.sh --to=/dev/sdX
--from=../build/images/SUBDIRオプションを追加するとバージョンを指定できます。SUBDIRはx86-generic/0.9.131.2010_12_17_1141-a1のようなバージョンやビルド日時をあらわすディレクトリです。
--fromオプションを追加しないと最新版が選択されます。
--to=/dev/sdXでChromium OSイメージを書き込むUSBを指定します。
中にはUSBメモリと認識しないデバイスがあるようですが、その場合は--force_non_usbオプションを追加します。
(任意)QEmu用イメージを作成する
(cros-chroot) ~/trunk/src/scripts $./image_to_vm.sh
~/google/chromiumos/src/build/images/SUBDIR/にchromiumos_qemu_image.binが作成されます。
(任意)VMWare用イメージを作成する
QEmuをビルド環境にインストールする。
(cros-chroot) ~/trunk/src/scripts $ sudo emerge app-emulation/qemu-softmmu
イメージを作成する。
(cros-chroot) ~/trunk/src/scripts $./image_to_vm.sh --format=vmware
~/google/chromiumos/src/build/images/SUBDIR/にchromiumos.vmxとide.vmdkが作成されます。
ビルド環境から出る
(cros-chroot) ~/trunk/src/scripts $exit
実行
QEmuでの実行結果のスクリーンショット。[About Chromium OS]ページにビルドユーザの情報などが載ります。
(任意)USBメモリからブートする
ビルドしたChromium OSがうまく動作するかどうかはハードウェアに依存するようです。
Let's note CF-F8では動作しましたが、Let's note CF-W7ではethernetを認識しませんでした。
[4]Developer Hardware - The Chromium Projects
[4]でリストアップされているハードウェアではうまく動作するようです。
(任意)USBメモリからHDDへインストールする
- USBメモリからChromium OSを起動する
- ログインする
- Ctrl + Alt + tを押してターミナルを起動します
- HDDにインストールする
crosh> shell chronos@localhost / $ /usr/sbin/chromeos-install chronos@localhost / $ exit crosh> exit
(任意)QEmuで起動する
~$ sudo kvm -m 1024 -vga std -pidfile /tmp/kvm.pid -net nic,model=e1000 -net user,hostfwd=tcp::922-:22 \ -hda ~/google/chromiumos/src/build/images/SUBDIR/chromiumos_qemu_image.bin
など。
(任意)VMWareで起動する
- WMWareを起動する
- chromiumos.vmxを読み込む
VMWareで起動したときにethernetを認識しないときは、chromiumos.vmxをテキストエディタで開いて
ethernet0.virtualDev = "e1000"
を追加すれば動作する場合があります。詳しくは[5]を参照してください。
[5]Google グループ