《操作系统设计课程设计报告.doc》由会员分享,可在线阅读,更多相关《操作系统设计课程设计报告.doc(9页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、-操作系统课程设计实验大纲一、 课程编号:040312 二、 课程类型:必修适用专业:计算机科学与技术,信息安全;课程学时:16学时三、 课程的地位、作用与任务设计内容操作系统是高等院校计算机及其相关专业的一门重要的主干课程,是计算机专业的学生必须掌握的专业基础课。在本科计算机专业教学任务中,软件开发占了相当大的比重,这些软件需要大量地与操作系统内核作深层次的交互,以进行信息的传输、控制和实现各种通信协议。通过操作系统课程的学习,能够让学生了解操作系统的基本原理,了解操作系统的内部结构和其向用户提供的库函数和系统调用,利用操作系统内核所提供的强大功能进行大型软件的设计、开发和维护。本课程设计通
2、过对Linux操作系统内核的编译和管理,以及设备驱动程序的设计,是学生对现代操作系统的工作原理和内部运行机制有更深入的了解四、 设计要求熟悉Linux操作系统的使用方法,了解Linux操作系统的内核的编译、升级、系统启动流程;了解并掌握Linux设备驱动程序开发的一般方法。五、 课程安排与要求1. 课程可以分组完成,每个小组人数不超过两名。2. 每个小组完成设计后需要提交设计作品与课程设计报告两份作业。3. 报告要求:设计过程及所遇到的问题的解决; 同组同学任务的分配,每人工作所占比例,设计过程中的具体内容;编程部分写出主要源代码。六、 成绩考核办法总成绩=考勤成绩(10%)+现场评测成绩(6
3、0%)+设计报告(30%)。计算机学院专业实验中心2013-7-12.-重庆邮电大学实践教学环节教师授课计划填表老师: 填表时间:2014.9.2 学年学期:课程编号:040312课程名称:操作系统课程设计年级:专业:计算机应用学时/学分:16/1.0 理论学时:实验学时:16教材名称及出版社:现代操作系统机械工业出版社开课专业及班级: 计算机科学与应用,信息安全序号周次教学内容摘要(含授课内容,参考书,自学提纲,学习方法等)学时重点及要求相关耗材1主要技术及方法介绍、实验任务安排(周一)21. 介绍Linux操作系统和安装方法;2. 讲解Linux Kernel的编译和升级基本方法3. 介绍
4、Linux设备驱动程序开发的一般方法和步骤2自主完成(周一和周二各4学时,周三3学时)111安装Linux操作系统;2编译新内核并重新设置新内核启动;3设计一个简单的设备驱动程序,并进行测试和验证;4完成实验报告的制作(电子档)。3成果演示、检查程序等 (周四3学时)3成果演示、检查及上交报告45678910主讲老师1:_ _主讲老师2:_ 辅导教师:_实验室主任签名_学院院长签名_授课人数 _-操作系统课程设计 任务书专业实验中心2013-7Linux操作系统课程设计任务书目的:1. 掌握linux安装的方法2. 掌握Kernel的升级3. 掌握系统引导管理器Grub的使用4. 学会编写简单
5、的模块化的字符设备驱动程序。任务1. 在虚拟机下安装某一Linux的发行版(推荐CentOS)2. 从内核官网www.Kernel.org下载某一新的内核版本,并进行编译3. 设置系统引导管理器(推荐Grub),使得系统可以从新内核启动4. 编写一个简单的模块化字符设备驱动程序,动态地装载和卸载以模块形式存在的字符设备驱动程序。同时,学会对所编写的字符设备驱动程序进行测试,最终了解Linux操作系统是如何管理字符设备的基本要求:(1)编写初始化和注销函数:scull_init() 和 scull_exit();(2)编写5个基本的设备接口函数,包括scull_open(),scull_writ
6、e(),scull_read(),scull_ioctl()(3和scull_release();(4一个测试程序来测试所编写的字符设备驱动程序。基本步骤:1. 安装虚拟机软件:vmware workstation2. 安装Red Hat 9.0,注意选择workstation安装这个选项3. 重新编译内核4. 安装vsftp服务器,samba服务器,5. 安装好rh之后,首先查看ip,运行:service network start,如果出现提示:Determining IP information for eth0. failed; no link present. Check cable
7、?6. 编辑文件/etc/sysconfig/network-scripts/ifcfg-eth0在该文件末尾加上:check_link_down() return 1;再运行:service network up再运行:ifconfig 即可看到ip7. 为了方便操作,采用putty连接到虚拟机的方式(如果putty老是连接不上,可能就是因为linux的防火墙的原因,所以要把防火墙关掉:service iptables stop)(注意,每次重启之后都要关闭防火墙)8. 运行命令uname r,得到内核版本:2.4.20-89. 到网站www.kernel.org,下载一个比较新的稳定版本(
8、次版本号是双数的,由于2.6和2.4的函数库有很大区别,所以我们只升级到2.4版本中的更高版本,比如2.4.37.7,如果想直接升级到2.6的版本,目前不建议这样做)下载方法:wget http:/www.kernel.org/.10. 用命令解压缩到目录/usr/src下面: tar jxvf linux-2.4.37.7.tar.bz2 C /usr/src11. 注意解压缩之后,会同时生成一个文件pax_global_header12. 仔细阅读README文件(最好要求交课程设计报告的时候有翻译,因为仔细研读这些文件就是一种最好的学习)13. cd /usr/src/linux./14
9、. make mrproper 目的是建立一个清洁的内核树15. make menuconfig 设置内核编译的配置文件16. 选好各个需要的选项之后推出保存17. make dep 18. make clean 删除一些stale的文件19. make bzImage 制作核心文件,这个过程比较花时间20. make modules 编译模块21. make modules_install 安装模块22. make install23. 下面制作新旧内核的多重开机移动新内核到/boot下面去cp /usr/src/linux-2./arch/i386/boot/bzImage /boot/v
10、mlinuz-2.4.37.7cp /usr/src/linux-2.4.37.7/System.map /boot/System.map-2.4.37.7修改grub配置文件.24.注意在vmware下面以内核和直接在PC机上编译内核有些不同,在vmware上编译内核有些选项必须要选上常见问题:1. make install之后,如果出现 NO MODULE BUSLOGIC FOUND,解决方法第1种方法:编辑文件 /etc/modules.conf将alias scsi hostadapter BusLogic这行注释掉,即#alias scsi hostadapter BusLogic
11、保存 /etc/modules.conf,退出# make install第2种方法:手动添加启动项#depmod -a#cp /usr/src/linux/System.map /boot/System.map-2.6.13#cp /usr/src/linux/arch/i386/bzImage /boot/vmlinuz-2.6.132. 如果编译完后不启动,报以下错误:VFS: Cannot open root device LABEL=/ or 0.0Please append a correct root= boot optionkernel panic: VFS: Unable t
12、o mount root fs如果是上面的错误,请确认你把如下选项配置进kernel(1) 如果/使用了EXT3 文件系统,在内核中要加入EXT3的支持(2)如果是IDE的硬盘必须要IDE的驱动加载(3)在block devices-RAM disk support 中选取 Initial disk(initrd) support,有时在mount / 之前需要加载一些模块,这些modules 被做到一个镜像文件中-kernel-ver.img 中,这个文件位于/boot.举个例子,如果EXT3 的是以模块加载的话,在mount / 时就需要用到它,所以系统就在initrd.kernel-ve
13、r.img 中寻找它.使用命令 mkinitrd initrd.kernel-ver.img kernel-ver 可以生成initrd.kernel-ver.imgVMware5.5.3 的磁盘有两种,一种是IDE的,一种是SCSI的;VMware 你在新建 linux 虚拟机时默认的是SCSI 。在5.5.3的版本中使用的是SCSI类型设备中的LSI Logic设备(据网上资料,4.0以前的版本用的是BusLogic设备)。所以我们在编译内核的时候应该把LSI Logic设备驱动程序编译进去。现在分别介绍模块选择路径:这个是SCSI磁盘设备模块,必须选择。Linux Kernel Conf
14、iguration - Device Drivers - SCSI device support - SCSI disk support这个是BusLogic设备驱动模块。使用这个设备的的朋友需要选取。Linux Kernel Configuration - Device Drivers - SCSI device support - SCSI low-level drivers - BusLogic SCSI support这个是LSI Logic设备驱动模块。使用这个设备的的朋友需要选取。Linux Kernel Configuration - Device Drivers - Fusio
15、n MPT device support - Fusion MPT (base + ScsiHost) drivers3. 文件系统驱动没编译进内核linux下有ext2 和 ext3 两种文件系统,看你当前的文件系统是哪种(mount命令可以查看),并把相应的驱动编译进内核。4. 分区加载错误编译完成后,一般来说就可以成功引导了。如果还提示这个错误的话,就把配置文件中的 root=LABEL=/ 改成你的 / 分区位置(比如: root=/dev/sda3 见下面示例)这样就可以了。新的版本是可以用 root=LABEL=/ 来自动查找引导分区的,但这个也要在内核中打开。 在下面的位置 fi
16、lesystem - Partition Types- Advanced partition selection- PC BIOS(MSDOS partition tables)support- BSD disklabel(FreeBSD partition tables) support示例:磁盘分区:#mount/dev/sda1 on /boot type ext3/dev/sda3 on / type ext3grub.conf: root (hd0,6) 这里的启动(/boot)分区,也就是内核(vmlinuz)所在的位置 kernel /vmlinuz-2.4.20 root=/d
17、ev/sda3 Device Drivers - Networking support - Ethernet (10 or 100Mbit) - AMD PCnet32 PCI supportVMWare 所支持的网卡类型它默认是虚拟的AMD PCNet AM79C970A网卡,但也可以改变网卡配置,虚拟出Intel(R) PRO/1000和VMware PCI Ethernet Adapter网卡。如果在.vmx文件中用如下语句指定:ethernet0.virtualDev = e1000其值为e1000指定网卡类型为Intel(R) PRO/1000其值为vlance指定网卡类型为AMD PCNet AM79C970A(默认为此项)其值为vmxnet指定网卡类型为VMware PCI Ethernet Adapter