Linux实验平台

2024-09-08

Linux实验平台(精选7篇)

Linux实验平台 篇1

随着物联网、云计算等概念的提出,相关产业正在以一股不可阻挡的势头迅猛发展,嵌入式技术正是其最核心最关键的技术之一。2011年发布的《中国嵌入式开发人员调查报告》[1],对国内的嵌入式行业从嵌入式工程个人情况、嵌入式行业公司的基本情况、嵌入式工程师对职业生涯的看法、嵌入式工程师对参加培训的看法等几个方面进行了调查研究,结果表明,嵌入式公司行业分布广泛,嵌入式工程师具有很高的自我满意度,而且有相当多的嵌入式工程师是新参加工作的大学毕业生。嵌入式行业不仅可以吸收大量的大学毕业生,而且从事嵌入式行业的开发人员也对自己所从事的行业具有较高的行业幸福感。作为向社会输送人才的各大高校,也紧跟IT技术发展潮流,面向市场需求,相继开设了嵌入式系统开发课程,并积极引导学生参加各种形式的嵌入式设计大赛等活动,提高学生的综合能力,提升学生的培养质量,增强学生的就业竞争力。

从多年的嵌入式系统开发教学效果来看,该课程入门难、上手慢、实践性强,需要综合知识面广。要掌握嵌入式系统开发技术,需要大量的实践练习,因此,实验教学是非常重要的一环。

1 嵌入式系统开发平台组成

嵌入式系统开发平台有多种类型[2],我校使用的平台可以选用S3C44B0或S3C2410处理器。由于S3C44B0不支持MMU功能,因此如果选用S3C44B0作为处理器,相应的嵌入式操作系统则应选择uClinux;如果选择S3C2410处理器,则应选用Linux作为嵌入式操作系统来搭配使用。由于S3C44B0+uClinux平台功能相对简单,因此本文所涉及的实验全部基于S3C2410+Linux平台。

嵌入式系统开发平台结构框图如图1所示。使用CPU扩展接口,可以更换使用S3C44B0或S3C2410处理器。该平台提供的硬件资源丰富,包括64 M SDRAM,4 M Nor Flash,32 M Nand Flash,标配320×240 CSTN 5.7英寸LCD,多个LED指示灯,8个8段数码管,8路10BIT的ADC,提供触摸屏接口电路,5×4键盘,直流电机,步进电机模块,具有采用扩展子板形式的GPRS模块电路和GPS模块电路等,同时,该平台也提供了丰富的接口,包括10 M以太网接口,USB接口电路,2个RS232串行口,IIS音频信号接口,2个CAN接口,1个IDE硬盘接口,1个PCI扩展插槽和1个PS2接口,CF存储卡接口,SD卡接口等。同时,开发平台还提供JTAG接口,支持JTAG仿真技术,支持ADS,STD和IDE等集成开发环境。基于丰富的硬件资源和接口,可以开设各种类型的嵌入式实验。

要想在嵌入式开发平台上运行L i n u x操作系统,首先要把Linux裁剪、压缩,去掉一些使用不到的功能,以便符合硬件平台的要求。然后移植BootLoader,BootLoader是一段负责引导Linux操作系统启动的程序,在嵌入式系统开发中具有重要的作用。BootLoader一般分为两段,第一段一般采用ARM汇编程序编写,主要负责硬件初始化、设置堆栈等工作,然后跳转到第二段程序入口点;第二段程序一般采用C语言编写,主要负责检测系统内存映射,将压缩的Linux Kernel映像文件从Flash拷贝到RAM并解压,为Linux Kernel内核设置启动参数,最后调用内核,完成Linux启动。BootLoader有很多种,如VIVI,UBOOT,ARMBOOT,BLOB等,我们采用VIVI作为开发平台的BootLoader。

嵌入式系统开发采用交叉编译模式,所谓交叉编译模式是指在主机上进行程序的编写、编译、调制,而在开发平台上运行的模式。交叉编译模式如图2所示。主机上安装编译工具对源程序进行交叉编译,生成的可执行程序,通过主机和目标板之间的JTAG接口、串口、Ethernet接口或者USB接口下载到目标板,然后启动执行。

2 开展嵌入式系统开发教学实验的两种方案

嵌入式开发平台具有丰富的硬件资源和接口电路,因此可开设的实验非常丰富,形式多种多样[3,4],在文献[3][4]中列举出的实验共计48个,面对数量如此多的实验,在教学课时、教学设备有限的条件下,不可能一一开设,因此如何选择实验,以便让学生能够快速有效地掌握嵌入式系统开发技术是非常重要的问题。基于循序渐进、由简单到复杂的原则,同时兼顾初学者的接受能力,我们提出两种嵌入式实验的开设顺序,实践表明,这两种方案都具有很好的实验教学效果。

2.1 第一种方案

第一方案所开设的实验分为三大部分:第一部分为ARM相关的基础实验(6个);第二部分为与Linux相关的实验(7个);第三部分为综合应用实验(1个)。共计14个实验(见表1)。

我们把开设的实验分成了基础、综合和应用三个级别。在第一种方案中,基础实验为8个,综合实验为5个,应用实验为1个,符合宽基础的教学要求。通过大量的基础实验训练,使学生掌握嵌入式开发的基本技术之后,再通过综合型和应用型的训练,提高使用嵌入式技术解决问题的能力。

2.2 第二种方案

第二种方案所开设的实验也分为三大部分,其中第一部分为ARM基础实验(4个);第二部分为Linux相关实验(7个);第三部分为综合应用型实验(1个),共计12个实验,第二种方案所开设的12个实验见表2。

比较方案一和方案二开设的实验,可以看出,两种方案有所侧重。其中方案一比较注重基础,方案一提供的基础实验共8个,同时偏重对整个嵌入式系统的整体了解,方案一中的实验8,10,11都是了解整个嵌入式系统架构所必须开设的。而方案二更加注重应用,从实验5到实验11,都是嵌入式应用程序的开发实验。通过实行不同的方案,既可以对整个嵌入式系统开发架构有所了解,同时也能够从事实用的嵌入式应用开发,多年的教学效果表明,采用这样的实验方案,取得了很好的教学效果。

