From nobody Sun Feb 8 10:03:24 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) client-ip=170.10.129.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=fail(p=quarantine dis=quarantine) header.from=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1669737687; cv=none; d=zohomail.com; s=zohoarc; b=jqGfQhjw1iOLipsWEoHs2sFpoLsjYJSX/tTwIIgH/M+AjtFJNp+GeBaT799iHkPiHMguZFhrmIpnGeS2lHTVxZQ6Rtoe7xJ9FDu5b4ImDjJ4HRRdNgA+hUGIJtiyTovvXntk+HQVu7EcaT/7+RFEbb1/BOx2rYrZnE75KVoqD1s= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1669737687; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=m+REiM9DHwQbgyvR09GZAuqx6SIy6noa47JHtsZ3Eys=; b=MBbtY+rc4YljIJBI9LgoSpUSSjSPsZBrpVxtUaRhlKyRRjS9VMIV9ywbI6ag1dhXOPBund5ksAoLwD1F8yyb4z3kiXO51/24XNdixMFleim7BNxc+F4s3+ywP4RWkJVEJUfgFMp3gz0hulI1U8aT8lvNZnVGGJL5rBt+Ef1uL60= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=fail header.from= (p=quarantine dis=quarantine) Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by mx.zohomail.com with SMTPS id 1669737687589589.1729187104238; Tue, 29 Nov 2022 08:01:27 -0800 (PST) Received: from mimecast-mx02.redhat.com (mx3-rdu2.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-669-iPO3kPaZMD-k8AZ2ykiBHA-1; Tue, 29 Nov 2022 11:01:16 -0500 Received: from smtp.corp.redhat.com (int-mx09.intmail.prod.int.rdu2.redhat.com [10.11.54.9]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 88B991C0896B; Tue, 29 Nov 2022 16:01:10 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id 7381249BB60; Tue, 29 Nov 2022 16:01:10 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 420DA19465A2; Tue, 29 Nov 2022 16:01:10 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.rdu2.redhat.com [10.11.54.2]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 09BA71946594 for ; Tue, 29 Nov 2022 15:55:28 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id DFFE140C9559; Tue, 29 Nov 2022 15:55:27 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast07.extmail.prod.ext.rdu2.redhat.com [10.11.55.23]) by smtp.corp.redhat.com (Postfix) with ESMTPS id D870E40C6EC4 for ; Tue, 29 Nov 2022 15:55:27 +0000 (UTC) Received: from us-smtp-1.mimecast.com (us-smtp-delivery-1.mimecast.com [207.211.31.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id AC0743C32182 for ; Tue, 29 Nov 2022 15:55:27 +0000 (UTC) Received: from relay.virtuozzo.com (relay.virtuozzo.com [130.117.225.111]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-575-Mbe4Wv06MqeMWmZ9LPz5-A-1; Tue, 29 Nov 2022 10:55:25 -0500 Received: from [192.168.16.96] (helo=dv.sw.ru) by relay.virtuozzo.com with esmtp (Exim 4.95) (envelope-from ) id 1p02wv-000pFA-LM; Tue, 29 Nov 2022 16:55:09 +0100 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1669737685; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=m+REiM9DHwQbgyvR09GZAuqx6SIy6noa47JHtsZ3Eys=; b=TgP8TZgj8by4k9FtxTf/qJFl+FDZzqmcKc2182t31r/9+9VqC330IqyIZt+DG/dLccwWi5 TWyyOG80wNaJjc66RCKUDvl9UDVcl8QGZtHV6I6G8pFiWIeyFS32NOeHefDE/hrLZFy++T Q+TGc22x6uUAqVJloqnh9m59CqkPTjc= X-MC-Unique: iPO3kPaZMD-k8AZ2ykiBHA-1 X-Original-To: libvir-list@listman.corp.redhat.com X-MC-Unique: Mbe4Wv06MqeMWmZ9LPz5-A-1 From: Oleg Vasilev To: libvir-list@redhat.com Subject: [PATCH 1/2] qemu: add append mode config for serial file Date: Tue, 29 Nov 2022 21:54:51 +0600 Message-Id: <20221129155452.840407-2-oleg.vasilev@virtuozzo.com> In-Reply-To: <20221129155452.840407-1-oleg.vasilev@virtuozzo.com> References: <20221129155452.840407-1-oleg.vasilev@virtuozzo.com> MIME-Version: 1.0 X-Mimecast-Impersonation-Protect: Policy=CLT - Impersonation Protection Definition; Similar Internal Domain=false; Similar Monitored External Domain=false; Custom External Domain=false; Mimecast External Domain=false; Newly Observed Domain=false; Internal User Name=false; Custom Display Name List=false; Reply-to Address Mismatch=false; Targeted Threat Dictionary=false; Mimecast Threat Dictionary=false; Custom Threat Dictionary=false X-Scanned-By: MIMEDefang 3.1 on 10.11.54.2 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Oleg Vasilev , "Denis V . Lunev" Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 3.1 on 10.11.54.9 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1669737692843100003 Content-Type: text/plain; charset="utf-8"; x-default="true" Serial log file contains lots of useful information for debugging configuration problems. It makes sense to preserve the log in between restarts, so that one can later figure out what was going on. Signed-off-by: Oleg Vasilev --- src/qemu/libvirtd_qemu.aug | 3 +++ src/qemu/qemu.conf.in | 10 ++++++++++ src/qemu/qemu_conf.c | 4 ++++ src/qemu/qemu_conf.h | 2 ++ src/qemu/qemu_domain.c | 13 +++++++++++++ src/qemu/test_libvirtd_qemu.aug.in | 1 + 6 files changed, 33 insertions(+) diff --git a/src/qemu/libvirtd_qemu.aug b/src/qemu/libvirtd_qemu.aug index ed097ea3d9..7f3eec7cfd 100644 --- a/src/qemu/libvirtd_qemu.aug +++ b/src/qemu/libvirtd_qemu.aug @@ -147,6 +147,8 @@ module Libvirtd_qemu =3D =20 let capability_filters_entry =3D str_array_entry "capability_filters" =20 + let serial_file_append_entry =3D str_entry "serial_file_append" + (* Each entry in the config is one of the following ... *) let entry =3D default_tls_entry | vnc_entry @@ -171,6 +173,7 @@ module Libvirtd_qemu =3D | swtpm_entry | capability_filters_entry | obsolete_entry + | serial_file_append_entry =20 let comment =3D [ label "#comment" . del /#[ \t]*/ "# " . store /([^ \= t\n][^\n]*)?/ . del /\n/ "\n" ] let empty =3D [ label "#empty" . eol ] diff --git a/src/qemu/qemu.conf.in b/src/qemu/qemu.conf.in index 3895d42514..6b38bbeca0 100644 --- a/src/qemu/qemu.conf.in +++ b/src/qemu/qemu.conf.in @@ -968,3 +968,13 @@ # "full" - both QEMU and its helper processes are placed into separate # scheduling group #sched_core =3D "none" + +# Default append mode for writing to serial file. QEMU will set the chosen +# value everytime it processes the config, unless some value is already th= ere. +# +# Possible options are: +# "default" - leave as-is, omit "append=3D..." from conf, leave for QEMU t= o decide. +# The default for QEMU is the same as with append=3D"off". +# "on" - set append value to "on", meaning file won't be truncated on= restart +# "off" - set append value to "off", file will be cleared on restart +#serial_file_append =3D "default" diff --git a/src/qemu/qemu_conf.c b/src/qemu/qemu_conf.c index ae5bbcd138..bfd93a168f 100644 --- a/src/qemu/qemu_conf.c +++ b/src/qemu/qemu_conf.c @@ -288,6 +288,7 @@ virQEMUDriverConfig *virQEMUDriverConfigNew(bool privil= eged, return NULL; =20 cfg->deprecationBehavior =3D g_strdup("none"); + cfg->serialFileAppend =3D g_strdup("default"); =20 return g_steal_pointer(&cfg); } @@ -376,6 +377,7 @@ static void virQEMUDriverConfigDispose(void *obj) g_strfreev(cfg->capabilityfilters); =20 g_free(cfg->deprecationBehavior); + g_free(cfg->serialFileAppend); } =20 =20 @@ -903,6 +905,8 @@ virQEMUDriverConfigLoadDebugEntry(virQEMUDriverConfig *= cfg, return -1; if (virConfGetValueString(conf, "deprecation_behavior", &cfg->deprecat= ionBehavior) < 0) return -1; + if (virConfGetValueString(conf, "serial_file_append", &cfg->serialFile= Append) < 0) + return -1; =20 return 0; } diff --git a/src/qemu/qemu_conf.h b/src/qemu/qemu_conf.h index 8cf2dd2ec5..316200f38d 100644 --- a/src/qemu/qemu_conf.h +++ b/src/qemu/qemu_conf.h @@ -229,6 +229,8 @@ struct _virQEMUDriverConfig { char *deprecationBehavior; =20 virQEMUSchedCore schedCore; + + char *serialFileAppend; }; =20 G_DEFINE_AUTOPTR_CLEANUP_FUNC(virQEMUDriverConfig, virObjectUnref); diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index 8ae458ae45..0d1fe1ffcc 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -37,6 +37,7 @@ #include "qemu_validate.h" #include "qemu_namespace.h" #include "viralloc.h" +#include "virenum.h" #include "virlog.h" #include "virerror.h" #include "viridentity.h" @@ -5357,6 +5358,8 @@ qemuDomainChrDefPostParse(virDomainChrDef *chr, virQEMUDriver *driver, unsigned int parseFlags) { + g_autoptr(virQEMUDriverConfig) cfg =3D virQEMUDriverGetConfig(driver); + /* Historically, isa-serial and the default matched, so in order to * maintain backwards compatibility we map them here. The actual defau= lt * will be picked below based on the architecture and machine type. */ @@ -5428,6 +5431,16 @@ qemuDomainChrDefPostParse(virDomainChrDef *chr, } } =20 + + if (chr->deviceType =3D=3D VIR_DOMAIN_CHR_DEVICE_TYPE_SERIAL && + chr->source && + chr->source->type =3D=3D VIR_DOMAIN_CHR_TYPE_FILE && + chr->source->data.file.append =3D=3D VIR_TRISTATE_SWITCH_ABSENT) { + + chr->source->data.file.append =3D + virTristateSwitchTypeFromString(cfg->serialFileAppend); + } + return 0; } =20 diff --git a/src/qemu/test_libvirtd_qemu.aug.in b/src/qemu/test_libvirtd_qe= mu.aug.in index 1dbd692921..d1ca9c8d3d 100644 --- a/src/qemu/test_libvirtd_qemu.aug.in +++ b/src/qemu/test_libvirtd_qemu.aug.in @@ -117,3 +117,4 @@ module Test_libvirtd_qemu =3D } { "deprecation_behavior" =3D "none" } { "sched_core" =3D "none" } +{ "serial_file_append" =3D "default" } --=20 2.38.1 From nobody Sun Feb 8 10:03:24 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) client-ip=170.10.133.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=fail(p=quarantine dis=quarantine) header.from=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1669737686; cv=none; d=zohomail.com; s=zohoarc; b=dvP/Wt/95ad21WFeJlmWVXQY53IJNjypXz3Cs98GZkxzgTS8WXDlie5WEpXE2YsFO+FrV8DED7lNBsA6jNLKkz7ulUi5F7iUObOOdXARa5EITWciwRacZqBLZZ3Dpr3z1BXpQXUtSOsG+LVrjRGZXZpWFsTXEjU8JXCYLJUJNoU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1669737686; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=dBCxywxhqPZ1eSXt+Lym0oiNrnpstPhUxiJ+fSHV2EY=; b=XH72LAMN21x+Vs1MNU29gJGYCqXPMm0VBsy66y9qqLqVuqzrN2XqsJRRbQB/j1HmwylBV5YiULY72OHXgZlyhaN3T1zTuY1ZRf+Y3KfKyrYV58aYhIIcYj4rX5IoumCR+1b9dzMehx3SVFuAfz4NTEbUGwZ6fbZUeVe2RE65dV0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=fail header.from= (p=quarantine dis=quarantine) Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by mx.zohomail.com with SMTPS id 1669737686428129.95486191026282; Tue, 29 Nov 2022 08:01:26 -0800 (PST) Received: from mimecast-mx02.redhat.com (mx3-rdu2.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-258-BfrU-iPZM8iNI9AGWFDLGA-1; Tue, 29 Nov 2022 11:01:17 -0500 Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 996A83C10235; Tue, 29 Nov 2022 16:01:10 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id 84BB52024CBE; Tue, 29 Nov 2022 16:01:10 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 46FE919465A8; Tue, 29 Nov 2022 16:01:10 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.rdu2.redhat.com [10.11.54.7]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id CB3F01946594 for ; Tue, 29 Nov 2022 15:55:27 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id BA0241400B15; Tue, 29 Nov 2022 15:55:27 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast02.extmail.prod.ext.rdu2.redhat.com [10.11.55.18]) by smtp.corp.redhat.com (Postfix) with ESMTPS id B22BD140EBF5 for ; Tue, 29 Nov 2022 15:55:27 +0000 (UTC) Received: from us-smtp-1.mimecast.com (us-smtp-2.mimecast.com [205.139.110.61]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 91AD3802C17 for ; Tue, 29 Nov 2022 15:55:27 +0000 (UTC) Received: from relay.virtuozzo.com (relay.virtuozzo.com [130.117.225.111]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-280-30x0BMcbM2qvqldFkZarHQ-1; Tue, 29 Nov 2022 10:55:25 -0500 Received: from [192.168.16.96] (helo=dv.sw.ru) by relay.virtuozzo.com with esmtp (Exim 4.95) (envelope-from ) id 1p02ww-000pFA-Gf; Tue, 29 Nov 2022 16:55:10 +0100 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1669737685; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=dBCxywxhqPZ1eSXt+Lym0oiNrnpstPhUxiJ+fSHV2EY=; b=A2SvIJv+2hH9LbK5I2sEK29JaTM3SE2c1I/+pYhHFo9l9fV+7cBvFKOJjUmEDzXWVbwpXR 1nbhxrJ3zPa9NaLwoN2FI36z8BxA7JdlPfvGWSkV9D3gUAjuBo8s7JslbMQUq4G+b940E6 ZqL+OdXW1dvZdB4PwnLkOXB7/cc92js= X-MC-Unique: BfrU-iPZM8iNI9AGWFDLGA-1 X-Original-To: libvir-list@listman.corp.redhat.com X-MC-Unique: 30x0BMcbM2qvqldFkZarHQ-1 From: Oleg Vasilev To: libvir-list@redhat.com Subject: [PATCH 2/2] qemuxml2xmltest: add serial append=on test Date: Tue, 29 Nov 2022 21:54:52 +0600 Message-Id: <20221129155452.840407-3-oleg.vasilev@virtuozzo.com> In-Reply-To: <20221129155452.840407-1-oleg.vasilev@virtuozzo.com> References: <20221129155452.840407-1-oleg.vasilev@virtuozzo.com> MIME-Version: 1.0 X-Mimecast-Impersonation-Protect: Policy=CLT - Impersonation Protection Definition; Similar Internal Domain=false; Similar Monitored External Domain=false; Custom External Domain=false; Mimecast External Domain=false; Newly Observed Domain=false; Internal User Name=false; Custom Display Name List=false; Reply-to Address Mismatch=false; Targeted Threat Dictionary=false; Mimecast Threat Dictionary=false; Custom Threat Dictionary=false X-Scanned-By: MIMEDefang 3.1 on 10.11.54.7 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Oleg Vasilev , "Denis V . Lunev" Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 3.1 on 10.11.54.4 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1669737691058100001 Content-Type: text/plain; charset="utf-8"; x-default="true" Previous commit has introduced the config option to enable append=3Don for serial files. Here we test it. Signed-off-by: Oleg Vasilev --- tests/qemuxml2argvdata/serial-append.xml | 56 +++++++++++++++++++ .../serial-append.x86_64-latest.xml | 56 +++++++++++++++++++ tests/qemuxml2xmltest.c | 4 ++ 3 files changed, 116 insertions(+) create mode 100644 tests/qemuxml2argvdata/serial-append.xml create mode 100644 tests/qemuxml2xmloutdata/serial-append.x86_64-latest.xml diff --git a/tests/qemuxml2argvdata/serial-append.xml b/tests/qemuxml2argvd= ata/serial-append.xml new file mode 100644 index 0000000000..3f2cb210e4 --- /dev/null +++ b/tests/qemuxml2argvdata/serial-append.xml @@ -0,0 +1,56 @@ + + machine + 2187c512-ff97-47d7-b67c-c02d3bdc219d + 219100 + 219100 + 1 + + hvm + + + + qemu64 + + + destroy + restart + destroy + + /usr/bin/qemu-system-x86_64 + +
+ + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +