12

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?

Zanna
  • 72,312
Luca Mazzanti
  • 223
  • 1
  • 2
  • 6

10 Answers10

19

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

slm
  • 3,155
Steve
  • 291
13

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.

Tristan
  • 246
  • 1
  • 2
4

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.

Zanna
  • 72,312
b0nete
  • 49
1

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

pcko1
  • 113
0

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.

0

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.

Zanna
  • 72,312
Luca Mazzanti
  • 223
  • 1
  • 2
  • 6
0

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

0

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
Justin
  • 531
0

If you load up the SD card on a Windows machine, there are a few drives mounted (don't format them again when windows offers to).

In the drive labelled ubuntu-seed, not ubuntu-boot you will find the cmdline.txt file to append cgroup_enable=cpuset cgroup_memory=1 cgroup_enable=memory

-1

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