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