打造小的Linux系统

從源代碼打造一個最小化的Linux系統實作篇 1- -

摘自罗老师教学用blog                                   

從源代碼打造
一個最小化的Linux系統實作篇

Greg O'Keefe, gcokeefe@postoffice.utas.edu.au

2000年09月第0.8版

--------------------------------------------------------------------------------

以下就是從源代碼中打造一個最小化的Linux系統的操作說明.它曾經是 從加電啟動到Bash提示符(From PowerUp to Bash Prompt)的一部分.但是我將它們分離開來,以便使得它們更簡短而更為集中化.我們在此所要打造的系統是非常小的,而且并不准備作為工作產品來使用.如果您想從頭開始打造一個有實際用途的系統,請參閱Gerard Beekmans所撰寫的 Linux空手道實作指南篇 (Linux From Scratch HOWTO).

--------------------------------------------------------------------------------

 

1. 您所需要具備的條件

我們首先要安裝一個Linux發行套件比如小紅帽(RedHat)到一個分區上,然后使用它來在另一個分區上打造一個新的Linux系統.我將我們所要打造的系統稱為目標(target)而把我們所使用來打造新系統的系統稱為源頭(source).可別把這個源頭(source)同我們同時使用的源碼(source code)相混淆了哦.:)

因此,您得需要一台具有兩個獨立分區的機器.如果可能,請盡量使用一台沒有重要資料在里頭的機器,以免數據受損.您可以使用一個已經存在的 Linux系統作為源頭系統,但是我并不推荐這種方式.如果您不慎遺漏了我們打造的指令的某些參數,您有可能會意外地在這個系統上安裝了一些沒有必要的東西,有可能會導致不兼容和沖突.

舊型的PC機硬件,大部分的486機器或者更早的機型,其BIOS都有一些極其煩人的限制.它們沒有辦法讀取硬盤超過前512兆之后的空間.當然,這個對于Linux來說并不是什么大問題,因為只要Linux能夠引導啟動了,將使用 Linux自己的磁盤IO,略過BIOS的調用.但是為了能夠讓這些舊型機器能夠引導Linux,那么Linux內核必須存放在硬盤的前512兆之前的某個位置.如果您正好有這么個舊型機器,您得准備好一個獨立的且完全在前512兆范圍內的硬盤分區,并將其挂載為/boot.其它的分區就可以在任何位置,可以任意處理而不必擔心是在硬盤的什么位置了.

上一次我打造這個系統時,所使用的源頭系統是小紅帽6.1(RedHat 6.1),我安裝了基本系統,附加有以下軟件包︰

  • cpp (C++編譯器)
  • egcs (增強型C編譯器)
  • egcs-c++ (增強型C++語言編譯器)
  • patch (打補丁程序)
  • make (編譯批處理解釋器)
  • dev86 (設備文件包)
  • ncurses-devel (ncurses庫開發包)
  • glibc-devel (glibc庫開發包)
  • kernel-headers(內核源碼頭文件包)

我還安裝了X Window視窗系統和Mozilla網絡瀏覽器以便更輕松地閱讀文檔,而實際上這兩個東東并不是必要的.在我竣工之時,這個源頭系統大概使用了350兆的磁盤空間(看起來是多了一些,可是我還在納悶為什么呢)

竣工之時的目標系統占用了650兆磁盤空間,但是這個數值包含了所有的源碼以及中途打造出來的文件.如果空間比較緊湊,您應該在每個軟件包都打造完畢之后執行一下make clean來清除臨時文件.當然了,我對這個也是有點吃驚的.

最后,您的准備好我們所要用來打造系統的源碼包.這些就是我在本文所討論的軟件包.這些軟件包都可以從源碼盤里面找到,或者從國際互聯網上找到.我會給出美國的站點和位于澳大利亞的鏡像站點的地址.

  • MAKEDEV (設備生成器包) 美國 另一個是 美國
  • Lilo (Linux引導器包) 美國, 澳大利亞.
  • Linux內核包(Kernel) 使用 主頁上所列舉的鏡像站點而最好不要使用 美國 站點下載,因為這些地方通常是超負荷運轉的. 澳大利亞
  • GNU libc庫包其本身,以及liuxthreads線程附加庫可在以下地址下載到︰ 美國 澳大利亞
  • GNU libc附加庫包您可能還會需要linuxthreads線程附加庫和libcrypt加密附加庫.如果libcrypt沒在那個地方找到,那就是因為美國出口法律限制的原因,那么您就可以從這里弄到 libcrypt加密附加庫.通常linuxthreads線程附加庫跟libc庫是放在同一個地方的.
  • GNU ncurses 美國 澳大利亞
  • SysVinit (初始化腳本包) 美國 澳大利亞
  • GNU Bash (命令解釋器包) 美國 澳大利亞
  • GNU sh-utils (命令解釋器工具包) 美國 澳大利亞
  • util-linux (Linux常用工具包) 另外某個地方 澳大利亞本軟件包包含有agettylogin

