Chinaunix首页 | 论坛 | 博客
  • 博客访问: 57590
  • 博文数量: 18
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 182
  • 用 户 组: 普通用户
  • 注册时间: 2016-03-14 17:05
文章分类
文章存档

2017年(15)

2016年(3)

我的朋友

分类: LINUX

2017-03-12 19:52:03

一、试验过程分为四步:
1、编译Linux内核,生成Linux内核镜像。
2、构建根文件系统,并生成根文件系统镜像。
3、在qemu模拟器,加载内核及根文件系统镜像,模拟内核启动。
4、使用gdb跟踪Linux内核启动过程。

二、试验中遇到的问题:
1、使用make menuconfig命令配置内核时出错 , 如下:

根据出错信息,说明缺少图形配置有关的库文件。

解决方法如下:


问题解决:


2、init程序编译出错,如下:


说明,安装的gcc编译器缺少库文件 sys/cdefs.h(面向32位x86机器的)。

解决方法(安装用到的库文件):


问题解决:


3、gdb找不到debug符号表,原因是内核编译过程中,并没有配置内核生成debug信息
出错如下:


解决方法(重新编译内核,并且配置让其生成debug信息):


问题解决:



三、试验中一些需要理解的内容:
1、gcc -o init  linktable.c  menu.c  test.c  -m32  -static  -lpthread 中为什么要选择静态编译,而不是选择动态编译。原因是因为咱们所构建的是一个非常简单的根文件系统,其中不含有任何的链接库,所以不可能使用动态编译。如果想使用动态编译,就需要构建根文件系统时,创建相应的目录(与主机链接库目录应相同),并从主机上拷贝相应的库文件(应用程序用到的)。
具体可参考:http://blog.chinaunix.net/uid-31020952-id-5756374.html

四、试验结果:
1、内核成功启动:


注:
中科大孟宁老师《Linux内核分析》MOOC课程  试验报告
阅读(1436) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~