3 远程温度控制系统

以方案一和方案二中的应用型实验“远程温度控制系统设计”为基础,我们设计了一种远程温度控制系统,参加了2010年“博创杯全国嵌入式设计大赛”,获得了山东省二等奖。该温控系统的结构图如图3所示。

该远程温度控制系统主要包括温度传感器、嵌入式开发平台和主机。温度传感器使用通用I/O端口与开发平台连接,GRPS模块使用串口与开发平台连接,主机使用串口与开发平台连接,用来调试、下载程序。温度传感器检测的温度数值通过通用I/O端口发送给开发平台上的接收程序,程序接收温度数值后判断是否大于或者小于某个设定值,如果大于或者小于设定值,则通过GPRS模块发送到远程手机,同时,对于传感器每次发送过来的温度数值,都以文件的形式保存在本地,嵌入式开发平台上部署了嵌入式Web服务器和CGI程序,这样在主机就可以通过Ethernet接口来访问以文件形式保存在开发板上的温度值。在该方案中,我们基于方案一中的实验11,开发了通用I/O端口驱动程序;基于方案一的实验11和方案二的实验11,开发了嵌入式Web服务器及CGI程序;基于方案二的实验8,开发了GRPS模块和开发平台的串口通信程序;基于方案二的实验6和7开发了相关的应用程序。通过该系统的实施过程和最后的得奖情况来看,我们所提出的嵌入式开发平台教学实验的方案一和方案二是合理可行的,对于提高学生嵌入式系统开发技术水平,提高就业竞争力具有很好的作用。

4 结束语

嵌入式系统开发平台及其教学实验方案,是针对目前高校嵌入式系统开发课程的实验教学实际而提出的。方案一侧重宏观整体掌握嵌入式系统开发架构,方案二则注重嵌入式应用,并且基于方案一和方案二所开设的实验,设计了一种远程温度控制系统,并获得了“博创杯全国大学生嵌入式设计大赛”山东赛区二等奖。结果表明,该实验方案科学合理,能够满足不同层次学生的需求,对高校嵌入式系统开发实验课具有较好的指导意义。

摘要:对基于ARM-Linux开发平台的嵌入式系统教学实验进行了研究,提出了开设实验的两种方案并进行了对比分析。在相关实验的基础上,提出了一种远程温度控制系统。

关键词:ARM-Linux,嵌入式系统,实验教学

参考文献

[1]中国嵌入式开发从业人员调查报[EB/OL].http://www.farsight.com.cn/subject/report2010-2011.htm.[2011-05-03]

[2]朱丽霞.基于ARM-Linux的嵌入式实验教学平台构建[J].中国现代教育装备,2010,23:42-43.

[3]深圳英蓓特公司.EudkitIII S3C2410实验教程[Z].2008

[4]深圳英蓓特公司.EudkitIII S3C2410Linux实验教程[Z].2008.

Linux系统平台下的存储 篇2

下面的三个架构基本覆盖了绝大多数的存储模型,如图(B):

&直接附加存储(Drect-Attached-Storage) DAS;

&存储区域网络(Storage Area Network) SAN;

&网络附加存储(Network-Attached Storage) NAS;

直接附加存储即直连方式存储,它是通过SCSI接口而连接到服务器,输入输出直接发送存储设备当中,所以也可称为SAS (ServerAttached Storage), 即服务器附加存储。因为它是依赖于服务器,所以基本不需要带任何存储系统。

下面是DAS的一些结构特点:

(1)实现了RAID技术;

(2)无法提供跨平台的共享文件功能(仅限于一个独立的操作系统),需相应的服务器操作系统支持;

(3)没有自身的管理软件;

(4)可在扩充性的前提上增加硬盘并重新做RAID,但会对网络服务有一定的影响;

(5)在多台服务器当中,对数据库的备份与恢复时比较费力;

SAN目前已经取得了空前的发展,在管理比较复杂且巨额预算的的IT技能企业当中,作为长远规划的企业级是比较不错的存储方式,它不仅解决了数据块增长的问题,还对IT部门用于存储体系结构适应变化的优化以便能够在性能和实用性上提高了成本和技术。在今天的SAN当中,它已经具有类于window的用户界面,并且安装十分简单,这大大降低了更多的管理人员。

存储区域网络,就通过类于光纤,网线等互连的方法而把很多台存储服务器组和成的一个单独的网络存储数据,实现企业级的数据存储服务,主要由几个部分组成:存储和设备备份,光纤,交换机,光纤通道与SCSI间的桥接器等。除了存储设备外,它还需要光纤交换机作为网络连接部件。SAN协议和界面具有广泛性和多样性。它作为存储协议以太网已经出现在Linux中完全实现,它不仅完全支持10千兆以太网,且允许构造高性能的SAN,还类似于ATA over Etherne (ATAOE)的协议,可通过以太网扩展ATA协议。

所谓的NAS,就是通过网络存储合并,在不同的客户端的文件级别进行访问,也就是以文件为最小单位。例如NFS (Network File system)和SMB/CIFS就是最常见NAS所支持网络协议。它的主要特点是能为多种客户端服务,使客户更安全的访问数据,相对来对于一般的设备(如U盘,CD/DVD), NAS显得更智能,因为它不依赖于其它主机设备,当其他设备停机或不能正常运行时,NAS也能正常的访问。

SAN和NAS已经成为当今两大主流存储技术,相对与其他设备文件服务器而言,网络附加存储不仅仅只在数据的备份,文件的存储等方面具有自身的一定的优势外,它主要是才用了低功耗,简化的CPU处理器,这也使之作为专业的数据存储,在中小型企业的重要部门中能充当很好的备份,冗余等方面的重任。并且比较容易安装,切比较快速,扩展性也非常好,易于维护等特点,保证了对服务器性能要求低,从而降低服务器成本,使之更能广范围的普及和应用。网络附加存储在整体的结构上主要有:核心CPU处理器,相应的管理文件服务的工具,还有一个或多个硬盘驱动(包括存储期间,磁盘阵列,磁带或可移动的存储介质等)。

