21

I installed Ubuntu 11.10 on a newly bought Lenovo ThinkCentre Edge 71 (model: 1577-G3G) with EFI boot enabled. I opted for the Use Entire Disk option. Even though the installation process went without any problems/errors, when rebooting it now just gives me:

No bootable operating system. Insert bootable disk and press any key...

I figure this is because of EFI.

Regression:

  • I have checked the System Setup (F1 during POST) to find a BIOS option to disable EFI/UEFI boot, however, there is no such option for this machine.
  • This might be caused by a "Secure Boot" feature in the BIOS.
  • The hardware vendor does not know of any such "secure boot" setting in the BIOS that would prevent Linux from booting.
  • Lenovo support did not know anything about a BIOS setting called secure boot. They also did not know of any limitations that would prevent Linux from booting.
  • The ThinkCentre 1577 BIOS manual does not mention EFI, UEFI nor secure boot.

How do I install Ubuntu on a machine with EFI? - Or, since Ubuntu is probably already installed: how do I make it boot Ubuntu?

3
  • 4
    As Ubuntu is already "successfully" installed, you should just need to reinstall grub-efi. That's exactly what i had to do yesterday: superuser.com/q/372962/37511 have a look at it.
    – Maxime R.
    Dec 30, 2011 at 12:24
  • I tried following your instructions in the superuser.com post. It did not make Ubuntu boot :(
    – ervingsb
    Dec 30, 2011 at 15:43
  • Could you give some details on your thread ubuntuforums.org/showthread.php?t=1901748 ? What worked and what didn't, any error messages, etc.
    – Maxime R.
    Dec 30, 2011 at 17:45

12 Answers 12

11

This is a modified post by nerasezi in the Ubuntu Forum

The main source for the UEFI was the Ubuntu UEFI guide

The following are the steps he did:

  1. Use a live CD which matches the UEFI architecture. Mostly x86-64. Boot up the live cd (xubuntu or lubuntu. Those are lightweight desktop but it should work with Ubuntu and kubuntu as well).

    Be sure your live system is booting in UEFI mode. You may check it on the UEFI setup, probably under Boot option or similar. In my case it just put the "UEFI" prefix before the device name.

  2. Once the live system is running set through the terminal a root password by typing
    sudo passwd root

    Then log out from the default live cd user and log in as root in gui mode. Plug in the hard drive. I use a USB3 portable HDD but in most cases the hard drive is a SATA internal drive. Anyway, be sure you've BACKED UP ALL YOUR DATA, cause the process is going to wipe off everything on the drive. Launch Gparted (a gui tool is much easier than the text one) and select the drive you're willing to install the system into. (Be sure to select the right one!) Point to the top menu and select Device>Create Partition Table... A warning message pops out. Click on Advanced and select "gpt". Say OK A new GPT disk layout had been created. Now you need to create partitions on it. It's very important that you create as the first and primary partition, a FAT32 volume and you need to assign the label EFI to it. Once the partition is created, right click on it and select "manage flags". Check the "boot" flag and say OK. Move on to the creation of the / partition (you may want to separate /home and /boot. Do it as you usually do. In my case I've just created the / partition), and a swap area. Always prefer primary partitions cause with GPT the 4 primary partition limitation has been removed. Close Gparted.

  3. Install the system into the hard drive "/" partition and remember to point here the bootloader (GRUB 1.99) to install to. If you've created a separete "/boot" partition, you have to choose that one for the bootloader installation.

  4. Here comes the part from the UEFIBooting guide:

    Building GRUB2 (U)EFI

    Download the latest grub2 source code ZIP file. ftp://ftp.gnu.org/gnu/grub/

    Building grub2 requires the following programs to be installed (build dependencies):

    bison autoconf automake flex autogen python (2.x series) (for autogen.sh if building from bzr repo) texinfo help2man gettext (NLS support) device-mapper freetype2 (libs)

    sudo apt-get install bison libopts25 libselinux1-dev autogen m4 autoconf help2man libopts25-dev flex libfont-freetype-perl automake autotools-dev freetype2-demos texinfo efibootmgr

    efibootmgr was added to the software you need to install because you will need it later on.

    For 64-bit (U)EFI:

export EFI_ARCH=x86_64 ./configure --with-platform=efi --target=${EFI_ARCH} --program-prefix="" make

In case you have a 32-bit architecture, check the online documentation at the link I have provided at the top.

Install GRUB2 in (U)EFI systems

Determine your EFI SYSTEM PARTITION. (it should be /dev/sda1 or /dev/sdb1 if is set on the 2nd hd)

