Contents

Overview

Arch Linux is ideal for running as the host and for VServers. What makes it ideal for the host server is its low foot print and simplicity. On the downside, Arch Linux does not include a VServer kernel or utilities. However, if you are confident building your own kernel and using ABS (the Arch Build System), it is excellent.

Arch is ideal for VServers because it is trivial to install an instance of Arch Linux into a target directory and does not require Arch on the host system.

Building util-vserver on the Host

The following PKGBUILD will download, package and install util-vserver version 0.30.209. It should be only a matter of changing the version number to make it work with later versions, assuming nothing major changes in the build process. Before starting to build, make a soft link: ln -s /usr/lib/dietlibc /opt/diet - otherwise the build fails because dietlibc cannot be found.

VERY IMPORTANT! After you have installed the util-vserver package it is imperative to copy the /usr/lib/libvserver.so.0.0.0 to /lib and then create soft link, libvserver.so.0 to it, also to /lib. Otherwise you might have serious trouble with booting the system up, especially when you use drives with raid driver. (31.03.2006, current Arch with Udev). The util-vserver package must be updated to do this automatically.

Once built and installed, add vprocunhide and vservers-default to DAEMONS in /etc/rc.conf.

Creating an Arch Linux VServer

Download archbootstrap (this script will run on any GNU/Linux host system with wget), choose appropriate values for name, interface and {{context}, pick some vserver flags (or just use the ones below) then use the following shell commands to create your vserver:

(choose a mirror close to you, as archbootstrap will download all base packages)

If you don't have a public ip to spare for your vserver guest, then you must create guest with private ip, like 192.168.0.103 for example. Then in order to allow guest to access the Internet, you will have to set up proper NAT rule for your host's iptables. Assuming that you are using addresses like in previous example, a working NAT rule is this:

iptables -t nat -I POSTROUTING -s 192.168.0.0/24 -j SNAT --to x.x.x.x

where the last one is your host's public ip, assuming that it can access the Internet directly. You can now test if NAT rule succeeded by using this command:

Remeber to copy /etc/resolv.conf to /vservers/${name}/etc to be able to use domain names instead of just ip addresses.

If you plan to set up servers to your guest, it would also be useful to have localhost in there. This can be achieved by creating a new folder in /etc/vservers/name/interfaces/ - name the folder 1, for example, if the previous one that exists there is 0. Then create there files named ip, dev and prefix.

To ip write 127.0.0.1, to dev write lo and to prefix write 32.

Start your vserver:

# vserver ${name} start

Check it has started

# vserver-stat

Then enter the guest (vserver name enter) and at first create iproute package (it is at /var/abs/network/iproute) - you will need it to see ip addresses and other needful information. Add the package and now to see how networking is working use this command ip addr show and try to ping the world.

That is pretty much it. You will probably want to edit /vservers/test/etc/rc.conf to remove interface configuration and set your hostname.

All the usual vserver commands should work as you would expect, but don't forget to modify host service config files so they don't bind to INADDR_ANY.

Note

the value in /etc/vservers/${name}/apps/init/mark must be default if you wish your vservers to start at boot using the vservers-default init script.

Note2

if on starting up a vserver the keyboard control is lost on host, remove console from /dev of vserver