在linux平台上,并不是所有的的存储架构都适合于DAS, SAN和NAS存储,因为linux是开放的,导致内部技术的更新非常频繁,所有linux中的最新尖端的技术是比较多的。

相对于一些不是新功能的技术,但本质上因为存储架构是对象存储架构,对象存储架构从元数据从分离出独立文件并独立的存储它们,他不仅最大的降低了元数据的瓶颈,还能进行分段数据的方式在多个服务器上进行并行的访问增强存储性能。

Linux的标准功能存储虚拟化,它曾经是高端存储系统的独特功能。在linux中,逻辑卷管理器(Logical Volume Manager, LVMs)是一个很重要的服务,它位于可用的物理存储之上,可以进行磁盘的调整,即可用性调整添加或删除空间。除此之外,还可以通过物理设备提高到逻辑设备的能力,例如,只读,只写和快照,跨卷的数据分段等独立的磁盘冗余阵列(RAID)。在LVM中主要有三个概念:

物理卷(Physical Volume):物理卷可以是一个磁盘,RAID,一个分区。为LVM提供了LVM存储介质。

逻辑卷组(Logical volume Group):就是把多个物理卷组成了逻辑卷组,因为他们在硬件上不连续,这就需要吧逻辑卷看成一个存储连续的逻辑硬盘。

逻辑卷(Logical Volume):多个逻辑卷可以组成一个逻辑卷组,也就是说卷组可分成若干个逻辑卷,相当于逻辑磁盘和逻辑磁盘分区。

在使用LVM之后,插入一个逻辑层,可以认为是在磁盘上创建一个逻辑分区。只不过这个磁盘是逻辑卷(组),最后在这之上创建文件系统。虽然对于单个磁盘的读写会有一定的性能损失,但是LVM的好处就体现出来了,首先他可以不受磁盘实际大小的限制,也就是LVM的扩展性,还能提高磁盘的I/O性能。

在linux中, 主要是运用ext2, ext3, ext4, swap文件系统, 在尖端的文件系统中也支持ZFS和Butter FS, 但可运用先进的分布式系统, 集成文件系统, 并行文件系统, 这可以解决处理基于存) 储理念中的新问题, 在ZFS和和Butter FS中, 都支持数据的重复删除, 内部数据保护, 数据校验, 快照等高端存储技术。ext3在ext2的性质上主要是实现了日志结构的功能, 可以进行对系统文件的更改进行记录。

其中ext3文件系统主要包罗这几个块结构:

(1) superblock:记录了文件系统的inode/block的总量,使用量,剩余量,以及文件系统的格式和相关的文件系统信息等;

(2) inode:记录文件的属性和文件数据对应的block号,注意的是一个文件只能拥占一个inode;

(3) block:记录文件的具体内容,可占一个或多个block;

(4) Fliesystem Description (文件系统描述说明) ;

(5) block bitmap(区块对照表);

(6) inode bitmap (inode对照表);

在存储生态系统的发展过程中,linux存储永远是处于前端的,器源代码的开放和拥有大量开发人员,能最新的有效的和经济的改变存储的数据归档,所以在未来,linux存储应该会主导整个存储领域当中!

摘要:在互联网高速发展的今天, 存储设备成为了系统硬件当中的主要设备之一, 而存储设备不仅可以在系统当中使用内置的磁盘之外, 可当内置的存储磁盘不够大, 并且没有多余的磁盘插槽可用时, linux存储技术孕育而生, 除了linux下一切皆文件以外, linux还结合了世界级的NAS和SAN技术, 存储管理, 云支持, 数据保护以及固态存储。它的力量是他能够灵活的支持截然不同的使用模式, 它可以根据客户需求而提供不同的存储方式, 这大大的提高的存储的高效性, 安全性, 稳定性。

Linux实验平台 篇3

关键词:Linux,虚拟机,学习平台

Linux操作系统的学习不能好高骛远, 应循序渐进。可以从Linux的安装、常用命令的使用、系统管理、shell编程和网络服务器的配置等方面逐渐深入学习。而这些内容的学习都离不开大量的实践操作, 要求学习者对系统的安装使用都要掌握, 最终组建常用的网络服务器。如果单纯看书学习, 将会收效甚微, 必须要学习者多练习多操作, 在实践中总结经验。学习者若要搭建好实践环境, 首先要安装Linux操作系统环境, 但大部分学习者因多系统硬盘安装较为复杂, 加之安装Linux操作系统时要安装它自己的“引导装载程序” (例如GRUB) , 操作不当极有可能损坏原来的系统。基于上面的原因让很多学习者望而却步。可以在Windows环境下实现Linux系统的安装学习吗?这看似不可能, 系统软件是计算机硬件基础上的第一层扩充, 硬盘安装是不可能的, 但虚拟机这种软件就很好的解决了这个问题, 它可以在不影响原有系统的基础上, 在Windows环境下安装Linux操作系统。而另外的一个问题就是在众多Linux系统发行版本选择适合自己的对象, 建议选择影响力较大和技术支持完善的Red Hat Linux 9.0。

1 虚拟机的使用

1.1 虚拟机的简介

虚拟机指运行于物理计算机上的由软件模拟出来具有完整硬件系统功能的逻辑计算机, 它可以像真正的计算机那样进行工作。通过虚拟机软件, 可以在一台物理计算机上模拟出一台或多台虚拟的计算机。常用的虚拟机软件有两种VMware和ViaualPC, VMware与ViaualPC相比在多操作系统的支持和执行效率上, 都明显高出一筹, 它使你可以在一台机器上同时运行多个Windows、Linux系统。与硬盘安装多启动系统相比, VMware采用了完全不同的概念。多启动系统在一个时刻只能运行一个系统, 活跃系统的切换需要重新启动机器才能完成。VMware是真正“同时”运行, 多个操作系统在主系统的平台上, 就像标准Windows应用程序那样切换。并且每个操作系统你都可以进行虚拟的分区、配置而不影响真实硬盘的数据。

2.2 VMware的主要菜单和功能介绍

