实验一编译Linux内核
班级:07111301姓名:谈兆年学号:11201317431操作系统课程设计实验报告
实验一班级:
07111301
编译Linux内核学号:
1120131743
姓名:
谈兆年
一、实验目的
1、Linux的内核源程序是完全公开的,且内核的版本也在不断更新。新的内核修改了旧的内核的缺陷,并且增加了许多特性。如果想使用这些特性,或者根据自己的硬件配置定制一个更高效、更稳定的内核,就需要重新编译内核。
2、通过本次实验了解Linux内核的编译过程,以加深对Linux内核编译的过程的理解。
二、实验内容
在Linux操作系统下编译内核,并使用新的内核。本实验使用的操作系统是Fedora20,编译内核版本Linux-3.0.11。
三、实验步骤
1、查看Linux内核版本2、准备内核源代码3、配置内核编译选项4、编译内核和模块5、修改启动设置
四、实验结果及分析
1、查看Linux当前内核版本
打开终端,输入命令uname-a,得到Linux内核版本信息,如下图所示:Fedora20的当前内核版本为:3.11.10-301.fc20.x86_
2操作系统课程设计实验报告
2、准备内核源代码
[root@localhost~]#cp/home/tan/linux-3.0.11.tar.gz[root@localhost~]#cd/usr/src/kernels/[root@localhostkernels]#tarxzvflinux-3.0.11.tar.gz/usr/src/kernels/如上图所示:将linux-3.0.11.tar.gz复制到/usr/src/kernels/目录中,然后解压缩。
注:之前我在Linux内核的官方网站上下载的内核都是.tar.xz格式的,这种格式和书上的不大一样,我没有找到相关的命令来解压它。于是就果断放弃,从同学那里拷来了Linux-3.0.11.tar.gz,使用书上的命令毕竟来的方便。一开始我不清楚Linux的一些基本操作(例如复制粘贴功能的使用然也要靠命令行来实现),以至于一开始复制内核压缩文件就纠结了许久。
以下是解压完的源码文件树:
3、配置内核编译选项
Linux内核代码树包含大量代码,其中大部分功能(包括各种硬件设备驱动程序和特定文件系统)对于普通计算机系统来说都是不必要的,因此这些功能没有必要都编译到内核当中去。配置内核编译选项能够帮助用户有效的剪裁内核功能从而获取最佳内核性能。
鉴于编译选项过于繁杂,为了简化配置过程,可以采用“makeoldconfig”,即使用原有内核配置。将Fedora20自带的内核编译配置文件复制成.config,然后使用makeoldconfig生成编译配置文件。
下图便是操作过程:
3操作系统课程设计实验报告
[tan@localhostlinux-3.0.11]$cp'/boot/config-3.11.10-301.fc20.x86_'.config[tan@localhostlinux-3.0.11]$makeoldconfig……在配置的过程中,由于Fedora20的配置文件与编译的源代码版本不是完全一致,会存在少量选项在.config文件中没有配置。所以配置过程中,系统一直不停的提醒我,书上给出的正确的做法是直接按下回车键确认就好。但是当时我在配置的时候由于发烧39度,脑子也不是很清醒,一开始按“y”来确认,后来发现不对劲,又改成按回车键。所以这一步第一次没有做好,所以后来又来了第二遍。
4、编译内核和模块
1)运行命令makebzImagemodules将编译内核以及内核模块,这一步花费了20分钟,编译结束后生成bzImage文件,位于
/usr/src/kernels/linux-3.0.11/arch/x86/boot目录下,bzImage是使用gzip压缩的内核文件,以下为包含的文件:
2)我在配置内核编译选项时选择了支持内核模块,因此需要运行命令make
modules编译相应的内核模块。这一步花费了将近一个小时。
4操作系统课程设计实验报告
3)编译完成之后,运行命令makemodules_install安装编译好的内核模块。makemodules_install命令自动创建/lib/modules/3.0.11目录,并将编译好的内核模块复制安装到该目录下。
5、修改启动设置1)准备启动文件
将编译好的内核文件复制到/boot/目录下,复制成vmlinuz-3.0.11,内核符号表System.map复制到启动目录/boot下,复制成System.map-3.0.11。进入/boot目录,运行命令“mkinitrdinitrd-3.0.11.img3.0.11”生成初始化内存盘文件initrd-3.0.11.img。
5操作系统课程设计实验报告
[root@localhostlinux-3.0.11]#cparch/x86/boot/bzImage/boot/vmlinuz-3.0.11[root@localhostlinux-3.0.11]#cpSystem.map/boot/System.map-3.0.11[root@localhostlinux-3.0.11]#cd/boot[root@localhostboot]#mkinitrdinitrd-3.0.11.img3.0.11此时,在/boot目录下会存在以下四个文件:
内核编译配置文件新内核内核符号表初始化内存盘文件
config-3.11.10-301.fc20.x86_.configvmlinuz-3.0.11System.map-3.0.11initrd-3.0.11.img
2)修改GRUB配置文件
首先切换至root用户,以便获得更高的权限来修改grub.cfg文件,见下图:
由于本人使用的系统版本是Fedora20,和教材使用的Fedora11差别较大,在第一遍操作时,我竟找不到书上提到的/etc/grub.conf文件,更别说修改它了。好不容易在Fedora20中找到了对应的/boot/grub2/grub.cfg,但是vi命令的操作复杂程度更是难倒我了,vi可以分为三种状态,命令行模式、插入模
6操作系统课程设计实验报告
式、底行模式,编辑、删除、复制、替换更是一堆命令。后来经过查询,使用了gedit命令打开操作。这样方便多了,以下为操作截图:
以下为当前系统的GRUB配置信息:3.11.10-301.fc20.x86_
以下为我配置的新内核的配置信息:3.0.11
7操作系统课程设计实验报告
3)验证内核版本
将修改后的grub.cfg文件保存,重启虚拟机,显示GRUB引导菜单列表,如下图所示,选择菜单项3.0.11,按回车键引导新内核启动。
重新启动之后,输入命令uname-a,发现内核版本变成了3.0.11,如下图所示:
五、实验收获与体会
本次实验让我收获颇多,主要有以下几点:
第一,这是我第一次接触Linux系统,虽然上个学期的操作系统原理课翟老师已经给我们系统的讲述过Linux系统,但那毕竟只是理论上的分析。理论的学习是一回事,但真正到了实际动手操作又是另外一回事。
第二,这次编译内核,首先给我的感觉是很高大上,我是怀着一种好奇心去开始实验的,但是随着实验的进行,各种问题都出来了,于是好奇心就没了,尤
8操作系统课程设计实验报告
其是编译内核模块,我使用Fedora编译了两次,每次都花了一个多小时,这不是什么好玩的事儿,等待的时候担心编译完了万一不行怎么办,会不会又要来一遍,所以,这也是挺考验人的。
第三,我在实验过程中询问了很多同学和查阅了很多资料,都给了我莫大的帮助,更让我认识到自己的不足,还要更加努力的学习。
9
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- xiaozhentang.com 版权所有 湘ICP备2023022495号-4
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务