2.2K Views
August 24, 23
スライド概要
erofsについて調べてみた
背景 • LinuxをARMボードで使う場合に、rootfsはどんなファイルシステムを使う のが良いか?という課題 • PC的な使い方 • 読み書き可能なファイルシステム ボード上でパッケージマネージャを使ってインストールアンインストールしたい • ボード上でスクリプト/ソースコードを編集して開発するホストビルド開発 • Linux Desktopと条件が同じなので、ext4やbtrfsなど選択肢が豊富 • • IoT機器的な使い方 • 読み込み専用のファイルシステム むやみに書くとSDカードやeMMCが壊れるので、原則書き込めない運用にしたい • 基本クロスビルド開発 • • 今回は、IoT機器的な使い方にフォーカス
数年前の状況 • リードオンリーrootfsの作り方 • ROマウントして使う • RW対応ファイルシステムをROマウントして使うことで書き込みできないよう にする • 読み書き可能なパーティションで使うext4や、RO運用では必要のない ジャーナリング機能を持っていないext2などを使うことが多かったようである • ROファイルシステムを使う メインラインに入っているcramfsやsquashfs、romfs、out of treeのpramfs • しかしいろいろと課題も多かった •
なぜROファイルシステムを使いたいのか? • RWファイルシステムをROマウントで使う場合 • 書き換えたい人(仮にヒャッハーさんと呼びます)がなんらかの方法で mountケーパビリティを持ってしまうと、rwでリマウントできてしまう mount –o remount,rw / / RO RW
なぜROファイルシステムを使いたいのか? • ROファイルシステムを使う場合 • 書き換えたい人(仮にヒャッハーさんと呼びます)がなんらかの方法で mountケーパビリティを持ってしまっても、そもそも書き込む仕組みが ない mount –o remount,rw / / RO
ROファイルシステムの課題 • 事実上SquashFSしか選択肢がない • Cramfsはサイズ上限256MByteがつらすぎる • Romfsはどこで使われているんだろう? • Pramfsはもうメンテされていない • YoctoサポートはSquashFSのみ • 個人的にはここが大きい Squash FS Cramfs Max filesystem size 2^64 256 MiB Max file size Max files Max directories ~ 2 TiB unlimited unlimited 16 MiB unlimited unlimited Max entries per directory unlimited unlimited Max block size 1 MiB 4 KiB Metadata compression yes no Directory indexes yes no Sparse file support yes no Tail-end packing (fragments) yes no Exportable (NFS etc.) yes no Hard link support yes no “.” and “..” in readdir yes no Real inode numbers yes no 32-bit uids/gids yes no File creation time yes no Xattr support ACL support yes no no no
しかし、救世主が! • Kernel • 5.4で新しいROファイルシステムが追加された Huaweiの開発者がコントリビュートしたファイルシステム • Huaweiのスマートフォン(最近見ないな。。。)で使っているらしい
EROFS https://www.kernel.org/doc/html/latest/filesystems/erofs.html Squash FS Max filesystem size 2^64 Max file size Max files ~ 2 TiB unlimited Max directories unlimited Max entries per directory unlimited Max block size 1 MiB Metadata compression yes Directory indexes yes Sparse file support yes Tail-end packing (fragments) yes Exportable (NFS etc.) yes Hard link support yes “.” and “..” in readdir yes Real inode numbers yes 32-bit uids/gids yes File creation time yes Xattr support ACL support yes no
EROFSのいいところ • Squash FSと比べて • ACLなどの機能が追加されている • 圧縮・非圧縮どちらにも対応 • タイムスタンプ偽装が可能(これがあるとイメージが再現可能) • その他 • Yoctoサポート • https://git.yoctoproject.org/poky/commit/?id=63b3c44d273d03fe3ac98 d6f7c8e8475b468b44e
まとめ • 今日は新しいROファイルシステムEROFSの紹介をしました • 時間切れで、ファイルシステムの詳細までは紹介できませんで したので、またそのうち紹介したいと思います • 余談 • Yoctoのリプロデューサブルビルドと組み合わせて使うと、差分の小さ いイメージ作成が可能 • Fontconfigが倒せない。。。