Ubuntu-20.04双网卡上网配置

使用qemu启动仿真一个虚拟开发板后,Ubuntu就不能上网了,这是因为我们的Ubuntu主机只有一块网卡,qemu启动后和虚拟开发板建立了连接,进行通信(挂载NFS根文件系统),所以Ubuntu也就无法连接互联网上网了。解决办法有两个:一是关掉qemu,重新配置一下网卡,让Ubuntu重新联网;二是在虚拟机上再添加一块网卡,一个网卡和开发板连接,一个网卡用来连接互联网。在虚拟机上添加一块网卡零成本,我们当然选择第二种,方法如下:

01 关闭虚拟机,重新打开,选择:编辑虚拟机设置

02 按照下面图示,添加一张网卡,为了方便,网络连接选择NAT即可

添加好网卡后,重新启动虚拟机,很多朋友使用 ifconfig 命令时可能发现,新添加的网卡无法识别出来,只能识别一个网卡ens33,我们还需要配置文件,参考第03步:

03 修改配置文件

/etc/netplan/01-network-manager-all.yaml

# Let NetworkManager manage all devices on this system
network:
  version: 2
  renderer: networkd
  ethernets:
      ens33:
          dhcp4: no
      ens34:
          dhcp4: yes
  bridges:
      br0:
          dhcp4: yes
          interfaces:
              - ens33

在这个配置文件中,我们配置了两个网卡:其中ens33用来和开发板建立桥接通信,ens34用来和我们的电脑连接上网。配置好后,运行以下命令,让配置文件生效:

# netplan apply
# ifconfig
ntu:/home/zhaixue/Desktop# ifconfig 
br0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.230.149  netmask 255.255.255.0  broadcast 192.168.230.255
        inet6 fe80::20c:29ff:fed0:7b22  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:d0:7b:22  txqueuelen 1000  (Ethernet)
        RX packets 1352  bytes 99827 (99.8 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 244  bytes 24557 (24.5 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        ether 00:0c:29:d0:7b:22  txqueuelen 1000  (Ethernet)
        RX packets 2562  bytes 1079828 (1.0 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 244  bytes 24929 (24.9 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ens34: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.230.144  netmask 255.255.255.0  broadcast 192.168.230.255
        inet6 fe80::20c:29ff:fed0:7b2c  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:d0:7b:2c  txqueuelen 1000  (Ethernet)
        RX packets 1974  bytes 1020895 (1.0 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 422  bytes 37252 (37.2 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 147  bytes 12325 (12.3 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 147  bytes 12325 (12.3 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

此时,和开发板通信的桥接网口br0,连接互联网的网口ens34都已经配置成功且分配了IP地址。

04 重新启动qemu,ping命令测试

重新启动/home/tftpboot/boot-nfs.sh脚本启动虚拟开发板,然后使用ping命令测试,Ubuntu和虚拟开发板正常通信(挂载NFS根文件系统),Ubuntu也可以正常上网了,配置完成。

不用买开发板,使用QEMU就可以学习的Linux内核开发实战视频教程:《Linux内核编程》,具有一线芯片原厂开发经验的驱动工程师录制,详情点击:王利涛老师个人淘宝店:Linux内核编程