スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
Date: --.--.-- Category: スポンサー広告   

Chromium OS をビルドしてみる

どうやら噂の Chrome OS のソースコードが公開されたようですね。そのうち USB ブートできるライブイメージあたりも公開されそうな気がしますが、試しにビルドをしてみましょう。

入手先は Chromium OS のサイトです。
右側の「Source code」の下、「Getting and building the Chromium OS source code」のリンクを開きます。
ここでビルドに関する情報を得ることが出来ます。環境としては、Ubuntu を使うようです。8.04 LTS 以降であればいいようですが、最新の 9.10 を推奨しています。
今回は 9.04 の環境を使いました。
また、ビルド中に chroot を使う必要があるので、sudo コマンドが使えるユーザーでビルドを行う必要があるようです。

ざっと流れをみてみると、
ソースコードの入手 > ビルド環境の構築 > (オプションで) Chromium のソースの入手とビルド > Chromium OS のビルド となるようです。
Chromium はブラウザ本体ですが、これはプレビルドを使うことも出来るようです。
また、Chromium OS のソースコードは tar でアーカイブされた物をダウンロードするか、git から取得するかのどちらかの方法が使えます。
今回は、ソースは tar アーカイブを使い、Chromium はプレビルドされた物を使うことにします。

まずは Chromium OS のソースコードをダウンロードします。
「Getting the Chromium OS Source Code」というリンクがあるので、これをクリックします。開いたページの最初のセクション、「Get the source code for the browser (optional)」は Chromium のソースコードなので、今回はここは飛ばします。
その下のセクション、「Get the Source Code for the OS」にある「Method One: Download the code directly (cannot commit changes)」の下にあるリンク、「Download the tarball」からソースコードの tar アーカイブをダウンロードできます。今回は chromiumos-0.4.22.8.tar.gz というファイルをダウンロードしました。
ファイルサイズは 233MB ありました。

次にビルド環境を整えます。
(そういえばビルドに必要なディスク容量の記述が見あたりません。とりあえずソースコードを展開したディレクトリの容量は 648MB でした。コンパイル後にどうなっているか再確認してみましょう。)

まずソースを展開します。

tar zxvf chromiumos-0.4.22.8.tar.gz

これで、カレントディレクトリに chromiumos-0.4.22.8 というディレクトリが作成され、その中にソースが展開されます。

次に、ホームディレクトリにソースコードのディレクトリへのシンボリックリンクを作成します。これは必要な手順ではありませんが、上記サイトでは説明がこのホームディレクトリへのリンクでおこなわれているので、作成した方がわかりやすいと思います。/opt でソースを展開したとすると、

ln -s /opt/chromiumos-0.4.22.8 ~/chromiumos

次にローカルリポジトリの作成です。~/chromiumos/src/scripts/ ディレクトリに必要なスクリプトがあるので、そこへ移動します。

cd ~/chromiumos/src/scripts/

次のスクリプトを実行します。

./make_local_repo.sh

この手順におよそ1時間かかりました。350MB 弱の deb パッケージのダウンロードと、chroot 用にそのパッケージを展開するようです。
*エラー1:9.10 より以前のバージョンを使っていると、debootstrap コマンドの挙動の違いによってエラーが出る場合があるようです。この場合、Chromium OS のサイトにあるように、一時的に Chromium OS のリポジトリを登録して debootstrap のパッケージを更新するとうまくいくと思います。
*エラー2:システムの / パーティションにソースを展開して実行する場合は問題ないと思いますが、もし外付けの HDD などでこのコマンドを実行する場合、自動マウントをさせていたりするとマウントオプションによっては debootstrap でエラーがでます。おそらく dev オプションが必要なのと、後ほどの作業で suid オプションも必要と思われるので、
sudo mount -o rw,dev,exec,suid,remount /opt
または
sudo mount -o default /opt
(外付け HDD を /opt にマウント済みの場合) として各オプションを有効にして、
sudo rm -r ~/chromiumos/repo/
と中途半端にできてしまったローカルリポジトリのディレクトリを削除してから、再度
./make_local_repo.sh
を実行します。

次に

./make_chroot.sh

を実行します。
ビルドに必要なパッケージを追加するようです。ビルド用の環境に追加するだけなので、元の環境には (多分) パッケージを追加することはありません。
およそ 30 分かかりました。また、最後に initrd を作成するためにパスワードの入力を求められます。パスワードを入力すると、chroot 内で rm -rf を使うなという注意が表示されます。chroot 内に元のシステムのディレクトリを再マウントしているので、それを消してしまわないように注意しなければならないようです。
もし chroot 環境を削除する場合は、

