2015年1月11日

Acer Chromebook 13 Ubuntu (Chrubuntu)

前言:
Google提供了我們Linux Geek一個好玩具。

Acer在去年底推出Acer Chromebook 13這台Chromebook,
我看了規格後覺得,這台非常適合Linux玩家,未來不知道,
但過去要找到這樣的玩具,還台灣廠商做的,很少很少(根本是沒有啦.....)

Acer Chromebook 13我是透過網拍買的二手機(我是12月中旬買的),
但因為距離上市日期不長,加上它的特性,我相信機器都還很乾淨,
要被操到硬體問題一堆,難度很高,
在這裡要感謝賣家,用不錯的價格提供了一台好玩具。

規格:
Acer Chromebook 13的規格如下:
  • CPU:ARM Cortex-A15 4核心 (Nvidia Tegra K1)
  • Video:Nvidia Kepler架構192核心
  • LCD:13.3吋LED背光LCD (1366x768)
  • RAM:4GB DDR3 (不可擴充)
  • Storage:32GB eMMC
  • Webcam:前置Webcam (1280x720)
  • WiFi:802.11ac
  • Bluetooth:Bluetooth 4.0
  • Card Reader:SD-Card
  • Battery:3220 mAh
看到第1條相信就傻了,再看第2條,更傻。
這台Notebook,使用的是ARM處理器,而且是Nvidia出的ARM處理器,所以內含Nvidia顯示。

這台機器非常有趣,它的真身其實是:
Tegra-K1
原價屋NVIDIA Jetson TK1開箱

它是Nvidia針對行動平台出的ARM處理器,
除了Acer Chromebook 13外,還使用在下面幾個產品上:
此外,Nvidia提供的車用電腦開發平台,也是使用這塊Nvidia Tegra K1。


機器問題點:
問題1:無法安裝Windows
Acer Chromebook 13最大的問題,正是它的特色所在,
它使用的是Nvidia ARM處理器,因此無法在上面安裝Windows,
這對於大部分玩家而言,就會是個大問題,
無法安裝Windows,表示無法隨心所欲的安裝程式、系統。

問題2:ChromeOS有夠難用
ChromeOS的主要問題是,它全部功能都要透過網路,
你要寫Word、Excel、PowerPoint:Google Document
你要記事本:Google Keep
你要儲存檔案:Google Drive
你要看影片聽音樂:一個簡易的播放器,並整合Google Drive

那如果現在沒有網路呢?
你要寫Word、Excel、PowerPoint:.........
你要記事本:..........
你要看影片聽音樂:..........

那不用說了,這根本就是垃圾,沒有使用者會買單的。



當上述2個問題同時存在,你買了一台Chromebook,
只能使用Google線上服務,離線後通通不能用,
又不准你安裝其他作業系統,
請問你下個動作是什麼?

我猜:
1. 退貨
2. 網拍賣掉
3. 丟角落堆灰塵

ChromeOS的設計有其特色,但目前設計有瑕疵,實用性很糟糕,
關於它的設計理念,我放在最下面附註。

Linux Geek禮物:
雖然機器有上述2個怪問題,但對於Linux Geek來說,這些問題都不是問題。

Chromebook有2個特別計畫:
  • chrubuntu
  • crouton
這2個計畫都能讓Chromebook不再用ChromeOS,而改用Ubuntu或其他Linux distribution。

這2個的區別是:
  • chrubuntu:是「安裝」一個獨立的Ubuntu,開機就直接進入Ubuntu
  • crouton:是「放置」一個Ubuntu,由ChromeOS切換進Ubuntu桌面環境
2個我都使用過了,crouton不好用,
而且在Acer Chromebook 13上,crouton無法使用顯示晶片硬體能力,
我自己是沒有嘗試過,國外網友的意思是,
Nvidia K1 X11 Driver只能被載入1次,重複載入時,第2次載入無法使用硬體能力。

目前我是使用chrubuntu的方式,系統運作相當不錯。

Acer Chromebook 13 Linux軟體(含作業系統)支援情況:
針對Linux軟體支援情況,我們概括簡單的按下面分類:
  • 硬體驅動與Linux Kernel
  • Linux軟體、Library與ARM

