On 22 Jan 2024 at 07:01a, poindexter FORTRAN pondered and said...
Blue White wrote to Poindexter Fortran <=-
With Proxmox on a Pi, can you run non-ARM OSes in those VMs? I read that you really can't if you are using something like Virtualbox to host it -- i.e. you cannot run an OS that expects intel hardware too well -- but am curious about Proxmox.
I think you are limited to ARM OSes. There's an ARM port of Windows
10/11, not sure about software support for it - and a bunch of Linux distros that run as a guest under Proxmox.
Correct. Proxmox is not an emulator, it's not even exactly
a hypervisor (though it says that it is...). The hypervisor
is actually QEMU+KVM; proxmox just wraps it all up in a nice
package.
So what is a hypervisor? It's a thing that lets you run
_virtual machines_. What, then is a "virtual machine"? It
is a mode of execution that allows one to run system software
on a computer in a way that the software thinks that it is
running directly on hardware, but is in fact, being mediated
by other software. What is systems software? Think an
operating system or firmware. So in a sense, virtual machines
are to machines what virtual memory is to memory.
Hypervisors these days are usually divided into two components:
the VMM, which runs on the bare metal (or can be nested under
another VM!) and drives the hardware, and the "hypervisor" (yes,
it's ambiguous) that runs in userspace and does things like
emulate hardware devices, etc, and talks to the VMM. In many
Linux setups, the VMM is KVM and the userspace hypervisor is
QEMU or something similar.
Virtual machines are actually quite old; they were built on
a lot of early mainframe systems. IBM has been providing
virtual machines on the mainframe since the late 1960s; Multics
had an execution environments that could run programs for
the DTSS system; TOPS-20 had an adapter that could run TOPS-10
programs.
VMs were studied formally in the 1970s, and computer scientists
Gerald Popek and Robert Goldberg put forth definitions that
distinguish virtual machines from emulations/simulations. The
central distinction is that the _bulk_ of instructions executed
by the virtual machine are executed directly by hardware; P&G
specified that an architecture is virtualizable if the _privileged_ instructions in the architecture could be trapped and emulated (but
of course, things like `add` just ... run).
Emulators and simulators, on the other hand, tend to have software
that interprets all instructions, with nothing running on the bare
metal.
So for something running on an ARM processor to execute an operating
system compiled for x86, it would necessarily not be a virtual
machine, but rather an emulator.
--- Mystic BBS v1.12 A48 (Linux/64)
* Origin: Agency BBS | Dunedin, New Zealand | agency.bbs.nz (21:1/101)