我正在通过 qemu 静态构建和 Linux VM 交付我的项目。我的项目使用端口 4848 进行服务器配置,端口 8080 用于 HTTP(工具)和临时端口(49152+)用于使用 p2p websockets 的衍生子项目。
请注意,qemu 二进制文件是来自 Linux 的qemu-system-...二进制文件和 Windows 上的 qemu.exe,都是静态编译的。
在 Linux 上,我用这个命令开始一切。正如预期的那样,它就像一个魅力:
./qemu -curses \
-kernel ../vmlinuz \
-initrd ../root.gz \
-L ./ \
-redir tcp:4848::4848 \
-redir tcp:8080::8080 \
-redir tcp:49152::49152 \
-redir tcp:49153::49153 \
-redir tcp:49154::49154 \
-redir tcp:49155::49155 \
-redir tcp:49156::49156 \
-redir tcp:49157::49157 \
-redir tcp:49158::49158 \
-redir tcp:49159::49159 \
-redir tcp:49160::49160 \
-redir tcp:49161::49161 \
-redir tcp:49162::49162 \
-append "quiet autologin loglevel=3"
在我的 Windows XP VM(在 VirtualBox 中)上,一旦您批准了防火墙弹出窗口,这里的命令就可以正常工作,但它似乎不适用于 Windows 8:
start qemu.exe -kernel ..\vmlinuz -initrd ..\root.gz -L ./ -redir tcp:4848::4848 -redir tcp:8080::8080 -redir tcp:49152::49152 -redir tcp:49153::49153 -redir tcp:49154::49154 -redir tcp:49155::49155 -redir tcp:49156::49156 -redir tcp:49157::49157 -redir tcp:49158::49158 -redir tcp:49159::49159 -redir tcp:49160::49160 -redir tcp:49161::49161 -redir tcp:49162::49162 -append "quiet autologin loglevel=3"
我发现Windows上的NE2000网卡驱动程序可能存在问题,我在这里阅读:http ://www.h7.dion.ne.jp/~qemu-win/HowToNetwork-en.html
当尝试在没有 -redir 内容和标志“-net nic,model=rtl8139 -net user”的情况下直接启动 qemu.exe 时,它会正确启动。
但是当我开始在 Windows8 上添加 -redir 标志时,它崩溃了,甚至在 cmd / 终端中没有显示一条消息。
问题
如何在 CMD 中使用 qemu.exe 正确地将 VM 来宾的端口重新分配到 Windows 8 主机?