DockerでOSvのビルド環境を作ってビルドする
諸般の事情で手元のLinux環境をCentOS 7にする必要があった。まぁ他のディストリビューションはDockerで揃えられるので、普段使いのLinuxなんてなんでも良いだろうという判断。
CentOS7にDockerを入れる
Dockerのページにインストール方法が書いてあるので基本的にはそれに従えばOK。
... get.docker.comで取得できる.shスクリプトはサービスの登録と実行まではやってくれないみたいなので、rootになって
systemctl enable docker systemctl start docker
としてdockerサービスをstartさせておく。
スクリプトの指示に従ってdockerグループに自分を足せば、以降のdocker操作ではrootになる必要はない。
OSvをビルドするためのDockerイメージを作る
OSvのビルド環境はsetup.pyで自動的にインストールすることができる。が、このsetup.pyはFedoraやCentOSの最新版は無慈悲に却下してしまう。
[oku@centos7 osv-build]$ ./setup.py Your distribution version is not supported by this script
なのでDockerで適当なディストリビューションを用意して、その中でビルドするようにする。
Dockerfileを適当に書いて、"docker build ."。(同じディレクトリにsetup.pyもコピーしておく)
FROM fedora:22 MAINTAINER "bogus" RUN dnf upgrade -y RUN dnf install python2 -y COPY setup.py /setup.py RUN /setup.py VOLUME /stage
ここではFedora 22をベースに選んだ。fedora:latestは現在23で、これもsetup.pyに撥ねられてしまう。"docker tag"コマンドで適当にタグを打っておく(以下osvbuild)。
ここでは、ホストとDocker環境の両方に/stageディレクトリを作り、ホストで/stageにOSvのリポジトリをチェックアウトしておくことにする。
あとは"docker run"でコンテナ内のbashを起動し、そこでscripts/buildを実行すれば終わり。
[oku@centos7 ~]$ docker run -v /stage:/stage -it osvbuild /bin/bash [root@d75a4e582c2c /]# cd /stage/repos/osv/ [root@d75a4e582c2c osv]# scripts/build
... これで本当にビルド終わってusr.imgが生成されたけど、いつの間にOSvのビルドってKVMを要求しなくなったんだっけか。。