LINUX系统无法启动 可以见到选择系统界面
然后就无法启动了 具体图象见下图
root (hd0,2)
Filesystem type is ext2fs,partition type 0*83
kernel /vminuz-2.6.9-5.Elsmp.img single or root=/dev/VolGroup_ID_11141/LogVol3 rhg
b quiet
[Linux-bzImage,setup=0*1400,size=15492c]
initrd /initrd-2.6.9-5.Elsmp.img
[Linux-initrd @ 0*37ed7000. 0*11850b bytes]
Uncompressing Linux... OK, booting the kernel.
audit(1163607321.902:0):initialized
Red Hat nash version 4.1.18 starting
insmod:error inserting '/lib/aic79xx.ko':-1 No such device
ERROR:/bin/insmod exited abnormally!
File descriptor 3 left open
Reading alll physical volumes, This may take a while...
/dev/hda: open failed:No medium found
Found volume group "VolGroup_ID_11141" using metadata type lvm2
File descriptor 3 left open
WARNING: can't access (null)
exec of init ((null)) failed!!!:14
umount /initrd/dev failed:2
Kernel panic - not syncing :Attempted to kill init!
ip1981 于 2007-03-06 09:16:58发表:
我遇到了 和你一样的问题 开始也搞不明白.后来又仔细阅读了grub的资料
发现是自己粗心造成的
先给你一个连接 看看 如果你仔细阅读的话一定能解决!
http://www.linuxsir.org/main/?q=node/129
如果你连grub都不知道的话.你一定要先看上面我推荐的网址!!!!
这是我的解决办法
关于menu.lst的写法:
第一种
default=0
timeout=5
#splashimage=(hd0,6)/boot/grub/splash.xpm.gz
hiddenmenu
title Fedora Core (2.6.11-1.1369_FC4)
root (hd0,6)
kernel /boot/vmlinuz-2.6.11-1.1369_FC4 ro root=LABEL=/
initrd /boot/initrd-2.6.11-1.1369_FC4.img
第二种:
default=0
timeout=5
#splashimage=(hd0,6)/boot/grub/splash.xpm.gz
hiddenmenu
title FC4
root (hd0,6)
kernel /boot/vmlinuz-2.6.11-1.1369_FC4 ro root=/dev/hda7
initrd /boot/initrd-2.6.11-1.1369_FC4.img
两个不同之处在
kernel /boot/vmlinuz-2.6.11-1.1369_FC4 ro root=LABEL=/
kernel /boot/vmlinuz-2.6.11-1.1369_FC4 ro root=/dev/hda7
两种不同的表示.但表达的意思是一样的.root后面接的/分区
切记:是/分区.
你一定是把/分区写错了
如果你把boot分区和/分区及其他分区单分的话.你不能确定/分区在哪?
进入rescue模式(如果不止到怎么进,上网搜一下)
然后输入df命令查看/分区在哪,它就决定了你root后面的参数是多少
root=/dev/hd**
然后就写上就好了
我是刚刚解决,挺高兴的.大概用了两天的时间.之前也在网上搜索过.都没有找到解决的办法.其实就是一个细心的问题.希望对大家有所帮助.
同时我也会马上在我的bolg里.详细的在总结一下.
如果还不明白的话你可以去我的blog里看一下
http://wanghui.cublog.cn
bridgegame 于 2006-11-16 20:21:23发表:
发个启动过程,给你借鉴一下!
第一部分:内核的引导(核内引导)
Red Hat9.0可以使用lilo或grub等引导程序开始引导Linux系统,当引导程序成功完成引导任务后,Linux从它们手中接管了CPU的控制权,然后CPU就开始执行Linux的核心映象代码,开始了Linux启动过程。这里使用了几个汇编程序来引导Linux,这一步泛及到Linux源代码树中的“arch/i386/boot”下的这几个文件:bootsect.S、setup.S、video.S等。
其中bootsect.S是生成引导扇区的汇编源码,它完成加载动作后直接跳转到setup.S的程序入口。setup.S的主要功能就是将系统参数(包括内存、磁盘等,由BIOS返回)拷贝到特别内存中,以便以后这些参数被保护模式下的代码来读取。此外,setup.S还将video.S中的代码包含进来,检测和设置显示器和显示模式。最后,setup.S将系统转换到保护模式,并跳转到 0x100000。
那么0x100000这个内存地址中存放的是什么代码?而这些代码又是从何而来的呢?
0x100000这个内存地址存放的是解压后的内核,因为Red Hat提供的内核包含了众多驱动和功能而显得比较大,所以在内核编译中使用了“makebzImage”方式,从而生成压缩过的内核,在RedHat中内核常常被命名为vmlinuz,在Linux的最初引导过程中,是通过"arch/i386/boot/compressed/"中的head.S利用misc.c中定义的decompress_kernel()函数,将内核vmlinuz解压到0x100000的。
当CPU跳到0x100000时,将执行"arch/i386/kernel/head.S"中的startup_32,它也是vmlinux的入口,然后就跳转到start_kernel()中去了。start_kernel()是"init/main.c"中的定义的函数,start_kernel()中调用了一系列初始化函数,以完成kernel本身的设置。start_kernel()函数中,做了大量的工作来建立基本的Linux核心环境。如果顺利执行完start_kernel(),则基本的Linux核心环境已经建立起来了。
在start_kernel()的最后,通过调用init()函数,系统创建第一个核心线程,启动了init过程。而核心线程init()主要是来进行一些外设初始化的工作的,包括调用do_basic_setup()完成外设及其驱动程序的加载和初始化。并完成文件系统初始化和root文件系统的安装。
当do_basic_setup()函数返回init(),init()又打开了/dev/console设备,重定向三个标准的输入输出文件stdin、stdout和stderr到控制台,最后,搜索文件系统中的init程序(或者由init=命令行参数指定的程序),并使用 execve()系统调用加载执行init程序。到此init()函数结束,内核的引导部分也到此结束了,
fengmayi1 于 2006-11-15 19:10:36发表:
不太清楚,可以把这个问题转发到顶置的linux疑问贴中让版主帮你解决吧