ChromiumOS源码下载及编译

由于ChromiumOS系统的编译需要使用非Root用户进行,故这里新增一个用户cos以用于ChromiumOS系统的开发工作:

adduser cos

这里需要注意的是用户名chronos 是预留给编译系统使用的,这里增加的用于编译的用户名不能为chronos

工具安装

在进行源码下载之前首先需要进行工具的安装:

aptitude install git-core gitk git-gui subversion curl lvm2 thin-provisioning-tools python-pkg-resources python-virtualenv

下载depot_tools并加入系统路径:

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

权限准备

将增加的用户cos加入到文件/etc/sudoers中:

cos     ALL=(ALL:ALL) ALL

再执行如下代码:

cd /tmp
cat > ./sudo_editor < \$1          # Entering your password in one shell affects all shells 
echo Defaults timestamp_timeout=180 >> \$1 # Time between re-requesting your password, in minutes
EOF
chmod +x ./sudo_editor 
sudo EDITOR=./sudo_editor visudo -f /etc/sudoers.d/relax_requirements

代码下载

创建工作目录并进入:

mkdir ~/workspaces
cd ~/workspaces

下载代码:

mkdir chromiumos
cd chromiumos
repo init -u https://chromium.googlesource.com/chromiumos/manifest.git
repo sync

如果是要使用指定版本的代码,则最好创建一个新的工作目录,再进行代码同步:

mkdir release-R59-9460.B
cd release-R59-9460.B

repo init -u https://chromium.googlesource.com/chromiumos/manifest.git -b  release-R59-9460.B --reference /home/cos/workspaces/chromiumos
repo sync

编译代码

Chroot环境创建

进入到源码目录执行如下命令进入到chroot环境:

cros_sdk
  • 这里会在当前目录下创建一个名为.cache的目录来保存用于构建chroot环境的包,其中最大的一个包位于目录.cache/sdks下,名称形式类似于cros-sdk-2017.04.12.210012.tar.xz,大小接近2G,如果有多个环境开发的话,可以拷贝该文件到新的工作环境中以节省下载时间。

系统编译

此时所执行的代码都在Chroot环境下,首先选取主板类型并初始化主板设定:

export BOARD=quawks
./setup_board --board=${BOARD}

然后设定系统的超级用户密码:

./set_shared_user_password.sh
  • 超级用户的密码是写入到文件/etc/shared_user_passwd.txt

再接下来进行系统编译,这里实际上是使用gentoo中的ebuild来进行包的下载和编译:

./build_packages --board=${BOARD}

最后就是将编译好的系统进行打包:

./build_image --board=${BOARD} --noenable_rootfs_verification test
  • 需要注意的是,当编译为test版本时,先前所设定的系统超级用户密码则变为无效,而被统一改为test0000

系统烧录

接下来就是将系统刷入到U盘中进行安装:

cros flash usb:// ${BOARD}/latest

系统安装

启动进入U盘系统,然后在Shell环境下执行如下命令进行系统安装:

/usr/sbin/chromeos-install
  • 对于不同的系统有不同的进入U盘启动环境的方法,具体可以参考页面developer-information-for-chrome-os-devices。
  • 对于这里使用的Asus C300来说,进入的方法为按住Esc+Refresh+Power三个键。重启后Ctrl+D进入到硬盘启动,再输入sudo crossystem dev_boot_usb=1以打开从U盘启动的选项。

更多选择

当进入Chroot环境进行编译时,会使用ebuild编译Chromium浏览器项目,这又是一个几十G的下载量,所以最好的方式自然是能够重用下载好的Chromium项目。这里有如下几个需要注意的点:

  1. 将Chromium浏览器项目放置在目录~/cos/chromium
  2. 修改ChromiumOS项目下的配置文件src/third_party/chromiumos-overlay/chromeos-base/chromeos-chrome/chromeos-chrome-9999.ebuild,去除其中的+runhooks,因为在编译ChromiumOS时,如果执行到runhooks,又会去下载和编译工具链;
  3. 在工作目录中执行cros_sdk --chrome_root=/home/cos/chromium,以进入Chroot环境;
  4. 在选定好主板类型后,执行cros_workon --board=${BOARD} start chromeos-chrome,以确保使用自定义的ebuild文件,这通常就是编号为9999的ebuild文件,最终执行结果为将数据=chromeos-base/chromeos-chrome-9999写入到文件.config/cros_workon/quawks中;
  5. 在Chroot环境中,还需要执行export CHROME_ORIGIN=LOCAL_SOURCE以使用本地项目进行编译;

最终对Chromium项目的修改,都会被编译进ChromiumOS系统,其他的步骤与原版无二致。

你可能感兴趣的:(ChromiumOS源码下载及编译)