#(据众多高手博客说升级ext4必须:1.升级kernel到2.6.28以上;2.重编译老内核)

#我将内核升级至2.6.30并升级到ext4后,重启切回2.6.18老内核也能正常读取ext4文件系统,老内核没有做过变动

#问题:2.6.18直接升级ext4不知可不可行?

 

@使内核支持ext4方法1:

#重编译旧内核,使其支持ext3与ext4的方法:

cp /boot/initrd-`uname -r`.img /boot/initrd-`uname -r`.img.bak

mkinitrd -v --with=ext4 --with=ext3 /boot/initrd-`uname`.img `uname -r`

······

Adding module ext4

reboot

 

@使内核支持ext4方法2:

#编译新内核

cd /usr/src

wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.30.10.tar.gz

tar zxvf linux-2.6.30.10.tar.gz

cd linux-2.6.30.10.tar.gz

make menuconfig

#filesystem内确保ext4都选上即可,默认都是选上的,不熟的就默认吧...

make clean

make bzImage #耗时长

make modules #耗时长

make modules_install && make install

#编译结束,但据说2.6.x自编译内核有bug,以下为解决bug

cp /boot/initrd-2.6.30.10.img /tmp

cd /tmp

mkdir newinitrd

cd newinitrd

zcat ../initrd-2.6.30.10.img|cpio -i

rm -f /tmp/initrd-2.6.30.10.img

vi 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

#有重复,删除掉,保留一对

find .|cpio -c -o >> ../initrd

cd /tmp

gzip -9 <initrd> initrd-2.6.30.10.img

mv /boot/initrd-2.6.30.10.img /boot/initrd-2.6.30.10.img.bak

cp initrd-2.6.30.10.img /boot/

vi /boot/grub/grub.conf

#修改default值为你想要默认加载的内核(0,1,2,3···)

reboot

 

#####

我升级到2.6.30后遭遇iptables兼容性问题:

iptables: Unknown error 18446744073709551615

g了一下给了我这个答案http://blog.zhanxb.com/post/274/

iptables -A INPUT -m state --state NEW -p udp --dport 53 -j ACCEPT

改成

iptables -A INPUT -p udp --dport 53 -j ACCEPT

凑效了

以新内核运行以后,从部分客户端telnet服务器的服务端口,时好时坏,时通时不通,怀疑系统网络设置上有问题

无能力深入研究,直接切换回老内核,发现2.6.18不通过--with=ext4的编译也能认出ext4分区并且正常读写,服务也能正常启动

目前再以旧内核运行,观察状态中...

#####

 

@升级ext4方法

wget http://downloads.lustre.org/public/tools/e2fsprogs/upstream/e2fsprogs-1.41.12.tar.gz

#或者yum

umount /dev/sda2

tune2fs -O extents,uninit_bg,dir_index /dev/sda2

e2fsck -fDC0 /dev/sda2

mount -t ext4 /dev/sda2 /data

df -T

/dev/sda2     ext4    10154020   3110316   6519584  33% /data

vi /etc/fstab

LABEL=/data           /data                 ext3    defaults        1 2

改为

LABEL=/data           /data                 ext4    defaults        1 2

#完事

#全文完