diff --git a/devlib/bin/scripts/shutils.in b/devlib/bin/scripts/shutils.in
index b95ad2e..2442386 100755
--- a/devlib/bin/scripts/shutils.in
+++ b/devlib/bin/scripts/shutils.in
@@ -9,6 +9,7 @@ GREP=${GREP:-$BUSYBOX grep}
 SED=${SED:-$BUSYBOX sed}
 CAT=${CAT:-$BUSYBOX cat}
 AWK=${AWK:-$BUSYBOX awk}
+PS=${PS:-$BUSYBOX ps}
 
 ################################################################################
 # CPUFrequency Utility Functions
@@ -156,11 +157,11 @@ cgroups_tasks_move() {
 
 	[ "x$FILTERS" = "x" ] && exit 0
 
-	PIDS=`ps | $GREP $FILTERS | $AWK '{print $2}'`
+	PIDS=`$PS -o comm,pid | $GREP $FILTERS | $AWK '{print $2}'`
 	PIDS=`echo $PIDS`
 	echo "PIDs to save: [$PIDS]"
 	for TID in $PIDS; do
-	  COMM =`$CAT /proc/$TID/comm`
+	  COMM=`$CAT /proc/$TID/comm`
 	  echo "$TID : $COMM"
 	  echo $TID > $SRC_GRP/cgroup.procs
 	done
diff --git a/devlib/module/cgroups.py b/devlib/module/cgroups.py
index e4b387c..dd9543e 100644
--- a/devlib/module/cgroups.py
+++ b/devlib/module/cgroups.py
@@ -155,7 +155,7 @@ class Controller(object):
         # Build list of tasks to exclude
         grep_filters = ''
         for comm in exclude:
-            grep_filters += '-e "{}" '.format(comm)
+            grep_filters += '-e {} '.format(comm)
         logging.debug('   using grep filter: %s', grep_filters)
         if grep_filters != '':
             logging.debug('   excluding tasks which name matches:')
@@ -300,7 +300,6 @@ class CgroupsModule(Module):
 
     name = 'cgroups'
     stage = 'setup'
-    cgroup_root = '/sys/fs/cgroup'
 
     @staticmethod
     def probe(target):
@@ -315,22 +314,6 @@ class CgroupsModule(Module):
 
         self.logger = logging.getLogger('CGroups')
 
-        # Initialize controllers mount point
-        mounted = self.target.list_file_systems()
-        if self.cgroup_root not in [e.mount_point for e in mounted]:
-            self.target.execute('mount -t tmpfs {} {}'\
-                    .format('cgroup_root',
-                            self.cgroup_root),
-                            as_root=True)
-        else:
-            self.logger.debug('cgroup_root already mounted at %s',
-                    self.cgroup_root)
-
-        # Ensure CGroups is mounted RW
-        self.target.execute('mount -o remount,rw {}'\
-                            .format(self.cgroup_root),
-                            as_root=True)
-
         # Load list of available controllers
         controllers = []
         subsys = self.list_subsystems()
@@ -346,7 +329,9 @@ class CgroupsModule(Module):
             if not controller.probe(self.target):
                 continue
             try:
-                controller.mount(self.target, self.cgroup_root)
+                cgroup_root = target.path.join(target.working_directory,
+                                               'cgroups')
+                controller.mount(self.target, cgroup_root)
             except TargetError:
                 message = 'cgroups {} controller is not supported by the target'
                 raise TargetError(message.format(controller.kind))
@@ -448,6 +433,8 @@ class CgroupsModule(Module):
 
         # Create Freezer CGroup
         freezer = self.controller('freezer')
+        if freezer is None:
+            raise RuntimeError('freezer cgroup controller not present')
         freezer_cg = freezer.cgroup('/DEVLIB_FREEZER')
         thawed_cg = freezer.cgroup('/')