Kurzanleitungen/Howtos
Möchte man seine bereits auf einer normalen Festplatte fertig eingerichtete Linux-Partition auf eine schnellere SSD umziehen, die HDD aber weiterhin im System behalten, ergeben sich hieraus ein paar zu beachtende Punkte. Diese Kurzanweisung zeigt exemplarisch den Umzug einer Linux- und zugehöriger UEFI-Partition von /dev/sda auf /dev/nvme0n1. Die folgenden Schritte sollten unter einem Live-Linux durchgeführt werden, damit Quell- und Ziellaufwerk nicht eingebunden sind.
Sie sollte auch hier – wie immer bei solchen Systemeingriffen – vorher eine Sicherung anlegen. Alle Daten auf der SSD gehen verloren!
sfdisk -d /dev/sda > sda.part
Das Resultat sieht dann z.B. wie folgt aus:
label: gpt
label-id: 37266872-F7BE-4630-80E4-D5C6DDCBC58A
device: /dev/sda
unit: sectors
first-lba: 34
last-lba: 2906091234
/dev/sda1 : start= 2048, size= 1048576, type=EBD0A0A2-B9E5-4433-87C0-68B6B72699C7, uuid=10C43D83-C14F-CFE2-BF38-1D641E94F63B, name="primary"
/dev/sda2 : start= 1050624, size= 104857600, type=0FC63DAF-8483-4772-8E79-3D69D8477DE4, uuid=3853B7D6-93AA-F6DB-0F61-0C2BCF05FC05, name="primary"
/dev/sda3 : start= 105908224, size= 2048000000, type=EBD0A0A2-B9E5-4433-87C0-68B6B72699C7, uuid=7B14311C-3F4D-3CD5-7841-12B9F96D0729
Hinter den kryptischen Werten nach "type" verbergen sich die Partitionstypen wie Linux-Swap oder EFI. Hier ist /dev/sda1 die EFI-Partition, /dev/sda2 das Linux-System und /dev/sda3 eine Daten-Partition.
sfdisk /dev/nvme0n1 < sda.part
partclone.vfat -b -s /dev/sda1 -o /dev/nvme0n1p1
partclone.ext4 -b -s /dev/sda2 -o /dev/nvme0n1p2
blkid
Die Ausgabe sieht dann z.B. so aus:
/dev/nvme0n1p1: UUID="1234-5678" TYPE="vfat" PARTLABEL="primary" PARTUUID="abc7d731-1c36-4784-b5c6-dc84ca5c6cfb"
/dev/nvme0n1p2: UUID="12345678-1234-5678-90ab-cdef12345678" TYPE="ext4" PARTLABEL="primary" PARTUUID="abc91ada-8df7-463a-a9bc-5af91e418d4d"
Für das Ändern der PARTUUID von VFat-Partitionen gibt es leider kein entsprechendes Programm, weshalb Sie die UUID direkt in die Partition schreiben müssen. Glücklicherweise hat Rod Smith einen Zweizeiler veröffentlicht, der das Ändern vornimmt:
UUID='ABC1-1C4B'
printf "\x${UUID:7:2}\x${UUID:5:2}\x${UUID:2:2}\x${UUID:0:2}" | dd bs=1 seek=67 count=4 conv=notrunc of=/dev/nvme0n1p1
Für die Linux-Partition übernimmt tune2fs (nach Herstellen eines sauberen Dateisystemzustandes mittels e2fsck) das Setzen der geänderten UUID:
e2fsck -f /dev/nvme0n1p2
tune2fs /dev/nvme0n1p2 -U abce1234-1234-5678-90ab-cdef12345678
Nachdem Sie die geänderten UUIDs in die Partitionen geschrieben haben, müssen Sie diese in Konfigurationsdateien auf der Ziel-SSD ebenfalls eintragen, damit der Rechner zukünftig von der SSD und nicht mehr von der HDD bootet.
Erstellen Sie zuerst Mountpunkte für die auf die SSD geklonten EFI- und Linux-Partition und mounten diese anschließend:
mkdir /tmp/nvme0n1p1
mkdir /tmp/nvme0n1p2
mount /dev/nvme0n1p1 /tmp/nvme0n1p1
mount /dev/nvme0n1p2 /tmp/nvme0n1p2
Ändern Sie die UUIDs in den folgenden Dateien (sofern vorhanden):
Damit der Rechner auch von der SSD booten kann, müssen Sie den Bootmanager grub direkt auf der SSD installieren, nachdem Sie in die Linux-Partition der SSD "gechrootet" sind:
# Zum Mountpunkt der Linux-Partition der SSD wechseln
cd /tmp/nvme0n1p2
# Pseudodateisysteme einbinden, aus denen grub Informationen auslesen muß
mount -t proc proc proc/
mount -t sysfs sys sys/
mount -o bind /dev dev/
# Aktuelles Wurzelverzeichnis wechseln
chroot .
# EFI-Partition einbinden
mount /boot/efi/
# grub installieren
grub-install /dev/nvme0n1
# Vorhandene Linux-Kernel suchen und ins grub-Menü aufnehmen
update-grub
# chroot-Umgebung verlassen
exit
# Rechner neustarten
reboot
mount | grep ' / '
Hier sollte nun stehen, daß das root-Dateisystem auf /dev/nvme0n1p2 liegt.
Die folgenden Anweisungen richten sich ausschließlich an fachkundige Personen.
Bei jedem Schritt kann es zum kompletten Datenverlust kommen. Alle Angaben ohne Gewähr!
Die Anweisungen, Skripte, etc. sind ausschließlich für Lernzwecke auf Lernsystemen und nicht für Produktivumgebungen bestimmt!