linux內核配置

如下內容轉自chinaunix的s270768095,,感受不錯 收藏一下(ps:雖然感受大部份內容似曾相識 - -|) linux

 

內核配置過程比較煩瑣,可是配置的適當與否與往後linux的運行直接相關,有必要了解一下一些主要的且常常用到的選項的設置。
  
配置內核能夠根據須要與愛好使用下面命令中的一個: git

#make config(基於文本的最爲傳統的配置界面,不推薦使用)
#make menuconfig(基於文本選單的配置界面,字符終端下推薦使用)
#make xconfig(基於圖形窗口模式的配置界面,Xwindow下推薦使用)
#make oldconfig(若是隻想在原來內核配置的基礎上修改一些小地方,會省去很多麻煩) 網絡

  這三個命令中,make xconfig的界面最爲友好,若是你可使用Xwindow,那麼就推薦你使用這個命令,界面以下: less

  若是你不能使用Xwindow,那麼就使用make menuconfig好了。界面雖然比上面一個差點,總比make config的要好多了,下圖爲make menuconfig的界面: ide


  選擇相應的配置時,有三種選擇,它們分別表明的含義以下:
  Y--將該功能編譯進內核
  N--不將該功能編譯進內核
  M--將該功能編譯成能夠在須要時動態插入到內核中的模塊
  若是使用的是make xconfig,使用鼠標就能夠選擇對應的選項。若是使用的是 make menuconfig,則須要使用空格鍵進行選取。你會發如今每個選項前都有個括號, 但有的是中括號有的是尖括號,還有一種圓括號。用空格鍵選擇時能夠發現,中括號裏要麼是空,要麼是"*",而尖括號裏能夠是空,"*"和"M"。這表示前者對應的項要麼不要,要麼編譯到內核裏;後者則多同樣選擇,能夠編譯成模塊。而圓括號的內容是要你在所提供的幾個選項中選擇一項。
  在編譯內核的過程當中,最煩雜的事情就是這步配置工做了,不少新手都不清楚到底該如何選取這些選項。實際上在配置時,大部分選項可使用其缺省值,只有小部分須要根據用戶不一樣的須要選擇。選擇的原則是將與內核其它部分關係較遠且不常用的部分功能代碼編譯成爲可加載模塊,有利於減少內核的長度,減少內核消耗的內存,簡化該功能相應的環境改變時對內核的影響;不須要的功能就不要選;與內核關心緊密並且常用的部分功能代碼直接編譯到內核中。 oop

至於選項,由於比較複雜,只是簡單作一介紹,編譯時應視具體狀況,參考幫助的內容再加以選擇。 unix

1. Code maturity level options
  代碼成熟等級。此處只有一項:prompt for development and/or incomplete code/drivers,若是你要試驗如今仍處於實驗階段的功能,好比khttpd、IPv6等,就必須把該項選擇爲Y了;不然能夠把它選擇爲N。 code

2. Loadable module support
  對模塊的支持。這裏面有三項: orm

  Enable loadable module support:除非你準備把全部須要的內容都編譯到內核裏面,不然該項應該是必選的。
  Set version inFORMation on all module symbols:能夠不選它。
  Kernel module loader:讓內核在啓動時有本身裝入必需模塊的能力,建議選上。 視頻

3. Processor type and features
  CPU類型。內容蠻多的,不一一介紹了,有關的幾個以下:

  Processor family:根據你本身的狀況選擇CPU類型。
  High Memory Support:大容量內存的支持。能夠支持到4G、64G,通常能夠不選。
  Math emulation:協處理器仿真。協處理器是在386時代的寵兒,如今早已不用了。
  MTTR support:MTTR支持。可不選。
  Symmetric multi-processing support:對稱多處理支持。除非你富到有多個CPU,不然就不用選了。

4. General setup
  這裏是對最普通的一些屬性進行設置。這部份內容很是多,通常使用缺省設置就能夠了。下面介紹一下常用的一些選項:

  Networking support:網絡支持。必須,沒有網卡也建議你選上。
  PCI support:PCI支持。若是使用了PCI的卡,固然必選。
  PCI access mode:PCI存取模式。可供選擇的有BIOS、Direct和Any,選Any吧。
  Support for hot-pluggabel devices:熱插拔設備支持。支持的不是太好,可不選。
  PCMCIA/CardBus support:PCMCIA/CardBus支持。有PCMCIA就必選了。
  System V IPC
  BSD Process Accounting
  Sysctl support:以上三項是有關進程處理/IPC調用的,主要就是System V和BSD兩種風格。若是你不是使用BSD,就按照缺省吧。
  Power Management support:電源管理支持。
  Advanced Power Management BIOS support:高級電源管理BIOS支持。

