web-dev-qa-db-fra.com

Comment changer l'UUID dans /boot/grub/grub.cfg

Je demande comment modifier uuid dans /boot/grub/grub.cfg, afin que grub puisse charger le système d'exploitation sur une partition spécifiée.

J'ai deux disques:

  • SSD/dev/sda1 avec uuid d7f0cf11-3edf-4859-b65a-3b5bc60ea7b9
  • HDD/dev/sdb1 avec uuid 47d9205b-00a8-40e5-88d6-e8b9571799a7

Les deux disques contiennent le même contenu (une racine Ubuntu) mais des uuids de partition différents, en tant que contenu de sda1 est cloné à partir de sdb1 par clonezilla

Le problème est /boot/grub/grub.cfg, qui est généré automatiquement, contient:

           if [ x$feature_platform_search_hint = xy ]; then
              search --no-floppy --fs-uuid --set=root --hint-bios=hd1,msdos1 --hint-efi=hd1,msdos1 --hint-baremetal=ahci1,msdos1  47d9205b-00a8-40e5-88d6-e8b9571799a7
            else
              search --no-floppy --fs-uuid --set=root 47d9205b-00a8-40e5-88d6-e8b9571799a7
            fi
            echo    'Loading Linux 4.4.0-146-generic ...'
            linux   /boot/vmlinuz-4.4.0-146-generic root=UUID=47d9205b-00a8-40e5-88d6-e8b9571799a7 ro  quiet splash $vt_handoff

indiquant que grub choisit la racine Ubuntu parmi sdb1 au lieu de sda1, alors que je veux qu'il choisisse sda1.

J'ai essayé de remplacer tout 47d9205b-00a8-40e5-88d6-e8b9571799a7 par d7f0cf11-3edf-4859-b65a-3b5bc60ea7b9 directement, puis exécutez update-grub, mais alors tout est rétabli.

Existe-t-il une autre meilleure solution? le /boot/grub/grub.cfg est en fait généré automatiquement. Si je détache le sdb1, grub n'a pas pu être lancé, car il n'a pas pu trouver l'uuid de sdb1.

Merci


Mises à jour:

shijiex@shijie:~$ cat /etc/fstab
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
proc            /proc           proc    nodev,noexec,nosuid 0       0
# / was on /dev/sda1 during installation
UUID=d7f0cf11-3edf-4859-b65a-3b5bc60ea7b9  /               ext4    errors=remount-ro 0       1

#UUID=47d9205b-00a8-40e5-88d6-e8b9571799a7 /old_os               ext4    errors=remount-ro 0       2
# /backup was on /dev/sda5 during installation
UUID=d36e69de-3af8-4302-a2b1-f32c2538493d /backup         ext4    defaults        0       0
# /home was on /dev/sda7 during installation
UUID=95ffe5be-ed1c-4d2b-b745-e31ba62ca63d /home           ext4    defaults        0       2
#UUID=e2ae897d-62b1-45d3-a17a-49e7a1b8fbe7 /home           ext4    defaults        0       2

# /vm was on /dev/sda8 during installation
#UUID=222bf555-b2d3-4607-a856-f5fd785b1862  /vm            ext4    defaults        0       2
# /opt was on /dev/sda8 during installation
UUID=ffbc1ea0-f426-4def-9349-a6f68b486b2f  /opt       ext4    defaults        0       0
# /other was on /dev/sda6 during installation
UUID=657778bc-fde8-4261-9fe6-4134c6a7fb3f /other          ext4    defaults        0       0


# /other was on /dev/sda6 during installation
#UUID=6db98036-2350-4289-b9ef-8e0a2ae52eeb /win           ext4    defaults        0       2


# swap was on /dev/sda9 during installation
UUID=71c498b2-3484-4d5b-b64a-270cc352841b  none            swap    sw              0       0
#UUID=05f1ba29-4188-40d1-8597-de708b48ed50  /tmp           swap    sw              0       0

et blkid:

 shijiex@shijie:~$ Sudo blkid 

[Sudo] password for shijiex: 
/dev/sda1: UUID="d7f0cf11-3edf-4859-b65a-3b5bc60ea7b9" TYPE="ext4" PARTUUID="2fe05ff9-01"
/dev/sda3: UUID="95ffe5be-ed1c-4d2b-b745-e31ba62ca63d" TYPE="ext4" PARTUUID="2fe05ff9-03"
/dev/sda4: UUID="8d114eed-5ce4-4d6f-8a28-8a7092b01d46" TYPE="ext4" PARTUUID="2fe05ff9-04"
/dev/sda5: UUID="94b0fb65-f56d-426d-81f9-d05a8ac783eb" TYPE="ext4" PARTUUID="2fe05ff9-05"
/dev/sdb1: UUID="47d9205b-00a8-40e5-88d6-e8b9571799a7" TYPE="ext4" PARTUUID="0001c588-01"
/dev/sdb10: LABEL="New Volume" UUID="6db98036-2350-4289-b9ef-8e0a2ae52eeb" TYPE="ext4" PARTUUID="0001c588-0a"
/dev/sdb11: UUID="ffbc1ea0-f426-4def-9349-a6f68b486b2f" TYPE="ext4" PARTUUID="0001c588-0b"
/dev/sdb5: UUID="d36e69de-3af8-4302-a2b1-f32c2538493d" TYPE="ext4" PARTUUID="0001c588-05"
/dev/sdb6: UUID="657778bc-fde8-4261-9fe6-4134c6a7fb3f" TYPE="ext4" PARTUUID="0001c588-06"
/dev/sdb7: UUID="e2ae897d-62b1-45d3-a17a-49e7a1b8fbe7" TYPE="ext4" PARTUUID="0001c588-07"
/dev/sdb8: UUID="222bf555-b2d3-4607-a856-f5fd785b1862" TYPE="ext4" PARTUUID="0001c588-08"
/dev/sdb9: UUID="71c498b2-3484-4d5b-b64a-270cc352841b" TYPE="swap" PARTUUID="0001c588-09"
/dev/loop0: TYPE="squashfs"
/dev/loop1: TYPE="squashfs"
/dev/loop2: TYPE="squashfs"
/dev/loop3: TYPE="squashfs"
/dev/loop4: TYPE="squashfs"
3
Xu Shijie

