QubesOS / qubes-issues

The Qubes OS Project issue tracker
https://www.qubes-os.org/doc/issue-tracking/
526 stars 46 forks source link

qubes-windows-tools: Support for Windows 10/11 #1861

Open caschulz88 opened 8 years ago

caschulz88 commented 8 years ago

Latest updates

Alright, since I (@omeg) have been working on this for a while now and finally it's in a state that will allow for user testing soon, here is the current status of Windows 10/11 support. More items might be added in case I forgot something.

All of the current code is here: https://github.com/omeg/qubes-installer-windows-tools/tree/omeg/win10 Don't use on production VMs, it's not ready yet. Make sure to set the default-user property for the qube manually as appropriate (https://github.com/QubesOS/qubes-issues/issues/9020).

TODO:

Nice to have (will most likely be done after an initial release):

Known issues (will be added to github once the code is merged):

Original issue text Hi, I was wasn't able to find any already opened issue about this topic so I'm creating one right now. In all documentation on qubes-windows-tools there is always only the information that newer Windows versions than Windows 7 are in development. Can anyone please clarify what exactly this means? Do we have a roadmap or special features, which are missing at the moment? Because the MSI installer has a hard check for Windows 7 version in it I wasn't able to run the installer on Windows 8 and Windows 10 in comatibility mode (as the user cannot specify a specific Windows version in compatibility mode as he could do when running some executable file). I bet there are some reasons to include such a check there. Would be great to have this list posted here. I'm also willing to help to get support for Windows 8 and 10 of course!
marmarek commented 8 years ago

Indeed there is no open issue for that, but this is exactly what @omeg is doing right now. The most challenging is totally different graphics drivers framework (or more precise: removal of the old, simpler one).

8tt commented 7 years ago

Any updates on the current progress of the Windows 10 support? It would be very nice to be able to run Windows 10 VM in a resolution higher than default 1024x1024.

marmarek commented 7 years ago

Not sure about details, but drivers for running Windows 10 in non-seamless mode are almost complete. Seamless mode will not happen anytime soon (if ever...).

@omeg can provide more details.

Best Regards, Marek Marczykowski-Górecki Invisible Things Lab A: Because it messes up the order in which people normally read text. Q: Why is top-posting such a bad thing?

sveeke commented 7 years ago

Since it has been 18 days since the last update: @omeg, do you have an indication when Win 8+ support will be ready? And just out of curiosity: what does in mean that seamless mode will probably never happen in Win 10? And does this also apply to Win 8(.1)?

schnbrg commented 7 years ago

@sveeke - seamless mode is when you can control an application window from a VM on the host destkop. It is sort of like "Unity" from VMware. I am guessing the graphics drivers framework that @marmarek mentioned are making it difficult to implement seamless mode.

Non-seamless mode is fine with me!

brunoais commented 7 years ago

Without any intention to add pressure to an awesome project I can get for free (Thank you!), and just with the intention so I can prepare myself to the vague date: @omeg How complete do you think this ticket is and when does it seem this can be completed (even if you fail at it by a long shot)?

andrewdavidwong commented 7 years ago

@brunoais: No one is currently working on this (hence the help wanted label), so the answer to your second question is: If/when we receive patches from the community, or if/when the Qubes team has time to resume work on this, whichever (if either) comes first.

brunoais commented 7 years ago

@andrewdavidwong Oh! I didn't know those tags were because there's no one working on it. In that case, any ETA question makes no sense. Thank you for that 2nd part of the answer, though. Even through it didn't make sense after knowing no one is actually working on it ATM.

andrewdavidwong commented 7 years ago

I didn't know those tags were because there's no one working on it.

In this case, yes.

Thank you for that 2nd part of the answer, though. Even through it didn't make sense after knowing no one is actually working on it ATM.

I'm not sure what you mean.

brunoais commented 7 years ago

I'm not sure what you mean.

As there is no one working on this, it doesn't make sense to have an ETA in a project such as this. Thought that, you still tried to get me an answer. I appreciate it. Do you understand now?

andrewdavidwong commented 7 years ago

As there is no one working on this, it doesn't make sense to have an ETA in a project such as this. Thought that, you still tried to get me an answer. I appreciate it. Do you understand now?

Yes. :)

cmavr8 commented 7 years ago

(As noted before, I've no intention to add pressure and thanks for the great work!) The following may help prioritization, now that development funding is available.

I argue that supporting newer windows is important for two reasons that have not been mentioned before:

tonsimple commented 6 years ago

If at any point a tester who tends to work >4 hours per day in a windows VM and is willing to "get dangerous" is needed for this, hit me up :)

