2014年2月8日

網樂通開發 第2集 - 網樂通上嵌入式Linux

本篇前言:
這篇會先介紹網樂通上的嵌入式Linux,要玩它、修改它,要先知道它哪些可以改。

本篇開始:
所有嵌入式Linux系統都差不多,大致上包括:

  • BootLoader
  • Linux Kernel
  • rootfs
在網樂通上的嵌入式Linux包括如下:
  • BootLoader:u-boot
  • Linux Kernel:Debian Kernel for 網樂通、ArchLinux Kernel For 網樂通、sh4twbox 0.92 Kernel、網友提供2.6.32.59版Linux Kernel for 網樂通...等
  • rootfs:sh4twbox、Debian、ArchLinux
網樂通嵌入式Linux幾個部份的說明:

BootLoader:
網樂通的BootLoader是使用u-boot,這套BootLoader在嵌入式系統上經常被使用。
網樂通內建的RAM是256MB,但不知道為何,官方的u-boot只開放了128MB,
因此網友修改u-boot程式碼,讓網樂通u-boot能支援256MB。
關於刷u-boot,可以參考:

Linux Kernel:
Linux的驅動程式幾乎都相依在Linux Kernel上,
要讓網樂通支援其他硬體,像是usb webcam、usb wifi...等,
Linux Kernel都必須要自己重新編譯。
另外,針對Debian for 網樂通和ArchLinux for 網樂通,
因為本身有一些Kernel module的套件,所以會需要各自的Kernel,
否則一般而言,在網樂通中,Linux Kernel是可以另外編譯,另外支援。

rootfs:
一般所謂的網樂通刷機,指的都是更換rootfs。
所以rootfs實際上指的就是更換成sh4twbox、Debian、ArchLinux...等不同的Linux系統。

各部份在網樂通的位置:
在網樂通的刷機文件中會提到,網樂通需要至少2個分割區,
第1個分割區必須是FAT32,第2個分割區必須是ext2/ext3/ext4,分割區類似如下:








第1個分割區就是存放Linux Kernel的,內容如下:





第2個分割區就是rootfs,內容如下:

















從這裡可以注意到,除了BootLoader外,
Linux Kernel和rootfs都直接按不同分割區放置,很容易可以區分。

更換各部份:
更換Linux Kernel:
如果我們重新編譯Linux Kernel,要更換新的Linux Kernel,
只要將編譯出來的vmlinux.ub直接覆蓋sda1的vmlinux.ub,
重新開機後就會是載入我們新編譯出來的Linux Kernel。
類似如下:









更換rootfs:
要更換rootfs,最簡單的方式就是參考sh4twbox的教學
先將產生的rootfs壓縮打包好,接著按照正常刷機的步驟,
sh4twbox的教學的1.4第2步指定我們自己的rootfs壓縮檔,
它就會幫我們把rootfs解壓縮建立好。


網樂通開發 第1集 - 刷機版本的選擇

這篇開始,我會以網樂通和STLinux為基礎,寫一些自己開發的心得文章,
這篇是第1篇,主軸放在目前網樂通刷機版本的介紹,
因為這系列文章是以開發為主,不會描述刷機的過程,
文章會描述的是如何用網樂通和STLinux進行Cross-Compile,
目標是透過這系列文章,可以將網樂通開發成自己想要的功能主機。

本篇前言:
目前網樂通在網路上文章很多,但有點雜,
我過年前開始玩時,發現有好幾個不同版本的網樂通系統可以刷,
但並沒有太多文章描述這幾個版本有何不同,系統差異在哪。
因此,第1篇目標放在對幾個版本的描述,
在開發時,可以根據目標選擇合適的系統來刷。
這裡要先說的是,ArchLinux我不熟,所以針對ArchLinux的描述並不確實。

網樂通版本:
目前網樂通刷機的版本大致可以分為4種:

  • sh4twbox 0.62版
  • sh4twbox 0.92版
  • Debian wheezy版
  • ArchLinux版

sh4twbox 0.62版:
大本營:https://code.google.com/p/sh4twbox/

sh4twbox系列通常是網樂通第1次刷機的選擇,
事實上,0.92版刷機時用的USB隨身碟本身就是sh4twbox版本。

sh4twbox是以STLinux為基礎的Linux系統,
STLinux則是網樂通使用的SuperH系列處理器廠商維護的嵌入式Linux版本,
sh4twbox是以STLinux 2.3版為基礎修改而成,
目前STLinux2.3已經停止開發,因此sh4twbox也建議不要再使用sh4twbox 0.62版。

sh4twbox 0.92版:
大本營:https://code.google.com/p/sh4twbox/

sh4twbox 0.92版是以STLinux 2.4版為基礎的Linux系統,
是目前原廠正在維護的嵌入式Linux版本。

STLinux設計上就是嵌入式Linux,
相對於ArchLinux和Debian來說,它有幾個優點:

  1. 系統小使用資源少:最直接的就是開機時間比較短,系統運作比較順,反應比較快
  2. Cross Compiler環境:STLinux原廠提供了完整的Cross Compile環境供開發
但相對的它有幾個缺點:

  1. 現成的應用程式少
  2. 嵌入式系統和桌上型Linux環境差異較大

Debian wheezy版:

我個人熟悉的Linux其實是Debian/Ubuntu,但對於Debian在sh4處理器上的支援性,
我真的是覺得爛到爆了。

