Wie kann ich die Größe einer Windows-Partition ändern, ohne gparted zu verwenden?

7

Angenommen, ich habe eine native Windows 7-Installation (dh von Herstellern) auf einem Laptop (mit einem SSD-Gerät, BIOS / MBR-Partitionstabelle, falls dies wichtig ist). Die Partition auf dem Gerät ist vollständig zugeordnet und Windows zugeordnet.

Ich möchte jetzt ein Linux-System neben Windows installieren, und dazu muss ich zuerst die Windows-Partition verkleinern. Ich kann zwar Möglichkeiten finden, dies in Windows oder unter Verwendung von gparted zu tun. Wie kann ich dies jedoch nur mit Befehlszeilenprogrammen wie parted oder fdisk tun?

glS
quelle

Antworten:

7

GParted ist oft eine Verwendung wert, da es dabei hilft, einige böse Fehler zu vermeiden. Ich denke, der Hauptvorteil von Befehlszeilentools besteht darin, dass Details besser sichtbar sind. Dies kann in unerwartet fragilen Situationen nützlich sein (zumindest wenn es einmal kaputt ist, können Ihnen die Details helfen, zu erkennen, warum). Ich würde sie jedoch nicht anderen empfehlen, es sei denn, sie möchten aus Fehlern lernen können, bis "meine Festplatte ist jetzt voller Nullen und ich muss von vorne anfangen".

Außerdem sollte ein Desktop-Linux-Installationsprozess ein benutzerfreundliches Tool zum Ändern der Größe der Windows-Partition bereitstellen. (Oder offizielle Dokumentation). Es ist der übliche Fall. Dies wäre meine erste Empfehlung im Allgemeinen.

Alle diese Optionen empfehlen, im Fehlerfall Backups zu erstellen .

Verwirrenderweise sollten Sie das partedBefehlszeilentool nicht verwenden . Früher war dies eine bequeme Option, aber die Entwickler unterstützen die Größenänderung von Dateisystemen nicht mehr.


Andernfalls verwenden Sie ntfsresizedie Partition ( fdisk) , löschen sie und erstellen sie neu mit denselben Details, mit Ausnahme der Größe. ACHTUNG EINHEITEN - EINIGE WERKZEUGE VERWENDEN MB; Andere können MB sagen, aber bedeuten MiB. fdiskverwendet MiB und ntfsresizeverwendet MB. Der verzögerte Weg besteht darin, ntfsresize auf viel kleiner als erforderlich (z. B. 2x) zu setzen. Nach dem Neuerstellen der Partition führen Sie ntfsresize ein zweites Mal ohne explizite Größe aus.

Um Einheiten zu konvertieren, können Sie auf die harte Weise numerische Ausdrücke in bash ausführen. ZB um 10GiB in Bytes zu sehen : echo $((10 * 1024 * 1024 * 1024)). Sie können diese Ausdrücke als Argumente für Befehlszeilentools wie verwenden ntfsresize.

Der Partitionsname für ntfsresize sieht folgendermaßen aus /dev/sda1. lsblk -flistet alle Partitionen (einschließlich Ihrer Boot-CD) mit ihrer Größe auf und informiert Sie über das Dateisystem. fdiskwill den Namen der Festplatte, wie /dev/sda.

Für MBR müssen folgende Partitionsdetails neu erstellt werden: Partitionstyp und "Aktiv" / Boot-Flag sowie Startoffset. [1] fdisksollte standardmäßig den Partitionsversatz in Sektoren anzeigen. (Wenn nicht, gibt es möglicherweise Brüche, die nicht angezeigt werden - möglicherweise durch ein + am Ende gekennzeichnet, aber möglicherweise befindet sich dort eine Falle - Sie sollten sicher sein, dass Sie sie immer fdiskim Sektormodus verwenden.)

Um Tippfehler zu vermeiden fdisk, wähle ich manchmal Zahlen aus und füge sie mit der mittleren Maustaste ein. Dies erfordert entweder X Windows oder im Textmodus gpm . Ich denke, es ist jetzt weniger üblich, gpm standardmäßig auf der Konsole bereitzustellen, aber es ist da, wenn ich Clonezilla Live verwende. Es ist praktisch, aber Sie könnten wahrscheinlich zuerst die Nummer verlieren. Sie sollten also wahrscheinlich den ursprünglichen Partitionsversatz aufschreiben, bevor Sie ihn löschen.


[1] GPT verwendet ein anderes Format für den Typ, fügt weitere Flags und eine Partitions-UUID hinzu. Ich denke nicht, dass sie normalerweise wichtig sind; Flags würden nicht auf die Windows-Hauptpartition angewendet, und die Partitions-UUID wird noch nicht häufig verwendet.

