May 31, 2007

2007 年第一、二季書目

今天第一、二季常與繁瑣的工作與病魔對抗,很難靜下心閱讀。利用本月的休假,努力追趕進度,以下是這兩季閱畢的書目:
由 jserv 發表於 11:31 AM | 迴響 (0)

May 28, 2007

演講:Linux 與消費性電子產品

本週五 (June 1) 將應中正大學的邀請,給予一個關於嵌入式 Linux 與消費性電子產品的演講,以下是相關資訊:
  • 講題:Linux 與消費性電子產品
  • 時間:6/1 (五) 2:00PM~4:00PM
  • 地點:中正大學大禮堂 國際會議廳
  • 講題簡介:
      Linux 的趨近成熟,對許多領域帶來了思維的變化,特別在消費性電子產品領域,原本採用的封閉式設計也受到挑戰,嵌入式的 Linux 裝置也逐漸在市場上嶄露頭角。然而,過去在個人電腦發展的 Linux 核心與相關的軟體,該如何適應消費性電子產品的重重考驗?本議程將以一個典型的 GSM 手機設計,探討採用 Linux 的動機與需求,並分析其因應之道。
另外,也可參考 [精美的海報]。這個議題可說是延伸之前在 OSDC.tw 發表的 [RT nanokernel for Embedded Linux],更偏向實務面去思考整個消費性電子產品設計上的技術衝擊,諸如 latency、realtime、power consumption,同時我也會談論關於授權與開放發展模式的議題。

主辦單位為社群的朋友保留了幾個座位,有興趣指教者,請來信告知 (也包含交通方式),期待您的指教,謝謝!
由 jserv 發表於 07:39 PM | 迴響 (3)

DetaolB x86 linux live distro

小時候寫了一篇關於 Floppy Linux 的筆記,恰好有些筆誤,陸續就收到幾十封的來信,最後我只好跟對方說:
    「請不要再玩 Floppy Linux,還有更有趣的項目」
[DetaolB] 就是一個相當特別的 x86 linux live distro,其空間少於 floppy (1.44Mb),但功能一點都不少,以下是其規格:
  • linux kernel 2.6.21 + aufs + squashfs + no_clocksrc_warning
  • uClibc 0.9.29 + readelf + ldd
  • busybox 1.2.2.1
  • tinycc 1.0.0 (forked. creating dynamic uclibc executables)
可燒錄成 CD-ROM image 或透過 qemu 執行,開機速度非常快,更重要的是,基本的功能都有了,還能用 [tinycc] 來寫 C 程式。要加入自己的應用程式也不難,mailing-list 有一些討論可參考。
由 jserv 發表於 12:56 PM | 迴響 (0)

May 27, 2007

我對 PCMan 的印象

在討論區看到 [OpenPCMan] 2007 RC 版本出爐的訊息,看來正式版也不遠了,這讓我突然想到三年前的一封信件:
    作者 HZYSoft.bbs@ptt.cc (HZYSoft.bbs@ptt.cc)
    標題 Re: [BBMan] 發布 v1.7.7 修正不少問題 :D
    時間 Wed Aug 11 16:31:43 2004

    ※ 引述《jserv.bbs@bbs.sayya.org (小貓Linux)》之銘言:
    ...
    您好,小弟我想邀請您加入 PCMan X Open Source Project 的開發或維護,這也是一個支援多平台的 BBS 連線軟體,和 BBMan 同性質,目前放在 sourceforge。

    PCMan 原為 M$ Windows 下的 BBS 軟體,七月間重新開發了多平台開放原始碼的版本,和 BBMan 同樣使用 wxWidgets,可支援多平台,目前有確定支援的是 Windows, Linux, Free BSD,已經推出一段時間,原始碼目前使用 sourceforge 的 CVS。所有說明文件,註解,和軟體預設介面皆為英文,但可用mo檔改變語系(目前只提供中文) 所有檔案都在 sourceforge 上, http://sourceforge.net/projects/pcmanx/

    專案下雖有四名開發者掛名,因為缺乏經驗還在學習,目前其他三位並沒有任何動作,想誠心邀請您一同加入,目前 PCMan X 的架構應該很好維護,希望您能夠不吝協助。
