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 -a的效果
    这是ifconfig的效果
    在这里插入图片描述

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

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

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

注意:如果本身就有一些内容,则可以直接在ethernets之中添加对该网卡的设置,设置完之后保存退出
8. 随后,我们在当前文件目录下执行netplan apply
9. 好了,随后我们执行nmcli d,查看是否已经托管了,如果没出意外的话应该已经成功托管了(最后那个是本地环回地址,不用管)
在这里插入图片描述
由图可知,我们通过第七步的文件完成了对ens160u2网卡的托管。此时我们执行ifconfig指令就会有如下的结果,显然我们现在是可以通过我们自己指定的ip地址进行交互的。
在这里插入图片描述

  • 6
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值