This page looks plain and unstyled because you're using a non-standard compliant browser. To see it in its best form, please visit upgrade to a browser that supports web standards. It's free and painless.

Fillano's Learning Notes 會員登入 會員註冊

« 上一篇 | 下一篇 »

之前試用Chromeos時,在我的機器上跑起來非常慢,而且一段時間就會當掉。在噗浪上看到Jserv大大的噗說,Chromeos的window manager使用到Clutter這個函數庫,於是去http://www.clutter-project.org/網站看了一下,發現這個函數庫底層除了xlib,最主要的就是包裝OpenGL做出來的GUI API...所以強烈懷疑是因為驅動程式沒有支援硬體3D加速所以才讓Chromeos跑得那麼慢。(我的Asus U6S搭的是nvidia的8400M G)

所以就來自己手動把nvidia的驅動程式加到chromeos吧。

我使用的平台是Ubuntu 9.04。以下提到的方法會需要一些先備知識,包括:怎樣自己建構編譯出可執行的Chromeos、一些核心編譯的知識、一些軟體編譯的知識、把disk image掛載到檔案系統、chroot及下面提到的一些其他命令。(我不會詳細把命令列出來,所以最好熟悉這些命令)

作法

  1. 到nvidia網站下載最新的linux驅動程式,是一個以.run結束的可執行檔,我使用的應該是190.42這個版本
  2. 用-x參數來執行,他會把所有檔案解出到一個與檔名相同的目錄(不含.run)。然後把usr/src/nv(應該沒記錯)目錄拷貝到chromeos開發的chroot環境中(應該是在chromiumos/src/chroot)
  3. 在chromeos開發的chroot環境中,在執行完build_platform_package.sh, build_kernel.sh, build_image.sh後,進入到上述目錄,使用make module SYSSRC=/path/to/the/kernel/source(這個目錄會在~/trunk/src/build/kernel/{kernel_name}/{kernel_version}(希望沒記錯,有錯等一下再改))命令來建構nvidia的kernel module。完畢後會在nv目錄裡面產生nvidia.ko。(之前想要用dkms來做,但是發現有點麻煩,所以放棄了。如果真的要使用dkms的話,需要修改Makefile.kbuild來配合環境)
  4. 接下來需要手動安裝這個kernel module,把剛剛用build_image.sh建構好的disk image(檔名叫做rootfs.image,會放在~/trunk/src/build/image/{build_version}目錄底下)掛載到檔案系統中,使用install命令把nvidia.ko安裝到disk image掛載目錄底下的/lib/modules/{kernel_name}/kernel/drivers/video目錄中。然後執行depmod命令來更新dependency檔。(要用哪些參數請自行man一下,需要用到正確的System.map、指定正確的version及檔名)
  5. 接下來需要離開X,用sudo init 1然後選擇使用root帳號
  6. 把剛剛的rootfs.image掛到檔案系統,然後可以先執行步驟1提到的執行檔,加上-A來看看有哪些進階參數可以用,需要指定所有安裝細節的目錄選項,並且選擇不執行kernel module的安裝選項,(用到的大概有十幾個選項,而且要加上許多完整目錄名稱以指到rootfs.image中的相關目錄,所以落落長,最好做成script來跑,這樣也方便調整參數)來進行X Window驅動程式、extension以及一些軟體、動態程式庫的安裝。安裝完畢後,chroot到rootfs.image掛載的目錄,執行ldconfig -v來確保上面的東西有正確安裝。
  7. 修改rootfs.image掛載目錄中的etc/X11/xorg.conf,適當調整參數,需要把driver指定為'nvidia',並且載入glx模組。
  8. 修改rootfs.image掛載目錄中的boot/extlinux.conf,拿掉i915.modeset=1核心參數
  9. 使用image_to_usb.sh把chromeos安裝到usb隨身碟(至少需要4G),然後用他開機
  10. Chromeos跑起來就非常快

過程這麼複雜,主要是因為nvidia驅動程式安裝方式無法與chromeos建構的過程搭配,所以需要把安裝過程拆成kernel module及X兩部份。另外一個我自己不太熟的是xorg.conf,所以花了一點時間嘗試錯誤,其實nvidia的驅動程式裡面有非常詳細的readme可以參考。

測試結果

沒有使用nvidia的官方驅動程式時,在xterm使用top,會看到chromeos_wm使用cpu大約在14%,安裝好以後...嘿嘿,平均是0%,速度超快,而且不會當掉了。

(昨天更新source時,看到ibus-chewing目錄喔,不過好像還沒放進platform package的建構中,應該不久就會有新酷音輸入法可以用了)


2009-11-30 21:43 by Fillano

我把檔案上傳到一個分享伺服器,可以下載來跑跑看。(請使用chromiumos的image_to_usb.sh來把他放入USB隨身碟。另外,這個影像檔只支援nvidia的顯示卡,別的顯示卡跑起來會出問題。)


http://www.keepandshare.com/doc/view.php?u=1580589
  1. Re: 替Chromeos加上nvidia驅動程式 [回覆]

    我也在弄 Chromium OS, 不過主要給 Eee PC 使用的,並加入了 scim 中文輸入法,預設中文界面,只要 512M SD/USB,可以參考看看,腳本都改好了,如果有需要可以給你。

    http://www.xepc.org/?p=181

    lazyfai 回應於 13 十二月, 2009 19:13

  2. Fillano(馮旭平) Re: 替Chromeos加上nvidia驅動程式 [回覆]

    喔,感謝,我去看看。好久不見了阿:)

    Fillano(馮旭平) 回應於 13 十二月, 2009 19:41

  3. Re: 替Chromeos加上nvidia驅動程式 [回覆]

    Thanks for your effort, can you provide offline user?

    Simon 回應於 16 十二月, 2009 11:16

  4. Re: 替Chromeos加上nvidia驅動程式 [回覆]

    nvidia 的支援不錯了...那像 ATI !@#$%^

    micmic3 回應於 08 元月, 2010 10:46

  5. Re: 替Chromeos加上nvidia驅動程式 [回覆]

    請問在第三步驟的make module SYSSRC=/path/to/the/kernel/source,正確路徑是否為make module SYSSRC=~/trunk/src/build/kernels/kernel-chromeos-intel-menlow? driver提供的makefile需要改嗎?因為我都會出現錯誤訊息,"Unable to determine the target kernel version",是否有我沒有改到的地方,或路徑有問題?謝謝!

    Grance 回應於 09 二月, 2010 17:03

發表回應

 暱稱 (必填)

 標題

 個人網頁

 電子郵件

authimage 
 認證碼 (必填)