首页 > 解决方案 > 如何使用 NFS 挂载 rootfs 以在 qemu 上模拟 ARM 架构?

问题描述

我想在 qemu 上模拟 ARM 架构。我按照本教程中的说明进行操作。首先我编译了 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" 

最后我得到了这个结果。不知道在构建rootfs或者配置网络的时候会不会出现一些错误。我搜索了一些其他教程来挂载 NFS rootfs,但它对我不起作用。我想知道如何成功挂载 rootfs 以在 qemu 上模拟 ARM 架构。

标签: linuxnetworkingqemunfsbuildroot

解决方案


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

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


推荐阅读