🔐

LUKS暗号化ボリュームをGUIでリサイズする

2024/05/11に公開

Ubuntu 22.04LTS のインストーラはスワップ・パーティションのサイズを1GB程度しか確保しません。

これはハイバーネーションをしようとすると問題になります。Linuxでのハイバーネーション(休止)先はスワップ・領域ですので、1GBは全く足りないのです。したがってスワップ・パーティションをリサイズしなければなりません。ところが、インストール時に暗号化するとここで難儀することになります。UbuntuにはLUKS暗号化したLVMボリュームをリサイズするGUIアプリが無いのです。

そこで、KubuntuのインストールDVDを使ってUbuntuのLUKS暗号化ボリュームをGUIでリサイズする方法を説明します。Kubuntu利用者には当たり前のことですが、Ubuntu利用者にはあまり知られていないようです。

なお、

「Ubuntu 22.04LTSのスワップ領域はスワップ・ファイルである」

というのが一般の認識のようですが、私の手元ではいつもスワップ・ボリュームになっています。

環境と必要なもの

  • Ubuntu 22.04 LTS システム:インストーラ(ubiquity)によってディスク暗号化している
  • Kubuntu 22.04 LTSのインストール・ディスク

作業の実際

コンピュータを起動した状態でパーティションを変更するのは無理ですので、KubuntuインストールDVDをレスキュー・ディスクとして使います。私はHyper-Vで稼働しているUbuntuで実験したので、当該VMをKubuntuのISOイメージから起動しました。

KubuntuのインストールDVD(あるいはISOイメージ)から起動したら、konsoleを開いてlsblkコマンドでブロック・デバイスの一覧を見ます。すると、SSDらしきデバイスが表示されます。私のシステムはUSB SSDにインストールしてあり、下の図ではそれがsda として表示されています。sr0とあるのはKubuntuのDVDです。

sdaの下にパーティションがいくつかありますが、このうちsda3が232.9GB中230.7GBも使用しています。これが暗号化されたパーティションだと見当をつけることができます。そこでcryptsetupコマンドで暗号を解除します。

sudo cryptsetup luksOpen /dev/sda3 sda3

/dev/sda3のところは自分のシステムのディスクに合わせます。その後ろのsda3は適当な名前でもかまいませんが、ディスク名と同じにするのが無難でしょう。

cryptsetupはディスクの暗号を解除するためにユーザーに入力を求めます。この暗号はUbuntuのインストール時に指定したディスク暗号化パスフレーズです。

cryptsetupがエラーメッセージ無しに実行できたら、もう一度lsblkコマンドを実行します。すると、暗号化されていると見当をつけていたパーティションが復号され、内部にvgubuntu-rootとvgubuntu-swap-1の二つのパーティションが現れます(下図)。

次にGUIメニューからKDE Partition Managerを起動します。

KDE Partition Managerの左側にはSSDやHDDのデバイス一覧が表示されます。一番上のSSDを選ぶと右側に詳細が表示されます。このデバイスは/dev/sdaとしてマウントされており、dev/sda3は暗号化パーティションであり、vgubuntuと名付けられていることがわかります。これは上での作業結果と整合しています。

次に左側のデバイスからvgubuntuを選ぶと、先ほどの復号で現れたrootとswap_1が右側に現れます。これらはパーティションであり、右クリックして現れるメニューからResize/Moveすることができます。

リサイズの方法は簡単なので割愛します。ハイバーネーションを目的としてスワップ・パーティションのサイズ変更する場合は、サイズを実メモリサイズ以上にしてください。今時はSSDも大きいですし、細かい数字が面倒ならば実メモリの2, 3割増しくらいにしておけばいいでしょう。

Discussion