Table des matières

Comment assurer la migration d'Ubuntu vers un SSD ?

La migration de vers un SSD revient à copier le root du disque dur vers le SSD. La page Déplacer sa racine(ou root (/)) traite de ce point. Elle parait mieux finalisée, plus claire.

À condition qu'Ubuntu ait été installé dans cette seule partition. Il y a aussi la swap à déplacer, qui peut être en fichier ou en partition. Et cette méthode demande à modifier la configuration de GRUB, de fstab; bref elle est beaucoup plus compliquée que la méthode simple par Clonezilla (voir encadré suivant).

Situation : ubuntu installé sur un HDD, et vous n'avez pas envie de réinstaller toute la configuration !

Clonezilla est une distribution live qui permet de créer une copie conforme de l'intégralité d'un support de stockage (disque dur ou SSD) sur un autre, ou dans un fichier .img.

Avec une tour il est généralement possible de brancher le SSD et le disque dur simultanément.
C'est aussi souvent possible sur un portable, sinon il suffit de brancher son SSD en USB au moyen d'une interface externe, ou inversement (on peut utiliser Clonezilla après avoir interchangé les supports, puisque c'est un système live autonome).

Il suffit de démarrer sur Clonezilla en changeant éventuellement l'ordre de démarrage dans le BIOS, puis on peut réaliser un clone parfait de son disque en quelques clics. Clonezilla conserve même l'UUID des partitions (qui sert au système à les identifier) donc il ne faut plus utiliser l'ancien disque sur le même ordi sans en changer les UUIDs (avec tune2fs ou, plus simple, en repartitionnant cet ancien disque dur).

En suivant cette méthode on n'a aucun changement à effectuer côté fstab ou GRUB.

Cette méthode simple n'est malheureusement pas décrite sur cette page.
Voir la documentation à ce sujet sur la page de Clonezilla.

La méthode proposé sur cette page est la suivante :

$ sudo mkdir /mnt/ssd
$ sudo mount /dev/sda1 /mnt/ssd/

1. Monter l'ensemble des arborescences des répertoires "/proc","/sys" et "/dev" à la racine de la nouvelle partition Ubuntu:

$ sudo mount --bind /proc /mnt/ssd/proc
$ sudo mount --bind /sys /mnt/ssd/sys
$ sudo mount --bind /dev /mnt/ssd/dev

l'argument "–bind" fait en sorte de monter toute l'arborescence.

2. Exécuter à présent un chroot sur la racine de la nouvelle partition:

$ sudo chroot  /mnt/ssd

Ceci étant fait, il faut savoir qu'à présent, c'est comme si nous avions booté sur cette partition.

3. Enfin, Réinstallation de GRUB

$ sudo grub-install /dev/sda #### ou sudo grub-install si boot EFI

Une dernière petite chose à faire avant d'en avoir terminé, mettre à jour la configuration de GRUB par:

$ sudo update-grub

En effet, comme les UUID des partitions ont changé, nous avons informé fstab, mais pas les fichiers de config GRUB Vous pouvez à présent quitter le chroot par

$ exit

Voilà, c'est fini!

Comment rebooter avec un SSD

Contexte LEGACY

Penser à modifier le Bios LEGACY pour lui dire de booter prioritairement sur le NVME au lieu du disque dur. En effet le boot peut se faire directement sur le SSD 1. Redémarrer en Bootant sur le SSD (en désactivant l'ancien disque si boot LEGACY et si pas de partition de swap et si pas de partition home ou de données).

sudo grub-install /dev/sda
sudo update-grub

2. Rebooter une dernière fois le PC. Voilà, c'est fini !

Contexte UEFI

La solution retenue est de continuer à booter avec la partition EFI du disque dur. Cependant, il semble préférable que la structure de boot soit dans le même disque que le logiciel. Pour résoudre ce problème, boot-repair est utilisable ainsi que la ligne de commande.

A faire avant d'avoir oublié que le disque dur est resté la référence de boot. Voici c'est terminé.

Comment déplacer uniquement le logiciel du disque dur dans un SSD

Lorsque la partition logicielle de ubuntu dans le disque dur est plus volumineuse que le futur SSD, la situation n'est pas bloquée.

Il faut d'abord identifier la cause. Il y a toutes les chances que les données personnelles soient stockées dans la partition logicielle. Il n'y a pas d'avantages particuliers à stocker les données personnelles dans le SSD.

La proposition est alors de conserver les données personnelles dans le disque dur et de dupliquer le logiciel. Le logiciel du disque dur pourra être supprimé ultérieurement lorsque le manque de place sur le disque dur sera détecté.

Le transfert du logiciel ne se fera pas par clonezilla mais en lignes de commandes afin de pouvoir sélectionner.

Travail préparatoire

Avec le ubuntu fonctionnant, installer l'application gparted afin de pouvoir formater le SSD. Créer:

Si refind est utilisé: Au lieu de créer une partition de boot EFI, il est plus pratique de copier/coller la partition de boot-EFI puis changer son UUID et y mettre une étiquette FATSSD et un drapeau ESP.

Migration des données

  1. Devenir administrateur.
    sudo -i
  2. Monter la partition de réception.
    udisksctl unmount -b /dev/disk/by-label/NewUbuntu ## On ne sait jamais
    udisksctl mount -b /dev/disk/by-label/NewUbuntu
  3. Dupliquer le logiciel de base. Possibilité d'ajouter l'option progress pour visualiser le transfert des fichiers. Durée estimée: 10 minutes.
    time rsync -ax --delete-before --stats --exclude '/home'  /  /media/$USER/NewUbuntu
  4. Dupliquer les fichiers cachés du home et le répertoire snap de tous les utilisateurs et préparer certains liens symboliques. Possibilité de supprimer l'option progress pour masquer le transfert des fichiers. Durée estimée 2 minutes par utilisateur.
    for Me in $(ls -1 /home) ; do
    mkdir -pv /media/$USER/NewUbuntu/home/$Me
    echo  le transfert de $Me  
    rsync -ax  --stats --progress   /home/$Me/{.[^.]*,snap}  /media/$USER/NewUbuntu/home/$Me
    ln -s /media/data/home/$Me/Bureau             /media/$USER/NewUbuntu/home/$Me
    ln -s /media/data/home/$Me/Documents          /media/$USER/NewUbuntu/home/$Me
    ln -s /media/data/home/$Me/Images             /media/$USER/NewUbuntu/home/$Me
    ln -s /media/data/home/$Me/Musique            /media/$USER/NewUbuntu/home/$Me
    ln -s /media/data/home/$Me/Téléchargements    /media/$USER/NewUbuntu/home/$Me
    ln -s /media/data/home/$Me/Vidéos             /media/$USER/NewUbuntu/home/$Me 
    chown -R $Me:$Me /media/$USER/NewUbuntu/home/$Me; done 
  5. Modifier le fstab en remplaçant la partition racine et ajout de la partition de données avec son point de montage.
    UUIDgood=$(echo $(lsblk -fe7 | grep "NewUbuntu")| cut -d" " -f5)  && echo $UUIDgood
    UUIDold=$(grep ' \/ ' /etc/fstab | grep UUID  | cut -c6-41) && echo $UUIDold 
    sed -i "s/$UUIDold/#$UUIDold/" /media/$USER/NewUbuntu/etc/fstab
    echo UUID=$UUIDgood  /  ext4 errors=remount-ro 0 1 | tee -a /media/$USER/NewUbuntu/etc/fstab
    echo UUID=$UUIDold   /media/data ext4 defaults 0 2 | tee -a /media/$USER/NewUbuntu/etc/fstab
    mkdir /media/$USER/NewUbuntu/media/data
    egrep  " / |data" /media/$USER/NewUbuntu/etc/fstab
  6. Si le boot est EFI, mettre à jour le nouvel UUID de boot dans le fichier /etc/fstab et le fichier de configuration de refind.
    sed -i '/boot\/efi/d' /media/$USER/NewUbuntu/etc/fstab
    echo UUID=$(lsblk -o UUID,NAME,LABEL  | grep FATSSD | cut -c-9) /boot/efi  vfat umask=0077 0 1| tee -a /media/$USER/NewUbuntu/etc/fstab
    sed -i "s/$UUIDold/$UUIDgood/" /media/$USER/NewUbuntu/boot/refind_linux.conf 

Installation du grub

Action inutile lorsque refind est utilisé.

Il existe 2 possibilités pour installer le bon grub dans cette nouvelle partition.

  1. Préparer le passage chroot et exécuter le chroot.
    mount -t proc   /proc /media/$USER/NewUbuntu/proc && mount -t sysfs  /sys /media/$USER/NewUbuntu/sys
    mount --bind    /dev  /media/$USER/NewUbuntu/dev  && mount --bind    /run /media/$USER/NewUbuntu/run
    mount --bind    /sys  /media/$USER/NewUbuntu/sys  && modprobe efivars 
    chroot /media/$USER/NewUbuntu 
  2. Monter la partition EFI du SSD. Ne pas faire si le boot est en LEGACY.
    mount -v /dev/disk/by-label/FATSSD  /boot/efi
  3. Réinitialiser le grub.
    grub-install $(blkid | grep 'FATSSD' | head -1 | cut -c1-8 ) 
    update-grub
  4. Démonter la partition EFI et quitter le CHROOT
    umount -v /boot/efi 
    exit
  5. Faire la mise à jour du bios efi. Ne pas faire si le boot est en LEGACY.
    DSK=$(echo /dev/$(lsblk -o NAME,Label  | grep -B 1  FATSSD | head -1))  && echo $DSK 
    if [[ $(bootctl) =~ "Secure Boot: disabled" ]]; then  efibootmgr --create --disk $DSK --part 1 --label ubuntu --loader "\EFI\ubuntu\grubx64.efi";
    else efibootmgr --create --disk $DSK --part 1 --label ubuntu --loader "\EFI\ubuntu\shimx64.efi"; fi
  6. Quitter proprement
    umount -v /media/$USER/NewUbuntu/{run,dev,sys,proc} && umount /media/$USER/NewUbuntu/sys
    umount -v /media/$USER/NewUbuntu  
    exit
  7. Rebooter sans oublier de modifier le BIOS LEGACY pour mettre prioritaire le disque SSD.

Autre méthode de migration avec gparted

Cette méthode peut s'appliquer:

Réalisation

Erreur possible

Lors d'un boot EFI, les anciennes versions, imposent le N° de partition qui peut avoir changé. Donc si plantage, lancer boot repair et réparer le ubuntu du SSD afin qu'il réinstalle la structure EFI avec un bon numéro.