Ändern Sie die Nummer der Partition von sda1 in sda2


20

Ich habe eine Festplatte mit zwei Partitionen: sda1 und sda2. Ich möchte die Zahl von sda1 zu sda2 und von sda2 zu sda1 ändern.

Es ist möglich, aber ich erinnere mich nicht an die Prozedur. Dh meine erste Partition ist sda2 und die zweite sda1, also muss ich eine manuelle Reihenfolge angeben, keine automatische Reihenfolge wie in fdisk -> x -> f.

Wie ändere ich die Bestellung? Nützlich sind auch Links zu Handbüchern oder Tutorials.

Vielen Dank.

Der Grund: Ich habe eine Anwendung, die Lesedaten von sda1 benötigt, aber die Daten sind in sda2. Das Ändern der Partitionstabelle ist die schnellere Lösung für dieses Problem. Das System ist nicht kritisch, aber ich möchte das System nicht zu lange anhalten.

Update : Die fdisk-Version von OpenBSD enthält diese Funktionalität.


1
Da es im Allgemeinen eine schlechte Idee ist, das zu tun, wonach Sie fragen, beschreiben Sie bitte, warum Sie das wollen.
Rozcietrzewiacz

Ich habe Backups, keine Sorge :)
Rufo El Magufo

Ok, du
wurdest

Antworten:


17

Zu Ihrer Information, es ist eine schlechte Idee und Sie können alles verlieren. Wenn Sie es dennoch tun möchten, sind hier die Schritte:

  1. Tu es nicht . Wenn dies nicht hilft, dann:
  2. Verwenden Sie das sfdiskTool: Erstellen Sie zunächst eine Sicherungskopie der Partitionstabelle mit

    sfdisk -d /dev/sda > sda.out
    

    Dann mach es:

    sfdisk /dev/sda -O sda-partition-sectors.save
    

    Sie werden so etwas sehen

    Checking that no-one is using this disk right now ...
    OK
    
    Disk /dev/sda: 1018 cylinders, 124 heads, 62 sectors/track
    Old situation:
    Units = cylinders of 3936256 bytes, blocks of 1024 bytes, counting from 0
    
       Device Boot Start     End   #cyls    #blocks   Id  System
    /dev/sda1          0+      5       6-     23063+  83  Linux
    /dev/sda2          6    1017    1012    3890128   83  Linux
    /dev/sda3          0       -       0          0    0  Empty
    /dev/sda4          0       -       0          0    0  Empty
    Input in the following format; absent fields get a default value.
    <start> <size> <type [E,S,L,X,hex]> <bootable [-,*]> <c,h,s> <c,h,s>
    Usually you only need to specify <start> and <size> (and perhaps <type>).
    
    /dev/sda1 :
    

Jetzt werden Sie aufgefordert, die neuen Details für die 'sda1'-Partition anzugeben. Also musst du hier die Nummern von sda2 angeben. Also gebe ich hier '6 1012' ein und drücke die Eingabetaste:

    /dev/sda1 :6 1012
    /dev/sda1          6    1017    1012    3890128   83  Linux
    /dev/sda2 :

Überprüfen Sie nun , ob die nach dem Drücken der Eingabetaste gedruckten Zahlen exakt mit den zuvor für sda2 gedruckten Zahlen übereinstimmen. Wenn es in Ordnung ist, geben Sie die neuen Zahlen für sda2 ein:

    /dev/sda2 :0
    /dev/sda2          0+      5       6-     23063+  83  Linux
    /dev/sda3 :

Dieses Mal hat es gereicht, in meinem Fall "0" einzugeben - aber Sie müssen sicherstellen, dass die Zahlen in Ihren Zahlen nicht durcheinander sind.

Fahren Sie anschließend auf die gleiche Weise mit den anderen Partitionen fort. Wenn Sie bereits das Ende der Festplatte erreicht haben, reicht es aus, die Eingabetaste zu drücken. Überprüfen Sie abschließend erneut, ob alle Zahlen in Ordnung sind, und speichern Sie die Partitionstabelle (oder nicht). Wenn Sie etwas durcheinander gebracht haben, lesen Sie man sfdiskdie Beschreibungen der Optionen '-d', '-O' und '-I'.

