本週提早拿到了耶誕節禮物,是一台 16G 的 Apple 4th Gen iPod Nano

身為一隻窮苦的 3C 松鼠,面對新的電子產品總要比較功能、價格等等各種性價比,往往在浪費大量了時間到最後還是無法抉擇,即所謂「選擇的弔詭」吧。若有人買了一台送你,狀況就簡單多了,雖然我還是會遲疑的想要改買 iPod Touch, iPhone,心中拼命計算 iPod Touch 與 iPod Nano 的價差。不過這始終是一個禮物,再補差價換禮物未免就太失禮了。

之前曾經在 Debian GNU/Linux 上使用過 iPod, 就友善性來講,大概屬 Rhythmbox 較佳,將 iPod 插入電腦中,Gnome 就會自動叫出 Rhythmbox 來進行同步或聆聽 iPod 中的音樂。

不過就功能性上,我還是比較喜歡 Gtkpod,除了介面比較開發者導向外 (下方有兩個 filter 介面),我其實也不喜歡在同步用的 Laptop 上多存一份備份。平常的聽音樂習慣,還是將喜歡的專輯燒錄成 MP3 光碟,如此可以放入音響中聆聽,大部份在 Laptop 的使用習慣還是聽線上廣播,寶貴的硬碟不存音樂檔,留下來存一些電子郵件與程式碼。Gtkpod 除了匯入檔案比較直覺外,也可以逐一設定每一個 Playlist 應該要同步的來源檔案目錄,這樣比起同一的音樂資料庫其實相對有彈性多了。

今年九月剛上市的 iPod 4th Gen Nano 有一些特別的功能,其中我覺得比較感興趣的是除了外型真的比前幾代都還要美觀很多之外,硬體本身還內建了 Accelerometer 感應器,於是可以做出過去在 iPod Touch/iPhone 上才有的位移偵測功能。用在 Cover Flow (封面選擇模式) 上,倒是讓操作模式變得十分順暢。

另外一個值得稱讚的軟體功能則是「音樂精靈」 (Genius),據說是可以「聰明」的從當下正在聽得音樂選擇出類似的音樂類型,實際上尚未塞入太多音樂,還不知道效果如何,不過至少比亂數播放來的有用多了。

而我最實際會用的功能其實是「影音播放」 (Video),因為電腦已經塞滿了利用 Miro 下載的大量演講/簡報錄影,而我實際在電腦前面收聽演講的時間又太少。於是拿 iPod Nano 來消化 Video Podcast 是我最大的用處,雖然說螢幕只有小小兩吋,根據實際使用的經驗,播放的效果,若是以 Youtube 下載的 H.264/avc1 格式而言,靜態的文字都尚可閱讀,但人物若走動,則會有點模糊。對收聽/收看一般技術演講而言還算夠用。

就 iPod Nano 本身的功能性來講,我其實相當滿意它的控制介面,特別是檔案索引與影像檔快轉,反應跟速度都無法挑剔。跟在我悲苦的 E70 上比起來,簡直是相當完美。可惜的是預設不支援 ogg ,如此我還得把某些檔案轉檔後才能傳到 iPod Nano 上收聽。有點麻煩。據說可以嘗試開放原始碼的 Rockbox,不過 iPod Nano 4th Gen 還不在官方支援之列。

有一個使用問題則是 Linux 上沒有官方支援的軟體,於是試著在 Debian sid 使用上述兩個軟體包含 Rhythmbox 與 Gtkpod,兩個都還沒辦法辨識新款的 iPod Nano。於是查找了一下 Gtkpod 與 libgtkpod 官方郵遞論壇 (gtkpod, gtkpod-user),才知道 subversion trunk 的 libgtkpod 才能支援新款硬體。於是稍微重新編譯了一番,總算是順利的上傳了一些檔案,包含影音檔。

若你使用 Debian 或 Ubuntu ,且洽想測試一下新的 Gtkpod,可以在郵遞論壇上找到其他朋友放出來的檔案,品質有點疑慮,請自行承擔風險。

還不順利的是,希望能夠在 Miro 中直接把下載的 Video Podcast 匯入 iPod Nano,暫時只能逐一拷貝,這樣缺乏檔案與封面的情況下,很難找到想收聽的節目。可以做的作法是利用 libgtkpod 的 Python binding 整合到 Miro 中,如此或許可以作到下載後直接匯入的功能。

