2017-2018-1 《信息安全系统设计基础》实验一报告

2017-2018-1 《信息安全系统设计基础》实验一报告

本小组成员:2015530320155213

————————CONTENTS————————


任务一 交叉编译环境

实验步骤:

  • Step 1:如下图所示,开机时按F12,进入系统BIOS中,开启虚拟化功能。

  • Step 2:启动计算机进入Win7。用VMWare打开Ubuntu,用户名:linux,口令:1。

  • Step 3:建立实验目录“mkdir linux_20155213_20155303”。

  • Step 4:在实验目录中编写“helloworld”程序,另外补充几行打印所有组员的学号姓名。

  • Step 5:分别用gcc和交叉编译器arm-none-linux-gnuenbi-gcc编译hello.c。①用gcc编译的可执行文件命名linuxhello:gcc hello.c -o linuxhello; ②用arm-none-linux-gnuenbi-gcc编译的命名为armhello: /usr/local/toolchain/toolchain4.3.2/bin/arm-none-linux-gnuenbi-gcc hello.c -o armhello

需要注意的是,执行arm.sh脚本时,首先需要使用chmod +x arm.sh命令赋予权限

  • Step 6:分别运行linuxhello,armhello,结果如下图:

可以看出,在Linux中只能运行使用gcc编译的linuxhello,而无法运行使用gcc和交叉编译器arm-none-linux-gnuenbi-gcc编译的armhello。这是什么原因呢?

我们使用file <文件名>来检测并显示文件类型:

可以看出,linuxhello和armhello都为ELF文件,且目前均为“not stripped”,但不同的是,使用gcc编译的linuxhello适用于x86-64机器,而使用gcc和交叉编译器arm-none-linux-gnuenbi-gcc编译的armhello只能在arm实验箱上运行。

返回目录


任务二 目标机宿主机连通

实验步骤:

  • Step 1:连接好arm实验箱的电源线,并将串口线、并口线与实验室的台式机相连。

  • Step 2:运行hypertrm软件,新建一个终端。并在属性中,将波特率设置为115200,其他值均为默认。

  • Step 3:打开超级终端,打开arm机电源开关,等待arm机的信息在超级终端的窗口显示。

  • Step 4:用ifconfig在超级终端中查看实验箱IP(目标机),在Ubuntu中(宿主机)中用ifconfig在命令行查看IP。记录下arm机的ip为:192.168.0.232。

  • Step 5:使用ping命令测试目标机与宿主机是否能连通。测试结果如下:

返回目录


任务三 目标机运行程序

学习资源中第五周的“ARM实验箱实验指导书”的第二章,理解tftp和nfs的作用。

【基础知识】:NFS方式是开发板通过NFS挂载放在主机(PC)上的根文件系统。此时在主机的文件系统中进行的操作同步反映在开发板上;反之,在开发板上进行的操作同步反映在主机中的根文件系统上。实际工作中,我们经常使用NFS方式挂载系统,这种方式对于系统的调试非常方便。

  • Step 1:打开虚拟机命令行终端,配置/etc/exports(需要sudo获取权限)

sudo vim /etc/exports

NFS允许挂载的目录及权限在文件/etc/exports中进行了定义。例如,我们要将/home/linux_20155213_20155303目录共享出来,那么我们只需要在/etc/exports文件末添加如下一行:

/home/linux_20155213_20155303 *(rw,sync,no_root_squash,no_subtree_check)

重启服务:

sudo /etc/init.d/nfs-kernel-server restart

  • Step 2:在超级终端中用“mkdir /arm_20155213_20155303” 建立实验箱中程序运行目录“arm_20155213_20155303”

  • Step 3:在超级终端中运行“mount -t nfs -o nolock 192.168.0.230(宿主机IP):/home/linux/linux_20155213_20155303 /arm_20155213_20155303”。通过NFS把宿主机中的“linux_20155213_20155303” 映射到目标机中的“/arm_20155213_20155303”

  • Step 4:超级终端中运行"cd /arm_20155213_20155303"

  • Step 5:超级终端中运行"./armhello", 运行结果如下:

返回目录


任务四 目标机模块分解

  • Step 1:将上周编写的“系统调用版myod”拷到目标机与宿主机共享的文件夹中

  • Step 2:仿照“任务三”,编写编译脚本,生成可执行文件并在目标机上运行。运行结果如下:

返回目录


实验过程中遇到的问题及解决

『问题一』:arm开发板、主机与虚拟机三者互ping无法连通

『问题一解决』:按照以下步骤进行设置:

  • Step 1:确保本地连接属性里的VMware Bridge Protocol 前已勾选。

  • Step 2:打开cmd,输入net start vmnetbridge,以管理员身份开启服务。

  • Step 3:桥接到本地连接上,注意不要选Automaic,因为我们是将开发板与主机用网线直连。

  • Step 4:将主机、虚拟机、开发板的IP地址设为同一网段。

  • Step 5:再次尝试,即可ping通。

『问题二』:如何改变虚拟串口COM?

『问题二解决』:打开设备管理器,在端口(com和lpt)右键点击需要修改的串口,选属性。再切换到端口设置-高级,com端口号下拉列表里面选择需要的端口号,即可完成修改。

返回目录


实验感想与体会

  • 本次实验着重让我们进一步熟悉Linux开发环境的配置和使用,同时了解TFTP和NFS的作用,并使用NFS方式挂载文件系统,在Linux中编译程序,并将生成的可执行文件挂载到arm开发板上,从而完成程序在开发板上的运行。
  • 本次实验重点在任务三,任务一和任务二都是在为后面的编译和运行做铺垫。我们小组在做准备工作时也遇到了很多问题,比如arm开发板、主机与虚拟机三者互ping无法连通;由于未配置/etc/exports而导致无法挂载等等。但是在小组成员慢慢摸索的过程中,问题逐一被解决,接下来的任务得以高效完成。
  • 在接下来的实验中,希望小组成员继续默契配合,遇到问题共同商讨,在解决问题的过程中不断培养自学能力,继续努力提升自我。

返回目录


参考资料

返回目录

posted @ 2017-10-19 21:15  0x14b7狄  阅读(627)  评论(5编辑  收藏  举报