如何使用 NFS 挂载 rootfs 以在 qemu 上模拟 ARM 架构?

How to mount a rootfs using NFS to emulate ARM architecture on qemu?

我想在qemu上模拟ARM架构。我遵循了此 tutorial 中的说明。首先我编译了linux-5.5.17内核。我和本教程之间的唯一区别是 CROSS_COMPILE 变量。我的是 arm-linux-gnueabi-。在构建文件系统之前,一切都与本教程相同。 我使用 buildroot-2020.02.1 来构建 rootfs。我 运行 命令 make qemu_vexpress_defconfig。然后我执行make menuconfig设置root密码,选择ext4根文件系统并设置压缩方式为"xz"。我成功编译了这个rootfs。我按照上面的教程配置 NFS。但是当我 运行 命令

qemu-system-arm -M vexpress-a15 \
-net tap -net nic -m 512 -kernel /home/myuser/linux-5.5.17/arch/arm/boot/zImage \
-dtb /home/myuser/linux-5.5.17/arch/arm/boot/dts/vexpress-v2p-ca15-tc1.dtb \
-append "console=tty1 root=/dev/nfs rw nfsroot=192.168.0.1:/home/myuser/armsystem/outfs ip=192.168.0.2:192.168.0.1:192.168.0.1:255.255.255.0:qemu:eth0" 

我终于明白了 result。不知道是不是在构建rootfs或者配置网络的时候出现了一些错误。我搜索了其他一些挂载 NFS rootfs 的教程,但它对 me.I 不起作用,想知道如何成功挂载 rootfs 以在 qemu 上模拟 ARM 架构。

尝试将 ,vers=3,tcp 添加到您的 nfsroot 行,如下所示:nfsroot=192.168.0.1:/home/myuser/armsystem/outfs,vers=3,tcp.

教程中的以下步骤也不正确:cp -r -d [buildroot]/output/target/* ~/armsystem/outfsoutput/target 目录中有一个文件 THIS_IS_NOT_YOUR_ROOT_FILESYSTEM,其中解释了为什么以及正确的做法。