2007年12月25日 星期二

檸檬紅茶開發首部曲

這時候肯定又要有人跳出來說話了。明明這個blog的名字、Domain Name是紅茶Blacktea,這又跟檸檬紅茶有啥關係?

喔,簡單的說,紅茶裡面加點檸檬,就是檸檬紅茶了。加了奶,我們就說是奶茶,如果再來點珍珠,這就是珍珠奶茶了。所以說紅茶比較偉大,檸檬不算什麼。而且檸檬不可以跟奶一起攪和,這就是三種茶的基本定位。

咖啡四誕生過程血淚史 三部曲

盧卡司拍到星戰三部曲之後,意猶未盡的加拍三部前傳。為的大概是要滿足那句話 Look! I'm your father. (謎之音:人家是說Luke,不是look吧...)不過在這裡的三部曲,我可不希望有人莫名其妙叫我爸爸。

用"老舊破敗華榮殘"電腦安裝FreeBSD是一件痛苦的折磨,電腦跑的慢痛苦,坐在螢幕前苦苦等待的你也痛苦,一看螢幕百氣生,再看機殼斷腸魂。何必如此互相煎熬呢?

所以這很簡單,找一台夠快的電腦,然後一路灌到編譯核心後,拔下硬碟,插回到老電腦上。因為在這個案例裡,將不會有接觸到任何GUI,包括X window(注意! Windows被M$註冊為商標,所以其他的window不可以加s)。

於是我把硬碟裝在我的工作的P4 NorthWood 2.4GHz + 1G DDR上,這樣跑起來的速度絕對比C3 800MHz快不只四倍。後來事實證明確實很快,至少省三小時。

安裝FreeBSD的方法看官想要學,可以買本黑皮書,或者是看看這本線上書籍。裡面還有圖片解說,以及BBS架站的硬碟格式化參數供參考。不然你也可以找原文的HandBook,保證痛不欲生。

安裝FreeBSD基本上沒有啥技巧可言,就是切割硬碟需要一點小小的智慧。我也不敢說自己很行,只是把自己的現在數據列於下

Filesystem               Size    Used   Avail Capacity  Mounted on
/dev/ad0s1a              496M    100M    356M    22%    /
/dev/ad0s1e              4.4G    1.9G    2.1G    47%    /usr
/dev/ad0s1d              1.9G    103M    1.7G     6%    /var

基本上我是預留不少空間,免得突然間系統爆了。而且/usr只有切割4G如果是以有安裝X window的系統,肯定會爆炸。因為如果你嘗試編譯Xorg或Gnome,你至少需要4G的Free Space,而不是只有切4G。我就曾經因為這樣被炸飛....整個/usr出現使用量106%,還好在那一刻編譯完成,進入make clean。

至於/var切這麼大,純粹只是想偷懶,不想哪天日誌檔塞爆時,有人打電話來胡亂抱怨。反正我放的是顆40GB的硬碟,才用這一點點空間作主系統,不過分吧?!

接下來第一件事情,就是重新開機。這階段保證不會出錯。下一步我是先編輯/etc/make.conf

CPUTYPE?=c3    #VIA C3
SUP_UPDATE=     YES
SUP=    /usr/bin/csup
SUPFLAGS=       -4 -L 2 -z
SUPHOST=        cvsup.tw.freebsd.org
SUPFILE=        /etc/cvsup/stable-supfile
PORTSSUPFILE=   /etc/cvsup/ports-supfile
#SUPFILE=        /usr/share/examples/cvsup/standard-supfile
#PORTSSUPFILE=   /usr/share/examples/cvsup/ports-supfile
#DOCSUPFILE=     /usr/share/examples/cvsup/doc-supfile
MASTER_SITE_BACKUP?=    \
ftp://ftp.tw.freebsd.org/pub/distfiles/${DIST_SUBDIR}/\
ftp://ftp2.tw.freebsd.org/pub/FreeBSD/distfiles/${DIST_SUBDIR}/\
ftp://ftp7.tw.freebsd.org/FreeBSD/distfiles/${DIST_SUBDIR}/\
ftp://ftp8.tw.freebsd.org/OS/FreeBSD/distfiles/${DIST_SUBDIR}/\
ftp://ftp9.tw.freebsd.org/FreeBSD/distfiles/${DIST_SUBDIR} MASTER_SITE_OVERRIDE?=  ${MASTER_SITE_BACKUP}
USA_RESIDENT=   NO
NO_ATM=true                # do not build ATM related programs and libraries
NO_BLUETOOTH=true          # do not build Bluetooth related stuff
NO_GAMES=true              # do not build games (games/ subdir)
NO_I4B=true                # do not build isdn4bsd package
NO_INET6=true              # do not build IPv6 related programs and libraries
#NO_SENDMAIL=true           # do not build sendmail and related programs
NO_RCMDS=true              # do not build or install BSD r* commands (rsh, etc).

