2012/06/23

再出現?全新回來?

走在台北火車站旁邊的街頭,望見了兩幅廣告。

再出現


全新回來


廣告的目標很明顯,就是要告訴我們中山地下街已經改頭換面了,請舊雨新知前去逛逛。一開始覺得好笑,這什麼標語啊,「再出現」?這是什麼新新新新新新新人類的慣用語嗎?「全新回來」?還是什麼新新新新新新新時代的流行語呢?一般會用「重新開幕」、「重新出發」、「盛大開幕」、「風華再現」、「盛況再臨」、「再造繁華」、之類的標語不是嗎?就算你要搞噱頭耍弄文字,也要有點料有點底子吧?

是我老了跟不上時代看不懂了嗎?還是我的國文造詣江河日下不忍卒睹呢?還是這兩個標語內含深意非我這種LKK、SPP的老傢伙所能理解呢?還是說這其實是廣告手法行銷陰謀呢(你看,我不就寫了這篇文章幫地下街打廣告了嗎)?

我很喜歡的一部漫畫「天才柳澤教授」,他是個經濟學教授,晚上九點一定入眠,走路走直線轉彎要轉九十度;他也深受其擾,常常為了電視上的句子而不解。




其實,不只「再出現」跟「全新回來」,最近我發現還有好多好多句子,我越來越不明白、我越來越覺得奇怪,唉。


語言是活的會變動,但要求新求變的同時,也別忘記基本啊。

2012/06/14

Raspberry Pi的外殼

買了Raspberry Pi板子,除了其他所需配備外,最想要的就是外殼了。

有位好心人士E,分享了他設計的外殼的pdf檔,哇,趕快來試試看。我下載pdf檔列印出來後,先割一割、折一折試試看吧。

下圖是先用普通A4白紙做出來的樣子。


然後用不要的紙箱試試看吧,咳咳,紙箱好像太厚了,不太合身啊。


算了,我的鍵盤手實在太殘了,自從膝蓋中了一箭後更是每況愈下。

下圖是某牌喉糖的鐵盒,不夠大。


下圖是某巧克力紙盒,夠大。


空間太大了一點,還要自己鑽洞,紙盒也沒有保護作用。


還是來看看其他人作的以及專業級要賣錢的外殼吧。

英國女孩用樂高積木作的外殼




底下這個樂高積木外殼,還有Star Wars帝國士兵守衛著


哇賽,手工作的外殼耶,真炫。


adafruit.com設計的外殼


ModMyPi販賣的外殼


www.axiris.be販賣的外殼


www.skpang.co.uk販賣的外殼


http://www.pibow.com/販賣的外殼。



還想看更多的外殼嗎,請到這裡這裡

嗯,手殘的我,是不是該零買些積木組個外殼呢?

Raspberry Pi板子上有個220 μF電容被我弄掉了

哇,真糟糕,一個不小心,居然把Raspberry Pi板子上的某元件弄掉了。

底下是完好的樣子,在左下角,位於USB Micro-B電源插座的旁邊,有個銀色、圓柱形的元件,被我弄掉啦!


嗚嗚,好悲慘啊,我可憐的rpi。


