0

I have been running 14.04 on a Lenovo ThinkPad T440p for some time. Today I did a 14.10 upgrade. The upgrade proceeded without any complaints. (I've done many upgrades before, dating back to some really old Ubuntu releases, and they usually work.)

At the end of the upgrade, the system tried to reboot, but I got a flash on the screen of something about a boot error. After that it wouldn't boot at all.

The main disk is an SSD with 3 partitions: the EFI partition, the /boot partition, and a partition containing a LUKS encrypted LVM volume. From a live CD, I can mount those and see that they at least look OK.

Is there some process to follow that will allow me to get that drive to be bootable? There are thousands of recommendations to use the "boot-repair" tool, but it has no effect whatsoever (the Boot-Repair URL for those who care). I've got the laptop BIOS set to boot from UEFI; I didn't change it for the upgrade, but I did check after things went wrong.

I should mention that when I say that the machine "won't boot" I mean that it behaves as if the drive is simply not bootable. The BIOS lets me select it as a boot device, but an attempt to boot from it gets absolutely nowhere. There are no diagnostics, and no sign that it's even trying to boot.

karel
  • 114,770
  • Since only one install, you do not normally get grub menu. Since UEFI, if you press escape key at UEFI boot, you should get grub menu. Then remove quiet splash from Linux line and see if a little before it stops booting if there are errors. You may now need video paramaters like nomodeset. At grub menu you can use e for edit, scroll to linux line and replace quiet splash with nomodeset. And if Intel chip other parameters usually required. http://askubuntu.com/questions/162075/my-computer-boots-to-a-black-screen-what-options-do-i-have-to-fix-it – oldfred Dec 26 '14 at 04:34
  • @oldfred thanks for the suggestion. The system did not even attempt to boot; the BIOS treated the disk as if it were not bootable. By doing what I did in the answer below - copy grubx64.efi to bootx64.efi - the system became bootable. I don't know what changed from 14.04 to 14.10. – Pointy Dec 26 '14 at 15:27
  • 1
    That is exactly what we suggest for many UEFI systems that will not boot anything but Windows in UEFI description. Had you run Boot-Repair with 14.04? It often renamed some Windows UEFI files to make it work, which it does not now do, and is not recommended, but back then was the only way to get Linux to work. – oldfred Dec 26 '14 at 16:29

1 Answers1

0

I'll link to the blog/wiki page I found this solution on when I find it, because I really don't entirely understand what was going on.

The UEFI boot mechanism, as I understand it, is supposed to interpret the layout of the EFI filesystem and provide the person booting the computer with a choice of which boot loader to use. In the EFI filesystem on my machine after the upgrade, I had an "ubuntu" directory with a "grubx64.efi" file in it. The Thinkpad, however, did not seem to pay any attention to that, and that's why it treated the SSD as being unbootable.

This mystery blog post I found suggested that a way to work around the bad behavior of some stupid UEFI BIOS implementations is to create a "boot" subdirectory in the EFI file system, and to copy the GRUB loader to a file called "bootx64.efi" there. That is:

mkdir /mnt/efi
mount /dev/sda1 /mnt/efi
mkdir /mnt/efi/EFI/boot
cp /mnt/efi/EFI/ubuntu/grubx64.efi /mnt/efi/EFI/boot/bootx64.efi

I did that from the Live CD (well, Live DVD) and rebooted. To my absolute amazement, that was all it took. Apparently the "boot" EFI subdirectory is the default, so even dumb BIOS implementations will find that.

I don't know what will happen as I go forward updating the 14.10 environment. I guess that whenever I do an apt-get upgrade I'll check to see if the grub boot file has been update, and copy it over into the "boot" fake directory.

This is probably a per-BIOS weirdness.

Pointy
  • 1,563