From d946d540b6ab3ef42957ca61fe8ed9d3aa5937cd Mon Sep 17 00:00:00 2001 From: RoyalGraphX <39929362+royalgraphx@users.noreply.github.com> Date: Mon, 26 Jun 2023 12:54:09 -0500 Subject: [PATCH] Complete Host Preparations Conversion! --- README.md | 2 +- docs/404.md | 15 ++++ docs/_config.yml | 17 ++++ docs/_sass/custom/setup.scss | 24 ++++++ docs/assets/Header404.png | Bin 0 -> 28386 bytes docs/docs/01-About.md | 2 +- docs/docs/02-HostPreparations/01-BIOS.md | 18 ++++- docs/docs/02-HostPreparations/02-GRUB.md | 32 +++++++- docs/docs/02-HostPreparations/03-Bridge.md | 52 +++++++++++- .../02-HostPreparations/04-PackageInstall.md | 23 +++++- docs/docs/02-HostPreparations/05-Libvirtd.md | 74 +++++++++++++++++- docs/docs/03-GatheringFiles/04-Tools.md | 4 +- .../04-Configs/01-VMCascadeLake/08-UEFI.md | 4 +- .../05-FetchingBaseSystem/01-macrecovery.md | 4 +- .../06-InstallingmacOS/05-Installation.md | 4 +- .../07-SingleGPUPassthrough/03-VManUpdate.md | 4 +- docs/docs/08-DualGPUPassthrough/index.md | 2 +- docs/docs/09-Finish.md | 3 +- docs/index.md | 1 + 19 files changed, 270 insertions(+), 15 deletions(-) create mode 100644 docs/404.md create mode 100644 docs/_sass/custom/setup.scss create mode 100644 docs/assets/Header404.png diff --git a/README.md b/README.md index 854b609..b0f3e2b 100644 --- a/README.md +++ b/README.md @@ -130,7 +130,7 @@ Depending on your machine's CPU, you need to enable certain settings in your BIO
-If you do not have any virtualization settings, chances are they're already enabled, but double check that your BIOS is up to date, and that your CPU and motherboard support virtualization. +If you do not have any virtualization settings, chances are they're already enabled, but double-check that your BIOS is up to date and that your CPU and motherboard support virtualization.

diff --git a/docs/404.md b/docs/404.md new file mode 100644 index 0000000..9b8c45b --- /dev/null +++ b/docs/404.md @@ -0,0 +1,15 @@ +--- +layout: default +title: 404 +nav_exclude: true +--- + +

+ +

+ +

+ +

+ +

Return Home

