2008年3月27日 星期四

為 Fedora 8 裝上 kernel source

為 Fedora 8 裝上 kernel source

March 26th, 2008 by Chuan-Hsien Lin
Last Modified on March 26th, 2008

Fedora 8 裝好之後,會發現 kernel source 目錄是個空殼,只留下一堆 Makefile 卻不見 source code,當想要看 kernel source 時才驚覺 code 到用時方恨少,所以本文在此介紹如何在 Fedora 8 下安裝 kernel source。

首先,先確認一下系統裡的 Linux kernel 版本,

[root@chtest i386]# uname -r
2.6.23.1-42.fc8
[root@chtest i386]#

然後再到 http://download.fedora.redhat.com/pub/fedora/ linux/releases/8/Fedora/source/SRPMS/ (請自行將網址接起來) 尋找我們要的 kernel source rpm。接著在這網頁可以發現到 kernel-2.6.23.1-42.fc8.src.rpm 這個檔案存在,大約 46MB,確定了版本無誤之後,將它下載。

接著,使用 rpm 工具將它安裝,過程中會看到一堆 warning: group kojibuilder does not exist - using root 訊息,不用去理會它。

[root@chtest i386]# rpm -ivh kernel-2.6.23.1-42.fc8.src.rpm

接著執行 rpmbuild -bp --target=$(uname -m) /usr/src/redhat/SPECS/kernel.spec, kernel source 就會安裝到 /usr/src/redhat/BUILD/kernel-2.6.23 了,在這個目錄裡面有兩個子目錄 linux-2.6.23.i686 及 vanilla,vanilla 這目錄是存放原始的 kernel source, 而 linux-2.6.23.i686 則是 Fedora 團隊為原始的 kernel source 上些 patch 及 updates。

經過以上動作後,如此一來就有一份完整的 kernel source,以便要 trace 或是要寫些 driver 使用。

參考資料,Personal Fedora 8 Installation Guide , http://www.mjmwired.net/resources/mjm-fedora-f8.html

2008年3月26日 星期三

Hello world by Assembly

Hello world by Assembly

March 25th, 2008 by Chuan-Hsien Lin
Last Modified on March 25th, 2008

不免俗地,也要來寫個 Hello world 組合語言版本,本範例是使用 DOS INT 21h/AH=09h 去顯示字串,只要將字串的 offset 帶給 dx,將 09h 帶給 ah,再呼叫 DOS INT 21h 即可,要注意的是,字串要用 $ 符號來表示字串結尾,完整程式如下,

       .MODEL TINY
       .CODE       
       ORG 100h       
begin: jmp show
message  db 'Hello, world!$'
show:  mov dx, offset message
       mov ah, 09h
       int 21h
       mov ah, 4ch
       int 21h
       END begin  

執行 ml /AT hello.asm 編譯後,執行程式結果如下,

C:\masm>hello
Hello, world!
C:\masm>

關於 DOS INT 21h/AH=09h 的介紹,可以參考 Ralf Brown's Interrupt List 裡的 http://www.ctyme.com/intr/rb-2562.htm 這篇文章。

最簡單的一個 Assembly 程式

最簡單的一個 Assembly 程式

March 24th, 2008 by Chuan-Hsien Lin
Last Modified on March 25th, 2008

本篇介紹寫一個最簡單的 Assembly 程式,首先你得有 Assembler 以及 Linker,才能將你的組合語言程式組譯及連結成執行檔,本文中是使用 Microsoft 的 MASM 6.11。

本範例是以使用 DOS INT 21h/AH=02h 中斷去顯示一個字元 'A' 來作為練習,接下來使用文字編輯軟體將下列幾行程式編寫並存檔成 test.asm,

       .MODEL TINY
       .CODE
       ORG 100h
begin: mov dl, 41h
       mov ah, 02h
       int 21h
       .STACK
       END begin  

然後執行 ml /AT test.asm 就會將程式組譯並且連結成執行檔了,

C:\masm>ml /AT test.asm
Microsoft (R) Macro Assembler Version 6.11
Copyright (C) Microsoft Corp 1981-1993.  All rights reserved.

 Assembling: test.asm

Microsoft (R) Segmented Executable Linker  Version 5.31.009 Jul 13 1992
Copyright (C) Microsoft Corp 1984-1992.  All rights reserved.

Object Modules [.obj]: test.obj/t
Run File [test.com]: "test.com"
List File [nul.map]: NUL
Libraries [.lib]:
Definitions File [nul.def]:

可以看的出來已經產生出 object file 以及 .COM 格式的執行檔了,

C:\masm>dir test*
 Volume in drive C is system
 Volume Serial Number is 9488-6570

 Directory of C:\masm

2008/03/24  ?? 05:17               218 test.asm
2008/03/24  ?? 05:32                 6 TEST.COM
2008/03/24  ?? 05:32               123 test.obj
               3 File(s)            347 bytes
               0 Dir(s)   5,750,042,624 bytes free       

這就來執行看看,果然執行成功,正常顯示出我們欲顯示的字元 'A'。

C:\masm>test
A 

但是別高興的太早了,因為你可以發現剛剛的程式一執行後就當掉停住了,一動也不動,這是因為 DOS 下執行的程式,都還需要呼叫一個 DOS INT 21h/AH=4ch 這個中斷來告訴 DOS 作業系統該程式已經結束了,這樣執行完程式後,才會把控制權交還給 DOS,所以完整的程式如下:

       .MODEL TINY
       .CODE
       ORG 100h
