找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 975|回復(fù): 2
打印 上一主題 下一主題
收起左側(cè)

關(guān)于開發(fā)板,PC機(jī),以及l(fā)inux虛擬機(jī)通信的一些問題

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:729982 發(fā)表于 2024-3-21 17:37 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
最近遇到一個(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ù)寫筆記
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:883242 發(fā)表于 2024-3-21 20:05 | 只看該作者
很好的經(jīng)驗(yàn)。
回復(fù)

使用道具 舉報(bào)

板凳
ID:729982 發(fā)表于 2024-3-28 16:45 | 只看該作者
之前的經(jīng)驗(yàn)有一些問題,這段時(shí)間又弄了一下,發(fā)現(xiàn)以前的方法配出來的網(wǎng)絡(luò)跟六脈神劍一樣時(shí)靈時(shí)不靈,下面做一個(gè)更正:
首先大家可以看看https://blog.csdn.net/m0_52318340/article/details/125004109
這篇博客中講了VMnet0、1、8虛擬網(wǎng)卡分別代表什么,怎么用。
總結(jié)就是想通過虛擬機(jī)連接訪問板子,已經(jīng)板子也要訪問虛擬機(jī),只能用VMnet0橋接,VMnet8和1配出來板子都無法訪問虛擬機(jī),而虛擬機(jī)可以ping板子。

下面說方法
1、VM虛擬網(wǎng)卡設(shè)置里,開啟三個(gè)網(wǎng)卡,分別設(shè)置橋接,nat,還有僅主機(jī)模式,VM0橋接,VM1僅主機(jī),VM8 nat。然后重置
2、虛擬機(jī)設(shè)置里也要申請(qǐng)3個(gè)網(wǎng)絡(luò)配置,同樣對(duì)應(yīng)三個(gè)虛擬網(wǎng)卡。然后橋接那個(gè)記得勾選復(fù)制物理連接
3、打開linux虛擬機(jī),發(fā)現(xiàn)有三個(gè)網(wǎng)絡(luò)了,進(jìn)入網(wǎng)絡(luò)設(shè)置,把所有的ip都勾選自動(dòng),刪掉手動(dòng)ip,重啟網(wǎng)絡(luò)。通過ifconfig看這幾個(gè)網(wǎng)絡(luò)的ip,看網(wǎng)段分別對(duì)應(yīng)哪個(gè)虛擬網(wǎng)卡,其中有ip的那兩個(gè)會(huì)對(duì)應(yīng)1和8。另外一個(gè)VMnet0必須要手動(dòng)設(shè)置ip的,所以沒有獲得ip的就是VMnet0,然后斷開VMnet1的連接。
4、打開電腦主機(jī)的網(wǎng)絡(luò)配置,把VMnet8設(shè)置一個(gè)手動(dòng)的ip,和虛擬機(jī)里的VMnet8的那個(gè)連接必須是同一個(gè)網(wǎng)段的不同IP,這樣就實(shí)現(xiàn)了虛擬機(jī)通過主機(jī)訪問外網(wǎng),但是外網(wǎng)訪問不了虛擬機(jī)。
5、虛擬機(jī)里屬于VMnet0的那個(gè)網(wǎng)絡(luò)的IP設(shè)置成電腦以太網(wǎng)口的網(wǎng)段,根據(jù)我上面的帖子,板子IP為192.168.1.137,電腦以太網(wǎng)口的ip192.168.1.23,那么虛擬機(jī)這個(gè)對(duì)應(yīng)VMnet0的網(wǎng)絡(luò)設(shè)置成192.168.1.12.如此下來板子和虛擬才能相互通信。
6、如果只開VMnet0也可實(shí)現(xiàn)外網(wǎng)訪問虛擬機(jī),虛擬和板子相互訪問,那就是在第五條的基礎(chǔ)上,板子,電腦,路由器,交換機(jī)接到一起,這樣外網(wǎng)就可以通過這個(gè)以太網(wǎng)口訪問虛擬機(jī)了。
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表