\ No newline at end of file diff --git a/docs/_config.yml b/docs/_config.yml index 7e7ebaa..1ea6c6e 100644 --- a/docs/_config.yml +++ b/docs/_config.yml @@ -7,6 +7,23 @@ favicon_ico: "/assets/favicon.ico" url: https://royalgraphx.github.io/DarwinKVM/docs +callouts_opacity: 0.4 +callouts: + highlight: + color: canary + important: + title: Important + color: blueish + new: + title: New + color: teal + note: + title: Note + color: grey-lt + warning: + title: Warning + color: reddish + include: - docs - _sass diff --git a/docs/_sass/custom/setup.scss b/docs/_sass/custom/setup.scss new file mode 100644 index 0000000..71d15b2 --- /dev/null +++ b/docs/_sass/custom/setup.scss @@ -0,0 +1,24 @@ +$pink-000: #f77ef1; +$pink-100: #f967f1; +$pink-200: #e94ee1; +$pink-300: #dd2cd4; +$canary-000: #e7e142; +$canary-100: #bcb716; +$canary-200: #ece626; +$canary-300: #fff839; +$teal-000: #008080; +$teal-100: #009688; +$teal-200: #00796B; +$teal-300: #00dfc5; +$reddish-000: #FF4D4D; +$reddish-100: #E63939; +$reddish-200: #C62828; +$reddish-300: #eb2a2a; +$blueish-000: #253746; +$blueish-100: #1E2A37; +$blueish-200: #18222C; +$blueish-300: #7cbae3; +$different-blue-100: #6DA6D2; +$different-blue-200: #519CCB; +$different-blue-300: #368AC2; +$different-blue-400: #1C79BA; diff --git a/docs/assets/Header404.png b/docs/assets/Header404.png new file mode 100644 index 0000000000000000000000000000000000000000..4d5fece9d101a3c69dc467386ab28965a5be29ab GIT binary patch literal 28386 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 brvkUEYloY%Q>MYCbr3xr!)xVQ=!pLTSpbdZ literal 0 HcmV?d00001 diff --git a/docs/docs/01-About.md b/docs/docs/01-About.md index 24e7871..5b1c245 100644 --- a/docs/docs/01-About.md +++ b/docs/docs/01-About.md @@ -16,4 +16,4 @@ This repository and its contents are to be a continuation of my work on [LegacyO This is for experienced users. You should already be familiar with 3 core concepts: [Virtualization](https://libvirt.org/)/[QEMU](https://www.qemu.org/docs/master/), [OpenCore](https://dortania.github.io/OpenCore-Install-Guide/), and [macOS](https://en.wikipedia.org/wiki/MacOS). If you feel as though you are not up to speed on any of these concepts, please take the time to first gain adequate knowledge as it will vastly improve your chances of having a working system you can daily drive. This guide is written completely from my perspective as I've learned throughout my time in the Hackintosh community. What you would typically do if you wanted to run macOS on your system you would have to use the OpenCore bootloader to provide macOS with the necessary information it needs. A Virtual Machine is no different. In theory, what we are simply doing is creating an OpenCore disk image that acts as if it were the equivalent of a USB or an EFI partition post-installation. While there exist many projects that utilize QEMU/KVM, for daily driving you must have a compatible GPU. What this means for the user of any projects that are seen as the equivalent to "Prebuilt EFI's" is that there is no learning involved. This causes the user to not understand why certain things are broken on their system and possibly may never fix those issues, potentially leaving them in the background. This guide is for those who are looking to properly create a macOS Virtual Machine from the ground up. PLEASE READ CAREFULLY. Try not to ask for support before rereading, many times you will misread something on accident or are simply not paying enough attention to what it's instructing you to do. -

You can now proceed to the Host Preparations section!

\ No newline at end of file +

You can now proceed to the Host Preparations section!

\ No newline at end of file diff --git a/docs/docs/02-HostPreparations/01-BIOS.md b/docs/docs/02-HostPreparations/01-BIOS.md index d189529..30b40f0 100644 --- a/docs/docs/02-HostPreparations/01-BIOS.md +++ b/docs/docs/02-HostPreparations/01-BIOS.md @@ -3,4 +3,20 @@ layout: default title: Part 1. BIOS Settings parent: Host Preparations nav_order: 1 ---- \ No newline at end of file +--- + +# BIOS Settings +#### Will depend on your Host Hardware. +#### This section has been derived from the Preparations section via RisingPrism. + +Depending on your machine's CPU, you need to enable certain settings in your BIOS for your passthrough to succeed. Enable the settings listed in this table: + +| AMD | Intel | +| ---- | ----- | +| IOMMU | VT-d | +| NX Mode | XD (eXecute Disable) Bit | +| SVM Mode | VT-x | + +If you do not have any virtualization settings, chances are they're already enabled, but double-check that your BIOS is up to date and that your CPU and motherboard support virtualization. + +## You can now continue to the next page. \ No newline at end of file diff --git a/docs/docs/02-HostPreparations/02-GRUB.md b/docs/docs/02-HostPreparations/02-GRUB.md index c17381a..1d28bba 100644 --- a/docs/docs/02-HostPreparations/02-GRUB.md +++ b/docs/docs/02-HostPreparations/02-GRUB.md @@ -3,4 +3,34 @@ layout: default title: Part 2. GRUB Configuration parent: Host Preparations nav_order: 2 ---- \ No newline at end of file +--- + +# GRUB Configuration +#### Enabling flags needed for Virtualization/QEMU/KVM/libvirtd +#### This section has been derived from the Editing GRUB section via RisingPrism. + +Start by using your favorite terminal text editor. In this example, we'll be using nano. Note: If you're not using GRUB, follow the same steps, but refer to the Arch Wiki on how to edit the config file. + +``` +sudo nano /etc/default/grub +``` + +We'll need to check our GRUB CMD Line flags and add various ones depending on the users' hardware. + +| AMD CPU | Intel CPU | AMD GPU | Needed Regardless | +| ---- | ----- | ----- | ----- | +| amd_iommu=on | intel_iommu=on | video=efifb:off | iommu=pt | + +Example GRUB configuration for an AMD CPU + AMD GPU host: + +``` +amd_iommu=on iommu=pt video=efifb:off +``` + +When you're done make sure you use ``grub-mkconfig`` to update the GRUB Bootloader. Restart Required. + +``` +sudo grub-mkconfig -o /boot/grub/grub.cfg +``` + +## You can now continue to the next page. \ No newline at end of file diff --git a/docs/docs/02-HostPreparations/03-Bridge.md b/docs/docs/02-HostPreparations/03-Bridge.md index ebc22e0..0de9cce 100644 --- a/docs/docs/02-HostPreparations/03-Bridge.md +++ b/docs/docs/02-HostPreparations/03-Bridge.md @@ -3,4 +3,54 @@ layout: default title: Part 3. Bridge Networking parent: Host Preparations nav_order: 3 ---- \ No newline at end of file +--- + +

