VMWARE使用NAT方式彻底解决开发板无法挂载ubuntu文件的问题

我们写过很多ping问题的解决方法文章,但是最近我们发现之前用的桥接模式太复杂:需要开发板,Windows,ubuntu三者都ping通,步骤太多,很繁琐。最近我们研究出VMware 设置成NAT模式,然后进行端口映射,只要开发板和windows能一边ping通(比如开发板能PINGWindows或windows能PING开发板),开发板就能挂载ubuntu的文件,是怎么做到的呢?下面将系统讲解...

Windows下有很多虚拟机软件,目前市面上流行的有VMware和VirtualBox。VMware分为收费专业版Workstation Pro和非商用免费版Workstation Player,推荐使用Workstation Player。

首先从VMware官网(http://www.vmware.com)下载Workstation Player安装包,或者使用我们提供的安装包。在“网盘BSP包01_Tools (工具)01_Tools.zip”中。VMWare安装软件是:VMware-workstation-full-15.1.0-13591040.exe。

安装方法见下图:

VMWare安装完成后,有两个软件,它们都可以使用,建议使用第2个:

① Vmware Workstation Pro:这是收费的,可以试用30天。

② Vmware Workstation 15 Player:这是免费的。

1. 使用虚拟机打开Ubuntu

解压“网盘BSP包01_Tools (工具)100ask-vmware_Ubuntu18.04.7z”,它是Ubuntu映像文件。

注意:

  • 100ask-vmware_Ubuntu18.04不支持win7 32位和Windows xp电脑系统,有疑问请联系技术支持。

① 以管理员身份打开Vmware Workstation 15 player:如下图所示:

② 解压Ubuntu映像文件,然后点击“打开虚拟机”打开前面解压后的ubuntu文件“Ubuntu 18.04_x64.vmx”

如下图所示:

③ 打开并点击“播放虚拟机”启动:

如下图所示:

④ 第一次启动Ubuntu时,选择默认的“我已复制该虚拟机”,启动后输入密码“123456”回车即可登录::

注意:虚拟机默认没有开启小键盘,如果使用小键盘输入,请先开启小键盘。如下图所示:

2. 打开终端

我们要输入各种命令,需要先打开终端。

点击Ubuntu桌面左上角图标,输入“term”可以得到图中蓝框中的“Terminal”程序,运行它,如下图所示。

然后就可以在里面执行各种命令了。

3. 配置网络

重点来了,以前我们在VMware中使用桥接,这需要保证Windows、Ubuntu、开发板三者互通,而很多人的电脑有多个网卡,这涉及的网络设置太复杂了。

现在我们使用NAT方式,这样会简单很多。

a. 设置Ubuntu使用NAT网络

先关闭VMware中的Ubuntu,在VMware界面设置Ubuntu使用NAT,如下图:

然后启动Ubuntu,打开终端,执行ifconfig命令,确定网卡IP,如下图所示,记住这个IP(192.168.75.128,也许你的跟它不一样),后面要用:

b. 设置NAT网络的端口映射

在NAT网络下,外面的设备无法看到Ubuntu,要想开发板能访问到Ubuntu,需要进行端口映射。

先关闭Ubuntu,再关闭VMware,才能设置。

我们需要映射这几个端口:22(ssh端口)、111(rpc端口)、2049(nfs端口)、9999(mountd端口)。这样,开发板访问Windows的这些端口时,才可以访问到Ubuntu。

先使用管理员身份运行“虚拟网络编辑器”,如下图所示:

注意:如果按上述方法找不到虚拟网络编辑器,请按如下方法打开:

如果还是找不到,请核实是否用的是和我们一样版本的虚拟机软件。

然后,如下图设置端口映射:

设置好后,启动VMware、启动Ubuntu,可以再打开终端,测试网络,如下图所示:

c. 修改Ubuntu的mountd端口

在NAT网络下,要想开发板能通过NFS挂载Ubuntu,需要修改mountd端口为9999

如果你还不会用vi命令,可以在Ubuntu桌面启动终端,执行以下命令,用GUI工具修改:

sudo gedit /etc/services

命令解释:

① 修改/etc/services:

添加2行:

mountd 9999/tcp

mountd 9999/udp

如下图操作:

② NFS重启:

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

③ 查看端口:

sudo rpcinfo -p

如下图操作:

4. 配置Ubuntu

确保Ubuntu能上网之后,使用下面命令一键配置/初始化开发环境((其实就是安装tftp,nfs,vim等软件(欲知更多请阅读脚本Configuring_ubuntu.sh),此脚本只支持Ubuntu-16.04 /Ubuntu-18.04):

book@100ask: ~ $ wget --no-check-certificate -O Configuring_ubuntu.sh https://weidongshan.coding.net/p/DevelopmentEnvConf/d/DevelopmentEnvConf/git/raw/master/Configuring_ubuntu.sh && sudo chmod +x Configuring_ubuntu.sh && sudo ./Configuring_ubuntu.sh

然后输入book密码和选择对应的系统,如下图所示:

可能会出错:

执行命令sudo apt-get update(输入book密码123456后回车)解决报错继续安装,再执行命令即可安装成功:

book@100ask: ~ $ wget --no-check-certificate -O Configuring_ubuntu.sh https://weidongshan.coding.net/p/DevelopmentEnvConf/d/DevelopmentEnvConf/git/raw/master/Configuring_ubuntu.sh && sudo chmod +x Configuring_ubuntu.sh && sudo ./Configuring_ubuntu.sh

配置成功后如下图:

注意:如果Ubuntu无法上网,请参考后面《 配置网络》进行设置。

5. 默认不能使用root用户登录

我在开发过程中从没用过root用户,要使用root权限时可以在命令前加上“sudo”,比如“sudo ps -a”。

如果你就是喜欢用root用户,可以按下图操作,先给root用户设置密码,以后就可以用root用户登录了:

6. 在BIOS上启动虚拟化(virtualization )

因为100ask-vmware_Ubuntu18.04用到了Virtualization Technology(VT)技术

大部分电脑的BIOS已经启动了虚拟化,可以打开设备管理器确认这点,如下图:

如果上图中虚拟化没有显示为“已启动”,需要重启电脑进入BIOS启动虚拟化。各个电脑的BIOS设置界面可能不一样,下面的步骤只是示例。

① 进入BIOS

开机或重启电脑过程中,在自检画面处反复按F2键(注:部分机型使用Fn+F2)进入BIOS Setup设置界面。

② 找到虚拟化菜单

用键盘的右方向键选中 “Configuration”菜单,然后使用下方向键选中“Intel Virtual Technology”选项并回车,如下图所示:

③ 使能虚拟化

在弹出的菜单中,选择“enable”并回车,如下图所示:

④ 保存

最后按键盘的F10热键(注:部分机型需要配合Fn+F10)调出保存对话框,选择“Yes”保存退出并自动重启电脑,如下图所示:

7. 关闭防火墙

步骤如下图所示:

8. 常见问题

如果Windows无法远程登录Ubuntu,使用Filezilla无法连接Ubuntu、开发板无法通过NFS挂载Ubuntu,那么很可能是防火墙的问题,或是端口被占用了。

端口被占用时,很可能是VMware的NAT服务,可以如下关闭:

使用Ubuntu:远程登录、传文件、NFS

如果照着本节操作不成功,请确认:

① 在VMware里是否设置Ubuntu使用了NAT网络;

② 是否使用“虚拟网络编辑器”设置了端口映射。

③ 开发板能否PING通Windows,或是Windows能否PING通开发板,只要有一边通就可以。

9. 验证网络

①. 几个概念

IP地址127.0.0.1表示的是“本机”,在Windows上使用127.0.0.1表示的是Windows机器;在开发板上使用127.0.0.1表示的是开发板;在Ubuntu里使用127.0.0.1表示的是Ubuntu。ping 127.0.0.1是永远成功的,它不涉及具体网卡。

Ubuntu的网络都是使用NAT(Network Address Translation,网络地址转换)。

NAT是什么意思?

举个例子,在NAT里,Windows就是一个爱护孩子的父亲,Ubuntu就是受保护的小孩。小孩要买东西,都由他父亲代劳,别人根本不知道这小孩的存在;亲戚想跟小孩谈话,也要经过父亲中转,亲戚不能直接跟小孩接触。

在NAT里,Ubuntu要主动发起网络访问,需要经过Windows代劳,外面的设备只看到Windows发出的网络数据;Windows收到数据的再转发给Ubuntu。

在NAT里,外面的设备比如开发板要访问Ubuntu,也只能通过Windows代劳:开发板是看不到Ubuntu的,开发板是ping不通Ubuntu的。

问题来了,开发板有时候是想访问Windows,有时候是想让Windows代劳去访问Ubuntu,Windows怎么区分?通过端口映射!

比如把Windows的22端口映射到Ubuntu的22端口,当开发板通过端口22(这是SSH端口)访问Windows的IP时,Windows就知道:哦,这22端口数据不是发给我的,是要我转发给Ubuntu的。于是Windows就把数据转发给Ubuntu。这样开发板就可以通过22端口访问Ubuntu了。

再举一个例子,在Windows里通过22端口访问127.0.0.1,就是通过22端口访问Windows自己。但是22端口被映射到Ubuntu去了,所以实际上访问Ubuntu的22端口。

②. 验证Ubuntu的网络

使用NAT时,不需要我们去设置Ubuntu的网络,它会自动获得IP。只要你的Windows电脑可以上网,Ubuntu就可以访问外网。

你可以在Ubuntu中执行“ping news.qq.com”,肯定可以看到有数据返回,同时按键盘“ctrl+c”退出ping命令,如下图。

③. 验证Windows和Ubuntu之间的网络

使用VMware时,在Windows命令行可以ping通Ubuntu的IP;Ubuntu也可以ping通Windows的IP。

只要有一个方向能ping通,那证明Windows和Ubuntu之间的网络是通的。

a. Ubuntu ping Windows:

以Ubuntu ping Windows为例,先确定Windows IP,再在Ubuntu中ping Windows(如果Windows开了防火墙,可以无法ping通Windows,这没关系):

怎么确定Windows的IP?在Powershell命令行或Windows命令行中执行ipconfig,如下图:

这时就可以在Ubuntu命令行中ping windows了,如下:

b. Windows ping Ubuntu:

如果Windows开了防火墙,Ubuntu也无法ping通Windows,但是没关系,只要Ubuntu能ping通外网就表示网络没问题。

先确定Ubuntu的IP,打开终端,执行ifconfig命令,确定网卡IP,如下图所示,记住这个IP(192.168.75.128,也许你的跟它不一样),后面要用:

启动Windows命令行,ping Ubuntu的IP即可,如下图:

④ . 开发板网络验证

以前VMware使用桥接网络时,Windows和Ubuntu是同等的地位,要保证Windows、Ubuntu、开发板三者互通,设置比较复杂。

现在VMware使用NAT,或是使用Docker,只需要保证Windows和开发板二者互通。复杂的情况在于有些Windows电脑有多个网卡,开发板要跟哪一个网卡互PING?列图如下:

a. 开发板网线直接连接Windows的有线网卡,或是通过路由器连接到Windows的有线网卡:

注意:非常不建议开发板网线直连Windows。

在上图的连接中,开发板的IP、Windows有线网卡的IP,要处于同一网段。如果开发板、Windows有线网卡无法自动获得IP,需要自己去设置。

b. 不使用电脑的有线网卡:在下图的连接中,开发板IP、Windows WIFI网卡的IP,要处于同一网段

验证开发板的网络时:

1).首先根据上面2个图确定开发板要跟Windows的哪一个网卡互通,这个Windows网卡称为网卡A。

2) 然后确认一下开发板IP、Windows网卡A IP是否自动获得。如果没有自动获得IP,就需要手工设置IP。

