Cloned disk, now suse doesn't boot

I have a dual-booting Win10 / OpenSuse 13.1 system. One day the computer started showing all kinds of symptoms which I suspected were caused by a failing HD. Long story short, to be on the safe side I bought a new HD and cloned the contents of the old one to it (using clonezilla), and replaced the disk.

Windows works just fine (and all those symptoms have disappeared). However, suse doesn’t boot anymore. It shows the opensuse splash screen, but the console just says “waiting for device /dev/disk/by-id/… to appear”. (Suse seems to prefer referring to disks by id. Here’s one situation where that’s not such a great idea.)

I believe the problem is in the grub configuration (as that device string appears there). However, I have no idea how to fix it.

When starting up the computer, while in grub, I could edit the boot command. However, I have no idea what id string to put there. I suppose I could try something like /dev/disk/sdc1 or something, but I’m not sure at all what the number actually is.

I have the OpenSuse 13.1 installation disk, but when I start the rescue option, it loads the kernel and then shows a black screen, and that’s it. Nothing happens. I have no idea why. (It has worked before.) Granted, I only waited for something like 5 minutes, but I think it has worked much faster before.

The UUID of the partitions must have been changed by what ever clone process you used.

Boot a rescue DVD/USB and run from command blkid this will show the UUID of all the partitions. Then edit the /etc/fstab on the hard drive and replace the old UUID with the new ones shown by blkid.

BTW you could have run smartctl and been sure the old drive was failing

You will need to go to rescue mode:

Linux rescues. If you are using “btrfs”, then there are additional steps.

Edit “/etc/fstab” (relative to the mount point of the system you are rescuing), and update any device references. If you use encrypted disks, then also check “/etc/crypttab”. Maybe also check if there is a “by-id” reference in “/etc/default/grub”.

Run “mkinitrd” (in rescue mode).

You might need to reinstall grub, although regenerating “grub.cfg” might be sufficient.

Feel free to ask additional questions.

I don’t really know how. As said, if I put the OpenSuse 13.1 installation CD in the drive and boot to it and select “rescue system”, it loads the kernel and then goes to black screen, and nothing happened. (I have no idea why. It has worked properly in the past; from the exact same disk.) If there’s some kind of error, or it’s doing something and I should wait longer, it would be nice if it said it, but no; just a black screen, and that’s it. It responds to ctrl-alt-del, rebooting the system, but that’s about it.

I figured that my linux is installed in /dev/sdc6, and that I could make grub use that as root. If I try to boot normally that way, something very similar happens: After the spash screen appears (which I can hide by pressing esc, seeing some bootup status output), it goes to a black screen… and nothing happens.

If I select safe mode instead, it gets further ahead, but goes haywire, printing endless messages over and over (so fast that it’s impossible to read, and I have no idea how to stop it so that I could read what it’s saying). Obviously simply changing the grub boot command from grub itself is not enough.

(Btw, I think that in the cloning process clonezilla tried to fix the grub of the cloned disk, but failed to do so. It gave some kind of error message when trying. I have no idea what else I could have done in that situation. When I replaced the disk, Windows booted and worked perfectly. Only suse is completely broken.)

If the UUID changed in the clone process then the table entries in /etc/fstab are wrong and those partitions won’t mount and you can’t boot

You must boot to an external rescue disk mount the root partition on the drive and correct the entries in /etc/fstab at the least you may need to mod grub also.

a UUID is a random string generated at the time a partition is created a new. So moving or resizing may change the UUID and the entries that need it will have to be changed accordingly.

If you can boot an external Linux then blkid will show you the current UUIDs

I figured that the clonezilla disk might have a command line prompt option, and it indeed did. (I’m wondering if the OpenSuse 13.1 rescue mode showed just a black screen because I have upgraded my graphics card to a GTX 970. By all reason that shouldn’t be so, but it’s the only thing I can think of. I am lead to believe this because that card upgrade also broke OpenSuse itself, but I’m going to create a new thread on that.)

For some reason blkid was not printing any device information (except for the CD itself.) But I figured that I would just list the contents of /dev/disk/by-id, and use those names. I replaced the equivalent names in fstab and the grub menu.lst, and the system started booting up properly.