最近心血来潮,折腾起ChromiumOS,其实玩的很没水平,因为现在ChromiumOS的编译机制已经很方便了,照着 《Chromium OS Developer Guide》做也基本都能把系统整出来。虽然如此,但网上中文的资料有点滞后,当下ChromiumOS的编译过程已经有所改变,所以还是把这个过程记录下。因为玩得没什么深度,所以本文内容也基本是对《Chromium OS Developer Guide》的低水平翻译加上我自己编译过程中的一些体会。
前期准备
从源码得到ChromeOS(准确说应该是ChromiumOS,因为二者还是有些区别的。因为ChromiumOS是开源版,所以没有带上私有版权的软件,比如一些解码包)你至少要具备一下条件:
- 一个64位的Ubuntu Linux,官方推荐是10.04,因为开发者一般用LTS版本。当然版本号应该不是大问题,我第一次编译时是在10.10上完成的,也没什么大问题。最重要的是:你要有管理员权限!
- 一台性能够好的机器!官方建议的入门配置是至少4G内存,4G swap,4核CPU,这样整个编译过程大约需要90分钟。并且如果是八核的话,时间可能几乎对半!但实际上我用的机器没那么强:
CPU:i52300
RAM:4G DDR3
SWAP:4G
我用的时间是120分钟左右,囧。虽然如此,但实践证明内存小点也行,SWAP要大点,不过时间就长得坑爹了。
- 最后还得安装一下软件:git-core gitk git-gui subversion curl
Ubuntu下:
sudo aptitude install git-core gitk git-gui subversion curl
安装depot_tools
Chromium OS 使用一组称作 depot_tools 的软件包管理 checkout 与代码审校。
1.获取depot_tools:
svn co http://src.chromium.org/svn/trunk/tools/depot_tools
2.添加到PATH:
在.profile文件加上这样一行
export PATH="$PATH":"$HOME"/depot_tools
配置Git:
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
mkdir -p ${HOME}/chromiumos
ChromiumOS的代码有两种:minilayout和full layout,minilayout当然会比较小,官方推荐一般编译用这种,但似乎用这种代码编译时,还得一边从网络下载“东西”,在网络状况不是很好的情况下,很容易断掉,所以我推荐还是用fulllayout(完全下载完chromium目录有7G!)。下面是这两种代码的下载方法:
#minilayout:
cd ${HOME}/chromiumos
repo init -u http://git.chromium.org/chromiumos/manifest.git -m minilayout.xml --repo-url http://git.chromium.org/external/repo.git
repo sync
#full layout:
cd ${HOME}/chromiumos
repo init -u http://git.chromium.org/chromiumos/manifest.git --repo-url http://git.chromium.org/external/repo.git
repo sync
创建 chroot
cros_sdk
它会自动下载cros_sdk,这个可以看作ChromiumOS的编译环境?整个过程完成后,就会进入chroot环境,出现“~/trunk/src/scripts $”这样的标识。为了区分chroot中输入的命令,我这里用紫色标记。
创建架构变量:
BOARD=x86-generic
这里将编译一个在X86上运行的版本。
初始化board编译:
./setup_board --board=${BOARD}
系统会自动下载一些相关文件,需要等待一定时间。
设置chronos 用户密码:
./set_shared_user_password.sh
接下来,开始漫长的编译了:
./build_packages --board=${BOARD}
最新的版本,编译已经很方便了,几乎不会有什么差错。不过在一次编译中,到几乎要完成的时候断掉了……输出提示找不到一个包,当时我很淡定的重新输入了一下“./build_packages –board=${BOARD}”,很快编译也就完成了,做成镜像也可以启动。反正出现错误时,不必慌,分析下输出,然后重新试下,大不了全部再来。
生成镜像:
编译完成后,最“困难”的部分也就过去了,接下来打包镜像:
./build_image --board=${BOARD} --withdev --noenable_rootfs_verification
生成的镜像位于: ~/trunk/src/build/images/${BOARD}/latest
如果你想把系统写到优盘:
./image_to_usb.sh --board=${BOARD} --to=${MY_USB_KEY_LOCATION}
如果你想生成一个虚拟机镜像:
./image_to_vm.sh --board=${BOARD}
默认情况下生成kvm的镜像,如果你想要一个VM或者VBOX镜像,可以带上参数“–format=vmware”或“–format=virtualbox”
整个基本的过程差不多就是这样,最后荣幸地宣布本文真是在Chromium OS 下完成!