# Grub[UEFI], Booting in blind mode

## trumee

I want to see the bootup process over IPMI sol (supermicro motherboard). The grub menu appears with the menu options, however Gentoo boots i get the following message.

```

Loading Linux 4.9.95-gentoo ...

Loading initial ramdisk ...

error: no suitable video mode found.

Booting in blind mode

```

Any idea why I dont see the boot process? The system otherwise boots successfully.

My grub.conf is like this,

```

$cat /boot/grub/grub.cfg

#

# DO NOT EDIT THIS FILE

#

# It is automatically generated by grub-mkconfig using templates

# from /etc/grub.d and settings from /etc/default/grub

#

### BEGIN /etc/grub.d/00_header ###

if [ -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="0"

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

}

serial --speed=115200 --unit=1 --word=8 --parity=no --stop=1

terminal_input serial

terminal_output serial

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/10_linux ###

menuentry 'Gentoo GNU/Linux' --class gentoo --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-18a74c27cd9b234b' {

   load_video

   if [ "x$grub_platform" = xefi ]; then

      set gfxpayload=keep

   fi

   insmod gzio

   insmod part_gpt

   insmod part_gpt

   insmod zfs

   set root='hd1,gpt2'

   if [ x$feature_platform_search_hint = xy ]; then

     search --no-floppy --fs-uuid --set=root --hint-bios=hd1,gpt2 --hint-efi=hd1,gpt2 --hint-baremetal=ahci1,gpt2  --hint-bios=hd2,gpt2 --hint-efi=hd2,gpt2 --hint-baremetal=ahci2,gpt2  a9f7c0f00ed9709c

   else

     search --no-floppy --fs-uuid --set=root a9f7c0f00ed9709c

   fi

   echo   'Loading Linux 4.9.95-gentoo ...'

   linux   /@/vmlinuz-4.9.95-gentoo root=ZFS=rpool/ROOT/gentoo ro  spl.spl_hostid=0xa8c06f01 console=tty0 console=ttyS2,115200

   echo   'Loading initial ramdisk ...'

   initrd   /@/initramfs-4.9.95-gentoo.img

}

submenu 'Advanced options for Gentoo GNU/Linux' $menuentry_id_option 'gnulinux-advanced-18a74c27cd9b234b' {

   menuentry 'Gentoo GNU/Linux, with Linux 4.9.95-gentoo' --class gentoo --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.9.95-gentoo-advanced-18a74c27cd9b234b' {

      load_video

      if [ "x$grub_platform" = xefi ]; then

         set gfxpayload=keep

      fi

      insmod gzio

      insmod part_gpt

      insmod part_gpt

      insmod zfs

      set root='hd1,gpt2'

      if [ x$feature_platform_search_hint = xy ]; then

        search --no-floppy --fs-uuid --set=root --hint-bios=hd1,gpt2 --hint-efi=hd1,gpt2 --hint-baremetal=ahci1,gpt2  --hint-bios=hd2,gpt2 --hint-efi=hd2,gpt2 --hint-baremetal=ahci2,gpt2  a9f7c0f00ed9709c

      else

        search --no-floppy --fs-uuid --set=root a9f7c0f00ed9709c

      fi

      echo   'Loading Linux 4.9.95-gentoo ...'

      linux   /@/vmlinuz-4.9.95-gentoo root=ZFS=rpool/ROOT/gentoo ro  spl.spl_hostid=0xa8c06f01 console=tty0 console=ttyS2,115200

      echo   'Loading initial ramdisk ...'

      initrd   /@/initramfs-4.9.95-gentoo.img

   }

   menuentry 'Gentoo GNU/Linux, with Linux 4.9.95-gentoo (recovery mode)' --class gentoo --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.9.95-gentoo-recovery-18a74c27cd9b234b' {

      load_video

      if [ "x$grub_platform" = xefi ]; then

         set gfxpayload=keep

      fi

      insmod gzio

      insmod part_gpt

      insmod part_gpt

      insmod zfs

      set root='hd1,gpt2'

      if [ x$feature_platform_search_hint = xy ]; then

        search --no-floppy --fs-uuid --set=root --hint-bios=hd1,gpt2 --hint-efi=hd1,gpt2 --hint-baremetal=ahci1,gpt2  --hint-bios=hd2,gpt2 --hint-efi=hd2,gpt2 --hint-baremetal=ahci2,gpt2  a9f7c0f00ed9709c

      else

        search --no-floppy --fs-uuid --set=root a9f7c0f00ed9709c

      fi

      echo   'Loading Linux 4.9.95-gentoo ...'

      linux   /@/vmlinuz-4.9.95-gentoo root=ZFS=rpool/ROOT/gentoo ro single 

      echo   'Loading initial ramdisk ...'

      initrd   /@/initramfs-4.9.95-gentoo.img

   }

}

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

### BEGIN /etc/grub.d/20_linux_xen ###

### END /etc/grub.d/20_linux_xen ###

### BEGIN /etc/grub.d/30_os-prober ###

### END /etc/grub.d/30_os-prober ###

### BEGIN /etc/grub.d/40_custom ###

# This file provides an easy way to add custom menu entries.  Simply type the

# menu entries you want to add after this comment.  Be careful not to change

# the 'exec tail' line above.

### END /etc/grub.d/40_custom ###

### BEGIN /etc/grub.d/41_custom ###

if [ -f  ${config_directory}/custom.cfg ]; then

  source ${config_directory}/custom.cfg

elif [ -z "${config_directory}" -a -f  $prefix/custom.cfg ]; then

  source $prefix/custom.cfg;

fi

### END /etc/grub.d/41_custom ###

```

