找回密码
 注册
查看: 625|回复: 6

帮我分析一下是什么原因!

[复制链接]
发表于 2003-10-12 18:30:26 | 显示全部楼层 |阅读模式
我装Gentoo,root分区是reiserfs,boot分区用的是ext2.
root=/dev/hda7
boot=/dev/hda6
但是启动是不能加载root分区,显示的信息是
VFS:Cannot openroot device "hda7 or 03:07
Please append a correct "root=" boot option
kernel panic: VFS: unable to mount root fs on 03:07
发表于 2003-10-12 21:02:47 | 显示全部楼层
kernel里reiserfs是选的y吗?
回复

使用道具 举报

 楼主| 发表于 2003-10-12 22:31:03 | 显示全部楼层
我肯定选了呀,我现在换成ext3也是一样,我不知道是怎么回事,我在选内核的文件系统时没有看见VFS选项.
回复

使用道具 举报

发表于 2003-10-13 07:48:50 | 显示全部楼层
贴出你的引导器(lilo 或者 grub)的配置文件。。。

另外关于 VFS ... !-_-
自己  google 一下。。。
(我 google 的时候没找到通俗易懂而又非常合理的解释。。。反正它不是一个真的文件系统,因为它本身就是 Virtual File System)
回复

使用道具 举报

发表于 2003-10-13 07:51:04 | 显示全部楼层
http://plinux.org/html/sections.php3?op=viewarticle&artid=21

众所周知,文件系统是Unix系统中最为基本的资源了,它如此的基本和普遍存在以至于它需要一个更为便利的名字--我将忠于标准的称呼简单地称之为“fs”。

我将假设读者早已知道基本的Unix文件系统的原理--访问(权限)许可、i节点(inode)、超级块、加载(mount)和卸载(umount)文件系统。这些概念在标准的Unix文献中由比我聪明的作者给出了很好的解释,所以我就不重复他们的工作并且我将只专注于有关Linux方面的问题。

早期的Unix通常只支持一个文件系统(fs)类型,它的代码散布于整个内核中,现今的实现是在内核和fs之间使用一个标准的接口,以便于在不同的体系结构中进行数据的交换。Linux本身提供了一个标准层以在内核和每种fs模块之间传递数据。这个接口层称为VFS,即“虚拟文件系统”("virtual filesystem")。

因而文件系统的代码被分割成了两层:上层是关于内核表格的管理和数据结构的,而低层是由与各文件系统相关的函数集构成的,并且是由VFS数据结构进行调用的。

所有与文件系统独立的资料都位于fs/*.c文件中。它们涉及如下的问题:

    * 管理缓冲寄存器(buffer.c);
    * 对fcntl()和ioctl()系统调用作出响应(fcntl.c和ioctl.c);
    * 在inode和缓冲区上映射管道和fifo(fifo.c,pipe.c);
    * 管理文件 - 和inode - 表(file_table.c,inode.c);
    * 锁定和解锁文件和记录(lock.c);
    * 将名称映射到inode(namei.c,open.c);
    * 实现错综复杂的select()函数(select.c);
    * 提供信息(stat.c);
    * 加载和卸载文件系统(super.c);
    * 使用exec()执行可执行程序以及转储核心程序(exec.c);
    * 加载各种二进制格式(bin_fmt*.c,如上面所述)。

而VFS接口则由一组相对比较高层次的操作组成,并从与文件系统独立的代码中调用而实际上是由每种文件系统类型执行的。最为相关的数据结构是inode_operations和 file_operations,尽管它们不是独自存在的:同样存在着其它一些数据结构。它们都定义在include/linux/fs.h文件中。

到实际文件系统的内核入口点是数据结构file_system_type。file_system_types的一个数组包含在 fs/filesystems.c中,并且每当发出了一个加载(mount)命令时都会引用它。然后,相应fs类型的函数read_super就负责填写结构super_block的一个项,而该项又内嵌了结构super_struct和结构type_sb_info。前者为当前的fs类型提供了指向一般 fs操作的指针,而后者对相应fs类型内嵌了特定的信息。

文件系统类型数组已经转换成了一个链表,以允许用内核模块的形式加载新的fs类型。函数(un-)register_filesystem代码包含在fs/super.c中
回复

使用道具 举报

 楼主| 发表于 2003-10-13 08:28:42 | 显示全部楼层
我的grub.conf的部分是,
title=gentoo
root(hd0,5)
kernel /vmlinuz-2.4.20 ro root=/dev/hda7
我的gentoo的分区是两一个,一个是boot分区是hda6,一个是root分区是hda7.
回复

使用道具 举报

发表于 2003-10-13 14:04:29 | 显示全部楼层
有没有修改你的/etc/fstab?
回复

使用道具 举报

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

本版积分规则

GMT+8, 2025-2-12 00:08 , Processed in 0.021814 second(s), 16 queries .

© 2001-2025 Discuz! Team. Powered by Discuz! X3.5.

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