Detect QEMU virtualization on Darwin. #1813
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR adds a check for whether a Darwin machine is running as a QEMU guest.
Description
Apple added a Virtualization Framework based on QEMU to recent releases of macOS. This has resulted in many more options, such as UTM for organizations looking to run virtual macOS machines on Apple hardware.
One such organization appears to be Github, which seems to be adding Veertu VMs to their Github Actions runners. Unfortunately, Chef's
virtual?
helper fails to detect these machines as guests, sinceohai
isn't setting the role for QEMU VMs.The XNU kernel added an Object ID named kern.hv_vmm_present, which returns 0 for physical hardware and 1 for virtual machines. This OID is present on x86 devices running macOS Big Sur (version 11) and all Apple ARM macOS devices. By shelling out to
sysctl
, we can use this OID to detect VMs.Types of changes
Checklist:
Gemfile.lock
has changed, I have used--conservative
to do it and included the full output in the Description above.