[Bug 1240366] Re: Use the same key to interrupt autoboot under legacy and EFI

Steve Langasek steve.langasek at canonical.com
Sat Nov 16 00:02:38 UTC 2013


Yang Bai, your description of the current status is very accurate.
Unfortunately, this description doesn't reveal any solutions that we
haven't already thought of.

> Easy way to fix this issue is removing the keystatus branch. But this
> will cause a 3-second addition to boot time.

A 3 second delay on boot on all systems would be contrary to the
guidance from Mark and the design team.  We will not add an unnecessary
boot delay in order to make all systems consistent with those that
currently have the poorest boot experience.

The design of the current boot experience is as follows:

 - BIOS:
   - if the last boot failed, display the menu and wait indefinitely for the user to make a selection.
   - if the last boot succeeded, boot the first option immediately without delay.
   - to interrupt the boot, hold down the shift key, which grub will check instantaneously.
 - UEFI:
   - if the last boot failed, display the menu and wait indefinitely for the user to make a selection.
   - if the last boot succeeded, boot to the menu and wait 10 seconds for the user to input a selection before booting.

Is this the boot experience that you are seeing in practice?  (If it
isn't, that's a bug we should fix.)  Assuming it is, do you have any
concrete suggestions on what we should do to improve the UEFI boot
experience, given that we are not going to slow down the boot for BIOS
systems?

-- 
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to grub2 in Ubuntu.
https://bugs.launchpad.net/bugs/1240366

Title:
  Use the same key to interrupt autoboot under legacy and EFI

Status in GRand Unified Bootloader:
  New
Status in OEM Priority Project:
  New
Status in OEM Priority Project precise series:
  New
Status in “grub2” package in Ubuntu:
  New

Bug description:
  We have one change in ubuntu_quick_boot.patch, as:

  +if [ "x\${timeout}" != "x-1" ]; then
  +  if keystatus; then
  +    if keystatus --shift; then
  +      set timeout=-1
  +    else
  +      set timeout=0
  +    fi
  +  else
  +    if sleep$verbose --interruptible 3 ; then
  +      set timeout=0
  +    fi
  +  fi
  +fi

  This will first try keystatus command then try sleep.

  On Legacy system, keystatus is  implemented, so it will just detect the status of shift key.
  Keystatus is using to detect the status of modify keys.  This command is implemented by every term's getkeystatus function. On legacy system, getkeystatus function is implemented by bios_data_area.

  On EFI system, keystatus is not implemented, so it will fallback to sleep command.
  On EFI system, getkeystatus is not defined. Even we have a patch called ubuntu_sleep_shift, allow shift key to interrupt sleep. But EFI SIMPLE TEXT INPUT PROTOCOL (http://wiki.phoenix.com/wiki/index.php/EFI_SIMPLE_TEXT_INPUT_PROTOCOL) does not provide a way to test the mod key status. 

  So this will cause different ways to interrupt autoboot on different
  systems. shift key on legacy and ESC key on EFI.

  Easy way to fix this issue is removing the keystatus branch. But this
  will cause a 3-second addition to boot time.

To manage notifications about this bug go to:
https://bugs.launchpad.net/grub/+bug/1240366/+subscriptions



More information about the foundations-bugs mailing list