升級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 --->;Network device support --->Ethernet (10 or 100Mbit) ---><*> AMD PCnet32 PCI support
(3)File system--->(以下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 ---><*>SCSI device support (此項不選的話,下面兩項就選擇不上)
Device Drivers ---><*>SCSI device support ---><*>SCSI disk support
Device Drivers---><8>SCSI device support--->SCSI low-level drivers---><*>; 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 > ../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