既存のUbuntu 24.04システムを暗号化する方法
これは、コンピュータにUbuntuをインストールした後、データを保持しながらUbuntuを暗号化する方法を段階的に示すチュートリアルです。
Ubuntu 24.04をインストールする際に、ディスク全体を使用することを選択しなかった場合、暗号化を有効にするためのグラフィカルオプションはありません。ただし、その後に手動でUbuntuシステム全体を暗号化することは可能です。
ですので、Ubuntuシステムの毎回のブート時に、ユーザーがログインできる前に、ブートエントリ(/bootも暗号化されている場合)とディスクパーティションのロックを解除するためのパスワードを入力するように求められます。
ブートエントリとルートパーティションを解除するためにパスワードを2回求められます。
このチュートリアルは、デフォルトのGrubブートローダーを使用したUbuntu 24.04 LTSでテストされています。システムのセットアップには次が含まれます:
- セキュアブート: 無効。必要かどうかわからない。
/dev/sda3パーティションに分離された/boot/efi。- 単一の Ext4 /dev/sda4 パーティション上のすべての他のシステムファイル(/boot、/home、スワップ領域を含む)。
それはまた、/boot、/home、およびスワップを分離している場合にも機能するはずです。しかし、非Ext4ファイルシステムの場合、縮小プロセスは異なる場合があります。
注意: このチュートリアルの暗号化プロセスは、あなたのシステムを壊す可能性があります!!! 本番環境のマシンで実行するのはやめてください。復元方法を知っている場合を除いて。
ステップ1:準備
始める前に、必ずバックアップ、バックアップ、そしてバックアップを取ることをお勧めします!重要なデータのバックアップを取りましょう。誤った設定やハードウェアの干渉がシステムを破壊する可能性があります!
1. まず、Ubuntu 24.04を起動してログインします。そして、Ctrl+Alt+Tを押してターミナルウィンドウを開きます。開いたら、次のコマンドを実行します:
df -hこのコマンドは、ブートローダーがインストールされているルートパーティションのマウントポイントを/で特定し、/boot と /home のための分離されたパーティションがあればそれらを見つけるのに役立ちます。
私の場合(下のスクリーンショットを参照)、ルート用に/dev/sda4しか持っておらず、/boot/efiブートローダー用に/dev/sda3があります。NVMe SSDの場合、デバイス名は/dev/nvmeXnYpXのようになります(例:/dev/nvme0n1p3)。
後で使用するために、それらを書き留めるか(存在する場合は/home /bootを含む)覚えておく必要があります。
2. 次に、必要な cryptsetup パッケージをインストールするために、コマンドを実行します:
sudo apt install cryptsetup
また、ターミナルで以下のコマンドを実行してSELinuxが有効になっているか確認してください:
sudo apt install policycoreutils && sestatusステップ2:コンピュータに別のLinux OS(またはLiveUSB)を起動します
Ubuntuを暗号化するには、まずファイルシステムのアンマウントが必要です。つまり、暗号化プロセスを行うために別のLinux OSでコンピュータを起動する必要があります。
コンピュータにデュアルブートのLinuxシステムがインストールされている場合は、再起動してそこにアクセスしてください。そうでない場合は、Ubuntu、Mint、DebianなどのブータブルUSBインストーラーを作成し、USBからライブシステムをブートしてください。
ステップ3:Ubuntuシステムを暗号化する
ライブシステムにブートしたら、インストーラーウィザードを閉じてライブデスクトップに入ります。
次に、Ubuntu 24.04のルートパーティション、/boot/efi(存在する場合は分割された/homeや/boot)を特定します。これには、GNOMEディスクを起動するか(Linux、Ubuntu、その他のGNOMEを搭載したLinuxで利用可能)、マウントしてファイルマネージャーで確認します。
私の場合、“/dev/sda4”(ルート)と“/dev/sda3”(/boot/efi)です。以下のすべてのコマンドの中で、あなたのものに置き換えてください!
1. LUKSヘッダーのためにスペースを作るために縮小する
手動でマウントされている場合は、すべてのディスクパーティションのアンマウントを行ってください。それから、端末を開き(Ctrl+Alt+T)、次のコマンドを実行してください:
sudo e2fsck -f /dev/sda4このコマンドはUbuntuファイルシステムのチェックを強制します。これは縮小できるようになる前に必要です。/dev/sda4をあなたのUbuntuルートに置き換えてください。
次に、LUKSヘッダーのための必要なスペースを確保するために、Ubuntuファイルシステムを少し小さくします。
sudo resize2fs /dev/sda4 91G
/dev/sda4と91G(私の場合は92Gより少し小さい)を、「ステップ1:準備」で得た情報に従って置き換えてください。
2. Ubuntu パーティションを暗号化する
十分な空きスペース(最低32M)がある場合は、以下のコマンドを実行してUbuntuのルートファイルシステムを暗号化してください:
sudo cryptsetup reencrypt --encrypt --type luks2 --hash sha256 --pbkdf pbkdf2 --reduce-device-size 32M /dev/sda4また、/dev/sda4をあなたのUbuntuルートパーティションに置き換えてください。ここにコマンドオプションの説明があります:
--type luks2– Ubuntu 24.04ではデフォルトのためオプションです。古いUbuntuやGRUBのバージョンが2.06より古い他のLinuxではluks2がサポートされていません。GRUB 2.06には初期のサポートがありますが、制限があります。したがって、古いGRUBの場合は--type luks1を代わりに使用してください。--hash sha256– 使用するハッシュ関数を指定します。これはオプションでもあり、sha256がデフォルト値です。--pbkdf pbkdf2– 必須、なぜならGrubブートローダーは現在のところ、デフォルトのArgon2idモードをサポートしておらず、pbkdf2のみをサポートしているからです。
コマンドを実行した後、操作を確認するためにターミナルの出力にYESと入力してください。その後、パスワードを入力し、再度確認します(視覚的なフィードバックはありませんので、心の中で入力してください)。このパスワードは、Ubuntuシステムをブート時にロック解除するために使用されます。
注意:このコマンドは数分かかる場合があります!ノートパソコンの場合は、電源を接続し、途中で中断しないようにサスペンドを無効にしてください!
選択肢として、コマンドを使用してバックアップまたは他の用途のために別のパスワードを追加できます。
sudo cryptsetup luksAddKey --type luks2 --hash sha256 --pbkdf pbkdf2 /dev/sda4(テストされていません) /home のファイルパーティションを分離していて、それを暗号化したい場合は、最後のコマンドを再実行してスペースを確保し、cryptsetup reencrypt コマンドを通じて暗号化してください。
ステップ3. Grubブートローダーを設定し、Ubuntuにブート時に解除するよう指示する
暗号化後、Grubブートメニューエントリを再生成し、Ubuntuに毎回ブート時にルートをアンロックするように指示する必要があります。
このステップは、デュアルブートのLinux OSまたはUSBから起動したライブシステムのどちらでも行われます。
1. ルートファイルシステムのロックを解除する
まず、以下のコマンドを実行してロックを解除します(/dev/sda4は現在暗号化されたコンテナであり、ルートパーティションではありません):
sudo cryptsetup open /dev/sda4 sda4_cryptこのコマンドは、ロックを解除するためにパスワード(前のステップで設定したもの)を尋ね、その後ルートファイルシステムを /dev/mapper/sda4_crypt にマッピングします。sda4_crypt はお好きな名前に変更できますが、以下のすべてのコマンドでもそれを置き換える必要があります。
次に、それを最大化するようにサイズを変更します(前のステップで小さくしました):
sudo resize2fs /dev/mapper/sda4_cryptコマンドでは、最後のコマンドに応じて sda4_crypt を置き換えてください。
2. ファイルシステムにマウントしてchrootする
次に、私の場合は/dev/mapper/sda4_cryptにマッピングされているルートファイルシステムをマウントします。コマンドを実行してください:
sudo mount /dev/mapper/sda4_crypt /mntもし分離された /boot パーティション(例えば、/dev/sdaX)がある場合は、次のようにマウントします:
sudo mount /dev/sdaX /mnt/bootそして、/boot/efi(私の場合は/dev/sda3)を対応するディレクトリにマウントします:
sudo mount /dev/sda3 /mnt/boot/efiまた、バインドマウントされた擬似ファイルシステム:
sudo mount --rbind /proc /mnt/procsudo mount --rbind /sys /mnt/syssudo mount --rbint /dev /mnt/dev最後に、ルートファイルシステムにchrootしてください。そうすれば、リモートでログインしているのと同じように操作できます。
sudo chroot /mnt /bin/bashこのコマンドの後、ターミナルのプロンプトが 'root@ubuntu:/#' に変更されることに気づくでしょう。
3. GrubとCrypttabを設定する
ルートUUIDは、ルート(および/ホーム)システムパーティションを暗号化した後も変更されませんが、デバイス名は変更されました。私のケースでは、ルートはもはや/dev/sda4ではなく、現在は/dev/mapper/sda4_cryptです。
システムパーティションをブート時にUUIDの代わりにデバイス名(例:/dev/sdaX、/dev/nvme0nXpY)を使用するために「/etc/fstab」を編集したことがある場合、必要に応じてそれらを変更する必要があります。そうでない場合、そのファイルは変更せずにスキップしてください。
このchroot環境では、以下のコマンドを実行してgrub設定ファイルを編集します:
nano /etc/default/grub次に、Grubに毎回起動時に/bootをアンロックするように指示するために、新しい行GRUB_ENABLE_CRYPTODISK=yを追加する必要があります(暗号化されていない別のパーティションにマウントされている場合は必要ありません)。その後、Ctrl+Sを押して保存し、Ctrl+Xを押して終了します。
もしあなたのUbuntuにSELinuxが有効になっている場合(通常はデフォルトで無効です)、GRUB_CMDLINE_DEFAULTの値としてenforcing=0カーネルパラメータを追加してください。これは、権限の緩和モードで動作するように指示するものであり、さもなければUbuntuが起動しない可能性があります。その後、暗号化されたUbuntuシステムの最初の起動後にカーネルパラメータを削除できます。
次に、以下のコマンドで/etc/crypttabを編集します:
nano /etc/crypttab次に、暗号化されたコンテナ(UUDで指定された)をアンロックし、毎回ブート時に/dev/mapper/sda4_cryptにマップするために、以下の行を追加します。
sda4_crypt UUID=xxxxx-xxx-xxx-xxx-xxxx none luks,retries=3こちらが「/dev/sda4」のUUIDです。別のターミナルウィンドウ(Ctrl+Alt+T)でudevadm info -q all -n /dev/sda4 | grep by-uuidコマンドを実行して、blkidが不正確なものを出力する間に確認してください。
もしも分離された /home パーティションが暗号化されている場合は、ファイルに新しい行を追加してください。
sdaX_crypt UUID=xxxxx-xxx-xxx-xxx-xxxx none luks,retries=3この行では、別のターミナルでのudevadm info -q all -n /dev/sdaX |grep by-uuidコマンドの出力に従ってUUIDを置き換えてください。ただし、/dev/sdaXは/homeの場所に応じて置き換える必要があります。
4. 変更を適用する
また、chroot環境では、次のコマンドでgrubブートローダーを再インストールします:
grub-install --target=x86_64-efi --efi-directory=/boot/efi --boot-directory=/boot/efi/EFI/ubuntu --recheckここで、コマンドオプションが示しています:
- --target=x86_64-efi – amd64 (Intel/AMD) プラットフォーム用の GRUB をインストールします。この値は
arm-efi、arm64-efiなどにすることもでき、CPU アーキテクチャによって異なります。 - --efi-directory=/boot/efi - EFIパーティションを指定します。最後のステップで/boot/efiにマウントされています。
--boot-directory=/boot/efi/EFI/ubuntu– デフォルトでは、Ubuntuはブートディレクトリを/bootに設定します。ただし、私の場合はそれが暗号化されています。だから、代わりにこれを使用してください。- --recheck は既存のデバイスマップを削除するよう指示します.
最後に、次のコマンドでgrub設定を更新します:
grub-mkconfig -o /boot/efi/EFI/ubuntu/grub/grub.cfg注意: update-grub コマンドはここではもはや機能しません。なぜなら、このコマンドは自動的に /boot/grub/grub.cfg を生成するからです。最後のコマンドの --boot-directory= オプションは設定ファイルを暗号化されていない /boot/efi/EFI/ubuntu にインストールするように指示しました。
また、initramfsイメージを再生成するために、以下のコマンドを実行する必要があります。
update-initramfs -c -k allアンマウントして再起動する
すべてがうまくいったら、次のコマンドを実行してchroot環境を終了します:
exit次に、以下のコマンドを使用してアンマウントします。--rbind マウントの場合は、すべてのマウントの種類を再帰的に変更できるように --make-slave オプションを指定してマウントコマンドを再実行する必要があります。そうしないと、アンマウントを拒否し、ビジーであると言います。
sudo umount /mnt/boot/efisudo mount --make-slave /mnt/procsudo umount -R /mnt/procsudo mount --make-slave /mnt/syssudo umount -R /mnt/syssudo mount --make-slave /mnt/devsudo umount -R /mnt/devそして、暗号化されたパーティションを閉じ(ロック)します:
sudo cryptsetup close sda4_crypt最後に、次のコマンドを実行してコンピュータをシャットダウンします:
shutdown -P now怠惰な人のために、chrootを終了した後に直接シャットダウンコマンドを実行することができます。それは自動的にマウントを解除し、暗号化されたパーティションを閉じます。
さて、魔法を見るためにコンピュータを再起動してください(あるいはシステムが壊れるかもしれません😅。トラブルシューティングにはかなりの時間がかかります)。










