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:
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"
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 ...
UUID=xxxx
au début de cette même ligneUUID=xxxx
portion à /dev/sda1
Sudo update-grub
, puis reboot
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
#
devant sed
comme indiqué sur la dernière ligne affichée ci-dessus.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
.
Sudo update-grub
après le démarrage à partir du disque dur ou du SSDrsync
qui est extrêmement rapide est utilisé pour le processus de (re) clonage.