5. Memory Technology Device(MTD)
  MTD設備支持。可不選。

6. Parallel port support
  並口支持。若是不打算使用串口,就別選了。

7. Plug and Play configuration
  即插即用支持。雖然linux對即插即用目前支持的不如Windows好,可是仍是選上吧,這樣你能夠拔下鼠標之類的體驗一下Linux下即插即用的感受。

8. Block devices
  塊設備支持。這個就得針對本身的狀況來選了,簡單說明一下吧:

  Normal PC floppy disk support:普通PC軟盤支持。這個應該必選。
  XT hard disk support:
  Compaq SMART2 support:
  Mulex DAC960/DAC1100 PCI RAID Controller support:RAID鏡像用的。
  Loopback device support:
  Network block device support:網絡塊設備支持。若是想訪問網上鄰居的東西,就選上。
  Logical volume manager(LVM)support:邏輯卷管理支持。
  Multiple devices driver support:多設備驅動支持。
  RAM disk support:RAM盤支持。

9. Networking options
  網絡選項。這裏配置的是網絡協議。內容太多了,不一一介紹了,本身看吧,若是你對網絡協議有所瞭解的話,應該能夠看懂的。若是懶得看,使用缺省選項(確定要選中TCP/IP networking哦)就能夠了。讓咱們看看,TCP/IP、ATM、IPX、DECnet、Appletalk……支持的協議好多哦,IPv6也支持了,Qos and/or fair queueing(服務質量公平調度)也支持了,還有kHTTPd,不過這些都還在實驗階段。

10. Telephony Support
  電話支持。linux下能夠支持電話卡,這樣你就能夠在IP上使用普通的電話提供語音服務了。記住,電話卡可和modem沒有任何關係哦。

11. ATA/IDE/MFM/RLL support
  這個是有關各類接口的硬盤/光驅/磁帶/軟盤支持的,內容太多了,使用缺省的選項吧,若是你使用了比較特殊的設備,好比PCMCIA等,就到裏面本身找相應的選項吧。

12. SCSI support
  SCSI設備的支持。我沒有SCSI的設備,因此根本就不用選,若是你用了SCSI的硬盤/光驅/磁帶等設備,本身找好了。

13. Fusion MPT device support
  須要Fusion MPT兼容PCI適配器,不用選。

14. I2O device support
  須要I2O接口適配器支持,在智能Input/Output(I2O)體系接口中使用。

15. Network device support
  網絡設備支持。上面選好協議了,如今該選設備了,可想而知,內容確定多得很。還好還好,裏面大概分類了,有ARCnet設備、Ethernet(10 or 100 Mbit)、Ethernet(1000Mbit)、Wireless LAN(non-hamradio)、Token Ring device、Wan interfaces、PCMCIA network device support幾大類。我用的是10/100M的以太網,看來只須要選則這個了。仍是10/100M的以太網設備熟悉,內容雖然多,一眼就能夠看到我所用的RealTeck RTL-8139 PCI Fast Ethernet Adapter support,爲了省得麻煩,編譯到內核裏面好了,不選M了,選Y。耐心點,通常說來你都能找到本身用的網卡。若是沒有,你只好本身到廠商那裏去要驅動了。

16. Amateur Radio support
  配置業餘無線廣播。

17. IrDA(infrared)support
  紅外線支持。

18. ISDN subsystem
  若是你使用ISDN上網,這個就必不可少了。

19. Old CD-ROM drivers(not SCSI、not IDE)
  作的可真周到,原來那些非SCSI/IDE口的光驅誰還在用啊,本身選吧,用IDE的CD-ROM不用選。

20. Character devices
  字符設備。這個內容又太多了,先使用缺省設置,須要的話本身就修改。把大類介紹一下吧:

  I2C support:I2C是Philips極力推進的微控制應用中使用的低速串行總線協議。若是你要選擇下面的Video For linux,該項必選。
  Mice:鼠標。如今能夠支持總線、串口、PS/二、C&T 82C710 mouse port、PC110 digitizer pad,本身根據須要選擇。
  Joysticks:手柄。即便在linux下把手柄驅動起來意義也不是太大,遊戲太少了。
  Watchdog Cards:雖然稱爲Cards,這個能夠用純軟件來實現,固然也有硬件的。若是你把這個選中,那麼就會在你的/dev下建立一個名爲watchdog的文件,它能夠記錄你的系統的運行狀況,一直到系統從新啓動的1分鐘左右。有了這個文件,你就能夠恢復系統到重啓前的狀態了。
  Video For linux:支持有關的音頻/視頻卡。
  Ftape, the floppy tape device driver:
  PCMCIA character device support:

