Bienvenido! - Willkommen! - Welcome!

Bitácora Técnica de Tux&Cía., Santa Cruz de la Sierra, BO
Bitácora Central: Tux&Cía.
Bitácora de Información Avanzada: Tux&Cía.-Información
May the source be with you!

Saturday, December 10, 2011

Ubuntu auf andere Festplatte kopieren

Quelle
Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

Eine Installation von einer alten Festplatte auf eine neue Festplatte kopieren
(mit der gleichen MoBo).
Eine andere Art von Umzug ist es, wenn 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 deinstalliert, oder ggf. benutzte spezielle Bootoptionen anpasst, falls diese nicht auch für das neue System passen.
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 usw.
Da es eine Vielzahl an Installationsmöglichkeiten und Spezialfälle gibt, die dieser Artikel nicht alle abdecken kann, wird nur die "Standardinstallation" berücksichtigt:
  • eine Partition für das System
  • eine Partition für swap
Informationen zum umziehen einer Software-RAID Installation gibt es z.B. auf ubuntuforums.org {en}
Im folgenden Beispiel wird angenommen: Das umzuziehende Standardsystem ist auf der Festplatte sda installiert und soll auf die neue Festplatte sdb kopiert werden. Das Homeverzeichnis befindet sich mit im Root-Dateisystem (selbe Partition).
Achtung!
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).
Überblick verschaffen 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.
Ubuntu LiveCD herunterladen Zu allererst wird die Desktop-CD von Ubuntu benötigt, diese kann hier heruntergeladen werden. Wichtig ist bein 64 Bit Systemen entsprechend ein 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.
Partition erstellen Nach dem Booten werden zuerst die aktuellen Festplattenbezeichnungen ermittelt:
sudo fdisk -l 
Die Ausgabe könnte folgendermaßen aussehen:
vergrößern
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:
  • Systempartition ("/"): muss mit einem Linux-tauglichen Dateisystem formatiert werden
  • Swap-Partition ("/swap"): siehe Swap-Partition erstellen

Hinweis:
Eine ausführliche Anleitung zum Partitionieren erhält man hier: Partitionierung und Manuelle Partitionierung

Partitionen unter der LiveCD einbinden
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:
sudo mkdir /mnt/alt
sudo mount /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 
Daten mit dem Programm rsync kopieren Nun kopiert man alle Dateien mit dem Befehl rsync von der alten Partition zur neuen:
sudo rsync --stats --progress --numeric-ids -aAhHSP  /mnt/alt/ /mnt/neu/ 
Hinweis:
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.
Alternative - Daten mit dem Programm cp kopieren Kopierbefehl mit cp:
sudo cp -a /mnt/alt /mnt/neu  # Kopieren mit Übernahme alter Dateiinformationen und detaillierter Ausgabe 
Hinweis:
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!
fstab 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, ob wohl es erfolgreich kopiert wurde. Für die Einträge in fstab wird die UUID benötigt, siehe UUID.
Hinweis:
Da Ubuntu seit Edgy Eft statt der Schreibweise /dev/xxx UUIDs benutzt, verweisen die Daten in der fstab sowie auch in menu.lst 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=4dbbaf05-b0bb-4e3b-bba6-61c8d5d62a77 /  ext3  relatime,error s=remount-ro 0  1
# /dev/sda2 
UUID=3d5ede6f-1c19-4bc2-84da-68fdb1f70c85  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.
GRUB
Hinweis:
Hier wird die Einrichtung von GRUB 2 beschrieben. Falls das System mit dem „alten“ GRUB gelaufen ist, muss nach dieser Anleitung vorgegangen werden.
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 
Danach kann man mit
sudo chroot /mnt 
in das installierte System wechseln. Mit dem Befehl:
grub-setup /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.
Abschließend 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- angepasst werden:
RESUME=UUID=
Danach muss das initrd-Image neu geschrieben werden, das geht über folgenden Terminalbefehl:
sudo update-initramfs -u 

No comments: