当前位置:文档之家› 编译内核实验报告

编译内核实验报告

实验一编译Linux内核
实验时间
6小时
实验目的
认识Linux内核的组成,掌握配置、编译、安装Linux内核的步骤。

实验目标
下载2.6.19或更新的Linux内核,配置该内核使其支持NTFS,并在新的内核中修改其版本为Linux NameTestKernel x.x.x,其中,Name是你的名字(汉语拼音);x.x.x是新内核的版本号,最后在你的机器上编译安装这个新内核。

背景知识
参见《Red Hat Enterprise Linux 4入门与提高》第20章。

实验步骤
1.验证gcc的可用:在你自己的工作目录下,编译链接运行Hello World程序。

2.在上下载指定的内核,或者查找更新的稳定版内核并
下载之。

3.准备相关工具。

提示:如当前运行的Linux内核是基于2.4版本的,则需要更新以下软件:
module-init-tools和mkinitrd。

具体更新信息可参见下载内核源代码中的
Documentation/Changes这个文件。

4.把源代码解压缩至/usr/src中,最终形成/usr/src/linux x.x.x/目录(x.x.x是新
内核的版本号)。

提示:这里的注意点是路径的选择,一般要放在/usr/src/linux x.x.x/目录下面,以满足Makefile对路径设置的初始要求。

5.进入源代码的根目录,找到合适自己的内核配置方法,并按照实验目标对其
进行配置。

6.修改/usr/src/linux x.x.x/linux/include/linux/verson.h文件中的版本信息。

7.编译内核。

8.安装模块文件。

9.安装内核文件。

10.重新启动新内核。

实验结果
1.实验步骤1中,编译链接运行程序你下达了哪些命令?
2.实验步骤2中,你下载了哪个版本的内核文件?
3.实验步骤3中,你是否安装了相关工具?如安装,则写出安装过程。

4.实验步骤4中,你是用哪些命令解压缩内核文件的?
5.实验步骤5中,你用了哪种内核配置的方法?
6.你对实验步骤6中涉及的文件做了怎样的修改?
7.实验步骤7-9的过程,是否出现错误?如有,你是如何解决的?
8.观察你机器中GRUB的配置文件,它在安装完新内核后发生了哪些变化?
9.新内核启动过程是否成功?如有错误,是哪些错误?你是如何消错的?
实验报告
1. 引言
本次实验所要讨论的问题是编译并安装一个完全属于我自己的内核。

工作步骤:首先下载指定的内核,准备相关工具,然后解压缩源代码,配置内核,编译内核,安装模块文件以及内核文件,最后重新启动新内核。

结果:完成了实验步骤123456。

意义:这次试验让我初步认识了Linux内核的组成,能够使用简单的gcc,同时掌握了一些编译、安装内核的命令。

2. 问题提出
内核是一个操作系统的核心,在编译内核实验过程中我们需要解决以下几个主要问题:(1)准备相关工具,下载完新的内核之后需要先更新以下两个软件:module-init-tools和mkinitrd。

(2)解压新内核
(3)内核配置
(4)编译内核
(5)安装模块文件和内核文件
3. 解决方案
3.1 准备相关工具
下载module-init-tools 和mkinitrd,安装步骤见附录(1)。

3.2 解压新内核
将下载好的内核源码包和两个相关工具拷贝到/usr/src文件夹下,开始解压新内核,具体操作步骤见附录(2)。

3.3 内核配置
程序见附录(3),在给出的内核配置选项中大多数选择了默认,有几个选项必须选择,例如:
A.Loadable Module support选项中,选上"Module unloading"和"Automatic kernel module loading"这两项;
B.Device Drivers--->Block Device 中选上"Loopback device support";
Device Drivers--->Multi-device support (RAID and LVM) 处选"device mapper support";
Device Drivers--->Graphics support 一定要选上"Support for frame. buffer devices";
Device Drivers --->USB support --->选上"USB Mass Storage support";
Device Drivers--->Network device support--->Ethernet (10 or 100Mbit)---> <*> AMD PCnet32 PCI support;
3.4 编译内核、安装模块文件和内核文件
在/usr/src/linux-2.6.15.5目录下,执行以下命令即可:见附录(4)。

4. 实验结果
1. gedit hello.c
gcc -o hello hello.c
运行:./hello Hello world
2.我下载的内核版本:linux-
3.1.4
3.安装了相关工具,步骤见附录(1)
4.tar -jxvf linux-3.1.4.tar.bz2
在ubuntu下也可以直接右击解压缩
5. 我采用的内核配置方法:make menuconfig
这是文字模式的设置方式,它包含一个菜单以设置内核编译选项。

6. 对/usr/src/linux-3.1.4/Makefile进行修改:将NAME改为linux dingbin 3.1.4
9. 启动没有成功,不知道什么原因
5. 结束语
此次实验很多步骤老师已在实验步骤中有指导,所以实验的难度减少了很多,但是在实验中还是遇到了一些问题,例如:在配置内核时,要在/usr/src/linux xxx目录下才可以执行make命令等等。

这些问题说明我们还很缺乏linux知识,还要在课下补充。

另外编译内核后启动内核失败,查了一些资料仍未解决,以后还要多看看资料。

6. 附录
(1)3.1安装module-init-tools步骤:
在/usr/src目录下,依次执行:
#tar jvxf module-init-tools-3.2.tar.bz2 (解压)
#cd module-init tllos-3.2 (由/usr/src目录进入module-init-tools目录下)
#./configure --prefix=/
#make mokeold
#make all install
#./generate-modprobe.conf /etc/modprobe.conf
mkinitrd是必须的,为了能使用这个工具,你必须安装一个initrd-tools包:
#apt-get install initrd-tools(安装完成后就可以看到makeinitrd命令了)
(2)3.2解压新内核步骤:
cd /usr/src (进入到目录下,如果已经在目录下,可不执行)
rm -rf linux (删除linux文件夹,如果内核从未编译过,则跳过)
tar jvxf linux-3.1.4.tar.bz2 (解压新内核)
ln -s linux-3.1.4 linux (重新生成linux文件夹)
(3)3.3内核配置:
cd linux-3.1.4 (进入到/usr/src/linux-3.1.4目录下)
make mrproper (确保源代码目录下没有不正确的.o文件)
make menuconfig (配置内核各选项)
(4)3.4编译内核以及安装模块文件和内核文件:
make dep (建立编译时所需的从属文件。

注意:如果内核从未编译过,此步可跳过) make clean (清除内核编译的目标文件。

注意:如果内核从未编译过,此步可跳过) make bzImage (编译内核)
make modules (编译可加载模块)
make modules_install (安装可加载模块)
安装成功后,系统会在/lib/modules目录下生成一个子目录,里面存放着新内核的所有可加载模块。

make install (安装新内核)
0827401126 丁彬。

相关主题