在WindowsXP下安装VMware和安装应用软件过程相似。通过网络下载一个VMwareWorkstation5.5安装和汉化包, 并获取一个产品序列号。VMware Workstation5.5安装后的主要菜单有:

电源按钮:包括关闭电源、挂起 (休眠) 、打开电源、重启四个按钮, 负责虚拟机的电源控制。

快照按钮:就是把当前运行虚拟机的状态保存在一个文件中, 当系统出现问题时可进行恢复工作到所保存文件时的正确配置。

收藏夹:显示由VMware所创建的虚拟机系统列表。

虚拟机设备区:显示当前激活虚拟机的所有硬件设备情况。

编辑菜单:编辑菜单中包括了虚拟机的网络设置和VMware软件本身参数的设置。

抓取屏幕:这一功能可以把正在运行的虚拟机全屏抓图。

捕获电影:可以把虚拟机的运行过程作为一个AVI的电影

2 在VMware环境下安装Red Hat Linux9.0

安装好Vmware Workstation5.5并启动, 我们可以看到新建虚拟机选项, 按照向导当我们要选择客人操作系统版本时, 选择Red Hat Linux如图1, 一路向下就完成了一台完整的计算机硬件平台的虚拟创建工作。RedHatLinux9.0的安装文件可以从红帽子的官方网站上直接下载得到, 一般是三个ISO镜像文件, 因其销售时会制作成三张CD安装光盘。

在Vmware Workstation5.5中安装系统时提供了使用物理光驱和使用光盘镜像两种读取安装文件的方式, 我们可以直接使用从网上下载的ISO安装文件, 其方法如图2所示, 通过浏览将第一个安装ISO文件插入到使用ISO映像对话框, 确定后给虚拟机加电我们就可以看到RedHatLinux9.0安装欢迎画面, 和Windows操作系统不同, Linux系统提供了两种安装方式, 分别是图形方式 (Graphical Mode) 和文本方式 (text Mode) 。图形安装方式和Windows相似, 每一步都有详细的安装向导。文本方式相对速度更快, 为了使初学者能够全面掌握Linux的安装知识, 可以在文本方式下完成安装Linux系统的工作。

当看到RedHatLinux9.0安装欢迎画面时, 如图3所示。在“boot:”提示符后输人text, 按Enter就进入文本安装界面。按照屏幕上的提示, 完成相关的设置就可以完成系统安装。

3 安装Red Hat Linux9.0过程中注意事项

3.1 磁盘分区

磁盘分区是安装操作系统过程中最重要的操作, 决定着系统安装能否顺利完成。同时, 在Linux环境和Windows环境下对于硬盘及其逻辑分区的表示方法不同。磁盘分区方法也有所不同, Linux系统的安装时至少要有两个分区, 一个叫系统的主分区, 采用ext3文件系统, 另一个叫交换分区, 起到虚拟内存的作用, 采用swap文件系统, 一般设置为物理内存的2倍。在系统安装时, 当出现“选择磁盘分区方式”对话框时选择“DiskDruid’ (文本方式下) , 图4、图5所示, 就可以进行磁盘空间的划分。在设置了分区的挂载点、文件系统类型和分区大小后, 就可以进行磁盘格式化了。

3.2 引导装载程序的设置

GRUB是一个功能强大的引导装载程序, 它能够通过连锁载入另一个引导装载程序来载入多种操作系统。在Linux操作系统中, 可以通过GRUB设置Linux默认启动界面 (Linux系统提供有图形窗口和命令行字符两种界面环境) 。Linux系统安装后默认的启动方式是图形窗口方式。图形界面使用习惯和Windows相似, 但Linux系统的精髓在于命令行字符界面。为了让初学者在真正的命令方式下学习常用命令的使用, 体会引导装载器GRUB在系统中的作用, 可以修改grub.conf文件, 将默认启动方式设置为命令方式。完成这一设置可以按照以下的方法进行:启动Linux虚拟计算机, 在图形界面下使用gedit文本编辑器打开/boot/grub/grub.conf文件, 修改其内容:主要是对其中的default项和title项进行修改。如图6所示修改完成后保存文件, 重新启动虚拟计算机就会发现启动后系统默认进入命令方式下。这样, 就可以排除窗口方式的干扰进入真正的命令方式下进行相关命令的操作学习。

4 结语

Linux操作系统的学习平台已经为你初步搭建起来了, 我们的方案是Windows XP+Vmware Workstation5.5+Red HatLinux9.0。这只是学习Linux操作系统的第一步, 无限精彩的Linux世界在等待着你的探索和学习, 不要放过学习中的任何一个问题, 每一次问题的解决都会为你学习积淀出更大的动力!

参考文献

[1]陈明.Linux基础与应用[M].清华大学出版社, 2005.

[2]王保平.GRUB实现统一多引导应用研究[J].微计算机应用, 2008 (11) .

Linux实验平台 篇4

1 现有实验环境概括

目前绝大多数高校建立Linux实验环境一般采用的都是如下两种方法:

(1) 在PC机的硬盘上直接安装Linux和windos两种系统, 在开机时让学生做出选择, 使用windows或者Linux。这样做的好处是, 学生可以真正掌握Linux的使用环境, 接触到到内核模块编写等底层实验。但缺点也有很多, 比如学生随意修改root密码, 或者因为一些不当操作对内核造成了损害无法开机必须重装系统等等。

(2) 在PC机上安装虚拟机, 然后在虚拟机上安装Linux操作系统。这样做的好处在于可以实现Linux和windos操作系统的任意切换, 并且可以让学生尝试做自己想要完成的一切操作。因为在虚拟机里含有一个快照功能, 这个功能其实类似于windows操作系统的一键还原, 无论在操作过程中出现什么样的情况, 即使将系统的关键文件全部删除, 也可以恢复到操作之前的状态。但是虚拟机有个很致命的问题在于会导致系统的不稳定, 出现一些奇怪的错误。

因此, 我们考虑使用一台专业的Linux服务器, 利用网络来实现Linux系统实践平台的设置。

2 实践平台构想

