Linux內核編譯和參數配置

內核
內核,是一個操做系統的核心。它負責管理系統的進程、內存、設備驅動程序、文件和網絡系統,決定着系統的性能和穩定性。Linux做爲一個自由軟件,在廣大愛好者的支持下,內核版本不斷更新。新的內核修訂了舊內核的bug,並增長了許多新的特性。若是用戶想要使用這些新特性,或想根據本身的系統度身定製一個更高效,更穩定的內核,就須要從新編譯內核。本文將以RedHat Linux 6.0(kernel 2.2.5)爲操做系統平臺,介紹在Linux上進行內核編譯的方法。linux

1、 下載新內核的源代碼網絡

內核,是一個操做系統的核心。它負責管理系統的進程、內存、設備驅動程序、文件和網絡系統,決定着系統的性能和穩定性。Linux做爲一個自由軟件,在廣大愛好者的支持下,內核版本不斷更新。新的內核修訂了舊內核的bug,並增長了許多新的特性。若是用戶想要使用這些新特性,或想根據本身的系統度身定製一個更高效,更穩定的內核,就須要從新編譯內核。本文將以RedHat Linux 6.0(kernel 2.2.5)爲操做系統平臺,介紹在Linux上進行內核編譯的方法。less

  目前,在Internet上提供Linux源代碼的站點有不少,讀者能夠選擇一個速度較快的站點下載。筆者是從站點www.kernelnotes.org上下載了Linux的最新開發版內核2.3.14的源代碼,所有代碼被壓縮到一個名叫Linux-2.3.14.tar.gz的文件中。socket

  2、 釋放內核源代碼性能

  因爲源代碼放在一個壓縮文件中,所以在配置內核以前,要先將源代碼釋放到指定的目錄下。首先以root賬號登陸,而後進入/usr/src子目錄。若是用戶在安裝Linux時,安裝了內核的源代碼,則會發現一個linux-2.2.5的子目錄。該目錄下存放着內核2.2.5的源代碼。此外,還會發現一個指向該目錄的連接linux。刪除該鏈接,而後將新內核的源文件拷貝到/usr/src目錄中。測試

  (一)、用tar命令釋放內核源代碼操作系統

  # cd /usr/src   # tar -zxvf Linux-2.3.14.tar.gz /   文件釋放成功後,在/usr/src目錄下會生成一個linux子目錄。其中包含了內核2.3.14的所有源代碼。code

  (二)、將/usr/include/asm、/usr/inlude/linux、/usr/include/scsi連接到/usr/src/linux/include目錄下的對應目錄中。   # cd /usr/include   # rm -Rf asm linux   # ln -s /usr/src/linux/include/asm-i386 asm   # ln -s /usr/src/linux/include/linux linux   # ln -s /usr/src/linux/include/scsi scsiorm

  (三)、刪除源代碼目錄中殘留的.o文件和其它從屬文件。server

  # cd /usr/src/linux   # make mrproper

  3、 配置內核

  (一)、啓動內核配置程序。   # cd /usr/src/linux   # make config   除了上面的命令,用戶還可使用make menuconfig命令啓動一個菜單模式的配置界面。若是用戶安裝了X window系統,還能夠執行make xconfig命令啓動X window下的內核配置程序。

  (二)、配置內核

  Linux的內核配置程序提供了一系列配置選項。對於每個配置選項,用戶能夠回答"y"、"m"或"n"。其中"y"表示將相應特性的支持或設備驅動程序編譯進內核;"m"表示將相應特性的支持或設備驅動程序編譯成可加載模塊,在須要時,可由系統或用戶自行加入到內核中去;"n"表示內核不提供相應特性或驅動程序的支持。因爲內核的配置選項很是多,本文只介紹一些比較重要的選項。

  一、Code maturity level options(代碼成熟度選項)

  Prompt for development and/or incomplete code/drivers (CONFIG_EXPERIMENTAL) [N/y/?] 若是用戶想要使用還處於測試階段的代碼或驅動,能夠選擇「y」。若是想編譯出一個穩定的內核,則要選擇「n」。

  一、 Processor type and features(處理器類型和特點)

  (1)、Processor family (386, 486/Cx486, 586/K5/5x86/6x86, Pentium/K6/TSC, PPro/6x86MX) [PPro/6x86MX] 選擇處理器類型,缺省爲Ppro/6x86MX。   (2)、Maximum Physical Memory (1GB, 2GB) [1GB] 內核支持的最大內存數,缺省爲1G。   (3)、Math emulation (CONFIG_MATH_EMULATION) [N/y/?] 協處理器仿真,缺省爲不仿真。   (4)、MTRR (Memory Type Range Register) support (CONFIG_MTRR) [N/y/?]

  選擇該選項,系統將生成/proc/mtrr文件對MTRR進行管理,供X server使用。

  (5)、Symmetric multi-processing support (CONFIG_SMP) [Y/n/?] 選擇「y」,內核將支持對稱多處理器。

  二、 Loadable module support(可加載模塊支持)

  (1)、Enable loadable module support (CONFIG_MODULES) [Y/n/?] 選擇「y」,內核將支持加載模塊。   (2)、Kernel module loader (CONFIG_KMOD) [N/y/?] 選擇「y」,內核將自動加載那些可加載模塊,不然須要用戶手工加載。

  三、 General setup(通常設置)

  (1)、Networking support (CONFIG_NET) [Y/n/?] 該選項設置是否在內核中提供網絡支持。   (2)、PCI support (CONFIG_PCI) [Y/n/?] 該選項設置是否在內核中提供PCI支持。   (3)、PCI access mode (BIOS, Direct, Any) [Any] 該選項設置Linux探測PCI設備的方式。選擇「BIOS」,Linux將使用BIOS;選擇「Direct」,Linux將不經過BIOS;選擇「Any」,Linux將直接探測PCI設備,若是失敗,再使用BIOS。   (4)Parallel port support (CONFIG_PARPORT) [N/y/m/?] 選擇「y」,內核將支持平行口。

  四、 Plug and Play configuration(即插即用設備支持)

  (1)、Plug and Play support (CONFIG_PNP) [Y/m/n/?] 選擇「y」,內核將自動配置即插即用設備。   (2)、ISA Plug and Play support (CONFIG_ISAPNP) [Y/m/n/?] 選擇「y」,內核將自動配置基於ISA總線的即插即用設備。   五、 Block devices(塊設備)

  (1)、Normal PC floppy disk support (CONFIG_BLK_DEV_FD) [Y/m/n/?] 選擇「y」,內核將提供對軟盤的支持。   (2)、Enhanced IDE/MFM/RLL disk/cdrom/tape/floppy support (CONFIG_BLK_DEV_IDE) [Y/m/n/?] 選擇「y」,內核將提供對加強IDE硬盤、CDROM和磁帶機的支持。

  六、 Networking options(網絡選項)

  (1)、Packet socket (CONFIG_PACKET) [Y/m/n/?] 選擇「y」,一些應用程序將使用Packet協議直接同網絡設備通信,而不經過內核中的其它中介協議。   (2)、Network firewalls (CONFIG_FIREWALL) [N/y/?] 選擇「y」,內核將支持防火牆。   (3)、TCP/IP networking (CONFIG_INET) [Y/n/?] 選擇「y」,內核將支持TCP/IP協議。   (4)The IPX protocol (CONFIG_IPX) [N/y/m/?] 選擇「y」,內核將支持IPX協議。   (5)、Appletalk DDP (CONFIG_ATALK) [N/y/m/?] 選擇「y」,內核將支持Appletalk DDP協議。

  八、SCSI support(SCSI支持)

  若是用戶要使用SCSI設備,可配置相應選項。

  九、Network device support(網絡設備支持)   Network device support (CONFIG_NETDEVICES) [Y/n/?] 選擇「y」,內核將提供對網絡驅動程序的支持。   十、Ethernet (10 or 100Mbit)(10M或100M以太網)

  在該項設置中,系統提供了許多網卡驅動程序,用戶只要選擇本身的網卡驅動就能夠了。此外,用戶還能夠根據須要,在內核中加入對FDDI、PPP、SLIP和無線LAN(Wireless LAN)的支持。

  十一、Character devices(字符設備)

  (1)、Virtual terminal (CONFIG_VT) [Y/n/?] 選擇「y」,內核將支持虛擬終端。   (2)、Support for console on virtual terminal (CONFIG_VT_CONSOLE) [Y/n/?]   選擇「y」,內核可將一個虛擬終端用做系統控制檯。   (3)、Standard/generic (dumb) serial support (CONFIG_SERIAL) [Y/m/n/?]   選擇「y」,內核將支持串行口。 (4)、Support for console on serial port (CONFIG_SERIAL_CONSOLE) [N/y/?]   選擇「y」,內核可將一個串行口用做系統控制檯。

  十二、Mice(鼠標)

  PS/2 mouse (aka "auxiliary device") support (CONFIG_PSMOUSE) [Y/n/?] 若是用戶使用的是PS/2鼠標,則該選項應該選擇「y」。

  1三、Filesystems(文件系統)   (1)、Quota support (CONFIG_QUOTA) [N/y/?] 選擇「y」,內核將支持磁盤限額。   (2)、Kernel automounter support (CONFIG_AUTOFS_FS) [Y/m/n/?] 選擇「y」,內核將提供對automounter的支持,使系統在啓動時自動 mount遠程文件系統。   (3)、DOS FAT fs support (CONFIG_FAT_FS) [N/y/m/?] 選擇「y」,內核將支持DOS FAT文件系統。   (4)、ISO 9660 CDROM filesystem support (CONFIG_ISO9660_FS) [Y/m/n/?]   選擇「y」,內核將支持ISO 9660 CDROM文件系統。   (5)、NTFS filesystem support (read only) (CONFIG_NTFS_FS) [N/y/m/?]   選擇「y」,用戶就能夠以只讀方式訪問NTFS文件系統。

  (6)、/proc filesystem support (CONFIG_PROC_FS) [Y/n/?] /proc是存放Linux系統運行狀態的虛擬文件系統,該項必須選擇「y」。

  (7)、Second extended fs support (CONFIG_EXT2_FS) [Y/m/n/?] EXT2是Linux的標準文件系統,該項也必須選擇「y」。

  1四、Network File Systems(網絡文件系統)   (1)、NFS filesystem support (CONFIG_NFS_FS) [Y/m/n/?] 選擇「y」,內核將支持NFS文件系統。   (2)、SMB filesystem support (to mount WfW shares etc.) (CONFIG_SMB_FS)   選擇「y」,內核將支持SMB文件系統。   (3)、NCP filesystem support (to mount NetWare volumes) (CONFIG_NCP_FS)   選擇「y」,內核將支持NCP文件系統。

  1五、Partition Types(分區類型)

  該選項支持一些不太經常使用的分區類型,用戶若是須要,在相應的選項上選擇「y」便可。   1六、Console drivers(控制檯驅動)

  VGA text console (CONFIG_VGA_CONSOLE) [Y/n/?] 選擇「y」,用戶就能夠在標準的VGA顯示方式下使用Linux了。

  1七、Sound(聲音)

  Sound card support (CONFIG_SOUND) [N/y/m/?] 選擇「y」,內核就可提供對聲卡的支持。

  1八、Kernel hacking(內核監視)

  Magic SysRq key (CONFIG_MAGIC_SYSRQ) [N/y/?] 選擇「y」,用戶就能夠對系統進行部分控制。通常狀況下選擇「n」。

  4、 編譯內核

  (一)、創建編譯時所需的從屬文件

  # cd /usr/src/linux

  # make dep

  (二)、清除內核編譯的目標文件

  # make clean

  (三)、編譯內核

  # make zImage

  內核編譯成功後,會在/usr/src/linux/arch/i386/boot目錄中生成一個新內核的映像文件zImage。若是編譯的內核很大的話,系統會提示你使用make bzImage命令來編譯。這時,編譯程序就會生成一個名叫bzImage的內核映像文件。

  (四)、編譯可加載模塊

  若是用戶在配置內核時設置了可加載模塊,則須要對這些模塊進行編譯,以便未來使用insmod命令進行加載。

  # make modules

  # make modelus_install

  編譯成功後,系統會在/lib/modules目錄下生成一個2.3.14子目錄,裏面存放着新內核的全部可加載模塊。

  5、 啓動新內核

  (一)、將新內核和System.map文件拷貝到/boot目錄下

  # cp /usr/src/linux/arch/i386/boot/bzImage /boot/vmlinuz-2.3.14

  # cp /usr/src/linux/System.map /boot/System.map-2.3.14

  # cd /boot

  # rm -f System.map

  # ln -s System.map-2.3.14 System.map

  (二)、配置/etc/lilo.conf文件。在該文件中加入下面幾行:

  default=linux-2.3.14

  image=/boot/vmlinuz-2.3.14

  label=linux-2.3.14

  root=/dev/hda1

  read-only

  (三)、使新配置生效

  # /sbin/lilo

  (四)、從新啓動系統   # /sbin/reboot   新內核若是不能正常啓動,用戶能夠在LILO:提示符下啓動舊內核。而後查出故障緣由,從新編譯新內核便可。

相關文章
相關標籤/搜索