HZYSoft.bbs@ptt.cc 是 [PCMan] 最廣為人知的 BBS 帳號,我大概是從那時認識這位特別的朋友。該時間點說來頗有趣味,一位政大的學生做了名為 [BBMan] 的軟體,那是跨平台的 BBS / SSH / SFTP Client 軟體且以 GNU GPL 授權發行,隨後 [PCMan] 做了名為 [PCMan X] 的新軟體 ("X" 表示 cross platform),當時 Linux 討論區也跟著活躍,原本只是用 rxvt 玩 BBS,現在突然多了兩個好用的連線軟體,而且都是以 GPL 發行。

因為開發新酷音計畫,認識了[kanru],我們也一起加入 [PCMan] 的新計畫 [PCMan X pure GTK+ 2],陸續做了些改進,還加入一些有趣的設計,比方說在 BBS 連線軟體加入 script 支援、彈出式訊息視窗等等。跟他們兩位年輕有為的開發者合作,是相當好的經驗,雖然不若國外活躍的開發風氣,但本土的開發者也有許多值得一書之處,幫他們做了專訪: 大家都很想知道的問題不外乎是:醫學院學生如 [PCMan] 者,該如何在沈重的課業壓力之外,尚能投入活躍的軟體開發?資深的 Win32 開發者如 [PCMan] 者,為何會選擇 Linux 平台並以自由軟體形式釋出其作品?自 2001 年至今,[PCMan] 系列軟體陪伴了許多少男少女度過遨遊於 BBS 的日子,甚至還有許多大學教授也使用此軟體,如今,在許多人的合作下,PCMan 系列軟體可說是台灣指標性的自由軟體專案。

從開始修改 [PCMan X] 程式碼開始,我也成為 PCMan 系列軟體的使用者,如今已三年,與許多朋友見證高度創意的開發與對品質的堅持,謝謝 [PCMan] 和合作或給予寶貴意見的朋友們。這當然只是個起點,未來我們或許會看到更多這類成功的案例 :-)
由 jserv 發表於 04:52 PM | 迴響 (8)

May 12, 2007

簡報:China AVS 影音標準簡介

上週應某單位的邀請,給予關於多媒體與瀏覽器技術的教育訓練,其中花了一段時間探討中國大陸 [數字音視頻編解碼技術標準工作組] 提出的 AVS 標準,不同於過去 AVS 小組的角度,我以 [OpenAVS] 開發者的身份,先對視訊音訊編碼的技術與歷史緣由作開端,隨後探討 China AVS 的技術細節與發展現況,簡報檔案已上線,請參考 [ChinaAVS-intro.pdf],請多指教,謝謝!
由 jserv 發表於 04:19 PM | 迴響 (5)

演講:通訊自由與通訊設備的自由化 - 淺談自由軟體與行動運算

下週三 (May 16) 將應 [陽明大學醫工所 遠距醫療照護團隊] 之邀,給予一個關於自由軟體在行動通訊運算的講題,以下資訊擷取自該單位網頁:
  • 主題:通訊自由與通訊設備的自由化 - 淺談自由軟體與行動運算
  • 時間:2007/05/16, 3:30 - 05:30 pm
  • 地點:陽明大學醫學工程研究所 A201 室
  • 內容:
      憲法保障了人民的通訊自由權,但通訊設備往往受限於廠商利益或特定考量,無法完整的被人民所掌握。拜蓬勃的自由軟體運動所賜,Linux 手機也現身陸續於市場,某種層面讓原本封閉的手機設計,帶來開放的曙光,而 2007 年初,OpenMoko 的開放裝置與一系列自由軟體的提出,開創了新的紀元,自此,人民不僅有通訊自由,也獲得對通訊設備掌握的自由。本議程以自由軟體的脈動,去思考 M 化 (行動運算) 對既有環境的衝擊,並探討進行中的自由軟體新發展。