實際實做,還得找時間試驗才行。

最近 802.11 無線網路協定中所使用的加密演算協定 WPA 傳出了一些消息,一說可以利用常見的圖形處理硬體加速破解運算速度,另外則是說德國的學術單位研究出 WPA/TKIP 中使用的弱加密方式,足以用以塞入短封包攻擊。

首先是 Slahsdot 上提到俄國的資訊安全公司 Elcomsoft 釋出了一款商業軟體 ElcomSoft Distributed Password Recovery,這款軟體的最大特色是可以利用 NVIDIA圖形處理器來加速猜密碼的時間,根據 Elcomsoft 的網頁說明,運算速度可加快二十倍到百倍。若是搭配大量的硬碟、主機與顯示卡,的確是有機會快速破解 WPA (WPA2)/PSK 阿。

不過 Elcomsoft 號稱有專利申請中,不過社群中早已有人實做可以在 Linux, MacOS 上執行的版本,叫做 pyrit (對,他是 Python 寫的)。最新的開發進度與消息可以在 pyrit blog 上找到。

Slashdot 上另外一則消息,則是說德國的 Erik Tews 與 Martin Beck 成功的「破解」WPA/TKIP 加密方式,即將在 PacSec 會議上發表。不過事實是,他們利用了 TKIP 的弱驗證碼演算法與 802.11e 的漏洞,於是可以將小封包如 ARP 封包重新送入網路中。這個技術並沒有取得無線網路使用的密碼,而入侵者也無法盜用該無線網路。

詳細的說明可以參考原始的論文 – Practical Attacks against WEP and WPA,應用程式 tkiptun-ng 也可於 aircrack-ng 網站上下載。ArsTechnicaGlenn Fleishman 寫了十分詳盡的技術說明 – Battered, but not broken: understanding the WPA crack

由於 PChome 簡訊服務的網頁又改版了,與舊版比起來認證的方式與訊息編碼都作過更改,現在編碼方式改為 UTF-8,而非原本的 BIG5。

為了剩下尚未用畢的額度,改了一版針對目前網頁格式的版本,並稍加修改版次為 0.13。有興趣者以 Perl 編程使用 PChome 簡訊服務者,可於此 http://blog.nutsfactory.net/debian/libnet-sms-pchome-perl/ 下載原始碼與 Debian 套件。

這是 Arjan van de Ven 與 Auke Kok Linux Plumbers Conference 2008 上的展示畫面。

在讀 O’Really 對 Arjan van de Ven 的訪問 How PowerTOP, LatencyTOP, and Five-Second Boot Improve Desktop Linux) 時,知道了在 Intel Open Source Technology Center 工作的 Arjan 在 PowerTop, LatencyTop 上的努力,以及其他開發者如何利用這些工具來改進軟體的效能與品質。

在訪問後段提到了 Arjan 最近在 Linux Plumbers Conference 2008 上的實做展示,Arjan 的簡報中提到了開發的思維態度應該以五秒鐘內開機為目標,不要把加速開機當作目標。同時也不要弄先開機,再做後續處理,造成系統無法使用的暫時性解決方式。應該想辦法把正確的事情作對來加速速度,如開機時以平行執行方式 (Parallel boot) 啟動系統也不是正確的行為。

這樣的論點,當然讓長期使用這種解決方案的開發者不甚認同,像是 MandrivaFrederic Crozat 就跳出來說明過去幾年來各種平行執行的策略,並說明在 EeePC 上碰到的一些硬體問題,經過調整後,可以讓 Mandriva 在 Eee PC 上以 15 秒內開機。

而 Arjan 的作法是將開機分成四個程序,分別是 Kernel, Early boot, X Server, GUI/Desktop。其中除了 Desktop 系統外,其他的程序都只能花用一秒鐘執行!

在核心的主要修改是利用從 RedHat readahead 改來的 sreadhead 加速軟體的檔案載入速度 (上個月我也介紹過 readahead 加速 Linux 開機速度 ? 。另外 sreadhead 的原始碼會在 Moblin Project 釋出) ,並將所需驅動程式先編入核心,關掉 initrd,預先建好 /dev 下需要的 device files, 同時利用新的 asynchronous initcall level 來載入較不重要的核心模組。如此可將核心載入時間壓縮在一秒。

