身為一個熱愛使用各種開放原碼韌體的開發者,我一直很關注各種可以應用第三方韌體的網通硬體產品。若要說起非官方韌體,最早的開放原碼社群起源之一就是 Linksys 的 WRT54G 系列產品。若你也曾尋找類似的產品,你會知道 Linksys WRT54G 一直都是最多開放原碼韌體支援的平台,而且可以採購特定版號 (v2 到 v4) 間的產品,因為這幾款早期的產品,尚未受到後來產品縮減成本的壓力,記憶體與快閃記憶體等硬體資源較多,容易安裝功能強大但佔用較多記憶體的第三方韌體版本。

雖說這款產品已經在市場上流通相當久,其中原廠的早期硬體版本早以斷貨。但是在拍賣網站或中國市場依然可以找到大量的早期硬體版本,甚至是裸版,價格有點渾亂,從接近原廠售價到幾乎是 BOM 成本的價格都有,數量不限。若稍微仔細查看,會發現產品上面的序號欄位是空白的,甚至沒有原廠品牌。原來這是傳說中仿冒原廠電路板與外觀設計的山寨版路由器。

令人聯想的是,為甚麽一般的 SOHO 家用等級無線路由器產品,技術門檻顯然比手機低許多,但卻沒有演化出同山寨手機一樣的複雜多樣性市場,反而更多還持續行品牌仿冒、產品複製的山寨老路。

筆者想主要的因素恐怕是毛利率與網通單調產品的特性。網通產品同手機不同的是,消費者不因為不同的外觀,或功能性潮流更換設備,許多網通設備都是安裝之後,在硬體故障前都不會進行異動或升級,除非需要有納入新技術的需求,如轉換至 IPv6 或 802.11n 等,才會考量因相容性而進行產品升級。

即便廠商在有限的變化中極力追求產品差異化,設計不同的外型,或特殊的韌體功能,但是相對太多多樣性的產品,也會造成製造、庫存等運營成本提高,利潤跟銷售量不見得會因此提昇。最終,能夠影響銷售量的,還是端看行銷資源的投入多寡。

於是這些中國山寨網通設備製造廠商,除了為其他自有品牌商代工外,最有穩定的利潤莫過於重複製造一些具備固定市場的特定模組產品。這些設備的固定族群來自進階使用者與系統整合商。以 WRT54G 而言,網路上有許多開放原碼的韌體系統,包含了 OpenWRT, DD-WRT, HyberWRT (已停止維護) 等,都支援此硬體平台。因此進階使用者或小規模系統整合商,甚至是無線網路分享社群,都有機會客製化自己的功能,並可以調整一些在原廠韌體中不予開放的選項,適用於不同的需求與應用。
Continue reading

X200 入手之後,基於某種固執的看法,不裝 X86_64 (amd64) 而裝了 IA32 (x86) 版本的 Debian sid,且為了擴增的 4G 記憶體,換裝了啟用 PAE2.6.28 核心。

雖說 2.6.28 中,已經納入了 GEM Memory Manager for GPU memory,不過由於啟用 PAE 後,記憶體傳址的相容性問題,造成 GEM 被關閉,無法使用。若此時執行 glxgears,系統會同你抱怨 ‘Failed to initialize GEM.  Falling back to classic.’

我所使用的 Thinkpad X200 上所使用的顯示晶片組是 Intel GM45 (4500MHD),用 lspci 顯示的訊息是

00:02.0 VGA compatible controller [0300]: Intel Corporation Mobile 4 Series Chipset Integrated Graphics Controller [8086:2a42] (rev 07) (prog-if 00 [VGA controller])

照理若因為無法啟用 GEM 而造成無法利用 EXA 加速的話,Xorg 的 Intel 驅動程式會改用 XAA,不過實際上似乎是完全只用軟體作描繪,因此速度奇慢無比。除了一般的桌面軟體反應緩慢外,時常使用 Firefox 瀏覽網頁時,Xorg 會吃滿 CPU 資源。甚至,開啟某些含有大量表格的網頁時,Firefox 甚至會停止反應好幾分鐘。

為了改善顯示效果,我試著升級了 Xorg (1:7.4+1), xserver-xorg-video-intel (2:2.7.0-1), libdrm2 (2.4.9-1), libdrm-intel1 (2.4.9-1) 等軟體套件。同時為了可以充分利用記憶體,於是裝了 linux-image-2.6.29-1-amd64 核心,但系統部份 (userland) 依然沿用 IA32,重新開機後一般的應用程式執行上沒有太大問題。

改用了新的核心後,預設使用 EXA 效率上比錯用 PAE 核心的狀況好很多。有些人測試 UXA 說有些問題,但是我改用 UXA 後,特別是 compiz 的速度改善相當多,用 compiz benchmark 大約是 144 fps. 使用 Firefox 時網頁繪製的速度也快多了,Xorg 相對的只佔用少量的運算資源。順道測試了 KMS 的效果,很遺憾的結果是開機後一片漆黑,只好暫時打消玩弄超絢麗 Plymonth 的念頭。

