Raspberry Pi 4 Ubuntu 19.10 cannot enable cgroup memory at boostrap

On a Raspberry Pi 4, on a vanilla downloaded 19.10 image of Ubuntu 19 arm64, I failed trying to enable cgroup memory, needed for Kubernetes.

I created (because I don't understand well the real one, I think the 4th)

  • /boot/cmdline.txt
  • /boot/firmware/cmdline.txt
  • /boot/firmware/btcmd.txt (modified)
  • /boot/firmware/usercfg.txt (modified)

to append:

cgroup_enable=cpuset cgroup_enable=memory cgroup_memory=1

but in vain.

If I check cat /proc/cgroups the cgroup memory is disabled.

If I check cat /proc/cmdline there isn't.

How can I fix that?

9 Answers

Following @kremerol solution, I was able to get my RPI 4 with Ubuntu 20.04 working.

  1. Run sudo nano /boot/firmware/cmdline.txt

  2. Edit the default file to look like below.

     net.ifnames=0 dwc_otg.lpm_enable=0 console=serial0,115200 cgroup_enable=cpuset cgroup_enable=memory cgroup_memory=1 console=tty1 root=LABEL=writable rootfstype=ext4 elevator=deadline rootwait fixrtc

    NOTE: These are the 3 settings to add:

    • cgroup_enable=cpuset
    • cgroup_enable=memory
    • cgroup_memory=1
  3. Save the file and reboot and the node status will change to ready.

  4. You can check the status by running sudo microk8s.kubectl get nodes

1

I've just had this exact problem after picking up a new rpi4 on Ubuntu 19.10. After a quick poke...

The /boot/firmware/README file appears to detail the updated boot process. The second step in the process is to load /boot/firmware/config.txt which specifies /boot/firmware/nobtcmd.txt as the current cmdline.

So modify /boot/firmware/nobtcmd.txt and append: cgroup_enable=cpuset cgroup_enable=memory cgroup_memory=1. Reboot and cat /proc/cmdline

I wouldn't be surprised if some magic (maybe enabling BT?) changes the cmdline to /boot/firmware/btcmd.txt so it might be worth adding the change to that file too.

1

On Raspbian I had to add the following in /boot/cmdline.txt

cgroup_enable=cpuset cgroup_memory=1 cgroup_enable=memory

You must add this to the end of the existing line; if you add it at the bottom of file in a new line it doesn't work.

3

On my Raspberry Pi 4 (ubuntu-server-20.10/arm64) I had to append the following lines to /boot/firmware/cmdline.txt:

cgroup_enable=memory cgroup_memory=1

1

Maybe you're using an external USB disk with a microsd as boot device? In that case, the change must be done in the microsd partition and not in the USB.

1

Reading in the boot partition the config.txt the settings of cmdline point to a file nobtcmd.txt, which is exactly what I can see at runtime from /proc/cmdline. Changed inside that and now it works properly.

Before I tried these solutions which involve editing /boot/firmware/cmdline.txt or any other mentioned file, I tried first with installing cgroup-lite via apt-get. This seemed to do the trick as well.

Docker: Version Groovy Gorilla 20.10.6 Ubuntu version 20.10 Pi 4: 8GB ARM64

Here is a one-liner to enable cgroup support in Raspberry Pi OS. Remember, you must reboot after running this command.

sudo sed -i '$ s/$/ cgroup_enable=cpuset cgroup_memory=1 cgroup_enable=memory/' /boot/cmdline.txt

If you need to automate it

sed -e '1s/$/ cgroup_enable=cpuset cgroup_memory=1 cgroup_enable=memory/' -i /boot/cmdline.txt

This appends cgroup_enable=cpuset cgroup_memory=1 cgroup_enable=memory at the end of the first line of /boot/cmdline.txt

1

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

You Might Also Like