Emuelec4.4开机出现满屏Failed to get cgroup /sys/fs/cgroup/unified问题分析

Emuelec4.3-4.5开机出现满屏log,通过网上查资料分析,和看开机日志发现以下这条

[    6.002128@1]- cgroup: cgroup2: unknown option "nsdelegate"

EMUELEC:/usr/lib/systemd # uname -a
Linux EMUELEC 4.9.269 #1 SMP PREEMPT Thu Apr 7 17:26:33 CDT 2022 aarch64 GNU/Linux
 

EMUELEC:/usr/lib/systemd # systemctl --version
systemd 250 (250.4)
-PAM -AUDIT -SELINUX -APPARMOR -IMA -SMACK -SECCOMP -GCRYPT -GNUTLS -OPENSSL -ACL +BLKID -CURL -ELFUTILS -FIDO2 +IDN2 -IDN -IPTC +KMOD -LIBCRYPTSETUP -LIBFDISK -PCRE2 -PWQUALITY -P11KIT -QRENCODE -BZIP2 -LZ4 -XZ -ZLIB +ZSTD -BPF_FRAMEWORK -XKBCOMMON +UTMP +SYSVINIT default-hierarchy=hybrid
 

所以基本原因猜测是emuelec用的Linux内核版本过低4.5为linux4.9.269,而emuelec用的systemd程序版本过高为systemd 250 (250.4)导致。

参考网上资料,这个问题可以直接忽略,不影响使用,要解决的话,可以自己变异emuelec,编译时将systemd版本降低,或则等emuelec使用v4.13+的linux内核

However, I am still on kernel 4.12 (I can't update to 4.13 because of a wifi issue).

I assume from reading the linked systemd issue (from your #3 edit) that we'll see this log entry whenever using systemd 235 while kernel < 4.13.  If you're on LTS you're not on 4.13.

I'm going to ignore it because it looks like it falls back if not supported:

开机出现cgroup:cgroup2:unknown option "nsdelegate"

老外的论坛关于这个cgroup报警的经历

<think>好的,我现在需要解决用户遇到的“mounting cpu_group failed: Invalid argument”错误。首先,我要理解这个错误发生的背景。用户可能在尝试挂载cgroup子系统,特别是CPU子系统时遇到了问题。根据用户提供的引用内容,例如引用[2]中提到v4环境中如果存在/cgroup/cpu/路径会导致服务重启失败,这可能与cgroup的版本有关。 首先,我需要确定用户使用的cgroup版本。因为cgroup v1和v2在挂载方式上有差异。在v1中,每个子系统(如cpu、memory)需要单独挂载,而v2使用单一统一层次结构。如果用户混合使用两种版本的挂载方式,可能会导致冲突,从而出现无效参数的错误。 接下来,检查挂载点的路径是否正确。引用[3]提到创建cpu subsyscgroups,可能在v1中需要正确指定子系统类型。如果挂载命令中子系统类型错误,比如误写为cpu_group而不是cpu,就会导致失败。用户提到的错误信息中的“cpu_group”可能是一个拼写错误,正确的应该是cpu。 然后,考虑内核是否支持对应的子系统。如果内核编译时未启用cgroup CPU子系统,挂载时会失败。用户可以通过检查/proc/cgroups文件中的cpu条目是否存在,并确认是否已启用。引用[3]中提到从/proc/cgroups查询子系统,所以这一步很重要。 另外,挂载路径的权限问题也可能导致错误。确保挂载点目录存在,并且有适当的权限。如果目录不存在,需要先创建;如果权限不足,可能需要使用sudo或者调整目录权限。 还有可能与其他已挂载的cgroup冲突。例如,在v2中已经挂载了统一层次结构,再尝试挂载v1的子系统会导致错误。引用[2]指出在v4环境中存在旧路径可能导致失败,所以需要清理旧的挂载点。 最后,检查挂载命令的语法是否正确。正确的v1挂载命令应该是“mount -t cgroup -o cpu,cpuacct none /sys/fs/cgroup/cpu,cpuacct”。如果参数顺序或选项错误,系统会返回无效参数错误。 综合这些可能性,我需要逐步引导用户检查cgroup版本、子系统状态、挂载点、权限以及命令语法,从而找到具体原因并解决。</think>### 导致 "mounting cpu_group failed: Invalid argument" 的常见原因及解决方案 #### 1. **cgroup 版本不兼容** - **原因**: 系统可能已默认使用 cgroup v2,但尝试以 v1 的方式挂载子系统(如单独挂载 `cpu`)。cgroup v2 要求以统一层级结构挂载,不支持单独挂载子系统[^2]。 - **验证方法**: ```bash cat /proc/filesystems | grep cgroup ``` 若输出包含 `cgroup2`,则系统默认使用 v2。 - **修复方案**: - **方法1**: 切换到 cgroup v1 在启动参数中添加 `systemd.unified_cgroup_hierarchy=0`,例如修改 `/etc/default/grub` 中的 `GRUB_CMDLINE_LINUX`: ```bash GRUB_CMDLINE_LINUX="systemd.unified_cgroup_hierarchy=0" ``` 更新配置后重启系统。 - **方法2**: 清理冲突挂载点 若存在残留的旧挂载路径(如 `/cgroup/cpu`),需先卸载并删除目录: ```bash umount /cgroup/cpu 2>/dev/null rm -rf /cgroup/cpu ``` #### 2. **子系统名称错误** - **原因**: 使用错误子系统名称(如 `cpu_group` 而非 `cpu`)。cgroup v1 的 CPU 子系统名为 `cpu`,需搭配 `cpuacct` 使用[^3]。 - **修复方案**: 正确挂载命令应为: ```bash mount -t cgroup -o cpu,cpuacct none /sys/fs/cgroup/cpu,cpuacct ``` #### 3. **内核未启用 CPU 子系统** - **原因**: 内核编译时未启用 `CONFIG_CGROUP_SCHED` 或 `CONFIG_CGROUP_CPUACCT`。 - **验证方法**: ```bash cat /proc/cgroups | grep cpu ``` 若输出中 `cpu` 和 `cpuacct` 的 `enabled` 列为 `0`,则子系统未启用。 - **修复方案**: 重新编译内核并启用以下选项: ```config CONFIG_CGROUP_SCHED=y CONFIG_CGROUP_CPUACCT=y ``` #### 4. **挂载路径权限问题** - **原因**: 挂载目标目录不存在或权限不足。 - **修复方案**: ```bash mkdir -p /sys/fs/cgroup/cpu,cpuacct chmod 755 /sys/fs/cgroup/cpu,cpuacct ``` #### 5. **与其他 cgroup 配置冲突** - **原因**: 系统服务(如 `systemd` 或 `cgconfig`)已管理 cgroup 配置,导致手动挂载冲突。 - **修复方案**: 停止相关服务后再挂载: ```bash systemctl stop cgconfig.service mount -t cgroup -o cpu,cpuacct none /sys/fs/cgroup/cpu,cpuacct ``` --- ### 操作验证流程 1. **检查 cgroup 版本** ```bash stat -fc %T /sys/fs/cgroup/ ``` - 输出 `cgroup2fs` 表示 v2,`tmpfs` 表示 v1。 2. **验证子系统状态** ```bash grep -E 'cpu|cpuacct' /proc/cgroups ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值