二、QEMU NFS 环境搭建

​ 在上一章节中,我们已经成功完成了内核和 busybox 环境的配置。为了进一步提高开发效率,我们可以使用 NFS(Network File System)来挂载根目录。NFS 允许我们将本地文件系统通过网络共享给虚拟机使用,这样在开发过程中,我们对本地文件系统所做的修改可以实时反映到虚拟机中,无需频繁地重新构建和烧录根文件系统,从而显著提高开发效率。

1. Ubuntu网桥配置

1.1 编辑 Netplan 配置文件

在 Ubuntu 20.04 中,Netplan 是默认的网络配置工具。我们需要编辑 Netplan 配置文件,该文件通常位于 /etc/netplan/ 目录下,文件名可能类似于 00-installer-config.yaml。使用以下命令打开文件进行编辑:

sudo nano /etc/netplan/00-installer-config.yaml

示例配置如下,假设你的物理网卡名为 ens33,网桥名为 br0

network:
  version: 2
  renderer: networkd
  ethernets:
    ens33:
      dhcp4: no
      dhcp6: no
  bridges:
    br0:
      interfaces: [ens33]
      dhcp4: yes
      dhcp6: no

以上配置的含义为:

  • ens33:将物理网卡 ens33 的 DHCPv4 和 DHCPv6 功能关闭。
  • br0:创建一个名为 br0 的网桥,将 ens33 添加到网桥中,并开启网桥的 DHCPv4 获取 IP 地址功能。

1.2 应用 Netplan 配置

保存文件后,使用以下命令应用 Netplan 配置,使网桥配置生效:

sudo netplan apply

1.3 验证网桥配置

使用 brctl show 命令查看网桥是否创建成功:

brctl show

若输出包含类似如下内容,则表示网桥创建成功:

bridge name     bridge id               STP enabled     interfaces
br0             8000.001122334455       no              ens33

在这里插入图片描述

2. NFS 环境搭建

2.1 安装 NFS 服务器

sudo apt-get install nfs-kernel-server

2.2 创建 NFS 共享目录

sudo mkdir -p /nfsroot
sudo chmod 777 /nfsroot

2.3 复制根文件系统到 NFS 共享目录

将之前已经配置好的根文件系统在 ~/rootfs 目录下,将其复制到 NFS 共享目录:

cp -r ~/rootfs/* /nfsroot/

2.4 配置 NFS 共享

编辑 /etc/exports 文件,添加以下内容:

/nfsroot *(rw,sync,no_subtree_check,no_root_squash)

重新导出 NFS 共享并重启 NFS 服务:

sudo exportfs -a
sudo systemctl restart nfs-kernel-server 

验证NFS环境 sudo exportfs -v

在这里插入图片描述

3. QEMU 启动命令详解

以下是一个启动 QEMU 模拟 vexpress-a9 开发板并使用 NFS 根文件系统的示例命令:

sudo qemu-system-arm \
-M vexpress-a9 \
-m 512M \
-kernel linux-5.15.18/arch/arm/boot/zImage \
-dtb linux-5.15.18/arch/arm/boot/dts/vexpress-v2p-ca9.dtb \
-nographic \
-net bridge,br=br0 \
-net nic,model=lan9118 \
-append "root=/dev/nfs rw nfsroot=192.168.3.32:/home/jiuri/linux/nfs,tcp,nfsvers=3 ip=192.168.3.100::192.168.3.32:255.255.255.0::eth0:none console=ttyAMA0 earlyprintk"

命令参数详解:

  • -M vexpress-a9:指定模拟的开发板型号为 vexpress-a9。

  • -m 512M:分配 512MB 的内存给虚拟机。

  • -kernel linux-5.15.18/arch/arm/boot/zImage:指定 Linux 内核镜像文件的路径。

  • -dtb linux-5.15.18/arch/arm/boot/dts/vexpress-v2p-ca9.dtb:指定设备树二进制文件的路径。

  • -append "root=/dev/nfs rw nfsroot=192.168.3.32:/home/jiuri/linux/nfs,tcp,nfsvers=3 ip=192.168.3.100::192.168.3.32:255.255.255.0::eth0:none console=ttyAMA0 earlyprintk"
    

    :内核启动参数,具体解释如下:

    • root=/dev/nfs:指定根文件系统使用 NFS。
    • rw:以读写模式挂载根文件系统。
    • nfsroot=192.168.3.32:/home/jiuri/linux/nfs,tcp,nfsvers=3:指定 NFS 服务器的 IP 地址、共享目录,使用 TCP 协议,NFS 版本为 3。
    • ip=192.168.3.100::192.168.3.32:255.255.255.0::eth0:none:指定虚拟机的 IP 地址、网关、子网掩码等网络配置。
    • console=ttyAMA0 earlyprintk:指定控制台设备并启用早期打印功能。
  • -net bridge,br=br0:使用桥接网络,指定网桥名为 br0

  • -net nic,model=lan9118:配置网络网卡,型号为 lan9118

测试验证

在虚拟机中创建test文件夹,在ubuntu中进行了显示

二、QEMU NFS 环境搭建_第1张图片

你可能感兴趣的:(linux开发,嵌入式,qemu,linux,arm开发)