韋東山: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”回車即可登錄::
在這裏插入圖片描述

注意:虛擬機默認沒有開啓小鍵盤,如果使用小鍵盤輸入,請先開啓小鍵盤。如下圖所示:
在這裏插入圖片描述

  1. 打開終端
    我們要輸入各種命令,需要先打開終端。

點擊Ubuntu桌面左上角圖標,輸入“term”可以得到圖中藍框中的“Terminal”程序,運行它,如下圖所示。
在這裏插入圖片描述

然後就可以在裏面執行各種命令了。

  1. 配置網絡

重點來了,以前我們在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

如下圖操作:
在這裏插入圖片描述

  1. 配置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無法上網,請參考後面《 配置網絡》進行設置。

  1. 默認不能使用root用戶登錄
    我在開發過程中從沒用過root用戶,要使用root權限時可以在命令前加上“sudo”,比如“sudo ps -a”。

如果你就是喜歡用root用戶,可以按下圖操作,先給root用戶設置密碼,以後就可以用root用戶登錄了:
在這裏插入圖片描述

  1. 在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”保存退出並自動重啓電腦,如下圖所示:

在這裏插入圖片描述

  1. 關閉防火牆

步驟如下圖所示:
在這裏插入圖片描述

在這裏插入圖片描述
在這裏插入圖片描述

在這裏插入圖片描述
在這裏插入圖片描述

  1. 常見問題
    如果Windows無法遠程登錄Ubuntu,使用Filezilla無法連接Ubuntu、開發板無法通過NFS掛載Ubuntu,那麼很可能是防火牆的問題,或是端口被佔用了。

端口被佔用時,很可能是VMware的NAT服務,可以如下關閉:
在這裏插入圖片描述

使用Ubuntu:遠程登錄、傳文件、NFS
如果照着本節操作不成功,請確認:

① 在VMware裏是否設置Ubuntu使用了NAT網絡;

② 是否使用“虛擬網絡編輯器”設置了端口映射。

③ 開發板能否PING通Windows,或是Windows能否PING通開發板,只要有一邊通就可以。

  1. 驗證網絡
    ①. 幾個概念
    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。

  1. 然後確認一下開發板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.123 // 假設設置開發板IP爲192.168.1.123

注意:這樣手工設置的開發板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 可加入微信羣與韋東山老師交流

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章