目前網樂通上,因為有Debian for 網樂通的善心人士協助,
網樂通上的Debian能跟上目前Debian的Stable版本Wheezy版,
從網站上可注意到,
他們現在正努力的讓Debian的下一個版本(目前是測試版)能支援網樂通。

相對於STLinux,Debian wheezy版有幾個優點:
  1. 現成的系統整合較好:像X-Window、幾套X-Window管理器都能順利運作
  2. 和PC版Debian開發環境相同:開發環境相同,開發上比較沒障礙
但它有幾個致命缺點:
  1. 系統大,使用資源多:最直接感受到的就是開機時間長,操作時反應慢
  2. 套件數量少:Debian for sh4的支援性差直接體現在套件數量上,它的套件數量相對於ARM版本就少很多,跟PC版Debian根本沒得比
ArchLinux版:

sh4twbox的作者覺得ArchLinux是網樂通比較好的選擇,因為ArchLinux套件數量多,
又是用PKGBUILD方式針對不同平台build,因此理論上要安裝套件,
只要透過ArchLinux的PKGBUILD就能建立出網樂通版的套件,
並安裝在網樂通上。

但可惜的是,ArchLinux我不會用,
對於PKGBUILD的使用方式以及套件的建立環境不會架設,
於是就.......

因為不懂ArchLinux就不多做評論了,這裡僅列出我刷機後使用時的感覺:
  • 開機速度比STLinux慢,但比Debian快
  • 系統的反應比Debian快

buildroot網樂通系統:
我自己在過年期間,有用buildroot建立過網樂通系統,並成功刷機執行。

buildroot可以簡單的建立出整個嵌入式系統,
DD-WRT、OpenWRT都是以buildroot為基礎修改的,
buildroot系統的優點是:
  • 系統小
  • 速度快
缺點是:
  • 幾乎沒有提供開發環境,只有執行環境
我自己使用的感覺是,buildroot系統比STLinux快,環境更小,
如果是buildroot有提供的功能,像是QT的Transmission。
直接使用buildroot說不定更好,系統資源更省。

我會在Cross Compile環境介紹後,介紹buildroot建立網樂通系統方式。

2014年2月5日

網樂通硬改,更換大容量或高速USB DOM(免焊接)

網樂通內的儲存空間主要是靠USB DOM,
要加大空間或者更換USB DOM網路上都能搜尋到文章,
文章原則上有3類:
  1. 直接用USB隨身碟插在屁屁
  2. 拆機後,把USB DOM的接腳另外焊上USB隨身碟
  3. 拆機後,原來的USB DOM焊接個USB接頭當隨身碟
我的問題:
內建的USB DOM真的有夠爛,
速度慢也就算了,刷一刷竟然被我刷掛了。

我的那個USB DOM死法真的是沒救,
它應該是USB DOM最前面儲存Partition的block壞軌了,
每次重新建立Partition,重開機Partition就消失了,
因此,它無法正常的刷Linux,
所以,我需要更換USB DOM。

因為這個原因,第3種教學文章直接沒用;

第1種作法不錯,但我的目標是Printer Server,
後面的USB需要接印表機,沒辦法用;

第2種作法不錯,但我技術差不想動電烙鐵,
怕下手後沒處理好,反而把元件燒了。

最終我找到了折衷的辦法,也就是我要發的這篇文章的作法。

我的作法:
網樂通上面的USB DOM,
接在板子上的4個pin腳其實就是杜邦端子的公頭,
網路上的教學是,
直接在端子和板子的焊接點上,焊接一個USB隨身碟,
但其實不用,只要自己剪條USB線,
在USB線做出4個杜邦端子的母頭,
就可以直接插入,完全不用電烙鐵焊接。

所需工具和零件:
  1. USB線一條(要有USB母座)(越短越好)
  2. 剝線鉗一把
  3. 杜邦端子接頭數個(至少5個以上,以防失敗)
  4. 4P杜邦端子座1個
  5. 豆子隨身碟1個(可選購4G、8G、16G、32G)
過程:

1. 首先準備一條有母頭的USB線,留下一小段,剪斷它並去皮,如下圖:


 2. 用剝線鉗接USB的4條電線都做好杜邦端子,這部份是最麻煩的,完成品如下圖:

3. 將網樂通上的USB DOM拆下後,最重要的,把它原本的杜邦端子座移除,如下圖:

 4. 將USB線上面的杜邦端子套上杜邦端子座,插上網樂通的端子頭,如下圖:
這裡注意到,一定會有疑問是,線怎麼排列,5V方向在哪?
USB線的順序是(由左而右):
黑 綠  

如下圖所示,
左邊是網樂通後面,右邊是網樂通前面,
電源接頭在左下角,網路接頭在左上角,
此時,USB線的紅色靠下。

5. 完成後,按網路教學用背後的USB隨身碟開機,刷Linux,應該就可以看到新的USB DOM。

網樂通開發文章計畫開始

利用過年期間,把網樂通的開發玩了玩,雖然還沒玩完,
但對於網樂通的STLinux開發有了一些心得,
我想後續應該可以針對網樂通sh4 STLinux的開發寫出大概4~5篇文章。

文章大概會從比較基本的網樂通目前網路上有的Linux Distribution介紹,
大概描述STLinux、ArchLinux、Debian在網樂通上我認為的區別。

接著會把主軸放在網樂通的STLinux如何開發。

如果我的Printer Server順利的話,
最後應該可以以Printer Server為例描述過程。