begin: mov dl, 41h
       mov ah, 02h
       int 21h
       mov ah, 4ch
       int 21h
       .STACK
       END begin  

這次執行果然程式正常結束,而且返回 DOS 的提示符號下,可以繼續別的動作了,

C:\masm>test
A
C:\masm>

附帶一提,可以看到 .COM 格式的執行檔可真是小巧精美,以上的程式只佔用 10 bytes 空間呢!下面即在 Cygwin 的環境下來顯示該執行檔內容。

$ od -t x1 test.com
0000000 b2 41 b4 02 cd 21 b4 4c cd 21
0000012

關於 DOS INT 21h/AH=4ch 的介紹,可以參考 Ralf Brown's Interrupt List 裡的 http://www.ctyme.com/intr/rb-2974.htm 這篇文章。

2008年3月20日 星期四

HTTP 方式安裝 Fedora 8

HTTP 方式安裝 Fedora 8

March 19th, 2008 by Chuan-Hsien Lin
Last Modified on March 19th, 2008

本文將介紹如何使用 HTTP 方式來安裝 Fedora 8,先來說明為什麼我需要這樣做,因為主管抱了一台 Pentium III 等級的舊電腦給我用,我打算將 Fedora 8 裝在這台機器上,但是這舊電腦上的光碟機是 CD-ROM 而不是 DVD,而我手上僅有一片 Fedora 8 的光碟片,以及它的原始 ISO 檔 Fedora-8-i386-DVD.iso。

既然沒辦法使用 CD-ROM 來吃 Fedora 8 的 DVD 光碟,只好用別的方式來安裝了,依稀記得以前有用過網路來安裝 Redhat,當時是透過 FTP 方式來安裝的,這次就來依樣畫葫蘆,改用 HTTP 試試。可能有人會說為什麼不把這台電腦的 CD-ROM 拆下來,換上一台 DVD 就好了,因為,一來我懶,二來不喜歡照著既有的方式去做,有時喜歡嘗試別的路線,就像平常回家的路有很多條,但有時你會故意走別條看看,尋找些驚奇。

不多說廢話了,直接來看整個過程吧,首先得去網路上抓 Fedora 8 救援光碟 ISO 檔 Fedora-8-i386-rescuecd.iso,將之燒成一般 CD,然後用它來開機,開機後會出現 boot:,然後輸入 linux askmethod 或 linux text askmethod,前者是圖形模式安裝,後者是文字模式安裝,接著就會有一個選單是問你要用何種方式安裝,有 NFS, HTTP, FTP 等等,再選擇了 HTTP 方式之後,會詢問你 HTTP Server 的位址及路徑。

這時候,我先到別台 Server 把 Fedora-8-i386-DVD.iso Mount 起來,放在我個人網頁空間底下,路徑像是這樣 /home/chlin/public_html/fedora,然後將 Apache 的設定,改成可以瀏覽檔案,然後再回到正在安裝 Linux 的那台機器上,將 HTTP Server 位址填入後,再將目錄路徑輸入像是 ~chlin/fedora/ 就可以了,至於其他的安裝設定,比照一般的安裝情況即可。

最後,建議大家多使用網路安裝的方式,就可以不用燒一堆光碟,以響應環保。

2008年3月17日 星期一

偶遇街頭藝人張瓊玉

今天下午經過台北站前捷運站地下街,小小舞台上有個很高的女生在唱歌,歌聲蠻好聽的,柔柔的,輕輕的,聽得很舒服,本來還要去別的地方跟朋友會合的,看看手錶還有一點點時間,於是就在那裡聽了好幾首歌。

後來發現舞台前有幾個佈告,原來描寫著她是個街頭藝人,名叫張瓊玉,罹患罕見的病 - 馬凡氏症候群,導致一眼全盲,另一眼視力 0.1,而且這病會讓她手長腳長的,真的是件 "麻煩事",也因為這病讓她求職一直不順利,後來有人邀約,於是踏唱街頭藝人一途。

另外,她唱的歌剛好都是我蠻喜歡聽的歌,應該說我們聽歌的調調還蠻近的呢!還有唱蘇打綠的 "小情歌" 耶!超開心的!這可是我這陣子一直猛聽的歌!要不是還要趕去別的地方,不然真想找坐在地上聽完整場呢!希望下次去台北,還可以再遇到,再聽她的歌,也希望她身體可以健健康康的。

對了,她的 blog 在 http://tw.myblog.yahoo.com/ihug-seven/,也空可去逛逛喔!要是在街上遇到她演唱的話,大家也別吝嗇自己的荷包喲!

雖然我的 Canon 860 相機有防手震,但是現場亮度還是不夠,我又不敢打閃光燈,所以拍了幾張都糊糊的了!另外我也有用錄影模式拍了兩首歌喔!只是尚不知怎麼分享出來給大家看就是了。

2008年3月15日 星期六

公司會監控 msn 訊息

今天先增了一個大學同學阿康的 msn,加入了 msn 後,於是跟他打聲招呼,結果他有時都會回傳 "系統訊息:紀錄訊息中" 這訊息給我,傳給我了好幾次,於是我納悶地問他這是什麼?同學他說他們公司會監控 msn,聽到之後,就不敢再跟他傳訊了!真恐怖。