Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
METHOD AND APPARATUS FOR USER CUSTOMIZABLE SOFTWARE DEPLOYMENT
Document Type and Number:
WIPO Patent Application WO/2009/109925
Kind Code:
A3
Abstract:
A system for user customizable software deployment for computing systems with storage devices. According to one embodiment of the invention, the user customizable software deployment system comprises an analysis and imaging apparatus, a user installation system, an application management agent, and a recovery component. The analysis and imaging apparatus is capable of determining the hardware configuration of the target computing system and imaging the storage device with a set of hardware-compatible operating systems, languages, device drivers, and software application packages. The imaged storage device is then operated upon by a user installation system providing an interface for user-directed selection and installation of compatible operating systems, languages onto the target partition. The application management agent provides for selection and installation of compatible software applications according to the hardware requirements, software requirements, and collected user preferences. According to an embodiment of the invention, a recovery component is capable of restoring the computing system to its factory state, while preserving user data and the choices of operating system and applications that the user made during installation.

Inventors:
RAJA RICO (DK)
Application Number:
PCT/IB2009/050876
Publication Date:
December 03, 2009
Filing Date:
March 04, 2009
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
RAJA RICO (DK)
International Classes:
G06F9/445; G06F11/14
Domestic Patent References:
WO2008019259A22008-02-14
Foreign References:
EP1227399A22002-07-31
EP0794484A21997-09-10
US7143067B12006-11-28
US6901493B12005-05-31
EP1582982A22005-10-05
Other References:
"Preinstalling Microsoft Windows XP by Using the OEM Preinstallation Kit, Part I", INTERNET CITATION, XP002301441, Retrieved from the Internet [retrieved on 20041019]
Download PDF:
Claims:

C L A I M S

What is claimed:

1. A user customizable software deployment system for preparing a programmable electronic device with a storage device, the system comprising: an analysis and imaging apparatus, configured to analyze the hardware configuration of said programmable electronic device and image the storage device; and a user installation system, operable to install at least one hardware customized operating system onto the storage device imaged by the analysis and imaging apparatus.

2. The user customizable software deployment system of Claim 1 wherein the analysis and imaging apparatus further comprises: a user interface, allowing the user to select the operating systems and languages to image the storage device with, a partitioner, for creating a target partition on the storage device and writing selected operating systems, selected languages, and hardware-compatible drivers to the storage device; and a hardware analyzer, operable for querying the hardware configuration of the programmable electronic device and storing the hardware configuration as a file onto the storage device.

3. The user customizable software deployment system of Claim 2 wherein the hardware analyzer has access to a machine-readable license database, a compatibility database, and a software library and the hardware analyzer is operable for determining software configurations that are compatible with the hardware configuration, licenses, and software choices.

4. The user customizable software deployment system of Claim 3 wherein the machine-readable license database stores metadata for each license about the license termination date.

5. The user customizable software deployment system of Claim 3 wherein the machine-readable license database stores metadata for each license about machine restrictions,

6. The user customizable software deployment system of Claim 3 wherein the machine-readable license database stores metadata for each license about whether the license is a trial license.

7. The user customizable software deployment system of Claim 3 wherein the software library is implemented as a file system stored on permanent media.

8. The user customizable software deployment system of Claim 3 wherein the software library is implemented as a remote network service.

9. A method for imaging a storage device of a programmable electronic device comprising: selecting one or more operating systems to image, specifying end-user parameters, creating a bootable target partition on the storage device, writing user installation system files to the bootable target partition of the storage device, such that the bootable target partition, when booted into by the programmable electronic device, loads a user installation system; and writing files of the selected operating systems to the storage device, wherein the user installation system provides a hardware-compatible and license- compatible list of operating systems and languages for the user to select and for the user to install.

10. The method of Claim 9 further comprising: writing hardware-compatible drivers and software application files to the storage device, writing application management agent files to the storage device; and writing configuration files to the storage device, said configuration files containing information representing the hardware configuration, user preferences, and license information.

11. The user customizable software deployment system of Claim 1 wherein the user installation system comprises: a user interface, for selecting the operating system and language from the available imaged operating system and language options on the storage device; and a partitioner, for creating a target partition and writing selected operating system and languages to the target partition.

12. The user customizable software deployment system of Claim 11 wherein the user installation system further comprises a hardware analyzer, operable for determining the hardware configuration of the programmable electronic device.

13. The user customizable software deployment system of Claim 11 wherein the user installation system further comprises an installation file cleaner, configured to remove files corresponding to software that was not chosen to be installed by the user.

14. A method for hardware-compatible user installation of an operating system on a programmable electronic device with a storage device comprising: determining the hardware configuration of the programmable electronic device, prompting the user to select an operating system to install, prompting the user to select a language to install, creating a target partition on the storage device; and installing the selected operating system and selected language to the target partition of the storage device.

15. A user customizable software deployment system for preparing a programmable electronic device with a storage device, the system comprising: an analysis and imaging apparatus, configured to analyze the hardware configuration of said programmable electronic device and image the storage device, a user installation system, operable to install a hardware customized operating system onto the storage device imaged by the analysis and imaging apparatus; and an application management agent, operable to install customized software applications on said storage device prepared by the user installation system.

16. A user customizable and hardware- aware application management agent for installing software applications onto a programmable electronic device with a storage device, management agent comprising: a user interface, for presenting software applications to install onto the storage device and querying user selections; and an application installer and configurer, for installing selected applications onto the storage device, whereby the software applications presented by the user interface of the user customizable and hardware- aware application management agent are derived from determining the compatibility of the hardware configuration and software configuration of the programmable electronic device

