Chromium OS编译手记

闲着无聊决定编译个Chromium OS玩玩。下面的编译过程基本上是照着官方的编译文档操作的。该地址已被伟大的墙隔离了,需要查看的同学请自备梯子。

我用的编译环境是Ubuntu 10.04 LTS 64bit。官方推荐Ubuntu的最低版本是8.04。即使是编译32位目标平台的版本,也要用64bit的linux进行交叉编译。

其它的要求包括一个root权限的用户、最好有20G的磁盘剩余空间,足够快的网络。如果需要在真机上引导,还需要一个U盘。

本文中列出的命令有些是凭记忆写的,一条条照着操作一遍不一定就能成功。如果提示权限不足请根据情况sudo或chmod 744 文件名。注意,请勿使用sudo -i,或者用root执行chroot下script中的脚本。

准备工作,首先升级软件包:

clowwindy@clowwindy-ubuntu:~$ sudo apt-get update
clowwindy@clowwindy-ubuntu:~$ sudo apt-get upgrade

安装以下软件包:

sudo apt-get install bison fakeroot flex g++ g++-multilib gperf \
libapache2-mod-php5 libasound2-dev libbz2-dev libcairo2-dev \
libdbus-glib-1-dev libgconf2-dev libgl1-mesa-dev libglu1-mesa-dev \
libglib2.0-dev libgtk2.0-dev libjpeg62-dev libnspr4-dev libnss3-dev \
libpam0g-dev libsqlite3-dev libxslt1-dev libxss-dev \
mesa-common-dev msttcorefonts patch perl pkg-config python \
python2.5-dev rpm subversion libcupsys2-dev libgnome-keyring-dev \
apache2 wdiff lighttpd php5-cgi sun-java6-fonts \
msttcorefonts ttf-dejavu-core ttf-kochi-gothic ttf-kochi-mincho \
ttf-indic-fonts

然后安装git和svn:

sudo apt-get install git-core subversion

然后下载depot_tools:

wget http://src.chromium.org/svn/trunk/tools/depot_tools.tar.gz
tar zxf depot_tools.tar.gz
mv depot_tools /opt/

然后为depot_tools设置PATH环境变量:

cd /opt
export PATH=`pwd`/depot_tools:"$PATH"

接下来获取Chromium OS的代码:

cd ~
mkdir chromiumos
cd chromiumos
gclient config http://src.chromium.org/git/chromiumos.git
gclient sync

这个过程比较慢长,可以去做别的事了。我这篇文章就是这个时候开始动笔的。

下载途中出错了一次,portage.git在90%左右的时候提示error: RPC failed; result=56, HTTP code = 200。我google了一下,没看到有人解决了这个问题,不知是bug,还是网络RP。于是重新运行gclient sync,结果从当前正在同步的git开始重新同步,又是漫长的等待……

这次没有遇到这个错误,终于下载完毕,总共下了3G左右流量,占地5.9G。

不要切断网络,因为后面的过程依然需要下载。

接下来构建chroot环境并进入它:

cd ~/chromiumos/chromiumos.git/src/scripts
./make_chroot
./enter_chroot.sh

我们现在已经在chroot环境下(这个环境的/实际上在chromiumos.git/chroot/),如果要退出chroot请按Ctrl+D。

接下来设置编译的目标平台。我选择的是x86-generic。如果是ARM平台这里是arm-generic。

cd ~/trunk/src/scripts
./setup_board --board=x86-generic

为了开发方便,添加一个本地用户:

sudo ./enable_localaccount.sh USERNAME

设置密码:

sudo ./set_shared_user_password.sh

开始编译:

./build_packages --board=x86-generic

接下来又是漫长的等待。77分钟后编译结束。

然后生成镜像:

 ./build_image --board=x86-generic

这里因为先前的权限没有处理好,导致了一个无法创建生成目录的error。sudo创建../build/目录然后设置为777权限后这个问题就解决了。

经过22分钟生成结束。

然后将镜像写入到u盘。注意,这里一定要先退出chroot环境再进行。

--from=是刚才生成的镜像所在目录,/dev/sdc是U盘设备。

./image_to_usb.sh --from=/home/clowwindy/chromiumos/chromiumos.git/src/build/images/x86-generic/0.7.47.2010_06_18_0549-a1/ --to=/dev/sdc

试着插到一台上网本上,成功引导,出现了登陆界面。我的无线网络没有开放SSID,这里无法设置,所以我插上网线选择以太网。用刚才的local帐号登录提示密码错误,于是用chronos和空密码登录,然后出现了浏览器。嗯,没有flash插件。应用标签页没有出现,取而代之的是传说中的web store。去google code查了下,有人反馈过这个bug,不过google貌似是故意的。当我点击web store的时候伟大的墙又一次立功了。暂时懒得弄ssh -D,这次先这样吧,以后再继续研究。

补充:

将镜像转换成vmware磁盘镜像的方法:

在chroot环境外,先安装依赖:

sudo apt-get install qemu

然后生成磁盘镜像:

./image_to_vmware.sh --from=../build/images/x86-generic/0.7.47.2010_06_18_0549-a1 --to=~/chromiumos.vmdk