硬體驅動與Linux Kernel:
Acer Chromebook 13出廠就是Linux,因此內部的硬體沒有Linux驅動的問題。
這非常難得,大部分Notebook要裝Linux,都會遇到很多驅動程式不支援或支援不好的情況,
但在Chromebook上,不會有這樣的問題。

額外驅動程式,
Google有提供各Chromebook的Kernel SourceCode,額外裝置的Kernel Module SourceCode只要支援ARM,就可以編譯出Kernel Module。

這點Google做得相當好,它針對所有Chromebook型號,有提供一整棵Kernel SourceCode Tree,
我們可以直接根據Chromebook型號,下載到相對應的Kernel SourceCode,也有提供目前使用的config(ChromeOS預載Kernel,直接有/proc/config.gz),可以自己修改Kernel,或編譯Module。

因為它沒有RJ-45有線網路,我另外插一張USB3.0 Gigabit網路卡,
驅動程式直接有module可以使用,連build都不用。
哪一張?
USB3.0 gigabit網路卡晶片大概只有1、2家,可以直接用的是Axis的晶片,
很神奇,Axis本業是IP Camera,但竟然業外搞了一顆少見的USB3.0 gigabit chip。

Linux軟體、Library與ARM:
目前Ubuntu ARM(當然應該也包括Debian ARM)的套件完整度相當高,
除了專門針對x86的軟體(例如:wine、VM)沒有之外,
目前使用上,還沒遇到沒提供的OpenSource軟體或Library,
哪些叫做有提供的?
Java、FlashPlayer(Google包在Chromebook內)、GNOME、MPlayer、VLC、Firefox、Chromium、Qt Library、GTK+ Library、python...等,常見的軟體、Library都支援。

到目前,只遇過一套程式可以裝,但執行會Crash,是畫3D的blender。

所以使用上幾乎沒遇到問題,目前唯一的問題是,
它的硬解Nvidia是用OpenMAX,提供的是GStreamer模組,
MPlayer、VLC不支援OpenMAX,目前還只能ARM軟解。

但這台ARM四核心很強大,除了H.264不行外,MPEG4以下等級,ARM軟解都直接ok。

所以結論是,這台Chromebook 13,改用Ubuntu(Chrubuntu)後,整個頭好壯狀,考試都得100分。

特色與優勢:
1. 非常省電 (除動態時脈調整外,還動態開啟關閉CPU核心)
這台是ARM系統,使用起來真的是很省電,
Nvidia對Tegra K1的支援相當不錯,
它因為是專門用在手機、平板的行動平台,對於省電有特殊設計。

根據Tegra-K1描述,
「理論上」它應該是NVIDIA 4-Plus-1 Quad-Core ARM Cortex-A15,
這裡指的NVIDIA 4-Plus-1是說,
「理論上」它應該有2顆ARM,
1顆是4核心高階高時脈ARM,另一顆是單核心低時脈ARM,稱為LP :p,
「理論上」它應該可以在閒置時,關閉4核心高階ARM,切換成使用LP ARM。

「實務上」我找不到文獻說的參數來切換CPU,沒辦法很屌的做到切換成LP ARM,
原因我有3個猜測:
1. 我猜Google或Acer測試時發現不穩,把這功能關閉
2. 這款SoC是閹割版,沒有額外這顆LP    ARM
3. 工程師研發時,沒注意到這功能,沒開

但除了這點有點可惜外,這台Chromebook的ARM直接build-in省電module,
它除了一般PC動態時脈調整外,它可以動態的開啟、關閉CPU核心,
當CPU工作量低時,就會先關閉1個核心,還是很低就關第2個核心,
陸續關到剩下單核心。
當CPU工作量增加時,時脈先拉高,然後開第2個核心,
還是很高,開第3個核心,最終4個全開。

開/關的切換過程完全不會有感覺,不會頓也沒遇過程式因為切換發生問題。

2. 強大顯示運算
買小筆電,看高解析度影片真的是慘,
「號稱」可以硬解1080p影片,
實際情況是,高bitrate影片就是解不動。

