Difference between revisions of "Installing an openSUSE vserver guest"

From Linux-VServer

Jump to: navigation, search
(Test configuration: added an additional case of openSUSE 10.2)
(catspec)
 
(16 intermediate revisions by 2 users not shown)
Line 1: Line 1:
Installing openSUSE as a vserver guest.
+
Installing and running openSUSE (previously knows as SUSE Linux) as a vserver guest.
 
__TOC__
 
__TOC__
 
==Test configuration==
 
==Test configuration==
 
Host:
 
Host:
* Debian Etch AMD64, Kernel 2.6.15.4-vs2.0.2-rc9, util-vserver 0.30.210 + patch (see below), or
+
* Debian Etch AMD64, Kernel 2.6.15.4-vs2.0.2-rc9, util-vserver 0.30.210 + similar patch, or
* Debian Etch AMD64, 2.6.18-4-vserver-amd64, util-vserver 0.30.212-1 (+patch)
+
* Debian Etch AMD64, 2.6.18-4-vserver-amd64, util-vserver 0.30.212-1 + patch (see below)
 
Guest:
 
Guest:
 
* SLES 9, or
 
* SLES 9, or
 
* openSUSE 10.2
 
* openSUSE 10.2
  
==Running SuSE vservers on a Debian server==
+
==Running openSUSE vservers on a Debian server==
 
===Installation===
 
===Installation===
Debian is lacking the required rpm tools to install a SuSE/SLES system directly via vserver build (the required apt-rpm is available in source only for apt-0.5.xx, and Debian is already at 0.6.xx).
+
Debian is lacking the required rpm tools to install an openSUSE or SLES system directly via vserver build (the required apt-rpm is available in source only for apt-0.5.xx, and Debian is already at 0.6.xx).
  
