]> git.ipfire.org Git - thirdparty/mkosi.git/commitdiff
Use qemu's virtconsole for the serial console 2834/head
authorDaan De Meyer <daan.j.demeyer@gmail.com>
Thu, 4 Jul 2024 15:16:35 +0000 (17:16 +0200)
committerDaan De Meyer <daan.j.demeyer@gmail.com>
Thu, 4 Jul 2024 15:46:07 +0000 (17:46 +0200)
edk2 now has a virtio serial driver so let's switch to virtconsole
for the serial console as it's significantly faster compared to the
old ISA serial console.

mkosi/__init__.py
mkosi/config.py
mkosi/qemu.py
mkosi/resources/mkosi.md
tests/__init__.py

index b6fcc62fdde1f01ead1600295d22e8b6564a3ad0..474542c0869ab49722683006d18a41bccd6f835d 100644 (file)
@@ -323,14 +323,10 @@ def configure_autologin(context: Context) -> None:
                                     "--noclear --keep-baud console 115200,38400,9600")
         configure_autologin_service(context, "getty@tty1.service",
                                     "--noclear -")
-        configure_autologin_service(context, "serial-getty@ttyS0.service",
+        configure_autologin_service(context,
+                                    "serial-getty@hvc0.service",
                                     "--keep-baud 115200,57600,38400,9600 -")
 
-        if context.config.architecture.default_serial_tty() != "ttyS0":
-            configure_autologin_service(context,
-                                        f"serial-getty@{context.config.architecture.default_serial_tty()}.service",
-                                        "--keep-baud 115200,57600,38400,9600 -")
-
 
 @contextlib.contextmanager
 def mount_cache_overlay(context: Context, cached: bool) -> Iterator[None]:
index 4b25961cc7921d1a972e068576ce626adb0aada9..8395116b32afee9786fbfce11647349426b5febf 100644 (file)
@@ -420,17 +420,6 @@ class Architecture(StrEnum):
 
         return a
 
-    def default_serial_tty(self) -> str:
-        return {
-            Architecture.arm      : "ttyAMA0",
-            Architecture.arm64    : "ttyAMA0",
-            Architecture.s390     : "ttysclp0",
-            Architecture.s390x    : "ttysclp0",
-            Architecture.ppc      : "hvc0",
-            Architecture.ppc64    : "hvc0",
-            Architecture.ppc64_le : "hvc0",
-        }.get(self, "ttyS0")
-
     def supports_smbios(self, firmware: QemuFirmware) -> bool:
         if self.is_x86_variant():
             return True
@@ -3749,7 +3738,6 @@ def finalize_term() -> str:
 
 
 def load_kernel_command_line_extra(args: argparse.Namespace) -> list[str]:
-    tty = args.architecture.default_serial_tty()
     columns, lines = shutil.get_terminal_size()
     term = finalize_term()
 
@@ -3759,9 +3747,9 @@ def load_kernel_command_line_extra(args: argparse.Namespace) -> list[str]:
         "systemd.wants=network.target",
         # Make sure we don't load vmw_vmci which messes with virtio vsock.
         "module_blacklist=vmw_vmci",
-        f"systemd.tty.term.{tty}={term}",
-        f"systemd.tty.columns.{tty}={columns}",
-        f"systemd.tty.rows.{tty}={lines}",
+        f"systemd.tty.term.hvc0={term}",
+        f"systemd.tty.columns.hvc0={columns}",
+        f"systemd.tty.rows.hvc0={lines}",
     ]
 
     if not any(s.startswith("ip=") for s in args.kernel_command_line_extra):
@@ -3785,7 +3773,7 @@ def load_kernel_command_line_extra(args: argparse.Namespace) -> list[str]:
             f"systemd.tty.term.console={term}",
             f"systemd.tty.columns.console={columns}",
             f"systemd.tty.rows.console={lines}",
-            f"console={tty}",
+            "console=hvc0",
             f"TERM={term}",
         ]
 
index 9d4241cec79b62b4c79cead9629ab022506ea712..393c80a5fd1a19d139643cc58d36772f587164d4 100644 (file)
@@ -937,7 +937,8 @@ def run_qemu(args: Args, config: Config) -> None:
             "-nographic",
             "-nodefaults",
             "-chardev", "stdio,mux=on,id=console,signal=off",
-            "-serial", "chardev:console",
+            "-device", "virtio-serial-pci,id=mkosi-virtio-serial-pci",
+            "-device", "virtconsole,chardev=console",
             "-mon", "console",
         ]
 
index c122290060d445c8e9cb75e6fb8bb128977b46d9..aa206bd3b90221652ef0a4fa11e06ccc133aba23 100644 (file)
@@ -1119,7 +1119,7 @@ boolean argument: either `1`, `yes`, or `true` to enable, or `0`, `no`,
 
 `Autologin=`, `--autologin`
 :   Enable autologin for the `root` user on `/dev/pts/0` (nspawn),
-    `/dev/tty1` and `/dev/ttyS0`.
+    `/dev/tty1` and `/dev/hvc0`.
 
 `MakeInitrd=`, `--make-initrd`
 :   Add `/etc/initrd-release` and `/init` to the image so that it can be
index aae36fa0057df965bfb9f27f0f6001870d77c4b3..8b897c0fafd4fa17871afccf2ff37f60fc5d31ec 100644 (file)
@@ -13,7 +13,7 @@ from typing import Any, Optional
 
 import pytest
 
-from mkosi.config import Architecture, finalize_term
+from mkosi.config import finalize_term
 from mkosi.distributions import Distribution
 from mkosi.run import run
 from mkosi.types import _FILE, CompletedProcess, PathString
@@ -58,7 +58,6 @@ class Image:
         check: bool = True,
     ) -> CompletedProcess:
         kcl = [
-            f"console={Architecture.native().default_serial_tty()}",
             f"TERM={finalize_term()}",
             "loglevel=6",
             "systemd.crash_shell",