微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Qemu-system-mips 在“启用控制台 [tty0]”后卡住

如何解决Qemu-system-mips 在“启用控制台 [tty0]”后卡住

我尝试使用 jcowgill 的预编译内核和 QCOW2 磁盘映像,但是在一些输出后 qemu 卡在了这里。不知道怎么回事,qemu就卡在这里了,输入不了命令。

命令:

qemu-system-mips64el \
-M malta \
-cpu MIPS64R2-generic \
-m 2G \
-append 'root=/dev/sda2 console=tty0 mem=2048m nokaslr' \
-nographic \
-kernel vmlinux-4.9.0-4-5kc-malta.mipsel.stretch \
-initrd initrd.img-4.9.0-4-5kc-malta.mipsel.stretch \
-drive file=debian-stretch-mipsel.qcow2 

输出

[    0.000000] Linux version 4.9.0-4-5kc-malta (debian-kernel@lists.debian.org) (gcc version 6.3.0 20170516 (Debian 6.3.0-18) ) #1 Debian 4.9.65-3 (2017-12-03)
[    0.000000] earlycon: uart8250 at I/O port 0x3f8 (options '38400n8')
[    0.000000] bootconsole [uart8250] enabled
[    0.000000] cpu0 revision is: 00010000 (MIPS GENERIC QEMU)
[    0.000000] FPU revision is: 007f0000
[    0.000000] Checking for the multiply/shift bug... [    0.000000] no.
[    0.000000] Checking for the daddiu bug... [    0.000000] no.
[    0.000000] MIPS: machine is mti,malta
[    0.000000] Software DMA cache coherency enabled
[    0.000000] Determined physical RAM map:
[    0.000000]  memory: 0000000010000000 @ 0000000000000000 (usable)
[    0.000000]  memory: 0000000070000000 @ 0000000090000000 (usable)
[    0.000000] user-defined physical RAM map:
[    0.000000]  memory: 0000000080000000 @ 0000000000000000 (usable)
[    0.000000] Initial ramdisk at: 0x900000000ed70000 (19204358 bytes)
[    0.000000] Reserving 0MB of memory at 0MB for crashkernel
[    0.000000] Primary instruction cache 32kB,VIPT,4-way,linesize 32 bytes.
[    0.000000] Primary data cache 32kB,cache aliases,linesize 32 bytes
[    0.000000] Zone ranges:
[    0.000000]   DMA      [mem 0x0000000000000000-0x0000000000ffffff]
[    0.000000]   DMA32    [mem 0x0000000001000000-0x00000000ffffffff]
[    0.000000]   normal   empty
[    0.000000] Movable zone start for each node
[    0.000000] Early memory node ranges
[    0.000000]   node   0: [mem 0x0000000000000000-0x000000007fffffff]
[    0.000000] Initmem setup node 0 [mem 0x0000000000000000-0x000000007fffffff]
[    0.000000] Built 1 zonelists in Zone order,mobility grouping on.  Total pages: 516096
[    0.000000] Kernel command line: rd_start=0xffffffff8ed70000 rd_size=19204358 root=/dev/sda2 console=tty0 mem=2048m nokaslr
[    0.000000] PID hash table entries: 4096 (order: 3,32768 bytes)
[    0.000000] Dentry cache hash table entries: 262144 (order: 9,2097152 bytes)
[    0.000000] Inode-cache hash table entries: 131072 (order: 8,1048576 bytes)
[    0.000000] Writing ErrCtl register=00000000
[    0.000000] Readback ErrCtl register=00000000
[    0.000000] Memory: 2030840K/2097152K available (6118K kernel code,982K rwdata,1596K rodata,1516K init,360K bss,66312K reserved,0K cma-reserved)
[    0.000000] NR_IRQS:256
[    0.000000] cpu frequency 200.00 MHz
[    0.000000] clocksource: MIPS: mask: 0xffffffff max_cycles: 0xffffffff,max_idle_ns: 19112681107 ns
[    0.000108] sched_clock: 32 bits at 99MHz,resolution 10ns,wraps every 21474922490ns
[    0.004826] Console: colour dummy device 80x25
[    0.005174] console [tty0] enabled
[    0.005521] bootconsole [uart8250] disabled

内核和img文件https://people.debian.org/~jcowgill/qemu-mips/下载

vmlinux-4.9.0-4-5kc-malta.mipsel.stretch 
initrd.img-4.9.0-4-5kc-malta.mipsel.stretch 
debian-stretch-mipsel.qcow2 

解决方法

您的内核命令行显示“console=tty0”,意思是“请将控制台发送到第一个虚拟终端”,即图形设备。但是您正在运行的机器中没有图形设备(您在 QEMU 命令行上说“-nographic”,内核说“控制台:彩色虚拟设备 80x25”)。所以发生的情况是,您通过“uart8250”earlycon(即串行端口)看到初始启动消息,但是一旦内核达到可以满足您的命令行请求的程度,它就会启用 tty0(无处可去) ) 并禁用 uart8250(因此您看不到进一步的输出)。

您需要告诉内核将控制台输出发送到串行端口,如果这是您希望看到它出现的地方,对于马耳他板,我认为您可以使用“console=ttyS0”来代替。或者,您可以删除“-nographic”,确保您的内核具有内置 VGA 卡的驱动程序,然后保留“console=tty0”,您将在图形窗口的虚拟控制台上看到控制台。

如果您查看 the README for the website you downloaded your image files from,您会发现它确实建议使用“console=ttyS0”。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。