实验6 linux内核定制和FloppyLinux的实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验六linux内核定制和FloppyLinux的实现
一,实验目的
完成这个实验后,您将具有以下能力:
n了解Linux内核的结构
n编译Linux内核的能力
n了解一个操作系统的构造
n制作f l o p p y l i n u x
二,基础知识
进行本实验前,您应具有:
n C语言基础
n Linux环境下vi编译器的使用
三,实验环境准备
为了完成本实验,以下硬件条件是必需的:
n PC机Pentium500以上,硬盘40G以上,内存128M以上,带软驱
n一张软盘
为了完成本实验,以下软件条件是必需的:
n PC机操作系统RedHat Linux 9.0
四,情景描述
1.重新编译生成一个新的系统内核,然后烧写到开发板启动之。
2.生成F l o p p y L i n u x。
五,实验基本原理——Linux的相关介绍
1,Linux的版本号
可以使用uname –a命令或者cat /proc/version命令来查看运行系统的内核版本号:如图6.1。
图6.1
由此可知,该系统内核版本号为2.4.20-8。其中第一个数为主版本号,第二个数为次版本号,第三个为修订号。如果次版本号为偶数则表明是该版本是稳定发行版本,如果是奇数则说明仍在开发中。
2,Linux的内核目录介绍
现代的操作系统一般由进程管理、内存管理、文件系统、驱动程序和网络等组成。Linux 内核源码的各个目录大致与此相对应,如图6.2所示。其组成如下:
图6.2
arch 包括了所有和体系结构相关的核心代码。它下面的每一个子目录都代表一种Linux 支持的体系结构。
include 包括编译核心所需要的大部分头文件。
init 包含核心的初始化代码(不是系统的引导代码),有main.c和Version.c两个文件。mm 包含了所有的内存管理代码。
drivers 包含系统中所有的设备驱动程序。
ipc 包含了核心进程间的通信代码。
fs 存放Linux支持的文件系统代码。不同的文件系统有不同的子目录对应。
kernel 包含内核管理的核心代码放在这里。
net 核心的网络部分代码,其每个子目录对应于网络的一个方面。
lib 包含了核心的库代码。
scripts 包含用于配置核心的脚本文件。
Documentation下是一些文档,是对每个目录作用的具体说明。
一般在每个目录下都有一个.depend文件和一个Makefile文件。这两个文件都是编译时使用的辅助文件。另外有的目录下还有readme文件,它是对该目录下文件的一些说明。
3,关于配置文件和配置工具
配置文件:给用户提供配置选择的功能
各级Makefile和.depend文件:各级目录的make文件和依赖工具
.config:内核配置文件,保存配置结果。
Rules.mak e:规则文件。
配置工具:包括配置命令解释器
其中配置用户界面如下:
(1)基于字符的界面make config (如图6.3)
图6.3
该方法简单且不需要调用Xwindows,不过操作麻烦,用户界面差。(2)基于 Ncurses 的文本模式图形用户界面make menuconfig (如图6.4)
图6.4
该方法简单且不需要调用Xwindows,而且操作简单,用户界面好。
这次实验就使用该方法进行内核的相关配置。
(3)基于 Xwindows 图形界面的用户配置界面make xconfig (如图6.5)
图6.5
4,内核的编译
(1)在该级目录下的Config.in中添加对该模块的编译条件,该变量可以设置为三种状态:(如图6.6所示)
Y ---将该功能模块编译进内核
N ---不将该功能模块编译进内核
M---将该功能编译成模块的方式,可以在需要时动态插入到内核中的模块
图6.6
(2)内核的编译操作
# make menuconfig-----配置编译选项
# make dep -----提供变量依赖关系信息.
# make clean-----删除生成的模块和目标文件.
# make zImage-----编译内核生成压缩的映象.
# make modules-----编译模块.
# make modules_install-----安装编译完成的模块.
最终生成的压缩内核映象的路径:arch/arm/boot/zImage
拷贝新内核文件zImage到启动目录,并改为合适的名字。
5,新内核的引导
修改/boot/grub/grub.conf文件的内容如下:
default=0 timeout=30
splashimage=(hd0,6)
title Red Hat Linux (2.4.24)
root (hd0,0)
kernel vmlinuz-2.4.24 ro root=/dev/hda0
initrd /initrd-2.4.24.img
设置完成,然后就可以重启计算进入新编译的内核了。六,估计完成实验需要时间:180分钟
练习1
重新编译生成一个新的系统内核
情景描述
进入内核所在目录,使用m a k e m e n u c o n f i g进行配置。之后编译生成一个新的内核镜像,并
且烧写到A R M9嵌入式开发板上进行测试。
任务详细步骤
1.配置a r m内核相关信息 a. 进入arm内核所在目录
# cd /arm2410s/kernel-2410s
b.进入menuconfig配置菜单
# make menuconfig
c. 进行一定的更改之后,按esc按键退出界面并保存。如图6.7。
2. 编译生成新的内核。 a.输入如下命令,清除无用信息。
# make clean
b.输入如下命令,建立依赖关系。
# make dep
c.编译新内核
# make
最终生成的压缩内核映象的路径:arch/arm/boot/zImage,将该镜像拷贝出来,准备烧入到开发板中。
图6.7