欢迎来到天天文库
浏览记录
ID:6132524
大小:131.50 KB
页数:14页
时间:2018-01-04
《基于ubutnu的linux内核编译》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、操作系统课程设计——基于Ubuntu的Linux内核编译学院:计算机科学与技术专业:计算机科学与技术班级:姓名:学号:2010/12/19目录实验目的Linux内核编译实验介绍运行环境实验步骤1准备工作2内核配置3内核编译4配置GRUB模块化字符设备驱动程序源代码实验心得实验目的:1.安装Linux操作系统2.下载另一版本的内核进行内核编译3.把新编译好的内核和原来的内核用bootloader设置成可选的新旧内核启动开机4.编写一个简单的模块化字符设备驱动程序,然后在不重新编译内核的基础上,动态地装载和卸载该设备驱动。对该字符设备驱动程序进行测试,最终了解Linux操作系统是怎么
2、管理字符设备的。Linux内核编译实验介绍:操作系统是一个用来和硬件打交道并为用户程序提供一个有限服务集的低级支撑软件。一个计算机系统是一个硬件和软件的共生体,它们互相依赖,不可分割。计算机的硬件,含有外围设备、处理器、内存、硬盘和其他的电子设备组成计算机的发动机。但是没有软件来操作和控制它,自身是不能工作的。完成这个控制工作的软件就称为操作系统,在Linux的术语中被称为“内核”,也可以称为“核心”。Linux内核的主要模块(或组件)分以下几个部分:存储管理、CPU和进程管理、文件系统、设备管理和驱动、网络通信,以及系统的初始化(引导)、系统调用等。内核是一个操作系统的核心。它
3、负责管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统的性能和稳定性。内核编译,Linux作为一个自由软件,在广大爱好者的支持下,内核版本不断更新。新的内核修订了旧内核的bug,并增加了许多新的特性。如果用户想要使用这些新特性,或想根据自己的系统度身定制一个更高效,更稳定的内核,就需要重新编译内核。运行环境操作系统:Ubuntu10.04内核版本:2.6.32编译内核版本:2.6.36.2实验步骤(1)准备工作下载源码:到http://www.kernel.org/下载2.6.36内核并解压下载工具:apt-getinstallbuild-essentialkerne
4、l-packagelibncurses5-devlibqt3-headers其中libqt3-headers可选,此包用于makexconfig(2)配置将源码解linux-2.6.36.2.tar.bz2压到/usr/src目录下进入源代码目录cdlinux-2.6.36.2运行有三种配置方案1,makeconfig比较繁琐,容易出错2,mekemenuconfig提供一个基于文本的图形界面3,makexconfig(基于图形)直观方便但容易引起编译器不稳定makemenuconfig在menuconfig中在最后有两个选项loadakernelconfiguration...
5、saveakernelconfiguration...因为对内核配置选项不熟悉,在编译的过程中容易出现错误,所以只是需读取当前内核配置详单然后Save即可推出配置(1)编译内核在当前的目录下输入命令sudomake-j4(打开4线程)需要花费很长的时间sudomakeinstallsudomakemodules(编译模块)sudomakemodules_install(安装模块)创建initrd文件:mkinitramfs-o/boot/initrd.img-2.6.36编译完成后会在/boot目录下生成llinux-2.6.36.2相关文件(1)配置GRUBGRUB是多系统引导
6、管理器,用于引导Linux和引导Windows进入/grub目录,运行geditgrub.cfg加入menuentry'Ubuntu,Linux2.6.36-generic'--classubuntu--classgnu-linux--classgnu--classos{recordfailinsmodext2setroot='(hd0,7)'linux/boot/vmlinuz-2.6.36.2root=UUID=5308d7af-25d5-4c73-be87-3572991f4c2broquietsplashinitrd/boot/initrd.img-2.6.36}如图:保
7、存,重启reboot后选择linux-2.6.36-generic即可进入新的linux内核。模块化字符设备驱动程序源代码驱动代码:/*----------------驱动程序一些常用头文件--------------------------*/#include#include#include#include/*printk()*/#include
此文档下载收益归作者所有