Want to read Slashdot from your mobile device? Point it at m.slashdot.org and keep reading!

 



Forgot your password?
typodupeerror
×
Windows Operating Systems Software Linux

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.)
This discussion has been archived. No new comments can be posted.

Will Linux For Windows Change The World?

Comments Filter:
  • by MadWicKdWire ( 734140 ) * on Monday April 12, 2004 @10:20PM (#8843833) Homepage
    Whatever you do, don't run 'X -configure' in it! It hard locks the system.

    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)

    by relyter ( 696205 ) on Monday April 12, 2004 @10:25PM (#8843869)
    It's already becoming a bit slow... Looks like the Israel Defence Force may have done it again. Already famous for spawning an entire generation of software geniuses now active in the world of wireless technologies, the IDF has now apparently incubated the technical talent capable of creating a project that could change the world: the ability to run Linux on Windows 2000/XP. 21 year-old Dan Aloni, a graduate of an IDF computer unit, has developed a Linux application - called Cooperative Linux ("CoLinux" for short) - that is a 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. A member of the international open source community, Aloni developed CoLinux along with several Japanese programmers, collaborating over the Net. According to the Web site, they've written special core drivers for the host OS which modify the way the host OS receives notifications from the hardware - thus allowing both OSes to coexist peacefully - and run at a decent speed as well. In Israel, acclaim for a system potentially capable of allowing organizations to run Linux and Windows in parallel on the same computer or server has been immediate. Organizations would make great savings if they didn't any longer have to have separate machines for each OS, says Shahar Shemesh, a member of the Israeli open source forum. And Pini Cohen, a senior informations systems analyst at computer research company Meta Group Israel has called the development "an important stage in breaking Microsoft's monopoly." "As the trend is for Linux to take a more important role in organizations," Shemesh continues, "Aloni's development is extremely interesting. The question is how Microsoft will react and whether it will allow support for Windows systems if they have Linux systems installed on them." According to Haaretz.com that is carrying details of this story, Microsoft has so far made no comment on Aloni's development.
  • by tmbg37 ( 694325 ) * on Monday April 12, 2004 @10:26PM (#8843884) Homepage
    The difference would be that you can run already availble Linux binaries under Windows rather than trying to get programs to work and compile for Windows under Cygwin.
  • by mao che minh ( 611166 ) on Monday April 12, 2004 @10:27PM (#8843891) Journal
    With Cygwin, you aren't running a full blown Linux environment. Here is the Cygwin FAQ [cygwin.com]. I can't read the article (Slashdotted), but judging from the snippet here, it seems like coLinux will run an actual Linux image, which would be a big difference.
  • by nsushkin ( 222407 ) on Monday April 12, 2004 @10:28PM (#8843902)
    Colinux Project [colinux.org] Screenshots [colinux.org]

    - Dunno, seems like the original article missed the actual link.

  • Re:How about... (Score:4, Informative)

    by damiam ( 409504 ) on Monday April 12, 2004 @10:33PM (#8843934)
    Wine doesn't emulate Windows. It reimplements with Windows API under Linux/X. What you describe wouldn't work.
  • Severe limitation (Score:5, Informative)

    by nsushkin ( 222407 ) on Monday April 12, 2004 @10:33PM (#8843935)
    There are still some problems [colinux.org] to work out.
    1. No virtual graphics adapter, so no X-Windows
    2. Memory limited to about 128 or 256 MB
  • plex86? (Score:5, Informative)

    by interiot ( 50685 ) on Monday April 12, 2004 @10:35PM (#8843951) Homepage
    So what happened to Plex86? As of about this time last year, they were saying they're alive and kicking, this time only trying to achieve linux-on-windows [slashdot.org].


    CoLinux [linuxkernel.net] is apparently somewhat similar to Plex86, but additionally requires admin access whereas Plex86 wasn't supposed to. Anyone know more?

  • by Ungrounded Lightning ( 62228 ) on Monday April 12, 2004 @10:36PM (#8843960) Journal
    You mean the already available binaries bundled with Cygwin? Or coming up with a Win 32 copy of Mozilla? Or GCC? Or even the Gimp? Or do you mean Open GL apps? Or Vim? Emacs? Etc etc etc.

    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.
  • by harlows_monkeys ( 106428 ) on Monday April 12, 2004 @10:36PM (#8843965) Homepage
    The article is rather short on details, but exactly how is this different than what Cygwin has been doing for a number of years?

    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)

    by BJH ( 11355 ) on Monday April 12, 2004 @10:37PM (#8843969)
    From what I remember:
    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.
  • by Anonymous Coward on Monday April 12, 2004 @10:38PM (#8843973)
    Windows 2000 has a POSIX subsystem, so what's the point? Noone wanted to use it because the Win32 subsystem gave more power to the application developer because it supported the Windows Messaging System. The POSIX subsystem was intended to make it easier to port programs to windows, but noone used it, so it was removed in XP and later. If Windows already had a POSIX subsystem (which was never used), why would anyone want to run basically a Linux virtual machine that has *less* power?
  • by tftp ( 111690 ) on Monday April 12, 2004 @10:38PM (#8843974) Homepage
    Hardware is so cheap, I would just get two boxes.

    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.

  • by Progman3K ( 515744 ) on Monday April 12, 2004 @10:41PM (#8843991)
    >Cygwin was a nice placeholder until Linux arrived for Windows. Now it is irrelevent. I wouldn't be surprised to see reports of its death shortly.

    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.
  • by swimmar132 ( 302744 ) <.ten.rekcupknip. .ta. .eoj.> on Monday April 12, 2004 @10:42PM (#8844001) Homepage
    cleartype fonts? You mean sub-pixel hinting? That's been available for a long time.
  • Re:but why? (Score:2, Informative)

    by JewFish ( 315210 ) on Monday April 12, 2004 @10:48PM (#8844057)
    How about the fact that the current version of VMware costs about $200 and this is free.
  • by Anonymous Coward on Monday April 12, 2004 @10:52PM (#8844080)
    Phat Linux first did this many years ago!

    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)

    by Anonymous Coward on Monday April 12, 2004 @10:54PM (#8844086)
    FreeBSD no less!! :-D
  • by _Sprocket_ ( 42527 ) on Monday April 12, 2004 @10:59PM (#8844129)


    Cygwin seems to run extremely fast and reliably already.


    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)

    by harlows_monkeys ( 106428 ) on Monday April 12, 2004 @11:02PM (#8844151) Homepage
    Do you know what approach Corel Linux took?

    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.

  • by dastrike ( 458983 ) on Monday April 12, 2004 @11:06PM (#8844176) Homepage

    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.

  • by Anonymous Coward on Monday April 12, 2004 @11:09PM (#8844195)
    You know how windows has done the above? Not because it considered the operating system as 'a controller of input and output of the computer and basic services to programs'. It split its kernel design into two parts, ther kernel as above, and the Windows executive that handles all the optimization hacks. And guess what, it works. And its even stable after 10 years.

    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).
  • by ball-lightning ( 594495 ) <spi131313@yahoo.com> on Monday April 12, 2004 @11:12PM (#8844207)
    guess my question is, why is it possible to have a decent Linux distribution that runs within XP, but it's not possible to take a dual-drive Dell and easily make your system let you choose between XP and Linux atstartup?

    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)

    by dekashizl ( 663505 ) on Monday April 12, 2004 @11:12PM (#8844210) Journal
    coLinux Wiki! [colinux.org]
  • Re:in reverse (Score:3, Informative)

    by randyest ( 589159 ) on Monday April 12, 2004 @11:17PM (#8844225) Homepage
    Er, I read the article, sorry to spoil your fun.

    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)

    by Anonymous Coward on Monday April 12, 2004 @11:22PM (#8844261)
    Windows NT line of operating systmes are completely Win32. Any Win16 function called is translated into an equivalent Win32 function.

    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.
  • by Jayfar ( 630313 ) on Monday April 12, 2004 @11:23PM (#8844270)
    I recall there being a lot of discussion when ms introed Cleartype about Steve Wozniak having developed a virtually identical font smoothing algorithm for the Apple II. Has this been rebutted? Do a google search for wozniak and cleartype [google.com]. Here's one article [grc.com].
  • by drinkypoo ( 153816 ) <drink@hyperlogos.org> on Monday April 12, 2004 @11:32PM (#8844322) Homepage Journal
    There is basically one issue with dual booting linux and windows, and that is where to put your data. Linux now has pretty good NTFS read support but reliable NTFS write support is only available by using the NTFS.SYS driver from Windows itself. There IS good support for changing the contents of a file on NTFS but not for creating files, enlarging them, etc. You can use this to create a disk image on an NTFS volume for use with linux, but that won't solve the problem of having both operating systems having access to a partition they can both read and write. You could use something like FAT32, but it sucks. It's slow, it has silly limitations, it doesn't support any kind of security whatsoever. Other than that, dual-booting the two is trivial. Just make your /boot your primary master, install Windows on your secondary master, put your / on your tertiary master and your fourth fdisk partition slot is an extended, for whatever else you need. Set the NT partition active, install NT, then boot a linux CD or floppy (heh) and install, placing the boot loader in the MBR and teaching it about NT. Voila, dual boot. Now you just have to decide on how you're going to handle those files...
  • by Aaron England ( 681534 ) on Monday April 12, 2004 @11:32PM (#8844324)
    Meanwhile Tom's Hardware [tomshardware.com] is running a series on migrating from Windows to Linux.

    Part 1 [tomshardware.com] | Part 2 [tomshardware.com]

  • by jbayes ( 15334 ) <jbayes@spoo.mminterne t . com> on Monday April 12, 2004 @11:33PM (#8844332) Homepage
    I've asked at least one well-credentialed tech person who uses Linux heavily, and he says dual-booting is still fraught with complications.

    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)

    by metal_priest ( 534211 ) on Monday April 12, 2004 @11:35PM (#8844349)
    QEMU [bellard.free.fr] is what you want instead of plex86. It works on linux and CVS kinda works on windows.

    QEMU can't run windows very well yet, but it runs Linux, ReactOS and handful of others already.

  • Re:Severe limitation (Score:3, Informative)

    by atticushp ( 537612 ) on Monday April 12, 2004 @11:36PM (#8844351)
    From the change log of version 0.6.0 AKA "Getting even"...
    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.
  • by spitzak ( 4019 ) on Monday April 12, 2004 @11:37PM (#8844360) Homepage
    The Windows POSIX was purposely designed to not interoperate with other programs in order to discourage it's use. Microsoft wrote it only to fulfill government purchasing requirements.

    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.
  • by tepples ( 727027 ) * <tepples@nospAm.gmail.com> on Monday April 12, 2004 @11:41PM (#8844393) Homepage Journal

    All? Have you downloaded and installed the Bitstream Vera [gnome.org] families into your X11 font server?

  • by Entropius ( 188861 ) on Monday April 12, 2004 @11:45PM (#8844418)
    ... is hardware support. Nobody can sell hardware without making sure that it works for Windows out of the box; the same isn't true for Linux. It's a chicken and the egg problem: there won't be "mandatory" hardware support until Linux is widely used, and Linux won't be widely used until there is mandatory hardware support.

    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)

    by drinkypoo ( 153816 ) <drink@hyperlogos.org> on Monday April 12, 2004 @11:49PM (#8844452) Homepage Journal
    NT's POSIX support is POSIX.1 support. The Unix world is interested in POSIX.2.
  • Re:Seems Like (Score:4, Informative)

    by useosx ( 693652 ) on Monday April 12, 2004 @11:51PM (#8844472)
    Not really, "Classic" mode in OS X (and X11 for that matter) is more integrated with the host system than CoLinux.

    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.
  • by Anonymous Coward on Monday April 12, 2004 @11:54PM (#8844493)
    The wife of a friend of mine is legally blind. In order to see the text on the screen, she needs to use some software that "zooms in" on a part of the screen, and by moving the mouse to the side of the screen, the zoom area pans in that direction. She has been using this software for over a decade, and it works much better than xzoom, where you have to find the zoom window, click, drag out into the screen, release the mouse button, and then try to click on the small version of whatever it was you were looking at in the zoom window. I have not found any Linux tools that come close to the usability of her Windows software.

    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)

    by spiritraveller ( 641174 ) on Tuesday April 13, 2004 @12:09AM (#8844575)
    Whatever you do, don't run 'X -configure' in it! It hard locks the system.

    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.

  • I posted something to this effect the first time this was announced. Essentially, I don't think this technology has the likelyhood of producing anything that's ever remotely safe to use. Here's why:

    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...
  • by prockcore ( 543967 ) on Tuesday April 13, 2004 @01:07AM (#8844862)
    Wozniak having developed a virtually identical font smoothing algorithm for the Apple II

    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)
  • by Guru2Newbie ( 536637 ) on Tuesday April 13, 2004 @01:09AM (#8844867) Homepage
    4.) Applications!

    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]

  • by be-fan ( 61476 ) on Tuesday April 13, 2004 @01:20AM (#8844907)
    Are you dense?

    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 .NET toolkit (Visual Studio), or WinFX (Longhorn)? That's not to consider other toolkits and APIs like MFC, VCL, Swing, etc.
  • by Effugas ( 2378 ) on Tuesday April 13, 2004 @02:48AM (#8845286) Homepage
    Threw this on MetaFilter [metafilter.com] a few hours ago; hope this helps clarify what's going on here. Thanks to the good Jason Spence for explaining most of this to me over fine tequila at Defcon a few years back :-)

    ===
    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)

    by Halfbaked Plan ( 769830 ) on Tuesday April 13, 2004 @03:09AM (#8845368)
    They signed an NDA with Microsoft to get the NT source code to create Interix. It runs on the bare NT kernel, you know, the 'API' that Microsoft doesn't give out. I'm not sure it was a 'viral' NDA, and I doubt if they put any Microsoft 'IP' into their code. The difficult that closed-source products being 'opened' usually face is when they have licensed components within them, not what software they link to or run on top of. But you may have a point.

    Water under the bridge in any case. It's Microsoft's zombie now.
  • Great potential (Score:2, Informative)

    by fearlezz ( 594718 ) on Tuesday April 13, 2004 @05:03AM (#8845821)
    I personally think this software has to overcome some big problems at the moment, but has a great potential for the future. I had it produce a kernel panic within 2 minutes after logging in. Also, it's way too slow to use more than an hour. Yet, after some more development, I think this will replace most of my Cygwin applications.

    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*
  • by mcbridematt ( 544099 ) on Tuesday April 13, 2004 @05:43AM (#8845947) Homepage Journal
    dxglwrap [sourceforge.net].
  • by Majix ( 139279 ) on Tuesday April 13, 2004 @06:19AM (#8846045) Homepage
    The GNOME Desktop project has been putting serious effort into making the Linux desktop accessible for a few years now. It has a screen reader and a top notch maginifier. For instance, the magnifier can be made to watch an area of the desktop for change, so that it notifies you of changes in another part of the desktop while you're entering text somewhere else. It also has extensive tracking and cursor presentation options, much more so that its Windows counterpart. Check out some of the newer features [gnome.org] in GNOME, it has improved a lot in just a year. There's also a long Accessibility Guide for GNOME, but it's not very good IMO. Still, all of the tools now have decent integrated help in 2.6.

    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 :)
  • by Minna Kirai ( 624281 ) on Tuesday April 13, 2004 @07:02AM (#8846162)
    At least someone else seems to think so too in this rant.

    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.
  • by Minna Kirai ( 624281 ) on Tuesday April 13, 2004 @07:36AM (#8846270)
    I'm completely unfamiliar with any of this legal stuff, but could Microsoft really prevent the independent implementation of a specification?

    Of course, there already is an independent implementation [transgaming.com].
  • by Dan Aloni ( 584167 ) on Tuesday April 13, 2004 @09:12AM (#8846938) Homepage

    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)

    by NeuroManson ( 214835 ) on Tuesday April 13, 2004 @11:34PM (#8856730) Homepage
    I've been saying for years that one of the most difficult things in adopting Linux, for Windows users, is an unfamiliar interface.

    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.
  • by cookd ( 72933 ) <[moc.onuj] [ta] [koocsalguod]> on Wednesday April 14, 2004 @02:07AM (#8857552) Journal
    Couple comments...

    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)

    by pensivemusic ( 684597 ) on Wednesday April 14, 2004 @10:33AM (#8859514)
    running these two on separate hard drives at the least. that seems to work fine, sharing a drive has given us many issues which a second drive solves in each case.
  • by pebs ( 654334 ) on Wednesday April 14, 2004 @03:53PM (#8863187) Homepage
    This isn't like Cygwin. The end result is more like running Linux in a VM (e.g. VMWare). Yes you can run all Linux x86 binaries. It's just like having the real thing installed.

    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.
  • by jmorris42 ( 1458 ) * <jmorris.beau@org> on Saturday April 17, 2004 @03:15PM (#8892905)
    > However, and correct me if I'm wrong, I think
    > 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.

All the simple programs have been written.

Working...