Skip to content

lgerhardt/chos

 
 

Repository files navigation

                               CHOS

Introduction
------------

CHOS is a kernel module and utilities that facilitates supporting
multiple Linux releases simultaneously on a single system.  With
chos, you can have a base OS (the true root tree for the system)
and allows users to select from other accessible OS trees.  The
trees must be compatible with the booted kernel.  For example,
you could install Fedora Core 2 as your base operating system
and allows users to transparently use RedHat 7.3, RedHat 8, and
SuSE 9.0.  This allows users to select the distribution that
works for them (or their collaboration).

See the INSTALL file for notes on installing and deploying chos.

Theory
------

In the end, CHOS is just doing a chroot into the OS tree.  The
kernel module is only needed to simply the framework and allow
the framework to be used for multiple OS trees.  For example,
if you installed a system as follows...

/ (base OS - OS1)
/OS-2 (second OS)
/OS-3 (third OS)

You could chroot into /OS-2 and it would function if everything
was installed correctly.  However, for it to fully work you would
need some things to be available in the chroot tree.  For example,
/proc would have to be mounted under each tree (i.e. /OS-2/proc, /OS-3/proc).
Also, if NFS mounts are used, they would need to be mounted under
each tree.  This makes it awkward to support more than a handful
of OS trees.  The kernel module provides a process dependent symbolic
link.  This link will resolve differently for different processes.
Also, children processes automatically inherit the value of their
parent.  Using the kernel modules, you only need this...

/ (base OS - OS1)
/chos
/chos/proc
/chos/ostrees/OS2
/chos/ostrees/OS3

The link, which is accessed through /proc/chos/link, points to the
base of the OS.  The rest of the chos directory contains the subdirectories
that would normally be present in an OS (/bin, /sbin, /usr, etc), but
they are all symlinks that traverse through the special link.  So,
/chos/bin would point to /proc/chos/link/bin, which could translate
to /ostrees/OS2/bin for one user and /ostrees/OS3/bin for another user.

About

CHOS: The CHroot OS that let's users chose their OS.

Resources

License

Unknown, Unknown licenses found

Licenses found

Unknown
LICENSE
Unknown
COPYING

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages

  • C 86.9%
  • Shell 13.1%