最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

实验4-Linux内核编译实验 答案

来源:动视网 责编:小OO 时间:2025-09-28 22:48:36
文档

实验4-Linux内核编译实验 答案

《嵌入式系统》实验报告4学号:姓名:班级:成绩:实验名称:Linux内核编译实验实验地点:实验仪器:装有Linux操作系统的PC机一台;XSBase270实验开发平台一套一、实验目的:1、了解Linux内核源代码的目录结构以及各目录的相关内容2、了解Linux内核各配置选项内容和作用3、掌握Linux内核配置文件config.in的作用4、掌握Linux内核的编译过程5、掌握将新增内核代码加入到Linux内核结构中的方法二、实验内容:1、利用所提供的Linux源代码,具体分析递归性makefi
推荐度:
导读《嵌入式系统》实验报告4学号:姓名:班级:成绩:实验名称:Linux内核编译实验实验地点:实验仪器:装有Linux操作系统的PC机一台;XSBase270实验开发平台一套一、实验目的:1、了解Linux内核源代码的目录结构以及各目录的相关内容2、了解Linux内核各配置选项内容和作用3、掌握Linux内核配置文件config.in的作用4、掌握Linux内核的编译过程5、掌握将新增内核代码加入到Linux内核结构中的方法二、实验内容:1、利用所提供的Linux源代码,具体分析递归性makefi
《嵌入式系统》实验报告4

学号:           姓名:           班级:           成绩:         

实验名称:Linux内核编译实验

实验地点: 

实验仪器:装有Linux操作系统的PC机一台;XSBase270实验开发平台一套

一、实验目的:

1、了解Linux内核源代码的目录结构以及各目录的相关内容

2、了解Linux内核各配置选项内容和作用

3、掌握Linux内核配置文件config.in的作用

4、掌握Linux内核的编译过程

5、掌握将新增内核代码加入到Linux内核结构中的方法

二、实验内容:

1、利用所提供的Linux源代码,具体分析递归性makefile的结构,划出一个从最顶层makefile到最底层所经过的文件路径和所需要的变量。

2、利用所提供的Linux源代码,写出编译Linux内核的具体过程

2.1 找到内核位置:

[root@local]$ cd /home/Liod270

[root@local]$ ls

[root@local]$ cd Kernel

2.2 找到内核的压缩包“linux-2.4.21-51Board_EDR.tar.gz”后,便对其解压

[root@local]$ tar zxvf linux-2.4.21-51Board_EDR.tar.gz

2.3 进入解压后的内核源代码目录

[root@local]$ cd linux-2.4.21-51Board_EDR

3、利用所提供的Linux源代码,然后用make menuconfig命令对内核的配置进行修改,记下具体修改的配置选项并进行比较。

[root@local]$ make mrproper

[root@local]$ make menuconfig

[root@local]$ make dep

[root@local]$ make zImage

3.2 将编译好的内核copy到/tftpboot目录中

[root@local]$ cp arch/arm/boot/zImage  /tftpboot/

4、将所编译的内核下载并烧写到目标板(利用实验3的内容)

4.1 完成实验3中的1-4步骤(如果没有配置好,则重新做该步骤)

4.2通过超级终端进入PC机的bootloader(对应实验3中的6步骤)

4.3在Bootloader中配置宿主机及目标机bootloader的IP地址 (对应实验3中的7步骤)

在 Bootloader命令行分别设置宿主机及目标机bootloader的 ip地址。具体操作步骤如下: 

a)  开发板上电后,敲主机键盘任何键停止 bootloader运行;

b)  出现菜单项,等待用户输入;

c) 输入数字“1”,查看当前的配置信息;

d)  输入数字“0”,让 bootloader进入命令行模式。 

e)  输入以下命令设置当前目标机的IP地址,使之与宿主机在一个网段内

       set  myipaddr  192.168.1.50

  f)  输入以下命令,将宿主机的IP地址配置到目标机的bootloader中

       set  destipaddr  192.168.1.38

      [注:此时应该使得destipaddr与宿主机的IP地址一致]

g) 通过bootloader下载并烧写内核镜像

tftp  zImage_EDR_tinyx  kernel

flash kernel

  h) 退出命令行模式

      quit

i)  输入数字“7”,启动系统。

三、思考:

1、简述Linux源代码各目录中的内容

2、分析make config、make menuconfig、make xconfig三个linux内核配置界面的区别

3、指出linux内核编译命令make, make zImage, make bzImage的区别

1.

Documentation/:这个目录中包含很多关于配置内核、运行 ramdisk 等任务的实用信息(但通常是过时的)。不过,与不同配置选项相应的帮助条目并不在这里 —— 它们在每个源代码目录的 Kconfig 文件中。