Then mount the partition at /mnt/EFISYS (or at any mountpoint you wish). The following code assumes /dev/sda1 to be EFISYS partition.

sudo mkdir -p /mnt/EFISYS

sudo modprobe dm-mod

sudo mount -t vfat -o rw,users /dev/sda1 /mnt/EFISYS

sudo mkdir -p /mnt/EFISYS/efi/grub

Then, build an EFI application for GRUB and copy it and the other modules:

Enter the "grub2 compiled source/grub-core" directory - Default : /usr/lib/grub/{EFI_ARCH}

grub-mkimage -O ${EFI_ARCH}-efi -d . -o grub.efi -p "" part_gpt part_msdos ntfs ntfscomp hfsplus fat ext2 normal chain boot configfile linux multiboot

sudo cp grub.efi *.mod *.lst /mnt/EFISYS/efi/grub

Note : The -p "" option is important for creating a portable grub.efi app. Now create a grub.cfg in /mnt/EFISYS/efi/grub :

sudo touch /mnt/EFISYS/efi/grub/grub.cfg

Make the firmware launch GRUB2 (U)EFI as default

For non-Mac UEFI systems, efibootmgr is used to modify the UEFI Firmware Boot Manager. This requires the kernel to be booted in UEFI mode and that the kernel processor architecture should match the firmware architecture (and 'noefi' is NOT used) for 'efivars' kernel module to be loaded and efibootmgr to access the boot manager variables. Initially the user is required to manually launch "efi/grub/grub.efi" from the firmware console itself if grub2-efi was installed in BIOS mode. Then efibootmgr should be run to create the boot entry.

sudo modprobe efivars

Enter the "grub2 compiled source/grub-core" directory

grub-probe --target=device /boot/efi/efi/grub/grub.efi

Assuming the output the grub-probe to be /dev/sda1

sudo efibootmgr --create --gpt --disk /dev/sda --part 1 --write-signature --label "GRUB2" --loader "\\EFI\\grub\\grub.efi"

In the above command, /boot/efi/efi/grub/grub/efi can be split up as /boot/efi and /efi/grub/grub.efi, which translates to (/dev/sda) -> partition 1 -> \EFI\grub\grub.efi .

  1. Open Synaptic and remove all grub packages and install just the grub-efi packages (amd64 for me) and all the necessary dependencies. Once the installation is over, run sudo update-grub in the terminal. You should edit "grub.cfg" from /boot/grub and check that the disk UUID matches your disk and partitions, the voice "insmod part_" and "set root='(hd0," have "gpt" textline. If everything is ok, copy "grub.cfg" to the "efi/grub" on the EFI System Partition. If something i mentioned before, doesn't match, just edit grub.cfg and manually change them values. Then copy the file to the "efi/grub" directory on the Efi System Partition (should still be mounted under /mnt).

    Then when I rebooted the system, a new entry on the Boot tab under the UEFI setup has appeared, named GRUB2 and i set it as the default boot option.

5
  • Is it possible to install efibootmgr on non EFI install? Is it still really necessary to compile grub2 from source? Boot-repair is another option but again has varying success rates due to different vendors implementing UEFI spec differently. Which also means this "Make the firmware launch GRUB2 (U)EFI as default" may not be possible for some machines.
    – geezanansa
    Aug 15, 2013 at 22:52
  • Wow this is an old answer. I would ask what you are mentioning in a new question since a lot has change since then and the part about different vendor implementations is getting out of hand for some cases I have worked on. Aug 15, 2013 at 23:01
  • If the answer you are looking for is not found here then (and as you are the OP) this is not a dupe because I am assuming you have not found the answer you are looking for yet. Apart from this, there are many similar questions related to this that actually differ in one way or another about how to work around the whole EFI stuff we have seen over the past 6-12 months. Aug 15, 2013 at 23:09
  • 1
    One thing is for sure though - common denominator = GRUB
    – geezanansa
    Aug 15, 2013 at 23:20
  • So how do I install UEFI-enabled grub onto a USB stick from a non-uefi system???
    – trusktr
    Nov 12, 2013 at 22:38
6

To help confirm if your machine is U/EFI capable simply run dmesg | grep EFI from Terminal in live desktop session.
To help confirm if your installed Ubuntu has booted using U/EFI see what /sys/firmware/efi returns.
A time saving solution is to make sure Ubuntu has actually booted in UEFI mode at install time. Referring to the newer Ubuntu UEFI Guide section 2.4 illustrates this brilliantly

Identifying if the computer boots the CD in EFI mode

Warning: even if your PC boots the CD in EFI mode, it might boot the HDD in Legacy mode (and the contrary).

