LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1435|回复: 2

存在有多个系统下fc10分区的ext4转换

[复制链接]
发表于 2009-2-12 01:50:44 | 显示全部楼层 |阅读模式
我的情况是这样的:一块硬盘上已安装了多个系统,分别是Dos, winpe, win2008, Leopard, linux, 分区情况是C(Dos, Winpe, Fat32), D(Win, NTFS), E(data, NTFS), 后面依次为Leopard, linux swap和linux。各个系统均用装在mbr上的Dos4grub引导。
    问题是如果把linux分区转换成的ext4, Dos4grub就不能引导,如果想独立再分一个/boot, 本身主分区数已到了4个的极限,又不可行。ext4性能的诱惑,让我尝试了http://www.linuxsir.cn/bbs/thread344196.html的方法,在现有系统ext3不经过重装去转换,结果基本可行。
   但我在转换完后,遇到了一个非常惊险的状况,重启动报mount /dev/root错误。
   经过摸索,我用Fedora 10的DVD安装盘或CD1以rescue方式启动,如果原来系统能被顺利mount到/mnt/sysimage,就可以采用chroot /mnt/sysimage, cd /boot, 将initrd-内核版本号.img mv成备份,然后用mkinitrd生成一个initrd-内核版本号.img文件,一般重启均能成功。
   如果遇到原有系统不能顺利mount到/mnt/sysimage,这种情况常见于fedora 10自动分区的lvm2,用fsck对 /dev/mapper/Volgroup00-logvol00重新查一下,纠正完错误再次用光盘以rescue方式启动,系统就能被顺利mount到/mnt/sysimage了,依照前述的方法重新生成initrd文件。
  最后谈谈我的引导方式,我为了不破坏原有的grub4dos方式,采用了dos下的grub2启动方式。可从http://nufans.net/grub4dos/grub2/ 下载最新的iso文件,解压后放在c:\boot\grub, 在grub4dos的menu.lst里加上两句话
title fedora 10
kernel /boot/grub/core.img
修改c:\boot\grub\grub.cfg,加上如下内容
对多个系统分区共存的一块硬盘
menuentry "Fedora 10"
{
set root=(hd0,3)
linux /boot/vmlinuz-内核版本号 ro root=LABEL=/ rootfstype=ext4 rhgb quiet vga=0x318
initrd /boot/initrd-内核版本号.img
}
或在独立由linux自动分区的硬盘
menuentry "Fedora 10"
{
set root=(hd0,1)
linux /vmlinuz-内核版本号 ro root=/dev/mapper/Volgroup00-logvol00 rootfstype=ext4 rhgb quiet vga=0x318
initrd /initrd-内核版本号.img
}
grub2的好处是可以无需安装,但由于仍在开发中,有些Grub4dos能引导的,它却不能引导,因此把它装在mbr对我来说是不合适的。
   上面谈的方法,完美解决了有多个系统存在下linux分区的ext4转换,也适用于多个系统存在下linux在ext4分区的重新安装。
为了让大家早日用上性能卓越的ext4,故提供一些经验之谈供大家参考。
发表于 2009-2-12 21:20:46 | 显示全部楼层
哈哈,我坐一会沙发了,请大家积极报告各自的实践经历吧,我喜欢学习。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-2-13 10:14:36 | 显示全部楼层
第二天我还发现可以把dos下的grub2装在mbr, win, linux, macosx的引导均无问题,只是grub2的chainloader在同一个分区内只能引导一个扇区,为了在以防万一时启动winpe,可以在grub2里调用grub4dos, 例如grub.cfg文件加入如下内容:
menuentry "Grub4dos"
{
  set root=(hd0,1)
  linux /loadbin.bin
  initrd /grldr
}
来引导grub4dos, 然后引导winpe。
装了grub2,可以随心所欲地把漂亮的jpeg和png图片放进来作为开机画面。注意dos下grub2和linux下的grub2因版本不同,grub.cfg在调用font和gfxterm上略有不同,我把我两个grub.cfg贴在此供大家参考,这个是Dos下的(/boot/grub/grub.cfg):
# This is a grub.cfg example
set default=1
set timeout=10
set root=(hd0,1)
# function gfx
# {
  insmod video
  insmod vbe
  insmod gfxterm
  insmod png
  insmod jpeg
  loadfont hd(0,1)/boot/grub/unifont.pf2
