[meta-virtualization] [PATCH] lxc: Tweak lxc template script for systemd/sysvinit

Yang Shi yang.shi at windriver.com
Tue Oct 14 20:41:03 PDT 2014


Tweak the script to make it work for both systemd and sysvinit.

Add "-i <init_method>" parameter. If sysvinit guest is used, "-i sysvinit" need
to be passed. The default init is systemd.

The below systemd specific changes are added:
Add "lxc.autodev=1" since LXC will create its own device tree.
Add "lxc.kmsg=0" to prevent lxc symlinks /dev/kmsg to /dev/console, this leads
to journald running 100% cpu usage all the time.
Remove unnecessary mount entry in fstab.

Signed-off-by: Yang Shi <yang.shi at windriver.com>
---
 templates/lxc-wrlinux.in | 31 ++++++++++++++++++++++++++-----
 1 file changed, 26 insertions(+), 5 deletions(-)

diff --git a/templates/lxc-wrlinux.in b/templates/lxc-wrlinux.in
index 1ef512b..7775cf2 100644
--- a/templates/lxc-wrlinux.in
+++ b/templates/lxc-wrlinux.in
@@ -30,8 +30,10 @@ default_profile=default
 
 configure_wrlinux()
 {
-    # Tweak initscripts
-    sed -i 's/^\(si::sysinit:\/etc\/init.d\/rcS\)/# \1/' ${rootfs_path}/etc/inittab
+    if [ "${init_method}" == "sysvinit" ]; then
+        # Tweak initscripts
+        sed -i 's/^\(si::sysinit:\/etc\/init.d\/rcS\)/# \1/' ${rootfs_path}/etc/inittab
+    fi
 
     # Touch file for fastboot
     dev_path="${rootfs_path}/dev"
@@ -78,9 +80,11 @@ copy_configuration()
 
     mkdir -p $config_path
     grep -q "^lxc.rootfs" $config_path/config 2>/dev/null || echo "lxc.rootfs = $rootfs_path" >> $config_path/config
+
+    if [ "${init_method}" == "sysvinit" ]; then
     cat <<EOF >> $config_path/config
 lxc.utsname = $name
-lxc.tty = 6 
+lxc.tty = 6
 lxc.pts = 1024
 lxc.mount = $config_path/fstab
 EOF
@@ -91,6 +95,21 @@ none            $rootfs_path/sys          sysfs   defaults  0 0
 none            $rootfs_path/dev/pts      devpts  defaults  0 0
 none            $rootfs_path/dev/shm      tmpfs   defaults  0 0
 EOF
+    # systemd
+    else
+    cat <<EOF >> $config_path/config
+lxc.utsname = $name
+lxc.autodev=1
+lxc.kmsg=0
+lxc.tty = 6
+lxc.pts = 1024
+lxc.mount = $config_path/fstab
+EOF
+
+    cat <<EOF > $config_path/fstab
+none            $rootfs_path/sys          sysfs   defaults  0 0
+EOF
+    fi
 
     if [ $? -ne 0 ]; then
         echo "Failed to add configuration"
@@ -110,17 +129,18 @@ usage()
     cat <<EOF
 usage:
     $1 -n|--name=<container_name>
-        [-p|--path=<path>] [-h|--help]
+        [-p|--path=<path>] [-i|--init=<init_method>] [-h|--help]
 Mandatory args:
   -n,--name         container name, used to as an identifier for that container from now on
 Optional args:
   -p,--path         path to where the container rootfs will be created, defaults to @LXCPATH at . The container config will go under @LXCPATH@ in that case
+  -i,--init         init method used by system, systemd or sysvinit
   -h,--help         print this help
 EOF
     return 0
 }
 
-options=$(getopt -o hp:n: -l help,path:,name: -- "$@")
+options=$(getopt -o hp:n:i: -l help,path:,name:,init: -- "$@")
 if [ $? -ne 0 ]; then
     usage $(basename $0)
     exit 1
@@ -133,6 +153,7 @@ do
         -h|--help)      usage $0 && exit 0;;
         -p|--path)      path=$2; shift 2;;
         -n|--name)      name=$2; shift 2;;
+        -i|--init)      init_method=$2; shift 2;;
         --)             shift 1; break ;;
         *)              break ;;
     esac
-- 
2.0.2



More information about the meta-virtualization mailing list