我正在 Ubuntu 24.04 主机上运行 Debian Buster 安装,使用 qemu-system-mips。
机器开始使用
qemu-system-mips -M malta \
-m size=2G -hda hda.img \
-kernel vmlinux-4.19.0-21-4kc-malta \
-initrd initrd.img-4.19.0-21-4kc-malta \
-append "root=/dev/sda1 console=ttyS0 nokaslr" \
-nic "user,model=e1000,hostfwd=tcp::5555-:22" \
-nographic
到目前为止启动良好。请注意,我通过“-m size=2G”为来宾请求 2GB 初始(和总)内存。然而,对于客人来说,只有一小部分可用。来自/var/log/kern.log:
Oct 10 16:42:04 mipsvm kernel: [ 0.000000] Memory: 223980K/262144K available (7436K kernel code, 547K rwdata, 1616K rodata, 1844K
以及来自 /proc/meminfo:
MemTotal: 248648 kB
MemFree: 19680 kB
MemAvailable: 82624 kB
如何使整个 2GB 可供来宾操作系统使用?
MIPS Malta 板将其 RAM 放置在地址映射中的多个位置:
访客日志表明它只查看地址 0,并且不适用于地址 0x8000_0000 处的 RAM。你的问题不在于 QEMU 端,而在于 guest。
我认为“忽略 256MB 以上的任何内容”是内核默认设置。 QEMU 的马耳他模拟中添加了对 2GB RAM 的支持的提交消息表示,您可以通过在“append”字符串中添加类似的内容来明确告诉 Linux RAM 在哪里:
mem=256m@0x0 mem=256m@0x90000000 mem=1536m@0x20000000
我认为
mem=256m@0x0 mem=1792m@0x90000000
也可以。
https://people.debian.org/~aurel32/qemu/mips/README.txt 表示这仅适用于 64 位 MIPS 内核,因此您的 32 位 MIPS 内核可能会被 256MB 困住了。