0

I had a Windows 10 PC and wanted to create a CentOS 8 partition. I shrank the memory of the current partition and left ~100 GB to install CentOS into. Upon installation I selected the partition and CentOS 8 works perfect.

However when rebooting there is no option to boot back into windows. I have checked and my Windows partition is still there.

(parted) p                                                                
Model: ATA SanDisk SSD PLUS (scsi)
Disk /dev/sda: 1000GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: pmbr_boot

Number  Start   End     Size    File system  Name                          Flags
 1      1049kB  556MB   555MB   ntfs         Basic data partition          hidden, diag
 2      556MB   661MB   105MB   fat32        EFI system partition          boot, esp
 3      661MB   677MB   16.8MB               Microsoft reserved partition  msftres
 4      677MB   895GB   895GB   ntfs         Basic data partition          msftdata
 5      895GB   895GB   1049kB                                             bios_grub
 6      895GB   896GB   1074MB  xfs
 7      896GB   1000GB  104GB                                              lvm

(parted)                                                                  

Furthermore, os-prober returns nothing.

I have also tried yum update grub2 and rebooted without success.

I found that ls /sys/firmware/efi returns nothing which I believe indicates my boot mode is BIOS. I don't know if this is problematic?

I am pretty new to linux so am a little overwhelmed atm. Any advice would be appreciated.

EDIT 1: Contents of the grub.cfg file

#                                                                                                                     
# DO NOT EDIT THIS FILE                                                                                               
#                                                                                                                     
# It is automatically generated by grub2-mkconfig using templates                                                     
# from /etc/grub.d and settings from /etc/default/grub                                                                
#                                                                                                                     

### BEGIN /etc/grub.d/00_header ###                                                                                   
set pager=1

if [ -f ${config_directory}/grubenv ]; then
  load_env -f ${config_directory}/grubenv
elif [ -s $prefix/grubenv ]; then
  load_env
fi
if [ "${next_entry}" ] ; then
   set default="${next_entry}"
   set next_entry=
   save_env next_entry
   set boot_once=true
else
   set default="${saved_entry}"
fi

if [ x"${feature_menuentry_id}" = xy ]; then
  menuentry_id_option="--id"
else
  menuentry_id_option=""
fi

export menuentry_id_option

if [ "${prev_saved_entry}" ]; then
  set saved_entry="${prev_saved_entry}"
  save_env saved_entry
  set prev_saved_entry=
  save_env prev_saved_entry
  set boot_once=true
fi

function savedefault {
  if [ -z "${boot_once}" ]; then
    saved_entry="${chosen}"
    save_env saved_entry
  fi
}

function load_video {
  if [ x$feature_all_video_module = xy ]; then
    insmod all_video
  else
    insmod efi_gop
    insmod efi_uga
    insmod ieee1275_fb
    insmod vbe
    insmod vga
    insmod video_bochs
    insmod video_cirrus
  fi
}

terminal_output console
if [ x$feature_timeout_style = xy ] ; then
  set timeout_style=menu
  set timeout=5
# Fallback normal timeout code in case the timeout_style feature is                                                   
# unavailable.                                                                                                        
else
  set timeout=5
fi
### END /etc/grub.d/00_header ###                                                                                     

### BEGIN /etc/grub.d/00_tuned ###                                                                                    
set tuned_params=""
set tuned_initrd=""
### END /etc/grub.d/00_tuned ###                                                                                      

### BEGIN /etc/grub.d/01_users ###                                                                                    
if [ -f ${prefix}/user.cfg ]; then
  source ${prefix}/user.cfg
  if [ -n "${GRUB2_PASSWORD}" ]; then
    set superusers="root"
    export superusers
    password_pbkdf2 root ${GRUB2_PASSWORD}
  fi
fi
### END /etc/grub.d/01_users ###        

### BEGIN /etc/grub.d/08_fallback_counting ###                                                                        
insmod increment
# Check if boot_counter exists and boot_success=0 to activate this behaviour.                                         
if [ -n "${boot_counter}" -a "${boot_success}" = "0" ]; then
  # if countdown has ended, choose to boot rollback deployment,                                                       
  # i.e. default=1 on OSTree-based systems.                                                                           
  if  [ "${boot_counter}" = "0" -o "${boot_counter}" = "-1" ]; then
    set default=1
    set boot_counter=-1
  # otherwise decrement boot_counter                                                                                  
  else
    decrement boot_counter
  fi
  save_env boot_counter
fi
### END /etc/grub.d/08_fallback_counting ###                                                                          

