It has been pointed out that the process is very system dependent. However, there are some generic steps that will be followed by most systems updating an OS or the firmware.
- Some communication channel must exist with a trusted outside entity.
- The existing OS or firmware is already stored somewhere, e.g. on disk or in Flash Storage.
- An update command comes from the outside entity, along with the new data (e.g. a new version of the firmware).
- The data is validated for authenticity and integrity (is it really from home, and was it damaged en-route).
- The new data is stored in an alternate location on the disk or in the flash.
- A pointer in some non-volatile place is changed so that the system will use the OS or firmware from the new location.
- The system resets itself.
- When the system boots, it sees the pointer pointing to the new version and uses that.