然後把/etc/cvsup的檔案就位後,進入/usr/src,進行make update
這樣就可以同時取得最新程式碼(也不最最最新啦,但比光碟新)與ports tree,因為下一步我馬上就安裝新ports。用FreeBSD最大的爽快感,就是取得軟體並且手動編輯超容易,只要靠著make與port tree,就可以與tarball揮揮手。

第一個安裝的是Perl,其實這是看in2的blog學來的,原因不贅述。其實我習慣把安裝過程丟去別的檔案,等執行結束,再去看成功與否。

cd /usr/ports/lang/perl5.8;make install clean > ~/xxx.log &

這樣我只需要tail ~/xxx.log就可以知道現在跑到哪裡了,萬一出現Error Code也有完整的紀錄。

再來就是編譯新的作業環境與核心

依據說明,要先

cd /usr/src

然後輸入

make buildworld

在這段空檔(其實也不短,可能從半小時到七個半小時不等),你可以去先編寫新的核心設定檔,在此不敘述這段。因為這工作實在太漫長,你會很希望電腦做完的時候提醒你一下,因此有個小技巧,就是善用主機板上內建的喇叭,就是那個只會逼逼叫的蜂鳴器,現在就派上用場了。

如果你要使用這項裝置(/dev/speaker),你要先載入這驅動

kldload speaker.ko

然後系統就會出現/dev/speaker,接著你只要把任何字元丟進去,就會聽到電腦叫。

echo /a > /dev/speaker

不過這命令太長串了,所以把它alias一下

alias beep 'echo /a > /dev/speaker'

接下來只要下

make buildworld > ~/xxx.log ; beep &

那麼打完收工時,電腦就會提醒你了

cd /usr/src/sys/conf/i386 ; cp GENERIC CAFE4; vi CAFE4

之後等make buildworld完成,就可以編輯核心

make buildkernel KERNCONF=CAFE4 > ~/xxx.log ; beep &

等編輯完,就安裝新核心

make installkernel KERNCONF=CAFE4 > ~/xxx.log ; beep &

裝好新核心,就可以重新開機測試,如果一切順利,沒有搞錯太多嚴重的錯誤,通常都可以獲得一些改進。那麼接下來就安裝剩下的整體環境。首先要降到單人使用模式,只要shutdown now就可以了。接下來就是

cd /usr/src ; make installworld

跑完以後,再使用合體大師來把新舊系統的設定檔合體,就像悟空與達爾合體一樣。

cd / ; mergemaster

合體大師很強的,通常都是按i安裝,只有一些例外最好不好按i。比如說/etc/master.passwd /etc/group /etc/rc等有修改過的檔案。

合體完成後,打入exit重新回到多人模式,就完成這一升級的輪迴。

不過這台CAFE4的系統硬碟就要移回去C3 800MHz的小心臟,還需要一點改變。因為這台主機是半高式的機殼,只能插Low profile的PCI卡,所以插顯示卡在上面真的很奇怪,加上鍵盤不見得好插。所以要改用Serial Console,也就是用背後的COM Port作為輸入輸出,這樣就不需要鍵盤與螢幕(廢話!人家本來一開始的時候,機器就沒有這些東西....首部曲都有說)

