最后,运行命令“make dep”正确地建立所有的依赖关系。内核编译: 确认拥有gcc-2.6.3或者更高的版本。经验显示使用更低版本的gcc会在编译更新linux内核时产生一些问题。如果你更新了编译器同时请记住也要确保得到了新的二进制实用工具包。 使用命令“make zImage”产生压缩的内核镜象文件。如果你想要制作一张引导盘的话(不带有引导文件系统或lilo),插入软盘,运行命令“make zdisk”。如果你用lilo安装到了适当的内核makefiles,也可以运行命令“make zlilo”,但是在做此之前最好首先检查你专门的lilo安装程序。 如果你的内核过于庞大可以使用“make bzImage”命令代替“make zImage”。 如果你已经以“modules”配置了内核任意的一个部分,你接下来要做的是依次运行“make modules”和“make modules-install”命令。可以阅读Documentation/modules.txt 以获得更多相关信息。比如,在其中有关于如何使用modules的解释。 制作内核的一份备份,以便在发生错误时候使用。对于开发版本这样做具有相当意义,因为每一新版本中的代码都没有被测试过。 想要启动你的新内核,你还需要拷贝一份内核镜象文件(在编译之后可以在/usr/src/linux/arch/i386/boot/zImage找到)到内核可以找到的正常引导内核的地方。对于某些情况,这个存放在软盘上,这种情况下可以使用命令"cp /usr/src/linux/arch/i386/boot/zImage /dev/fd0" 去制作一份引导软盘。注意,对于Linux内核2.0.0,内核会占用720k双面3.5英寸软盘。对于这种情况,强列建议你安装LILO在你的双面存储的启动软盘或者更大容量的软驱。如果你使用硬盘作为引导Linux,/etc/lilo.conf文件记录了你所使用的LILO所引导的专门内核镜象。内核镜象文件通常可能是/vmlinuz, 或 /zImage, 或 /etc/zImage。为了使用新内核,复制新的镜象覆盖掉原先的(为原先的镜象做一备份)。重安装LILO是通常情况下启动/sbin/lilo的方法。你还可以编辑/etc/lilo.conf引导你的原先内核镜象(如, /vmlinux.old),这样新的内核就不会工作了。请查阅LILO文档获得更多信息。 重新更新了LILO之后,你应该做的都已结束。关闭系统,重新启动然后体验新内核。 如果你需要改变内核中默认的引导设备,视频模式,随机盘的大小等,使用''''rdev''''编程(也可以在启动时选择LILO引导选项)。不需要改变这些参数也不需要重新编译内核。重新启动机器后体验一下新内核吧。 如果有错误发生: 如果你直接去查看内核的臭虫有困难,请查阅MAINTAINERS文件确认是否已经有人整理、解决过了跟你所遇到的臭虫一样的情况。如果列表中不存在相关方面,另外非常好的途径是直接写信把情况告诉我(Linus.Torvalds@Helsinki.FI)和有可能关联的邮件列表或者是新闻组都可以。由于我不可能一一测试那些具体的个人SCSI 和 NETworking,因此邮件列表的方式对解决特定的关于SCSI 和 NETworking问题相当管用。 请在所有的臭虫报告中详细告知内核版本,如何可以重现错误,以及你是如何安装(根据你自身的体验)。如果问题是最近的也要告知我,如果是很久以前的问题,请尝试告诉我第一次发生的时间。如果臭虫列表显示信息以如下格式所示: unable to handle kernel paging request at address C0000010 Oops: 0002 EIP: 0010:XXXXXXXX eax: xxxxxxxx ebx: xxxxxxxx ecx: xxxxxxxx edx: xxxxxxxx esi: xxxxxxxx edi: xxxxxxxx ebp: xxxxxxxx ds: xxxx es: xxxx fs: xxxx gs: xxxx Pid: xx, process nr: xx xx xx xx xx xx xx xx xx xx xx 或者屏幕上显示类似的内核调试信息或者记录在的系统日志之中,请呈现给我准确的信息。输出内容对你可能是完全不理解其中的内容,但是其中包含了可以帮助调试错误的信息。内容还显示了一些重要东西:它能告诉为什么内核会出现这些代码(上面的例子中说内核产生了错误的指针)。更多可以解释代码的含义的内容存在于Documentation/oops-tracing.txt。 你可以使用“ksymoops”程序解决出现的问题。在scripts/目录之下手工寻找C++源代码防止再出现类似的提示代码:在如上给出的调试信息提示中,可以极大的帮助你查找EIP值所表示的含义。十六进制的值如上所示是不会对我或者其他任何人有多大帮助:因为它依靠你的特定的内核安装过程。你应该做的是从EIP行(忽略“0010:”)找到十六进制代表的具体含义,然后在内核名字列表中寻找内核函数所代表的绝对内存中的物理地址。 为了能查询到内核具体函数名,你需要结合内核显示出来的征兆查找系统二进制内容。这个文件就是''''linux/vmlinux''''。尽量在名字列表中进行匹配失败中EIP的具体内容,按照如下方式: 上一页 [1] [2] [3] [4] 下一页
|