web-dev-qa-db-ja.com

LUKSパーティションを左に移動し、サイズを変更します

LVMボリュームマネージャーに含まれていないLUKS暗号化パーティションがあります。ハードドライブの最後にあり、サイズは250 GBですが、さらに50GBを追加したいと思います。

私は通常、そのような操作にGPartedを使用しますが、LUKSパーティションでは、移動すらできず、何もできません。

データを失うことなくこれを行うにはどうすればよいですか? (私はそれをバックアップする他の場所がありません)

これは私の(GUID)パーティションテーブルです:

GPT fdisk (gdisk) version 0.8.8

Partition table scan:
  MBR: protective
  BSD: not present
  APM: not present
  GPT: present

Found valid GPT with protective MBR; using GPT.
Disk /dev/sda: 976773168 sectors, 465.8 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): D630E573-66C0-4902-A4A2-A9D56AE54544
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 976773134
Partitions will be aligned on 2048-sector boundaries
Total free space is 262922206 sectors (125.4 GiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048          411647   200.0 MiB   EF00  
   2          411648        63326207   30.0 GiB    8300  Linux filesystem
   3       189155328       273041407   40.0 GiB    AF00  
   4       273041408       304498687   15.0 GiB    8300  
   5       336732160       337141759   200.0 MiB   0700  
   6       337141760       347627519   5.0 GiB     8200  
   8       452485120       976773134   250.0 GiB   8300  Linux filesystem

これはGPartedでどのように見えるかです:

enter image description here

ご覧のとおり、sda6とsda8の間の50GBをsda8に追加したいと思います。

/ dev/sda8を後方に移動して、暗号化されたボリュームとその中のファイルシステムを拡張できるようにするのを手伝ってもらえますか?

3
Depau

これは実際には思ったより難しいです。その理由は、ロックされている場合、LUKSパーティションは、暗号化を解除するために、パーティションテーブルで参照されているディスク上の非常に特定の場所を参照する必要があるためです。その場所はLUKSパーティションの左端にあり、暗号化するファイルシステムの開始の数バイト前だと思います。 LUKSファイルシステムは、LUKSパーティションが暗号化されていない場合にのみ拡張できます。したがって、左に展開すると多くの問題が発生する可能性があるため、左に展開するよりも右に展開する方が簡単であることがわかります。

KDE Partition Manager 3.3.1ブータブルUSBを使用して、KDE Neonでこれを行うことができました。ただし、バージョンKDE Partition Managerより前に導入された2.2.0のバグに遭遇したことに注意してください。私のセットアップは、拡張(論理)パーティションの前にある暗号化されたLUKSパーティションで、拡張パーティションの前のハードディスクに40GBの空き領域がありました。拡張パーティションを左に移動してから、LUKSパーティションを左に拡張パーティションの前に移動し、次にLUKSパーティションの暗号化を解除し、LUKSパーティションを右に展開する必要がありました。新しいデータを含め、最後にLUKSパーティションを再度暗号化します。 KDE Partition Managerの初期バージョン(1.xからapt-getで取得したUbuntu 16.04 LTS)は、左側のパーティションを拡張できましたが、その変更を受け入れることに不安を感じていました。 KDE Partition Managerは特にLUKSをサポートしていなかったため、GRUBがパーティションを見つけて、再起動後にロックを解除できるかどうかは完全にはわかりませんでした。そこで、KDE Partition Manager 2.2.0ブート可能USBでUbuntu 16.04 LTSをコンパイルしようとしましたが、アプリケーションは、バージョン1.xと同じ方法で拡張パーティションを物理的に左にドラッグできませんでした。そのため、起動可能なUSBにUbuntu 18.04 LTSデイリービルドをロードし、そのデバイスでKDE Partition Manager 3.3.1を(KDE Core 3.3.0とともに)コンパイルしました。同じ問題。しかし、どちらの場合も、Makeファイルを直接編集して回避しなければならないコンパイルの問題がいくつかありました。その理由は、ネイティブKDEライブラリを使用するUbuntuのフレーバーではなくUbuntuでコンパイルしていたためです。そこで、起動可能なUSBにNeonをインストールし、ソフトウェアダウンローダーを介して直接ダウンロードしてKDE Partition Manager 3.3.1をインストールしましたが、同じバグが再び発生しました。拡張ボリュームを左に移動できませんでした。これで、gpartedはこれを問題なく実行できますが、LUKSはサポートされていません。それで私は信仰を飛躍させ、次のことをしました。

  1. ハードディスク全体をバックアップしました。
  2. Sudo apt-get install gparted on KDE Neon
  3. gpartedを使用して拡張パーティションを40GB左に移動し、変更を保存しました。 (最初にスワップスペースをオフにする必要があったと思います。)これにより、拡張パーティション内のLUKSボリュームの左側に40GBの空きスペースが作成されました。次に、gpartedを終了しました。これに対する私の主な懸念は、gpartedがLUKSをサポートしていないため、位置合わせの理由でLUKSボリュームの前面が移動し、実際に開くことができなくなるのではないかと心配していました。そのため、編集を行う前にLUKSパーティションが開始された正確なディスクセクターを注意深くメモし、それらのメモを使用する必要はありませんでした。
  4. KDE Partition Manager 3.3.1で、(暗号化された)LUKSボリュームを左に移動しました。 LUKSボリュームを右クリックし、Resize/Moveを選択すると、GUIのアイコンを左にドラッグするだけだと思います。 LUKSパーティションは移動の前後で赤くなり、常にロックされていることを示しているため、これを正しく行うことができます(したがって、パーティションテーブルは基本的にディスク上のスポットの新しい場所を記録していますLUKSは先に進み、ユーザーがログインしたときに暗号化を解除します)。それから私はApply changesをクリックして待ちました。
  5. KDE Partition Manager 3.3.1で、LUKSボリュームを右クリックし、Unencrypt(おそらくopen)を選択して、パスワードを入力しました。次に、同じパーティションを右クリックし、Resize/Move...をクリックしました。次に、パーティションの右端を右にドラッグして、40GBの空き領域を囲みました。次に、もう一度Apply changesをクリックしました。
  6. ロック解除されたLUKSパーティションを右クリックし、再度暗号化しました。アイコンが水色から赤に戻りました。
  7. スワップスペースをオンに戻しました(Linuxスワップスペースが拡張パーティション内にあるために必要です)。次に、KDE Partition Managerを終了し、パーティションを作成したばかりのプライマリハードドライブを使用してシャットダウンして再起動しました。ドライブの暗号化を解除して、問題なくログインできました。ふぅ!

この本当に便利なアプリケーションを維持してくれたAndriusStikonasに感謝します。前回LUKSパーティションを移動したときは、使用していた これらの手順 そしてそれは悪夢でした。

CLIからKDE Partition Managerを使用して実行すると、コンソールに出力されるSudo partitionmanagerからの出力は次のとおりです。

QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-root'
QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-root'
Loaded backend plugin:  "pmlibpartedbackendplugin"
"Using backend plugin: pmlibpartedbackendplugin (1)"
"Scanning devices..."
"Device found: ATA ST500LM021-1KJ15"
blkid: unknown file system type  ""  on  "/dev/sda4"
"Partition ‘/dev/sda4’ is not properly aligned (last sector: 976773167,    modulo: 48)."
"Device found:  USB DISK 2.0"
getting smart status failed for  "/dev/sdb" :  Operation not supported
"Partition ‘/dev/sdb2’ is not properly aligned (first sector: 404, modulo: 404)."
"Partition ‘/dev/sdb2’ is not properly aligned (last sector: 5139, modulo: 1044)."
"Scan finished."
"Add operation: Move partition ‘/dev/sda8’ to the left by 40.50 GiB"
"Applying operations..."
"Using backend plugin: pmlibpartedbackendplugin (1)"
"Scanning devices..."
"Device found: ATA ST500LM021-1KJ15"
"Partition ‘/dev/sda4’ is not properly aligned (last sector: 976773167, modulo: 48)."
"Device found:  USB DISK 2.0"
getting smart status failed for  "/dev/sdb" :  Operation not supported
"Partition ‘/dev/sdb2’ is not properly aligned (first sector: 404, modulo: 404)."
"Partition ‘/dev/sdb2’ is not properly aligned (last sector: 5139, modulo: 1044)."
"Scan finished."
"Add operation: Grow partition ‘/dev/sda8’ from 101.77 GiB to 142.26 GiB"
"Applying operations..."
"Using backend plugin: pmlibpartedbackendplugin (1)"
"Scanning devices..."
"Device found: ATA ST500LM021-1KJ15"
"Partition ‘/dev/sda4’ is not properly aligned (last sector: 976773167, modulo: 48)."
"Device found:  USB DISK 2.0"
getting smart status failed for  "/dev/sdb" :  Operation not supported
"Partition ‘/dev/sdb2’ is not properly aligned (first sector: 404, modulo: 404)."
"Partition ‘/dev/sdb2’ is not properly aligned (last sector: 5139, modulo: 1044)."
"Scan finished."
QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-root'
QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-root'
kdeinit5: preparing to launch '/usr/lib/x86_64-linux-gnu/libexec/kf5/klauncher'
kdeinit5: Launched KLauncher, pid = 28349, result = 0
QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-root'
QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-root'
Connecting to deprecated signal      QDBusConnectionInterface::serviceOwnerChanged(QString,QString,QString)
QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-root'
kdeinit5: opened connection to :0
kdeinit5: Got EXEC_NEW '/usr/lib/x86_64-linux-gnu/qt5/plugins/kf5/kio/file.so' from launcher.
kdeinit5: preparing to launch '/usr/lib/x86_64-linux-gnu/qt5/plugins/kf5/kio/file.so'
QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-root'
QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-root'
kdeinit5: Got EXEC_NEW '/usr/lib/x86_64-linux-gnu/qt5/plugins/kf5/kio/file.so' from launcher.
kdeinit5: preparing to launch '/usr/lib/x86_64-linux-gnu/qt5/plugins/kf5/kio/file.so'
QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-root'
kdeinit5: PID 28354 terminated.
kdeinit5: PID 28353 terminated.

blkid: unknown file system type "" on "/dev/sda4"という行を参照してください。 /dev/sda4は私の拡張パーティションであり、blkidプロセスからのこのNULL応答がバグの原因である可能性があります。しかし、私は本当に知りません。とにかく、それがあなたを助けることを願っています。

2
guest4842

KDE Partition Manager2.2.0以降を使用してください。 LUKSパーティションの移動、作成、さらにはサイズ変更もサポートしています。

編集:KPMの使用:基本的にGUIは自明であり、GPartedに似たパーティションマップを表示します(元の質問の画像を参照)。次に、移動ボタンをクリックするだけで、LUKSパーティションを移動できます。 LUKSパーティションのサイズを変更するには、最初にロックを解除する必要があります。KDEPartitionManagerは内部ファイルシステムのサイズを変更する必要があるため、LUKScryptがロックされている間はサイズを変更できません。したがって、2つのステップでそれを行う必要があります。最初に、ロックされたLUKパーティションを移動してから、ロックを解除/サイズ変更します。

1