sourcejedi
quelle
13

Hier ist ein Memo zum Ändern der Größe einer NTFS-Partition über die Befehlszeile mit ntfsresize(aus dem ntfs-3g / ntfsprogsPaket) und fdisk, das für Windows XP-zu-8-Versionen funktionieren sollte. Beachten Sie, dass GParted sowohl für MBR / DOS- als auch für EFI / GPT-Laufwerke die folgenden Schritte ausführt, wenn ntfs-3g / ntfsprogs installiert ist . Meine Referenzen sind am Ende.

OK in diesem Szenario Ich habe eine MBR-partitionierte 149-GB-Festplatte mit einer einzelnen NTFS-Partition (Windows C :). Ich werde die Größe auf 20 GB ändern (wie @sourcejedi es gut gesagt hat: ACHTUNG EINHEITEN), um Platz für neue Partitionen zu schaffen, z. Daten und / oder ein anderes Betriebssystem.

Voraussetzung

  • Sauberes NTFS- Dateisystem: Die Linux-basierten NTFS-Tools lehnen es ab, ein NTFS-Dateisystem zu berühren, es sei denn, es ist bereits vollkommen konsistent, um das Risiko eines Datenverlusts zu minimieren. Wenn nicht, muss man ntfsfix(von Linux) oder chkdsk /f(von Windows) verwenden.
  • Sichern Sie die wichtigen Daten (z. B. mit ntfsclone, wie oben von @peterph geschrieben).
  • Wissen Sie, welches Gerät und welche Partition ich in diesem Fall ändern möchte, / dev / sdb1.

A. Verkleinern Sie das Dateisystem

  1. Überprüfen Sie das Gerät, um sicherzustellen, dass die Größe geändert werden kann:

    ~ ntfsresize --check /dev/sdb
    

    Jede Warnung an dieser Stelle sollte vor der weiteren Verarbeitung behoben werden.

  2. Überprüfen Sie die Größe dieses Dateisystems, auf die die Größe geändert werden kann:

    ~ ntfsresize --info /dev/sdb
    > ...
    > You might resize at 16865632256 bytes or 16866 MB (freeing 112060  MB).
    > ...
    
  3. Testen Sie, wie das Schrumpfen auf 18 GB funktioniert (wir machen diese 20 GiB in einer Minute):

    ~ ntfsresize --no-action --size 18G /dev/sdb1
    > ...
    > The read-only test run ended successfully.
    
  4. Größe auf 18 GB ändern :

    ~ 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!
    > ...
    

Tipp: Wenn auf der Festplatte Probleme wie fehlerhafte Sektoren bekannt sind, fügen Sie die --bad-sectorsOption ' ' hinzu.

B. Ändern Sie die Größe der Partition

Im vorherigen Schritt haben wir das Dateisystem verkleinert, nicht die Partition, wie wir überprüfen können:

~ 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)

Wie Sie sehen können, unterscheiden sich die Volume-Größe und der Partitionswert, wobei Partition 1 das Laufwerk noch füllt. In diesem Stadium muss die Partition gelöscht und eine kleinere Partition erstellt werden, die der neuen Größe des NTFS-Dateisystems entspricht. Da meine Festplatte eine DOS / MBR-Partitionstabelle hat, mache ich das mit fdisk(@peterph hat oben eine Antwort für GPT):

~ fdisk /dev/sdb
  1. Löschen Sie die Partition

    Geben Sie 'p' ein, um die Partitionen auf dieser Festplatte anzuzeigen, und notieren Sie, welche das Dateisystem mit geänderter Größe enthält.

    Wenn Sie 'd' eingeben, werden Sie gefragt, welche Partition Sie löschen möchten

    > Command (m for help): d
    > partition number (1-3, last one by default) : 1
    
  2. Erstellen Sie die Partition neu

    Erstellen Sie nun die Partition kleiner und behalten Sie sie primär und zuerst in der richtigen Reihenfolge bei:

    > 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
    

    Da ich das Dateisystem auf 18 GB verkleinert habe, machen wir die Partition auf 20 GB:

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

    Wir wissen, dass das Dateisystem NTFS ist. Verwenden Sie daher die Befehlsaktion 't' für den Typ und den aufgelisteten Hex-Code '7' für NTFS:

    > 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. Als nächstes möchte ich sicherstellen, dass die Partition weiterhin als bootfähig markiert ist :

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

    Machen Sie die neue Partition bootfähig, indem Sie das Boot-Flag hinzufügen:

    > Command (m for help): a
    > Partition number (1-4): 1
    
  4. Schreiben Sie die geänderte Partitionstabelle auf die Festplatte und beenden Sie fdisk mit der Befehlsaktion 'w':

    > Command (m for help): w
    
  5. Nun eine endgültige Größenänderung des Dateisystems

    ntfsresize ohne den Schalter 'size' stellt sicher, dass der gesamte verfügbare Speicherplatz der gesamten Partition verwendet wird (der gesamte und nicht mehr - danke @sourcejedi).

    ~ ntfsresize -v /dev/sdb1
    

