Support `make run_kernel CONSOLE=ttyS0`

This commit is contained in:
Ruihan Li 2026-01-07 17:52:15 +08:00 committed by Tate, Hongliang Tian
parent 3c959bf0a0
commit 22dd288b07
2 changed files with 12 additions and 5 deletions

View File

@ -23,9 +23,10 @@ NO_DEFAULT_FEATURES ?= 0
COVERAGE ?= 0 COVERAGE ?= 0
# Specify whether to build regression tests under `test/initramfs/src/apps`. # Specify whether to build regression tests under `test/initramfs/src/apps`.
ENABLE_BASIC_TEST ?= false ENABLE_BASIC_TEST ?= false
# Specify the primary system console (supported: hvc0, tty0). # Specify the primary system console (supported: tty0, ttyS0, hvc0).
# - hvc0: The virtio-console terminal.
# - tty0: The active virtual terminal (VT). # - tty0: The active virtual terminal (VT).
# - ttyS0: The serial (UART) terminal.
# - hvc0: The virtio-console terminal.
# Asterinas will automatically fall back to tty0 if hvc0 is not available. # Asterinas will automatically fall back to tty0 if hvc0 is not available.
# Note that currently the virtual terminal (tty0) can only work with # Note that currently the virtual terminal (tty0) can only work with
# linux-efi-handover64 and linux-efi-pe64 boot protocol. # linux-efi-handover64 and linux-efi-pe64 boot protocol.

View File

@ -11,6 +11,7 @@
# - NETDEV: "user" or "tap"; # - NETDEV: "user" or "tap";
# - VHOST: "off" or "on"; # - VHOST: "off" or "on";
# - VSOCK: "off" or "on"; # - VSOCK: "off" or "on";
# - CONSOLE: "hvc0" to enable virtio console;
# - SMP: number of CPUs; # - SMP: number of CPUs;
# - MEM: amount of memory, e.g. "8G"; # - MEM: amount of memory, e.g. "8G";
# - VNC_PORT: VNC port, default is "42". # - VNC_PORT: VNC port, default is "42".
@ -19,6 +20,7 @@ OVMF=${OVMF:-"on"}
VHOST=${VHOST:-"off"} VHOST=${VHOST:-"off"}
VSOCK=${VSOCK:-"off"} VSOCK=${VSOCK:-"off"}
NETDEV=${NETDEV:-"user"} NETDEV=${NETDEV:-"user"}
CONSOLE=${CONSOLE:-"hvc0"}
SSH_RAND_PORT=${SSH_PORT:-$(shuf -i 1024-65535 -n 1)} SSH_RAND_PORT=${SSH_PORT:-$(shuf -i 1024-65535 -n 1)}
NGINX_RAND_PORT=${NGINX_PORT:-$(shuf -i 1024-65535 -n 1)} NGINX_RAND_PORT=${NGINX_PORT:-$(shuf -i 1024-65535 -n 1)}
@ -46,6 +48,10 @@ else
NETDEV_ARGS="-nic none" NETDEV_ARGS="-nic none"
fi fi
if [ "$CONSOLE" = "hvc0" ]; then
CONSOLE_ARGS="-device virtconsole,chardev=mux"
fi
if [ "$1" = "tdx" ]; then if [ "$1" = "tdx" ]; then
TDX_OBJECT='{ "qom-type": "tdx-guest", "id": "tdx0", "sept-ve-disable": true, "quote-generation-socket": { "type": "vsock", "cid": "2", "port": "4050" } }' TDX_OBJECT='{ "qom-type": "tdx-guest", "id": "tdx0", "sept-ve-disable": true, "quote-generation-socket": { "type": "vsock", "cid": "2", "port": "4050" } }'
@ -66,7 +72,7 @@ if [ "$1" = "tdx" ]; then
$QEMU_OPT_ARG_DUMP_PACKETS \ $QEMU_OPT_ARG_DUMP_PACKETS \
-chardev stdio,id=mux,mux=on,logfile=qemu.log \ -chardev stdio,id=mux,mux=on,logfile=qemu.log \
-device virtio-serial,romfile= \ -device virtio-serial,romfile= \
-device virtconsole,chardev=mux \ $CONSOLE_ARGS \
-device isa-debug-exit,iobase=0xf4,iosize=0x04 \ -device isa-debug-exit,iobase=0xf4,iosize=0x04 \
-monitor chardev:mux \ -monitor chardev:mux \
-serial chardev:mux \ -serial chardev:mux \
@ -113,7 +119,7 @@ QEMU_ARGS="\
-device virtio-blk-pci,bus=pcie.0,addr=0x7,drive=x1,serial=vexfat,disable-legacy=on,disable-modern=off,queue-size=64,num-queues=1,request-merging=off,backend_defaults=off,discard=off,write-zeroes=off,event_idx=off,indirect_desc=off,queue_reset=off$IOMMU_DEV_EXTRA \ -device virtio-blk-pci,bus=pcie.0,addr=0x7,drive=x1,serial=vexfat,disable-legacy=on,disable-modern=off,queue-size=64,num-queues=1,request-merging=off,backend_defaults=off,discard=off,write-zeroes=off,event_idx=off,indirect_desc=off,queue_reset=off$IOMMU_DEV_EXTRA \
-device virtio-net-pci,netdev=net01,disable-legacy=on,disable-modern=off$VIRTIO_NET_FEATURES$IOMMU_DEV_EXTRA \ -device virtio-net-pci,netdev=net01,disable-legacy=on,disable-modern=off$VIRTIO_NET_FEATURES$IOMMU_DEV_EXTRA \
-device virtio-serial-pci,disable-legacy=on,disable-modern=off$IOMMU_DEV_EXTRA \ -device virtio-serial-pci,disable-legacy=on,disable-modern=off$IOMMU_DEV_EXTRA \
-device virtconsole,chardev=mux \ $CONSOLE_ARGS \
$IOMMU_EXTRA_ARGS \ $IOMMU_EXTRA_ARGS \
" "
@ -127,7 +133,7 @@ MICROVM_QEMU_ARGS="\
-device virtio-keyboard-device \ -device virtio-keyboard-device \
-device virtio-net-device,netdev=net01 \ -device virtio-net-device,netdev=net01 \
-device virtio-serial-device \ -device virtio-serial-device \
-device virtconsole,chardev=mux \ $CONSOLE_ARGS \
" "
if [ "$VSOCK" = "on" ]; then if [ "$VSOCK" = "on" ]; then