這台是Nvidia血統的SoC,不用說,顯示晶片超強,
Nvidia主打的特點就是超強繪圖運算,
Tegra-K1的介紹中描述,它的應用環境包括:
  • 車用電腦中的環境辨識 (包括自動煞車的車前障礙物辨識、循跡系統的標線偵測...等)
  • 機器人的機器視覺 (障礙物辨識、物件辨識)
所以這台有CUDA,可以直接用這台開發CUDA程式做顯示卡運算,
雖然不知道意義在哪........

播放影片部份,如果MPlayer、VLC能支援OpenMAX(正在研究中),
那就可以丟掉爛爛的播放器,直接用MPlayer、VLC順暢播放H.264影片。

3. 高CP值
這台就算是原價,價格也相當實惠。
客官啊.......
它的雙胞胎兄弟NVIDIA Jetson TK1原價屋目前特價一塊還要NT 6090,
你買這台NB,Acer附上13.3吋LCD、3220mAh電池、802.11ac WiFi、藍芽、32GB eMMC,
只多賣你不到NT 4000,這樣的商品和價格,去哪找啊。

怎麼改機成Ubuntu (Chrubuntu):
我完全瞭解,介紹了半天,卻不提供安裝方式,根本是炫耀文,擺明找打。

我還沒完全把Chrubuntu的script修改完,
沒辦法提供出簡單、完整的安裝方式出來,
不過,這裡我先把參考資料,目前建好的檔案放出來,
高手高手高高手先自己試試看吧!

參考資料:
ChrUbuntu on Acer Chromebook 13

上述參考資料的位址是最關鍵的,裡面開版大大實際上已經把7成的工作完成了,
他做了下列事情:
1. Ubuntu放上Acer Chromebook 13
2. 整合了Nvidia在Linux For Tegra R19提供的Library
3. 把Google改過針對Acer Chromebook 13的FlashPlayer移入Ubuntu
4. 放上支援硬解的播放器(可能也是從Google的ChromeOS搬出來的)
5. 將ChromeOS內的Kernel和modules複製到Ubuntu中

其他網友在版上補充:
1. Ubuntu NetworkManager在WiFi運作不正常的修正
2. 音量快速鍵設定
3. 開機後預設關閉藍芽
4. Ubuntu 14.10無法順利安裝和使用,需使用Ubuntu 14.04

自己安裝心得:
我自己實際安裝,第1次安裝滿辛苦的,因為它下載網站設到歐洲,很慢.......
過程失敗,就要重新開機,整個script重跑......很久.....
所以最後script還自己邊try邊改......直到安裝成功......
再之後,直接把安裝好,ok得版本tar起來,直接tar解開......

另外,我自己修正包括:
1. 修正按Power睡眠後起不來
2. 除Xfce4外,安裝GNOME Fallback
3. 輸入法加入新酷音輸入法
4. 除音量快速鍵外,加入顯示器亮度快速鍵 (針對GNOME設定,Xfce4我不會設自定義快速鍵)
5. 直接安裝好修正過的NetworkManager
6. Nvidia的Linux For Tegra(L4T)改用R21.2版 (R21.2版支援CUDA 6.5,R19只支援到CUDA 6.0)
7. 修正切換耳機沒聲音
8. 加入CIFS和NFS的modules
9. 開機後直接設定啟用動態開啟/關閉CPU核心的能力
10. 安裝、設定思源黑體(Noto Sans)中文字型
11. 開機後,顯示器亮度設為50%(預設是最亮)
12. 安裝好Java、Firefox、Chromium、LibreOffice、MPlayer、VLC、aptitude

我直接將改過得整個系統打包成tar檔案,
省去chrubuntu script上網下載一堆套件安裝成系統的時間,
高手高手高高手只需要:
Step 1. 按chrubuntu教學,將Acer Chromebook 13設成Develop Mode
Step 2.ChrUbuntu on Acer Chromebook 13執行chrubuntu.sh,變更Partition Size並Format成ext4
Step 3. 將我改過的系統tar檔傳上去(我自己是用wget放到home目錄),解開到chrubuntu Partition
Step 4. ChrUbuntu on Acer Chromebook 13,切換開機載入系統的Partition