因為這個主題很有意思,所以大綱我得反覆思量。當然,不可避免的,凡事都有好壞的一面,如果這類行動通訊的裝置變成完全 (或大部分) 開放的話,無可避免的是其潛在的安全性挑戰,但攤在陽光下絕對比閉門造車更有機會修正,安全性議題我會如之前的 blog [HIT 2007 Call for Paper] 提及,由行動裝置的通訊能力來探討相關的技術與法規議題,並揭露可能的安全性衝擊。

那麼,在 [陽明大學醫工所 遠距醫療照護團隊] 的演講,則會專注於應用與未來的新機會探討,分享 [OrzLab] 在與 [OpenMoko] 互動的經驗,思考在開放的裝置中,如何去創造新價值,歡迎指教,謝謝!
由 jserv 發表於 04:01 PM | 迴響 (0)

May 10, 2007

Java SE/ME GPL 釋出

正如許多人知曉的,Sun Java SE/ME 現在以 GNU GPL 授權釋出,並交付 [OpenJDK] 開發社群來維護。在今年的 JavaOne,Sun 邀請了許多知名的 Free Java hacker,以下列舉一些紀錄: 那麼,這是否意味著原本的計畫,如 [GNU Classpath],邁入終結?!不,不但會存活,而且因此可以更活躍。我們可以看到,當 [OpenJDK] 接手 HotSpot 與 JavaSE 的 GPL 版本維護時,在不到二十四小時內,就收到幾十個修正或錯誤回報,也可以見到 [GNU Classpath] 的開發者做了許多眉批,如: 從中可見,礙於某些技術考量,與非技術的限制 (如專利、第三方程式碼),所以 [OpenJDK] 的 Java SE 實做事實上並非相當完整,但這些空缺即可由 [GNU Classpath] 來補齊,而且現在已經有具體成果,是的,在新聞發佈後短短幾個小時就展開了。另外就是平台的移植,Java SE 礙於架構限制,現在僅有 x86/x86_64/SPARC 的移植實做,但其他平台的移植,也可以透過其他 Free Java VM 的合作,更換其 Runtime layer,達成多元的執行環境。

2000 年開始,Sun 就有意將 JDK 程式碼釋出,並以 free software / open source 的形式永續發展,如今終於達成了,而 [GNU Classpath] 可說是直接或間接促成 Sun 確立此決策的重要計畫,未來也可望有更創新的突破。

Java is Free'd!
由 jserv 發表於 10:13 AM | 迴響 (2)

May 07, 2007

qsort 與 shellcode

瞥見某廠商寫的 driver,啟發我的靈感。Standard C Library 的 qsort 函式本身就是相當奇妙的設計,以下是其宣告:
void qsort(void *base, size_t nmemb, size_t size,
           int(*compar)(const void *, const void *));
吸引我的地方就是 callback function,用以作比較資料之用。探討與 shellcode 的關聯前,先來寫個簡單的範例程式:(qsort.c)
#include <stdlib.h>
#include <stdio.h>
 
static int cmp_func(int* a, int* b) {
        return (*a - *b);
}

int array[10] = { 5, 9, 2, 8, 1, 4, 7, 10, 3, 6 };
int main() {
        int i;
        qsort(array, 10, sizeof(array[0]), cmp_func);
        for (i = 0; i < 10; i++) {                                                                  
                printf("-> %d\n", array[i]);
        }
        return 0;
}
這個程式碼的輸出很容易想像,就是將 1, 2, 3, ..., 10 排序印列,那我們作點觀察:
$ gcc -Os -o qsort qsort.c 2>/dev/null
$ objdump -xd qsort | grep -A8 "<cmp_func>"
08048384 :
 8048384:	55                   	push   %ebp
 8048385:	89 e5                	mov    %esp,%ebp
 8048387:	8b 45 08             	mov    0x8(%ebp),%eax
 804838a:	8b 55 0c             	mov    0xc(%ebp),%edx
 804838d:	5d                   	pop    %ebp
 804838e:	8b 00                	mov    (%eax),%eax
 8048390:	2b 02                	sub    (%edx),%eax
 8048392:	c3                   	ret
