-
Notifications
You must be signed in to change notification settings - Fork 169
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
grub: extend boot prompt timeout to 5 seconds #1263
Conversation
At 1 second it's almost impossible to catch the boot prompt if you need to change the kernel command line parameters. Let's extend it to 5 seconds so users have a fighting chance to catch the prompt. This follows from a similar change made to the Live ISO: coreos/fedora-coreos-config#281
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: dustymabe The full list of commands accepted by this bot can be found here. The pull request process is described here
Needs approval from an approver in each of these files:
Approvers can indicate their approval by writing |
Kind of torn... see e.g. this thread where @crawford was wary about another 5 seconds in node bootup. We could make this platform specific? E.g. only do it on metal and vmware to start? |
(And then on AWS make it zero) |
I use e.g. |
yeah I agree I'm torn too. Extending boot time isn't great.
I'd like to have it for all platforms where people can reasonably get to the console of the machine. This happens to be one of (and maybe the only) way to rollback a machine in the case of an upgrade failure that has your system borked (where the system being borked could have a lot of different meanings). maybe I can make it platform specific, but it would be worth us saying which platforms users can reasonably get to a console on..
|
At least GCP, Azure, DO, and Packet. Not AWS. |
Do all those clouds have a CLI for accessing the console though? I think Packet at least does, but otherwise if it's through the cloud's web UI, being able to access the console right at the start within a 5s window wouldn't be trivial. (My argument being let's not do this if it's actually not usable anyway.) I'm guessing this is mostly about network args, right? (And I guess in the bare metal case, installer kargs, though we should be emphasizing the CLI path now: coreos/fedora-coreos-docs#26). In which case, can we limit this to just where that's relevant? Most clouds shouldn't really need network karg tweaks on first boot. |
I don't think so. I think it's about any karg you'd want to add ephemerally because of need (debugging problems) or test (exploring features). Also, choosing an older bootentry in the case you need to. |
The consoles don't generally close when the instance restarts, so it's still possible to catch the GRUB prompt on reboot. |
How much would we want this if we had Ignition support for kernel arguments ? |
Ignition support for kargs would set them persistently, right? In #1263 (comment) I argue more that the value of this is for ephemeral arguments. |
Can you describe a more specific use case for ephemeral? I can imagine it but it helps to have it written down. That said we could invent ephemeral arguments too though there's some interesting twists there. |
I'm sure we could name many more |
Right, though if this is for local development/testing, particularly with e.g. |
In fact I'm just going to do that now |
For the use case of enabling systemd debugging, etc. coreos#1263 (comment)
Done in #1265 (with the usual requisite duplication between cosa and mantle...it's like some sort of strange recurring pattern) |
Now, using "easy to do w/qemu" tricks that don't work in other places is a tradeoff, because it does make debugging an issue elsewhere harder. But, IMO we should be making an OS that works absolutely perfectly in qemu - there's no excuse not to do so, particularly for early bootup stuff. |
For the use case of enabling systemd debugging, etc. coreos#1263 (comment)
If the use case includes debugging on reboot, then Ignition support for kargs would work right? Another topic here - on bare metal at least...is there some sort of standard way one can ask the bootloader to display a menu via the UEFI firmware? Because it is a bit silly to have a timeout "press f12 to enter setup" or whatever, then another timeout "press a key to edit the bootloader". |
I'm really not too concerned about that case with this proposed change. As developers we can hack and slash images to do whatever we want. I'm concerned about the user experience, which will make our lives easier too. If I'm helping someone debug and I need to ask them to add a kernel command line parameter, then explaining to them they only have 1 second to catch the prompt and whatever interface they're using might not even give them a chance at all to hit it in that time is bad for them and for us. As a user, I might consider moving to another offering. |
Well yes, but I can say for sure I've often done
Right. OK first, this github issue isn't the first time the bootloader timer has been discussed 😉 Second, I get the use case but I'm arguing for platform specifics and more sophistication/thought. In particular a bottom line for me is: We should set the bootloader timeout to zero in AWS, because anything else makes no sense at all. |
One idea for ephemeral args is to have a file in For the "select an older boot entry", what's the scenario you're thinking of? If the boot still works enough to SSH in, then you can |
Even simpler is a one-boot stamp file e.g. like |
I support #1265 - thanks for that.
I'm with you. I support having a 0 timeout on platforms where it's feasibly impossible to catch the grub prompt. If we can agree on the platforms where it's impossible to get to a grub prompt (no console access) then I can try to rework this to take that into account and have 0 for those platforms and 5 for the ones where you can access it. |
I appreciate the ideas here, but I don't think there is anything we're going to do to cover all cases where someone is going to need to access the grub prompt/kernel command line. @jlebon you even wrote this: https://docs.fedoraproject.org/en-US/fedora-coreos/access-recovery/ It feels like we are trying to over-engineer this.
if the boot still works enough to SSH in - yeah that's great if it does, but who says that it will in every case? Even if we had automatic rollback working I'd still want to be able to get the grub prompt just in case. |
I think what bothers me is that (1) we're slowing down every boot across almost all platforms, and (2) the boot menu is not a very nice interface. So covering the major use cases via a nicer UX is a double win. And a sleep stamp file is a catch all for anything else. Anyway, would it be unreasonable to start with just bare metal and VMware as suggested higher up (since that's where you expect bootup to take longer anyway)? |
Yeah I'm cool with only implementing it on a subset of platforms and then we can extend that mechanism based on further conversations we have. So i'll start to try to make this generic so one can specify the timeout for platforms. |
/hold |
For the use case of enabling systemd debugging, etc. #1263 (comment)
This should be more tractable once we have coreos/fedora-coreos-tracker#110. |
@dustymabe I'd suggest transforming this into a tracker issue RFE and closing this since an implementation of it would likely extend the work we did for platform-specific console instead. |
Broke out into coreos/fedora-coreos-tracker#1236 |
At 1 second it's almost impossible to catch the boot prompt if you need
to change the kernel command line parameters. Let's extend it to 5
seconds so users have a fighting chance to catch the prompt.
This follows from a similar change made to the Live ISO:
coreos/fedora-coreos-config#281