インストール - F2FS

提供: MochiuWiki : SUSE, EC, PCB
📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)

概要

SUSEにおいて、古いファイルシステムの多くは、セキュリティのためブラックリストとして設定している。
F2FS等のファイルシステムを使用するには、SUSE向けのLinuxカーネルをユーザ自身でコンパイルする必要がある。

ここでは、Linuxカーネルをコンパイルして、Linuxカーネルモジュールをインストールする手順を記載する。


F2FSモジュールのみインストールする方法 (推奨)

Linuxカーネルのソースコードをダウンロード、または、インストールする。

  • パッケージ管理システムから、Linuxカーネルのソースコードをインストールする場合
    sudo zypper install kernel-source

  • Linuxカーネルの公式webサイトから、Linuxカーネルのソースコードをダウンロードする場合
    Linuxカーネルの公式webサイトまたはGithubにアクセスして、対応するバージョンのLinuxカーネルのソースコードをダウンロードする。
    あるいは、Linuxカーネルの公式webサイトにあるGitから、対応するバージョンのLinuxカーネルをダウンロードする。
    ダウンロードしたファイルを解凍する。
    tar xf linux-<バージョン>.tar.gz
    cd linux-<バージョン>


SUSE15.4かつパッケージ管理システムからLinuxカーネル(5.14.21-150400.22)のソースコードを取得した場合、
F2FSのソースコードの一部にバグが存在するため、以下に示すようにソースコードを修正する必要がある。

sudo vi /usr/src/linux-5.14.21-150400.22/fs/f2fs/file.c


# /usr/src/linux-5.14.21-150400.22/fs/f2fs/file.cファイル

# 修正前
1093行目 : filemap_invalidate_lock(mapping)
1101行目 : filemap_invalidate_lock(mapping)

# 修正後
1093行目 : filemap_invalidate_lock(inode->i_mapping)
1101行目 : filemap_invalidate_lock(inode->i_mapping)


既存のカーネルコンフィグ(/bootディレクトリ内にあるカーネルコンフィグ)を元に、新しいカーネルコンフィグを生成する。
make olderconfigコマンドは、可能な限り既存のカーネルコンフィグの設定を使用して、ビルドディレクトリ内に必要なファイルを生成する。

sudo make -j $(nproc) olddefconfig O=.


F2FSのビルド設定を行うため、make menuconfigコマンドを実行する。

make menuconfig -j $(nproc)
# または
sudo make menuconfig -j $(nproc)


TUI画面が起動するので、[File systems] - [F2FS filesystem support]に移動して、[M]キーを押下する。
TUI画面下にある[Save]を選択して、上記の設定を保存する。

セキュアブートが無効の場合は、F2FSモジュールを圧縮の設定を行ってインストールしてもよい。
Linuxカーネルモジュールを圧縮する場合、Linuxカーネルのビルドディレクトリの.configファイルを編集する。

sudo vi /usr/src/linux-<カーネルのバージョン>/.config


  • SUSE 15.4の場合
    以下の設定を追記する。
    # /usr/src/linux-<カーネルのバージョン>/.configファイル
    # ...略
    CONFIG_PSTORE_ZSTD_COMPRESS_DEFAULT=y # 新しく追加する
    CONFIG_MODULE_COMPRESS=y # 新しく追加する
    # CONFIG_MODULE_COMPRESS_NONE=n # コメントアウトする
    CONFIG_MODULE_COMPRESS_ZSTD=y # 新しく追加する
    # ...略

  • SUSE 15.3以前の場合
    "MODULE_COMPRESS"を検索して、"MODULE_COMPRESS"の直下に、以下の設定を追記する。
    # /usr/src/linux-<カーネルのバージョン>/.configファイル
    # ...略
    CONFIG_MODULE_COMPRESS=y
    CONFIG_MODULE_COMPRESS_XZ=y
    # ...略


