【Bodhi Linux 7.0.0】SNAP起動エラー “cannot attach cgroup program: Operation not permitted” からの脱出

みなさん、こんにちは。

Bodhi Linux 7.0.0 でSNAPプログラムを使っていたのですが、いつの間にかプログラム起動時にエラー「cannot attach cgroup program: Operation not permitted」が発生するようになりました。

このエラーは、システムのリソース管理に関連するもので、なかなか手強い相手でした。同じような問題に直面している方の助けになればと思い、解決までの道のりをブログ記事にまとめました。

それでは、さっそく見ていきましょう!

 


 

エラー発生!SNAPプログラムが起動しない

 

ある日、いつものようにSNAPプログラムを起動しようとしたところ、見慣れないエラーメッセージが表示されました。

cannot attach cgroup program: Operation not permitted

このエラーメッセージで検索してみると、どうやらシステムのコントロールグループ(cgroup)という機能に関連しているようです。cgroup (Control Groups) とは、Linuxカーネルの機能で、プロセスやその集団(コンテナなど)が使うCPU、メモリ、ディスクI/Oなどのシステムリソースを制限・管理・隔離するための仕組みです。SNAPプログラムが正常に動作するためには、この cgroup が適切に機能している必要があるようでした。

 


 

原因の探求:cgroup、カーネル、そしてSnapd

 

エラーの原因を特定するため、いくつかの可能性を検討しました。

  • cgroup のバージョン
    近年の Linux ディストリビューションでは cgroup v2 が推奨されていますが、システムが古い cgroup v1 を使用している場合、SNAP の動作に必要な機能が不足している可能性を疑いました。
     
  • カーネルの問題
    使用している Linux カーネルが、SNAP が必要とする cgroup の機能を十分にサポートしていない、または何らかの不具合を抱えている可能性を疑いました。
     
  • Snapd の状態
    Snap デーモン (snapd) 自体のインストールが不完全であるか、バージョンが古い可能性を疑いました。
     

 

試行錯誤:再インストールとカーネルの確認

 

まず、基本的なトラブルシューティングとして、Snapd の再インストールを試みました。

sudo apt remove --purge snapd
sudo apt autoremove
sudo apt install snapd

しかし、再起動後もエラーは解消されませんでした。

次に、cgroup のバージョンを確認しました。ターミナルで以下のコマンドを実行したところ、

cat /sys/fs/cgroup/cgroup.subtree_control

私の環境では memory pids と表示され、cgroup v1 が使用されていることが分かりました。SNAP は cgroup を利用するため、これがエラーの原因の一つになっている可能性が高いと考えられました。

そこで、 /etc/default/grub ファイルを開き、GRUB_CMDLINE_LINUX_DEFAULT の行に systemd.unified_cgroup_hierarchy=1 というパラメータを追加してみたのですが、解決しませんでした。本来、この設定で cgroup v2 が使用されるようになるはずなのですが、残念ながら、そうはなりませんでした。

-generic-hwe カーネルへの着目

次に、カーネルに注目することにしました。uname -r で使用しているカーネルを調べてみると、linux-image-5.4.0-156-generic と表示され、かなり古いカーネルを使用していることがわかりました。

様々な情報を調べていく中で、Linux カーネルには複数の種類があり、ハードウェアのサポートやパフォーマンス特性が異なることを知りました。使用している linux-image-5.4.0-156-generic が最新のSNAPに対応できないのかもしれません。よって、カーネルをアップグレードしてみることにしました。調査の結果、generic-hwe というカーネルが、比較的新しいハードウェアをサポートし、安定した動作が期待できるとのことでした。私の Bodhi Linux 7.0.0 (Ubuntu 22.04 LTS ベース) にも、このカーネルが利用できるのではないかと考え、以下のコマンドで検索してみました。

sudo apt update
sudo apt search linux-generic-hwe

検索結果には、linux-generic-hwe-22.04 というパッケージが見つかりました。これが、私のシステムに適した generic-hwe カーネルである可能性が高いと考え、早速インストールを試みました。

sudo apt install linux-generic-hwe-22.04

インストールが完了した後、念のためシステムの再起動を行いました。

 


 

GRUBメニューからの -generic カーネル選択

 

再起動後、自動的に OS が起動しましたが、どうやら、古いカーネルを使用し続けてしまっているようでした。GRUBは前回正常起動したカーネルを再利用するのが標準のようです。カーネルが古いままのためか、SNAP プログラムのエラーも解決していません。

そこで GRUB メニューを表示させ、起動するカーネルを選択することを試みました。多くの Linux システムでは、起動直後に Esc キー を押下げするか、Shift キー を押し続けることで GRUB メニューが表示されます。私の環境では Esc キーで、無事に GRUB メニューを表示させることができました。

GRUB メニューには、複数の起動オプションが表示されており、その中にインストールした -generic カーネルのエントリがあることを確認しました。カーソルキーを使ってこの -generic カーネルのエントリを選択し、Enter キーを押すと、システムは選択した -generic カーネルで起動を開始しました。

起動後、問題の SNAP プログラムを試してみたところ、エラーが発生せず、無事に起動することができたのです!

すばらしい!これで SNAP プログラムを気兼ねなくインストールして使うことができます。

 

古いカーネルは、トラブルを避けるため、以下のコマンドで削除しました。これで古いカーネルが間違って起動することはなくなります。

sudo apt remove --purge linux-image-5.4.0-156-generic linux-headers-5.4.0-156-generic

 


 

cgroup の状況と今後の課題

 

SNAP プログラムは起動するようになったものの、念のため cgroup のバージョンを再度確認してみました。

cat /sys/fs/cgroup/cgroup.subtree_control

結果は依然として memory pids でした。これは、システムが完全には cgroup v2 モードで動作していないことを示唆しています。しかし、-generic-hwe カーネルで起動したことで、SNAP プログラムが正常に動作するようになったことは大きな進歩です。

今後は、システム全体で cgroup v2 を有効にするための設定を調査していきたいと思います。

 


 

まとめ

 

今回の SNAP 起動エラーは、カーネルを generic-hwe に変更し、GRUB メニューから手動で選択することで解決に至りました。もし同様のエラーに遭遇された方は、まず -generic-hwe カーネルのインストールと、GRUB メニューからの起動を試してみてください。

 

本日も最後までお読みいただきありがとうございました。

それでは、よい Bodhi Linux ライフを!

 

Bodhi LInux 関係の記事はこちらからもお読みいただけます。

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

上部へスクロール