Linux核心安裝

來源:互聯網
上載者:User

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繼續命令。這樣一來我能阻止解壓到目前的目錄。
一旦你解開了核心,這正是你執行Hotfix的最佳時機如果你需要的話。假如你不希望運行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,當編譯核心時我回到以前的控制台,因為編譯需要記憶體。我的觀點是xconfig菜單是最好最簡單的途徑來配置核心。在menuconfg,如果你去掉一個選項,它的從選項將不會顯示。在xconfig,如果你去掉所有選項,從選項依舊顯示,它們成灰色顯示。我喜歡它的原因是使我能知道新加了什麼。我可以開啟一個選項得到一個新的從選項來試用一下。
我將花一點文字描述一下核心配置的一些部分,告訴你一些我艱難的)發現的事。
第一節是code-maturity-level選項。僅有的一個問題是你是否想使用開發的驅動程式和代碼。如果你有令你出血的硬體,你可能不得不作出一個選擇。如果你選擇“no”,實驗代碼將成灰色或不顯示。如果你核心尋求通訊產品支援,你可能選擇“no”。
第二節涉及模組,如果你想模組化,在問題1和3選擇“yes”。如果你想使用所有得模組,比如Caldera's OpenLinux的Netwar支援,第二個問題回答“yes'這樣不需要從新編譯模組。
第三節是一般的設定。編譯模組成ELF和編譯支援ELF二進位。不編譯適當的支援”gotcha“是明智的,如果你的機器結構是Pentium或486你將得到高效的代碼,但一個386的核心將運行在32-bit compatible clone;一個Pentium核心將不。為大多機器製作一張緊急啟動盤就象銷售商的安裝盤)最好在386下編譯,而386並不能運行在Pentium 下編譯的核心。
下一個是塊裝置--這兒並不要特別說明什麼。如果你的啟動裝置是IDE硬碟,確定編譯它就行。
下來是網路。對於一些沒有串連網路的使用者,你不必要在這停留,除非你計劃使用電腦撥號連線其它使用者。在這兒,你需要讀懂並照建議的指導使用。
緊接著是SCSI,至於為什麼不直接跟在塊裝置後面我也不知道。如果你的開機磁碟分割是SCSI裝置,不要選擇SCSI模組支援。
在一般的SCSI後是SCSI低級裝置驅動程式。再次重申,模組僅僅是用在不在開機磁碟分割的裝置。
下一節令我們回到再次回到網路,我想你會再這找你特殊的網卡,象其它一樣支援ppp,slip,等等,如果你使用nfs安裝你的啟動裝置,把網卡編譯在內。
對於那些需要ISDN支援的幸運的人,ISDN從選項就需要編譯。
在下一節支援更早的CD-ROM,如果你使用SCSI或IDE CD-ROM,你可以跳過這裡。
下面是檔案系統。同樣,編譯你所需要的,通常是ext2而讓其餘的使用模組。
字元裝置是下一個選項。非串列的滑鼠,支援象PS/2。看一看你滑鼠的鍵。許多雙鍵滑鼠是PS/2,即使它們的串連看起來象串列的。你當然期望最低限度支援串列。列表中支援普通的印表機。
最後第二節經常製造麻煩:它就是音效卡。閱讀協助檔案從列表中小心的選取。確信為你音效卡真確的選擇了I/O和IRQ。音效卡的MPU I/O是0選項。一般是330,如果不對不必擔心。模組的好處就是在核心編譯以後你還能重新編譯、安裝模組並掛上核心。模組是不是很偉大?)
最後一節的一個問題必須這樣回答“no,kernel hacking"。
儲存你的配置並退出。
譯者:以上只是作者使用的核心編譯情況,如果不同請查看你的HOWTO。
我在menuconfig或xconfig的幾個地方修改數字遇到了麻煩,但我確信它是對的。無論如何,我不能改變數字或配置不接受數字,並告訴我非法。列如,把音效卡的預設IRQ從7改變到5,MPU I/O從0到300。如果經曆過這問題,但一切仍很好,不要失望。你剛才存檔退出的檔案是一個可以編輯的文字檔。你可以用你的文字編輯器如: Emacs,vi,CrispLite,joe,等等。設定檔在/usr/src/linux目錄名字是.config。前面的點使普通的ls)無法顯示,加上-a選項就能看見。編輯檔案中在配置時遇到麻煩的數字。然後,make dep 把你的配置資訊從.config傳送到特定的子目錄完成安裝。最後,make clean 準備最後的核心編譯。
編譯核心
現在我們準備編譯核心。這兒有幾個選項來進行該工作:
make zImage
製作基礎的,壓縮的核心它將留在/usr/src/linux/arch/i386/boot目錄名為zImage。
make zlilo
拷貝zImage到根目錄 (除非你編輯上層的Makefile) 運行LILO。如果你用了這項,你不得不確信/etc/lilo.conf是先配置
make zdisk
寫zImage到磁碟片在/dev/fd0 (就是DOS中第一軟碟機A:)。在開始之前你必須有張盤在軟碟機中。你可以同樣用make zImage 然後把它拷貝到磁碟片cp /usr/src/linux/arch/i386/boot/zImage /dev/fd0 記住是高密度的,底密度的720k磁碟將不能啟動核心嘿都這時候了誰還用這玩藝兒,不要告訴我你有)
make boot
和zImage一樣。
make bzImage
使用和zImage一樣的大核心,你要知道使用這項通常提示映象檔案太大而失敗
make bzdisk
使用和zdisk一樣的大核心,你要知道使用這項通常提示映象檔案太大而失敗
其它make選項也是可用的,但是特殊的,並且不在這兒出現。當然如果你需要特別支援,就象RAM disk ,SMP,閱讀適當的文檔,編輯在/usr/src/linux下相應的Makefile也叫作top-level Makefile)。上面我討論的選項和zImage選項一樣基礎,剩下部分是處理make zImage--重建核心最容易的方法。
對於那些想加快進程速度的人將不做其它事情如配置其它應用程式),建議你查看man手冊使用-j選項也許有限制比如5)和-l選項。
如果配置過程中選擇了模組,你可執行以下命令:
make modules
make modules_install
把模組放入預設尋找路徑/lib/modules/2.0.x/,x是核心的次號。如果你已經有了這個子目錄並且它有block,net,scsi, cdrom,等等子目錄。除非你安裝所有的模組,那麼你可以刪掉2.0.x和下面所有的東西,其實也不必刪掉。當模組裝入時,子目錄被建立覆蓋。
你可以簡單的結合使用三條命令:
make zImage:make modules:make modules_install
磁碟插入完成後在回到這,分號使在同一行上的命令分開,並執行每一條命令,這樣你在下一條命令執行前就不必等了。
一旦你的核心重建並且安裝了模組,有幾點必須小心。首先,把你的核心拷貝到root或/boot/或/etc/,隨你想);
cp /usr/src/linux/arch/i386/boot/zImage
同樣你需要把/usr/src/linux/System.map拷貝到同意目錄用作核心的鏡象。改變路徑cd)到/etc目錄配置LILO。這一步很重要。如果我們在新核心中不安裝pointer,它將不啟動。通常,核心安裝叫做vmlinuz。過去Unix使用者共同起了這名字。"z"表示壓縮, "v"和"m"意思是"virtual"(虛擬)和"sticky粘性的)",各自屬於記憶體和磁碟管理。我建議保留vmlinuz核心,直到知道它工作。
編輯/etc/lilo.conf檔案並加入新核心。使用從image=/vmlinuz到下一個或最後的image= 的行。把看到的記錄下來,把第一行改成image=/zImage(假設你的核心在根目錄)為label=.選一個不同的名字,第一個image是預設的。啟動它們有特定的順序。儲存執行命令: lilo
你將看到核心標籤,第一個是星號。如果你沒有看到新核心的標籤或LILO出現錯誤,你需要重新對/etc/lilo.conf工作看LILO協助頁)。
我們已經準備重新引導。這時如果你知道你的系統僅要求一次啟動作準備,你可以執行:
depmod -a 2.0.x
x是正是你重建的核心的次號。這條命令建立一些模組所需的檔案。你當然想確信啟動時不是直接進入xdm.對於Red Hat系統,它的意思是保證檔案/etc/inittab不在第5層運行,或者你記住在啟動時運行。對於Debian系統,你可以輸入:
mv /etc/init.d/xdm /eetc/init.d/xdm.orig
現在把它移回去。
重新啟動新核心
重新啟動機器:
shutdown -r now
我不建議使用暖開機或ctrl+alt+del鍵。在一些情況下,檔案系統不完全卸栽會損壞開啟的檔案。在LILO提示時,如果你需要啟動舊的核心或使用一些參數啟動,如果你沒看見啟動提示,你可以試用shift或ctrl鍵,這樣啟動提示就出現了。一旦出現,按tab看核心標籤。輸入標籤和選擇性參數啟動。通常,在/etc/lilo.conf檔案指定的時間後自動啟動核心。啟動時,你可能看見一些出錯資訊就象SIOCADDR。這常常顯示模組一般是網路模組)沒有引導。處理這事很簡單,如果有此一錯,"VFS,cannot mount root",你就不要在核心中編譯適當的磁碟或檔案系統支援。
發現並修理故障
由於從/etc/initab啟動時有多種分配的方法,很難在本章覆蓋所有可能的原因如你不能正常啟動和它的原因.
首先,運行 depmod -a 確信你有up-to-date,模組從屬檔案(它被建立在特定的目錄).如果你決定從屬時遇到一串錯誤,如果你沒有在配置核心時開啟"Module Versions".這並不完全錯誤,你編譯安裝的模組是好的.檢查/etc/conf.modules檔案中的每行指向/lib/modules都很完全:
/lib/modules/`uname -r`/xx
(注意:uname -r 二邊的~符號,它位於U.S鍵盤左邊的TAB鍵和SHIFT鍵的上面.)
確信kerneld運行,且在啟動進行時早被引導.如果是這樣,系統不需要明確引導模組,核心會處理的.在第一個rc指令碼調用核心時要小心.核心會中止啟動進程,暖開機或用reset鍵或關電源,如果它是在系統知道主機名稱之前.如果這事發生在你生上,你可以重新啟動在LILO時使用-b參數阻止任何rc指令碼使用init.然後,rc的/etc/rc.d/,rc.sysinit和rc.modules檔案.有許多方法可以指出一個目錄如 /etc/modules/~uname -r~ /~uname -v~列出檢索到的啟動模組.你可以把舊的目錄去覆蓋新的.
mkdir /etc/modules/`uname -r` ;cp /etc/modules/2.0.xx/g#1 Thu 3 Sep 1997.\ default /etc/modules/`uname -r`/\ `uname -v`.default""
你的系統將含有不同日期的模組,可能或不使用預設的擴充.在上例特別注意使用~和成對的~,在適當的地方它們是需要一起出現的.一旦你發現了系統的這一關鍵,你就可以啟動一個有特殊功能的系統了.如果你經曆更進一步的問題,最好最直接的地方是,在一個mailing list上面有專家詳細的建議。他們成功的運行著一個特殊的地區通常很高新援助新手,當遇到問題是可以問他們。為什麼這樣,因為他們是一個整體在許多問題上注意並提供協助。祝你在list上好運,如果你的問題還沒有其它人提到,那就自己問吧。首先檢查是否有mail-list archives,這些檔案提供常見的問題答案。
結論
當為你系統編譯定製的核心,對於管理員中的新手來說是一個使人畏縮的挑戰,但花些時間是值得的。你的系統運行將更高效,更重要的是,你會對自己的編譯更滿意。
在一些地方你會遇到麻煩,記住安裝核心後回到LILO,不要覆蓋你的舊核心,這樣你能從LILO提示恢複到其中的一個。在第一次重新啟動時遇到的銷售商明確的問題通常早被解決了。銷售商通常僅使用E-mailt提供協助但他不是支援人員。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.