3、虚拟机上网配置

虚拟机如果要从网上获取资源,就要能够访问外网。虚拟机有三种上网方式:桥接上网,NAT上网,单主机模式【没用过】。本节从原理和操作2个方面讲了NAT方式和桥接方式这2种不同的虚拟机上网模式。

3.1、 原理

3.1.1 NAT 方式上网

在NAT模式下,虚拟系统需要借助NAT(网络地址转换)功能,通过宿主机器所在的网络来访问公网。也就是说,使用NAT模式虚拟系统可把物理主机作为路由器访问互联网。(虚拟机在主机的下一级)
NAT网络环境下需要做到:
(1)主机需要开启vmdhcp和vmnat服务。(服务的开启,在我的电脑当中右键“管理”可以设置)
(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)这样虚拟系统才能和真实主机进行通信。


图像来源:https://jingyan.baidu.com/article/546ae1852778811149f28c8c.html

3.2、 操作步骤

3.2.1 NAT 方式上网

  • [ ] (1),确定本地windows电脑能够上网(我的电脑是无线上网)
  • [ ] (2),虚拟机选择“设置--->网络适配器[NAT模式]--->确定”
  • [ ] (3),虚拟机ubuntu设置为dhcp方式。
    • 步骤1:打开一个终端,执行命令:sudo vi /etc/network/interfaces。
    • 步骤2:转为编辑模式,编译内容保存推出:
  1. interfaces(5) file used by ifup(8) and ifdown(8)
  2. auto lo
  3. iface lo inet loopback
  4. #auto ens33
  5. #iface ens33 inet static //静态分配ip
  6. iface ens33 inet dhcp //动态分配ip
  7. address 192.168.1.141
  8. netmask 255.255.255.0
  9. 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.com 测试=是否能够上网。

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.com测试虚拟机是否能够上网。

验证:ifconfig得到Ubuntu的ip192.168.1.112,而我的电脑ip无线上网为192.168.1.109,他们在同一个网段。

3.3 使用总结

在嵌入式开发中,如果虚拟机要实现上网,建议使用NAT方式访问外网[最简单]。桥接方式一般用来和开发板通信。
注意:主机一定要能上网。

