|
论坛中有很多朋友反映,在SATA硬盘上安装好系统之后,无法正常启动,
我在上周六安装了6遍系统,也都发生该故障。
经过和 樱家塚反复讨论,经过几天熬到临晨两点(我比较菜)的实验,
最终解决了问题,在这里把经验和大家分享一下。
故障描述:
Magic1.2 final 官方正式版本,
SATA硬盘上安装系统,安装阶段都比较顺利,未出现异常。
但不能启动,一般出现类似错误信息
Mounted /proc filesystem
mounting sysfscreating block devices
vfs: cannot open root device "sda5" or unknow-block(0,0)
please append a correct "root=" boot option
kernel pannic on syncing: Unable to mount root fs on unkonw-block(0,0)
故障分析:
查看这段故障信息之前的信息,发现启动时有检测到光驱,IDE设备的信息,
并且都检测到了,但却没有检测到SATA硬盘的信息。
Magic安装程序Magic installer使用的是2.4的内核,通过加载模块的方法,
在安装阶段识别到了硬盘,一般为sda
而Magic 1.2自身,使用的是2.6的内核,2.6内核本身可以支持SATA硬盘的。
可以猜测有两种可能
1. Magic 1.2提供的2.6内核,编译时没有提供SATA的支持。
2. Magic 1.2提供了模块方式的SATA支持。但initrd镜像文件 /boot/initrd-2.6.9.img 生成时没有预载入SATA支持模块。
这两种情况,都会使启动时不能正常加载SATA硬盘。
解决方案:
经过反复实验,重新编译内核,我在自己机器上解决了问题。
我的相关硬件平台,
ASUS AV8-Delux K8T800PRO + 8237
Maxotr SATA 200G 硬盘
分区情况,
第一主分区: NTFS (Active) 安装程序识别名称 /dev/sda1
第二扩展分区:
第一逻辑硬盘:EXT3 / 安装程序识别名称 /dev/sda5
第二逻辑硬盘:SWAP 安装程序识别名称 /dev/sda6
……
用Knoppix 3.6 的live CD启动电脑,
按F2, 可以选择两种内核,
输入knoppix26,使用2.6内核启动。
这时我的硬盘被识别成hde,
这里开始经樱家冢编辑,如有不正确的请trulyliu指正,毕竟我没有SATA,纯属纸上谈兵,呵呵。
假设分了 /、/boot、/home、swap四个区,分别为
/ /dev/hde5
/boot /dev/hde2
/home /dev/hde6
swap /dev/hde7
假设 / 和 /home 使用reiserfs而/boot使用ext3(注意,一定要设置/boot所在分区使用ext2 or ext3,如果用reiserfs你需要重新编译内核把reiserfs编译进内核而非模块,并且需要在grub.conf里面添加内核参数,fstab文件里面也需要添加 notail 的挂载参数,很麻烦的)。
进入到桌面后,菜单-->knoppix-->root shell
#mount -t reiserfs /dev/hde5 /mnt/hde (knoppix自动生成了fstab)
#mount -t ext3 /dev/hde2 /mnt/hde/boot
#mount -t reiserfs /dev/hde6 /mnt/hde/home
#mount -t proc none /mnt/hde/proc (我不知道这一步是否必须,但是一个可用的系统通常需要proc,即便是chroot的,我不会省略这一步)
#chroot /mnt/hde
#swapon /dev/hde7
至此挂载和转换环境完成并已经启动 bash,在这个环境下编译内核。
我们只需要在原有内核上增加 SATA 支持,
因此需要原内核的配置文件 /boot/config-2.6.9
#cp /boot/config-2.6.9 /usr/src/linux/.config (这里有人理解错误了,以为是 config-2.6.9.config,其实是因为原文中已经有了cd /usr/src/linux 这一步,所以省略了前面的路径名)
把 shell 窗口最大化,否则可能无法启动 make menuconfig
make menuconfig (也可以采用 make xconfig)
出现了内核配置菜单,进入到菜单
Device drivers-->ATA/ATAPI/MFM/RLL suport -->
[ ] Support for SATA (deprecated; conflicts with libata SATA driver)
这个选项没选,我们把他选上,(注意是编译进内核,应该为 Y 而非 M ,我不知道是不是可以选 M ,没看过这个)
< > SCSI emulation support
这个也没选上,这个选不选随意,
这个不选的情况下,我的硬盘被认成hda
选上这个选项, 我的硬盘被识别成hde
除此以外,还需要 SATA 控制器模块,根据自己的 SATA 控制器芯片型号选择一下。
补充修改完毕。
还可以根据自己的 CPU 型号,更改 CPU 的相关选项,
我修改成了 K8,因为我是 AMD64 3000+ 的 cpu :D
保存退出
make
make modules
make install
make modules_install
一切正常,内核选项不要修改太多,可能会编译失败,
如果编译失败,请重头做起。
一切都正常结束后,我们需要修改 grub 的配置文件,
vi /boot/grub/grub.conf
我原来的配置文件如下
# grub.conf generated by MagicInstaller.
# Note that you do not have to rerun grub after making changes to this file.
default=0
timeout=10
splashimage=(hd0,4)/boot/grub/splash.xpm.gz
title win2000
rootnoverify (hd0,0)
chainloader +1
title MagicLinux
root (hd0,4)s
kernel /boot/vmlinuz-2.6.9 ro root=/dev/sda5 vga=791 splash=silent
initrd /boot/initrd-2.6.9.img
title MagicLinux (Graphics Mode)
root (hd0,4)
kernel /boot/vmlinuz-2.6.9 init 5 ro root=/dev/sda5 vga=791 splash=silent
initrd /boot/initrd-2.6.9.img
title MagicLinux (Console Mode)
root (hd0,4)
kernel /boot/vmlinuz-2.6.9 init 3 ro root=/dev/sda5 vga=791 splash=silent
initrd /boot/initrd-2.6.9.img
title MagicLinux (Single Mode)
root (hd0,4)
kernel /boot/vmlinuz-2.6.9 init 1 ro root=/dev/hda5 vga=791 splash=silent
initrd /boot/initrd-2.6.9.img
把 sda 都修改成了 hda, 如果你的硬盘被识别成了 hde,则修改成 hde
同理修改 /etc/fstab
保存退出,重新启动系统。
启动硬盘上的 magic 1.2
如果还发生同样的出错信息
Mounted /proc filesystem
mounting sysfscreating block devices
vfs: cannot open root device "hdat5" or unknow-block(0,0)
please append a correct "root=" boot option
kernel pannic on syncing: Unable to mount root fs on unkonw-block(0,0)
查看在这之前的硬件监测信息
应该可以识别到了硬盘,看看是别出的名称是什么,hda 还是 hde 或者其它
重新修改 /boot/grub/grub.conf 还有 /etc/fstab
这样就可以正常启动,看到 pp 的桌面了。
如果出错信息不同,探出一个 TEXT 模式话框,说根文件系统 / 没有正常加载,
那是你忘记修改 /etc/fstab 了。
经过几天的熬熬夜奋斗,终于解决了问题。
在此要特别感谢 樱家塚
是他不厌其烦的给我解答问题,互相交流,才最终把问题解决。
对Magic Linux 的开发小组也同样感谢,
虽然出了小的差错,但目前这种开发模式,不可避免的会遇到问题,
相信他们是因为缺乏硬件测试平台,才会产生这个问题的。
以后新版本开发,希望大家都参与进来,提供更多的测试平台反馈。。
I love Maigc Linux!! |
|