Running Linux as a Service in Windows

Started by Thorin, February 25, 2008, 10:51:56 AM

Previous topic - Next topic

Thorin

Quote
Seamlessly Run Linux Apps on Your Windows Desktop

There's no doubt that Linux?particularly Ubuntu?is a killer operating system full of excellent apps, but for about a million reasons, you're stuck running Windows as your main operating system. We understand, these things happen. But what about all those killer Linux apps you've left behind when you decided to live the Windows life? Sure you could dual-boot or run Linux in the confines of a virtual machine window, but wouldn't it be great if you could run those apps side-by-side with your Windows apps?like Linux users can do with WINE or OS X can do with Parallels or VMWare? You can, and today I'll show you how to seamlessly run your favorite Linux applications directly in Windows with a free software called andLinux.

What Is andLinux?

andLinux is actually a full installation of Ubuntu Linux running on top of your Windows operating system. Similar to how you can run coherence mode in Parallels or unity mode in VMWare Fusion, andLinux takes your Linux apps out of the virtual machine and creates a seamless interface in which they co-mingle with all your Windows apps. Kinky, huh?

Source: http://lifehacker.com/358208/seamlessly-run-linux-apps-on-your-windows-desktop

On the one hand, this is a really cool idea.  On the other hand, how many "average users" would consider installing this?  And how many "power users" would just dual-boot anyway, or even have a second machine for Linux use?

I think I sorta agree with this commenter's line of thinking:

Quote from: http://lifehacker.com/358208/seamlessly-run-linux-apps-on-your-windows-desktop#c4331666
OK, who's going to be the first to try this within Parallels/coherence or VMware/unity on a Mac? Oh yeah, then also do some nested VNC screen sharing on top of that. I have a straight jacket with your name on it.

Then again, it really does seem like a cool idea...
Prayin' for a 20!

gcc thorin.c -pedantic -o Thorin
compile successful

Cova

Ok - as much as the developers seem to want to hide the fact - this really is effectively just running Ubuntu in a VM on top of windows, and using a windows X server to display the apps on the windows desktop.  All they've really provided there is the nice windows interface to get the app's started (eg. displaying the menu's out of the taskbar.)

I really wish people would stop confusing methods of running app's under other OS's (eg. wine), with running app's inside of hidden virtualized OS installs (eg. Parallels coherence mode, or this andLinux thing).

Thorin

Did you look at the andLinux website, and the therefrom-linked Cooperative Linux website?  There seems to be a pretty strong claim by CoLinux that, in fact, there is no virtualization software being used.

Quote from: http://www.colinux.org/
Cooperative Linux (short-named coLinux) 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 2000/XP, without using a commercial PC virtualization software such as VMware

[..]

How does it work

Unlike in other Linux virtualization solutions such as User Mode Linux (or the forementioned VMware), special driver software on the host operating system is used to execute the coLinux kernel in a privileged mode (known as ring 0 or supervisor mode).

By constantly switching the machine's state between the host OS state and and the coLinux kernel state, coLinux is given full control of the physical machine's MMU (i.e, paging and protection) in its own specially allocated address space, and is able to act just like a native kernel, achieving almost the same performance and functionality that can be expected from a regular Linux which could have ran on the same machine standalone.

Since coLinux uses the same binary format for user-space executables as native Linux, coLinux can load and run an existing unmodified Linux distribution concurrently with the host OS.
Prayin' for a 20!

gcc thorin.c -pedantic -o Thorin
compile successful

Thorin

And regardless of the underlying technology, making a single machine able to run applications programmed for multiple operating systems side-by-side and (from the user's point of view) seamlessly is an interesting research path.
Prayin' for a 20!

gcc thorin.c -pedantic -o Thorin
compile successful

Cova

Quote from: Thorin on February 25, 2008, 12:43:02 PM
Did you look at the andLinux website, and the therefrom-linked Cooperative Linux website?  There seems to be a pretty strong claim by CoLinux that, in fact, there is no virtualization software being used.

Quote from: http://www.colinux.org/
Cooperative Linux (short-named coLinux) 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 2000/XP, without using a commercial PC virtualization software such as VMware

[..]

How does it work

Unlike in other Linux virtualization solutions such as User Mode Linux (or the forementioned VMware), special driver software on the host operating system is used to execute the coLinux kernel in a privileged mode (known as ring 0 or supervisor mode).

By constantly switching the machine's state between the host OS state and and the coLinux kernel state, coLinux is given full control of the physical machine's MMU (i.e, paging and protection) in its own specially allocated address space, and is able to act just like a native kernel, achieving almost the same performance and functionality that can be expected from a regular Linux which could have ran on the same machine standalone.

Since coLinux uses the same binary format for user-space executables as native Linux, coLinux can load and run an existing unmodified Linux distribution concurrently with the host OS.

Sorry..., you can call a cat a dog, but it's still a cat.  I did look do a fair bit of reading at both andLinux's and coLinux's sites before I made that post, and when I got to this part:

Quote from: http://www.colinux.org/Hardware virtualization

To cooperatively share hardware with the host operating system, coLinux does not access I/O devices directly. Instead, it interfaces with emulated devices provided by the coLinux drivers in the host OS. For example, a regular file in Windows can be used as a block device in coLinux. All real hardware interrupts are transparently forwarded to the host OS, so this way the host OS's control of the real hardware is not being disturbed and thus it continues to run smoothly.

I decided that they've basically written their own simplified virtualization layer.  IMHO they're trying to market themselves as something other than yet another virtualization layer for some reason, but as is common, the marketing-speak doesn't really match the technical details.

Thorin

That makes sense.  They're probably trying to distinguish themselves from the more-typical virtualization software because VMware and the like are often seen as "runs inside a window with no interaction between the guest and host OS".  Whereas Parallels in Coherence mode, for example, lets you copy and paste between OS X and Windows apps...
Prayin' for a 20!

gcc thorin.c -pedantic -o Thorin
compile successful

Tom

coLinux has been around a long while now. And its hardly virtualization ::)

All it is is a linux kernel running as a windows process. Simple as that. No VM, no virtualizing anything.
<Zapata Prime> I smell Stanley... And he smells good!!!

Cova

Quote from: Tom on February 25, 2008, 04:11:02 PM
coLinux has been around a long while now. And its hardly virtualization ::)

