I'm noticing a similar problem: GRUB_HIDDEN_TIMEOUT is set to 0, GRUB_TIMEOUT is set to 0.0 (to bypass a check of os-prober which would set it to 10 if set to 0) and GRUB_TIMEOUT_STYLE is set to menu (but I'm not sure how GRUB_TIMEOUT_STYLE does affect this all). After executing update-grub and doing a reboot I would assume that the grub menu will only appear on pressing shift otherwise it would boot immediately to the default system. But if I'm keeping shift pressed on booting I will successfully see the line "GRUB loading." but instead of displaying the menu GRUB boots immediately to the default system.
At first reading this sounds like the expected behaviour. GRUB_TIMEOUT_STYLE controls how the terminal is rendered whilst the countdown timeout is in progress. "menu" means show the menu during countdown.
GRUB_HIDDEN_TIMEOUT=0 means don't do a countdown but immediately start the default entry.
Testing for the Shift modifier being held down is done by "sleep --interruptable $timeout" - if $timeout is 0 this function isn't used and therefore no check of that state of the Shift modifier flags is performed.
The alternate GRUB_TERM_ESC (the Escape key being pressed/released) is done elsewhere too so pressing Esc may interrupt *if* it gets pressed at the exact moment GRUB is deciding to start the default entry.
I'll do some tests to see if I can reproduce this.
Upstream comment #2 referred to above:
Mon 31 Mar 2014 08:49:03 AM UTC, comment #2:
I'm noticing a similar problem: GRUB_HIDDEN_TIMEOUT is set to 0, GRUB_TIMEOUT is set to 0.0 (to bypass a check of os-prober which would set it to 10 if set to 0) and GRUB_TIMEOUT_STYLE is set to menu (but I'm not sure how GRUB_TIMEOUT_STYLE does affect this all). After executing update-grub and doing a reboot I would assume that the grub menu will only appear on pressing shift otherwise it would boot immediately to the default system. But if I'm keeping shift pressed on booting I will successfully see the line "GRUB loading." but instead of displaying the menu GRUB boots immediately to the default system.
At first reading this sounds like the expected behaviour. GRUB_TIMEOUT_STYLE controls how the terminal is rendered whilst the countdown timeout is in progress. "menu" means show the menu during countdown.
GRUB_HIDDEN_ TIMEOUT= 0 means don't do a countdown but immediately start the default entry.
Testing for the Shift modifier being held down is done by "sleep --interruptable $timeout" - if $timeout is 0 this function isn't used and therefore no check of that state of the Shift modifier flags is performed.
The alternate GRUB_TERM_ESC (the Escape key being pressed/released) is done elsewhere too so pressing Esc may interrupt *if* it gets pressed at the exact moment GRUB is deciding to start the default entry.
I'll do some tests to see if I can reproduce this.