热门关键字:  ubuntu  分区  Fedora  linux系统进程  函数

当前位置 :| 主页>Linux教程>内核研究>

VMware环境下Linux内核编译过程详细解析

来源: 作者: 时间:2007-07-24 Tag: 点击:

终于可以在vmware中使用新编译的内核调试驱动了,虽然也比较经常在vmware里使用linux,但是还从没有在里面编译过内核,所以不知道居然还有这么多的道道。编译内核的过程就不说了,除了通用的编译过程,各个发行版可能还会有自己特有的编译命令,比如我使用的debian。下面只列出我在编译过程中尝试过的步骤。

 

1、从kernel.org上下了2.6.18的sourcecode,编译安装后使用新的内核启动,看到下面让人讨厌的错误:

 

VFS:Cannot open root device "sda" or unknow-block(0,0)

Please append a correct "root=" boot option

kernel panic:VFS:Unable to mount root fs on unknown-block(0,0)

 

这样的错误到也不是第一次亲密接触了,比如很久以前使用dd将系统copy到另一块硬盘上,并使用新的硬盘启动时也遇到过这样的错误,那是因为没有将硬盘接到与原来硬盘对应的IDE接口上,不过这绝对不是让它追随我在这里出现的原因,当然久经风浪脸皮已经跟brass一样厚的我是觉得不会在这里倒下的,于是没有多想(惭愧),随即使用大家都最常使用的重启大法,寄望于它刚才是一时的疏忽。但是在几十秒之后,它又赧然出现在我的眼前,无它,只好google了。

 

2、从google的结果来看,同道(一同着道)中人还真不少,五花八门的过程揭露了大致无二的解决方法。主要是内核的配置选项了,并且主要集中在

 

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

 

主要是因为使用scsi时,vmware需要它,还有文件系统,我用的是ext3,因为看到有人说没有将它们直接编译进内核导致启动仍然不成功,给自己个懒的理由,也就不多尝试了,直接将它们built-in了,然后执行

 

make-kpkg –revision=1.0 kernel-image

 

编译,且使用dpkg安装后重启,让人沮丧的是,前面那几行可爱的错误又出现了。

 

3、再回头检查内核的配置选项,觉得相关的都已经选上了,按理说不应该会再找不到root文件系统了啊,要不试试initrd?虽说已经将上面的几个模块编进了内核,是不是还需要创建initrd那?权且试试吧,于是重新编译内核

 

make-kpkg –revision=1.0 kernel-image –initrd

 

再安装重启,居然甩开了那个粘人的panic,不过仍然还有点云里雾里的,呵呵,linux上的这些事儿好像多是这样子,抽空深入研究下initrd去。




相关文章:
精通initramfs构建step by step
Linux利用kexec迅速切换内核
进程上下文VS中断上下文
内核通知链 学习笔记
linux spi子系统驱动分析
menuconfig 配置选项
《Linux操作系统内核实习》之练习一
udev详解
什么叫微内核,宏内核?
Linux 信号signal处理机制
开发简单的 Linux2.6 内核模块
删除内核的perl脚本
Linux2.6内核usb gadget驱动移植
GCC hacks in the Linux kernel
iomem
kernel学习的想法
让自己的驱动支持udev
linux内核编译步骤
内核的等待队列
Linux内核wait_queue深入分析
升级和删除内核
SD卡驱动分析2
Linux Kernel VDSO本地权限提升漏洞
内核中的TCP的追踪分析-15-TCP(IPV4)的客户端与
linux 2.6内核可加载模块的编译
内核模块HelloWorld
在环回接口上发送一个数据报
ARP初始化
1分钟编译FreeBSD内核
linux设备模型之uart驱动架构分析