顯示具有 olpc 標籤的文章。 顯示所有文章
顯示具有 olpc 標籤的文章。 顯示所有文章

2007年6月29日 星期五

OLPC Hacking Meet-up心得

經過十天的等待,於於完成了這次「OLPC Hack Meet-Up Day」的活動。活動期間,感謝jollen、jserv、PingYeh、 Andrew、...等人提供不少對活動的經驗和建議。這段期間也感謝BV1AL、KC、olv、 FourDollars、linanne、aguai、wesley、thinker、yungyuc、gaso、yuren...等人的幫忙,才能順利將活動完成。

活動開始,先是由Mat簡單介紹一下如何用QEMU模擬OLPC和測試程式。之後則是共同開發和交流討論。21:10-22:00 則是展示時間,首先是jserv展示了QEMU用於模擬系統開發的各個應用,也現場展示了他最新的成果「親手打造Tablet / WebPad」。接著,FourDollars也跟著和大家分享影音串流程式最新的發展,分析未來的驅勢。並同時展示了一個他參考pcman的程式而改出來的影音外掛程式。可以非常方便的點選網路廣播並收聽,並發想也能整合進OLPC,提高OLPC的娛樂性。

而在PCMan on OLPC這個主題上,由國內開發LiveCD(USB)系列的BV1AL將gcin在OLPC上的成果作成LiveCD的映像檔,並設定好網路等相關部分。而PCMan X開發團隊的字型好手olv ,則是解決OLPC上PCMan X中文字型顯示的問題。在經過一段時間修改,順利將兩方的成果結合起來,如下:

雖然還是有許多小缺點,但這張快照也象徵了我們用行動來實踐我們的信念,也呼應了活動發起的訴求。

在活動期間,wesley、aguai、annelin... 也嘗試利用QEMU建立多個OLPC來模擬mesh network的測試環境。而Andrew、PingYeh、BV1AL、...在Tick偶然拿到OLPC實機的root console後,也著手研究了OLPC的系統更新、開機流程,相信不久之後也能見到相關的經驗分享。

最後希望能持續將這些成果整理出來,以開放的方式回饋給upstream和社群。

2007年6月27日 星期三

在Ubuntu / Debian上啟動kqemu加速OLPC的執行

Mat 已經寫了一篇簡單的文件「Hello World for OLPC」,只要照著做就可以很容易的把 OLPC 利用 qemu 模擬跑起來了。不過如果可以先把kqemu的kernel module裝起來的話,那麼執行OLPC的模擬會更加的快速順暢。以下簡單介紹Debian/Ubuntu上啟動kqemu的方法:

1. 首先把相關的套件裝好

# sudo aptitude install module-assistant
2. 然後利用module-assistant編譯出kqemu的kernel module並且安裝到系統中
# sudo module-assistant auto-install kqemu-source
3. 最後載入模組並建立裝置節點
# sudo modprobe kqemu major=250
# sudo mknod /dev/kqemu c 250 0
# sudo chmod 666 /dev/kqemu
然後就可以照著Mat寫的文件跟著做即可。

另外~ 目前OLPC底層的作業系統是Fedora Core 6 (zod),所以啦,知道FC6怎麼玩的,基本上OLPC也是一樣地玩。

2007年6月21日 星期四

Hello World for OLPC

許多朋友好奇前天的螢幕快照怎麼來的,其實過程並沒有想像中的那麼難。小弟就以作一個Hello World的程式作範例。

在開始之前,先假設你手邊已俱備下列幾個主要的工具:

  • QEMU i386 ( OLPC的平台是x86 )

操作步驟如下:

1. 首先取得OLPC的映像檔:按這裡下載

2. 啟動qemu
qemu -redir tcp:2222::22 olpc-redhat-stream-development-devel_ext3.img
其中 "-redir tcp:2222::22"的意思是將 QEMU中的OLPC的:22 Port和本機端的:2222 Port接在一起。

3. 取得終端機

