Start   Impressum   Lizenz         online lesen   Download         Online-Shop   Jumping Blue Turtle

Debian für Unternehmer - Debian-Know-how

4050: Auf andere Hardware umziehen

In 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. Fallbeispiel

Ich 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:

  • ein Startrampen-Linux auf "/dev/sda2"
  • ein Arbeitssystem auf "/dev/sda6"
  • ein Testsystem auf "/dev/sda7"
  • eine Datenpartition "system_local" auf "/dev/sda9"
  • eine SWAP-Partition auf "/dev/sda10"
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:

  • das Startrampen-Linux auf "/dev/sda2"
  • das Arbeitssystem auf "/dev/sda7"
  • das Testsystem auf "/dev/sda5"
  • die Datenpartition "system_local" auf "/dev/sda11"
  • die SWAP-Partition auf "/dev/sda14"
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 partitionieren

Partitionieren Sie die Zielfestplatte mit einem entsprechenden Tool. Ich empfehle "cfdisk", denn "cfdisk" ist sehr leicht zu bedienen.

3. Die Zielpartitionen formatieren

Unser 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 setzen

Geben 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 kopieren

Mounten 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 anpassen

Editieren 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" anpassen

Editieren 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 beschreiben

Kommen 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.