|
作者: 出處:Unix愛好者家園unix-cd.com 更新時間: 2006年02月11日
|
前言,;
我一直想做一個在U盤自己啟動和運行的Linux系統(tǒng),,近來花費了一些功夫,初步做出了一個基本可以運行的這樣的系統(tǒng),現(xiàn)在記錄一下,,一是供自己以后參考,;二是與大家共同學(xué)習(xí)和切磋;三是為本論壇增加一點人氣,。
1,、我的制作環(huán)境;
先說硬件環(huán)境,,只說與本系統(tǒng)制作可能有關(guān)系的:我的U盤是一個比較早期的朗科64M盤,,主板芯片時一個Sis的早期版本。我想現(xiàn)在新的主板和新的U盤應(yīng)該會比我的硬件具備更好的硬件兼容性,。我先把Bios里面的啟動介質(zhì)設(shè)置為USB-HDD,,另外三種USB啟動方式在我這次中都不能成功啟動。 我的軟件環(huán)境,,或者說我的操作系統(tǒng)是Sarge,。
2、我的基本思路
誠然要做一個比較完善的實用系統(tǒng),,最好是在已經(jīng)有的Linux發(fā)行版的基礎(chǔ)上進(jìn)行加工和修改來做,,比如說在Morphix、Knoppix,、DSL等基礎(chǔ)上進(jìn)行再加工,,但是我做這個系統(tǒng)的主要目的時滿足自己的好奇心,另外也是作為學(xué)習(xí)的一種方式,,所以我從更基礎(chǔ)的步驟開始,,包括自己編譯內(nèi)核、自己制作根目錄系統(tǒng),、自己進(jìn)行各種配置等---當(dāng)然最好能從自己編寫所有源碼的最基礎(chǔ)開始,,但那是不可能的。
3,、制作過程,;
3.1、編譯內(nèi)核,;
具體的編譯過程就不說了,,資料隨處可見,在這里關(guān)鍵是注意為了使U盤啟動時能找到自己的根目錄系統(tǒng),,需要打一個補丁,。關(guān)于這個補丁的詳情可見:
http://www./software/kernelpatches/
由于這個補丁是針對內(nèi)核2.4.22的,所以我專門下載了2.4.22版本的源碼---我不知道這個補丁是否對2.4內(nèi)核的其他版本起作用,,而針對2.6內(nèi)核的補丁又有不同,。
然后,,解壓—打補丁—編譯—得到bzImage,不提,。
3.2,、制作根目錄系統(tǒng);
制作根目錄系統(tǒng)的文章也很多,,我這里就不重復(fù),,值得注意的是: 3.21、由于現(xiàn)在使用的時U盤,,空間較軟盤寬松得多,,所以我沒有使用busybox,而是從我自己工作的Sarge系統(tǒng)的bin sbin lib等目錄中直接拷貝需要的東西,。 3.22,、一般我們都使用initrd來分兩個階段啟動Linux,由initrd來掛載U盤上的文件系統(tǒng),。不知道為什么,,我不喜歡這種方式。經(jīng)過實驗證明,,直接由grub或是syslinux來指定根目錄文件系統(tǒng)是可行的,。 3.23、現(xiàn)在我的根目錄里面幾乎沒有什么配置文件,,連inittab fstab等都沒有,,以后再改進(jìn)吧。
3.3,、處理U盤,;
首先要使用fdisk cfdisk對U盤分區(qū),我把我的U盤劃分為兩個區(qū),,第一個10M的boot區(qū),第二個是50M的root區(qū),,注意將boot分區(qū)設(shè)置為可啟動的---在DOS下叫激活吧,。
然后要建立文件系統(tǒng),因為我對syslinux比對grub熟悉一些,,所以我使用:
#mkdosfs /dev/sda1 #mke2fs /dev/sda2
將boot分區(qū)建立為FAT文件系統(tǒng)而將root分區(qū)建立為ext2文件系統(tǒng)---用grub應(yīng)該不用這么麻煩,,待我下次再研究如何用grub來加載啟動U盤上的內(nèi)核。
再然后就要這樣對U盤進(jìn)行syslinux處理:
#syslinux /dev/sda
復(fù)制相關(guān)的文件到U盤,,在掛上相應(yīng)的文件系統(tǒng)之后,,把前面編譯的內(nèi)核bzImage復(fù)制到sda1,而把自己制作的根文件系統(tǒng)復(fù)制到sda2,。
最后編寫一個syslinux的配置文件并把它復(fù)制到sda1里面,。(實際上sda1里面只有三個文件,一是內(nèi)核;一是syslinux系統(tǒng)文件,;一是下面的syslinux.cfg)
#nano syslinux.cfg title myusb kernel bzImage root /dev/sda2
制作完成,,現(xiàn)在啟動電腦就可以順利進(jìn)入到我的U盤了---雖然內(nèi)核在啟動的時候還會報告找不到root文件系統(tǒng),但是折騰了幾下之后,,它就找到了并順利執(zhí)行init,,現(xiàn)在電腦上出現(xiàn)了:
init#
表示可以使用U盤Linux系統(tǒng)了。
但是這個系統(tǒng)還做不了什么事情,,需要對許多的配置文件進(jìn)行創(chuàng)建,,比如說現(xiàn)在的系統(tǒng)連用nano vi等編輯文件都總報告”error opening terminal”的錯誤而退出,需要復(fù)制原來系統(tǒng)的/etc/terminfo/l/linux文件才能正常運行,。 我本來是想制作一個能運行Gcc+Rhide的小型C語言學(xué)習(xí)系統(tǒng)---就象當(dāng)年用一張軟盤,,拷貝上Dos+TurboC 1.0就能到處學(xué)習(xí)C語言一樣,但現(xiàn)在事情看起來復(fù)雜得多,,現(xiàn)在要安裝Gcc就很麻煩,,還需要不斷的探索。
|
|
|
|