Jetzt können wir überprüfen, ob die Partitionen und Dateisysteme auf dem Laufwerk gepaart sind:

~ 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)

Verweise

tuk0z
quelle
2
Schöne Demo! Sie haben einen gewissen Spielraum gelassen, aber nur 5%, wenn Sie versuchen, den GB / GiB-Einheitenfehler zu decken. Ich glaube, das sind ungefähr 7%. Ich empfahl auch eine endgültige Größenänderung ohne explizite Größe, um den Rand automatisch zu belegen - zumindest würde dies einige zukünftige Rätsel ausschließen.
Sourcejedi
Ja, das Hinzufügen einer endgültigen ntfsresize ohne explizite Größe wäre sicherer. Der verdammte Unterschied von 7% GB / GiB! Sie haben Recht auf beiden @sourcejedi, danke!
Tuk0z
Ich habe eine Bearbeitung eingereicht, um die zweite ntfsresize nach dem Schreiben der fdisk zu setzen. Umgekehrt ergab dies keinen Sinn. sieht jetzt toll aus + upvoted :).
Sourcejedi
4

Sie benötigen das ntfsresizeDienstprogramm aus dem ntfs-3gPaket, mit dem die Größe des NTFS-Dateisystems geändert werden kann. Stellen Sie jedoch sicher, dass Sie die Partition sichern, bevor Sie Änderungen daran vornehmen, da Windows manchmal andere Vorstellungen davon hat, wie die Partition mit geänderter Größe aussehen sollte.

Die Sicherung kann bequem mit dem ntfscloneDienstprogramm (dasselbe Paket) durchgeführt werden, da dadurch nur das Dateisystem (dh der Dateiinhalt und die Metadaten) und nicht die gesamte Partition gespeichert werden:

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

Wenn Sie wenig Speicherplatz haben und / oder viel Zeit haben, ist es eine gute Idee, das Image zu komprimieren:

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

Beachten Sie, dass bei einer mäßig vollen Windows - Systempartition (nicht viele Benutzerdaten) (z. B. ~ 40 GB) je nach Komprimierungsstufe mehrere Stunden dauern können. Auf der anderen Seite können Sie auch ungefähr 40-30% der unkomprimierten Größe erreichen.

Denken Sie außerdem daran, Ihr Partitionslayout zu sichern, um eine vollständige Wiederherstellung durchführen zu können. Wenn Sie eine MBR-Partitionstabelle ohne logische Partitionen verwenden, benötigen Sie lediglich den MBR des betroffenen Geräts:

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

Wenn logische Partitinos vorhanden sind, speichern Sie zumindest die Textbeschreibung, z.

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

Für GPT können Sie gdiskGPT-Daten in einer Datei speichern und dann wieder laden.

Dann können Sie ntfsresizeim Schreibmodus laufen. Sie werden wahrscheinlich aufgefordert, Windows neu zu starten (wahrscheinlich mehrmals), um sicherzustellen, dass die Änderungen vom Betriebssystem registriert werden.

Erst wenn dies erledigt ist, können Sie die Größe der Partition (en) ändern. partedist wahrscheinlich so gut wie jedes andere Partitionierungsprogramm, das das auf dieser Festplatte verwendete Partitionierungsschema versteht.

Peterph
quelle
Ich bin der Meinung, dass in der Beschreibung "Größe der Partition ändern" das wichtige Detail weggelassen wird, dass die Partition gelöscht und eine kleinere neu erstellt werden muss. Aber ein guter Punkt, um die Partitionstabelle vorher zu speichern.
Sourcejedi
Wenn Sie persönlich fdisk / gdisk für die Sicherung verwenden, scheint es einfacher zu sein, sich auch für die Partitionsbearbeitung daran zu halten. Insbesondere printscheint der Befehl von parted in Bezug auf Offsets vage zu sein, um diese Art von Arbeit zu überprüfen (z. B. zeigt er bei großen Werten das nächste ganze GB an). Obwohl der rescueBefehl ("Eine verlorene [gelöschte] Partition in der Nähe von START und END retten") nett erscheint. Ich würde dafür testdisk verwenden wollen , aber es ist schön zu wissen, falls Sie sich nur getrennt haben.
Sourcejedi