3) 最后再执行ping命令验证:只要有一方能PING通另一方就可以了,不需要两个方向都通。

如果Windows、开发板没有自动获得IP,需要手工设置IP。

怎么手工设置Windows、开发板的IP?

① Windows有多网卡时IP设置原则:

Windows的多个网卡,不能设置为同一网段。

Windows下可能有多个网卡:有线网卡、WIFI网卡。Windows使用WIFI网卡上网时,它的IP一般是自动获得的,我们不能去设置。

如果我们的开发板要跟Windows有线网卡互通,这时要注意:手工设置Windows有线网卡IP时,它不能跟WIFI网卡处于同一网段。比如WIFI网卡是http://192.168.1.xxx,有线网卡的IP就应该设置为192.168.2.yy。

② 手工设置Windows IP:

如果在Windows命令行下执行ipconfig,发现网卡A没有IP,如下图手工设置:

③ 手工设置开发板IP:

开发板的IP设置方法很简单,打开串口连接开发板,启动开发板进入Linux,执行如下命令即可:

ifconfig eth0 192.168.1.13 // 假设设置开发板IP为192.168.1.13

注意:这样手工设置的开发板IP在下次重启后无效,又需要再次设置。

设置好后,就可以在Windows命令行ping开发板的IP;或是在开发板串口里ping Windows网卡A的IP。只有有一个方向通,就表示没问题了。

