Will Linux For Windows Change The World? 770
An anonymous reader writes "A month ago, a trial version of a little-known Linux application called 'CoLinux' was released that is the first working free and open source method for optimally running Linux on Microsoft Windows natively. It's the work of a 21-year-old Israeli computer science student and some Japanese open source programmers; in Israel, analysts are already saying it could help transform the software world." (CoLinux is short for Cooperative Linux; we mentioned this project in January as well.)
ARGH!!! Froze my computer up! (Score:2, Informative)
PS: There is a bug in the libpam-runtime, so have fun doing any sort of apt-get upgrade action.
Article Text... (Score:5, Informative)
Re:Cygwin, MS Services for Unix? (Score:5, Informative)
Re:What's the difference (Score:5, Informative)
Link to the colinux project (Score:5, Informative)
- Dunno, seems like the original article missed the actual link.
Re:How about... (Score:4, Informative)
Severe limitation (Score:5, Informative)
plex86? (Score:5, Informative)
CoLinux [linuxkernel.net] is apparently somewhat similar to Plex86, but additionally requires admin access whereas Plex86 wasn't supposed to. Anyone know more?
Re:Cygwin, MS Services for Unix? (Score:5, Informative)
Nope.
Any existing linux binary. Any new linux binary.
Like that internal application that your company wrote whose source got lost.
Or the complicated one you got debugged and deployed on your department's native Linux platforms and you want to be sure runs EXACTLY THE SAME WAY on the boss' Windows box.
Re:What about Cygwin? (Score:5, Informative)
There are three approaches to this problem (aside from virtual machines, like VMWare, or emulation).
The Cygwin approach is to provide basically a windows library that implements the Linux API. You can then recompile Linux programs using that library to run on Windows.
The CoLinux approach is to basically run the Linux kernel as a process on Windows, and then you can run Linux binaries under Windows. Think of it as conceptually like User Mode Linux, but running on Windows instead of Linux.
The third approach is what my employer is doing, in a product that we have in beta right now, which I won't name since I'm not sure if we have announced this yet. It's kind of in between Cygwin and CoLinux--it provides an implementation of the Linux API on Windows, so you can run Linux binaries, but it has no Linux code in it. Basically the same way WINE lets you run Win32 binaries on Linux.
Re:Hmm (Score:4, Informative)
1) It runs as a device driver under Windows, which provides it with hardware access.
2) It doesn't yet run X correctly; any screenshots showing an X interface were done by running a separate X server under Windows and having CoLinux talk to that.
Re:Cygwin, MS Services for Unix? (Score:1, Informative)
Re:Maybe a stupid question... (Score:3, Informative)
Hardware is not cheap if we are talking about good hardware. It also needs care and feeding (such as UPS power, cooling, new fans once a year, cleaning, rack space, RAM, RAID etc.) You can save a lot in any business environment this way. Even in home conditions you will save a lot on energy if you have only one box 24/7 and not two.
Re:What's the difference (Score:5, Informative)
Not so fast, hombré.
CoLinux doesn't even have X yet.
You actually NEED Cygwin/X to be able to display any graphics, unless you want to run text-only... Which is reliable and all, but visually underwhelming for what Linux can actually do.
Re:Conquering Windows (Score:4, Informative)
Re:but why? (Score:2, Informative)
This has been done before! (Score:1, Informative)
http://www.phatlinux.com/about.html
In other news, the IDF has created an invention that they call "fire." IDF officials are saying that this new invention could revolutionize the world as we know it.
Re:Gah (Score:1, Informative)
Re:Cygwin, MS Services for Unix? (Score:3, Informative)
Yes, Cygwin is nice. But I've found it considerably slower than a native Linux box.
I occasionally have to mangle several gigs of text-based log files. I can toss together a nice script in my Cygwin environment. But when I want to run the real job... I better scp it over to one of the dev Linux boxes and run it there. Otherwise it will take weeks longer to run.
Maybe it's something in my config. I haven't spent much time looking in to it. But until I find out otherwise, I'm inclined to see Cygwin as a nice stopgap to my prefered environment when forced to deal with a Windows workstation.
It would be interesting to see if my scripts run faster in colinux.
Re:What about Corel? (Score:3, Informative)
I believe what they basically did was use the loopback device to put a Linux filesystem inside a file on the Windows filesystem. That served as the root filesystem for Linux.
So, basically it was a dual-boot setup, where you did not have to repartition your disk to get space for Linux.
Re:Cygwin, MS Services for Unix? (Score:2, Informative)
The Windows NT POSIX subsystem was only created so that Windows would be an alternative to government agencies as they once had a requirement of operating systems being POSIX compliant, so MS created a POSIX subsystem that technically filled those requirements but it isn't anything really usable in practice.
Re:Conquering Windows (Score:2, Informative)
Your OS design school is based (like most academics) on the 1960s operating systems. Not every operating system has to be implemented in a strict monolithic kernel, or a strict microkernel method to be called an operating system. The operating system should make it easy for an application programmer (not a system programmer) to make an effective program. This includes all the hacks such as integrating the messaging system and video subsystems. An application programmer will thank you for it (and a system programmer will curse you for it, but thats the way it has to be).
Re:Linux Under XP? I'm So Non-Excited (Score:5, Informative)
Pretty much
- every
distribution can make this happen for you automatically... (yes, speaking from experience). The most recent of which I installed was Mandrake, works like a charm, nice easy colorful menu and all =-P (This is on an old Thinkpad 600E, with only one hard drive, so I'd assume you would have no problems at all).Wiki! (Score:2, Informative)
Re:in reverse (Score:3, Informative)
There's nothing to reverse!
This isn't Linux running on Windows or Windows running on LInux! It's fundamentally different, as in time-slicing the CPU:
port of the Linux kernel that allows it to run cooperatively alongside another operating system on a single machine. For instance, it allows one to freely run Linux on Windows without using a commercial PC virtualization software such as VMware, in a way which is much more optimal than using any general purpose PC virtualization software.
So, I understand that to mean that the base OS is something that comes wtih CoLinux (master OS, or like a BIOS2, I guess) that divies up the machine resources among 2 OSes.
Re:Good idea (Score:1, Informative)
Win 9x line of operating systems are mostly Win16 internally. Any Win32 function called is translated into an equivalent Win16 function.
The Win32 API for the most part (except the NT security model) is the same for both, it just that they run differently.
Cleartype - prior art by Steve Wozniak? (Score:4, Informative)
Re:Linux Under XP? I'm So Non-Excited (Score:3, Informative)
Migration from Windows to Linux (Score:3, Informative)
Part 1 [tomshardware.com] | Part 2 [tomshardware.com]
Re:Linux Under XP? I'm So Non-Excited (Score:2, Informative)
Huh? What complications? I dual-booted for several years before ridding myself of Windows entirely, and never ran into any complication that a reinstall of the bootloader wouldn't fix. (And even that can be avoided, if you install Windows before Linux.)
It's a little more complicated if you want to share files between systems, but it's not that hard to work around.
Try QEMU (Score:3, Informative)
QEMU can't run windows very well yet, but it runs Linux, ReactOS and handful of others already.
Re:Severe limitation (Score:3, Informative)
Reimplemented the method in which coLinux allocates memory in the host kernel. It now allocates memory from the unmapped free page pool, which means you can use more than 256MB of RAM, unlike the previous method.
Re:Cygwin, MS Services for Unix? (Score:5, Informative)
Both this thing and cygwin read and write the same files with the same names as Windows-native programs, and do many other things that would seem obvious but the POSIX system does not do.
Re:Conquering Windows (Score:3, Informative)
All? Have you downloaded and installed the Bitstream Vera [gnome.org] families into your X11 font server?
The only thing stopping widespread use of Linux... (Score:3, Informative)
Of course, in the meantime the folks whose job it is to get this stuff working are able to do it pretty well without much help from the manufacturers. I don't know what's involved with it, or even who does it... I just know that I can load Mandrake on a machine and have 80% of the stuff "just work", and 15% more work after a quick google.
Re:POSIX?? (Score:5, Informative)
Re:Seems Like (Score:4, Informative)
This is more comparable to the countless emulation softwares out there (VirtualPC, VMware etc).
I'm not saying the technological approaches are similar, just that they run in a separate window from the host system.
Access to Accessibility Tools (Score:1, Informative)
Her little brother stayed at their house for a while, and he wound up downloading Kazaa, along with just about every piece of malware out there. Imagine only being able to see 5% of the screen at once, trying to do your homework, and having ads pop up in IE every 2 minutes. She was having a hard time with her schoolwork because of the interference the malware was causing her. Since I have not run Windows on my own machines for years, I had no idea how to help them; I have never encountered this kind of problem at home. I downloaded AdAware (I hear it mentioned on Slashdot once in a while) and a couple other programs, but they failed to clean the trojan programs off their system. I installed ZoneAlarm, which blocked outgoing connections from 6 or 7 random programs that kept trying to "phone home", and the ads stopped popping up.
I suggested that they install and use Knoppix in order to give them more security, but the only thing that kept them back was this accessibility software that zoomed in on the screen. If this Windows-only software could provide the accessibility she needs in order to use the computer, then a Linux starts becoming a possibility for her. This is where Linux-under-Windows starts to make sense; at least until accessibility software under Linux catches up.
It works if you RTFM (Score:5, Informative)
What are you talking about?
1. Of course you shouldn't be running the xserver in it. The documentation clearly states this, and explains that the way to get a gui is to either:
a) Run an X server under Windows and use XDMCP to connect... or
b) Use VNC to connect to it.
PS: There is a bug in the libpam-runtime, so have fun doing any sort of apt-get upgrade action.
First of all... if this were true, it would be a bug in one of the harddisk images, not in coLinux... coLinux is just the kernel and the mechanism for running it in windows... It is not a Linux "distribution".
Second, it works for me. I used the provided debian disk image and dist-upgraded to testing with no trouble whatsoever.
I also had very little trouble using VNC to get Fluxbox running either in full screen or in a window(TM).
Even at version 0.60 it is very impressive. I suppose it will be even more impressive when it is included on a Knoppix cd with a simple installation method for those who are too lazy to RTFM.
Why this probably won't ever catch on (Score:0, Informative)
CoLinux essentiallys hooks the timer interrupt IIRC and thereby allows Linux and Windows to play along together. They then take a Linux kernel, and muck with it so that all the memory allocation/potentially nasty stuff goes through Windows first.
However, they make two huge assumptions in this. One, they assume that the Windows OS isn't going to do something very weird/subtle to kernel space code. Two they assume that Linux is going to behave in all places like a Windows device driver.
The danger here is that you're sticking two pieces of software together that were never meant to run together (imagine taking two programs, giving them different start addresses, and running them in the same address space.. you'd get some horribly subtle bugs if either process depended on something in a location that happened to be a location the other was using.).
This is definitely one of those things where it working with limited functionality doesn't mean that with a little more work/polishing it can behave like VMWare or user mode linux.
Besides, if you want to run linux and windows together, check out Xen Hypervisor [cam.ac.uk]. A much cleaner (and probably just as fast) solution. Just start bugging redmond to release a hypervisor aware version of Windows (or start writing tools to binary-patch Windows into being hypervisor friendly).
Actually, binary patching Windows to make it be more emulator/virtualizer friendly is not a new concept...
Re:Cleartype - prior art by Steve Wozniak? (Score:4, Informative)
That's not entirely true. The Apple ][c and ][gs used subpixel tricks to increase their horizontal resolution, but they never used it to antialias fonts. In fact, fonts on the ][gs looked worse because of this (you'd often see little purple and green pixels on the edges of your fonts when against a subpixel dithered background)
An AutoCAD Clone for Linux (Score:5, Informative)
If I could run AutoCAD on Linux, I would use it at work (for something other than a server).
There is an AutoCAD clone for Linux. Here's a quote from my Linux user group list. (I haven't used it, so YMMV)...
Date: Tue, 16 Mar 2004 09:41:07 +0100
From: "BricsCad BackOffice" email-deleted
Subject: BricsCAD goes Linux
BricsCad, the market leader in low cost DWG CAD software, today announced the beta release of BricsCad for Linux. The product is based on the IntelliCAD kernel.
BricCad for Linux is an "almost clone" of AutoCAD(r). BricsCad uses the exact same DWG drawing format as AutoCAD(r). Drawings made by BricsCad can be read by AutoCAD(r) and the other way round.
BricsCad for Linux addresses the untapped group of individual and corporate professional CAD users in the LINUX community allowing them to use their operating system of choice without being locked out from the professional Engineering world and the DWG standard.
The full press release can be found on their website(s):
English version [bricscad.com]
French version [bricscad.com]
German version [bricscad.com]
Interested beta-testers are invited to contact BricsCad at linux@bricscad.com [mailto]
Re:Conquering Windows (Score:0, Informative)
Its a misnomer to say that Linux has fonts. The window manager have them and to put it bluntly they suck. You are in denial if you don't notice this.
Okay, so:
a) You're blind, because any idiot can see that the fonts on a modern Linux system look fine;
b) You have no idea how fonts on Linux work.
Without a standard window manager and a standard API to program for (thanks GNOME vs KDE war),
What's the standard API in Windows? The XP Common Controls (used by IE, Explorer, etc), the Office Toolkit (used by Office), the
A Summary Of What's Going On (Score:5, Informative)
===
OK, terrible terrible story. Nobody's going to contest that. My immediate reaction: "Yay, another whiz kid story. Kid probably rediscovered prefetching web pages."
Yeah. Then the CoLinux guy came up.
People, CoLinux is absurdly brilliant stuff, the kind of hardcore engineers get drunk about and laugh that "some psycho pulled off WHAT?!" regarding. I can say this from personal experience
To put it simply, most approaches that involve multiple operating systems sharing a processor require a significant degree of subordination. In the Cygwin model, the "Linux/Unix" way of requesting services from the operating system (open this file, give me that network connection) is translated to the Windows way through a library of functions. The mapping is pretty good, but like any translation, it's not perfect. Some actions, like starting new programs, are very very fast under Linux/Unix and are extraordinarily slow under Windows. Cygwin deals with this as best it can, but there's only so much it can do.
VMWare offers a different approach. Instead of translating Unix to Windows, VMWare creates a "virtual PC", complete with its own processor, motherboard, sound card, network card, and everything else. The child operating system -- Linux, for example -- gets a complete environment to manipulate, and VMWare handles the translation between what the child PC is asking to do and what the parent PC is actually capable of. This interface is much more isolated than what Cygwin offers -- memory, for instance, is not shared between the two environs -- but as such, the child operating system is freed of many of the particular quirks of the parent OS. The child Linux really is Linux, and can do everything Linux can do, because Linux is an environment for controlling a PC.
The only catch is that it's a virtualized PC, and VMWare needs to do alot of work to keep the two contexts separate -- and to emulate all the hardware resources that are normally "just there", but now need to be simulated. There's a 20-30% speed cut out of this. Also, switching contexts between parent PC and child PC is not a trivial thing to do, meaning it can only be done a certain number of times per second. This causes issues for some real time operations. Specifically, audio in VMWare is a problem.
CoLinux is something else entirely. x86 CPU's have the concept of Rings -- these are roughly analogous to privelege levels, in which certain classes of commands may be issued to certain components of the architecture. Lowest level code operates in what's referred to as "Ring 0" -- at this level of permissions, one can directly control the raw components of the PC, for better or worse. This is a gross oversimplification, but there's basically two things that live at Ring 0: A kernel, and device drivers (which are not entirely separate from the kernel). Kernels are basically a core set of commands that user software can execute to get things done -- create processes, read files, open network connections, and so on. Here's a list of Linux syscalls, at least from 2.2. Not on this list -- stuff like, "Send this block of memory to this device on the PCI bus, and tell the sound card to start emitting sound from that memory address on its internal buffer." That's what device drivers are for -- they get some kind of interface that userspace can talk to, and they do things with what they're given. Those things can be pretty much anything the underlying hardware can do -- stuff way deeper than "write this file" and "trace this process", and into the nuts and bolts of what the PC is -- a collection of wires and memory addresses. Normally, that's what a device driver does: It implements the requisite hardware calls to let some piece of equipment work.
Re:Good idea (Score:2, Informative)
Water under the bridge in any case. It's Microsoft's zombie now.
Great potential (Score:2, Informative)
I set up windows to bridge the tun and eth device to make the linux vm connect to the local network. This runs perfectly!
*adds this article to bookmarks*
Re:Conquering Windows (Score:3, Informative)
Re:Access to Accessibility Tools (Score:3, Informative)
KDE has a similar effort underway, but it's not as complete as GNOME's. In fact, the current roadmap seems to be to also use parts of the GNOME Acccessibility Toolkit (ATK) in KDE. Xzoom isn't the height of accessibility under Linux/X anymore
Re:Conquering Windows (Score:5, Informative)
Joel's rant is incorrect. His whole premise is flawed, because he's arguing from incorrect definitions.
He states anti-aliased text is bad... when what he really dislikes is scalable text.
His complaints all come from the idea that onscreen text can be scaled to an arbitrary non-integer pixel height. If nobody used scalable fonts, his problems would vanish. But given that people do wish to view 12 pt text at 115% WYSIWG magnification, antialiasing is the best option.
He shows two sample paragraphs that he labels as non-anti-aliased and anti-aliased. But if those paragraphs were redone with text scaled 21% larger, then the non-anti-aliased version would be immeasurably uglier.
Re:Conquering Windows (Score:3, Informative)
Of course, there already is an independent implementation [transgaming.com].
Re:A Summary Of What's Going On (Score:3, Informative)
Thanks for the elaborated explanation. I noticed that a lot of people have a hard time understanding exactly what coLinux is. It's easy to get confused with all the other virtualization methods that are around.
I just want to add some of technical details to what you wrote. First, one of the main reasons that coLinux runs in ring0 is to have control over the MMU (memory management unit), so it could do whatever it wants with the subset of the physical memory that is specially allocated for it.
In its running context, coLinux avoids as much as possible from asking the CPU to do I/O operations. Actually, the only I/O operations that it does are involved with getting values from the high precision timer. This means that all of coLinux's drivers are harmless and depend on the services given by the host side. You can think about coLinux as a 'Super' process, a process that can do anything a kernel does, but it avoids accessing the hardware directly and instead it interfaces with the other kernel in order to get what it needs.
People need to understand that unlike VMware, coLinux is 100% pure native execution. It's not a trap-and-continue-based virtualization. That's the reason it has the potential to be faster than any other virtualization method.
For the naysayers... (Score:3, Informative)
While running it under a PC emulator is all very well and good, it runs at a fraction of the equivilent speed it would run at on the host system.
Thus, a false observation of either speed or efficiency would be made, since the equivilent system would create so much lag. If you ran, for example, Open Office on a PC emulator as opposed to Win32 native, to demonstrate it for a client, they would say, naturally, that it is crap, because most pointy haired bosses don't know the restrictions involved. Sure, you could set up a seperate system, but they would respond negatively, thinking a seperate system would be the sum total of the case for upgrades.
However, if you can sheer away those limitations so it would run under Linux/Win32 accordingly, logic would dictate that without a hardware emulation platform as the intermediate limiting factor, and thus, the response would be more appropriate.
Re:A Summary Of What's Going On (Score:3, Informative)
Yes, it is brilliant, and cool, and I'm excited about it. But it isn't quite "holy cow, I never would'a thunk it!" Virtualization has been around for a long time, in many different guises. CoLinux is an implementation of a well-known virtualization paradigm. The beauty is not in the groundbreaking hack, but the fact that it fits perfectly into a niche that has gone unfilled for far too long.
If you've done much mucking around with Windows CE, you would know that there are several different "Windows CE Emulators" available. The first one (the H/PC emulator) was almost exactly equivalent to CoLinux (except that the H/PC emulator was really lousy, and CoLinux seems to work fairly well). The current one is more similar to VmWare (in fact, it is a modified version of Connectix VirtualPC) due to the fact that people needed to use it to debug kernel-mode drivers as well as apps. But both basically do the same thing as CoLinux by using a patched Windows CE kernel to improve the efficiency of the virtualization. The idea is the same -- the kernel is hacked to make it cooperate with the Emulator so that some of the corners can be cut on the virtualization.
I don't think resource contention is going to be an issue. The CoLinux system (as I understand it) doesn't access the hardware itself. Instead, it translates the Linux syscalls into NT kernel API calls, essentially creating a Linux Subsystem for NT (much like Interix creates a Posix subsystem for NT, except that Interix actually exposes itself as a subsystem, while CoLinux exposes itself as a driver).
As far as rings go, Intel didn't do a very good job of assigning privilege levels to the 4 rings, so essentially there is little value in using rings 1 and 2. VmWare might use them, but they don't really help much. I don't think the rings come into play very much in CoLinux, either. It is probably better to think of it as kernel-mode and user-mode rather than ring 0 and ring 3.
The key difference between VmWare/VirtualPC and CoLinux is the level at which the abstraction takes place. VmWare creates an entire virtual system that runs the original OS kernel, emulates the hardware's response to IO requests, etc. Under VmWare, an app requests a timer callback and sends a syscall to the kernel, the kernel forwards that to a device driver, the device driver sends 0xFFFF to port 0x1234, the port IO is trapped by VmWare, VmWare translates the port IO into an NT driver request "please notify me when 0xFFFF clock ticks have gone by". CoLinux has the advantage of being able to patch and recompile the kernel to skip the device driver phase, so it only needs to provide a user-mode interface. Under CoLinux, an app requests a timer callback and sends a syscall to the kernel, and the kernel forwards that directly to an NT driver request, skipping the most expensive steps of VmWare's virtualization process.
As far as ring 0 access to memory, it actually goes through the same virtual memory system as ring 3. The difference is in the fact that ring 0 can manipulate the virtual memory mapping at will. Pretend you run in ring 3 and I run in ring 0. Neither one of us can walk through a closed and locked door, but I have the key so I can unlock and open the door if I want to. The kernel can't normally bypass the virtual memory system, but it can remap the memory to achieve the same effect.
And for debugging Windows, well, again this is nothing new. If you want access to Windows, just use the kernel debugger. Download the latest version of "Debugging Tools for Windows" from Microsoft, and you will see that there is an option called Local Kernel Debugging that allows you to look through the memory and internal kernel structures of your own system while it is running, with a few limitations (the limitations come because you can't stop the local kernel without also stopping the local debugger). If you don't like the limitations of local debugging, you can connect two computers together with serial or firewire
may we suggest -two- (Score:2, Informative)
Re:Cygwin all over again? (Score:2, Informative)
You can even use an actual Linux partition instead of a file, so it could possibly be used in a dual boot machine, where you can run Linux even when you are booted into Windows using the same Linux partition that you boot into. I don't know if anyone has tried this, but I imagine it should work.
Re:Conquering Windows (Score:3, Informative)
> Linux 3D graphics drivers are currently all
> proprietary,
Wrong. There are RADEON drivers in X.org and XFree86's tree with both 2D and 3D accellerated. The ATI driver supports the latest cards and supposedly has better acceleration. But I wouldn't know about that since Free drivers is why I tossed the NVIDIA card and now buy only hardware supported by Free drivers. The horror of keeping closed drivers working through kernel/distro upgrades wasn't worth it.