[SOLVED] grub-install results in Embedding is not possible error
Linux - NewbieThis Linux forum is for members that are new to Linux.
Just starting out and have a question?
If it is not in the man pages or the how-to's this is the place!
Notices
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
If you have any problems with the registration process or your account login, please contact us. If you need to reset your password, click here.
Having a problem logging in? Please visit this page to clear all LQ-related cookies.
Get a virtual cloud desktop with the Linux distro that you want in less than five minutes with Shells! With over 10 pre-installed distros to choose from, the worry-free installation life is here! Whether you are a digital nomad or just looking for flexibility, Shells can put your Linux machine on the device that you want to use.
Exclusive for LQ members, get up to 45% off per month. Click here for more info.
grub-install results in Embedding is not possible error
I have a dual boot Win 10 - Ubuntu system on a 64 bit computer. I use Win 10 once a year to do my taxes as turbotax does not work on Ubuntu. Yesterday, I started Win 10 after almost a year and it went through a 5 hour update. When finished, I was able to file my taxes but was unable to boot into Ubuntu. I got the grub rescue> prompt. Apparently, the Win 10 upgrade screwed up the MBR?? I was able to get into Ubuntu with the following commands (at the grub rescue prompt:
set prefit=(hd0,gpt6)
insmod normal
normal
So far, so good.
Once in, I ran the following at the unix command prompt:
sudo update-grub which gave me this warning:
Warning: Setting GRUB_TIMEOUT to a non-zero value when GRUB_HIDDEN_TIMEOUT is set is no longer supported.
AND I followed this with this command:
sudo grub-install /dev/sda6
which gave me this error:
----------------------------
File system `ext2' doesn't support embedding.
grub-install: warning: Embedding is not possible. GRUB can only be installed in this setup by using blocklists. However, blocklists are UNRELIABLE and their use is discouraged..
grub-install: error: will not proceed with blocklists.
----------------------------
From what I understand, the last two commands are required to allow me to make grub permanent.
Now, every time I reboot Ubuntu, I get presented with the grub rescue> prompt and have to go through all the above steps to start the system.
Could anyone tell me what I am doing wrong? I do not know where my MBR is.
I ran gparted and took a snapshot of it but I do not know how to attach it here......
p.s. Win 10 was installed on my PC and I installed Ubuntu (LXLE) later. I suspect that installation was not done right because now to change boot from Win 10 to LXLE or viceversa, I have to press F12 when computer starts and change the boot order. I do not get presented with a boot menu when I start the computer.
Are you using an older Legacy/MBR system or UEFI? If it is an MBR system, you would need to install to the MBR not the partition as you indicate you have done. Change the sda6 to sda. If you have an EFI system, when you are booted to Ubuntu run this command and post the output:
Quote:
sudo efibootmgr
With that info, someone should be able to tell you how to set the Ubuntu Grub to boot first.
When I start the computer and press F12 to access boot option menu, I see the Windows boot options as UEFI; however, to boot up Ubuntu I choose the "Boot in legacy mode" option.
I tried running sudo efibootmgr and got this msg: sudo: efibootmgr: command not found
so I installed efibootmgr with sudo apt-get install efibootmgr and ran it to get the following msg:
----------------
Fatal: Couldn't open either sysfs or procfs directories for accessing EFI variables.
Try 'modprobe efivars' as root.
----------------
I tried modprobe efivars but it returned nothing...
I can't imagine why you'd want to run "legacy mode" for Linux - nor how it ever worked if Win10 was in EFI.
Was this always a UEFI Windows machine ?. What I mean is; "was it a Win7 machine that got upgraded ?", or was it Win8/10 as bought ?.
That's very strange - there have been threads re the latest Win10 update messing with partions, but that looks like it has converted MBR to gpt; but if that were the case I'd expect some messages about partition headers mismatch. What does this return
My Dell laptop came with Windows 10 Home installed on it. So yes, this has always been a UEFI Win m/c. I remember it was a challenge, nay, torture, installing Ubuntu LXLE alongside Win 10 and I was pretty sure the installation was less than perfect. But I was fed up of the hassle and decided to live with whatever I had installed as long as it worked!! And now, it's back to bite me.
Output of sudo parted /dev/sda "print free":
Model: ATA WDC WD5000LPVX-7 (scsi)
Disk /dev/sda: 500GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Number Start End Size File system Name Flags
17,4kB 1049kB 1031kB Free Space
1 1049kB 525MB 524MB fat32 EFI system partition boot
2 525MB 660MB 134MB Microsoft reserved partition msftres
3 660MB 251GB 251GB ntfs Basic data partition msftdata
4 251GB 251GB 1049kB bios_grub
5 251GB 251GB 1049kB linux-swap(v1)
6 251GB 486GB 235GB ext4
486GB 486GB 477MB Free Space
7 486GB 500GB 13,7GB ntfs hidden, diag
500GB 500GB 7680B Free Space
Your parted output shows you have a windows EFI install and your Ubuntu (LXLE) installed in Legacy/CSM which is why you have the BIOS_grub partition. The link below to the Ubuntu site explains how to install EFI as well as how to convert an installed system to EFI if it is not. I would expect it to work with LXLE as it is an Ubuntu derivative but am not sure.
Last I checked (by deleting and reallocating the EFI partition), mounting the EFI partition to /boot/efi and running "grub-install /dev/sda" should set things up correctly. With Mint anyway - the script has the smarts to detect BIOS/EFI and invokes the correct command.
From what I gather from your link https://help.ubuntu.com/community/UEFI, I presume I would use boot-repair and follow option 5.1 Converting Ubuntu into UEFI mode - correct?
Although I have both LXLE and Win 10 backed up, if something does go wrong, it would take me a good many hours to make it all right. With that in mind, ideally I would prefer to go back to how life was before Win 10 went on a massive upgrade/update and screwed thing up. And this is how life was: At computer start, I would go into boot options by pressing F12 and choose UEFI mode to start windows or Legacy mode to start Ubuntu. Once I select legacy mode, it would load Ubuntu by default (no EFI menu appeared) every time I restart the computer. Once a year, I would have to go into the boot menu and change the boot to Win 10 to do my taxes.
And this is the way it still is, except now when I start Ubuntu, I get a grub rescue prompt and have to put in an additional three commands:
set prefit=(hd0,gpt6)
insmod normal
normal
Based on the partition info you already have, is there anything I can do to make Ubuntu boot again without having to type in the above three additional commands? Or maybe what I am asking is - is there a solution for this error:
which gave me this error:
----------------------------
File system `ext2' doesn't support embedding.
grub-install: warning: Embedding is not possible. GRUB can only be installed in this setup by using blocklists. However, blocklists are UNRELIABLE and their use is discouraged..
grub-install: error: will not proceed with blocklists.
----------------------------
------------------------------------------------------------------------------------------------
Distribution: Debian testing/sid; OpenSuSE; Fedora; Mint
Posts: 5,524
Rep:
The Windows update probably messed with the Win10 boot loader. You have to boot from the Unbuntu install media, choose 'rescue', and open a chroot shell. There should be an option in the rescue system to reinstall grub, or reinstall boot loader. That's what you want to do.
Actually, I do not understand what you are saying. Why mount EFI partition to /dev/sda instead of using current /dev/sda1? Also, I am no expert on partitions and boot loaders so I would need a step by step - hopefully with fall backs on what to do if something goes wrong. This is why I am putting off options involving messing with boot loaders and moving partitions.
I would like to explore the low risk options first. And the lowest risk option is to figure out why "sudo grub-install /dev/sda6" produces the following error (and how to fix it):
File system `ext2' doesn't support embedding.
grub-install: warning: Embedding is not possible. GRUB can only be installed in this setup by using blocklists. However, blocklists are UNRELIABLE and their use is discouraged..
grub-install: error: will not proceed with blocklists.
Can I try "sudo grub-install /dev/sda4"? The gparted output indicates that my /dev/sda4 is a 1.0 MB unkown file system with the Flags "bios-grub".
I think your best option if to convert LXLE to UEFI but make sure you read through the instructions carefully.
The grub install error you are getting is because you are trying to install to a partition. Don't see the point in that since you already have Grub installed. You might try: sudo grub-install /dev/sda which would install Grub code to the MBR if it was modified by your windows update. Don't know why that would happen since your windows is UEFI and goes from the BIOS to the EFI partition and doesn't use the MBR.
Quote:
Warning: Setting GRUB_TIMEOUT to a non-zero value when GRUB_HIDDEN_TIMEOUT is set is no longer supported.
You can eliminate the above error by changing the /etc/default/grub file. Open it as root (sudo) in a terminal using whatever text editor you have and comment out the line GRUB_HIDDEN_TIMEOUT by placing a hash mark in front of it as below and re-run update-grub, might reboot before trying it:
Quote:
#GRUB_HIDDEN_TIMEOUT
Having one system UEFI (windows 10) and another Legacy (LXLE) is always going to be problematic and you will have to use the BIOS to boot the second system as you were doing previously. If you had installed LXLE UEFI, you wouldn't have had this problem and should have seen the Grub menu with both windows/LXLE options on boot.
So not much to read carefully - Or am I missing something?
Based on my gparted, it seems the EFI partition is /dev/sda1 not /dev/sda, am I right? I wonder if boot-repair will install Ubuntu GRUB on /dev/sda1 or as syg00 suggests, move it (and UEFI) to /dev/sda.
In boot repair, select Advanced Options then click the Grub Location tab and verify that the OS to boot by default is correct (sda6) then check to see that the Separate /boot/efi partition shows sda1 and click Apply. I would expect that it will create a directory in the EFI partition for LXLE which will probably be labelled Ubuntu as most Ubuntu derivatives use that. I would not expect that you will need to re-install Grub but simply reboot to test it.
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.