Hehe I was like: What?! Grub was LiLo’s successor and much better! What happened to the time?!
Back in the day I had a cool self made theme from Ghost in the Shell, I remember making some very obscure image format from some jpeg I found online. Man what time I have put into customizing my Linux experiences. The computer was truly a (well trimmed) pet. With desktops on kubes with fish inside and reflections etc.
Yeah, I usually see it for seconds a year. If I saw it often enough to worry about theming it, I'd rather spend my time on fixing whatever caused me to have to see it so ofen.
I think this is the kind of thing I would do If I had to choose between OSs with frequency, either home lab/experimentation or linux for stuffs and windows for games kind of scenario.
So there is nothing to fix, the nice choice screen is a feature.
What I really would like: something that mimicked the old SGI start up, complete with boot audio and a micro distro for OS setup. These days, with snapshot filesystems, that shouldn't be too hard. Also, I've had to chroot to fix my system in my life a few times; I can't believe that's hard to automate.
I do wish more effort was made to polish all the bits and pieces because all of this exists in some form. I suppose some of it is that everyone is doing their own slightly different thing; NixOS lets you boot to earlier generations, but only by completely turning the filesystem inside out, OpenSUSE can do snapshots, but using BTRFS which means that not many other distros even can use the same implementation, ZFS is the bee's knees but on Linux licensing always adds friction, Ubuntu made boot super smooth via Plymouth but it's very... Ubuntu.
Anyways. If you're in a position to run Linux on ZFS, may I suggest zfsbootmenu?
> ZFSBootMenu leverages the features of modern OpenZFS to allow users to choose among multiple "boot environments" (which may represent different versions of a Linux distribution, earlier snapshots of a common root, or entirely different distributions), manipulate snapshots in a pre-boot environment and, for the adventurous user, even bootstrap a system installation via zfs recv.
On Arch, I think you could install a second "backup" copy of Arch Linux on a recovery partition that your motherboard firmware can boot into directly, and then use the `arch-chroot` program to recover your main OS. I'm sure something similar exists for other distros?
On NixOS we get one new grub menu entry per “deployment”, be it when you deploy to another host or the local one. They both then get a new grub entry. Of course you can still shoot yourself in the foot by making your system inaccessible remotely, by screwing up ssh config for example. There’s also a solution for that called deploy-rs which has a magic rollback feature which rolls back the system if it can’t connect back to the computer initiating the deployment https://github.com/serokell/deploy-rs?tab=readme-ov-file#mag...
I’m using these features since multiple years now and can vouch for them.
Not exactly related to your initial question but I also have my system build in CI and do some playwright tests which become more and more comprehensive as time passes. This all gives me quite a lot of confidence I’ll find an issue early or be able to revert back.
I’m deploying on my server and it self hosts 10 or so services. Like Nextcloud and Vaultwarden. The playwright tests are to test those. It’s pretty basic like just checking I can create a user and still login. But it still caught a few regressions. And they’re still WIP. I’m getting close to being able to validate the LLDAP + Authelia config works too. It’s particularly useful in conjunction with automatically running flake update in CI. So all inputs get updated on a schedule and the tests give some level of guarantee that my server won’t break. It’s essentially QA tests automated.
I feel like your best bet with this would be one of the kexec-based bootloaders, because then it's a "real" Linux environment there, with whatever tools you want in it, instead of something special.
Startup chime in SGI machines depended on model. So an Indy had a different one than an Onyx. My first PC (80286) also had iconic sounds when it started up. Never forget.
Micro distro, is recovery OS. All three major desktop OSes have such, or a key combination to activate such. Android has two recovery partitions I believe, redundancy is key.
If you like the power of snapshots, yep filesystems with CoW like ZFS can show a list during boot. An OS like NixOS wouldn't even need such. Works perfectly fine with Ext4FS, including boot menu with snapshots, rollback feature, etc.
While these are cool, I honestly wish GRUB was silent unless you’re holding a key during boot. The 5 seconds it takes to go away and just boot the OS by default is really unnecessary.
I think you can get that by setting `GRUB_TIMEOUT_STYLE=hidden` and `GRUB_TIMEOUT=0`. Then you can hold `Shift` to see the GRUB menu, otherwise it will boot the default option immediately.
Make sure this works on your system before you really need it, as some keyboard/USB-controller combinations take a few seconds to wake up from whatever slumber they're in and start working. I ran into this several times.
Because sane OSes have sane defaults, and this is one of them. Hide information by default, unless called for. Want verbose boot log? Ask for it. Want boot menu? Ask for it. Need Bluetooth enabled at boot? Aak for it. Don't overburden the user with irrelevant info. When my 7 y.o. daughter fires up the Steam Decj, she doesn't need to see the boot menu.
On a modern laptop running Linux, the three slowest things in the boot are:
- The firmware
- The bootloader timeout
- Waiting for the user to type the encryption passphrase
Everything else takes almost no time at all. So, if you can eliminate 5 seconds from the boot process in the normal case, without eliminating your ability to debug the system in the unusual case, that's a win.
But how often do you boot a modern laptop in the first place? I feel lke the time I save in not waiting those 5 seconds occasionally is all going to be spent again in the minutes wasted having to look up how I stop the instant autoboot (or failing to stop the autoboot and having to reset and try again) the first time I need to actually interact with grub...
That doesn't provide the desired security, unless you also then carefully lock down the system so that the TPM doesn't provide the key if the software has changed. That's theoretically doable but challenging, with many failure modes in both directions: not being able to get into the system, or someone being able to get into the system when they shouldn't.
This is a significant peeve of mine. The need to explicitly specify resolution in boot managers is annoying for both laptops and machines that aren’t always used with the same monitor, because no matter what it’s going to end up in fallback with an ugly stretched resolution some portion of the time, rendering beautification with themes somewhat moot.
This limit made sense 20+ years ago but today it feels highly anachronistic, kind of like finding a corded rotary phone mounted on a wall in the kitchen of an otherwise cutting edge home. Surely it’s something that could be fixed?
My pet peeve is that grub repartitions windows disks on chain load, so if it ever boots with the disks remapped, there's a chance it'll plow apart the partition table of whatever poor disk got mapped to that hd#.
May be, but this is so minor in general, that I barely care as long as it boots properly.
Way bigger annoyance is that grub still doesn't support luks2 and uses some gimped variant of libcrypto without proper hardware acceleration that decrypts boot volumes for almost a minute. That is way more serious than boot resolution annoyances.
That's also a peeve of mine. Is there a way at all for grub to use hardware acceleration there? Or maybe the bootloader isn't allowed to do such things
Yes - use newer libcrypto. They are in the process of switching, but it just takes very long. I don't see why bootloader won't be allowed to use the CPU features that accelerate decryption.
I'm still waiting for a bootloader that will show up right from the beginning on my external monitor like my desktop + CRT monitor could do 20 years ago. systemd-boot (included with Pop!_OS) doesn't do that - so I have to actually take out my (Thinkpad X1 extreme) laptop from its stand and open it up to be able to switch between boot options; would be good to know people's experience with Grub on this front.
It's definitely a "you" problem. It works for me over a monitor connected via a docking station. I have tries pop os a while ago but it definitely worked.
My setup is as Linux friendly/vanilla as it comes; my laptop and dock are both Thinkpad and the monitor is Dell. Nothing exotic. It didn't even work when my monitor was directly connected via USB-C or HDMI so I guess I'm out of ideas about how it is a "me" problem.
I suspect it may depend on the monitor, not the bootloader. Some of them have a longer delay when turning on than others. My 4k connected over displayport has no problem, but my old VGA/DVI monitor that I use for homelab recovery cannot turn on fast enough.
Stuff like this is why I fell in love with Linux. Some amazing creativity in here. Almost makes me wish I dual booted with something so I’d have an excuse to see grub!
This, wobbly windows and rain effects. I wouldn't use any of that today, but it captivated me, at a time when customizing windows was becoming more cumbersome with each release.
I am weary of GRUB and try to avoid it. The codebase is legendary for its inscrutability, bugs and performance issues abound and its configuration ritual is ridiculous.
And yet, it is king of bootloaders for a reason. It can frigging boot HannaMontanaBSD on an ENIAC. It can boot in UEFI mode, in BIOS mode, it is a chameleon that fits the hardware it is situated in. The devs have made a heroic piece of software.
Perhaps the inscrutability of the code and its issues are inevitable given the scope of the project. I don't know, I just wish we had a more sane codebase with GRUB's capabilities.
I use and like rEFInd as my primary bootloader to dualboot Windows and Fedora.
Hackernews is obviously full of technical volks with need for encryption and what not, but I just like the macOS bootloader inspired looks that i could not replicate with grub.
Everybody complaining about grub forgot about lilo
Hehe I was like: What?! Grub was LiLo’s successor and much better! What happened to the time?!
Back in the day I had a cool self made theme from Ghost in the Shell, I remember making some very obscure image format from some jpeg I found online. Man what time I have put into customizing my Linux experiences. The computer was truly a (well trimmed) pet. With desktops on kubes with fish inside and reflections etc.
RIP. Pouring one out for Linux loader.
I'm a huge proponent of customisation, but for me, the less I have to see or even think about GRUB, the better.
Yeah, I usually see it for seconds a year. If I saw it often enough to worry about theming it, I'd rather spend my time on fixing whatever caused me to have to see it so ofen.
You'd spend more quality time with it if it looked beautiful. Think about it going up and down those menus for hours on end. Quality grub.
Meanwhile, with kexec on a good day you can spend zero time in the bootloader for as long as the system doesn't need a full hard-off power down:)
I think this is the kind of thing I would do If I had to choose between OSs with frequency, either home lab/experimentation or linux for stuffs and windows for games kind of scenario.
So there is nothing to fix, the nice choice screen is a feature.
Ah. You don't ever patch, I guess.
That's where those few seconds a year comes from. My boot screen is visible for a second or two when I reboot - this isn't the 90s.
Or he is managing headless systems where you don't see the boot process unless something has gone wrong.
I never wait for a computer to boot by staring at it unless I'm fixing a problem with the boot process. I wander off and come back later.
What I really would like: something that mimicked the old SGI start up, complete with boot audio and a micro distro for OS setup. These days, with snapshot filesystems, that shouldn't be too hard. Also, I've had to chroot to fix my system in my life a few times; I can't believe that's hard to automate.
I do wish more effort was made to polish all the bits and pieces because all of this exists in some form. I suppose some of it is that everyone is doing their own slightly different thing; NixOS lets you boot to earlier generations, but only by completely turning the filesystem inside out, OpenSUSE can do snapshots, but using BTRFS which means that not many other distros even can use the same implementation, ZFS is the bee's knees but on Linux licensing always adds friction, Ubuntu made boot super smooth via Plymouth but it's very... Ubuntu.
Anyways. If you're in a position to run Linux on ZFS, may I suggest zfsbootmenu?
> ZFSBootMenu leverages the features of modern OpenZFS to allow users to choose among multiple "boot environments" (which may represent different versions of a Linux distribution, earlier snapshots of a common root, or entirely different distributions), manipulate snapshots in a pre-boot environment and, for the adventurous user, even bootstrap a system installation via zfs recv.
- https://docs.zfsbootmenu.org/en/v3.0.x/index.html
What's wrong with Plymouth? I use it on NixOS and it seems to just work and show a Nix logo on boot
On Arch, I think you could install a second "backup" copy of Arch Linux on a recovery partition that your motherboard firmware can boot into directly, and then use the `arch-chroot` program to recover your main OS. I'm sure something similar exists for other distros?
On NixOS we get one new grub menu entry per “deployment”, be it when you deploy to another host or the local one. They both then get a new grub entry. Of course you can still shoot yourself in the foot by making your system inaccessible remotely, by screwing up ssh config for example. There’s also a solution for that called deploy-rs which has a magic rollback feature which rolls back the system if it can’t connect back to the computer initiating the deployment https://github.com/serokell/deploy-rs?tab=readme-ov-file#mag...
I’m using these features since multiple years now and can vouch for them.
Not exactly related to your initial question but I also have my system build in CI and do some playwright tests which become more and more comprehensive as time passes. This all gives me quite a lot of confidence I’ll find an issue early or be able to revert back.
Could you tell me more about the playwright tests? From what I can see it's a web testing framework, I don't see how that fits in here.
Ah you’re right. I should’ve been more clear.
I’m deploying on my server and it self hosts 10 or so services. Like Nextcloud and Vaultwarden. The playwright tests are to test those. It’s pretty basic like just checking I can create a user and still login. But it still caught a few regressions. And they’re still WIP. I’m getting close to being able to validate the LLDAP + Authelia config works too. It’s particularly useful in conjunction with automatically running flake update in CI. So all inputs get updated on a schedule and the tests give some level of guarantee that my server won’t break. It’s essentially QA tests automated.
This link shows what the playwright tests look like. They are parametrized on the service to test so I’m sure I’m testing the same functionality every time. https://github.com/ibizaman/selfhostblocks/blob/c2148eda7704...
I feel like your best bet with this would be one of the kexec-based bootloaders, because then it's a "real" Linux environment there, with whatever tools you want in it, instead of something special.
Eg: https://github.com/kexecboot/kexecboot
macOS has both these features, sort of.
Startup chime in SGI machines depended on model. So an Indy had a different one than an Onyx. My first PC (80286) also had iconic sounds when it started up. Never forget.
Micro distro, is recovery OS. All three major desktop OSes have such, or a key combination to activate such. Android has two recovery partitions I believe, redundancy is key.
If you like the power of snapshots, yep filesystems with CoW like ZFS can show a list during boot. An OS like NixOS wouldn't even need such. Works perfectly fine with Ext4FS, including boot menu with snapshots, rollback feature, etc.
> My first PC (80286) also had iconic sounds when it started up.
While these are cool, I honestly wish GRUB was silent unless you’re holding a key during boot. The 5 seconds it takes to go away and just boot the OS by default is really unnecessary.
I think you can get that by setting `GRUB_TIMEOUT_STYLE=hidden` and `GRUB_TIMEOUT=0`. Then you can hold `Shift` to see the GRUB menu, otherwise it will boot the default option immediately.
Make sure this works on your system before you really need it, as some keyboard/USB-controller combinations take a few seconds to wake up from whatever slumber they're in and start working. I ran into this several times.
Good tip. I've always felt like I'd like to be able to boot directly into the Second Option via a key, etc. like Shift + 2 etc
Why would you actually want this? Such a weird desire to hide this kind of stuff because it's so inconsequential in my mind.
Because sane OSes have sane defaults, and this is one of them. Hide information by default, unless called for. Want verbose boot log? Ask for it. Want boot menu? Ask for it. Need Bluetooth enabled at boot? Aak for it. Don't overburden the user with irrelevant info. When my 7 y.o. daughter fires up the Steam Decj, she doesn't need to see the boot menu.
On a modern laptop running Linux, the three slowest things in the boot are:
- The firmware
- The bootloader timeout
- Waiting for the user to type the encryption passphrase
Everything else takes almost no time at all. So, if you can eliminate 5 seconds from the boot process in the normal case, without eliminating your ability to debug the system in the unusual case, that's a win.
But how often do you boot a modern laptop in the first place? I feel lke the time I save in not waiting those 5 seconds occasionally is all going to be spent again in the minutes wasted having to look up how I stop the instant autoboot (or failing to stop the autoboot and having to reset and try again) the first time I need to actually interact with grub...
Every time you update the Linux kernel, among other things.
Or, if you're working on speeding up virtual machine boots, in which case you skip the bootloader entirely and use the kernel's EFI stub.
if you use the TPM storage, you can avoid typing the encryption passphrase
That doesn't provide the desired security, unless you also then carefully lock down the system so that the TPM doesn't provide the key if the software has changed. That's theoretically doable but challenging, with many failure modes in both directions: not being able to get into the system, or someone being able to get into the system when they shouldn't.
I'm pretty sure there is an option for this, holding shift makes it show the menu.
What if you don't remember the key you need to press?
You RTFM (which can be a quick search or LLM chat away on another device like your phone).
How do those background images scale on different monitors/resolutions?
Btw, how does grub figure out in what resolution to draw the interface?
judging from some of these repos, I think the answer is: they don't. It seems like you have to manually pick images with the correct resolution
You can set the resolution explicitly, otherwise it will render at resolution UEFI started the boot with.
This is a significant peeve of mine. The need to explicitly specify resolution in boot managers is annoying for both laptops and machines that aren’t always used with the same monitor, because no matter what it’s going to end up in fallback with an ugly stretched resolution some portion of the time, rendering beautification with themes somewhat moot.
This limit made sense 20+ years ago but today it feels highly anachronistic, kind of like finding a corded rotary phone mounted on a wall in the kitchen of an otherwise cutting edge home. Surely it’s something that could be fixed?
My pet peeve is that grub repartitions windows disks on chain load, so if it ever boots with the disks remapped, there's a chance it'll plow apart the partition table of whatever poor disk got mapped to that hd#.
May be, but this is so minor in general, that I barely care as long as it boots properly.
Way bigger annoyance is that grub still doesn't support luks2 and uses some gimped variant of libcrypto without proper hardware acceleration that decrypts boot volumes for almost a minute. That is way more serious than boot resolution annoyances.
That's also a peeve of mine. Is there a way at all for grub to use hardware acceleration there? Or maybe the bootloader isn't allowed to do such things
Yes - use newer libcrypto. They are in the process of switching, but it just takes very long. I don't see why bootloader won't be allowed to use the CPU features that accelerate decryption.
In terms of material impact, it is minor but as far as impression shaping papercuts go, bootloader jank is pretty high up on the list.
What can I say? Feels weird to include a JSON library in a bootloader.
Maybe a stage 0 bootloader, definitely not a stage 3 one.
"Grand Theft Gentoo": https://raw.githubusercontent.com/Jacksaur/Gorgeous-GRUB/ref...
Oh my gosh, that one’s a gem! Rage Linus on the top right, smug confused Balmer on the bottom… the Gates mugshot is icing on the cake. awesome!
I'm still waiting for a bootloader that will show up right from the beginning on my external monitor like my desktop + CRT monitor could do 20 years ago. systemd-boot (included with Pop!_OS) doesn't do that - so I have to actually take out my (Thinkpad X1 extreme) laptop from its stand and open it up to be able to switch between boot options; would be good to know people's experience with Grub on this front.
It's definitely a "you" problem. It works for me over a monitor connected via a docking station. I have tries pop os a while ago but it definitely worked.
My setup is as Linux friendly/vanilla as it comes; my laptop and dock are both Thinkpad and the monitor is Dell. Nothing exotic. It didn't even work when my monitor was directly connected via USB-C or HDMI so I guess I'm out of ideas about how it is a "me" problem.
I suspect it may depend on the monitor, not the bootloader. Some of them have a longer delay when turning on than others. My 4k connected over displayport has no problem, but my old VGA/DVI monitor that I use for homelab recovery cannot turn on fast enough.
I can finally make my computer look like the ones from hackers! Awesome.
Haha, my first thought when I saw the themes was, wow this is exactly like the movie!
Might rewatch it soon, been listening to the soundtrack while working lately :)
A soundtrack so good they made three separate soundtracks. The last one was entirely music that wasn’t in the movie.
Fantastic.
Stuff like this is why I fell in love with Linux. Some amazing creativity in here. Almost makes me wish I dual booted with something so I’d have an excuse to see grub!
This, wobbly windows and rain effects. I wouldn't use any of that today, but it captivated me, at a time when customizing windows was becoming more cumbersome with each release.
I am weary of GRUB and try to avoid it. The codebase is legendary for its inscrutability, bugs and performance issues abound and its configuration ritual is ridiculous.
And yet, it is king of bootloaders for a reason. It can frigging boot HannaMontanaBSD on an ENIAC. It can boot in UEFI mode, in BIOS mode, it is a chameleon that fits the hardware it is situated in. The devs have made a heroic piece of software.
Perhaps the inscrutability of the code and its issues are inevitable given the scope of the project. I don't know, I just wish we had a more sane codebase with GRUB's capabilities.
I had one from Distro Themes once in Manjaro up until one of heavy updates overwritten it with default theme.
Also, github gives me "You have exceeded a secondary rate limit" message while it's the first time I'm visiting it today. Yey.
I use and like rEFInd as my primary bootloader to dualboot Windows and Fedora.
Hackernews is obviously full of technical volks with need for encryption and what not, but I just like the macOS bootloader inspired looks that i could not replicate with grub.
Love the concept of BSOL, might give that a try.