歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Unix知識 >> 關於Unix >> 從源代碼打造一個最小化的Linux系統

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

日期:2017/3/6 15:49:40   编辑:關於Unix
以下就是從源代碼中打造一個最小化的 Linux系統 的操作說明.它曾經是《從加電啟動到Bash提示符(From PowerUp to Bash Prompt)》的一部分.但是我將它們分離開來,以便使得它們更簡短而更為集中化.我們在此所要打造的系統是非常小的,而且並不准備作為工作
  以下就是從源代碼中打造一個最小化的Linux系統的操作說明.它曾經是《從加電啟動到Bash提示符(From PowerUp to Bash Prompt)》的一部分.但是我將它們分離開來,以便使得它們更簡短而更為集中化.我們在此所要打造的系統是非常小的,而且並不准備作為工作產品來使用.如果您想從頭開始打造一個有實際用途的系統,請參閱Gerard Beekmans所撰寫的 Linux空手道實作指南篇 (Linux From Scratch HOWTO).
  _________________________________________________________________
  
  1. 您所需要具備的條件
  
  我們首先要安裝一個Linux發行套件比如小紅帽(RedHat)到一個分區上,然後使用它來在另一個分區上打造一個新的Linux系統.我將我們所要打造的系統稱為目標系統(target)而把我們所使用來打造新系統的系統稱為源頭系統(source).可別把這個源頭(source)系統同我們同時使用的源碼(source code)相混淆了哦.:)
  
  因此,您得需要一台具有兩個獨立分區的機器.如果可能,請盡量使用一台沒有重要資料在裡頭的機器,以免數據受損.您可以使用一個已經存在的Linux系統作重要資料在裡頭的機器,以免數據受損.您可以使用一個已經存在的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 (設備文件包) * dev86 (設備文件包)
  * ncurses-devel (ncurses庫開發包)
  * glibc-devel (glibc庫開發包)
  * kernel-headers(內核源碼頭文件包)
  
  我還安裝了X Window視窗系統和Mozilla網絡浏覽器以便更輕松地閱讀文檔,而實際上這兩個東東並不是必要的.在我竣工之時,這個源頭系統大概使用了350兆的磁盤空間(看起來是多了一些,可是我還在納悶為什麼呢).
  
  竣工之時的目標系統占用了650兆磁盤空間,但是這個數值包含了所有的源碼以及中途打造出來的文件.如果空間比較緊湊,您應該在每個軟件包都打造完畢之後執行一下make clean來清除臨時文件.當然了,我對這個也是有點吃驚的.
  
  最後,您的准備好我們所要用來打造系統的源碼包.這些就是我在本文所討論的軟件包.這些軟件包都可以從源碼盤裡面找到,或者從國際互聯網上找到.我會給出美國的站點和位於澳大利亞的鏡像站點的地址.
  
  * MAKEDEV (設備生成器包)
  美國站點:ftp://tsx-11.mit.edu/pub/linux/sources/sbin
  另外一個美國站點:ftp://sunsite.unc.edu/pub/Linux/system/admin
  * Lilo (Linux引導器包)
  美國站點:ftp://lrcftp.epfl.ch/pub/linux/local/lilo/
  澳大利亞: ftp://mirror.aarnet.edu.au/pub/linux/metalab/system/boot/lilo 澳大利亞: ftp://mirror.aarnet.edu.au/pub/linux/metalab/system/boot/lilo
  * Linux內核包(Kernel) 使用 主頁上所列舉的鏡像站點而最好不要使用美國
  站點站點下載,因為這些站點通常是超負荷運轉的.
  美國站點:ftp://ftp.kernel.org/pub/linux/kernel
  澳大利亞站點: ftp://kernel.mirror.aarnet.edu.au/pub/linux/kernel/
  * GNU libc庫包 其本身,以及liuxthreads線程附加庫可在以下地址下載到∶
  美國站點:ftp://ftp.gnu.org/pub/gnu/glibc
  澳大利亞站點:ftp://mirror.aarnet.edu.au/pub/gnu/glibc
  * GNU libc附加庫包 您可能還會需要linuxthreads線程附加庫和libcrypt加密
  附加庫. 如果libcrypt沒在那個站點找到,那就是因為美國出口法律限制的
  原因, 那麼您就可以從這裡弄到libcrypt加密附加庫. 通常linuxthreads
  線程附加庫跟libc庫是放在同一個地方的.
  libcrypt加密附加庫:ftp://ftp.gwdg.de/pub/linux/glibc
  * GNU ncurses
  美國站點:ftp://ftp.gnu.org/gnu/ncurses
  澳大利亞站點:ftp://mirror.aarnet.edu.au/pub/gnu/ncurses
  * SysVinit (初始化腳本包)
  美國站點:ftp://sunsite.unc.edu/pub/Linux/system/daemons/init
  澳大利亞:
  ftp://mirror.aarnet.edu.au/pub/linux/metalab/system/daemons/init
  * GNU Bash (命令解釋器包)
  美國站點:ftp://ftp.gnu.org/gnu/bash
  澳大利亞站點:ftp://mirror.aarnet.edu.au/pub/gnu/bash 澳大利亞站點:ftp://mirror.aarnet.edu.au/pub/gnu/bash
  * GNU sh-utils (命令解釋器工具包)
  美國站點:ftp://ftp.gnu.org/gnu/sh-utils
  澳大利亞站點:ftp://mirror.aarnet.edu.au/pub/gnu/sh-utils
  * util-linux (Linux常用工具包) 本軟件包包含有agetty和login。
  另外一個站點:ftp://ftp.win.tue.nl/pub/linux/utils/util-linux/
  澳大利亞站點:ftp://mirror.aarnet.edu.au/pub/linux/metalab/system/misc
  
  總結一下,您所需要的就是∶
  * 一台具有兩個分別是400兆和700兆獨立分區的機器,或許您可能會需要少一些.
  * 一個Linux發行套件(譬如一個RedHat光盤)和安裝方式(譬如一個光驅)
  * 以上所列舉的源碼的tar包.
  
  我假定您可以自己安裝源頭系統,而用不著我來幫忙.從這裡開始,我假定源頭系統已經安裝好了.
  
  本小項目的第一個裡程碑就是使得內核啟動起來然後死翹翹,因為它沒找到init初始化程序.也就是說我們得安裝一個內核和安裝lilo.為了順利安裝lilo,我們要用上在目標系統上/dev目錄下的設備文件.lilo需要它們來實現底層必需的磁盤存取來寫入引導扇區.MAKEDEV正是用來創建這些設備文件的腳本程序(您當然可以只需要從源頭系統當中復制出來,不過這可是作弊不勞而獲哦).但是最重要的事情就是,我們需要一個文件系統來放置所有的這些東西.

Copyright © Linux教程網 All Rights Reserved