歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux綜合 >> Linux內核 >> 實戰linux內核編譯

實戰linux內核編譯

日期:2017/2/27 14:13:38   编辑:Linux內核
  國慶快到了,送給大家一篇文章作禮物吧,也作為在chinaunix這個大家庭中我曾得到過許多熱心朋友的大力支持的回報,下文是我工作中總結的文檔,有些核心參數的調節是為安裝Oracle數據庫而使用,無此方面應用的朋友可以跳過。歡迎轉載,但請注明出處。一、備份重要文件備份以下這些文件可以在系統發生錯誤或崩潰時,能較快速的恢復系統原來的狀態。1、備份內核和啟動文件# cd /# tar cvzf boot.tar.gz boot2、備份系統函數頭文件# cd /usr/include# tar cvzf Linux.tar.gz linux3、備份模塊中的庫文件# cd /lib/modules# tar cvzf 2.4.7-10.tar.gz 2.4.7-10# tar cvzf 2.4.7-10debug.tar.gz 2.4.7-10debug4、備份linux源碼# cd /usr/src# tar cvzf linux-2.4.7-10.tar.gz linux-2.4.7-10# tar cvzf linux-2.4.7-10debug.tar.gz linux-2.4.7-10debug5、備份重要配置目錄# cd /# tar cvzf etc.tar.gz etc二、修改核心參數(PGC2000需要)1、修改與共享內存相關的核心參數# cd /usr/include/linux# vi shm.h把 #define SHMMAX 0X2000000 /*max shared seg size(bytes)*/改為#define SHMMAX 0Xa0000000 /*max shared seg size(bytes)*/2、修改與信號量相關的核心參數# cd /usr/include/linux# vi sem.h把 #define SEMOPM 32 /*<=1 100 max num of ops per semop call*/改為#define SEMOPM 900 /*<=1 100 max num of ops per semop call*/3、修改與消息隊列有關的核心參數# cd /usr/include/linux# vi msg.h找到以下三行(注釋忽略):#define MSGMNI 16#define MSGMAX 8192#define MSGMNB 16384將其修改為:#define MSGMNI 128#define MSGMAX 131072#define MSGMNB 200000004、按上面方法同樣修改/usr/src/linux-2.4.7-10/include/linux下的shm.h、sem.h和msg.h文件。三、下載釋放核心源代碼如果只是修改編譯內核,這一步可以省去。當我們從Internet站點上下載了新的內核文件(如linux-2.4.7-12.tar.gz),這步是必須的。1、用tar命令釋放內核源代碼# cd /usr/src# tar zxvf linux-2.4.7-12.tar.gz文件釋放成功後,在/usr/src目錄下會生成一個linux子目錄。其中包括了源代碼。2、將/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四、配置內核1、刪除源代碼目錄中殘留的.o文件和其它從屬文件。  # cd /usr/src/linux-2.4# make mrproper2、啟動內核配置程序# cd /usr/src/linux-2.4# make xconfig3、配置內核Linux的內核配置程序提供了一系列配置選項。對於每一個配置選項,用戶可以回答"y"、"m"或"n"。其中"y"表示將相應特性的支持或設備驅動程序編譯進內核;"m"表示將相應特性的支持或設備驅動程序編譯成可加載模塊,在需要時,可由系統或用戶自行加入到內核中去;"n"表示內核不提供相應特性或驅動程序的支持。不合理的配置可能造成內核編譯失敗。五、編譯內核1、建立編譯時所需的從屬文件# cd /usr/src/linux-2.4# make dep2、清除內核編譯的目標文件# make clean3、編譯內核# make bzImage (注意大小寫)內核編譯成功後,會在/usr/src/linux/arch/i386/boot目錄中生成一個新內核的映像文件bzImage。如果用make zImage編譯,內核很大的話,系統會提示你使用make bzImage命令來編譯。六、編譯可加載模塊如果用戶在配置內核時設置了可加載模塊,則需要對這些模塊進行編譯,以便將來使用insmod命令進行加載。  # make modules# make modules_install編譯成功後,系統會在/lib/modules目錄下生成一個2.4.7-10custom子目錄,裡面存放著新內核的所有可加載模塊。七、啟動新內核1、將新內核和System.map文件拷貝到/boot目錄下# cp /usr/src/linux-2.4/arch/i386/boot/bzImage /boot/vmlinuz-2.4.7-10custom# cp /usr/src/linux-2.4/System.map /boot/System.map-2.4.7-10custom# cd /boot# rm -f System.map (刪除原來的連接)# ln -s System.map-2.4.7-10custom System.map (重新建立連接)2、配置/etc/lilo.conf文件,在該文件中加入下面幾行:image=/boot/vmlinuz-2.4.7-10customlabel=linux-custominitrd=/boot/initrd-2.4.7-10.imgread-onlyroot=/dev/hda3 (參考lilo.conf文件中現有的配置)並把default=linux改為default=linux-custom3、使新配置生效 # /sbin/lilo4、重新啟動系統 # /sbin/reboot新內核如果不能正常啟動,可以在LILO:提示符下啟動舊內核。然後查出故障原因,重新編譯新內核即可。




Copyright © Linux教程網 All Rights Reserved