On 14-10-14 11:41 PM, Yang Shi wrote:
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.

This is definitely good information, and worth the broadcast. I was
asking for any systemd changes that may be floating around, but since
we are patching code that isn't already part of meta-virt, we'll let
this sit and see if any of the dependencies are also available to merge.

Cheers,

Bruce


Signed-off-by: Yang Shi <[email protected]>
---
  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@. 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


--
_______________________________________________
meta-virtualization mailing list
[email protected]
https://lists.yoctoproject.org/listinfo/meta-virtualization

Reply via email to