北京邮电大学操作系统综合课程设计.docx
- 文档编号:9594499
- 上传时间:2023-02-05
- 格式:DOCX
- 页数:24
- 大小:47.69KB
北京邮电大学操作系统综合课程设计.docx
《北京邮电大学操作系统综合课程设计.docx》由会员分享,可在线阅读,更多相关《北京邮电大学操作系统综合课程设计.docx(24页珍藏版)》请在冰豆网上搜索。
北京邮电大学操作系统综合课程设计
北京邮电大学课程设计报告
实验一Linux启动优化4
一实验目的4
二实验内容与步骤4
1内核态启动优化4
2用户态启动优化4
3测试系统总的启动时间4
三实验原理4
四实验结果及分析4
1内核态启动优化4
2开机画面8
1)开机画面字符隐藏技术8
2)开机画面调出8
3)内核态开机画面更改9
4)开机用户态界面更改11
五实验总结11
实验二Linux系统内核/系统配置小型化12
一实验目的12
二实验内容12
三实验设计原理12
四实验步骤12
Codematurityleveloptions(代码成熟度选项)13
Processortypeandfeatures(处理器类型和特色)14
Loadablemodulesupport(可加载模块支持)
(1)、Enableloadablemodulesupport(CONFIG_MODULES)[Y/n/?
]选择内核是否支持加载模块。
15
Generalsetup(一般设置)16
PlugandPlayconfiguration(即插即用设备支持)17
Blockdevices(块设备)18
Networkingoptions(网络选项)18
SCSIsupport(SCSI支持)19
Networkdevicesupport(网络设备支持)19
Characterdevices(字符设备)20
Filesystems(文件系统)21
Consoledrivers(控制台驱动)22
ATA/IDE/MFM/RLLsupport23
Sound(声音)23
五实验结果及分析23
六实验总结25
实验三ARM/ucLinux-SkyEye的安装、配置与集成26
一实验目的26
二实验环境26
三实验内容与步骤26
1将下载的4个数据包安装并进入目录home/buptlynn/env26
2安装skyeye28
3安装arm-elf-tools交叉编译器(用于编译ucLinuxSkyEye)32
4.安装uclinux32
5.配置38
6.运行39
7测试41
8运行五条常用指令42
四实验总结43
实验四ARM/ucLinux-SkyEye下BusyBox集成——Shell小型化44
一实验目的44
二实验环境44
三实验内容与步骤44
四实验总结48
实验五Linux环境下的Ramdisk技术及其实验49
一实验目的49
二实验环境49
三实验内容与步骤49
四实验总结55
五问题和解决方法55
六附录55
实验六Linux环境下嵌入式数据库mSQL的集成57
一实验目的57
二实验环境57
三实验内容与步骤57
四实验总结62
五问题和解决方法62
六附录63
实验一Linux启动优化
一实验目的
Linux系统从启动到登录shell界面需要花费较长时间,在普通微机上的启动过程需要十几秒或更长。
如果要启动X界面,那花费的时间就更多了。
启动时间过长对嵌入式系统而言,如信息家电产品(机顶盒),是无法接受的。
Linux系统的启动由内核态下的启动和用户态下的启动组成。
利用本实验中采取的多种方法,可以简化Linux系统启动过程,提高Linux系统启动速度,适应嵌入式系统快速启动和实时应用的需要。
二实验内容与步骤
1内核态启动优化
1)测量几个较大代码模块的启动时间
2)更改MAX_HWIFS,减小检测IDE过程的启动时间
2用户态启动优化
1)开机画面字符隐藏技术
2)开机画面隐藏/调出
3)开机画面更换
3测试系统总的启动时间
三实验原理
根据Linux源代码,从根本上分析Linux启动原理
四实验结果及分析
1内核态启动优化
在Redhat9中,安装内核开发包,能得到Linux源代码。
位于/usr/src/linux-2.4
目录下。
修改linux/init/main.c,在所有的需要检测的代码段添加条件编译TIME_TEST常量。
测试的代码段包括console_init(),vfs_caches_init,和pci_init()等。
改动完成之后,编译内核
1,清除源码树:
makemrproper
2,生成现有.config文件:
makeoldconfig
3,配置内核:
makemenuconfig
4,生成依赖关系:
makedep
5,编译内核:
makebzImage
6,编译模块:
makemodules
7,安装模块:
makemodules_install
8,安装内核:
makeinstall
9,重起:
init6
启动结束之后,用
dmesg|grep“second”
得到所有设定的打印位置的记录
5处较长代码模块的时间打印如下:
通过时间检测,我们发现了最耗时间的是__initcall_ide_init这个函数,如下图所示。
花很多时间在ide接口检测上,代码如下,
既然知道IDE检测时间比较长,所以,改变后的ide数量为3
时间改变尺度对比
2开机画面
1)开机画面字符隐藏技术
在/etc/grub.conf中,在kernel一行后添加console=/dev/tty2CONSOLE=/dev/ty2后,
重启即能隐藏内核态的输出信息。
通过ALT+F2就可以调出内核态的输出信息。
隐藏之后的开机界面
Alt+F2(切换到tty2终端)可以调出打印信息
2)开机画面调出
默认情况下,开机画面是系统内核态打印输出(如上图),调出小企鹅通过在系统的启动参数后面加vga=0x301可以吧小企鹅调出来.
3)内核态开机画面更改
改变/drivers/video/fbcon.c中宏定义的logo大小
最终内核态开机界面为
4)开机用户态界面更改
五实验总结
通过学习内核源码,充分体验了内核的代码量,分析了内核的代码,很受震撼,同时也学到了不少东西.
实验二Linux系统内核/系统配置小型化
一实验目的
1个Linux系统发行版本可多达上百兆,功能众多,支持众多硬件设施。
但在一个实际Linux应用系统中,并非用到Linux系统发行版本所提供的全部功能。
所以,可以针对实际计算机系统的硬件配置及其应用需求,对Linux系统内核/系统进行合理的选择和裁减,得
到一个更接近实际需要的、无冗余、启动和运行更为高效的Linux系统。
例如,嵌入式系统存储容量有限、支持的硬件外设类型也有限,因此可通过内核/系统配置与裁减,选择嵌入式应用系统所必需的一些内核/系统功能(如设备驱动程序)进行配置。
由此得到一个满足系统功能、体积更小的、可放入嵌入式系统的容量较小Flash中的Linux系统内核。
本实验要求学生针对PC机上的Linux系统发行版本,利用makemenuconfig方法,在对硬件深入了解的基础上,选择相应的设备驱动程序和与主机CPU相关的Linux部分,进行Linux系统内核/系统配置,掌握Linux系统内核/系统的配置方法。
二实验内容
利用makemenuconfig方法,将不必要的内核功能去掉,只留下最基本的一些功能模块,如CPU为i586、IDE设备驱动、TCP/IP协议栈、ne2000网卡驱动、Minix文件系统等,完成内核配置工作。
比较配置前后Linux内核/系统的体积大小、功能差异,指明配置过程中各配置选项的作用
三实验设计原理
根据makemenuconfig中的菜单项配置Linux内核
四实验步骤
开始时使用makebzImage命令查看内核大小
使用makemenuconfig配置内核,为了最小化内核,我们将一些不必要的功能都去掉。
各功能简介:
Codematurityleveloptions(代码成熟度选项)?
Promptfordevelopmentand/orincompletecode/drivers(CONFIG_EXPERIMENTAL)[N/y/?
]如果用户想要使用还处于测试阶段的代码或驱动,可以选择“y”。
如果想编译出一个稳定的内核,则要选择“n”。
?
这里我们选择n,使用稳定成熟的代码。
Processortypeandfeatures(处理器类型和特色)?
(1)、Processorfamily(386,486/Cx486,586/K5/5x86/6x86,Pentium/K6/TSC,PPro/6x86MX)[PPro/6x86MX]选择处理器类型,缺省为Ppro/6x86MX。
?
这里我们选择386。
(2)、MaximumPhysicalMemory(4GB,16GB)内核支持的最大内存数,缺省为4G。
?
(3)、Mathemulation(CONFIG_MATH_EMULATION)[N/y/?
]协处理器仿真,缺省为不仿真。
?
不选。
(4)、MTRR(MemoryTypeRangeRegister)support(CONFIG_MTRR)[N/y/?
]?
选择该选项,系统将生成/proc/mtrr文件对MTRR进行管理,供Xserver使用。
?
不选。
(5)、Symmetricmulti-processingsupport(CONFIG_SMP)[Y/n/?
]选择内核将支持对称多处理器。
最小化系统中,使用的是的处理器,最大内存。
只选择
(1)
(2)两厢,其他高级特性不选择。
Loadablemodulesupport(可加载模块支持)
(1)、Enableloadablemodulesupport(CONFIG_MODULES)[Y/n/?
]选择内核是否支持加载模块。
?
(2)、Kernelmoduleloader(CONFIG_KMOD)[N/y/?
]内核将自动加载那些可加载模块,否则需要用户手工加载。
?
为了简化系统,在这个实验里不选择可加载内核模块的支持,选择N.
Generalsetup(一般设置)?
(1)、Networkingsupport(CONFIG_NET)[Y/n/?
]该选项设置是否在内核中提供网络支持。
?
(2)、PCIsupport(CONFIG_PCI)[Y/n/?
]该选项设置是否在内核中提供PCI支持。
?
(3)、PCIaccessmode(BIOS,Direct,Any)[Any]该选项设置Linux探测PCI设备的方式。
选择“BIOS”,Linux将使用BIOS;选择“Direct”,Linux将不通过BIOS;选择“Any”,Linux将直接探测PCI设备,如果失败,再使用BIOS。
?
(4)Parallelportsupport(CONFIG_PARPORT)[N/y/m/?
]是否支持平行口。
?
PlugandPlayconfiguration(即插即用设备支持)?
(1)、PlugandPlaysupport(CONFIG_PNP)[Y/m/n/?
]内核将自动配置即插即用设备。
?
(2)、ISAPlugandPlaysupport(CONFIG_ISAPNP)[Y/m/n/?
]内核将自动配置基于ISA总线的即插即用设备。
?
我们不需要配置,全不选。
Blockdevices(块设备)?
(1)、NormalPCfloppydisksupport(CONFIG_BLK_DEV_FD)[Y/m/n/?
]内核是否提供对软盘的支持。
?
(2)EnhancedIDE/MFM/RLLdisk/cdrom/tape/floppysupport(CONFIG_BLK_DEV_IDE)[Y/m/n/?
]选择内核是否提供对增强IDE硬盘、CDROM和磁带机的支持。
?
Networkingoptions(网络选项)?
(1)、Packetsocket(CONFIG_PACKET)[Y/m/n/?
]选择是否使一些应用程序使用Packet协议直接同网络设备通讯,而不通过内核中的其它中介协议。
?
(2)、Networkfirewalls(CONFIG_FIREWALL)[N/y/?
]选择内核是否将支持防火墙。
?
(3)、TCP/IPnetworking(CONFIG_INET)[Y/n/?
]内核是否支持TCP/IP协议。
?
(4)TheIPXprotocol(CONFIG_IPX)[N/y/m/?
]选择内核是否支持IPX协议。
?
(5)、AppletalkDDP(CONFIG_ATALK)[N/y/m/?
]选择内核是否支持AppletalkDDP协议。
?
SCSIsupport(SCSI支持)?
如果用户要使用SCSI设备,可配置相应选项。
?
这里我们不需要。
Networkdevicesupport(网络设备支持)?
Networkdevicesupport(CONFIG_NETDEVICES)[Y/n/?
]选择内核是否提供对网络驱动程序的支持。
?
在Ethernet(10or100Mbit)(10M或100M以太网)?
设置中,系统提供了许多网卡驱动程序,我们只要选择自己的网卡驱动就可以了。
Characterdevices(字符设备)?
(1)、Virtualterminal(CONFIG_VT)[Y/n/?
]选择内核是否支持虚拟终端。
?
(2)、Supportforconsoleonvirtualterminal(CONFIG_VT_CONSOLE)[Y/n/?
]?
选择内核是否将一个虚拟终端用作系统控制台。
?
(3)、Standard/generic(dumb)serialsupport(CONFIG_SERIAL)[Y/m/n/?
]?
选择内核是否支持串行口。
?
(4)、Supportforconsoleonserialport(CONFIG_SERIAL_CONSOLE)[N/y/?
]?
选择内核是否将一个串行口用作系统控制台。
?
这里我们需要选择
(1)和
(2)。
Filesystems(文件系统)?
(1)、Quotasupport(CONFIG_QUOTA)[N/y/?
]选择内核是否支持磁盘限额。
?
(2)、Kernelautomountersupport(CONFIG_AUTOFS_FS)[Y/m/n/?
]选择内核是否提供对automounter的支持,使系统在启动时自动mount远程文件系统。
?
(3)、DOSFATfssupport(CONFIG_FAT_FS)[N/y/m/?
]选择内核是否支持DOSFAT文件系统。
?
(4)、ISO9660CDROMfilesystemsupport(CONFIG_ISO9660_FS)[Y/m/n/?
]?
选择内核是否支持ISO9660CDROM文件系统。
?
(5)、NTFSfilesystemsupport(readonly)(CONFIG_NTFS_FS)[N/y/m/?
]?
选择用户是否以只读方式访问NTFS文件系统。
?
(6)、/procfilesystemsupport(CONFIG_PROC_FS)[Y/n/?
]/proc是存放Linux系统运行状态的虚拟文件系统,该项必须选择“y”。
?
(7)、Secondextendedfssupport(CONFIG_EXT2_FS)[Y/m/n/?
]EXT2是Linux的标准文件系统,该项也必须选择“y”。
?
Consoledrivers(控制台驱动)?
VGAtextconsole(CONFIG_VGA_CONSOLE)[Y/n/?
]选择用户是否在标准的VGA显示方式下使用Linux了。
?
ATA/IDE/MFM/RLLsupport
这个需要选上,IDE设备驱动还是要有的,除非你不接硬盘,把ATA/IDE/MFM/RLL
support选上后,IDE,ATAandATAP1Blockdevices就可以进入了.。
Sound(声音)?
Soundcardsupport(CONFIG_SOUND)[N/y/m/?
]选择内核是否提供对声卡的支持。
我们不需要选择。
?
还有MemoryTechnologyDeviceSupport,Parallelportsupport,Multipledevicesupport,Telephysupport,FusionMPTdevicesupport,IEEE1394(FireWire)support,I2Odexicesupport,AmateurRadiosupport业余无线电支持、IrDA(infrafed)support红外线支持、ISDNsubsystem电话支持、OldCD-ROMdrivers老的CD-ROM设备支持、Inputcoresupport,USBsupport、Bluetoothsupport、kernelhacking都不必要。
五实验结果及分析
查看文件中的配置参数:
CONFIG_M386=y
CONFIG_X86_LI_CACHE_SHIFT=4
CONFIG_RWSEM_GENERIC_SPINLOCK=y
CONFIG_X86_PPRO_FENCE=y
CONFIG_3GB=y
CONFIG_NET=y
CONFIG_PCI=y
CONFIG_KCORE_ELF=y
CONFIG_BINFMT_ELF=y
CONFIG_BLK_DEV_LOOP=y
CONFIG_BLK_DEV_RAM=y
CONFIG_BLK_DEV_RAM_SIZE=4096
CONFIG_BLK_DEV_INITRD=y
CONFIG_PACKET=y
CONFIG_PACKET_MMAP=y
CONFIG_INET=y
CONFIG_IDE=y
CONFIG_BLK_DEV_IDE=y
CONFIG_BLK_DEV_IDECD=y
CONFIG_NETDEVICES=y
CONFIG_NET_ETHERNET=y
CONFIG_NET_PCI=y
CONFIG_NE2K_PCI=y
CONFIG_VT=y
CONFIG_VT_CONSOLE=y
CONFIG_PROC_FS=y
CONSOLE_EXT2_FS=y
CONFIG_VGA_CONSOLE=y
使用命令:
makedep生成依赖关系;makebzImage生成系统镜像。
查看内核:
发现内核明显减小了。
实验三ARM/ucLinux-SkyEye的安装、配置与集成
一实验目的
安装SkyEye嵌入式硬件模拟器,配置嵌入式操作系统ucLinux,建立基于SkyEye的ARM/ucLinux嵌入式系统平台。
二实验环境
硬件:
Inteli586PC机
软件:
RedHatLinux7.1(Linux内核版本为或更高版本,SkyEye,ucLinux
或:
Windows操作系统,Cygwin,SkyEye,ucLinux
注:
SkyEye和ucLinux可从“光盘-《源码开放的嵌入式系统软件分析与实践——基于SkyEye和ARM开发平台》”中获取。
三实验内容与步骤
1将下载的4个数据包安装并进入目录home/buptlynn/env
首先,RedHat中如果不下软件不能进行主机和虚拟机之间的文件共享和拖动,所以我们就secureCRT软件进行文件传输
2安装skyeye
2.1解压skyeye:
tar-jxvf
解压的过程中由于文件过多过快,所以只展现最终的解压效果:
2.2进入skyeye:
cdskyeye
2.3预处理:
./configure--target=arm-elf--prefix=/usr/local
2.4编译安装:
make;makeinstall
3安装arm-elf-tools交叉编译器(用于编译ucLinuxSkyEye)
4.安装uclinux
4.1解压:
tar-zxvf
解压后的结果:
Skyeye和uClinux-dist两个文件就都解压好了。
4.2进入解压出的目录:
cduClinux-dist
4.3执行:
makemenuconfig
4.4选择模拟平台:
TargetPlatformSelection-->Vendor/Product->GDB/ARMulator,需要选择CustomizeKernelSettings;
4.5退出,保存;
4.6继续配置uclinux以支持网络:
Networkdevicesupport->Ethernet(10or100Mbit):
'SkyEyene2kethernetsupport(forARMUlator)';
4.7退出,保存;
4.8编译生成:
makedep;make
编译成功。
5.配置
5.1在工作目录(/ivy/uClinux-dist)下建立专门用于基于AT91X40开发板的SkyEye硬件配置文件skyeye.conf:
5.2建立文件系统的链接,需要在目录/ivy/uClinux-dist目录下执行如下命令:
#ln-simages/romfs.imgboot.rom
6.运行
6.1在/ivy/uClinux-dist目录下:
/usr/local/bin/skyeyelinux
6.2在skyeye环境下:
tarsim
load
run
经过上面的操作,即可完成
7测试
在skyeye
在skyeye
测试成功。
8运行五条常用指令
ls
cd:
pwd:
date:
cat:
实验四ARM/ucLinux-SkyEye下BusyBox集成——Shell小型化
一实验目的
理解Linux根文件系统组织结构,将应用程序BusyBox放入Linux文件系统,在嵌入式ARM/ucLinux-SkyEye环境下,集成小型化shellBusyBox。
二实验环境
硬件:
Inteli586PC机
软件:
RedHatLinux7.1(Linux内核版本为或更高版本,SkyEye,ucLinux
或:
Windows操作系统,Cygwin,SkyEye,ucLinux
三实验内容与步骤
参照按照参考文献[2]“6.3.3嵌入式应用软件BusyBox”、参考文献[1]“6.4.3小型化shell”的内容,用BusyBox替换原有的shell。
1内核归位
Makemrproper
2使用makemenuconfig设置内核
2.1选择自定义Vendor的设置
2.2配
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 北京邮电 大学 操作系统 综合 课程设计
![提示](https://static.bdocx.com/images/bang_tan.gif)