Beachten Sie außerdem, dass Sie nach Durchführung der verrückten Änderungen möglicherweise die Synchronisierung ausführen müssen, damit die Partitionen erneut gelesen werden, bevor Sie versuchen, sie bereitzustellen.


Danke für die Antwort. Du hast recht, das ist beängstigend :).
Rufo El Magufo

Wunderbar böse. Was passiert, wenn die Zahlen nicht gleich sind? Aufgeben und neu aufteilen? (Das habe ich getan)
supervacuo

1
@supervacuo Testisk könnte dir dann weiterhelfen. Suchen Sie nach testdiskPaketen in der Softwaredatenbank Ihrer Distribution.
Rozcietrzewiacz

@supervacuo Wenn die Nummern nicht identisch sind, befinden sich Ihre neuen Partitionen nicht an derselben Stelle wie die alten Partitionen, und Sie können sie möglicherweise beschädigen. Wenn Sie auf der Festplatte nichts anderes tun, können Sie die Partitionstabelle, die Sie hoffentlich vor dem Start gesichert haben, wiederherstellen und erneut versuchen. Wenn nicht, sollten Sie hoffen, dass sich die richtigen Nummern noch irgendwo auf Ihrer Konsole befinden oder dass Sie sich an die genaue Größe und Position Ihrer Partitionen erinnern und die Nummern herausarbeiten können.
Micheal Johnson

31

Ich habe das auf einfachere Weise gemacht:

# sfdisk -d /dev/sdb > sdb.bkp

Hinterlassen Sie eine Kopie zur Sicherheit

# cp sdb.bkp sdb.new 

bearbeite jetzt sdb.new und ändere NUR die Zeilenreihenfolge und die Partitionsnummern, wie in meinem Fall:

von

# partition table of /dev/sdb
unit: sectors

/dev/sdb1 : start=  1026048, size=975747120, Id=83
/dev/sdb2 : start=     2048, size=   204800, Id=83
/dev/sdb3 : start=   206848, size=   819200, Id= b
/dev/sdb4 : start=        0, size=        0, Id= 0

zu

# partition table of /dev/sdb
unit: sectors

/dev/sdb1 : start=     2048, size=   204800, Id=83
/dev/sdb2 : start=   206848, size=   819200, Id= b
/dev/sdb3 : start=  1026048, size=975747120, Id=83
/dev/sdb4 : start=        0, size=        0, Id= 0

dann werfen Sie es zurück in die Festplattenpartitionstabelle?

# sfdisk /dev/sdb < sdb.new

Meine Nummerierungssequenz wurde entstellt, nachdem ich die einzige Partition (sdb1) verkleinert und nach rechts verschoben hatte, um zwei kleinere Partitionen am Anfang der Festplatte hinzuzufügen gparted.

Wenn der letzte Befehl nicht funktioniert, wie in meinem Fall, ändern Sie ihn für:

# sfdisk --no-reread -f /dev/sdb < sdb.new

Dies funktionierte für mich und ich brauchte am Ende nicht den 2. Befehl.
Aaron Franke

Auch für mich, danke;) ... Hinweis
Stellen

3

Sie müssten die Partitionstabelle des Laufwerks neu schreiben, um die Reihenfolge umzukehren, was etwas riskant ist. Wenn ich Sie wäre, würde ich das Problem beheben, das Sie dazu bringt, die Reihenfolge der Gerätenamen zu vertauschen und die Partitionen in Ruhe zu lassen.

Wenn Sie beispielsweise ein Skript haben, das auf beiden Computern ausgeführt werden muss und auf dasselbe Gerät zugreifen soll, erstellen Sie eine Verknüpfung in einem anderen Verzeichnis (nicht / dev), das auf beiden Servern denselben Namen hat, aber Verknüpfungen zu / enthält. dev / sda1 auf der einen und / dev / sda2 auf der anderen Seite.

