web-dev-qa-db-ja.com

gpartedを使用せずにWindowsパーティションのサイズを変更するにはどうすればよいですか?

ラップトップにネイティブの(つまり、製造元の)Windows 7インストールがあるとします(SSDデバイス、BIOS/MBRパーティションテーブルが必要な場合)。デバイスのパーティションは完全に割り当てられ、Windows専用です。

次に、LinuxシステムをWindowsの横にインストールしたいと思います。そのためには、まずWindowsパーティションを圧縮する必要があります。ウィンドウ内またはgpartedを使用してそれを行う方法を見つけることができますが、partedやfdiskなどのコマンドラインプログラムのみを使用してこれを行うにはどうすればよいですか?

7
glS

GPartedは、いくつかの厄介な間違いを回避するのに役立つため、多くの場合、使用する価値があります。ここでのコマンドラインツールの主な利点は、詳細の可視性を高めることだと思います。これは、予想外に壊れやすい状況で役立ちます(少なくとも一度壊れると、詳細が理由を理解するのに役立つ場合があります)。ただし、「私のディスクはゼロで一杯になり、ゼロから始める必要がある」までの間違いから学びたいと思わない限り、他の人にそれらを使用することはお勧めしません。

また、デスクトップLinuxインストールプロセスは、Windowsパーティションのサイズを変更するための使いやすいツールを提供する必要があります。 (または公式ドキュメント)。それは一般的なケースです。これは一般的に私の最初の推奨事項です。

これらのオプションはすべて、エラーが発生した場合に備えてバックアップを作成することをお勧めします

紛らわしいことに、partedコマンドラインツールを使用しないでください。以前は便利なオプションでしたが、開発者はこれを使用したファイルシステムのサイズ変更をサポートしなくなりました。


それ以外の場合は、ntfsresizeを使用し、サイズを除いて同じ詳細でパーティション(fdisk)を削除して再作成します。注意ユニット-一部のツールはMBを使用します。他の人はMBを言うかもしれませんが、MiBを意味します。 fdiskはMiBを使用し、ntfsresizeはMBを使用します。レイジーな方法は、ntfsresizeを必要なサイズよりもはるかに小さく(たとえば、2x)してから、パーティションを再作成した後、明示的なサイズを指定せずにもう一度ntfsresizeを実行します。

難しい方法として、単位を変換するには、bashで数値式を実行します。例えば。 10GiBをバイトで表示するには:echo $((10 * 1024 * 1024 * 1024))。これらの式は、ntfsresizeなどのコマンドラインツールの引数として使用できます。

Ntfsresizeのパーティション名は/dev/sda1のようになります。 lsblk -fは、すべてのパーティション(ブートディスクを含む)をサイズとともにリストし、ファイルシステムについて通知します。 fdiskは、/dev/sdaのようなディスクの名前を要求します。

MBRの場合、再作成するパーティションの詳細は、パーティションタイプと「アクティブ」/起動可能フラグ、および開始オフセットです。[1] fdiskには、デフォルトでパーティションオフセットがセクター単位で表示されます。 (そうでない場合、表示されていない分数がある可能性があります-最後に+で示されている可能性がありますが、そこにトラップがある可能性があります-セクターモードでは常にfdiskを使用する必要があります)。

fdisk内の入力エラーを回避するために、数字を選択して、マウスの中央ボタンで貼り付けます。これにはXウィンドウが必要です。またはテキストモードでは gpm が必要です。現在、デフォルトでコンソールにgpmを提供することはあまり一般的ではないと思いますが、Clonezilla Liveを使用している場合はあります。便利ですが、最初に数字を失う可能性があります。したがって、削除する前に、元のパーティションのオフセットを書き留めておく必要があります。


[1] GPTはタイプに異なるフォーマットを使用し、いくつかのフラグとパーティションUUIDを追加します。通常、それらは重要ではないと思います。フラグはメインのWindowsパーティションには適用されず、パーティションUUIDはまだほとんど使用されていません。

7
sourcejedi

