linux - 如何使用 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 架构。
解决方案
尝试添加,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
其中解释了为什么以及正确的做法。
推荐阅读
- javascript - 检查 grapqhl 查询返回的对象的形状
- mysql - 从今天到昨天排序
- r - ggplot2 - 如何根据分类和数值变量对堆积条进行排序
- string - 无法比较 mongodb 集合中的字符串
- php - 在 localhost 上使用 apache 的 Docker php:ERR_SSL_PROTOCOL_ERROR
- dynamics-crm - 使用 Web API 进行用户模拟
- java - Gradle API 抛出错误无法从“11”确定 java 版本
- python - 为什么我不能调整大小?
- kubernetes - kubernetes 在 queue_size 上自动缩放与正在运行的 pod 数量
- flutter - 无法加载“颤振”podspec