Use the same key to interrupt autoboot under legacy and EFI
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
OEM Priority Project |
Invalid
|
Medium
|
Ara Pulido | ||
Precise |
Invalid
|
Medium
|
Unassigned | ||
grub |
Invalid
|
Undecided
|
Unassigned | ||
grub2 (Ubuntu) |
Invalid
|
Undecided
|
Unassigned |
Bug Description
We have one change in ubuntu_
+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://
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.
Changed in oem-priority: | |
importance: | Undecided → High |
Changed in oem-priority: | |
status: | New → Triaged |
status: | Triaged → New |
assignee: | nobody → Ara Pulido (apulido) |
Changed in oem-priority: | |
importance: | High → Medium |
Changed in oem-priority: | |
status: | New → In Progress |
Changed in oem-priority: | |
status: | In Progress → Confirmed |
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?