要实现我们的实践平台, 除了要让学生们可以通过网络访问服务器上的Linux系统资源外, 还应该解决两个问题:首先需要让每一个想要使用实践平台的学生都可以自己注册一个用户名并且设置自己的密码。其次, 教师可以掌握每个学生登录退出系统的时间以及在登录时间内所做的操作。

2.1 用户注册

通常, Linux系统中用户分为三大类, root用户、普通用户和系统用户。

Root用户也被称为是根用户, 具有系统中的最高权限, 通常进行系统管理。普通用户可以登录系统执行某些任务。普通用户属于是受限用户, 只能操作其权限范围内的文件和目录。学生们注册的用户就属于是这类用户的范畴。但是, 普通用户只能由root用户创建。如果说, 所有学生的用户名和密码都交给root来进行创建的话, 既增加了管理员的工作量, 创建出的用户名和密码又不利于学生记忆, 所以我们可以考虑让学生自己来注册用户。

让学生自己来注册用户, 需要做如下一些工作:

2.1.1 建立远程连接

首先在学生使用的PC机上安装putty客服端, 这是一个免费的、Windows 32 平台下的telnet、rlogin和ssh客户端, 全面支持ssh1 和ssh2。这样就可以在windows平台下使用putty连接远程linux主机。如果putty提示“Connection refused”, 那么可能是远程主机没有安装Open SSH。可以通过命令

#rpm-qa openssh

#rpm-qa openssh-server

查看是否安装Open SSH。如果没有, 需自行安装。一般系统安装盘中都有Open SSH的安装软件包。如果已经安装了Open SSH, 那么可能的原因就是SSH没有启动。输入命令:#/etc/init.d/ssh start

配置ssh-server, 其配置文件位于/etc/ssh/sshd_config, 默认端口为22, 为了安全, 我们通常自定义为其他端口, 然后再重启, 使用命令如下:

#sudo/etc/init.d/ssh resart

2.1.2 创建公共用户admin

因为我们不可能让所有学生的用户名和密码都交给根用户root来进行创建, 也不可以把root的用户名和密码直接告知给学生, 所以这个时候我们可以手动创建出一个公共用户admin, 让它可以暂时获得root权限中创建用户名和密码的权限。编辑配置文件使用命令visudo, 需要注意的是编辑sudo的配置文件/etc/sudoers是一般不建议直接使用命令#vi /etc/sudoers去编辑, 因为在sudoers配置文件中有语法, 直接用vi编辑, 系统不会检查语法对错, 这样可能导致无法使用sudo工具, 所以最好使用visudo命令去编辑配置文件。虽然visudo也是调用vi去编辑, 但是保存时系统会进行语法检查, 如果出现错误则会进行提示。添加如下语句:

admin ALL=/sbin/passwd;/sbin/useradd

这句话表示用户admin会暂时获得用户root添加用户和修改用户密码的权利。学生可以利用putty客服端以及公共用户admin来登录到Linux系统中自行创建自己的用户名和密码。

2.2 获取学生上机下机时间以及登录时间内做的操作

在linux系统的环境下, 用户只要登录系统后所做的所有操作我们都可以通过命令history来查看, 可是假如一台服务器有多人登陆, 而其中的某个人误操作或删除了重要的数据。而history命令只对登录用户执行有效, 即使root用户也无法得到其它用户histotry历史, 这个时候就无法查到究竟历史记录了。

这个时候, 可以在/etc/profile文件中写如下代码:

写好之后保存, 然后使用source /etc/profile使脚本生效。

这段脚本的主要目的就是在/tmp新建个teacher目录, 然后以所有登录过系统的用户和IP地址作为文件名, 每当用户登录/退出会创建相应的文件, 该文件保存这段用户登录时期内操作历史。

这样教师就可以根据记录的文件来查看学生的登录及退出时间以及在这段时间里所做的所有操作。

3 结束语

利用Linux服务器和Linux稳定的网络功能我们构建出这样的实验平台, 这样既解决了需要将微机重新安装Linux操作系统的繁琐问题, 又解决了在虚拟机环境下安装Linux系统出现的不稳定问题。创建这样的实践操作平台有利于高等院校发展Linux教学和实践活动, 培养出更多Linux人才。

摘要:当前虽然有很多高校将Linux课程作为本科学生的必修课, 但是在高校中专业的Linux实验室却并未普及。在不增加机房管理员工作量以及学生可以充分体验Linux系统性能的前提下, 本文提出了一种利用网络来实现Linux系统实践平台的构造方法, 并且描述了整体方案的设计以及实现细节, 论证了不同教学实践平台的优缺点。

关键词:Linux系统实践平台,网络Linux实验室,高等教育

参考文献

[1]鸟哥.鸟哥的Linux私房菜.人民邮电出版社, 2010 (3) .

[2]史苇杭.Linux配置与管理教程.科学出版社, 2013 (6) .

Linux平台下的VPN服务器 篇5

(四) 修改chap-secrets文件

编辑/etc/chap-secrets配置文件, 添加如下内容:

上面第二行代码的四项内容分别对应第一行中的四项。“wb@ldz.cn”是Client端的VPN用户名;“server”对应的是VPN服务器的名字, 该名字必须和/etc/ppp/options.pptpd文件中指明的一样, 或者设置成“*”号来表示自动识别服务器;“secret”对应的是登录密码;“IP addresses”对应的是可以拨入的客户端IP地址, 如果不需要做特别限制, 可以将其设置为“*”号。

(五) 设置IP伪装转发

只有设置了IP伪装转发, 通过VPN连接上来的远程计算机才能互相ping通, 实现像局域网那样的共享。用下面的命令进行设置:

可以将这条命令放到文件/etc/rc.d/rc.local里面, 以实现每次开机时自动运行该命令。

(六) 打开防火墙端口

将Linux服务器的1723端口和47端口打开, 并打开GRE协议。

二、测试

下面以Windows Server xp为例来进行测试。