打完收工

預設的帳號密碼和原來chrubuntu一樣:
帳號:user
密碼:user

root預設禁用無法登入,使用sudo su變更後再改密碼。

檔案壓縮後有1.35GB目前我放在MEGA上,
未來歡迎幫我分流,或提供給我空間放置,連結如下:
xubuntu-desktop_lazchrubuntu_l4tr21.tar.bz2

下一篇,我希望可以修改完針對這個檔案安裝的chrubuntu.sh,
再把完整步驟寫出來。

目前使用上尚待解決的問題:
1. MPlayer、VLC OpenMAX移植和硬解(如果用gstreamer base的播放器,如:totem,可以直接硬解)
2. 睡眠後可能是顯示晶片沒停止很耗電,我電腦睡眠後丟著,白天上班晚上回來電池竟然沒電了
3. 闔上螢幕不會關機;但睡眠後,闔上螢幕反而會開機
4. GNOME環境下,System tray的電池開機後不會顯示;點設定->電源叫出後,睡眠->醒來後又會消失
5. 睡眠醒來時,畫面會閃3下
6. Firefox支援Java Plugin不支援FlashPlayer (這是個大哉問,跟Firefox要支援Chrome Plugin格式有關)
7. Chromium支援FlashPlayer不支援Java Plugin (這是個大哉問,跟Java Plugin格式有關)
8. 變更alsamixer設定後,切換到耳機模式,耳機有聲音喇叭沒聲音(正常);但在喇叭模式,耳機和喇叭都有聲音(不正常)
9. 鍵盤沒有Del,同位置是電源,經常按錯啊 (這問題是來鬧的嗎....)
10. 極少數時候,睡眠醒來後,執行中程式會Crash

目前注意到大部分問題都發生在睡眠或睡眠醒來,
我十分懷疑問題點在Systemd和UPower,
事實上我發現到,Ubuntu預設睡醒的行為,都是針對x86或intel的動作,
這台是Nvidia ARM,相關的動作都沒有或可能不完全,
但目前我對Systemd和UPower都不算熟,chubuntu又算是改機成品,
沒有正常的Ubuntu 14.04對照,不確定正確動作流程。

題外話之ChromeOS設計理念:
Google的Android在手機上異常成功的關鍵之一,就是捨棄了傳統的手機平台設計,
傳統手機平台,都是一般作業系統搭配一個特殊的環境和特殊的SDK,
像是OpenMoko
在那個年代,我還在用PocketPC,最方便開發的系統是WinCE,使用VisualC++ Embedded。

你要開發者在開發App前,要先經過一個複雜的「儀式」,
才能把開發環境建置出來,環境內的桌面系統可能是Qt Library、GTK+ Library,
又因為是手機平台,SDK還不大一樣,這開發者怎麼買單?

Google的創舉在於,你不需要那個複雜的「儀式」,
你也不需要學習離譜的SDK,你只要會「Java」,而且注意,
不是Sun設計得莫名其妙的JavaME,而是直接用JavaSE就能開發,
只要最後經過一道「詭異程序」,就能把Java程式放在Android上執行。
所以就成功了...........

Google的作法是,
它把手機底層全部用一個Google的JavaVM包裹(JavaVM的設計公司是被Google買斷的),
開發者不需要知道底層在幹嘛,只需要Java程式這個JavaVM能看懂,就能執行,
那個「詭異程序」,就是負責將一般的Java程式,
轉換成這個小型化JavaVM能看懂的格式,附帶包入安裝資訊...等。
Google這作法當時,Java已經是熱門語言,程式開發者多,
直接用現成語言和現成SDK就能開發,
加上Google的名號,和當時hTC獨家的硬體工藝,使用者和開發者就買單了。

事實上,當時Google還是擔心和其他同質平台遇到一樣的問題,
因此發表前還搞了個Android前100大創意App徵選,
除了搞聲勢外,就是要讓開發者能認識、熟悉這個平台的開發環境和模式。

