1

Initially I had dual boot, with Windows 10 and Ubuntu. Details:
- Windows EFI files in /dev/sda1
- Ubuntu in /dev/sda8

In pursuit of learning I start following the Linux From Scratch Project to try to create my own Linux. I used /dev/sda9 partition for this. After I am done I am not able to find my Windows and Ubuntu in grub menu, only Linux from scratch is available. But when I try to boot from Live CD both Ubuntu and Windows are shown along with the Live CD option.
With Live CD option these are the output of some commands:

ls -l /dev/disk/by-label/

total 0
lrwxrwxrwx 1 root root 10 Mar 19 10:15 DELLSUPPORT -> ../../sda7
lrwxrwxrwx 1 root root 10 Mar 19 10:15 ESP -> ../../sda1
lrwxrwxrwx 1 root root 10 Mar 19 10:15 Image -> ../../sda6
lrwxrwxrwx 1 root root 10 Mar 19 10:15 New\x20Volume -> ../../sda4
lrwxrwxrwx 1 root root 10 Mar 19 10:15 OS -> ../../sda3
lrwxrwxrwx 1 root root 10 Mar 19 10:15 UBUNTU\x2017_1 -> ../../sdb1
lrwxrwxrwx 1 root root 10 Mar 19 10:15 WINRETOOLS -> ../../sda5


For command sudo fdisk -l

    Disk /dev/loop0: 1.3 GiB, 1425731584 bytes, 2784632 sectors
    Units: sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/sda: 1.8 TiB, 2000398934016 bytes, 3907029168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: B128B55E-BDDA-4F19-8CBA-8FAD8E802736

Device          Start        End    Sectors   Size Type
/dev/sda1        2048    1026047    1024000   500M EFI System
/dev/sda2     1026048    1288191     262144   128M Microsoft reserved
/dev/sda3     1288192 1722216447 1720928256 820.6G Microsoft basic data
/dev/sda4  1722216448 2656086015  933869568 445.3G Microsoft basic data
/dev/sda5  3879495680 3880417279     921600   450M Windows recovery environment
/dev/sda6  3880417280 3904839679   24422400  11.7G Windows recovery environment
/dev/sda7  3904841728 3907028991    2187264     1G Windows recovery environment
/dev/sda8  2752610304 3879495679 1126885376 537.3G Linux filesystem
/dev/sda9  2656086016 2752610303   96524288    46G Linux filesystem

Partition table entries are not in disk order.




Disk /dev/sdb: 14.7 GiB, 15744892928 bytes, 30751744 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xcf80b994

Device     Boot Start      End  Sectors  Size Id Type
/dev/sdb1  *     2048 30751743 30749696 14.7G  c W95 FAT32 (LBA)


For command, sudo blkid:

/dev/sda1: LABEL="ESP" UUID="C496-69E5" TYPE="vfat" PARTLABEL="EFI system partition" PARTUUID="4950763d-c24d-4680-927a-1e595c303648"
/dev/sda3: LABEL="OS" UUID="9254944E54943747" TYPE="ntfs" PARTLABEL="Basic data partition" PARTUUID="b16a3bfb-16fb-4275-a3fe-6e3dbcb689a1"
/dev/sda4: LABEL="New Volume" UUID="48103B2D103B20FC" TYPE="ntfs" PARTLABEL="Basic data partition" PARTUUID="25545acb-af8e-4230-a6d8-24337815dde9"
/dev/sda5: LABEL="WINRETOOLS" UUID="5018B15D18B14330" TYPE="ntfs" PARTUUID="c1f4defe-71d1-46fd-a501-cabfd279c132"
/dev/sda6: LABEL="Image" UUID="B23AB2C13AB281C1" TYPE="ntfs" PARTUUID="cfa18786-2f02-4b3a-ae6e-d44dc0364e50"
/dev/sda7: LABEL="DELLSUPPORT" UUID="6CE0AEC7E0AE973C" TYPE="ntfs" PARTUUID="82b58d3a-141a-4134-91cb-f41c3994121c"
/dev/sda8: UUID="972bea99-5b5f-410b-830b-b3c248d54062" TYPE="ext4" PARTUUID="3ee28255-1737-405c-8bf7-90695a0ce8b2"
/dev/sda9: UUID="180af068-75e7-4fb4-b459-271231cec69f" TYPE="ext4" PARTUUID="5dfc33a2-73a5-4ebb-994e-c1cc7d655d21"
/dev/sdb1: LABEL="UBUNTU 17_1" UUID="D29D-D873" TYPE="vfat" PARTUUID="cf80b994-01"
/dev/loop0: TYPE="squashfs"
/dev/sda2: PARTLABEL="Microsoft reserved partition" PARTUUID="6eec3d1c-1f7f-46a9-9d7a-fa7b75775a1f"

After mounting all the sdaX and running grub-install --boot-directory=/mnt/boot /dev/sda, following error is given:

Installing for i386-pc platform.
grub-install: warning: this GPT partition label contains no BIOS Boot Partition; embedding won't be possible.
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.

I have searched a lot and nothing seems to work. Any help will be great.

1 Answer 1

1

Your system is using UEFI and GPT, and you're attempting to install a version of GRUB intended for legacy BIOS without having a legacy-compatibility BIOS Boot Partition. This is not a valid combination.

No legacy-style bootloader can include operating systems that use UEFI boot scheme, as UEFI is way outside the context they're developed for. Some UEFI bootloaders may be able to offer an option to boot a legacy-style OS, if the method used to invoke the legacy compatibility in this particular UEFI implementation was known to the writer of the UEFI bootloader.

The best option would be to use an UEFI version of GRUB (it should say something like Installing for x86_64-efi platform instead of i386-pc.)

That would allow installing GRUB as a file in /dev/sda1, in a directory like \EFI[name of your choice]\grubx64.efi, and there should be no need for BIOS-style tricks like embedding or blocklists at all. The grub-install command of the UEFI version of GRUB should handle this automatically for you.

When you're booting from a Live CD, you should be aware that your system may have two different ways for booting from a CD: the legacy BIOS way, and the UEFI way. The trick is that the UEFI firmware boot variables, which are important for installing a bootloader, will be accessible only if the system is booted in the UEFI way. Some OS installers will actually detect whether the UEFI boot variables are accessible or not, and will use that for making a decision whether to install an UEFI or legacy BIOS version of a bootloader. If you have to install an UEFI-bootable OS from a legacy-booted CD/DVD, you must find some way to override this decision.

Creating a BIOS Boot Partition on a GPT-partitioned disk would require you to keep flipping the firmware settings: UEFI boot for Windows, and legacy-style boot for your Linux installation. This is not ideal, and not all systems support the BIOS+GPT combination.

A complete reinstallation of your system for full legacy operation would be a lot of work, and counterproductive if your goal is to learn about the procedures for new hardware.

You must log in to answer this question.

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