Sie können einen beliebigen Partitionseditor ( fdiskoder cfdisk) verwenden, um die Partitionen zu bearbeiten. Sie müssen jedoch entweder die aktuellen Einstellungen notieren oder ein Foto des Bildschirms aufnehmen. Löschen Sie die beiden Partitionen und erstellen Sie sie manuell, indem Sie alle korrekten Werte angeben. Booten Sie dazu das System mit einer Live-CD.


Ich kann nichts ändern. Mein System ist eine Xen DomU und das Problem liegt in der Dom0. Ich könnte die Reihenfolge der Partitionen neu erstellen, ist jedoch in meiner Situation komplexer. Aber trotzdem würde ich gerne wissen, wie sich die Reihenfolge ändert.
Rufo El Magufo

2

Zunächst einmal ist das Ganze eine Übung, bei der Sie Ihr Bestes geben, um die Dinge zu brechen, aber hier ist ein anderer Ansatz, den Sie ausprobieren können.

Hinweis: Sie haben nicht erwähnt, woher Sie booten, und diese und keine andere Lösung befasst sich zum Zeitpunkt, als ich dies schreibe, mit dem, was Sie tun müssten, damit LILO oder GRUB ordnungsgemäß funktionieren.

/dev/sda1und /dev/sda2sind Blockvorrichtungen (8,1) und (8,2). Sie können versuchen, mknoddie beiden einfach zu tauschen.

telinit 1
(...)
rm -f /dev/sda{1,2}; mknod /dev/sda1 b 8 2; mknod /dev/sda2 b 8 1
chmod 640 /dev/sda{1,2}; chown root:disk /dev/sda{1,2}
reboot

Denken Sie daran , dass dieser Austausch geschehen wird erst nach Ihrer Partition mit /dev/beim Booten geladen wird, so dass die initrdnoch die „richtig“ diejenigen haben , wenn Sie es zu beheben auch dort (Übung für den Leser - wird mkinitrd? Die Fremdheit kopieren) Dies gilt auch nicht Adress SELinux Kontexte.


Der Bootloader ist kein Problem :). Vielen Dank für die Lösung, aber ich muss die Reihenfolge in der Partitionstabelle ändern, nicht im System.
Rufo El Magufo

1
Das wird auf keinem System funktionieren, das udev verwendet, und es würde nur helfen, wenn die Anwendung aus einer aufgerufenen Datei liest /dev/sda(im Gegensatz zum direkten Lesen der Festplatte).
Gilles 'SO - hör auf böse zu sein'

Beides - vereinbart. Die ganze Frage IMHO ist eine Übung in Schmerz. Ich war mir über das udevZeug nicht sicher ; Anscheinend hatte das erste System, in das ich ssheinstieg, es nicht.
Aaron D. Marasco

2

Ich habe gerade eine überraschend einfache Lösung für dieses Problem gefunden. Angenommen, Sie haben nur noch eine Partition mit dem Namen /dev/sda3. Sie möchten, dass es aufgerufen wird /dev/sda1. Öffnen Sie gdiskdie Partitionstabelle, konvertieren Sie sie in GPT, schreiben Sie sie und beenden Sie sie. Öffnen Sie es dann erneut, drücken Sie Sortieren (dadurch wird die GPT-Nummer auf 1 geändert) und konvertieren Sie die GPT über die Expertenoptionen zurück in MBR.


1

- Bearbeiten der Partitionen / dev / sda3 nach / dev / sda2 im Terminal als root -

  1. Backup-Partitionstabelle

    sfdisk -d / dev / sda> sda.bkp

  2. Kopieren Sie die Partitionstabellensicherung in die neue Partitionstabelle

    cp sda.bkp sda.new

  3. Bearbeiten Sie die neue Partitionstabelle

    gedit sda.new

Bildbeschreibung hier eingeben

Speichern, schließen

  1. Installieren Sie die neue Partitionstabelle neu

    sfdisk --no-reread -f / dev / sda <sda.new

  2. Computer neu starten


Obwohl dies machbar ist, würde ich die GParted
LiveCD

1
Ich denke, Sie können es besser machen als einen Screenshot eines Texteditors mit einer Nicht-Monospace-Schriftart, einer sichtbaren Einfügemarke und sichtbaren Rechtschreibfehlern.
Micheal Johnson
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.