進入到OLPC視窗環境後,在OLPC的模擬環境按 “
Ctrl-Alt-3”,就會進到console模式(要回到視窗模式請按 “Ctrl-Alt-1” )。接著用root登入(預設沒有密碼),就可以順利取得root console。記得順便設定一下root的密碼。

4. 下一步?

根據官網上的說明,下一步應該就可以直接連線進去,但是實際上卻不行,為什麼呢?因為這時候的OLPC還沒有將網路啟動,需要先設定網路才行。

5. 設定網路

在root console下執行
ifup eth0
或是
echo ifup eth0 >> /etc/rc.local
設成下次自動啟動

6. 確定啟動sshd
/etc/init.d/sshd start
執行到這裡,我們已經有能力可以連線到QEMU中的OLPC了。

7. 連線到OLPC
ssh -X -o NoHostAuthenticationForLocalhost=yes -p 2222 root@localhost
其中 "-X" 是設定視窗轉送的參數。(可以執行xterm看看,所產生的視窗會將送到本機端來)。進行到這裡,我們已經有操控整個OLPC系統的能力,可以像使用一般Linux的方式去使用。

8. 如何作一個最簡單的Hello World?

目前OLPC並沒有內建gcc等開發工具。不過uname一下,可以發現OLPC的平台是i686。也就是說,我們可以先在本機端開發好程式,編譯好了再上傳執行即可。

而在OLPC裡的視窗程式執行環境為gtk、pygtk。我們不妨利用現在的pygtk來作為試驗。在這裡我們就直接引用pygtk給的官方範例。

9. 如何上傳?

最直接的方式就是透過scp的方式上傳。
scp -o NoHostAuthenticationForLocalhost=yes -P 2222 ./helloworld.py \ root@localhost:/home/olpc/hello_world.py
10. 如何執行:

由於OLPC的XWindow是用olpc這個使用者的身份執行。所以在執行前記得切換成olpc這個使用者
su - olpc
之後用視窗轉送的方式來執行
DISPLAY=:0.0 ./helloworld.py
就可以看到簡單的Hello World的畫面了

2007年6月20日 星期三

多國語言支援的圖形化kboot

上週二 (Jun 12) 在TOSSUG聚會活動「2007 年第 7 場心得分享 - 組字的核心:字的結構」時,展示「Xorz/Embedded的動態組字實做」並提及可能的應用形式,我舉了關於boot loader的例子,作為說明動態組字技術在嵌入式系統的重要性。的確,隨著虛擬化技術與能源管理技術的突破,boot loader越來越多元,針對前者,得配合virtualization executive做出不同的啟動程序,而對後者來說,動態進階能源管理所建立的「中間資訊」(suspend to RAM / suspend to Disk),也需要作合理的處理,這都需要高度彈性的boot loader涉入。另外,我們可從DSLinux (port Linux to the Nintendo DS gaming console) 與PS3 Linux (SONY PlayStation 3的Linux移植) 等計畫發現,其移植的途徑不同以往,而是大膽採用kboot/kexec的機制來降低移植的難度,並提供多樣的應用方式,詳情可參考之前的文章「kboot初探與模擬驗證」。

早上在hack OLPC時,又想到上述議題,所以我決定作個概念性驗證的實做,驗證kboot這個「功能強大的Linux boot loader」對OLPC的影響。以往的boot loader雖然實做了圖形介面,但功能是很侷限的,頂多只能產生靜態選單與底圖,筆者的想法就是,用一個簡單的圖形系統取而代之,提供真正有彈性的使用者互動機制,而我們有Xorz/Embedded。另外一個議題是,我們應該允許不同的開機方式,比方說透過網路或USB隨身碟,而且可在任何時間切換,使用情境很直覺,可以假設一開始運作缺乏中文系統的OLPC預設Sugar UI,等有需要的時候,插入USB隨身碟,系統會彈出一個boot畫面,提示使用者是否要重新開機,因為透過kexec系統呼叫,這一切將會非常快速 (跳過BIOS與硬體初始化),而USB隨身碟上面的系統當然就可以有中文或者其他客制化的環境。