17. The user customizable software deployment system of Claim 16 wherein the application management agent further comprises: a user information acquirer, for querying personal information from the user; and a user profile database, for storing personal information acquired by the user information acquirer, whereby the personal information acquired is used by the user interface to filter and prioritize the presentation of software applications to install onto the storage device.

18. The user customizable software deployment system of Claim 17 wherein the user profile database is implemented as a remote network service.

19. The user customizable software deployment system of Claim 17 wherein the application management agent further comprises: a software library, containing software applications that can be installed onto the storage device; and an application updater, configured to install software applications contained in the software library on the storage device.

20. The user customizable software deployment system of Claim 19 wherein the software library is implemented as a remote network service.

21. A method for personalized hardware-compatible software application installation onto a programmable electronic device with a storage device comprising:

analyzing the hardware configuration of the programmable electronic device, obtaining user preferences from the user of the programmable electronic device, presenting software applications that meet hardware configuration and user preferences, and querying user selections of the software applications, installing and configuring software applications onto the storage device.

22. The method of Claim 21 further comprising applying updates to the selected software applications, whereby the updates are contained in the software library, after installing and configuring software applications on to the storage device.

23. The method of Claim 21 further comprising capturing a snapshot of the storage device.

24. A user customizable software deployment system for preparing a programmable electronic device with a storage device, the system comprising: an analysis and imaging apparatus, configured to analyze the hardware configuration of said programmable electronic device and image the storage device, a user installation system, operable to install a hardware customized operating system onto the storage device imaged by the analysis and imaging apparatus, an application management agent, operable to install customized software applications on said storage device prepared by the user installation system; and

a recovery component, configured to backup user files on said storage device and restore the state of the operating system and applications on said storage device to a post- user installation state.

25. A method for recovering a set of target files on a target partition of a storage device comprising: determining the size the set of target files and available space on the storage device, creating a temporary backup partition copying the set of target files on the target partition of the storage device to the temporary backup partition, restoring the original operating system, hardware- specific drivers and settings of the target partition, copying the set of target files from the temporary backup partition to the target partition of the storage device.

26. The method of Claim 25 further comprising removing the temporary backup partition.

27. The method of Claim 25 further comprising restoring the original software applications on the target partition to the target partition of the storage device.

28. A method for recovering a storage device comprising:

obtaining snapshot backup parameters specifying the schedule for backup, obtaining information on file state of latest snapshot from a versioned snapshot repository determining the files changed on the storage device since the latest snapshot, according to the obtained information on file state of the latest snapshot, storing the files changed on the storage device since the latest snapshot along with a timestamp as a snapshot on the versioned snapshot repository.

29. The method of Claim 28 wherein the backup parameters also specify whether to perform a full or partial backup and determining the files changed on the storage device since the latest snapshot is according to whether a full or partial backup is specified.

30. A method for restoring a target partition of a storage device using a versioned snapshot repository comprising: booting from a partition that is not the target partition of the storage device querying a versioned snapshot repository for available snapshot times that are stored in the versioned snapshot repository, prompting the user for the desired snapshot time to restore the storage device to; and restoring the data from the versioned snapshot repository to the target partition of the storage device.

Description:

METHOD AND APPARATUS FOR USER CUSTOMIZABLE SOFTWARE DEPLOYMENT

FIELD OF THE INVENTION

[0001] The present invention relates in general to tools and methods for installation and configuration of computer systems. In particular, the present invention relates to tools and methods for installation and configuration of operating systems and software applications for computer systems.

BACKGROUND OF THE INVENTION

[0002] Electronic devices that utilize software and storage means, such as computing systems, require installation of an operating system and software applications before the device is rendered fully operable. One domain in which the installation of operating systems and software applications occurs frequently is in the preparation of new computer systems. Often, the producer of the computing system, such the original equipment manufacturer (OEM), original design manufacturer (ODM), or systems integrator, will prepare the software that is preloaded onto a new computing system before it is first operated by the end user. This allows for the end user to purchase a computing system that is already operable with an operating system and software applications.

[0003] In order to ensure compatibility between the software and the computing system, producers typically need to select an appropriate operating system, device drivers, and software applications for the target computing system. This process becomes burdensome when producers must repeat this process with the multiple systems and hardware configurations that are offered, and select appropriate software for each one.

This effect is particularly compounded by the growth in combinations of hardware components in computer systems. Furthermore, there are often complex interdependencies between software components, such as device drivers, which complicate the process of creating a compatible software configuration. Therefore, much effort is required by the producer in determining the software selection for each of the hardware systems offered by the producer.

[0004] Among the space of possible software configurations, there may be many compatible configurations. Traditionally, the producer determines the single software configuration that is pre-loaded at production time. The producer chooses the software configuration that will appeal to the broadest segment of end users. However, this is undesirable since there are a countless diversity of end user needs, languages, and preferences for each user, which are unknowable to the producer.

[0005] Current techniques do not allow for any interaction between the end user and the producer at system configuration time in order to better determine end user need, creating a "one-shot" approach for the producer in packaging a configuration. Therefore, users are needlessly limited in their selection of pre-installed configurations offered by a producer, resulting in lower user satisfaction. Consequently, producers also miss on an opportunity to market software applications that may better fit certain users. Producers that attempt to offer more choices will incur the costs of supporting larger product lines, stocking inventory that goes unpurchased, and increasing the time from order to delivery. [0006] Almost inevitably, the producer will have chosen to install some software configuration that is suboptimal for the end user, prompting the user to spend effort in removing undesired software components after the fact and in purchasing separately and

installing separately the desired software components which were not included. The end user must undergo this effort both when setting up a new system as well as when reinstalling an existing system. Thus, much effort and time is wasted in installing and configuring software components that the end user ultimately does not want, both from the consumer and the producer side.

