• 0 Posts
  • 16 Comments
Joined 1 year ago
cake
Cake day: June 4th, 2023

help-circle













  • Here’s the difference between virtualisation and containerisation:

    virtualisation –> virtualise / emulate an entire machine (including hardware). Meaning you’re running a second virtual computer (called a guest) within your own computer (called the host)

    containerisation –> cordon off parts of your system for a group of processes aka contain them to parts of your system.

    Imagine if you’re in a factory and you have a group of workers that handle generic tasks (CPU) and another one graphical tasks (GPU), a storage room (RAM), and an operator (the operating system)

    Virtualisation is the equivalent of taking some generic workers, letting them build a separate factory within the existing factory, and act like another factory. They may even know how to translate instructions from the host factory to instructions understood only in the guest factory. They also occupy a part of the storage room. And to top it off they of course have their own operator that communicates with the host operator before doing virtually anything.

    Containerisation is the equivalent of the operator starting processes that either do not know how large the storage room, generic worker pool, nor graphical worker pool are, or only having access to a section of the aforementioned. Basically contains them in their own view of the world with very little overhead. No new factory, no new operator, no generic workers that behave like graphical workers or can only understand certain instructions.

    Distribution

    In terms of distribution, virtualisation is like passing around mini-factories to other factories (or optimally descriptions of the factories needed to execute the instructions within the file). Containers are really a bunch of compressed directories, with some meta information about which process should be started first (amongst other things) and that processes and its subprocesses having a limited view of their world.

    On Mac

    Containerisation was popularised on linux (even though BSD had it first IIRC), which is where the operating system primitives and concepts were made to enable what we now know as Docker. Since virtually all containers in existence these days require linux due to how they are created and the binaries they contain, running docker (or anything that supports containers) requires virtualising a linux machine within which containers run.

    This comes with its own hurdles and of course is slower than on linux.


  • With vulkan support and wine, running windows games on an M1 using linux is already possible. How fast that will be is another question.

    It would reduce the amount of work needed by developers as at minimum all they’d have to do is build something that uses Vulkan and it would run on Mx hardware thans to linux. For better support, they could compile their games on any ARM64 hardware and that’d remove the need for an emulation layer (x86 -> ARM).

    I’d say this might actually be what unlocks a real gaming experience on Apple hardware without relying on (DX ->) Vulkan -> Metal for graphics, x86 -> ARM, and windows -> darwin. Nothing would have to be done for graphics (vulkan), x86->ARM (if it’s only compiled for x86), and windows -> Linux (which already has tons of work and the major support of Steam, while Apple just started with their wine fork for this).

    It wouldn’t surprise me if an “apple gaming” community would have a post pinned “install linux to game on Apple” in a year or two.