Improved approaches to update computer program code residing within a
computing device are disclosed. By maintaining a former version of the
computer program code, the computing device remains operable even if the
update to the computer program code fails. Hence, the invention permits
reliable updates to computer program code, which is particularly useful
for firmware (e.g., boot-up code) of computing devices. For control and
security, each version of computer program code can include
authentication information. Before the computer program code is used, the
computer program code can be required to be authenticated using the
authentication information.