All it is is a linux kernel running as a windows process. Simple as that. No VM, no virtualizing anything.

It most definitely is virtualization, which is a much bigger topic than just VMware (and similar products).  Application, OS, and Hardware virtualization are just a few types - VMware, Parallels, etc. are all examples of hardware virtualization.  I'm not 100% sure where I'd put coLinux - it has some elements of hardware virtualization (it does present virtual block devices, virtual ethernet devices, etc. to the guest kernel), but it's not really presenting a full set of virtualized hardware, nor is it presenting the hardware as virtual devices that could be used by potentially any guest OS.

Anyways - there's only 3 ways to make an application for 1 OS run on a second OS.

1. Port it. (eg. Firefox has been ported to Windows, Linux, Mac, etc.)
2. Emulate the API it needs. (eg. Wine implements most of the Win32 API using linux system calls - any windows app using only the completed parts will run under Wine without needing any of Windows)
3. Run a complete virtual instance of the OS / API that the application needs.  And optionally in this case toss a layer on top like the coherence mode in Parallels.

Option 1 is usually not an option.

Option 2 is also usually not an option, and when it is it often has compatibility problems with many apps.

Option 3 is almost always an option, has almost 100% compatibility (still can't run games/3D and a few other things in a VM though), but has the most overhead.

Tom

Well then, my bare linux install must be virtualized as well! At least with your definition.
<Zapata Prime> I smell Stanley... And he smells good!!!

Thorin

Quote from: Cova on February 25, 2008, 11:29:53 AM
this really is effectively just running Ubuntu in a VM on top of windows

Quote from: Cova on February 25, 2008, 01:03:36 PM
I decided that they've basically written their own simplified virtualization layer.

Quote from: Cova on February 25, 2008, 04:45:27 PM
It most definitely is virtualization, which is a much bigger topic than just VMware (and similar products).  Application, OS, and Hardware virtualization are just a few types - VMware, Parallels, etc. are all examples of hardware virtualization.  I'm not 100% sure where I'd put coLinux - it has some elements of hardware virtualization (it does present virtual block devices, virtual ethernet devices, etc. to the guest kernel), but it's not really presenting a full set of virtualized hardware, nor is it presenting the hardware as virtual devices that could be used by potentially any guest OS.

Seems to me like your definition is drifting.  Is it possible that you're suffering from the same lack of detailed nitpicky semantics that you say they're suffering from? ;)

Rather than sitting and arguing over whether it does or doesn't constitute virtualization (especially since "virtualization" has an overly-broad definition that, when taken to extremes, means that everything but the solder on the motherboard is virtualization), can you as a devoted Linux user see any applications that would be highly useful for someone running Windows to use?
Prayin' for a 20!

gcc thorin.c -pedantic -o Thorin
compile successful

Lazybones

thar is a good question. what apps are available on linux but not windows?

I know there are free clones of projet and visio out there.

Cova

Quote from: Lazybones on February 25, 2008, 07:12:52 PM
thar is a good question. what apps are available on linux but not windows?

I know there are free clones of projet and visio out there.

Probably a good direction for the thread to take...

That free Visio clone sounds interesting - if you could remember the name it'd be great, else I'll google it later.

I had a hard time finding a free accounting-type software package for home for windows - using gnuCash now on linux, works good but not the easiest to use.

Using krdm for my RDP needs now.  It just uses rdesktop, but it provides a nice system of saving all your various diff connections settings, templates for new connections, and generally makes managing lots of RDP's to lots of servers more managable.

Konqueror proves to be really handy from time to time too.  It's just the default KDE file manager (in KDE3 at least, changing in 4 I think), but the way KDE uses plugins for IO means it can move files around between various different systems really well.  eg. you could put any of the following into its address bar, and transparently move/copy/open files across diff things:  /home/rob  smb://windows-box/c$  ftp://an.ftp.site   fish://a.ssh.server - hell if I do a file transfer over MSN I get a regular KDE file-copy window, with a source of kopete://user/filename... or something like that, and dest of /home/rob/downloads/...

And well - for the more technical crowd (though you can get this under windows with cygwin, and I believe MacOS has most of it in there somewhere) - the bash shell and all the other little tools you commonly use with it.  Sometimes the best way to get things done is the good old command-line, and exploit all the handy utils you can pipe the output through (grep, awk, sed, sort, etc.)

Lazybones

This is a diagramming tool geared toward programmers
http://www.codebydesign.com/

Found this with a search
http://www.koffice.org/kivio/

Some other discussion
http://www.webservertalk.com/archive291-2005-6-986650.html

I swear there was another one but I can't find a bookmark or anything.

Tom

#13
Theres a popular GTK based diagramming tool called Dia. I've used it on occasion.

Quotethar is a good question. what apps are available on linux but not windows?
Currently, Amarok. Though amarok2 will have an official windows and OSX port.

IMO, nothing beats Amarok currently. Some come close, but don't quite make it.
<Zapata Prime> I smell Stanley... And he smells good!!!

Lazybones

The next release of Amarok will have a native windows port.