实验四 Linux 内核编译实验
【实验目的】
1、了解 Linux内核源代码的
目录
工贸企业有限空间作业目录特种设备作业人员作业种类与目录特种设备作业人员目录1类医疗器械目录高值医用耗材参考目录
结构及各目录的相关内容
2、了解 Linux内核各配置选项内容和作用
3、掌握 Linux内核配置文件 config.in的作用
4、掌握 Linux内核的编译过程
5、掌握将新增内核代码加入到 Linux内核结构中的方法
【实验原理】
1、内核源代码目录介绍
Linux 内核源代码可以从网上下载(http://www.kernel.org/pub/linux/v2.4)。一般主机平
台的 Linux (如红旗 Linux)源代码在根目录下的/usr/src/linux目录下。内核源代码的文件按树
形结构进行组织的,在源代码树最上层的可以看到如下的一些目录:
(1)、arch:arch子目录包括所有与体系结构相关的内核代码。arch的每一个子目录都代表
一个 Linux所支持的体系结构。例如:arm目录下就是 arm体系架构的处理器目录,包含我
们使用的 PXA处理器。
(2)、include:include 子目录包括编译内核所需要的头文件。与 ARM 相关的头文件在
include/asm-arm子目录下。
(3)、init:这个目录包含内核的初始化代码,但不是系统的引导代码,其中所包含 main.c
和 Version.c文件是研究 Linux内核的起点。
(4)、mm:该目录包含所有独立于 CPU 体系结构的内存管理代码,如页式存储管理内存
的分配和释放等。与 ARM体系结构相关的代码在 arch/arm/mm中。
(5)、Kernel:这里包括主要的内核代码,此目录下的文件实现大多数 Linux的内核函数,
其中最重要的文件是 sched.c。与 Xscale体系结构相关的代码在 arch/arm-pxa/kernel目录中。
(6)、Drives:此目录存放系统所有的设备驱动程序,每种驱动程序各占一个子目录。
(a)、/block:块设备驱动程序。块设备包括 IDE和 scsi设备。
(b)、/char:字符设备驱动程序。如串口、鼠标等。
(c)、/cdrom:包含 Linux所有的 CD-ROM代码。
(d)、/pci:PCI卡驱动程序代码,包含 PCI子系统映射和初始化代码等。
(e)、/scsi:包含所有的 SCSI代码以及 Linux所支持的所有的 SCSI设备驱动程序代码。
(f)、/net:网络设备驱动程序。
(g)、/sound:声卡设备驱动程序。
(7)、lib目录放置内核的库代码;
(8)、net目录包含内核与网络的相关的代码;
(9)、ipc目录包含内核进程通信的代码;
(10)、fs 目录是所有的文件系统代码和各种类型的文件操作代码,它的每一个子目录支持
一个文件系统,如 JFFS2;
(11)、scripts目录包含用于配置内核的脚本文件等。每个目录下一般都有 depend文件和一
个 makefile文件,他们是编译时使用的辅助文件,仔细阅读这两个文件对弄清各个文件之间
的相互依托关系很有帮助。
2、内核的配置的基本结构
Linux内核的配置系统由四个部分组成
(1)、Makefile:分布在 Linux内核源码中的 Makefile,定义 Linux内核的编译规则;顶层
Makefile是整个内核配置、编译的总体控制文件;
(2)、配置文件(config.in):给用户提供配置选择的功能;.config:内核配置文件,包括由
用户选择的配置选项,用来存放内核配置后的结果;
(3)、配置工具:包括对配置脚本中使用的配置命令进行解释的配置命令解释器和配置用户
界面(基于字符界面:make config;基于 Ncurses图形界面:make menuconfig;基于 xWindows
图形界面:make xconfig)
(4)、Rules.make:规则文件,被所有的Makefile使用。
2.1编译规则Makefile
利用 make menuconfig(或 make config、make xconfig)对 linux内核进行配置后,系统
将产生配置文件(.config)。在编译时,顶层 Makefile 将读取 .config 中的配置选择。
顶层 Makefile 完成产生核心文件(vmlinux )和内核模块(module)两个任务,为了
达到此目的,顶层 Makefile 递归进入到内核的各个子目录中,分别调用位于这些子目录中
的 Makefile,然后进行编译。至于到底进入哪些子目录,取决于内核的配置。顶层Makefile
中的 include arch/$(ARCH)/Makefile指定特定 CPU 体系结构下的 Makefile,这个Makefile
包含了特定平台相关的信息。
各个子目录下的 Makefile 同样也根据 配置文件(.config)给出的配置信息,构造出当
前配置下需要的源文件列表,并在文件最后有 include $(TOPDIR)/Rules.make。
顶层 Makefile 定义并向环境中输出了许多变量,为各个子目录下的 Makefile 传递一
些变量信息。有些变量,比如 SUBDIRS,不仅在顶层 Makefile 中定义并且赋初值,而且
在 arch/*/Makefile 还作了扩充。现对部分主要变量介绍如下:
(1)、 版本信息:
有关版本信息变量有 VERSION、PATCHLEVEL、SUBLEVEL, EXTRAVERSION,
KERNELRELEASE。
版本变量信息定义了当前内核的版本,比如 VERSION=2、PATCHLEVEL=4、
SUBLEVEL=18 、 EXATAVERSION=-rmk7 , 它 们 共 同 构 成 内 核 的 发 行 版 本
KERNELRELEASE:2.4.18-rmk7。
(2)、CPU 体系结构变量 ARCH
在顶层 Makefile 的开头,用 ARCH 定义目标 CPU 的体系结构,比如 ARCH:=arm
等。许多子目录的 Makefile 中,要根据 ARCH 的定义选择编译源文件的列表。
(3)、 路径信息变量 TOPDIR、SUBDIRS
TOPDIR变量定义了 Linux 内核源代码所在的根目录。例如,各个子目录下的 Makefile
通过 $(TOPDIR)/Rules.make 就可以找到 Rules.make 的位置。
SUBDIRS 变量定义了一个目录列表,在编译内核或模块时,顶层 Makefile 根据
SUBDIRS 变量决定需要进入哪些子目录。SUBDIRS 变量的值取决于内核的配置,在顶层
Makefile 中 SUBDIRS 赋值为 kernel drivers mm fs net ipc lib;根据内核的配置情况,在
arch/*/Makefile 中对 SUBDIRS 的值进行了扩充以满足特定 CPU体系结构的要求。
(4)、内核组成信息变量:HEAD, CORE_FILES, NETWORKS, DRIVERS, LIBS
(5)、编译信息变量:CPP, CC, AS, LD, AR,CFLAGS,LINKFLAGS
CROSS_COMPILE 定义了交叉编译器前缀 arm-linux-,表明所有的交叉编译工具都是
以 arm-linux- 开头的,所以在各个交叉编译器工具之前都加入了$(CROSS_COMPILE)变量
引用,以组成一个完整的交叉编译工具文件名,比如 arm-linux-gcc。
CFLAGS 定义了传递给 C 编译器的参数。
LINKFLAGS 是链接生成 vmlinux 时所使用的参数。LINKFLAGS 在 arm/*/Makefile
中定义。
(6).配置变量 CONFIG_*(*表示通配符)
配置文件( .config)中有许多的配置变量等式,用来说明用户配置的结果。例如
CONFIG_MODULES=y 表明用户选择了 Linux 内核的模块功能。
配置文件(.config)被顶层 Makefile 包含后,就形成许多的配置变量,每个配置变量
具有四种不同的值:
(a)、y 表示本编译选项对应的内核代码被静态编译进 Linux 内核;
(b)、m 表示本编译选项对应的内核代码被编译成模块;
(c)、n 表示不选择此编译选项;
(d)、如果根本就没有选择,那么配置变量的值为空。
2.2、配置文件 config.in
除了 Makefile 的编写外,另外一个重要的工作就是把新增功能加入到 Linux 的配置选
项中来提供功能的说明,让用户有机会选择新增功能项。Linux 所有选项配置都需要在
config.in 文件中用配置语言来编写配置脚本,然后顶层 Makefile 调用 scripts/Configure,
按照 arch/arm/config.in 来进行配置。命令执行完后生成保存有配置信息的配置文件
( .config)。下一次再做 make config 时将产生新的 .config 文件,原 .config 被改名
为 .config.old。
3、编译内核的常用命令
精简 Linux内核常用命令包括:Make Config,dep,clean,mrproper,zImage,bzImage,
Modules,Modules_Install
(1)、Make config:内核配置,调用./scripts/Configure按照 arch/i386/config.in来进行配置。
命令执行后产生文件.config,其中保存着配置信息。下次在做 make config 时将产生新
的.config文件,原文件 config更名为 config.old
(2)、 make dep:寻找依存关系。产生两个文件. depend和.hdepend,其中.hdepend表示每
个.h文件都包含其他哪些嵌入文件。而.depend文件有多个,在每个会产生目标文件(.o)文件
的目录下均有,它表示每个目标文件都依赖于哪些嵌入文件(.h)
(3) 、make clean:清除以前构核所产生的所有的目标文件,模块文件,核心以及一些临时
文件等,不产生任何文件
(4)、 make rmproper:删除所有以前在构核过程所产生的所有文件,及除了做 make clean
外,还要删除.config,.depend 等文件,把核心源码恢复到最原始的状态。下次构核时必须
进行重新配置;
(5)、make,make zImage, make bzImage:
(a)、make:构核。通过各目录的 Makefile文件进行,会在各个目录下产生一大堆目标文
件,如核心代码没有错误,将产生文件 vmlinux,这就是所构的核心。并产生映像文件
system.map通过各目录的 makefile文件进行。.version文件中的数加 1,表示版本号的变化。
(b)、make zImage:在 make的基础上产生压缩的核心映像文件./arch/$(ARCH)/boot/zImage
以及./arch/$(ARCH)/boot/compressed目录下产生一些临时文件。
(c)、 make bzImage:在 make 的基础上产生压缩比例更大的的核心映像文
件./arch/$(ARCH)/boot/bzImage 以及./arch/$(ARCH)/boot/compressed 目录下产生一些临时文
件。在核心太大时进行
4、内核编译过程
(1)make mrproper:删除所有以前在构核过程所产生的所有文件
(2)make menuconfig:内核配置
(3)make dep:寻找依存关系
(4)make zImage:产生压缩的核心映像文件
内核编译完毕之后,生成 zImage内核映象文件保存在源代码的 arch/arm/boot/目录下
5、内核配置项介绍
首先切换 linux源代码所在的目录,并终端输入 make menuconfig,系统弹出基于 Ncurses
内核配置图形界面(如图 4-1所示),便可进行内核选项的配置。
[root@]$make menuconfig
图 4-1 内核配置界面
5.1、配置界面的使用方法
(1)、在菜单方式的配置界面上可用上下方向键来在各菜单之间移动
(2)、在标有"---->" 标志的地方按回车键进入下级菜单
(3)、按两次
或选择则返回到上级菜单
(4)、按“h”键或选择下面的 则可看到配置帮助信息
(5)、按 键则在各控制选项之间移动
(6)、Y表示包含该功能选项配置在内核中,M表示以模块的方式编译到内核中,N表示
该功能选项不进行编译
(7)、设置状态在 [ ] 或 < > 中以 “* “(选择), “M “(模块), 空格(除外)来表示。
5.2、配置选项的含义
(1)、Code maturity level options --->(图 4-2)
[*] Promprt for development and/or incomplete Code/drivers
选择 kernel 代码的成熟度的部分,帮助选择开发版本层次的程序,此项提问是否将 arpha
版本包含到 kernel中。
图 4-2 代码的成熟度选项界面
(2)、Loadable module support --->(图 4-3)
[*] Enable Loadable moduLe Support
利用模块可将不常用的设备驱动或功能作为模块放在内核外部,必要时动态地调用。操作
结束后从内存中删除,这样可以有效地使用内存,同时也可减小了内核的大小。
模块可以自行编译并具有独立的功能,即使需要改变模块的功能,也不用对整个内核进
行修改。文件系统,设备驱动,二进制格式等很多功能都支持模块。一定要选择[*]。
[ ] Set version information on all Symbols for modules
利用这个功能能够让内核使用其它内核版本模块或没有包含在此 kernel的特殊的模块。
一般选择[N]。
[*] Kernel module Loader
这个设置使 kernel对模块处于常备状态。在不使用 Insmod或 rmmod 命令情况下,kernel
程序自动将需要执行的模块调用到内存中,一定时间内不使用该模块时自动将其从内存删除
一般要选择[*]
图 4-3 可装卸模块支持选项界面
(3)、System Type --->(图 4-4)
(PXA270/210-based) ARM system typ
系统格式中按照 EELIOD的 CPU 格式 选择 PXA270/210-based。
图 4-4 CPU体系结构界面
(4)、General setup --->(图 4-5 通用设置)
网络,总线协议,节电功能等影响整个系统的设置。
图 4-5 通用设置界面
(5)、Memory Technology Devices (MTD) --->(图 4-6)
在嵌入式设备中为了组成固态文件系统 (solid state filesystem, 即不旋转的,没有磁盘的)
而需要的闪存, RAM, 和其它类似的芯片组等存储装置。
图 4-6 存储器设备配置界面
RAM/ROM/Flash chip drivers --->(图 4-7 RAM/ROM/Flash 芯片驱动配置界面)
图 4-7 RAM/ROM/Flash 芯片驱动配置界面
Mapping drivers for chip access --->(图 4-8芯片存储映象驱动配置界面)
图 4-8芯片存储映象驱动配置界面
(6)、Block devices --->(图 4-9块存储设备配置界面)
针对硬盘, CDROM 等以 block为单位进行操作的存储装置 (block device) 选项。
Loopback device support
使一个文件能够被认为一个文件系统。例如,软盘的 image文件或拷贝 CD-ROM的文件,
可被认为一个文件系统, 因而可以查看其内容。
图 4-9块存储设备配置界面
(7)、Networking options --->(图 4-10 网络配置选项界面)
[*] Packet Socket
与 tcpdump(检查包的头部, 按条件打印其内容)类似, 在没有媒介协议而直接与网络设
备通信的应用上使用。
[*] Packet socket: mmapped IO
( 激活此选项可使包协议驱动(packet protocol driver)支持更快速的 IO机制。
[*] Socket filtering
<*> Unix domain Sockets
[*] TCP/IP networking
( 此功能使 Linux系统成为 TCP/IP网络。 TCP/IP是区域网络及互联网
标准
excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载
协议, 不经过
互联网的 Standalone电脑也需要 TCP/IP,因为 Term和 XWindow 等程序也使用 TCP/IP 协
议。
[*] IP: kerneL LeveL autoconfiguration :
[*] IP: DHCP Support
[*] IP: BOOTP Support
[*] IP: RARP Support
( 客户系统(client system) 启动时从 DHCP 或 BOOTP 服务器索取网络设置信息的功能。
用于启动时没有磁盘的系统中, "通过 NFS 的根文件系统(root filesystem)" 项也要选择
[Y]。
图 4-10 网络配置选项界面
(8)、Network device support --->(图 4-11 网络设备配置界面)
[*] Network device support
如果用户的计算机连接到网络上, 或者想使用 SLIP或 PPP的时候选择。
Ethernet (10 or 100Mbit) --->(图 4-12 以太网设备配置界面)
<*> SMSC LAN91C111 support for EELiod Board
支持 EELIOD Ethernet 卡中 LAN91C111。
图 4-11 网络设备配置界面
图 4-12 以太网设备配置界面
(9)、IrDA (infrared) support(图 4-13 红外接口配置界面)
图 4-13 红外接口配置界面
(9)、Character devices --->(图 4-14 字符设备驱动配置界面)
支持终端, 视频适配器, 鼠标, 打印机 等以文字为单位进行操作的设备。
[*] VirtuaL terminaL
一个物理终端上可执行多个虚拟终端。 虚拟终端可支持多个 X session, 也可同时使用
多个显示器。 EELIOD板可支持两个,Minicom和 lcd。
[*] Support for console on virtuaL terminal
系统 console 接收所有 kernel信息和警告信息,允许以单独用户(single user)模式登录。
[*] Standard/generic (dumb) SeriaLSupport
适用Modem和串行鼠标, 串行设备的功能。
[*] Support for console on serial port
可将串口用作 console。(系统 console 是接收并打印 kernel 信息和警告信息, 允许以单
独用户模式登录的设备) 也可用串口打印机等纪录各个信息。 即使在这里设置[Y], 但如
果不调整 kernel 参数, 则/dev/tty0 仍然占用着系统 console。例如, 欲将第二个串口换成
系统 console, 需在 kernel 指令行输入"console=ttyS1"指令。 参考"man bootparam" 或
bootloader文件可查到 bootloader(lilo或 loadlin)启动的时候应选用哪些选项。
利用这个选项可运行没有 VGA 卡的 linux 系统,kernel 自动将/dev/ttyS0 设为系统
console。 即使没有直接连接到 linux box的显示器,视频卡,键盘等, 也可以在用串行线
连接的其他终端上控制系统。 这个功能常用倒利用 linux的路由器, 共享机等网络设备。
[*] Unix98 PTY Support
PTY是由软件驱动的虚拟设备(pseudo terminal)。 由 master和 slave两个部分组成, 与
物理终端的操作完全相同,slave模拟终端机。Master设备从 slave读入数据或写入 slave。典
型的 master side程序是 telnet 服务器或 xterm。
图 4-14 字符设备驱动配置界面
(10)、File systems --->(图 4-15 文件系统配置界面)
这是对 linux可接近的各个文件系统的设置。 所有的操作系统都具有固有的文件系统格
式。一般为了对不同操作系统的文件系统进行读写操作需安装特殊的应用程序。 但是在
Linux可以同 Kernel模块完成这些操作。
[*] KerneL automounter Support
automounter是根据要求对远程文件系统自动进行 mount的一种工具。 BSD的 amd完全
是用户空间的 demon, 但 Linux的 automounter在文件系统已经被 mount的情况下为了减少
overhead而部分地依赖于 kernel。如果使用这个功能则"NFSfiLeSyStem Support"也被激活。
[*] Kernel automounter version 4 support (also supports v3)
如果用户的系统没有连接到大的分散网络, 或者不是需要动态再设置的 lap top之一的
话,可能不需要 automounter, 在这里选择[N]即可。
图 4-15 文件系统配置界面
(11)、Console drivers --->(图 4-16 终端设备驱动配置界面)
Frame-buffer support --->
[*] Support for frame buffer devices (EXPERIMENTAL)
[*] PXA LCD support
为了在 Console中能够使用图像功能而支持的功能。设置不妥会造成显示器或视频卡的损
伤。如果不确定就选择[N]。Frame buffer为用户提供等同地接近 linux支持的各种硬件种类
的环境,其应用程序的制作简单,移植性强。为了完整地使用 Frame buffer的所有功能,需
要一个叫 fbset的 utility程序。EELiod支持 PXA LCD。
图 4-16 终端设备驱动配置界面
(12)、Sound --->(图 4-17声卡驱动界面)
6、添加驱动到 linux内核(”实验源码”目录中包括已经修改好的相关文件)
对于一个开发者来说,将自己开发的内核代码添加到 Linux 内核中,需要有三个步骤。
(1)确定把自己的开发代码放入到内核的位置;
(2)把自己开发的功能增加到 Linux 内核的配置选项中,使用户能够选择此功能
(3)构建子目录 Makefile,根据用户的选择,将相应的代码编译 Linux 内核中。
下面,我们就通过一个简单的例子— XSBASE Simple Driver,结合前面学到的知识,来
说明如何将前面
设计
领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计
的驱动加入到 Linux 内核。
6.1、主要步骤
在确定代码位置的前提下,建立源码目录、文件、Makefile、Config.in等。
修改上层的 config.in文件,把新增驱动添加到内核配置系统中。
修改上层Makefile,将程序添加到内核编译系统中。
6.2、驱动位置和目录结构
假设将 xsbase 驱动保存到 linux源代码的 drivers/xsbase/ 目录下:
$ cd drivers/xsbase
$ tree .
|-- Config.in
|-- Makefile
|-- XSB_EDR_8LEDS.c
6.3、编辑配置文件
(1)编辑 xsbase目录下的配置文件 Config.in
由于 xsbase驱动对于 linux内核来说是新增加的功能,所以首先在配置选项上创建一个
XSBASE Simple Driver菜单;选中该菜单后,显示 "XSB_EDR_8LED Support"提示信息,
等待用户选择,这里的询问语句使用了 tristate(因为 tristate 的取值范围包括 y、n 和 m,
其中 m 就是对应着模块)。
#
#XSB_EDR_8LED driver configutation
#
mainmenu_option next_comment
comment 'XSBASE Simple Driver'
tristate 'XSB_EDR_8LED Support' CONFIG_XSB_EDR_8LED
endmenu
(2)编辑修改 CPU体系目录下的配置文件
由于本实验采用 ARM体系结构,所以应对 arch/arm/config.in文件进行修,具体修改方
法是:在文件的最后加入:source drivers/xsbase/Config.in,将 XSBASE Driver 子功能的配
置添加到 Linux 内核的配置中。
6.4 Makefile的修改与编辑
(1)编辑 xsbase目录下的配置文件Makefile文件
# drivers/xsbase/Makefile
#
# Makefile for the XSB_EDR_8LED
#
O_TARGET := XSB_EDR_8LED.o
obj-$(CONFIG_XSB_EDR_8LED) += XSB_EDR_8LEDS.o
include $(TOPDIR)/Rules.make
(2)drivers/Makefile
… …
subdir-$(CONFIG_ARCH_AT91RM9200) += at91
subdir-$(CONFIG_XSB_EDR_8LED) += xsbase
… …
include $(TOPDIR)/Rules.make
在 drivers/Makefile 中加入 subdir-$(CONFIG_XSB_EDR_8LED) += xsbase,使
得在用户选择 XSB_EDR_8LED Support 功能后,内核编译时能够进入 xsbase目录。
(3)Makefile
… …
DRIVERS-$(CONFIG_PLD) += drivers/pld/pld.o
DRIVERS-$(CONFIG_ARCH_AT91RM9200) += drivers/at91/at91drv.o
DRIVERS-$(CONFIG_XSB_EDR_8LED) += drivers/xsbase/XSB_EDR_8LED.o
DRIVERS := $(DRIVERS-y)
… …
在顶层 Makefile 中加入 DRIVERS-$(CONFIG_XSB_EDR_8LED) +=
drivers/xsbase/XSB_EDR_8LED.o。如果用户选择了 XSB_EDR_8LED Support,那么
CONFIG_XSB_EDR_8LED的值是 y,XSB_EDR_8LED.o就位于 DRIVERS-y 列表中,然后又
被放置在 DRIVERS 列表中。在前面曾经提到过,Linux 内核文件 vmlinux 的组成中包
括 DRIVERS,所以 XSB_EDR_8LED.o最终可被链接到 vmlinux 中。
6.5 关于测试程序
测试程序位于目录 test_prog中。可以使用 arm-linux-gcc编译后放到目标板上,用于对
新增驱动的测试。程序运行的效果是,调用新增的驱动控制底板上的 8 个 LED 灯,让这 8
个 LED灯有规律的闪烁。
通过本实验我们从整体上去浏览了内核,2.4版本的内核代码量很大,但我们从整体去
领会内核的特点。了解内核源代码中各个目录的关系和内容,这对了解内核很有帮助。除外
我们还从另一个角度来了解内核,就是内核的配置系统结构,了解 Makefile 和配置文件
config.in的含义,还详细介绍内核各个选项的含义。最后通过一个简单的实验例子,具体说
明如何将自行开发的代码加入到 Linux内核中。
【实验仪器】
1、装有 Linux操作系统的 PC机一台;
2、XSBase270或 XSBase255 ARM实验开发平台一套
【实验内容】
1、内核编译实验
(1)、利用光盘上提供的 Linux源代码,具体分析递归性 makefile的结构,画出一个从最顶
层 makefile到最底层所经过的文件路径和所需要的变量
(2)、利用光盘上提供的 Linux源代码,写出编译 Linux内核的具体过程
(3)、利用光盘上提供的 Linux源代码,然后用 make menuconfig命令对内核的配置进行修
改,记下具体修改的配置选项并保存退出,然后用 diff命令比较.config和.oldconfig.old两个
新旧配置的差别,同时与记下的配置选项进行比较,根据比较结果,写出你的结论。
2、驱动加载实验
(1)、将光盘上提供的 LED 显示驱动源代码加入到 Linux内核中,写出加入新驱动到 Linux
内核中的步骤和所需要修改的文件。根据修改过程画出在编译 Linux内核某一驱动的
流程
快递问题件怎么处理流程河南自建厂房流程下载关于规范招聘需求审批流程制作流程表下载邮件下载流程设计
。
【思考题】
1、简述 Linux源代码各目录中的内容,
2、分析 make config、make menuconfig、make xconfig三个 linux内核配置界面的区别
3、指出 linux内核编译命令 make,make zImage, make bzImage的区别
4、下载一个 Linux 2.6内核,查看它们的内核各项配置项的内容。
5、请针对内核的目录绘制一个树形结构图?请分析 Linux 内核面临许多新的变化是怎么将
内核组织的很简洁和具有很好的扩展性。
6、简述将新增设备驱动源代码添加到 linux内核中的步骤