COMPUTING DEVICE AND METHOD FOR WIRELESS REMOTE BOOT IN A NETWORKED ENVIRONMENT
In some embodiments, a secure authenticated remote boot of computing device over a wireless network is performed in a pre-boot execution environment (PXE) using active management technology (AMT) for remote discovery. In these embodiments, a management engine (ME) may maintain full control of a wireless interface and a wireless connection as booting begins. The ME may relinquish control of the wireless interface after a PXE timeout, in response to a shutdown command, or once the device has booted. The ME controls the use of an operating system received from a remote location.
Some embodiments pertain to wireless devices. Some embodiments pertain to remote boots of computing devices.
BACKGROUNDAn operating system may use a variety of sources to boot up in various environments. Networked systems allow a computing device to receive start up information from a network server. A Basic Input/Output System (BIOS) defines a firmware interface which is the first code run by a computing device when powered on. The BIOS loads the operating system, identifies, tests and initializes system devices. The BIOS prepares the computing device to operate in a known state so that software may be loaded, executed and given control of the device.
The state of a computing device is defined by a system image and is used by the BIOS. A computer system boots up by executing BIOS instructions that cause an operating system loader program to be loaded from a disk drive into system memory. The BIOS may then cause the computer system to execute the loader program that, in turn, causes the computer system to load portions of the operating system into the system memory. Subsequently, the operating system may execute one or more program(s) to initialize and start execution of the operating system.
Many computing devices are wireless devices that include a wireless adapter card for communicating within a wireless network. Wireless adapter cards may not have sufficient memory storage to store operating code and driver codes used to support wireless networked functionality. Thus what is needed are computing devices and methods that provide for wireless remote boot in a networked environment.
The following description and the drawings sufficiently illustrate specific embodiments to enable those skilled in the art to practice them. Other embodiments may incorporate structural, logical, electrical, process, and other changes. Examples merely typify possible variations. Individual components and functions are optional unless explicitly required, and the sequence of operations may vary. Portions and features of some embodiments may be included in, or substituted for, those of other embodiments. Embodiments set forth in the claims encompass all available equivalents of those claims.
The following details some embodiments of a method and apparatus for a wireless remote boot, such as an Operating System (OS) streaming method, in a networked environment having access to a wireless network. In example embodiments, the method and apparatus utilize existing software and firmware instructions (e.g., code), as well as apparatus to retrieve information that may be used to enable networked boot up from a wireless network for a remote computing device. Such techniques may be implemented without additional memory to the wireless cards that implement the wireless connectivity for the computing device, such as wireless-fidelity (Wi-Fi) cards. Existing wireless cards may not have sufficient memory to store operating instructions (e.g., code) and driver codes to support wireless networked functionality.
Some embodiments leverage the central management functions of a central server to provide resources that allow wireless boot up of the computing device. By leveraging wireless network support built into a networked system, it is possible to allow a remote boot up from a wireless server without rebuilding the BIOS and other information used at boot up.
In some embodiments, a secure authenticated remote boot of computing device over a wireless network is performed in a pre-boot execution environment (PXE) using active management technology (AMT) for remote discovery. In these embodiments, a management engine (ME) may maintain full control of a wireless interface and a wireless connection as booting begins. The ME may relinquish control of the wireless interface after a PXE timeout, in response to a shutdown command, or once the device has booted. The ME controls the use of an operating system received from a remote location. These embodiments are described in more detail below. In some embodiments, a host embedded controller interface (HECI) application programming interface (API) is used to communicate with the ME for communicating over the wireless connection, the HECI API to serve as a proxy for the wireless interface when managed by the ME. In some embodiments, a universal network driver interface (UNDI) is used as a host embedded controller interface (HECI) wrapper, the PXE to use the UNDI to communicate with the ME for communicating network traffic over the wireless connection. In some embodiments, the computing device is a wireless communication device configured to communicate in accordance with an IEEE 802.11 standard. In some embodiments, the computing device is a wireless communication device configured to communicate in accordance with an IEEE 802.16 standard. In some embodiments, the computing device is a wireless communication device configured to communicate in accordance with a 3GPP standard for long-term evolution (LTE).
Furthermore, the AMT may remotely heal computing assets so as to provide a proactive alert notification of a system problem, even in situations where the computer system 300 is powered off. The AMT provides Out-Of-Band (OOB) access to remotely diagnose, control, and repair the computer system 300 after software, OS, or hardware failures. The AMT infrastructure may support the creation of setup and configuration interfaces for management applications, as well as network, security, and storage administration.
The hardware architecture of computer system 300 may be resident in firmware, and may include a processing unit, such a processing unit 302, a graphics and memory controller hub 308, an I/O controller hub 314 and a Local Area Network (LAN) controller 324. The processing unit 302 includes software agents 304 and code for an OS 306. The graphics and memory controller hub 308 includes a micro-controller 310, which stores and controls Management Engine (ME) 311 including firmware to implement various services on behalf of management applications. The computer system 300 further includes a FLASH memory 312, which stores the system BIOS for computer system 300. The system BIOS includes machine-readable code used by the ME, and a third-party data store (3PDS) that enables applications to store information as needed in non-volatile memory.
The I/O controller hub 314 includes filters 316, sensors 318 and Medium Access Control (MAC) layer controller 320, which are used to interface with I/O ports and control communications with the computer system 300. A LAN controller 324 is communicatively coupled to the I/O controller hub 314, and includes OOB unit 326 and wired network interface 328. Network interface 328 may be an Ethernet interface although this is not a requirement. A WLAN controller 325 is communicatively coupled to the I/O controller hub 314, and includes OOB unit 330 and wireless network interface 332. The computer system 300 includes multiple Double Data Rate (DDR) memory units, such as DDR2 322, to transfer data on rising and falling edges of a clock signal. Each DDR2 322 is communicatively coupled to the graphics and memory controller hub 308.
The AMT functionality further enables management applications to access client computers in a variety of states by accessing the radio in a wireless Network Interface Card (NIC). The NIC allows the computer system 300 to access a wireless network, such as wireless network 122 (
A specified amount of main memory 460 may be dedicated to execute ME code and store ME run-time data, such as in a manner similar to a Unified Memory Architecture (UMA), which allows a graphics processing unit to share a memory system, or other computer memory architecture enabling shared memory. In some embodiments, the ME 311 stores ME code in a compressed form in FLASH memory 312, and therefore may be accessed without accessing a hard drive (not shown). In such embodiments, the computer system 300 prevents access of the ME memory range by the processing unit 302 (
The ME 311 can access its dedicated memory space even when the computer system 300 is in a powered down state. The graphics and memory controller hub 308 (
As illustrated, ME 311 may also include various firmware and/or software for performing AMT applications 402, administration (ADMIN) services 404, core services 406, management services 408, and network services 410. ME 311 may also include management engine hardware abstraction layer 412 and threadX kernel 414.
The ME 311 may employ an external memory, such a memory storage device or system having a UMA type memory architecture. The external UMA memory 523 includes a main memory dedicated to execute ME code for ME 311 and to store ME run-time data for ME 311. The use of the external UMA memory 523 may be similar to UMA memories employed in graphics applications. In some examples, the external UMA memory 523 may include or be located adjacent to a graphics UMA memory space. In this way, the external UMA memory 523 may include an ME memory space and a graphics memory space. From the perspective of the host OS 500, the graphics memory space may appear slightly larger than the ME memory space.
The host OS 500 may include AMT firmware defined by an AMT server application 502, an AMT client application 504, and a routing application 506. A protocol engine 508 controls communications and AMT processing, while a TCP/IP unit 510 controls Transmission Control Protocol (TCP) and Internet Protocol (IP) handling of communications. TCP operates at a high level and provides ordered delivery of data packets and information from source to destination. IP is used to package datagrams or packets from source to destination for communication in a packet-switched network. The suite of protocols for Internet use is referred to as TCP/IP. The protocol engine 508 may be designed to handle multiple protocols, such as Simple Object Access Protocol (SOAP), HyperText Transfer Protocol (HTTP) and Transparent LAN service (TLS). The SOAP protocol is a specification for exchanging structured information to implement web services. SOAP may rely on application layer protocols for process-to-process communications, such as Remote Procedure Call (RPC) or HTTP, for message negotiation and transmission. TLS is a service linking networks, such as remote Ethernet networks. TLS allows the connected networks to be viewed as one contiguous network from the user perspective.
Additionally, the host OS 500 includes a host HECI driver 514 as well as a LAN driver 512 and LAN hardware 516. The host HECI driver 514 provides an interface for the HECI interface or HECI bus that allows the host OS 500 to communicate directly with the ME 311. The bi-directional, variable data rate bus enables communication of system management information and events. The bus may be implemented with four wires, a request and grant pair along with a serial transmit and receive data pair. The LAN driver 512 and LAN hardware 516 provide an interface for the host OS 500 and the ME 311.
The host OS 500 further communicates with the network server 530 via a connection between LAN hardware 516 and LAN hardware 438. The network server 530 also includes an AMT server application 432, a protocol engine 434, and a LAN driver 436. The protocol engines 520 and 434 are similar to the protocol engine 508, and may provide complementary functions.
Message flow between a first client pair may continue without regard to the message flow between a separate client pair. Messages may be of various lengths, and may be subject to the limitations of the user's receive buffer (rather than limitations of the HECI drivers). The HECI drivers 514 and 522 may comprise software or firmware drivers, which break messages into packets to support lengthy messages. Flow control is communicated by HECI bus messages, and the HECI driver may wait to transmit a message until an associated client has a receive buffer ready to accept the data.
A FLASH memory, such as FLASH memory 312 (
The network interface in one example is an HECI API. The HECI API provides a software interface that is used to communicate to MCH 706 including an ME 708 so as to access AMT capabilities. Communication between the local host operating system (OS) and the ME 708 is accomplished by means of a HECI driver. The HECI function operates bi-directionally, as either the host OS or AMT firmware can initiate transactions.
The computing device 701 operationally may boot up from the central server 720 or a wireless network. The ME 708 implements AMT functionality for the computing device.
According to an example embodiment, when an option is set to enable PXE and the wireless interface is set by the remote IT console to enable AMT, the ME 708 continues to have full control of the WLAN interface and connection even when the computing device 701 starts booting. The ME 708 may relinquish control of the WLAN interface after a PXE timeout or on receipt of HECI commands to de-initialize or shut down. The commands may be received from BIOS 710 or PXE OPROM 702. The BIOS 710 or PXE OPROM 702 may directly use the network interface 705, such as a HECI API, to communicate with the ME 708 to send and receive the network traffic over the WLAN (not shown in
In an example embodiment, the network interface is consistent with the HECI protocol, having commands given in Table I in accordance with some example embodiments. The HECI protocol includes call made to the ME to initiate AMT actions.
From the null state 904 on an uplink event for the central server on a networked connection, considered an uplink event, the computing device transitions to the active state 910. An uplink event, for example, may be the detection of a connection to a network, such as an Ethernet network. In this way, when the computing device initially connects to the network, a connection is detected as an uplink event. Further while in the null state 904, on an uplink event for the wireless network, the computing device transitions to the passive state 902. The uplink event may be when the computing device detects the wireless network, or when the wireless capability of the computing device is turned on. Other uplink events may be implemented according to the computing environment and system configurations.
From the active state 910, on a link down event, the computing device transitions back to the null state 904. Further, when authentication to the central server fails, such as when the central server implements an AMT mechanism and transitions to the passive state 902, the computing device may also transition back to the null state 904.
From the passive state 902, on a link down event the computing device transitions to the null state 904. When the computing device fails to authenticate on the wireless network host, the computing device then transitions to the active state 910.
Returning to decision point 1004, when a network connection is not available, the computing device receives an uplink event to the wireless network, which is referred to as a host server. At decision point 1008, when the computing device authenticates on the wireless network, an uplink event is processed 1006 and the computing device enters a passive mode 1010 in which the device will boot from the wireless network. The computing device receives 1012 system image information from the wireless network, and uses this information to boot 1014 the computing device. If the computing device fails to authenticate at decision point 1008, the computing device remains in the null mode 1003.
Both embodiments involve the ME 708 (
In an example embodiment, the PXE information stored in the computing device, such as PXE OPROM 702 and 802 is used to support AMT and remote connections to the wireless network. In one example, API activities are performed to configure PXE support with AMT implementing a wireless network. In one example, the computing device issues a call to Set8021XPXEEnable_WLAN. The PXE timeout period is set to a default value of 120 seconds. The API sets the PXE_WLAN_Config_flag in the AMT firmware. The computing device then issues a call to Get8021XPXEEnable_WLAN The host booting procedures transitions according to and may be implemented using the following code:
Then on an uplink/downlink event:
PXE boot completes on detection of any of the PXE features of Table III, i.e., HECI trigger, 802.1x/EAP packets, or PXE timeout. In response the computing device sets PXE_boot_complete flag in the AMT firmware.
In some embodiments, a machine-readable medium is comprised of instructions, which when implemented by one or more machines, cause the one or more machines to receive a registration request from a service provider, store a set of information for the service provider in a memory storage unit, and transmit an indication of the service provider to at least one service consumer in the wireless communication network.
Unless specifically stated otherwise, terms such as “processing,” “computing,” “calculating,” “determining,” “displaying,” or the like, may refer to an action and/or process of one or more processing or computer systems or similar devices that may manipulate and transform data represented as physical (e.g., electronic) quantities within a processing system's registers and memory into other data similarly represented as physical quantities within the processing system's registers or memories, or other such information storage, transmission or display devices. Furthermore, as used herein, a computing device includes one or more processing elements coupled with computer-readable memory that may be volatile or non-volatile memory or a combination thereof.
Embodiments may be implemented in one or a combination of hardware, firmware, and software. Embodiments may also be implemented as instructions stored on a machine-readable medium, which may be read and executed by at least one processor to perform the operations described herein. A machine-readable medium may include any mechanism for storing or transmitting information in a form readable by a machine (e.g., a computer). A machine-readable medium may include, but is not limited to, FLASH memory, optical disks, Compact Disks-Read Only Memory (CD-ROM), Digital Versatile/Video Disks (DVD), Read Only Memory (ROM), Random Access Memory (RAM), Erasable Programmable Read-Only Memory (EPROM), Electrically Erasable Programmable Read-Only Memory (EEPROM), magnetic or optical cards, propagation media or other type of machine-readable media suitable for storing electronic instructions. For example, embodiments may be downloaded as a computer program, which may be transferred from a remote computer (e.g., a server) to a requesting computer (e.g., a client) by way of data signals embodied in a carrier wave or other propagation medium via a communication link (e.g., a modem or network connection).
It should be appreciated that reference throughout this specification to “one embodiment” or “an embodiment” means that a particular feature, structure or characteristic described in connection with the embodiment is included in at least one embodiment. Therefore, it should be appreciated that two or more references to “an embodiment” or “one embodiment” or “an alternative embodiment” in various portions of this specification are not necessarily all referring to the same embodiment. Furthermore, the particular features, structures or characteristics may be combined as suitable in one or more embodiments.
Similarly, it should be appreciated that in the foregoing description of embodiments, various features are sometimes grouped together in a single embodiment, figure, or description thereof for the purpose of streamlining the disclosure, in order to aid 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 subject matter 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 following the detailed description are hereby expressly incorporated into this detailed description, with each claim standing on its own as a separate embodiment of this invention.
Having disclosed embodiments and the best mode, modifications and variations may be made to the disclosed embodiments while remaining within the scope of the embodiments as defined by the following claims.
The Abstract is provided to comply with 37 C.F.R. Section 1.72(b) requiring an abstract that will allow the reader to ascertain the nature and gist of the technical disclosure. It is submitted with the understanding that it will not be used to limit or interpret the scope or meaning of the claims. The following claims are hereby incorporated into the detailed description, with each claim standing on its own as a separate embodiment.
Claims
1. A method for operating a computing device, the method comprising:
- detecting a wireless network for connection;
- initiating a communicative connection between the computing device and the wireless network;
- authenticating the computing device on the wireless network;
- receiving code to run on the computing device from the wireless network; and
- loading an operating system on the computing device using the code.
2. The method of claim 1, wherein receiving the code further comprises receiving a first system image from the wireless network.
3. The method of claim 2, further comprising:
- identifying computing device components;
- testing the computing device components; and
- initializing the computing device components.
4. The method of claim 1, wherein initiating the communicative connection between the computing device and the wireless network is performed in response to receiving an uplink event from the wireless network.
5. The method of claim 4, further comprising:
- detecting a failure of the communicative connection between the computing device and the wireless network;
- detecting a network connection to a server;
- receiving a uplink event for the server; and
- receiving a second system image from the server.
6. The method of claim 1, further comprising booting the operating system on the computing device using a first system image.
7. The method of claim 1, wherein the code includes a Basic Input/Output System (BIOS) set of instructions and data.
8. The method of claim 1, wherein the computing device is a wireless communication device includes a network interface controller.
9. An apparatus, comprising:
- a memory storage device to store a set of computer-readable instructions to load an operating system on the apparatus;
- a communication module to receive data packet communications including the set of computer-readable instructions from a wireless communication network; and
- a pre-boot execution unit including information for storing information used to load the operating system received from a remote source; and
- a Management Engine (ME) to implement management functions for the apparatus within a network, the ME to control use of the operating system received from a remote location and as specified in the set of computer-readable instructions.
10. The apparatus of claim 9, further comprising a processor to execute at least a portion of a set of computer-readable instructions.
11. The apparatus of claim 10, wherein the ME is further to implement an Active Management Technology (AMT) function.
12. The apparatus of claim 11, further comprising:
- a network interface unit; and
- a Universal Network Device Interface (UNDI) communicatively coupled to the network interface.
13. The apparatus of claim 9, further comprising a pre-boot execution unit including a set of computer-readable instructions for downloading the operating system.
14. A method for performing a secure authenticated remote boot of a computing device over a wireless network in a pre-boot execution environment (PXE) using active management technology (AMT) for remote discovery, the method comprising:
- maintaining full control by a management engine (ME) of a wireless interface and a wireless connection as booting begins; and
- relinquishing control of the wireless interface by the ME after a PXE timeout, in response to a shutdown command, or once the device has booted,
- wherein the ME is to control use of an operating system received from a remote location.
15. The method of claim 14, further comprising using a host embedded controller interface (HECI) application programming interface (API) to communicate with the ME for communicating over the wireless connection, the HECI API to serve as a proxy for the wireless interface when managed by the ME.
16. The method of claim 14, further comprising using a universal network driver interface (UNDI) as a host embedded controller interface (HECI) wrapper, the PXE to use the UNDI to communicate with the ME for communicating network traffic over the wireless connection.
17. The method of claim 14, wherein the computing device is a wireless communication device configured to communicate in accordance with an IEEE 802.11 standard.
18. The method of claim 14, wherein the computing device is a wireless communication device configured to communicate in accordance with an IEEE 802.16 standard.
19. The method of claim 14, wherein the computing device is a wireless communication device configured to communicate in accordance with a 3GPP standard for long-term evolution (LTE).
Type: Application
Filed: Nov 23, 2009
Publication Date: May 26, 2011
Inventors: Hormuzd Khosravi (Portland, OR), Venkat R. Gokulrangan (Portland, OR), Michael Berger (Jerusalem), Izoslav Tchigevsky (Kiryat Haim), Gary Joe Calhoun (Aloha, OR)
Application Number: 12/623,555
International Classification: G06F 15/177 (20060101); G06F 9/00 (20060101); G06F 15/173 (20060101);