iT邦幫忙

9

替Chromeos加上nvidia驅動程式

  • 分享至 

  • xImage
  •  

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

所以就來自己手動把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。

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

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


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 則留言

0
bizpro
iT邦大師 1 級 ‧ 2009-11-30 14:51:47

推 +1

0
fillano
iT邦超人 1 級 ‧ 2009-11-30 21:54:56

影像檔分享:
http://www.keepandshare.com/doc/view.php?u=1580589

解開來後必須使用chromiumos開發環境裡面的image_to_usb.sh來把他燒進USB隨身碟,隨身碟必須至少有4GB。另外,這是專為使用nvidia顯示卡的電腦做的,在別家顯卡的電腦應該不能跑。(nforce可能也不行)

要怎麼使用image_to_usb.sh...他有兩個參數,一個指向影像檔路徑(--from=影像檔目錄的完整路徑)另一個指向usb隨身碟(例如隨身碟是sdc,那就是--to=/dev/sdc)

我要留言

立即登入留言