Chromium OS内核标准编译教程

上一篇文章写得略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内核标准编译教程”

  1. danny avatar
    danny

    好的 感謝您的幫忙!

  2. danny avatar
    danny

    剛剛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

    1. librehat avatar

      应该是内核kernel配置的问题,但是我记得Chromium OS一直不使用framebuffer的。你可以去Google网上论坛问问,我已经很久不关注Chromium OS了。

  3. danny avatar
    danny

    你好 想請教一下我昨天repo 下來build出來的image 沒有登入介面, 但是按ctrl+alt+f12 有console shell. 想請問有遇過類似的問題嗎? 謝謝

    1. librehat avatar

      表示从来没见过没有登入界面的……你有修改源码吗?直接repo sync下来build就这样了????

      1. danny avatar
        danny

        感謝你的回覆. 我沒有修改源码, 照著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在上面.

        1. librehat avatar

          唔……会不会是驱动问题呢?你看看amd64-generic的默认kernel config是否支持你的显卡?

          1. danny avatar
            danny

            之前有build過 version 32.0.1686.0 是有畫面的, 我是用內显

  4. Sammy Chen avatar
    Sammy Chen

    你好,为什么仓库里的代码是最新的,但编出来还是没有中文输入法?

    1. librehat avatar

      最近Chromium OS在移除GTK+代码,转而使用Aura,包括输入法在内的一些组件可能还没得到移植(或重写)。

  5. mark avatar
    mark

    我Build的Image沒有中文輸入法,請問您Build的Image,有支持中文輸入法?看到https://plus.google.com/100132233764003563318/posts/QXRceHvLFDr ,不知nacl-mozc有支持中文輸入法?

    1. librehat avatar
      librehat

      嗯,看了一下G+的那个帖子,我估计近期的Chromium OS没有中文输入法了,因为ibus都被剔除掉了,Google要用Native Client的方式来实现输入法。我之前build的image都还是用的legacy ibus IME.

        1. mark avatar
          mark

          不好意思,我是新手…
          想請問要如何知道下載的source code 已patch 此 249643 issue?
          因沒有認識會的人,所以一直跟您討教…..

          1. librehat avatar
            librehat

            issue上面显示merged了,所以仓库里最新的代码是不需要再手动patch了。你试试repo sync更新source code再重新编译吧。

  6. mark avatar
    mark

    您好,最近依照您文章描述進行kernel-next編譯,但是編譯始終不成功,您有遇到這樣的問題嗎?

    1. librehat avatar
      librehat

      具体的错误输出是什么呢?您简单的说不成功……我也不明白您遇到什么问题了。
      建议您先去Chromium OS Discussion 看看有没有类似的问题已经得到解答,没有的话可以在那里提问,然后把你帖子的链接告诉我,我也可以帮你看看。