你若也想測試一下新的驅動程式,目前在 Debian Sid 中,都可以找到上述的軟體版本。剩下的只是稍加修改一下系統設定,主要是 /etc/X11/xorg.conf 中的 Device 一節,如使用 UXA 則改為

Section "Device"
... omitted ...
Option          "AccelMethod"   "UXA"
... omitted ...
EndSection

若用 EXA 則是

Section "Device"
... omitted ...
Option          "AccelMethod"   "EXA"
# Option          "MigrationHeuristic" "greedy"
... omitted ...
EndSection

其中 MigrationHeuristic 之設定據聞在舊版 Intel 驅動程式中可以加速顯示速度 (但也可能引起其他問題),你可以依照自己的版本增改。由於搭配的驅動程式版本、設定眾多,且不同的搭配,所造成的優劣各有不同,並沒有一個最佳的設定,因此在此不多加說明我個人的測試。在 Phoronix 上的 Does A Greedy Intel Driver Improve Performance? 做了相當詳盡的全方面測試,若可參考文中的數據。你若使用不同的顯示卡,而想嘗試 EXA 的效能,請參考 Intel Graphics DriverExa Status 一文來了解你的顯示卡支援程度。

在測試過程中,我也修改了其他的設定,主要是為了同步垂直掃描頻率的問題。可以利用 DriConf 更改了同步垂直掃描頻率 (vblank_mode) 的設定,我的系統預設設定是開啟的,這種狀態下啟動 glxgears 後,系統會出現 ‘Running synchronized to the vertical refresh.  The framerate should be approximately the same as the monitor refresh rate.’ 只會得到 60fps,必須關掉後才能得到數據。此外,我也更改了 Compiz 中的 sync_to_vblank 設定,可以在 CompizConfig Settings Manager 的 /General/Display Settings 設定。

整個效能測試過程中,我用到了幾個測試工具,包含了

  • sysprof 可以用來觀察設定前後,Xorg 與 Firefox 的資源佔用比例。
  • x11prefgtkpref 來測試 2D 的繪圖效能。
  • Compiz Benchmark (包含在 compiz-fusion-plugins-extra 中),用以測試 3D 的繪圖效能。
  • PeaceKeeper 用來測試 Firefox 的顯示效能。

若想進一步了解本文中大量使用的縮寫意義,請參考 Pavel RoitbergEXA, UXA, DRI, GEM, TTM 一文。

去年年中試用過 Adobe AIR for Linux beta 後,從去年年底 Adobe 發行1.0 正式 版,一直都沒有安裝新版。剛剛又再度試玩一下,比較有趣的是,Adobe AIR 跟系統本身的軟體套件管理系統高度整合,例如你裝了一個新的 Adobe AIR 軟體時,他會自動封裝並安裝成 dpkg ,於是你若使用一般的套件軟體管理工具如 aptitude / synaptic 也可以移除 Adobe AIR 軟體。

之前提到的 Adobe AIR XIM 問題已經修正 (當初回報的論壇文章已經被刪掉 ?!),至少在 twhirl 下可以正常輸入中文,不過一併測試了 Balsamiq Studios 的好用軟體打樣工具 Balsamiq Mockup,結果發現這個工具還是無法接受 scim 的中文輸入,真可惜,只好繼續用英文設計版面。相較於其他的軟體版面打樣軟體,Balsamiq Mockup 算是最直覺簡單的一套,而且隨便拉一拉做出來的成果還算美觀,有手繪筆記的風格。在 Mockups To Go 上,還有不少人分享設計樣板可供參考。

若是想嘗試更多的 Adobe AIR 軟體,Adobe 建了一個 Marketplace,可以直接下載安裝不同的軟體,許多軟體都是免費授權使用的。

終於,Adobe Reader Unix/Linux/OpenSolaris 跟 Adobe Reader Windows 作業系統的最新軟體版版號相同了,長久以來在 Unix 平台上只能用慢好幾版的彆腳版本。終於新版的 Adobe Reader 9.1 在上個月底發行,Linux 使用者可以於此下載頁,下載安裝程式與 Font Pack (Font Pack 可以讓你開啟特定編碼的文件). 根據目前已知的安全問題,建議你升級到 Adobe Reader 9.1。

雖說自由軟體社群中一直有  PDF 閱讀軟體的開放原碼替代品可以免費下載用,不過有商業公司持續維護的軟體也是一個很好的選項阿。新版的 Adobe Reader 除了修了不少問題,開啟速度加快很多,支援 Tab 瀏覽外,還支援了 PDF Portfolios 等功能。