相關的新 APIs 已經丟到 LKML 上供檢閱,希望可以納入 2.6.28 中。

而開機程序 (init scripts) 則還是利用 sysvinit,不用平行執行 (Parallel Boot) 之方法,也不利用 udev 動態產出 /dev 下的檔案,而是先固定寫死。另外雖說 initscripts 都還保持著原本的版本,在此預設也是不執行的。

另外 X Server 則稍加修改了 xorg-x11-drv-intel 顯示卡驅動程式,讓其在偵測硬體時,就一併先進行硬體設定,且修正了一些 PCI posting 的臭蟲。而且修改 XKB 快取 keyboard mappings,因為 XKB 居然會每次開啟時呼叫 C preprocessor 來編譯 keyboard mappings!至於桌面系統則使用輕量的 XFCE,稍加修改讓桌面程式同時執行。

如此如此,讓 Arjan 硬幹出來的版本,讓那天展示的跑在 ASUS EeePC 901 上 FedoraMoblin 可以在五秒鐘內開機!相較於其他在 ASUS EeePC 901 上得套件系統開機動輒要約30秒到一分鐘,的確快了很多。

但是我要一個只有桌面沒有網路連線的機器要做什麼呢 ? 且許多硬幹的方法,必須針對特定硬體作調整,的確不適用一般新安裝的系統。不過 Arjan 的 Fastboot 的確很值得參考使用,另外許多低效能問題的解決方法也都可以採用。希望這些新的研究可以盡快的套用到更多的環境上才是。

對了 Arjan van de Ven 也是 Linux-ready Firmware Developer Kit 的發起人,Linux-ready Firmware Developer Kit 是協助 BIOS/EFI 開發工程師測試的工具,若你是開發主機板或 BIOS/EFI 軔體的工程師,請別忘了下載來玩玩,或許可以避免發生 Foxcomm 前陣子的窘狀

上禮拜才在說自由軟體社群的幾位開發者正在合作修改 Madiwifi HAL 驅動程式。結果週五的時候,為 Atheros Communications Inc 工作的 mcgrof 公告了一個重大的消息,就是將 Atheros 802.11a/b/g 原本私有授權的 HAL 驅動程式以 ISC licence 授權開放出來

於是我們除了有開放原碼的 ath9kath5k 也可以名正言順的參考 HAL 原始碼來實做了!雖說 code base 已經有顯著的不同,但最大的差別就是原本被 NDA 牽制,只能讀改 HAL 原始碼,不能投入 ath5k 開發的軟體工程師,現在被解禁了!:D

如此一來,madwifi 的死期將至

在網路上做研究或查找某些論壇的討論時,你總需要特別查某個網站的資訊,雖然說 Google 已經相當實用,但很多時候你會想要直接利用網站的搜尋功能,免得漏掉某些 Google 尚未索引的頁面。像是必須登入後才能顯然內容/搜尋的網站。

比較方便的方法是將網站的搜尋功能擺進瀏覽器的 Search Plugin,除了在網路上找一些別人已經做好的 Open Search 搜尋外掛外,也可配合工具如 Ready2SearchSearch Plugins Generator 產生出適合的搜尋外掛。

推薦使用 Search Plugins Generator。使用的方法相當簡單,只要使用 “TEST” 當作搜尋字串,並將網站搜尋結果的網址複製,貼上到 Generator 上並為它取一個名字,稍微選擇各種編碼參數,送出 Generator 表單後即可生成搜尋外掛。若你碰到的搜尋網站表單使用的是 POST 而不是 GET,請使用 frmget bookmarklets 將其改為 GET,如此才能取得正確參數。

你也可以瀏覽 Plugin List 來參考安裝別人已經預先建好的 Search Plugin,部份網站亦會內嵌搜尋外掛,此時可點選 Firefox 的 Search Plugin 即可直接匯入。另外一個技巧是你也可修改 Firefox 的 browser.search.openintab 設定,讓新的搜尋預設開啟在新 Tab 頁面,而不是轉導當下網頁。