White scenery @showyou, hatena

If you have any comments, you may also send twitter @shsub or @showyou.

Chromium osをコンパイルしてみる

http://journal.mycom.co.jp/news/2009/11/20/011/index.html
http://sites.google.com/a/chromium.org/dev/chromium-os/building-chromium-os

なんかchromiumosプロジェクトが公開されたので、せっかくなのでbuildだけしてみる


先に結論だけ書いとくと楽勝でした。GoといいGoogle関連のOSSはドキュメント読みやすいです。


環境はUbuntu 9.10(x86)です。当然ですが自己責任で。

  • 2009/11/21 11:02 このエントリの後ろに追記しました
  • 2009/11/21 13:11 記述ミスがあったので修正しました(thx vine_user!)
コンパイルに必要なライブラリを揃える

$ wget http://src.chromium.org/svn/trunk/src/build/install-build-deps.sh
$ sudo sh install-build-deps.sh

depot_toolsを取ってくる

$ svn co http://src.chromium.org/svn/trunk/tools/depot_tools

パスも設定しておく。.bashrcあたりに書いておけば起動するたびに打ち込む必要はなくなりますね。
$ export PATH=`pwd`/depot_tools:"$PATH"

chromium osのソースを取ってくる

$ sudo apt-get install git-core
$ mkdir chromiumos
$ cd chromiumos
$ gclient config http://src.chromium.org/git/chromiumos.git
$ gclient sync

時間長いです。っていうかgclientってなんだ?

ローカルリポジトリを作る

$ cd chromiumos.git/src/scripts
$ ./make_local_repo.sh

なんかわらわらとdebファイルがコピーされます

ビルド環境を作る

$ ./make_chroot.sh

またなんかわらわらと(ry

chromiumを取ってくる

手順どおりに読むとchromiumのビルドになるんだけど、いちいちやりたくないのでその次に書いてるchromiumのバイナリを取っておく。

$ cd ~/chromeos/chromiumos.git/src
$ mkdir -p build/x86/local_assets
$ wget http://build.chromium.org/buildbot/archives/chromium-chromiumos-r32516/chrome-linux.zip
$ mv chrome-linux.zip build/x86/local_assets/chrome-chromeos.zip

ビルド環境に入る

$ cd scripts
$ ./enter_chroot.sh

共有ユーザのパスワードを設定する

(chroot)$./set_shared_user_password.sh

ビルドする

(chroot)$ ./build_platform_packages.sh
(chroot)$ ./build_kernel.sh
(chroot)$ ./build_image.sh

~/chromiumos/src/build/imagesの下にバージョンっぽい数字の付いたディレクトリができます(うちの場合999.999.32409.024640-a1って書いてる)

入ってるかどうかテスト

$ cd ~/chromeos/chromiumos.git/src/build/images/SUBDIR
$ sudo mount -o loop rootfs.image rootfs
$ sudo chroot rootfs

でビルドしたシステムに入れる

$ df
$ dpkg -l

サンプルには上のとおり書いてるけどdfやったらエラーっぽいものが返ってきた。dpkg -lは普通に入ってるパッケージ返してくるんだけど・・謎だ。

出来上がったイメージディスクに入れる

入れたいんだけど空いてるディスクがないのでvmware用のimageにした。

まずroot環境をビルド前までに戻す

$ exit
(chroot) $ exit
$

次にvmware向けに転送する。qemu-imgが必要なので先にqemuを入れておく

$ sudo apt-get install qemu

転送する

$ ./image_to_vmware.sh --from=~/chromeos/chromiumos.git/src/build/images/(バージョン)

src/build/(バージョン)にide.vmdkが出力されます。

実際に動かしてみる

この辺はvmware playerがあるならそっちを使えばいいと思うけど、ちょうど手元にVirtualBox OSEがあったのでそれを使って立ち上げてみた。


成功!でもまさかログインにgmailアカウント使うとは思わなかった・・

11/21 11:02追記

http://d.hatena.ne.jp/r_kurain/20091121/1258768687 より。

cd ../platform/pam_google && ./enable_localaccount.sh USERNAME

この行は本来非推奨なのだけれど、USERNAMEで chromium osにログインできるようにするため処理。

これをしておかないと、chromium osgmailアカウントでログインするため、ネットワークにつながらないときにログインできない。後述する、EeePCなどの実機に入れるところで必要になる

ということなので、$ ./enter_chroot.shの直後に上のコマンドを実行したほうがいいみたいです。私は面倒だったしそんなに使い込まないと思ったので入れてませんでしたが。ログインしないとワイヤレスの設定もできそうもないし、無いと困りそうですね。