Linux サーバーでは、大規模パーティション (/dev/sdb1 で識別) を暗号化されたファイルシステム専用に指定しました。私はそれを使用しています
losetup /dev/loop0 /dev/sdb1
cryptsetup -c aes -h sha512 create crypto /dev/loop0
mount /dev/mapper/crypto /var/crypto/db/
また、パーティションをマウントして使用するための長いパスワードもあります。新しいカーネルパッケージをインストールすると、/usr/bin/os-prober が実行されます。私が知る限り、OSのインストールのために各パーティションをチェックします。明らかに/dev/sdb1では、ノイズだけが発生して失敗します(もちろん、パスワードがあり、dmcryptを使用しない限り)。
私のシステムログによると、次のようになります。
running /usr/lib/os-probes/50mounted-tests on /dev/sdb1
「dev dm-0、...のバッファI / Oエラー」を記録し、中断が検出され、ファイルシステムが再マウントされました。ログには、次のように/dev/sdb1でファイルシステムの検出に失敗した多くのメッセージが表示されます。
Aug 17 17:12:59 mibi202 kernel: [1903146.947192] EXT4-fs (sdb1): VFS: Can't find ext4 filesystem
squashfs: SQUASHFS error: Can't find a SQUASHFS superblock on sdb1
FAT-fs (sdb1): invalid media value (0xca)
明らかに、os-proberは暗号化されたデバイスで魔法を使用することはできず、何とか正常な機能を妨げています。
暗号化されたファイルシステムをアンマウントし、dmcryptデバイスとループを削除し、これらの操作を正しい順序で再起動すると、ファイルシステムに戻ります。
サーバーサービスの中断を引き起こすos-proberを防ぐ方法についてのアドバイスを歓迎します。ありがとうございます。
答え1
残念ながら、os-prober
これは非常に素朴で、いかなる種類の設定(ファイルまたはコマンドライン)も許可しません。しかし、LUKSを理解しています。
通常の cryptsetup の代わりに LUKS を使用すると、パーティションの解釈試行が停止します。一方、パーティションが開いている場合は、ループデバイスを見つけて理解しようとします。
内部/usr/lib/os-probes/50mounted-tests
テストは次のとおりです。
types="$(fs_type "$partition")" || types=NOT-DETECTED
# ...
elif [ -z "$types" ]; then
if type cryptsetup >/dev/null 2>&1 && \
cryptsetup luksDump "$partition" >/dev/null 2>&1; then
debug "$1 is a LUKS partition; skipping"
exit 0
fi
したがって、LUKSを使用する方が簡単なソリューションです。
ただし、実際にLUKSを使用したくない場合は、os-prober
暗号化されたパーティションをクラックしてスキャンfs_type
に含めることができます。確認は内部的に行われ、/usr/share/os-prober/common.sh
実際には非常に簡単です。
fs_type () {
if (export PATH="/lib/udev:$PATH"; type vol_id) >/dev/null 2>&1; then
PATH="/lib/udev:$PATH" vol_id --type "$1" 2>/dev/null
elif type blkid >/dev/null 2>&1; then
blkid -o value -s TYPE "$1" 2>/dev/null
else
return 0
fi
}
次のように分類できます。
fs_type () {
if [ "x$1" = "x/dev/sdb1" ]; then
return 0
elif (export PATH="/lib/udev:$PATH"; type vol_id) >/dev/null 2>&1; then
PATH="/lib/udev:$PATH" vol_id --type "$1" 2>/dev/null
elif type blkid >/dev/null 2>&1; then
blkid -o value -s TYPE "$1" 2>/dev/null
else
return 0
fi
}
os-prober
実際にはシェルスクリプトのコレクションにすぎません。