Chromebook(クロームブック)ニュースサイト

Chrome速報

Chromebook自作計画 ― ChromiumOSをビルドしてみた

      2015/11/17

Chromebook flipを買うつもりがThinkPad X240を買って以来、X240にインストールしたUbuntuで遊んでいるのですが、せっかくUbuntu環境があるので、ChromiumOSを自分でビルドしてみることにしました。

といっても、The Chromium Projectのウェブサイトにある「Chromium OS Developer Guide」に書いてある内容をなぞっただけです。

スポンサードリンク

ビルド用マシンの前提条件

Chromium OS Developer GuideにはビルドするPCの前提条件が掲載されています。

  • Ubuntu Linux  (version 14.04 – Trusty)
  • 64bit system
  • 管理者権限
  • 4GB RAM(8GBがベター)

X240にインストールしたUbuntuのバージョンが、14.04で丁度良かった。

あと、ビルドに際してChromiumOSのソースコードやSDKなど各種ツールをインストールするので約40GBの記憶容量が必要です。10GBくらいしか使っていなかったSSDがビルド後50GB超えてるので、最低40GBは必要だと思います。

ビルド環境の構築

今回は、Homeディレクトリの下にビルド環境を作っていきます。(Chromium OS Developer Guideの手順に従っただけですが、上手くいかなかったところは修正しています。)

(1) git, subversion, curl のインストール

[Ctrl]+[Alt]+[T]キーでターミナルを起動し、次のコマンドを入力します。

(2) depot_tools のインストール

続いてdepot_toolsをgitからインストール。Chromium OSのソースコードの取得/同期に際して、複数のレポジトリ(データ貯蔵庫)からのダウンロードを便利にしてくれる「repo」を使えるようにするためのツールです。

インストールが済むと、Homeディレクトリの下に「depot_tools」というディレクトリが作成され、depot_toolsの実行環境が作られます。

次に「~/.bashrc」ファイルを開いてパスを通します。

「~/.bashrc」ファイルを開いてターミナル上で編集するためには、vimがインストールされている必要があります。もし、vimをインストールしていないのであれば、ファイルを開く前に、下のコマンドでインストールします。

vimがインストール済みの状態で「~/.bashrc」ファイルを開きます。

ファイルを開いたら、最後行に移動し[o]キーで次行挿入し、次を追加します。

追加したら[ESC]キーで追加モードを終了します。「:w」と入力し[Enter]キーを押してファイルを保存したら、「:q」と入力し[Enter]キーを押して vim を終了します。

(参考サイト)Linuxコマンド集【vi】テキスト・ファイルを編集する

(3) sudoersのtty_ticketsオプションを無効化

ChromiumOSの開発ツール(cros_sdk)を正常に動作させるためにtty_ticketsのオプションを無効化します。

まず、tmpディレクトリに移動します。

続いて以下のコマンドを実行します。

(4) gitの設定

続いて git の設定。メールアドレスとユーザー名を追加します。

(5) 64bitマシンかの確認

自分のマシンが64bitとわかっていれば特に必要ないと思いますが、Chromium OS Developer Guideで「ダブルチェック!!」と言われているので、次のコマンドを一応実行。

「x86_64」と表示されれば64bitマシンなのでOK。表示されなければ、ビルドを実行できません。

(6) ファイル作成時のパーミッションの設定

パーミッションの設定。管理者だけが読み書き、その他のユーザーは読み取りのみの設定にします。

最後行が「-rw-r–r」となっていればOK。

ここまででChromiumOSのビルド実行環境の準備が完了です。長い!!

ChromiumOSのビルドの実行

いよいよChromiumOSをビルドしていきます。

(1) ソースコード保存用のディレクトリを作成

まず、ChromiumOSのソースコードを格納しておくディレクトリをHomeディレクトリの直下に作ります。

(2) ソースコードの取得

まずChromiumOSディレクトリに移動します。

移動したらソースコードを取得します。

上のコマンドを実行して「repo has been initialized in /home/user/chromiumos」と表示されたら、続けて次のコマンドを実行します。

ソースコードの取得/同期にかなり時間を要します。完了すれば「Your sources have been sync’d successfully.」と表示されます。
僕の場合、一回途中でエラーになってしまったので、再度コマンドを実行しました。

(3) ChromiumOSのSDKの起動

ChromiumOSのSDKを起動します。

ChromiumOSのビルドはchrootした環境で行われます。chrootとは↓だそうです。

chrootとは、UNIXオペレーティングシステムにおいて、現在のプロセスとその子プロセス群に対してルートディレクトリを変更する操作である。ルートディレクトリを別のディレクトリに変更されたプロセスは、その範囲外のファイルにはアクセスできなくなるため、この操作をchroot監獄などとも呼ぶ。”chroot” は chroot(2) システムコールおよび chroot(8) コマンドを意味する。

Wikipedia

コマンドを実行すると、シェルのプロンプトが「(cr) ((abcd0123…))username@pcname ~/trunk/src/scripts $」に変更されます。これ以降は、この環境下での作業となります。

(4) ターゲットアーキテクチャーの指定

続いてChromiumOSを利用したいPCのアーキテクチャーを指定します。今回は64bitマシンであるThinkPad X240(Celeron 2980U)で試したいの次のコマンドを実行。32bitマシンを指定する場合は、「amd64」の部分を「x86」とします。

完了すれば、「Done! The SYSROOT is: /build/amd64-generic」と表示されます。

(5) Chronos パスワードの設定

つづいて、ビルドしたChromiumOSでシェルを使う場合のパスワードを設定しておきます。ChromeOSではデベロッパーモードでのみ利用できるシェルですが、ChromiumOSの場合は鼻からデベロッパーモードです。

コマンドを入力すると「Enter password for shared user account:」と返してくるので、パスワードを入力します。パスワードは表示されないので打ち間違いには気をつけましょう。パスワードを入力して[Enter]キーを押し、「Password set in /etc/shared_user_passwd.txt」と表示されれば設定完了です。

(6) ビルドの実行

やっとビルドの実行です。次のコマンドを実行します。

コマンド入力後、CPU使用率が50%前後で推移します。

俺のX240が火を噴くぜ!!

「Done」って表示されたら完了です。結局90分かかりました。

(7) ディスクイメージの作成

ビルドできたら、次はディスクイメージを作成します。次のコマンドを実行します。

これもCPU使用率50%前後で数十分間かかります。20分くらいかかりました。

Chromiumos_build

ChromiumOSを起動するためには、作成したディスクイメージをUSBメモリに書き込んだりする必要があります。ディスクイメージ作成完了時のシェルに「USBメモリへの書き込み」や「仮想マシン用のディスクイメージ作成」のコマンドが表示されますので、そのまま打ち込めばOKです。

USBメモリへの書き込み

仮想マシン用イメージの作成

 

まとめ

長かった…

OSのビルドってこんなに時間がかかるんですね。

さて、次回はいよいよUSBメモリにイメージを書き出し、X240でUSBブートを試してみます。すべてのデバイスが上手く動作すれば、ThinkPad X240をChromebook化してみようと思います。

 - Chromium OS, ThinkPad X240

  関連記事

Chromebook自作計画 (2) ― ライブUSBメモリの作成と起動

前のエントリーでChromiumOSを独自にビルドしてみました。 今回はビルドし …

古いPCやMacをChromebook化する「Cloudready」をThinkPad X240で試してみた

古いWindowsPCやMacをChromebook化するアプリケーション「Cl …

Raspberry PiやPCをChromebook化する「Flint OS」をThinkPad X240で試してみた

Chrome OSのオープンソース開発バージョンである「Chromium OS」 …

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です