OSのインストール時に暗号化がありませんでした。今すぐフォーマットせずにデータを失うことなく暗号化する方法はありますか?暗号化方法に関するいくつかのガイドを読みましたが、すべてのガイドでデータが失われる可能性があるため、すべてのデータをバックアップする必要があると述べました。さて、データを失うことなくすべてを暗号化する方法はありますか?
ベストアンサー1
はい、方法があります。 LUKScryptsetup
ユーティリティには次のものが含まれます。再暗号化コマンドまた、これを使用して、既存のファイルシステムを破壊することなく、既存の暗号化されていないルートパーティションを暗号化することもできます。
つまり、そのような変換を実行する前にデータをバックアップする必要があります。もちろん、ハードウェア障害などの可能性があるため、常に定期的なバックアップを実行する必要があります。したがって、これは不要なアドバイスです。
既存のルートファイルシステムを暗号化されていない状態から暗号化された状態に切り替えるには、次のようないくつかの手順が必要です。
- サポート
- cryptsetup パッケージがインストールされていることを確認してください。
- ルートファイルシステムに空き容量があることを確認してください(安全のために少なくとも100MiB)
- ルートパーティションがあるパーティションを識別します。たとえば、を使用して
df /
ファイルシステムのUUIDを見つけ、blkid
どこかに保存します。 - ルートファイルシステムをマウント解除できるリカバリシステムから起動します。ゲミール)
- ルートパーティションの検索(
blkid
UUIDの使用と検索など) - ext4の場合はファイルシステムチェックを実行します。
e2fsck -f /dev/sdXY
- LUKSヘッダー用のスペースを確保するためにファイルシステムを縮小します。たとえば、ext4ファイルシステムの場合:(
resize2fs /dev/sdXY $smallersizeinGiB_G
少なくとも32MiB縮小する必要があります) - 暗号化してください:
cryptsetup reencrypt --encrypt /dev/sdXY --reduce-device-size 32M
- 開いてみてください:
cryptsetup open /dev/sdXY root
- ファイルシステムを最大サイズに拡張します。
resize2fs /dev/mapper/root
- 次の場所にインストールしてください。
/mnt/root
- ブートファイルシステムがマウントされ、
/mnt/root
擬似ファイルシステムがバインドマウントされます。/dev
/sys
/proc
/mnt/root
- 次の手順でシステムにChrootをインストールします。
chroot /mnt/root /bin/bash
/etc/default/grub
たとえば、ディストリビューションでdracutを使用している場合(おそらく)、追加する必要があるカーネルパラメータまたはそれに対応するパラメータを更新しますrd.luks.uuid=$UUID_OF_LUKS_DEVICE
(参照、このUUIDはルートファイルシステムとは異なります)。 selinuxがインストールされている場合は、追加(その後削除)するblkid
必要があります。enforcing=0
それ)すべての編集のため- ディストリビューションで selinux が有効になっている場合は、ラベルの上書きを設定します。
touch /mnt/root/.autorelabel
- グラップ構成を再生成します。
grub2-mkconfig -o /boot/.../grub...cfg
- initramfsを再構築します(cryptsetupサポートが含まれていることを確認するため):
dracut -f /boot/initramfs....img kernelversion
- chroot 終了
- すべて削除
cryptsetup close root
- 再起動
ご覧のとおり、これは多くのステップです。つまり、エラーが発生する可能性があります。したがって、設定ファイルと$HOME
。
そして、2020年現在の私の経験では比較的遅いため、単にcryptsetup reencrypt
デバイスを復元してバックアップを復元する方が速いかもしれません。cryptsetup luksFormat
XFSファイルシステムがある場合、2020年以降、XFSはこの機能をサポートしていないため縮小できません。したがって、fstransform
縮小する前に縮小する必要があります。変換されたファイルシステムでは、別のUUIDを処理する必要があります。これは、新しいファイルシステムのUUIDを古いファイルシステムのUUIDに変更することを意味します。または更新されるファイルシステムのUUID /mnt/root/etc/fstab
。
dracutベースのディストリビューションの場合は作成する必要はなく、/etc/crypttab
他のディストリビューションではこれを要求できます(initramfsの更新前に含める必要があるかもしれません)。