操作系统课程设计报告-Linux内核裁剪与编译.doc_第1页
操作系统课程设计报告-Linux内核裁剪与编译.doc_第2页
操作系统课程设计报告-Linux内核裁剪与编译.doc_第3页
操作系统课程设计报告-Linux内核裁剪与编译.doc_第4页
操作系统课程设计报告-Linux内核裁剪与编译.doc_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1 滁滁 州州 学学 院院 课课程程设设计计报报告告 课程名称:课程名称: 操作系统 设计题目设计题目: linux 内核编译与裁剪 系系 别:别: 计算机科学与技术系 专专 业:业: 计算机科学与技术专业 组组 别:别: 起止日期起止日期: 2011 年 5 月 20 日 2011 年 6 月 22 日 指导教师指导教师: 计算机科学与技术系二计算机科学与技术系二九年制九年制 2 课程设计任务书 课程设计题目linux 内核编译和裁剪 组长学号班级09 计科 系别 计算机科学与技 术 专业计算机科学与技术 组员项鹏程,徐鑫,周小航,钟鑫鑫 指导教师马丽生 课程设计目的 通过该实验了解和掌握 linux 内核进行裁剪和编译以及升级的 主要操作方法和步骤。 课程设计所需环境 软件:操作系统 windows xp、linux 硬件:最低 cpu 速度:233mhz,推荐 cpu 速度: 550mhz 最小内存要求: 128m,推荐最小内存:256m 课程设计任务要求 实现将 linux 内核进行裁剪和编译,并 linux2.4 内核升级到 2.6 内核。 课程设计工作进度计划 序号起止日期工 作 内 容分工情况 2011-5- 20 2011-6-12收集实现所需的资料, 分析讨论所要进行的实 验 主要工作由徐鑫,周小航同学完成, 全体参与讨论 2011-6- 13 2011-6-17该阶段主要做 linux 内 核的一般编译和裁剪 主要由小组全体同学协助项鹏程完 成 2011-6- 18 2011-6-20实现 linux2.4 内核到 2.6 内核的升级 主要由小组全体同学协助杨超完成 2011-6- 21 2011-6-22实验材料整理,课程设 计报告的完成 主要由小组全体同学协助钟鑫鑫完 成 指导教师签字: 年 月 日 教研室审核意见: 教研室主任签字: 年 月 日 3 目目 录录 引引言言4 需需求求分分析析4 2.1 前期准备4 2.2 开发工具.4 3 3. .详详细细设设计计5 3.1 linux内核的裁剪5 3.1.1 内核支持(编译)模式5 3.1.2. 裁剪系统内核应遵循的步骤5 3.2 配置系统内核.6 3.2.1 配置内容8 3.2.2 配制方法9 3.3 编译系统内核.15 3.4 启用新系统内核.16 3.4.1 备份正在使用的系统内核.16 3.4.2 多配置启动的配置文件修改.16 3.5 linux内核升级17 3.5.1 查看版本.17 3.5.2 配置工作.18 3.5.3 编译工作.33 3.5.4 启动新内核.35 4 4. . 课课程程设设计计总总结结与与体体会会.37 4.1 总结37 4.2 体会37 5 5. .致致谢谢37 参参考考文文献献37 4 引言引言 linux 是一类 unix 计算机操作系统的统称,也是自由软件和开放源代码发展中最著名 的例子。linux 作为一个免费、自由软件,内核版本不断升级。新的内核修订了旧内核的 bug,并增加了许多新的特性。同时也使得 linux 系统更加稳定、更加安全,进一步满足用 户的功能需求。 linux 内核裁剪是根据用户的需要进行删除和保留相关的模块。linux 内核裁剪完成后 在进行编译,使之后的 linux 系统为用户所需要的操作系统。linux 内核升级是为了弥补较 低版本的漏洞,使得 linux 系统安全系数更高;另外使 linux 系统的性能更稳定;最后是 增加新功能,满足用户的功能需求。 本次课程设计是通过相关操作来实现将 linux 内核进行裁剪和编译,并 linux2.4 内核 升级到 2.6 内核。如果用户想要使用这些新特性,或想根据自己的系统度身定制一个更高 效,更稳定的内核,就需要根据自己的需要进行重新裁剪、编译内核以及内核升级。 需求分析需求分析 2.12.1 前期准备前期准备 linux2.6 内核源码:linux-2.6.18.tar.bz2 内核升级工具 module-init-tools-3.2.tar.bz2 mkinitrd-4.1.18-2.i386.rpm lvm2-2.00.25-1.01.i386.rpm device-mapper-1.00.19-2.i386.rpm 2.22.2 开发工具开发工具 linux 开发平台 5 3.3.详细设计详细设计 3.13.1 linuxlinux 内核的裁剪内核的裁剪 .1 内核支持(编译)模式内核支持(编译)模式 linux 对于计算机硬件、网络和文件系统等部件的驱动程序支持既可以放在系统内核 中,也可以作为一个可加载的模块(modules)使用。 当驱动程序放在系统内核中时,linux 假定该硬件是存在于系统中的;而作为可加载 模块使用时,只有在知道该硬件存在于系统时才会作为系统内核的一部分,当 linux 检测 到硬件时,该模块才被加入到系统内核中。如果把驱动程序编译到内核中,在内核启动时 就可以自动支持相应部分的功能,这样做的优点是方便、速度快,机器一旦启动,你就可 以使用这部分功能了;缺点是会使内核变得庞大,无论是否需要这部分功能,它都会存在; 这可能会增加被系统攻击者利用的漏洞。一般把经常使用的部分直接编译到内核中,比如 网卡等。如果编译成模块,就会生成对应的.o 模块文件,系统启动时它并不在内存中, 它是在使用的时候由用户执行 insmod 命令来动态加载,这样做的优点是不会使内核过分庞 大,缺点是你得自己来调用这些模块。 .1.2. 裁剪系统内核应遵循的步骤裁剪系统内核应遵循的步骤 linux 系统内核的裁减涉及到模块间的依赖关系、内核的配置和编译等多个步骤,任 何一个步骤的失误都有可能导致裁减、编译失败。其基本步骤如下: 检查编译器的版本 删除过时的目标文件 重新设置系统内核 重新编译系统内核 备份正在使用的系统内核 试用新的系统内核 检查编译器的版本检查编译器的版本 用低版本的编译器去编译高版本的内核有可能不能编译或使内核不能使用。要查看编 译器版本,可以执行命令: #gcc v 进入系统内核源代码目录。一般系统内核的源代码放在 /usr/src/ 目录下。用 ls l 命令查看可能显示如下: 6 #ls l /usr/src total 3 lrwxrwxrwx1 root root 12 may4 14:36 linux2.4-linux-2.4.20-8 drwxr-xr-x 15 root root 1024 may 14 11:37 linux-2.4.20-8 drwxr-xr-x 3 root root 1024 may 4 14:38 sendmail 其中,linux2.4 是一个链接文件,它的链接目标是指向 linux-2.4.20-8 目录,因此、 cd linux-2.4 就是进入 linux-2.4.20-8 目录。 删除过时的目标文件删除过时的目标文件 进入 /usr/src/linux-2.4.20-8 目录,运行 make mrproper 命令以清除过时、旧的 目标文件。这是因为经过多次编译后系统会留下部分目标文件,如果没有清除干净可能造 成本次编译出错。如果没有编译过或者是系统升级的新解压缩目录,则这一步骤可以省略 主要是本课题所需要的硬件设计与软件设计,包含建立设计所需的数学模型并列出必要的 计算公式、计算过程及说明,硬件电路的设计与实现,写出设计计算结果;绘出计算机程 序框图,写出自编的程序。 3.23.2 配置系统内核配置系统内核 无论是内核裁减还是内核升级都要重新配置系统内核。共有三种方式来运行配置内核 的命令: 设置屏幕的类型 命令 文本 make config 窗口菜单(ncurses) make menuconfig x 图形 make xconfig 第 1 种 make config 是命令行方式,使用与修改都较为不便,一般不推荐使用。 第 2 种 make menuconfig 是窗口菜单方式,采用窗口菜单进行人机交互,并可随时获 得帮助;它占用的内存较少,适合在字符终端下使用,如图 3-1 所示。 7 图 3-1 menuconfig 主屏幕 第 3 种 make xconfig 是图形用户界面,采用图形窗口按钮进行人机交互,整个设置界 面简洁明了、使用非常方便且帮助文件也容易获取,适合在 x windows 下使用,如图 3-2 所示。 图 3-2 xconfig 主屏幕 一般在 /usr/src/linux-2.4.20-8/ 目录下运行设置命令。在窗口菜单(ncurses)下,用户可 以利用光标键移动到选项、再用空格键或鼠标(选中显示*号)来进行设置并可以任意回退 做修改。在 x 图形下用户可以通过鼠标单击按钮来进行配置并可以任意回退做修改。在文 本类型下则不能,因为它只在整个设置过程中一直向你提问。 8 .1 配置内容配置内容 配置系统内核的目的是建立一个适合大小、满足需求的系统内核;因此,用户必须根 据自己所设计系统的需要对 linux 系统支持的硬件和软件进行适当裁减,即从配置内容中 选择相应的硬件类型和合适的设备驱动程序。不同的内核版本显示的配置内容有所不同, 这里以 linux 内核 2-4-20 版本为例说明。 编号类别含义 1code maturity level options代码成熟级别 2loadable module support可装载模块支持 3processor type and features处理器类型与特征 4general setup一般设置 5memory technology devicemtd 设备支持 6parallel port support并行口支持 7plug and play configuration即插即用支持 8block devices块设备支持 9 multi-device support(raid and lvm) 多设备支持 10cryptography support密码系统支持 11networking options网络选项 12telephony support电话支持 13ata/ide/mfm/rll support多种接口存储设备支持 14scsi supportscsi 设备的支持 15fusion mpt device supportfusion mpt 设备支持 16ieee 1394(firewire)supportieee 1394 防火墙设备支持 17i2o device supporti2o 设备支持 18network device support网络设备支持 19amateur radio support业余无线电支持 20irda(infrared)support红外线支持 21isdn subsystemisdn 子系统 22 old cd-rom drivers(not scsi、not ide) 非 scsi/ide 接口的 cd-rom 设备 23input core support输入核心支持 24character devices字符设备 9 25multimedia devices多媒体设备 26crypto hardware supportcrypto 硬件支持 27file systems文件系统 28console drivers控制台驱动 29sound声卡驱动 30usb supportusb 支持 31additional device driver support附加设备驱动支持 32bluetooth support蓝牙支持 33profiling supportprofiling 支持 34kernel hacking内核分析 35library routines库例程 .2 配制方法配制方法 以运行 xconfig 设置程序为例说明配置方法。在 xconfig 主屏幕上有许多设置选项,但 在内核裁减中许多选项可以采用默认的设置。下面按配置内容类别说明主要选项的配置方 法,截取的配置图供大家参考。 1.代码成熟级别选项(代码成熟级别选项(code maturity level options ) 这里只有一项:prompt for development and/or incomplete code/drivers,如果你要试验使 用还有待完善的代码,比如 framebuffer、khttpd、ipv6 等,就必须把该项选择为 y;否则 可以把它选择为 n。这是内核的一个内置特性,不能选择为模块。如图 3-3 所示。 图 3-3 代码成熟级别选项 2.可装载模块支持(可装载模块支持(loadable module support ) 这里有 3 项,如图3-4所示。 10 图 3-4 可装载的模块支持 enable loadable module support:除非你准备把所有需要的内容都编译到内核里面,否 则该项应该是必选的。 set version information on all module symbols:可选可不选。 kernel module loader:让内核在启动时有自己装入必需模块的能力,该选项必须在 enable loadable module support 选项激活(即为“y”)情况下才能选择;建议选上。 3. 处理器类型与特征(处理器类型与特征(processor type and features ) 这里的选项一般不需要设置,使用默认的设置即可。例如: processor family:系统安装时会根据你的计算机情况选择 cpu 类型。 high memory support:大容量内存的支持。可以支持到 4g、64g,默认为“off”。 math emulation:协处理器仿真,现在的协处理器已集成在 cpu 内;默认为“n”。 mttr support:mttr(memory type range register)支持。可不选,默认为“n”。 symmetric multi-processing support:对称多处理器支持。单 cpu 系统一般不用选。 4.一般设置(一般设置(general setup ) 这里是安装 red hat linux9.0 时对系统最基本的硬件设置。这部分内容非常多,一般 在安装中 linux 会根据你计算机系统的硬件自动检测并设置,使用缺省设置就可以。常用 的选项简要介绍如下: networking support:网络支持。如果有网卡默认为“y”。 pci support:pci 支持。如果使用了 pci 的卡,默认为“y”。 pci access mode:pci 存取模式。可供选择的有 bios、direct 和 any,默认为 any。support for hot-pluggabel devices:热插拔设备支持。如果有此类设备默认为“y”。 pcmcia/cardbus support:pcmcia/cardbus 支持。用系统测试的默认选择。 system v ipc bsd process accounting sysctl support 以上三项是有关进程处理 ipc 调用的,主要就是 system v 和 bsd 两种风格。如果你 不是使用 bsd,就不要改变默认选择。 11 power management support:电源管理支持,用系统默认选择。 advanced power management bios support:高级电源管理 bios 支持,用系统默认选择。 5. mtd 设备支持(设备支持(memory technology device) mtd 设备是像闪存芯片、小型闪存卡、记忆棒等之类的设备,它们在嵌入式设备中的 使用正在不断增长。pc 上一般默认为“n”。 6. 并行口支持(并行口支持(parallel port support ) 如果不打算使用并行口,就选“n”。 7. 即插即用支持(即插即用支持(plug and play configuration ) 目前 linux 对即插即用设备的支持不如 windows 好,如果系统中有 pnp 设备,默认 的选项为“y”。 8. 块设备支持(块设备支持(block devices ) 一般使用缺省设置就可以,主要选项简要说明如下: normal pc floppy disk support:普通 pc 软盘支持。若有软驱默认为“y”。 xt hard disk support:早期的硬盘支持,一般默认为“n”。 compaq smart2 support:磁盘阵列控制卡,没有该设备为“n”。 mulex dac960/dac1100 pci raid controller support:raid 镜像, 没有该设备为“n”。 loopback device support:把文件当成区块设备使用,一般默认为“n” network block device support:网络块设备支持。如果想访问网上邻居的东西,选“y”。 ram disk support:ram 盘支持, 一般默认为“n”。 9多设备支持(多设备支持(multi-device support(raid and lvm) ) multiple devices driver support:多设备驱动支持, 一般默认为“n”;该项激活(“y”)时 以下两项才可以选择。 raid support:raid 支持,没有该设备为“n”。 logical volume manager(lvm)support:逻辑卷管理支持,一般默认为“n”。 10密码系统支持密码系统支持(cryptography support) 在个人计算机(pc)系统上一般不用,系统默认为“n”。 11网络选项(网络选项(networking options ) 这里配置的主要是网络协议,其选项很多。如果要定义 tcp/ip、atm、ipx、decnet、appletalk等协议的支持,可以把它们编译进内核中或 以模块加载。在这里还可以配置路由、防火墙、ip 隐藏、ip 广播、ip 转发等等。不过有些 配置仍然处于实验阶段,例如:ipv6、httpd、qos and/or fair queueing(服务质量公平调度) 等。 12电话支持(电话支持(telephony support ) linux 下可以支持电话卡,这样你就可以在 ip 上使用普通的电话提供语音服务了。默 12 认选项为“n”。 13多种接口存储设备支持(多种接口存储设备支持(ata/ide/mfm/rll support ) 有关各种接口的硬盘/光驱/磁带/软盘支持,一般使用默认的选项即可。 14scsi 设备的支持(设备的支持(scsi support ) 如果有 scsi 设备,系统会默认选择若干选项,其他的选项可以根据情况选择。如果 在 pc 上安装了虚拟机(如 vm) ,则会把 ide 硬盘虚拟成 scsi 硬盘,部分选项会自动选 中。 15fusion mpt 设备支持(设备支持(fusion mpt device support ) 需要 fusion mpt 兼容 pci 适配器,一般默认为“n”。 16ieee 1394 防火墙设备支持(防火墙设备支持(ieee 1394(firewire)support) 该项仍在实验中,默认为“n”。 17i2o 设备支持(设备支持(i2o device support ) 需要 i2o 接口适配器支持,在智能 input/output(i2o)体系接口中使用。默认为“n”。 18网络设备支持(网络设备支持(network device support ) 在网络选项中选好协议后,在这项中定义使用这些网络协议的方式。有 arcnet 设备、 ethernet(10 or 100 mbit) 、ethernet(1000mbit) 、wireless lan(non-hamradio) 、token ring device、wan interfaces、pcmcia network device support 几大类。 实际上这个选项中主要做的是网络接口卡类的设置,如 10/100m 的以太网网卡。如果 linux 系统可以识别到网卡,则基本无需设置;如果无法识别网卡,则只能自己打开 ethernet(10 ro 100 mbit)选项查找了。一般都能找到自己适用的网卡型号。如果没有找到, 只好到厂商那里去要驱动了。一般把该类编译到内核里,不选“m”而选“y”。 19业余无线电支持(业余无线电支持(amateur radio support ) 配置业余无线电广播,一般默认选项为“n”。 20红外线支持(红外线支持(irda(infrared)support ) 没有红外设备,默认选项为“n”。 21isdn 子系统(子系统(isdn subsystem ) 如果你使用 isdn 上网,这个选项选“y”。 22非非 scsi/ide 接口的接口的 cd-rom 设备(设备(old cd-rom drivers(not scsi、not ide) ) 现在的计算机一般都没有这样的设备了,默认的选项就是“n”。 23输入核心支持(输入核心支持(input core support) 该选项下有若干 usb 人机接口设备(如鼠标、键盘和游戏杆等)选项。如果你要使 这些设备驱动编译进内核或以模块加载,则在选择前先使“input core support”选项为“y”。 24字符设备(字符设备(character devices ) 13 这个选项的内容包括以下几个大类: i2c support:i2c 是 philips 极力推动的微控制应用中使用的低速串行总线协议。如果 你要选择下面的 video for linux,该项必选。 mice:鼠标。现在可以支持总线、串口、ps/2、cnetwork device support -ethernet (10 or 100mbit) - amd pcnet32 pci support 图 3-31 选择 amd pcnet32 pci support 选项 file system-(以下 9 个选项是关于 ext2 和 ext3 文件系统配置,全部选上) second extended fs support ext2 extended attributes ext2 posix access control lists 31 ext2 security labels ext3 journalling file system support ext3 extended attributes ext3 posix access control lists ext3 security labels jbb (ext3) debugging support 图 3-32 ext2 和 ext3 文件系统配置 file system-dos/fat/nt filesystems -选上“ntfs file system support” ; 图 3-33 进入 dos/fat/nt filesystems 32 图 3-34 选择ntfs file system support选项 vmware 下编译 linux 内核,硬盘用的是 scsi 的,需选择以下三个选项: device drivers -scsi device support -scsi disk support; 图 3-35 选择 scsi disk support t 选项 device drivers-scsi device support-scsi low-level drivers-; buslogic scsi support 图 3-36 选择 buslogic scsi support 选项 33 .3 编译工作编译工作 以下步骤均在在/usr/src/linux-2.6.18 目录下执行相关命令来实现编译。 1.输入* make bzimage 命令 图 3-37 输入 make bzimage 命令 图 3-38 编译内核 内核编译成功! 34 2.输入* make modules 用于编译可加载模块; 3.输入* make modules_install 用于安装可加载模块; 图 3-39 安装可加载模块 安装成功后,系统会在/lib/modules 目录下生成一个 2.6.18 子目录,里面存放着新内核的所 有可加载模块。 4.输入* make install 用于安装新内核。 图 3-40 安装新内核 35 由于出现如下错误信息: no module buslogic found for kernel 2.4.12 mkinitrd failed 解决方式是直接将 buslogic.o 文件复制过去: 输入 *cp/usr/src/linux- 2.6.18/drivers/scsi/buslogic.o/lib/modules/2.6.18/kernel/drivers/scsi 然后再输入make install 编译结束! .4 启动新内核启动新内核 1. 将新内核和 system.map 文件拷贝到/boot 目录下,依次执行以下命令: 输入* cp /usr/src/linux-2.6.18/arch/i386/boot/bzimage /boot/vmlinuz-2.6.18 输入* cp /usr/src/linux-2.6.18/system.map /boot/system.map-2.6.18 输入* cd /boot 进入 boot 目录 图 3-41 进入 boot 目录 输入* rm rf system.map (删除原来的连接) 输入* ln s system.map-2.6.18 system.map (重新建立连接) 2. 修改 grub 启动管理器 在/boot 目录下,执行以下命令: 输入* new-kernel-pkg -mkinitrd -depmod -install 2.6.18 (这时候你的/boot 下会生成一个 initrd-2.6.18.img,并且你的 grub.conf 文件也作了相应更改) 输入* df 查看根目录在那个分区,下一步要用到。 36 输入* vi /etc/grub.conf 图.3-42 修改 grub 启动管理器 进入 grub.conf 文件,找到如下信息: default=1 timeout=10 spla

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论