到Raspberry Pi的IRC頻道(freenode的#raspberrypi)求助,補救方法一是焊接,方法二是不管它。

根據Raspberry Pi維基百科的資料, 該元件是個220 μF的電容,當輸入電源不穩有雜訊或突波時,此電容可以過濾掉、保護板子,是個「發生意外時派上用場」的元件,所以只要我的電源供應是正常的,就可以不管它。

我用的電源變壓器是買iPhone附的,如下圖。


嘗試著開機後,還好一切正常沒燒掉,不過還是應該把它焊回去比較好。

2012.12.15更新:
終於嘗試著把電容焊回去,但是原先的電容好小,被我弄壞啦。


焊了一個電解電容,嗯,目前一切安好。

焊的好醜,orz。



參考資料:

2012/06/13

Raspberry Pi相關詞彙

彙整Raspberry Pi(之後簡稱rpi)相關詞彙,記錄並加上簡單描述。若你覺得還應該加上哪些詞彙,請留言告知。

Raspberry Pi Foundation
以前,修習電腦相關課程的學生,多半在家裡就自己玩過電腦寫過程式了,現在,學生們大概只有文書處理與網頁設計的經驗而已;以前,小孩子手上會有可以胡搞瞎搞的機器,現在,家裡電腦可不能讓小朋友弄壞啊。Raspberry Pi Foundation發起人有感於現代孩童與學生離程式設計與電腦科學越來越遠,試圖打造出一台性能夠強又便宜(搞壞不會傷心)的電腦,希望能提昇學習電腦知識的風氣。

raspberry:
原意是水果覆盆子(山莓、樹莓)。簡單講就是個名稱而已,就好像Apple、BlackBerry、水蜜桃姊姊、等等。嗯,電腦界好像滿喜歡以水果命名。

pi:
因為Raspberry Pi基金會屬意以Python語言為主力教學語言,所以取其諧音pi,而且pi又有數學常數π的意思,也跟pie(派)很類似,跟raspberry合起來就變成raspberry pi覆盆子派了。

Linux:
精準地說是指kernel核心的部份,模糊地說是一套作業系統,所以,以GNU/Linux稱呼整套作業系統是比較正確的說法。

GNU/Linux distribution:
distribution通常翻譯成發行套件(也有人翻譯成發行版本),英文簡稱distro,其意思是說:一套作業系統裡面有非常非常多雜七雜八的東西,有核心、驅動程式、各種程式庫、應用軟體、許許多多的設定檔、等等,而將這些東西通通打包好、並且適當地設定後,最終的成品就是所謂的distribution。廣受歡迎流行的發行套件有Ubuntu、Fedora、Debian、Gentoo、SUSE、Mint、等等,琳琅滿目,詳細列表請看維基百科

FSF(Free Software Foundation自由軟體基金會):於1985年創辦的非營利性組織,以支援自由軟體開發運動為主要目標,募得基金主要用來支援GNU計畫。

ARM:
一種CPU指令集架構,若說x86是個人電腦市場的霸主,那麼ARM就是手持行動裝置的帝王了。隨著時間不斷地改良演進,從ARMv1一直到現在的ARMv7(譬如說Apple iPhone 4),而rpi的CPU用的是稍舊的ARMv6架構。

BCM2835、BCM2708、ARM1176JZ-F:BCM2835是Raspberry Pi採用的系統單晶片(SoC,System on Chip)型號,屬於BCM2708家族,但就目前所知,此家族裡也只有一位成員而已。BCM2835包含CPU、GPU、記憶體、等等單元,其中CPU的型號是ARM1176JZ-F。

SoC(System on Chip、系統單晶片):將整個系統放在單一個積體電路基片裡,包含許許多多的元件與功能,雖說在概念上微控制器也符合此定義,但SoC通常用來形容等級較高、性能較強的晶片,一般指可執行Windows或Linux的晶片,通常需再外加記憶體晶片與其他周邊功能的電子電路。

PoP(Package on Package):在垂直方向上,將兩個積體電路晶片疊在一起封裝,形成一個整體,透過標準傳輸介面互相溝通,密度更高。Raspberry Pi板子的主晶片便使用了此種技術,將處理器與記憶體裝進同一個晶片裡。

Debian:著名的Linux發行套件,每個版本以電影玩具總動員的人物命名,4.0是etch,5.0是lenny,6.0是squeeze(三眼異形),7.0是wheezy(戴著紅色領結的企鵝),8.0是jessie(女牛仔)。

Raspbian:
rpi官方目前建議使用的發行套件,以Debian為基礎,版本從squeeze、wheezy到jessie,wheezy是第一個充分利用rpi浮點運算硬體的發行套件,執行速度有極大的提升;jessie的Linux核心從3.x升級到4.x版。

hard float:
Debian要移植到各種架構的CPU上,必須遵循一定的ABI,我們比較熟悉的是i386(32位元的x86)與amd64(64位元的x86),而ARM架構有armel(ARM EABI),Debian 7.0 wheezy將開始支援armhf(加上hard float的ARM EABI),會充分利用CPU裡的浮點運算單元,增進執行效率。

ABI:
Application Binary Interface,任何程式(應用軟體、程式庫、作業系統)之間的低階介面,包括資料型別與大小、對齊形式、函式呼叫規範、如何進行系統呼叫、等等。

Fedora:
嗯,此發行套件的歷史來由,簡單講就是:其前身為Red Hat,後來Red Hat分成公司官方支援的企業版Red Hat Enterprise Linux,以及社群開發的Fedora。

Fedora Remix
Fedora裡只會包含開放原始碼軟體,任何人或組織都可以拿Fedora為基礎,再加入其他軟體(可能非開放原始碼軟體、授權條款可能有所限制、等等),搞出來的東西就叫做Remix。為了與Fedora作區分,所以加上Remix字樣,當然啦,你也可以取個新名稱。

Fedora Spin:
跟Remix不同,Fedora Spin是百分百的開放原始碼,只是將Fedora作了些變化,桌面環境不一樣,預設安裝的軟體不一樣,譬如有KDE Spin、LXDE Spin,另外,有的Spin特別強調遊戲、有的強調科學運算,每個Fedora Spin其實就是不同版本的Fedora,讓大家可以自由挑選適合的。有哪些Spin可選請看這裡

Raspberry Pi Fedora Remix
供rpi用的一套Fedora Remix,由Seneca College開發,在2012年2月29日釋出Raspberry Pi Fedora Remix 14(14的意思是以Fedora 14為基礎),但似乎問題太多不穩定,目前正在開發Raspberry Pi Fedora Remix 17。2013年5月釋出Pidora 18(Raspberry Pi Fedora Remix)囉。

Ubuntu:
非常流行的GNU/Linux發行套件,但它將不再支援ARMv6架構(rpi的CPU架構),所以就沒辦法在rpi上跑了。Pi 2升級到ARMv7,可以跑Snappy Ubuntu Core。

QtonPi
加上Qt SDK的嵌入式Linux開發平台,可在rpi上開發Qt軟體。

Midori:
日文意為「綠」,輕量型瀏覽器。

Epiphany(又名 GNOME Web):
輕量型瀏覽器,以之為基礎,經Collabora修改增強後,作為rpi預設的瀏覽器,取代Midori。

IceWeasel:
簡單講就是Debian上的Firefox,那為什麼要改名呢?因為Mozilla擁有Firefox的商標權並且制定了一套授權條款,另一方面,Debian要求其內含的所有軟體都必須符合一套規範(The Debian Free Software Guidelines、DFSG),此兩者互相衝突,最後只好以改名收場。同樣的情況還有,Mozilla Thunderbird改名為Icedove,SeaMonkey改名為Iceape,Mozilla Sunbird改名為Iceowl。另外同樣的情況還有GNU IceCat,也是從Firefox改名的,算是IceWeasel的同胞兄弟吧。

桌面環境(desktop environment):
指一套視覺化操作介面,包含許多軟體:視窗管理者、顯示管理者、檔案管理者、視窗軟體開發框架、組態設定、瀏覽器、各種應用軟體,有名者為GNOME(標準Debian發行套件所採用的桌面環境,但Debian 7.0 wheezy應會改用Xfce)、KDE、Xfce、LXDE(目前Raspbian預設採用的桌面環境,有修改)、等等。

視窗管理者(window manager):
顧名思義,用來管理畫面上的"視窗",在桌面環境中這是很基本很重要的元件,負責管理各軟體視窗的位置、配色主題,若沒有它,你連移動視窗都做不到。LXDE的視窗管理者為Openbox,Xfce為Xfwm4,KDE為KWin、GNOME為Mutter。

GTK+(GIMP Toolkit):在X視窗系統上開發軟體時,需要一套視覺元件庫,GTK+正是最受歡迎的選項之一,開發出來的軟體有GNOME、LXDE、Gimp、Midori、Pidgin、等等。

Qt:在X視窗系統上開發軟體時,需要一套視覺元件庫,Qt正是最受歡迎的選項之一,開發出來的軟體有KDE、Wpa supplicant、SMPlayer、Konqueror、等等。

SD card image:
映像檔,rpi板子上沒有儲存裝置,以SD記憶卡存放軟體部分,必須使用特殊軟體將映像檔「燒錄」到記憶卡裡,而不是一般的「複製」。以我用的debian那個映像檔為例,燒錄後會有兩個分割區,第一個是FAT32,裝了開機韌體與Linux核心,第二個是ext4,裝了根目錄。rpi官方下載頁面在此

RCA:
Composite RCA(AV端子、又稱複合端子,通常是黃色的RCA端子),rpi上除了HDMI外,還有個RCA端子可接電視(HDMI與RCA同時只能使用其中一個),因為家裡角落可能有不用的電視,拿來給rpi用就能降低花費。

CEA(Consumer Electronics Association)與DMT(Display Monitor Timing):分別屬於不同的視訊顯示標準,CEA通常用於電視,DMT則用於電腦螢幕。

https://github.com/raspberrypi
Raspberry Pi在GitHub的帳號,裡面有linux,為rpi修改後的linux kernel;firmware,rpi的韌體部分;tools,雜項工具;等等。

Raspberry Pi Forum
rpi官方論壇。
其他非官方論壇有http://www.raspberrypiforums.com树莓派论坛element14的rpi群組http://www.rpiforum.net/forum/

Pi Store
Rapsberry Pi官方商店,軟體、遊戲、開發工具、教學指引、刊物。

R-Pi Hub
rpi的維基百科,資料豐富,包羅萬象。

#raspberrypi:
Raspberry Pi的IRC頻道,位於freenode.net,其他人多的還有#raspbian,可尋找"raspberry"找出其他人數比較少的頻道。

MagPi
由rpi社群與愛好者自主設計、編輯、發行的電子雜誌,圖文並茂,值得一看;後已成為rpi基金會的一份子。可參考我寫的介紹。其他雜誌還有PiAddict,要賣錢的。

Raspberry Jam:
由rpi使用者、愛好者、開發者所發起的聚會,跟Raspberry Pi Foundation官方並無直接關係,大家聚在一起閒扯蛋(不是啦,是聚在一起討論分享關於rpi的種種),通常由高手專家們發起,努力推廣rpi,讓新手可以直接問問題,而且,若是在英國,rpi官方人物可能會現身,發表最新進度、測試中的硬體、親自回答各種疑惑。目前發起地區主要以英國地區為主,聽說澳洲墨爾本也有了。譬如說在劍橋的聚會、在曼徹斯特的聚會、等等。可以看看這位仁兄參與曼徹斯特的Raspberry Jam後的感想,聚會中有位13歲的Manchester Girl Geeks,展示了她以Scratch撰寫的遊戲小精靈,哇!若你所在地區沒有這種聚會,何不由你發起呢,詳情可看這篇的介紹

XBMC(XBMC Media Center),後改名為Kodi
開放原始碼、跨平台、媒體管理與播放軟體套件,可播放存在於本地端、區域網路內、網路上的各種影音媒體,因為是開放原始碼,在各平台、作業系統、裝置上都可見其身影。

OpenELEC(Open Embedded Linux Entertainment Center):
以Linux為基礎開發的嵌入式作業系統,含有XBMC、各種遊樂器的模擬器。非常小、開機很快,特別適用於從記憶卡或固態硬碟載入。

Raspbmc
以Debian為基礎,加上XBMC後的極簡派Linux發行套件。到2015年2月,其三年壽命畫下句點,後由OSMC接手。

OSMC(Open Source Media Center):
Raspbmc後繼者。

XBian
以Raspbian為基礎,加上XBMC後特別為rpi量身訂做的發行套件。

Arduino
這是一塊以Atmega微控制器為中心的開發板,有非常多的擴充子板可選用。若跟rpi相比,的確有些許領域是互相重疊的,但視為不同的產品應該是比較恰當的看法。有興趣的可以看看我寫的簡介以及「Arduino與AVR微控制器相關詞彙」。

tty、pts:tty為TeleTYpewriter(電傳打字機)的縮寫,早期連接電腦主機的終端機通常是此種形式,所以簡言之,tty就是終端機的意思,以之簡稱各種類型的終端設備,而pts是pseudo-tty虛擬終端機的縮寫。

shell script:介殼程式(譬如bash、tcsh、zsh、ksh)除了能以互動交談方式讓使用者輸入指令、執行,也有其程式語言的語法,寫出來的程式碼便稱為script,一般來說,都是將系統維護工作、需定期定時執行的任務寫成script,方便後續使用,譬如找出無用的帳號、計算每個目錄佔用多少空間、等等。

bare metal:直翻為裸金屬或裸機,意指跳過作業系統直接以組合語言(或C語言)面對最底層硬體的開發方式。

PoE(power over ethernet、透過以太網路線供給電源):Raspberry Pi現在此功能,但很多人提出要求,所以官方基金會會考慮要不要在後續版本裡加入。

RTC(Real-Time Clock):即時時鐘,在電腦關機後仍可持續跳動,保持正確的日期時間,通常由額外的電池供電。Raspberry Pi板子因成本考量,並無即時時鐘;若有網路連線,系統可在開機後向NTP(Network Time Protocol)伺服器詢問日期時間。

GPIO(General Purpose Input/Output,通用型輸出入):該針腳(腳位)的功能可透過程式軟體在運作時加以控制修改,可具備多種功能,視情況改變。

Ethernet(以太網路):Raspberry Pi板子上的RJ-45網路線接孔,屬於Fast Ethernet(快速以太網路)100BASE-TX標準,向下相容10BASE-T。板子上有個LED,標示為100(或10M)指出網路連線傳輸速率。購買網路線時至少應符合CAT-5或CAT-5e的規格。

Wi-Fi:基於IEEE 802.11無線傳輸標準所製造生產的產品,需通過相容性檢測方能掛上Wi-Fi聯盟認證標示,簡言之,Wi-Fi幾乎等同於無線區域網路(WLAN),也常有人把Wi-Fi視為IEEE 802.11的同義術語

WEP(Wired Equivalent Privacy、Wireless Encryption Protocol):一套保護無線網路資料傳輸的安全機制,但已經被找出好幾個弱點,現今已被WPA取代。

WPA(Wi-Fi Protected Access):比WEP更好的無線傳輸安全機制,由Wi-Fi聯盟所制定,WPA2是較新的版本。在WPA的設計中,可透過一個802.1X認證伺服器散佈不同的認證鑰匙給各個用戶,稱為企業版(Enterprise),也可以讓所有用戶共用同一個密語,稱為PSK(pre-shared key)模式或個人版(Personal)。

AP(Access Point)、WAP(Wireless Access Point):無線存取點、無線網路基地台,讓客戶端電腦(加上無線網卡)經由無線傳輸方式連接上網的裝置,一般無線AP也具備路由器的功能,簡言之就是含有「IP分享器」的功能。

熱點(Hotspot):透過無線基地台提供上網服務的區域。

SSID(Service Set Identifier,服務集標識符):由AP廣播出去的一個識別名稱,一般來說,每一個無線基地台會採用不同的SSID,藉以區分彼此,但多個AP也能擁有同一個SSID提供漫遊服務,或是不廣播SSID,客戶端必須手動輸入名稱才能登入。

DHCP(Dynamic Host Configuration Protocol):動態主機設定協定,前身是BOOTP(Bootstrap Protocol),給內部網路或網路服務供應商自動分配IP位址給用戶,給內部網路管理員作為對所有電腦作中央管理的手段。

群眾募資(crowdfunding),透過網路平台,將您的創意與設計展現給全世界、給一般大眾,解釋產品原型,直接面對消費者並募集資金,這是實現創新點子的新作法,借助社群力量提供資金給個人自造者。國外知名的募資平台有Kickstarter,許多與Raspberry Pi相關的專案產品也在此募集資金。

2012/06/10

Raspberry Pi基本設定、編譯核心、上網

這一篇要記錄一下,Raspberry Pi裝上作業系統並可開機後(我裝的是debian6-19-04-2012.img,可到官方下載頁面取得),接下來該進行哪些設定。

我並不打算將Raspberry Pi(簡稱為rpi)當做獨立的電腦使用,不會接螢幕鍵盤滑鼠,只接電源、網路線、SD記憶卡,目標是讓它成為連上網路的伺服器,可以SSH登入,然後再做其他打算。

我不是linux專家,這篇也不是什麼教學文,只是把我作過的步驟記下來,如此而已,將會很簡略。如果有說錯缺漏的地方,還請留言指教。


首先是一些基本的設定,除了一定要接的SD記憶卡、網路線與電源外,此時還需要把螢幕與鍵盤接上,我不使用X Window,所以不接滑鼠。

開機登入後,會看到如下圖的訊息,建議我們設定日期時間,這是因為rpi沒有即時時鐘,所以斷電重開機後,日期時間的紀錄就會不正確了。可以下指令:
$ sudo date --set="2012-06-07 14:00"
來設定日期時間,不過每次都要手動設定很煩。之後有網路連線後,可以自動到網路上查詢並設定。


對了,記得執行指令
$ passwd
將預設密碼改掉。

接下來要設定locale,出廠預設為GB英國,所以需要修改。下指令
$ sudo dpkg-reconfigure locales
後,會出現下圖。請不要選All locales,那將耗去很漫長的時間。我選了en_US與zh_TW,UTF-8編碼最好一定要選,其他編碼就看你了。
注意,以"空白鍵"進行選取的動作,而不是以Enter鍵。


然後會要我們選擇系統預設的locale,我選了en_US.UTF-8。


當你在打字時,會發現有些鍵打出的字元怪怪的(譬如說打"出現@,打@出現"),這是因為出廠預設的鍵盤對應表為英國用的。請下指令
$ sudo dpkg-reconfigure keyboard-configuration
並選取適當的鍵盤配置。

我選了Generic 105 key。


Keyboard layout部分,先選Other。


然後選USA。


然後選USA。


然後繼續進行鍵盤的設定。
AltGr?這什麼啊,我選No AltGr key。


啥?Comose Key?我選了No compose key。


要不要以Ctrl+Alt+Backspace代表終止X server。我選No。


接下來設定時區,指令為:
$ sudo dpkg-reconfigure tzdata
我住在亞洲Asia。


我住在台北。


然後,我想要新增使用者帳號,並且讓他能使用sudo。以指令
$ sudo adduser yehnan
新增使用者。(注意:請把yehnan換成你的名字。)

然後執行
$ sudo visudo
出現如下畫面,將
yehnan    ALL=(ALL) ALL
放到相似的那幾行底下,將權限賦予此帳號。


以上為一些基本設定,參考資料為
RPi Beginners:講解rpi初次開機後需要進行的一些設定,包括locale、鍵盤、時區、新增能sudo的使用者、等等。
我的 Raspberry Pi 系统配置实战:在命令列下聽音樂、安裝輸入法、掛載USB隨身碟、等等。
Andy Bold的First steps with Raspberry Pi


接下來是讓rpi連上區域網路,這樣我就能拔掉螢幕與鍵盤,透過SSH登入。

首先,我想將出廠預設的主機名稱(raspberry)改掉,以$sudo nano /etc/hostname改掉裡面的名稱,然後以$sudo nano /etc/hosts改掉裡面相關的部份,最後以$sudo /etc/init.d/hostname.sh start更新主機名稱(或是重開機)。

$ dmesg | grep net檢查網路卡驅動程式是否存在,已經內建了,還好,我就不需要操心了。

為了讓rpi加入我的區域網路(我的區域網路裡有一台Windows與一台Mac),以$sudo nano /etc/network/interfaces編輯網路設定,加入如下內容:
auto eth0
iface eth0 inet static
address 192.168.2.8
netmask 255.255.255.0

其中192.168.2.8是我指定給rpi的內部IP。

然後以$ sudo /etc/init.d/networking restart重新啟動網路。

然後可以指令$ sudo /etc/init.d/ssh start將ssh server啟動,但我還希望每次重開機後ssh server都能自動啟動,作法如下(參考資料):
(我使用的映像檔是debian squeeze那個)
將/boot下的boot_enable_ssh.rc改名為boot.rc。

如此即可。

成功後,就能在區域網路內從別台機器以SSH登入rpi了。耶,可以拔掉螢幕與鍵盤囉。

下圖是我在Windows上以Cygwin的ssh指令登入rpi的樣子。只要做好設定(公鑰、私鑰),就能直接登入無需輸入密碼。


接下來要讓rpi上網,最終目標是安裝PPPoE,輸入帳號密碼上網。

我是HiNet的用戶,原本有8個浮動IP,所以我先到http://service.hinet.net/2004/adslstaticip.php申請,改成1個固定IP加8個浮動IP。

首先要編譯Linux核心,主要參考文件為RPi Kernel Compilation,另外,有人也在PPPoE的部份遇到問題,相關討論在這裡這裡

(我本來是在Mac OS X裡安裝VirtualBox,然後再安裝Ubuntu,以此環境編譯核心,但後來發現我不知道該如何把檔案傳到rpi上,所以放棄。)

我是在Mac OS X 10.6.8上編譯核心。

取得rpi修改過的Linux核心原始碼:
$ git clone git://github.com/raspberrypi/linux.git

$ git clone https://github.com/raspberrypi/linux.git

然後要取得.config檔,根據參考文件,可複製arch/arm/configs/bcmrpi_cutdown_defconfig當範本,另一種方式則為取得目前rpi裡使用的.config,啟動rpi後,以指令$ zcat /proc/config.gz > .config可取得,然後再複製到Linux核心原始碼目錄的最上層。

修改.config,加入對PPPoE的支援
CONFIG_PPP_FILTER=y
CONFIG_PPPOE=y
(也可以用m)。

接下來要安裝編譯工具組,首先安裝Xcode,然後要安裝一套GNU ARM toolchain,根據參考文件所說,可用yagarto,但不知為何我裝不起來,另一種方式為安裝MacPorts裡的arm-none-eabi-binutils與arm-none-eabi-gcc。

首先到MacPorts網站, 下載安裝MacPorts本身。然後以底下指令安裝:
$ sudo port install arm-none-eabi-binutils
$ sudo port install arm-none-eabi-gcc
這些是GNU ARM toolchain。

參考文件說若發生"找不到elf.h"的錯誤訊息,就需要進行底下步驟:
$ sudo port install libelf
$ sudo ln -s /opt/local/include/libelf /usr/include/libelf

然後到這裡下載elf.h,到這裡下載elftypes.h,將這兩支檔案放進/usr/include,編輯elf.h檔加入如下內容:
#define R_386_NONE        0
#define R_386_32          1
#define R_386_PC32        2
#define R_ARM_NONE        0
#define R_ARM_PC24        1
#define R_ARM_ABS32       2
#define R_MIPS_NONE       0
#define R_MIPS_16         1
#define R_MIPS_32         2
#define R_MIPS_REL32      3
#define R_MIPS_26         4
#define R_MIPS_HI16       5
#define R_MIPS_LO16       6

如此一來,核心原始碼ok了,工具部分也ok了。接下來要進行編譯了。

下指令讀取.config組態設定。
$ make ARCH=arm CROSS_COMPILE=/opt/local/bin/arm-none-eabi- oldconfig

下指令進行建置(編譯、連結、等等)。
$ make ARCH=arm CROSS_COMPILE=/opt/local/bin/arm-none-eabi-

成功後在arch/arm/boot裡會出現Image。

然後下指令產生出模組。
$ mkdir /tmp/modules
$ make ARCH=arm modules_install INSTALL_MOD_PATH=/tmp/modules

參考文件說rpi新版韌體可以直接吃Image,我不知道我的rpi的韌體部分是新的還是舊的,所以採用比較保險的方式。

下載轉檔工具:
$ git clone git://github.com/raspberrypi/tools
or
$ git clone https://github.com/raspberrypi/tools

在裡頭的mkimage子目錄下有支工具imagetool-uncompressed.py(python腳本檔),以底下指令把Image轉成rpi可用的kernel.img。

$ python imagetool-uncompressed.py path/to/linux/arch/arm/boot/Image

完成了,接下來就是把kernel.img放到記憶卡/boot(第一分割區)裡,把模組部分放到記憶卡根目錄(第二分割區)的/lib/modules裡,如此即可。

(其實這部份我搞了好久,參考文件使用sshfs的方式,於是我為了在rpi上安裝sshfs,於是需要安裝FUSE,連帶地還要安裝pkg-config,而且太新的0.26還不行,必須裝0.25,然後還要安裝glib,最後終於有了sshfs後,用起來怪怪的,雖可掛載,但卻不能進入目錄裡,哇哩咧。最後以scp複製檔案的方式完成。)

重新開機確定核心支援PPPoE後,安裝底下兩支軟體,
pppdrp-pppoe,作了些設定,將帳號密碼填入後,耶,可以上網囉。

下圖是從Windows的Cygwin以ssh指令登入rpi後,再以telnet指令上ptt.cc,嗯,亂碼。


還好,若以PieTTY登入rpi,然後再以telnet上ptt.cc,哇,中文正常顯示囉。


有網路連線後,我用的映像檔(debian6-19-04-2012.img)預設會啟動NTP daemon,它會自動去網路上抓日期時間,太好囉。

PS:rp-pppoe詢問我DNS伺服器的IP address,覆寫了/etc/resolv.conf。我以$sudo nano /etc/resolv.conf編輯,把我想要的設定寫回去,各家ISP的DNS伺服器的IP address,到網路上找一找就有,譬如說,HiNet的為168.95.192.1與168.95.1.1,或是也可使用OpenDNS的208.67.222.222與208.67.220.220。


參考資料:


後話
你一定覺得我寫的很簡略,orz,我搞了好久頭昏眼花,也沒有詳實記錄每一步驟的細節,如果各位高手發現我有寫錯缺漏的地方,還請不吝指教。

2012/06/09

Raspberry Pi:使用GParted調整SD記憶卡分割區的大小

2012.07.18更新:新的Raspberry Pi官方推薦的發行套件Raspbian(2012-07-15-wheezy-raspbian.zip),第一次開機後便有選單讓你調整分割區大小,也就無需額外使用其他工具了。

Raspberry Pi官方提供的映像檔燒錄到SD記憶卡後,會有三個分割區,第一個是FAT32,裝了開機韌體與Linux核心,第二個是ext4,裝了根目錄,第三個是Linux的swap記憶體置換空間(我用的是debian那個,不保證其他的情況也會一樣)。目前官方提供的映像檔大小在2 GB以下,所以SD記憶卡還有很多未使用的空間,這篇內容就是要以GParted這支工具軟體調整分割區大小,將這些未配置的空間拿回來。

注意:調整分割區是危險的動作,最好先作備份,並且確定你的確了解要作的事情是些什麼。

GParted的全名是Gnome Partition Editor,顧名思義就是分割區的編輯器,必須在x86的電腦上運行。

首先到GParted網站下載,我用的是GParted Live CD,要燒錄到光碟裡,然後以光碟開機,再對讀卡機裡的SD記憶卡進行編輯。

其他方式還有:燒錄到USB隨身碟(若你的電腦支援USB開機的話)、或是灌到硬碟裡、或是你本來就有Linux的話就直接安裝此軟體吧。

將記憶卡放進讀卡機插入電腦的USB埠後,以光碟開機,會看到如下畫面,我選了最上面的一般設定,若無特殊需求(譬如說想退出GParted Live CD放入別張光碟片)選此選項即可。


然後會問你一些問題,鍵盤對應(keymap),我選了Don't touch keymap,語言,我選了US English。
最後有0、1、2可選,我選0直接進入視窗介面。1為手動進行一些X Window的設定,2為進入命令列模式。


看到GParted的畫面後,從右上角選擇想要編輯的裝置,注意不要選錯了,萬一不小心殺掉硬碟的資料那就欲哭無淚了。我的SD記憶卡容量為8 GB,也就是下圖的/dev/sdd。我電腦裡已經有三台SATA硬碟(sda、sdb、sdc),所以記憶卡是sdd。


接下來就是動手調整各分割區了。

/dev/sdd1不變。

選/dev/sdd3(linux swap),按Resize/Move,將這個分割區整個移動(拉)到最右端(最末端),大小不變。

選/dev/sdd2(ext4),將它的大小調到最大。

完成後如下圖所示,此時這些更動尚未套用到記憶卡上,你可以在畫面下方看到GParted將你的動作記錄了下來。


按下Apply,這個時候就真正會進行編輯變更了,泡杯茶吧。


下圖是完成後的樣子,就算你的記憶卡跟我一樣號稱是8 GB,但真正的容量通常都會有些差異,所以你完成後的樣子跟我的並不一定會一樣,各分割區之間可能會有小小的間隙。還好,對8 GB來說,這些1~2 MB的小間隙無關緊要。


完成啦,ext4根目錄變大了,可以塞入更多軟體囉。


參考資料:

2012/06/02

Raspberry Pi開箱文

不知道Raspberry Pi是啥東東的朋友,可以先看看我寫的簡介與翻譯的FAQs

早在2月29日Raspberry Pi就開賣了,但那一批產量只有10000片板子,供不應求、想買都買不到啊。等啊等、盼啊盼,好不容易終於到我了,RS Components在5月17日終於來了一封email告訴我可以下訂單了,估計3個禮拜會送到,等了2個禮拜到手囉,耶!(花了美金$35加運費$8.02,共$43.02。)

想買的人可以到這裡查一下,看看台灣地區應該去哪個網站購買。

收到包裹囉,飄洋過海來到我家。


包裹裡頭就是一個小箱子。


箱子裡頭有兩張沒啥用的紙。一張寫著其他需要準備的配備,詳細情形可以參考我寫的這篇,另一張寫著安全規範與使用警告。




除此之外,盒子裡就是Raspberry Pi板子了(以及兩塊泡綿與絕緣袋)。


Raspberry Pi很小,號稱只有信用卡的尺寸。拿來跟悠遊卡與Arduino Uno板比一比吧。


這就是Raspberry Pi啊,板子上印了raspberry的水果圖案。


這是背面,右邊那要裝SD記憶卡。


畫面中下方是HDMI插座。


左邊是一般的3.5 mm耳機插座,中間是Composite RCA(AV端子、又稱複合端子,通常是黃色的RCA端子),右邊是GPIO排針。


左邊是以太網路RJ45埠,右邊是兩個USB埠。


右邊那小小的USB Micro-B插座,由這裡注入電力。


搞混了嗎,那就看看下面這兩張示意圖吧。




好了,別廢話了,趕快動手吧。首先到官方網站作業系統映像下載頁面下載,目前列出來的有Debian(官方推薦)、Arch Linux、QtonPi可選,也可以到這裡看看其他可用的作業系統。

燒錄映像檔後(我用的是debian6-19-04-2012.img),SD記憶卡會有兩個分割區,第一個是FAT32,裝了開機韌體與Linux核心,第二個是ext4裝了根目錄,第三個是Linux的記憶體置換空間(swap)

然後把其他配件設備裝一裝插一插(根據官方建議,顯示器的插頭與SD記憶卡體,最好在連接電源前就接好,而且,最好不要在有連接電源的狀態下插拔。)。


哇,開機囉。


呵呵,還秀出好吃的raspberry圖案啊。


第一次開機會比較久,要進行一些只做一次的初始化動作。


中途會自動重開機一次,根據下圖的訊息,若沒辦法自動重開機,就請您自己手動囉。


看到login:囉。不同的作業系統與映像檔,已經預先建立了不同的帳號與密碼,請到剛剛的下載頁面查詢,然後就可以登入囉。


剛剛登入的是tty1,也可以用Ctrl+Alt+F1~F6切換到其他的主控台。


看到提示字元後可以下startx指令執行圖形介面的X Window。


我覺得速度有點慢,不知道是不是我的SD記憶卡的問題。


成功啦,終於啊,感動的想哭耶(等這麼久也很想哭)。

其實呢,Raspberry Pi就是一台電腦,裝上了Linux後,就隨你想怎麼玩囉。