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:
http://www.colinux.org
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/
--
Dan Aloni
[email protected]
Dan Aloni wrote:
> 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:
>
> http://www.colinux.org
Cool!
> Our motto is:
>
> "If Linux runs on every architecture, why should another
> operating system be in its way?"
Indeed.
> 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
--
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!
Dan Aloni wrote:
> 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
On Mon, Jan 26, 2004 at 03:40:12AM +0000, Nuno Silva wrote:
> Hi!
>
> Dan Aloni wrote:
> >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?
Yes, it would be possible.
> When will you release a linux-as-host patch? :-)
I can't say exactly when, but several people volunteered to work on this.
--
Dan Aloni
[email protected]
On 2004-01-26, Nuno Silva <[email protected]> wrote:
>> 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? :-)
>
How about a bare bone OS whose sole purpose is to run multiple OS on top
of it? A pure VM OS.
Dan Aloni wrote:
> 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
--
Author, Speaker, Developer, Consultant
Pushing Embedded and Real-Time Linux Systems Beyond the Limits
http://www.opersys.com || [email protected] || 1-866-677-4546
JustFillBug <[email protected]> writes:
> 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.
--
Ben Pfaff
email: [email protected]
web: http://benpfaff.org
JustFillBug wrote:
> 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
--
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!
JustFillBug wrote:
>
>
> 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
Nuno Silva wrote:
> 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
--
Author, Speaker, Developer, Consultant
Pushing Embedded and Real-Time Linux Systems Beyond the Limits
http://www.opersys.com || [email protected] || 1-866-677-4546
On Mon, Jan 26, 2004 at 12:01:25AM -0500, Karim Yaghmour wrote:
>
> Dan Aloni wrote:
> >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.
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.
> 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.
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'.
--
Dan Aloni
[email protected]
On Sun, Jan 25, 2004 at 08:59:52PM -0800, Ben Pfaff wrote:
> 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..
On Mon, 26 Jan 2004, JustFillBug wrote:
> 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.
--
"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
On Mon, 26 Jan 2004, Karim Yaghmour wrote:
> 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 ...
> 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
--
"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
Rik van Riel wrote:
>>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.
>>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.
> 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
--
Author, Speaker, Developer, Consultant
Pushing Embedded and Real-Time Linux Systems Beyond the Limits
http://www.opersys.com || [email protected] || 1-866-677-4546
Christoph Hellwig <[email protected]> writes:
> On Sun, Jan 25, 2004 at 08:59:52PM -0800, Ben Pfaff wrote:
>> 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.
--
"...dans ce pays-ci il est bon de tuer de temps en temps un amiral
pour encourager les autres."
--Voltaire, _Candide_
On Mon, Jan 26, 2004 at 09:00:22AM -0800, Ben Pfaff wrote:
> > On Sun, Jan 25, 2004 at 08:59:52PM -0800, Ben Pfaff wrote:
> >> 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)?
On Mon, 2004-01-26 at 14:44, Christoph Hellwig wrote:
> On Mon, Jan 26, 2004 at 09:00:22AM -0800, Ben Pfaff wrote:
> > > On Sun, Jan 25, 2004 at 08:59:52PM -0800, Ben Pfaff wrote:
> > >> 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)?
Christoph http://www.vmware.com/download/open_sources.html shows the
kernel mods as well as others....
Omkhar
> On Mon, 26 Jan 2004, JustFillBug wrote:
> > 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
For fun, I though I would try building this, so I downloaded the source
tarball from sourceforge. But it seems the makefile for building the host OS
support code (src/colinux/os/winnt/build/Makefile, mentioned in
doc/building) is missing. Is this just an oversight, or do you intend that
it not be buildable at this time?
-Paul
Send off-list replies to zimmerman DOT paul AT comcast DOT net
_________________________________________________________________
High-speed users?be more efficient online with the new MSN Premium Internet
Software. http://join.msn.com/?pgmarket=en-us&page=byoa/prem&ST=1
On Wed, Jan 28, 2004 at 09:57:41PM -0800, Paul Zimmerman wrote:
> For fun, I though I would try building this, so I downloaded the source
> tarball from sourceforge. But it seems the makefile for building the host
> OS support code (src/colinux/os/winnt/build/Makefile, mentioned in
> doc/building) is missing. Is this just an oversight, or do you intend that
> it not be buildable at this time?
A few files were missing when I packed it.
Here's the patch I sent on the colinux-devel mailing list against that tarball.
diff -urN colinux-20040119/ChangeLog colinux-20040128/ChangeLog
--- colinux-20040119/ChangeLog 1970-01-01 02:00:00.000000000 +0200
+++ colinux-20040128/ChangeLog 2004-01-27 01:01:26.000000000 +0200
@@ -0,0 +1,4 @@
+Version 0.5.2
+ * Added some missing files to the build tree
+ * doc/cygwin-cross-build - How to build a cygwin cross compilation tools
+ on Linux.
diff -urN colinux-20040119/conf/README colinux-20040128/conf/README
--- colinux-20040119/conf/README 1970-01-01 02:00:00.000000000 +0200
+++ colinux-20040128/conf/README 2004-01-19 17:42:07.000000000 +0200
@@ -0,0 +1,4 @@
+This directory contains example configuration files for the coLinux daemon.
+
+It also contain a configuration file that can be used as a .config for
+compling the cooperative Linux kernel.
\ No newline at end of file
diff -urN colinux-20040119/conf/default.colinux.xml colinux-20040128/conf/default.colinux.xml
--- colinux-20040119/conf/default.colinux.xml 1970-01-01 02:00:00.000000000 +0200
+++ colinux-20040128/conf/default.colinux.xml 2004-01-19 17:22:03.000000000 +0200
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<colinux>
+ <block_device index="0" path="\DosDevices\c:\colinux\root_fs" enabled="true">
+ <block_device index="1" path="\DosDevices\c:\colinux\swap_device" enabled="true">
+ </block_device>
+ <bootparams>init=/bin/bash</bootparams>
+ <image path="vmlinux"></image>
+</colinux>
diff -urN colinux-20040119/conf/linux-config colinux-20040128/conf/linux-config
--- colinux-20040119/conf/linux-config 1970-01-01 02:00:00.000000000 +0200
+++ colinux-20040128/conf/linux-config 2004-01-26 23:13:01.000000000 +0200
@@ -0,0 +1,515 @@
+#
+# Automatically generated make config: don't edit
+#
+CONFIG_X86=y
+# CONFIG_SBUS is not set
+CONFIG_UID16=y
+
+#
+# Code maturity level options
+#
+CONFIG_EXPERIMENTAL=y
+
+#
+# Loadable module support
+#
+CONFIG_MODULES=y
+CONFIG_MODVERSIONS=y
+CONFIG_KMOD=y
+
+#
+# Processor type and features
+#
+CONFIG_M386=y
+# CONFIG_M486 is not set
+# CONFIG_M586 is not set
+# CONFIG_M586TSC is not set
+# CONFIG_M586MMX is not set
+# CONFIG_M686 is not set
+# CONFIG_MPENTIUMIII is not set
+# CONFIG_MPENTIUM4 is not set
+# CONFIG_MK6 is not set
+# CONFIG_MK7 is not set
+# CONFIG_MK8 is not set
+# CONFIG_MELAN is not set
+# CONFIG_MCRUSOE is not set
+# CONFIG_MWINCHIPC6 is not set
+# CONFIG_MWINCHIP2 is not set
+# CONFIG_MWINCHIP3D is not set
+# CONFIG_MCYRIXIII is not set
+# CONFIG_MVIAC3_2 is not set
+# CONFIG_X86_CMPXCHG is not set
+# CONFIG_X86_XADD is not set
+CONFIG_X86_L1_CACHE_SHIFT=4
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
+CONFIG_X86_PPRO_FENCE=y
+# CONFIG_X86_F00F_WORKS_OK is not set
+# CONFIG_X86_MCE is not set
+# CONFIG_TOSHIBA is not set
+# CONFIG_I8K is not set
+# CONFIG_MICROCODE is not set
+# CONFIG_X86_MSR is not set
+# CONFIG_X86_CPUID is not set
+# CONFIG_EDD is not set
+CONFIG_NOHIGHMEM=y
+# CONFIG_HIGHMEM4G is not set
+# CONFIG_HIGHMEM64G is not set
+# CONFIG_HIGHMEM is not set
+# CONFIG_MATH_EMULATION is not set
+# CONFIG_MTRR is not set
+# CONFIG_SMP is not set
+CONFIG_X86_UP_COPIC=y
+CONFIG_X86_COPIC=y
+# CONFIG_X86_TSC_DISABLE is not set
+CONFIG_X86_TSC=y
+
+#
+# General setup
+#
+CONFIG_NET=y
+# CONFIG_PCI is not set
+# CONFIG_ISA is not set
+# CONFIG_EISA is not set
+# CONFIG_MCA is not set
+# CONFIG_HOTPLUG is not set
+# CONFIG_PCMCIA is not set
+# CONFIG_HOTPLUG_PCI is not set
+CONFIG_SYSVIPC=y
+# CONFIG_BSD_PROCESS_ACCT is not set
+CONFIG_SYSCTL=y
+CONFIG_KCORE_ELF=y
+# CONFIG_KCORE_AOUT is not set
+CONFIG_BINFMT_AOUT=y
+CONFIG_BINFMT_ELF=y
+CONFIG_BINFMT_MISC=y
+# CONFIG_PM is not set
+# CONFIG_APM_IGNORE_USER_SUSPEND is not set
+# CONFIG_APM_DO_ENABLE is not set
+# CONFIG_APM_CPU_IDLE is not set
+# CONFIG_APM_DISPLAY_BLANK is not set
+# CONFIG_APM_RTC_IS_GMT is not set
+# CONFIG_APM_ALLOW_INTS is not set
+# CONFIG_APM_REAL_MODE_POWER_OFF is not set
+CONFIG_COOPERATIVE=y
+
+#
+# ACPI Support
+#
+# CONFIG_ACPI is not set
+
+#
+# Memory Technology Devices (MTD)
+#
+# CONFIG_MTD is not set
+
+#
+# Parallel port support
+#
+# CONFIG_PARPORT is not set
+
+#
+# Plug and Play configuration
+#
+# CONFIG_PNP is not set
+
+#
+# Block devices
+#
+# CONFIG_BLK_DEV_FD is not set
+CONFIG_BLK_DEV_LOOP=y
+# CONFIG_BLK_DEV_NBD is not set
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_SIZE=4096
+# CONFIG_BLK_DEV_INITRD is not set
+CONFIG_BLK_DEV_PBD=y
+CONFIG_BLK_STATS=y
+
+#
+# Multi-device support (RAID and LVM)
+#
+# CONFIG_MD is not set
+
+#
+# Networking options
+#
+CONFIG_PACKET=y
+# CONFIG_PACKET_MMAP is not set
+CONFIG_NETLINK_DEV=y
+# CONFIG_NETFILTER is not set
+# CONFIG_FILTER is not set
+CONFIG_UNIX=y
+CONFIG_INET=y
+# CONFIG_IP_MULTICAST is not set
+# CONFIG_IP_ADVANCED_ROUTER is not set
+# CONFIG_IP_PNP is not set
+# CONFIG_NET_IPIP is not set
+# CONFIG_NET_IPGRE is not set
+# CONFIG_ARPD is not set
+# CONFIG_INET_ECN is not set
+# CONFIG_SYN_COOKIES is not set
+# CONFIG_IPV6 is not set
+# CONFIG_KHTTPD is not set
+
+#
+# SCTP Configuration (EXPERIMENTAL)
+#
+CONFIG_IPV6_SCTP__=y
+# CONFIG_IP_SCTP is not set
+# CONFIG_ATM is not set
+# CONFIG_VLAN_8021Q is not set
+
+#
+#
+#
+# CONFIG_IPX is not set
+# CONFIG_ATALK is not set
+
+#
+# Appletalk devices
+#
+# CONFIG_DECNET is not set
+# CONFIG_BRIDGE is not set
+# CONFIG_X25 is not set
+# CONFIG_LAPB is not set
+# CONFIG_LLC is not set
+# CONFIG_NET_DIVERT is not set
+# CONFIG_ECONET is not set
+# CONFIG_WAN_ROUTER is not set
+# CONFIG_NET_FASTROUTE is not set
+# CONFIG_NET_HW_FLOWCONTROL is not set
+
+#
+# QoS and/or fair queueing
+#
+# CONFIG_NET_SCHED is not set
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+
+#
+# Telephony Support
+#
+# CONFIG_PHONE is not set
+
+#
+# ATA/IDE/MFM/RLL support
+#
+# CONFIG_IDE is not set
+# CONFIG_BLK_DEV_IDE_MODES is not set
+# CONFIG_BLK_DEV_HD is not set
+
+#
+# SCSI support
+#
+# CONFIG_SCSI is not set
+
+#
+# Fusion MPT device support
+#
+# CONFIG_FUSION_BOOT is not set
+# CONFIG_FUSION_ISENSE is not set
+# CONFIG_FUSION_CTL is not set
+# CONFIG_FUSION_LAN is not set
+
+#
+# I2O device support
+#
+# CONFIG_I2O is not set
+
+#
+# Network device support
+#
+CONFIG_NETDEVICES=y
+
+#
+# ARCnet devices
+#
+# CONFIG_ARCNET is not set
+# CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_EQUALIZER is not set
+# CONFIG_TUN is not set
+# CONFIG_ETHERTAP is not set
+
+#
+# Ethernet (10 or 100Mbit)
+#
+# CONFIG_NET_ETHERNET is not set
+
+#
+# Ethernet (1000 Mbit)
+#
+# CONFIG_ACENIC_OMIT_TIGON_I is not set
+# CONFIG_E1000_NAPI is not set
+CONFIG_COOPERATIVE_CONET=y
+# CONFIG_FDDI is not set
+# CONFIG_HIPPI is not set
+# CONFIG_PPP is not set
+# CONFIG_SLIP is not set
+
+#
+# Wireless LAN (non-hamradio)
+#
+# CONFIG_NET_RADIO is not set
+
+#
+# Token Ring devices
+#
+# CONFIG_TR is not set
+# CONFIG_NET_FC is not set
+# CONFIG_SHAPER is not set
+
+#
+# Wan interfaces
+#
+# CONFIG_WAN is not set
+
+#
+# Amateur Radio support
+#
+# CONFIG_HAMRADIO is not set
+
+#
+# IrDA (infrared) support
+#
+# CONFIG_IRDA is not set
+
+#
+# ISDN subsystem
+#
+# CONFIG_ISDN is not set
+
+#
+# Input core support
+#
+# CONFIG_INPUT is not set
+CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
+
+#
+# Character devices
+#
+CONFIG_VT=y
+CONFIG_VT_CONSOLE=y
+# CONFIG_SERIAL is not set
+# CONFIG_SERIAL_NONSTANDARD is not set
+CONFIG_UNIX98_PTYS=y
+CONFIG_UNIX98_PTY_COUNT=256
+
+#
+# I2C support
+#
+# CONFIG_I2C is not set
+
+#
+# Mice
+#
+# CONFIG_BUSMOUSE is not set
+# CONFIG_MOUSE is not set
+
+#
+# Joysticks
+#
+# CONFIG_INPUT_GAMEPORT is not set
+
+#
+# Input core support is needed for gameports
+#
+
+#
+# Input core support is needed for joysticks
+#
+# CONFIG_QIC02_TAPE is not set
+# CONFIG_IPMI_HANDLER is not set
+
+#
+# Watchdog Cards
+#
+# CONFIG_WATCHDOG is not set
+# CONFIG_SCx200_GPIO is not set
+# CONFIG_NVRAM is not set
+# CONFIG_RTC is not set
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+# CONFIG_APPLICOM is not set
+
+#
+# Ftape, the floppy tape device driver
+#
+# CONFIG_FTAPE is not set
+# CONFIG_AGP is not set
+
+#
+# Direct Rendering Manager (XFree86 DRI support)
+#
+# CONFIG_DRM is not set
+# CONFIG_MWAVE is not set
+
+#
+# Multimedia devices
+#
+# CONFIG_VIDEO_DEV is not set
+
+#
+# File systems
+#
+# CONFIG_QUOTA is not set
+# CONFIG_AUTOFS_FS is not set
+CONFIG_AUTOFS4_FS=y
+# CONFIG_REISERFS_FS is not set
+# CONFIG_ADFS_FS is not set
+# CONFIG_AFFS_FS is not set
+# CONFIG_HFS_FS is not set
+# CONFIG_HFSPLUS_FS is not set
+# CONFIG_BEFS_FS is not set
+# CONFIG_BFS_FS is not set
+CONFIG_EXT3_FS=y
+CONFIG_JBD=y
+# CONFIG_JBD_DEBUG is not set
+CONFIG_FAT_FS=m
+CONFIG_MSDOS_FS=m
+# CONFIG_UMSDOS_FS is not set
+CONFIG_VFAT_FS=m
+# CONFIG_EFS_FS is not set
+# CONFIG_CRAMFS is not set
+CONFIG_TMPFS=y
+CONFIG_RAMFS=y
+CONFIG_ISO9660_FS=m
+CONFIG_JOLIET=y
+CONFIG_ZISOFS=y
+# CONFIG_JFS_FS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_VXFS_FS is not set
+# CONFIG_NTFS_FS is not set
+# CONFIG_HPFS_FS is not set
+CONFIG_PROC_FS=y
+# CONFIG_DEVFS_FS is not set
+CONFIG_DEVPTS_FS=y
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_ROMFS_FS is not set
+CONFIG_EXT2_FS=y
+# CONFIG_SYSV_FS is not set
+# CONFIG_UDF_FS is not set
+# CONFIG_UFS_FS is not set
+
+#
+# Network File Systems
+#
+# CONFIG_CODA_FS is not set
+# CONFIG_INTERMEZZO_FS is not set
+# CONFIG_NFS_FS is not set
+# CONFIG_NFSD is not set
+# CONFIG_SUNRPC is not set
+# CONFIG_LOCKD is not set
+# CONFIG_SMB_FS is not set
+# CONFIG_NCP_FS is not set
+CONFIG_ZISOFS_FS=m
+
+#
+# Partition Types
+#
+# CONFIG_PARTITION_ADVANCED is not set
+CONFIG_MSDOS_PARTITION=y
+# CONFIG_SMB_NLS is not set
+CONFIG_NLS=y
+
+#
+# Native Language Support
+#
+CONFIG_NLS_DEFAULT="iso8859-1"
+# CONFIG_NLS_CODEPAGE_437 is not set
+# CONFIG_NLS_CODEPAGE_737 is not set
+# CONFIG_NLS_CODEPAGE_775 is not set
+# CONFIG_NLS_CODEPAGE_850 is not set
+# CONFIG_NLS_CODEPAGE_852 is not set
+# CONFIG_NLS_CODEPAGE_855 is not set
+# CONFIG_NLS_CODEPAGE_857 is not set
+# CONFIG_NLS_CODEPAGE_860 is not set
+# CONFIG_NLS_CODEPAGE_861 is not set
+# CONFIG_NLS_CODEPAGE_862 is not set
+# CONFIG_NLS_CODEPAGE_863 is not set
+# CONFIG_NLS_CODEPAGE_864 is not set
+# CONFIG_NLS_CODEPAGE_865 is not set
+# CONFIG_NLS_CODEPAGE_866 is not set
+# CONFIG_NLS_CODEPAGE_869 is not set
+# CONFIG_NLS_CODEPAGE_936 is not set
+# CONFIG_NLS_CODEPAGE_950 is not set
+# CONFIG_NLS_CODEPAGE_932 is not set
+# CONFIG_NLS_CODEPAGE_949 is not set
+# CONFIG_NLS_CODEPAGE_874 is not set
+# CONFIG_NLS_ISO8859_8 is not set
+# CONFIG_NLS_CODEPAGE_1250 is not set
+# CONFIG_NLS_CODEPAGE_1251 is not set
+# CONFIG_NLS_ISO8859_1 is not set
+# CONFIG_NLS_ISO8859_2 is not set
+# CONFIG_NLS_ISO8859_3 is not set
+# CONFIG_NLS_ISO8859_4 is not set
+# CONFIG_NLS_ISO8859_5 is not set
+# CONFIG_NLS_ISO8859_6 is not set
+# CONFIG_NLS_ISO8859_7 is not set
+# CONFIG_NLS_ISO8859_9 is not set
+# CONFIG_NLS_ISO8859_13 is not set
+# CONFIG_NLS_ISO8859_14 is not set
+# CONFIG_NLS_ISO8859_15 is not set
+# CONFIG_NLS_KOI8_R is not set
+# CONFIG_NLS_KOI8_U is not set
+# CONFIG_NLS_UTF8 is not set
+
+#
+# Console drivers
+#
+CONFIG_COOPERATIVE_CONSOLE=y
+# CONFIG_VIDEO_SELECT is not set
+# CONFIG_MDA_CONSOLE is not set
+
+#
+# Frame-buffer support
+#
+# CONFIG_FB is not set
+
+#
+# Sound
+#
+# CONFIG_SOUND is not set
+
+#
+# USB support
+#
+
+#
+# Support for USB gadgets
+#
+# CONFIG_USB_GADGET is not set
+
+#
+# Bluetooth support
+#
+# CONFIG_BLUEZ is not set
+
+#
+# Kernel hacking
+#
+CONFIG_DEBUG_KERNEL=y
+# CONFIG_DEBUG_STACKOVERFLOW is not set
+# CONFIG_DEBUG_HIGHMEM is not set
+# CONFIG_DEBUG_SLAB is not set
+# CONFIG_DEBUG_IOVIRT is not set
+# CONFIG_MAGIC_SYSRQ is not set
+# CONFIG_DEBUG_SPINLOCK is not set
+CONFIG_FRAME_POINTER=y
+CONFIG_LOG_BUF_SHIFT=0
+
+#
+# Cryptographic options
+#
+# CONFIG_CRYPTO is not set
+
+#
+# Library routines
+#
+CONFIG_CRC32=m
+CONFIG_ZLIB_INFLATE=m
+CONFIG_ZLIB_DEFLATE=m
diff -urN colinux-20040119/doc/cygwin-cross-build colinux-20040128/doc/cygwin-cross-build
--- colinux-20040119/doc/cygwin-cross-build 1970-01-01 02:00:00.000000000 +0200
+++ colinux-20040128/doc/cygwin-cross-build 2004-01-27 01:29:39.000000000 +0200
@@ -0,0 +1,51 @@
+Building Cygwin cross compilation tools for Linux
+=================================================
+
+First, choose an installation directory, for example: /usr/local/w32build.
+I'd refer to that directory as $PREFIX from this point in the document.
+
+Download the latest base cygwin tarball from cygwin.com, for example,
+http://mirrors.xmission.com/cygwin/release/cygwin/cygwin-1.5.7-1.tar.bz2
+
+Extract that tarball to the installation directory in this manner:
+
+ tar -xjf cygwin-1.5.7-1.tar.bz2
+ rename usr i686-pc-cygwin
+
+Now you have a ready $PREFIX/i686-pc-cygwin directory.
+
+
+Download binutils from GNU's website. Configure, build and install with:
+
+ ./configure --target=i686-pc-cygwin --prefix=$PREFIX
+ make
+ make install
+
+
+Download the latest gcc sources, both the gcc-core and gcc-g++ parts. Extract
+those in a separate directory, and build gcc using this procedure:
+
+ ./configure --prefix=$PREFIX -host=i686-pc-linux-gnu --target=i686-pc-cygwin --enable-languages=c,c++
+
+Run make, but it would fail at some point:
+
+ make
+
+It's a chicken and egg problem. It fails because the i686-pc-cygwin-* compiler
+is not installed yet in $PREFIX (and accessable from $PATH). Run (with the
+proper privlieges):
+
+ make install
+
+Make sure that i686-pc-cygwin-gcc is accessable from $PATH. In gcc's build
+directory, run again:
+
+ make
+
+It should now properly build the standard libs with the start object files.
+And then again run (with the proper privlieges):
+
+ make install
+
+To test it, try to produce a .exe file from a 'void main(){}' C program,
+using i686-pc-cygwin-gcc.
diff -urN colinux-20040119/patch/linux colinux-20040128/patch/linux
--- colinux-20040119/patch/linux 2004-01-19 18:25:41.000000000 +0200
+++ colinux-20040128/patch/linux 2004-01-27 00:04:02.000000000 +0200
@@ -3326,7 +3326,7 @@
#define __TSS(n) (((n)<<2) + __FIRST_TSS_ENTRY)
diff -X bin/dontdiff -urN linux/include/asm-i386/dma.h linux/include/asm-i386/dma.h
--- linux/include/asm-i386/dma.h 2004-01-05 05:39:23.000000000 +0200
-+++ linux/include/asm-i386/dma.h 2003-12-20 03:01:30.000000000 +0200
++++ linux/include/asm-i386/dma.h 2004-01-26 23:39:36.000000000 +0200
@@ -268,6 +268,8 @@
*
* Assumes DMA flip-flop is clear.
@@ -3347,7 +3347,7 @@
extern int request_dma(unsigned int dmanr, const char * device_id); /* reserve a DMA channel */
diff -X bin/dontdiff -urN linux/include/asm-i386/io.h linux/include/asm-i386/io.h
--- linux/include/asm-i386/io.h 2004-01-05 05:39:23.000000000 +0200
-+++ linux/include/asm-i386/io.h 2003-12-26 18:28:26.000000000 +0200
++++ linux/include/asm-i386/io.h 2004-01-27 00:00:07.000000000 +0200
@@ -2,6 +2,7 @@
#define _ASM_IO_H
@@ -3356,18 +3356,15 @@
/*
* This file contains the definitions for the x86 IO instructions
-@@ -46,6 +47,10 @@
+@@ -45,6 +46,7 @@
+ #ifdef __KERNEL__
#include <linux/vmalloc.h>
++#include <linux/cooperative.h>
-+#ifdef CONFIG_COOPERATIVE
-+#include <linux/colinux.h>
-+#endif
-+
/*
* Temporary debugging check to catch old code using
- * unmapped ISA addresses. Will be removed in 2.4.
-@@ -121,6 +126,10 @@
+@@ -121,6 +123,10 @@
static inline void * ioremap (unsigned long offset, unsigned long size)
{
@@ -3378,7 +3375,7 @@
return __ioremap(offset, size, 0);
}
-@@ -146,6 +155,10 @@
+@@ -146,6 +152,10 @@
static inline void * ioremap_nocache (unsigned long offset, unsigned long size)
{
@@ -3389,7 +3386,7 @@
return __ioremap(offset, size, _PAGE_PCD);
}
-@@ -308,6 +321,8 @@
+@@ -308,6 +318,8 @@
#endif /* __KERNEL__ */
@@ -3398,7 +3395,7 @@
#ifdef SLOW_IO_BY_JUMPING
#define __SLOW_DOWN_IO "\njmp 1f\n1:\tjmp 1f\n1:"
#else
-@@ -427,4 +442,19 @@
+@@ -427,4 +439,19 @@
__OUTS(w)
__OUTS(l)
@@ -3443,7 +3440,7 @@
#define NR_IRQS 16
diff -X bin/dontdiff -urN linux/include/asm-i386/mmu_context.h linux/include/asm-i386/mmu_context.h
--- linux/include/asm-i386/mmu_context.h 2004-01-05 05:37:17.000000000 +0200
-+++ linux/include/asm-i386/mmu_context.h 2003-12-20 02:42:52.000000000 +0200
++++ linux/include/asm-i386/mmu_context.h 2004-01-26 23:39:35.000000000 +0200
@@ -41,6 +41,7 @@
#endif
set_bit(cpu, &next->cpu_vm_mask);
@@ -3521,7 +3518,7 @@
#define VM_DATA_DEFAULT_FLAGS (VM_READ | VM_WRITE | VM_EXEC | \
diff -X bin/dontdiff -urN linux/include/asm-i386/pgalloc.h linux/include/asm-i386/pgalloc.h
--- linux/include/asm-i386/pgalloc.h 2004-01-05 05:37:14.000000000 +0200
-+++ linux/include/asm-i386/pgalloc.h 2003-12-20 02:42:48.000000000 +0200
++++ linux/include/asm-i386/pgalloc.h 2004-01-26 23:39:33.000000000 +0200
@@ -11,8 +11,13 @@
#define pte_quicklist (current_cpu_data.pte_quick)
#define pgtable_cache_size (current_cpu_data.pgtable_cache_sz)
@@ -3558,7 +3555,7 @@
#endif /* _I386_PGTABLE_2LEVEL_H */
diff -X bin/dontdiff -urN linux/include/asm-i386/pgtable.h linux/include/asm-i386/pgtable.h
--- linux/include/asm-i386/pgtable.h 2004-01-05 05:37:14.000000000 +0200
-+++ linux/include/asm-i386/pgtable.h 2003-12-20 02:42:48.000000000 +0200
++++ linux/include/asm-i386/pgtable.h 2004-01-26 23:39:33.000000000 +0200
@@ -320,8 +320,13 @@
#define page_pte(page) page_pte_prot(page, __pgprot(0))
@@ -3576,7 +3573,7 @@
#define pgd_index(address) ((address >> PGDIR_SHIFT) & (PTRS_PER_PGD-1))
diff -X bin/dontdiff -urN linux/include/asm-i386/processor.h linux/include/asm-i386/processor.h
--- linux/include/asm-i386/processor.h 2004-01-05 05:37:14.000000000 +0200
-+++ linux/include/asm-i386/processor.h 2003-12-13 17:17:01.000000000 +0200
++++ linux/include/asm-i386/processor.h 2004-01-26 23:39:33.000000000 +0200
@@ -181,8 +181,18 @@
#define X86_CR4_OSFXSR 0x0200 /* enable fast FPU save and restore */
#define X86_CR4_OSXMMEXCPT 0x0400 /* enable unmasked SSE exceptions */
@@ -3625,7 +3622,7 @@
#endif
diff -X bin/dontdiff -urN linux/include/linux/console.h linux/include/linux/console.h
--- linux/include/linux/console.h 2004-01-05 05:37:20.000000000 +0200
-+++ linux/include/linux/console.h 2003-12-13 17:33:48.000000000 +0200
++++ linux/include/linux/console.h 2004-01-26 23:39:38.000000000 +0200
@@ -55,6 +55,7 @@
extern const struct consw dummy_con; /* dummy console buffer */
extern const struct consw fb_con; /* frame buffer based console */
@@ -3636,7 +3633,7 @@
diff -X bin/dontdiff -urN linux/include/linux/cooperative.h linux/include/linux/cooperative.h
--- linux/include/linux/cooperative.h 1970-01-01 02:00:00.000000000 +0200
-+++ linux/include/linux/cooperative.h 2003-12-27 11:46:21.000000000 +0200
++++ linux/include/linux/cooperative.h 2004-01-24 10:19:19.000000000 +0200
@@ -0,0 +1,173 @@
+#ifndef __LINUX_COOPERATIVE_H__
+#define __LINUX_COOPERATIVE_H__
diff -urN colinux-20040119/src/colinux/os/winnt/build/Makefile colinux-20040128/src/colinux/os/winnt/build/Makefile
--- colinux-20040119/src/colinux/os/winnt/build/Makefile 1970-01-01 02:00:00.000000000 +0200
+++ colinux-20040128/src/colinux/os/winnt/build/Makefile 2004-01-19 18:33:28.000000000 +0200
@@ -0,0 +1,85 @@
+# Standard Makefile header
+ifeq ($(BUILD_ROOT),)
+BUILD_ROOT=../../../..
+include $(BUILD_ROOT)/Makefile
+else
+BUILD_PATH := $(BUILD_PATH)/build
+#-----------------------------------------------------------------
+
+LOCAL_TARGETS = $(BUILD_PATH)/driver.o
+
+$(BUILD_PATH)/driver.o : \
+ $(BUILD_ROOT)/colinux/common/common.o \
+ $(BUILD_ROOT)/colinux/kernel/kernel.o \
+ $(BUILD_ROOT)/colinux/os/current/kernel/kernel.o \
+ $(BUILD_ROOT)/colinux/arch/current/arch.o \
+
+ $(TOOL_LD_RELOC)
+
+DRIVER_TARGET := $(BUILD_PATH)/linux.sys
+
+WINDIR=$(WINUSER)@$(WINBOX):$(WINREMOTEDIR)
+WINBOX_SCP=scp -i ~/.ssh/locallan
+WINBOX_SSH=ssh -X -l $(WINUSER) -i ~/.ssh/locallan $(WINBOX)
+WINLINK=$(WINBOX_SSH) /cygdrive/c/NTDDK/bin/link.exe
+
+WINLINK_FLAGS= \
+ /machine:ix86 \
+ /STACK:262144,4096 \
+ /MERGE:_PAGE=PAGE \
+ /MERGE:_TEXT=.text \
+ /SECTION:INIT,d \
+ /OPT:REF \
+ /OPT:ICF \
+ /IGNORE:4001,4037,4039,4044,4065,4070,4078,4087,4089,4198 \
+ /INCREMENTAL:NO \
+ /FULLBUILD \
+ /FORCE:MULTIPLE \
+ /NOCOMMENT \
+ /release \
+ /NODEFAULTLIB \
+ /debug:FULL \
+ /debugtype:cv \
+ /version:5.00 \
+ /osversion:5.00 \
+ /optidata \
+ /driver \
+ /align:0x1000 \
+ /filealign:0x1000 \
+ /subsystem:native,5.00 \
+ /base:0x10000 \
+ /entry:DriverEntry@8 \
+
+WINLINK_LIBS= \
+ C:\\\\NTDDK\\\\libfre\\\\i386\\\\ntoskrnl.lib \
+ C:\\\\NTDDK\\\\libfre\\\\i386\\\\hal.lib \
+ C:\\\\NTDDK\\\\libfre\\\\i386\\\\wmilib.lib \
+
+$(DRIVER_TARGET): $(BUILD_PATH)/driver.o
+ $(WINBOX_SCP) $^ $(WINDIR)
+ $(WINLINK) /out:$(notdir $@) $(WINLINK_FLAGS) $(notdir $^) $(WINLINK_LIBS)
+ $(WINBOX_SCP) $(WINDIR)$(notdir $@) $@
+
+LOCAL_TARGET += $(DRIVER_TARGET)
+LOCAL_FILES = \
+ $(DRIVER_TARGET) \
+ $(BUILD_ROOT)/../../linux/vmlinux \
+ $(BUILD_ROOT)/colinux/os/current/user/daemon/colinux-daemon.exe \
+ $(BUILD_ROOT)/colinux/os/current/user/console/colinux-console.exe \
+
+colinux: $(LOCAL_FILES)
+
+upload: $(LOCAL_FILES)
+ $(WINBOX_SCP) $^ $(WINDIR)
+
+upload_console: $(BUILD_ROOT)/colinux/os/current/user/console/colinux-console.exe
+ $(WINBOX_SCP) $^ $(WINDIR)
+
+driver : $(BUILD_PATH)/driver.o
+
+CLEAN_FILES := $(CLEAN_FILES) \
+ $(LOCAL_TARGETS) $(BUILD_PATH)/kernel.o
+
+#-----------------------------------------------------------------
+BUILD_PATH := $(shell dirname $(BUILD_PATH))
+endif
--
Dan Aloni
[email protected]