00.嵌⼊式Linux开发环境搭建
3、虚拟机上⽹配置
虚拟机如果要从⽹上获取资源,就要能够访问外⽹。虚拟机有三种上⽹⽅式:桥接上⽹,NAT上⽹,单主机模式【没⽤过】。本节从原理和操作2个⽅⾯讲了NAT⽅式和桥接⽅式这2种不同的虚拟机上⽹模式。
3.1、原理
3.1.1 NAT ⽅式上⽹
在NAT模式下,虚拟系统需要借助NAT(⽹络地址转换)功能,通过宿主机器所在的⽹络来访问公⽹。也就是说,使⽤NAT模式虚拟系统可把物理主机作为路由器访问互联⽹。(虚拟机在主机的下⼀级)
NAT⽹络环境下需要做到:
(1)主机需要开启vmdhcp和vmnat服务。(服务的开启,在我的电脑当中右键“管理”可以设置)
linux没有vim命令(2)NAT模式下的虚拟机的TCP/IP配置信息将由VMnet8(NAT)虚拟⽹络的DHCP服务器⾃动分配,需要开启DHCP功能。
3.1.2 桥接⽅式上⽹
在桥接模式下,VMWare虚拟出来的操作系统就像是局域⽹中的⼀台独⽴的主机(主机和虚拟机处于对等地位,直接与外⽹通信),它可以访问该类⽹段内任何⼀台机器。
桥接⽹络环境下需要做到:
(1)⼿动为虚拟机系统配置IP地址、⼦⽹掩码。
(2)在桥接的模式下虚拟机必须与物理机处于同⼀⽹段,(举个例⼦,物理机IP:192.168.1.2,虚拟机IP:192.168.1.3)这样虚拟系统才能和真实主机进⾏通信。
图像来源:
3.2、操作步骤
3.2.1 NAT ⽅式上⽹
[ ] (1),确定本地windows电脑能够上⽹(我的电脑是⽆线上⽹)
[ ] (2),虚拟机选择“设置--->⽹络适配器[NAT模式]--->确定”
[ ] (3),虚拟机ubuntu设置为dhcp⽅式。
步骤1:打开⼀个终端,执⾏命令:sudo vi /etc/network/interfaces。
步骤2:转为编辑模式,编译内容保存推出:
interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback
#auto ens33
#iface ens33 inet static          //静态分配ip
iface ens33 inet dhcp            //动态分配ip
address 192.168.1.141
netmask 255.255.255.0
gateway 192.168.1.1
[ ] (4),重启⽹卡得到合法的IP地址。
步骤0:打开终端,执⾏以下命令
步骤1:sudo ifdown ens33 【功能:关闭⽹卡】
步骤2:sudo ifup ens33 【功能:开启⽹卡】
步骤3:ifconfig 【功能:查看是否成功分配ip地址,dhcp分配ip地址是随机分配的】
我的现象:ens33 Link encap:Ethernet HWaddr 00:0c:29:24:c8:03
inet addr:192.168.133.128 Bcast:192.168.133.255 Mask:255.255.255.0
[ ] (5),终端输⼊ping www.baidu 测试=是否能够上⽹。
3.2.2 桥接⽅式上⽹
[ ] (1),确定本地windows电脑能够上⽹(我的电脑是⽆线上⽹)
[ ] (2),虚拟机选择“设置--->⽹络适配器[桥接模式]--->确定”
[ ] (3),虚拟机选择“编辑-->虚拟⽹络编译器-->更改设置-->桥接到⽆线⽹卡(因为我是⽆线上⽹)-->确定”
Inter(R) Ethernet Connection[有线⽹卡]
Inter(R) Wireless-N[⽆线⽹卡]
[ ] (4),打开虚拟机终端,输⼊sudo vi /etc/network/interfaces,选择dhcp动态分配IP,然后重启⽹卡。
具体操作参考3.2.1 NAT ⽅式上⽹
[ ] (5),执⾏命令ping www.baidu测试虚拟机是否能够上⽹。
验证:ifconfig得到Ubuntu的ip192.168.1.112,⽽我的电脑ip⽆线上⽹为192.168.1.109,他们在同⼀个⽹段。
3.3 使⽤总结
在嵌⼊式开发中,如果虚拟机要实现上⽹,建议使⽤NAT⽅式访问外⽹[最简单]。桥接⽅式⼀般⽤来和开发板通信。
注意:主机⼀定要能上⽹。
4.Ubuntu连接开发板的⽹络设置
关键点:桥接到有限⽹卡;使得开发板,window主机,ubuntu在同⼀局域⽹中。也就是设置PC机、虚拟机、以及开发板的IP在同⼀个⽹段【同⼀局域⽹】,即192.168.1.*,其他掩码、⽹关、DNS都设置⼀样。相关操作如下:
[ ] (1),虚拟机配置ip地址为192.168.1.141
步骤1:虚拟机选择“设置--->⽹络适配器[桥接模式]--->确定”
步骤2:虚拟机选择“编辑-->虚拟⽹络编译器-->更改设置-->桥接到有线⽹卡-->确定”
步骤3:终端执⾏sudo vi /etc/network/interfaces,选择静态ip地址分配
步骤4:重启⽹卡
步骤5:ifconfig
注意:在开发过程中,发现⼀个bug,如果静态IP地址分配失败,请重启ubuntu再进⾏设置
[ ] (2),WindowsPC机的IP配置为192.168.1.20
步骤1:打开⽹络共享中⼼
步骤2:选择“更改适配器设置-->以太⽹-->属性-->TCP/IPv4--->⼿动制定ip地址--->确定”
[ ] (3),开发板配置ip地址为192.168.1.10
步骤1:⽤⽹线,串⼝线将开发板与电脑连接起来
步骤2:securtCRT与开发板串⼝连接[具体步骤见SecurtCRT软件的使⽤]
步骤3:虚拟机开机,进⼊uboot模式,执⾏以下命令
set ipaddr 192.168.1.10
set serverip 192.168.1.141
set netmask 255.255.255.0
save
print 【分别对照上⾯3个环境变量ipaddr、serverip、netmask 看是否⼀致】
[ ] (4),测试Ubuntu与开发板能否相互ping通
步骤1:在开发板的uboot模式下执⾏命令:
ping 192.168.1.141
说明开发板能和ubuntu虚拟机ping通
-  - 步骤2:ubuntu终端执⾏
ping 192.168.1.10
说明ubuntu能和开发板ping通
5. ubuntu中搭建tftp服务器
5.1 为什么要安装tftp服务器
TFTP(Trivial File Transfer Protocol,简单⽂件传输协议),是⼀个基于 UDP 协议实现的⽤于在客户机和服务器之间进⾏简单⽂件传输的协议,适合于开销不⼤、不复杂的应⽤场合。TFTP协议专门为⼩⽂件传输⽽设计,只能从服务器上获取⽂件,或者向服务器写⼊⽂件,不能列出⽬录,也不能进⾏认证。
TFTP是⽤来下载远程⽂件的最简单⽹络协议,在嵌⼊式开发中,由于嵌⼊式开发板资源有限,不能进⾏⽂件编译,因此我们都是将写好都代码在宿主机(Linux虚拟机)上进⾏调试编译好后⽣成⼆进制⽂件,然后通过tftp或NFS来进⾏传输到开发板上运⾏。也就是ARM开发板当做客户端,使⽤虚拟机 Ubuntu来当做服务器。
5.2 如何安装tftp服务器
前提脚尖:使得虚拟机ubuntu能够连接外⽹
[ ] (1),安装 tftp 所需的软件
步骤1:安装 tftp-hpa,tftpd-hpa[前者是客户端,后者是服务程序]:
在终端下输⼊
sudo apt-get install tftp-hpa tftpd-hpa
步骤2:安装xinetd[xinetd是新⼀代的⽹络守护进程服务程序,⼜叫超级Internet服务器,常⽤来管理多种轻量级Internet服务] :
在终端下输⼊
sudo apt-get install xinetd
[ ] (2),配置相关服务。
终端执⾏命令sudo vi /f,查看内容是否与下⾯的⼀致,若不⼀致则修改:
# Simple configuration file for xinetd
##
Some defaults, and include /etc/xinetd.d/
defaults
{
#Please note that you need a log_type line to be able to use log_on_success
# and log_on_failure. The default is the following :
# log_type = SYSLOG daemon info
}
includedir /etc/xinetd.d
[ ] (3),配置 tftp 服务器
终端执⾏命令sudo vim /etc/default/tftpd-hpa,将内容修改成
# /etc/default/tftpd-hpa
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/tftpboot"
sudo chmod 777 /tftpboot
TFTP_ADDRESS="0.0.0.0:69"
TFTP_OPTIONS="-l -c -s"
[ ] (4),配置/etc/xinetd.d/tftp
然后进⼊ xinetd.d ⽂件夹(cd /etc/xinetd.d),查看是否有⼀个 tftp ⽂件,如果没有就新建⼀个,如果有的话就查看内容是否与下⾯的⼀致,不⼀致则修改(sudo vi tftp),内容如下:
service tftp
{
socket_type = dgram
wait = yes
disable = no
user = root
protocol = udp
server = /usr/sbin/in.tftpd
server_args = -s /tftpboot
#log_on_success += PID HOST DURATION
#log_on_failure += HOST
per_source = 11
cps =100 2
flags =IPv4
}
其中 server_args ⼀⾏是配置服务器的⽂件存放的位置,就是进⾏ tftp 传输的时候,都是从该⽂件夹中搜索⽂件的
[ ] (5),修改权限
终端执⾏以下命令:
- sudo chmod 777 /tftpboot
[ ] (6),重启
终端执⾏以下命令:
- sudo service tftpd-hpa restart
- sudo /etc/init.d/xinetd reload
- sudo /etc/init.d/xinetd restart
[ ] (7),本地测试tftp服务器成功搭建
6.ubuntu中搭建nfs服务器
6.1 为什么要搭建nfs服务器
NFS 就是 Network FileSystem 的缩写,最早之前是由sun 这家公司所发展出来的。它最⼤的功能就是可以透过⽹络,让不同的机器、不同的操作系统、可以彼此分享⽂件。NFS可以让你的PC通过⽹络将远端的NFS 服务器共享出来的⽂件mount到⾃⼰的系统中,在客户端看来使⽤NFS的远端⽂件就象是在使⽤本地⽂件⼀样。使⽤NFS可以使应⽤程序的开发变得⼗分⽅便,客户端不需要⼤容量的存储器,更不需要进⾏映像⽂件的烧录和下载,只要mount到服务器端的特定⽬录下,然后运⾏该⽬录下的程序即可观察到结果。嵌⼊式项⽬中常⽤nfs来挂载⽂件系统。
6.2 如何搭建nfs服务器
[ ] (1),安装nfs服务器
终端执⾏以下命令:
sudo apt-get install nfs-kernel-server
sudo apt-get install nfs-common
[ ] (2),将nfs服务器挂载到/home/aston/rootfs
步骤1:在/home/aston下创建rootfs:
终端执⾏以下命令:
mkdir rootfs
cd rootfs
pwd(显⽰/home/aston/rootfs)
- 步骤2:配置/etc/exports
终端执⾏以下命令:
sudo vi /etc/exports
在命令⾏终端添加:
/home/aston/rootfs *(rw,sync,no_root_squash,no_subtree_check)
[ ] (3),进⼊/home/aston⽬录修改rootfs的权限
终端执⾏以下命令:
cd ..
chmod 777 -R rootfs/
[ ] (4),更新导出nfs服务器到本地并重启nfs服务
终端执⾏以下命令:
sudo showmount -e
sudo exportfs -r(更新)
sudo showmount localhost -e(导出本地/home/aston/rootfs)
sudo /etc/init.d/nfs-kernel-server restart(重启nfs服务)
[ ] (5),测试nfs服务器是否成功挂载到了/home/aston/rootfs
终端执⾏以下命令:
sudo mount -t nfs -o nolock localhost:/home/aston/rootfs /opt  【功能:将nfs服务器挂载到opt⽬录下】    cd rootfs/
touch a.c
ls /opt(显⽰a.c,rootfs⽬录下的挂载点opt⽬录下同步了,证明本地测试成功)
具体nfs相关参考:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。