介绍
CoreOS,一个轻量的linux分布式操作系统。CoreOS中的应用都以容器形式在系统中运行。个人觉得CoreOS不能算是一个linux发行版,只能算是一种订制系统。(BTW,CoreOS的订制应该是源自Gentoo这个发行版)
环境
- CoreOS的编译与操作系统无关(此处使用的是RHEL7.2),硬件要求必须是X86-64系统。
- 编译系统必须安装 curl、git、python2、bzip2
- CoreOS SDK编译有两种方法(Option1 & Option2),Option1 需要选择和需要编译的CoreOS相匹配的golang版本。
- 使用Option2 方法安装,需要设置
https_proxy
代理(否则,无法法访问GoogleSource)
制作&安装
本人使用Option2方法完成CoreOS编译,并使用coreos-install安装CoreOS到xen vm上。
制作
准备
安装Repo
下载repo,用于下载CoreOS SDK
1 | curl http://storage.googleapis.com/git-repo-downloads/repo > ./repo |
下载SDK
创建一个目录用于存放coreos sdk
1 | mkdir coreos |
repo初始化目录,并同步git repos
1 | repo init -u https://github.com/coreos/manifest.git |
Chroot到coreos SDK
1 | ./chromite/bin/cros_sdk |
编译
设置core用户登陆密码
设置core用户密码,已被系统安装完后登陆系统使用。
1 | ./set_shared_user_password.sh |
选择目标编译平台
选择amd64-usr
或arm64-usr
1 | ./setup_board --default --board=amd64-usr |
编译Packages
1 | ./build_packages |
制作CoreOS镜像
可以选择编译开发版(dev
)还是生成版(prod
)
1 | ./build_image prod |
制作可以引导CoreOS镜像
1 | ./image_to_vm.sh --board=amd64-usr --format=xen --from=/mnt/host/source/src/build/images/amd64-usr/developer-1409.0.0+2017-05-15-1456-a1/coreos_production_image.bin --disk_layout=base |
--format
根据不同需要选择制作不同格式的可引导镜像--disk_layout
默认是空,建议选择base
安装
*** 经过上述步骤的操作,已经将coreos镜像制作完成,并放置在”./src/build/images/amd64-usr”目录下。 ***
安装的过程需要使用liveCD启动,然后挂在需要安装的裸盘,使用coreos-install
安装。镜像的传递是,先将镜像放置到一个webserver上,然后coreos-install
再通过这个webserver下载、并安装。
*** 在将镜像放置到webserver之前,需要先将镜像压缩成bz2文件,然后再将bz2进行签名 ***(签名无法使用官方的私钥,只能自己申请,详细请见)。
步骤
*** 本人的安装步骤,不是唯一的、方便、快捷的方法,更多安装方式建议阅者自行调研 ***
下载coreos-install安装脚本
1 | wget https://raw.githubusercontent.com/coreos/init/master/bin/coreos-install |
修改coreos-install中的公钥
在coreos-install中有个变量GPG_KEY
用于存储官方的公钥,需要将这个公钥换成你给镜像签名时对应的公钥。
** 此处略去俺公钥内容 **
镜像在下载到目标机后,coreos-install会对下载的镜像进行校验,这是不替换公钥,只能想办法让官方帮你签名
使用coreos-install安装CoreOS
使用liveCD启动系统后,先确认需要安装CoreOS的硬盘,然后执行coreos-install
进行安装
1 | sudo ./coreos-install -d /dev/xvda -V 1409.0.0 -o xen -v -b http://192.168.1.82:8000 -c /media/configdrive/openstack/latest/user_data |
-d
指定安装目标设备-V
指定安装版本,一定要与URL中的路径能匹配上-o
镜像名称中需要指出是xen
orkvm
or…-b
镜像下载URL
问题&解决
不能引导问题
若成功编译安装,但不能正常引导,可以对比做bzip2之前镜像的前512字节和安装后xvda的前512字节是否一致。本人遇到不能引导问题,是因为本应使用bzip2
压缩的镜像使用了tar
参考&鸣谢
- 感谢同事为我提供的VPN翻墙服务
- 感谢同事为我提供的WebService服务,方便完成网络安装CoreOS
- container linux document