[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