201355315宋辰宁\20135333苏正生信息安全系统设计基础——实验一实验报告
北京电子科技学院(BESTI)实验报告
课程:信息安全系统设计基础
班级:1353
指导教师:娄嘉鹏
实验日期:2015.11.10
实验名称: 基于S3C2410的嵌入式开发
实验目的与要求:
1.熟悉 linux 开发环境,学会基于 S3C2410 的 linux 开发环境的配置和使用。
2.使用linux的armv4l-unknown-linux-gcc编译,使用基于NFS方式的下载调试,了解嵌入式开发的基本过程。
3.(要求)正确使用连接线等实验仪器,并注意保护实验箱。实验结束之后将实验箱送回
学号 | 姓名 | 工作说明 | 成绩 |
---|---|---|---|
20135315 | 宋辰宁 | 建立\编译 | |
20135333 | 苏正生 | 安装\调试 |
实验内容、步骤与体会:
1.实验过程的理解,实验指导书中知识点的理解。
(1)为什么需要交叉编译?如何安装交叉编译环境?
有时是因为目的平台上不允许或不能够安装我们所需要的编译器,而我们又需要这个编译器的某些特征;有时是因为目的平台上的资源贫乏,无法运行我们所需要编译器;有时又是因为目的平台还没有建立,连操作系统都没有,根本谈不上运行什么编译器。
宿主机(host) :编辑和编译程序的平台,一般是基于X86的PC机,通常也被称为主机。
目标机(target):用户开发的系统,通常都是非X86平台。host编译得到的可执行代码在target上运行。
prefix: 交叉编译器的安装位置。
xxx-xxxx-xxxxx 平台描述。
如果你想自己生成交叉编译器,那你必须先准备下面这些东西:
(1)磁盘空间。至少要500M左右的空间,如果想一气呵成的话,那就要900M-1G的空间;
(2)各种源代码。你至少要准备binutils-2.11.2、gcc-2.95.3、linux-2.4.6、newlib-1.8.2或glibc-2.2.2的源代码。
如果你所使用的主机平台不是运行的linux,那你还必须注意以下这些问题:
1、GNU bash必须是默认shell,所以你也许得把/bin/sh改成bash。
2、你要确认已经安装了GNU bison,因为这些软件同样使用了bison扩展。
3、GNU gmake最好是系统默认的make,因为这些软件都使用了gmake扩展,如果不是,在需要make时,记得使用gmake。
4、如果你想生成交叉glibc,则GNU gsed必须是默认sed,因为glibc会用到gsed的扩展。
5、如果你想生成交叉glibc,那还必须准备glibc-linuxthreads-2.2.2的源代码。
6、确认正确的路径搜索顺序,最好让GNU软件首先被执行。
(2)实验箱、虚拟机Redhat、WinXP之间的IP需要满足什么关系?如何配置?为什么?
需要在同一网端,这样在没有路由器的情况下,才能够实现通信。
首先要获得实验箱的ip,然后根据实验箱的ip,配置虚拟机和xp的ip,保证它们三个在同一网段。
(3)实验中mount命令中每个选项什么意思?
挂接命令(mount)
命令格式:
mount [-t vfstype] [-o options] device dir
1.-t vfstype 指定文件系统的类型,通常不必指定。mount 会自动选择正确的类型。
常用类型有:
光盘或光盘镜像:iso9660
DOS fat16文件系统:msdos
Windows 9x fat32文件系统:vfat
Windows NT ntfs文件系统:ntfs
Mount Windows文件网络共享:smbfs
UNIX(LINUX) 文件网络共享:nfs
2.-o options 主要用来描述设备或档案的挂接方式。
常用的参数有:
loop:用来把一个文件当成硬盘分区挂接上系统
ro:采用只读方式挂接设备
rw:采用读写方式挂接设备
iocharset:指定访问文件系统所用字符集
3.device 要挂接(mount)的设备。
4.dir设备在系统上的挂接点(mount point)。
挂接光盘镜像文件
1、从光盘制作光盘镜像文件。将光盘放入光驱,执行下面的命令。
cp /dev/cdrom /home/sunky/mydisk.iso 或
dd if=/dev/cdrom of=/home/sunky/mydisk.iso
注:执行上面的任何一条命令都可将当前光驱里的光盘制作成光盘镜像文件/home/sunky/mydisk.iso
2、将文件和目录制作成光盘镜像文件,执行下面的命令。
mkisofs -r -J -V mydisk -o /home/sunky/mydisk.iso /home/sunky/ mydir
注:这条命令将/home/sunky/mydir目录下所有的目录和文件制作成光盘镜像文件/home/sunky/mydisk.iso,光盘卷标为:mydisk
3、光盘镜像文件的挂接(mount)
mkdir /mnt/vcdrom
注:建立一个目录用来作挂接点(mount point)
mount -o loop -t iso9660 /home/sunky/mydisk.iso /mnt/vcdrom
注:使用/mnt/vcdrom就可以访问盘镜像文件mydisk.iso里的所有文件了。
挂接移动硬盘
对linux系统而言,USB接口的移动硬盘是当作SCSI设备对待的。插入移动硬盘之前,应先用fdisk –l 或 more /proc/partitions查看系统的硬盘和硬盘分区情况。
[root at pldyrouter /]# fdisk -l
接好移动硬盘后,再用fdisk –l 或 more /proc/partitions查看系统的硬盘和硬盘分区情况.应该可以发现多了一个SCSI硬盘/dev/sdc和它的两个磁盘分区/dev /sdc1?、/dev/sdc2,其中/dev/sdc5是/dev/sdc2分区的逻辑分区。我们可以使用下面的命令挂接/dev/sdc1和 /dev/sdc5。
mkdir -p /mnt/usbhd1
mkdir -p /mnt/usbhd2
注:建立目录用来作挂接点(mount point)
mount -t ntfs /dev/sdc1 /mnt/usbhd1 mount -t vfat /dev/sdc5 /mnt/usbhd2
注:对ntfs格式的磁盘分区应使用-t ntfs 参数,对fat32格式的磁盘分区应使用-t vfat参数。若汉字文件名显示为乱码或不显示,可以使用下面的命令格式。
mount -t ntfs -o iocharset=cp936 /dev/sdc1 /mnt/usbhd1 mount -t vfat -o iocharset=cp936 /dev/sdc5 /mnt/usbhd2
linux系统下使用fdisk分区命令和mkfs文件系统创建命令可以将移动硬盘的分区制作成linux系统所特有的ext2、ext3格式。这样,在linux下使用就更方便了。使用下面的命令直接挂接即可。
mount /dev/sdc1 /mnt/usbhd1
挂接U盘
和USB接口的移动硬盘一样对linux系统而言U盘也是当作SCSI设备对待的。使用方法和移动硬盘完全一样。插入U盘之前,应先用fdisk –l 或 more /proc/partitions查看系统的硬盘和硬盘分区情况。
[root at pldyrouter root]# fdisk -l
插入U盘后,再用fdisk –l 或 more /proc/partitions查看系统的硬盘和硬盘分区情况。
[root at pldyrouter root]# fdisk -l
系统多了一个SCSI硬盘/dev/sdd和一个磁盘分区/dev/sdd1,/dev/sdd1就是我们要挂接的U盘。
mkdir -p /mnt/usb
注:建立一个目录用来作挂接点(mount point)
mount -t vfat /dev/sdd1 /mnt/usb
注:现在可以通过/mnt/usb来访问U盘了, 若汉字文件名显示为乱码或不显示,可以使用下面的命令。
mount -t vfat -o iocharset=cp936 /dev/sdd1 /mnt/usb
挂接Windows文件共享
Windows网络共享的核心是SMB/CIFS,在linux下要挂接(mount)windows的磁盘共享,就必须安装和使用samba 软件包。现在流行的linux发行版绝大多数已经包含了samba软件包,如果安装linux系统时未安装samba请首先安装samba。当然也可以到 www.samba.org网站下载......新的版本是3.0.10版。
当windows系统共享设置好以后,就可以在linux客户端挂接(mount)了,具体操作如下:
mkdir –p /mnt/samba
注:建立一个目录用来作挂接点(mount point)
mount -t smbfs -o username=administrator,password=pldy123 //10.140.133.23/c$ /mnt/samba
注:administrator 和 pldy123 是ip地址为10.140.133.23 windows计算机的一个用户名和密码,c$是这台计算机的一个磁盘共享 如此就可以在linux系统上通过/mnt/samba来访问windows系统磁盘上的文件了。以上操作在redhat as server 3、redflag server 4.1、suse server 9以及windows NT 4.0、windows 2000、windows xp、windows 2003环境下测试通过。
挂接UNIX系统NFS文件共享
类似于windows的网络共享,UNIX(Linux)系统也有自己的网络共享,那就是NFS(网络文件系统),下面我们就以SUN Solaris2.8和REDHAT as server 3 为例简单介绍一下在linux下如何mount nfs网络共享。
在linux客户端挂接(mount)NFS磁盘共享之前,必须先配置好NFS服务端。
1、Solaris系统NFS服务端配置方法如下:
(1)修改 /etc/dfs/dfstab, 增加共享目录
share -F nfs -o rw /export/home/sunky
(2)启动nfs服务
/etc/init.d/nfs.server start
(3)NFS服务启动以后,也可以使用下面的命令增加新的共享
share /export/home/sunky1
share /export/home/sunky2
注:/export/home/sunky和/export/home/sunky1是准备共享的目录
2、linux系统NFS服务端配置方法如下:
(1)修改 /etc/exports,增加共享目录
/export/home/sunky 10.140.133.23(rw)
/export/home/sunky1 *(rw)
/export/home/sunky2 linux-client(rw)
注:/export/home/目录下的sunky、sunky1、sunky2是准备共享的目录,10.140.133.23、*、 linux-client是被允许挂接此共享linux客户机的IP地址或主机名。如果要使用主机名linux-client必须在服务端主机 /etc/hosts文件里增加linux-client主机ip定义。
格式如下:
10.140.133.23 linux-client
(2)启动与停止NFS服务
/etc/rc.d/init.d/portmap start (在REDHAT中PORTMAP是默认启动的)
/etc/rc.d/init.d/nfs start 启动NFS服务
/etc/rc.d/init.d/nfs stop 停止NFS服务
注:若修改/etc/export文件增加新的共享,应先停止NFS服务,再启动NFS服务方能使新增加的共享起作用。使用命令exportfs -rv也可以达到同样的效果。
3、linux客户端挂接(mount)其他linux系统或UNIX系统的NFS共享
mkdir –p /mnt/nfs
注:建立一个目录用来作挂接点(mount point)
mount -t nfs -o rw 10.140.133.9:/export/home/sunky /mnt/nfs
注:这里我们假设10.140.133.9是NFS服务端的主机IP地址,当然这里也可以使用主机名,但必须在本机/etc/hosts文件里增加服务端ip定义。/export/home/sunky为服务端共享的目录。
(4)nfc是什么意思?
NFS是运行在应用层的协议。随着NFS多年的发展和改进,NFS既可以用于局域网也可以用于广域网,且与操作系统和硬件无关,可以在不同的计算机或系统上运行。
NFS的配置过程相对简单。这个过程只需要对/etc/rc.conf文件作一些简单修改。
1 在NFS服务器这端,确认/etc/rc.conf 文件里头以下开关都配上了:
rpcbindenable="YES"
nfsserverenable="YES"
mountdflags="-r"
只要NFS服务被置为enable,mountd 就能自动运行。
2 在客户端一侧,确认下面这个开关出现在 /etc/rc.conf里头:
nfsclientenable="YES"
/etc/exports文件指定了哪个文件系统 NFS应该输出(有时被称为“共享”)。 /etc/exports里面每行指定一个输出的文件系统和哪些机器可以访问该文件系统。在指定机器访问权限的同时,访问选项开关也可以被指定。
(5)同一个网段什么意思?
看网络号和子网掩码是否一样
2.实验过程中遇到的问题以及解决方案。
(1)超级终端问题及解决方案
问题:连接主机,打开超级终端后,没有反应,超级终端没有任何信息。
解决:一、排查线路问题,发现线路接错端口。
二、重新建立超级终端,重新配置编号以及频率。
(2)Vim问题及解决方案
(3)Linux命令问题及解决方案
问题:在虚拟机命令行中输入cd armv4l-tools/后出错。
解决:进入虚拟机redhat时输入的用户名是bc是错误的,应该输入root进入。
(4)交叉编译问题及解决方案
问题一:用arm编译器编译的时候无法运行
解决:找到问题来源,是在设置环境变量时出现错误,修改PATH变量时路径输入有误,导致后来使用编译命令时找不到这条命令,重新设置PATH变量后就可以进行编译了。
问题二:代码使用编译工具armv4l编译时无法通过
实验中,03_tty文件夹位置在桌面上,代码存储路径包含了中文就无法通过编译,之后将文件拷贝到了c盘,程序即可执行。
(5)IP问题及解决方案
问题:需要把实验箱、虚拟机Redhat、WinXP的IP无法设置为同一网段。
解决:首先查看实验箱的IP地址,设置另外两个的地址使其处于同一网段,注意这里设置完后需重启,再重新查看各个IP地址,确保处于同一网段后才能接着做,否则后面的步骤也会出现问题。
参考资料
1、http://tutu.spaces.eepw.com.cn/articles/article/item/70737
2、nfc资料:http://baike.baidu.com/link?url=1vvpZ6DYZmGRG45ftZ6FmZCh2qyNQZCAtiBrJtyccsZYHFGqxBBhmpffq9a-gSVoxLuLGmTCeyOeZLh-79m9UZ2-JRl4dkmML3tXhakIq
心得体会:
通过本次实验,学习了交叉编译以及相关协议的应用,对linux下的编程编译有了新的认识。同时,在和同学的合作中,通过交流协作,提高了效率,不是交换了苹果,而是交换了认识和理解。本次实验目前进行到实验二,后续实验将尽快完成。