21. File systems
  文件系統。內容又太多了,老法子,在缺省選項的基礎上進行修改。介紹如下幾項:

  Quota support:Quota能夠限制每一個用戶可使用的硬盤空間的上限,在多用戶共同使用一臺主機的狀況中十分有效。
  DOS FAT fs support:DOS FAT文件格式的支持,能夠支持FAT1六、FAT32。
  ISO 9660 CD-ROM file system support:光盤使用的就是ISO 9660的文件格式。
  NTFS file system support:ntfs是NT使用的文件格式。
  /proc file system support:/proc文件系統是linux提供給用戶和系統進行交互的通道,建議選上,不然有些功能無法正確執行。

  還有另外三個大類都歸到這兒了:Network File Systems(網絡文件系統)、Partition Types(分區類型)、Native Language Support(本地語言支持)。值得一提的是Network File Systems裏面的兩種:NFS和SMB分別是linux和Windows相互以網絡鄰居的形式訪問對方所使用的文件系統,根據須要加以選擇。

22. Console drivers
  控制檯驅動。通常使用VGA text console就能夠了,標準的80*25的文本控制檯。

23. Sound
  聲卡驅動。若是你能在列表中找到聲卡驅動那天然最好,不然就試試OSS了。

24. USB supprot
  USB支持。不少USB設備,好比鼠標、調制解調器、打印機、掃描儀等,在linux均可以獲得支持,根據須要自行選擇。

25. Kernel hacking
  配置了這個,即便在系統崩潰時,你也能夠進行必定的工做了。普通用戶是用不着這個功能的。

  配置完後,存盤退出,固然你也能夠把如今的配置文件保存起來,這樣下次再配置的時候就省力氣了。

接下來是編譯,輸入如下命令。

#make dep
#make clean
#make bzImage或make zImage
#make modules
#make modules_install
#depmod -a

  第一個命令make dep實際上讀取配置過程生成的配置文件,來建立對應於配置的依賴關係樹,從而決定哪些須要編譯而那些不須要;第二命令make clean完成刪除前面步驟留下的文件,以免出現一些錯誤;make zImage和make bzImage則實現徹底編譯內核,兩者生成的內核都是使用gzip壓縮的,只要使用一個就夠了,它們的區別在於使用make bzImage能夠生成大一點的內核。建議你們使用make bzImage命令。
  後面三個命令只有在你進行配置的過程當中,在回答Enable loadable module support (CONFIG_MODULES)時選了"Yes"纔是必要的,make modules和make modules_install分別生成相應的模塊和把模塊拷貝到須要的目錄中。
  嚴格說來,depmod -a命令和編譯過程並無關係,它是生成模塊間的依賴關係,這樣你啓動新內核以後,使用modprobe命令加載模塊時就能正確地定位模塊。

更新

  通過以上的步驟,咱們終於獲得了新版本的內核。爲了可以使用新版本的內核,咱們還須要作一些改動:

#cp /usr/src/linux/System.map /boot/System.map-2.4.18
#cp /usr/src/linux/arch/i386/bzImage /boot/vmlinuz-2.4.18

  以上這兩個文件是咱們剛纔編譯時新生成的。下面修改/boot下的兩個連接System.map和vmlinuz,使其指向新內核的文件:

#cd /boot;rm -f System.map vmlinuz
#ln -s vmlinuz-2.4.18 vmlinuz
#ln -s System.map-2.4.18 System.map

7、修改啓動管理器

  若是用LILO,修改/etc/lilo.conf,添加如下項:

image=/boot/vmlinuz-2.4.18
label=linux240
read-only
root=/dev/hda2

  其中root=/dev/hda2一行要根據須要自行加以修改。
  運行:

#/sbin/lilo -v

  確認對/etc/lilo.conf的編輯無誤,如今從新啓動系統:

#shutdown -r now

若是是用Grub啓動管理器,則添加以下幾項便可。

title Red Hat linux (2.4.18)
root (hd0,0)
kernel /vmlinuz-2.4.18 ro root=/dev/hda2

Grub不需再次調用命令,自動生效。

重啓之後就能夠用新內核了

相關文章
相關標籤/搜索