編譯安裝linux內核步驟


編譯安裝linux內核步驟:

一.獲取內核源碼

  源碼網址:www.kernel.org

二.解壓內核源碼

  首先以root帳號登錄,然后進入/usr/src子目錄。如果用戶在安裝Linux時,安裝了內核的源代碼,則會發現一個linux-x.y.z的子目錄。該目錄下存放着內核x.y.z的源代碼。此外,還會發現一個指向該目錄的鏈接linux。刪除該連接,然后將新內核的源文件拷貝到/usr/src目錄中,並解壓:
     # tar zxvf Linux-2.3.14.tar.gz 

  文件釋放成功后,在/usr/src目錄下會生成一個linux子目錄。其中包含了內核2.3.14的全部源代碼。  將/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 scsi 

      刪除源代碼目錄中殘留的.o文件和其它從屬文件。 
  # cd /usr/src/linux 
  # make mrproper 

三.增量補丁

  有時不需要完全重新安裝,只需打增量補丁,類似升級,在內核源碼樹根目錄運行:

   patch-p1< ../patch-x.y.z

四.內核源碼樹目錄:
arch:包含和硬件體系結構相關的代碼,每種平台占一個相應的目錄。和32位PC相關的代碼存放在i386目錄下,其中比較重要的包括kernel(內核核心部分)、mm(內存管理)、math-emu(浮點單元仿真)、lib(硬件相關工具函數)、boot(引導程序)、pci(PCI總線)和power(CPU相關狀態)。
block:部分塊設備驅動程序。
crypto:常用加密和散列算法(如AES、SHA等),還有一些壓縮和CRC校驗算法。
Documentation:關於內核各部分的通用解釋和注釋。
drivers:設備驅動程序,每個不同的驅動占用一個子目錄。
fs:各種支持的文件系統,如ext、fat、ntfs等。
include:頭文件。其中,和系統相關的頭文件被放置在linux子目錄下。
init:內核初始化代碼(注意不是系統引導代碼)。
ipc:進程間通信的代碼。
kernel:內核的最核心部分,包括進程調度、定時器等,和平台相關的一部分代碼放在arch/*/kernel目錄下。
lib:庫文件代碼。
mm:內存管理代碼,和平台相關的一部分代碼放在arch/*/mm目錄下。
net:網絡相關代碼,實現了各種常見的網絡協議。
scripts:用於配置內核文件的腳本文件。
security:主要是一個SELinux的模塊。
sound:常用音頻設備的驅動程序等。
usr:實現了一個cpio。
在i386體系下,系統引導將從arch/i386/kernel/head.s開始執行,並進而轉移到init/main.c中的main()函數初始化內核。

五.配置內核

# cd /usr/src/linux 

    內核配置方法有三種:

(1)命令行:  make  config
(2)菜單模式的配置界面:  make menuconfig

  (3) X window:make xconfig

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

  1、Code maturity level options(代碼成熟度選項) 
  Prompt for development and/or incomplete code/drivers (CONFIG_EXPERIMENTAL) [N/y/?] 如果用戶想要使用還處於測試階段的代碼或驅動,可以選擇“y”。如果想編譯出一個穩定的內核,則要選擇“n”。 
    2、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”,內核將支持對稱多處理器。 
  3、 Loadable module support(可加載模塊支持) 
  (1)、Enable loadable module support (CONFIG_MODULES) [Y/n/?] 選擇“y”,內核將支持加載模塊。 
  (2)、Kernel module loader (CONFIG_KMOD) [N/y/?] 選擇“y”,內核將自動加載那些可加載模塊,否則需要用戶手工加載。 
  4、 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”,內核將支持平行口。 
  5、 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總線的即插即用設備。 
  6、 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和磁帶機的支持。 
  7、 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協議。 
  8、SCSI support(SCSI支持) 
  如果用戶要使用SCSI設備,可配置相應選項。 
  9、Network device support(網絡設備支持) 
  Network device support (CONFIG_NETDEVICES) [Y/n/?] 選擇“y”,內核將提供對網絡驅動程序的支持。 
  10、Ethernet (10 or 100Mbit)(10M或100M以太網) 
  在該項設置中,系統提供了許多網卡驅動程序,用戶只要選擇自己的網卡驅動就可以了。此外,用戶還可以根據需要,在內核中加入對FDDI、PPP、SLIP和無線LAN(Wireless LAN)的支持。 
  11、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”,內核可將一個串行口用作系統控制台。 
  12、Mice(鼠標) 
  PS/2 mouse (aka "auxiliary device") support (CONFIG_PSMOUSE) [Y/n/?] 如果用戶使用的是PS/2鼠標,則該選項應該選擇“y”。 
  13、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”。 
  14、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文件系統。 
  15、Partition Types(分區類型) 
  該選項支持一些不太常用的分區類型,用戶如果需要,在相應的選項上選擇“y”即可。 
  16、Console drivers(控制台驅動) 
  VGA text console (CONFIG_VGA_CONSOLE) [Y/n/?] 選擇“y”,用戶就可以在標准的VGA顯示方式下使用Linux了。 
  17、Sound(聲音) 
  Sound card support (CONFIG_SOUND) [N/y/m/?] 選擇“y”,內核就可提供對聲卡的支持。 
  18、Kernel hacking(內核監視) 
  Magic SysRq key (CONFIG_MAGIC_SYSRQ) [N/y/?] 選擇“y”,用戶就可以對系統進行部分控制。一般情況下選擇“n”。 

 

 六、 編譯內核 
  (一)、建立編譯時所需的從屬文件 
  # 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子目錄,里面存放着新內核的所有可加載模塊。 
七、 啟動新內核 
  (一)、將新內核和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:提示符下啟動舊內核。然后查出故障原因,重新編譯新內核即可。

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM