Chinaunix

标题: [CentOs]/boot转换ext4惊魂记 [打印本页]

作者: chenyx    时间: 2009-11-27 16:19
标题: [CentOs]/boot转换ext4惊魂记
今天看到一贴,说RHEL是否支持ext4,看到网友说内核支持,手痒,在虚拟机上测试,将/boot,/(lvm格式)都转化成ext4,修改/etc/fstab,将ext3改成ext4(/boot和/)
结果,毫无疑问的,看到"kernel panic"的提示:" />

使用sysrescuecd启动,不支持lvm,未果.
结果使用sysrescuecd的分区管理器,错误的将/dev/sda1(/boot分区)给格式化了.
这下好了,自己给自己折腾进去了.
修复过程:
挂载CentOs5.4的ISO,启动虚拟机,使用linux rescue进入救援模式.
一看,sda1竟然没有自动挂载,手工挂载
  1. mount /dev/sda1 /mnt/sysimage/boot
复制代码

使用
  1. chroot /mnt/sysimage
复制代码
命令,改变/到硬盘
此时/boot为空的.
建立/grub目录,拷贝/usr/share/grub/i386-redhat/下所有文件到/boot/grub目录下.
  1. cp /usr/share/grub/i386-redhat/* /boot/grub/
复制代码

根据别的Centos的grub.conf文件手工建立grub.conf
手工挂载光驱(/mnt/cdrom已经存在)

  1. mount /dev/hdc /mnt/cdrom
  2. cd /mnt/cdrom/CentOS
复制代码

rpm修复kernel

  1. rpm -ivh kernel-2.6.18-164.el5.i686.rpm --force
复制代码

重新安装grub
  1. grub-install /dev/sda
复制代码

修改/etc/fstab,将LABE=/boot那行修改成/dev/sda1 ,ext4改成ext3.
重启机器,终于又看到熟悉的login:提示符了.






最后,再次提醒大家,ext4有危险,使用需谨慎!!!

[ 本帖最后由 chenyx 于 2009-11-27 16:22 编辑 ]
作者: snow888    时间: 2009-11-27 16:51
标题: 回复 #1 chenyx 的帖子
让你瞎折腾 。。。


哈哈
作者: cst05001    时间: 2009-11-27 16:52
RHEL5的grub是不支持ext4的啊。
作者: ruanxi    时间: 2009-11-27 17:30
唉,吓折腾,现在ext4不成熟,半成品
作者: jerrywjl    时间: 2009-11-27 17:51
原帖由 cst05001 于 2009-11-27 16:52 发表
RHEL5的grub是不支持ext4的啊。



别忽悠俺!
作者: cst05001    时间: 2009-11-27 17:51
看来是RHEL5.4是支持ext4 /boot分区的。jerrywjl牺牲自我去实验了。
作者: jerrywjl    时间: 2009-11-27 17:53
[root@dhcp-0-199 ~]# uptime
05:05:54 up 2 min,  2 users,  load average: 1.42, 0.93, 0.37

[root@dhcp-0-199 ~]# cat /proc/mounts | grep ext4
/dev/sda1 /boot ext4 rw,barrier=1,data=ordered 0 0
作者: jerrywjl    时间: 2009-11-27 17:56
原帖由 cst05001 于 2009-11-27 17:51 发表
看来是RHEL5.4是支持ext4 /boot分区的。jerrywjl牺牲自我去实验了。


起不来你的,起来我的。
作者: marsaber    时间: 2009-11-27 19:41
原帖由 chenyx 于 2009-11-27 16:19 发表
ext4有危险,使用需谨慎!!!


比如呢?
作者: marsaber    时间: 2009-11-27 19:52
标题: 回复 #6 cst05001 的帖子
原来5.4是支持ext4的,刚看到ext4模块。
汗一个。
作者: chenyx    时间: 2009-11-27 20:50
标题: 回复 #9 marsaber 的帖子
第一张图就是/boot转换ext4后启动的界面,明显的kernel panic!
作者: chenyx    时间: 2009-11-27 20:51
标题: 回复 #7 jerrywjl 的帖子
说说看,boot为ext4需要什么条件.
俺的第一张图就是boot和/都ext4后系统起不来的截图
作者: yjs_sh    时间: 2009-11-27 21:12
rhel5下rescue模式是可以支持lvm的,所有的lvm命令必须通过lvm这个命令来调用,比如
lvm vgchange -ay
lvm vgscan
lvm lvscn
作者: chenyx    时间: 2009-11-27 21:36
标题: 回复 #13 yjs_sh 的帖子
我的帖子与lvm基本上无关(除了/目录是lvm外)
现在的问题是ext4应用到/boot目录上,系统启动失败.
看我帖子后面两张图,/已经是ext4并且成功挂载了.
作者: to407    时间: 2009-11-27 21:42
标题: 回复 #14 chenyx 的帖子
恩 我现在一台F11的本本上,/boot还是用的ext3,别的分区已经进入ext4时代了。。。呵呵
作者: marsaber    时间: 2009-11-27 22:33
我今天在CentOS5.4上试了试,可以啊,没有错误。
很顺利。
作者: bier-linux    时间: 2009-11-28 05:44
估计楼主转换过程中有问题吧!
作者: snow888    时间: 2009-11-28 08:23
原帖由 marsaber 于 2009-11-27 19:52 发表
原来5.4是支持ext4的,刚看到ext4模块。
汗一个。

俺反复说了 rhel5.4 支持 ext4 的,咋就是木有人相信呢。


作者: marsaber    时间: 2009-11-28 10:31
标题: 回复 #18 snow888 的帖子
其实吧,之前我也不相信,亲自动手试了试,才知道是可以的。
如果俺之前说过风凉话,那就对你说声对不起。
作者: wendaozhe    时间: 2009-11-28 10:53
debian!
作者: kns1024wh    时间: 2009-11-28 23:01
原帖由 chenyx 于 2009-11-27 16:19 发表
今天看到一贴,说RHEL是否支持ext4,看到网友说内核支持,手痒,在虚拟机上测试,将/boot,/(lvm格式)都转化成ext4,修改/etc/fstab,将ext3改成ext4(/boot和/)
结果,毫无疑问的,看到"kernel panic"的提示:" />
...

grub这个位置的磁盘分区还是ext3的稳定
作者: zzwu73    时间: 2009-11-29 22:55
我的/boot是ext3, / 是ext4,fstab也已经改成ext4,问题是启动的时候kernel不认这个/ 非要用ext3来挂载所以起不来,不知LZ是怎么把 / 挂成功的,我的跟你一样centos5.4在虚拟机里玩的

[ 本帖最后由 zzwu73 于 2009-11-29 22:56 编辑 ]
作者: Celinde    时间: 2009-11-30 02:54
我不信你的是原版的RHEL,我要看你的uname -a , 和md5sum $(which grub)
作者: Celinde    时间: 2009-11-30 02:56
grub支持ext4才多久的事,那时RHEL5早就发行了吧。
作者: chenyx    时间: 2009-11-30 08:34
标题: 回复 #23 Celinde 的帖子
用的是CentOs5.4
[root@localhost ~]# uname -a
Linux localhost.localdomain 2.6.18-164.el5 #1 SMP Thu Sep 3 03:33:56 EDT 2009 i686 i686 i386 GNU/Linux
[root@localhost ~]# md5sum $(which grub)
e10d6a4e7283044960c8f224670f3713  /sbin/grub
[root@localhost ~]# cat /etc/redhat-release
CentOS release 5.4 (Final)

作者: chenyx    时间: 2009-11-30 08:41
标题: 回复 #22 zzwu73 的帖子
没什么特别的
[root@localhost ~]# mount
/dev/mapper/VolGroup00-LogVol00 on / type ext4 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/sda1 on /boot type ext3 (rw)
tmpfs on /dev/shm type tmpfs (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
none on /proc/fs/vmblock/mountPoint type vmblock (rw)

作者: chenyx    时间: 2009-11-30 08:44
fstab内容
/dev/VolGroup00/LogVol00 /                       ext4   defaults        1 1
/dev/sda1             /boot                   ext3    defaults        1 2
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0
/dev/VolGroup00/LogVol01 swap                    swap    defaults        0 0
# Beginning of the block added by the VMware software
#.host:/                 /mnt/hgfs               vmhgfs  defaults,ttl=5     0 0
# End of the block added by the VMware software

作者: chenyx    时间: 2009-11-30 08:51
哈哈,今天/boot也成为ext4了.
[root@localhost ~]# mount
/dev/mapper/VolGroup00-LogVol00 on / type ext4 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/sda1 on /boot type ext4 (rw)
tmpfs on /dev/shm type tmpfs (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
none on /proc/fs/vmblock/mountPoint type vmblock (rw)

作者: chenyx    时间: 2009-11-30 08:53
具体操作:
modprobe ext4
modprobe ext4dev
umount /dev/sda1
tune4fs -O extents,uninit_bg,dir_index /dev/sda1
e4fsck -y /dev/sda1
vi /etc/fstab

作者: chenyx    时间: 2009-11-30 08:59
结论:
CentOs5.4是完全支持ext4的,包括/boot和lvm卷.
第一次操作失败的原因可能是没umount /boot造成的.(奇怪的是/也没umount,但是没事,只是开机的时候系统报错并自动fsck了下)
经过这次经历,相当于做了一次TroubleShooting,相当于解决/boot格式化后修复的问题
作者: kisswen    时间: 2009-11-30 09:40
我也去玩玩
作者: atreenoleaf    时间: 2009-11-30 10:04
原帖由 chenyx 于 2009-11-30 08:53 发表
具体操作:

有个重要的一步没有操作,mkinitrd,不把ext4写入启动映像当然启动不起来
作者: chenyx    时间: 2009-11-30 10:49
标题: 回复 #32 atreenoleaf 的帖子
我没做,现在也正常启动了.
作者: zzwu73    时间: 2009-11-30 11:46
我跟LZ一样,就是启动不起来怪了
作者: atreenoleaf    时间: 2009-11-30 11:59
原帖由 chenyx 于 2009-11-30 10:49 发表
我没做,现在也正常启动了.

我觉得不重新mkinitrd肯定不能启动,不信你先不要安装ext4,先把原来的initrd文件解开看看里面肯定会有ext3的驱动模块只有在initrd里面写入相应文件系统的驱动模块才能启动起来
作者: zzwu73    时间: 2009-11-30 14:49
标题: 回复 #35 atreenoleaf 的帖子
呵呵,就是这个原因,我在rescue模式里重新mkinitrd后成功挂载了 / 分区
作者: chenyx    时间: 2009-11-30 15:02
标题: 回复 #32 atreenoleaf 的帖子
后来系统又挂了,启动到Grbu>提示符下了.
手工输入指令可以启动,用grub-install /dev/sda报错,The file /boot/grub/stage1 not read correctly.
重新格式化/dev/sda1为ext3,grub-install /dev/sda没有问题了.
作者: lasama    时间: 2009-11-30 15:09
原帖由 atreenoleaf 于 2009-11-30 11:59 发表

我觉得不重新mkinitrd肯定不能启动,不信你先不要安装ext4,先把原来的initrd文件解开看看里面肯定会有ext3的驱动模块只有在initrd里面写入相应文件系统的驱动模块才能启动起来



我很同意。

没有文件系统驱动模块,又如何能挂载文件系统呢
作者: chenyx    时间: 2009-11-30 15:12
标题: 回复 #38 lasama 的帖子
确实没有使用mkinitrd,/分区是lvm的,etx4的fs,可以看我给的截图.
另外mkinitrd命令我还不熟呢
作者: zzwu73    时间: 2009-11-30 16:57
标题: 回复 #39 chenyx 的帖子
你重新安装kernel的时候系统默认执行mkinitrd给你重新加载启动模块所以没出问题
就是这句 rpm -ivh kernel-2.6.18-164.el5.i686.rpm --force
这是我的
[root@centos ~]# df -lhT
Filesystem    Type    Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup00-lvroot
              ext4    7.4G  989M  6.1G  14% /
/dev/sda1     ext3     99M   12M   82M  13% /boot
tmpfs        tmpfs     30M     0   30M   0% /dev/shm

[ 本帖最后由 zzwu73 于 2009-11-30 17:01 编辑 ]
作者: chenyx    时间: 2009-12-01 08:47
标题: 回复 #40 zzwu73 的帖子
执行rpm -ivh kernel-2.6.18-164.el5.i686.rpm --force
是因为/boot格式化了,内核没有了.
另外mkinitrd怎么用,请教
作者: bpxyz    时间: 2009-12-01 09:28
见到ext4模块就以为内核直接支持? 这是什么逻辑? 不把ext4模块放到initrd里,看你怎么在ext4分区上启动。
作者: atreenoleaf    时间: 2009-12-01 09:41
原帖由 chenyx 于 2009-12-1 08:47 发表
执行rpm -ivh kernel-2.6.18-164.el5.i686.rpm --force
是因为/boot格式化了,内核没有了.
另外mkinitrd怎么用,请教


有好几种安装方法,假如是安装了新内核支持ext4那么直接rpm -ivh kernel.xxx.rpm即可那么这种情况先会在boot下自动安装新的内核和新的initrd,也会自动修改grub,启动时grub应该会多出一个启动菜单,从新内核启动自动支持ext4,假如安装的只含有ext4的rpm或者是ext4的源代码,安装完成后需要先用modprobe 载入相应的ext4模块,然后mkinitrd /boot/initrd-ext4.img $(uname -r) 会在boot下生成新的initrd-ext4.img启动映像文件此映像文件包含ext4驱动,然后手工更改grub把initrd指向新的initrd-ext4.img重启即可
作者: chenyx    时间: 2009-12-01 09:43
标题: 回复 #43 atreenoleaf 的帖子
学习了,谢谢.
作者: atreenoleaf    时间: 2009-12-01 09:47
原帖由 chenyx 于 2009-11-30 15:02 发表
后来系统又挂了,启动到Grbu>提示符下了.
手工输入指令可以启动,用grub-install /dev/sda报错,The file /boot/grub/stage1 not read correctly.
重新格式化/dev/sda1为ext3,grub-install /dev/sda没有问题了.

干嘛要重新安装grub,和grub扯不上什么关系,除非你的gurb丢失了,启动的时候连grub启动界面都没有了,/boot下的所有文件除了gurb.conf文件都可以通过在救援模式下安装相应的kernel包重新生成,gurb.conf根据自己的情况手动写一个即可
作者: chenyx    时间: 2009-12-01 09:50
标题: 回复 #45 atreenoleaf 的帖子
系统挂了,boot分区是ext4格式.手工输入grub可以引导系统.
没办法,重新格式化成ext3,安装grub成功引导系统.
具体原因待查
作者: 大鬼不动    时间: 2009-12-10 11:14
吸取楼主宝贵经验,待续!
作者: wwr    时间: 2010-06-18 15:51
lz 强人!
作者: xleefox    时间: 2012-07-13 21:25
BOOT区不建议用EXT4
作者: chenyx    时间: 2012-07-13 21:37
随便,反正那个分区一般也就是200m左右,ext4体现不出来优势




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2