+ +

+ +# Bridge Networking +#### Creation of the Bridge interface for your DKVM. +#### This section has been derived from the Bridge Networking Submodule. + +## Overview + +First things first, I highly recommend you take the time out of your day to not skip this process, just as you shouldn't skip over any other steps. To understand the point of a network bridge, you'll need to know that when you use QEMU or Virt-Manager to start a Virtual Machine with networking, you will typically be using the default network provided by libvirt. This creates its own DHCP server, meaning that our Machines are created with IP addresses such that, we see "192.168.68.2" or something along those lines, which does not match up with our local IPs on our broader network. The point of setting this Bridge interface up is to strip our ethernet controller of an assigned IP address and stop any other Network Managers that may be present on the users' system so that we can leverage systemd-networkd to automate the bridge creation. What it simply does, is create a new interface named "br0". It then modifies the users' current ethernet interface to "master br0", meaning that br0 is now providing the information to the users' physical ethernet interface. We then give br0 an IP address via DHCP using ipv4. When we use Virt-Manager in this configuration, we can use a bridge interface, we set it to ``br0`` and the result is our Virtual Machines now appear on the broader network as physical, real devices. Allowing SSH via and to any other devices on the LAN. + +## Prerequisites to the script + +In my opinion, this is the number one step to set up practically right after the installation of a new host operating system. Allowing your virtual machines to be visible to the broader network may seem like something you can ignore, and while you very well can... I enjoy my Virtual Machines appearing as real, physical ethernet devices. The most popular and commonly used package for managing your network connection will most likely be "NetworkManager", and this can be checked by issuing a systemctl command to check the status. + +``` +sudo systemctl status NetworkManager +``` + +If you see that it is running, you can choose to stop it but for this guide, we'll be making use of the DKVM Bridge Networking submodule. It contains a script that will quickly go through a few checks and create a bridge interface for your use. You must have systemd in some form, install it prior or check your system for systemd-networkd with the following command. + +``` +sudo systemctl status systemd-networkd +``` + +For more information and the completion of this section, refer to [Bridge Networking](https://github.com/royalgraphx/DarwinKVM/tree/main/BridgeNetworking). + +## Post installation results + +

This is the guest macOS talking to devices on the broader network.

+ +

+ +

+ +

+ +

+ +

+ +

+ +

+ +