(一) 新建连接。单击“开始→设置→网络连接→新建连接向导”打开“新建连接向导”的窗口, 打开“新建连接向导”的窗口, 然后依次选择或填写“连接到我的工作场所网络→虚拟专用网络连接→公司名 (可以随便填写) →不拨初始连接→IP地址 (填入VPN服务器的IP地址) ”, 最后单击“确定”, 就建立了一个新的连接。

(二) 修改连接属性。右击刚才创建的连接, 再依次单击“属性→网络 (选择TCP/IP协议) →属性→高级”, 然后把“在远程网络上使用默认网关”前面的勾去掉后单击“确定”。

Linux实验平台 篇6

1 Linux协议分析

Linux提供了对于当前的TCP/IP协议的完整支持,Linux包括了IP防火墙代码、IP防伪、IP服务质量控制及许多安全特性,这些特性使得Linux被广泛应用于网络服务器。开源特性使Linux在网络性能能够始终处在前列,良好的框架和统一的风格,也让他对新的通信协议的支持变得容易。协议结构上,Linux基本采用了TCP/IP的四层逻辑结构,但并没有拘泥于TCP/IP协议,如为了便于体现程序调用逻辑,内核将ICPM、IGMP模块与TCP、UDP放在同一个层次对待。Linux系统在网络方面的优秀表现,也是本文最终在Linux上实现的主要原因,为了后面能清晰地说明问题,下面简要介绍虚拟网卡实现中涉及到的Linux内核网络相关概念。

1.1 协议实现中的关键数据结构

在网络协议的实现中有几个关键的数据结构,它们贯穿了整个协议的实现,其中之一是对接收和发送的报文进行统一管理的缓冲区数据结构———sk_buff。一个个单独的sk_buff被组织成双向链表的形式。sk_buff的强大功能在于它提供了众多指针,可以快速地定位协议头位置;它也同时保留了许多报文信息(如使用的网络设备等),以便协议层根据需要灵活应用。其中:Union h是传输层协议头(tcp);Union nh是网络层协议头(ip);Union mac是链路层协议头。

从应用层到链路层,报文的生成始终离不开sk_buff,对报文的每次封装其实就是在对sk_buff指向的缓冲区的操作,以下简要介绍sk_buff的生命周期,当一个数据包被网卡接收到后,网卡驱动就会申请一个sk_buff结构,然后将数据部分拷贝到sk_buff结构里,并且将与链路层相关的信息设置好,交给网络层处理。网络层、传输层根据sk_buff的信息实现相应协议。一般地,当数据包被传输层的协议接收到后,Socket接口将sk_buff中的数据拷贝到应用层的数据缓存区,这时候sk_buff的生命就结束了,被释放掉。当应用层发送数据时,也是在网络协议族提供的接口函数里,申请一个sk_buff结构,将数据拷贝到这个结构里。当sk_buff结构达到网卡驱动程序时,里面包含足够二层路由信息,数据部分也是一个完整的数据包。

另一个关键数据结构是用来描述逻辑网络设备的net_device,该结构主要描述了以下信息:检索信息,设备的物理信息,接口类型,接口状态,各种对接口进行操作的函数指针,报文输出队列,二层地址信息,比结构层高一次的协议指针。专著[2]中第十四章详细来描述这个结构。通常情况下一个net_device和一个网卡对应,系统中涉及到网卡的操作都通过调用这个结构中的接口进行操作的函数指针进行。

1.2 报文的发送和接收过程

[3]报文在Linux操作系统内核中的接收和发送都是基于sk_buffer数据结构进行的。报文接收过程是:首先网络设备接收到报文,为报文建立sk_buffer数据结构,然后将之放入backlog队列,等待下一步处理。操作系统调度进行底层处理,将sk_buffer数据从backlog队列取出,根据sk_buffer数据结构中协议头(即mac,nh,h)中的协议,调用相应的网络协议层进行进一步处理。一份报文可以被多个网络协议处理。网络协议都有一个初始化入口,每个协议提供自己的处理程序。Linux操作系统维护了两个网络协议表,一个是单向链表,其成员类型为ptype_all,提供给用户,用户可以定义自己对报文进行处理的网络协议;另一个是hash表,其成员类型是ptype_base,包括Linux操作系统中标准的网络协议,如IP、TCP等。网络各协议屋处理后,将报文提交给Socket队列,等待应用程序的处理。

数据报文的发送过程与之相反,首先应用程序将数据放入Socket队列,然后网络协议层将数据从Socket队列取出,为之建立相应的sk_buffe数据结构,各网络协议层分别填写sk_buffer中各自的协议头,最后将sk_buffer放入发送队列,等待操作系统调度网络设备驱动程序,发送报文。

从函数调用的角度分析,在发送数据时,socket被实现为一个文件系统,这样可以通过vfs的write来调用,也可以直接使用send来调用,它们最终都是调用sock_sendmsg。sock_sendmsg通过它的内核版本———sock_sendmsg直接调用tcp_sendmsg来发送数据。在tcp_sendmsg中,同时完成数据复制和数据校验。Linux使用skb结构来管理数据缓冲。当复制完数据后,使用tcp_push来进行发送。tcp_push通过一tcp_push_pending_frames调用tcp_write_xmit将数据填人top的发送缓冲区。这里的填充仅是指针引用而已。下一步,tcp_transmit_skb将数据放人ip的发送队列。Ip_queue_xmit函数完成IP包头的设置以及数据效验,并调用ip_output进入下一步发送。如果不用分片,将使用ip_finish_output继续发送。在这里,将检查硬件头部描述符(这里就是以太网包头)并填充人数据缓冲区,而后调用dev_queue_xmit函数来进一步处理。Dev_queue_xmit函数将数据排队放人硬件缓冲区以等待随后的发送。而使用具体的网卡驱动动程序cp_start_xmit来完成数据的最终发送。最后的cp_start_xmit做的事情是检查数据,并将其复制进硬件缓冲。

