This invention relates to the field of computer systems. More particularly, a system and methods are provided for delivering operating system device drivers with a computing device.
A new computer system or platform is traditionally loaded with a new or up-to-date operating system configured to use all components of the system. In particular, the operating system is configured with device drivers for driving devices (e.g., network interface circuits, input/output devices) installed in the platform.
In those situations in which a platform is not sold or delivered with drivers for all devices, the owner or operator of the platform generally must install additional drivers. For example, if a driver or a newer driver becomes available after the platform is delivered, the owner may need to download or install the driver from diskette, across a network, etc.
As a result, it is difficult to execute an old operating system on a new computer platform, because the operating system will generally not be configured with drivers for controlling all components of the new platform. There is no readily available method or scheme for automatically updating an old operating system with functionality (e.g., drivers) needed for a new computer platform, particularly where the functionality was not available when the operating system was originally released.
In addition, when a computing platform executes a single operating system to manage all applications running on the platform, the operating system generally is unable to efficiently utilize all components of the platform. Utilization of a platform's capacity may be increased by using virtualization to simultaneously execute multiple operating systems or multiple instances of an operating system.
The problem described above regarding the lack of up-to-date drivers for an operating system may be exaggerated on a computing platform that executes multiple operating systems, especially when an operator or user is encouraged to execute an old (or relatively old) operating system in such a virtualized environment.SUMMARY
A method and apparatus are provided for delivering a device driver to an operating system without user intervention. One or more operating systems (e.g., different operating system programs, different versions of one operating system) execute on a computer platform. During booting of an operating system a device is identified for which a driver is needed. The driver may not currently be available because the device may be newer than the operating system, a driver may not have been available when the operating system was released or installed, a newer driver may be required to replace an older driver, etc.
The driver is requested from a service processor of the platform, which includes memory or storage for storing multiple device drivers (or multiple versions of one driver, for the same or different operating systems). The driver is retrieved from the service processor's storage and delivered to the operating system.
In an embodiment in which the computer platform runs multiple operating systems or operating system versions (e.g., in virtual environments), the platform may include a hypervisor for managing the operating systems' access to physical devices of the platform (e.g., by mapping virtual addresses to physical addresses).
The service processor may be an enhanced version of a traditional service processor, and may thus be configured to monitor components of the platform (e.g., power supply, fan).DESCRIPTION OF THE FIGURES
The following description is presented to enable any person skilled in the art to make and use the invention, and is provided in the context of particular applications of the invention and their requirements. Various modifications to the disclosed embodiments will be readily apparent to those skilled in the art and the general principles defined herein may be applied to other embodiments and applications without departing from the scope of the present invention. Thus, the present invention is not intended to be limited to the embodiments shown, but is to be accorded the widest scope consistent with the principles and features disclosed herein.
In one embodiment of the invention, a method and apparatus are provided for delivering a device driver, with a computer system, for driving operation of one or more components of the system. The device driver may be designed to drive a communication device (e.g., network interface card), an input/output device (e.g., a disk drive, a graphics card), etc.
In this embodiment, the computer system includes a service processor, which may be separate from a primary processor or CPU. The service processor includes storage, such as a flash ROM or PROM, in which the device driver is stored. Drivers for all devices that are installed and/or that could be installed in the system may be stored in the service processor storage.
When the computer system is booted and the components and devices of the system are identified, if the operating system does not have available a driver (or the latest driver) for a device, that driver is retrieved from the service processor storage. The system may reboot during or after installation of the driver.
As one skilled in the art will appreciate, this scheme prevents a user from having to manually install a device driver (e.g., from CD-ROM). Thus, an old or older operating system can be used with a new or newer computer system that contains devices or components for which the operating system was not configured. Drivers for those devices will be automatically retrieved from the service processor when needed.
The virtual computing environments may be enabled or managed by a program such as VMware by VMware, Inc., Solaris with LDom (Logical Domain) extensions, the Xen virtual machine monitor, etc. Although only two virtual computers 104A, 104B are depicted in
Each virtual computer's operating system provides services to its user applications, such as file access, communications, etc. Because multiple virtual computers may be operating simultaneously, their operating systems manage virtual memory that has been assigned to the virtual computer.
Platform 100 may include hypervisor 110 for managing the virtual computers' access to physical devices of the platform. Thus, hypervisor 110, or a similar module, manages the virtual computers' access to devices such as network interface devices, input/output devices, and so on, which are part of (or coupled to) platform 100 but are not depicted in
Because the virtual computers' operating systems are separated from some or all platform hardware devices (e.g., by the hypervisor or a similar entity), the same operating systems may be easily installed and executed on a new platform, even if the operating system is relatively old. A new or updated hypervisor may be provided with the new platform to continue mapping the operating systems to new or updated functionality of the platform.
Platform 100 also includes service processor 112, which comprises storage 114. Storage 114 may include RAM, ROM, flash memory and/or other types of solid-state memory. In the illustrated embodiment of the invention, storage 114 is internal to service processor 112. In other embodiments of the invention, other memory or storage accessible to the service processor and virtual computers may be used to store device drivers, including non-solid-state memory.
In addition to other functions described herein, service processor 112 is configured to monitor various components or appliances of platform 100 for error conditions. For example, the service processor may monitor a power supply, a fan, a temperature sensor, etc.
In an embodiment of the invention, platform 100 is sold, shipped or delivered with one or more device drivers loaded in storage 114 of service processor 112. For example, the device drivers may include drivers for all devices or components sold or shipped with platform 100, and/or drivers for other devices that may be installed in the platform. In particular, storage 114 may include drivers that are newer than one or more operating systems that are or may be installed on the platform. Multiple versions of a particular driver may be stored, for different models of a device, different operating systems, etc.
Storage 114 may be significantly larger than a traditional service processor's memory. For example, a traditional service processor storage size may be on the order of 32 MB, while storage 114 is large enough to accommodate the extra operating system drivers. Storage 114 may incorporate flash memory, Programmable Read-Only Memory (PROM), other solid-state memory or even magnetic/optical storage components such as a disk drive, CD-ROM, and so on.
In operation 202, an operating system begins booting in its virtual environment. The boot process may be a traditional boot process, in which case the process is controlled by boot firmware that, among other tasks, identifies devices available to the operating system (e.g., network interface cards, disk drives, input devices, output devices).
In operation 204, the devices are identified to the operating system. For example, the boot firmware or other source may assemble or retrieve a list of installed devices and provide the list to the operating system.
In operation 206, the operating system determines whether it needs a device driver. Illustratively, a device identified to the operating system may not be recognized by the operating system, in which case it needs a driver in order to access or manipulate the device. Or, the operating system may determine that it needs a newer or updated driver for a device. If a driver is needed, the illustrated method continues with operation 208; otherwise, the method advances to operation 212.
In operation 208, the operating system requests the device driver. The request may be directed to the hypervisor, which may relay the request to the service processor, or the request may be issued directly to the service processor. Illustratively, the driver request identifies the operating system and the device for which a driver is needed. The service processor uses the provided information to retrieve a suitable driver from storage.
In operation 210, a driver for the specified device is delivered to the operating system. In the illustrated method, the driver is loaded in a manner similar to drivers already available to the operating system, and the method returns to operation 206 to determine whether any other drivers are needed. In another implementation, after receiving the driver the operating system may initiate a re-boot to start the boot process, during which the driver is loaded. In yet another implementation, the operating system may load the driver and the illustrated method may proceed directly from operation 210 to operation 212.
Illustratively, if no suitable driver is available, the operating system is notified and may prompt a user or operator of the platform to manually install a driver for the device using a conventional mechanism offered by the operating system.
In operation 212, the operating system already possesses all drivers it needs, and so the boot process continues normally.
In the embodiment of the invention depicted in
In yet another alternative embodiment of the invention, a computer platform may be dedicated to execution of a single operating system, but may still benefit from a method of delivering device drivers described above.
The program environment in which a present embodiment of the invention is executed illustratively incorporates a general-purpose computer or a special purpose device such as a hand-held computer. Details of such devices (e.g., processor, memory, data storage, display) may be omitted for the sake of clarity.
It should also be understood that the techniques of the present invention may be implemented using a variety of technologies. For example, the methods described herein may be implemented in software executing on a computer system, or implemented in hardware utilizing either a combination of microprocessors or other specially designed application specific integrated circuits, programmable logic devices, or various combinations thereof. In particular, the methods described herein may be implemented by a series of computer-executable instructions residing on a suitable computer-readable medium. Suitable computer-readable media may include volatile (e.g., RAM) and/or non-volatile (e.g., ROM, disk) memory, carrier waves and transmission media (e.g., copper wire, coaxial cable, fiber optic media). Exemplary carrier waves may take the form of electrical, electromagnetic or optical signals conveying digital data streams along a local network, a publicly accessible network such as the Internet or some other communication link.
The foregoing embodiments of the invention have been presented for purposes of illustration and description only. They are not intended to be exhaustive or to limit the invention to the forms disclosed. Accordingly, the scope of the invention is defined by the appended claims, not the preceding disclosure.