We currently migrate to MediaWiki from our old installation, but not all content has been migrated yet. Take a look at the Wiki Team page for instructions how to help or browse through our new wiki at wiki.linux-vserver.org to find the information already migrated.
This is a quick-and-dirty Slackware Vserver Howto as I haven't seen anything about vserver on slack. The advantage of this approach is that you can easily setup new vsevers and keep all of them up to date with the slackware packaging system, with just few commands.
First I assume you have successfully compiled and booted a kernel with vserver patch, installed the util-vserver package and created a /vservers with the chroot-barrier.
Then, put all your preffered slack packages on some dir, eg /slackware, respecting the default disk sets hierarchy. You can leave just the most essential packs, like some of the a, ap, n and l sets.
Now copy and edit the /etc/profile and all the rc.d's scripts you want to some place, for example /scripts. Do a chmod +x to any script you want to start at the vserver initialization, and a -x to what you dont want.
Create a default skeleton for your vserver's config (skel.conf) and put it the the same dir of the scripts.
Create the following /usr/local/bin/mkjail script:
#!/bin/bash # # mkjail: create vservers # feedback: rhatto at riseup.net # # adjust this to where your packages live PACKAGES=/slackware # this is where you put the rc's scripts SCRIPTS=/scripts # which disk sets you want to install SERIES="a ap l n" if (($# != 1)); then echo "usage: $0 <server-name>" exit 1 fi server=$1 mkdir /vservers/$server echo "installing the packages" cd $PACKAGES for dir in $SERIES; do cd $dir; installpkg -root /vservers/$server *tgz; cd .. done echo "copying initialization scripts" cp $SCRIPTS/rc.* /vservers/$server/etc/rc.d/ cp /etc/resolv.conf /vservers/$server/etc/ echo "creating /etc/fstab /etc/mtab /etc/localtime /etc/profile" echo /dev/hdv1 / ext2 defaults 1 1 > /vservers/$server/etc/fstab echo /dev/hdv1 / ext2 rw 0 0 > /vservers/$server/etc/mtab cp /etc/localtime /vservers/$server/etc/ cp $SCRIPTS/profile /vservers/$server/etc echo "creating dependency cache" cd /vservers/$server/ tar xvf /storage/vserver/vserver-dev.tar ln -s lib/ld-2.3.2.so lib/ld-linux.so.2 chroot /vservers/$server/ sbin/ldconfig echo "creating config file" cp $SCRIPTS/skel.conf /etc/vservers/$server.conf echo "done; now edit /etc/vservers/$server.conf" echo "then, route your server thru iptables and start it" echo "dont forget to change your vserver's root passwd"
The trick is that you can ask installpkg to install a tgz in a rootdir other than /.
Now you simple need to do a
mkjail your-server
and then edit /etc/vservers/your-server.conf, assigning an ip to it, choosing the capabilities, etc, and
vserver your-server start
Now you have a slackware vserver.
For the first time you start or stop your vserver maybe you get some errors from the scripts like rc.6 trying to umount devices or something like. Just remove these commands from the scripts and everything works fine.
To upgrade your vservers, simple use something like this fabulous script:
#!/bin/bash # # vserver-upgrade # # where your patches live PATCHES=/slackware/patches/packages/ cd $PATCHES for file in $(ls *tgz); do pack=$(echo $file | cut -d - -f 1) # this upgrades your main system if [ -f /var/log/packages/$pack* ]; then upgradepkg $pack*tgz fi # this upgrades packages on every vserver running slackware for vserver in $(ls /vservers); do if [ -f /vservers/$vserver/var/log/packages/$pack* ]; then ROOT=/vservers/$vserver upgradepkg $pack*tgz fi done done
Don't forget to put a
export FTP_PASSIVE=1
on your default /etc/profile.