📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)
| (同じ利用者による、間の9版が非表示) | |||
| 7行目: | 7行目: | ||
== F2FSモジュールのみインストールする方法 (推奨) == | == F2FSモジュールのみインストールする方法 (推奨) == | ||
==== | ==== F2FSモジュールのソースコードのダウンロード ==== | ||
Linuxカーネルのソースコードをダウンロードする。<br> | |||
* パッケージ管理システムから、Linuxカーネルのソースコードをインストールする場合 | * パッケージ管理システムから、Linuxカーネルのソースコードをインストールする場合 | ||
*: <code>sudo zypper install kernel-source</code> | *: <code>sudo zypper install kernel-source</code> | ||
| 19行目: | 19行目: | ||
*: <code>cd linux-<バージョン></code> | *: <code>cd linux-<バージョン></code> | ||
<br> | <br> | ||
<u> | ==== F2FSモジュールのソースコードの修正 : SLE 15 SP4 / openSUSE Leap 15.4のみ ==== | ||
<u> | <u>SLE 15 SP4 / openSUSE Leap 15.4において、パッケージ管理システムからLinuxカーネル 5.14.21-150400.22のソースコードを使用する場合、</u><br> | ||
<u>F2FSのソースコードの一部にリグレッション(デグレード)が発生しているため、F2FSのソースコードを修正する必要がある。</u><br> | |||
sudo vi /usr/src/linux-5.14.21-150400.22/fs/f2fs/file.c | sudo vi /usr/src/linux-5.14.21-150400.22/fs/f2fs/file.c | ||
<br> | <br> | ||
| 33行目: | 34行目: | ||
1101行目 : filemap_invalidate_lock(inode->i_mapping) | 1101行目 : filemap_invalidate_lock(inode->i_mapping) | ||
<br> | <br> | ||
==== F2FSモジュールのインストール ==== | |||
既存のカーネルコンフィグ(/bootディレクトリ内にあるカーネルコンフィグ)を元に、新しいカーネルコンフィグを生成する。<br> | 既存のカーネルコンフィグ(/bootディレクトリ内にあるカーネルコンフィグ)を元に、新しいカーネルコンフィグを生成する。<br> | ||
<code>make olderconfig</code>コマンドは、可能な限り既存のカーネルコンフィグの設定を使用して、ビルドディレクトリ内に必要なファイルを生成する。<br> | <code>make olderconfig</code>コマンドは、可能な限り既存のカーネルコンフィグの設定を使用して、ビルドディレクトリ内に必要なファイルを生成する。<br> | ||
| 105行目: | 107行目: | ||
# __THIS FILE MAY BE MODIFIED__ | # __THIS FILE MAY BE MODIFIED__ | ||
<br> | <br> | ||
==== F2FSモジュールの読み込み (セキュアブートが無効の場合) ==== | ==== F2FSモジュールの読み込み (セキュアブートが無効の場合) ==== | ||
F2FSモジュールを読み込む。<br> | F2FSモジュールを読み込む。<br> | ||
| 121行目: | 124行目: | ||
vi F2FS.config | vi F2FS.config | ||
<br> | <br> | ||
<syntaxhighlight lang="ini"> | |||
# ~/MOK/F2FS/F2FS.configファイル | # ~/MOK/F2FS/F2FS.configファイル | ||
| 140行目: | 144行目: | ||
subjectKeyIdentifier=hash | subjectKeyIdentifier=hash | ||
authorityKeyIdentifier=keyid | authorityKeyIdentifier=keyid | ||
</syntaxhighlight> | |||
<br> | <br> | ||
キーペアを作成する。<br> | キーペアを作成する。<br> | ||
| 159行目: | 164行目: | ||
# XZ形式の場合 | # XZ形式の場合 | ||
cd /lib/modules/$(uname -r)/kernel/fs/f2fs/ | cd /lib/modules/$(uname -r)/kernel/fs/f2fs/ | ||
xz -f f2fs.ko | sudo xz -f f2fs.ko | ||
# Zstandard形式の場合 | # Zstandard形式の場合 | ||
cd /lib/modules/$(uname -r)/kernel/fs/f2fs/ | cd /lib/modules/$(uname -r)/kernel/fs/f2fs/ | ||
zstd --rm f2fs.ko | sudo zstd --rm f2fs.ko | ||
<br> | <br> | ||
F2FSモジュールを読み込む。<br> | F2FSモジュールを読み込む。<br> | ||
| 170行目: | 175行目: | ||
<br> | <br> | ||
F2FSモジュールが正常に読み込まれているかどうかを確認する。<br> | F2FSモジュールが正常に読み込まれているかどうかを確認する。<br> | ||
lsmod | grep f2fs | lsmod | grep f2fs | ||
# または | |||
sudo modinfo f2fs | |||
<br> | <br> | ||
F2FSモジュールが正しく署名されているかどうかを確認する。<br> | F2FSモジュールが正しく署名されているかどうかを確認する。<br> | ||
| 269行目: | 276行目: | ||
vi KernelModules.config | vi KernelModules.config | ||
<br> | <br> | ||
<syntaxhighlight lang="ini"> | |||
# ~/MOK/KernelModules/KernelModules.configファイル | # ~/MOK/KernelModules/KernelModules.configファイル | ||
| 288行目: | 296行目: | ||
subjectKeyIdentifier=hash | subjectKeyIdentifier=hash | ||
authorityKeyIdentifier=keyid | authorityKeyIdentifier=keyid | ||
</syntaxhighlight> | |||
<br> | <br> | ||
キーペアを作成する。<br> | キーペアを作成する。<br> | ||
| 315行目: | 324行目: | ||
X509FILE="/home/<ユーザ名>/MOK/KernelModules/KernelModules.der" | X509FILE="/home/<ユーザ名>/MOK/KernelModules/KernelModules.der" | ||
DIRECTORY="" | |||
if [ -d "/lib/modules/$(uname -r)/kernel" ]; then | |||
DIRECTORY=$(find /lib/modules/$(uname -r)/kernel -type f -iname "*.ko*") | |||
fi | |||
if [ -d "/lib/modules/$(uname -r)/misc" ]; then | |||
DIRECTORY="${DIRECTORY} $(find /lib/modules/$(uname -r)/misc -type f -iname "*.ko*")" | |||
fi | |||
if [ -d "/lib/modules/$(uname -r)/extra" ]; then | |||
DIRECTORY="${DIRECTORY} $(find /lib/modules/$(uname -r)/extra -type f -iname "*.ko*")" | |||
fi | |||
for module in $DIRECTORY | |||
do | do | ||
module_basename=$(echo ${module} | sed 's/\.[^\.]*$//') | module_basename=$(echo ${module} | sed 's/\.[^\.]*$//') | ||
| 322行目: | 345行目: | ||
if [[ "$module_suffix" == "xz" ]]; then | if [[ "$module_suffix" == "xz" ]]; then | ||
sudo unxz $module | sudo unxz $module | ||
echo | echo "${SIGNFILE} sha256 ${KEYFILE} ${X509FILE} ${module_basename}" | ||
sudo "${SIGNFILE}" sha256 "${KEYFILE}" "${X509FILE}" "${module_basename}" | sudo "${SIGNFILE}" sha256 "${KEYFILE}" "${X509FILE}" "${module_basename}" | ||
sudo xz -f ${module_basename} | sudo xz -f ${module_basename} | ||
elif [[ "$module_suffix" == "gz" ]]; then | elif [[ "$module_suffix" == "gz" ]]; then | ||
sudo gunzip $module | sudo gunzip $module | ||
echo "${SIGNFILE} sha256 ${KEYFILE} ${X509FILE} ${module_basename}" | |||
sudo "${SIGNFILE}" sha256 "${KEYFILE}" "${X509FILE}" "${module_basename}" | sudo "${SIGNFILE}" sha256 "${KEYFILE}" "${X509FILE}" "${module_basename}" | ||
sudo gzip -9f $module_basename | sudo gzip -9f $module_basename | ||
elif [[ "$module_suffix" == "zst" ]]; then | elif [[ "$module_suffix" == "zst" ]]; then | ||
sudo zstd -d --rm $module | sudo zstd -d --rm $module | ||
echo "${SIGNFILE} sha256 ${KEYFILE} ${X509FILE} ${module_basename}" | |||
sudo "${SIGNFILE}" sha256 "${KEYFILE}" "${X509FILE}" "${module_basename}" | sudo "${SIGNFILE}" sha256 "${KEYFILE}" "${X509FILE}" "${module_basename}" | ||
sudo zstd --rm "${module_basename}" | sudo zstd --rm "${module_basename}" | ||
else | else | ||
echo "${SIGNFILE} sha256 ${KEYFILE} ${X509FILE} ${module_basename}" | |||
sudo "${SIGNFILE}" sha256 "${KEYFILE}" "${X509FILE}" "${module_basename}" | sudo "${SIGNFILE}" sha256 "${KEYFILE}" "${X509FILE}" "${module_basename}" | ||
fi | fi | ||
| 341行目: | 367行目: | ||
全てのLinuxカーネルモジュールを読み込む。<br> | 全てのLinuxカーネルモジュールを読み込む。<br> | ||
sudo depmod -a $(uname -r) # モジュール依存リストを更新する | sudo depmod -a $(uname -r) # モジュール依存リストを更新する | ||
sudo modprobe - | sudo modprobe -v f2fs # Linuxカーネルモジュールを読み込む | ||
<br> | <br> | ||
F2FSモジュールが正常に読み込まれているかどうかを確認する。<br> | F2FSモジュールが正常に読み込まれているかどうかを確認する。<br> | ||
| 358行目: | 384行目: | ||
このキーで署名されたものはシステムから信頼されるため、セキュリティリスクとなる可能性があることに注意する。<br> | このキーで署名されたものはシステムから信頼されるため、セキュリティリスクとなる可能性があることに注意する。<br> | ||
<br> | <br> | ||
==== Linuxカーネルをアップデートした場合 ==== | ==== Linuxカーネルをアップデートした場合 ==== | ||
Linuxカーネルをアップデートした場合、F2FSモジュールが使用できなくなるため、再度、F2FSモジュールをインストールする必要がある。<br> | Linuxカーネルをアップデートした場合、F2FSモジュールが使用できなくなるため、再度、F2FSモジュールをインストールする必要がある。<br> | ||
| 365行目: | 392行目: | ||
<br> | <br> | ||
<u>ただし、セキュアブートが有効の場合は、上記の"[[インストール - F2FS#Linuxカーネルモジュールの読み込み (セキュアブートが有効の場合)|Linuxカーネルモジュールの読み込み (セキュアブートが有効の場合)]]"セクションの手順を実行する必要がある。</u><br> | <u>ただし、セキュアブートが有効の場合は、上記の"[[インストール - F2FS#Linuxカーネルモジュールの読み込み (セキュアブートが有効の場合)|Linuxカーネルモジュールの読み込み (セキュアブートが有効の場合)]]"セクションの手順を実行する必要がある。</u><br> | ||
<br><br> | |||
== DKMSの使用 == | |||
F2FSカーネルモジュールにおいて、DKMSを使用して自動的にビルドおよびインストールする。<br> | |||
<br> | |||
F2FSカーネルモジュールのソースコードをインストールする。<br> | |||
# SUSE | |||
sudo zypper install kernel-source | |||
<br> | |||
F2FSカーネルモジュールのDKMSの設定ファイルを作成する。<br> | |||
sudo mkdir -p /usr/src/f2fs-1.0 | |||
sudo vi /usr/src/f2fs/dkms.conf | |||
<br> | |||
# /usr/src/f2fs-1.0/dkms.confファイル | |||
PACKAGE_NAME="f2fs" | |||
PACKAGE_VERSION="1.0" | |||
CLEAN="make clean" | |||
MAKE="make" | |||
BUILT_MODULE_NAME[0]="f2fs" | |||
# /lib/modules/<カーネルバージョン>/kernel/fs/f2fsディレクトリにインストールする | |||
DEST_MODULE_LOCATION[0]="/kernel/fs/f2fs" | |||
# 特定のコンパイルフラグやオプションが必要な場合 | |||
# CONFIG_F2FS_FS=m : F2FSをモジュールとしてビルド | |||
# CONFIG_F2FS_STAT_FS=y : F2FSの統計情報サポートを有効化 | |||
# CONFIG_F2FS_FS_XATTR=y : 拡張属性のサポートを有効化 | |||
# CONFIG_F2FS_FS_POSIX_ACL=y : POSIX ACLのサポートを有効化 | |||
MAKE_ARGS="CONFIG_F2FS_FS=m CONFIG_F2FS_STAT_FS=y CONFIG_F2FS_FS_XATTR=y CONFIG_F2FS_FS_POSIX_ACL=y" | |||
AUTOINSTALL="yes" | |||
<br> | |||
F2FSカーネルモジュールのソースコードを、DKMSの設定ファイルと同階層のディレクトリにコピーする。<br> | |||
sudo cp -r /usr/src/linux-$(uname -r)/fs/f2fs /usr/src/f2fs-1.0 | |||
<br> | |||
DKMSを使用して、F2FSカーネルモジュールをビルドおよびインストールする。<br> | |||
sudo dkms add f2fs/1.0 または sudo dkms add -m f2fs -v 1.0 | |||
sudo dkms build f2fs/1.0 または sudo dkms build -m f2fs -v 1.0 | |||
sudo dkms install f2fs/1.0 または sudo dkms install -m f2fs -v 1.0 | |||
<br> | |||
モジュールがロードされていることを確認する。<br> | |||
lsmod | grep f2fs | |||
<br> | |||
これにより、f2fsカーネルモジュールがDKMSにより自動的にビルドおよびインストールされる。<br> | |||
Linuxカーネルがアップデートされた場合でも、DKMSが自動的にカーネルモジュールを再ビルドするため、手動でカーネルモジュールを再インストールする必要はない。<br> | |||
<br> | |||
ただし、カーネルモジュールのソースコードが更新された場合は、最新のソースコードをダウンロードして、該当するDKMSの設定ファイルがある同階層のディレクトリにコピーする必要がある。<br> | |||
<br><br> | <br><br> | ||
== F2FS Toolのインストール == | == F2FS Toolのインストール == | ||
==== パッケージ管理システムからインストール ==== | |||
sudo zypper install f2fs-tools | |||
<br> | |||
==== ソースコードからインストール ==== | |||
F2FS Toolsのビルドに必要な依存関係のライブラリをインストールする。<br> | |||
sudo zypper install libuuid-devel pkg-config autoconf libtool libselinux-devel | |||
<br> | |||
[https://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs-tools.git/ LinuxカーネルのF2FS ToolsのWebサイト]から、タグが"vX.Y.Z"のソースコードをダウンロードする。<br> | |||
または、以下のコマンドを実行して、ソースコードをダウンロードする。<br> | |||
git clone https://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs-tools.git -b master | |||
cd f2fs-tools | |||
<br> | |||
ダウンロードしたファイルを解凍する。<br> | |||
tar xf f2fs-tools-<バージョン>.tar.gz | |||
cd f2fs-tools-<バージョン> | |||
<br> | |||
Configureスクリプトを作成する。 | |||
./autogen.sh | |||
<br> | |||
F2FS Toolsをビルドおよびインストールする。<br> | |||
この時、ビルドディレクトリは作成しない。(作成した場合、ビルドが失敗する)<br> | |||
./configure --prefix=<F2FS Toolsのインストールディレクトリ> | |||
make -j $(nproc) | |||
make install | |||
<br> | <br> | ||
F2FS Toolsの使用するコマンドを以下に示す。<br> | F2FS Toolsの使用するコマンドを以下に示す。<br> | ||
| 392行目: | 473行目: | ||
sudo mkfs.f2fs -l <ラベル名> /dev/sd<span style="color:#C00000">X</span> | sudo mkfs.f2fs -l <ラベル名> /dev/sd<span style="color:#C00000">X</span> | ||
<br><br> | <br><br> | ||
__FORCETOC__ | __FORCETOC__ | ||
[[カテゴリ:SUSE]] | [[カテゴリ:SUSE]] | ||