When booting on a 64-bit Ubuntu disk:

  • If the BIOS is set up to boot the CD in EFI mode, then you will see the screen below:

UEFI mode

  • If the BIOS is NOT set up to boot the CD in EFI mode, or if the disk is not 64-bit, then you will see the screen below:

BIOS mode

Be sure to use the same guide referred to in order to ensure hard drive is booted using UEFI also. This may be as simple as setting SATA to AHCI but depends on your firmware being used.

Once getting to grub screen it is possible to drop to comand line by pressing "c" and try lsefisystab which should give table of EFI entries with GUIDs which is another handy method to identify if UEFI is being used BEFORE installing.

It is possible to use dmesg | grep EFI to identify if your machine is UEFI capable. On one of my machines that is not U/EFI capable but doing this gives me UEFI capable?
which may be misleading as doing the same command on a UEFI capable machine would return many more lines (possibly 50+) when booted using EFI I found this simple tip at rodsbooks(the link is for rEFInd which is an alternative to using Grub2). rodsbooks webpages are regularly updated and are a very reliable source of information. The author of which is an UEFI Professor to say the least if not a genius!

Referring to rodsbooks on this page shows that Ubuntu 11.10 makes an ESP with FAT16 filesystem where as some UEFI firmwares want an ESP with FAT32 filesystem. You will find the full explanation if you do Ctrl + F and search for Fedora on the linked page in this paragraph.(Click Next once in "Find bar" to go straight to the information that is being referred to).
Considering the fact UEFI specification required for Secure Boot is => UEFI 2.2 and Windows 8 pre-installed machines will use UEFI 2.3.1.
All of which confirms Ubuntu 11.10 is not secure boot capable so secure boot is not the problem.

It is possible after using UEFI to install Windows- which can only use GPT when using UEFI; that Ubuntu installs using BIOS/legacy settings due to installer deficiencies. ie Ubuntu can install to GPT using both BIOS or UEFI which then leads to the need of switching firmware settings in order to boot each OS.

To identify if Windows is using UEFI is to use disk management to confirm GPT is being used. It is possible to convert a Windows Bios install to UEFI using this guide Converting Windows BIOS installation to UEFI

One easy solution is to run Boot-repair-disk (downloading the cd .iso will mean slightly quicker booting than compared to using full Ubuntu.iso and then installing boot-repair. Check advanced options before running recommended fix bearing in mind which firmware settings you have used to boot boot-repair. Boot-Repair will install grub-efi and fix firmware hardcoding problems in order for system to use UEFI and boot Ubuntu as well as any other existing installs using UEFI.

An important part (which may be vendor specific) is how to bootup in EFI mode (ie, the same Ubuntu 14.04 LTS CD can detect two different mode and render the different text vs non-text bootup screen as shown above).

http://forum.hardware.fr/hfr/OrdinateursPortables/portable/resolu-installation-probleme-sujet_67937_1.htm

or this:

http://rog.asus.com/220572013/rampage-motherboards/rampage-iv-uefi-boot-installation-guide-on-windows-7-or-8/

Notice that at the BIOS setup for boot priorities, there are generally two different option for DVD: Px or UEFI (or some other words). One of this is for UEFI and another is for legacy MBR-based bootup.

3

Solved the EFI problem on my ACER notebook 5560G, it turned out that renaming the EFI directory and EFI file on the Wubi USB disk worked (thanks immerohnegott).

It forced a normal GRUB install on 2 premade partitions with GParted on a USB stick. The partitons were:

  • /boot (100 mb)
  • / (70 GB)

Reboot into Windows 7 and install the free version of EasyBCD. Add a new entry , Linux -- >> Grub 2 and it will search all partitions for the GRUB bootloader.

In this way the Windows "System Reserved" partition and the PQSERVICE Acer Hidden Partition are not touched.

2
  • Thank you. I refused to follow the steps by Luis Alvarado and this simple way did it for me. I'm not saying Luis' answer is not correct, but if I have to go to so much trouble just to get Ubuntu to boot, I'd rather use Windows. Yes, I said it. So folks, try this before trying to almost build your own linux from scratch. It might spare you from having to kick you UEFI board and your Ubuntu USB key out of the m-f window.
    – Gabriel
    Jul 31, 2012 at 14:31
  • The very first sentence of your link "This only applies to systems with Windows NOT running in EFI mode"... hmmmm.
    – geezanansa
    Aug 16, 2013 at 0:30
3

You can make USB bootable drives that work with the EFI system, I'm not as seasoned as some of y'all so I figured out a way that is easy and works :)

