grub opensuse 13.1 wont boot after cloning

hello experts
I have a laptop with opensuse 13.1 and windows 8.1 uefi.
After cloning the original disk with “macrium reflect” software, (forensic mode, sector by sector), i inserted the clone but grub dissapeared and only windows starts. The original disk does the same (after reinserting ).
Can someone please write which are the steps that i should follow for both disks?

After a research, one possile answer was “to change the mounting by UUID to the old way” how can this be done?
Another proposed solution was (the parts that i dont understund are marked with “#”):

From a usb with opensuse in resque mode as root to:

  1. Determine new disk id. # (how can it be done?)
  2. mkdir /mnt/new
  3. mount /dev/sdxY /mnt/new # (is the sdxY the old grub partition? how can i find out which sd* had the old grub?)
  4. mount -t proc none /mnt/new/proc
  5. mount --rbind /sys /mnt/new/sys
  6. mount --rbind /dev /mnt/new/dev
  7. chroot /mnt/new /bin/bash
  8. Modify /etc/fstab to reflect new disk id for home / and swap with new disk-id from above #( how?)
  9. Modify /etc/default/grub to reflect new disk-id in the GRUB_CMDLINE_LINUX_DEFAULT entry # (how?)
  10. grub2-mkconfig -o /boot/grub2/grub.cfg
  11. grub2-install /dev/sdx (this installs grub2 to the new disk mbr) #(does “x” represent the new partition number?)
  12. edit /etc/default/grub_installdevice and /boot/grub2/device.map (if exists) and replace old disks with new ones (# what exactly to replace?)
  13. exit
  14. reboot

Thank you in advance for your time and help

It is quite possible that firmware detected disk change and decided to rebuild boot menu; while it may know how to put Windows back, it probably knows nothing about openSUSE. So please, boot live Linux (make sure to boot it in EFI mode as well) and provide output of “parted -l” and “efibootmgr -v”.

Thank you very much arvidjaar
output of “parted -l”:

Model: ATA WDC WD10JPVX-22J (scsi)
Disk /dev/sda:1000GB
Sector size (logical/phsysical): 512B/4096B
Partition Table: gpt

Number Start End Size File system Name Flags
1 1049kB 1075MB 1074MB ntfs Basic data partition hidden, diag
2 1075MB 1347MB 273MB fat32 Basic data partition boot
3 1347MB 1482MB 134MB ntfs Basic data partition msftres
4 1482MB 392GB 390GB ntfs Basic data partition
5 392GB 392GB 367MB ntfs hidden, diag
6 392GB 392GB 2157MB linux-swap(v1) primary
7 394GB 416GB 21.5GB ext4 primary
8 416GB 738GB 322GB ext4 primary
9 738GB 750GB 12.0GB ntfs Basic data partition hidden, diag

Model: SanDisc Cruzer Blede (scsi)
Disk /dev/sdb:15.6GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Number Start End Size Type File System Flags
1 1927kB 6121kB 4194kB primary type=ef
2 6121kB 4573MB 45647MB primary boot, hidden, type=17

output of “efibootmgr -v”:

BootCurrent: 0000
Timeout: 0 sec
BootOorder: 2001,0003,2003,2002
Boot0000* EFI USB Device (SanDisc Cruzer Blede) AXPI(a0341d0,0)PCI(14,0,0)PCI(14,0)USB(0,0) HD(1,eb4,2000,7e142954)RC
Boot0001* EFI Network 0 for IPv6 (…)
Boot0002* EFI Network 0 for IPv4 (…)
Boot0003* Windows Boot Manager HD(2,200800,82000,80b8a-a246-477c-b62f-2236504d5699)File(\EFI\Microsoft\boot\Bootmgfw.efi)WINDOWS…x…B.C.D.O.B.J.E.C.T=f.9.e.a.8.6.2.c.-5.c.d.d-.4.e.7.-.a.c.c.2.-.f.3.2.b.3.4.4.s.4.7.9.5.}…yk…
Boot2001* EFI USB Device RC
Boot2002* EFI DVD/CDROM RC
Boot2003* EFI Network RC

Please use CODE tags ( the # in the editor ), instead of QUOTE tags.

As expected, no trace of openSUSE boot entries. At this point you could simply reinstall openSUSE bootloader. I assume you have single root partition and it is sda7. Adjust partition number accordingly if this is not true. Do something similar to

mount /dev/sda7 /mnt
mount /dev/sda2 /mnt/boot/efi
mount --bind /sys /mnt/sys
mount --bind /proc /mnt/proc
mount --bind /dev /mnt/dev
mount --bind /run /mnt/run
chroot /mnt
update-bootloader --reinit

If you have separate partition for /boot, mount it before mounting /boot/efi. After that post output of “efibootmgr -v” again.

Thank you again very much for the reply.
I did as you said. i didn’t seem to have a separate partition for/boot. The new output of “efibootmgr -v” is :


BootCurrent: 0000
Timeout: 0 sec
BootOorder: 0005,00004,2001,0003,2003,2002
Boot0000* EFI USB Device (SanDisc Cruzer Blede) ACPI(a0341d0,0)PCI(14,0,0)PCI(14,0)USB(0,0) HD(1,eb4,2000,7e142954)RC
Boot0001* EFI Network 0 for IPv6 (...)
Boot0002* EFI Network 0 for IPv4 (...)
Boot0003* Windows Boot Manager  HD(2,200800,82000,80b8a-a246-477c-b62f-2236504d5699)File(\EFI\Microsoft\boot\Bootmgfw.efi)WINDOWS............x...B.C.D.O.B.J.E.C.T=f.9.e.a.8.6.2.c.-5.c.d.d-.4.e.7.-.a.c.c.2.-.f.3.2.b.3.4.4.s.4.7.9.5.}...yk.............
Boot0004* opensuse      HD (2,200800,820000,80ba38a-a246-477c-b62f-2236504d5699)file(\EFI\opensusegrubx64.efi)
Boot0005* opensuse-secureboot   HD(2,200800,82000,80b8a38a-a246-477c-b62f-2236504d5699)filee(\EFI\opensuse\shim.efi)
Boot2001* EFI USB Device    RC
Boot2002* EFI DVD/CDROM   RC
Boot2003* EFI Network        RC

I restarted without the live usbstick and grub appeared with the opensuse secureboot and windows options. I choose opensuse and i got into my old desktop BUT there was screensaver error and promted to :


[TIME] Timed out waiting for device dev-disk-by-x22did-ata\x2dTOSHIBA_M01AB...
[DEPEND] Dependency failed for /home
[DEPEND] Dependency failed for Local File Systerms
Welcome to emergency mode! After logging in, type "journalct1 -xb" to view system logs, "systemct1 reeboot" to reboot, "systemct1 default" to try again to boot into default mode.  

The system still wants to see my old toshiba hdd instead of my cloned WD. I couldnt do anything after that and rebooted again through grub to windows. What should i do next?

Look at you /etc/fstab file and see what is trying to mount you may have mixed mount methods. and it need to be adjusted. You must have all required partition references pointing to the right partitions.

Note if you clone the UUID should come also but if you have some entries as by-UUID and some as by-id the by-id entries will be different on a different drive. This mix may happen if you upgradded from long ago when by-id was moer commonly used

thank you for the reply. but i need more help on how to modify /adjust the fstab file, since i cant find out how + i have uefi.
viewing the fstab i get


/dev/root /ext2 defaults 0 0
proc /proc proc defaults 0 0
sysfs /sys sysfs noauto  0 0
devpts /dev/pts devpts mode=0620,gid=5 0 0

That is not from the hard drive that is from the live boot

You need to mount the root partition on the hard drive at some mount point and look atthe files found there.

unfortunatelly i did what arvidjaar suggested (mount sda7 and sda2)without knowing if it is the root sda. how can i find which is the root sdx. what should i do? i am sorry but please be more analytical because i am not keen at all with the procedure. thank you in advance

Well if you don’t know you have to look and see what is on it. No one else knows only the person that installed things.

if you are at a prompt after the chroot procedure then the file should be at

/mnt/etc/fstab

In any case the fstab you posted is not anywhere near a normal one for an installed system and looks like one off a live media

openSUSE defaults to using /dev/disk/by-id paths for disks. These paths change when hard disk is physically replaced. You need to edit /etc/fstab and replace device names with new ones.

Well it used to default to by-id in 13.2 at least it defaults to UUID but if you upgraded from older versions you may still have entries of by-ID

BTW UUID is generated when you make a new partition so if you just copy files from old installation to new partitions the UUID’s will be different but cloned data should also contain the old UUID numbers

Thank you very much for the replies, your suggestions lead to a booting disk at last!

A more analytical (as it should be for an unexperienced user) sum up follows in order for someone else to be helped:

assuming the root partition is sda7:

1.reboot using live usb/DVD with the opensuse iso
2. select rescue mode and login as root
then:


mount /dev/sda7 /mnt 
mount /dev/sda2 /mnt/boot/efi 
mount --bind /sys /mnt/sys
mount --bind /proc /mnt/proc 
mount --bind /dev /mnt/dev 
mount --bind /run /mnt/run 

modify /etc/fstab replacing the label of the old disk with the ouput of the command :


ls -l /dev/disk/by-id/ata*
vi /etc/fstab
chroot /mnt
update-bootloader --reinit
exit 
exit

reboot and thats it!

Fir the sake of archives - in case if BIOS boot one more file to modify is /etc/default/grub_installdevice. This file contains device where bootloader is installed. It is not needed in case of EFI that you have.