#  if font /unifont.pff; then
    set gfxmode="640x480"
    terminal_output gfxterm
    background_image (hd0,1)/boot/grub/1.jpg
#  fi
# }
set menu_color_normal=green/black
set menu_color_highlight=blue/yellow
# set timeout=10
# gfx
menuentry "Grub4dos"
{
  set root=(hd0,1)
  linux /loadbin.bin
  initrd /grldr
}
menuentry "Windows 2008"
{
  set root=(hd0,1)
  chainloader +1
}
menuentry "Fedora 11"
{
set root=(hd0,3)
linux /boot/vmlinuz-2.6.29-0.110.rc4.git3.fc11.x86_64 ro root=LABEL=/ rootfstype=ext4 rhgb quiet vga=0x318
initrd /boot/initrd-2.6.29-0.110.rc4.git3.fc11.x86_64.img
}
menuentry "Mac Os X Leopard 10.5.6"
{
set root=(hd0,1)
multiboot /boot/boot_v9
}
menuentry "Microsoft Dos 7.1"
{
set root=(hd0,1)
linux /loadbin.bin
initrd /ntldr
}
# menuentry "Graphic Mode"
# {
#  gfx
# }
menuentry "Halt"
{
  halt
}

下面是linux下的(/etc/grub2.cfg)
#
# This is automatically generated by /usr/sbin/update-grub2 using templates
# from /etc/grub.d and settings from /etc/default/grub
#
# If you want your changes to persist across updates, add them
# to 90_persistent section
#

### BEGIN /etc/grub.d/00_header ###
set default=0
set timeout=5
set root=(hd0,3)
search --fs-uuid --set 4dbe7d17-326c-410a-a214-a7f062e728e0
  insmod video
  insmod vbe
  insmod gfxterm
  insmod png
  insmod jpeg
  font (hd0,3)/boot/grub2/unifont.pff
  set gfxmode=1440x900
  terminal gfxterm
   background_image (hd0,3)/boot/grub2/Dune.jpg
### END /etc/grub.d/00_header ###
set menu_color_normal=green/black
set menu_color_highlight=blue/yellow
### BEGIN /etc/grub.d/10_hurd ###
### END /etc/grub.d/10_hurd ###

### BEGIN /etc/grub.d/10_linux ###
menuentry "Fedora, linux 2.6.29-0.110.rc4.git3.fc11.x86_64" {
        set root=(hd0,3)
        search --fs-uuid --set 4dbe7d17-326c-410a-a214-a7f062e728e0
        linux        /boot/vmlinuz-2.6.29-0.110.rc4.git3.fc11.x86_64 root=UUID=4dbe7d17-326c-410a-a214-a7f062e728e0 ro rootfstype=ext4 quiet rhgb vga=0x318
        initrd        /boot/initrd-2.6.29-0.110.rc4.git3.fc11.x86_64.img
}
menuentry "Fedora, linux 2.6.29-0.110.rc4.git3.fc11.x86_64 (single-user mode)" {
        set root=(hd0,3)
        search --fs-uuid --set 4dbe7d17-326c-410a-a214-a7f062e728e0
        linux        /boot/vmlinuz-2.6.29-0.110.rc4.git3.fc11.x86_64 root=UUID=4dbe7d17-326c-410a-a214-a7f062e728e0 ro single quiet rhgb
        initrd        /boot/initrd-2.6.29-0.110.rc4.git3.fc11.x86_64.img
}
menuentry "Wndows Vista x64"{
        set root=(hd0,4)
        chainloader +1
}
menuentry "Halt"
{
  halt
}

### END /etc/grub.d/10_linux ###

### BEGIN /etc/grub.d/30_os-prober ###
### END /etc/grub.d/30_os-prober ###

### BEGIN /etc/grub.d/40_custom ###
# This file is an example on how to add custom entries
### END /etc/grub.d/40_custom ###

### BEGIN /etc/grub.d/90_persistent ###
### END /etc/grub.d/90_persistent ###
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表