これは、ntfsresizentfs-3g / ntfsprogsパッケージから)とfdiskを使用してコマンドラインを使用し、Windows XPから8のバージョンで機能するNTFSパーティションのサイズを変更するメモです。 ntfs-3g/ntfsprogsがインストールされている の場合、GPartedはMBR/DOSおよびEFI/GPTドライブに対して次のすべてを実行することに注意してください。私の参考文献は最後にあります。

このシナリオではOKです。MBRでパーティション化された149 GBのディスクに、単一のNTFSパーティション(Windows C :)が1つあります。新しいパーティション用のスペースを確保するために、20 GBにサイズ変更します(@sourcejediがよく言っているように、BEWARE UNITS)。データおよび/または別のOS。

前提条件

  • Clean NTFSファイルシステム:LinuxベースのNTFSツールは、データの可能性を最小限に抑えるために、すでに完全に一貫性がない限り、NTFSファイルシステムへのアクセスを拒否します。損失。そうでない場合は、ntfsfix(Linuxの場合)またはchkdsk /f(Windowsの場合)を使用する必要があります。
  • Backup重要なデータ(例:@peterphで上記のようにntfscloneを使用)
  • サイズを変更したいデバイスとパーティションを確認します。この場合は/ dev/sdb1です。

A.ファイルシステムを縮小する

  1. デバイスをチェックして、サイズ変更の準備ができていることを確認します。

    ~ ntfsresize --check /dev/sdb
    

    この時点での警告は、さらに処理する前に対処する必要があります。

  2. サイズを確認してくださいこのファイルシステムは次のサイズに変更できます:

    ~ ntfsresize --info /dev/sdb
    > ...
    > You might resize at 16865632256 bytes or 16866 MB (freeing 112060  MB).
    > ...
    
  3. Test18 GBへの縮小がどのように機能するか(20 GiBを1分で作成します):

    ~ ntfsresize --no-action --size 18G /dev/sdb1
    > ...
    > The read-only test run ended successfully.
    
  4. 18 GBにサイズ変更

    ~ ntfsresize -v --size 18G /dev/sdb1
    > ...
    > Successfully resized NTFS on device '/dev/sdb1'.
    > You can go on to shrink the device for example with Linux fdisk.
    > IMPORTANT: When recreating the partition, make sure that you
    >   1)  create it at the same disk sector (use sector as the unit!)
    >   2)  create it with the same partition type (usually 7, HPFS/NTFS)
    >   3)  do not make it smaller than the new NTFS filesystem size
    >   4)  set the bootable flag for the partition if it existed before
    > Otherwise you won't be able to access NTFS or can't boot from the disk!
    > ...
    

ヒント:ディスクに不良セクターなどの既知の問題がある場合は、「--bad-sectors」オプションを追加します。

B.パーティションのサイズを変更します

前のステップでは、パーティションではなくファイルシステムを縮小しました。

~ disktype /dev/sdb

> Block device, size 149.1 GiB (160041885696 bytes)
> DOS/MBR partition map
> Partition 1: 149.1 GiB (138602266624 bytes, 8459611 clusters of 16 KiB, bootable)
> Volume size 18.37 GiB (20799750144 bytes, 1269516 clusters of 16 KiB)

ご覧のように、ボリュームサイズとパーティション値は異なり、パーティション1はまだドライブを満たしています。この段階では、パーティションを削除し、NTFSファイルシステムの新しいサイズに合わせて小さいパーティションを作成する必要があります。私のディスクにはDOS/MBRパーティションテーブルがあるので、fdiskでそれを行います(@peterphはGPTについて上記の答えを持っています):

