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


终于可以在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去。

 

本文作者:



相关阅读:
js 拖拽翻页实现代码
我用php+mysql写的留言本
谈一谈至关重要的Linux系统Swap交换区
HTML中有关表格table 的知识
php5 and xml示例
window.onbeforeunload方法在IE下无法正常工作的解决办法
PHP持久连接mysql_pconnect()函数使用介绍
建立灵巧结构的PHP程序
JS教程:线小测试程序
User Tips: Using Return Values from a SQL Server Stored Procedure to Customize Error Messages_QQGB.c
php设计模式介绍之编程惯用法
Jquery 动态添加按钮实现代码
javascript循环数组的方法
JavaScript判断浏览器类型及版本
快速导航

Copyright © 2016 phpStudy | 皖ICP备18014864号-4