anodium commented 6 years ago

Let's get dangerous @tonsimple :-)

Yethal commented 6 years ago

@tonsimple how can I help?

tonsimple commented 6 years ago

@Yethal haha, I meant that I'm ready to test win10 tools as soon as they are ready ))

I use windows in qubes a huge lot (as evidenced with really obscure windows-on-qubes bugs I've managed to run into and submit) so I decided it may be neat to notify the developers that I am ready to be the guinea pig for the Win10 tools when the time is right

Yethal commented 6 years ago

Oh well, that's a shame. Anyway, if anybody needs a second pair of hands to help I'm here. I have a spare physical machine I can reinstall Qubes on over and over if needed.

entr0py commented 6 years ago

[Off-topic] For those desperate to use Windows 10 on Qubes, there is a (less secure?) alternative to qubes-windows-tools. As you know, Windows 10 installs and runs fine as an HVM on Qubes. Inter-VM interaction can be achieved using freerdp, which implements shared clipboard, shared folders, and seamless windows (via remote-apps). If your Windows VM is running on a separate HyperV host, you can have a fully functional, gpu-accelerated Windows 10 VM on your Qubes machine (via RemoteFX).

krzivn commented 6 years ago

@3n7r0p1 Do you have any pointers to pages on that? Most of what I turn up that deals with windows in Qubes is an after thought, old, or both.

Don't get me wrong, Qubes still absolutely rules and I hope someday it'll show windows how to actually do windows right.

entr0py commented 6 years ago

@krzivn Sorry to keep you in suspense. Discussion here: https://groups.google.com/forum/#!topic/qubes-users/dB_OU87dJWA

papaponmx commented 6 years ago

Is there any update on this feature? I want to get involved in Ethical Hacking, but I also work as a Front End Developer, so I need access to some Windows software.

My question is the following, if I buy my own Windows 10 license, will I be able to run in within a QubesOS VM?

najamelan commented 6 years ago

@papaponmx I don't speak from experience, but as far as I understand how it works, if it can run under xen, you should be able to run it. See the comment of user:entr0py. However you won't get the qubes tools that make sure the clipboard and other stuff integrate with qubes (the qubes guest additions are missing if you will).

estrella159 commented 6 years ago

In this day and age where crowfunding campaigns are started for stranded cats and what not...

Can we have an estimate budget on how much it would cost to hire devs who could start working on the win10 VM so we can start testing? I'll happily be the first to contribute.

Thank you for the great software you provide us!

andrewdavidwong commented 6 years ago

In this day and age where crowfunding campaigns are started for stranded cats and what not...

Can we have an estimate budget on how much it would cost to hire devs who could start working on the win10 VM so we can start testing? I'll happily be the first to contribute.

Thank you for the great software you provide us!

Thanks for your willingness to contribute! You can read more about donating to the Qubes OS Project here:

https://www.qubes-os.org/donate/

However, please note that we do not implement specific features based on donations:

https://www.qubes-os.org/donate/#do-donors-get-personalized-support-or-special-feature-requests

andrewdavidwong commented 6 years ago

Recent thread: https://groups.google.com/d/topic/qubes-devel/tBqwJmOAJ94/discussion

Dreamurrrr commented 4 years ago

Any progress?

tmaxxer commented 4 years ago

Windows 7 End of Life is in less than 2 months.

andrewdavidwong commented 4 years ago

I'm not aware of anyone currently working on this. It has the help wanted label, which indicates that it will probably not get done without help from community contributors. If anyone is willing to work on this, please reply here.

lattice0 commented 4 years ago

tried to install qubes-windows-tools in Windows 10 and got "another version of this is already installed". I know AppVMs will not work but I guesses I could use PV drivers and shared clipboard and send/copy to VMs. No way for Windows 10? Windows 7 is out of support and I really need Windows 10.

0spinboson commented 4 years ago

try https://github.com/elliotkillick/qvm-create-windows-qube

iamahuman commented 3 years ago

@b4b857f6ee opened a bountysource: https://www.bountysource.com/issues/95242068-qwt-qubes-windows10-tools-r4-1

b4b857f6ee commented 3 years ago

Because it was a duplicate i bounty this issues : https://www.bountysource.com/issues/32090963-qubes-windows-tools-support-for-windows-8-8-1-10

iamahuman commented 3 years ago

What's the known complications of implementing a WDDM Display Only Driver? Qubes doesn't officially support GFX acceleration/passthrough, so a full-blown driver wouldn't be immediately necessary.

Perhaps spice-qxl-wddm-dod and the sample KMDOD driver from Microsoft might be a good starting point here.

marmarek commented 3 years ago

What's the known complications of implementing a WDDM Display Only Driver?

I think this is a good compromise right now. The disadvantage is that you'd (still) need to cut windows areas out of full screen capture, with all its consequences (unable to display window obscured by something else, lagging while moving windows etc). But, this is how the current gui-agent-windows works, so it wont be worse. Having full-blown driver would allow to pick up individual windows, but also it is waaaay more complex.

DemiMarie commented 3 years ago

What's the known complications of implementing a WDDM Display Only Driver?

I think this is a good compromise right now. The disadvantage is that you'd (still) need to cut windows areas out of full screen capture, with all its consequences (unable to display window obscured by something else, lagging while moving windows etc). But, this is how the current gui-agent-windows works, so it wont be worse. Having full-blown driver would allow to pick up individual windows, but also it is waaaay more complex.

Could we borrow code from similar projects?

b4b857f6ee commented 3 years ago

The real question is.... how many? :D €€€€€€€€€ (kidding)

iamahuman commented 3 years ago

It would be nice if Desktop Duplication API can be used both with and without a full-blown driver, but I'm not sure if this is the case.

DemiMarie commented 3 years ago

Could we use RDP over a vchan?

iamahuman commented 3 years ago

@DemiMarie Possibly, since RDP multiplexes multiple (virtual) channels onto a single TCP connection. I don't see how RDP would be useful here, though, since it doesn't support seamless desktop AFAICT.

iamahuman commented 3 years ago

Excuse my previous comment—RDP seems to be actually in use as a workaround for Windows seamless support: #6256

pfrancks commented 2 years ago

I am also eagerly waiting to see seamless support for Windows applications in Qubes. Imho this is really a feature of not too small importance as it allows to work on a free + secure operating system even though there might be these 1-2 applications where no Linux alternative is available (yet of course).

I would like to point towards the Cassowary project. Maybe Qubes can borrow some things from there concerning the seamless integration? It is again FreeRDP in the RemoteApp format.

cassowary

Cheers!

Peter

omeg commented 3 months ago

I've updated the issue description with the current status.

DemiMarie commented 3 months ago

I updated the title to reflect @omeg’s changes.

bi0shacker001 commented 3 months ago

For resizing support, the qemu drivers support this for qemu guests While I recognize that the integration work itself may not be portable, the way qemu handles changing resolution is by adding a resolution option to the list that changes dynamically. Maybe that's useful to implement?

DemiMarie commented 3 months ago
  • [ ] Building (no cross build on Linux possible anymore)

    • [x] Visual Studio build
    • [x] Standalone build
    • [ ] Integration with Qubes builder

Is this because the new Xen PV drivers cannot be cross-built?

omeg commented 3 months ago

Is this because the new Xen PV drivers cannot be cross-built?

Yes. Previously they were not built either because we used binaries provided by upstream (and they no longer provide that). It's probably possible to make them build with Linux toolset, but that seemed like a significant effort when I tried.

omeg commented 3 months ago

For resizing support, the qemu drivers support this for qemu guests While I recognize that the integration work itself may not be portable, the way qemu handles changing resolution is by adding a resolution option to the list that changes dynamically. Maybe that's useful to implement?

Yes, that's the "custom WDDM video driver" option. It was infeasible a few years ago when I first looked into this, but now there are some available examples like the virtio drivers that can be adapted. I'll look into that after the basic functionality works well enough.

DemiMarie commented 3 months ago
  • [ ] Capturing Start Menu and notifications (partial - works, but those windows have weirdly huge transparent areas that need to be detected and discarded)

Do you expect this to be a performance problem in practice? This is a great candidate for SIMD acceleration.

DemiMarie commented 3 months ago

Is this because the new Xen PV drivers cannot be cross-built?

Yes. Previously they were not built either because we used binaries provided by upstream (and they no longer provide that). It's probably possible to make them build with Linux toolset, but that seemed like a significant effort when I tried.

What about clang in MSVC emulation mode? Clang’s SEH implementation is only partial, and that’s a severe problem for kernel-mode drivers. So I think using MSVC is absolutely the right thing to do here.

I am curious if one could (both legally and technically) run MSVC on Wine.

bi0shacker001 commented 3 months ago
  • [ ] Capturing Start Menu and notifications (partial - works, but those windows have weirdly huge transparent areas that need to be detected and discarded)

Do you expect this to be a performance problem in practice? This is a great candidate for SIMD acceleration.

At least the start menu should be negligible, since it occupies a fixed space on the screen. The values for that can be hardcoded (boundaries of the visible window), no detection required.