当前位置: 首页 > 工具软件 > Chromium OS > 使用案例 >

chromium OS编译过程

西门智
2023-12-01

安装下面的依赖:

 

#sudo apt-get install subversion pkg-config python perl g++ g++-multilib bison  flex gperf libnss3-dev libgtk2.0-dev libnspr4-0d libasound2-dev libnspr4-dev msttcorefonts libgconf2-dev libcairo2-dev libdbus-1-dev wdiff lighttpd php5-cgi sun-java6-fonts git-core  

 

然后,使用gclient 获取chromiumos的源码目录(四百多兆)

 

# mkdir chromiumos 

# cd  chromiumos 

# gclient config http://src.chromium.org/git/chromiumos.git 

# gclient sync  

 

编译脚本都在chromiumos/src/scripts下面,依次执行下面几个脚本:

 

# ./make_local_repo.sh  

 

运行这个脚本之前,确保安装了reprepro,否则会提示找不到命令,这时,需要将chromiumos/repo目录删除才可以重新执行

make_local_repro.sh脚本,汗~这个搞了好久Orz。

 

# ./make_chroot.sh  

 

创建chroot编译环境后,需要下载chrome浏览器,改名为chrome-chromeos.zip并放到~/chromiumos/src/build/x86/local_assets,这个目录需要自己依次创建。
然后进入chroot环境:

 

# ./enter_chroot.sh  

 

这时,可以创建一个脱机用户,为了防止没有网络链接的情况下无法登录:

 

# cd  ../platform/pam_google && ./enable_localaccount.sh USERNAME

 

再依次编译软件包和内核,创建磁盘镜像:

 

# ./build_platform_packages.sh

# ./build_kernel.sh

# ./build_image.sh  

 

脚本执行完毕后,会如下提示:


Done. Image created in /home/yang/trunk/src/build/images/999.999.32809.061105-a1

 

然后会生成rootfs.image磁盘镜像,可以将该镜像转为虚拟机磁盘(vmdk):

 

# ./image_to_vmware.sh -- from= ~/Downloads/chromiumos/chromiumos.git/src/build/images/999.999.32809.061105-a1 -- to= ~/Downloads/chromiumos/chromiumos.git/src/build/images/999.999.32809.061105-a1/rootfs.vmdk  


 
编译好的镜像:
 
在vmware没有体验到好处,看来要用到我的wind U100上网本了^^

如果使用src/scripts/image_to_usb这个脚本来写入的U盘的话,U盘必须要大于1G(否则出现错误),而编译生成的镜像大小却小于1G。下面的方法可以将chromeOS镜像写入1G的U盘:

生成rootfs.vmdk虚拟机磁盘文件,然后用虚拟机加载vmdk镜像并启动ubuntu的livecd。目的是为了使用gparted来修改 vmdk分区的大小。因为默认的vmdk里面有三个950Mb的分区,分别为C-STATE、SWAP、C-ROOT。先将中间的交换分区删掉,然后依次调整分区到下面的样子:

 

之后,退出虚拟机,在windows下用DGen(diskgen)打开vmdk文件,修改硬盘参数(终止柱面)为C-ROOT分区的终止柱面,如下:

修改前:

 

修改后:

 

然后右键点击vmdk磁盘,复制磁盘,选择源磁盘和目的磁盘拷贝即可。

更新(11.30晚),把wind U100从丁丁那里拿来,启动chromeOS很成功,系统性能很赞!但有个很大的弊端:因为某些因素(大家都清楚),部分google服务无法登陆。上图:
 

 

 

我一共编译了两个版本的代码

 

老版本在执行make_local_repo。sh时出现问题 ,由一个包无法找到

这是一处错误,src/package_repo/repo_list_image.txt找到那个包,将universal(好像是)改成main就行

新版本没有问题,什么都不用改,就可以编译过

 

而且在编译时要注意,执行的每一个shell,最后都有信息表示执行是否成功,一定细心看一下

 类似资料: