1. Technical Field
This invention relates generally to the field of virtualization environments. More specifically, this invention relates to an intermediate between a pre-boot environment, an operating system with full support of networking hardware, and a hypervisor.
2. Description of the Related Art
Computers contain an operating system (OS) that serves as an interface between hardware and applications running on the computer. To put it simply, the OS manages the computer resources for the applications. Traditional operating systems, such as Microsoft® Windows, are slow to load. Furthermore, these operating systems are written for native hardware architecture and are incompatible with computer programs that were written for other architectures. As a result, computer programs were developed to resolve these incompatibilities.
An operating system that does not directly interact with computer hardware is referred to as a virtual machine because its hardware interface is represented entirely in software, or “virtual.”
A traditional operating system accesses networks, e.g. the Internet by using a driver to interact with a network interface controller, which uses both a physical layer and a data link layer for accessing physical networks. A physical network can be a local area network (LAN), e.g. Ethernet, a wireless local area network (WLAN), e.g. Wifi, or wireless wide area network (WWAN), e.g. 2G, 3G, 4G.
In the context of this patent application, a pre-boot environment is defined as a user-accessible software environment that is available before the host OS boots. The host OS is commonly a full-featured OS such as Microsoft® Windows. The pre-boot environment may be a Basic Input/Output System (BIOS)-based application, a Unified Extensible Firmware Interface (UEFI)-based application, an embedded OS along with applications, or a small-footprint Linux OS along with applications.
Pre-boot environments such as BIOS, UEFI, or an embedded OS contain very limited support for network interfaces because device drivers are difficult and time consuming to generate. On the other hand, device drivers for various network interfaces are readily available on an OS such as Linux, covering network media such as LAN, WLAN, and WWAN. Via virtualization, the pre-boot environment can gain access to a wide range of network interfaces without having its own device drivers, by leveraging an OS with broad networking hardware support. The OS with the networking hardware support directly interfaces to the networking hardware chipsets and provides a virtual network interface to the pre-boot environment.
In one embodiment, a network interface engine serves as an intermediary between the pre-boot environment and the network interface hardware (LAN, WLAN, or WWAN chipsets). In one embodiment, the network interface engine comprises the Linux OS and, therefore, uses Linux network device drivers to interact with networking hardware. In one embodiment, the network interface engine functions as an intermediary for a pre-boot environment until other operating systems are launched. In another embodiment, the network interface engine is used by the co-resident pre-boot environment and other operating systems in the virtualized environment.
In one embodiment, the invention comprises a method and an apparatus for using virtualization to enable universal network access on a pre-boot environment that typically has very limited networking hardware support.
Hardware
The client 100 includes a computer-readable storage medium, i.e. memory 110. The memory includes, but is not limited to, for example random access memory (RAM), an electronic, optical, magnetic, or other storage or transmission device capable of coupling to a processor, e.g. flash drive, CD-ROM, DVD, magnetic disk, memory chip, ROM, etc. The memory 110 is coupled to a processor 120, which executes computer-executable program code stored in the memory 110. In a client 100 that runs in a virtualized environment, the memory and other hardware are logically partitioned 130 to support, for example, different operating systems. Each partition executes in a separate memory space. In one embodiment of the invention, memory and hardware are virtualized and shared.
A hypervisor 140, which is also known as a virtual machine monitor, allocates system resources to provide each OS with the appearance of having its own partitioned memory 130, processor, and hardware or firmware resources. The hypervisor 140 is illustrated as being within the memory 110, however, in another embodiment, the hypervisor 140 is implemented within hardware or firmware.
System Components
Computer hardware is represented by system hardware 205 and networking hardware 210 (Ethernet controllers, Wifi chipsets, 3G modules, etc.). The hypervisor 140 manages hardware access by the virtual machines. There are two virtual machines shown: a pre-boot environment 225 and a network interface engine 230. The network interface engine 230 is responsible for physical network access; therefore, the hypervisor 140 grants it direct access to networking hardware 210. The pre-boot environment 225 is the software environment that a user can interact with via input devices and a display; therefore, the hypervisor 140 grants it access to most of the system hardware 205.
The hypervisor 140 helps to establish a virtual network interface 220 between the two virtual machines. The network interface engine 230 makes its network connectivity available to the pre-boot environment 225 via the virtual network interface 220. This enables the pre-boot environment 225 to implement a single network interface that matches the virtual network interface 220, yet it can effectively make use of a wide range of network hardware interfaces (LAN, WLAN, WWAN chipsets by different manufacturers) by virtue of the diverse driver support in the network interface engine 230.
When the pre-boot environment 225 needs to access the network 235, it uses the standard interface on the virtual network interface 220. In one embodiment, the virtual network interface 220 is a software implemented communication channel. In another embodiment, the virtual network interface 220 is an emulated standard Ethernet controller. The network interface engine 230 in turn bridges the access to its networking hardware device drivers, which communicate directly with the networking hardware 210 to get onto the network 235.
The virtual network interface 220 can be implemented as an application programming interface (API) or a socket-based interface that establishes a communication channel between the pre-boot environment 225 and the network interface engine 230 with the help of the hypervisor 140. In one embodiment, the virtual network interface 220 is implemented as an emulation of a standard, well-known Ethernet controller interface. In this case, the pre-boot environment 225 only needs to implement one network device driver. Through the network interface engine 230, the single network device driver can access a broad range of network hardware interfaces.
Parameters of the network interface (e.g. Wifi access point IDs, Wifi access point passwords, 3G login, etc.) can be configured by the user via a simple application in the pre-boot environment 225 or with the network interface engine 230. These parameters can be stored in a persistent storage area accessible by the network interface engine 230.
Flow Chart
When the system is first turned on, system firmware 305 executes 400. System firmware 305 is usually either BIOS or UEFI. System firmware 305 hands control over to the bootloader 308, which then loads 405 the hypervisor 140. The hypervisor 140 first loads 410 the pre-boot environment 225, which can be a BIOS application, UEFI application, or an embedded OS. The pre-boot environment 225 presents 415 the user interface. The user interface can include various static or network-based applications (e.g. stock ticker, weather, e-mails, calendar events, RSS feeds, clock, photos, etc.).
In parallel, the hypervisor 140 can load 420 the network interface engine 230. When the network interface engine 230 is loaded, the virtual network interface 220 will be ready for use by the pre-boot environment 225. The pre-boot environment 225 can then update 425 its network-based applications with live data from the Internet (e.g. updated stock prices, new e-mails, etc.).
In some embodiments of the invention, the hypervisor 140 may load 430 yet another operating system virtual machine 325 that accesses the network through the network interface engine 230. In this case, the virtual network interface 220 bridges the physical network hardware to two virtual machines, a pre-boot environment 225 and an operating system 325.
As will be understood by those familiar with the art, the invention may be embodied in other specific forms without departing from the spirit or essential characteristics thereof. Likewise, the particular naming and division of the members, features, attributes, and other aspects are not mandatory or significant, and the mechanisms that implement the invention or its features may have different names, divisions and/or formats. Accordingly, the disclosure of the invention is intended to be illustrative, but not limiting, of the scope of the invention, which is set forth in the following Claims.
This patent application claims the benefit of U.S. provisional patent application Ser. No. 61/034,096, Method and Apparatus for Virtualization, filed Mar. 5, 2008, the entirety of which is incorporated herein by this reference thereto.
Number | Date | Country | |
---|---|---|---|
61034096 | Mar 2008 | US |