創造SPFDisk,打敗FDisk的達人
馮緒平因課業需求開發了兼具分割硬碟及啟動管理的SPFDisk程式,也在過程中了解系統底層運作,更因此踏進嵌入式系統的領域。文章來源http://www.ithome.com.tw/itadm/article.php?c=36343
1990年代,你是如何分割硬碟磁區呢?以Windows系統為例,可能大多使用內附的FDisk.exe,從DOS中以文字命令列的方式分割磁區,而 Unix-Like系統,則利用內建的分割程式,以圖型化的方式分割磁區,若電腦需要共存Windows及Unix-Like呢?這個問題一直困擾一位就 讀於高雄工學院(義守大學)資訊工程系3年級的學生,因為課業需求,電腦內需要同時具備多種作業系統,雖然當時能符合需求的程式不少,但他總認為不容易操 作,於是著手開發能同時兼具分割硬碟及啟動管理的SPFDisk程式,他就是「馮緒平」
從課業需求,開始了解BIOS運作
「那是個充滿熱忱、活力又炎熱的夏天」馮緒平這麼描述地。
因為課業需要,他開始使用Linux、OS/2及Unix等多種作業系統,但是當時只能在學校使用,家中電腦只有最基本的打字功能,為了回家也能 練習不同作業系統的操作環境,開始在自己的電腦中安裝不同作業系統,但是要在同一臺電腦安裝多種開機環境,卻是一件很麻煩的事,例如OS/2的操作介面很 完整,但是功能卻不及Unix強大,反觀Unix系統,雖然功能滿完整,但是操作介面不人性化,無直覺式操作方式,必須有一定電腦程度才能使用,每次重新 安裝系統,總是要花費許多時間在設定操作上。為了讓家中自己的電腦能很快速安裝操作不同作業環境,他開始著手開研發身平第一套應用程式,也開啟人生另一個 階段。
當時,他尋找各種各類的電腦叢書,希望從書本中發掘電腦底層的知識,最後在一些專門研究電腦病毒的書,了解如何排除BIOS問題障礙,也了解 MBR(Master Boot Record)運作模式,例如INT 10是負責接手BIOS啟動後,轉移到作業系統的關鍵因素,他笑著說曾經聽過CIH(車諾比病毒)的作者陳盈豪演講,陳盈豪也是從電腦病毒相關的書籍中發 現BIOS的缺陷,因而發展出對磁區及開機檔具有強大殺傷力的CIH病毒。這樣看來,似乎必須了解BIOS運作邏輯,才算是真的了解系統運作。
從開發程式中了解系統底層運作模式
他說這類型程式必須在BIOS啟動後、作業系統接掌前獲得操作權限,可算是Pre-OS系統,為了能順利取得操作權限,必須先了解組合語言,利用 組合語言與高階語言搭配,讓作業系統啟動前,先執行這類型程式,再轉交給作業系統運作。當時他在PE2(倚天中文資訊系統)使用Turbo C和組合語言撰寫,到現在也忘記歷經幾次改版,不過第一版完成時是他最興奮的時後,後來則為因為使用者建議太多,熱情也跟著慢慢消失。
完成SPFDisk時,他開始在自己的電腦上進行活體實驗,當確定程式執行上正常並穩定後,便陸續給親朋好友試用,同學間開始流竄,也讓 SPFDisk慢慢廣為人知。不過這中間還有一段小插曲,大學4年級時,他專題作業的老師就是洪朝貴,原本洪老師希望他的專題作業能朝向多媒體的圖形演算 發展,但是他承認本身數學程度不好,圖形演算牽扯到離散數學的運算邏輯,困難度太高,執行上有問題,反觀SPFDisk已經完成一段時間,和洪老師討論 後,最後把SPFDisk當成專題作業,而且他也請教洪老師如何依據GPL(General Public License)發布SPFDisk,並放置在網路上共享使用,但是這方面洪老師有意見,因為SPFDisk最後是以中文發布、而非英文,就算 SPFDisk想法創新,也不容易登上國際舞臺,但是他只想分享好工具給需要的人,並沒有思考太多,加上並沒有想成名的念頭,因此並沒有對琢磨太多GPL 內容。
Windows介面興起,SPFDisk逐漸凋零
當初作業系統磁碟分割功能不足,造成SPFDisk興起,但現在Windows介面越來越盛行,也代表SPFDisk快要下臺了,加上每次 SPFDisk改版也讓馮緒平心力具疲,因為這類型程式模組化不易,因此只要更改使用者操作介面,程式幾乎都是重新製作,這也讓他很感慨,因為總是無法提 供使用者最佳的操作介面,例如選項游標從早期按鍵式到現在的光棒選擇方式,或許增加使用者操作介面的親和度,但是他幾乎重新改寫SPFDisk的編碼,隨 著年齡漸長,越來越沒有力氣改版,加上每次使用者來信問題大多相同,當同一件事情發生太多次後,熱情便慢慢消失,最後只剩下毅力在苦撐。
他舉例,許多使用者來信要求搶救硬碟資料,標準操作方式是先用SPFDisk掃描磁區,重新設定後便可正常運作。此外,如何操作SPFDisk也 是經常看到的問題,他就給對方說明網頁連結,直接參考操作方式。他秉持只回信幫助的原則,因為若要求他親自處理每件案子,可能1天24小時都不夠用,不過 他曾遇到1位臺中補習班的老師,對方說電腦中有累積小孩數年來成長的照片,千拜託、萬拜託也要請他幫忙,還連夜坐車北上,最後還好SPFDisk沒讓他失 望,成功救回資料,否則他可能也無能為力。因為硬碟資料損毀可能只是對照表有問題,資料本身依然正常,SPFDisk就是以處理這類型問題為主,並不會損 害資料本身。
對於後來工作獲益良多
SPFDisk採用組合語言撰寫,執行方式與C語言類似,也要先宣告參數等,那段瘋狂的學習歷程對他後來工作獲益良多,因為他熟悉系統運作底層邏 輯,當兵回來後,就一腳跨進嵌入式系統領域,只是這方面難度太高,每次專案工作幾乎都是重新學習,他常說嵌入式系統是3個數字(X、Y、Z)與2組方程式 的習題,解決方法太複雜,但是若當時他沒有經歷過開發SPFDisk的過程,可能就不會進入嵌入式系統的領域。
只是嵌入式系統的問題很複雜,不像一般高階語言容易偵測,問題發生原因可能是高階程式、驅動程式、系統晶片、機體邏輯等,若是x86平臺CISC (Complex Instruction Set Computer)還容易解決,最怕的是非x86平臺的RISC(Reduce Instruction Set Computer)架構,每家產品幾乎都不相同,每次專題都是重新學習,有時還是開發時,才發現晶片廠商的說明文件有問題,很多時間在除錯應用,但也因為 門檻高,也讓他在這個領域不斷摸索,吸收新的知識技能。
文⊙蘇碩鈞
0 意見:
張貼留言