So verschieben Sie Boot- und Root-Partitionen auf ein anderes Laufwerk

27

Ich habe zwei Laufwerke auf meinem Computer, die die folgende Konfiguration haben:

Drive 1: 160GB, /home
Drive 2: 40GB, /boot and /

Leider scheint Laufwerk 2 zu sterben, da der Versuch, darauf zu schreiben, Fehler verursacht und das Überprüfen der SMART-Einstellungen einen traurigen Zustand anzeigt.

Auf Laufwerk 1 ist ausreichend Speicherplatz vorhanden. Ich möchte also die Partitionen / und / boot dorthin verschieben, Laufwerk 2 aus dem System entfernen, Laufwerk 2 durch ein neues Laufwerk ersetzen und dann den Vorgang umkehren.

Ich stelle mir vor, ich muss ein paar Aktualisierungen vornehmen, und ich muss einige Dinge verschieben, aber ich bin ziemlich ratlos, wie ich genau vorgehen soll. Da dies mein Hauptcomputer ist, möchte ich darauf achten, die Dinge nicht durcheinander zu bringen, damit ich nicht booten kann.

mlissner
quelle
Genau das musste ich auch tun. Ich habe ein Blog mit vollständigen Anweisungen zum Verschieben der Root-Partition / nach / home geschrieben.
Lucas

Antworten:

29

Sie müssen von einer Live-CD booten. Fügen Sie Partitionen für sie zu Datenträger 1 hinzu, kopieren Sie den gesamten Inhalt und verwenden Sie dann sudo blkid, um die UUID jeder Partition abzurufen. Bearbeiten Sie auf dem neuen / von Datenträger 1 die Datei / etc / fstab, um die neuen UUIDs zu verwenden, die Sie gerade nachgeschlagen haben.

Das Aktualisieren von GRUB hängt davon ab, ob es sich um GRUB1 oder GRUB2 handelt. Wenn Sie GRUB1 verwenden, müssen Sie /boot/grub/device.map bearbeiten

Wenn Sie GRUB2 verwenden, müssen Sie Ihre Partitionen wie in einer realen Situation bereitstellen. Beispielsweise:

sudo mkdir /media/root
sudo mount /dev/sda1 /media/root
sudo mount /dev/sda2 /media/root/boot
sudo mount /dev/sda3 /media/root/home

(Das Ausfüllen der Partitionen, auf die Sie die Daten kopiert haben, ist selbstverständlich.)

Binden Sie dann mount / proc und / dev in das Verzeichnis / media / root:

sudo mount -B /proc /media/root/proc
sudo mount -B /dev /media/root/dev
sudo mount -B /sys /media/root/sys

Jetzt chrooten Sie in das Laufwerk, damit Sie GRUB zwingen können, sich entsprechend dem neuen Layout zu aktualisieren:

sudo chroot /media/root
sudo update-grub

Der zweite Befehl macht eine Beschwerde (ich vergesse allerdings, was es ist ...), aber das ist in Ordnung zu ignorieren.

Testen Sie es, indem Sie das fehlerhafte Laufwerk entfernen. Wenn es nicht funktioniert, sollte das fehlerhafte Laufwerk das System immer noch booten können, aber ich glaube, dies sind alle notwendigen Schritte.

maco
quelle
3
Für alle, die dies heutzutage anzeigen, gilt dies nicht für EFI-Setups. Sie müssen /media/root/boot/efiunter anderem montieren .
wjandrea
1
Ich musste sudo grub-install /dev/sdavor demsudo update-grub
William Mortada
5

Wenn Sie das Laufwerk sofort austauschen, können Sie es verwenden dd(habe es vor einigen Monaten auf meinem Server ausprobiert und es hat wie ein Zauber funktioniert).

Dazu benötigen Sie ebenfalls eine Boot-CD.

  1. Starten Sie die Boot-CD
  2. Nur Laufwerk 1 einhängen
  3. Führen dd if=/dev/sdb1 of=/media/drive1/backuproot.imgSie aus, dass sdb1 Ihre root ( /) - Partition ist. Dadurch wird die gesamte Partition in einer Datei gespeichert.
    • das gleiche für /boot
  4. Ausschalten, Datenträger austauschen, einschalten
  5. Run dd if=/media/drive1/backuproot.img of=/dev/sdb1- schreibe es zurück.
    • das gleiche für /boot

Mit den obigen Schritten werden 2 Partitionen mit genau derselben Größe wie zuvor erstellt. Möglicherweise müssen Sie grub anpassen (siehe macos post).

Wenn Sie die Größe Ihrer Partitionen ändern möchten (wie ich):

  1. Erstellen Sie 2 Partitionen auf dem neuen Laufwerk (für /und /boot; Größe nach Belieben)
  2. Mounten Sie das Backup-Image: mount /media/drive1/backuproot.img /media/backuproot/
  3. Hängen Sie die leere /Partition ein:mount /dev/sdb1 /media/sdb1/
  4. Kopieren Sie den Inhalt auf die neue Partition. (Ich bin mir nicht sicher, ob dieser Befehl in Frage kommt. Es ist wirklich wichtig, den Besitz zu bewahren. cp -R) cp -R --preserve=all /media/backuproot/* /media/sdb1
    • das gleiche für /boot/

Das sollte es tun.

sBlatt
quelle
Es stellt sich heraus, dass das neue "40 GB" -Laufwerk, das ich installieren möchte, kleiner ist als mein aktuelles "40 GB" -Laufwerk. Ich habe beide verbunden und ich habe eine Live-CD gebootet. Gibt es eine einfache Möglichkeit, einfach vom alten zum neuen zu wechseln und es als erledigt zu bezeichnen?
mlissner
Eigentlich habe ich diese Frage geklärt. Die Partition, die zu groß war, war eine ext4-Partition, also habe ich eine Live-CD gebootet und gparted verwendet, um sie ein wenig zu verkleinern.
mlissner
4

Meine endgültige Lösung hierfür war eine Kombination mehrerer Techniken:

  1. Ich habe das sterbende Laufwerk und seinen Ersatz gleichzeitig mit dem Computer verbunden.
  2. Das neue Laufwerk war kleiner als das alte, daher habe ich die Partitionen auf dem alten mit GParted verkleinert.
  3. Danach kopierte ich die Partitionen auf das alte Laufwerk und fügte sie auf das neue ein (ebenfalls mit GParted).
  4. Als Nächstes fügte ich der richtigen Partition auf dem neuen Laufwerk das Startflag hinzu, sodass es praktisch ein Spiegel des alten Laufwerks war.

Das hat alles gut funktioniert, aber ich musste grub2 gemäß den Anweisungen hier aktualisieren .

Nachdem dies alles erledigt war, scheinen die Dinge zu funktionieren.

mlissner
quelle