企鵝向前走-企鵝再進化

上一頁 回企鵝軟體世界 回企鵝世界

  接著再來聊聊企鵝軟體的進階利用、甚至改造、開發,說不定還能讓你打造出一套,完全屬於自己的作業系統。

  在自由軟體的授權規定中,幾乎都規定必須開放源碼 (open source),如此可讓軟體使用者依自己的需要來修改軟體,使得軟體能運作在不同的環境上,Linux 本身就是很好的例子,最原始的 Linux 是在 368 PC 下開發的,後來還被移植到 Mac 電腦上,因此也有許多 Linux 套裝版本可運作在 Mac 上,事實上 Linux 不但能運作在 Mac 上,還被移植到 Sun、IBM、HP 等各種特殊大型電腦平台上運作,甚至也被修改成能作為內崁式系統的作業系統,因此 Linux 的應用,能大到超級電腦,也能小到手機、PDA,這都拜開放源碼之賜呢!而非常多的自由軟體,也被移植到 Windows 上運作,因此對於商業軟體構成不小的威脅。

  既然是開放源碼,那要對軟體設計來進行研究,就容易多了!只要取得軟體還沒被編譯過的原始碼檔,就可以對該軟體程式進行研究了!通常原始碼檔不會只是單一的檔案,而是被壓縮起來的一大堆檔案,其中會包含一些文件、Script、及程式的原始碼,當然會有文件說明各個原始碼檔的功能,而原始碼中也多少會有些註解,當你要將這軟體編譯成可執行的軟體時,就是在對原始碼進行編譯,Script 檔則提供編譯與安裝軟體的一些指令與參數,不過有些 Script 檔也有可能是軟體本身所需的 Script,因此必須閱讀軟體中的文件,才能了解它的用途。而原始碼檔其實就是一些純文字檔了,可是要怎知道它是用什麼語言寫成的呢?基本上在軟體文件中應該可以找到,或者也可依軟體編譯的環境需求,來了解它所使用的程式語言,較常見的情況是透過 GCC 編譯的 C 與 C++,如果你懂程式設計,那麼就可以透過這些原始碼,來研究軟體的開發。如果不懂程式設計,而想學習的話,在學習的過程中,這些原始碼也是很好的範本呢!

  自由軟體幾乎都是從網路上流傳發展的,在一些授權規定中,任何人都有權對軟體進行修改,也因此能獲得不斷的改進、更新,不過軟體的主要版本,還是會有特定的人或社群來維護、管理,因此若要協助開發軟體,必須透過這些管道加入軟體的開發團隊,在軟體的文件中,應該都能找到這些資訊。

  因為在網路上流傳,自然會有國際化的需求,就像許多軟體可以自行選擇語言介面那樣,而有了 i18n (internationalization) / L10n (localization ) 計劃,制定與執行軟體的國際化與本地化標準,使得軟體及作業環境可以較容易的被國際化與本地化,符合這個標準的軟體本身原始檔與語言套件是分開的,因此在進行翻譯的過程中,基本上是不會動到軟體本身的,而只對關於語言介面的部份進行修改與附加,所以即使對軟體設計並不是很了解,也能對軟體進行本地化的工作,軟體國際化的部份,在維護上有可能與軟體本身一起維護,也有可能被分開在 i18n 社群中維護,台灣也有負責本地化的 i18n 社群

  接著來談談作業系統部份,一套作業系統,是以一個核心,加上一大堆軟體及函式庫所建構出來的,整個作業系統的架構,在不同的版本上都不太一樣,也應此在軟體設計上,會有必須考慮作業系統版本差異的問題,最明顯的差異就是目錄結構上,不同的 Linux 版本,在目錄結構上可能會有所差異,這使得在某一版本下開發的軟體,無法直接的拿到另一版本的系統下運作。為了解決這個問題,促成了 LSB (Linux Standard Base) 規格的定義,如此只要在符合 LSB 相同版本規格的系統下開發的軟體,就能輕易得拿到其他也符合 LSB 相同版本規格的系統下運作。不過目前支援這標準的 Linux 版本還不算很多,未來的趨勢也有待觀察。

  說到這裡可能會讓你出現一個疑問,要如何在電腦上自行建構作業系統呢?當然必須利用現存於電腦中的系統,建構出基礎環境,最基礎的環境必須可以執行一些已編譯過的程式。將基礎的系統環境安裝上去,接著建構出編譯程式、及安裝軟體的環境,因為接下來的部份,將要在這個基礎環境中進行,再來則必須有管理軟體套件的軟體,因為一套作業系統包含了非常多的軟體套件,若有軟體來管理,對日後的維護上會容易許多,最後,依自己的需要來安裝各種應用軟體。在建構作業系統的過程中,最好能依據一些規則來建構,或者遵循一些標準規範,如此對系統的維護、更新上也會比較容易些。而建構作業系統最初所需的基礎環境,是可以利用已存在的 Linux 版本來作為基礎,例如百資 Linux 部分版本、及Yellow Dog Linux 即以 Red Hat Linux 為基礎所建構的,其中百資 Linux 為中文化及台灣本土化的版本,Yellow Dog Linux 則是移植到 Mac 下運作的版本。

  打造出一套作業系統後,你可能還會想要製作安裝光碟,這當然是可行的,而且方法也很多,通常是利用編譯完成的軟體檔案來製作,並且每個軟體都必須有安裝資訊,通常軟體中會附上安裝資訊檔,不過它可能不符合你所打造的作業系統,因此有可能必需做些修改,而若軟體沒有安裝資訊檔時,則必須自己編輯,該如何編輯安裝資訊,軟體檔案又要如何包裝,則必須依安裝程式及系統架構而定,安裝光碟必須能開機、啟動安裝程式,通常這必須載入一個簡化的核心,因此安裝光碟上比須包含一個可被載入的核心映像檔,這些東西也有被包裝成套件提供利用,如此即可完成安裝光碟的製作,不過許多軟體都必須逐一去包裝,因此製作一套作業系統的安裝光碟,也勢必是個龐大的工程。

  最後,來聊聊 Live-CD 活的光碟,事實上當然不可能把唯讀的光碟,變成像硬碟那般可讀寫,而是利用虛擬硬碟 ramdisk 技術,把系統建立在記憶體上,不過記憶體的大小,可能容不下整套系統,因此系統大部分資料,都是連結到光碟上的,因為應用軟體的大部分資料,在安裝完成後,幾乎都不會再變更了,也因此使得 Live-CD 的概念得以實現。Live-CD 必須是可開機光碟,並且在開機後必須載入一個核心,這跟安裝光碟很相似,不過 Live-CD 必須載入一個完整的核心,然後利用記憶體的一部份,以 ramdisk 技術建立系統根目錄,其中大部分唯讀資料,則連結到光碟資料檔相對位置,並建立環境設定檔,假如環境設定檔存在,則去讀取出來,這部份可配合隨身碟使用,將環境設定等資料存於隨身碟中,系統執行時,若能讀取隨身碟,則可將其環境設定讀取出來,若硬碟原本有規劃 swap partition,則可利用,整個系統的運作,跟一般的作業系統很類似,不過卻不需利用到硬碟,不過此一系統運作中,將會一直佔用一部光碟機。

  要打造一套 Live-CD,或者要將一套可在硬碟中,正常運作的系統製作成 Live-CD,也是可行的,只是必須將唯讀、及可讀寫資料區分清楚,且必須考量光碟容量限制,不過以壓縮的映像檔製作,將 1G 多的系統建立成 Live-CD,在一般的應用,足以將圖形化環境,及常用軟體都建置進去,已經非常足夠了。而在 Live-CD 上可行,若能以 DVD 光碟開機,那製作 Live-DVD,理論上也應該是可行的,應該也能讓系統更加完整。

  一直聊到這裡,可見自由軟體所帶來的好處,在自由軟體的世界裡,寶藏如大海般掏之不盡,得看利用者如何去利用了,這邊所談的技術,小怪鬼也只利用到一小部份,其他的也只略知一二,善加利用的話,每個人都很快就能成為超越小怪鬼的高手了吧!


上一頁 回企鵝軟體世界 回企鵝世界