💻

Ubuntu22.04でCentOS7をLXCコンテナで動かす
August 21, 2023November 03, 2025
#Develop#Ubuntu#CentOS#LXC/LXD

LXC のホストを Ubuntu22.0 にアップグレードしたら CentOS7 のコンテナが起動できなくなったので原因を調べた。

前提条件

  • HOST OS: Ubuntu 22.04
  • HOST Kernel: 5.15.0-79-generic
  • Container OS: CentOS 7
  • lxc-start —version: 5.0.0~git2209-g5a7b9ce67

エラー内容

Failed to mount cgroup at /sys/fs/cgroup/systemd: Operation not permitted
systemd 219 running in system mode. (+PAM +AUDIT +SELINUX +IMA -APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 -SECCOMP +BLKID +ELFUTILS +KMOD +IDN)
Detected virtualization lxc.
Detected architecture x86-64.

Welcome to CentOS Linux 7 (Core)!

Set hostname to <vmc7>.
Cannot determine cgroup we are running in: No such file or directory
Failed to allocate manager object: No such file or directory
[!!!!!!] Failed to allocate manager object, freezing.

ホストの dmesg に下記が出力される。

cgroup2: Unknown parameter 'mode'

lxc-attachはできるが systemd が動かない状態。

原因

Ubuntu22.04 は cgroup v2 のみが動いていることが原因でコンテナである CentOS7 は cgroup v1 の path で要求しようとしていることの様だった。
cgroup v2 のみが動いている環境が原因なので Ubuntu21 も同様の問題が生じると思われる。

lxc-checkconfigで cgroup の動作状況を確認できる。
cgroup v1 のマウントポイントが空であることが確認できる。

--- Control groups ---
Cgroups: enabled
Cgroup namespace: enabled
Cgroup v1 mount points:
Cgroup v2 mount points:
/sys/fs/cgroup
Cgroup v1 systemd controller: missing
Cgroup v1 freezer controller: missing
Cgroup ns_cgroup: required
Cgroup device: enabled
Cgroup sched: enabled
Cgroup cpu account: enabled
Cgroup memory controller: enabled
Cgroup cpuset: enabled

解決方法

動いている cgroup のバージョンを cgroup v2 から cgroup v1 に切り替える。
切り替えには grub のブートオプションの設定とホストサーバーの再起動が必要となる。

sudo vim /etc/default/grub
# If you change this file, run 'update-grub' afterwards to update
# /boot/grub/grub.cfg.
# For full documentation of the options in this file, see:
#   info -f grub -n 'Simple configuration'

GRUB_DEFAULT=0
GRUB_TIMEOUT_STYLE=hidden
GRUB_TIMEOUT=0
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
#GRUB_CMDLINE_LINUX_DEFAULT="" ##コメントアウト
GRUB_CMDLINE_LINUX_DEFAULT="systemd.unified_cgroup_hierarchy=false" ##追記
GRUB_CMDLINE_LINUX=""
sudo update-grub

このあとホストサーバーを再起動する。

起動後のlxc-checkconfigが下記。 cgroup v1 が動作していることが分かる。

--- Control groups ---
Cgroups: enabled
Cgroup namespace: enabled
Cgroup v1 mount points:
/sys/fs/cgroup/systemd
/sys/fs/cgroup/cpuset
/sys/fs/cgroup/net_cls,net_prio
/sys/fs/cgroup/hugetlb
/sys/fs/cgroup/misc
/sys/fs/cgroup/memory
/sys/fs/cgroup/freezer
/sys/fs/cgroup/perf_event
/sys/fs/cgroup/cpu,cpuacct
/sys/fs/cgroup/pids
/sys/fs/cgroup/blkio
/sys/fs/cgroup/devices
/sys/fs/cgroup/rdma
Cgroup v2 mount points:
/sys/fs/cgroup/unified
Cgroup v1 clone_children flag: enabled
Cgroup device: enabled
Cgroup sched: enabled
Cgroup cpu account: enabled
Cgroup memory controller: enabled
Cgroup cpuset: enabled

これで LXC コンテナが正常に起動できる。

まとめ

Ubuntu22.04 で CentOS7 の LXC コンテナが起動しない問題を回避した。
なお、systemd を用いない CentOS6 のコンテナは cgroup v2 で正常に動作しており特定に時間がかかった。
cgroup の問題なので docker などもおそらく影響を受ける問題だと思う。
検索したところ Kubernetes などコンテナ全般で起きているようだった。

参考

Failed to mount cgroup at /sys/fs/cgroup/systemd: Operation not permitted · Issue #4072 · lxc/lxc

Required information Distribution: Gentoo Distribution version: n/a lxc-start --version: 4.0.11 lxc-checkconfig: LXC version 4.0.11 Kernel configuration not found at /proc/config.gz; searching... K...

GitHub

Failed to mount cgroup at /sys/fs/cgroup/systemd: Operation not permitted · Issue #4072 · lxc/lxc

おしまい

sakakinox

Written by sakakinox
Server enginier

Copyright © sakakinox.net 2021-2026.