LinuxSir.cn,穿越时空的Linuxsir!

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

编译内核出错,还请指教

[复制链接]
发表于 2006-5-23 02:23:33 | 显示全部楼层 |阅读模式
我是在vmware中装的Red Hat 9,内核版本是2.4.20-8,打算升级至2.4.32。现在已经下载了内核2.4.32的源代码。根据网上的教程一步步做,从准备、编译一直到安装好像也没出什么错。可是重起之后,就是无法使用2.4.32内核,提示:
     VFS:Cannot open root device "sda1" or 08:01
        .......
        Kernel panic: VFS: Unable to mount root fs on 08:01
        等等信息,具体见截图。
这是什么原因造成的呢?我用的引导程序是grub,难道是grub配置出错吗?


ps:
   1. 我给/boot目录单独分了一个区,分区是/dev/sda1
  2. 我的grub.conf文件如下:

default=0
timeout=10
splashimage=(hd0,0)/grub/splash.xpm.gz
title Red Hat Linux (2.4.32)
        root (hd0,0)
        kernel /vmlinuz ro root=/dev/sda1
title Red Hat Linux (2.4.20-8)
        root (hd0,0)
        kernel /vmlinuz-2.4.20-8 ro root=LABEL=/
        initrd /initrd-2.4.20-8.img

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
发表于 2006-5-23 02:33:40 | 显示全部楼层
不是 RH 9 用户,以仅有的 RH 经验来说你需要 mkinitrd 做个 initrd.img(如果你确认内核配置无错的话)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-5-23 10:53:21 | 显示全部楼层
Post by shannleon
不是 RH 9 用户,以仅有的 RH 经验来说你需要 mkinitrd 做个 initrd.img(如果你确认内核配置无错的话)


谢谢!
试过了,好像也不行。
而且在网上查,说重新编译2.4的内核其实不用做initrd.img
回复 支持 反对

使用道具 举报

发表于 2006-5-23 11:15:15 | 显示全部楼层
不能挂载root文件系统,你编译的时候把文件系统编译进内核了没?不要编译成模块
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-5-23 12:01:30 | 显示全部楼层
Post by SEPTEM
不能挂载root文件系统,你编译的时候把文件系统编译进内核了没?不要编译成模块

我当时都是选的y,没有选m啊


下面是我的配置文件中关于文件系统的部分,难道是因为其中某些项没有选吗?

# File systems
#
# CONFIG_QUOTA is not set
# CONFIG_QFMT_V2 is not set
CONFIG_AUTOFS_FS=y
CONFIG_AUTOFS4_FS=y
# CONFIG_REISERFS_FS is not set
# CONFIG_REISERFS_CHECK is not set
# CONFIG_REISERFS_PROC_INFO is not set
# CONFIG_ADFS_FS is not set
# CONFIG_ADFS_FS_RW is not set
# CONFIG_AFFS_FS is not set
# CONFIG_HFS_FS is not set
# CONFIG_HFSPLUS_FS is not set
# CONFIG_BEFS_FS is not set
# CONFIG_BEFS_DEBUG is not set
# CONFIG_BFS_FS is not set
CONFIG_EXT3_FS=y
CONFIG_JBD=y
CONFIG_JBD_DEBUG=y
# CONFIG_FAT_FS is not set
# CONFIG_MSDOS_FS is not set
# CONFIG_UMSDOS_FS is not set
# CONFIG_VFAT_FS is not set
# CONFIG_EFS_FS is not set
# CONFIG_JFFS_FS is not set
# CONFIG_JFFS2_FS is not set
# CONFIG_CRAMFS is not set
CONFIG_TMPFS=y
CONFIG_RAMFS=y
CONFIG_ISO9660_FS=y
# CONFIG_JOLIET is not set
# CONFIG_ZISOFS is not set
CONFIG_JFS_FS=y
# CONFIG_JFS_DEBUG is not set
# CONFIG_JFS_STATISTICS is not set
# CONFIG_MINIX_FS is not set
# CONFIG_VXFS_FS is not set
# CONFIG_NTFS_FS is not set
# CONFIG_NTFS_RW is not set
# CONFIG_HPFS_FS is not set
CONFIG_PROC_FS=y
# CONFIG_DEVFS_FS is not set
# CONFIG_DEVFS_MOUNT is not set
# CONFIG_DEVFS_DEBUG is not set
CONFIG_DEVPTS_FS=y
# CONFIG_QNX4FS_FS is not set
# CONFIG_QNX4FS_RW is not set
# CONFIG_ROMFS_FS is not set
CONFIG_EXT2_FS=y
# CONFIG_SYSV_FS is not set
# CONFIG_UDF_FS is not set
# CONFIG_UDF_RW is not set
# CONFIG_UFS_FS is not set
# CONFIG_UFS_FS_WRITE is not set
CONFIG_XFS_FS=y
CONFIG_XFS_QUOTA=y
# CONFIG_XFS_RT is not set
# CONFIG_XFS_TRACE is not set
# CONFIG_XFS_DEBUG is not set

