Operating-system level virtualisation As we explained in part 2 of this series, A brief history of virtualisation, in the 1960s, it was a sound move to run one OS on top of a totally different one. On the hardware of the time, full multi-user time-sharing was a big challenge, which virtualisation neatly sidestepped by splitting …
It depends what you call "OS"
A container/jail/chroot using anything starting from humble chroot, going through jail and openVz can use _DIFFERENT_ base libraries (/lib/libc and friends) and different binaries. So it all depends on your definition of OS. If Debian and RedHat are different OS then even chroot can run different OS.
It is possible to use it to run "same os" and people have used it like that. For example I wrote (jointly with then CTO of my company) in 1998 a set of extensions to Apache which allowed us to run each "user" in his own chroot and offer high end hosting. I believe PlusNet was offering something similar based on StrongHold in the UK.
However this is _NOT_ the way this was usually being used.
I used to run a system with 6+ chroots which was deployed to build & maintain different releases of a product. IIRC it had RedHat and several different epochs of Debian starting from 3.0.
Further to this, if you felt that psychotic you could actually run a passable Linux Userland in a BSD jail.
Under Windows NT there is also just one single root.
Drive letters are just aliases to the object path eg; A: is an alias for \Device\Floppy0
can you define the rings in a x86 processor?
Or are they just a nibble containing 0,1,2,3 or 4?
..would be an unlikely value :D
you missed a bit :-)
"Unix does things the other way round: there’s one big directory tree, starting at the root directory – called just “/” – and disk partitions and volumes appear as directories within it."
Rather simplistic, as all device drivers including KVM are mapped via the filesystem.
Linux branded zones
While you can run linux in a Solaris zone, it's rather pointless as it only supports CentOS 3.x or Red Hat Enterprise Linux 3.x - see http://download.oracle.com/docs/cd/E19044-01/sol.containers/819-2450/gchhy/index.html
Given that RHEL is now up to 6.1, you'd have to run a very old version of the OS...
But Solaris Containers/Zones/BrandZ/whatever they call it, are quite powerful and can also run other OSes. This is very elegant. As of today with Solaris 11 Express, you can run Solaris 10, Solaris 9 and 8 in zones - all are using the Solaris 11 Express kernel. There is only one kernel active. You just zip an old Solaris 8 server and dump the tar file into a zone and boot it up. And then you can scrap the old S8 server. Linux zones are removed from Solaris 11 Express, and it only supported v2.4 and 32bit Linux.
Possibly OpenIndiana/Illumos (the open sourced version of Solaris and community driven) are going to add Linux Zones back to Solaris again. Ive seen discussions on this. And maybe someone will develop a FreeBSD zone too? :oP
Now, the recommended way of virtualizing other OSes in Solaris is to use VirtualBox. Start VirtualBox in a zone and install the OS of your choice in that very Zone. This is the reason Linux Containers were removed; you now use VirtualBox instead which supports all Linux OSes, and many more OSes.
You can cut the IP traffic between zones. For instance, you can make sure that the IP traffic to the global Solaris 11 Express install is cut. Then only the zones will accept IP traffic. Then the global Solaris 11 Express installation can not be compromised by hackers. Because you mount the global Solaris 11 Express files as read only, the zone can not change the files.
Rang ring wrong
"but unprivileged code that did I/O rang in ring 2."
My tongue just went into a knot!
Good article though.