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.vmdk と coreos_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