镜像应该就能生成好了……理论上。可惜的是现在执行这个操作会发生mount: special device /dev/sda12 does not exist的错误。在google讨论组上有人讨论过这个问题。目前看来可能是google留下的一个bug。这个帖子中有人提出可以修改image_to_vmware.sh,在sudo "$TEMP_MNT"/postinst /dev/sda3这一行后面加个 --postcommit来忽略错误。修改之后重新生成,这次终于成功了。

最后上几张图:

posted on 2010-06-18 22:39 clowwindy 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/clowwindy/archive/2010/06/18/Chromium_OS_build.html

Chromium OS编译手记相关推荐

  1. chromium OS编译过程

    安装下面的依赖: #sudo apt-get install subversion pkg-config python perl g++ g++-multilib bison  flex gperf ...

  2. 编译Chromium OS

    插入ubuntu-9.10-alternate-i386光盘后,F4选择CLI安装base system 用先前备好的USB盘里的sources.list替代/etc/apt/sources.list ...

  3. 为curl 、git、go语言、wget、repo设置代理,解决ubuntu 18.04编译chromium os问题

    为CURL设置proxy 设置代理的方式搜索了一下挺多的,我测试了这两种方式,这两种方式在ubuntu 18.04上可以运行. 有两种方法,第一通过声明环境变量: export http_proxy= ...

  4. Windows:安装Chrome OS/Chromium OS/CloudReady 到虚拟机VMware/VirtualBox

    很早之前就听说了ChromeBook,以及ChromeBook上搭载的Chrome OS系统,一直没机会去操作.今天碰巧看到了一篇讲 FydeOS .于是就想在自己的电脑上装Chrome OS,体验一 ...

  5. 每天更新的纯净版 Chromium OS 镜像已经可以下载

    原文链接:http://www.guao.hk/posts/chromium-os-vanilla-nightly-builds-from-hexxeh.html 此文章给出了一个最新的ChromeO ...

  6. 【chromium】 Chromium OS的oom机制

    前一段时间,运行在Chromium OS上的一个相机应用经常会自己崩溃,进程戛然而止,测试过程中发现使用的内存以肉眼可见的内存增长,当增长到1G左右,应用窗口突然消失,虽然原因不明,但是能猜到个大概, ...

  7. android系统firefox,Android平台Firefox——Fennec编译手记

    Android平台Firefox--Fennec编译手记 Firefox for mobile,开发代号为Fennec.详情参见维基百科:Click here! 官方手册 1)准备环境 1.1)安装J ...

  8. Chromium OS Autotest 编码风格

    Chromium OS Autotest 编码风格 语言 尽可能使用python 在host命令的调用中会使用少量的shell命令 一些测试会在测试的依赖项中使用C/C++ 缩进和空行 保证你的代码在 ...

  9. Chromium OS初体验 就是一款Linux

    好奇,弄了一个Chromium OS for VMWare 玩玩,发现Chromium OS并非像我之前想象的一样,并非完全是一个自主研发的独立操作系统. 启动 Chromium OS 时 vmwar ...

  10. Chromium OS——下载源码6之获取源码

    获取chromium os源码: 在家目录创建chromiumos文件夹mkdir -p ${HOME}/chromiumos 进入该文件夹目录cd ${HOME}/chromiumos,然后执行re ...

最新文章

  1. UTRAN 的用户面和控制面
  2. More Effective C++:理解new和delete
  3. mysql自动监控_MySQL复制 自动监控脚本
  4. vue中使用Ueditor编辑器 -- 1
  5. PHP扩展开发(3)-config.m4
  6. Spring的两种任务调度Scheduled和Async
  7. ubuntu测试键盘工具_强势霸榜GitHub,微软最强命令行工具发布引爆技术圈
  8. 运算符的优先级及有哪些运算符
  9. XTU 2016上学期《程序设计实践》练习-1 题解
  10. Eclipse无法DEBUG
  11. 海康DS-2DY5223IW-DM
  12. 易优家:重新定义食品包装安全
  13. linux 文件系统损坏修复方式
  14. mysql数据库全部大写吗_mysql中数据库名字分大小写吗
  15. 微信小程序消息从公众号推送
  16. 海思开发板FFmpeg+Nginx,推流RTMP播放(优秀教程收集+实操整理)
  17. MAC JDK 卸载方法(彻底卸载)
  18. windows下发布安装程序签名_signTool.exe工具使用
  19. Linux在线安装mysql57-community-release-el7-10.noarch.rpm
  20. 易语言snmp_易语言教程

热门文章

  1. python协程调度方式_python 3.x 学习笔记17(协程以及I/O模式)
  2. 数字孪生应用白皮书_工信部发布数字孪生应用白皮书:特斯联入选智慧城市建设标杆案例...
  3. python基础之字符串类型
  4. C# 异步查询数据库(第二版)
  5. SDUST 作业10 Problem D 魔方阵
  6. iOS多线程技术—多线程简单介绍
  7. 博客园文章markdown实现
  8. post 和 get 网站
  9. PHP使用echo输出标签设置CSS样式问题
  10. 01-Quartz2D