A method for receiving, storing, and applying an update
package to modify an original image stored within non-volatile
flash memory devices. More specifically, the present design provides a download agent responsible for communicating with a
server to transfer and store the update
package; and an update agent responsible for verifying, decompressing and decoding the update
package. The present design separates non-essential
operating system (OS) components and applications from the core OS, stores non-essential OS components, applications, and download agent as a
single image in a read-only
file system. This image may be updated by applying an update package created by running a binary differencing engine on two pre-built
file system images representing the current and new file systems to modify the stored image. Additionally, the present design applies an update package to the core OS, which includes the update agent.