龟速linux内核学习之旅(一)

  主要是参考“SUSE下使用bochs调试linux-0.11内核”这篇文章把环境搭起来的。

        在此之前先说一下我学习linux内核所看的书。入门级的书是“Linux Device Drivers,3rd Edition”,一开始下载的是第二版,用的内核是2.4的,而我的suse是用的2.6的内核,所以安全起见看使用2.6内核的第三版。说是讲驱动的书,但里面涉及到linux内核的很多重要的概念和知识,而且代码可以在我的系统上测试运行。我看了前面几章,还是能全部理解的,说入门是对的,书后半部分是高级的知识了。第二本经典的书“Understanding the Linux Kernel,2nd Edition“,这本书只是下载了,还没有开始看。最后一本是赵炯博士的“Linux内核完全注释”,用的是linux 0.11版的代码,是最早能用内核的版本。如果上手看2.6五六十兆的代码,会严重打击自信心的。这本书是学校的教材,很少有学校的教材我会放在身边,还有就是高数。这三本暂时够我看的了,而且都很经典。

        那篇配置文章的地址是:http://www.linmu100.com/html/linuxshijie/20071121/112.html。那篇文章讲得已经非常非常详细了,作者是个真正的linux牛人。在“三”中,作者是当bochs启动后才加载的tmp.img文件,这个方法在我机器上会造成虚拟的软驱不能读取tmp.img镜像文件,在命令行下也就无法看到用“mdir a:/”看到软驱中的文件。我的办法是直接在bochs启动配置文件里改加载的镜像,这样软驱就能正常工作了。
        
        接下来是拷贝的问题。"mcopy a:/gdb* ./"没有用,“mdir a:/”一下显示的文件名是“GDB-LI~~1.TAR”,真实的文件名是“gdb-linux-0-11.tar”,我抱着试试心态用“mcopy a:/GDB* ./”,居然拷贝成功了!诡异的错误。后面的问题是因为自己对gdb工具不熟悉,我一直按回车执行continue命令,结果屏幕显示段错误,不显示执行的代码。仔细看看显示的信息,发现开始有段代码显示了出来,后面按continue就不再显示代码了。我于是敲了个step命令,终于有代码显示了!后来饿补了一下gdb使用手册才搞清楚continue的作用。

        这个环境配了我将近两天,不过暂时还用不到调试内核,我还在看赵炯博士书中汇编代码部分,调试的作用不大。而且bochs虚拟机很慢很慢,也许是因为我的笔记本太旧了的缘故,能不调则不调。

posted on 2010-11-07 20:48  Prajna  阅读(492)  评论(0编辑  收藏  举报

导航