### BEGIN /etc/grub.d/10_linux ###                                                                                    
insmod part_gpt
insmod xfs
set root='hd0,gpt6'
if [ x$feature_platform_search_hint = xy ]; then
  search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt6 --hint-efi=hd0,gpt6 --hint-baremetal=ahci0,gpt6 --hint\
='hd0,gpt6'  d41234e5-75e2-4f90-8ac6-79015ed23c9c
else
  search --no-floppy --fs-uuid --set=root d41234e5-75e2-4f90-8ac6-79015ed23c9c
fi
insmod part_gpt
insmod xfs
set boot='hd0,gpt6'
if [ x$feature_platform_search_hint = xy ]; then
  search --no-floppy --fs-uuid --set=boot --hint-bios=hd0,gpt6 --hint-efi=hd0,gpt6 --hint-baremetal=ahci0,gpt6 --hint\
='hd0,gpt6'  d41234e5-75e2-4f90-8ac6-79015ed23c9c
else
  search --no-floppy --fs-uuid --set=boot d41234e5-75e2-4f90-8ac6-79015ed23c9c
fi

# This section was generated by a script. Do not modify the generated file - all changes                              
# will be lost the next time file is regenerated. Instead edit the BootLoaderSpec files.                              
#                                                                                                                     
# The blscfg command parses the BootLoaderSpec files stored in /boot/loader/entries and                               
# populates the boot menu. Please refer to the Boot Loader Specification documentation                                
# for the files format: https://www.freedesktop.org/wiki/Specifications/BootLoaderSpec/.                              

# The kernelopts variable should be defined in the grubenv file. But to ensure that menu                              
# entries populated from BootLoaderSpec files that use this variable work correctly even                              
# without a grubenv file, define a fallback kernelopts variable if this has not been set.                             
#                                                                                                                     
# The kernelopts variable in the grubenv file can be modified using the grubby tool or by                             
# executing the grub2-mkconfig tool. For the latter, the values of the GRUB_CMDLINE_LINUX                             
# and GRUB_CMDLINE_LINUX_DEFAULT options from /etc/default/grub file are used to set both                             
# the kernelopts variable in the grubenv file and the fallback kernelopts variable.   

if [ -z "${kernelopts}" ]; then
  set kernelopts="root=/dev/mapper/cl-root ro crashkernel=auto resume=/dev/mapper/cl-swap rd.lvm.lv=cl/root rd.lvm.lv\
=cl/swap rhgb quiet "
fi

insmod blscfg
blscfg
### END /etc/grub.d/10_linux ###                                                                                      

### BEGIN /etc/grub.d/10_reset_boot_success ###                                                                       
# Hiding the menu is ok if last boot was ok or if this is a first boot attempt to boot the entry                      
if [ "${boot_success}" = "1" -o "${boot_indeterminate}" = "1" ]; then
  set menu_hide_ok=1
else
  set menu_hide_ok=0
fi
# Reset boot_indeterminate after a successful boot                                                                    
if [ "${boot_success}" = "1" ] ; then
  set boot_indeterminate=0
# Avoid boot_indeterminate causing the menu to be hidden more then once                                               
elif [ "${boot_indeterminate}" = "1" ]; then
  set boot_indeterminate=2
fi
# Reset boot_success for current boot                                                                                 
set boot_success=0
save_env boot_success boot_indeterminate
### END /etc/grub.d/10_reset_boot_success ###                                                                         

### BEGIN /etc/grub.d/12_menu_auto_hide ###                                                                           
if [ x$feature_timeout_style = xy ] ; then
  if [ "${menu_show_once}" ]; then
    unset menu_show_once
    save_env menu_show_once
    set timeout_style=menu
    set timeout=60
  elif [ "${menu_auto_hide}" -a "${menu_hide_ok}" = "1" ]; then
    set orig_timeout_style=${timeout_style}
    set orig_timeout=${timeout}
    if [ "${fastboot}" = "1" ]; then
      # timeout_style=menu + timeout=0 avoids the countdown code keypress check                                       
      set timeout_style=menu
      set timeout=0
    else
      set timeout_style=hidden
      set timeout=1
    fi
  fi
fi
### END /etc/grub.d/12_menu_auto_hide ###      
0

So, it’s nice to get grub working, however, since you said that /sys/firmware/efi is empty, that means you installed Centos8 using a legacy boot loader, however I see a UEFI volume for windows, meaning Windows needs to boot via UEFI. Windows installed as EFI won’t boot if you launch it from GRUB legacy.

You need to convert your CentOS 8 system to use UEFI, or reinstall booting the installer as EFI instead of as a legacy boot disk.

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.