在USB盤上打造自己的Linux發行版

From:http://blog.163.com/ninja_wk/blog/static/989155620073584237317/

在USB盤上打造自己的Linux發行版

前言;

我一直想做一個在U盤自己啓動和運行的Linux系統,近來花費了一些功夫,初步做出了一個基本可以運行的這樣的系統,現在記錄一下,一是供自己以後參考;二是與大家共同學習和切磋;三是爲本論壇增加一點人氣。

1、我的製作環境;

先說硬件環境,只說與本系統制作可能有關係的:我的U盤是一個比較早期的朗科64M盤,主板芯片時一個Sis的早期版本。我想現在新的主板和新的U盤應該會比我的硬件具備更好的硬件兼容性。我先把Bios裏面的啓動介質設置爲USB-HDD,另外三種USB啓動方式在我這次中都不能成功啓動。

我的軟件環境,或者說我的操作系統是Sarge。

2、我的基本思路

誠然要做一個比較完善的實用系統,最好是在已經有的Linux發行版的基礎上進行加工和修改來做,比如說在Morphix、Knoppix、DSL等基礎上進行再加工,但是我做這個系統的主要目的時滿足自己的好奇心,另外也是作爲學習的一種方式,所以我從更基礎的步驟開始,包括自己編譯內核、自己製作根目錄系統、自己進行各種配置等---當然最好能從自己編寫所有源碼的最基礎開始,但那是不可能的。

3、製作過程;

3.1、編譯內核;

具體的編譯過程就不說了,資料隨處可見,在這裏關鍵是注意爲了使U盤啓動時能找到自己的根目錄系統,需要打一個補丁。關於這個補丁的詳情可見:

http://www.lammerts.org/software/kernelpatches/

由於這個補丁是針對內核2.4.22的,所以我專門下載了2.4.22版本的源碼---我不知道這個補丁是否對2.4內核的其他版本起作用,而針對2.6內核的補丁又有不同。

然後,解壓—打補丁—編譯—得到bzImage,不提。

3.2、製作根目錄系統;

製作根目錄系統的文章也很多,我這裏就不重複,值得注意的是:

3.21、由於現在使用的時U盤,空間較軟盤寬鬆得多,所以我沒有使用busybox,而是從我自己工作的Sarge系統的bin sbin lib等目錄中直接拷貝需要的東西。

3.22、一般我們都使用initrd來分兩個階段啓動Linux,由initrd來掛載U盤上的文件系統。不知道爲什麼,我不喜歡這種方式。經過實驗證明,直接由grub或是syslinux來指定根目錄文件系統是可行的。

3.23、現在我的根目錄裏面幾乎沒有什麼配置文件,連inittab fstab等都沒有,以後再改進吧。

3.3、處理U盤;

首先要使用fdisk cfdisk對U盤分區,我把我的U盤劃分爲兩個區,第一個10M的boot區,第二個是50M的root區,注意將boot分區設置爲可啓動的---在DOS下叫激活吧。

然後要建立文件系統,因爲我對syslinux比對grub熟悉一些,所以我使用:

#mkdosfs /dev/sda1

#mke2fs /dev/sda2

將boot分區建立爲FAT文件系統而將root分區建立爲ext2文件系統---用grub應該不用這麼麻煩,待我下次再研究如何用grub來加載啓動U盤上的內核。

再然後就要這樣對U盤進行syslinux處理:

#syslinux /dev/sda

複製相關的文件到U盤,在掛上相應的文件系統之後,把前面編譯的內核bzImage複製到sda1,而把自己製作的根文件系統複製到sda2。

最後編寫一個syslinux的配置文件並把它複製到sda1裏面。(實際上sda1裏面只有三個文件,一是內核;一是syslinux系統文件;一是下面的syslinux.cfg)

#nano syslinux.cfg

title myusb

kernel bzImage

root /dev/sda2

製作完成,現在啓動電腦就可以順利進入到我的U盤了---雖然內核在啓動的時候還會報告找不到root文件系統,但是折騰了幾下之後,它就找到了並順利執行init,現在電腦上出現了:

init#

表示可以使用U盤Linux系統了。

但是這個系統還做不了什麼事情,需要對許多的配置文件進行創建,比如說現在的系統連用nano vi等編輯文件都總報告”error opening terminal”的錯誤而退出,需要複製原來系統的/etc/terminfo/l/linux文件才能正常運行。

我本來是想製作一個能運行Gcc+Rhide的小型C語言學習系統---就象當年用一張軟盤,拷貝上Dos+TurboC 1.0就能到處學習C語言一樣,但現在事情看起來複雜得多,現在要安裝Gcc就很麻煩,還需要不斷的探索。

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章