同時,筆者也想藉此彰顯在「組字技術與手持式裝置的新機會」一文表達的想法,為何我們千方百計想把CJK (中日韓) 語文整合到嵌入式系統設計呢?或許我們會犧牲美觀,但是可帶來對於多國語文最基本的顯示能力,這大可整合到boot loader或kernel中。聽起來很玄,俗語說:「一圖勝千言」,看看現在的進度:
以上呈現的想法就是動態讀取裝置列表 (透過udev與FreeDesktop HAL),讓OLPC的軟體建設得以作基本的probing處理,進而在小型的圖形環境中產生對應的動態選單與動作描述。圖片展示了讀取USB Disk,並取出其中的中文標籤,以選單方式讓使用者決定系統的啟動與否,甚至,我們可透過網路來啟動或更新整個OLPC,這一切將可相當有彈性。

附帶一提,右下角的圖示就是「OrzLab的吉祥物」:「囧囧」,正準備跳出傳統的PC,走向多種嵌入式系統裝置的新應用。

OLPC Hack Meet-Up Day

Mat稍早寫了「PCManX on OLPC」一文,提到他最近對OLPC所作的修改,並試圖移植知名的BBS連線程式PCManX到該平台上,不過礙於OLPC底層未能提供足夠的基礎建設,所以Mat發起一個活動「OLPCHackMeetUp」,邀請更多同好齊聚hacking。以下引述介紹文字:

== 活動宗旨 ==
國際知名的OLPC(One Latop Per Child,百元電腦)計劃正在進行,硬體製造的業務也由國內的廣達代工。然而國內社群對OLPC相關的知識並不多,軟體方面也參與的很少。 因此希望能藉著發起這個活動,引介自由軟體愛好者實際參與OLPC的軟體開發,同時能互相交流軟體開發的經驗和心得,並以開放的方式回饋給OLPC計劃與自由軟體社群。

== 活動目標 ==
在目標的選定上,我們希望能以一個近程目標來秀出我們的特有的特色軟體。於是我們選定開放的BBS軟體PCManX作為目標,同時也希望能在實作過程中,找出OLPC的中文支援的方法:

  • 將PCManX放進OLPC環境執行,並調整成符合Sugar (OLPC的外觀風格) 的應用程式風格
  • 實作glibc locale + Fontconfig data + TTF + SCIM以提供中文顯示、輸入環境

時間預定於June 28, 2007 (四),晚間19:00~22:00舉辦,歡迎參與OrzLab的討論「OLPC Hack Meet-Up Day」。至少有以下議題需要思考:

  • 輸入法的型態:傳統的GTK+ IM module或Ajax web IM
  • OLPC的軟體開發方式與模擬器的整合
  • 底層i18/L10n基礎建設

期待您的參與及指教!

2007年6月18日 星期一

PCManX on OLPC

感謝jollen前輩的幫忙,讓我有進一步接觸OLPC(傳說中的百元電腦)的機會。

去年年底時就聽了好幾次OLPC的新聞,能真的用到實品,興奮之情真是難以言喻。期待歸期待,真實世界的OLPC用起來感覺倒還不是很順暢。可能是裡頭的軟體版本還沒跟到最新版,或是還不夠成熟,沒有完全發揮硬體完全的效能的原因吧。

想要更新到最新的版本,然而手邊又沒有工具也是沒輒。幸好,拜模擬器之賜,軟體的開發不再死死侷限在硬體上。

OLPC的組織已經有提供好相關的軟體模擬環境和開發工具,讓參與者即使沒有機器也能進行軟體測試與開發的工作。其相關的聯結如下:

幸運的是,OLPC的本質就是Linux系統,只有表面的介面看起來不太一樣,其他的系統設定跟程式環境都一樣。只要拿到OLPC裡的super-user,理論上幾乎可以作到任何在Linux上的事。
「理論上?!」
我們總是需要作一些嘗試來堅定我們的信念。
BBS可說是咱在地特有的文化,適逢(Open-) PCMan於日前釋出2007的最新版本。何不移稙一個BBS軟體到OLPC上呢?經過幾天的嘗試,終於有了初步的成果如下: