中国石油大学Linux实验报告.docx
- 文档编号:23866217
- 上传时间:2023-05-21
- 格式:DOCX
- 页数:16
- 大小:504.35KB
中国石油大学Linux实验报告.docx
《中国石油大学Linux实验报告.docx》由会员分享,可在线阅读,更多相关《中国石油大学Linux实验报告.docx(16页珍藏版)》请在冰豆网上搜索。
中国石油大学Linux实验报告
实验报告名称:
Linux系统实验
[Linux系统实验]实验报告
班级软件10-01
姓名周诗豪
学号********
日期2012年12月3日
Linux系统实验实验报告包括1,2,3、4共四个实验。
评阅人
评语
实验一
实验名称:
蛇形矩阵
一实验目的
1、在linux系统环境下进行c编程,尤其是使用终端形式的命令窗口编程,掌握linux系统中c程序的编译运行命令gcc等。
2、熟悉并熟练使用vi编辑器,掌握vi编辑器的一些常用命令。
3、初步了解linux系统的操作。
二实验内容
使用vi编辑器,编写一个c程序,实现输入两个数据即行值line和列值col,输出一个螺旋矩阵。
三实验环境
软件环境:
RedHatLinux2.4.20-8,VMwareWorkSationACE版
硬件环境:
DELLXPSL502x
四实验整体思路(请列出实验用到的算法和思路)
用到的算法(核心生成部分):
while(tms--)
{
map[th][tl]=tc;
tc=(tc+1)%26;
intnh=th+moveh[dir];
intnl=tl+movel[dir];
if(nh>=H||nh<0||nl>=L||nl<0||map[nh][nl]!
=-1)
{
dir=(dir+1)%4;
}
th=th+moveh[dir];
tl=tl+movel[dir];
}
五实验详细步骤(源代码请列举出和案例不同的部分即可)
1、使用vi编辑器编写源文件juzhen.c。
2、在终端输入gccjuzhen.c编译写好的源文件。
3、在终端输入./a.out运行。
六实验结果(要求截图)
七实验曾经遇到的问题与总结(请详细列举)
1、老师要编写的代码还是较快速的编译成功,实验过程基本顺利。
2、检查之后老师提出要编写MakeFile,写的时候没有主要空格和一些符号,使得用了许多时间检查。
3、用shell运行时遇到问题,请教了同学之后才解决。
4、终端要多用TAB键进行补全,这样使用终端的效率会很高。
实验2
实验名称:
Shell程序设计与实现
一实验目的
编写简单的shell程序,掌握shell程序的编写方法。
二实验内容
设计两个Shell程序factory.sh和rmfactory.sh,factory.sh用于添加三个新组为facory1,facory2,facory3,然后添加属于这个组的9个用户worker。
rmfactory.sh用于删除新建的组以及组内的成员。
三实验环境
软件环境:
RedHatLinux2.4.20-8,VMwareWorkSationACE版
硬件环境:
DELLXPSL502x
四实验整体思路(请列出实验用到的算法和思路)
1、利用vi首先编写Shell脚本文件,保存为文件名factory.sh。
通过改变文件的权限,(chmod+xfactory.sh),并且检查权限(ls-lfactory.sh)使factory.sh能够顺利的执行。
之后运行factory.sh程序,执行添加功能后检查是否添加(ls/home/)。
2、随后利用vi然后编写Shell脚本文件,保存为文件名rmfactory.sh。
通过改变文件的权限(chmod+xrmfactory.sh),并且检查权限(ls-lrmfactory.sh)使rmfactory.sh能够顺利的执行。
之后运行rmfactory.sh程序执行,执行删除功能后检查是否添加(ls/home/)。
五实验详细步骤(源代码请列举出和案例不同的部分即可)
1、factory.sh编写:
#!
/bin/sh
foriin123
do
groupaddfactory${i}
forjin12345678910
do
username=factory${i}worker${j}
useradd$username
chown-R$username/home/$username
chgrp-Rfactory${i}/home/$username
done
done
2、rmfactroy.sh编写:
#!
/bin/sh
foriin123
do
forjin12345678910
do
username=factory${i}worker${j}
userdel-r$username
done
groupdelfactory${i}
done
六实验结果(要求截图)
1、factroy.sh执行之前的home目录。
2、factroy.sh执行之后的home目录。
3、执行rmfactroy之后的情况
七实验曾经遇到的问题与总结(请详细列举)
1、刚开始写shell程序的时候对着书上抄,结果书上的空格太小,修改了权限之后运行老是报错。
但是改正之后对照着书上的程序一会就写出了符合老师要求的程序了。
2、写shell程序的时候不能想当然,用以前学习的编程知识写,然后出错的时候自己还以为是对的。
日后实验中一定要在书上确定了再写程序。
实验三
一实验目的
1)初始linux内核,掌握linux内核的基本特征如内核空间,用户空间,目录等基本概念。
3)掌握linux内核配置命令(三种),以及详细的编译步骤等。
2)熟悉Busybox的使用。
二实验内容
使用软盘进行GRUB配置,之后使用makemenuconfig进行内核配置,之后使用Busybox编译生成一个新的根文件系统,把这些整合到软盘中完成FloppyLinux。
三实验环境
软件环境:
RedHatLinux2.4.20-8,VMwareWorkSationACE版,Busybox-1.00,linux2.4.20
硬件环境:
DELLXPSL502x
四实验整体思路(请列出实验用到的算法和思路)
1、制作软盘镜像floppyLinuxByJoyzhos.flp
2、软盘上安装引导器grub
3、下载Busybox1.00,编译并安装busybox
4、配置busybox相关选项
5、建立临时目录,该目录为软盘的文件系统
6、建立设备列表
7、建立启动配置文件
8、制作镜像文件initrd.img
9、检查,用loop设备来把它重新挂装到文件系统里之后压缩initrd.img镜像文件
10、编译linux系统内核
11、整合启动盘
12、测试
五实验详细步骤(源代码请列举出和案例不同的部分即可)
1、下载Busybox1.00,linux2.4.20内核源码
2、在VMwareWorkSation中建立启动盘
3、详细操作步骤(与教程一致,此处略)
六实验结果(要求截图)
1、建立虚拟软盘
2、Busybox1.00部分
3、建立设备节点
4、initrd.img.gz
5、bzImage
6、Myfloppy
7、从软盘启动
七实验曾经遇到的问题与总结(请详细列举)
1、一开始操作的时候没有下载busybox和linux2.4.20源码,导致有些步骤不能完成。
真是低级错误。
2、内核裁剪的时候裁剪的比较厉害,生成的bzImage只有620K,和书上的不太一致。
3、实验结果中有只阴魂不散的企鹅图片,这就成了我的实验专属标志了。
4、整合的时候虚拟机的软盘总是卸载不掉,导致软盘总是出现I/O错误。
之后发现是桌面自动出来的floppy的快捷方式造成的。
删掉之后软盘就可以顺利的卸载掉了。
5、建议老师使用编程用的字体写书,编程字体可以防止类似于(l和1)的误读!
(Inconsolata这款免费的编程字体就很不错)。
实验四
实验名称:
使用静态结点方式进行驱动程序的开发和测试(螺旋矩阵)
一实验目的
1、了解Linux驱动的基础知识。
2、了解Linux驱动开发的方法。
3、掌握Linux驱动的基本编写、装入、运行等方法,
二实验内容
创建一个新目录,并在其中编写驱动程序文件和Makefile文件。
之后编译生成驱动程序模块。
基于该驱动程序模块编写测试程序。
然后将驱动程序模块装入到目标开发板上,并运行测试程序测试之。
建立设备结点并连接,运行测试程序测试之。
测试程序向驱动中写入两个数据,然后从驱动中读取一个螺旋矩阵并在终端中输出。
三实验环境
软件环境:
RedHatLinux2.4.20-8,VMwareWorkSationACE版
硬件环境:
DELLXPSL502x
四实验整体思路(请列出实验用到的算法和思路)
1、编写Makefile
2、编写nodevfs.c
3、编写test_demo.c
4、编译并安装驱动程序模块,编译test_demo.c。
5、运行test_demo,然后再终端观察结果。
五实验详细步骤(源代码请列举出和案例不同的部分即可)
1、Makefile(与所给教程中一致,此处略)
2、nodevfs.c(给出部分均与教程有异,其余部分一致)
staticvoiddo_write()
{
charH,L,dir;
charmoveh[4]={0,1,0,-1};
charmovel[4]={1,0,-1,0};
charmap[100][100];
charth,tl,tc,tms;
H=drv_buf[0];
L=drv_buf[1];
dir=0,th=0,tl=0,tc=0;
inti,j;
tms=H*L;
for(i=0;i for(j=0;j while(tms--) { map[th][tl]=tc; tc=(tc+1)%26; intnh=th+moveh[dir]; intnl=tl+movel[dir]; if(nh>=H||nh<0||nl>=L||nl<0||map[nh][nl]! =-1) { dir=(dir+1)%4; } th=th+moveh[dir]; tl=tl+movel[dir]; } for(i=0;i for(j=0;j } 3、test_demo.c charMAX_LEN=2; charH=4,L=5; voidshowbuf(char*buf) { inti,j=0; for(i=0;i { for(j=0;j printf("%c",(buf[i*L+j]+'A')); printf("\n"); } printf("\n*********************************\n"); } intmain() { intfd,i; charbuf[255]; buf[0]=H; buf[1]=L; fd=open("/dev/evan",O_RDWR); if(fd<0) { printf("######nodevfsdriversopenfailed! ! ######\n"); return(-1); } printf("######nodevfsdriversopensuccess! ! ######\n"); printf("write%dbytesdatato/dev/evan\n",MAX_LEN); printf("write%dand%dtothe/dev/evan\n",buf[0],buf[1]); write(fd,buf,MAX_LEN); MAX_LEN=buf[0]*buf[1]; printf("Read%dbytesdatafrom/dev/evan\n",MAX_LEN); read(fd,buf,MAX_LEN); showbuf(buf); ioctl(fd,1,NULL); close(fd); return0; } 六实验结果(要求截图) 1、编译nodevfs.c与test_demo.c。 之后建立节点,插入驱动。 2、执行test_demo 七实验曾经遇到的问题与总结(请详细列举) 1、我在实验时对照教程看懂test_demo.c如何向驱动写数据(write(fd,buf,MAX_LEN);)和读数据(read(fd,buf,MAX_LEN);)。 接着看驱动如何处理(do_write())(多亏老师写的诡异的程序,一下子就找到了)。 把老师的程序注释掉之后然后套上自己的矩阵程序就大功告成了。 2、我在写驱动程序想回传处理完的矩阵时直接传2维矩阵,结果出错。 我只好转换为1维数组然后回传然后再test_demo.c中恢复。 3、在帮助其他同学时发现很多人都没有修改test_demo.c中的MAX_LEN而造成各种乱码。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 中国 石油大学 Linux 实验 报告