105 votes

Déplacer l'ensemble de l'installation Linux vers un autre lecteur

J'ai Ubuntu 14.04 avec beaucoup de packages et de choses liées au travail dont je suis très content. Il est installé sur mon SSD principal qui est un SSD de 120 Go (j'avais choisi "/" lors de l'installation d'Ubuntu, donc je crois que tout devrait être sur ce SSD). Il apparaît comme /dev/sda

Maintenant, j'ai ajouté un autre SSD à mon ordinateur qui est un 240 Go. Je n'ai aucun autre support de stockage sous la main pour le moment (par exemple un disque dur externe).

Étant donné que le nouveau SSD de 240 Go a évidemment plus de capacité et est plus rapide (d'une génération plus récente que mon SSD de 120 Go), je veux déplacer mon système Linux sur ce nouveau disque. Ce nouveau disque apparaît comme /dev/sdb et pour le moment il n'est pas formaté ou rien du tout (je viens de le déballer et de l'insérer dans mon PC pour le moment :P)

Comment puis-je déplacer en toute sécurité mon installation Linux vers le nouveau disque?

Je peux changer le câble SATA pour que le nouveau disque apparaisse comme /dev/sda si nécessaire.

Voici la sortie de "fdisk -l" si cela peut aider:

Disque /dev/sda: 120,0 Go, 120034123776 octets
255 têtes, 63 secteurs/piste, 14593 cylindres, total 234441648 secteurs
Unités = secteurs de 1 * 512 = 512 octets
Taille de secteur (logique/physique) : 512 octets / 4096 octets
taille d'E/S (minimale/optimale) : 4096 octets / 4096 octets
Identifiant de disque : 0x00076d7a

   Périphérique Amorçage   Début         Fin      Blocs   Id  Système
/dev/sda1   *        2048   226064383   113031168   83  Linux
/dev/sda2       226066430   234440703     4187137    5  Étendue
La partition 2 ne  commence pas sur une frontière de secteur physique.
/dev/sda5       226066432   234440703     4187136   82  Linux swap / Solaris

Disque /dev/sdb: 240,1 Go, 240057409536 octets
255 têtes, 63 secteurs/piste, 29185 cylindres, total 468862128 secteurs
Unités = secteurs de 1 * 512 = 512 octets
Taille de secteur (logique/physique) : 512 octets / 512 octets
taille d'E/S (minimale/optimale) : 512 octets / 512 octets
Identifiant de disque : 0x00000000

Disque /dev/sdb ne contient pas de table de partitions valide

2voto

zenitis Points 99

J'ai décidé de faire une expérience liée à ce post.

J'ai acquis un Lenovo ThinkCentre. Il avait un SSD de 256 Go et un HDD de 1 To (type spinner - rapide, mais pas aussi rapide qu'un SSD).

Lorsque j'ai installé Linux Mint 19.2 (LM19.2), il l'a installé sur le disque de 1 To. Le SSD s'est avéré irrécupérable, et j'ai acheté un nouveau SSD Kingston de 240 Go.

J'allais installer LM19.2 sur le nouveau SSD, mais il semblait qu'il devait y avoir un moyen de transférer mon image LM19.2 bien développée du disque de 1 To sur le nouveau SSD.

J'ai trouvé ce post, et bien qu'il y ait de bons conseils ci-dessus, j'étais dans une phase d'expérimentation. Voici un compte rendu de ce que j'ai fait, et cela a fonctionné TRÈS bien.

  1. J'ai utilisé GParted pour créer une table de partition et une partition sur le SSD qui étaient de mêmes types que ceux sur le HDD de 1 To.
  2. J'ai effectué une capture instantanée TimeShift (nouvel outil dans Ubuntu / Linux Mint) de TOUT sur le HDD LM19.2 de 1 To.
  3. J'ai restauré cette capture instantanée sur le SSD.
  4. Une fois les étapes ci-dessus terminées (vous pouvez même faire 1 en parallèle avec 2 et 3), j'ai redémarré en m'assurant qu'il choisirait le SSD.
  5. La seule chose étrange lors du redémarrage était que l'écran de démarrage INITIAL de Grub demandait si je voulais démarrer sur Ubuntu. J'ai supposé que c'était particulier à la restauration de TimeShift, et c'était le cas.
  6. Les démarrages suivants se sont effectués normalement comme le fait habituellement LM19.2.
  7. Je vais modifier cette réponse une fois que j'aurai vérifié que je peux faire cela avec un nouveau disque branché sur le PC en externe (et il semble évident que cela fonctionnera), car cela signifierait que je pourrais rapidement reproduire l'un de mes machines LM sur un nouveau matériel.

La vitesse de démarrage seule a rendu ces simples étapes valant l'effort. Même Dropbox a été transféré correctement - il m'a simplement demandé de me reconnecter, et cela a pris un certain temps pour indexer les fichiers, mais cela a très bien fonctionné.

1voto

Pe Dro Points 111

Je utilise toujours la procédure suivante:

  1. Vérifiez que votre installation inclut un gestionnaire de partitions (PM). Sinon, installez gparted.
  2. Connectez le nouveau disque via un adaptateur USB. Vérifiez bien avec PM quel disque est lequel. Normalement, l'ancien est /dev/sda et le nouveau /dev/sdb, mais il vaut mieux être prudent. Si vous confondez les disques, vous risquez simplement d'effacer l'installation existante. N'oubliez pas: dd n'est pas surnommé destructeur de disque pour rien.
  3. Utilisez dd comme expliqué ci-dessus par ljrk pour copier l'ancien disque octet par octet sur le nouveau. Ajoutez status=progress aux options de dd pour suivre la progression.
  4. Démarrer le PM. Sur le nouveau disque, créez puis détruisez une partition temporaire remplissant l'espace excédentaire. Cela permet de réécrire la table des partitions en fonction de la taille du nouveau disque. Important: la séquence d'actions doit être créer-appliquer-détruire-appliquer.
  5. En utilisant le PM, redimensionnez les partition(s) sur le nouveau disque selon vos préférences afin d'utiliser tout le disque.
  6. Éteignez, échangez les disques, redémarrez, assurez-vous que tout fonctionne correctement.

Si vous souhaitez également utiliser l'ancien disque comme un disque interne:

  1. Connectez l'ancien disque via l'adaptateur USB, formatez-le et partitionnez-le selon vos préférences.
  2. Éteignez, installez l'ancien disque aux côtés du nouveau, puis redémarrez.

Si vous voulez utiliser l'ancien disque comme partie de votre système de fichiers, ajoutez quelque chose du genre,

UUID=uuid-actuel-ici /data ext4 par défaut, discard 0 2

dans /etc/fstab, puis exécutez sudo mount -a, ou redémarrez.

Si vous n'avez pas d'adaptateur USB, la même procédure devrait fonctionner avec l'échange à chaud des disques, mais ici vous êtes seul. Une façon plus sûre est d'utiliser un disque USB ou un CD/DVD avec un système installé (par exemple, un support d'installation). Dans ce cas, vous pouvez placer les deux disques (le nouveau et l'ancien) à leur place dès le départ, puis démarrer depuis le support et effectuer la copie, etc.

Il n'est pas obligatoire de brancher le nouveau disque sur le même connecteur SATA que l'ancien, mais dans ce cas, vous pourriez avoir besoin de modifier la séquence de démarrage dans le BIOS.

0voto

Anton Samokat Points 27

Vous trouverez ci-dessous la description de mes recherches pour essayer de copier 'Ubuntu 20.04 avec hibernation activée sur une partition d'échange séparée sur le Thinkpad T420' sur un nouveau disque SDD en fonction des réponses à la question actuelle. Finalement, j'ai réussi mais j'ai rencontré de nombreux problèmes (nuances) en essayant ces recommandations. Ci-dessous, SDD et HDD seront considérés comme des termes interchangeables.


Tout d'abord, j'ai essayé la méthode la plus simple et la plus directe (comme je le pensais) qui est décrite dans le document Réponse de Pilot6 - copie de fichiers de la partition source vers la partition de destination

Pour la copie, j'ai utilisé rsync commande. Le problème était que mon nouveau lecteur SDD ne permettait pas de démarrer Ubuntu sans l'ancien lecteur SDD (les deux lecteurs SDD doivent être connectés). Les seules recommandations sur cette situation que j'ai trouvées étaient d'installer ou de mettre à jour ou de récupérer Grub configuration. Mais cela n'a pas été utile. Définition de l'UUID de la nouvelle racine dans la configuration de Grub et mise à jour de Grub comme recommandé. aquí :

/etc/default/grub
GRUB_DEVICE_UUID=40dbf2e4-e0c5-4f75-83bc-3176dc06d164

n'a pas non plus fonctionné.

Le problème n'était pas dans Grub mais dans l'UUID de la partition swap qui pointait vers l'ancien disque.

Si vous faites cela pour Ubuntu avec l'hibernation activée sur une partition swap séparée, vous devez également mettre à jour l'UUID de la partition swap dans le fichier /etc/uswsusp.conf et lancer la commande pour la mise à jour initramfs pour appliquer la modification :

update-initramfs -u -k all

Sinon, au moment du démarrage, il y aura un écran noir sans message de diagnostic.

Par hasard, une fois, j'ai laissé cet écran noir pendant environ 5 minutes. Puis le message de diagnostic suivant est apparu :

resume : Impossible de statuer sur le fichier de périphérique de reprise '/dev/disk/by-uuid/8e8927aa-eca7-43d6-b7cd-66cfda70a242 Veuillez saisir le nom complet du chemin d'accès pour réessayer ou appuyez sur ENTER pour démarrer le système :

stat pas start - probablement une faute de frappe dans le message.

Question connexe : Impossible de statuer sur le fichier du dispositif de reprise

Plus tard, j'ai découvert que '8e8927aa-eca7-43d6-b7cd-66cfda70a242' - est l'UUID de ma partition d'échange sur le vieux disque dur.

J'ai pu démarrer dans le nouveau système en spécifiant l'emplacement de la racine sur le nouveau disque par un simple nom de partition, pas d'UUID : "/dev/sdx1" et en appuyant sur Enter .

Il est intéressant de noter que je spécifie le nouvel emplacement de la racine, et non le nouvel emplacement de l'échange. Il semble qu'Ubuntu ait en quelque sorte compris les choses.

Je lance la commande pour la mise à jour initramfs après avoir démarré une nouvelle copie d'Ubuntu. Dans le journal des commandes, il y avait ce qui suit :

update-initramfs: Generating /boot/initrd.img-5.13.0-27-generic
I: The initramfs will attempt to resume from /dev/sda4
I: (UUID=0253f7b6-8e26-4d19-b262-6d8923911752)
I: Set the RESUME variable to override this.

ce qui signifie que le swap UUID a été modifié avec succès.

J'ai également essayé d'exécuter la mise à jour pour initramfs de chroot (à partir de l'ancienne copie d'Ubuntu ou de la version Live d'Ubuntu) :

sudo mount /dev/sdx1 /mnt
sudo mount /dev/sdx5 /mnt/boot/efi
for i in /sys /proc /run /dev /dev/pts; do sudo mount --bind "$i" "/mnt$i"; done
sudo chroot /mnt

initramfs a été exécutée à partir de chroot mais il n'y a pas de message concernant la mise à jour resume UUID comme dans le journal précédent - je ne sais pas si cela fonctionne correctement.

À ce moment-là, j'ai déjà mis à jour Grub de chroot par les commandes suivantes :

sudo grub-install /dev/sdx
sudo update-grub

Après cela, j'ai pu démarrer à partir du nouveau disque SDD sans l'ancien disque SDD.

Sous cette réponse dans les commentaires, il y a un commentaire de andrybak :

J'essaie actuellement d'utiliser cette réponse pour migrer mon installation de l'ancien disque dur vers le nouveau disque dur. J'échoue à l'étape "Installer Grub sur le nouveau disque". Grub continue de pointer/trouver l'installation sur l'ancien disque dur et je ne sais pas comment convaincre Grub de regarder le nouveau disque dur.

Il s'agit peut-être du même problème que celui que j'ai décrit ci-dessus.

Ubuntu fait de cette manière se charge normalement mais j'ai remarqué un problème avec le système de sécurité : Lorsque je monte les partitions d'un autre lecteur par gnome-disks Je ne peux pas les ouvrir dans nautilus (en cliquant sur leurs liens dans gnome-disks ne fera rien). Ceci est dû à une erreur : Permission denied .

La solution était la suivante :

  1. J'ai normalement installé une nouvelle Ubuntu (version minimale sans office et mises à jour) sur un nouveau disque SDD.
  2. Copie des fichiers de l'ancienne Ubuntu sur la partition avec la nouvelle installation Ubuntu. Dans ce cas, il n'y a pas eu de problème avec Permission denied . Peut-être que cela peut être réparé plus rapidement - je n'ai pas fait de recherche.

Par cette approche, j'ai copié mon Ubuntu du disque MBR au nouveau disque GPT. (Avant d'installer la version minimale d'Ubuntu, j'ai formaté le nouveau SDD en GPT). Questions connexes :


La copie de fichiers sous le système d'exploitation source ne fonctionne pas :

J'ai essayé de copier les fichiers sous le système de travail actuel (pas la version Live) en tant que discuté dans les commentaires en vertu de la Réponse de Pilot6 par les commandes suivantes :

sudo rsync -a / /mnt/dest/ --exclude sys --exclude proc --exclude dev --exclude tmp --exclude media --exclude mnt --exclude run
sudo mkdir sys proc dev tmp media mnt run
sudo mkdir /var/tmp

Et la mise à jour Grub de chroot .

Dans ce cas, la nouvelle copie d'Ubuntu a démarré mais la résolution de l'écran était inférieure. Il est probable que certains pilotes spécifiques au moniteur n'ont pas été copiés ou qu'ils l'ont été avec des erreurs dues au système actuel.


Également testé La réponse de ljrk - en utilisant la commande dd

sudo dd if=/dev/sda of=/dev/sdb bs=64K conv=noerror,sync status=progress
127945670656 bytes (128 GB, 119 GiB) copied, 818 s, 156 MB/s
dd: error writing '/dev/sdb': No space left on device
1953669+1 records in
1953669+0 records out
128035676160 bytes (128 GB, 119 GiB) copied, 829,897 s, 154 MB/s

En utilisant le SDD USB avec Ubuntu installé et dd J'ai copié bit par bit le SDD source sur le SDD cible. En résultat le SDD cible avait les mêmes partitions, les mêmes UUIDs, les mêmes PARTUUIDs.

Ce qui suit concerne la création d'un SDD USB en direct et le changement des UUID, PARTUUID en nouveaux UUID.


Pour une vitesse plus élevée, il est préférable d'insérer les disques SDD source et destination à l'intérieur de l'ordinateur portable (le deuxième disque SDD par l'adaptateur optibay / caddy), et il s'exécutera dd à partir d'une clé USB amorçable ou d'un SDD USB / HDD USB. J'ai trouvé deux programmes pour Ubuntu permettant de créer une clé USB ou un disque dur USB amorçable. Je voulais créer un disque dur USB (SDD) et c'était un vrai défi.

