Alternative kernel modules: searching for volunteers

Discussion in 'Linux Virtual Machine' started by (GalaxyMaster), May 28, 2019.

  1. (GalaxyMaster)

    (GalaxyMaster) Hunter

    Messages:
    119
    Hello,

    I like the product (especially that this is the only GUI I know on the market that can leverage Apple's hypervisor), but as it is evident from official responses on this forum -- Guest support for Linux Guest is almost non-existent. The Xorg video driver is using outdated technology, the code is very dirty (if you ever reverse-engineered the prlvideo driver or the prlcc daemon you would have seen that :) ).

    So, the idea I have is the following. There is an open source (under GPL) version of the virtualisation solution from Oracle called VirtualBox and as part of that solution they provide VirtualBox Additions (basically that part produces just three kernel modules):

    1. vboxvideo - the video bridge (parts of prl_tg implement similar functionality)
    2. vboxsf - the shared folders bridge (prl_fs and prl_fs_freeze implement similar functionality)
    3. vboxguest - the interface for the rest of the user space to the VirtualBox (parts of prl_tg implement similar functionality)

    Now, my idea is to re-use the VirtualBox guest interface but replace the implementation so the drivers would talk to Parallels defined host-to-guest interface (kernel space). This way we will get Parallels' specific drivers which would expose VirtualBox'es guest interface and it would mean that, say, Xorg could just use vboxvideo driver to leverage acceleration and automatic resizes, etc.

    Of course some features will be lost (I can think of just one at the moment: the coherence), but in exchange we will get modern support for things like Wayland, proper framebuffer support, etc. Moreover, the vast majority of Linux distributions have upstream support for VirtualBox (e.g. you can just install all the userspace support tools like VBoxControl, VBoxService, Xorg drivers, etc), so if such a a translation interface is implemented it would mean that you can get decent support for the majority of the distributions out there.

    I am currently working on the implementation of the video part only (since I am really frustrated with the way the whole thing currently works -- starting with using /proc/driver/prl_vtg (Video Tool Gate interface), weird locations of the files in Guest Tools which are violating Linux Hierarchy Standard, ending with the outdated technology -- like a polling(!) daemon (prlcc), Xorg driver that doesn't know how to work with HiDPI screens properly, etc, etc.).

    My goal would be to produce a set of modules that could be later submitted upstream to the kernel so we would be all set and forget about the pains of patching Parallels provided Guest Tools each time a new kernel comes out.

    If you are interested to join me in this effort please PM me (or comment on this thread). I don't have a lot of spare time nor a lot of experience in kernel development, but I do have quite a lot of experience in porting stuff and it is basically transplanting the Parallels backend interface onto the VirtualBox modules :).

    The primary difficulty is of course the lack of any documentation on the host-to-guest interface Parallels defines for their virtualisation, but since we have sources for Parallels kernel modules, I think we could figure out the majority of stuff from there.

    P.S. I wish Parallels (as a company) just released the Guest Tools as Open Source and then it would be just a piece of cake to submit pull requests to improve the tools. I fail to understand why they are shooting themselves into the foot by keeping these tools proprietary and as the result obsolete for the modern needs.
     
    DeveloperCoach and ShawnC4 like this.
  2. DeveloperCoach

    DeveloperCoach Bit poster

    Messages:
    2
    Your idea is great, hope Parallels will do this some asap
     

Share This Page