2023年操作系统Linu课程实验报告.pdf
《2023年操作系统Linu课程实验报告.pdf》由会员分享,可在线阅读,更多相关《2023年操作系统Linu课程实验报告.pdf(38页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、实验1.1、1.2 Lin ux U b u n t u 的安装、创建新的虚拟机VMWare讣 遹 以 帆1刁一欢迎使用新建虚拟机向导VMware*W orkstation您希望使用什么类型的酉U置?。通过几个简单的步骤创建Workstation 10.0虚似机。自定义(高级)(0诵 带 有SCSI控制器类型、虚拟磁盘类裂以及与旧版VMware产品兼咨性等高级通项的虚拟机。新建虎找炳导笥易安装信息这用于安装U b u n t u o个性化Li n u x全名(E):用户名0 1):密码但):确认(0:新建虚拟机向导命名医m 机您要为此虚似机使用什么名称?虚拟机名称(U:U b u n t u位
2、置(U:E:U b u n t u i n u x在 编揖首选项 中可更改默认位贯。新建虚拟机向导指定磁盘容里磁盘大小为多少?虚拟机的硬盘作为一个或多个文件存储在主机的物理磁盘中。这些文件最初很小,随着急向虚拟机申添加应用程序、文件和数据而逐渐变大。最大磁盘大小(GB)(S):20.0:Ubuntu的建议大小:20 GB。将虚拟运盘存储为单个文件(Q)将虚阳磁盘折分成多个文件(M)折分磁盘后,可以更轻松地在计算机之间移动虚拟机,但可能会降低大容里磁盘的性能。新 建 虚 拟 晒 导已准备好创建虚扳机单击浜成”创建虚拟机,并开始安芸Ubuntu和VMware Tools*将使用下列设置创建虚拟机:
3、价含本俏名位版操UbuntuE:Ubuntu bnuxWorkstation 10.0Ubuntu硬盘:20 GB内存:1024 MB网络通配器:NAT其他设备:CD/DVD,USB Controler,Printer,Sound Card自定义硬件()U创建后开启此虚拟机(E)实验1.3 Shel 1编程1 .实验目的与内容通过本实验,了解Linux系统的s h e 1 1机制,掌握简朴的shell编程技巧。编制简朴的She 1 1程序,该程序在用户登录时自动执行,显示某些提醒信息,如Welcome t。Linux,并在命令提醒符中包含当前时间、当前目录和当前用户名等基本信息。2.程序源代码
4、清单#i n c 1 ude#includeint main()p r i n t f(Hello L i n ux n );i nt p i d;int s tate;in t p f d 2;p i pe(pfd);if(f o rk()=O)opr i nt f(In th e grep progre s s n);dup2(pfd0,0);1 ose(pfdO);c 1 ose(pfd 1);o exe clp(g re p ,g r ep,sh,0);perror(e x e Ip g r e p e r ro r);)esle if(fo r k()=0)prin t f(In t
5、 he ps prog r es s n);dup2(pfdl ,1);lo s e(p f d 0);close(pfd 1);o e x eclp(ps,ps,-ef,0);。p e rror(execlp ps-e f);)close(pfdl);c 1 ose(pfd 0 );wait(&st ate);wai t(&sta t e);)实验2.3内核模块实验环节:(1).编写内核模块文献中重要包含 i nit_c 1 o c k(),ex i t_cloc k(),re a d_clo c k()三个函数。其 中in i t_clock(),exit_clock()负责将模块从系统中
6、加载或卸载,以及增长或删除模块在/pro c中的入口。read_cl。c k()负责产生/proc/c Io c k被读时的动作。(2).编译内核模块Ma k e file文献#Ma k efil e u nder 2.6.25ifneq($(KERN EL RELEAS E),)#k build s ynta x.d ependency r e lation s hsip o f files and targe t mod ules are I i s ted here.obj-m:=proc_clock.oe 1 sePWD:=$(s hel 1 pwd)KV E R?=$(shell u
7、name-r)K D IR :=/l ib/m odule s/$(KVER)/buildall:$(MAKE)-C$(KDIR)M=$(PWD)modu 1 esc I ean:rm-rf.*.cmd*.o*.m o d.c*.k o.tmp_versi o ns*.sym v ers*.o rd ere ndi f编译完毕之后生成proc _ clo ck.ko模块文献。(3).内核模块源代码clock.c#i n c lude#includ e#include#i n c I u de#i ncl u de#i nclude#d ef ine MODULE#d e fi ne MODUL
8、E,VERSION 1.0#d e fi ne MODULE_NAME clock s t ru c t proc _ d ir_en t ry*my_cl o c k;int read_cl o c k(c h ar*page,char*s t a rt,off _ t o f f,int coun t,i n t*eof,void*d a t a)i nt len;s t r uct t imeval xtime;do _ gett i meofday(&x t ime);1 en=s pr i n t f(pag e,%d%dn ,xtime.t v_sec,xt ime.tv_u s
9、e c);pri n t k(c lock:read_fu n c()n);re t urn len;)stru c t p r oc_dir _ entr y*c 1 ock _ p ro c_ file;int ini t _c 1 ock(v oid)c lo c k _ p r o c _ f il e=cr eate_ p r oc _ re a d_ent r y(c lock,0,NULL,read_c loc k,NU L L);re t urn 0;)void exi t _clock(void)r emove_proc _ e ntry(cloc k,c 1 oc k_p
10、r oc_ f i l e);m od u 1 e _ i n it(init_ c lock)module_exit(e x i t_clock)MODU LE_LICENSE(GP L);(4).编译内核模块#makeFile Edit View Terminal Helpproc.clock modulesmake1:Entering directory/usr/src/linux-headers-2.6.32-26-genericC C M/home/xuweilin/os_experiment/2.3.proc.clock/proc.clock,o/home/xuweilin/os_
11、experiment/2.3_proc_clock/proc_clock.c:9:1:warning:M ODULEredefined p id);retu r n 0;(2).连接系统调用a、修改./1 inux-2.6.3 3.7/arc h/x86/i nd u de/asm/unistd_3 2.h,在系统调用列表后面相应位置添加一行,这样在用户空间做系统调用时就不需要知道系统调用号了,假如在用户空间指明了调用号,就可以省略这一步,事实上我就没写:#d efin e _NR _ xwlcall338新增长的调用号位338b、修 改./1 i nux-2.6.3 3.7/arch/x86
12、/kernel/syscal 1 _ t a ble_32.S在ENTRY(sys _call_ t able)清单最后添加一行,这步至关重要,338就是这 里 来 的:Jong sys_xw 1 call(3).重建新的Linux内核先安装好编译内核必要的软件包:#su d o apt-get install b u ild-esse n tial ke r nel-packa g e lib ncurses5-d e v复制当前内核的配置文献#cp/boot/confi g-uname-r ./.co n fig保存配置文献#s udo make m en uco nfig|General
13、 setup4excludes,Help,File Edit View Terminal Help.config-Linux Kernel V2.6.33.7 ConfigurationLinux Kernel ConfigurationArrow keys navigate the menu.selects submenus Highlighted letters are hotkeys.Pressing includes,modularizes features.Press to exit,forfor Search.Legend:*b u ilt-in excluded module*E
14、nable loadable module support Enable the block layer Processor type and features Power management and ACPI options-Bus options(PCI etc.)-Executable file formats/EmulationsNetworking support Device Drivers Firmware Drivers 使用debian的的内核编译方法,要简朴很多#s udo ma ke-kpkg-initrd-in i trd append-to-ve rsion=xwl
15、callkerneljmage ke r n el-h eadersFile Edit View Terminal Help=making target debian/stamp/build/kernel new prereqs:vars=This is kernel package version 12.032.restore.upstream_debianizationtest!f scripts/package/builddeb.kpkg-dist|m v-f scripts/package/builddeb.kpkg-dist scripts/package/builddebtest!
16、-f scripts/package/Makefile.kpkg-dist|m v-f scripts/package/Makefile.kpkg-dist sc ripts/package/Makefile/usr/bin/make EXTRAVERSION:.7xwlcall ARCH=i386 bzlmagemake1:Entering directory/home/xuweilin/交换空间/software/linux-2.6.33.7scripts/kconfig/conf-s arch/x86/Kconfigmake1:Leaving directory /home/xuweil
17、in/交换空间/software/linux-2.6.33.7make1:Entering directory/home/xuweilin/交换空间/software/linux-2.6.33.7CHK include/Linux/version.hCHK include/generated/utsrelease.hCALL scripts/checksyscalls.shCHK include/generated/compile.hVDSO SYM arch/x86/vdso/vdso32-int80-syms.ldsVDSO SYM arch/x86/vdso/vdso32-sysente
18、r-syms.IdsVDSO SYM arch/x86/vdso/vdso32-syms.IdsLD arch/x86/vdso/built-in.oLD arch/x86/built-in.onlinux-headers-2.633.7xwlcall_2.6.33.7xwlcalH0.00.Custo-linux-image-2.6.33.7xwlcall_2.6.33.7xwlcall-10.00.Custo-运营以下deb包,安装内核镜像和模块:li n ux-im a g e-2.6.33.7xwlcall_2.6.3 3.7 x wlcall-1 0.OO.Custom _ i3 8
19、6.d ebFile HelpPackage:linux-image-2.6.33.7xwlcaII Reinstall Packa eStatus:Same version is already installedDescription Details Included filesLinux kernel binary image for version 2.6.33.7xwlcallThis package contains the Linux kernel image for version 2.6.33.7xwlcall.It also contains the correspondi
20、ng System.map file,and the modules built by the packager.It also contains scripts that try to ensure that the system is not left in a unbootable state after anupdate.Kernel image packages are generally produced using kernel-package,and it is suggested that youinstall that package ifyou wish to creat
21、e a custom kernel from the sources.Please look at kernel-img.conf(5)r and/usr/share/doc/kernel-package/README.gzfrom the package kernel-package for details on how to tailor theinstallation ofthis or any other kernel image package运营以下d e b 包,安装内核头文献:lin u x-h e a d ers-2.6.33.7xwlca 1 l_2.6.3 3.7x w
22、lcall-10.0 0,C ustom i38 6.debFile HelpPackage:linux-headers-2.6.33.7xwlcall-;Reinstall PackageStatus:Same version is already installedDescription Details Included filesHeader files related to Linux kernel,specifically,version 2.6.33.7xwlcallThis package provides kernel header files for sites that w
23、ant the latest kernel headers for version2.6.33.7xwlcall.Please read/usr/share/doc/linux-headers-2.6.33.7xwlcall/debian.README.gz fordetails运营以下命令,使内核启动时能调用模块,比如硬件驱动:#sudoupd ate-initramf s-c-k 2.6 .33.7 x wlca 11本次编译的内核采用ubuntu默认配置文献,通用性非常好,可以拷贝到大部分x86机器上安装。安装后系统自动会修改g r u b启动选单。4 .重建引导信息a、安装deb包就自
24、动重建引导信息了,无须另行解决。b、假如仍然不放心,可以运营#upd ate-grub5.重新引导从新的内核进入File Edit View Terminal Helpxuweilinxuweilin-desktop:$uname-r2.6.33.7xwlcallxuweilinexuweilin-desktop:$6.修改系统调用表7.测试实验3.3 S h e ll编程实验(进程管理实验)1、实验目的通过编写she 1 1程序,了解子进程的创建和父进程与子进程间的协同,获得多进程程序的编程经验。2、实验内容1设计一个简朴的s hell解释程序,能实现基本的bsh功能。3、实验原理将每一条命
25、令分子段压入a r g v栈。然后再子进程中调用e xec v p()来实现该命令的功能。4、代码(源代码清单)#incl u d e#include#i nclu d e#define BUFFER SIZE 256最简朴的s h e 11,只是简朴的执行命令调用,没有任何的其他功能i nt ma i n()(c har buf BU FFER SIZE,*c md,*argv 100;ch ar inchar;int n,sv,bu f I e ngth;int res u It;bu f length=0;for(;)printf(=);解决过长的命令;i n c ha r=g e tc
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2023 操作系统 Linu 课程 实验 报告
限制150内