【Ubuntu 22.04】最新ラズパイOSのパーティション操作で失敗?「FEATURE_C12」エラーの正体と解決策

みなさん、こんにちは。

IoTシステムを相手にしていると、意外と新しいOSを使用する機会がありません。枯れたOSの安定性は絶対的な正義です。

しかし、最新OSだとどんな新機能があるのか、パフォーマンスはどう変わったのか、やはり気になるもの。私のプロジェクトではRaspberry Pi OSはBookwormをメインに安定版はBullseyeで構築しているのですが、そろそろ、Debian TrixieベースのRaspberry Pi OSのテストを行っておかなければと思い立ち、先日から試作環境の構築を始めました。

しかし、そこで遭遇したのが「これまで通用していたはずの手法が通用しない」という、エンジニアにとっては最高に「燃える(そして少し頭を抱える)」トラブルでした。今回は、パーティション操作中に現れた謎のエラー「FEATURE_C12」の正体と、その回避方法についてお届けします。

 


 

なぜ、わざわざパーティションをいじるのか

 

Raspberry Pi OSをSDカードに書き込んで初回起動すると、親切にもパーティションを自動でSDカード全容量まで拡張してくれます。

これ自体は初心者にも優しい機能なのですが、ある程度システムを使い込んでいるユーザーや、IoT機器として運用を考えている立場からすると、少し「おせっかい」に感じることがあります。

私は、メンテナンス性を考慮して「OS領域(root)」と「ユーザーデータ領域(home)」は物理的に分けておきたいと考えています。こうしておけば、将来OSをクリーンインストールしたり、別のディストリビューションを試したりする際も、/home パーティションだけをそのまま引き継ぐことができるからです。

そのため、いつも自動拡張が終わった後に、愛用のXubuntu 22.04 LTSマシンにSDカードを差し直し、使い慣れたGPartedなどでパーティションの縮小と追加を行っていました。……そう、これまでは。

 


 

突然の宣告 – 「FEATURE_C12」という名の壁

 

最新のラズパイOS(Trixie)のSDカードを差し込み、いつものようにGPartedを立ち上げ、パーティションの縮小操作を開始しました。ところが、処理が始まった直後に「操作に失敗しました」という無情なメッセージが。

原因を探るべく、コマンドラインから e2fsck を実行してみると、そこには見慣れないエラーが並んでいました。

sudo e2fsck -f /dev/mmcblk0p2
e2fsck 1.46.5 (30-Dec-2021)
/dev/mmcblk0p2 has unsupported feature(s): FEATURE_C12
e2fsck: Get a newer version of e2fsck!

「FEATURE_C12……? しかも『もっと新しいバージョンを持ってこい』だと?」

30年近くIT業界に身を置き、Linuxとも長く付き合ってきましたが、標準的なext4フォーマットでここまでハッキリと「お前は古すぎる」と拒絶されるのは少し新鮮なショックでした。

 


 

原因 – ファイルシステムの「世代ギャップ」

 

このエラーの正体は、ext4ファイルシステムに比較的新しく追加された機能 「orphan_file(FEATURE_C12)」 です。

項目詳細
機能名orphan_file (FEATURE_C12)
導入時期2023年リリースの e2fsprogs 1.47.0 から
主な目的多数のファイルを削除する際のパフォーマンスと堅牢性の向上

原因はツールの古さでした。

  • 操作される側(ラズパイOS Trixie)
    最新の e2fsprogs でフォーマットされているため、当然のように新機能(orphan_file)が有効になっている。
  • 操作する側(Xubuntu 22.04)
    2022年リリースのOSであり、搭載されているツールのバージョンは 1.46.5。まだこの新機能を知らない。

古いツールから見れば、未知の機能が含まれているファイルシステムは「壊れている可能性がある」と判断せざるを得ません。つまり、「未来のOSが作った領域を、過去のOSの道具でいじろうとした」ことによる世代ギャップが原因だったわけです。

 


 

現場でハマった2つの落とし穴

 

今回のトラブル中、技術的な互換性以外にも「デスクトップLinuxユーザーあるある」な落とし穴に足を止められました。

1. 自動マウントの「親切」

Xubuntuデスクトップでは、SDカードを差し込むと即座にパーティションがマウントされます。しかし、GPartedなどのパーティション操作ツールは、安全のために「マウント中の領域」のサイズ変更を許可しません。

エラーが出るとつい深読みしてしまいますが、まずは落ち着いて umount する、あるいはGParted上の右クリックメニューで「アンマウント」を確認する。基本ですが、焦っている時ほど忘れがちです。

2. LTS(長期サポート版)の限界

「ツールが古いなら apt upgrade すればいい」と考えがちですが、UbuntuのLTS版は安定性を重視するため、リポジトリにあるツールのバージョンは固定される傾向にあります。無理にリポジトリ外から最新版を導入して、メイン環境のライブラリ整合性を崩すのは、あまりよい解決策とは言えません。

 


 

解決策 – 最新の「GParted Live USB」で環境ごとアップデート

 

「操作する環境が古いなら、その作業のためだけに最新の環境を一時的に用意すればいい」

これが最も安全で、かつ確実な解決策でした。

解決の手順

  1. GParted公式サイトから最新のISOイメージをダウンロードする
    現在配布されているGParted Liveは、当然ながら orphan_file などの最新機能をフルサポートしています。
     
  2. 「Ventoy」を使って起動USBメモリを作成する
    ここで便利なのが Ventoy です。USBメモリに一度インストールしておけば、あとはISOファイルをドラッグ&ドロップするだけでマルチブート可能な起動ディスクが完成します。
    ※Ventoyの使い方は、以前のブログ記事でも詳しく解説していますので参考にしてください。
    【Ventoy】USBメモリ1本で複数OSを管理!Linuxで使うメリットと使用手順を解説します
     
  3. ライブ環境から起動し、操作を実行する
    最新のGParted Liveで起動すれば、先ほどまで「FEATURE_C12」と騒いでいたSDカードが、まるで何事もなかったかのようにスムーズに縮小・移動できました。
GParted Liveでパーティション操作
GParted Liveでパーティション操作

 


 

今回の教訓 – パーティション操作の鉄則

 

今回のトラブルを振り返り、改めて以下の教訓を心に刻みました。

  • 枯れた技術でも進化は止まらない
    ext4という、一見完成されたように見えるファイルシステムでも、数年単位で重要なアップデートが行われています。
  • OSの世代を意識する
    「操作する側」は、常に「操作される側」と同等、あるいはそれ以上に新しい必要がある。
  • 困ったらライブメディア
    メイン環境のツールを無理にアップデートしてリスクを冒すより、最新のレスキュー用ライブメディアを使うのが最短ルート。

もし皆さんの環境で、最新のラズパイOSやDebian系OSをいじっていて謎のエラーに出会ったら、ツールのバージョンを疑ってみてください。

技術の進歩は、時にこうした小さな「摩擦」を生みますが、それを乗り越えて環境を最適化していく過程こそが、エンジニアリングの楽しさでもありますね。

 

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

それでは、よいRaspberry Piライフを!

カテゴリ: Raspberry Pi

コメントする

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

上部へスクロール