CoreOSのイメージ作成

CoreOSは自分でイメージを作成することもできます。自分でイメージを作成す るとパスワードを設定したり、host側に事前にソフトウェアを入れたりと言っ たことができます。(あまり利点が分かってない)

イメージ作成の具体的な手順は

https://coreos.com/docs/sdk-distributors/sdk/modifying-coreos/

に書かれているとおりです。今回はこれをそのままたどってみました。

作業内容

前提

イメージを作成に必要なマシンは、x86-64のLinuxであればディストリビュー ションは問いません。

その他に

  • git

  • curl

が必要です。が、だいたいのシステムには入っていますよね。

depot_toolsを入れる

CoreOSはrepoを使ってbuildします。これはAndroidで使っているものですね。 depot_toolsをcloneしてきてPATHを通します。

% git clone
https://chromium.googlesource.com/chromium/tools/depot_tools.git
% export PATH="$PATH":`pwd`/depot_tools

SDK chrootを作成

% mkdir coreos; cd coreos
# .repoディレクトリを初期化します
% repo init -u https://github.com/coreos/manifest.git -g minilayout --repo-url \
https://chromium.googlesource.com/external/repo.git
# manifestで指定されたgit repoをすべて取得します (結構な時間がかかります)
% repo sync

イメージの作成

sdkをダウンロードしてきます。(sudoが必要です)

% ./chromite/bin/cros_sdk

これも結構な時間がかかりますが、しばらく待つと、こんな感じに出てきます。

cros_sdk:make_chroot: All set up.  To enter the chroot, run:
$ cros_sdk --enter

CAUTION: Do *NOT* rm -rf the chroot directory; if there are stale bind
mounts you may end up deleting your source tree too.  To unmount and
delete the chroot cleanly, use:
$ cros_sdk --delete

(cr) ((c15791e...)) r_rudi@hamspam ~/trunk/src/scripts $

"core"ユーザーのパスワードを設定するにはこう打ちます。 (coreos/chroot/usr/lib64/crosutilsに入っています)

./set_shared_user_password.sh

このイメージのターゲットをamd64にするにはこうします。x86とかも指定でき るようです。

echo amd64-usr > .default_board

board root ファイルシステムを /build/${BOARD} に設定するにはこう打ちま す。

./setup_board

しばらくすると、こう出てきて完了します。

INFO    setup_board: Elapsed time (setup_board): 4m16s
INFO    setup_board: The SYSROOT is: /build/amd64-usr

バイナリパッケージをビルドをします。これも30分ぐらいかかります。

./build_packages
(省略)
>>> Using system located in ROOT tree /build/amd64-usr/

>>> No outdated packages were found on your system.
INFO    build_packages: Checking build root
INFO    build_packages: Builds complete
INFO    build_packages: Elapsed time (build_packages): 27m55s

終わったらdeveloper overlay(?あとで調べる)と一緒にバイナリパッケージを 作成します。

./build_image --noenable_rootfs_verification dev

(省略)
2014/04/02 06:12:44 - generate_au_zip.py - INFO    : Generated
/mnt/host/source/src/build/images/amd64-usr/274.0.0+2014-04-02-0604-a1/au-generator.zip
COREOS_BUILD=274
COREOS_BRANCH=0
COREOS_PATCH=0
COREOS_SDK_VERSION=273.0.0
Done. Image(s) created in
/mnt/host/source/src/build/images/amd64-usr/274.0.0+2014-04-02-0604-a1
Developer image created as coreos_developer_image.bin
To convert it to a virtual machine image, use:
  ./image_to_vm.sh --from=../build/images/amd64-usr/274.0.0+2014-04-02-0604-a1 --board=amd64-usr
The default type is qemu, see ./image_to_vm.sh --help for other  options.

ここで出来たのはrawなbin imgなので、./image_to_vm.shで変換します。

./image_to_vm.sh --format virtualbox

(省略)
INFO    build_image: Elasr/274.0.0+2014-04-02-0604-a1
INFO    image_to_vm.sh:  - coreos_developer_virtualbox_image.vmdk
INFO    image_to_vm.sh:  - coreos_developer_virtualbox.ovf
INFO    image_to_vm.sh:  - coreos_developer_virtualbox.README
Copy coreos_developer_virtualbox_image.vmdk and
coreos_developer_virtualbox.ovf to a VirtualBox host and run:
VBoxManage import coreos_developer_virtualbox.ovf

なお、build_imageの最後に出てますが、defaultではqemuのimageが作られます が、今回のようにその他のイメージも作成できます。具体的には今のバージョ ンではこんな感じですね。vagrantやami、gceなどもできるみたいです。

  • ami

  • pxe

  • iso

  • openstack

  • qemu

  • qemu_no_kexec

  • rackspace

  • rackspace_vhd

  • vagrant

  • vagrant_vmware_fusion

  • virtualbox

  • vmware

  • vmware_insecure

  • xen

  • gce

今回はvirtualboxを選びましたので、 coreos_developer_virtualbox_image.vmdkcoreos_developer_virtualbox.ovf というファイルが出来上がりました。

% cd ~/trunk/src/build/images/amd64-usr/274.0.0+2014-04-02-0604-a1
% ls -l
-rw-r--r-- 1 r_rudi r_rudi 7.7M  4  2 06:12 au-generator.zip
-rw-r--r-- 1 r_rudi r_rudi 2.9G  4  2 06:12 coreos_developer_image.bin
-rw-r--r-- 1 r_rudi r_rudi  160  4  2 06:27 coreos_developer_virtualbox.README
-rw-r--r-- 1 r_rudi r_rudi  11K  4  2 06:27 coreos_developer_virtualbox.ovf
-rw-r--r-- 1 r_rudi r_rudi 471M  4  2 06:27 coreos_developer_virtualbox_image.vmdk
drwxr-xr-x 2 root   root   4.0K  4  2 06:04 rootfs
-rw-r--r-- 1 r_rudi r_rudi   75  4  2 06:12 version.txt

これは、 ホスト側 では coreos/src/build/images/amd64-usr/274.0.0+2014-04-02-0604-a1 に当た ります。

これをvirtualboxで起動すればOKです。ユーザー名core、パスワードは先ほど 自分で設定したパスワードでログインできます。

まとめ

実はまだちゃんとCoreOSを使ったわけではないのですが、最初のimageを作成 するところから始めてみました。

build scriptがきちんと整備されており、詰まるところはまったくありません でした。

Comments

comments powered by Disqus