再編集:ChromeOSをUbuntuでビルドしてUSBでブートする-(VAIOのVirtualBoxでChromeOSをビルドしたので時間がかかった)

  • このエントリーをはてなブックマークに追加

まずはビルド環境としてUbuntuの64bit版を必要があるので、VirtualBoxにインストール
親機がVAIOのVPCZ1なのでIntelVTも使えて思った以上にさくさくに動く。

いろんなサイトを参考にしながらスタート。
あまり詳しくわからないが、去年くらいからビルドの方法がかわったっぽい。
tarボールを落としてる人もいれば、repoやgclientの人もいる。
公式サイトはrepoなので公式をもとにChromeOSのビルドをしてみる。

[code language=”bash”]
repo init -u http://git.chromium.org/chromiumos/manifest.git -m minilayout.xml
[/code]

まずは、gitのインストール

[code language=”bash”]
sudo aptitude install git-core gitk git-gui
[/code]

そもそもaptitudeが入っていなかったのでインストールする。
あと他のブログで画像をみてるとcurlを使ってそうなのでインストール

[code language=”bash”]
sudo apt-get install aptitude curl
[/code]

ChromeOSのビルドに必要なもろもろが纏められているのでそれらを配置して実行

[code language=”bash”]
wget http://src.chromium.org/svn/trunk/src/build/install-build-deps.sh
sudo sh install-build-deps.sh
svn co http://src.chromium.org/svn/trunk/tools/depot_tools
export PATH=$PATH:~/depot_tools
[/code]

gclientではなくrepoを使うので、repoのインストール

[code language=”bash”]
sudo su –
curl http://android.git.kernel.org/repo > /usr/bin/repo
chmod a+x /usr/bin/repo
[/code]

本家にならって、ディレクトリ作成し、ChromeOSのソースを取得します。
repo initが完了したら、repo syncで取得を行う。(30分くらいで完了)

[code language=”bash”]
mkdir -p ${HOME}/chromiumos
cd ${HOME}/chromiumos
repo init -u http://git.chromium.org/chromiumos/manifest.git -m minilayout.xml
repo sync
[/code]

repo init で何回か失敗しましたが、.repoディレクトリを消してやり直してたら上手くいきました。

[code language=”bash”]
Initializing project chromiumos/overlays/portage-stable …
remote: Counting objects: 212, done.
remote: Compressing objects: 100% (162/162), done.
remote: Total 212 (delta 32), reused 170 (delta 26)
Receiving objects: 100% (212/212), 123.14 KiB | 97 KiB/s, done.
Resolving deltas: 100% (32/32), done.
From http://git.chromium.org/chromiumos/overlays/portage-stable
* [new branch] 0.12.362.B -> cros/0.12.362.B
* [new branch] 0.12.369.B -> cros/0.12.369.B
* [new branch] 0.12.392.B -> cros/0.12.392.B
* [new branch] 0.12.433.B -> cros/0.12.433.B
* [new branch] 0.13.434.B -> cros/0.13.434.B
* [new branch] 0.13.509.B -> cros/0.13.509.B
* [new branch] 0.13.558.B -> cros/0.13.558.B
* [new branch] master -> cros/master
Fetching projects: 100% (10/10), done.
Checking out files: 100% (1718/1718), done.
Checking out files: 100% (89225/89225), done.files: 12% (11414/89225)
Syncing work tree: 100% (10/10), done.
Your sources have been sync’d successfully.
yuta@yuta-VirtualBox:~/chromiumos$
[/code]

途中で名前やメールアドレスを聞かれますが、適当に入力しました。
また、カラー表示の質問があるので基本「y」入力で答えます。

ソース取得も完了したので、ビルド用のchroot環境の作成に入ります。
これが結構ながくて、また30分くらい待ちました。

まえにUbuntuが手元になかったので、ServerManVPSをUbuntuに再セットアップして試しましたが
まさかのUbuntu32bit選択という落ちで、ここでamd_64じゃないって怒られました。

[code language=”bash”]
yuta@yuta-VirtualBox:~/chromiumos/src/scripts$ ./make_chroot
These are the packages that would be merged, in order:
These are the packages that would be merged, in order:
Calculating dependencies
Fetching bininfo from http://commondatastorage.googleapis.com/chromeos-prebuilt/host/amd64/binary-26.05.11.082024/packages/ http://commondatastorage.googleapis.com/chromeos-prebuilt/host/amd64/full-26.05.11.094812/packages/
!!! Error connecting to ‘http://commondatastorage.googleapis.com/chromeos-prebuilt/host/amd64/binary-26.05.11.082024/packages/ http://commondatastorage.googleapis.com/chromeos-prebuilt/host/amd64/full-26.05.11.094812/packages/’.
!!! Unable to get listing: 400 Server did not respond successfully (400: Bad Request)
Pending 5, Ready 1, Running 1, Retrying 0, Total 211 [Time 13m6.2s Load 0.92 0.85 0.63]
Started virtual/perl-File-Spec-3.30 (logged in /tmp/perl-File-Spec-3.30-cxOyXu)
Completed virtual/perl-ExtUtils-ParseXS-2.20.0401 (in 0m3.9s)
・・・・・
[/code]

