0

I have a new computer that I have imaged using PXE. It loads a kernel, initrd and verifies if it needs to apply an image. If it does, it goes through some logic of partitioning (BIOS, non-GPT) the disk and applying a disk image (SLES 12 SP2) which it TFTPs over the network. From this environment, it then loads the kernel and initrd directly from the boot partition and kicks off systemd from the root partition. However, if I try to boot the drive directly without PXE booting, I get the generic "No bootable OS found" error and no GRUB.

So from the OS, I got through the usual routine..

The drive is an SSD. Verify my current disk and partitioning:

# fdisk -l
Disk /dev/sda: 119.2 GiB, 128035676160 bytes, 250069680 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: dos
Disk identifier: 0x63305a1b

Device     Boot   Start       End   Sectors    Size Id Type
/dev/sda1          2048   2056319   2054272 1003.1M 82 Linux swap / Solaris
/dev/sda2       2058240 250067789 248009550  118.3G 83 Linux

# lsblk
NAME   MAJ:MIN RM    SIZE RO TYPE MOUNTPOINT
sda      8:0    0  119.2G  0 disk 
├─sda1   8:1    0 1003.1M  0 part [SWAP]
└─sda2   8:2    0  118.3G  0 part /

# cat /proc/scsi/scsi
Attached devices:
  Host: scsi0 Channel: 00 Id: 00 Lun: 00
  Vendor: ATA      Model: SanDisk SD7SN3Q- Rev: 0006
  Type:   Direct-Access                    ANSI  SCSI revision: 05

Install GRUB2 to the MBR:

# grub2-install /dev/sda                                                                                                                                                                                                                           
Installing for i386-pc platform.
Installation finished. No error reported.

Then generate my configuration:

# grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-4.4.120-92.70-default
Found initrd image: /boot/initrd-4.4.120-92.70-default
done

Now in the UEFI options, I have UEFI boot disabled. Instead, it tries to legacy PXE and legacy boot the drive. So I'd expect when it attempts to boot said disk, it will look at the first 512MB to find the MBR and boot GRUB. This part does not seem to happen however.. Is there anything else I could possibly check to see where this may be going wrong?

  • 2
    Some BIOSes insist on a partition table with an active partition. – RalfFriedl Oct 8 '18 at 21:24
  • 1
    Check your BIOS boot settings again. And set the /boot partition active in fdisk. And consider using UEFI; this 1980s boot process really needs to go. – Michael Hampton Oct 8 '18 at 21:25
  • @MichaelHampton How the BIOS transfers control to the boot loader was never the most significant problem. Having the BIOS load the first sector of the disk and jump to it works fine. The problems were that there was no properly standardized way to allocate additional disk sectors for the rest of the boot loader and the partition table format used in MBR was terrible. Using GPT with a partition for the boot loader solves both of those problems. – kasperd Oct 13 '18 at 10:25
-1

Had to mark the partition bootable using fdisk.

  • Shouldn't matter if GRUB is installed in the MBR – kasperd Oct 13 '18 at 9:59

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.