ChromeOSをビルドしてみた
基本はDeveloper Guideに書いてある手順で簡単(?)にビルド可能です。
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環境へ
./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だけは例外だそうです。気になる方はこのあたりをどうぞ。