完了したら、ビルド用のchroot環境に入ります。

[code language=”bash”]
yuta@yuta-VirtualBox:~/chromiumos/src/scripts$ ./enter_chroot.sh
(cros-chroot) yuta@yuta-VirtualBox ~/trunk/src/scripts $ ./setup_board –board=x86-generic –default
Total: 1 package (1 new, 1 binary), Size of downloads: 0 kB
Portage tree and overlays:
[0] /usr/portage
[?] indicates that the source repository could not be determined
>>> Emerging binary (1 of 1) cross-i686-pc-linux-gnu/glibc-2.10.1-r2 from unknown repo
[/code]

「Initialize the build for a board」ボードターゲットを設定します。
これはそんなにかかりませんでした。

[code language=”bash”]
(cros-chroot) yuta@yuta-VirtualBox ~/trunk/src/scripts $ ./setup_board –board=x86-generic –default

[/code]

やっとここまでで、パッケージのビルド

[code language=”bash”]
(cros-chroot) yuta@yuta-VirtualBox ~/trunk/src/scripts $ ./build_packages
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
Pending 2, Ready 0, Running 1, Retrying 0, Total 418 [Time 40m49.3s Load 0.54 1.12 0.94]
Pending 2, Ready 0, Running 1, Retrying 0, Total 418 [Time 40m54.3s Load 0.50 1.11 0.94]
Still building autotest-tests-ownershipapi-0.0.1-r194 (2m3.9s). Logs in /tmp/autotest-tests-ownershipapi-0.0.1-r194-WeKa5u
Pending 2, Ready 0, Running 1, Retrying 0, Total 418 [Time 41m4.3s Load 0.50 1.09 0.93]
Pending 2, Ready 0, Running 1, Retrying 0, Total 418 [Time 41m9.3s Load 0.54 1.08 0.93]
Pending 2, Ready 0, Running 1, Retrying 0, Total 418 [Time 41m14.3s Load 0.58 1.08 0.93]
Completed chromeos-base/autotest-tests-ownershipapi-0.0.1-r194 (in 2m22.1s)
Pending 1, Ready 1, Running 0, Retrying 0, Total 418 [Time 41m17.4s Load 0.53 1.06 0.93]
Started chromeos-base/autotest-all-0.0.1-r4 (logged in /tmp/autotest-all-0.0.1-r4-tJaoQX)
Completed chromeos-base/autotest-all-0.0.1-r4 (in 0m3.5s)
Pending 0, Ready 0, Running 0, Retrying 0, Total 418 [Time 41m21.0s Load 0.53 1.06 0.93]
Merge complete
Adding chromeos-base/chromeos to world
Adding chromeos-base/chromeos-dev to world
Adding chromeos-base/chromeos-factoryinstall to world
Adding chromeos-base/factorytest-init to world
Adding chromeos-base/chromeos-test to world
Adding chromeos-base/autotest-all to world
Done
Builds complete
Elapsed time: 41m40s
Done
(cros-chroot) yuta@yuta-VirtualBox ~/trunk/src/scripts $
[/code]

イメージをビルドします。

[code language=”bash”]
cros-chroot) yuta@yuta-VirtualBox ~/trunk/src/scripts $ ./build_image
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
INFO : Running /home/yuta/trunk/src/scripts/generate_au_zip.py -o /home/yuta/trunk/src/build/images/x86-generic/0.13.563.2011_06_02_0128-a1 for generating AU updater zip file
2011/06/02 01:46:51 – generate_au_zip.py – ERROR : file = /home/yuta/trunk/src/platform/vboot_reference/scripts/image_signing/convert_recovery_to_ssd.sh does not exist
Failed generating AU zip file – ignoring Error…
Done. Image created in /home/yuta/trunk/src/build/images/x86-generic/0.13.563.2011_06_02_0128-a1
Chromium OS image created as chromiumos_base_image.bin
Developer image created as chromiumos_image.bin
Elapsed time: 18m25s
To copy to USB keyfob, do something like:
./image_to_usb.sh –from=../build/images/x86-generic/0.13.563.2011_06_02_0128-a1 –to=/dev/sdX
To convert to VMWare image, INSIDE the chroot, do something like:
./image_to_vm.sh –from=../build/images/x86-generic/0.13.563.2011_06_02_0128-a1 –board=x86-generic
from the scripts directory where you entered the chroot.
(cros-chroot) yuta@yuta-VirtualBox ~/trunk/src/scripts $
[/code]

完了しました、下記ディレクトリにイメージが出来上がったので次はUSBに書き込んで起動確認します。

[code language=”bash”]
~/chromiumos/src/build/images/x86-generic
[/code]

  • このエントリーをはてなブックマークに追加

SNSでもご購読できます。