LWN: Comments on "Emulating Windows system calls, take 2" https://lwn.net/Articles/826313/ This is a special feed containing comments posted to the individual LWN article titled "Emulating Windows system calls, take 2". en-us Fri, 05 Sep 2025 20:03:21 +0000 Fri, 05 Sep 2025 20:03:21 +0000 https://www.rssboard.org/rss-specification lwn@lwn.net Emulating Windows system calls, take 2 https://lwn.net/Articles/841564/ https://lwn.net/Articles/841564/ ras <div class="FormattedComment"> This is a very late comment I guess, buts that&#x27;s mostly because I still don&#x27;t know what is being proposed.<br> <p> <font class="QuotedText">&gt; The problem with classic personalities is that they are very shallow. They can be used to adapt syscalls, but little else.</font><br> <p> I presume that means the design of personality API forces you to place the code in the kernel. &quot;The code&quot; is something using Linux to emulate the foreign syscall. I can tell you with reasonable authority[0] that&#x27;s true.<br> <p> Surprisingly the code doesn&#x27;t care where it lives. In fact it mostly doesn&#x27;t change. Even if the code was a kernel module moving to user space. I know that because I&#x27;ve done it [1].<br> <p> I can also tell you from the maintainer of the said code&#x27;s perspective, user space is the nicer place to be. Far, far, far nicer. To paint the picture, the kernel code I maintained has to do syscall&#x27;s in some way. Why syscall&#x27;s? Because they are the only interface in the kernel that&#x27;s stable, and life&#x27;s far too short spend it migrating out of tree code to each kernel version. But getting to syscall table was mission bloody impossible. The mechanism I inherited was unwinding the kernel stack, disassembling return addresses until you found the code that dispatched to you, then extract the pointer to the syscall table from the previous instruction. (Sorry if I wrecked your meal.) This is of course not easy to port between kernel versions either, but at least you are porting just one obnoxious thing.<br> <p> Turns out there is only one real challenge to moving it to user space. That is getting the kernel to deliver the syscall to some user space trampoline address. That ends up in being one of two challenges. The first kind is when the syscall mechanism is what the Linux kernel uses. In that case is becomes &#x27;redirect any syscall outside of the trampoline range to the trampoline&#x27;. This case is covered in the article.<br> <p> The 2nd kind is when the syscall mechanism is not what the kernel uses. A software interrupt is the obvious way, but the x86 / amd64 designers in particular have displayed commendable imaginative flair in this area. However, in every case I&#x27;ve seen the mechanism is illegal to do in user space, so either the kernel handles it, or it&#x27;s SIGSEGV. So all you have to do is arrange for that mechanism (whatever it is) to boomerang to an address in the trampoline, with minimal overhead.<br> <p> Handling the second case doesn&#x27;t seem hard: a standardised API like syscall_trap(SYSCALL_TRAP_INT80, trampoline_trap, trampoline_begin, trampoline_end, flags), a kernel module for each SYSCALL_TRAP_??? mechanism. Job done.<br> <p> How the proposed mechanism do this is a bit of a mystery. I guess I should look at the code.<br> <p> [0] <a href="http://ibcs64.sourceforge.net/">http://ibcs64.sourceforge.net/</a><br> [1] http://ibcs-us.sourceforge.net/<br> </div> Sat, 02 Jan 2021 10:50:32 +0000 Emulating Windows system calls, take 2 https://lwn.net/Articles/828572/ https://lwn.net/Articles/828572/ Ericson2314 <div class="FormattedComment"> That&#x27;s why I brought up Capsicum / CloudABI. It&#x27;s about the most interesting thing that can be done that is &quot;shallow&quot;.<br> </div> Tue, 11 Aug 2020 19:51:32 +0000 Emulating Windows system calls, take 2 https://lwn.net/Articles/828571/ https://lwn.net/Articles/828571/ Ericson2314 <div class="FormattedComment"> Thanks for letting me know!<br> </div> Tue, 11 Aug 2020 19:50:44 +0000 Emulating Windows system calls, take 2 https://lwn.net/Articles/828570/ https://lwn.net/Articles/828570/ Ericson2314 <div class="FormattedComment"> Yes absolutely agreed. Being able to do &quot;deep&quot; stuff would basically require &quot;composition over configuration&quot;, so an exokernel, to reign in the complexity. Great idea, but Linux absolutely is not that.<br> </div> Tue, 11 Aug 2020 19:50:26 +0000 Emulating Windows system calls, take 2 https://lwn.net/Articles/828562/ https://lwn.net/Articles/828562/ Cyberax <div class="FormattedComment"> The problem with classic personalities is that they are very shallow. They can be used to adapt syscalls, but little else.<br> <p> Fully emulating Windows requires much more infrastructure. Windows has completely different synchronization primitives, different IO stack (IOCP!), and a different thread and process model.<br> <p> You need a LOT of code to emulate all of this. You can put it into the kernel (and there were projects that basically put Wine into kernel mode), but the chances of it getting merged are nil.<br> </div> Tue, 11 Aug 2020 19:06:06 +0000 Emulating Windows system calls, take 2 https://lwn.net/Articles/828560/ https://lwn.net/Articles/828560/ farnz <p>Note that <a href="https://elixir.bootlin.com/linux/latest/source/include/uapi/linux/personality.h">personalities already exist</a> in Linux, as a kernel-side concept. <p>It looks like the only non-Linux personality that hasn't bitrotted to the point of removal is https://elixir.bootlin.com/linux/latest/source/arch/alpha/kernel/osf_sys.c Tue, 11 Aug 2020 18:15:27 +0000 Emulating Windows system calls, take 2 https://lwn.net/Articles/828516/ https://lwn.net/Articles/828516/ Ericson2314 <div class="FormattedComment"> I think there should be both. This is a *dynamic* way to control the meaning of syscalls, personalities area *static* way.<br> <p> In general, it&#x27;s not good to force the use of dynamic solutions to static needs, even though the dynamic one is strictly more expressive. It&#x27;s good to be static where possible because it better conveys intent, is simpler to reason about, especially w.r.t. security, and can be better optimized.<br> <p> I think Linux should have this and personalities. For example, there could be a native personality, a Windows personality (via Kernel module, let&#x27;s say), and a way to disjoint-union (sum) personalities via name-spacing (e.g. a tag big) somewhere in memory or registers. Then Wine can use this in combination with the native+windows union personality, and the trampoline just neeeds to set the Windows-or-Linux bit, letting the kernel do the rest.<br> <p> I separately want personalities to revive Capsicum/CloudABI on Linux. And the dynamic mechanism alone is a dubious way to do something as security-critical as that.<br> </div> Tue, 11 Aug 2020 15:50:01 +0000 Emulating Windows system calls, take 2 https://lwn.net/Articles/827642/ https://lwn.net/Articles/827642/ jezuch <div class="FormattedComment"> You&#x27;re a subscriber so I guess it&#x27;s forgiven ;) (also, this was IMO a genuine question im quest of understanding, not a typo report)<br> </div> Fri, 31 Jul 2020 08:03:16 +0000 Emulating Windows system calls, take 2 https://lwn.net/Articles/827052/ https://lwn.net/Articles/827052/ jeremy <div class="FormattedComment"> Thanks, it looks like I clearly misread the article. Not only that, but I evidently didn’t read the guideline in the comment posting section saying:<br> <p> <font class="QuotedText">&gt; Please do NOT post typos in the article as comments, send them to lwn@lwn.net instead.</font><br> <p> That’s a double whammy on me for my first ever LWN comment. Please excuse me while I crawl inside my shame cube...<br> </div> Mon, 27 Jul 2020 04:18:01 +0000 Emulating Windows system calls, take 2 https://lwn.net/Articles/827046/ https://lwn.net/Articles/827046/ mjg59 <div class="FormattedComment"> No, the binaries call directly into the Windows kernel. The goal is to be able to intercept those calls in order to run the binaries on Linux.<br> </div> Mon, 27 Jul 2020 01:29:12 +0000 Emulating Windows system calls, take 2 https://lwn.net/Articles/827045/ https://lwn.net/Articles/827045/ jeremy <div class="FormattedComment"> <font class="QuotedText">&gt; As a reminder, the intent of this work is to enable the running of Windows binaries that call directly into the Windows kernel without going through the Windows API.</font><br> <p> I think you meant to say &quot;Linux kernel&quot; here?<br> </div> Mon, 27 Jul 2020 01:18:19 +0000 Emulating Windows system calls, take 2 https://lwn.net/Articles/826999/ https://lwn.net/Articles/826999/ nix <div class="FormattedComment"> It did -- but this wasn&#x27;t done the way (say) Solaris did it, by piling the entire threading abstraction into the kernel and complicating the bejeezus out of everything. Instead we got away with a few relatively simple and noninvasive things: thread groups, a bit of tweaking to signal handling (which was painful, sure, but much less painful than almost everything else around signal handling already was and is), futexes, and some nice souping up to PID allocation so you could have silly numbers of them.<br> <p> (And a good few of those abstractions were, I vaguely recall, there *already*, and used by LinuxThreads: tgids, for instance. I&#x27;m sure futexes were new for NPTL though.)<br> <p> <p> </div> Fri, 24 Jul 2020 22:08:50 +0000 Emulating Windows system calls, take 2 https://lwn.net/Articles/826904/ https://lwn.net/Articles/826904/ BenHutchings <div class="FormattedComment"> This is not what happened with threads. The kernel APIs that supported LinuxThreads were not sufficient to build a compliant POSIX threads implementation. The New POSIX Threads Library (NPTL) that eventually replaced LinuxThreads required additional kernel APIs.<br> </div> Thu, 23 Jul 2020 21:02:25 +0000 Emulating Windows system calls, take 2 https://lwn.net/Articles/826854/ https://lwn.net/Articles/826854/ clump <div class="FormattedComment"> <font class="QuotedText">&gt; Android completely isolates applications from each other. One application cannot see/access the data of another.</font><br> <p> Unless the storage permission is required which makes the external storage a free-for-all. I trust you&#x27;d agree that there&#x27;s plenty of valuable application and user data on the external storage.<br> <p> Great points about a traditional desktop environment. An exploit or hostile application shouldn&#x27;t allow the compromise of a user&#x27;s entire home directory by default. We can and should do better. <br> <p> <p> <p> <p> <p> <p> <p> </div> Thu, 23 Jul 2020 16:20:01 +0000 Emulating Windows system calls, take 2 https://lwn.net/Articles/826852/ https://lwn.net/Articles/826852/ pizza <div class="FormattedComment"> <font class="QuotedText">&gt; Android&#x27;s additional security features are meaningless in practice. </font><br> <p> Incorrect.<br> <p> Android completely isolates applications from each other. One application cannot see/access the data of another.<br> <p> <font class="QuotedText">&gt; However the security features of Android are useless if the user has no choice but to accept all or none of an application&#x27;s permissions. </font><br> <p> That sounds like a problem brought on by using proprietary software, not the underlying permission/security model.<br> <p> Android&#x27;s model requires those permissions to be explicitly stated and granted, which is a huge step forward from the free-range model of a traditional desktop environment (Linux or Windows or whatever) -- where applications have carte blanche to do pretty much whatever they want -- including audio, video, networking, and access to every file the user has.<br> <p> </div> Thu, 23 Jul 2020 14:47:21 +0000 Emulating Windows system calls, take 2 https://lwn.net/Articles/826845/ https://lwn.net/Articles/826845/ clump <div class="FormattedComment"> You&#x27;re right about typical distributions. However the security features of Android are useless if the user has no choice but to accept all or none of an application&#x27;s permissions. Some Android applications allow users to disable some permissions, while some applications fail to function at all unless you accept everything. Worst of all you have no choice whatsoever about which applications can use networking. <br> <p> Android&#x27;s additional security features are meaningless in practice. <br> </div> Thu, 23 Jul 2020 13:59:34 +0000 Emulating Windows system calls, take 2 https://lwn.net/Articles/826848/ https://lwn.net/Articles/826848/ nix <div class="FormattedComment"> Threads were added the same way, and the result was eventually a best-in-class threading implementation which does not fill the kernel with complexity related to one specific threading model. Seems like a good approach to me too (though if you&#x27;d asked me back in the year 2000 when LinuxThreads was the only threading implementation out there, I might have said something different!)<br> </div> Thu, 23 Jul 2020 13:53:43 +0000 Emulating Windows system calls, take 2 https://lwn.net/Articles/826846/ https://lwn.net/Articles/826846/ nix <div class="FormattedComment"> <font class="QuotedText">&gt; Can you forward any specific security concerns that are not already mitigated to the original thread? We definitely want to have a good look at any security implications of this feature. I expect that most issues would be mitigated by making it unable to cross fork/exec boundaries.</font><br> <p> Quite. This has no more security implications than a signal handler (to which it is very similar), so as long as it takes the same approach (reset signal handlers on address space reset at exec() time) we should be fine. Sure, if you use this mechanism *wrong* all sorts of things can happen, but the same is true of signal handlers and indeed of general bugs in code. The implications are no worse, except that making a mistake here is more likely to be obvious because it will probably break the program&#x27;s use of lots of syscalls at once :)<br> </div> Thu, 23 Jul 2020 13:51:52 +0000 Emulating Windows system calls, take 2 https://lwn.net/Articles/826809/ https://lwn.net/Articles/826809/ domenpk <div class="FormattedComment"> What you write is valid criticism, but it&#x27;s not a comparison in any sort of way.<br> <p> What&#x27;s the permission system on common Linux desktop like? Most &quot;apps&quot; are running under same UID, have access to all the data users actually care about, many peripherals etc.<br> </div> Thu, 23 Jul 2020 10:22:24 +0000 Emulating Windows system calls, take 2 https://lwn.net/Articles/826571/ https://lwn.net/Articles/826571/ Funcan <div class="FormattedComment"> I&#x27;d say that they&#x27;re implementing &#x27;personalities&#x27; the same way they did containers - provide the facilities known needed right now, and let anybody built a &#x27;product&#x27; around them - adding new feature as needed. This allows multiple parallel efforts at producing a &#x27;product&#x27; and iteration, rather than trying to design everything in advance, which history suggests works badly.<br> </div> Tue, 21 Jul 2020 13:28:05 +0000 Emulating Windows system calls, take 2 https://lwn.net/Articles/826570/ https://lwn.net/Articles/826570/ Jandar <div class="FormattedComment"> <font class="QuotedText">&gt; The article is about emulating Windows system calls, so non-Android Linux phones are nothing but offtopic.</font><br> <p> So either Android and non-Android Linux phones are off topic (regarding the article). But not the criticized post had started to write about them but the parent-post and reacting to existing topics in a discussion can&#x27;t be off topic relating to the discussion. It can be off topic regarding the parent article but calling a direct response to something mentioned in another comment &quot;spamming&quot; is dishonest.<br> </div> Tue, 21 Jul 2020 11:33:52 +0000 Emulating Windows system calls, take 2 https://lwn.net/Articles/826569/ https://lwn.net/Articles/826569/ rvolgers <div class="FormattedComment"> Not really, as the proposed mechanism clearly puts the emulated system calls at a performance disadvantage vs native Linux system calls.<br> </div> Tue, 21 Jul 2020 09:36:51 +0000 Emulating Windows system calls, take 2 https://lwn.net/Articles/826557/ https://lwn.net/Articles/826557/ plugwash <div class="FormattedComment"> <font class="QuotedText">&gt; It&#x27;s, indeed, better out of the kernel. So a fuse-like API for personalities :)</font><br> <p> This leads to the question that if a &quot;personality&quot; is going to be implemented in userland should it be implemented in the same process as the foreign code or a separate process.<br> <p> There are pros to both approaches.<br> <p> Pros of same process:<br> <p> * The performance cost of switching context between processes is avoided.<br> * The emulation code can easily access data belonging to the foreign code through pointers <br> * For a foreign platform (like windows) where the &quot;normal&quot; interface is defined as a library ABI, not a syscall ABI most calls don&#x27;t have to go through the emulation process at all.<br> <p> Pros of separate process<br> <p> * The foreign code cannot deliberately or accidentally mess with the emulation code.<br> * The foreign code can use the address space however it needs (wine has to use some fairly dirty tricks to allow non-relocatable windows binaries to be loaded in the required location)<br> * There is no need for a special mechanism to switch back and forth between regular syscall mode and foreign syscall mode.<br> * The system could potentially be used for security sandboxing as well as foreign code support.<br> </div> Mon, 20 Jul 2020 20:03:59 +0000 Emulating Windows system calls, take 2 https://lwn.net/Articles/826556/ https://lwn.net/Articles/826556/ zdzichu <div class="FormattedComment"> The article is about emulating Windows system calls, so non-Android Linux phones are nothing but offtopic.<br> </div> Mon, 20 Jul 2020 19:53:29 +0000 Emulating Windows system calls, take 2 https://lwn.net/Articles/826555/ https://lwn.net/Articles/826555/ Jandar <div class="FormattedComment"> <font class="QuotedText">&gt; Something tells me you&#x27;re spamming. Your comment has nothing to do with the article, or the topic of the thread.</font><br> <p> The parent-post said:<br> <font class="QuotedText">&gt; Android is a privacy nightmare, has abysmal security, and keeps internals away from the user. Not very Linux-like.</font><br> <p> So talking about non-Android Linux phones is very on topic.<br> </div> Mon, 20 Jul 2020 19:52:06 +0000 Emulating Windows system calls, take 2 https://lwn.net/Articles/826480/ https://lwn.net/Articles/826480/ clump <div class="FormattedComment"> Your comment was also quite useful in reminding myself and others that the mobile phone situation isn&#x27;t hopeless. We can and should support development efforts that are more respectful toward users. The PinePhone in particular looks nice.<br> </div> Mon, 20 Jul 2020 13:12:34 +0000 Emulating Windows system calls, take 2 https://lwn.net/Articles/826473/ https://lwn.net/Articles/826473/ nim-nim <div class="FormattedComment"> All the &quot;privacy&quot; initiatives Google sponsored in the past years have been trying to protect Android and Chrome data both from &quot;evil&quot; telco operators/ FSB / CIA / whatever and &quot;evil&quot; users. Google documents will not call it that way, but they will dismiss any actual user control because of straw-men like social engineering… The truth is the only power Google wants to give users is the power to do things Google agrees with.<br> <p> You can not understand Android or Chrome security choices if you do not acknowledge they are extensions of Google IT, and the user is outside the target security perimeter.<br> </div> Mon, 20 Jul 2020 12:35:03 +0000 Emulating Windows system calls, take 2 https://lwn.net/Articles/826459/ https://lwn.net/Articles/826459/ ncm <div class="FormattedComment"> Indeed, it is a response directly to the comment that it is a response to.<br> <p> Topics do drift. That is not a bug.<br> </div> Sun, 19 Jul 2020 23:17:39 +0000 Emulating Windows system calls, take 2 https://lwn.net/Articles/826452/ https://lwn.net/Articles/826452/ clump <div class="FormattedComment"> I respectfully disagree. Security features are nice, but you have only to look at &quot;all permissions&quot; for nearly any application installed by default on Android. Look at Google Play Services, which includes the following mandatory permissions:<br> <p> &quot;disable your screen lock&quot;<br> &quot;have full network access&quot;<br> &quot;record audio&quot;<br> &quot;access location in the background&quot;<br> &quot;take pictures and videos&quot;<br> &quot;reroute outgoing calls&quot;<br> <p> I can&#x27;t remove these permissions. I can&#x27;t audit their use. I can&#x27;t examine the source code. Not my idea of secure, private, or user-respecting. <br> <p> If pointing out issues with Google Play Services is too easy, look at &quot;all permissions&quot; for other apps. There is also the matter of Android&#x27;s exploit track record, and all of the well-documented issues with applications served from the official Google Play Store. <br> <p> My point is that Android uses Linux but offers none of its benefits.<br> <p> <p> <p> <p> </div> Sun, 19 Jul 2020 19:29:12 +0000 Emulating Windows system calls, take 2 https://lwn.net/Articles/826450/ https://lwn.net/Articles/826450/ quotemstr <div class="FormattedComment"> WLS2 is just a VM.<br> </div> Sun, 19 Jul 2020 18:17:09 +0000 Emulating Windows system calls, take 2 https://lwn.net/Articles/826447/ https://lwn.net/Articles/826447/ pebolle <div class="FormattedComment"> Except my proposal now misses that the selector is optional. Which the article also does, knowing Jon&#x27;s writing probably on purpose, to keep things readable.<br> <p> Is that optional selector enough to call the interface complicated?<br> </div> Sun, 19 Jul 2020 15:28:14 +0000 Emulating Windows system calls, take 2 https://lwn.net/Articles/826448/ https://lwn.net/Articles/826448/ ballombe <div class="FormattedComment"> Does wine support WSL2 ?<br> </div> Sun, 19 Jul 2020 15:25:41 +0000 Emulating Windows system calls, take 2 https://lwn.net/Articles/826446/ https://lwn.net/Articles/826446/ nix <div class="FormattedComment"> Uh, Android has massively better security by any standard that I can think of than mainstream Linux does. Extensive custom SELinux rules, a per-app permission system, every app runs in its own Unix uid... you couldn&#x27;t do this to desktop Linux without rewriting everything.<br> </div> Sun, 19 Jul 2020 12:06:35 +0000 Emulating Windows system calls, take 2 https://lwn.net/Articles/826443/ https://lwn.net/Articles/826443/ pebolle <div class="FormattedComment"> <font class="QuotedText">&gt; The selector argument is a pointer to a byte in memory that provides another mechanism to toggle system-call trapping. </font><br> <p> This tripped me over the first time I read it. It&#x27;s a few paragraphs later that one learns that it&#x27;s not &quot;another&quot; mechanism but actually the last step in this implementation of syscall trapping. So something like:<br> <p> &quot;The selector argument is a pointer to a variable that is used by the kernel to check whether system-calls should actually be trapped.&quot;<br> <p> might be less confusing.<br> </div> Sun, 19 Jul 2020 10:22:48 +0000 Emulating Windows system calls, take 2 https://lwn.net/Articles/826442/ https://lwn.net/Articles/826442/ ldearquer <div class="FormattedComment"> To me it certainly looks connected to the comment it replies to...<br> </div> Sun, 19 Jul 2020 09:38:11 +0000 Emulating Windows system calls, take 2 https://lwn.net/Articles/826437/ https://lwn.net/Articles/826437/ gus3 <div class="FormattedComment"> Something tells me you&#x27;re spamming. Your comment has nothing to do with the article, or the topic of the thread.<br> </div> Sun, 19 Jul 2020 02:45:04 +0000 Emulating Windows system calls, take 2 https://lwn.net/Articles/826436/ https://lwn.net/Articles/826436/ ncm <div class="FormattedComment"> Maybe it is a good time to start watching efforts to make a platform to run Postmarket or Mobian phone OSes, such as Librem 5 and, especially, PinePhone, and maybe to participate in getting them ready for wider use, or set up recurring donations.<br> <p> You might start with reducing dependence on Signal, moving to the Matrix/Element end-to-end encrypted message infrastructure, which has proven to be more portable to different platforms. <br> <p> Maybe pre-order a PinePhone for $200. (Hint: if you do, make sure the phone is the only thing in the shopping cart. Order other stuff separately.)<br> <p> I have no affiliaton with Pine or Purism, besides outstanding orders.<br> </div> Sun, 19 Jul 2020 01:24:50 +0000 Emulating Windows system calls, take 2 https://lwn.net/Articles/826434/ https://lwn.net/Articles/826434/ clump <div class="FormattedComment"> It might be fun if Microsoft used Linux more. Linux is already well-represented in Azure workloads. That said, &quot;the cloud&quot; is where operating systems are often viewed as commodities. <br> <p> I have an Android phone because it uses Linux. I can&#x27;t say I&#x27;m happy with it. Android is a privacy nightmare, has abysmal security, and keeps internals away from the user. Not very Linux-like.<br> <p> Microsoft could do more with Linux but if the experience turns out like Android, I wouldn&#x27;t be interested.<br> </div> Sat, 18 Jul 2020 23:00:26 +0000 Emulating Windows system calls, take 2 https://lwn.net/Articles/826433/ https://lwn.net/Articles/826433/ meyert <div class="FormattedComment"> This could probably replace the current UML mechanism, not sure if something is gained so...<br> </div> Sat, 18 Jul 2020 20:40:16 +0000 Emulating Windows system calls, take 2 https://lwn.net/Articles/826432/ https://lwn.net/Articles/826432/ smcv <div class="FormattedComment"> <font class="QuotedText">&gt; I have a profound distrust in anything that runs under Windows. Not that I trust blindingly softwares that runs on Linux, but I&#x27;ve seen so many malware hidden in documents, images and vulnerabilities even in windows softwares made by &quot;security&quot; teams</font><br> <p> Wine is already not a security mechanism. If you want to run Windows software with lower privilege than your normal login account, you&#x27;ll need to run Wine in a less-privileged environment using container namespaces, LSMs and/or seccomp (for example a Flatpak, Snap or Docker container), as a separate uid, or in a virtual machine.<br> </div> Sat, 18 Jul 2020 17:45:16 +0000