Linuxカーネルから、F2FSのみをビルドする。

  • INSTALL_MOD_DIRオプション
    一般的に、カーネルモジュールは、/lib/modules/$(uname -r)/extraディレクトリにインストールされる。
    任意のディレクトリに配置したい場合、INSTALL_MOD_DIRオプションを付加して、extraディレクトリに代わるパスを指定する。
    例えば、INSTALL_MOD_DIR=fs/f2fsと指定する場合、インストールディレクトリは/lib/modules/$(uname -r)/fs/f2fsディレクトリとなる。
sudo make scripts prepare modules_prepare -j $(nproc)
sudo make -C . M=fs/f2fs -j $(nproc)

sudo mkdir -p /lib/modules/$(uname -r)/kernel/fs/f2fs/
sudo cp fs/f2fs/f2fs.ko  /lib/modules/$(uname -r)/kernel/fs/f2fs/

# または

sudo make prepare -j $(nproc)
sudo make modules_prepare -j $(nproc)
sudo make M=fs/f2fs -j $(nproc)
sudo make modules M=fs/f2fs -j $(nproc)
sudo make modules_install M=fs/f2fs INSTALL_MOD_DIR=kernel/fs/f2fs -j $(nproc)


SUSE 15.3以前の初期設定では、F2FSモジュールはブラックリストに入っている。
F2FSモジュールのブラックリストを解除するため、/etc/modprobe.d/60-blacklist_fs-f2fs.confファイルを編集する。

# SUSE 15.3以前の場合のみ
sudo vi /etc/modprobe.d/60-blacklist_fs-f2fs.conf


# /etc/modprobe.d/60-blacklist_fs-f2fs.confファイル


# 編集前
blacklist f2fs
__THIS FILE MAY BE MODIFIED__

# 編集後
# blacklist f2fs
# __THIS FILE MAY BE MODIFIED__


F2FSモジュールをデプロイする。

sudo depmod -a $(uname -r)


PCを再起動して、F2FSファイルシステムが正常にマウントできるかどうか確認する。

また、F2FSモジュールが正常に読み込まれているかどうかを確認するには、以下のコマンドを実行する。

sudo modinfo f2fs


Linuxカーネルモジュールのインストール後は、Linuxカーネルのビルドファイルを削除する。(ファイル容量が膨大なため)

sudo make clean -j $(nproc)      # .configファイルを残す
または
sudo make distclean -j $(nproc)  # .configファイル等の設定ファイルを全て削除する



カーネルモジュール全体をインストールする方法

Linuxカーネルをビルドするために必要なライブラリをインストールする。

sudo zypper install kernel-source


既存のカーネルコンフィグ(/bootディレクトリ内にあるカーネルコンフィグ)を元に、新しいカーネルコンフィグを生成する。
make olderconfigコマンドは、可能な限り既存のカーネルコンフィグの設定を使用して、ビルドディレクトリ内に必要なファイルを生成する。

cd /usr/src/linux-<カーネルのバージョン>
make -j $(nproc) olddefconfig O=.


F2FSのビルドを有効にするため、Linuxカーネルのビルド設定を編集する。
TUI画面が起動するので、[File systems] - [F2FS filesystem support]に移動して、[M]キーを押下する。
TUI画面下にある[Save]を選択して、上記の設定を保存する。

sudo make menuconfig -j $(nproc)


カーネルモジュールは、SUSE15.4の場合はZstandard形式、SUSE15.3以前の場合はXZ形式に圧縮されている。
圧縮を有効にするには、.configファイルにMODULE_COMPRESS_GZIP=yオプションまたはMODULE_COMPRESS_XZ=yオプションを追記する必要がある。
(この設定は必須ではないが、SUSEの標準では、カーネルモジュールはXZ形式に圧縮されているため)

セキュアブートが無効の場合は、F2FSモジュールを圧縮の設定を行ってインストールしてもよい。
Linuxカーネルモジュールを圧縮する場合、Linuxカーネルのビルドディレクトリの.configファイルを編集する。