Google聽到有人在PC上,用「瀏覽器」當核心開發OS,
手法和它在Android上一樣,差別是,
一個用JavaVM,一個用瀏覽器的WebKit + JavaScript解譯器
(瀏覽器在現代,幾乎可以視為一種Html + JavaScript語言的VM),
直接就想複製這樣的模式到PC,要把Windows幹掉,這就是ChromeOS。

ChromeOS的設計理念不錯,也很特別,
但它的設計,只整合了網路服務,沒有整合本機程式,
這讓整個ChromeOS變得失敗。

我描述個對比,你在Android手機上操作,
會因為是網路手機,所以沒辦法讀取手機內的影片、聲音、聯絡人、簡訊嗎?
這當然不會發生吧.......

但在ChromeOS上,竟然是搞成這樣,這真的是失敗設計,
你要同一個架構這麼搞,你可以寫個獨立的Local WebServer,
所有本機相關的操作,都透過Local WebServer呼叫執行。

更簡單的作法,你直接在架構上開洞,在ChromeOS的SDK上開個API,
能直接開啟本機程式,同樣可以引入檔案總管、小畫家、MPlayer、VLC...等,
就不會搞成現在這樣,有新意但不好用。

9 則留言:

Unknown 提到...

Chromebook沒有網路
目前可以使用離線軟體,寫記事本、看影片聽音樂....
Google Slide可以離線製作投影片
Google Sheet可以離線
Goolge Doc可以離線
很多軟體都可以離線

丫良 提到...

大大 我看了你的留言 好想買一台來玩玩!! 謝謝

匿名 提到...

沒這麼難用啦~雲端是未來的趨勢
離線使用都可以的
我用的很開心耶~哈

丫良 提到...

我的今天到了 剛剛使用一下chrome os還滿好用的 可是我很愛linux 買來就是要dual-boot

Don 提到...

剛購置了一台Acer Chromebook 13,在網上很少ARM 安裝CHRUBUNTU的教學,
也看了大大的參考資料ChrUbuntu on Acer Chromebook 13
折騰了半天,按預設安裝了UBUNTU 15.04,
重啟到UBUNTU,沒有GUI,只有一個terminal介面,也找不到解決方法
現在重裝了CHROME OS,按大大把Partition Size並Format成ext4
到了Step 3我就不明白可以怎樣做到,用SD卡或USB,可以取代wget嗎
如果不能,有沒有詳細的COMMEND步驟?

Passing By 提到...
作者已經移除這則留言。
Passing By 提到...

Crouton其實支援顯示晶片,前提是在安裝的時候有加入xorg,詳情請見Crouton Command Cheat Sheet。

https://github.com/dnschneid/crouton/wiki/Crouton-Command-Cheat-Sheet

sh ~/Downloads/crouton -t help 列出可安裝的目標

xorg ... Enables GPU acceleration on supported platforms.
xorg需要audio,audio需要core,簡言之就是這三個都要一起裝。已經安裝Crouton的使用者只要更新chroot時加裝新的目標就可以了。我使用的指令是

sudo sh ~/Downloads/crouton -u -n [chrootname] -t core,audio,xorg

Unknown 提到...

請教 Acer Chromebook 11 是否適用上述版主的安裝方式 ?

Cody 提到...

現在才看到.....

Don:
15.04我之前安裝會失敗,所以我那時候還是用14.04安裝,但我目前已經測試裝過15.04和15.10,運作都ok,之後我會放一版新版15.10上來。
15.10和15.04, 14.04最大的差別是,15.10的Bluetooth改用BlueZ 5和PulseAudio 6,我的Sony SHB-52可以正常在15.10上使用了。
但15.10我用Bluetooth Smart藍芽滑鼠,一配對就kernel Crash,這我目前可能無力處理它。
15.04可以用ppa安裝BlueZ 5,安裝後可以用Bluetooth Smart藍芽滑鼠,但我的Sony SHB-52耳機不能用,不支援藍芽耳機。
14.04的藍芽功能幾乎是什麼都不能用。

mingjian leo:
Acer Chromebook 11是x86系統,一樣用chrubuntu即可,但它不用像這邊這個這麼辛苦,資料應該比較多些。
最主要是,x86系統,應該連Windows都能安裝吧!