On Thu, Aug 21, 2008 at 08:13:20PM +0200, Laurens Vets wrote: > Hi list, > > I wrote a document a while back on how to install vservers on Slackware > and was wondering whether the procedure I used is correct or whether I > forgot something or ... Anyways, it's a rather large mail so hopefully > you won't get bored :) not reading the mail in deep detail, just skimming over and dropping a few comments :) > You will need a kernel which has been patched to work with Linux-VServer > and the util-vserver software. I?ve created a couple of simple scripts > to aid in setting up minimal Slackware guests: > http://www.cilinder.be/slackware/svs-0.1.tar.gz. > > Next, you will need the util-vserver tools which are the Linux-VServer > userland tools. You can download my Slackware 12 package here: > util-vserver-0.30.214-i486-1tfx.tgz. Install via the normal Slackware > method ("installpkg util-vserver-0.30.214-i486-1tfx.tgz"). > > We start by creating a template. I?ve based my list of installed > packages on the Linux from Slack and Minimal System pages on > Slackwiki.org. You can find the list of packages that will be installed sounds good, can they be installed via network? > in the template VServer in the svs scripts above (look for the > "vserver.list" file). Download the above scripts and extract them to a > local directory: > > $ wget http://www.cilinder.be/slackware/svs-0.1.tar.gz > $ tar zxpvf svs-0.1.tar.gz > > The files get.sh, inst.sh and vserver.list should now be available in > your current working directory. Get.sh will fetch the necessary packages > from a Slackware mirror. Inst.sh will install the downloaded packages to > /vservers/template. The file vserver.list contains the necessary > packages for a minimal Slackware VServer. It?s probably a good idea to > change the Slackware mirror in the get.sh to something that?s closer to > your location. you might want to integrate that as a new build method (-m slackware) into util-vserver, and I'm sure, if that can be done in a clean way, Daniel will happily add that to the next release > We?ll begin by fetching the necessary Slackware 12.0 packages with get.sh: > $ ./get.sh > > When this is done, there will be a new directory "slackware" in your > current working directory with a bunch of packages. For the next part, > you?ll have to become root. When you are, run inst.sh: > # ./inst.sh > > This will install the above downloaded packages in /vservers/template > which will become our template directory for future Slackware VServers. > Next, descent in the directory /vservers/template/dev and remove the > devices listed there: > # cd /vservers/template/dev/ > # rm -Rf * > > We will also have to create a System V initialization script in > /vservers/template/etc/init.d/: does it use something different than sysv? if so, is it kind-of runlevel based? if not, does the 'plain' style work for it? > # vi /vservers/template/etc/init.d/rc > > Add the following in the above file: > if [ $1 -eq 3 ]; then > echo "entering runlevel 3: multi"; > /etc/rc.d/rc.M > fi > if [ $1 -eq 6 ]; then > echo "entering runlevel 6: reboot"; > /etc/rc.d/rc.6 > fi > if [ $1 -eq 0 ]; then > echo "entering runlevel 0: shutdown"; > /etc/rc.d/rc.0 > fi > if [ $1 -eq 4 ]; then > echo "entering runlevel 4"; > fi > if [ $1 -eq 5 ]; then > echo "entering runlevel 5"; > fi > if [ $1 -eq 1 ]; then > echo "entering runlevel 1:single"; > /etc/rc.d/rc.K > fi > if [ $1 -eq 2 ]; then > echo "entering runlevel 2:multi"; > /etc/rc.d/rc.M > fi > > Don?t forget to give that file execution permissions otherwise it won?t > run when we start our VServer: > # chmod u+x /vservers/template/etc/init.d/rc > > After this is done, we will need to apply a patch (found here: > slack12.diff) which will disable the Slackware hardware related startup > scripts: > # cd /vservers/template > # wget http://www.cilinder.be/slackware/slack12.diff > # patch -p1 < slack12.diff > > We will also have to disable "/etc/rc.d/rc.inet1" from being run on startup: > # chmod -x /vservers/template/etc/rc.d/rc.inet1 > > The next command will create a new skeleton vserver under > /vservers/vserver1 with the necessary devices: > > # NAME=vserver1 > # INTERFACE=eth0:10.0.0.1/24 > # CONTEXT=1000 > # vserver ${NAME} build -m skeleton --context ${CONTEXT} --interface > ${INTERFACE} --flags > lock,virt_mem,virt_uptime,virt_cpu,virt_load,sched_hard,hide_netif > --initstyle sysv you don't want to give all those flags, as some of them are default anyway, and others are left-overs from ancient times :) > In the above example, change the NAME, INTERFACE and CONTEXT fiels to > whatever it needs to be on your machine. After that, you will have a new > directory /vserver/vserver1. Now we will copy our template directory > that newly created directory: > > # cd /vservers/ > # cp -a template/. vserver1/. > > At this point, our VServer should already be able to boot. We can test > this with: > # /usr/sbin/vserver vserver1 start > > You?ll probably see a lot of error messages, this is due to the > Slackware startup scripts that are executed in the VServer related to > configuring and starting hardware devices. I?m still working on a diff > to patch the template directory to remove those. When the VServer has > been booted, you can access it with: > # /usr/sbin/vserver vserver1 enter > > At this point you can start "netconfig" and start configuring your newly > created Slackware 12.0 VServer. It?s probably a good idea to have a > 'localhost' in your vserver. This can be achieved by creating a new > folder in /etc/vservers/${NAME}/interfaces/. Name the folder 1, if the > previous one that exists there is 0. Then create files named ?ip?, ?dev? > and ?prefix? and write 127.0.0.1 to ip, lo to dev and 32 to prefix: don't do that, it will break a lot of things (and make your guest insecure) if you are with vs2.0-vs2.2, you want to change /etc/hosts to contain something like <guest-ip> localhost localhost.localdomain if you are with vs2.3, enable the lback feature and you'll get a private 127.0.0.1 for your guest > # mkdir /etc/vservers/${NAME}/interfaces/1/ > # echo 127.0.0.1 > /etc/vservers/${NAME}/interfaces/1/ip > # echo 32 > /etc/vservers/${NAME}/interfaces/1/prefix > # echo lo > /etc/vservers/${NAME}/interfaces/1/dev again, don't do that if you do not exactly know the implications > Vservers created this way work, but start with some bootup related > errors, probably related to Slackware startup scripts which are not yet > full corrected... you should probably remove _any_ network setup from the guest's scripts, as they are not needed anyway same gies for hardware related setups, like hwclock, special drivers, etc > Did I miss something? Does this all sound sane? > > Thanks for checking and making it this far :) HTH, Herbert >