arch/:所有与体系结构相关的代码都在这个目录以及 include/asm- 目录中。在此目录中,每种体系结构都有自己的目录。例如,用于基于 PowerPC 的计算机的代码位于 arch/ppc 目录中。在这些目录里,可以找到底层内存管理、中断处理、早期初始化、汇编例程,等等。

drivers/:按照惯例,在此目录的子目录中可以找到运行外围设备的代码。包括视频驱动程序、网卡驱动程序、底层 SCSI 驱动程序,以及其他类似的驱动程序。例如,在 drivers/net 中可以找到大部分网卡驱动程序。将一类驱动程序组合在一起的某些更高层代码,可能会(也可能不会)像底层驱动程序本身那些包含在同一目录中。

fs/:通用文件系统的代码(称做 VFS,即 Virtual File System)和各个不同文件系统的代码都可以在这个目录中找到。ext2 文件系统是在 Linux 中最常广泛使用的文件系统之一;在 fs/ext2 中可以找到读取 ext2 格式的代码。并不是所有文件系统都会编译或运行;对某些寻找内核项目的人而言,更生僻的文件系统永远都是理想的候选者。

include/:在 .c 文件的开头所包含的大部分头文件都可以在这个目录中找到。 asm- 目录下是与体系结构相关的包含(include )文件。部分内核构建过程创建从 asm 指定 asm- 的符号链接。这样,无需将其固定编码到 .c 文件 #include 就可以获得用于那个体系结构的正确文件。其他目录中包含的是 非-体系结构-相关 的头文件。如果在不只一个 .c 文件中使用了某个结构体、常量或者变量,那么它可能应该放入其中一个头文件中。

init/:这个目录中的文件包括 main.c、创建 早期用户空间(early userspace) 的代码,以及其他初始化代码。可以认为 main.c 是内核“粘合剂(glue)”。在下一部分将深入讨论 main.c。早期用户空间提供了 Linux 内核引导起来时所需要的功能,而这些功能并不需要在内核本身运行。

ipc/:IPC 的意思是 进程间通信(interprocess communication)。它包含了共享内存、信号量以及其他形式 IPC 的代码。

kernel/:不适合放在任何其他位置的通用内核级代码位于此处。这里有高层系统调用代码,以及 printk() 代码、调度程序、信号处理代码,等等。文件名包含很多信息,所以可以使用 ls kernel/,并非能常准确地猜到每个文件的功能。

lib/:这里是对所有内核代码都通用的实用例程。常见的字符串操作、调试例程,以及命令行解析代码都位于此处。

mm/:这个目录中是高层次内核管理代码。联合使用这些例程以及底层的与体系结构相关的例程(通常位于 arch//mm/ 目录中)来实现虚拟内存(Virtual memory,VM)。在这里会完成早期内存管理(在内存子系统完全建立起来之前需要它),以及文件的内存映射、页高速缓存管理、内存分配、RAM 中页的清除(还有很多其他事情)。

net/:这里是高层网络代码。底层网络驱动程序与此层次代码交换数据包,这个层次的代码可以根据数据包将数据传递给用户层应用程序,或者丢弃数据,或者在内核中使用它。net/core 包含大部分不同的网络协议都可以使用的代码,和某些位于 net/ 目录本身中的文件一样。特定的网络协议在 net/ 的子目录下实现。例如,在 net/ipv4 目录中可以找到 IP(版本 4)代码。

scripts/:这个目录中包含的脚本可用于内核的构建,但并不将任何代码加入到内核本身之中。例如,各种配置工具可以将它们的文件放在这里。

2.

#make config(基于文本的最为传统的配置界面,不推荐使用) 

#make menuconfig(基于文本选单的配置界面,字符终端下推荐使用) 

#make xconfig(基于图形窗口模式的配置界面,Xwindow下推荐使用)

3.

三者都实现内核的完全编译;其中命令make zImage和命令make bzImage生成的内核都是使用gzip压缩的,只要使用一个就够了,它们的区别在于使用make bzImage可以生成大一点的内核,比如在编译2.4.0版本的内核时如果使用make zImage命令,那么就会出现system too big的错误提示。

任课教师签名:                                                      201  年    月    日

文档

实验4-Linux内核编译实验 答案

《嵌入式系统》实验报告4学号:姓名:班级:成绩:实验名称:Linux内核编译实验实验地点:实验仪器:装有Linux操作系统的PC机一台;XSBase270实验开发平台一套一、实验目的:1、了解Linux内核源代码的目录结构以及各目录的相关内容2、了解Linux内核各配置选项内容和作用3、掌握Linux内核配置文件config.in的作用4、掌握Linux内核的编译过程5、掌握将新增内核代码加入到Linux内核结构中的方法二、实验内容:1、利用所提供的Linux源代码,具体分析递归性makefi
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top