guyuming,
Lets have a quick canter through the boot process to aid your understanding, then make some educated guesses as to what you need to look at.
When you power your system on, the RAM is blank. The firmware loads something for the CPU to execute from the HDD.
Details differ between BIOS and UEFI but that need not concern us here. We will assume the use of the grub boot loader.
The firmware does its thing, loads grub and passes control to it. Grub shows you a menu and you make a selection.
Grub loads the kernel and optionally, one or more initrd files, then passes control to the kernel binary. That's grub done.
Now its just the kernel and the optional initrd files to bring your system up.
The kernel decompresses itself, initialises the built in code and mounts the initrd as a temporary root filesystem. There is a degree of parallelism in the kernel startup too.
With the initrd mounted as root, the kernel executes the init scrlipt it finds at /init. This does everything required to get your real root filesystem mounted. The very last thing it does it to switch to the real root filesystem and tell the kernel to execute /sbin/init.
Its really a house of cards. Keep in mind that the boot process is solving the problem of loading the operating system into a computer that doesn't know how to load its operating system. There are lots of circular dependencies to be broken.
The
Code: Select all
Determining root device (trying UUID=
message is significant.
As you are using UUID, you must also have an initrd containing the userspace mount command.
The kernel does not understand UUID.
Round about the same place, there should have been a message
Code: Select all
Unable to find root device in <list of block devices>.
It looks very odd with an empty list. Its just
If that appears, your kernel and initrd cannot read any block devices at all. That's a kernel config problem.
Its very easy to install the new kernel and initrd correctly in the wrong place.
There are different places on your system known loosely as boot. The kernel can see both of them but the bootloader can only access one.
First there is /boot. That's a directory on your root partition. It behaves in all respects like any other directory. You can put things in it if you want to.
Then there boot, the boot partition. This is the boot that the boot loader uses.
When you update the files for the boot loader to use, the boot partition needs to be mounted at /boot on the root partition.
If that doesn't happen the files go into the /boot directory on the root partition.
You may need to update the grub.cfg too.
A last trap for the unwary is that grub does not always make the new kernel the default boot option. You may need to search for it in the menu.
Some things to check.
When boot is not mounted at /boot
should be empty.
When the boot partition is mounted at /boot
will show what the boot loader sees.