4.Ubuntu连接开发板的网络设置

  1. 关键点:桥接到有限网卡;使得开发板,window主机,ubuntu在同一局域网中。也就是设置PC机、虚拟机、以及开发板的IP在同一个网段【同一局域网】,即192.168.1.*,其他掩码、网关、DNS都设置一样。
  2. 相关操作如下:
  • [ ] (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通

  1. - - 步骤2ubuntu终端执行
  2. 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 /etc/xinetd.conf,查看内容是否与下面的一致,若不一致则修改:

  1. # Simple configuration file for xinetd
  2. ##
  3. Some defaults, and include /etc/xinetd.d/
  4. defaults
  5. {
  6. #Please note that you need a log_type line to be able to use log_on_success
  7. # and log_on_failure. The default is the following :
  8. # log_type = SYSLOG daemon info
  9. }
  10. includedir /etc/xinetd.d
  • [ ] (3),配置 tftp 服务器

终端执行命令sudo vim /etc/default/tftpd-hpa,将内容修改成

  1. # /etc/default/tftpd-hpa
  2. TFTP_USERNAME="tftp"
  3. TFTP_DIRECTORY="/tftpboot"
  4. sudo chmod 777 /tftpboot
  5. TFTP_ADDRESS="0.0.0.0:69"
  6. TFTP_OPTIONS="-l -c -s"
  • [ ] (4),配置/etc/xinetd.d/tftp

然后进入 xinetd.d 文件夹(cd /etc/xinetd.d),查看是否有一个 tftp 文件,如果没有就新建一个,如果有的话就查看内容是否与下面的一致,不一致则修改(sudo vi tftp),内容如下:

  1. service tftp
  2. {
  3. socket_type = dgram
  4. wait = yes
  5. disable = no
  6. user = root
  7. protocol = udp
  8. server = /usr/sbin/in.tftpd
  9. server_args = -s /tftpboot
  10. #log_on_success += PID HOST DURATION
  11. #log_on_failure += HOST
  12. per_source = 11
  13. cps =100 2
  14. flags =IPv4
  15. }

其中 server_args 一行是配置服务器的文件存放的位置,就是进行 tftp 传输的时候,都是从该文件夹中搜索文件的

  • [ ] (5),修改权限

终端执行以下命令:

  1. - sudo chmod 777 /tftpboot
  • [ ] (6),重启

终端执行以下命令:

  1. - sudo service tftpd-hpa restart
  2. - sudo /etc/init.d/xinetd reload
  3. - 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服务器

终端执行以下命令:

  1. sudo apt-get install nfs-kernel-server
  2. sudo apt-get install nfs-common
  • [ ] (2),将nfs服务器挂载到/home/aston/rootfs

    • 步骤1:在/home/aston下创建rootfs:

终端执行以下命令:

  1. mkdir rootfs
  2. cd rootfs
  3. pwd(显示/home/aston/rootfs)
  4. - 步骤2:配置/etc/exports

终端执行以下命令:

  1. sudo vi /etc/exports

在命令行终端添加:

  1. /home/aston/rootfs *(rw,sync,no_root_squash,no_subtree_check)
  • [ ] (3),进入/home/aston目录修改rootfs的权限

终端执行以下命令:

  1. cd ..
  2. chmod 777 -R rootfs/
  • [ ] (4), 更新导出nfs服务器到本地并重启nfs服务

终端执行以下命令:

  1. sudo showmount -e
  2. sudo exportfs -r(更新)
  3. sudo showmount localhost -e(导出本地/home/aston/rootfs)
  4. sudo /etc/init.d/nfs-kernel-server restart(重启nfs服务)
  • [ ] (5),测试nfs服务器是否成功挂载到了/home/aston/rootfs

终端执行以下命令:

  1. sudo mount -t nfs -o nolock localhost:/home/aston/rootfs /opt 【功能:将nfs服务器挂载到opt目录下】
  2. cd rootfs/
  3. touch a.c
  4. ls /opt(显示a.crootfs目录下的挂载点opt目录下同步了,证明本地测试成功)

具体nfs相关参考:https://blog.csdn.net/tigerjibo/article/details/9748561

00.嵌入式Linux开发环境搭建的更多相关文章

  1. 嵌入式Linux开发环境搭建,问题ping、nfs的解决

    一. 嵌入式软件层次 1) Bootloader->引导加载程序 整个嵌入式系统的加载启动任务完全交给Bootloader完成,它的主要任务是将内核映象从硬盘读到RAM中,然后跳转到内核入口启动 ...

  2. 一步步学习Linux开发环境搭建与使用

    00.Linux开发环境搭建与使用1--Linux简史 01.Linux开发环境搭建与使用2--Linux系统(ubuntu)安装方案 02.Linux开发环境搭建与使用3--通过虚拟机安装系统(ub ...

  3. Linux开发环境搭建与使用系列教程

    00.Linux开发环境搭建与使用1——Linux简史 01.Linux开发环境搭建与使用2——Linux系统(ubuntu)安装方案 02.Linux开发环境搭建与使用3——通过虚拟机安装系统(ub ...

  4. 用Windows+VirtualBox搭建嵌入式Linux开发环境

    Windows+VirtualBox的嵌入式Linux开发环境的搭建 最近一直在学习Linux的设备驱动编写,一直是在物理机上安装的Ubuntu进行的,但是在Ubuntu12.04的系统中,已经不能用 ...

  5. Django Python MySQL Linux 开发环境搭建

    Django Python MySQL Linux 开发环境搭建 1.安装Python 进行Python开发,首先必须安装python,对于linux 或者Mac 用户,python已经预装. 在命令 ...

  6. 嵌入式linux开发环境构建

    2.1硬件环境构建 2.1.1主机与目标板结合的交叉开发模式 在主机上编辑.编译软件,然后再目标办上运行.验证程序. 对于S3C2440.S3C2410开发板,进行嵌入式Linux开发时一般可以分为以 ...

  7. 基于AM3352/AM3354/AM3358/AM3359的Linux 开发环境搭建(上)

    遇到不少人新手小白问,前辈如何搭建一个优良的Linux 开发环境?之前一直都是在用win开发,现在想要尝试用Linux做开发等等一系列的问题.开源一直是给电子行业工作者提供了一种向技术更深处进发的机遇 ...

  8. 嵌入式ARM开发环境搭建

    1. 安装,配置,启动FTP服务 安装FTP: sudo apt-get install vsftpd 修改vsftpd的配置文件/etc/vsftpd.conf,将下面两行的'#'去掉#local_ ...

  9. ESP32的Linux开发环境搭建

    1. 官网教程地址 https://docs.espressif.com/projects/esp-idf/zh_CN/v4.0.1/get-started/linux-setup.html 2.官网 ...

随机推荐

  1. 使用API更新供应商名称及曾用名

    原文地址 更新供应商名称 EBS R12 (12.1.3) 更新供应商名称或替代供应商名称不能直接使用 pos_vendor_pub_pkg.update_vendor(p_vendor_rec =& ...

  2. JavaScript学习总结(七)——JavaScript函数(function)

    一.函数基本概念 为完成某一功能的程序指令(语句)的集合,称为函数. 二.JavaScript函数的分类 1.自定义函数(我们自己编写的函数),如:function funName(){} 2.系统函 ...

  3. spring cloud 学习(一)初学SpringCloud

    初学SpringCloud 前言 在SpringBoot的坑还没填完的情况下,我又迫不及待地开新坑了.主要是寒假即将结束了,到时又得忙于各种各样的事情……留个坑给自己应该就会惦记着它,再慢慢地补上…… ...

  4. Jboss7 部署EJB3 简明教程

    什么是EJB? EJB 是 Java 企业Bean, 是JavaEE服务端 企业组件模型,它的设计目标与核心应用是部署分布式应用程序.话不多说,直接看如何在本机部署EJB3.   部署环境: 操作系统 ...

  5. hpu 1267 Cafeteria (01背包)

    1267: Cafeteria [DP] 时间限制: 1 Sec 内存限制: 128 MB提交: 76 解决: 31 统计 题目描述 Nanae把饥肠辘辘的josnch带去一家自助餐厅,面对面前眼花缭 ...

  6. 关于const的一些注意事项

    1.const对象必须初始化,一旦创建其值就无法更改 2.默认情况下,const对象仅在文件内有效,若想在多个文件中使用同一个const对象,就是不在每个文件独立的定义一个const对象,可以进行如下 ...

  7. 一些java的部署执行编译等命令

    编译: javac 参数 -d 指定编译后文件的位置 java 执行java文件 java生成jar文件 java执行jar文件 java生成war文件 war包是一种将web程序捆绑到单个文件上的一 ...

  8. CODE大全大量Flash网站收藏

    我的博客:CODE大全:www.codedq.net:业余草:www.xttblog.com:爱分享:www.ndislwf.com或ifxvn.com. http://www.wallop.com在 ...

  9. HDU 3364

    http://acm.hdu.edu.cn/showproblem.php?pid=3364 经典高斯消元解开关问题 m个开关控制n个灯,开始灯全灭,问到达目标状态有几种方法(每个开关至多一次操作,不 ...

  10. poll 从应用层到内核实现解析

    poll函数的原型如下所示: int poll(struct pollfd *fds, nfds_t nfds, int timeout); poll可以监视多个描述符的属性变化,其参数的意义如下: ...