WoeUSB Le programme peut également être utilisé pour créer un disque dur amorçable, et pas seulement une clé USB. mais cela n'est pas précisé dans la description du programme . La commande ci-dessous crée un disque dur amorçable à partir de l'image de Windows 10 Pro (par l'interface utilisateur il n'est pas possible de spécifier un disque dur USB, seulement une clé USB) :

sudo woeusb --device "/home/sunkrop/Downloads/Win10_21H2_Russian_x64.iso" /dev/sdx --target-filesystem ntfs

Comment créer une clé USB bootable Windows 10 sous Linux avec le nouveau WoeUSB

A également essayé UNetbootin (pour Ubuntu) mais il ne peut pas utiliser l'outil NTFS L'image d'installation d'Ubuntu 20.04 doit pouvoir être installée sur une partition FAT32 (le fichier le plus volumineux dans la partition FAT32 n'est pas pris en charge par FAT32). L'image d'installation d'Ubuntu 20.04 doit pouvoir être installée sur une partition FAT32 (le fichier le plus volumineux en ubuntu-20.04.3-desktop-amd64.iso l'image est casper/filesystem.squashfs avec la taille de 2,1Gb ). J'ai utilisé Ubuntu déjà installé et connecté via USB SDD.

La commande suivante écrit l'image sur le disque dur USB avec FAT32 FS :

sudo unetbootin installtype=HDD targetdrive=/media/sunkrop/winds/ method=diskimage isofile="/home/sunkrop/Downloads/Win10_21H2_Russian_x64.iso"

Par l'interface utilisateur, il n'est pas possible de spécifier la cible comme un disque dur USB, seulement comme une clé USB. Dans targetdrive Le chemin du paramètre doit être spécifié vers le lecteur USB monté. Et à la fin, il doit y avoir une barre oblique. / sinon la commande échouera avec une erreur :

unetbootin /dev/sdx1sources is out of space

Ou peut-être pas d'échec, mais des fichiers ne seront pas écrits sur le disque de destination.

dd est utile si vous voulez simplement déplacer votre système vers un autre disque - même Dropbox fonctionne sur le SDD cible sans nécessiter de relier. L'ancien disque peut être formaté. Et vous avez terminé.

Mais si vous voulez que les deux disques durs fonctionnent dans le même ordinateur portable, les UUIDs et PARTUUIDs du nouveau disque dur doivent être modifiés pour être uniques. Vous trouverez ci-dessous des informations à ce sujet.


Comment changer l'UUID d'une partition dans un système de fichiers Linux ?

blkid | grep sdb1
/dev/sdb1: UUID="0c0f5bf5-4e0f-4f4e-85df-896c88e14ba0"
umount /dev/sdb1
sudo e2fsck -f /dev/sdb1 #required by tune2fs before changing UUID
sudo tune2fs -U 0c0f5bf5-4e0f-4f4e-85df-896c88e14ba5 /dev/sdb1
sudo blkid | grep sdb1
/dev/sdb1: UUID="0c0f5bf5-4e0f-4f4e-85df-896c88e14ba5"

出典 Comment changer l'UUID d'une partition dans un système de fichiers Linux ?


Comment changer de PARTUUID ?

sudo blkid | grep sdb1
/dev/sdb1: PARTUUID="a41c501b-1800-41ed-968b-b7bbfe4ef5ef"
sudo gdisk /dev/sdb
x # enter x to change to experts menu
c # enter c to change PARTUUID
1 # enter the number of the partition you want to change
a41c501b-1800-41ed-968b-b7bbfe4ef6ef
m # enter m to go back to main menu
w # enter w to write the change to disk
q # enter q to exit gdisk
OK; writing new GUID partition table (GPT) to /dev/sdb.
Warning: The kernel is still using the old partition table.
The new table will be used at the next reboot or after you
run partprobe(8) or kpartx(8)
The operation has completed successfully.
sudo blkid | grep sdb1
/dev/sdb1: PARTUUID="a41c501b-1800-41ed-968b-b7bbfe4ef6ef"

出典 Comment changer de PARTUUID ?


Severus Tux'answer - sur l'utilisation de Clonezella

C'est également une bonne solution, mais elle demande plus de temps de préparation et de mise en place que l'utilisation de l'outil de gestion des déchets. dd commande - La clé USB Clonezella Live doit être préparée, démarrée et de nombreux menus de l'interface utilisateur de Clonezella doivent être parcourus avant de commencer le processus de clonage ou de sauvegarde d'une image du système. Clonezella fonctionne de la même manière que dd - Les UUIDs, PARTUUIDs seront également copiés sur le lecteur SDD cible.

Discussion sur les UUIDs, PARTUUIDs sur la page Clonezilla :

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X