In a machine that has the EFI bios, insert a CD/DVD with Parted Magic (I had it on a HIREN Boot CD that I made into a CD instead of a USB) Boot from that CD/DVD.

Once you are in Parted Magic, insert an empty USB jump drive with at least 2GB memory. Open up the Unetbooten utility that is included in Parted Magic. Run the program and choose whatever distribution you are trying to load on the jump drive. Follow directions and wait for it to complete.

That USB drive should boot on any EFI system now. At least it worked for me :oP

1
  • Unetbootin is a great way to create USB installation media. I can also recommend pendrivelinux utilities which includes Universal USB installer (pendrivelinux.com/universal-usb-installer-easy-as-1-2-3) These tools simply give GUI for .iso and formatting drive (FAT32) which is just as easily achieved by using CLI once you have practised a few times. This is still not a solution for getting Ubuntu installer to run using U/EFI though. ie the iso's are the same regardless of which media is used either be it DVD or USB. The installer is the problem not the media used to mount it.
    – geezanansa
    Aug 16, 2013 at 0:39
2

I've run into thus problem installing Ubuntu 14.04 on a Lenovo ThinkCentre M91p, and I've got a quick/easy solution:

  1. Before you boot from the Ubuntu install disk/USB, go into your BIOS and under the "Startup" tab change the "Boot Mode" from "Auto" to "Legacy".
  2. Install Ubuntu.
  3. If you want, change the Boot Mode in the BIOS back to Auto.

That works consistently for me.

Pretty sure it works because the Ubuntu installer detects whether the BIOS supports EFI or not when it decides which bootloader to install. By setting the BIOS to legacy, Ubuntu ends up installing the old bootloader which works with these Lenovo machines.

2

In your BIOS settings, change your hard disk mode to IDE, and boot from the USB flash drive. It will install in non-UEFI mode, and booting after install will also work fine.

This particular method is working great for me with Ubuntu 16.04 on a Lenovo ThinkCentre Edge 71, with the latest BIOS release.

5
  • 1
    Welcome top askubuntu! Thank you for trying to help! As this post is several years old, and the question regards a version that is no longer in support and has several answers, I'm sure the community would appreciate it if you could focus your efforts [here]askubuntu.com/unanswered)
    – Elder Geek
    Dec 22, 2016 at 15:14
  • Thanks for the thoughts - however I came across this posting because I was encountering this issue with the latest supported version, which was remedied by following the steps I provided. If you can suggest a newer posting describing the same issue, I'd be happy to post there too.
    – Gregg B.
    Dec 22, 2016 at 17:04
  • If you encountered this issue with a current release, please edit your answer to indicate what version you were running so as to assist those with the same issue and release in locating your answer. Thank you!
    – Elder Geek
    Dec 22, 2016 at 17:09
  • That's what my OP's "16.04" already references: the latest and most current LTS version. What else would you like to me edit?
    – Gregg B.
    Dec 22, 2016 at 17:12
  • Sorry I missed that. +1
    – Elder Geek
    Dec 22, 2016 at 17:17
1

You need to figure out how to get your bios to boot the install cd in efi mode, not bios mode. You will know that it is booting in efi mode because you will get a grub menu instead of the usual syslinux one.

3
  • I think it is already booting in EFI mode. I get a GRUB menu. NOT the usual semi graphical menu with the Ubuntu logo. Just a black/white GRUB menu with three options: - Try ubuntu before install - INstall ubuntu - check for defects.
    – ervingsb
    Dec 31, 2011 at 19:21
  • @ervingsb, that should do it then, assuming you told the installer to use the whole disk, rather than manual partitioning.
    – psusi
    Jan 1, 2012 at 19:23
  • 1
    Well, it did not. I gave up installing via USB. Someone on Ubuntu Forums suggested that I installed from a CDROM instead of USB. This made it work.
    – ervingsb
    Jan 2, 2012 at 7:57
0

I've had a similar problem as well.

What I experienced was that the computer with EFI is also equipped with BIOS as well. I spammed F2 like crazy, what happened was that I got a choice of either using EFI or Standard BIOS.

Beware though, if you use the BIOS the computer will boot to the message: "no OS found."

So you could potentially format your computer from there and make it boot as a normal pc.

0