~ fdisk /dev/sdb
  1. パーティションを削除

    「p」と入力して、そのディスク上のパーティションを表示し、サイズ変更されたファイルシステムが含まれているパーティションを確認します。

    「d」と入力すると、削除するパーティションを尋ねられます

    > Command (m for help): d
    > partition number (1-3, last one by default) : 1
    
  2. パーティションを再作成

    次に、パーティションを小さく再作成し、プライマリと最初の順序を保ちます。

    > Command (m for help): n
    > Command action
    > e extended
    > p primary partition (1-4)
    p
    > Partition number (1-4): 1
    > First cylinder (1-31, default 1): 1
    

    ファイルシステムを18GBに縮小したので、パーティションを20GiBにしましょう:

    > Last cylinder or +size or +sizeM or +sizeK (1-31, default 31): +20G
    

    ファイルシステムがNTFSであることはわかっているため、タイプにはコマンドアクション「t」を使用し、NTFSにはリストされている16進コード「7」を使用します。

    > Command (m for help): t
    > Selected partition 1
    > Hex code (type L to list codes): 7
    > Changed system type of partition 1 to 7 (HPFS/NTFS)
    
  3. 次に、パーティションがbootableとしてマークされていることを確認します。

    > Command (m for help): p
       Device   Boot      Start        End      Blocks   Id   System
    /dev/sdb1               63      40644449  40644387   7  HPFS/NTFS
    

    ブートフラグを追加して、新しいパーティションをブート可能にします。

    > Command (m for help): a
    > Partition number (1-4): 1
    
  4. Write変更されたパーティションテーブルをディスクに書き込み、コマンドアクション ‘w'でfdiskを終了します。

    > Command (m for help): w
    
  5. ファイルシステムの最終的なサイズ変更

    'size'スイッチなしのntfsresizeは、パーティションの使用可能なスペース全体を使用することを確認します(全体およびそれ以上-感謝@sourcejedi)

    ~ ntfsresize -v /dev/sdb1
    

これでcheckpartitionsおよびfilesystemsドライブのペアです:

~ disktype /dev/sdb
> ...
> Partition 1: 20.0 GiB (21474836480 bytes, 40644387 sectors from 63, bootable)
> Type 0x07 (HPFS/NTFS)
> Windows NTLDR boot loader
> NTFS file system
> Volume size 19.98 GiB (21453361644 bytes, 1269516 clusters of 16 KiB)

参考文献

13
tuk0z

NTFSファイルシステムのサイズを変更できる ntfs-3g パッケージのntfsresizeユーティリティが必要です。ただし、Windowsはサイズ変更されたパーティションがどのように見えるかについて他の考えを持っている場合があるため、パーティションを変更する前に必ずパーティションをバックアップしてください。

ntfscloneユーティリティ(同じパッケージ)を使用すると、パーティション全体ではなく、ファイルシステム(つまり、ファイルの内容とメタデータ)のみが保存されるため、バックアップを簡単に実行できます。

ntfsclone -s -o windows-partitinon.img /dev/sdXY

ディスク容量が足りない場合や時間が十分にある場合は、画像を圧縮することをお勧めします。

ntfsclone -s -o - /dev/sdXY | xz -v -9 > windows-partitinon.img.xz

適度に完全なWindowsシステムパーティション(ユーザーデータがあまりない)の場合、たとえば〜40GB、圧縮レベルによっては数時間かかる場合があることに注意してください)。一方、非圧縮サイズの約40〜30%を取得することもできます。

それとは別に、完全な復元を実行できるようにパーティションレイアウトをバックアップすることを忘れないでください。論理パーティションなしでMBRパーティションテーブルを使用している場合、影響を受けるデバイスのMBRだけが必要です。

dd if=/dev/sdX bs=512 count=1 of=mbr.sav

論理的な部分が存在する場合は、少なくともテキストによる説明を保存してください。例:

fdisk -l -u s /dev/sdX > partitions.sav

GPTの場合は、 gdisk を使用できます。これには、GPTデータをファイルに保存してから再度読み込む機能があります。

その後、ntfsresizeを書き込みモードで実行できます。おそらく、OSによって変更が登録されていることを確認するために、Windowsを(おそらく数回)再起動するよう指示されます。

これがすべて完了した後でのみ、パーティションのサイズを変更できます。 partedは、そのハードドライブで使用されているパーティション分割スキームを理解している他のパーティション分割プログラムと同じくらい優れています。

4
peterph