+ +## You can now continue to the next page. \ No newline at end of file diff --git a/docs/docs/02-HostPreparations/04-PackageInstall.md b/docs/docs/02-HostPreparations/04-PackageInstall.md index c5ad49d..945c197 100644 --- a/docs/docs/02-HostPreparations/04-PackageInstall.md +++ b/docs/docs/02-HostPreparations/04-PackageInstall.md @@ -3,4 +3,25 @@ layout: default title: Part 4. Package Installation parent: Host Preparations nav_order: 4 ---- \ No newline at end of file +--- + +# Package Installation +#### Package requirements for base DKVM. +#### This section has been derived from the Configuration of libvirt section via RisingPrism. + +Since everything in this guide is outlined for simply Arch, you may need to find the package equivalent to your system. Here is the command to install all required packages. + +``` +sudo pacman -S virt-manager qemu vde2 ebtables iptables-nft nftables dnsmasq bridge-utils ovmf +``` + +Please note: Conflicts may happen when installing these programs. +A warning like the below example may appear in your terminal: + +``` +iptables and iptables-nft are in conflict. Remove iptables? [y/N] +``` + +If you do encounter this kind of message, press y and enter to continue the installation. + +## You can now continue to the next page. \ No newline at end of file diff --git a/docs/docs/02-HostPreparations/05-Libvirtd.md b/docs/docs/02-HostPreparations/05-Libvirtd.md index 22b3814..0f8dd81 100644 --- a/docs/docs/02-HostPreparations/05-Libvirtd.md +++ b/docs/docs/02-HostPreparations/05-Libvirtd.md @@ -3,4 +3,76 @@ layout: default title: Part 5. Libvirtd Configuration parent: Host Preparations nav_order: 5 ---- \ No newline at end of file +--- + +# Libvirtd Configuration +#### Necessary changes to use Virt-Manager via User. +#### This section has been derived from the Configuration of libvirt section via RisingPrism. + +{: .warning } +Adding yourself to the libvirt group allows for password-less root both from the host and guest. If you are uncomfortable with that and want to avoid this, consider using [Polkit](https://wiki.archlinux.org/title/Polkit) instead which will prompt you for your password. While this is safe for our use case, be aware of what you're doing when following guides online. + +## Modifying Files + +There are two files we must edit. Please make the changes accordingly. Not too much to say, follow this step-by-step and you'll be fine along with getting logs printed. + +### libvirtd.conf + +Use your favorite text editor to make the following changes to: +``` +/etc/libvirt/libvirtd.conf +``` + +``Read/Write permissions and Group - Uncomment the following lines.`` + +``` +unix_sock_group = "libvirt" +unix_sock_rw_perms = "0770" +``` + +``Logging - Add to the very bottom.`` + +``` +log_filters="3:qemu 1:libvirt" +log_outputs="2:file:/var/log/libvirt/libvirtd.log" +``` + +### qemu.conf + +Use your favorite text editor to make the following changes: +``` +/etc/libvirt/qemu.conf +``` + +``Read/Write permissions and Group - Uncomment and Edit the following lines to your username.`` + +``` +user = "root" +group = "root" +``` + +Example properly modified snippet: + +``` +user = "royalgraphx" +group = "royalgraphx" +``` + +## Libvirtd Services + +You now need to add your user to the kvm and libvirt groups, to allow libvirt to write files properly: + +``` +sudo usermod -a -G kvm,libvirt $(whoami) +``` + +Now enable and start the libvirtd Service to fully apply changes: + +``` +sudo systemctl enable --start libvirtd +``` + +{: .important } +If you did not set up the bridge interface and will be using Virt-Managers default NIC, you will also set the virtual networks to auto-start on boot: ```sudo virsh net-autostart default```. Skip this if you did set up the br0 interface. + +## You can now continue to the next page. \ No newline at end of file diff --git a/docs/docs/03-GatheringFiles/04-Tools.md b/docs/docs/03-GatheringFiles/04-Tools.md index 1decf1f..fae5ac6 100644 --- a/docs/docs/03-GatheringFiles/04-Tools.md +++ b/docs/docs/03-GatheringFiles/04-Tools.md @@ -3,4 +3,6 @@ layout: default title: Part 4 - Tools parent: Gathering Files nav_order: 5 ---- \ No newline at end of file +--- + +

