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=1but 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.
Run
sudo nano /boot/firmware/cmdline.txtEdit 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 fixrtcNOTE: These are the 3 settings to add:
cgroup_enable=cpusetcgroup_enable=memorycgroup_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 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.
On Raspbian I had to add the following in /boot/cmdline.txt
cgroup_enable=cpuset cgroup_memory=1 cgroup_enable=memoryYou 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.
3On 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.
1Reading 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.txtThis appends cgroup_enable=cpuset cgroup_memory=1 cgroup_enable=memory at the end of the first line of /boot/cmdline.txt