使用 QEMU 从主机 运行 raspbian 获取 ping 'DUP' 响应

Getting ping 'DUP' response from host machine running raspbian buster lite image with QEMU

I 运行 raspbian 图像使用以下命令:

qemu-system-arm -kernel kernel-qemu-4.19.50-buster -cpu arm1176 -m 256 -M versatilepb -dtb versatile-pb.dtb -no-reboot -serial stdio -append "root=/dev/sda2 panic=1 rootfstype=ext4 rw" -drive "file=2020-02-13-raspbian-buster-lite.img,index=0,media=disk,format=raw" -net user,hostfwd=tcp::5022-:22 -net nic -net user,smb=/dev/shm/

引导映像成功完成。 使用来宾机器,我得到以下路由 table:

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.0.2.2        0.0.0.0         UG    202    0        0 eth0
10.0.2.0        0.0.0.0         255.255.255.0   U     202    0        0 eth0

现在,在 10.0.2.2 处 ping 网关时工作正常,但在 10.0.0.138 处 ping 主机或主机网关时,我得到:

pi@raspberrypi:~$ ping 10.0.0.138
PING 10.0.0.138 (10.0.0.138) 56(84) bytes of data.
64 bytes from 10.0.0.138: icmp_seq=1 ttl=255 time=1.19 ms
64 bytes from 10.0.0.138: icmp_seq=1 ttl=255 time=1.23 ms (DUP!)

我确认 10.0.0.138 没有被定义为广播地址,并且没有 IP 重复。知道如何从这里调试吗?谢谢

正如 Peter Maydell 所建议的那样,将两个选项合并为一个“-net user,smb=/dev/shm/,hostfwd=tcp::5022-:22”解决了这个问题。

这是因为 QEMU 为每次在命令行上使用 '-net user' 创建一个新的 'user' 网络后端,所以在原始命令行中有两个后端,每个都响应 ping数据包。