A method and apparatus are described for preboot execution bootloading. Under and embodiment of the invention, a method comprises requesting a memory address region and boot image data from a server; receiving the boot image data and a designated memory region from the server; and storing the boot image data at the designated memory region.

FIELD

An embodiment of the invention relates to computer execution in general, and more specifically to preboot execution bootloading.

BACKGROUND

In computer processing, the actual speed of operation for users is based on numerous factors. One factor that may be of concern is the boot up speed. Boot up performance is a benchmark that is often used to compare operational speed of computer systems.

While much of boot up performance is a function of how fast the processor of in a system performs operations, an additional variable is the choice of boot up media and the efficiency of the boot up process. A network is one of the media types that may be utilized in booting up operating systems. A typical network boot may rely on the use of PXE (preboot execution environment) processes to enable a preboot environment. This is done to provide a network interface for downloading the OS (operating system) boot image.

However, conventional methods of network booting of an operating system may be inefficient. A conventional process generally may include setting up a ramdisk, downloading a network bootstrap program (NBP) to the ramdisk from a server, and running network bootstrap program to load the operating system. Thus, conventional remote bootloading may require that certain time-consuming operations be completed before the operating system can be initialized.

DETAILED DESCRIPTION

A method and apparatus are described for preboot execution bootloading.

Before describing an exemplary environment in which various embodiments of the present invention may be implemented, certain terms that will be used in this application will be briefly defined:

As used herein, “boot” means to load software to start a computer. For example, because the operating system (OS) is used for running all other programs, the OS is loaded during the boot process.

As used herein, “ramdisk” or “RAM disk” means a virtual computer drive created by allocating or setting aside a portion of the random access memory (RAM) for use as if it were a hard drive or similar drive.

As used herein, “remote booting” or “network booting” describes a process of booting a computer via a network.

Under an embodiment of the invention, a computer is remotely booted up by using the preboot environment to load up the operating system. Under an embodiment of the invention, the PXE (preboot execution environment) is utilized to directly load network data into system memory. Under an embodiment of the invention, a PXE API (application programming interface) includes bootloading functionality.

PXE is a protocol established by Intel Corporation that enables computers to boot through a network. PXE processes may, for example, be stored in the ROM of network cards. When the computer boots up, the BIOS loads the PXE ROM in the memory and executes it. PXE processes are described in the Preboot Execution Environment Specification 2.1, Sep. 20, 1999, of Intel Corporation.

PXE allows a workstation to boot from a server on a network prior to booting the operating system on the local hard drive. PXE may be utilized to set up a common set of pre-boot protocol services within a client to ensure that network-based booting is accomplished through an industry standard protocol for communication with the server.

In a conventional system, a downloaded network bootstrap program (NBP) is required to be presented with a uniform and consistent pre-boot operating environment within the booting client. A conventional system may enable processes such as remote new system setup, remote emergency boot, and network boot processes. Such capabilities may use PXE to form a heterogeneous network, to acquire a network address from a DHCP (dynamic host configuration protocol) server, and to set up a ramdisk within system memory. The ramdisk may then be used to download the network bootstrap program. The network bootstrap program may download the operating system boot, which then may run the bootloading program to load the operating system.

Under an embodiment of the invention, bootloader functionality for a computer is incorporated into the computer's preboot environment, such as in PXE. Under an embodiment of the invention, PXE is used to load the operating system. The incorporation of such functionality into the environment may be utilized to increase the speed of network booting of an operating system.

Under an embodiment of the invention, a user may make use of the bootloader functionality of a preboot environment by providing a destination memory location where the network data may be copied. Under an embodiment of the invention, the PXE may be used to directly load network data into system memory through the use of the UNDI (universal network device interface) network interface.

Under an embodiment of the invention, a preboot environment is extended to include bootloading, which may allow for standardized implementation of network booting processes. In one embodiment, the PXE API (application programming interface) may be extended to include bootloading functionality. Under an embodiment of the invention, PXE bootloader functionality may allow for efficient remote booting by eliminating the need for a network bootstrapping program.

FIG. 1illustrates an embodiment of a software stack for a remote boot up. A conventional software stack105provides for PXE ROM runtime115. This is followed by the TFTP (trivial file transfer protocol), the UDP (user datagram protocol), and the pre-boot API120. The software stack105then includes the TFTP/MTFTP (multicast trivial file transfer protocol)125for PXE and the DHCP130(dynamic host configuration protocol) for IP address allocation. The stack then provides the UDP/IGMP (user datagram protocol/Internet group management protocol)135. The stack then includes the IP (Internet protocol) and ARP (address resolution protocol)140. This is followed by the base code145, the UNDI (universal network device interface)155, and the universal network driver165. Overlapping with the base code145, UNDI155, and network driver is the ISR (interrupt service routine) handler150.

An embodiment of a software stack110is modified to include a boot load API170. Under an embodiment of the invention, the inclusion of the boot load API enables the client to proceed with a network boot without requiring a network bootstrap program.

