美文网首页BB-black开发板[Linux arm-v8]
ubuntu18.04配置网桥支持qemu模拟开发板挂载NFS启

ubuntu18.04配置网桥支持qemu模拟开发板挂载NFS启

作者: applecai | 来源:发表于2021-01-10 12:11 被阅读0次

    一,前言

    之前拿出10年前的TQ2440折腾了2周的主要目的就是因为我怀疑OLED屏不支持的原因是电流太小。也就是硬件不支持。而TQ2440自带LCD屏幕的,虽然线很多都断了,但是我家有电烙铁,可以焊接,这个不是问题。但是TQ2440文件系统无法挂载,导致我只能另觅方案了,qemu之前也玩过的,但是我记得是无法联网的。这样的话我添加模块或者添加APP都不方便,网上搜索了下其实是可以通过为qemu添加网桥来支持网络的。就是qemu就等于vmware虚拟机。

    二,ubuntu18.04配置网桥

    配置网桥的目的是qemu虚拟机的时候可以使用网桥来挂载主机的nfs文件系统
    ubuntu设置网桥,我一开始我网上搜索很多资料尝试配置后,有2处不对,一个是开机变慢很多,另外一个是bridge_ports没有显示出来。后来无意中发现ubuntu从17开始就用yaml配置了。不是修改/etc/network/interfaces,因为它并不一定起作用的。
    1.查看网卡名
    sudo ls /proc/sys/net/ipv4/conf
    2.设置网桥
    我看到被人用ens33等,我的网卡名称为eno1
    我看别人是修改/etc/netplan/50-cloud-init.yaml。我在/etc/netplan下面只有一个01-network-manager-all.yaml
    所以我就修改此文件,内容如下,格式需要保持对齐

    network:
      version: 2
      renderer: networkd #NetworkManager
      ethernets:
        eno1:
          dhcp4: no
          dhcp6: no
      
      bridges:
        br0:
          interfaces: [eno1]
          dhcp4: no
          addresses: [192.168.0.110/24]
          gateway4: 192.168.0.254
          nameservers:
            addresses: [114.114.114.114,8.8.8.8]
    
    1. 启动命令
      netplan apply
      如果想看到日志
      netplan --debug apply
    2. 运行命令ifconfig可以看到网桥br0和eno1网卡。
    3. 编辑在etc文件夹下创建qemu-up,其实就是创建tap0虚拟网卡。
    #!/bin/sh
    
    echo sudo tunctl -u $(id -un) -t $1
    sudo tunctl -u $(id -un) -t $1
    
    echo sudo ifconfig $1 0.0.0.0 promisc up
    sudo ifconfig $1 0.0.0.0 promisc up
    
    echo sudo brctl addif br0 $1
    sudo brctl addif br0 $1
    
    echo brctl show
    brctl show
    
    sudo ifconfig br0 192.168.0.110
    

    三,qemu模拟开发板通过uboot挂载文件系统(失败)

    1. 通过uboot启动来挂载失败
      仿真Vexpress V9开发板,uboot的cmd等修改重新编译下。
      qemu-system-arm -M vexpress-a9 -m 512M -kernel u-boot -nographic -net nic -net tap,ifname=tap0
      运行qemu虚拟机,可是smc911x依然无法模拟,No ethernet found奇怪。
    root@applecaiHP:/home/applecai/myuboot/u-boot-2020.10-rc4_qemu# qemu-system-arm -M vexpress-a9 -m 512M -kernel u-boot -nographic  -net nic -net tap,ifname=tap0
    sudo tunctl -u root -t tap0
    TUNSETIFF: Device or resource busy
    sudo ifconfig tap0 0.0.0.0 promisc up
    sudo brctl addif br0 tap0
    brctl show
    bridge name bridge id       STP enabled interfaces
    br0     8000.a2da0d604a2a   no      eno1
                                tap0
    
    
    U-Boot 2020.10-rc4 (Jan 09 2021 - 21:40:04 +0800)
    
    DRAM:  512 MiB
    WARNING: Caches not enabled
    Flash: 128 MiB
    MMC:   MMC: 0
    *** Warning - bad CRC, using default environment
    
    In:    serial
    Out:   serial
    Err:   serial
    Net:   smc911x: Invalid chip endian 0x00004321
    No ethernet found.
    Hit any key to stop autoboot:  0 
    No ethernet found.
    No ethernet found.
    Wrong Image Format for bootm command
    ERROR: can't get kernel image!
    

    四,我换种方法,直接先进入文件系统后使用nfs(成功)

    我在之前能成功启动图形界面中添加-net nic -net tap,ifname=tap0,这是新的qemu网络命令,我从官网help找到的方法,qemu旧版本的方法你们网上搜索吧,很多。

    qemu-system-arm -M vexpress-a9 -m 512M -kernel /home/applecai/mykernel/qemu/linux-5.4.61/arch/arm/boot/zImage -dtb /home/applecai/mykernel/qemu/linux-5.4.61/arch/arm/boot/dts/vexpress-v2p-ca9.dtb -append "root=/dev/mmcblk0 console=tty0" -sd a9rootfs.ext3 -net nic -net tap,ifname=tap0
    运行后成功启动,当然前提是我已经配置了网桥,ifconfig能看到br0和eno1了,而tap0是在qemu启动脚本中添加后会运行/etc/qeme-ifup脚本。

    image.png
    从上截图可以看出,我配置了eth0的ip为192.168.0.112然后可以ping通主机网桥地址192.168.0.110。然后我进行nfs挂载。

    五,qemu访问nfs运行framebuffer的应用程序成功

    接下来就都是一样了。在nfs挂载的文件系统中我添加了/work文件夹,在里面编译了framebuffer的应用层程序,在qemu中运行成功。这意味着我可以方便的在kernel中添加调试信息,通过qemu模拟开发板启动,调试framebuffer咯。


    image.png

    相关文章

      网友评论

        本文标题:ubuntu18.04配置网桥支持qemu模拟开发板挂载NFS启

        本文链接:https://www.haomeiwen.com/subject/hhukaktx.html