Vous avez indiqué que vous avez cloné votre disque dur sur SDD. Cependant, quand je regarde Sudo blkid et cat /etc/fstab, peu de corrélations. Les partitions ne correspondent pas. Les UUID ne correspondent pas. Je soupçonne que vous avez fait plus de changements qu'un simple clonage et démarrage.

Sans savoir exactement quoi/comment vous avez fait ce que vous avez fait, il est difficile de trouver une réponse concise pour vous ... mais vous pouvez essayer ceci ...

  • allumez votre machine et accédez au menu GRUB
  • frapper le e touche pour passer en mode édition
  • utilisez les touches fléchées pour localiser "splash silencieux"
  • trouvez le UUID=xxxx au début de cette même ligne
  • changer l'ensemble UUID=xxxx portion à /dev/sda1
  • control+x ou F10 pour continuer à démarrer après la modification
  • une fois démarré, Sudo update-grub, puis reboot
  • entrez dans le menu de démarrage du BIOS et sélectionnez SDA pour démarrer, ou changez l'ordre de démarrage en CD-ROM/SDA/SDB/etc.
  • dans le menu GRUB, sélectionnez le disque approprié à partir duquel
1
heynnema

Limitations de Clonezilla

J'ai écrit un script bash pour faire ce que fait Clonezilla sans ses limitations:

Faits saillants du script de ce que Clonezilla ne fait pas pour vous:

echo ""
echo "====================================================================="
echo "Making changes in: $TargetMnt/etc/fstab"
echo "        from UUID: $SourceUUID"
echo "          to UUID: $TargetUUID"
sed -i "s/$SourceUUID/$TargetUUID/g" "$TargetMnt"/etc/fstab

# Update /boot/grub/grub.cfg on clone partition with clone's UUID
echo ""
echo "====================================================================="
echo "Making changes in: $TargetMnt/boot/grub/grub.cfg"
echo "        from UUID: $SourceUUID"
echo "          to UUID: $TargetUUID"
echo "Also change 'quiet splash' to 'nosplash' for environmental awareness"
echo "Suggest first time booting clone you make wallpaper unique"
sed -i "s/$SourceUUID/$TargetUUID/g" "$TargetMnt"/boot/grub/grub.cfg
#sed -i "s/quiet splash/nosplash/g" "$TargetMnt"/boot/grub/grub.cfg
  • Notez que, pour vos besoins, vous souhaitez mettre en commentaire les modifications apportées au "splash silencieux" de grub en insérant # devant sed comme indiqué sur la dernière ligne affichée ci-dessus.

Version piratée du script

Je n'ai évidemment pas testé cela, mais vous pouvez pirater le script et créer votre propre version après avoir démarré à partir du disque dur. Placez ces commandes dans le script piraté:

#!/bin/bash
SourceUUID="47d9205b-00a8-40e5-88d6-e8b9571799a7"
TargetUUID="d7f0cf11-3edf-4859-b65a-3b5bc60ea7b9"
TargetDev=/dev/sdaX # Replace `X`this with your actual number
TargetMnt="/mnt/clone"
mkdir -p "$TargetMnt"                       # '-p' directory may already exist
mount -t auto -v $TargetDev "$TargetMnt" > /dev/null

sed -i "s/$SourceUUID/$TargetUUID/g" "$TargetMnt"/etc/fstab
sed -i "s/$SourceUUID/$TargetUUID/g" "$TargetMnt"/boot/grub/grub.cfg
umount "$TargetMnt" -l              # Unmount the clone
rm  -d "$TargetMnt"                 # Remove clone directory

Marquez-le comme exécutable chmod a+x /path/to/MyHackedScript et appelez-le avec les pouvoirs root Sudo /pathto/MyHackedScript.

Autres différences avec Clonezilla

  • Vous vous retrouvez avec deux entrées de démarrage grub, une pour le disque dur et une pour le SSD
  • Tu peux courir Sudo update-grub après le démarrage à partir du disque dur ou du SSD
  • Si vous ne voulez pas de disque dur dans votre menu grub, démarrez simplement à partir du SSD et mettez à jour grub
  • Vous pouvez utiliser le script pour cloner quotidiennement (sauvegardes complètes), auquel cas il est probablement ~ 100 fois plus rapide car seuls les fichiers qui ont changé depuis hier sont reclonés. rsync qui est extrêmement rapide est utilisé pour le processus de (re) clonage.
0