4050: Auf andere Hardware umziehenIn diesem Modul zeige ich Ihnen, wie Sie mit wenig Aufwand ein bestehendes Debian-Linux nahezu unverändert auf eine andere Festplatte oder in eine andere Partition übertragen können. Zu den hier vorgestellten Methoden finden Sie in folgenden Modulen weitere Hintergrundinformationen:
1. FallbeispielIch werde Ihnen die nötigen Schritte an einem konkreten Beispiel zeigen. In diesem Beispiel wird ein Umzug von Rechner A auf Rechner B stattfinden. 1.1. Ausstattung Rechner A
Quell-Rechner A hat eine interne Festplatte, auf der sich folgende Elemente befinden:
1.2. Ausstattung Rechner B
Ziel-Rechner B hat keine interne Festplatte. Die zu migrierenden Elemente sollen sich im Endzustand auf einer externen eSATA-Festplatte befinden. Und zwar, wie folgt:
1.3. Migrations-Szenario
Der einfachste Weg die gewünschten Elemente von A nach B zu bewegen ist, die externe eSATA-Festplatte zunächst an Rechner A anzuschließen. Dort erscheint sie dann als "/dev/sdb". Ob sie wirklich als "/dev/sdb" erscheint, das finden Sie bitte heraus, indem Sie den folgenden Befehl eingeben: fdisk -l Wenn die Elemente fertig kopiert sind, dann kann die externe eSATA-Festplatte an Rechner B angeschlossen werden. Anschließend ist Rechner B sofort betriebsbereit.
2. Zielfestplatte partitionierenPartitionieren Sie die Zielfestplatte mit einem entsprechenden Tool. Ich empfehle "cfdisk", denn "cfdisk" ist sehr leicht zu bedienen. 3. Die Zielpartitionen formatierenUnser Beispiel geht davon aus, dass die Quellpartitionen als "ext3" formatiert worden sind. Dementsprechend bietet es sich an, auch die Zielpartitionen als "ext3" zu formatieren. So geht es: mke2fs -j /dev/sdb2 mke2fs -j /dev/sdb7 mke2fs -j /dev/sdb5 mke2fs -j /dev/sdb11 Entscheiden Sie jetzt, nach welchen Regeln die Partitionen unter bestimmten Umständen regelmäßig gecheckt werden. Ich empfehle alle 50 Mounts oder alle 6 Monate, je nachdem, welcher Fall früher eintritt: tune2fs -i 6m -c 50 /dev/sdb2 tune2fs -i 6m -c 50 /dev/sdb7 tune2fs -i 6m -c 50 /dev/sdb5 tune2fs -i 6m -c 50 /dev/sdb11 Mit diesen Festlegungen finden diese nervigen und aufgrund der Größe der Partitionen vor allem langen Checks nicht so oft statt. Zum Schluss formatieren wir noch schnell die SWAP-Partition, damit die Betriebssysteme sie benutzen können: mkswap /dev/sdb14 4. Labels setzenGeben Sie den neu erzeugten Partitionen aussagekräftige Namen: e2label /dev/sdb2 startrampe e2label /dev/sdb7 os3 e2label /dev/sdb5 os1 e2label /dev/sdb11 system_local1 5. Inhalte kopierenMounten Sie jetzt die Quell- und Ziel-Partitionen: mount /dev/sda2 /mntA/sda2 mount /dev/sda6 /mntA/sda6 mount /dev/sda7 /mntA/sda7 mount /dev/sda9 /mntA/sda9 mount /dev/sdb2 /mntB/sdb2 mount /dev/sdb7 /mntB/sdb7 mount /dev/sdb5 /mntB/sdb5 mount /dev/sdb11 /mntB/sdb11 Kopieren Sie anschließend die Daten in die Ziel-Partitionen. Dazu können Sie zum Beispiel den "Midnight Commander" benutzen. Achten Sie beim Kopieren der Betriebssysteme darauf, dass sie immer nur die Betriebssysteme kopieren, die gerade nicht gebootet sind. 6. /etc/fstab anpassenEditieren Sie in jeder Partition, die ein Betriebssystem enthält, die folgende Datei: /etc/fstab In der "fstab" müssen die bei jedem Rechner-Neustart automatisch eingebundenen Partitionen den neuen Umständen der neuen Umgebung angepasst werden. In unserem Beispiel müssen alle Vorkommen wie folgt verändert werden: /dev/sda2 --> /dev/sda2 /dev/sda6 --> /dev/sda7 /dev/sda7 --> /dev/sda5 /dev/sda9 --> /dev/sda11 /dev/sda10 --> /dev/sda14 7. "grub" anpassenEditieren Sie in jeder Partition, die ein Betriebssystem enthält, nun auch die folgende Datei: /boot/grub/menu.lst Auch hier müssen die Vorkommen entsprechend geändert werden: /dev/sda2 --> /dev/sda2 & (hd0,1) --> (hd0,1) /dev/sda6 --> /dev/sda7 & (hd0,5) --> (hd0,6) /dev/sda7 --> /dev/sda5 & (hd0,6) --> (hd0,4) /dev/sda9 --> /dev/sda11 /dev/sda10 --> /dev/sda14 Denken Sie auch daran, dass Ihr Hauptbootmenü eventuell ein anderes Default-System braucht, wenn Ihr bisheriges Default-System nun eine andere Position im Bootmenü inne hat. 8. Die Bootsektoren beschreibenKommen wir nun zum spannendsten Teil der Aktion: Die neue Festplatte soll natürlich exakt die gleichen Bootfähigkeiten besitzen, wie die alte. Das künftig auf "/dev/sda2" befindliche System ist ein Startrampensystem und soll dementsprechend im MBR verankert werden. Sie erreichen das wie folgt: grub-install --root-directory=/mntB/sdb2 /dev/sdb Erklärung: Die Angabe hinter "--root-directory" entspricht der gemounteten Partition, die das "/"-Verzeichnis wäre, wenn Sie das in dieser Partition befindliche Betriebssystem gebootet hätten. In dieser Partition befinden sich die Bootmenü-Daten, die "grub" mit dem Ziel-Bootsektor (hier der MBR der zweiten Festplatte) verknüpft. Die anderen beiden Systeme haben je ein lokales Bootmenü. Dementsprechend wird ihr lokales Grub in die Bootsektoren dieser Partitionen verankert: grub-install --root-directory=/mntB/sdb7 /dev/sdb7 grub-install --root-directory=/mntB/sdb5 /dev/sdb5 Wenn einer der abgesetzten "grub-install"-Befehle mit einem /dev/sdb7 does not have any corresponding BIOS drive. quittiert wird, dann wurde der Bootsektor nicht beschrieben, weil "grub" den zu verändernden Bootsektor nicht finden kann. Das ist kein Problem, denn Sie müssen "grub" nur sagen, wo er ist. Dazu öffnen Sie die "device.map" der entsprechenden Partition: /mntB/sdb7/boot/grub/device.map Dort steht möglicherweise nur drin, dass "grub" die aktuelle interne Festplatte von Rechner A kennt: (hd0) /dev/sda In dem Moment, in dem "grub" den Bootsektor der Partition "/dev/sdb7" verändern soll, muss "grub" aber auch die Position der per eSATA angeschlossenen externen Festplatte kennen (sie hat in dem Moment die Position hd1). Tragen Sie diese Information also in die "device.map" ein: (hd0) /dev/sda (hd1) /dev/sdb Versuchen Sie das "grub-install" erneut. Nun sollte "grub" wissen, welche Partition gemeint ist. Jetzt können Sie die neue Festplatte an Rechner B anschließen und die darauf befindlichen Betriebssysteme booten.
|