I don’t think any of the major distros do it currently, but there are ways (primarily/only one I know is with systemd-boot
). It invokes one of the boot binaries (usually “Unified Kernel Images”) that are marked as “good” or one that still has “tries left” (whichever is newer). A binary that has “tries left” gets that count decremented when the boot is unsuccessful and when it reaches 0 it is marked as “bad” and if it boot successfully it gets marked as “good”.
So this system is basically just requires restarting the system on an unsuccessful boot if it isn’t done already automatically.