コンテナのgpt / mbrパーティションテーブルを使用してLUKSコンテナに複数のパーティションを作成する方法は?

コンテナのgpt / mbrパーティションテーブルを使用してLUKSコンテナに複数のパーティションを作成する方法は?

単一のLUKSまたはcryptsetupコンテナに複数のパーティションを持つことはできますか?それでは、どうすればいいですか?

ベストアンサー1

オンラインでこの設定を説明する内容が見つかりませんでしたが、正常に機能していることがわかりました。いくつかの利点は、パスワードを一度入力するだけでパーティションのサイズを変更できるツールは、暗号化層を知らなくても機能することです。ただし、パスワードを一度だけ入力する必要がある他の解決策もあり、gnomeパーティションエディタには暗号化されたパーティションを移動/サイズ変更する機能もあるので推奨されません。また、これを行う人が誰もいないようで、オンラインで助けを得る方法は多くありません。

とにかくこれを行うには、次の手順を実行します。

  • LUKSボリュームを作成し、必要な方法でマウントします。ボリューム名を指定するcryptvolumeと表示されます/dev/mapper/cryptvolume
  • GPartedを使用してボリュームを開く:gparted /dev/mapper/cryptvolume デバイスの選択>パーティションテーブルの作成(またはコマンドラインツールを使用したパーティションテーブルの作成)これで、任意の方法でGPartedからパーティションを作成できるようになりました。
  • 起動時にボリュームが自動的にマウントされるようにするには、/etc/crypttabに行を作成します。/etc/fstabオンラインでこれを行う方法の説明があるかもしれませんので、ここでは説明しません。

原則として、これはマルチパーティションLUKSコンテナが機能するのに十分である必要があり、Ubuntu 18.04ではこれが可能です。 systemdは暗号化されたパーティションをマウントできないため、再起動を除いてエラーが発生します。欠けているのは、暗号化されたボリュームが復号化された後にパーティションテーブルを再取得するようにカーネルに指示することがないことです。これを行うコマンドはですpartprobe。 systemd システムが正しい時刻に partprobe を実行するようにシステムに通知するには、次のファイルを/etc/systemd/system/partprobe.service.

cryptdisk1.mountシステムに適したマウントポイントと/dev/mapper/cryptdisk復号化されたLUKSデバイスのパスに置き換えます。

[Unit]
Description=partprobe after cryptsetup
# By default services depend on partitions being mounted. Leaving this out leads to cyclic dependencies.
DefaultDependencies=no
# We don't need to Requires=cryptsetup.target, as cryptsetup.target is always present
After=cryptsetup.target
# The mount target is named after the mount path.
# Run `systemctl list-dependencies local-fs.target` to list mount targets.
Before=cryptdisk1.mount

[Service]
Type=oneshot
# You don't have to specify the path to the decrypted device, but doing so will speed up the boot a bit
ExecStart=/sbin/partprobe /dev/mapper/cryptdisk

[Install]
# Required by local-fs.target or by all the partitions in the LUKS container to be more specific 
RequiredBy=cryptdisk1.mount

sudo systemctl enable partprobe.service有効にするには、ファイルを作成して実行してください。

これはGPTパーティションを持つUbuntu 18.04でテストされました。パスはシステムによって異なる場合があります。システム以外のシステムでは、パーティションをマウントする前にpartprobeを実行する別の方法を見つける必要があります。

おすすめ記事