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?
Following @kremerol solution, I was able to get my RPI 4 with Ubuntu 20.04 working.
Run
sudo nano /boot/firmware/cmdline.txt
Edit the default file to look like below.
NOTE: These are the 3 settings to add:
cgroup_enable=cpuset
cgroup_enable=memory
cgroup_memory=1
Save the file and reboot and the node status will change to ready.
You can check the status by running
sudo microk8s.kubectl get nodes
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 currentcmdline
.So modify
/boot/firmware/nobtcmd.txt
and append:cgroup_enable=cpuset cgroup_enable=memory cgroup_memory=1
. Reboot andcat /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.On Raspbian I had to add the following in
/boot/cmdline.txt
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.
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
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.
Reading in the boot partition the
config.txt
the settings ofcmdline
point to a filenobtcmd.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.
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
If you need to automate it
This appends
cgroup_enable=cpuset cgroup_memory=1 cgroup_enable=memory
at the end of the first line of/boot/cmdline.txt