I'm absolutely impressed by vserver. It is simple, effective and redicilously easy to figure out. It took me a full 5 minutes a to setup a vserver and that was mostly because I didn't read the documentation before starting... --Rik van Riel
Imagine mainframe style partitioning under Linux, but without the performance hit of multiple UML style kernels. Well Jack Gelinas was the man who came up with the solution and patches necessary to run multiple independent `vservers' on one physcial machine; it's close enough to the real thing (totally seperate machines) that say Red Hat can be running on one vserver, and SuSE on another.
But of cause we're not interested in either... Debian rocks, and that's all we're interested in around these parts.
Fake Devices/syscalls for Reboot, Quotaing and anything that we currently emulate
eg. syscall()
or ioctl()
which then
calls a userspace daemon in the host-server to process/proxy the
request
Mergemem patch to save on memory (unify's identical pages, then copy-on-writes)
Debian works from downloading the packages from your local mirror off the net, so we cache the packages after we've done this once. (Poke our package cache into their vserver chroot.) Call debootstrap to do all the hard work Fix up /dev/ with minimal set of devnodes nodes: full null ptmx random tty urandom zero dirs: pts shm Create /etc/hostname Create /etc/hosts Fix up `/etc/resolv.conf' (take nameservers from hostserver) Create /etc/apt/sources.list Fix up /etc/apt/apt.conf (Copy APT proxy details from host-server) Fix up /etc/motd (Debian `Free Software' default MOTD is enormous) Fake /etc/fstab (vservers aren't bothered about real partitions) Fake /etc/mtab (`df' and friends want something to read) Fix up /etc/inittab (empty that doesn't start getty on everything) Fix up /etc/crontab (to randomize things like `updatedb' abit) -*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*- Create a config file in $HOSTSERVER:/etc/vservers/hostname.conf (Enter the vserver and pretend to be the second half-installer) EITHER: Run `/usr/sbin/base-setup' OR: Run `tzsetup' to setup the timezone Reconfigure the `passwd' package to setup initial root/user accounts Run `tasksel' to easily select some initial packages END-EITHER; Remove networking and hardware-related sysvinit scripts Remove networking and hardware-related packages (lilo etc) -*- -*- -*- -*- -*- Install vreboot, vhalt, vshutdown (dpkg-divert these?)