From nobody Mon Feb 9 00:20:44 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=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1641322520; cv=none; d=zohomail.com; s=zohoarc; b=VpUX6SJoXZ0fNAOYrj4lVQUJk6oPgo0yTsrrt4ylUSwEU6s+7EJfMMw+7M/P5j6PUX+OCHQiRtIHYnIEUDSizlVyUf2kV9yjX1aFe9WNvegNk9/J1n8oT3fYNov/sTbhRO3tPqJGEkRS2KpsLfymZDlPcRfnIMWHigdZnnQmXIg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1641322520; 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=7nbHdpxfl7zqJc6KNf649Viko7xIJgn5wsWznL1rE5c=; b=khw8L+kpy7Y1huarvAj3ErCgUm/rqU/1D1Q+Mtcf5F7AsSz+6AmpBe7MzROCZ9+zBwdr9y98aJT58XjgFD38X+pwv1gixpI2ft8LGCaIJ7oM6RLsZg/VUsQxQ5pSnDSbc22dIRrK4D+ziGRdkZYYFIshdj7uwfgqNLmKr1PwAFQ= 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=pass header.from= (p=none dis=none) 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 1641322520699147.3855363286848; Tue, 4 Jan 2022 10:55:20 -0800 (PST) Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-227-h0eeeWdEOKmjl2-G3fC8cg-1; Tue, 04 Jan 2022 13:55:09 -0500 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 4A24961280; Tue, 4 Jan 2022 18:55:03 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 247F178A0F; Tue, 4 Jan 2022 18:55:03 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id E28051806D03; Tue, 4 Jan 2022 18:55:02 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 204It2sn013377 for ; Tue, 4 Jan 2022 13:55:02 -0500 Received: by smtp.corp.redhat.com (Postfix) id 4DC4C34D41; Tue, 4 Jan 2022 18:55:02 +0000 (UTC) Received: from kinshicho.usersys.redhat.com (unknown [10.40.193.201]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 1E77734D59; Tue, 4 Jan 2022 18:54:59 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1641322519; 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=7nbHdpxfl7zqJc6KNf649Viko7xIJgn5wsWznL1rE5c=; b=DerFBKpXcmCL+0cJZo91+nFImo5a6D892NuuJ1pEKT9bOAd8+Jvdm8mAdrHjCyJGUWhssd QrAbZ6ClEjbFkavk0MlNwRHLUeyXVggPGN7bt/9FH7swSG9kOkKPD7K+GlPE5BFbOATq4W pxu3nCD1KXJmMqNIqIxgZKIIHQ2p7U8= X-MC-Unique: h0eeeWdEOKmjl2-G3fC8cg-1 From: Andrea Bolognani To: libvir-list@redhat.com Subject: [libvirt PATCH 15/17] docs: Add support page for libvirt on macOS Date: Tue, 4 Jan 2022 19:52:54 +0100 Message-Id: <20220104185256.339072-16-abologna@redhat.com> In-Reply-To: <20220104185256.339072-1-abologna@redhat.com> References: <20220104185256.339072-1-abologna@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.23 X-loop: libvir-list@redhat.com Cc: r.bolshakov@yadro.com X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com 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: 1641322521525100001 Content-Type: text/plain; charset="utf-8" From: Roman Bolshakov Signed-off-by: Roman Bolshakov Signed-off-by: Andrea Bolognani --- docs/docs.html.in | 3 + docs/index.html.in | 3 +- docs/macos.html.in | 229 +++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 234 insertions(+), 1 deletion(-) create mode 100644 docs/macos.html.in diff --git a/docs/docs.html.in b/docs/docs.html.in index 8132090762..225827b693 100644 --- a/docs/docs.html.in +++ b/docs/docs.html.in @@ -16,6 +16,9 @@
Windows
Downloads for Windows
=20 +
macOS
+
Working with libvirt on macOS
+
Migration
Migrating guests between machines
=20 diff --git a/docs/index.html.in b/docs/index.html.in index 2c4aa7c6d0..3c065badb7 100644 --- a/docs/index.html.in +++ b/docs/index.html.in @@ -28,7 +28,8 @@ LXC, BHyve and more -
  • targets Linux, FreeBSD, Windows a= nd macOS
  • +
  • targets Linux, FreeBSD, Windows a= nd + macOS
  • is used by many applications
  • Recent / forthcoming release changes

    diff --git a/docs/macos.html.in b/docs/macos.html.in new file mode 100644 index 0000000000..54c93ea2fb --- /dev/null +++ b/docs/macos.html.in @@ -0,0 +1,229 @@ + + + + +

    macOS support

    + +
      + +

      + Libvirt works both as client and server (for + "qemu" domain) on macOS High Sierra (10.13) and macOS Mojave (10= .14) + since 4.7.0. Other macOS variants likely work but we neither tested = nor + received reports for them. +

      + +

      + "hvf" domain type adds support of + Hypervisor.framework since 4.10.0. To use "hvf" domain, QEMU must + be at least 2.12 and macOS must be no less than Yosemite (10.10). "h= vf" + domain type is similar to "kvm" but it has less features. +

      + +

      + Hypervisor.framework is available on your machine if the sysctl comm= and + returns 1: + +

      sysctl -n kern.hv_support
      +

      + +

      Installation

      + +

      + libvirt client (virsh), server (libvirtd) and development headers ca= n be + installed from homebrew: + +

      brew install libvirt
      + + virt-manager and virt-viewer= can be + installed from source via + Jeffrey Wildman's tap: + +
      brew tap jeffreywildman/homebrew-virt-manager
      +brew install virt-manager virt-viewer
      +

      + +

      Running libvirtd locally

      + +

      + The server can be started manually: +

      libvirtd
      + or on system boot: +
      brew services start libvirt
      +

      +

      + Once started, you can use virsh to work with libvirtd: +

      virsh define domain.xml
      +virsh start domain
      +virsh shutdown domain
      + + For more details on virsh, please see v= irsh + command reference or built-in help: +
      virsh help
      +

      + +

      + Domain XML examples can be found on QEMU + driver page. Full reference is available on domain XML format page. +

      + +

      + You can use virt-manager to connect to libvirtd (connection URI must= be + specified on the first connection, then it'll be possible to omit it= ): +

      virt-manager -c qemu:///session
      + or, if you only need an access to the virtual display of a VM you ca= n use + virt-viewer: +
      virt-viewer -c qemu:///session
      +

      + +

      Working with external hypervisors

      +

      + Details on the example domain XML files, capabilities and connection + string syntax used for connecting to external hypervisors can be fou= nd + online on hypervisor specific driver + pages. +

      + +

      TLS Certificates

      + +

      + TLS certificates must be placed in the correct locations, before you= will + be able to connect to QEMU servers over TLS. +

      + +

      + Information on generating TLS certificates can be found here: +

      + + http://wiki.libvirt.= org/page/TLSSetup + +

      + The Certificate Authority (CA) certificate file must be placed in: +

      + +
        +
      • ~/.cache/libvirt/pki/CA/cacert.pem
      • +
      + +

      + The Client certificate file must be placed in: +

      + +
        +
      • ~/.cache/libvirt/pki/libvirt/clientcert.pem
      • +
      + +

      + The Client key file must be placed in: +

      + +
        +
      • ~/.cache/libvirt/pki/libvirt/private/clientkey.pem
      • +
      + +

      Known issues

      +

      + This is a list of issues that can be easily fixed and provide + substantial improvement of user experience: +

      +
        +
      • + virt-install doesn't work unless disks are created upfront. The re= ason + is because VIR_STORAGE_VOL_CREATE_PREALLOC_METADATA sets + preallocate=3Dfalloc which is not supported by qemu-img on macOS. +
      • +
      • + "hvf" is not default domain type when virt-install connects to the + local libvirtd on macOS +
      • +
      • + QXL VGA device and SPICE display cannot be used unless QEMU is com= piled + with SPICE server. The changes to build and run SPICE server on ma= cOS + haven't been sent to upstream yet. +
      • +
      • + "make check" reports many failing tests on macOS. Some of the tests + need to be adopted to run both on Linux and macOS. +
      • +
      • + "make syntax-check" needs be fixed too, it depends on GNU version = of + grep but uses system (BSD) grep. +
      • +
      • + QEMU from homebrew is compiled without USB redirection support. +
      • +
      • + CPU usage is not gathered for VMs and therefore cannot be dispalye= d in + virt-manager. +
      • +
      • + libvirtd logs are noisy because some features are missing. +
      • +
      + +

      Missing features

      +

      + "hvf" is a new domain type and can't be compared to "kvm" feature-wi= se. + "kvm" domain relies on QEMU backend devices implemented in Linux ker= nel + such as para-virtualized vhost devices and PCI-passthrough with vfio. + + Nonetheless, some of the features available in "kvm" domain can be + implemented in userspace for "hvf" domain. +

      +
        +
      • + Instruction emulation in "hvf" accelerator is not mature. The bugs= are + tracked on QEM= U bug + tracker. +
      • +
      • + Power Management notifications are not implemented, therefore gues= ts + cannot respond to + sleep events on the host. +
      • +
      • + CPU pinning doesn't work but macOS provides + Thread Affinity API that can be used to implement it. +
      • +
      • + Network management is not available but macOS has an API that is u= sed + by ifconfig to create bridge and tap devices. So, it should be pos= sible + to implement network management and bridged networking. +
      • +
      • + Filesystem pass-through is not available. +
      • +
      • + PCI/SCSI/USB pass-through is not available. +
      • +
      + + +

      Feedback

      + +

      + Feedback and suggestions on changes and what else to include + are desired. +

      + +

      Compiling yourself

      + +

      + Use these options when following the instructions on the + Compiling page. +

      + +
      +./configure \
      +  --without-wireshark-dissector \
      +  --without-dbus
      +
      + + + --=20 2.31.1