cmp_func 函式的 IA32 機械碼前半段是處理 C-style stack,實做部份則是以下兩行組合語言程式碼:
 804838e:       8b 00                   mov    (%eax),%eax
 8048390:       2b 02                   sub    (%edx),%eax
於是我們取上述的機械碼當作 shellcode,改寫之前的範例程式:(qsort-shellcode.c)
#include <stdlib.h>
#include <stdio.h>
 
int array[10] = { 5, 9, 2, 8, 1, 4, 7, 10, 3, 6 };

int main() {                                                                                        
        int i;
        char *shellcode = "\x8b\x00\x2b\x02\xc3";
        qsort(array, 10, sizeof(array[0]), shellcode);
        for (i = 0; i < 10; i++) {
                printf("-> %d\n", array[i]);
        }
        return 0;
}
注意,shellcode 的實做需要補上 ret,否則 qsort 就玩不下去了。
由 jserv 發表於 08:18 PM | 迴響 (5)

May 02, 2007

Talk: OpenMoko - 解放你的手機

[TOSSUG] 邀請了致力於自由軟體手機設計的 [OpenMoko] 兩位核心人物:[Sean Moss-Pultz] 與 [Harald Welte],針對 [OpenMoko] 進行演講,時間是五月八日 7:00pm-9:00pm,地點暫定於 [CafeLumiere] (台北市羅斯福路三段 283 巷 14 弄 15 號)。歡迎 [報名參加]。

以下引述 [報名網頁] 的資訊:
    OpenMoko 是一個自由軟體專案,目標是創造出世界第一個完整公開的手機軟體平台。

    OpenMoko 的計劃者、同時也是大眾電腦行動通訊事業部的專案經理 Sean Moss-Pultz 說 「這是首次,行動通信產業的生態系統會像 PC 一樣開放,而且應用軟體將更容易的被取得」

    Neo1973 是首款針對 OpenMoko 所開發的 GSM 手機,此手機由大眾電腦所製造。OpenMoko 計畫是由大眾電腦 (First International Computer ;FIC) 所發起。之所以命名為 Neo1973,主要是為了紀念 1973 年 Motorola 的 Martin Cooper 博士發明了世界上第一支行動電話,並成功地用開電話通信,而 Neo 一字則帶有嶄新一頁的意涵。

    開放手機的真正力量並非來自於硬體設備本身;它來自於所有的 “freed phones” 使用者的互動。我們可以創造真的 Weiser 定義下的 ubiquitous computing。這將會是二十一世界的電腦。

    我們相信,開放原碼的手機將可以再次徹底改革通訊世界!這將會是嶄新的 1973。

    加入我們,解放你的手機
真是充滿熱情的文宣,也因為是採用開發原始碼的發展模式,任何人都可進行貢獻與再創新。[OrzLab] 也在 OpenMoko 的硬體上面做了些有趣且獨特的嘗試,逐步將動態組字、向量繪圖系統、Java、Ajax/Embedded 等元素在 Neo1973 上實現,或許當日有空的話,也可一併展示與探討 :-)
由 jserv 發表於 12:44 PM | 迴響 (2)

May 01, 2007

為何開發者愛 Debian?

今天在 LinuxDevices.com 瞥見 [Why device developers prefer Debian] 一文,覺得很有意思,想到兩年前寫的 blog [我心目中的 Linux Distribution],透露的也是對 Debian 的偏好。這篇由 Henry Kingman 撰寫的報導指出,開發者喜愛 Debian 有九個理由:
  • 最新的套件
  • 廣泛的支援
  • 非商業化永續經營
  • 便利性
  • 支援 11 種硬體架構
  • 靈活
  • 不受限於 Debian 專屬的格式
  • 簡易的系統維護與升級
  • 活躍的社群
Debian 4.0 日前正式釋出,現在安裝與硬體支援也獲得很大的突破。我想,Debian 與其他系統的差異就是,版本號不再是最重要的考量,相反地,一旦系統運作 Debian 後,將可透過網路,感受到這是「有生命」的系統 :-)
由 jserv 發表於 08:40 AM | 迴響 (4)