Linux实验报告.docx
《Linux实验报告.docx》由会员分享,可在线阅读,更多相关《Linux实验报告.docx(26页珍藏版)》请在冰豆网上搜索。
Linux实验报告
中南大学
Linux操作系统
实验报告
学生姓名
学院信息科学与工程学院
指导老师胡小龙
专业班级
完成时间
Linux操作系统
1.实验一Linux的安装
1.1实验目的
(1)了解硬盘分区的概念和方法;
(2)掌握硬盘的分区规划;
(3)掌握Linux操作系统的安装和配置过程。
1.2实验设备
一台pc机、RedHatLinux7.2以上版本、VMwareWorkstationv5.5。
1.3实验原理
Linux可以以多种方式安装在PC机上:
(1)独立分区安装、
(2)DOS分区安装和(3)虚拟机VMWare下安装。
鉴于VMware下安装对原来系统影响较小且不影响本实验目的,因此采用VMWare下安装方式。
1.4实验步骤
(1)在WindowsXP下安装VMware5.5
(2)配置虚拟机
(3)启动虚拟机
(4)启动Linux安装过程
(5)安装过程配置
(6)安装后配置
(7)第1次启动VMWare下Linux操作系统
2.实验二Linux基本操作
2.1实验目的
(1)复习Linux基本命令;
(2)掌握常用Linux命令。
2.2实验设备
一台pc机、RedHatLinux7.2以上版本、VMwareWorkstationv5.5。
2.3实验原理
(1)练习命令行模式下的常用命令:
man:
命令帮助
ALT-Fx:
虚终端切换
常用命令:
cat、Ls、ps、chmod、kill、ln、cp、mv、rm、cd、pwd、mkdir、chown、who、w、wc、whoami、date、uname等
(2)编辑器vi的使用:
使用vi建立并修改一个文本文件
(3)档案管理
rpm、gzip、tar等命令
(4)网络命令
telnet、ftp、talk
2.4实验步骤
(1)常用命令
1.使用manman命令查询man命令的Manual:
NAME章节指示了该命令的名字和简介;
SYNOPSIS章节列出了该命令可用的使用方式及其符号;
DESCRIPTION章节详细描述各使用方式及符号的作用;
2.cat查看/etc/fstab
可以看出系统挂载了3个文件系统,分别挂在/、/home、swap,它们都是通过UUID指定其物理分区来定位的。
3.ls列目录
4.ps列进程
5.vi编辑器
6.tar解压缩
7.telnet远程登录路由器
ssh远程登录iPad
(2)其他
3.实验三Linux系统管理
3.1实验目的
(1)掌握Linux基本系统管理命令;
(2)掌握基本管理方法;
(3)初步了解Linux中与系统管理相关的有关配置文件。
3.2实验设备
一台pc机、RedHatLinux7.2以上版本、VMwareWorkstationv5.5。
3.3实验原理
(1)用户管理
adduser、useradd、passwd等
观察:
/etc/passwd文件
(2)文件系统管理
df、du命令使用
mount、umount命令使用:
安装usb盘或者光盘,查看分析/etc/fstab文件
(3)存储器
free:
了解存储器使用情况
(4)关机
halt、shutdown–h、init0
reboot、shutdown-rnow
并比较它们之间的差别
(5)网络配置
netconfig的使用
(6)启动配置
/etc/inittab:
查看、修改并观察其响应
3.4实验步骤
(1)用户管理
1.adduser:
2.passwd命令
(2)文件系统管理
1.df、du:
2.mount、umount:
3.查看fstab:
(3)存储系统
free命令查看存储器状态
(4)网络配置ifconfig
4.实验四LinuxShell程序设计
4.1实验目的
(1)掌握Linuxshell程序运行方法;
(2)掌握LinuxShell程序基本语法;
(3)了解Linux环境变量;
(4)编写简单Linuxshell程序。
4.2实验设备
一台pc机、RedHatLinux7.2以上版本、VMwareWorkstationv5.5。
4.3实验原理
(1)查看/etc/.profile文件:
相当于DOS下autoexe.bat
(2)通配符“*”、“?
”、“[]”的使用
$ls[a-c]*和$ls[a,m,t]*命令
(3)重定向和管道的使用
ls|more
cat>test.txt
(4)变量
$lookup=/usr/mydir
$echo$lookup
$exportlookup:
让进程使用
(5)编辑并运行以下程序(shell程序控制结构)
1fortest
#!
/bin/bash
forainxyz
do
echonowa=$a
done
2fortest1
#!
/bin/bash
fora
do
echonowa=$a
done
3functest
#!
/bin/bash
setup()
{
echosetup…
}
do_date()
{
date
}
chgdir()
{
cd$1
}
do_date
setup
chgdir
4paramtest
#!
/bin/bash
echofilename:
$0
echoarguments:
$*
echonumberarg:
$#
echoarg2:
$2
shift
echonumberarg:
$#
echoarg2:
$2
sethello,everone
echoargs:
$*
echoarg2:
$2
5untiltest
#!
/bin/bash
number=0
until(test$number–gt5)
do
echo“$number”
number=`expr$number+1`
done
4.4实验步骤
(1)查看文件
屏幕上的内容定向到text中。
(2)输入输出重定向
在Linux命令行模式中,如果命令所需的输入不是来自键盘,而是来自指定的文件,这就是输入重定向。
同理,命令的输出也可以不显示在屏幕上,而是写入到指定文件中,这就是输出重定向。
command>file:
将命令的输出结果重定向到一个文件。
command>&file:
将命令的标准错误输出一起重定向到一个文件。
command>>file:
将标准输出的结果追加到文件中。
command>>&file:
将标准输出和标准错误输出的结构都追加到文件中。
如#ls–l>list.txt
(3)管道pipe
将某一个程序的输出送到另一个程序的输入
command1|command2[|command3...]
也可以连同标准错误输出一起送入管道:
command1|&command2[|&command3...]
(5)$lookup=/usr/mydir
该命令建立一个名为lookup的变量并给其赋值/usr/mydir,以后用户可以在命令行中使用lookup来代替/usr/mydir,
$echo$lookup
结果显示:
/usr/mydir
为了使变量能被子进程使用,可用exprot命令,例如:
$lookup=/usr/mydir
(6)运行shell程序
Shell程序1:
Shell程序2:
Shell程序3:
Shell程序4:
Shell程序5
5.实验五Linux高级程序设计
5.1实验目的
(1)了解Linux操作系统下应用程序开发流程
(2)掌握gun工具链的使用
(3)了解Linux高级编程技巧(例如IPC机制、系统调用等)
5.2实验设备
一台pc机、RedHatLinux7.2以上版本、VMwareWorkstationv5.5。
5.3实验原理
(1)编写一个简单的C语言程序,编写Makefile文件。
了解编译过程,并用gdb进行调试。
(2)以下任选其一:
1.编写一个多进程通信程序,采用MessageQueue或sharedMemory或者MapedFile机制进行通信
2.编写一个多线程程序(pthread),实现2程同步互斥
5.4实验步骤
(1)写出源程序,并编译运行
C编程:
6.实验六Linux内核
6.1实验目的
(1)了解Linux操作系内核
(2)掌握内核编译和内核升级方法
(3)了解有关内核编程
6.2实验设备
一台pc机、RedHatLinux7.2以上版本、VMwareWorkstationv5.5。
6.3实验原理
(1)内核配置和编译(课后完成)
(2)察看/proc内存文件系统下的文件,写出每个目录内容
(3)编写一个简单的字符虚拟设备程序(以模块方式编译、加载、使用)
6.4实验步骤
struct file_ operations status_ fops = {
NULL, /* seek */
read_ status,
write_ status,
NULL, /* readdir */
NULL, /* poll */
NULL, /* ioctl */
NULL, /* mmap */
open_ status,
NULL, /* flush */
close_ status,
NULL, /* fsync */
NULL, /* fasync */
NULL, /* check_ media_ change */
NULL, /* revalidate */
NULL, /* lock */
};
创建这个设备:
mknod /dev/status c 0
static int major_ number = 0; /* pass a major of 0 to
register_ chrdev* for dynamic allocation*/
int init_ module( void)
{
major_ number = register_ chrdev( 0, "status", &status_ fops);
if (major_ number < 0) {
printk( KERN_ WARNING "Dynamic allocation of major failed");
return major_ number; /* return error code */
}
printk( KERN_ INFO "Assigned major number %i.\ n", major_ umber);
return 0;
}
int cleanup_ module( void)
{printk( KERN_ INFO "Unregistering major number %i.\ n", major_ number);
unregister_ chrdev( major_ number, "status"); /* give back our number */
return 0;
}
static ssize_ t write_ status( struct file *file, const char *buffer, size_ t count, loff_ t *ppos)
{
return -EINVAL;
/* we’ve decided not to support writes for now */
}
static int open_ status( struct inode *inode, struct file *file)
{MOD_ INC_ USE_ COUNT; /* ensures that currently used modules aren’t unloaded*/
return 0;
}
static int close_ status( struct inode *inode, struct file *file)
{
MOD_ DEC_ USE_ COUNT; /* rmmod won’t run unless USE_ COUNT is 0 */
return 0;
}
static char *message = "All your base are belong to us.";
static ssize_ t read_ status( struct file *file, char *buffer,
size_ t count, loff_ t *ppos)
{
int char_ count = 0;
int count_ to_ copy = 0;
while (message[ char_ count] !
= '\ 0')
char_ count ++; count_ to_ copy = (char_ count > count) ?
count :
char_ count;
copy_ to_ user( buffer, message, count_ to_ copy); /* write to the user- space buffer */
return char_ count;
}