当接收到一个数据包的时候,网卡会产生中断,这样网卡驱动的cp_interrupt会被调用。cp_interrupt做的事情很少,只进行必要的检查后就返回了,更多的事情通过cp_rx_poll来完成,这是因为linux驱动分为上半部和下半部,下半部的cp_rx_poll函数在软中断中被调用,这样做是为了提高驱动的处理效率。cp_rx_poll做的事情主要就是申请并将数据复制进一个skb缓冲中。netif_rx函数将数据从这个队列中转移至网络核心层队列中,netif_receive_skb从这里接收数据,并调用ip_rcv来处理。Ip_rcv和ip_rcv_finish一起检查数据包,得到包的路由,并调用相应的input函数来完成路由,在这里就是ip_rcv_finish一起检查数据包,得到包的路由,并调用相应的input函数来完成路由,在这里就是ip_local_deliver,ip_local_deliver完成IP包的重组,而后将使用ip_local_deliver_sinish来进入TCP的处理流程,tcp_v4_do_rcv先判断是否正常的用户数据,如果是则用tcp_rcv_cstabUshde处理,否则用tcp_rcv_state_process来更新本条TCP连接的状态机。在top ircv_cstablished中同样实现有首部预测。如果一切顺利,将唤醒等待在top_recvmsg中的用户进程。后者将数据从skb缓冲中复制进用户进程缓冲。

2 结构设计和实现

首先在TCP/IP协议的链路层创建存储在Hash表中多个net_device,然后将它们注册到系统,这些net_device的底层被绑定到实际存在的网卡上,这样报文的最终发送还是通过被绑定的物理网卡,只是在报文的设置和传输途径上用另外的方法来实现。虚拟网卡的通信原理如下,首先将网卡被设定为混杂模式,接收数据时,由于每个net_device有自己的MAC地址和IP,且系统上层要先通过net_device与下层交互,这样系统应用层以为系统中存在多块网卡,而机器间是通过IP来通信的,外面的机器也会认为是在与多个不同的网卡通信。内核加载了虚拟网卡模块后,报文的发送和接收过程将比以前复杂,处理好虚拟网卡报文的发送和接收是会影响到整个系统的性能,也是成败的关键。以下详细说明虚拟网卡报文的发送和接收过程。

2.1 加载虚拟网卡模块前后报文接收过程

首先将虚拟的网卡绑定到一块物理网卡上,我们称被绑定的网卡为“宿主”网卡,虚拟的网卡为从属的网卡。为了使虚拟的网卡正常工作,首先要将宿主网卡设置为混杂模式,使用”ifconfig eth0 promisc”可以达到效果。宿主网卡设置为混杂模式后,就可以接受目的MAC为任何地址的以太报文了。

如图1左半部分所示,宿主网卡接收到一个报文后,按照正常的流程调用netif_rx()函数将报文加入softnet_data[].input_pkt_queue队列。NET类型的软件中断被调度时,通过net_rx_action()函数将报文分发给各个协议模块处理。其中报文分发时有ptype_all、ptype_base两种方式,ptype_all为处理所有类型的报文接口(如AF_PACKET),ptype_base为处理特定类型的报文接口(如ARP、IP等),虚拟网卡通过dev_add_pack()注册一个ptype_all接受任何从宿主网卡发关过来的报文。

所以宿主网卡接受到的报文都会到达虚拟网卡,相等于在一个总线型的网络环境里,每台计算机都收到网络里传递的每个报文。接下来做的事情就是判断哪些报文是“属于虚拟网卡的”,哪些报文不是。

当收到一个报文时,需要断定哪些报文属于哪块虚拟网卡,所以在驱动程序里实现了一个HASH算法。

算法为:Index=Hash(报文的目的MAC)

如果查到的索引为有效值,则将报文skb的dev属性修改为这个虚拟网卡的地址。然后再次调用netif_rx()函数将报文加入softnet_data[]input_pkt_queue队列。

这样做还有一个问题,就是会引起死循环,虚拟网卡自己发送的中断的机制并不会死机,只会降低系统的速度而已。所以在接受函数里,还要判断skb的dev属性不能为虚拟网卡集的地址,如果是就丢弃。为了不影响其它真实的网卡,处理宿主网卡的报文外,其它报文也不与处理。

另外对于广播、多播报文,无需查找虚拟网卡,按个复制、修改skb的dev属性即可。

2.2 加载虚拟网卡模块前后报文发送过程

按照正常的发送流程上层将报文放入output队列,然后数据被拷贝到物理网卡缓存,最终由网卡发送到网络,添加虚拟网卡后,加载模块判断提出来是否来自虚拟网卡,是则将报文skb的dev修改成宿主dev的地址,然后再次dev_queue_xmit将会被宿主网卡发送出去。

3 结束语

本文实现的虚拟网卡能够在Linux操作系统下稳定运行,和物理网卡一样拥有独立的IP和MAC地址,并且能够对常用的网络命令做出正确响应,最多支持1024块虚拟网卡使其能够满足大多数网络测试下的要求,只是随着虚拟网卡数量的增加,为所有网卡分配IP和MAC地址会占用较长的时间。

参考文献

[1]李之棠,何桂丽,王美珍.基于虚拟网卡的SSL VPN体系结构的研究[J].计算机应用研究,2007,24(12):327-329.

[2]胡顺增,杨伟国.Linux设备驱动程序[M].北京:中国电力出版社,2000.

Linux实验平台 篇7

由于生活和工业上的特殊应用, 经常需要数据转发和透传功能, 路由器可以实现数据转发, 但实际生活中是在某一平台上做数据转发同时实现其它功能, 所以要自己开发具有数据转发功能的平台。在应用开发中可以使用scoket编程实现数据转发, 但这样做费时费力, 而且转发的稳定性不敢保证。NAT可以对数据包的源IP地址、目的IP地址、源端口、目的端口等进行改写[1], 从而可以实现数据转发。Iptables具有nat功能, iptables是linux系统自带的防火墙系统, 利用iptables实现数据转发, 不但简单而且稳定性很好。

1.NAT的工作原理

NAT的基本原理:改变IP包头, 使目的地址、源地址或两个地址在包头中被不同地址替换。

NAT的工作原理:下图所示, 是两个公司通过Internet网络互相交流, 是NAT的典型应用, 通过它来认识N A T工作原理。我们清楚, 在局域网内部的私有地址是不能访问外网的, 必须转换成公有地址才可以访问Internet, 我们以PC1:192.168.2.4访问Us er1:1 92.168.2.4为例说明访问过程。

