Linux 2 6 18核心編譯

2021-05-22 03:11:50 字數 4363 閱讀 1513

4、刪除舊的軟體,方法如下

rpm –e (舊的軟體名,這裡是軟體名,不是軟體包,如mkinitrd-4.1.18-2) --nodeps

# cd /usr/src (進入到/usr/src目錄下,如果已經在/usr/src目錄下,可不執行該命令)

# rm –rf linux (刪除linux資料夾。值得一提的是,如果核心先前從未編譯過,則沒有這個資料夾,此命令列可略過)

# tar jvxf linux-2.6.18.tar.bz2 (解壓新核心)

# ln -s linux-2.6.18 linux (重新生成linux資料夾)

6、安裝module-init-tools工具包

在/usr/src目錄下,依次執行下列命令:

# tar jvxf module-init-tools-3.2.tar.bz2 (解壓module-init-tools)

# cd module-init-tools-3.2 (由/usr/src目錄進入module-init-tools目錄下)

#./configure --prefix=/

# make moveold

# make all install

#./generate-modprobe.conf /etc/modprobe.conf

7、安裝另外三個公升級工具

回到/usr/src目錄下,依次執行下列3個命令來安裝另外三個公升級工具:

# rpm -ivh --nodeps mkinitrd-4.1.18-2.i386.rpm (注意,這裡一定要加入--nodeps引數,下同)

# rpm -ivh --nodeps lvm2-2.00.25-1.01.i386.rpm

如果不更新以上幾個公升級包,在後面編譯核心時會提示以下錯誤:

mkinitrd failed

make[1]: *** [install] error 1

make: *** [install] error 2

8, 進入/usr/src/linux 配置make menuconfig 編譯要選擇的專案錄下。編輯扣exit儲存退出 make進行安裝

(1)loadable module support--->一定要選上「module unloading」一定要選上「automatic kernel module loading」一定要選上,這兩項;

(2)device drivers--->block devices中一定要選上loopback device support;

device drivers--->graphics support」, 一定要選上」 support for frame buffer devices」;

device drivers --->;usb support --->選上」usb mass storage support」(如果是在實環境中,想要更多usb支援,就全選吧。我的是    在虛擬機器中,用不著了)

device drivers --->; network device support --->;ethernet (10 or 100mbit) --->; <*>; amd pcnet32 pci support

(3) file system--->(以下9個選項是關於ext2和ext3檔案系統配置,全部選上)

second extended fs support

ext2 extended attributes

ext2 posix access control lists

ext2 security labels

ext3 journalling file system support

ext3 extended attributes

ext3 posix access control lists

ext3 security labels

jbb (ext3) debugging support

file system--->dos/fat/nt filesystems --->選上「 ntfs file system support」;

file systems --> miscellaneous filesystems ---><*> compressed rom file system support (cramfs)

注意:ext2和ext3檔案系統配置很重要,也是必需的,如果對ext3、ext2檔案的支援直接編譯進核心,在你reboot時機器就會當掉,出現如下錯誤資訊:

kernel panic : no init found ,try passing init = option to kernel.....

或者是:

vfs:cannot open root device "hdxy" or unknow-block(0,0)

kernel panic:vfs:unable to mount root fs on unknown-block(0,0)

或者是:

mount: error 19 mounting ext3

pivotroot: pivot_root(/sysroot,/sysroot/initrd) failed: 2

umount /initrd/proc fail: 2

freeing unused kernel memory: 244k freed

kernel panic – not syncing: no init found. try passing init = option to kernel

注意:make install的時候可能會出現如下錯誤資訊:

no module buslogic found for kernel 2.4.12

mkinitrd failed

此問題一般只出現在scsi硬碟+vmware+redhat架構中,因為buslogic被編譯進了核心而不是乙個module的形式(2.4核心的buslogic模組即使靜態編譯進核心也不行)。解決方式是直接將可以buslogic.o檔案複製過去:

# cp /usr/src/linux-2.6.18/drivers/scsi/buslogic.o /lib/modules/2.6.18/kernel/drivers/scsi

不過別忘記,複製過後再執行一下make install。

(如果make menuconfig時,把buslogic模組選成m--module模式==》就不會出現這個提示。)

9,make安裝後進行下面幾步編譯

# make bzimage (注意大小寫。這一步才真正編譯核心)

核心編譯成功後,會在/usr/src/linux/arch/i386/boot目錄中生成乙個新核心的映像檔案bzimage。如果用make bzimage編譯,核心很大的話,系統會提示你使用make bzimage命令來編譯,所以我直接用make bzimage來編譯。

# make modules (編譯可載入模組)

# make modules_install (安裝可載入模組)

安裝成功後,系統會在/lib/modules目錄下生成乙個2.6.18子目錄,裡面存放著新核心的所有可載入模組。

# make install (安裝新核心)

注意:make install的時候可能會出現如下錯誤資訊:

no module buslogic found for kernel 2.4.12

mkinitrd failed

此問題一般只出現在scsi硬碟+vmware+redhat架構中,因為buslogic被編譯進了核心而不是乙個module的形式(2.4核心的buslogic模組即使靜態編譯進核心也不行)。解決方式是直接將可以buslogic.o檔案複製過去:

# cp /usr/src/linux-2.6.18/drivers/scsi/buslogic.o /lib/modules/2.6.18/kernel/drivers/scsi

不過別忘記,複製過後再執行一下make install。

(如果make menuconfig時,把buslogic模組選成m--module模式--就不會出現這個提示。)

10,到此 :你可以在/boot/grub/grub.con 發現核心自動新增了 選項

從新啟動後 在grub 介面中 可以發現 存在2。6。18 這個專案

讓linux2 6 18支援4G的SD卡

linux 2.6.20.x 以上版本對sd卡有較好支援,可以支援1.0及2.0 sd卡的協議,所以linux2.6.2x 以上的版本都支援大容量 4g 的sd卡,而linux 2.6.1x 對sd卡的支援只能到 2g,大於2g的sd就無法識別.傳送cmd8,檢查卡是否sd2.0。sd1.1是不支援...

公升級linux2 4 20核心到2 6 18

本文記錄了我在winxp下的vmware5.5.3虛擬機器中公升級linux2.4.20核心到2.6.18的過程。飄揚的這篇文章寫的很詳細,只是個別地方還有瑕疵,本文主要就是以該文為藍本,修正了原文中的一些錯誤,並加入了編譯圖示的詳細說明。2 我自己以前寫的核心編譯過程筆記。一 安裝linux系統並...

2 6 18核心ip hdr的問題

今天在centos的虛擬機器下嘗試以前寫的核心程式 2.6核心netfilter包截獲 insmod 時竟然出錯。insmod error inserting simpfilter.ko 1 unknown symbol in module 於是檢視日誌 tail var log messages ...