Linux對於許多用戶的介紹是十分強大的、可配置的操作系統。在過去,一套類似於Unix的操作系統對大多數人來說是不可能實現的。不是該操作系統4位數的標價,而是它的硬件,即使是現在使用個人免費的SCO Unixware它還需要SCSI設備,我們中的許多人為減少花費而使用IDE設備。隨著Linux的日益強大有件工作不得不在這簡單的操作系統上完成:根據你的硬件和操作配置你的核心。 當前安裝的核心是1.2.x或更早的建議更新;不管怎樣,用新的2.0.x核心,更新是必要的。核心可以從安裝包中取得,如Red Hat、Caldera、Debian 等等,這是一樣的(幾乎包含一切)核心。當更新核心看起來是一件讓人氣餒的事時,使用已經安裝的核心也不壞,更新對於你的系統來說是好的。 -------------------------------------------------------------------------------- 為什麼自找麻煩? 標准的核心安裝是一種嘗試工作(就象許多系統一樣),盡可能安裝一套可用的Linux系統,就這一點而論,核心很膨脹它包含對於一般機器所不需要的代碼。標准安裝也可能沒有一些用戶所需的代碼。 當然,當你購置了新的硬件等你就需要升級你的核心了。在同一個系列中升級通常相當直觀,當你升級時,比如說從1.2.x到2.0.x,這工作正是本文章的范圍,需要有點悟性(哈哈)。最好找一張最新銷售的CD開始——這對於更新到試用的2.1.x核心一樣實用。 -------------------------------------------------------------------------------- 核心的版本號 所有的Linux核心包含由點隔開的三個數字。第一個數是核心的版本。我們現在是第三版(2.),一些人可能使用版本號為1的核心,並且我知道至少還有人在用版本0核心。 第二個號碼是核心的主號,主號也是數字(包括0)表示穩定性。這樣,這些核心將沒有一些BUGS,他們經過相當大量的測試。當某個版本含有一些小BUGS,它們將被升級,以使硬件兼容或加強核心對付黑客。如,核心2.0.30,避開對2.0.29報表BUG的支持,它包含幾個補丁包括保護SYN避免服務器受攻擊。核心帶有零主號是發展中的核心。這些可能未經測試,可能但不經常中斷你正運行的軟件包,有時候,為了更好的工作,用戶需要采用在下一個穩定的核心發表之前的最新的、最好的支持核心。這就向對真理一樣沒有異議,這對系統有本質上的改變。 最後一個號碼是次號它因每一次改動而增加。如果你看到核心版本2.0.8,你知道它是核心2.0,穩定的核心,它已經是第九次發表了(我們從零開始記數)。 -------------------------------------------------------------------------------- 假設 我憎恨作任何假設,它們通常令我心痛。所以我需要提到一些事情那樣我們不會在同樣的遭遇下工作。為了編譯一個核心,你需要一些東西,首先,我假設你已經安裝了2.0.x核心,所有的基礎包也許更多,你還需要安裝gcc 2.7和所有支持gcc的庫。你還需要libc庫和binutils、bin86包(通常是標准銷售版安裝的一部分)。如果你是下栽的或從CD上拷的,你還需要tar和gunzip包,當然你還需要磁盤空間,建議7MB下栽,20MB解壓,更多一些用來編譯。 無須多說,我們研究的許多事情需要以root登錄。如果以非特權用戶下載了核心並且你有/usr/src目錄的寫權力,你仍能在成為root之前做許多事。對於Linux新手,我非常建議盡可能以非特權用戶(type:su -face)使用僅當一些工作必須使用root。總有一天,你將高興有此習慣。謹記,有二種系統管理員,當以root登錄時能不經意的使安裝失事,這樣誰願意做呢。 -------------------------------------------------------------------------------- 獲得/升級源程序 Linxu核心源程序可以從大量的FTP站點和幾乎每一張Linux銷售CD上得到。新手可到ftp.funet.fi最主要的站點上找Linux核心,你可以從該站點上一系列鏡象站點上下栽Linux核心。選擇一個最近的站點有助於減少internet整體通信量。 一旦你獲得源程序,拷入/usr/src目錄。創建一個目錄放置你用tar解壓的源文件。我建議目錄以版本號命名如 linux-2.0.30 或kernel-2.0.30,用以下命令為目錄建立一個叫linux連接 ln -sf linux-2.0.30 linux 我在連接命令中使用了-f因為你已經在/usr/src中有了一個核心源連接,(一些版本的ln(如3.13),強制選項(-f)將不起作用,你不得不必須首先解除連接再建立連接。在版本3.16中運行正確)現在你僅僅有一個問題就是如果linux是一個目錄,不是連接,如果你有這個問題,你不得不在繼續前更改目錄的名字: mv linux linux-2.0.8 現在執行下列命令: tar xzvf linux-kernel-source.tar.gz 我有一習慣總是在tar參數中包括w(等待確認)。下來讓我們看著.tar.gz 或.tgz文件解壓到自己的目錄,用ctrl-C中斷再去掉w繼續命令。這樣一來我能阻止解壓到當前目錄。 一旦你解開了核心,這正是你執行修補程序的最佳時機如果你需要的話。假如你不希望運行2.0.30核心,但你希望使用tcp-sy-cookies.把該補丁(tcp-syn-cookies-pathc-1)拷貝到/usr/src目錄執行以下命令: patch < tcp-syn-cookeis-patch-1 該命令實現修補核心。在/usr/src目錄中尋找以擴展名為.rej的文件。這些文件嚴格的說不是修補文件。它們也許並補重要,但需要細心的閱讀。如果你安裝了Red Hat系統並裝了一些並不是全部的核心源程序,(SPARC,PowerPC,etc.),你將看到一些文件,如果這不是你所需要的,哪就行了。 -------------------------------------------------------------------------------- 准備工作 給你一個忠告,在我們轉到核心源程目錄和開始編譯前,讓我們檢查所需的連接,在你的/usr/include子了目錄有以下連接: asm - /usr/src/linux/include/asm linux - /usr/src/linux/include/linux scsi - /usr/src/linux/include/scsi 現在,你要知到為什麼要標准的文件檢索路徑。如果你不把最新的核心放入/usr/src/linux(通過連接),上面的連接將不會找到目標文件核心編譯將會失敗。 -------------------------------------------------------------------------------- 怎樣進行下一步 一旦萬事俱備,轉到/usr/src/linux。現在你也許想停下細讀一下文檔文件,實際上如果你有些特別的硬件,或幾種光驅驅動程需要自己動手設置,他們通常這樣做,當引導時這些驅動程序將給出警告,這並不礙事他們照常工作少,閱讀擴展名為.txt .h .c的文件。通常我發現他們具有共性且易於配置。如果你不想冒險,你沒必要做。記住你照樣可以解開tar文件(或再次安裝.rpm文件)恢復前的文件。 -------------------------------------------------------------------------------- 開始編譯 我建議首先執行以下命令: make mrproper 當核心源程序在以前條件下這條命令不是必需的,但這培養一個好習慣。這命令保證舊的文件不在使用。 -------------------------------------------------------------------------------- 配置核心 現在,你可以配置核心,首先,你要了解一點關於模塊的知識。楔塊就像你特意插入核心中的某些東西,如果你家中一個小網絡並且有時想用一下(但並不經常),也許你想把網卡編譯成一個模塊。使用這個模塊,機器必運行和存取/libs下的模塊,意思是驅動程序(IDE,SCSI等但必須是NFS支持的網卡),文件系統(通常是ext2但也可以是nfs)和核心類型(最好是elf)必須編譯在內並且不能是模塊,模塊只有核心引導時才起作用,驅動程序(來網絡)的存取,和文件系統安裝。這些文件必須編譯在核心內否則將能安裝啟動分區。如果安裝啟動分區和網絡,你需要網絡系統文件,和己經編譯的網卡。 為什麼要使用模塊?模塊化使核心變的更簡捷,它減少核心釋放大量的受保護的空間。模塊的安裝和卸載使用的空間是可重復分配利用的。如果你打開機器有90%以上的時間用到一個模塊,編譯它。運用這類模塊是浪費內存的,原因是一旦你編譯了楔塊它們同樣將占用大量的內存,核心需要一些代碼來掛上模塊。記住,核心在保護空間運行,但模塊並不是。這麼說,我並不經常使用我的設備。我把它編譯成只支持ext2,ide和elf。而我一直使用網卡,我把其它的編譯成模塊:如out,Java,floppy,iso9960,msdos,minix,vfat,smb,nfs,smc-ultra(ethernet card),serial,printer,sound,ppp,等等。它們許多只是在這或那用上那麼幾分鐘。 下一步是配置核心。這而我們有三種選擇--目的相同,我建議使用一種圖形方法。以前是簡單的輸入:make config。開始一系列提問。而且,如果你答錯了,你只有按ctrl-c從新再來一遍。你甚至不能按一定順序重復,一些問題與以前的提問有關。如果你有絕對的理由不能使用任何一種圖形方式,那碰到麻煩你一定會找我的。 我建議使用make menUConfig 或make xconfig中的一種。假如使用menuconfig,你必須安裝ncurses-dev和tk4-dev庫。如果你沒有裝入上面的庫,而且你又不想用下一種方法,我建議現在就你安裝上面的庫。在稍後你仍然可以卸載它們。 要運行xconfig,你必須安裝配置X,因為X需要大量內存,我安裝,配置X僅僅在一部分時間運行X,當編譯核心時我回到以前的控制台