Cooperative Linux
Hello fellow developers, kernel hackers, and open source contributors,
Cooperative Linux is a port of the Linux kernel which allows it to run cooperatively under other operating systems in ring0 without hardware emulation, based on very minimal changes in the architecture dependent code and almost no changes in functionality.
The bottom line is that it allows us to run Linux on an unmodified Windows 2000/XP system in a practical way (the user just launches an app), and it may eventually bring Linux to a large sector of desktop computer users who wouldn't even care about trying to install a dual boot system or boot a Linux live CD (like Knoppix).
Screen-shots and further details at:
Our motto is:
"If Linux runs on every architecture, why should another
operating system be in its way?"
coLinux is similar to plex86 in a way that it implements a Linux-specific lightweight VM with I/O virtualization. However, it is designed to be mostly host-OS independent, so that with minimal porting efforts it would be possible to run it under Solaris, Linux itself, or any operating system that supports loading kernel drivers, under any architecture that uses an MMU. Unlike other virtualization methods, it doesn't base its implementation on exceptions that are caused by instructions.
Cooperative Linux is like the kernel mode equivalent of User Mode Linux. It relies on the host OS kernel-space interfaces rather than relying on host OS user-space interfaces.
Currently, it is stable enough (on some common hardware configurations) for running a fully functional KNOPPIX/Debian system on Windows (see website screen-shots).
Another project close to achieving that goal is the Windows port of User Mode Linux (http://umlwin32.sf.net).
Project page:
http://sourceforge.net/projects/colinux
Thank you for your time,
- The coLinux development team.
This Open Source project is sponsored and produced by AIST, 2004
http://www.aist.go.jp/
Signature · 2 lines
Dan Aloni [email protected]
Quoted 6 lines · Dan Aloni
The bottom line is that it allows us to run Linux on an unmodified
Windows 2000/XP system in a practical way (the user just launches an app), and it may eventually bring Linux to a large sector of desktop computer users who wouldn't even care about trying to install a dual boot system or boot a Linux live CD (like Knoppix).Screen-shots and further details at:
Cool!
Quoted 4 lines
Our motto is:
"If Linux runs on every architecture, why should another
operating system be in its way?"
Indeed.
Quoted 1 line
coLinux is similar to plex86 in a way that it implements a Linux-specific lightweight VM with I/O virtualization. However, it is designed to be mostly host-OS independent, so that with minimal porting efforts it would be possible to run it under Solaris, Linux itself, or any operating system that supports loading kernel drivers, under any architecture that uses an MMU. Unlike other virtualization methods, it doesn't base its implementation on exceptions that are caused by instructions.
Right, that's the way to go with an OS for which the source is available. Have you looked at the work that's been going on with the Adeos nanokernel:
http://www.opersys.com/adeos/index.html
Some of the infrastructure required by all these virtualization solutions is fairly similar.
Karim
Signature · 3 lines
Author, Speaker, Developer, Consultant Pushing Embedded and Real-Time Linux Systems Beyond the Limits http://www.opersys.com || [email protected] || 1-866-677-4546
Hi!
Quoted 6 lines · Dan Aloni
Hello fellow developers, kernel hackers, and open source contributors,
Cooperative Linux is a port of the Linux kernel which allows it to run cooperatively under other operating systems in ring0 without hardware emulation, based on very minimal changes in the architecture dependent code and almost no changes in functionality.
The bottom line is that it allows us to run Linux on an unmodified Windows 2000/XP system in a practical way (the user just launches
Very nice! Can we run two (or more) instances of Linux at the same time?
When will you release a linux-as-host patch? :-)
Regards,
Nuno Silva
Quoted 10 lines · Nuno Silva
Hi!
Quoted 7 lines · Dan Aloni
Hello fellow developers, kernel hackers, and open source contributors,
Cooperative Linux is a port of the Linux kernel which allows it to run cooperatively under other operating systems in ring0 without hardware emulation, based on very minimal changes in the architecture dependent code and almost no changes in functionality.
Quoted 4 lines
Quoted 2 lines
The bottom line is that it allows us to run Linux on an unmodified Windows 2000/XP system in a practical way (the user just launches
Very nice! Can we run two (or more) instances of Linux at the same time?
Yes, it would be possible.
Quoted 1 line
When will you release a linux-as-host patch? :-)
I can't say exactly when, but several people volunteered to work on this.
Signature · 2 lines
Dan Aloni [email protected]
Quoted 1 line · Dan Aloni
I can't say exactly when, but several people volunteered to work on this.
BTW, I've been looking at the code. Many of the tricks done for forcing NT to share resources with Linux should be unnecessary for a Linux setup. Also, the code apparently assumes only two OSes. You probably want to check the detailed discussion I had written some time ago about how to easily obtain an SMP cluster with Linux (N instances on separate CPUs with very few code modifications required):
http://www.opersys.com/adeos/dox/practical-smp-clusters/practical-smp-clusters.html
Some of the code you've already written can be used as-is to this end. The nanokernel side still needs some extending, but you've brought things one step closer to completion.
On a UP system, instead of running just 2 instances, you can load a nanokernel in a fixed RAM region and remap it in every instance's virtual memory. You can then use a slightly modified kexec to start independent images in different RAM regions. I had discussed this with Eric at the last OLS and he was interested. The added advantage with Adeos is that you could then share a single interrupt pipeline among all OSes, and have different OSes manage different hardware components. Of course, if you add the PCI allocation code I cover in the above paper, you can then have things like two kernels independently managing, for example, two seperate sets of ethernet card and SCSI disk. There's some pretty cool stuff to be done here, away from the simple virtual devices. You could also have a virtual ethernet layer which is shared by all OS images, and then have a private network between all OS instances. With Adeos, you can also have one kernel take care of all hard-rt operations and another kernel take care of the soft-rt operations. All of it is fairly hardware independent.
Karim
Signature · 3 lines
Author, Speaker, Developer, Consultant Pushing Embedded and Real-Time Linux Systems Beyond the Limits http://www.opersys.com || [email protected] || 1-866-677-4546
Quoted 4 lines · Karim Yaghmour
Quoted 1 line · Dan Aloni
I can't say exactly when, but several people volunteered to work on this.
Quoted 10 lines
BTW, I've been looking at the code. Many of the tricks done for forcing NT to share resources with Linux should be unnecessary for a Linux setup. Also, the code apparently assumes only two OSes. You probably want to check the detailed discussion I had written some time ago about how to easily obtain an SMP cluster with Linux (N instances on separate CPUs with very few code modifications required):
http://www.opersys.com/adeos/dox/practical-smp-clusters/practical-smp-clusters.html
Some of the code you've already written can be used as-is to this end. The nanokernel side still needs some extending, but you've brought things one step closer to completion.
The code doesn't assume two OS's. It only assumes that the VM monitor switches between the host OS and the guest OS alone, but that doesn't prevent you from running two or more monitors, which would be scheduled by the host OS scheduler.
Quoted 8 lines
On a UP system, instead of running just 2 instances, you can load a nanokernel in a fixed RAM region and remap it in every instance's virtual memory. You can then use a slightly modified kexec to start independent images in different RAM regions. I had discussed this with Eric at the last OLS and he was interested. The added advantage with Adeos is that you could then share a single interrupt pipeline among all OSes, and have different OSes manage different hardware components. Of course, if you add the PCI allocation code I cover in the
Quoted 8 lines
above paper, you can then have things like two kernels independently managing, for example, two seperate sets of ethernet card and SCSI disk. There's some pretty cool stuff to be done here, away from the simple virtual devices. You could also have a virtual ethernet layer which is shared by all OS images, and then have a private network between all OS instances. With Adeos, you can also have one kernel take care of all hard-rt operations and another kernel take care of the soft-rt operations. All of it is fairly hardware independent.
That's interesting, but allowing Cooperative Linux to directly access the hardware is problematic on systems like Windows. coLinux's goal is more focused on bringing Linux to other operating systems than resources sharing among several operating systems.
However, I have no doubt it can be used to run several virtual Linux's on a single SMP Linux machine, with emphasis on the 'virtual'.
Signature · 2 lines
Dan Aloni [email protected]
Quoted 7 lines · Nuno Silva
Quoted 7 lines
Hello fellow developers, kernel hackers, and open source contributors,
Cooperative Linux is a port of the Linux kernel which allows it to run cooperatively under other operating systems in ring0 without hardware emulation, based on very minimal changes in the architecture dependent code and almost no changes in functionality.
Quoted 7 lines
Quoted 2 lines
The bottom line is that it allows us to run Linux on an unmodified Windows 2000/XP system in a practical way (the user just launches
Very nice! Can we run two (or more) instances of Linux at the same time?
When will you release a linux-as-host patch? :-)
How about a bare bone OS whose sole purpose is to run multiple OS on top of it? A pure VM OS.
Quoted 2 lines · JustFillBug
How about a bare bone OS whose sole purpose is to run multiple OS on top of it? A pure VM OS.
For what it's worth, this has been done in the proprietary world as successful commercial software, as VMware ESX Server. Might want to have a look at that if you seriously contemplate something like that.
Signature · 3 lines
Ben Pfaff email: [email protected] web: http://benpfaff.org
Quoted 2 lines · Ben Pfaff
For what it's worth, this has been done in the proprietary world as successful commercial software, as VMware ESX Server.
Which seems to be nothing more than a hacked up Linux..
Quoted 5 lines · Christoph Hellwig
Quoted 2 lines · Ben Pfaff
For what it's worth, this has been done in the proprietary world as successful commercial software, as VMware ESX Server.
Which seems to be nothing more than a hacked up Linux..
Not even close to true. ESX Server includes a hacked up Linux as part of its front end, but there's a lot more than that.
Signature · 3 lines
"...dans ce pays-ci il est bon de tuer de temps en temps un amiral pour encourager les autres." --Voltaire, _Candide_
Quoted 8 lines · Ben Pfaff
Quoted 5 lines · Ben Pfaff
Quoted 2 lines
For what it's worth, this has been done in the proprietary world as successful commercial software, as VMware ESX Server.
Which seems to be nothing more than a hacked up Linux..
Not even close to true. ESX Server includes a hacked up Linux as part of its front end, but there's a lot more than that.
Well, I've only seen their driver API is the linux API with slight changes. Can you elaborate what "includes a hacked up Linux as part of its front end" means and where we can get the source to the rest of this frontend (and the linux changes)?
Quoted 7 lines · Christoph Hellwig
Quoted 6 lines · Ben Pfaff
Quoted 5 lines · Ben Pfaff
Quoted 2 lines
For what it's worth, this has been done in the proprietary world as successful commercial software, as VMware ESX Server.
Which seems to be nothing more than a hacked up Linux..
Quoted 7 lines
Quoted 2 lines
Not even close to true. ESX Server includes a hacked up Linux as part of its front end, but there's a lot more than that.
Well, I've only seen their driver API is the linux API with slight changes. Can you elaborate what "includes a hacked up Linux as part of its front end" means and where we can get the source to the rest of this frontend (and the linux changes)?
Christoph http://www.vmware.com/download/open_sources.html shows the kernel mods as well as others....
Omkhar
Quoted 2 lines · JustFillBug
How about a bare bone OS whose sole purpose is to run multiple OS on top of it? A pure VM OS.
How about reinventing the wheel:
http://www.opersys.com/adeos/index.html
The potential of reusing Dan's work on colinux to complete what Adeos has already started seems rather clear.
Karim
Signature · 3 lines
Author, Speaker, Developer, Consultant Pushing Embedded and Real-Time Linux Systems Beyond the Limits http://www.opersys.com || [email protected] || 1-866-677-4546
Hi!
Quoted 5 lines · JustFillBug
How about a bare bone OS whose sole purpose is to run multiple OS on top of it? A pure VM OS.
That's xen. You can learn more here:
http://www.cl.cam.ac.uk/Research/SRG/netos/xen/
Regards,
Nuno Silva
Quoted 3 lines · Nuno Silva
That's xen. You can learn more here:
http://www.cl.cam.ac.uk/Research/SRG/netos/xen/
For a UP system, Xen may be fine, depending on what you're trying to do. If you're looking for a better VMware, then Xen is likely to fit your bill. However, there are a few things to keep in mind when looking at this sort of stuff. So, for example, Xen assumes that all OSes are going to use the same devices for I/O: same disk, same NIC, etc. It therefore implements lots of virtual devices for these. But what if you wanted each OS to manage separate hardware? Also, I'm not sure I want my OS instances to have to request memory on a page basis with the nanokernel/monitor. Wouldn't it be just better to reuse the existing work on the hotplug hardware (hotplug CPU, hotplug memory, etc.) to have the kernels get/return hardware resources to the nanokernel? Also, how generic is the virtualization solution being examined? I've put some thought into getting a virtualization architecture which spans UP, SMP, SMP-clusters, and hard-rt, and wrote that down as a series of papers about Adeos. I probably don't have the final answer, and there are probably many things I haven't figured out in the papers I've written on the topic, but you may want to take a look.
Karim
Signature · 3 lines
Author, Speaker, Developer, Consultant Pushing Embedded and Real-Time Linux Systems Beyond the Limits http://www.opersys.com || [email protected] || 1-866-677-4546
Quoted 3 lines · Karim Yaghmour
So, for example, Xen assumes that all OSes are going to use the same devices for I/O: same disk, same NIC, etc. It therefore implements lots of virtual devices for these.
Consolidation means more efficient hardware use ...
Quoted 3 lines
Wouldn't it be just better to reuse the existing work on the hotplug hardware (hotplug CPU, hotplug memory, etc.) to have the kernels get/return hardware resources to the nanokernel?
That means a loss of flexibility. Furthermore, these hotplug patches don't seem ready yet.
Rik
Signature · 3 lines
"Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it." - Brian W. Kernighan
Quoted 6 lines · Rik van Riel
Quoted 3 lines
So, for example, Xen assumes that all OSes are going to use the same devices for I/O: same disk, same NIC, etc. It therefore implements lots of virtual devices for these.
Consolidation means more efficient hardware use ...
In the case of a UP system, it may ... depending on what you're trying to do. On an SMP system or an SMP-cluster, however, consilidation is likely to mean loss of performance.
Quoted 6 lines
Quoted 3 lines
Wouldn't it be just better to reuse the existing work on the hotplug hardware (hotplug CPU, hotplug memory, etc.) to have the kernels get/return hardware resources to the nanokernel?
That means a loss of flexibility.
It depends on your setup. In the case of an SMP-cluster where all OS instances are launched at startup, where runtime setup modification can be costly because of global table changes, and where centralization is to be avoided in as much as possible, then the hotplug capabilities are probably the best way to go. If there's a desire to have both capabilities (fine-grain allocation and gross-grain allocation) in whatever is finally adopted, then that's something to keep in mind. I guess I'm just saying that there are pros and cons, depending on your setup.
Quoted 2 lines
Furthermore, these hotplug
patches don't seem ready yet.
Yes, I'm aware of this. There are other components of a truely generic virtualization interface which are missing. Does that mean we shouldn't think ahead?
Karim
Signature · 3 lines
Author, Speaker, Developer, Consultant Pushing Embedded and Real-Time Linux Systems Beyond the Limits http://www.opersys.com || [email protected] || 1-866-677-4546
Quoted 2 lines · JustFillBug
How about a bare bone OS whose sole purpose is to run multiple OS on top of it? A pure VM OS.
It's easier if that OS is Linux, so we can reuse all the device drivers.
Signature · 3 lines
"Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it." - Brian W. Kernighan
Quoted 8 lines · JustFillBug
Quoted 3 lines
How about a bare bone OS whose sole purpose is to run multiple OS on top of it? A pure VM OS.
It's easier if that OS is Linux, so we can reuse all the device drivers.
I would love to see code for Linux to allow you to create any number of VMs
with various configurable combinations of emulated hardware. Vmware is extremely inflexible. Are there any projects under way to do that?
DS