./make_chroot --delete

を使うようです。

次に、Chrome のバイナリーをダウンロードして指定された位置に配置します。
手順のところにあるリンクをクリックすると、「chrome-linux.zip」というファイルをダウンロードすることが出来るので、それをホームディレクトリにダウンロードし、

mkdir -p ~/chromiumos/src/build/x86/local_assets
mv ~/chrome-linux.zip ~/chromiumos/src/build/x86/local_assets/chrome-chromeos.zip

とします。

chroot 環境に移行します。

./enter_chroot.sh

この時、ターミナルのプロンプトの先頭に (chroot) が追加されるので、元の環境か chroot 内かを注意してください。

chroot 環境で、デバッグ用にユーザーアカウントを作成することも出来ます。通常の動作には不要なようなので、この手順は飛ばしてもいいようです。

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

USERNAME の部分は任意のユーザー名を指定します。
このユーザーアカウントを削除するには、chromeos_pam_localaccount.h を削除すればいいようですが、このファイルがどこにあるかは調べてませんでした。
さらに、このユーザーアカウントのパスワードは自動的にランダムな値に設定されるようですが、それを任意のパスワードにするには

./set_shared_user_password.sh

を実行して、プロンプトが出るのでそこにパスワードを入力します。
このパスワードは、chroot 環境の ~/trunk/src/scripts/shared_user_passwd.txt にあります。

これで準備ができたので、ビルドします。と言っても、ビルドはスクリプトが用意されているので、それを実行するだけです。
chroot 環境内で、

./build_platform_packages.sh
./build_kernel.sh


./build_platform_packages.sh は「All packages built.」とターミナルに出力されていれば完了です。今回は一時間強かかりました。
./build_kernel.sh は「Kernel build successful」と出力され、カーネルのパッケージ名が表示されます。こちらは 75 分ほどかかりました。

後はイメージのビルドを行います。

./build_image.sh

と実行します。
最後に USB メモリーや VMware のイメージへの変換方法が表示されて完了です。およそ 20 分かかりました。

ここまでで chroot 内の作業は完了です。

作成されたイメージは、~/chromiumos/src/build/images/ 以下に、一意の数字のディレクトリが作成され、その中に作成されます。
おそらく何度かイメージを作成すると、そのたびにディレクトリが作成されると思うので、イメージの再作成をした場合はどのディレクトリが最新かを確かめてください。多分、新しい方が数字が大きくなると思います。

今回作成した rootfs.img は 950MB ありました。ではこのイメージから Chromium OS をブートする USB メモリを作成します。

./image_to_usb.sh --from=~/chromium/src/build/images/SUBDIR --to=/dev/USBKEYDEV

と実行します。
SUBDIR は先ほどイメージが生成されたディレクトリです。イメージファイルではなくディレクトリを指定します。USBKEYDEV は USB メモリーのデバイスです。USB メモリーが /dev/sdc1 などでマウントされる場合は、/dev/sdc とパーティション番号は含めずに指定します。USB メモリーはフォーマットしていなくても使えますが、すべてのデータは消去されます。

で、それを mini9 に接続してブートしてみました。

Dell のロゴの後にブートデバイスを選ぶ白の四角が表示されています。それが消えてからが起動です。
さすがに 7 秒は無理ですが、かなり高速に起動しますね。
また、ログインは chroot に移行した後に作成したローカル・ユーザーアカウントか、gmail のアカウントが使えるようです。ネットワークに繋がっていなければローカルユーザーアカウントだけだと思います。
また、mini9 は無線 LAN は使用できません。有線 LAN は有効です。標準で Flash player が組み込まれているので、そのまま YouTube や Google maps からストリートビューを見たりもできます。
スポンサーサイト
Date: 2009.11.20 Category: Chrome OS  Comments (0) Trackbacks (0)

この記事へのコメント:


管理人のみ通知 :

トラックバック:


最新記事
最新コメント
ウィジェット
月別アーカイブ
カテゴリ
プロフィール

SC3WO06A

Author:SC3WO06A
FC2ブログへようこそ!


検索フォーム
RSSリンクの表示
リンク
このブログをリンクに追加する
ブロとも申請フォーム

この人とブロともになる

QRコード
QRコード
最新トラックバック
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。