FIG. 2illustrates an embodiment of operations of a client and server in a remote boot up process. In this illustration, the operations of a PXE client205and a PXE server210under an embodiment of the invention are shown. In this embodiment, the process includes the PXE client sending a DHCP discovery packet with a PXE boot tag (a network protocol identifier)215to the PXE server. The PXE server then sends a DCHP offer packet220. After determining that the IP address is legitimate, the PXE client sends a DHCP request packet225to the PXE server. The PXE server returns a DCHP acknowledge packet230. The PXE client makes a request for a boot memory region235. The PXE server reads the boot file and fills memory to the end of the boot file240. The PXE server then responds with the boot load data and the memory region245. The PXE client than loads the boot load data to the end of the boot file250. The client machine thus receives the information and loads the boot image directly into the specified memory region in system memory. This process continues until the end of the boot file. Upon detecting the end of the boot file, the client jumps to the allocated OS memory region to run the operating system255.

FIG. 3contains flowcharts to illustrate an embodiment of a boot up process. In a conventional PXE remote boot up process, a PXE client uses the DHCP to discover a PXE client tag305. After obtaining an IP address, the PXE client then downloads the network bootstrap program310. After downloading, the client runs the network bootstrap program to create a ramdisk315. The ramdisk is used as the media to download the OS boot image320. The client then boots up the OS boot image325and starts the operating system330.

In comparison, under an embodiment of the invention, a client may use the DHCP to discover a PXE boot tag (network protocol identifier)335. In this embodiment, the client can then request the memory region address340and boot image data to place in the allocated memory region345. The client then can jump to the OS execution address350and proceed to start the operating system355. The operation thus may allow more efficient OS booting and system initialization without the use of a network bootstrap program.

FIG. 4illustrates an embodiment of an exemplary computer environment. Under an embodiment of the invention, a computer400comprises a bus405or other communication means for communicating information, and a processing means such as one or more physical processors410(shown as411through412) coupled with the first bus405for processing information. Each of the physical processors may include multiple logical processors, and the logical processors may operate in parallel in the execution of drivers. Each processor may include an execution unit and logic for the operation of certain functions.

The computer400further comprises a random access memory (RAM) or other dynamic storage device as a main memory415for storing information and instructions to be executed by the processors410. RAM memory may include dynamic random access memory (DRAM) and static dynamic random access memory (SRAM). Main memory415also may be used for storing temporary variables or other intermediate information during execution of instructions by the processors410. The computer400also may comprise a read only memory (ROM)420and/or other static storage device for storing static information and instructions for the processor410.

A data storage device425may also be coupled to the bus405of the computer400for storing information and instructions. The data storage device425may include a magnetic disk or optical disc and its corresponding drive, flash memory or other nonvolatile memory, or other memory device. Such elements may be combined together or may be separate components, and utilize parts of other elements of the computer400.

The computer400may also be coupled via the bus405to a display device430, such as a liquid crystal display (LCD) or other display technology, for displaying information to an end user. In some environments, the display device may be a touch-screen that is also utilized as at least a part of an input device. In some environments, display device430may be or may include an auditory device, such as a speaker to produce voice or other auditory information. An input device440may be coupled to the bus405for communicating information and/or command selections to the processor410. In various implementations, input device440may be a keyboard, a keypad, a touch-screen and stylus, a voice-activated system, or other input device, or combinations of such devices. Another type of user input device that may be included is a cursor control device445, such as a mouse, a trackball, or cursor direction keys for communicating direction information and command selections to processor410and for controlling cursor movement on display device430.

A communication device450may also be coupled to the bus405. Depending upon the particular implementation, the communication device450may include a transceiver, a wireless modem, a network interface card, or other interface device. The computer400may be linked to a network or to other devices using the communication device450, which may include links to the Internet, a local area network, or another environment. Under an embodiment of the invention, the computer400may be linked to a server, including a PXE server, via the communication device450.

FIG. 5illustrates an embodiment of a computer network environment500. According to one embodiment, a network505is present. The network505may include a physical network, a logical network, a wide area network (WAN), a local area network (LAN), the Internet, an intranet, or any other computer network or computer communication environment. A computer system or physical machine510(machine) may include a single machine, or multiple machines coupled with each other directly, or via a network or device, or via other physical and/or logical links. The machine510may include a PXE client.

According to one embodiment, the machine510may include a modem515, a network interface520, and any other type of connection that allows communication with the network505. A communication via the network505may include the use of any of wired or wireless carrier and protocols, including radio frequency (RF), satellite, microwave, Bluetooth, optical, infrared, cable, laser, or other process. The machine510may communicate with various remote machines via the network505. The remote machines are shown as, for example, remote machine1525and remote machine530. The possible remote machines may include a server535. The server535may include a PXE server. Under an embodiment of the invention, the machine510may boot an operating system remotely in conjunction with server535.

The present invention may include various processes. The processes of the present invention may be performed by hardware components or may be embodied in machine-executable instructions, which may be used to cause a general-purpose or special-purpose processor or logic circuits programmed with the instructions to perform the processes. Alternatively, the processes may be performed by a combination of hardware and software.

It should also be appreciated that reference throughout this specification to “one embodiment” or “an embodiment” means that a particular feature may be included in the practice of the invention. Similarly, it should be appreciated that in the foregoing description of exemplary embodiments of the invention, various features of the invention are sometimes grouped together in a single embodiment, figure, or description thereof for the purpose of streamlining the disclosure and aiding in the understanding of one or more of the various inventive aspects. This method of disclosure, however, is not to be interpreted as reflecting an intention that the claimed invention requires more features than are expressly recited in each claim. Rather, as the following claims reflect, inventive aspects lie in less than all features of a single foregoing disclosed embodiment. Thus, the claims are hereby expressly incorporated into this description, with each claim standing on its own as a separate embodiment of this invention.