歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux綜合 >> Linux資訊 >> 更多Linux >> Linux核心安裝

Linux核心安裝

日期:2017/2/27 9:21:44   编辑:更多Linux
  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/asmlinux - /usr/src/linux/include/linuxscsi - /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 modulesmake 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提供幫助但他不是技術支持。




Copyright © Linux教程網 All Rights Reserved