2017-2018-1 《信息安全系统设计基础》实验一报告
2017-2018-1 《信息安全系统设计基础》实验一报告
————————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而导致无法挂载等等。但是在小组成员慢慢摸索的过程中,问题逐一被解决,接下来的任务得以高效完成。
- 在接下来的实验中,希望小组成员继续默契配合,遇到问题共同商讨,在解决问题的过程中不断培养自学能力,继续努力提升自我。