Anaconda Crash Recovery

Whoah! Another anaconda post! Yes! You should know that the anaconda developers are working hard at fixing bugs, improving features, and adding enhancements all the time, blog posts about it or not. 🙂
Today Chris and I talked about how the UI might work for anaconda crash recovery. So here’s the thing: Anaconda is completely driven by kickstart. Every button, selection, or thing you type out in the UI gets translated into kickstart instructions in memory. So, why not save that kickstart out to disk when anaconda crashes? Then, any configuration and customization you’ve done would be saved. You could then load up anaconda afterwards with the kickstart and it would pre-fill in all of your work so you could continue where you left off!
However! Anaconda is a special environment, of course. We can’t just save to disk. I mean, okay, we could, but then we can’t use that disk as an install target after restarting the installer post crash because we’d have to mount it for reading the kickstart file off of it! Eh. So it’s a bit complicated. Chris and I thought it’d be best to keep this simple (at least to start) and allow allow for saving the kickstart to an external disk to avoid these kind of hairy issues.
Chris and I talked about how it would be cool if the crash screen could just say, “insert a USB disk if you’d like to save your progress,” and we could auto-detect when the disk was inserted, save, and report back to the user that we saved. However, blivet (the storage library used by anaconda) doesn’t yet have support for autodetecting devices. So what I thought we could do instead is have a “Save kickstart” button, and that button would kick off the process of searching for the new disk, reporting to the user if they still needed to insert one or if there was some issue with the disk. Finally, once the kickstart is saved out, it could report a status that it was successfully saved.
Another design consideration I talked over with bcl for a bit – it would be nice to keep this saving process as simple as possible. Can we avoid having a file chooser? Can we just save to the root of the inserted disk and leave it at that? That would save users a lot of mental effort.
The primary use case for this functionality is crash recovery. It crashes, we offer to save your work. One additional case is that you’re quitting the installer and want to save your work – this case is rarer, but maybe it would be worth offering to save during normal quit too.
So here are my first cuts at trying to mock something out here. Please fire away and poke holes!
So this is what you’d first see when anaconda crashes:
00-CrashDialog
You insert the disk and then you hit the “Save kickstart” button, and it tries to look for the disk:
01-MountingDisk
Success – it saved out without issue.
02A-Success
Oooopsie! You got too excited and hit “Save kickstart” without inserting the disk.
02B-NoDiskFound
Maybe your USB stick is bricked? Something went wrong. Maybe the file system’s messed up? Better try another stick:
02C-MountingError
Hope this makes sense. My Inkscape SVG source is available if you’d like to tweak or play around with this!
Comments / feedback / ideas welcomed in the comments or on the anaconda-devel list.

8 Comments

  1. drago01 says:

    Well not sure how much this actually helps .. we do not provide updated images so if you start anaconda again with the very same input on the same hardware configuration chances are very high that you will just hit the same crash again.

  2. Saving to root of the device has one more advantage — that way it’s easier to pass such kickstart file to Anaconda for the next run.

  3. Martin says:

    Hi,
    What about to bring some colors to the dialog?
    The error message “Could not mount disk! Try another?” Could be orange/red.
    The tick sign on “Kickstart successfully saved to disk” could probably be green?

  4. Thub says:

    Is “save your progress” really a fair description? Maybe “save your choices” is closer to the truth. It’s not like you’re saving a half-installed system, or am I misunderstanding the circumstances where this dialogue will pop up?

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.