ChromeOSをビルドしてみた

基本はDeveloper Guideに書いてある手順で簡単(?)にビルド可能です。

前準備

  • Ubuntu Linux 10.04(x64) Ubuntuは64bit版を選択。
  • HDD容量は30G程度確保しておく

自分はVMware Workstation上にビルド環境を作りました。

depot_toolsのインストール

ChromeOSのビルドに使用するツール群をダウンロードします。svn経由で取得する方法と、wgetなどで直接ダウンロードする方法とありますが、ここではwgetで取得。

cd ~
wget http://src.chromium.org/svn/trunk/tools/depot_tools.tar.gz
tar -zxvf depot_tools.tar.gz

これにPATHを通します。

export PATH=`pwd`/depot_tools:"$PATH"

を ~/.profilesの最終行辺りに追記します。その後、

source ~/.profiles

で修正内容を反映。

gitのインストール

sudo aptitude install git-core gitk git-gui

その後

git config --global user.email "you@example.com"
git config --global user.name "Your Name"

上記のメアドとユーザ名は適当なもので大丈夫。

ソースのダウンロード

ChromeOSのソース一式をダウンロードします。ダウンロードにはrepoコマンドを使用。repoコマンドは先にインストールしたdepot_toolsに含まれており、gitコマンドのラッパのようです。

cd ~
mkdir -p chromiumos
cd chromiumos
repo init -u http://git.chromium.org/git/manifest -m minilayout.xml
repo sync

sync時に15分程度かかります。

chroot環境の作成

cd src/scripts
./make_chroot

途中で1回パスワード要求があります。所要時間は15分程度。

chroot環境へ

./enter_chroot.sh

以降はこのchroot環境で操作を行います。chroot環境ではプロンプトの先頭に

(cros-chroot)...

とかが付くようになります。

setup_boardの実行

ビルドするChromeOSのターゲットとなるアーキテクチャを選択します。x86アーキテクチャARMアーキテクチャが用意されていますが、ここではx86アーキテクチャを選択します。

/setup_board --board=x86-generic --default

ここで--defaultオプションを付けたほうがいいようです。これを付けないと以降の処理で毎回--boardオプションを要求されます。

共有ユーザchronosのパスワード設定

./set_shared_user_password.sh

ChromeOS上でsudoするときのパスワードを設定します。

packageの作成

./build_packages --oldchromebinary

オプションの--oldchromebinaryは、どうやらビルド済みのバイナリをChromeOSに組み込む、ということのようです。
所要時間は60分程度。

imageの作成

./build_image

所要時間20分程度。ChromeOSのビルド自体はこの時点で完了。

VMWare用のイメージを作成&起動

始めにVMWare用にイメージを作成してみます。作成にはQEmuが必要なので、以下のコマンドでインストール。

sudo emerge app-emulation/qemu-softmmu

次にVMWare用イメージを作成

./images_to_vm.sh --format=vmware

正常に終了すると、~/chromiumos/src/build/images/x86-generic/[バージョンとビルド時のタイムスタンプ] のディレクトリ内にVMWare用イメージが作成されます。必要なのは

  • ide.vmdk
  • chromiumos.vmx

の2つ。これを同一ディレクトリに置いて、VMWareから起動してみましょう。起動するとこんな感じ

言語は日本語が選べるので、日本語を選択。するとキーボードの選択欄がでるので、一応Japanese Keyboardを選択しておきます。
次にアップデートの確認画面がでます。放っておいても、ESCで飛ばしてもおk。
次に最初のユーザの情報を入力。ChromeOSの変わってるところは、OSのログインにGoogleアカウントを使用するってところ。

ここでは省略しますが、実機でHDDにインストールしたいって場合は、USBブート用メモリをimages_to_usb.shで作成。そのUSBでブート後、[Ctrl]+Alt]+[T]でターミナルを起動。以下のコマンドで実機のHDDやSSDにインストール可能です。

/usr/sbin/chromeos-install

余談ですが、手元にあった余ってたノートで試してみましたが、USBブート時にPAEまわりでエラーがでるようです。これはPAE(物理アドレス拡張)に対応していないCPUの場合に出るエラーです。PAEはPentium Pro以降のほぼ全てに採用されている筈なのですが、PentiumMだけは例外だそうです。気になる方はこのあたりをどうぞ。