You can now proceed to the Configs section!

\ No newline at end of file diff --git a/docs/docs/04-Configs/01-VMCascadeLake/08-UEFI.md b/docs/docs/04-Configs/01-VMCascadeLake/08-UEFI.md index 151e543..f34a45a 100644 --- a/docs/docs/04-Configs/01-VMCascadeLake/08-UEFI.md +++ b/docs/docs/04-Configs/01-VMCascadeLake/08-UEFI.md @@ -4,4 +4,6 @@ title: Part 8 - UEFI parent: Virtual Machine Cascade Lake grand_parent: Configs nav_order: 9 ---- \ No newline at end of file +--- + +

You can now proceed to the Fetching BaseSystem section!

\ No newline at end of file diff --git a/docs/docs/05-FetchingBaseSystem/01-macrecovery.md b/docs/docs/05-FetchingBaseSystem/01-macrecovery.md index abfa0c2..5bfd1e2 100644 --- a/docs/docs/05-FetchingBaseSystem/01-macrecovery.md +++ b/docs/docs/05-FetchingBaseSystem/01-macrecovery.md @@ -3,4 +3,6 @@ layout: default title: Part 1 - macrecovery parent: Fetching BaseSystem nav_order: 1 ---- \ No newline at end of file +--- + +

You can now proceed to the Installing macOS section!

\ No newline at end of file diff --git a/docs/docs/06-InstallingmacOS/05-Installation.md b/docs/docs/06-InstallingmacOS/05-Installation.md index 726cb51..3e1b4fe 100644 --- a/docs/docs/06-InstallingmacOS/05-Installation.md +++ b/docs/docs/06-InstallingmacOS/05-Installation.md @@ -3,4 +3,6 @@ layout: default title: Part 5 - Installing via recoveryOS parent: Installing macOS nav_order: 6 ---- \ No newline at end of file +--- + +

You can now proceed to the Single GPU Passthrough section! You can also follow the Dual GPU Passthrough section.

\ No newline at end of file diff --git a/docs/docs/07-SingleGPUPassthrough/03-VManUpdate.md b/docs/docs/07-SingleGPUPassthrough/03-VManUpdate.md index bc8cc04..b96e17d 100644 --- a/docs/docs/07-SingleGPUPassthrough/03-VManUpdate.md +++ b/docs/docs/07-SingleGPUPassthrough/03-VManUpdate.md @@ -3,4 +3,6 @@ layout: default title: Part 3 - Virt-Manager Configuration parent: Single GPU Passthrough nav_order: 3 ---- \ No newline at end of file +--- + +

You can now proceed to the Finish! page.

\ No newline at end of file diff --git a/docs/docs/08-DualGPUPassthrough/index.md b/docs/docs/08-DualGPUPassthrough/index.md index 7d57c79..906a6e5 100644 --- a/docs/docs/08-DualGPUPassthrough/index.md +++ b/docs/docs/08-DualGPUPassthrough/index.md @@ -10,4 +10,4 @@ has_toc: false

-Support for this section is in development. \ No newline at end of file +Support for this section is in development. The README will be available first, then it will be converted to display properly here as well. Click here to go back home. \ No newline at end of file diff --git a/docs/docs/09-Finish.md b/docs/docs/09-Finish.md index c177544..b2004b4 100644 --- a/docs/docs/09-Finish.md +++ b/docs/docs/09-Finish.md @@ -8,10 +8,9 @@ nav_order: 10

-

Thanks for reading!

For further customization please refer to Submodules

Enjoy a screenshot of Sonoma with GPU Accel. Don't forget to add the bootflag!

- +

\ No newline at end of file diff --git a/docs/index.md b/docs/index.md index f06bb08..206a079 100644 --- a/docs/index.md +++ b/docs/index.md @@ -120,4 +120,5 @@ permalink: / - Thanks for reading! +

You can now proceed to the About section!

\ No newline at end of file