Opened 2 months ago

Closed 2 months ago

#19086 closed bug (fixed)

userguide: mash space for efi

Reported by: nephele Owned by: nielx
Priority: normal Milestone: Unscheduled
Component: Documentation Version:
Keywords: Cc:
Blocked By: Blocking:
Platform: All

Description

The userguide said to use space instead of shift for entering the bootloader on efi systems.

It should instead advice to repeatedly press the space key.

https://www.haiku-os.org/docs/userguide/en/bootloader.html

Change History (7)

comment:1 by tqh, 2 months ago

I don't think you need to mash space anymore. I improved that long ago. There is a short time window at start up, so it just needs to be done early enough.

comment:2 by waddlesplash, 2 months ago

A user reported on IRC that just pressing space didn't work, and they needed to press it repeatedly.

comment:3 by nephele, 2 months ago

They reported that holding it did not work, that may also be holding it before the loader is active.

comment:4 by tqh, 2 months ago

Perhaps it needs to say that you press quickly, as holding down space probably don't register until you let go.

comment:5 by pulkomandy, 2 months ago

Well, ideally this would be simple. In BIOS systems, we rely on the kyboard buffer, so it's possible to press it once, have that stored in the buffer, and even if you hold it, the keyboard hardware key repeat (at least on PS/2 systems, but usually the BIOS will emulate this for USB keyboards as well) will kick in, and load the keyboard buffer with several events. So, even if something clears the keyboard buffer, the keyboard auto repeat should fill it back in.

And alternatively, if something is clearing the keyboard buffer, we have the shift key: this does not go through the keyboard buffer, but we can check the current state of the key instead. So, the key just needs to be pressed during the initialization of the bootloader.

As a result, on BIOS, both of these methods are very reliable. Unfortunately, on EFI and USB keyboards, there is no similar thing, at least with the current keyboard reading code. If I understand correctly, we don't have a way to check for shift modifier state, and there isn't really a keyboard buffer like on BIOS, or maybe it gets cleared more often and there is no automated key repeat. In any case, the timing is a bit more tricky and the easiest way to get the event generated at the right time is to mash the spacebar repeatedly.

Maybe we can consider alternative methods, for example, holding the mouse buttons, if there is no way to do it with EFI keyboard prtocols (restricting ourselves to the ones that are widely supported, because introducing cases that only work on some machines isn't great here).

comment:6 by tqh, 2 months ago

Keys pressed gets recorded, and we check three times with some waits in between, so we will detect a key press within that time. If we make it wait longer we will get a slower boot. It is just about pressing before the boot begins. It would be nice if we could do some of the boot work and check at a later point though..

comment:7 by humdinger, 2 months ago

Resolution: fixed
Status: newclosed

I've made the wording clearer:

On computers that use UEFI for booting instead of the classic BIOS, you need to repeatedly press the SPACEBAR instead of just holding SHIFT

Note: See TracTickets for help on using tickets.