A setup program is typically used to install an operating system on a computing device. During a typical installation of an operating system, some setup programs attempt to detect all of the hardware devices connected to the computing device, which can be internal or external to the computing device. Such setup programs then install drivers (e.g. a control program that enables a computer to work with a particular hardware device) needed for these hardware devices.
This summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detail Description Section. This summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used as an aid in determining the scope of the claimed subject matter.
According to aspects of various described embodiments, a system for installing a programming module (e.g. a driver) in a computing device is provided. In one aspect, a host operating system (e.g., WinPE®) detects hardware devices connected to a computing device and stores identifiers (if any) of detected hardware devices in a datastore (e.g., the WinPE® registry). Without performing a detection process, a setup program accesses the datastore to obtain identifiers of hardware devices attached to the computing device. The setup program uses a mapping file (which maps hardware devices to drivers of a set of driver files) to determine which programming module of the set of programming modules are usable by the detected hardware devices. The setup file then installs the “selected” programming module into the computing device.
Embodiments may be implemented as a computer process, a computer system (including mobile handheld computing devices) or as an article of manufacture such as a computer program product. The computer program product may be a computer storage medium readable by a computer system and encoding a computer program of instructions for executing a computer process. The computer program product may also be a propagated signal on a carrier readable by a computing system and encoding a computer program of instructions for executing a computer process.
Non-limiting and non-exhaustive embodiments are described with reference to the following figures, wherein like reference numerals refer to like parts throughout the various views unless otherwise specified.
Various embodiments are described more fully below with reference to the accompanying drawings, which form a part hereof, and which show specific exemplary embodiments for practicing various embodiments. However, other embodiments may be implemented in many different forms and should not be construed as limited to the embodiments set forth herein; rather, these embodiments are provided so that this disclosure will be thorough and complete. Embodiments may be practiced as methods, systems or devices. Accordingly, embodiments may take the form of a hardware implementation, an entirely software implementation or an implementation combining software and hardware aspects. The following detailed description is, therefore, not to be taken in a limiting sense.
The logical operations of the various embodiments are implemented (1) as a sequence of computer implemented steps running on a computing system and/or (2) as interconnected machine modules within the computing system. The implementation is a matter of choice dependent on the performance requirements of the computing system implementing the embodiment. Accordingly, the logical operations making up the embodiments described herein are referred to alternatively as operations, steps or modules.
Exemplary Operating System/Driver Installation System
In addition, system 100 includes a boot device 116 (e.g., a compact disk drive) that can be internal or external to computing device 102, and additional hardware devices 118-1 through 118-N that are external to computing device 102. In some scenarios, system 100 may have no such internal and/or external hardware devices (i.e., system 100 may have any number of such hardware devices ranging from zero to M+N). In this embodiment, hardware devices 106-1 through 106-M and 118-1 through 118-N are plug and play (PnP) devices according to specifications developed by Microsoft Corporation, Redmond, Wash. in association with processor and other hardware device manufacturers.
In accordance with one embodiment, storage device 120 has stored therein: (a) a host operating system (e.g., Windows® Pre-installation Environment (WinPE®) available from Microsoft Corporation); (b) a mapping file 124 (that stores data that associates hardware devices to the drivers needed by the hardware devices; (c) driver files 126 (typically the drivers listed in mapping file 124); (d) and an operating system setup program 128 (that performs the operating system and driver installation).
In operation during an operating system installation scenario, computing device 102 boots from boot device 116 by loading host operating system 122 from storage 120 into main memory of processor 104. The loaded host operating system is shown in
In this embodiment, runs, one of the tasks host operating system 122A performs is detecting all of the hardware devices connected to computing device 102. In this example embodiment, host operating system 122A operates to detect PnP devices 106-1 through 106-M and PnP devices 118-1 through 118-N. Host operating system 122A stores identifiers for the detected devices in a data structure. In this embodiment, the identifiers are locally stored in a registry 134 created by host operating system 122A in memory 105. In one embodiment, registry 134 is temporary, lasting only for as long as host operating system 122A is running.
Further, in some embodiments, identifiers for the bus are also included in registry 134. For example, the detected hardware devices may be organized hierarchically by the buses to which the hardware devices are connected. These buses include the buses typically supported by computing devices, such as, for example, the Peripheral Component Interface (PCI) bus, Universal Serial Bus (USB), IEEE 1394 bus, Industry Standard Architecture (ISA) bus, etc.
After host operating system 122A is loaded and the detection process is completed (i.e., registry 134 is created and populated with identifiers of the detected hardware devices), host operating system 122A causes operating system setup program 128 to be loaded into memory 105 of computing device 102, which is shown as operating system setup program 128A in
Operating system setup program 128A then searches mapping file 124 (which may be loaded into memory 105 in some embodiments) for identifiers of the drivers needed for each of the detected hardware devices. An example excerpt of mapping file 124 is illustrated in
Returning to
Exemplary Remote Operating System/Driver Installation System
In operation during a remote operating system installation scenario, computing device 102 boots from remote host 302 via network 306. For example, in computing device 102, the boot device can be set to the “network card” that supports communication over network 306. Computing device 102 may also include a “stub” (code that allows computing device to communicate with remote host 302 via network 306). During this boot process, computing device 102 loads host operating system 322 (i.e., WinPE®) from storage 304 into a main memory of processor 104. The loaded host operating system is shown in
In this embodiment, runs, one of the tasks host operating system 322A performs is detecting all of the hardware devices connected to computing device 102. In this example embodiment, host operating system 322A operates to detect PnP devices 106-1 through 106-M and PnP devices 118-1 through 118-N. Host operating system 322A stores identifiers for the detected devices in a data structure. In this embodiment, the identifiers are locally stored in a WinPE® registry 334 created by host operating system 322A in main memory. In one embodiment, WinPE® registry 334 is temporary, lasting only for as long as WinPE® is running on computing device 102.
After host operating system 322A is loaded and the detection process is completed (i.e., WinPE® registry 334 is created and populated with identifiers of the detected hardware devices), host operating system 322A causes operating system setup program 128 to be loaded into memory 105 of computing device 102, which is shown as operating system setup program 128A in
Operating system setup program 128 then searches mapping file 124 for identifiers of the drivers needed for each of the detected hardware devices. Using the driver file identifiers (for the detected hardware devices) obtained from mapping file 124, operating system setup program 128 then installs the appropriate drivers (selected from driver files 126) into computing device 102. The installed drivers are illustrated in
Exemplary Source Operational Flow for Operating System/Driver Installation
At a block 402, a host operating system is executed on a computing device. In one embodiment, a host operating system such as WinPE® is loaded into the computing device during the boot process and then executed. In one embodiment, the host operating system is loaded from a boot device such as boot device 116 (
At a block 404, the host operating system detects hardware devices (such as hardware devices 106-1 through 106-M and 118-1 through 118-N shown in
At a block 406, a datastore is populated with the identifiers obtained at block 404. In one embodiment, the host operating system creates a registry and adds the hardware identifiers to the registry. In one embodiment, the host operating system also includes information related to the bus used by the hardware device (e.g., PCI bus, USB, etc.) to communicate with the computing device.
At a block 408, the datastore is accessed to obtain the identifiers stored therein at block 406. In one embodiment, an operating system setup program running on the computing device accesses the datastore. For example, in one implementation the host operating system may load the operating system setup program (e.g., operating system setup program 128 shown in
At block 410, drivers (if any) needed for the hardware devices are determined. In one embodiment, the operating system setup file searches or looks up a mapping file such as mapping file 124 (
At a block 412, the drivers obtained at block 410 are then installed in the computing device. In one embodiment, the operating system setup program installs the “selected” drivers (i.e., the drivers identified at block 410) in the computing device.
At a block 414, the rest of the operating system is installed in the computing device. In various embodiments, the operating system setup program installs the rest of the operating system in any suitable conventional manner.
Although operational flow 400 is illustrated and described sequentially in a particular order, in other embodiments, the operations described in the blocks may be performed in different orders, multiple times, and/or in parallel. Further, in some embodiments, one or more operations described in the blocks may be separated into another block, omitted or combined.
Reference has been made throughout this specification to “one embodiment,” “an embodiment,” or “an example embodiment” meaning that a particular described feature, structure, or characteristic is included in at least one embodiment. Thus, usage of such phrases may refer to more than just one embodiment. Furthermore, the described features, structures, or characteristics may be combined in any suitable manner in one or more embodiments.
One skilled in the relevant art may recognize, however, that embodiments may be practiced without one or more of the specific details, or with other methods, resources, materials, etc. In other instances, well known structures, resources, or operations have not been shown or described in detail merely to avoid obscuring aspects of the embodiments.
While example embodiments and applications have been illustrated and described, it is to be understood that the invention is not limited to the precise configuration and resources described above. Various modifications, changes, and variations apparent to those skilled in the art may be made in the arrangement, operation, and details of the methods and systems disclosed herein without departing from the scope of the claimed invention.