0

I have the following problem - we are distributing Raspberry Pi devices with our some software installed into it to our clients. Occasionally we need to update the current state of their OS (for example to install additional packages that are needed for our software to run) we do it in the form of Shell Scripts, i.e., our application on Raspberry device downloads a new shell script available and update the current state of the Rasperry OS. However sometimes something may go wrong, let's say our shell script fails, half way through its completion, for some reason, it would be nice to be able to revert this script somehow. The best solution would be to have some kind of a Restore Point like windows does, to just go back to it, if needed. Of course another obvious solution is asking users to remove an SD card and take an image every now and then and then rewrite that image to Raspberry when needed, but we won't to make our system fully automatic, without any user interaction.

Are there any automatic Restore Point alternatives for Raspberry Pi?

2

The linux way to use MS windows like restore points is to use LVM (logical volume manager) and to take snapshots. I use it for development but unfortunately it is not direct supported by Raspbian. The disk drivers for LVM are not compiled into the kernel. So you have to load them as modules at early boot from an init ramdisk. On a default Debian system this is no problem. Debian takes care on updates of modules that the init ramdisk also get updated. But Raspbian do not do it. So you have to make all of this by hand and if you fail an update your system does not boot anymore. I don't know if this is manageable for your purposes and if it's worth the effort. but you may have a look on it at Easy backups and snapshots of a running system with LVM and at Custom initramfs.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.