---
title: erofsについて調べてみた
tags: 
author: [watatuki](https://www.docswell.com/user/watatuki)
site: [Docswell](https://www.docswell.com/)
thumbnail: https://bcdn.docswell.com/page/LJ35WD1275.jpg?width=480
description: erofsについて調べてみた by watatuki
published: August 24, 23
canonical: https://www.docswell.com/s/watatuki/Z24789-2023-08-24-013233
---
# Page. 1

![Page Image](https://bcdn.docswell.com/page/LJ35WD1275.jpg)

erofsについて調べてみた


# Page. 2

![Page Image](https://bcdn.docswell.com/page/8JDDKPX6JG.jpg)

背景
•
LinuxをARMボードで使う場合に、rootfsはどんなファイルシステムを使う
のが良いか？という課題
•
PC的な使い方
•
読み書き可能なファイルシステム
ボード上でパッケージマネージャを使ってインストールアンインストールしたい
• ボード上でスクリプト/ソースコードを編集して開発するホストビルド開発
• Linux Desktopと条件が同じなので、ext4やbtrfsなど選択肢が豊富
•
•
IoT機器的な使い方
•
読み込み専用のファイルシステム
むやみに書くとSDカードやeMMCが壊れるので、原則書き込めない運用にしたい
• 基本クロスビルド開発
•
•
今回は、IoT機器的な使い方にフォーカス


# Page. 3

![Page Image](https://bcdn.docswell.com/page/VEPXKNKZJ8.jpg)

数年前の状況
• リードオンリーrootfsの作り方
•
ROマウントして使う
•
RW対応ファイルシステムをROマウントして使うことで書き込みできないよう
にする
• 読み書き可能なパーティションで使うext4や、RO運用では必要のない
ジャーナリング機能を持っていないext2などを使うことが多かったようである
•
ROファイルシステムを使う
メインラインに入っているcramfsやsquashfs、romfs、out of treeのpramfs
• しかしいろいろと課題も多かった
•


# Page. 4

![Page Image](https://bcdn.docswell.com/page/27VLVKVMEQ.jpg)

なぜROファイルシステムを使いたいのか？
• RWファイルシステムをROマウントで使う場合
•
書き換えたい人(仮にヒャッハーさんと呼びます)がなんらかの方法で
mountケーパビリティを持ってしまうと、rwでリマウントできてしまう
mount –o remount,rw / /
RO
RW


# Page. 5

![Page Image](https://bcdn.docswell.com/page/5JGXLQLX7L.jpg)

なぜROファイルシステムを使いたいのか？
• ROファイルシステムを使う場合
•
書き換えたい人(仮にヒャッハーさんと呼びます)がなんらかの方法で
mountケーパビリティを持ってしまっても、そもそも書き込む仕組みが
ない
mount –o remount,rw / /
RO


# Page. 6

![Page Image](https://bcdn.docswell.com/page/47Q8YKY5EP.jpg)

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


# Page. 7

![Page Image](https://bcdn.docswell.com/page/KE42WPWV71.jpg)

しかし、救世主が！
• Kernel
•
5.4で新しいROファイルシステムが追加された
Huaweiの開発者がコントリビュートしたファイルシステム
• Huaweiのスマートフォン(最近見ないな。。。)で使っているらしい


# Page. 8

![Page Image](https://bcdn.docswell.com/page/L71MY9Y4JG.jpg)

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


# Page. 9

![Page Image](https://bcdn.docswell.com/page/G7W3GQGZ72.jpg)

EROFSのいいところ
• Squash
FSと比べて
•
ACLなどの機能が追加されている
• 圧縮・非圧縮どちらにも対応
• タイムスタンプ偽装が可能(これがあるとイメージが再現可能)
• その他
•
Yoctoサポート
•
https://git.yoctoproject.org/poky/commit/?id=63b3c44d273d03fe3ac98
d6f7c8e8475b468b44e


# Page. 10

![Page Image](https://bcdn.docswell.com/page/4JZVLWLL73.jpg)

まとめ
• 今日は新しいROファイルシステムEROFSの紹介をしました
• 時間切れで、ファイルシステムの詳細までは紹介できませんで
したので、またそのうち紹介したいと思います
• 余談
•
Yoctoのリプロデューサブルビルドと組み合わせて使うと、差分の小さ
いイメージ作成が可能
•
Fontconfigが倒せない。。。


