Intel Virtualization and Apple Silicon
highcaffeinecontent.com
highcaffeinecontent.com
Using VMware Fusion in this way does sound useful in that it sort of replicates the experience you get with vSphere (for managing the VM's) which is really only something corporate clients would be using and is definitely not free.
That being said you could really do this with almost any hypervisor running on a machine at home (or in the cloud, or anywhere) and then connect and control those VM's from a laptop with internet. RDP, VNC, Teamviewer, Citrix, Horizon, whatever - it is just basically us coming full circle back to the dumb Terminal to Mainframe connection but over the internet.
> Using VMware Fusion in this way does sound useful in that it sort of replicates the experience you get with vSphere
VMware's first big product, long before ESX (and later ESXi), was VMware Workstation, released in 1999, which provided x86 virtualization and ran on (and virtualized) both Windows and Linux. It was the first commercial product to easily enable people to run Windows without having to leave their Linux environment. VMware Fusion is essentially the same product, just the spiritual successor to that product that runs on macOS (along with a bunch of modern optimizations, of course) going back to 1999.
VPC works flawless in version 4, but for version 5 they require NT platform too.
I installed Windows 95 on a Mac with VirtualPC back in... 1995. All 26 floppies of it. Installation done, it rebooted the virtual box, and I had to go to a meeting. Cane back an hour or so later, and it had just finished booting up. Good times.
Then Microsoft bought them, and I think afterwards the Mac version was no longer supported.
(PowerPC was a consortium of Motorola, IBM, and Apple, and was made out of silicon... so technically, that would be "Intel Virtualization on Apple Silicon". :-) )
Later they're expanding into Virtual Server and famous "Windows XP Mode" on Win7.
At the end everything was merged into Hyper-V.
Some routers have it built in, and some have packages to install it, and the official GUI clients work well: https://www.wireguard.com/install/
If you can't run it on your router, you can just set it up on a linux VM and forward a port as necessary.
The configuration file is quite simple once you get the hang of it, you've basically just got:
1. a public/private key that you exchange between connected machines
2. the address of the tunnel, locally
3. the address/port to get to the other end
4. what traffic you want to send over the tunnel
install pivpn, open router port & forward (automatically configured and optionally changed during setup), type 'pivpn add' at the command line for every device I want. Copy the outputted config files to device and import into wg client. Done.
Of course if you have a firewall with it built in, then use that. However for pfSense and OpnSense wireguard runs in user mode and not the kernel, so depending on your traffic the pi may be faster since wireguard is compiled into the kernel with piVPN. Which can cause fun issues if there is a kernel update you aren't prepared for - was my only real problem with piVPN/Wireguard but it wasn't too hard to recover once I figured out what was going on :)
2.) Install pivpn.
3.) (Optional) Modify makeCONF.sh/removeCONF.sh if needed.
If you want a similar product to ZeroTier but one that uses Wireguard under the hood, Tailscale is what I've been using to connect to my home network.
You can also dockerize your workloads and use an environment variable to use your ssh remote as the docker machine.
Catching a train home from the office and using a lightweight, cool to the touch, thin laptop that is offloading commands via 4g to my desktop PC with 24 cores such that I can't tell that workloads are not running locally is such a fantastic development experience.
Sure I need to be always online on 1 extra device, but the second connection can be significantly lower bandwidth while the server will access things over a hardwired 100 megabit connection.
docker context create remote ‐‐docker “host=ssh://user@remotemachine”But I see a lot of people writing code on remote machines. A good keyboard + baremetal FreeBSD (no GUI) machine is an absolute pleasure to write code on.
Got a diff on /usr/src/sys/amd64/conf/GENERIC (or whatever you call yours)?
(source: I've spent the last 5 years working primarily on a physical server in a proper dc and just connecting into it from thin/fanless laptops)
The interactive debugger works and everything.
Intellij doesn't support this and they are releasing a new development editor designed to offload compilation to their own build servers.
Due to the slow upload speed of my DSL connection, this forced me to become comfortable with TUI apps and a multiplixed terminal environment, with the occassional use of Xpra when absolutely necessary.
For now I just have one node running on my office setup to access everything there and it seems to work pretty well from home. More convenient than mapping ports anyway.
Although...I don't quite grok how it might be more secure than something like certificate based SSH, seems like the Tailscale attack surface might be bigger even though you can go back and close off the firewall stuff that allows SSH to work. Would seem that instead of concentrating on breaking your (probably obscure) public IP address / port combo, an attacker would simply go to Tailscale and attack that instead.
I rarely leave anything turned on when I leave the house.
It will copy over the missing frameworks and modify the app so the OS will run it even though it's unsupported, if you're interested there is a technical breakdown that goes into detail[2].
[1] https://github.com/cormiertyshawn895/Retroactive
[2] https://medium.com/@cormiertyshawn895/deep-dive-how-does-ret...
This is not at all specific to ESXi... you can do PCIe and USB passthrough with qemu running on Linux. The operating system doesn't get in the way.
> This is not at all specific to ESXi... you can do PCIe and USB passthrough with qemu running on Linux.
This is true.
> The operating system doesn't get in the way.
This isn't, really, at least not qemu does quite a bit of fiddling under the hoot -- without VFIO or legacy KVM pass-through, the operating system very much gets in the way. Linux now provides facilities that allow qemu to pass through devices -- that is, it provides the APIs necessary to move it back out of the way.
I don't know to what extent ESXi looks like pure-kernel setup of passthrough vruss KVM_ASSIGN_DEVICE versus VFIO -- that would be quite interesting.
I know they were working on it with Hyper-V awhile back but who knows howe well it works
vmkernel hardware passthrough has exactly the same requirements (IOMMU support).
SPICE on Proxmox may support this but I find it incredibly clumsy to configure.
Slight aside, with the incredible performance possible with Rosetta on Apple silicone, what are the chances of using it as part of a virtual machine emulating x86-64 with similar performance? I understand that Rosetta “recompiles” to ARM which would probably be harder with a VM but I think it also does real-time conversion to. I have no idea about he details but could QEMU use Rosetta under the hood for emulation?
The thing is, it only supports windows xp + windows 7, and not 8/10/11 (those are supported as arm64). Apparently the amount of work is massive (so are performance hits for the Windows XP/7 when you run it).
It's one thing to emulate apps, another entirely to emulate whole advanced OS.
> the performance penalty is significant
I was asking the genuine question as to if it would be theoretically possible to use Rosetta as part of the emulation for a VM to potentially help it to perform better?
For example could a tool be installed within a guest OS that effectively send binaries to Rosetta for translation before execution?
It just seems to me that if Apple have done such an incredible job with Rosetta wouldn’t it be brilliant if it was possible to use that within an emulated VM on Apple silicone.
Att the app level rosetta can operate at link time (yes it does AoT, but that's essentially just caching), where it knows things like what things are text regions, what the entry points are, it can assume that the code is "correct" (if your code is buggy natively, then rosetta won't stop it going wrong), etc.
System level emulation means rosetta (or whatever) loses that transparency, so can't precompile, and can't make any assumptions about code behaving properly. To get an idea of what the performance impact is you should check the performance of JIT compiled code under rosetta. Rosetta ensures that the JIT will work, but the perf hit is staggering. System level emulation basically means treating everything as being JIT code.
I'm sure a system level emulator (Qemu?) could do better than for example just slapping a system emulator mode into rosetta, but that would be because rosetta is optimized for app level emulation.
So for example the “precompiling” of a binary, would that be possible with a VM?
As long as that is available, it seems like third-party virtualization software could get similar performance to Rosetta, and potentially experiment with attempting to support system-level CPU emulation.
Just noticed today that I have a python script that takes 4.5 minutes to process on m1 but only 2.5-3 minutes on an intel Mac.
It's hard to scale in a bigger company, but it just makes more sense to me to segment the user experience layer from the random compute layer.
I run a dozen servers for a little hobby project that has a few customers. One unexpected cool way this has benefited me is I eliminated the need to lug a laptop anywhere. I have a little tools environment setup in iSH on my iPhone and can quickly troubleshoot most things or perform various tasks on the command line. A few others that haven't been scripted yet I can run by SSHing in.
At first I thought this as a 10 year old article, but it appears it really was a re-discovery of the same thing you do with KVM, Xen, Hyper-V, ESXi, VirtualBox etc. for years now.
Anyone used Ghirda on a M1 Mac?
Adding an intel NUC to a MacBook Air probably increases the weight – and reduces the time you can run your VMs on battery.
You know what would be awesome though? If qubes os with its Xen stuff allowed this sort of remote access.
This should work fine in Rosetta?
Because Docker stopped maintaining it.
You can get VMware Remote Console from the App Store: https://apps.apple.com/ca/app/vmware-remote-console/id123024... or at https://www.vmware.com/go/download-vmrc
2. There aren't really any killer apps for ARM yet. ARM itself is a fine ISA, but the majority of consumer desktop software and server software is still x86 first (particularly on platforms that Intel sells for). Until that changes, I doubt Intel will really care all that much. When it does change, I'm inclined to believe that the rest of the industry will be eyeing even more minimal ISAs like RISC-V. That's mostly just speculation though.
Intel doesn't virtualize Apple hardware because it doesn't make business sense and is questionably legal (see also: Corellium). Apple silicon is just-different-enough from a regular ARM64 design that anything that can actually boot macOS almost certainly exists purely to break the macOS license agreement.
[0] Specifically, having all your code neatly packaged into executables and libraries means that you can AOT-compile nearly everything and not have to actually interpret or JIT x86 code. There's also no need to emulate, say, x86 context switches or page table walking; you just stop emulation, run the syscall on the ARM side, and then restart the emulation once that's done.
Of course, they still have a JIT, just in case you decide to run a binary that also contains a JIT.
Is it that? I would’ve assumed it’s because the patents hadn’t expired yet.
Apple almost certainly was able to either brow-beat Intel into a license, or design around the claims of said patents[0]. FWIW Apple has UI strings for when Rosetta 2 is disabled, so they might have had to consider cases where their license expires or something.
[0] Notably I have no idea if patent claims on a hardware instruction & it's associated implementation would automatically prohibit emulation of that instruction, or if emulation would be a separate patentable.
https://developer.apple.com/documentation/apple-silicon/abou...
Apple provides a hypervisor framework that emulates a standard ARM64 system and macOS ARM64 kernels that run on it. This is how macOS on Apple Silicon virtualization works. It's not really Apple Silicon, it's boring standard ARM on Apple Silicon. Soon after Apple started shipping these kernels, before it was even announced, someone tried it on QEMU on another platform and found it worked just fine in single user mode.
The only catch is the macOS UI requires Metal, and paravirtualized graphics are implemented using serialized Metal passthrough. In other words, if you want to boot ARM64 macOS to a desktop, you have to implement Metal in your VM host.
Do we have paravirtualized Metal support in Linux guests yet? That would probably neatly brush away any legal claims against third-party hosts for implementing it on non-Apple hardware.
What a uninspiring and uninteresting start of the article.
How is it different from running an XPRA server on the remote machine?