[0007] Many conventional techniques limit the degree of user customization possible deploying software for computing systems. U.S. Patent No. 2002/0049966 (the '966 patent) teaches a method of software deployment whereby a user may customize the language of the operating system to be installed onto the target computing system. In this method, a single operating system is pre-installed onto the computing system with a default language, typically English. During user setup of the computing system, the user is then given the option to install additional language packs for providing support for other languages in the operating system. While this method allows for the user a limited choice of customizing the language, it does not provide a means for the user to choose among several operating system selections. Also, this method limits the applicability of pre-installing software applications on the target computing system, since the producer has no knowledge of which language the software applications should be installed in, constraining the producer to either pre-installing software applications in the default language, which may not be the language of choice for the user, or providing no pre- installed software applications.

[0008] Another disadvantage of conventional techniques which rely on pre-installing a fixed set of software applications is that certain classes of software applications are not amenable to pre-installation. For example, certain classes of software applications can

only be installed once a user account on the operating system has been created. Software applications such as Virtual Private Network (VPN) clients may require the user profile information, such as name and security certification, found in a user account, to be present for installation. Other applications may require the existence of a user "home" folder for creating document folders to be present for installation. Additionally, with conventional techniques, there is no integrated solution offered to the end user for restoring the computer system back to the factory operating system and software application configuration, while preserving user documents.

[0009] Conventional methods for choice of operating system to install onto the target computing system are also limited in practice. European Patent No. 0794484 (the '484 patent) describes a system for offering the user choice of one or more operating systems by pre-installing the offered operating systems into separate "phantom partitions" on the storage device of the computing system. During user setup, the user is prompted for the operating system he or she wishes to install, the selected operating system is installed onto the data partition, and the non- selected phantom partitions are then removed. However, this method requires that an activated operating system be pre-installed on each of the phantom partitions imaged on the storage device. This often presents a problem in practice because operating system software licenses commonly specify that only one activated operating system is allowed. Having multiple activated operating systems on separate partitions may require acquiring multiple licenses, thereby prohibitively increasing the cost of offering such a system. Additionally, since the method of the '484 patent requires that the unselected operating system partitions be deleted, recovery to the original factory state becomes more difficult.

[00010] Thus, what is needed, and is not believed to be found in the prior art, is an apparatus and method for user customizable software deployment that is aware of the hardware and software dependencies, that allows for the end user choice of software configuration, while enabling unified setup by producers and interaction between end users and producers.

OBJECT OF THE INVENTION

[00011] It is an object of the invention to image a storage device of a programmable electronic device with a hardware-compatible and license-compatible operating system and language version selected by the user of the programmable electronic device. [00012] It is a further object of the invention to install a hardware-compatible and software-compatible set of software applications selected by the user onto a storage device

[00013] It is a further object of the invention to present the user with a set of hardware- compatible, and software-compatible software application and service choices to install onto a storage device, with the choices filtered according to user-supplied preferences. [00014] It is a further object of the invention to recover the operating system, installed software applications, and applications settings stored on a storage device to the factory configuration, while preserving the user documents on the storage device. [00015] It is a further object of the invention to acquire periodic snapshots of the storage device captured at a predetermined schedule with a predetermined criterion for backup and restore the storage device to a user-selected snapshot.

SUMMARY OF THE INVENTION

[00016] The growing number and variety of hardware configurations for computing systems as well as the increased demand for customization have increased the complexity and costs of current solutions for software deployment by producers. A system for user customizable software deployment for computing systems with storage devices is disclosed. According to one embodiment of the invention, the user customizable software deployment system comprises an analysis and imaging apparatus, a user installation system, an application management agent, and a recovery component. The analysis and imaging apparatus is capable of determining the hardware configuration of the target computing system and imaging the storage device with a set of hardware- compatible operating systems, languages, device drivers, and software application packages. Thus, the process of imaging computing systems at scale, even with differing hardware configurations, is unified by the utilization of an analysis and imaging apparatus, since difference in hardware configuration are capable of being automatically detected by the analysis and imaging apparatus, the appropriate operating system and drivers identified and imaged onto the storage devices. Additionally, the process of imaging is further simplified by utilizing an analysis and imaging apparatus since it enables the imaging of a plurality of operating systems and a plurality of languages onto the storage device, by complying with the limitations of the operating system license agreements. Therefore, the system allows for producers to provide customers with a larger range of choices, while simultaneously reducing production processes. [00017] The user installation system then provides an interface for user-directed selection and installation of compatible operating systems, languages, which have been

pre-imaged onto the storage device. According to an embodiment of the invention, the user installation system may also analyze the hardware configuration of the computing system, or alternatively read it from a previously generated configuration file. [00018] Additionally, the application management agent provides for selection and installation of compatible software applications according to the hardware requirements, software dependencies, and preferences acquired from the user. Thus, the user is able to choose software applications from a prequalified list that have value to the user instead of relying on the producer's selections. The user profile can also be used by the application management agent to selectively recommend and filter software application choices based on user preferences. The application management agent allows for bundling of software applications with the computing system that were not possible to be bundled using conventional methods. Because certain classes of software applications are dependent upon a user account on the operating system, those classes of software applications are not amenable to pre-installation, since typically no user account has yet been created. The application management agent allows for a delayed installation of software applications until after the operating system has been fully configured and the user account created. In addition to providing user choice, the application management agent also provides an interaction between the user and producer, by providing the producer a mechanism for receiving information on the user's profile, preferences, and selections. The application management also allows a mechanism for software updates, so that the user may receive to install the latest version of the software application. Therefore, the producer is able to provide a higher level of flexibility without increasing the complexity of production and the interaction with the end user offers a new

opportunity to influence sales.

[00019] According to an embodiment of the invention, a recovery component is capable of restoring the computing system to its factory state, while preserving user data and the choices of operating system and applications that the user made during installation. The recovery component may be operated in several modes, according to various embodiments of the invention. Recovery may be invoked from the running computing system in a single-session operation. Alternatively, in situations where the target partition has become unbootable, recovery may be invoked in an off-line manner and restoration can occur from a separate backup partition, containing the backup files as well as the saved configuration of the system. In another embodiment of the invention, snapshots of the storage device are periodically captured to a versioned snapshot repository. This allows for automatic backup of the storage device and allows a choice of snapshots at various instances in time to restore the state of the storage device to. When recovery occurs, the recovery component allows for the storage device to be restored to a factory state, with the originally selected operating system and application settings, while dynamically adjusting installed components to reflect any changes in the hardware configuration.

BRIEF DESCRIPTION OF THE DRAWINGS

[00020] The present invention may be further understood from the following description in conjunction with the appended drawings. In the drawings: [00021] FIG. 1 is a simplified block diagram depicting an apparatus for user customizable software deployment system,

[00022] FIG. 2 is a simplified schematic diagram depicting an analysis and imaging apparatus, operable for preparing a storage device with a hardware-compatible selection of software and a user installation system,

[00023] FIG. 3 is a flowchart illustrating a method for preparing a storage device with a hardware-compatible selection of software and a user installation system,

[00024] FIG. 4 is a simplified schematic diagram depicting a user installation system, operable for preparing a storage device with a bootable user- selected operating system target partition,

[00025] FIG. 5 is a flowchart illustrating a method for preparing a storage device with a bootable user-selected operating system target partition,

[00026] FIG. 6 is a simplified schematic diagram depicting an application management agent,

[00027] FIG. 7 is a flowchart illustrating a method for customizing, installing, and configuring software applications with user parameters using an application management agent such as that of FIG. 6,

[00028] FIG. 8 is a schematic diagram depicting a recovery component, operable for performing a backup and restoration of operating system and application software and files from a storage device,

[00029] FIG. 9 is a flowchart illustrating a method for performing backup of user files and restoration of the original operating system, application software, and files,

[00030] FIG. 10 is a schematic diagram depicting an alternative embodiment of the invention, whereby a recovery component is operable to create versioned snapshots and a user installation system is operable to restore the storage device using said versioned

snapshots,

[00031] FIG. 1 IA is a flowchart illustrating a method of performing incremental snapshot creation and storing said snapshot into a versioned snapshot repository; and [00032] FIG. 1 IB is a flowchart illustrating a method of restoring a user specified snapshot onto a storage device.

DETAILED DESCRIPTION

[00033] FIG. 1 shows a simplified block diagram of an apparatus for user customizable software deployment 100 comprising an analysis and imaging apparatus 102, a user installation system 104, an application management agent 106 (AMA), and a recovery component 108. The analysis and imaging apparatus 102 is provided a programmable electronic device, such as a computing system, said programmable electronic device containing a storage device. This storage device may be a magnetic hard disk, network share, flash card, or other type of rewritable medium for data storage. In a preferred embodiment of the invention, the storage device that is prepared is a single hard disk, though it is understood by those of ordinary skill in the art that other types of data storage or multiple drives (e.g., secondary hard disks, or redundant disk arrays) may also be used.

[00034] The analysis and imaging apparatus 102 analyses the hardware capabilities of the given computing system and images the storage device of the computing system with a selection of operating systems, software drivers and software applications that are both compatible with the hardware and selected according to the user. Additionally, the analysis and imaging apparatus 102 writes files for a user installation system to the

storage device. The user of the analysis and imaging apparatus may be an original equipment manufacturer (OEM), systems integrator, or other producer. The analysis and imaging apparatus 102 will be described in further detail subsequently in this disclosure. [00035] After the analysis and imaging apparatus 102 has transformed the storage device of the computing system, the computing system is booted into the user installation system 104. The user installation system 104 presents an interface that allows the user to choose the target operating system, version, and language to install. For example, this may be Windows Vista English language edition, or Small Business Server Japanese language edition, both operating system versions produced by Microsoft Corporation of Redmond, WA, U.S.A. For any given hardware architecture, many operating systems are typically capable of being installed. The user installation system 104 then creates at least one bootable partition with the desired operating system installed, pre-loaded with the hardware-compatible drivers. The user installation system 104 will be described in further detail subsequently in this disclosure.

[00036] After the user selected operating system has been installed onto the storage device prepared by the user installation system 104, the computing system is then capable of being boot into the selected operating system, which automatically invokes the application management agent 106. The application management agent 106 presents an interface to the user showing software packages that are compatible with the current hardware and software configuration. The interface allows the user to interactively select software applications to install based upon the user' s needs and preferences as well as allowing the specification of required software applications in a corporate environment. The application management agent 106 installs and configures the user's software

application selections and required selections onto the storage device, placing the computing system in an operable state. The application management agent 106 will be described in further detail subsequently in this disclosure.

[00037] During operation of the computing system, if the installed software or operating system ever becomes inoperable or corrupted, the user customizable software deployment system 100 provides a mechanism for recovery via the recovery component 108. The recovery component 108 operates on the storage device of the computing system by restoring the user operating system and applications back to its initial condition, while simultaneously preserving documents and files that the user has since created since the initial operating system installation. After recovery by the recovery component 108 and installation of the original OS by the user installation system 104, the user may then re-apply the application management agent 106. The recovery component 108 will be described in further detail subsequently in this disclosure. [00038] FIG. 2 illustrates in further detail a simplified schematic diagram of an analysis and imaging apparatus 200, such as the one described previously in FIG. 1, and a storage device 220. The analysis and imaging apparatus 200 comprises a user interface 202, a partitioner 204, and a hardware analyzer 206. Additionally, the analysis and imaging apparatus 200 has access to a license database 208, a compatibility database 210, and a software library 212. The storage device 220 contains an occupied region 222 and a free region 224, which is shown as continuous in FIG. 2 and subsequent figures for the purposes of illustration.

[00039] The analysis and imaging apparatus 200 may be a separate machine from the target computing device to be imaged, or it may be the same machine as the target

computing device to be imaged. In a preferred embodiment of the invention, the analysis and imaging apparatus 200 is implemented by loading a software operating environment onto the target computing device from an external media, separate from the target storage device 220. When the target computing device is started, the analysis and imaging apparatus software operating environment can be loaded into main memory. Alternatively, the environment may be booted into from a secondary storage device, such as a hard disk or USB flash disk.

[00040] The license database 208, compatibility database 210 and software library 212 may be implemented as data stored on local media, such as a DVD or storage device, or via the network, in which case the data will be transferred on demand to the analysis and imaging apparatus 200, typically over TCP/IP.

[00041] The analysis and imaging apparatus 200 operates by initiating a hardware analyzer 206. The hardware analyzer 206 queries the hardware devices available to the computing system and enumerates the specifications of the hardware devices. The hardware settings may include information such as the processor architecture, amount of main memory, capacity of disk storage, presence of modem and networking, presence of wireless networking, presence of webcam, graphics chipset, trackpad, display resolution, etc. The hardware analyzer 206 then polls the license database 208 to obtain a set of machine-readable licenses for the candidate operating systems, and polls the software library 212 to obtain a set of candidate software applications and device drivers. The hardware analyzer 206 then matches these candidates along with the hardware configuration against a compatibility database 210, in order to obtain a filtered list of only the candidate licenses, software applications, and drivers that are compatible with

the current hardware configuration. For example, a license for a server-class operating system may specify that the operating system is only allowed to be installed on a machine with less than a certain number of CPUs. Licenses may also restrict the number of operating systems that may be concurrently installed at a given time. The license database may encoder metadata on each license, such as license term, whether the license is a trial license, transferability, among other attributes.

[00042] Subsequently, a user interface 202 is presented to the user. The user interface 202 may prompt the user for information regarding how the storage device should be configured, which may include such information as, but not limited to, the partition layout of the disk, the set of operating systems choices to include in the user installation system phase, the set of versions and language choices to include in the user installation system phase, the set of software application choices to include in the application management agent phase, and other end-user parameters, such as country, age group, software genre preferences, etc. The choices presented are fed from the hardware analyzer and are thereby compatible with the current hardware configuration. [00043] In an alternative embodiment of the invention, the user interface 202 is optional when the equivalent user inputs are described in a script or a configuration file. Once the selections of the set of operating systems, versions, languages, software applications and drivers have been made, obtained either by the user interface 202 or a configuration file, the partitioner 204 then partitions the storage device 220 with the desired layout. The partitioner 204 then writes onto the storage device 220 a set of data regions 228-242. These data regions comprise user installation system files 228, a plurality of operating systems 230-234, hardware-compatible drivers 236, hardware-

compatible software application files 238, the application management agent files 240, and the configuration file 242. In FIG. 2, three operating systems 230-234 have been shown as imaged, although in practice any number of imaged operating systems is possible. The locations of the data regions 230-242 may also vary and reside on various partitions, while the user installation system files 228 must reside on a bootable partition. [00044] FIG. 3 illustrates a flowchart 300 depicting a method for imaging a storage device with customizable and hardware-compatible software selections. In the first step 302, the target computing device of desired hardware-compatibility is booted. Next, the hardware settings of the target computing device are queried 304. The set of candidate selections that are available, based on the availability of licenses and installers, is then filtered according to hardware-compatibility 306, resulting in a set, of the same size or smaller, of hardware-compatible selections. The user then selects a set of hardware- compatible operating systems 308 to make available to the user. After that step, the user optionally configures any user parameters or application management agent parameters 310. According to the hardware-compatible selections made by the user, the storage device is partitioned 312, and the user installation system files 314 are then written to the storage device. The boot flag is then set 316 on the partition containing the user installation system files. Next, the operating system files 318, the drivers and software application files 320, and the application management agent and configuration files 322 are written to the storage device.

[00045] After the storage device 220 has been imaged, it capable of being boot into the user installation system. In one usage of the invention, a producer performs the imaging step at the manufacturing or distribution center. Once the computing system is in

possession of the end user, the end user may perform the remainder of the steps. By providing the end user with a system that has multiple operating system choices and multiple language choices in a single image, the range of systems that is offered by the producer can be greatly reduced as well as the complexity of production decreased. [00046] FIG. 4 shows a simplified schematic diagram of a user installation system 400 and an imaged storage device 420, prepared such as storage device 220 of FIG. 2. A user installation system 400 comprises a user interface 402, a configuration validator 404, a partitioner 406, and a installation file cleaner 408. The storage device 420 comprises an occupied region 422 and a free region 424, and as prepared by the analysis and imaging component 102, the occupied region 422 comprises user installation files 428 in the boot partition as well as a plurality of operating systems 430-434, hardware-compatible device drivers 436, hardware-compatible software application files 438, application manager agent files 440, and configuration files 442.

[00047] When the end-user first boots his newly imaged computing system, the user installation system 400 is loaded into memory from the user installation system region 428 of the boot partition of the storage device 420. After the user installation system 400 has determined the disk layout, the configuration validator 404 reads the configuration file 442 from the storage device 420, containing information such as, but not limited to, the hardware configuration of the current machine, user parameters, listings of available operating systems and software applications, and the location of other data blocks. The configuration validator 404 validates the configuration file 442 to ensure that it is well formed and specifies compatible choices. If no configuration file is available, or the configuration file is invalid, the user installation system 400 may also perform hardware

analysis at this time in order to determine hardware configuration of the current machine in a manner similar to the hardware analyzer 206 of FIG. 2. This may be advantageous in situations where the current machine is different from the machine that the analysis was original conducted on by the analysis and imaging apparatus or in situations where the current machine has undergone hardware changes since the original analysis has been performed.

[00048] The choices are then presented to the end user via the user interface 402. The user interface 402 prompts the user for configuration information, which may include the desired disk layout, selection of the target operating system or operating systems to install, the choice of language, etc. Once the information has been obtained, the partitioner 406 partitions the storage device 420 according to the desired disk layout, for example, creating a bootable target partition 444 on the storage device 420 for the target operating system. The selected operating systems are then installed onto the target partition 444. The installation of the selected operating systems may also prompt the end user for information, such as the product serial or registration key, machine name, networking settings, locality and time zone, and information necessary for user account creation, among others. Alternatively, unattended operating system installation may also be performed using a script or operating system installation configuration file. After the operating system has been installed on to the target partition 444, optionally the installation file cleaner 408 can remove unused data regions and partitions from the storage device 420.

[00049] FIG. 5 is a simplified flowchart outlining a method for installing an operating system using a user installation system. First, the computing system with a pre-imaged

storage device is booted 502, loading the user installation system into memory. Then, the layout of the storage device is determined 504. If the layout of the storage device is invalid, then the terminal error state 510 is reached. Otherwise, the system proceeds to read the configuration file 506, stored on the storage device. If the configuration file is not found or not able to be read, then the terminal error state 510 is reached. Otherwise, the system validates the configuration file. If the contents of the configuration file are invalid, then the terminal error state 510 is reached. If the terminal error state 510 is reached, problems with the disk and configuration file must first be corrected, or the system re-deployed.

[00050] If the disk layout was successfully determined 504, the configuration file was read 506, and the configuration file was validated 508, the end user is then presented with an interface for prompting the end user to select a choice of target operating system and language 512 and then makes his or her selections. The end user may also select a desired disk layout 514. In the next step, a bootable target partition is then written 516, according to the user's desired disk layout given in the previous step 514. After the bootable target partition has been created, the target OS is then installed 518 onto the target partition. Finally, the machine is rebooted 520.

[00051] FIG. 6 shows a simplified schematic diagram of an application management agent 600, a storage device 620, and a recovery component 614. The application management agent 600 comprises a user interface 602, a user information acquirer 604, an application installer and configurer 606, and an application updater 608. The application management agent 600 has access to a user profile database 610 and a software library 612. The user profile information of the user profile database 610 may

be stored and managed in a variety of ways. The user profile information may be stored locally on the storage device 620, or alternatively, on a secure remote server, communicating to the application management agent 600 via the Internet through TCP/IP. In a similar manner, the software library 612 might also be stored through local media or on CD or DVD, or stored remotely on a local area network file share or via the Internet. The storage device 620 comprises an occupied region 622, containing a target partition 630 prepared in accordance with the user installation system 400 of FIG. 4, and a free region 624. The target partition 630 contains the target operating system files 632 that were installed by the user installation system 400, device drivers 634 specific to the hardware configuration and operating system, and a selection of software applications 636 that are compatible with the hardware configuration. Additionally, the target partition contains the files for loading the application management agent 638. [00052] On the first boot of the computing system after the user installation system 400 has completed the operating system install, the computing system will boot in to the target partition 630, loading the target operating system files 632. On this first boot of the target operating system, the application management agent 600 will automatically be launched. The application management agent 600 could be implemented as a daemon or service process or run as a regular application that is trigged by the "startup folder" or startup script. On the first run of the application management agent 600, a user interface 602 is presented to the user, which is responsible for guiding the user through the application selection, installation, and configuration procedures. Before application selection, optionally, a user information acquirer 604 prompts the user to provide user- specific profile information, which is then stored into a user profile database 610.

Examples of user-specific profile information may include, but are not limited to, the user's name, age, sex, language, physical address, occupation, company, industry, and interests (e.g., is the user interested in gaming, education, media), online accounts such as e-mail, instant messenger, social networks, etc. The user profile database may also store the set of software application installed and configured on the current machine. [00053] The user interface 602, then prompts the user to select the software packages the user wishes to install. The user profile information can be used to customize and recommend the application software selections that are presented to the user via the user interface 602. The user interface 602 may present the software applications in various ways. For example, it may present the set of software applications as a simple list. It may also present the set of software applications as a hierarchical menu with accompanying descriptions and media, such as images or video. The order and priority in which software application selections are presented to the user may also depend on various criteria, such as hardware optimality (e.g., a graphics-intensive video game may prefer a system with a dedicated graphics chipset and fast CPU), user relevance (based on interests specified in the user profile information), and paid placement (software publisher companies may want to pay to have their applications showcased with greater priority), among other criteria.

[00054] The application management agent may also present offers for other services besides the installation of applications as well as for hardware, based on the software and hardware configuration stored in the user information profile. For example, the software management agent might recommend the purchase of a joystick for a game that is currently installed, or might present offers for data recovery services for someone that has

a failed external hard drive.

[00055] Once the user has selected the set of software applications the user wishes to install, the application installer and configurer 606 then installs and configures the selected applications. The application installer and configurer 606 may install and configure the selected software applications in a pre-specified order based on application- specific dependencies. For example, a browser plug-in may require that the browser is first installed, or some software application may require certain runtimes to be first installed.

[00056] Once the selected software applications have been installed and configured, optionally, if Internet access is available to the current machine, the application updater 608 will update any selected software to its most current version, by applying updates found at an online software library 612. These may include the latest security patches or upgrades that may have been released at a time after the machine was originally imaged. [00057] After all of the software selections have been installed, configured, and optionally updated, the software management agent 600 will then optionally invoke the recovery component 614 to capture a backup snapshot of the current software configuration, to be used for a future recovery. The user may also initiate a recovery action via the application management agent, in order to invoke the recovery component 614. The recovery component 614 will be described in further detail in a following section.

[00058] FIG. 7 depicts a flowchart 700 outlining the process performed by the application management agent 600. In the first step 702, the target computing system is booted into the target operating system. After the operating system has loaded, the

application management agent is then loaded and launched 704. At decision node 706, a decision is made whether additional user parameters will be acquired. If additional user parameters are desired then, the user information acquirer collects user information 708, by presenting a survey and recording the user's responses the user profile information database. If additional user parameters are not collected, then default user parameters are used. Next, the application management system presents a user interface for selecting software applications the user wishes to install 710. As previously described, various techniques and methods may be used for presenting the software selections. After the user has made the software application selections, the selected applications are then installed and configured onto the storage device 712. Optionally, software application updates to the selected applications are applied 714. Finally, a snapshot of the current software configuration is optionally captured by the recovery component 716. [00059] On subsequent boots of the computing device, the application management agent 600 will not automatically present a user interface for installing software packages. Instead, the user may choose to launch the application management agent 600 directly, if the user wishes to install additional software applications. On that occurrence, the application management agent will check compatibility between software installation candidates and currently installed applications. The application management agent 600 may also run on subsequent boots as a service or daemon process that services to check for updates to currently installed applications.

[00060] If at a future time, the computing system becomes unusable or the software application files become corrupted, or for any other reason, the user may wish to restore the machine to its initial post-installation state. The recovery component, which is

responsible for restoring the storage device back to its post-installation state, will now be described in further detail. FIG. 8 shows a simplified schematic block diagram of a recovery component 800 and a storage device 820. The recovery component 800 comprises a recovery controller 802, a disk usage scanner 804, a partitioner 806, and a file restorer 808. The storage device 820 initially comprises a target partition 830, similar to the storage device 620 of FIG. 6. The target partition 830 is the partition of the storage device 820 that contains the target operating system. The storage device 820 may also further comprise a temporary backup partition

[00061] First, the recover controller 802 receives a request to initiate recovery. This may be triggered, for example, by a user action in the user interface 602 of the application management agent 600, as shown in FIG. 6. The recover controller 802 then invokes the disk usage scanner 804, to determine the current layout of the storage device 820. In particular, the disk usage scanner 804 determines the amount of free space that is available on the storage device 820 as well as the amount of space that is required to backup user files. The determination of the amount of space that is required to backup user files may depend on the whether all of the files should be backed up (a full backup), or some subset of the total files should be backed up (partial backup). For example, it is possible that only files contained within the user's home folder are required to be backed up.

[00062] If the amount of free space that is available on the storage partition 820 is large enough to backup the required files, then the partitioner 806 non-destructively creates a temporary backup partition 832 on the storage device 820 or activates an existing temporary backup partition 832. The partitioner 806 may create the temporary

backup partition 832 by resizing existing partitions, such as the target partition 830, and moving partitions in order to create a continuous, free partition that is large enough to accommodate the backup of the required files. After the temporary backup partition 832 has been created or activated, the file restorer 808 copies the files to be backed up from the original location to the temporary backup partition 832.

[00063] The partitioner 806 then formats the target partition 830, and the original operating system and software applications can be reinstalled onto this target partition 830. This can be implemented by a user installation system such as that shown in FIG. 4, or by other means. After the target operating system and applications have been reinstalled onto the target partition 830, the file restorer 808 then copies the backup files that were previously written onto the temporary backup partition 832 back into the appropriate locations on the target partition 830. The partitioner 806, then removes or inactivates the temporary backup partition 832, non-destructively resizing any neighboring partitions to reclaim the unused sectors where needed. [00064] FIG. 9 describes in further detail the recovery process 900. First, the recovery component is initialized by the user 902. At decision node 904, it is determine whether a backup of user files is desired, or if the user wishes to restore the computing device back to a post-install state with no recovery of user files. If no backup of user files is desired, then the process proceeds to node 918, the formatting of the target partition. [00065] However, if a backup of the user files is desired, then the space requirement of the files to be backed up is then computed and the availability of free space on the storage device is determined 906. If there is not sufficient state available as determined at decision node 908, then a terminal abort state 910 is reached. Before a recovery is re-

attempted, the user may wish to free up more space on the storage device 820 or reduce the size of the files to be backed up, or choose not to back up any files via the recovery component 800. If there is sufficient space available as determined at node 908, then the partitioner will then shrink neighboring partitions 912, and create a temporary backup partition 914. If an existing temporary backup partition exists, then instead of creating a temporary backup partition, the existing temporary backup partition is activated. [00066] The files that are desired to be backed up are then copied to the temporary backup partition 916. After the backup files have been copied, the target partition is then formatted 918, and the target partition is restored back to the factory state 920. In other words, the original operating system that the user had selected is restored along with the appropriate hardware-compatible drivers, languages, and configurations, etc. If backup is not desired 922, the process proceeds to the step of rebooting the system 928. Otherwise, if backup is desired 922, then the backup files are copied from the temporary backup partition to the target partition 924, the temporary backup partition is removed and surrounding partitions non-destructively resized 926 or the temporary backup partition is inactivated. Then, the system is reboot 928, which start the system into the target partition and launch the newly re-installed operating system for the first time. Finally, application management agent will automatically launch, read the user profile in the configuration, and restore the software applications 930 that were previously selected. [00067] In an alternative embodiment of the invention, instead of backup occurring solely when recovery is requested, backup occurs at periodic intervals. The application management agent daemon can periodically back up data from the target partition to a backup partition or external or network storage systems. The data that is backed up at

each point in time is referred to as a snapshot. In the case where backup is to an external device, recovery can happen even if the original storage device or computing system becomes defective, by recovering to a new machine, thus preserving important user data, operating system, and applications.

[00068] FIG. 10 illustrates a recovery component 1000 and a user installation system 1040 in accordance with this embodiment of the invention, as well as the storage device 1020 containing a target partition 1022 to be backed up. The recovery component 1000 comprises a recovery controller 1002 and a snapshot acquirer 1004. The user installation system 1040 comprises a user interface 1042, a file restorer 1044, and a partitioner 1046. The recovery component 1000 has access to a versioned snapshot repository 1030 and the user installation system 1040 has access to both the versioned snapshot repository 1030 and a software library 1032.

[00069] In this embodiment of the invention, the user has pre-specified a schedule outlining when periodic snapshot backups should occur. For example, the schedule may specify that periodic snapshots occur weekly, every day at midnight, on weekends, or any other recurrence pattern. The schedule preference may be obtained from the user when application management agent is run for the first time. During this time a full snapshot of the operating system, drivers, and software applications may also be performed. [00070] Whether the time for performing a snapshot backup has arrived according to the schedule or if invoked on-demand by the user, the recovery controller 1002 triggers the snapshot acquirer 1004 to begin acquiring the snapshot. The snapshot acquirer 1004 reads the schedule and determines the files on the target partition 1020 that have changed since the last snapshot stored in the versioned snapshot repository 1030. The snapshot

acquirer 1004 then copies the changed files into a snapshot on the versioned snapshot repository 1030 with a timestamp. The snapshots may also include information such as changes in the hardware configuration or changes in the user profile information and preferences. The versioned snapshot repository 1030 may be implemented in various ways. It could be implemented as a file structure on the hidden backup partition, as a remote network file server, or as a relational database among other ways. Snapshot backups will occur periodically according to the user-specified schedule. [00071] If the user wishes to invoke a recovery, the recovery controller 1002 can trigger the machine to be boot into the user installation system 1040. In the case that the operating system on the target partition 1022 is no longer functional (that is, the operating system is corrupted so that it cannot be boot into), recovery from snapshots may also be invoked from booting into the user installation system 1040 from a different media, such as a secondary storage device, USB drive, optical drive, etc.

[00072] When the user installation system 1040 is invoked in this recovery mode, it performs an additional step of obtaining the parameters of recovery. As before, the user installation system 1040 creates the target partition 1022 on the storage device 1020 according to the configuration. However, now the user installation system 1040 additionally reads the versioned snapshot repository 1030, to determine the available recovery times and types of data that are stored in the versioned snapshot repository (e.g., applications, drivers, user data). The user interface 1040 then prompts the user to select from the available recovery times as well as prompts the user for the type of recovery from the options that are available. For example, the user may wish to restore from a specific time, restore from the latest time, restore specific files, restore specific

applications, or restore specific user profiles, etc. In an alternative embodiment of the invention, the machine hardware configuration may also be analyzed or the configuration file validated, since changes to the hardware configuration may have occurred during the time between backup and restoration. For example, the cause that prompted the recovery may have been a failure of a system peripheral, thus causing a change in hardware configuration. In another embodiment of the invention, the application management agent can launch in a "recovery mode", read and reapply the previously stored user profile information, and thus allow the user to avoid re-entering the information that he or she had previously provided the user information acquirer, such as that as shown in application management agent 600 of FIG. 6.

[00073] Using the recovery parameters obtained from the user interface 1042, the file restorer 1044 reads the snapshots obtained from the versioned snapshot repository 1030, in conjunction with application data from the software library 1032 to restore the desired data onto the target partition 1022 of the storage device 1020. Thus, the data on the recovered storage device 1020 reflects previously stored user preferences and application choices as well as dynamically adapting to changes in the hardware configuration. [00074] FIG. 1 IA further details a method of performing snapshot backups. First the computing system is boot into the target partition 1102. Next, a pre-specified schedule configuration is read 1104, which determines when snapshots should occur and what types of data to backup. Next, the target partition is scanned for changes that have occurred since the last snapshot according to the files of interest specified in the schedule configuration 1106. The files that have been determined to have changed (referred to as a changeset) are then inserted into the versioned snapshot repository 1108, including

metadata such as the time of the snapshot.

[00075] FIG. 1 IB further details a method of restoring a system using a versioned snapshot repository. First, the computing system is boot from an alternative source to the target partition, such as a secondary storage device, USB drive, optical drive, etc 1152. Then, the versioned snapshot repository is queried for the restore times and types of data that are available in the versioned snapshot repository 1154. Next, the user is prompted for the restore time that he or she wishes to restore the system to, and the types of data that he or she wishes to store from the available options 1156, as determined in the previous step. Finally, recovery is performed from the data of the versioned snapshot repository 1158, from the restore time and type specified by the user, to the target partition. The system can now boot into the restored state.

[00076] While the above is a complete description of the preferred embodiments of the invention sufficiently detailed to enable those skilled in the art to build and implement the system, it should be understood that various changes, substitutions, and alterations may be made without departing from the spirit and scope of the invention as defined by the appended claims.