Dieser Artikel beschreibt, wie man eine vorhandene Ubuntu-Installation auf eine neue Festplatte kopieren kann. Es gibt viele Gründe, warum man eine Installation auf eine andere Festplatte umziehen möchte: kein freier Speicherplatz mehr, eine neue leistungsfähigere Festplatte oder ein neuer PC wurde angeschafft.
Eine andere Art von Umzug ist es, wenn vorhandene Festplatten einfach in einen anderen Computer eingebaut werden. Dies ist meist ohne weiteres möglich, sofern die neue Hardware unterstützt wird, und man ggf. benutzte proprietäre Grafiktreiber vorher deinstalliert. Manchmal muss man auch die Bootoptionen anpassen, falls diese nicht auch für das neue System passen.
Da es eine Vielzahl an Installationsmöglichkeiten und Spezialfällen gibt, die dieser Artikel nicht alle abdecken kann, wird nur die "Standardinstallation" berücksichtigt:
eine Partition für das System
ggf. eine Boot-Partition, falls im bisherigen System vorhanden (in einem (U)EFI-System obligatorisch)
eine Partition für swap
Informationen zum Umziehen eines Software-RAID gibt es z.B. auf ubuntuforums.org
Im folgenden Beispiel wird von folgenden Annahmen ausgegangen:
Das umzuziehende Standardsystem ist auf der Festplatte sda installiert und
soll auf die neue Festplatte sdb kopiert werden
Das Homeverzeichnis befindet sich im Root-Dateisystem (auf der gleichen Partition)
Durch Tippfehler z.B. beim Kopieren des Betriebssystems kann das alte System unbrauchbar werden. Daher wird dringend empfohlen, zuvor ein Backup zu erstellen (siehe Datensicherung)!
Zunächst sollte man sich einen Überblick über das System verschaffen und die Partitionen identifizieren, auf denen sich das Root-System befindet.
Über den Befehl [1]:
mount | egrep ^/dev/
erhält man eine Liste der eingebundenen Geräte. Besonders interessant ist das Root-Dateisystem (im Beispiel sda1), das als Wurzelverzeichnis (/) eingebunden ist:
/dev/sda1 on / type ext3 (rw)
Hat man ein anderes Dateisystem, wie ReiserFS oder ext4, ist das Wort hinter type
natürlich reiserfs
oder ext4
. Ebenso kann die Zahl hinter sda
variieren, wenn man Ubuntu nicht auf der 1. Partition liegen hat.
Man erkennt, dass das Root-Filesystem auf der ersten Partition der Festplatte /dev/sda eingebunden ist. Man sollte sicherheitshalber in der Liste überprüfen, dass sich das gesamte Ubuntu-System auf dieser Partition befindet. Tauchen in der Liste noch andere Einträge auf, wie z.B. /dev/sda2 on /home ext3 (...)
, so befindet sich das System verteilt auf verschiedene Partitionen. Das bedeutet, dass man dies beim späteren Anlegen der Partitionen auf der neuen Platte und beim Kopieren der Daten berücksichtigen muss.
Zuallererst wird die Desktop-CD von Ubuntu benötigt, diese kann hier heruntergeladen werden. Wichtig ist bei 64 Bit Systemen entsprechend eine 64 Bit ISO herunterzuladen, da chroot andernfalls nicht korrekt funktioniert. Nach dem Download wird das ISO-Image der Live-CD auf eine CD gebrannt.
Nun wird die neue Festplatte zusätzlich zur alten in den Computer eingebaut. Danach bootet man von der Ubuntu-LiveCD.
Nach dem Booten werden zuerst die aktuellen Festplattenbezeichnungen ermittelt:
sudo fdisk -l
Die Ausgabe könnte folgendermaßen aussehen:
Platte /dev/sda: 500.1 GByte, 500107862016 Byte 255 Köpfe, 63 Sektoren/Spuren, 60801 Zylinder Einheiten = Zylinder von 16065 × 512 = 8225280 Bytes Disk identifier: 0x000da950 Gerät boot. Anfang Ende Blöcke Id System /dev/sda1 * 1 60737 487869921 83 Linux /dev/sda2 60738 60801 514080 82 Linux Swap / Solaris Platte /dev/sdb: 250.0 GByte, 250059350016 Byte 255 Köpfe, 63 Sektoren/Spuren, 30401 Zylinder Einheiten = Zylinder von 16065 × 512 = 8225280 Bytes Disk identifier: 0x0007f522 Gerät boot. Anfang Ende Blöcke Id System
Die Festplatte sda enthält das zu kopierende System in zwei Partitionen: Auf der ersten befindet sich das Ubuntu-System, die zweite Partition ist eine Swap-Partition. Die Festplatte sdb ist komplett leer, es befinden sich keine Partitionen darauf.
Nun muss man die Festplatte sdb mit GParted analog der alten Festplatteneinteilung sda einrichten. Mit analog ist hier die Anzahl der Partitionen gemeint, nicht die Größe. Letztere kann an die tatsächlichen Gegebenheiten angepasst werden:
ggf. eine Boot Partition, falls bisher auch schon verwendet
Systempartition ("/"): muss mit einem Linux-tauglichen Dateisystem formatiert werden
Swap-Partition ("/swap"): siehe Swap-Partition erstellen
Eine ausführliche Anleitung zum Partitionieren erhält man hier: Partitionierung und Manuelle Partitionierung
Nach dem nun die neue Festplatte erfolgreich eingerichtet wurde, hängt man die neue Root-Partition wie auch die alte ein. In diesem Beispiel wird davon ausgegangen, dass das bestehende System auf sda1 liegt und die Partition auf der neuen Festplatte sdb1 ist. Dazu werden neue Ordner erstellt und die Partitionen dort eingebunden. Im Terminal werden folgende Befehle für die alte Festplatte benötigt, die mit der Option -o ro nur Read-only gemountet wird, damit nicht aus Versehen die bestehende Installation verändert werden kann:
sudo mkdir /mnt/alt sudo mount -o ro /dev/sda1 /mnt/alt
Dann hängt man die neue Festplatte bzw. Partition, auf die das "neue" Betriebssystem kopiert werden soll, ein.
sudo mkdir /mnt/neu sudo mount /dev/sdb1 /mnt/neu
Falls separate Boot Partitionen genutzt werden, sollten diese ebenfalls gemountet werden:
sudo mkdir /mnt/alt/boot sudo mkdir /mnt/neu/boot sudo mount /dev/sdaX /mnt/alt/boot sudo mount /dev/sdbX /mnt/neu/boot
Nun kopiert man alle Dateien mit dem Befehl rsync von der alten Partition zur neuen:
sudo rsync --stats --progress --numeric-ids -axAhHSP /mnt/alt/ /mnt/neu
Um den Kopiervorgang zu beschleunigen, kann zusätzlich die Option --quiet
gesetzt werden. Dies bewirkt das keine Hinweismeldungen ausgegeben werden, was den Flaschenhals der Ausgabegeschwindigkeit der Konsole umgeht. Nutzt man diese Variante, so läuft der Kopiervorgang, bis auf Fehlermeldungen, blind ab.
Möchte man sicherstellen, dass die Betriebssystem-Kopie vollständig ist und mit dem Original exakt übereinstimmt, kann man einen zweiten Durchlauf mit rsync machen. Mit der zusätzlichen Option -c wird dann Quelle und Ziel per Prüfsummen verglichen:
sudo rsync --stats --progress --numeric-ids -axAhHSPc /mnt/alt/ /mnt/neu
Ohne Auflistung geänderter Dateien ist die Kopie erfolgreich.
rsync ist dem Shell-Befehl cp vorzuziehen.
Bei einer defekten Festplatte kann es vorkommen, dass der Kopiervorgang einfach "hängen bleibt", ggf. friert sogar das gesamte System beim Zugriff auf defekte Sektoren ein. Tritt dieses Problem auf, ist ein schrittweises Kopieren der Daten nötig. Man nimmt sich also analog zu obiger Syntax jedes Verzeichnis einzeln vor. Wird der Kopiervorgang für ein Verzeichnis erfolgreich abgeschlossen, wendet man sich dem nächsten zu - nachdem man mit dem Befehl sync
sichergestellt hat, dass die kopierten Daten aus dem Cache auch auf die Platte geschrieben wurden. Kommt es zu besagtem "Hänger", ist die verursachende Datei die letzte in der Ausgabe des Kopierbefehls - diese darf also beim Kopieren nicht (mehr) angefasst, und muss stattdessen später aus einem (hoffentlich vorhandenen) Backup wieder hergestellt werden.
Kopierbefehl mit cp:
sudo cp -avxT /mnt/alt /mnt/neu # Kopieren mit Übernahme alter Dateiinformationen und detaillierter Ausgabe
Der Kopiervorgang kann je nach Datenvolumen (und Leistungsfähigkeit des Rechners) etwas mehr Zeit in Anspruch nehmen. Man sollte daher mind. 1-2 Stunden einberechnen!
Als nächstes muss man die Datei /etc/fstab auf der neuen Partition ändern. Falls man das vergisst, kann Ubuntu von der neuen Festplatte nicht gestartet werden, obwohl es erfolgreich kopiert wurde. Für die Einträge in fstab wird die UUID benötigt, siehe UUID.
Da Ubuntu seit Edgy Eft statt der Schreibweise /dev/xxx
UUIDs benutzt, verweisen die Daten in der fstab sowie auch in grub.cfg nach wie vor auf die "alte" Festplatte. Wer sich mit der "alten" Device-Schreibweise leichter tut, kann bei den Anpassungen natürlich auch diese wieder verwenden - es sollten jedoch Vor- und Nachteile gut abgewogen werden. Näheres dazu findet sich an dieser Stelle.
Die UUIDs aller angeschlossenen Laufwerke lassen sich mit folgendem Befehl anzeigen:
sudo blkid
Beispiel:
/dev/sda1: UUID="eb95423b-612f-416b-ad31-02bfedfd74d3" TYPE="ext3" #Alte root-Partition /dev/sda2: TYPE="swap" UUID="ee472e83-66a8-4397-8648-69abe711a467" #Alte swap-Partition /dev/sdb1: UUID="6346681b-b88a-4c75-8882-81fa4e731d18" TYPE="ext3" #Neue root-Partition /dev/sdb2: TYPE="swap" UUID="44887afe-b82b-4fa5-bab6-68afebc4599d" #Neue swap-Partition
Die UUID der neuen Partition (sdb1) lautet hier: 6346681b-b88a-4c75-8882-81fa4e731d18
. Nun öffnet man die Datei /etc/fstab auf sdb1 in einem Editor[2] mit Root-Rechten[4] und sucht nach den Einträgen der einzuhängenden Partitionen. Hier ein Beispiel:
# /dev/sda1 UUID=eb95423b-612f-416b-ad31-02bfedfd74d3 / ext3 relatime,error s=remount-ro 0 1 # /dev/sda2 UUID=ee472e83-66a8-4397-8648-69abe711a467 none swap sw 0 0
Diese ändert man wie folgt ab:
# /dev/sdb1 UUID=6346681b-b88a-4c75-8882-81fa4e731d18 / ext3 relatime,error s=remount-ro 0 1 # /dev/sdb2 UUID=44887afe-b82b-4fa5-bab6-68afebc4599d none swap sw 0 0
Dabei werden jeweils die UUIDs ausgetauscht und dazu noch der Kommentar (alles hinter dem #) zur späteren Übersichtlichkeit geändert.
Für die chroot-Umgebung muss die Architektur des Livesystems (32-Bit- bzw. 64-Bit-Architektur) identisch sein.
Als nächstes muss der GRUB 2 auf der Festplatte sdb installiert werden. Um Verwechslungen zu vermeiden und um sicherzustellen, dass das System mit der neuen Platte läuft, empfiehlt es sich, das Livesystem herunterzufahren, die alte Platte abzuklemmen und das Livesystem wieder zu starten. Jetzt heisst die neue (und einzige) Platte sda.
Zur Installation des Bootloaders muss mit chroot in das Wurzelverzeichnis der Installation gewechselt werden.
Dazu muss zuerst die Partition eingebunden werden:
sudo mount /dev/sda1 /mnt
Damit im installierten System alle wichtigen Systeminformationen zur Verfügung stehen:
sudo mount -o bind /dev /mnt/dev sudo mount -o bind /sys /mnt/sys sudo mount -t proc /proc /mnt/proc
Falls es eine separate boot-Partition gibt, muss diese noch mit:
sudo mount -t vfat /dev/sda2 /mnt/boot/efi
eingehängt werden.
Danach kann man mit
sudo chroot /mnt
in das installierte System wechseln. Mit dem Befehl:
update-grub2 grub-install /dev/sda
wird GRUB 2 in den MBR der neuen Platte geschrieben. Mit
update-grub
wird die Konfigurationsdatei aktualisiert. Jetzt kann mit
exit
die chroot-Umgebung verlassen werden.
Es sollten noch die beiden Dateien 70-persistent-cd.rules und 70-persistent-net.rules im Verzeichnis /mnt/etc/udev/rules.d der neuen Festplatte gelöscht werden. Dort hat das Udev-System die Einstellungen für Netzwerkkarte bzw. optisches Laufwerk des Originalsystems hinterlegt. Fehlen diese Dateien, werden sie beim Booten des neuen Systems entsprechend angelegt.
Nach einem Neustart sollte der Rechner jetzt mit dem umgezogenen System normal starten. Bei Problemen startet man den Rechner erneut mit der Live-CD und kontrolliert nochmal sorgfältig die UUIDs und die GRUB 2-Konfiguration.
Falls der Ruhezustand (suspend-to-disk) genutzt werden soll, muss die Datei /etc/initramfs-tools/conf.d/resume mit Root-Rechten editiert werden und folgende Zeile eingefügt bzw. mit der eigenen Swap- <UUID> angepasst werden:
RESUME=UUID=<UUID>
Eventuell ist es zusätzlich notwendig, /etc/uswsusp.conf und/oder /etc/suspend.conf anzupassen:
resume device = /dev/disk/by-uuid/<UUID>
Danach muss das initrd-Image neu geschrieben werden, das geht über folgenden Terminalbefehl:
sudo update-initramfs -u
Clonezilla - englischsprachiges Profi-Werkzeug zum Duplizieren ("Klonen") von Festplatten
https://bugs.launchpad.net/ubuntu/+source/cryptsetup/+bug/497110/comments/3 - Ubuntu-Bugreport 497110 für cryptsetup
Diese Revision wurde am 6. März 2017 10:05 von bjoern-h erstellt.