④ 远程登录Ubuntu

安装、运行MobaXterm,如下建立Session:

按上图操作后,在MobaXterm左侧就可以看到这项,双击它就可以登录Ubuntu,然后就可以执行各种Linux命令了:

⑤ Windows和Ubuntu传文件

双击打开FileZilla后,按下图操作:

在Filezilla中,左边是Windows文件,右边是Ubuntu的文件,如下图:

⑥ 开发板挂载Ubuntu目录

首先要找出Windows的IP,假设是192.168.1.17(确定IP的方法见后面);然后还要确保开发板能ping通Windows,最后在开发板上就可以执行以下命令挂载NFS了:

mount -t nfs -o nolock,vers=3,port=2049,mountport=9999 192.168.1.17:/home/book/nfs_rootfs /mnt

注意:必须指定port为2049,mountport为9999。

注意:作为初学者,可能你连串口怎么接都还不会,所以这个命令可以先不测试。

怎么确定Windows的IP?在Powershell命令行Window命令行中执行ipconfig,如下图:

**加运营小助手微信:13163769879 可加入微信群与韦东山老师交流

p8b75-m修改bios文件_傻瓜式方法:VMWARE使用NAT方式彻底解决开发板无法挂载ubuntu文件的难题...相关推荐

  1. ubuntu如何在开发板上挂载文件

    一.在ubuntu系统中安装nfs服务 1.安装nfs软件包 sudo apt-get install nfs-kernel-server sudo apt-get install nfs-commo ...

  2. 君正x2000开发板usb口读取文件

    ## 标题君正x2000开发板USB口读取文件 (由于word文档无法上传,只复制了文字,操作过程中的图片就不做展示) 开发要求 1.外设的tf卡存储录像抓图文件需要通过USB口在电脑上进行查看.拷贝 ...

  3. 用挂载U盘的方式实现PC和开发板ARM-LINUX之间的文件传输

    启动内核后用U盘进行驱动文件和应用文件的传输 在JZ2440开发板启动内核后,想要传输驱动程序文件.除了常用的NFS方式外,还有一种方式:让开发板上的ARM-LINUX系统直接挂载U盘,通过U盘传输文 ...

  4. Acer 4750 安装黑苹果_傻瓜式一键黑苹果安装

    "   本公众号致力于为大家分享全网各种趣玩软件,并教你掌握各种黑科技软件技能!点击 ☝ 蓝字,关注我们,妙不可言!(每晚12:00 不见不散!) 精彩 PearBIOS 搞机有风险,不喜欢 ...

  5. moses 编译_傻瓜式MOSES安装

    由于对于linux知识的缺乏,以及自己英语真的比较差,一直不想看MOSES的手册,导致自己浪费了很多时间,为了让像我这样的孩子不再走冤枉路,所以来记录下安装过程. 在安装MOSES之前先得安装GIZA ...

  6. 响应式网格项目动画布局_响应式网格及其实际使用方式:常见的UI布局

    响应式网格项目动画布局 重点 (Top highlight) 第二部分 (Part II) Now that you have a basic understanding of how to use ...

  7. java解析dxf文件_浅析JVM方法解析、创建和链接

    一:前言 上周末写了一篇文章<你知道Java类是如何被加载的吗?>,分析了HotSpot是如何加载Java类的,干脆趁热打铁,本周末再来分析下Hotspot又是如何解析.创建和链接类方法的 ...

  8. foxitreadersdk 打开远程文件_一种最不为人知最简单最方便的用电脑操作手机上的文件...

    (声明:此功能,只适用于安桌系统的手机) 由于最近一年手机上的文件经常隔三差五地提示空间已满,我不得不经常痛心删除一些文件,或者将手机上的文件,移到电脑端.如果想通过QQ或者微信发送单个单个文件,总是 ...

  9. 如何恢复录音删除的录音文件_手机通话录音后!点击这个按钮,就能将录音文件一键转为文字...

    通话录音是很多朋友都会用的功能,比如接听重要电话,或者和领导电话会议都会用到这个功能. 但是将录音中的内容整理出来就比较麻烦了,不仅要一遍遍听,还要一边手写记录,其实点击这个按钮,就能将录音中的内容一 ...

  10. Linux学习笔记---网线直连电脑和开发板使用nfs下载文件

    在学习正点原子Linux开发板的时候,视频教程中电脑和开发板都接的是路由器,这样在使用nfs 命令时,虚拟机和开发板的网络是通的,nfs命令就可以直接使用.但是自己在使用的时候,没有路由器,只能用网线 ...