and 

/etc/default/grub is

```

# Copyright 1999-2015 Gentoo Foundation

# Distributed under the terms of the GNU General Public License v2

#

# To populate all changes in this file you need to regenerate your

# grub configuration file afterwards:

#     'grub2-mkconfig -o /boot/grub/grub.cfg'

#

# See the grub info page for documentation on possible variables and

# their associated values.

GRUB_DISTRIBUTOR="Gentoo"

# Default menu entry

#GRUB_DEFAULT=0

# Boot the default entry this many seconds after the menu is displayed

#GRUB_TIMEOUT=5

#GRUB_TIMEOUT_STYLE=menu

# Append parameters to the linux kernel command line

#GRUB_CMDLINE_LINUX=""

#

# Examples:

#

# Boot with network interface renaming disabled

# GRUB_CMDLINE_LINUX="net.ifnames=0"

#

# Boot with systemd instead of sysvinit (openrc)

# GRUB_CMDLINE_LINUX="init=/usr/lib/systemd/systemd"

# Append parameters to the linux kernel command line for non-recovery entries

#GRUB_CMDLINE_LINUX_DEFAULT=""

GRUB_CMDLINE_LINUX_DEFAULT="spl.spl_hostid=0xa8c06f01 console=tty0 console=ttyS2,115200"

# Uncomment to disable graphical terminal (grub-pc only)

#GRUB_TERMINAL=console

# The resolution used on graphical terminal.

# Note that you can use only modes which your graphic card supports via VBE.

# You can see them in real GRUB with the command `vbeinfo'.

#GRUB_GFXMODE=640x480

# Set to 'text' to force the Linux kernel to boot in normal text

# mode, 'keep' to preserve the graphics mode set using

# 'GRUB_GFXMODE', 'WIDTHxHEIGHT'['xDEPTH'] to set a particular

# graphics mode, or a sequence of these separated by commas or

# semicolons to try several modes in sequence.

#GRUB_GFXPAYLOAD_LINUX=

# Path to theme spec txt file.

# The starfield is by default provided with use truetype.

# NOTE: when enabling custom theme, ensure you have required font/etc.

#GRUB_THEME="/boot/grub/themes/starfield/theme.txt"

# Background image used on graphical terminal.

# Can be in various bitmap formats.

#GRUB_BACKGROUND="/boot/grub/mybackground.png"

# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to kernel

#GRUB_DISABLE_LINUX_UUID=true

# Uncomment to disable generation of recovery mode menu entries

#GRUB_DISABLE_RECOVERY=true

# Uncomment to disable generation of the submenu and put all choices on

# the top-level menu.

# Besides the visual affect of no sub menu, this makes navigation of the

# menu easier for a user who can't see the screen.

#GRUB_DISABLE_SUBMENU=y

# Uncomment to play a tone when the main menu is displayed.

# This is useful, for example, to allow users who can't see the screen

# to know when they can make a choice on the menu.

#GRUB_INIT_TUNE="60 800 1"

## Serial console

GRUB_TERMINAL=serial

GRUB_SERIAL_COMMAND="serial --speed=115200 --unit=1 --word=8 --parity=no --stop=1"

```

----------

## LIsLinuxIsSogood

This is by no means an answer to your problem because I am not really knowledge about out IPMI , but am now just reading about it for the first time (it is really cool stuff).

Assuming that everything is fine with your Gentoo system (and you have KMS set in the kernel, etc. for a perfectly working video setting otherwise)...

Can you clarify that the code you printed, is the result of running some command, and what command you ran in order to produce that output (thesuccessful boot but with no process log and showing the error) What command was that you ran to connect to the console?

Did you use something like this to do that...

```
ipmitool -H {YOUR BMC IP} -U {YOUR USER} -I lanplus sol activate

```

Also it seems like the grub entry is definitely not my forte in terms of knowing answers but I will be sure to check back and see if you were able to find out more of a solution hopefully with the help of someone here, if the problem is fixable that is.

----------

## trumee

@LIsLinuxIsSogood, yes that is command i am using show serial output.

I have had some progress on this. I added the parity bit to the serial device definition and was able to get a half working solution.

The kernel command line definition in grub to,

```

linux   /@/vmlinuz-4.9.95-gentoo root=ZFS=rpool/ROOT/gentoo ro spl.spl_hostid=0xa8c06f01 console=tty0 console=ttyS1,115200n8

```

In addition I modified /etc/inittab to

```

s1:12345:respawn:/sbin/agetty -L 115200 ttyS1 vt100

```

Now IPMI sol does show the boot process. However mid way through the boot (after dracut root switch) it stops the output over the console.

The output is shown here. 

I have 3 serial ports on the motherboard.

```

# setserial -g /dev/ttyS[012]

/dev/ttyS0, UART: 16550A, Port: 0x03f8, IRQ: 4

/dev/ttyS1, UART: 16550A, Port: 0x0248, IRQ: 7

/dev/ttyS2, UART: 16550A, Port: 0xf0a0, IRQ: 19

```

The IPMI SOL seems to be outputting over ttyS1.

Any idea why the output fails after dracut?

----------

## LIsLinuxIsSogood

IDK have you checked /etc/hostid for clues yet?

Also do you have a system logger that is set to capture these messages anyhow?  Maybe you could setup another terminal like I have on all "regular" linux installs of mine to output various logging facilities to vt10 to be able to switch over to that and see what is happening.  If that isn't exactly a solution then it's because I don't have much experience with using dracut or initramfs for that matter (boot times are very fast on all machines without it...)  

By the way are you running systemd or openrc on the machine???

----------