I had the same issue ...i bought this new Lenovo beast of a desktop and ran into a same problem , i didnt not want WIN 8.1 on it whatsoever , (ive been dealing with Linux since Red hat 6.1) However i was not familiar with UEFI/EFI at all . PC woudnt even boot liveCD . After digging tru info on this blog , i found out you have to change couple of things in UEFI/EFI/BIOS , first was disable CSM , and choose "Legacy only" in boot startup options . Reboot and boom! i was in . Installed Ubuntu 12.04 i was good to go. Later i found that 12.04 WOULD NOT boot after changing back those same settings back to "UEFI Only" error "OS not found" .To my understanding Ubuntu started supporting this UEFI at 12.10 , i upgraded it to 13.04 ,changed the same settings ,enabled CSM .and UEFI only , and voila ! I booted from UEFI and i noticed machine runs alot better! You dont have to fresh install from UEFI just upgrade to 13.04/10 change back back to UEFI , it worked for me however ... Cant wait to see what Linux does with this fairly new feature UEFI/EFI , there some potential here

1
  • Please edit your answer and try to make it more readable by adding paragraphs inside it's body. Also, a couple of references would be great.
    – Danatela
    Mar 7, 2014 at 4:09
0

I solved this problem, I use Ubuntu 16.04 and Windows 10, and I can't boot automatically to my Ubuntu. My EFI partition is FAT32

Make sure your ubuntu partition first boot order,

$ sudo su
# cd /boot/efi/EFI/Boot
# mv bootx64.efi bootx64_.efi
# cp ../ubuntu/shimx64.efi bootx64.efi
# cp ../ubuntu/grubx64.efi grubx64.efi
# update-grub
# reboot
0

This is as much a comment on Eric's answer of Aug 19 '15 at 18:09 as a freestanding answer but might prove useful to others

I was trying to install Ubuntu 20.04 (and 16.04 before that) (and then Debian, and then the rEFInd Boot Manager) on a Lenovo ThinkCenter M91p. The machine has the ability to boot via UEFI or legacy BIOS methods, and will boot a UEFI version of all of the aforementioned installation images from a USB drive.

The installation procedes normally but on removing the key and rebooting I saw

error 1962: no operating system found

For some reason the UEFI firmware does not find the new boot entry/files written to the EFI partition.

Eventually I found a tip which suggested that there has to be an installed EFI entry with the precise name "Windows Boot Manager". I tried this but it didn't seem to help.

Eventually I did a proper installation of Windows 10. This worked! The firmware was able to find and boot Windows. So I copied the EFI image for rEFInd over the top of the Windows Boot Manager (i.e. I copied /EFI/refind/refind_x64.efi to /EFI/Microsoft/Boot/bootmgfw.efi) and finally I have a machine that will boot Ubuntu (via rEFInd) from disc directly.

I'm sure you could rename the Ubuntu loader to skip rEFInd but I thought I'd like to dual boot a couple of other things and the firmware itself doesn't seem to have a UI for a 'menu'

The difference between the proper Windows install, and just changing the label of another install, seems to some additional (garbage?) characters on the end. I can't even see how efibootmgr could set those, even if I knew what exactly I was trying to replicate.

--edit--

Or now I know what I am searching for perhaps it is actually the path/name to the boot loader

https://ubuntuforums.org/showthread.php?t=2234019

Doh!

--edit--

Furthermore it was not enough just to have the Windows installation as suggested elsewhere, this entry seems to be the only install the UEFI firmware will detect and run.

Tips:

http://mjg59.dreamwidth.org/20187.html

https://forums.lenovo.com/t5/ThinkStation/UEFI-Mode-installation-of-Linux-distributions-on-Thinkstation/td-p/1018555

Install media for Windows 7,8,10:

https://support.microsoft.com/en-us/help/15088/windows-10-create-installation-media

https://www.microsoft.com/en-gb/software-download/windows10 (no need for a key, you just need to make the install, then you can discard the whole lot)

rEFInd:

https://rodsbooks.com/refind/

-2

Same problem here. I've 'solved' it by permanently booting from my SuperGrub CD. I don't mind doing it this way. I see it as a security feature; my SuperGrub CD is my additional key. When I check my harddisks in Ubuntu I can see that the Ubuntu-HDD is a non-MBR disk. Looks like repartition this disk an adding the MBR would fix the problem but I'm too lazy to go through all this trouble.

1
  • The question implicitly asks "How to boot Ubuntu using U/EFI?" You may find MBR's are associated with MSDOS drives and U/EFI uses GPT drives. Ubuntu has the ability to use GPT when using a grub_bios partition which means not using UEFI mode to boot but BIOS/legacy mode on a GPT drive. Windows will only ever boot using UEFI to a GPT drive. This means on dual boot system using UEFI for windows and bios_grub(MBR) for Ubuntu would mean Windows boots but not Ubuntu as firmware settings would need UEFI off to boot Ubuntu. Just as OP describes....
    – geezanansa
    Aug 16, 2013 at 0:19

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .