上一篇文章写得略tricky,本文改为参考官方Kernel Configuration配合Google网上论坛搜集来的各种指南写成。
If you’re reday. Let’s rock the Chromium OS!
准备工作就不多讲了,内核源代码(kernel或者kernel-next,本文以kernel为例)至少要同步好。进入cros_sdk(chroot),下面的操作都是在cros_sdk下,不是在宿主Linux终端下。
cd ../third_party/kernel/files/ ./chromeos/scripts/kernelconfig editconfig
等到你要编辑的那个flavour出来按回车,其它的flavour不必编辑,直接按S跳过。例如,我是等到第二个提示出现:
* x86_64/chromiumos-x86_64.flavour.config: press to edit, S to skip.
编辑配置文件完毕后,
cd ~/trunk/src/scripts/ emerge-amd64-generic sys-kernel/chromeos-kernel
这个操作会开始自动编译内核,看输出确保使用的内核配置文件是刚刚配置的那个,比如我这里对应的就是
* Using kernel config: chromiumos-x86_64
然后慢慢等待吧,大概10~30分钟(视你的CPU能力而定)。新的/CHROOT_DIR/build/amd64-generic/packages/sys-kernel/chromeos-kernel-9999.tbz2就生成了,然后build_image生成新镜像!
如果你原来的镜像关闭了检查的话,可以直接挂载原来的镜像,然后把编译出来的内核包解压到旧的镜像中覆盖原文件。下面开始挂载原来编译的镜像进行修改。
./mount_gpt_image.sh --noread_only --from=../build/images/amd64-generic/latest/chromiumos_base_image.bin
根据提示,被挂载到/tmp/m(挂载点是chros_sdk里的,不是在宿主机器),下面把新编译的Kernel塞进去。
cd /build/amd64-generic/packages/sys-kernel/ sudo tar xpf chromeos-kernel-9999.tbz2 -C /tmp/m/ --overwrite sudo tar xpf linux-headers-3.4-r6.tbz2 -C /tmp/m/ --overwrite
附带说一下,非Intel i915显卡的,进入/tmp/m/boot/syslinux,编辑usb.A.cfg(sudo vi来编辑,编辑这个文件需要root权限),删掉里面的i915.modeset=1参数。你也可以进行别的一些修改操作。修改完毕后卸载镜像。
./mount_gpt_image.sh -u
然后可以把镜像刷入到U盘或者转换成虚拟机文件了。
17 responses to “Chromium OS内核标准编译教程”
好的 感謝您的幫忙!
剛剛cat /var/log/xorg/Xorg.0.log, 有error (EE) open /dev/fb0: No such file or directory, (EE) Falling back to old probe method for fbdev, (WW) VGA arbiter: cannot open kernel arbiter, no multi-card support, (EE) Screen(s) found, but none have a usable configuration, 不知道是不是kernel config 有沒開到的… orz
应该是内核kernel配置的问题,但是我记得Chromium OS一直不使用framebuffer的。你可以去Google网上论坛问问,我已经很久不关注Chromium OS了。
你好 想請教一下我昨天repo 下來build出來的image 沒有登入介面, 但是按ctrl+alt+f12 有console shell. 想請問有遇過類似的問題嗎? 謝謝
表示从来没见过没有登入界面的……你有修改源码吗?直接repo sync下来build就这样了????
感謝你的回覆. 我沒有修改源码, 照著http://dev.chromium.org/chromium-os/developer-guide#TOC-Building-Chromium-OS build,
steps是:
export BOARD=amd64-generic
./setup_board –board=${BOARD}
./set_shared_user_password.sh
./build_packages –board=${BOARD}
./build_image –board=${BOARD} –noenable_rootfs_verification dev
./image_to_usb.sh –board=${BOARD}
一開始我還以為我build壞了, 後來看文件ctrl+alt+f12 可切console shell, 切完ctrl+alt+f1回來, 一樣是沒有登入介面, 只能key 字 他會print在上面.
唔……会不会是驱动问题呢?你看看amd64-generic的默认kernel config是否支持你的显卡?
之前有build過 version 32.0.1686.0 是有畫面的, 我是用內显
你好,为什么仓库里的代码是最新的,但编出来还是没有中文输入法?
最近Chromium OS在移除GTK+代码,转而使用Aura,包括输入法在内的一些组件可能还没得到移植(或重写)。
我Build的Image沒有中文輸入法,請問您Build的Image,有支持中文輸入法?看到https://plus.google.com/100132233764003563318/posts/QXRceHvLFDr ,不知nacl-mozc有支持中文輸入法?
嗯,看了一下G+的那个帖子,我估计近期的Chromium OS没有中文输入法了,因为ibus都被剔除掉了,Google要用Native Client的方式来实现输入法。我之前build的image都还是用的legacy ibus IME.
FYI
https://code.google.com/p/chromium/issues/detail?id=259643
不好意思,我是新手…
想請問要如何知道下載的source code 已patch 此 249643 issue?
因沒有認識會的人,所以一直跟您討教…..
issue上面显示merged了,所以仓库里最新的代码是不需要再手动patch了。你试试repo sync更新source code再重新编译吧。
您好,最近依照您文章描述進行kernel-next編譯,但是編譯始終不成功,您有遇到這樣的問題嗎?
具体的错误输出是什么呢?您简单的说不成功……我也不明白您遇到什么问题了。
建议您先去Chromium OS Discussion 看看有没有类似的问题已经得到解答,没有的话可以在那里提问,然后把你帖子的链接告诉我,我也可以帮你看看。