• tetris11@lemmy.ml
    link
    fedilink
    arrow-up
    1
    ·
    5 months ago

    I think the answers given here don’t quite fit the question.

    Android and Windows have dedicated recovery partitions sectioned off on the disk that the OS never boots to and does not interact with during normal system operation.

    If something goes wrong with the OS, then a signal is sent to the BIOS or other non-OS system to “hey, recover from this partition”.

    Btrfs, NixOS, Guix, and other immutable (file-)systems, implement this via having a file system hierarchy protected by various permissions and softlinks to create a checkpoint of sorts, which is managed by a dedicated service that runs with the OS during normal system operation.

    The drawback of these systems is that if something does go wrong with the OS, it cannot fallback to the BIOS to save it. The OS has to somehow signal to itself that it needs to restore from an earlier checkpoint.

    • kristoff@infosec.pub
      link
      fedilink
      English
      arrow-up
      1
      ·
      5 months ago

      Just watched some videos on btrfs. I start to understand the conceps. Perhaps I should also look into how exactly

      On windows and the “recovery partion”. I guess what you say is that it should always be possiblity to boot in some kind of system, but it will not happen automatically as there is no way for a system to detect that the system completely hangs.

      Thinking about it. It kind of strange. Embedded systems have watchdog interrupts that get fired if the system hangs (i.e. if it does not provide a “yes, I still live” signal every “x” milliseconds). Does a PC not have something similar?

      • tetris11@lemmy.ml
        link
        fedilink
        arrow-up
        1
        ·
        5 months ago

        embedded systems have the advantage of all using a single bootloader: Uboot, so the error path is always known and the software knows how to fallback.

        With x86_64 systems it’s a mixed bag, and maybe the windows and linux bootloader knows what to do, but in most cases it will just signal an error and stop