#
# Network File Systems
#
# CONFIG_CODA_FS is not set
# CONFIG_INTERMEZZO_FS is not set
CONFIG_NFS_FS=y
# CONFIG_NFS_V3 is not set
# CONFIG_NFS_DIRECTIO is not set
# CONFIG_ROOT_NFS is not set
CONFIG_NFSD=y
# CONFIG_NFSD_V3 is not set
CONFIG_NFSD_TCP=y
CONFIG_SUNRPC=y
CONFIG_LOCKD=y
# CONFIG_SMB_FS is not set
# CONFIG_NCP_FS is not set
# CONFIG_NCPFS_PACKET_SIGNING is not set
# CONFIG_NCPFS_IOCTL_LOCKING is not set
# CONFIG_NCPFS_STRONG is not set
# CONFIG_NCPFS_NFS_NS is not set
# CONFIG_NCPFS_OS2_NS is not set
# CONFIG_NCPFS_SMALLDOS is not set
# CONFIG_NCPFS_NLS is not set
# CONFIG_NCPFS_EXTRAS is not set
# CONFIG_ZISOFS_FS is not set
回复 支持 反对

使用道具 举报

发表于 2006-5-23 15:00:48 | 显示全部楼层
sda?  你确认是sda?不是hda??sda是SCSI总线的硬盘,如果确定的话,那么SCSI支持加上了么?况且root=的是根/ 所在的位置,而不是/boot 所在的位置。从加载block-major-8错误来看,应该是上面的问题。你再看看吧^^
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-5-23 16:47:27 | 显示全部楼层
Post by Skymoon
sda?  你确认是sda?不是hda??sda是SCSI总线的硬盘,如果确定的话,那么SCSI支持加上了么?况且root=的是根/ 所在的位置,而不是/boot 所在的位置。从加载block-major-8错误来看,应该是上面的问题。你再看看吧^^


是sda,我是在vmware下编译内核的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-5-23 16:50:39 | 显示全部楼层
感谢大家
我已经搞定了

主要在于两个方面:
一、vmware的特殊性
     vmware虚拟出来的硬盘是scsi的。在vmware下重新编译内核,有些选项是一定要选上的,具体如下:
Device Drivers --->SCSI device support ---><*> SCSI disk support

Device Drivers --->SCSI device support --->SCSI low-level drivers ---> <*> BusLogic SCSI support

Device Drivers ---> Networking support --->Ethernet (10 or 100Mbit) ---> <*> AMD PCnet32 PCI support

最好把ext3文件系统支持也编译进内核
<*> Ext3 journalling file system support
<*>Ext3 extended attributes
<*>Ext3 POSIX Access Control Lists
<*>Ext3 Security Labels
<*>JBB (ext3) debugging support

具体大家可以用google搜一下“vmware下编译内核必选选项”

二、grub的配置文件
       应该把grub中的root改成具体的设备文件,不要使用LABEL标签。而且grub中的根和linux下root是不一样的。
     我的现在的grub配置文件内容如下:
default=0
timeout=10
splashimage=(hd0,0)/grub/splash.xpm.gz
title Red Hat Linux (2.4.32)
        root (hd0,0)
        kernel /vmlinuz ro root=/dev/sda3
title Red Hat Linux (2.4.20-8)
        root (hd0,0)
        kernel /vmlinuz-2.4.20-8 ro root=LABEL=/
        initrd /initrd-2.4.20-8.img

上面root=/dev/sda3如果改成root=LABEL=/则会出错
回复 支持 反对

使用道具 举报

发表于 2006-5-25 13:47:41 | 显示全部楼层
呵呵,我说呢,sda是VM里的哦,好象是vm虚拟的硬盘可以选成SCSI的,加上SCSI支持就可以了吧^^,呵呵
不过还有老兄说不能用LABEL=/是不对的。只要initrd.img正确,就没问题,甚至可以在不把ext3编进内核的情况下启动,原因就是有initrd.img在系统初期加载ext3的模块(先作为ext2加载)我的2.6的内核就是用的LABEL=/
回复 支持 反对

使用道具 举报

发表于 2008-3-31 15:02:06 | 显示全部楼层
我编译的时候没有找到这个选项:JBB (ext3) debugging support。有什么是我没打开的吗?
回复 支持 反对

使用道具 举报

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

本版积分规则

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