若使用 Debian 系統,也可透過 debian-multimedia 安裝已封裝的 Debian package. 請根據你的套件系統版本,加入 apt source,然後以 apt-get install acroread 安裝之。

話說最近換了新的 Thinkpad X200,剛拿到換裝了 Debian Sid 後,發現一個問題,重度使用的休眠功能在第二次喚醒時,系統只亮了一下硬碟燈號,然後就停止了。必須重新「冷」開機後,系統才會恢復正常。

之前查找了 ThinkWiki 還沒有人說明這類休眠的問題,而且硬體在第一次重新開機時,是絲毫沒有問題的。心中一直懷疑是某個軟體/硬體元件出了問題,怎麼會休眠一次就失敗 ?

於是便開始從 GNOME PowerManager 一路查到 halpm-utils (README.debugging, /var/log/pm-suspend.log)。然後配合 Documentation/kernel-parameters.txt 與 Documentation/power/basic-pm-debugging.txt 文件中說明的方法,重複開關機,試用不同的 acpi 參數,絲毫看不出端倪。重開機前後,acpidump 與 dmidecode 的資料大同小異。

再瞎子摸象的鑽進 kernel acpi driver 翻找,也將 DSDT 轉成 ACPI Source Language (ASL) 來檢查,kernel 也上了 ACPI DSDT in initrd patch。差點就要開始讀 Shaohua Li 在 Linux 內核開發中文社群上寫的一篇 ACPI 除錯的技巧中的延伸參考訊息。

結果才在 bugzilla 上發現有人回報了類似的問題 Bug 11963 – S3: second resume fails unless BIOS “Intel TXT Feature” disabled。我的症狀跟回報人一模一樣,只要將 Intel TXT (Trusted Execution Technology) 關閉,系統就可以隨意的休眠、喚醒。

我手上的這台 Thinkpad X200, 使用的是 Intel Centrion 2 vPro,依照 Intel 的新聞稿vPro (白皮書) 包含了 Trusted Execution Technology, 改良型系統防禦過濾器, 信任機制代理程式, 主動式管理技術 等等。從展示中,你可以看到 vPro 提供了強大的管理能力,資訊管理人員可以遠端的開機、收集資訊,使用 remote console 修復作業系統問題,甚至可以抓小偷 (Anti-Theft Technology)

而造成我的問題的是 TXT,TXT 的功能是用於保護虛擬機器中的資訊,藉由 TPMSME 指令集的運用,可以避免虛擬機器開機時的記憶體或儲存資料被竊取。

Intel 為了此功能開發了一個開放原碼的 tboot (Trusted Boot) 專案,可搭配 Xen 使用,Intel 的 Joseph Cihula 在 Xen Summit November 2007 時分享了一份關於 Trusted Boot 的簡報 (Trusted Boot:  Verifying the Xen Launch)

不過對我這種個人使用者來講,真是可怕到了極點,根本是一台內建後門的筆記型電腦。既然這些功能會影響我休眠,不如一股腦全把他們關了。或許我該寫封信問問 Joseph 看看他是不是知道為什麽 TXT 會防止我重新開機。

話說這台新電腦真是多災多難,最早拿到的時候,試玩新硬體,前後嘗試 Windows Vista 會頻繁出現藍屏當機,心想這大約是正常的Vista 該死問題。結果裝了 MacOS 也會 Kernel Panic,這才開始覺的真有問題。前後用微軟的記憶體測試程式Memtest86+ 測試,才證明廠商贈送的 2G 記憶體有問題,多浪費了許多時間。

警告: 本文所說明之內容僅適合進階使用者應用。未經適當使用,可能會造成系統無法正常運作。

不知道有多少人計算過,其實在你的 Linux 檔案系統中,有不少重複的相同檔案。特別是圖檔、說明文件與修改說明。若是拿將檔案整併,應該可以省下些空間。

於是 Julian Andres Klode (chf) 參考 hardlink.py 的概念寫了一個 hardlink 工具,這個工具會幫你從指定的目錄中找出相同的檔案,以 Hard Link 的方式將多份檔案刪減成一份,如此便可以節省硬碟空間。白話一點說明就是刪掉多重檔案的儲存空間,在檔案系統的目錄中新增一筆連結資訊到同一份儲存位置。

我試著對我的 Debian Sid 上的 /usr 下達這個指令,共找到 11391 個檔案,省下大約 135 MiB 的空間。

由於 Hard Link 的本質特性,此指令只能用在同一個分割區下,建議不要對全系統下此指令。此外,若已經被 “hard link” 過得檔案分屬不同的軟體,未來若升級軟體時,可能會覆蓋掉共用的檔案而造成軟體無法運作,這點風險請自行承擔。建議使用在較少更新的 Debian Stable 版本。

軟體可透過 apt 或於下載。