要達到這樣高級的境界,請參閱FreeBSD HandBookSerial Communications章節,該章非常的長,但是總結起來只有兩句話:
第一,你要有一條Null Modem Cable,光華商場電子材料行有賣。
第二,修改/boot/loader.conf

echo 'console = "comconsole" '>/boot/loader.conf

以及vi /etc/ttys



ttyd0   "/usr/libexec/getty std.9600"  xterm-color on secure




就可以從另一台電腦連線控制進去了。如果要提昇連線速度,可以更改數字為57600,這樣跑起來比較快,loader.conf請參考/boot/default/loader.conf修改即可。



早些時候,因為我沒有Null Modem Cable,又兼採用第二種方法(24.6.5.2),連boot block 一起修為comconsole,方法就是再/etc/make.conf加入



BOOT_COMCONSOLE_PORT=  0x3F8 #   COM1: = 0x3F8, COM2: = 0x2F8

BOOT_COMCONSOLE_SPEED= 57600 #default 9600




cd /sys/boot ; make clean ; make ; make install ;




所以當設定防火牆失敗後,將永遠的與系統失聯.....



經過幾次來回後,我生氣了,除了氣自己為何買不到那麼一條便宜的null modem cable,也氣為甚麼CAFE4這麼難搞,難上天啊~



於是我就把CAFE4計畫更名,不要再搞啥鬼咖啡了。至於這台機器,真是夠賤,那麼我就把妳改名叫檸檬紅茶。為甚麼檸檬紅茶?這要問檸檬,還有你要有點台灣國語。 (腦筋急轉彎:紅杏出牆~)



所以以上是傷心咖啡店四號機的血淚史,之後就沒有咖啡四了,因為死了。只有剩下檸檬紅茶。是的,本來是傷心咖啡店,現在是檸檬紅茶桶。

咖啡四誕生過程血淚史 首部曲

基本上標題是聳動的,咖四的誕生沒有血淚,只有不斷的拖延與難產。勉強說的話,大概就是被電而已,並沒有流血流淚的情節發生。

這要說起在當年畢業後從軍前的一段空白日子,當時重新整理過傷心咖啡店後,之後就是一段空白(.....)。

之後到傷心咖啡店中風為止,鴨子就說話了:

我這裡有一台長的大概像是sever的主機
不過不知道是幹啥用的
所以一直丟在腳邊

前一陣子看到阿尼又中風後
忽然想到腳邊還有這個東西

經過我最愛的阿砲來檢定後
冥冥之中像是專為阿尼量身之用

講的這麼神,我當然要去看看。當時的時間是2005年九月。

那她的尊容就是長怎樣呢?請看~

好像很先進對吧~這裡還有其他當年報導:

網虎國際的NetRunner V. 2.5是內建了一系列網路應用服務的多功能精簡型伺服器(Multi-Function Appliance Server,簡稱為MFA),採用嵌入式Linux及DOC(Disk On Chip)技術,支援RAID-1等級的鏡射磁碟陣列功能,降低系統受損的風險...

確實滿適合的,那麼就先脫衣服檢查吧!

作者:icekimo
cafe iv 工作筆記時間 Fri Sep 16 11:02:49 2005
───────────────────────────────────────

粗檢過硬體一遍
half tall microATX
socket 370 + sdram x2
3com 網路卡on board
面板上內建LCD
沒有鍵盤滑鼠插孔
最多放兩個3.5"硬碟
使用1U機殼常用的電源
能縮小到這程度
也是滿厲害的啦

咖啡四誕生過程血淚史 二部曲

基礎核心元件到齊了,可以開機了,當然接下來就是大破壞的時刻到來了。首先要毀掉DOC的開機優先權,所以要進入BIOS設定為光碟優先。

光碟開機後,我個人偏好程式是spfdisk2000,因為它是台灣的驕傲~開機後就可以抓到這顆搞怪的M-System DOC,自動把它視作硬碟。這時候當然馬上把它解除開機權,因為我怕它復活來奪權復辟,所以順便把它格式化....

接下來我就可以對系統上下其手,隨我搞了,嘿嘿嘿....(先下藥迷昏,然後....咦?機器也能下藥嗎?)