最近遇到一個比較難調試的問題,想用一下linux的GNUdebug,但是弄了很久發現,需要板子和電腦的linux虛擬機能通信才行,這直接給我掛掉了,我這電腦神經兮兮的,虛擬機自從安裝好了,就從來沒ping通過,個人對網絡這塊也是一知半解,以前沒遇到問題就一直沒處理,這次自己查了很久很久的資料,發現別人的方法都不行,然后自己瞎倒騰一通,搞定了,但是不知道為啥,但是記錄一下,免得以后換電腦了搞不定環境。
我們工作中會遇到需要在linux上跑代碼的情況,工程需要在電腦的linux虛擬機下交叉編譯,然后將編譯好的代碼放到板子里的linux系統里運行。不管是通過共享文件夾和winscp來拖動復制文件,還是說將文件通過SD卡轉移,都是非常麻煩的。有一個辦法可以讓代碼直接電腦編譯好后就在板載的linux里跑,那就是掛載。將虛擬機的編譯目錄掛載到板子的linux里,板子再通過ssh進入此目錄后,直接就可以運行電腦編譯好的程序了。掛載的命令很簡單,網上很多辦法,此文章是記錄我解決的另一個問題,即板子->PC機->虛擬機的通信問題。畢竟掛載的前提就是能通信上。
第一步,板子和電腦通信,這個沒啥好說的,板子和電腦的以太網口的ip是同一個網段就ok
第二步,電腦ping通虛擬機,虛擬機ping通電腦。這一步比較復雜。首先電腦需要在主機的防火墻中,入站規則開通ICMPv4-in,不會的可以百度,覺得麻煩可以直接關防火墻(笑~)。重點來了,下面是我弄通這一步的過程
1.打開虛擬機->編輯->虛擬網絡編輯器,進去直接右下角還原默認設置,因為以前調的時候亂改過這個設置,我直接重置了重新調
重置后你這里的虛擬機的網絡設置,以及電腦控制面板中關于VMnet1和VMnet8的設置全部都會重置。
重點來了,打開電腦的網絡適配器。把VMnet設置成和板子同樣的網段里不同的ip,比如我板子是192.168.1.137,電腦以太網口是192.168.1.23,那我VMnet1設置成192.168.1.17
網上別人說要設VMnet8,但我試了不行。
2.打開虛擬網絡編輯器,里面重置以后會隨機給net1和net8分配子網地址,將net1的子網地址復制給net8,再將net1的子網地址改成你板子的網段,我的是192.168.1.0,如果巧合你的net1網段和你板子的一致,這一步跳過。
3.打開虛擬機的設置頁面,看看網絡適配器,改成nat模式
4.啟動虛擬機,ifconfig看看網絡地址,如果之前的設置都沒問題的話,里面會有一個網絡會自動分配到和你板子一個網段
可以看到他們是對應的,如此下來,虛擬機即可以ping通百度,又可以ping通PC機了,但是還不一定能ping通板子
5.打開電腦的網絡適配器選項,找到你電腦的以太網口,屬性--共享,將其共享給VMnet1,搞定
總結,因為虛擬網絡編輯器里面那個VMnet1和VMnet8兩個的子網是不能一樣的,所以可以交替的嘗試一下,把其中一個的子網換成你板子的網段,其次就是虛擬機的網絡設置一定要是net模式,然后就是可以通過ipconfig看電腦的IP,ifconfig看虛擬機的IP,要保證電腦-虛擬機-板子不能有相同的IP,因為他們在同一個網段下。如果IP始終有問題,可以啟動虛擬機,進去網絡設置看看你是否曾經手動設置過虛擬機的IP
現在我已經把板子到虛擬機的通信終于調通了,后續關于掛載,和GNUdebug,都會繼續寫筆記
|