Therefore, use the normal SuSE installation procedure and then copy the system to a vserver directory:
+
Therefore, use the normal openSUSE installation procedure and then copy the system to a vserver directory:
* Install SuSE on raw metal or in a virtual machine (such as [http://www.virtualbox.org/ VirtualBox]).
+
* Install openSUSE on raw metal or in a virtual machine (such as [http://www.virtualbox.org/ VirtualBox]).
* Boot from CD (SuSE or Debian whatever you prefer), or just boot into the OS and log in as root.
+
* Boot from CD (openSUSE or Debian - whatever you prefer), or just boot into the OS and log in as root.
 
* tar the whole system, copy it to the vserver host and untar it to the desired vserver location, usually <code>/var/lib/vservers/<servername></code>
 
* tar the whole system, copy it to the vserver host and untar it to the desired vserver location, usually <code>/var/lib/vservers/<servername></code>
* Create <code>/etc/vservers/<servername></code> manual (or copy from other vserver)
+
* Create <code>/etc/vservers/<servername></code> manually, or copy it from another vserver.
  
===post install cleanup===
+
===Post install cleanup===
* remove some startup service, either delete the /etc/init.d/.... links or run the following from inside the vserver:
+
* remove some startup service, either delete the appropriate /etc/init.d/.... links or run the following from inside the vserver:
  chkconfig -d -f boot.swap boot.isapnp boot.idedma  boot.loadmodules \
+
  # chkconfig -d -f boot.swap boot.isapnp boot.idedma  boot.loadmodules \
                boot.device-mapper boot.md boot.proc boot.shm boot.sched \
+
                  boot.device-mapper boot.md boot.proc boot.shm boot.sched \
                boot.rootfsck hotplug boot.localfs boot.crypto boot.clock \
+
                  boot.rootfsck hotplug boot.localfs boot.crypto boot.clock \
                boot.scpm boot.ipconfig
+
                  boot.scpm boot.ipconfig
 
   
 
   
  chkconfig -d -f coldplug irq_balancer random network fbset powersaved kbd hwscan
+
  # chkconfig -d -f coldplug irq_balancer random network fbset powersaved kbd hwscan
 
* remove unneeded packages:
 
* remove unneeded packages:
  rpm -e irqbalance kernel-smp grub reiserfs xfsprogs raidtools ntfsprogs \
+
  # rpm -e irqbalance kernel-smp grub reiserfs xfsprogs raidtools ntfsprogs \
        module-init-tools mkinitrd powersave hotplug mdadm
+
          module-init-tools mkinitrd powersave hotplug mdadm
 
'''Note:''' there are a number of redundant packages remaining that can not be removed due to yast2 depending on them.
 
'''Note:''' there are a number of redundant packages remaining that can not be removed due to yast2 depending on them.
 +
 
===initscripts===
 
===initscripts===
SuSE's /etc/init.d/rc expects two enviromnet variables: RUNLEVEL and PREVLEVEL. the vserver.start scripts failes to set those. We've got workarrounds:
+
openSUSE's <code>/etc/init.d/rc</code> expects two environment variables: <code>RUNLEVEL</code> and <code>PREVLEVEL</code>. The vserver.start script fails to set those. There are a couple workarounds:
a) edit /etc/init.d/rc to set those values (not recomended)
+
* Edit <code>/etc/init.d/rc</code> to set those values (not recommended (why?)). For example, inserting these lines near the top of the file:
b) apply the following patch to vserver.start to set the values:
+
PREVLEVEL="N"
  --- vserver.start.orig  2006-03-02 10:37:49.000000000 +0000
+
RUNLEVEL="$1"
  +++ vserver.start      2006-03-02 10:10:36.000000000 +0000
+
* Apply the following patch to <code>vserver.start</code> to set the values:
  @@ -135,7 +134,7 @@
+
  --- vserver.start,orig  2006-12-09 12:37:58.000000000 -0700
 +
  +++ vserver.start      2007-06-11 12:27:27.000000000 -0600
 +
  @@ -141,7 +141,7 @@
 
       $_VUNAME    --xid self --set -t context="$VSERVER_DIR" -- \
 
       $_VUNAME    --xid self --set -t context="$VSERVER_DIR" -- \
 
       $_VATTRIBUTE --set "${OPTS_VATTRIBUTE[@]}" -- \
 
       $_VATTRIBUTE --set "${OPTS_VATTRIBUTE[@]}" -- \
 
       $_SAVE_CTXINFO "$VSERVER_DIR" \
 
       $_SAVE_CTXINFO "$VSERVER_DIR" \
  -    $_ENV -i -- \
+
  -    $_ENV -i "${OPTS_ENV[@]}" \
  +    $_ENV -i -- PREVLEVEL="N" RUNLEVEL="$RUNLEVEL_START" \
+
  +    $_ENV -i "${OPTS_ENV[@]}" PREVLEVEL="N" RUNLEVEL="$RUNLEVEL_START" \
 
       $_VCONTEXT  --migrate-self --endsetup --chroot $SILENT_OPT \
 
       $_VCONTEXT  --migrate-self --endsetup --chroot $SILENT_OPT \
 
       "${OPTS_VCONTEXT_MIGRATE[@]}" "${OPTS_VCONTEXT_ENTER[@]}" -- \
 
       "${OPTS_VCONTEXT_MIGRATE[@]}" "${OPTS_VCONTEXT_ENTER[@]}" -- \
 
       "${INITCMD_START[@]}"
 
       "${INITCMD_START[@]}"
  @@ -151,7 +150,7 @@
+
  @@ -157,7 +157,7 @@
 
       $_EXEC_ULIMIT      "$VSERVER_DIR/ulimits" \
 
       $_EXEC_ULIMIT      "$VSERVER_DIR/ulimits" \
 
       $_CHCONTEXT_COMPAT "${CHCONTEXT_OPTS[@]}" "${CHCONTEXT_INIT_OPTS[@]}" \
 
       $_CHCONTEXT_COMPAT "${CHCONTEXT_OPTS[@]}" "${CHCONTEXT_INIT_OPTS[@]}" \
 
       $_SAVE_CTXINFO    "$VSERVER_DIR" \
 
       $_SAVE_CTXINFO    "$VSERVER_DIR" \
  -    $_ENV -i -- \
+
  -    $_ENV -i "${OPTS_ENV[@]}" \
  +    $_ENV -i -- PREVLEVEL="N" RUNLEVEL="$RUNLEVEL_START" \
+
  +    $_ENV -i "${OPTS_ENV[@]}" PREVLEVEL="N" RUNLEVEL="$RUNLEVEL_START" \
 
       $_CHAINECHO "${_IS_FAKEINIT:+$startsync_pipe}" "" \
 
       $_CHAINECHO "${_IS_FAKEINIT:+$startsync_pipe}" "" \
 
       $_CAPCHROOT        "${CAPCHROOT_OPTS[@]}" . \
 
       $_CAPCHROOT        "${CAPCHROOT_OPTS[@]}" . \
 
       "${INITCMD_START[@]}"
 
       "${INITCMD_START[@]}"
'''edit me:''' do we need to modify the vserver.stop script as well?
+
'''edit me:''' do we need to modify the <code>vserver.stop</code> script as well?
 +
 
 +
[[Category:OS guest under linux-vserver]]

Latest revision as of 21:53, 21 October 2011

Installing and running openSUSE (previously knows as SUSE Linux) as a vserver guest.

Contents

[edit] Test configuration

Host:

  • Debian Etch AMD64, Kernel 2.6.15.4-vs2.0.2-rc9, util-vserver 0.30.210 + similar patch, or
  • Debian Etch AMD64, 2.6.18-4-vserver-amd64, util-vserver 0.30.212-1 + patch (see below)

Guest:

  • SLES 9, or
  • openSUSE 10.2

[edit] Running openSUSE vservers on a Debian server

[edit] Installation

Debian is lacking the required rpm tools to install an openSUSE or SLES system directly via vserver build (the required apt-rpm is available in source only for apt-0.5.xx, and Debian is already at 0.6.xx).

Therefore, use the normal openSUSE installation procedure and then copy the system to a vserver directory:

  • Install openSUSE on raw metal or in a virtual machine (such as VirtualBox).
  • Boot from CD (openSUSE or Debian - whatever you prefer), or just boot into the OS and log in as root.
  • tar the whole system, copy it to the vserver host and untar it to the desired vserver location, usually /var/lib/vservers/<servername>
  • Create /etc/vservers/<servername> manually, or copy it from another vserver.

[edit] Post install cleanup

  • remove some startup service, either delete the appropriate /etc/init.d/.... links or run the following from inside the vserver:
# chkconfig -d -f boot.swap boot.isapnp boot.idedma  boot.loadmodules \
                  boot.device-mapper boot.md boot.proc boot.shm boot.sched \
                  boot.rootfsck hotplug boot.localfs boot.crypto boot.clock \
                  boot.scpm boot.ipconfig

# chkconfig -d -f coldplug irq_balancer random network fbset powersaved kbd hwscan
  • remove unneeded packages:
# rpm -e irqbalance kernel-smp grub reiserfs xfsprogs raidtools ntfsprogs \
         module-init-tools mkinitrd powersave hotplug mdadm

Note: there are a number of redundant packages remaining that can not be removed due to yast2 depending on them.

[edit] initscripts

openSUSE's /etc/init.d/rc expects two environment variables: RUNLEVEL and PREVLEVEL. The vserver.start script fails to set those. There are a couple workarounds:

  • Edit /etc/init.d/rc to set those values (not recommended (why?)). For example, inserting these lines near the top of the file:
PREVLEVEL="N"
RUNLEVEL="$1"
  • Apply the following patch to vserver.start to set the values:
--- vserver.start,orig  2006-12-09 12:37:58.000000000 -0700
+++ vserver.start       2007-06-11 12:27:27.000000000 -0600
@@ -141,7 +141,7 @@
     $_VUNAME     --xid self --set -t context="$VSERVER_DIR" -- \
     $_VATTRIBUTE --set "${OPTS_VATTRIBUTE[@]}" -- \
     $_SAVE_CTXINFO "$VSERVER_DIR" \
-    $_ENV -i "${OPTS_ENV[@]}" \
+    $_ENV -i "${OPTS_ENV[@]}" PREVLEVEL="N" RUNLEVEL="$RUNLEVEL_START" \
     $_VCONTEXT   --migrate-self --endsetup --chroot $SILENT_OPT \
     "${OPTS_VCONTEXT_MIGRATE[@]}" "${OPTS_VCONTEXT_ENTER[@]}" -- \
     "${INITCMD_START[@]}"
@@ -157,7 +157,7 @@
     $_EXEC_ULIMIT      "$VSERVER_DIR/ulimits" \
     $_CHCONTEXT_COMPAT "${CHCONTEXT_OPTS[@]}" "${CHCONTEXT_INIT_OPTS[@]}" \
     $_SAVE_CTXINFO     "$VSERVER_DIR" \
-    $_ENV -i "${OPTS_ENV[@]}" \
+    $_ENV -i "${OPTS_ENV[@]}" PREVLEVEL="N" RUNLEVEL="$RUNLEVEL_START" \
     $_CHAINECHO "${_IS_FAKEINIT:+$startsync_pipe}" "" \
     $_CAPCHROOT        "${CAPCHROOT_OPTS[@]}" . \
     "${INITCMD_START[@]}"

edit me: do we need to modify the vserver.stop script as well?

Personal tools