總結一下,您所需要的就是︰

  • 一台具有兩個分別是400兆和700兆獨立分區的機器,或許您可能會需要少一些.
  • 一個Linux發行套件(譬如一個Red Hat光盤)和安裝方式(譬如一個光驅)
  • 以上所列舉的源碼的tar包.

我假定您可以自己安裝源頭系統,而用不著我來幫忙.從這里開始,我假定源頭系統已經安裝好了.

本小項目的第一個里程碑就是使得內核啟動起來然后死翹翹,因為它沒找到 init初始化程序.也就是說我們得安裝一個內核和安裝lilo.為了順利安裝lilo,我們要用上在目標系統上/dev目錄下的設備文件. lilo需要它們來實現底層必需的磁盤存取來寫入引導扇區.MAKEDEV正是用來創建這些設備文件的腳本程序(您當然可以只需要從源頭系統當中復制出來,不過這可是作弊不勞而獲哦).但是最重要的事情就是,我們需要一個文件系統來放置所有的這些東西.

 

2. 文件系統

我們的新系統是要安裝在文件系統上的.因此首先我們得使用命令mke2fs來創建文件系統,然后將其挂載到某個地方.我建議是挂載到/mnt/target這個目錄上.接下來的操作中,我假定就用這個目錄了.為了節省您的寶貴時間,您可以在/etc/fstab文件里面添加上這一項,以便每次源頭系統啟動的時候就能夠自動將這個目錄挂載上.

當我們啟動了目標系統,放置在/mnt/target上的所有東西就會被當成了放置在/根目錄上.

我們需要在目標系統上建立固定的目錄結構.請參閱"文件層次結構標准(簡稱FHS File Heirarchy Standard)",見于 文件系統一節來了解詳情,或者只需要cd切換目錄到目標系統所挂載的地方然后盡管執行以下命令︰

 
     
     
        mkdir bin boot dev etc home lib mnt root sbin tmp usr var
        cd var; mkdir lock log run spool  
        cd ../usr; mkdir bin include lib local sbin share src
        cd share/; mkdir man; cd man 
        mkdir man1 man2 man3 ... man9

因為FHS標准和大部分的軟件包在手冊頁(man page)放置位置處理上并不一致,因此我們需要做一個符號連接︰

 
     
     
        cd ..; ln -s share/man man

 

3. MAKEDEV(設備生成器)

我們要把源代碼放置到目標系統的/usr/src目錄下面.因此,舉個例子吧,如果您的目標系統是挂載在/mnt/target這個地方,且您的tar 包是放在/root里面,那么您要做的就是︰

 
        cd /mnt/target/usr/src
        tar -xzvf /root/MAKEDEV-2.5.tar.gz

然后就把這些tar包復制到您要解開它們的地方就行了.千萬別迷糊了哦.;->

當您安裝軟件的時候,通常情況下您會把它們安裝在正在使用的系統上.但是我們并不想這么做,因為我們是要把/mnt/target當做根文件系統(root filesystem),就是要把這些軟件安裝到這個地方.不同的軟件包有不同的處理方式.比如說MAKEDEV設備生成器包,您要做的是︰

        ROOT=/mnt/target make install

您得先在這個包當中的README說明文件和INSTALL安裝說明文件當中查出這些選項,或者執行命令./configure --help查看幫助說明.

查看一下MAKEDEV包當中的Makefile文件,看看它是怎樣處理我們在命令行當中設置的ROOT變量的.接著通過執行man ./MAKEDEV.man來查看一下它的手冊頁,看看它是怎么起到作用的.您會發現生成我們自己的設備的方式就是執行cd /mnt/target/dev然后./MAKEDEV generic.請使用ls命令來看看它都為我們生成了哪些設備文件吧.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值