採用情報 お問い合わせ

BLOG

IoT 技術コラム

2025 年 10 月 27 日

Ubuntu 25.10 で Yocto Project のビルドに失敗する問題の詳細と回避策

はじめに

2025/10/09 にリリースされた Ubuntu 25.10 環境で Yocto Project のビルドを実行すると、一部の処理(base-files パッケージのビルド中に発生する chown 操作など)でエラーとなる問題が、Yocto Project コミュニティに報告されています。[1]

本記事では、この問題の発生メカニズムと回避策について解説します。

  • 現時点 (2025/10/24) では、Ubuntu 25.10 は Yocto Project の公式サポート対象外です。そのため、Ubuntu 25.10 上での Yocto Project のビルドは推奨されていません。

エラーの詳細と原因

この問題は、Ubuntu 25.10 で、coreutils パッケージが従来の GNU ベースのものから、Rust ベースの uutils coreutils に切り替わったことによる影響です。[2]
これにより、Yocto Project で使用されている pseudo が正しく動作しなくなり、この問題が発生しました。

pseudo とは、Yocto Project で開発された fakeroot の実装の一つです。
これは、非特権ユーザの一部の操作を、root 権限で実行したかのように偽装するために使われます。
通常、この偽装は次のように実現されます。

  1. pseudo の介入 : LD_PRELOAD という仕組みを使い、pseudo は libc が提供するファイル操作関数(例 : chown() など)をオーバーライドします。
  2. システムコールのインターセプト : これにより、アプリケーションが libc のファイル操作関数を呼び出すと、実際の OS カーネルへのシステムコールが発行される前に、pseudo が処理を横取り(インターセプト)し、権限情報の書き換えや仮想的な権限情報の記録をします。

しかし、Rust ベースの uutils coreutils では libc を介さずに直接システムコールを発行するよう設計されています。
その結果、pseudo がシステムコールに介入することができず、非特権ユーザが root 権限の必要なファイルの操作を行ったときに、権限不足 (Permission denied) によりエラーが発生します。(図 1)

図 1: GNU 製 coreutils と Rust 製 coreutils での pseudo の動作の違い

回避策

この問題は、 coreutils を従来の GNU ベースのものに入れ替えることで回避できることが報告されています。
これは、pseudo がシステムコールをインターセプトできる従来の環境に戻す応急処置となります。

回避策の実行コマンド

Ubuntu 25.10 で、ターミナルから次のコマンドを実行し、coreutils の入れ替えを行います。

$: sudo apt install coreutils-from-gnu coreutils-from-uutils- --allow-remove-essential
【重要】回避策を実行する際の注意点

この方法は、システムに大きな変更を加えるハイリスクな操作であることを理解しておく必要があります。特に、coreutils は Linux OS の根幹をなすコマンド群(ls, cp, mv, chown など)を提供するパッケージです。これを入れ替えることは、そのほかのアプリケーションやシステムの動作に予期せぬ影響を与える可能性があります。

所感

今回の問題は、Linux ディストリビューションにおける Rust 言語によるコンポーネントの置き換えという現代的なトレンドが、従来のツールチェイン(特に fakeroot/pseudo のような特殊な手法に依存するもの)とどのように衝突するかを示す好例となります。Rust 化はパフォーマンスやセキュリティ向上に寄与しますが、その一方で互換性の問題を引き起こす可能性があることが実例で示されました。
Yocto Project コミュニティでは、当面 Rust 製 coreutils(uutils) の代わりに GNU 製 coreutils をインストールするようにビルド時に通知する修正を導入する方針で進めているようです [3] が、これはあくまで暫定的な対応であり、恒久的な解決策とはなりません。今後どのような解決策がコミュニティから提供されるのか動向を注視していく必要がありそうです。

参考 Web ページ
[1]:openembedded-core: Ubuntu 25.10: base-passwd fails to chown. (pseudo issue)
[2]:rust-coreutils transition landing in release pocket
[3]:Bug 16028 - Check that coreutils is not uutils/coreutils

この記事の著者
山根 大典

2017 年サイバートラスト入社。Yocto Project を用いたカスタム Linux ディストリビューションの開発や EMLinux の開発などの組込み Linux の開発業務に従事している。

本記事に関連するリンク
CentOS 7 延長サポートサービス
デジタルトランスフォーメーションのための電子認証基盤 iTrust
iTrust SSL/TLS サーバー証明書