The E:\amd64\w10 directory contains vioscsi and viostor drivers, but
these are already included via E:\vioscsi\w10\amd64 and
E:\viostor\w10\amd64. This duplication causes issues with Windows 11
24H2 and later.
On my machine, I do not have a `~/Public` directory, which causes
quickqemu to spit out a warning and then crash:
```console
$ quickemu --vm vm.conf
- WARNING! Public directory: '/home/jeremy/Public' doesn't exist!
Quickemu 4.9.7 using /nix/store/nk59c14nwf79bafmrsnnhndmpnrlplrv-qemu-10.1.0/bin/qemu-system-x86_64 v10.1.0
...
- 9P: On guest: sudo mount -t 9p -o trans=virtio,version=9p2000.L,msize=104857600 ~/Public
...
- Process: ERROR! Failed to start /nix/store/va3md6gv82fqf7pxbfxd0cd5gfnmnz9f-vm.conf as va3md6gv82fqf7pxbfxd0cd5gfnmnz9f-vm
qemu-system-x86_64: -netdev user,hostname=va3md6gv82fqf7pxbfxd0cd5gfnmnz9f-vm,hostfwd=tcp::22220-:22,smb=/home/jeremy/Public,id=nic: Error accessing shared directory '/home/jeremy/Public': No such file or directory
```
Here's my `vm.conf`. Note how I'm not asking for a public dir:
```
iso="/nix/store/q3j8357dz3kmyjv84wfj4pyn20b65h9l-nixos-minimal-25.11pre-git-x86_64-linux.iso/iso/nixos-minimal-25.11pre-git-x86_64-linux.iso"
```
Previously, edition fallback logic allowed downloading the correct
"graphical" ISO for 25.05 even when specifying "plasma6" or "gnome".
However, the VM_PATH and directory name still used the original edition
(e.g., nixos-25.05-plasma6). Fixing this would require more complicated
changes to the code.
NixOS 24.11 will reach EOL on 2025-06-30, about two weeks from now.
- Drop legacy 23.11 support; now only 24.11 or later is allowed
- Fallback to "graphical" edition except 24.11
- Do not display "graphical" edition to users;
it is not supported in 24.11
* fix: handle inconsistent filenaming
They name releases with a dash for mate and a dot for the others. No bets on when they notice this and make it consistent. In case they somehow get a dashed name first swap the dotty ones too.
FreeDOS does ship the Crynwr packet driver package, which does contain an
RTL8139 driver. However, you have to install the package after installing
FreeDOS, even if you performed a full install. It also seems to lock up for
me when attempting to load it.
The PCNet packet driver on the other hand, is installed with a full FreeDOS
install, is open source, and does work, at least for me.
* fix: Check for PipeWire as well as PulseAudio before falling back to ALSA
* fix: Use PipeWire backend if available, and where QEMU version is >8.1
Co-authored-by: Liam <33645555+lj3954@users.noreply.github.com>
---------
Co-authored-by: Liam <33645555+lj3954@users.noreply.github.com>
The latest Solus release has changed the naming of ISOs:
- Update all related functions to support the ISO name
format used in the latest release.
- Use the directory listings in order to support more releases in the future.
The static list included a release that has been removed
and also hard coded mappings for 2023 and 2024. This dynamically determines the latest two years
and finds available releases in those years, so will still provide reasonable service next year.
* fix(fedora): Check whether the link value contains an actual .iso file
Also remove the SHA256 requirement. Fedora provides these for all links
now.
Fixes#1502
* refactor(fedora): Use more concise function to filter out non-ISO files
---------
Co-authored-by: Liam <33645555+lj3954@users.noreply.github.com>
* fix(fedora): handle the space in the beta release
fixes#1462
adjust the RELEASE to remove and replace the space
* fix(fedora): only list available editions where a release is selected
fixes#1493
* proper fix for 'editions'
quotes needed on editions function call to prevent globbing ....
* fix archcraft download
otherwise just downloads with filename 'download' without even a .iso extension
* refactor: Use web_redirect function to get archcraft URL
---------
Co-authored-by: Liam <33645555+lj3954@users.noreply.github.com>
* fix: blendOS now has a single current iso
Select a reasonable mirror as the old choice is unreliable
Co-authored-by: Liam <33645555+lj3954@users.noreply.github.com>
* docs: Simplify make rules for pandoc
This removes a --standalone duplicate and counter-productive
indirections like $(MANSECTION) because it prevents having more
than one and docs/Makefile hardcodes the section anyway.
* docs: Move quickemu_conf manual to section 5
Where it technically belongs... With the new make rules for pandoc, it's
actually much easier to manage manuals in several sections without much
overhead.
* docs: Remove potential quickemu_conf.1 leftover
* Set RTC to localtime only for Windows/ReactOS/DOS and UTC for all other OS
Windows/ReactOS/DOS conventionally set the system RTC to local time, but Linux/UNIX/macOS use UTC. Guest systems that expect UTC and have the time zone set to local time will have the wrong system clock time at startup until they set the clock with NTP. This is especially an issue for disk images imported from or shared with another VM configuration that uses UTC for non-Windows guests.
* Removed RTC driftfix option for non-Windows/ReactOS/DOS guests
According to the QEMU man page:
Enable driftfix (i386 targets only) if you experience time
drift problems, specifically with Windows' ACPI HAL. This
option will try to figure out how many timer interrupts were
not processed by the Windows guest and will re-inject them.
This option thus seems unnecessary for other systems and may cause
performance or timekeeping issues, so enable only for
Windows/ReactOS/DOS.
move code necessary for creation of unattended.iso for windows 10 and 11
inside unattended_windows function
Change parameter required for unattended_windows function from
autounattend.xml file to $VM_PATH
When RAM is not specified in the config and the min RAM is not met, quickemu tells the user to override the RAM amount and exits.
If the user overrides the RAM, the script should allow the user to continue with a warning.
quickemu has long hand command line arguments only. This commit removes the short hand arguments from the expanded capabilities introduced in quickget 4.9.3, so that both tools have a consistent user experience.
man pages so far retain much of the installation and usage detail.
The README.md is now not really requiring regeneration as all the details
are referenced in the wiki. It will be added in a seperate commit which can be ignored
but serves to show the 'corrections' and style tweaks imposed by pandoc. These principally are line length and whitespace,
with some markdown pedantry
* urgent fix for sonoma and #1114
(cherry picked from commit 960c34eca9)
* improved macos fix
Should also work on AMD RYZEN but please re-test
Same lines as already Ryzen tested but further testing on older ryzen and notebooks would be a good idea
improves on #1116
hopefull solves any other issues from #1114
(cherry picked from commit e4b876c2ef)
* MacOs update variant using more Haswell
See #1117
This generate too much noise in pull-requests making it is impossible to review changes. Will re-enalble when quickemu and quickget have zero sheelcheck issues
The instructions for git clone is missing one step: sudo make install. This required me to examine the makefile targets and figure it out for myself. Not so bad for me, but others may be confused about what to do.
A recent macOS Sonoma update included a change to the handling of USB controllers that made the virtual keyboard and mouse inoperative. Changing the USB controller from ehci to xhci fixes it. This change also works for Big Sur and later, so the USB controller is set to xhci for Big Sur through Sonoma.
This adds disk_format=${disk_format:-qcow2} variable that defaults to
qcow2 format, so the vm.conf files can use $disk_format to specify the
format of the $disk_img when this is different from the default qcow2.
* Add windows languages, many bugfixes
Entering a release, edition, or OS with only part of a valid one will now throw an error, rather than attempting to download
i.e. $quickget windows 1 > "ERROR! Windows 1 is not a supported release", rather than attempting to download a nonexistent ISO
* Replace "languages" with "editions" to improve consistency
* Remove unnecessary code, hardcode windows editions to not waste time
* Add windows server, LTSC
* Windows server requires IDE drive
* Update Windows Guests section in README.md
* Improve support for windows server
Add back the language array, change stylization of languages in list
* Fix quickget show-iso-url and test-iso-url creating unnecessary directory
* Beautify output, add show-iso-url and test-iso-url for Windows (fully) and macOS (sorta)
* (NON-FUNCTIONAL) macrecovery shell script.
* Semi-functional (although incomplete) macrecovery shell script
Rough draft. To be completed, cleaned up and simplified (very much so)
hoping to merge into quickemu & replace the python macrecovery dependency.
* macrecovery shell script now successfully downloads the image. TODO: Verification
* Merged macrecovery functions into quickget. Chunkcheck (C) to replace macrecovery's image verification
Chunkcheck written by MCJack123: https://gist.github.com/MCJack123/943eaca762730ca4b7ae460b731b68e7
* Replace C chunkcheck binary with the Python equivalent. Re-add python to dependencies.
* force macOS guests to usually boot with core counts which are powers of 2; fix#865
* Add support for macOS Sonoma
* Fix issue where script would be unable to find chunkcheck if installed system-wide
* Update README verbiage
* Add headers to web_get function; macOS can now be downloaded via aria2; clean up code & output
* Add support for macOS Sonoma
* Fix use of wrong operator (>) which touches a file
* Small correction to README
* macOS switched from wget to default downloader (aria2/wget)
* Replace wget with cURL for downloading macOS chunklist file
* Fix variable naming in generate_id function
* Automatic fetching of ubuntu versions
* Fix displaying ubuntu versions
* Update quickget
* Updated quickget
- Remove obsolete daily-legacy
- Add error if desktop amd64 build do not exist as in current status
* Allow 'daily' as a valid release for ubuntu family
* Better logic to fetch Ubuntu-server & failsafe
This implementation is based on Mido:
- https://github.com/ElliotKillick/Mido
More useful failure messages are presented and if the download is blocked clear steps to manually complete the setup are presented. Windows 8 is re-instated as a supported release, although without install automation or driver optimisation.
Gentoo DIGESTS file contains BLAKE2B and SHA512 hashes. Since BLAKE2B comes first in the file, it was incorrectly selected when checking SHA512 checksum.
Added new configuration file option "sound_card" and new command-line
switch "--sound-card" to change the virtual sound hardware. Allowed
options are "intel-hda" (default), "ac97", "es1370", "sb16", and "none".
Also changed default sound card for Solaris to "ac97" and for FreeDOS to
"sb16".
* fix ubuntu eol releases
Signed-off-by: Basil K Y <techiebasil@gmail.com>
* fix hash check when using MD5
---------
Signed-off-by: Basil K Y <techiebasil@gmail.com>
Rackspace's mirror network is geographically distributed. Requesting
the mirror.rackspace.com endpoint will point you at the closest mirror
to your location. It will even route you to the next nearest mirror in
the case of an outage. Hard coding this to the lon.mirror.rackspace.com
endpoint forces every user to route through London, regardless of their
location.
Otherwise they refuse to install. Added some overhead to allow for trying package updating and installation as well.
daily-canary appears to have returned as well
On Big Sur and up apple includes the VirtIO driver and therefore the install disk is named
Apple Inc. VirtIO Block Device instead of QEMU HARDDISK Media.
This PR lets the documentation reflect that.
* Add initial Solaris/Illumos support
* Fix OpenIndiana kernel panic on boot
The OpenIndiana kernel panics on boot in the AHCI driver. Switching the
machine type from "q35" to "pc" seems to fix the issue.
* Fix Illumos/OpenIndiana USB controller issue.
* Add openindiana support
* Updated quickget with current OpenIndiana release
* Change OpenIndiana video card to vmware-svga
OpenIndiana's default Xorg configuration doesn't work with QXL, virtio,
or VGA, but it does with vmware-svga.
* Updated man pages for OpenIndiana support
* Changed default Solaris/OpenIndiana boot to legacy
The OpenIndiana installer defaults to MBR partition table and BIOS boot
code even in EFI mode, so changed quickget to set 'boot="legacy"' in the
configuration file.
---------
Co-authored-by: Phil Clifford <philip.clifford@gmail.com>
If you have set a download directory in aria2's config, quickget will
download files to the wrong directory. This overwrites that setting and
downloads files to the correct location.
Quote from `aria2c(1)`:
> `-o, --out=<FILE>`
> The file name of the downloaded file. It is
> always relative to the directory given in
> `--dir` option.
Also support their .bz2 compressed isos, giving access to all releases
back to 2017.
Removing (or making optional) the .bz2 in the search
will just return the current iso
This obsoletes #675 but in case that gets closed
here's an attempt to acknowlege a valuable heads-up.
Co-authored-by: Kurt Kremitzki <kremitzki@users.noreply.github.com>
* make OpenBSD release list dynamic
* Regenerated docs for 4.4 Release
README and man pages regenerated incorporating documentation updates from Release 4.4
* FreeBSD 13.1 released
Release avaiability made dynamic
macOS refuses to enable TRIM on any disk models that are not in Apple's verified approval list. However, there is a command that you can run via `sudo` to forcibly tell macOS to enable TRIM even though the disk model is unsupported by Apple.
Here we add the instructions to `README.md` for forcibly enabling TRIM support.
In a previous commit we dropped usage of VirtIO Block Media from backing the hard disk device in macOS guests. The instructions therefore are updated here to drop the split between macOS versions that we had previously enabled VirtIO Block Media disks and those we didn't. This simplifies the instructions to a single hard disk name for all supported macOS version installations.
The previous commit removes our usage of VirtIO Block Media as a backing for the macOS hard disk. We therefore need to drop our descriptions of this functionality now we're not using it any more.
Currently, the virtio specification does not include provision for the TRIM (aka DISCARD) command that allows a guest operating system to signal the disk hardware that blocks have become unused so that the underlying device may clear the physical data.
The TRIM/DISCARD command was introduced for SSD disks as an extension to the AHCI specification that is used in SATA systems.
With Virtual Machines we can use this command to tell QEMU's Qcow2 driver to reclaim unused space in the disk image. This ensures the disk image file is kept to the smallest size possible where without the TRIM/DISCARD command it grows to it's maximum configured size and never shrinks again when data is deleted.
Let's swap our default disk driver from `virtio-blk-pci` which does not support TRIM to `ahci` which does.
(We cannot use `virtio-scsi-pci` when running macOS, like we do in our default disk device, because macOS does not support SCSI disks at all on x86_64 systems.)
Currently, the virtio specification does not include provision for the TRIM (aka DISCARD) command that allows a guest operating system to signal the disk hardware that blocks have become unused so that the underlying device may clear the physical data.
The TRIM/DISCARD command was introduced for SSD disks as an extension to the AHCI specification that is used in SATA systems.
With Virtual Machines we can use this command to tell QEMU's Qcow2 driver to reclaim unused space in the disk image. This ensures the disk image file is kept to the smallest size possible where without the TRIM/DISCARD command it grows to it's maximum configured size and never shrinks again when data is deleted.
Let's swap our default disk driver from `virtio-blk-pci` which does not support TRIM to `virtio-scsi-pci` which does.
The CDN we were using in QuickGet only carries version 7.0 and 7.1. By switching to a different CDN provided for the OpenBSD Community (listed on https://www.openbsd.org/ftp.html) we can regain access to version 6.8 and 6.9.
Include change from PR 548
- replace shallow with unblobby clone
Catch up with macOS note from merged PR 559
- note on macOS filesystems
Co-authored-by: giladwo <giladwo@users.noreply.github.com>
Co-authored-by: tinsami1 <tinsami1@users.noreply.github.com>
author Phil Clifford <philip.clifford@gmail.com> 1645494694 +0000
committer Phil Clifford <philip.clifford@gmail.com> 1645926095 +0000
rebasing upstream while trying to keep up
QEMU 7.0 introduces a change/regression where it is not possible to use GL accerlation via GTK/SDL displays and also bring up SPICE: https://gitlab.com/qemu-project/qemu/-/issues/1036
This patch prevents Quickemu from bringing up SPICE when GTK or SDK are selected as the display.
Run QEMU with '-vga none' to avoid having two scanouts, one for VGA and another for virtio-vga-gl.
- Workaround for a GTK assertion failure in gtk_widget_get_realized().
- Allows seamless mouse in macOS when using the qxl-vga device.
- Enables sane default resolutions in all support macOS versions.
* Add spice-app as display option
* Rework how we set the default OUTPUT
variable display is never set and display_param_check is already checked when parsing options
* enable overriding the gl param
3d acceleration is not stable on some setups (looking at you, nvidia)
Co-authored-by: Matej <spindler.matej@gmail.com>
For windows downloads hashes aren't validated via hashes. Let's at least
validate that downloads are coming from microsoft via https.
Signed-off-by: Steffen Dirkwinkel <me@steffen.cc>
* Extra OVMF search paths needed for Solus
who have moved things around
also spotted a possible typo to investigate in the void additions
* Revert "updated submodule position"
This reverts commit 9648f79b81b5e72465785993bc62469130ac848f.
* minor cleanup
* try realign submodule backwards
- add support to choose preferred usb-controller either ehci (USB2.0) or xhci (USB 3.0)
- add support to choose preferred keyboard either ps2, usb or virtio
- add support to choose preferred keyboard-layout
- add support to choose preferred mouse either ps2, usb, tablet, virtio
- fix some bugs regarding missing variables - releated to MONTITOR_TELNET_* and SERIAL_TELNET_*
- Support implemented on commandline as well as for configuration file
- support commandline parameter --serial, --serial-telnet-host and
--serial-telnet-port
- support serial options: 'socket', 'telnet' and 'none'
- add support to find free ports for monitor-telnet and serial-telnet
- replace nc with socat
- change default port for monitor-telnet to 4440
- some bugfix
- Add commandline parameter --public-dir for custom directory
- Add commandline parameter --monitor for qemu-monitor support
- Add commandline parameter --monitor-telnet-host and --monitor-telnet-port to configure qemu-monitor via telnet
- <VMNAME>.ports enhanced to provide data for monitor-telnet
- Support implemented on commandline as well as for configuration file
- Fixed bug regarding extra_args
- add suport for custom ssh-port and spice-port
- add suport for alternate viewer: 'remote-viewer' and 'none'
- support implemented on commandline as well as for configuration file
* fix get_opensuse hash
* fix rockylinux hash
there was a iso.manifast in the hash file as well which caused issue with hash output
Co-authored-by: takov751 <takov751@protonmail.com>
* add build-doc submodule
* updated generated README.md via submodule
* trying to keep up... re-generating
* updated submodule position
* regenerated with fixed braille parameter
* keeping up
* revert README.md to upstream for noise-suppression
* merged prettyname fixes
* update ubuntu releases from name to number
* generated man pages added
* updated dates and tidy footers
* reflect removal of localiso feature
* trying to keep up... re-generating
* merged up to 4ec224c and regenerated
* minor removal ommission fixed
* Regenerated README.md added
only significant difference is Slackware display name is
as per quickget
* change variant to edition per refactoring
* updated manuals with new braille parameter
* updated generated Readme with new braille parameter
* keepeing up
* revert README.md to upstream for noise-suppression
* fixed pretty name issue in manuals
* fixed pretty name issues in Readme
* fixed conflict
* update ubuntu releases from name to number
* Add support for FreeDOS 1.2 to quickget
* Add support for freedos guests to quickemu
* Add support for FreeDOS 1.3 to quickget
* Force qemu to keep booting from cd after formatting disk
* Adjust VM settings
* Refactor FreeDOS to use create_vm
* Add FreeDOS to README
* Add unzip to README as a dependency
* Ensure Ubuntu releases are all downloaded via HTTPS URLs
* Add eol-4.10 thru to eol-21.10 releases for Ubuntu
* Add special handling of MD5SUMS-only Ubuntu releases on old-releases.ubuntu.com
* Add detection of Ubuntu `*-install.iso` files for very early Ubuntu releases
Signed-off-by: Dani Llewellyn <diddledani@ubuntu.com>
The get_() function for macOS, Windows and Ubuntu are more complete because they do not solely use wget/aria2.
Their get_() functions include the code to create VMs and therefore do not use the generic create_vm() helper.
validate_release() is called automatically before get_(), this removes some bioler plate that every get_() function requires and makes quickget easier to maintain.
Makes quickget much easier to maintain.
Add "editions" generators for those OSs that have editions, such as Linux Mint and MX Linux.
Use introspection to automatically parse editions and call the appropriate get_() and releases_() functions.
Drop non-free support, that is irrelevant in a VM. releases_debian() lists actual releases and get_debian() support the different desktop edition, which are exposed in the csv/json lists.
* add Slackware as supported OS
* fix checksum check for Slackware
* add Slackware as supported OS
* fix checksum check for Slackware
* fix case with new format
* Add extra_args option in vm conf file
I added this simple piece of code for any extra arguments one wants to use.
You just add extra_args variable to your vm conf file.
ex. add host disk partition
extra_args="-drive file=/dev/sdb2,cache=none,if=virtio"
This is the easiest way to "extend" quickemu functionality.
* add missing variable
Mixing an option parser with the existing argv/arvc style parser creates a confusing set of conditionals with large if/then inside a case statement.
On reflection, I don't think this feature has a place in quickget. For anyone with existing iso image, quickemu configurations can be hand crafted. Perhaps the additional of a "quickconf" would be a better way to quickly create VM configs from existing ISO images.
* Readme regenerated
Generated version includes missing parts of the
now extensive supported guest catalogue.
* A little markdown linting
* some of the lint was better
* missing BSD bit replaced
* Accessibility enhancement noted
* # This is a combination of 3 commits.
# This is the 1st commit message:
Readme regenerated
Generated version includes missing parts of the
now extensive supported guest catalogue.
# This is the commit message #2:
A little markdown linting
# This is the commit message #3:
some of the lint was better
* Start adding params for existing isos
* Merge parameter handling code
* initial testing seems reasonable
Note that if copying files in, "wget -c " will assume
smaller-than-remote files are parts and continue
so likely will cause hashing failures
or if no hash check then corrupt isos.
* Added usage for --help
* Usage enhanced and added to Readme
* spurios unused cruft removed
* Fixed race
adding belts and braces
* Removed debugging and cruft
* Not yet able to cache windows because windows
* Working for cached macos
with limitations
* Removed big list of itemised defaults
There are list() functions and docs - spelling out the list of
OS options here just adds work and maintenance overhead.
* Removed misleading chatter
Already took out the incorrect phrasing. With most now
being default the output is over-noisy and probably unhelpful.
* Add support for braille terminal
fixes#307
* Add braille to Readme
* quote tidying
* currently requires sdl display
noted in the docs rather than forcing so if Qemu and/or brtty provide
a solution we will get immediate or easy benefit.
* add needed sdl to braille examples
* Start adding params for existing isos
* Merge parameter handling code
* initial testing seems reasonable
Note that if copying files in, "wget -c " will assume
smaller-than-remote files are parts and continue
so likely will cause hashing failures
or if no hash check then corrupt isos.
* Added usage for --help
* Usage enhanced and added to Readme
* spurios unused cruft removed
* Replace multiple if statements with case and OR
* Fix case statement per review suggestion
* Added default fallback for undefined OSs
Co-authored-by: Martin Wimpress <304639+flexiondotorg@users.noreply.github.com>
Haiku is incompatible with the q35 machine type, as it emulates a ICH9
host chipset. Instad, the "pc" machine type needs to be used (emulates
I44FX).
https://wiki.qemu.org/Features/Q35
CD-ROM (iso), Disk, Internet and Audio are working now.
Also added forced LiveCD booting (because release named latest-iso, not latest-img).
Did some tweaks with '-machine' and '-cpu'. Now these VMs will run with 'qemu32' processor since KolibriOS throw an MTRR error (I didnt get how to fix it by any other way).
This should help users of Quickemu on distros where OVMF/EDK2/QEMU don't provide a complete SecureBoot with SMM capability, such as Arch Linux, to successfully install Windows 11.
ProtectYourPC=3 enforces the most privacy respecting options, without prompting the user during install.
The combination of HideOEMRegistrationScreen=true and NeworkLocation=Home with HideLocalAccountScreen=false and HideOnlineAccounts=false allows for local and online account creation but prevents scenarios where online account only authentication is made a hard requirement.
SkipUserOOBE and SkipMachineOOBE are documented as deprecated, but both must be set to false otherwise the install will complete automatically without creating any user accounts, of any kind.
Thanks for submitting your first issue to the Quickemu project 🐛 We'll try and take a look at your issue soon ⏲
In the meantime you might want to join the [Wimpys World Discord](https://wimpysworld.io/discord) 🗣 where we have a large community of Linux 🐧 enthusiasts and passionate open source developers 🧑💻
You might also be interested in following [Wimpys World Twitch 📡 channel](https://twitch.tv/WimpysWorld) where Wimpy streams let's code video, including this project, several times a week. A back catalog of past live stream and other Linux related content is available on [Wimpys World YouTube 📺 channel](https://youtube.com/WimpysWorld).
pr-message:|
Hello there 👋
Thanks for submitting your first pull request to the Quickemu project 💪 We'll try to review your pull request soon ⏲
In the meantime you might want to join the [Wimpys World Discord](https://wimpysworld.io/discord) 🗣 where we have a large community of Linux 🐧 enthusiasts and passionate open source developers 🧑💻
You might also be interested in following [Wimpys World Twitch 📡 channel](https://twitch.tv/WimpysWorld) where Wimpy streams let's code video, including this project, several times a week. A back catalog of past live stream and other Linux related content is available on [Wimpys World YouTube 📺 channel](https://youtube.com/WimpysWorld).
- Help other Quickemu users by answering questions in the [Quickemu Discussions](https://github.com/quickemu-project/quickemu/discussions) 🛟
- Improve the documentation in [this README](https://github.com/quickemu-project/quickemu/edit/master/README.md) and the [Quickemu Wiki](https://github.com/quickemu-project/quickemu/wiki) 📖
- File bug reports and feature requests in the [Quickemu Issues](https://github.com/quickemu-project/quickemu/issues) 📁
- Submit [Quickemu Pull requests](https://github.com/quickemu-project/quickemu/pulls) to fix bugs 🐞 or add new features ✨
- Follow our [guide to adding a new OS to quickget](https://github.com/quickemu-project/quickemu/wiki/06-Advanced-quickget-features#adding-a-new-os-to-quickget)
- Commit messages must [conform to the Conventional Commits specification](https://www.conventionalcommits.org/).
- [Sponsor the project](https://github.com/sponsors/flexiondotorg) 💖
**Quickly create and run optimised Windows, macOS and Linux virtual machines:**
**Made with 💝 for <imgsrc=".github/tux.png"align="top"width="24"alt="Tux (Linux)"/>&<imgsrc=".github/apple.png"align="top"width="24"alt="Apple (macOS)"/>**
where the virtual machines and their configuration can be stored anywhere (such
as external USB storage or your home directory) and no elevated permissions are
required to run the virtual machines.
**Today, Quickemu includes comprehensive support for [macOS](https://github.com/quickemu-project/quickemu/wiki/03-Create-macOS-virtual-machines),
[Windows](https://github.com/quickemu-project/quickemu/wiki/04-Create-Windows-virtual-machines)**, most of the BSDs, novel non-Linux operating systems such as FreeDOS, Haiku, KolibriOS, OpenIndiana, ReactOS, and more.
# Features
- Host support for **Linux and macOS**
- **macOS** Sonoma, Ventura, Monterey, Big Sur, Catalina & Mojave
- **Windows** 10 and 11 including TPM 2.0
- **Windows Server** 2022 2019 2016
- [Ubuntu](https://ubuntu.com/desktop) and all the **[official Ubuntu
flavours](https://ubuntu.com/download/flavours)**
- **Nearly 1000 operating system editions are supported!**
- Full SPICE support including host/guest clipboard sharing
- VirtIO-webdavd file sharing for Linux and Windows guests
- VirtIO-9p file sharing for Linux and macOS guests
- Samba file sharing for Linux, macOS and Windows guests (*if `smbd`
is installed on the host*)
- VirGL acceleration
- USB device pass-through
- Smartcard pass-through
- Automatic SSH port forwarding to guests
- Network port forwarding
- Full duplex audio
- Braille support
- EFI (with or without SecureBoot) and Legacy BIOS boot
## As featured on [Linux Matters](https://linuxmatters.sh) podcast!
The presenters of Linux Matters 🐧🎙️ are the creators of each of the principal Quickemu projects. We discussed Quickemu's 2024 reboot in [Episode 30 - Quickemu Rising From the Bashes](https://linuxmatters.sh/30). <!-- and in [Episode 32 - Quick, quicker, quickest](https://linuxmatters.sh/32)[Martin](https://github.com/flexiondotorg) unveils macOS host support for [**Quickemu**](https://github.com/quickemu-project/quickemu), [Mark](https://github.com/marxjohnson) explains the origins of the [**Quickgui**](https://github.com/quickemu-project/quickgui) desktop app and upcoming improvements, and [Alan](https://github.com/popey) debuts [**Quicktest**](https://github.com/quickemu-project/quicktest); a framework for automatically testing operating systems via Quickemu -->
[Once Quickemu is installed](https://github.com/quickemu-project/quickemu/wiki/01-Installation), there are two simple steps to create and run a virtual machine:
- `quickget` automatically downloads the ISO image for the operating system you want to run and creates a configuration file for the virtual machine.
``` shell
quickget nixos unstable minimal
```
The original objective of the project was to enable quick testing of Linux
distributions where the virtual machine configurations can be stored anywhere,
such as external USB storage or your home directory, and no elevated permissions
are required to run the virtual machines. **Quickemu now also includes
comprehensive support for macOS and Windows**.
- `quickemu` starts the virtual machine using the configuration file created by `quickget`.
## Features
* **macOS** Monterey, Big Sur, Catalina, Mojave & High Sierra
* **Windows** 8.1, 10 and 11 including TPM 2.0
* [Ubuntu](https://ubuntu.com/desktop) and all the **[official Ubuntu flavours](https://ubuntu.com/download/flavours)**
* [Debian](https://www.debian.org/) (bullseye with all the official and non-free DE variants)
* Full SPICE support including host/guest clipboard sharing
* VirtIO-webdavd file sharing for Linux and Windows guests
* VirtIO-9p file sharing for Linux and macOS guests
* [QEMU Guest Agent support](https://wiki.qemu.org/Features/GuestAgent); provides access to a system-level agent via standard QMP commands
* Samba file sharing for Linux, macOS and Windows guests (*if `smbd` is installed on the host*)
* VirGL acceleration
* USB device pass-through
* Smartcard pass-through
* Automatic SSH port forwarding to guests
* Network port forwarding
* Full duplex audio
* EFI (with or without SecureBoot) and Legacy BIOS boot
* Graphical user interfaces available
Quickemu is a wrapper for the excellent [QEMU](https://www.qemu.org/) that
attempts to automatically *"do the right thing"*, rather than expose exhaustive
configuration options.
We have a Discord for this project: [](https://discord.gg/sNmz3uw)
See this (old) video where I explain some of my motivations for creating Quickemu.
[](https://www.youtube.com/watch?v=AOTYWEgw0hI)
While `quickemu` and `quickget` are designed for the terminal, a graphical user interface is also available:
# Documentation
* **[Quickgui](https://github.com/quickgui/quickgui)** by [Mark Johnson](https://github.com/marxjohnson) and [Yannick Mauray](https://github.com/ymauray).
The wiki describes how to get up and running with Quickemu and also covers more advanced configuration and usage.
Many thanks to [Luke Wesley-Holley](https://github.com/Lukewh) and
[Philipp Kiemle](https://github.com/daPhipz) for creating the
* Install the SPICE agent (`spice-vdagent`) to enable copy/paste and USB redirection.
* Install the SPICE WebDAV agent (`spice-webdavd`) to enable file sharing.
## BSD Guests
`quickget` also supports:
* `freebsd`
* `openbsd`
## macOS Guest
`quickget` automatically downloads a macOS recovery image and creates a virtual
machine configuration.
```bash
quickget macos catalina
quickemu --vm macos-catalina.conf
```
macOS `high-sierra`, `mojave`, `catalina`, `big-sur` and `monterey` are supported.
* Use cursor keys and enter key to select the **macOS Base System**
* From **macOS Utilities**
* Click **Disk Utility** and **Continue**
* On macOS Catalina, Big Sur & Monterey
* Select `Apple Inc. VirtIO Block Media` from the list and click **Erase**.
* On macOS Mojave and High Sierra
* Select `QEMU HARDDISK Media` (~103.08GB) from the list and click **Erase**.
* Enter a `Name:` for the disk and click **Erase**.
* Click **Done**.
* Close Disk Utility
* From **macOS Utilities**
* Click **Reinstall macOS** and **Continue**
* Complete the installation as you normally would.
* On the first reboot use cursor keys and enter key to select **macOS Installer**
* On the subsequent reboots use cursor keys and enter key to select the disk you named
The default macOS configuration looks like this:
```bash
guest_os="macos"
img="macos-catalina/RecoveryImage.img"
disk_img="macos-catalina/disk.qcow2"
macos_release="catalina"
```
* `guest_os="macos"` instructs Quickemu to optimise for macOS.
* `macos_release="catalina"` instructs Quickemu to optimise for a particular macOS release.
* For example VirtIO Network and Memory Ballooning are available in Big Sur and newer, but not previous releases.
* And VirtIO Block Media (disks) are supported/stable in Catalina and newer.
### macOS compatibility
There are some considerations when running macOS via Quickemu.
* Supported macOS releases:
* High Sierra
* Mojave
* Catalina **(Recommended)**
* Big Sur
* Monterey
* `quickemu` will automatically download the required [OpenCore](https://github.com/acidanthera/OpenCorePkg)
bootloader and OVMF firmware from [OSX-KVM](https://github.com/kholia/OSX-KVM).
* Optimised by default, but no GPU acceleration is available.
* Host CPU vendor is detected and guest CPU is optimised accordingly.
* [VirtIO Block Media](https://www.kraxel.org/blog/2019/06/macos-qemu-guest/) is used for the system disk where supported.
* [VirtIO `usb-tablet`](http://philjordan.eu/osx-virt/) is used for the mouse.
* VirtIO Network (`virtio-net`) is supported and enabled on macOS Big Sur and newer but previous releases use `vmxnet3`.
* VirtIO Memory Ballooning is supported and enabled on macOS Big Sur and newer but disabled for other support macOS releases.
* USB host and SPICE pass-through is:
* UHCI (USB 2.0) on macOS Catalina and earlier.
* XHCI (USB 3.0) on macOS Big Sur and newer.
* Display resolution can only be changed via macOS System Preferences.
* Full Duplex audio works on macOS High Sierra, Mojave and Catalina.
* **macOS Big Sur and Monterey have no audio at all**.
* File sharing between guest and host is available via [virtio-9p](https://wiki.qemu.org/Documentation/9psetup) and [SPICE webdavd](https://gitlab.gnome.org/GNOME/phodav/-/merge_requests/24).
* Copy/paste via SPICE agent is **not available on macOS**.
## Windows 8.1, 10 & 11 Guests
`quickget` can automatically download Windows 8.1, [Windows 10](https://www.microsoft.com/en-gb/software-download/windows10ISO)
and [Windows 11](https://www.microsoft.com/en-gb/software-download/windows11)
along with the [VirtIO drivers for Windows](https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/)
and creates a virtual machine configuration.
**During the Windows install network interfaces are completely disabled!** This
is to allow those users who want to create local accounts to do so. A side affect
is that the first time **Windows boots with the QEMU network enabled it will blue
screen, automatically restart and then start normally with fully functioning
networking**.
```bash
quickget windows 11
quickemu --vm windows-11.conf
```
* Complete the installation as you normally would.
* All relevant drivers and services should be installed automatically.
### Regional versions
By default `quickget` will download the *"English International"* release, but
you can optionally specify one of the supported languages: For example:
```bash
quickget windows 11 "Chinese (Traditional)"
```
The default Windows 11 configuration looks like this:
Here are the versions of Quickemu currently being supported with security updates.
| Version | Supported |
| ------- | ------------------ |
| 4.9.x | :white_check_mark: |
| <4.8|:x:|
## Reporting a Vulnerability
If you discover a vulnerability in Quickemu then [file an issue](https://github.com/quickemu-project/quickemu/issues/new) and click *Report a vulnerability*.
- Quickemu is a spare-time hobby project.
- We do not have SLAs for responding to security issues.
provides access to a system-level agent via standard QMP commands
- Samba file sharing for Linux, macOS and Windows guests (*if `smbd` is
installed on the host*)
- VirGL acceleration
- USB device pass-through
- Smartcard pass-through
- Automatic SSH port forwarding to guests
- Network port forwarding
- Full duplex audio
- Braille support
- EFI (with or without SecureBoot) and Legacy BIOS boot
## As featured on [Linux Matters](https://linuxmatters.sh) podcast!
The presenters of Linux Matters 🐧🎙️ are the creators of each of the
principle Quickemu projects. We discussed Quickemu's 2024 reboot in
[Episode 30 - Quickemu Rising From the
Bashes](https://linuxmatters.sh/30).
<!-- and in [Episode 32 - Quick, quicker, quickest](https://linuxmatters.sh/32)[Martin](https://github.com/flexiondotorg) unveils macOS host support for [**Quickemu**](https://github.com/quickemu-project/quickemu), [Mark](https://github.com/marxjohnson) explains the origins of the [**Quickgui**](https://github.com/quickemu-project/quickgui) desktop app and upcoming improvements, and [Alan](https://github.com/popey) debuts [**Quicktest**](https://github.com/quickemu-project/quicktest); a framework for automatically testing operating systems via Quickemu -->
`quickget` automatically downloads a macOS recovery image and creates a
virtual machine configuration.
``` shell
quickget macos big-sur
quickemu --vm macos-big-sur.conf
```
macOS `mojave`, `catalina`, `big-sur`, `monterey`, `ventura` and
`sonoma` are supported.
- Use cursor keys and enter key to select the **macOS Base System**
- From **macOS Utilities**
- Click **Disk Utility** and **Continue**
- Select `QEMU HARDDISK Media` (~103.08GB) from the list (on Big Sur
and above use `Apple Inc. VirtIO Block Device`) and click
**Erase**.
- Enter a `Name:` for the disk
- If you are installing macOS Mojave or later (Catalina, Big Sur,
Monterey, Ventura and Sonoma), choose any of the APFS options as
the filesystem. MacOS Extended may not work.
- Click **Erase**.
- Click **Done**.
- Close Disk Utility
- From **macOS Utilities**
- Click **Reinstall macOS** and **Continue**
- Complete the installation as you normally would.
- On the first reboot use cursor keys and enter key to select **macOS
Installer**
- On the subsequent reboots use cursor keys and enter key to select
the disk you named
- Once you have finished installing macOS you will be presented with an
the out-of-the-box first-start wizard to configure various options and
set up your username and password
- OPTIONAL: After you have concluded the out-of-the-box wizard, you may
want to enable the TRIM feature that the computer industry created for
SSD disks. This feature in our macOS installation will allow QuickEmu
to compact (shrink) your macOS disk image whenever you delete files
inside the Virtual Machine. Without this step your macOS disk image
will only ever get larger and will not shrink even when you delete
lots of data inside macOS.
- To enable TRIM, open the Terminal application and type the following
command followed by pressing <kbd>enter</kbd> to tell macos to use
the TRIM command on the hard disk when files are deleted:
``` shell
sudo trimforce enable
```
You will be prompted to enter your account's password to gain the
privilege needed. Once you've entered your password and pressed
<kbd>enter</kbd> the command will request confirmation in the form of
two questions that require you to type <kbd>y</kbd> (for a "yes"
response) followed by <kbd>enter</kbd> to confirm.
If you press <kbd>enter</kbd> without first typing <kbd>y</kbd> the
system will consider that a negative response as though you said "no":
``` plain
IMPORTANT NOTICE: This tool force-enables TRIM for all relevant attached devices, even though such devices may not have been validated for data integrity while using TRIM. Use of this tool to enable TRIM may result in unintended data loss or data corruption. It should not be used in a commercial operating environment or with important data. Before using this tool, you should back up all of your data and regularly back up data while TRIM is enabled. This tool is provided on an "as is" basis. APPLE MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, REGARDING THIS TOOL OR ITS USE ALONE OR IN COMBINATION WITH YOUR DEVICES, SYSTEMS, OR SERVICES. BY USING THIS TOOL TO ENABLE TRIM, YOU AGREE THAT, TO THE EXTENT PERMITTED BY APPLICABLE LAW, USE OF THE TOOL IS AT YOUR SOLE RISK AND THAT THE ENTIRE RISK AS TO SATISFACTORY QUALITY, PERFORMANCE, ACCURACY AND EFFORT IS WITH YOU.
Are you sure you with to proceed (y/N)?
```
And a second confirmation once you've confirmed the previous one:
``` plain
Your system will immediately reboot when this is complete.
Is this OK (y/N)?
```
As the last message states, your system will automatically reboot as
soon as the command completes.
The default macOS configuration looks like this:
``` shell
guest_os="macos"
img="macos- big-sur/RecoveryImage.img"
disk_img="macos- big-sur/disk.qcow2"
macos_release=" big-sur"
```
- `guest_os="macos"` instructs Quickemu to optimise for macOS.
- `macos_release=" big-sur"` instructs Quickemu to optimise for a
particular macOS release.
- For example VirtIO Network and Memory Ballooning are available in
Big Sur and newer, but not previous releases.
- And VirtIO Block Media (disks) are supported/stable in Catalina and
newer.
# macOS compatibility
There are some considerations when running macOS via Quickemu.
- Supported macOS releases:
- Mojave
- Catalina
- Big Sur
- Monterey
- Ventura
- Sonoma
- `quickemu` will automatically download the required
[OpenCore](https://github.com/acidanthera/OpenCorePkg) bootloader and
OVMF firmware from [OSX-KVM](https://github.com/kholia/OSX-KVM).
- Optimised by default, but no GPU acceleration is available.
- Host CPU vendor is detected and guest CPU is optimised accordingly.
- [VirtIO Block
Media](https://www.kraxel.org/blog/2019/06/macos-qemu-guest/) is
used for the system disk where supported.
- [VirtIO `usb-tablet`](http://philjordan.eu/osx-virt/) is used for
the mouse.
- VirtIO Network (`virtio-net`) is supported and enabled on macOS Big
Sur and newer, but earlier releases use `vmxnet3`.
- VirtIO Memory Ballooning is supported and enabled on macOS Big Sur
and newer but disabled for other support macOS releases.
- USB host and SPICE pass-through is:
- UHCI (USB 2.0) on macOS Catalina and earlier.
- XHCI (USB 3.0) on macOS Big Sur and newer.
- Display resolution can be changed via `quickemu` using `--width` and
`--height` command line arguments.
- **Full Duplex audio requires [VoodooHDA
OC](https://github.com/chris1111/VoodooHDA-OC) or pass-through a USB
audio-device to the macOS guest VM**.
- NOTE! [Gatekeeper](https://disable-gatekeeper.github.io/) and
\f[CR]monterey\f[R], \f[CR]ventura\f[R] and \f[CR]sonoma\f[R] are
supported.
.IP\[bu]2
Use cursor keys and enter key to select the \f[B]macOS Base System\f[R]
.IP\[bu]2
From \f[B]macOS Utilities\f[R]
.RS2
.IP\[bu]2
Click \f[B]Disk Utility\f[R] and \f[B]Continue\f[R]
.RS2
.IP\[bu]2
Select \f[CR]QEMU HARDDISK Media\f[R] (\[ti]103.08GB) from the list (on
Big Sur and above use \f[CR]Apple Inc. VirtIO Block Device\f[R]) and
click \f[B]Erase\f[R].
.IP\[bu]2
Enter a \f[CR]Name:\f[R] for the disk
.IP\[bu]2
If you are installing macOS Mojave or later (Catalina, Big Sur,
Monterey, Ventura and Sonoma), choose any of the APFS options as the
filesystem.
MacOS Extended may not work.
.RE
.IP\[bu]2
Click \f[B]Erase\f[R].
.IP\[bu]2
Click \f[B]Done\f[R].
.IP\[bu]2
Close Disk Utility
.RE
.IP\[bu]2
From \f[B]macOS Utilities\f[R]
.RS2
.IP\[bu]2
Click \f[B]Reinstall macOS\f[R] and \f[B]Continue\f[R]
.RE
.IP\[bu]2
Complete the installation as you normally would.
.RS2
.IP\[bu]2
On the first reboot use cursor keys and enter key to select \f[B]macOS
Installer\f[R]
.IP\[bu]2
On the subsequent reboots use cursor keys and enter key to select the
disk you named
.RE
.IP\[bu]2
Once you have finished installing macOS you will be presented with an
the out\-of\-the\-box first\-start wizard to configure various options
and set up your username and password
.IP\[bu]2
OPTIONAL: After you have concluded the out\-of\-the\-box wizard, you may
want to enable the TRIM feature that the computer industry created for
SSD disks.
This feature in our macOS installation will allow QuickEmu to compact
(shrink) your macOS disk image whenever you delete files inside the
Virtual Machine.
Without this step your macOS disk image will only ever get larger and
will not shrink even when you delete lots of data inside macOS.
.RS2
.IP\[bu]2
To enable TRIM, open the Terminal application and type the following
command followed by pressing enter to tell macos to use the TRIM command
on the hard disk when files are deleted:
.RE
.IP
.EX
sudo trimforce enable
.EE
.PP
You will be prompted to enter your account\[aq]s password to gain the
privilege needed.
Once you\[aq]ve entered your password and pressed enter the command will
request confirmation in the form of two questions that require you to
type y (for a \[dq]yes\[dq] response) followed by enter to confirm.
.PP
If you press enter without first typing y the system will consider that
a negative response as though you said \[dq]no\[dq]:
.IP
.EX
IMPORTANT NOTICE: This tool force\-enables TRIM for all relevant attached devices, even though such devices may not have been validated for data integrity while using TRIM. Use of this tool to enable TRIM may result in unintended data loss or data corruption. It should not be used in a commercial operating environment or with important data. Before using this tool, you should back up all of your data and regularly back up data while TRIM is enabled. This tool is provided on an \[dq]as is\[dq] basis. APPLE MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED WARRANTIES OF NON\-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, REGARDING THIS TOOL OR ITS USE ALONE OR IN COMBINATION WITH YOUR DEVICES, SYSTEMS, OR SERVICES. BY USING THIS TOOL TO ENABLE TRIM, YOU AGREE THAT, TO THE EXTENT PERMITTED BY APPLICABLE LAW, USE OF THE TOOL IS AT YOUR SOLE RISK AND THAT THE ENTIRE RISK AS TO SATISFACTORY QUALITY, PERFORMANCE, ACCURACY AND EFFORT IS WITH YOU.
Are you sure you with to proceed (y/N)?
.EE
.PP
And a second confirmation once you\[aq]ve confirmed the previous one:
.IP
.EX
Your system will immediately reboot when this is complete.
Is this OK (y/N)?
.EE
.PP
As the last message states, your system will automatically reboot as
soon as the command completes.
.PP
The default macOS configuration looks like this:
.IP
.EX
guest_os=\[dq]macos\[dq]
img=\[dq]macos\- big\-sur/RecoveryImage.img\[dq]
disk_img=\[dq]macos\- big\-sur/disk.qcow2\[dq]
macos_release=\[dq] big\-sur\[dq]
.EE
.IP\[bu]2
\f[CR]guest_os=\[dq]macos\[dq]\f[R] instructs Quickemu to optimise for
macOS.
.IP\[bu]2
\f[CR]macos_release=\[dq] big\-sur\[dq]\f[R] instructs Quickemu to
optimise for a particular macOS release.
.RS2
.IP\[bu]2
For example VirtIO Network and Memory Ballooning are available in Big
Sur and newer, but not previous releases.
.IP\[bu]2
And VirtIO Block Media (disks) are supported/stable in Catalina and
newer.
.RE
.SHmacOScompatibility
There are some considerations when running macOS via Quickemu.
.IP\[bu]2
Supported macOS releases:
.RS2
.IP\[bu]2
Mojave
.IP\[bu]2
Catalina
.IP\[bu]2
Big Sur
.IP\[bu]2
Monterey
.IP\[bu]2
Ventura
.IP\[bu]2
Sonoma
.RE
.IP\[bu]2
\f[CR]quickemu\f[R] will automatically download the required \c
.URhttps://github.com/acidanthera/OpenCorePkg
OpenCore
.UE\c
\ bootloader and OVMF firmware from \c
.URhttps://github.com/kholia/OSX-KVM
OSX\-KVM
.UE\c
\&.
.IP\[bu]2
Optimised by default, but no GPU acceleration is available.
.RS2
.IP\[bu]2
Host CPU vendor is detected and guest CPU is optimised accordingly.
`quickget` automatically downloads a macOS recovery image and creates a
virtual machine configuration.
``` shell
quickget macos big-sur
quickemu --vm macos-big-sur.conf
```
macOS `mojave`, `catalina`, `big-sur`, `monterey`, `ventura` and
`sonoma` are supported.
- Use cursor keys and enter key to select the **macOS Base System**
- From **macOS Utilities**
- Click **Disk Utility** and **Continue**
- Select `QEMU HARDDISK Media` (~103.08GB) from the list (on Big Sur
and above use `Apple Inc. VirtIO Block Device`) and click
**Erase**.
- Enter a `Name:` for the disk
- If you are installing macOS Mojave or later (Catalina, Big Sur,
Monterey, Ventura and Sonoma), choose any of the APFS options as
the filesystem. MacOS Extended may not work.
- Click **Erase**.
- Click **Done**.
- Close Disk Utility
- From **macOS Utilities**
- Click **Reinstall macOS** and **Continue**
- Complete the installation as you normally would.
- On the first reboot use cursor keys and enter key to select **macOS
Installer**
- On the subsequent reboots use cursor keys and enter key to select
the disk you named
- Once you have finished installing macOS you will be presented with an
the out-of-the-box first-start wizard to configure various options and
set up your username and password
- OPTIONAL: After you have concluded the out-of-the-box wizard, you may
want to enable the TRIM feature that the computer industry created for
SSD disks. This feature in our macOS installation will allow QuickEmu
to compact (shrink) your macOS disk image whenever you delete files
inside the Virtual Machine. Without this step your macOS disk image
will only ever get larger and will not shrink even when you delete
lots of data inside macOS.
- To enable TRIM, open the Terminal application and type the following
command followed by pressing <kbd>enter</kbd> to tell macos to use
the TRIM command on the hard disk when files are deleted:
``` shell
sudo trimforce enable
```
You will be prompted to enter your account's password to gain the
privilege needed. Once you've entered your password and pressed
<kbd>enter</kbd> the command will request confirmation in the form of
two questions that require you to type <kbd>y</kbd> (for a "yes"
response) followed by <kbd>enter</kbd> to confirm.
If you press <kbd>enter</kbd> without first typing <kbd>y</kbd> the
system will consider that a negative response as though you said "no":
``` plain
IMPORTANT NOTICE: This tool force-enables TRIM for all relevant attached devices, even though such devices may not have been validated for data integrity while using TRIM. Use of this tool to enable TRIM may result in unintended data loss or data corruption. It should not be used in a commercial operating environment or with important data. Before using this tool, you should back up all of your data and regularly back up data while TRIM is enabled. This tool is provided on an "as is" basis. APPLE MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, REGARDING THIS TOOL OR ITS USE ALONE OR IN COMBINATION WITH YOUR DEVICES, SYSTEMS, OR SERVICES. BY USING THIS TOOL TO ENABLE TRIM, YOU AGREE THAT, TO THE EXTENT PERMITTED BY APPLICABLE LAW, USE OF THE TOOL IS AT YOUR SOLE RISK AND THAT THE ENTIRE RISK AS TO SATISFACTORY QUALITY, PERFORMANCE, ACCURACY AND EFFORT IS WITH YOU.
Are you sure you with to proceed (y/N)?
```
And a second confirmation once you've confirmed the previous one:
``` plain
Your system will immediately reboot when this is complete.
Is this OK (y/N)?
```
As the last message states, your system will automatically reboot as
soon as the command completes.
The default macOS configuration looks like this:
``` shell
guest_os="macos"
img="macos- big-sur/RecoveryImage.img"
disk_img="macos- big-sur/disk.qcow2"
macos_release=" big-sur"
```
- `guest_os="macos"` instructs Quickemu to optimise for macOS.
- `macos_release=" big-sur"` instructs Quickemu to optimise for a
particular macOS release.
- For example VirtIO Network and Memory Ballooning are available in
Big Sur and newer, but not previous releases.
- And VirtIO Block Media (disks) are supported/stable in Catalina and
newer.
# macOS compatibility
There are some considerations when running macOS via Quickemu.
- Supported macOS releases:
- Mojave
- Catalina
- Big Sur
- Monterey
- Ventura
- Sonoma
- `quickemu` will automatically download the required
[OpenCore](https://github.com/acidanthera/OpenCorePkg) bootloader and
OVMF firmware from [OSX-KVM](https://github.com/kholia/OSX-KVM).
- Optimised by default, but no GPU acceleration is available.
- Host CPU vendor is detected and guest CPU is optimised accordingly.
- [VirtIO Block
Media](https://www.kraxel.org/blog/2019/06/macos-qemu-guest/) is
used for the system disk where supported.
- [VirtIO `usb-tablet`](http://philjordan.eu/osx-virt/) is used for
the mouse.
- VirtIO Network (`virtio-net`) is supported and enabled on macOS Big
Sur and newer, but earlier releases use `vmxnet3`.
- VirtIO Memory Ballooning is supported and enabled on macOS Big Sur
and newer but disabled for other support macOS releases.
- USB host and SPICE pass-through is:
- UHCI (USB 2.0) on macOS Catalina and earlier.
- XHCI (USB 3.0) on macOS Big Sur and newer.
- Display resolution can be changed via `quickemu` using `--width` and
`--height` command line arguments.
- **Full Duplex audio requires [VoodooHDA
OC](https://github.com/chris1111/VoodooHDA-OC) or pass-through a USB
audio-device to the macOS guest VM**.
- NOTE! [Gatekeeper](https://disable-gatekeeper.github.io/) and