最新文章

  1. In order to use Instant Run with this device running API 26, you must install platform API 26 in you
  2. Windows又发现安全漏洞 能够控制网络用户
  3. usb serial converter驱动安装_让你到期的机顶盒再发挥余热,终极办法任意安装软件,三网可用...
  4. markdown转html
  5. phpstorm自动补全
  6. python网络通信编程实例_python网络编程之数据传输UDP实例分析
  7. Windows常见宏的使用
  8. SpringMVC-Controller怎么直接在页面上传递参数
  9. ASP.NET Core 3.0 项目开始“瘦身”
  10. 在微服务中如何管理数据
  11. LINQ之Order By
  12. javascript捕获事件event
  13. Android开发笔记(一百七十八)更安全的数据仓库DataStore
  14. gulp自动化添加版本号并修改为参数格式
  15. 【OpenCV】重映射及仿射变换
  16. 程序员笔记 CherryTree 0.99.28 发布
  17. Spring IOC容器启动整体流程
  18. 软考数据库系统工程师笔记
  19. SystemVue介绍
  20. python 点分十进制IP地址转16进制字符串

热门文章

  1. LeetCode_125_Python_验证回文串
  2. 18awg线材最大电流_USB4来了,最大的变化是这个
  3. Linux安装samba服务
  4. log nginx 显示时间_【日常小知识系列01】Nginx日志简述
  5. mysql order by if函数_mysql order by
  6. apache http自动跳转https_NGINX使用rewrite实现http 跳转 https
  7. java底层 文件操作,java底层是怎样对文件操作的
  8. Caused by: java.lang.NoClassDefFoundError: javax/xml/bind/DatatypeConverter
  9. Async和Await如何简化异步编程,几个实例让你彻底明白!
  10. Saltstack系列2:Saltstack远程执行命令