天天看點

如何編譯Linux的核心

如何編譯Linux的核心. 核心,是一個作業系統的核心。它負責管理系統的程序、記憶體、 裝置驅動程式、檔案和網絡系統,決定着系統的性能和穩定性。Linux作為一個自由軟體, 在廣大愛好者的支援下,核心版本不斷更新。新的核心修訂了舊核心的bug,并增加了許

http://www.phpv.net/article.php/40

如何編譯Linux核心- Linuxer - CSDNBlog

如何編譯Linux核心. 對于linux新手來說,編譯核心相對有一些難度,甚至不知道如何 入手,現在我歸納了一下,寫出這一篇還算比較詳細的步驟,希望能對各位新手有一些幫助。 1、安裝核心如果核心已經安裝(/usr/src/目錄有linux子目錄),跳過。

http://blog.csdn.net/maxiyuan1981/archive/2007/07/30/1716983.aspx

  核心,是一個作業系統的核心。它負責管理系統的程序、記憶體、裝置驅動程式、檔案和網絡系統,決定着系統的性能和穩定性。Linux作為一個自由軟體,在廣 大愛好者的支援下,核心版本不斷更新。新的核心修訂了舊核心的bug,并增加了許多新的特性。如果使用者想要使用這些新特性,或想根據自己的系統度身定制一 個更高效,更穩定的核心,就需要重新編譯核心。本文将以RedHat Linux 6.0(kernel 2.2.5)為作業系統平台,介紹在Linux上進行核心編譯的方法。

  一、 下載下傳新核心的源代碼

  目前,在Internet上提供Linux源代碼的站點有很多,讀者可以選擇一個速度較快的站點下載下傳。筆者是從站點www.kernelnotes.org上下載下傳了Linux的最新開發版核心2.3.14的源代碼,全部代碼被壓縮到一個名叫Linux-2.3.14.tar.gz的檔案中。

  二、 釋放核心源代碼

   由于源代碼放在一個壓縮檔案中,是以在配置核心之前,要先将源代碼釋放到指定的目錄下。首先以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的全部源代碼。

  (二)、将/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

  三、 配置核心

  (一)、啟動核心配置程式。

  # cd /usr/src/linux

  # make config

  除了上面的指令,使用者還可以使用make menuconfig指令啟動一個菜單模式的配置界面。如果使用者安裝了X window系統,還可以執行make xconfig指令啟動X window下的核心配置程式。

  (二)、配置核心

   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”。

  1、 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”,核心将支援對稱多處理器。

  2、 Loadable module support(可加載子產品支援)

  (1)、Enable loadable module support (CONFIG_MODULES) [Y/n/?] 選擇“y”,核心将支援加載子產品。

  (2)、Kernel module loader (CONFIG_KMOD) [N/y/?] 選擇“y”,核心将自動加載那些可加載子產品,否則需要使用者手工加載。

  3、 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”,核心将支援平行口。

  4、 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總線的即插即用裝置。

  5、 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和錄音帶機的支援。

  6、 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:提示符下啟動舊核心。然後查出故障原因,重新編譯新核心即可。

繼續閱讀