1.1 PC1向RA (网关) 发送请求, 告诉自己的私有IP地址和MAC地址, 并且要求自己要到达User1主机。

1.2 RA收到请求后, 把PC 1的源I P地址进行转换, 变成内部全局地址, 即公有地址202.16.58.1, 并且为PC1指定一个随机产生的端口号, 发送到Inter网。

1.3 Inter网络收到了内部全局IP地址的请求, 进行路由选择, 被RB接收, RB通过查看RA发送过来的内部全局IP地址和端口号等信息, 直接发送给1 9 2.1 6 8.2.4网络的网关。

1.4网关路由器RB收到了信息, 根据对方发过来的目标主机信息, 把数据传输给User1主机。

1.5根据ICMP协议, user1主机需要回应, 对数据进行相应的处理, 把数据封装后发送给网关。

1.6网关把us er 1的私有IP地址转换成外部局部IP地址, 即公有地址202.16.5 8.2, 通过这个公有地址, 转发到路由器RA。

1.7 RA收到数据包, 查看自己缓存里的对应的主机和端口, 并对PC1进行转发。

图1所示是两个公司通过Internet网络互相交流, 实际过程也就是ip映射来进行数据转发。

2.iptables数据转发脚本[2,4]

上面演示了NAT工作原理, 现在介绍如何用iptables实现上面过程, 为了便于结果的验证, 笔者把中间的internet公网ip, 换成局域网ip, 原理上还是一样的。

首先我们需要一台l i n u x的双网卡PC/嵌入式平台。接下来按照图2所示, 搭建实验环境。设置A、B网段的子网掩码为2 5 5.2 5 5.2 5 5.0, P C1的I P地址为1 9 2.168.1.4, User1的IP地址为192.168.2.4, 这样两个网段的机器是不能相互访问的。现要使PC1和User1互相访问, 主要实现脚本如下。

2.1 Linux平台网口1接A网段, 网口2接B网段。设置两个网卡的ip, 命令如下:

ifconfig eth0 192.168.1.2 netmask2 5 5.2 5 5.2 5 5.0 u p//设置A网段任意可用ip, 命令根据具体平台改变

ifconfig eth1 192.168.2.2 netmask255.255.255.0 up//设置B网段任意可用ip

2.2实现linux数据包转发, 把文件/proc/sys/net/ipv4/ip_forward的值设定为1, 命令如下:echo"1">/proc/sys/net/ipv4/ip_forward。

2.3清空原有的i p t ab l e s的表 (主要是filter表和nat表) 和表中的链:

2.4为了不影响其他机子访问linux平台, 给网卡添加ip地址, 这样, 访问A网段192.168.1.3的时候, 就会转发到B网段的192.168.2.4上去, 而访问192.168.1.2则不会受影响。

2.5设置filter表中三个链的默认规则, 进入 (IN PU T) 发出 (OU TPUT) 都是允许A C C E P T, 转发 (F O R W A R D) 是丢弃DROP。

2.6设置允许对机器1 9 2.1 6 8.1.4和1 9 2.1 6 8.2.4的访问

2.7下面命令的意义是nat标的三条链默认接受任何数据传输

2.8真正实现地址转换的语句, 意义为:在PREROUTING链中 (也就是刚进入l i n u x服务器的数据包) , 将目的地址为1 9 2.1 6 8.1.3的数据包进行修改, 使得其目的地址变为1 9 2.1 6 8.2.4;在POSTROUTING链中 (要送出linux服务器的数据包) , 将源地址为192.168.2.4的数据包的源地址改为192.168.1.3[3];

自此已经完成脚本的编写, 如果上图中间的平台为PC机, 那么直接执行上述脚本, PC1和User1就可以互相访问。比如:PC1要ping User1, 在PC1终端执行ping192.168.1.3实际上ping的就是User1, 类似的User1访问PC1也是通过访问192.1 6 8.2.3来转发实现。如果上图中间平台为嵌入式平台, 那么还要进行iptables移植操作。Iptables移植过程包括移植交叉编译支持iptables内核和移植交叉编译的iptables程序两部分, 在此不做详细叙述。

3.实验结果

笔者在装有linux系统PC平台和嵌入式平台都做了测试。

PC平台:选用装有lin ux系统的笔记本, 笔记本有线网连接A网段、无线网连接B网段, 相应的上述脚本设置IP命令的网卡eth1换成wlan0。

嵌入式平台:选用SBC6020 (SBC6020具有双网卡) , SBC6020原始内核和文件系统不支持iptables, 所以要移植交叉编译过的支持iptables的内核、和移植交叉编译的iptables和自己编写iptables转发脚本到嵌入式平台。

依照图2连接好各硬件平台, 运行iptables转发脚本, 使用PC平台和嵌入式平台效果一样, 测试结果如下:

A网段pc1 (IP:192.168.1.4) 通过终端telnet192.168.1.3结果登录到B网段User1 (IP:192.168.2.4) 的机子上, 在pc1上ping192.168.1.3, 在User1上用Wireshark软件可以捕获到由开发板I P:192.168.2.3转发过来的消息, 这些足以说明通过以上方法实现了数据转发。为了验证数据转发的可靠性, 我通过在pc1上安装视频监控客户端, 在客户端上添加IP为192.168.1.3的设备, 把User1设为IPCamera (IP:192.168.2.4) , 所有设置好以后, pc1机子上的客户端可以预览和控制IP Camera (IP:192.168.2.4) , 通过长时间测试, 视频转发不丢帧, 非常稳定。

参考文献

[1]阮元生, 陶虹才, 林霞.网络地址转换技术及其在校园网中的应用.现代计算机[J], 2004 (2) :47~50

[2] (美) Michael Rash著;陈健译.Linux防火墙[M].北京:人民邮电出版社, 2009

[3]张金良, 用iptables实现NAT.唐山师范学院学报[J], 2007.29 (2) :74~76

上一篇:学校稳定下一篇:太阳辐射计算与模拟