sudo vi /usr/src/linux-<カーネルのバージョン>/.config


  • SUSE 15.4の場合
    以下の設定を追記する。
    # /usr/src/linux-<カーネルのバージョン>/.configファイル
    # ...略
    CONFIG_PSTORE_ZSTD_COMPRESS_DEFAULT=y # 新しく追加する
    CONFIG_MODULE_COMPRESS=y # 新しく追加する
    # CONFIG_MODULE_COMPRESS_NONE=n # コメントアウトする
    CONFIG_MODULE_COMPRESS_ZSTD=y # 新しく追加する
    # ...略

  • SUSE 15.0 - SUSE 15.3
    "MODULE_COMPRESS"を検索して、"MODULE_COMPRESS"の直下に、以下の設定を追記する。
    # /usr/src/linux-<カーネルのバージョン>/.configファイル
    # ...略
    CONFIG_MODULE_COMPRESS=y
    CONFIG_MODULE_COMPRESS_XZ=y
    # ...略


次に、Linuxカーネルをコンパイルする。

sudo make -j $(nproc)


Linuxカーネルモジュールのみをインストールする。
インストールディレクトリは、/lib/modules/<カーネルのバージョン>-defaultディレクトリである。

sudo make modules_install


最後に、/etc/modprobe.dディレクトリにある60-blacklist_fs-f2fs.confファイルを、以下のように編集する。

sudo vi /etc/modprobe.d/60-blacklist_fs-f2fs.conf


# /etc/modprobe.d/60-blacklist_fs-f2fs.confファイル

# 編集前
blacklist f2fs
__THIS FILE MAY BE MODIFIED__

# 編集後
# blacklist f2fs
# __THIS FILE MAY BE MODIFIED__


PCを再起動して、F2FSファイルシステムが正常にマウントできるかどうか確認する。

※注意 1
Linuxカーネルをアップデートした場合は自動的にF2FSモジュールが削除されるため、再度、F2FSモジュールをインストールする必要がある。
もし、既にF2FSモジュールのバックアップが存在する場合、f2fs.ko.xzファイルを以下のディレクトリにコピーして、モジュール群をデプロイすることもできる。

# F2FSモジュールのコピー
sudo mkdir /lib/modules/$(uname -r)/kernel/fs/f2fs/
sudo cp f2fs.ko.xz /lib/modules/$(uname -r)/kernel/fs/f2fs/

# モジュール群のデプロイ
sudo depmod -a $(uname -r)


※注意 2
もし、VMware WorkStationをインストールしている場合は、併せて、Linuxカーネルヘッダもインストールする必要がある。

sudo make headers_install


Linuxカーネルモジュールのインストール後は、以下のコマンドを実行することを推奨する。(ファイル容量が膨大なため)

sudo make clean -j $(nproc)      # .configファイルを残す
または
sudo make distclean -j $(nproc)  # .configファイル等の設定ファイルを全て削除する



F2FS Toolのインストール

  • パッケージ管理システムからインストール
    1. sudo zypper install f2fs-tools

  • ソースコードからインストール
    1. F2FS Toolsのビルドに必要な依存関係のライブラリをインストールする。
      sudo zypper install libuuid-devel pkg-config autoconf libtool libselinux-devel
    2. LinuxカーネルのF2FS ToolsのWebサイトから、タグが"vX.Y.Z"のソースコードをダウンロードする。
      または、以下のコマンドを実行して、ソースコードをダウンロードする。
      git clone https://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs-tools.git -b master
      cd f2fs-tools
    3. ダウンロードしたファイルを解凍する必要があれば行う。
      tar xf f2fs-tools-1.14.0.tar.gz
      cd f2fs-tools-1.14.0
    4. Configureスクリプトを作成する。
      ./autogen.sh
    5. F2FS Toolsをビルドおよびインストールする。
      この時、ビルドディレクトリは作成しない。(作成した場合、ビルドが失敗する)
      ./configure --prefix=<F2FS Toolsのインストールディレクトリ>
      make -j $(nproc)
      make install


F2FS Toolsの使用するコマンドを以下に示す。

mkfs.f2fs -l <ラベル名> /dev/sdX
# または
sudo mkfs.f2fs -l <ラベル名> /dev/sdX