升級內核2.6.18到2.6.34.1

升級2.6.18到2.6.34.1

最新內核下載地址:http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.34.tar.bz2

首先我們的準備好要用的工具,有如下四個

module-init-tools

mkinitrd

lvm2

device-mapper

可以用rpm -qa *來查詢,如果系統沒有的話請自己到網上搜索並安裝上

系統環境

# uname -r

2.6.18-128.el5

編譯安裝新內核

# tar -jxvf linux-2.6.34.1.tar.bz2 -C /usr/src/

# ln -s linux-2.6.34.1 linux

# cd linux

# cp /boot/config-2.6.18-128.el5 ./.config

# vim .config

CONFIG_SYSFS_DEPRECATED_V2=y #默認該選項爲not set,

否則重啓後報錯

Volume group "VolGroup00" not found

Unalbe to access resume device (/dev/VolGroup00/LogVol00)

mount: could not find filesystem '/dev/root'

setuproot:moving /dev failed: No such file or directory

setuproot:error mounting /proc: No such file or directory

setuproot:error mounting /sys: No such file or directory

switchroot: mount failed: No such file or directory

Kernel panic - not syncing:Attempted to kill init!

+++++++++++++++++++

一定要作不然重啓會報錯,你會後悔的,~~要知道重新編譯一次得多長時間,60多M的內核啊^^

+++++++++++++++++++

# make mrproper

# make menuconfig

(1)Loadable Module support選項中,選上“Module unloading”和“Automatic kernel module loading”這兩項;

(2)Device Drivers--->Block Devices中選上“Loopback device support”;

Device Drivers--->Multi-device support(RAID and LVM)處要選上“device mapper support”;

Device Drivers--->Graphics support,一定要選上“ Support for frame buffer devices”;

Device Drivers --->USB support --->選上“USB Mass Storage support”(如果是在實環境中,想要更多USB支持,就全選吧。我的是在虛擬機中,用不着了)

Device Drivers ---&gt;;Network device support ---&gt;Ethernet (10 or 100Mbit) ---&gt;<*> AMD PCnet32 PCI support

(3)File system---&gt;(以下9個選項是關於ext2和ext3文件系統配置,全部選上,要直接編譯進內核,就是要按Y來選擇,)

Second extended fs support(注意:此處默認是編譯成模塊,在此要按Y鍵)

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

Device Drivers ---&gt;<*>SCSI device support (此項不選的話,下面兩項就選擇不上)

Device Drivers ---&gt;<*>SCSI device support ---&gt;<*>SCSI disk support

Device Drivers---&gt;<8>SCSI device support---&gt;SCSI low-level drivers---&gt;<*>; BusLogic SCSI support

# make bzImage

# make modules

# make modules_install

# make install

此時會出現3個警告,沒有關係,是沒有對系統打補丁造成的

可參考https://bugzilla.redhat.com/show_bug.cgi?id=488991 對內核打相應補丁

sh /usr/src/linux-2.6.34/arch/x86/boot/install.sh 2.6.34 arch/x86/boot/bzImage System.map "/boot"

WARNING: No module dm-mem-cache found for kernel 2.6.27, continuing anyway

WARNING: No module dm-message found for kernel 2.6.27, continuing anyway

WARNING: No module dm-raid45 found for kernel 2.6.27, continuing anyway

下面這幾個步驟一定要做,可省君不少時間呵,

否則重啓報錯

insmod: error inserting ‘/lib/dm-region-hash.ko’: –1 File exits

+++++++++++++++++++++++++++++++

1.解壓initrd

# cp /boot/initrd-2.6.34.img /tmp

# cd /tmp/

# ls

initrd-2.6.34.img

# mkdir newinitrd

# cd newinitrd/

# zcat ../initrd-2.6.34.img |cpio -i

11537 blocks

# ls

bin dev etc init lib proc sbin sys sysroot

2.編輯init,刪掉重複的兩行

echo "Loading dm-region-hash.ko module"

insmod /lib/dm-region-hash.ko

echo "Loading dm-region-hash.ko module"

insmod /lib/dm-region-hash.ko

3.重新打包initrd

# find .|cpio -c -o &gt; ../initrd

11538 blocks

# cd ..

# gzip -9 < initrd > initrd-2.6.34.img

# ls

initrd-2.6.34.img initrd newinitrd

initrd-2.6.34.img就是重新打包的initrd了,然後把initrd.img拷貝到/boot,就可以了,再reboot,就不會有之前的錯誤了.

將init文件的第二行“setquiet” 去掉,boot時就可以打印出initrd在做什麼,功能類似於 sh –x init

這個應該是某個地方配置的有問題,所以纔出現了重複加載的問題,沒時間去細究原因,代價是每次make install後都需要按照上面的步驟修改initrd.img

+++++++++++++++++++++++++++++++

# vim /boot/grub/grub.conf

將default=1改爲default=0(不改的話也可以,只不過重啓之後會默認進入2.6.18內核)

重啓查看我們新安裝好的內核

# uname -r

2.6.34

# service iptables start
Unloading iptables modules:                                [  OK  ]
Applying iptables firewall rules: iptables-restore v1.3.5: iptables-restore: unable to initializetable 'nat'

Error occurred at line: 2
Try `iptables-restore -h' or 'iptables-restore --help' for more information.
                                                           [FAILED]

# service iptables save
Saving firewall rules to /etc/sysconfig/iptables:          [  OK  ]
# service iptables start
Flushing firewall rules:                                   [  OK  ]
Setting chains to policy ACCEPT: filter                    [  OK  ]
Unloading iptables modules:                                [  OK  ]
Applying iptables firewall rules:                          [  OK  ]
Loading additional iptables modules: ip_conntrack_netbios_n[FAILED]
# service iptables start
Flushing firewall rules:                                   [  OK  ]
Setting chains to policy ACCEPT: filter                    [  OK  ]
Unloading iptables modules:                                [  OK  ]
Applying iptables firewall rules:                          [  OK  ]
Loading additional iptables modules: ip_conntrack_netbios_n[FAILED]

# vim /etc/sysconfig/iptables-config

IPTABLES_MODULES=”ip_conntrack_netbios_ns”     =====註釋掉

# service iptables start
Flushing firewall rules:                                   [  OK  ]
Setting chains to policy ACCEPT: filter                    [  OK  ]
Unloading iptables modules:                                [  OK  ]
Applying iptables firewall rules:                          [  OK  ]
[root@song linux]# service iptables restart
Flushing firewall rules:                                   [  OK  ]
Setting chains to policy ACCEPT: filter                    [  OK  ]
Unloading iptables modules:                                [  OK  ]
Applying iptables firewall rules:                          [  OK  ]

 

Ok

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章