[meta-virtualization] [PATCH] lxc: Tweak lxc template script for systemd/sysvinit
Bruce Ashfield
bruce.ashfield at windriver.com
Wed Oct 15 11:13:46 PDT 2014
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 <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
>
More information about the meta-virtualization
mailing list