#!/bin/sh# Copyright 2011 Canonical, Inc# 2014 Tianon Gravi# Author: Serge Hallyn <serge.hallyn@canonical.com># Tianon Gravi <tianon@debian.org>set -e# for simplicity this script provides no flexibility# if cgroup is mounted by fstab, don't run# don't get too smart - bail on any uncommented entry with 'cgroup' in itif grep -v '^#' /etc/fstab | grep -q cgroup; then echo 'cgroups mounted from fstab, not mounting /sys/fs/cgroup' exit 0fi# kernel provides cgroups?if [ ! -e /proc/cgroups ]; then exit 0fi# if we don't even have the directory we need, something else must be wrongif [ ! -d /sys/fs/cgroup ]; then exit 0fi# mount /sys/fs/cgroup if not already doneif ! mountpoint -q /sys/fs/cgroup; then mount -t tmpfs -o uid=0,gid=0,mode=0755 cgroup /sys/fs/cgroupficd /sys/fs/cgroup# get/mount list of enabled cgroup controllersfor sys in $(awk '!/^#/ { if ($4 == 1) print $1 }' /proc/cgroups); do mkdir -p $sys if ! mountpoint -q $sys; then if ! mount -n -t cgroup -o $sys cgroup $sys; then rmdir $sys || true fi fidone# example /proc/cgroups:# #subsys_name hierarchy num_cgroups enabled# cpuset 2 3 1# cpu 3 3 1# cpuacct 4 3 1# memory 5 3 0# devices 6 3 1# freezer 7 3 1# blkio 8 3 1# enable cgroups memory hierarchy, like systemd does (and lxc/docker desires)# https://github.com/systemd/systemd/blob/v245/src/core/cgroup.c#L2983# https://bugs.debian.org/940713if [ -e /sys/fs/cgroup/memory/memory.use_hierarchy ]; then echo 1 > /sys/fs/cgroup/memory/memory.use_hierarchyfiexit 0