300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > Linux虚拟机连接USB网络设备(以Atlas 200DK为例)无法上网 无法检测到网卡等故障排除

Linux虚拟机连接USB网络设备(以Atlas 200DK为例)无法上网 无法检测到网卡等故障排除

时间:2020-10-02 22:58:17

相关推荐

Linux虚拟机连接USB网络设备(以Atlas 200DK为例)无法上网 无法检测到网卡等故障排除

一直用的好好的,不知道今天抽什么风了,今天我在使用Ubuntu虚拟机连接华为的Atlas 200DK开发板的时候,遇到了贼恶心的问题:能检测到网卡但是不能分配IP地址。这个问题的恶心程度远远超出了我的想象,在搞了一整个下午+晚上之后,终于把这个问题跑通了,接下来记录一下这个艰难的过程。

问题描述:本人的需求是在Ubuntu虚拟机下,使用SSH连接到华为开发板,开发板是有一张网卡的,这里引用一下华为自己的说法

Atlas 200 DK开发者板与Ubuntu服务器通过USB端口直连场景下,由于Atlas 200 DK的USB网卡的默认IP地址为192.168.1.2,所以需要修改Ubuntu服务器的USB虚拟网卡的IP地址为192.168.1.x(x取值范围为01,3254),使Atlas 200 DK与Ubuntu服务器可以通信。

本来今天也是风和日丽的一天,但是不知道为啥(也许是因为很久没打开过了,板子在惩罚我摸鱼?),说啥也连不上,经过许久许久的排查,我发现如下问题

使用ifconfig命令,无法查看到开发板的网卡使用ifconfig -a命令,可以查看到开发板的网卡,并且发现此时开发板的网卡是关闭状态的即使可以看到开发板网卡,他也是没有ipv4地址的我们使用nmtui图形化界面启动目标网卡,发现报错(nmtui ubuntu’netplan-ens160u2’ is not available on the device ens160u2 at this time.),网上有人说使用dhclient ens160u2就可以临时分配IP地址,但是我试了直接卡死了嗷,不ctrl+c都不行的嗷。按照官网的教程,修改/etc/netplan/01-network-manager-all.yaml然后apply并没有作用,仿佛是系统无法接收到这个文件写明的指令(太皮了)

具体图早就没了,这里附一张示意图叭(盖掉的地方表示当时并没有任何信息)

这是ifconfig -a的效果

这是ifconfig的效果

针对这些问题,全网给出了无数解答,本人在几乎踩了所有的坑之后摸索出以下解决方案

注意:在执行下面的指令之前请先获取root权限然后在root环境中操作

首先,我们先手动把网卡启动起来,具体指令是ifconfig ens160u2 up(一定要用这个指令启动)然后查看ifconfig,发现网卡果然启动了,但是依然没有ip地址,具体情况就和上边图的ifconfig -a完全一致此时我们执行nmcli device status指令,发现所有的网卡都是“未托管”状态,好了,BUG找到了(如果还没有安装NetworkManager,建议先去安一个,不然真没法用,Ububtu、CentOS好像是自带的,如果没有就直接执行一下sudo apt install network-manager就行了嗷),既然所有的网卡都未托管,那自然我们的配置文件是不可能生效的,接下来的问题就是如何将他们托管起来了。重点来了,全网好像说好了似的,都说的去修改/etc/NetworkManager/NetworkManager.conf文件,将文件中的 managed = false 改为 true然后重启电脑就可以了,但是我的电脑本来就是true,所以显然问题不在这。(如果有人这里是FaLse,那恭喜你,改完重启电脑这个BUG就修复完了),如果你和楼主一样本来就是true,那接着往下看吧此时我们使用nmcli n指令去查看,如果是enabled,那没事了,您可能要作为探索者自己去摸索一下问题了,但如果您是disable,那恭喜你,楼主也是这样,我保证你可以解决问题。执行nmcli n on指令,这样就打开nmcli了,然后执行systemctl restart NetworkManager重启服务,随后再执行nmcli n,就会发现nmcli服务打开了,如图所示

然后,我们去编辑文件01-network-manager-all.yaml,具体编辑内容如下(这里是指定对ens160u2网卡的一些规则)

network:version: 2renderer: NetworkManagerethernets:ens160u2:dhcp4: noaddresses: [192.168.1.166/24]gateway4: 192.168.0.1nameservers:addresses: [255.255.0.0]

注意:如果本身就有一些内容,则可以直接在ethernets之中添加对该网卡的设置,设置完之后保存退出

8. 随后,我们在当前文件目录下执行netplan apply

9. 好了,随后我们执行nmcli d,查看是否已经托管了,如果没出意外的话应该已经成功托管了(最后那个是本地环回地址,不用管)

由图可知,我们通过第七步的文件完成了对ens160u2网卡的托管。此时我们执行ifconfig指令就会有如下的结果,显然我们现在是可以通过我们自己指定的ip地址进行交互的。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。