カーネルのデフォルトのマウントオプションをオーバーライドするには?

カーネルのデフォルトのマウントオプションをオーバーライドするには?

私はファイル内にファイルシステムを作成し、それをループバックデバイスとしてマウントするプログラムに取り組んでいます。このプログラムの目的は、ルートファイルシステムの複製を作成することであり、ブロックデバイスのUUIDをコピーすることも非常に賢いと思います。しかし、XFSを使用しているため、UUID値が重複してループバックインストールが失敗します。

手動インストールは使用できますが、mount -o nouuidプログラムはデバイスを再作成し、独自のインストールを試みます。 fstabを使用しないため、そこでデフォルトのマウントオプションを設定できません。

nouuidマウントを実行するときにデフォルトオプションが何であるかをカーネルに通知し、そのオプションを明示的に指定せずに、呼び出されたコマンドでもそのmountオプションを使用するようにオプションを設定する方法はありますか?

ベストアンサー1

すべてのファイルシステムに適用される共通オプションの場合コアmount組み込みデフォルト値を持たないブールフラグ配列としてシステムコールに渡されるマウントオプションを適用します。

xfsの場合、カーネル解析オプション組み込みデフォルト(すべてのビットは0です。ブールフラグの場合)。

mountしたがって、正しいオプションがシステムコールに渡されるように準備する必要があります。プログラムがこのmountプログラムを呼び出す場合は、ラッパーを作成してオプションを動的に変更できます。

#!/bin/sh
if [ "$(ps -p $PPID -o comm=)" = "annoying-program" ]; then
  case "$* " in
    *" -t xfs "*) set -- -o nouuid "$@";;
  esac
fi
exec /sbin/mount "$@"

このスクリプトをmountPATHの前に置くか、プログラムにハードコーディングされたパスがある場合は、mount一時的にmount別の場所に移動してその場所にスクリプトを配置します。

プログラムがmountシステムコールを直接呼び出す場合は、次のことができます。カバレッジ経由で電話LD_PRELOAD

おすすめ記事