1. Technical Field
The invention relates to virtualization. More particularly, the invention relates to a method and apparatus for downloading virtualization software.
2. Description of the Prior Art
In computing, virtualization is a broad term that refers to the abstraction of computer resources. One useful definition is a technique for hiding the physical characteristics of computing resources from the way in which other systems, applications, or end users interact with those resources. This term has been widely used since the 1960s or earlier, and has been applied to many different aspects and scopes of computing, from entire computer systems to individual capabilities or components. The common theme of all virtualization technologies is the hiding of technical detail, through encapsulation. Virtualization creates an external interface that hides an underlying implementation, e.g. by multiplexing access, by combining resources at different physical locations, or by simplifying a control system.
VMWare designed the VMWare Player to run multiple operating systems concurrently. Specifically, a virtual machine monitor (VMM) is co-resident with the host operating system and converts calls from the host operating system for use with the VMM. See, for example, U.S. Pat. Nos. 6,397,242; 6,496,847, 6,704,925. Thus, because the VMWare Player must translate calls from the host operating system to the secondary operating system, the processing time is increased. The VMWare Player can be downloaded.
The invention provides a method and apparatus for downloading virtualization software. In one embodiment, the Virtualization Environment installer scans the user's computer to determine if it satisfies the device driver requirements. If the computer has sufficient drivers, the installer downloads the appliance files and saves the Virtualization Environment files to the Windows hard disk in the filesystem, i.e. NTFS. The user information is stored on a persistent storage server to avoid writing to the NTFS.
The Virtualization Environment includes an electronic programming guide (EPG). The EPG is similar to a set-top box in that it is easy and intuitive to use. When the system boots, the EPG user interface (UI) is the first image a user sees. The EPG displays all available virtual appliances from, for example, the following places: peripheral device such as a thumb drive, USB, flash card, e.g. SD, xD, CF, CDROM/DVD, or other storage media; local hard disk storage; and the Internet, e.g. a download server. In one embodiment, the EPG UI includes a search entry field for entering search terms.
The user selects an appliance to use from the EPG and the appliance is loaded and launched. If the selected appliance is not accessible locally, then it is downloaded, e.g. over the Internet from a download server. The user can also elect to boot the host OS from the hard disk, if a host OS and hard disk are installed, or to power-off the system.
In one embodiment, the EPG is displayed for a certain time period. If a user does not take action during that time, the computer reverts back to the default procedure by booting the host OS.
In one embodiment, the appliance is an application on a Linux operating system. When the user selects an appliance to use from the EPG, the latter boots Linux and passes the appliance name to Linux. Once Linux is booted up, the appliance is loaded and launched.
In one embodiment, the invention comprises a method and/or an apparatus for installing virtualization software called a Virtualization Environment, which runs on a Virtualization Environment operating system (OS), e.g. Linux.
The Virtualization Environment provides the user with all the functionality associated with a host OS, without having to wait for the host OS to load. The virtualization software comprises an Electronic Programming Guide (EPG), which uses boot files stored on the host OS and which suspends the host OS once the EPG is launched. The EPG comprises a user interface (UI) that displays icons as graphical representations of the appliances. When the user selects an appliance for launching, the personal computer becomes a dedicated function device for the selected appliance. Thus, in a matter of seconds, a user can launch any of the following: a browser for surfing the Internet, an instant messaging client, a Voice over Internet Protocol (VoIP) system, an MP3 player, etc.
A user uses a client 200, e.g. a computer platform configured to act as a client device such as a computer, a digital media player, a personal digital assistant, or a cellular telephone to locate 100 the Virtualization Environment installer on a download server 210 for downloading via a network 205, e.g. the Internet, a local area network (LAN), a wide area network (WAN). The Virtualization Environment installer can be downloaded directly from, for example, DeviceVM's website, e.g. the website for Splashtop™ software or from a website dedicated to providing a repository of applications for download.
The user selects 105 the Virtualization Environment installer for installation on a client 200. The installer assesses whether the user has administrative rights. If not, the installer aborts 110. If the user has administrative rights, the installer runs 115 a hardware scanner to identify device drivers on the client. The device driver functions as a translator between hardware and the application or the OS that uses the hardware. Thus, without the appropriate drivers, the hardware is useless.
The Virtualization Environment includes a virtual appliance, called the electronic programming guide (EPG), which comprises a user interface (UI) that is displayed on the client 200. The EPG requires the following hardware items: a video controller, mouse, keyboard, on-screen mouse cursor, and hard disk controller. The hard disk controller is important for compatibility because it allows the central processing unit (CPU) to communicate with a storage device. Newer systems use Serial AT Attachment (SATA) native interfaces.
The appliance environment, which launches the virtual appliances, has the same hardware requirements as the EPG. In addition, the appliance environment requires a network controller for either wired or wireless networks, a CDROM/DVD interface, audio hardware, and a USB or memory card interface. The CDROM/DVD interface is important for music, and video playback appliances. The USB or memory card interface is important for photo and music appliances. In one embodiment, the appliance environment runs on Linux.
The installer logs 120 onto the installation file server 215. The installer uploads 125 the hardware configuration information to the installation file server 215. The installation file server 215 includes a database 220 backend that associates hardware information with the Virtualization Environment files. The installation file server 215 determines which Virtualization Environment kernel binaries support the specific network controller contained on the client. If the client lacks sufficient device drivers, the Virtualization Environment installer notifies 130 the user. The user can download 135 the drivers from a download server 210 and restart the installation process by locating 100 the Virtualization Environment installer. Alternatively, the drivers can automatically be downloaded by the Virtualization Environment installer.
If the client contains the proper drivers and hardware, the server indicates 140 that the hardware is supported. If the hardware is supported, the installer downloads 145 the files to the local hard disk, e.g. in C:\Appliance. One of the files includes a utility that runs every time the OS boots. The installer sets up 150 the boot files. The original files, ntldr for Windows XP or bootmgr for Windows Vista, are renamed ntldr.dvm or bootmgr.dvm. These new versions of the files replace the originals. The installer updates 155 the installation server 215 with the status of the installation process. The installer prompts 160 the user to reboot.
The Virtualization Environment comprises an EPG, which may be included in the system boot ROM. The EPG is a virtual appliance that comprises a user interface for displaying other appliances to a user. The EPG is similar to those provided with a set-top box in that it is easy and intuitive to use. In one embodiment, the EPG comprises a switching mechanism, such as a docking panel, application launch bar, scroll bar, soft keys, or physical buttons.
This two-step boot process is used because the Windows boot sector code can only load and launch real-mode code and because the EPG code runs in high memory with the CPU in protected code. The ntldr and bootmgr files may contain different code because of NTFS differences between Windows XP and Vista.
To avoid having to write to the NTFS file system or to store data locally, persistent data is stored on a persistent storage server 225. Persistent data includes, e.g. browser bookmarks, user data, etc. The persistent storage server communicates with a driver in the Linux environment. The driver maps an online storage space to a folder or device in the Linux environment.
If an appliance is enabled for persistent storage, the user logs into the persistent storage server 225 to access the user's personal data. The user selects a persistent storage icon 400 on the EPG UI to bring up the log-in dialog box. The log-in dialog box does not automatically appear because the user may not need to access persistent storage every time the Virtualization Environment is used.
The persistent storage icon 400 is part of a tool bar that can also include other icons, such as a power-off icon 402, which allows users to shut down the client 200. The tool bar can also include a reboot icon (not shown) to reboot the computer, a volume control icon (not shown) to control the client's 200 volume, and a network advanced configuration icon (not shown) for proxy server, static IP setup, etc.
When Windows is updated, it can replace the new ntldr or bootmgr files. Thus the system determines if the bootloader files have changed to prevent Windows from disabling the Virtualization Environment. If the bootloader files have changed, the new files are backed up 310 and the original Virtualization Environment versions of the bootloader files are restored 312.
If the bootloader files have not changed, the client 200 displays 314 a BIOS boot screen. The Virtualization Environment searches 316 for all available virtual appliances from, for example, local USB, flash card, e.g. SD, xD, CF, CDROM/DVD, or other storage media; local hard disk storage; Internet, e.g. a download server 210. The EPG displays 318 appliances on the EPG UI. At this point, the mouse and keyboard are activated and available to the user. Once the EPG UI is displayed, a timer begins counting-down.
If the user does not take an action, e.g. select an appliance, move the cursor, etc., or if the user selects the host OS icon 405 on the EPG UI, the EPG boots 320 to Windows by loading 322 the original boot files, e.g. ntldr/bootmagr for Windows XP and Vista, respectively. The client 200 switches 324 to real mode and runs 326 the ntldr/bootmgr code. The client displays 328 the host OS boot screen. The steps that follow if a user does select 330 an appliance, are described below.
Although the download server 210, installation server 220, and persistent storage server 225 are illustrated as separate components, in one embodiment, these components can reside on the same server or a combination of servers.
An appliance, or virtual appliance, is a self-contained binary package that contains everything that is necessary to perform a particular task. The virtual appliances can include, for example, a VoIP application, an instant messenger, a browser, a search engine, an MP3 player, a CD player, a DVD player, a video player, or a photo application. For example, a VoIP appliance contains all the software necessary for the user to connect to the Internet and then talk with another party. Such an appliance may contain an OS, network stack, device drivers, user interface, and a VoIP application.
Referring back to
In one embodiment, the startup sequence is optimized to achieve a quick boot. One optimization approach involves improving concurrency by performing the operations of decompressing and executing while the appliance is being loaded. To do this, a compression algorithm optimized for streaming media is used. At the top level, the appliance is streamed to the personal computer. The stream is made up of compressed chunks. Each chunk can be decompressed independently of the other chunks.
In one embodiment, the EPG downloads 344 additional appliances. The user can manually download a self-extracting file from the download server 210 using a web browser and then select the self-extractor to run. The self-extractor copies files to the correct location on the hark disk.
In another embodiment, the download application can be specially written. The download application communicates with the download server 210, lists the appliances that are available to the user on the EPG UI, and downloads the appliance binaries to the correct location on the hard disk. The application performs a checksum and other validation steps to ensure that the downloaded appliance is free of malware.
In one embodiment of the invention, a user can perform an Internet search by entering text directly into the search entry field 425. The user then selects the Splashtop™ browser 410 to launch the search. The Splashtop™ browser uses Firefox to perform the searches. Further details, and various embodiments of the searching mechanism are described in U.S. patent application, Quick Searching UI for a Better User Experience, filed Sep. 26, 2008, and which is incorporated herein, in its entirety by this reference thereto.
Although the invention is described herein with reference to the preferred embodiment, one skilled in the art will readily appreciate that other applications may be substituted for those set forth herein without departing from the spirit and scope of the present invention. Accordingly, the invention should only be limited by the Claims included below.
This patent application is a continuation-in-part of U.S. patent application Ser. No. 12/200,758, Method and Apparatus for Virtualization of Appliances, filed Aug. 28, 2008, which is a continuation of U.S. patent application Ser. No. 11/772,700, Method and Apparatus for Virtualization of Appliances, filed Jul. 2, 2007 and claims priority to U.S. provisional patent application Ser. No. 60/806,915, Method and Apparatus for Virtualization of Applications, filed Jul. 10, 2006; U.S. provisional patent application Ser. No. 60/890,121, Instant On Appliances, filed Feb. 15, 2007; and U.S. provisional patent application Ser. No. 60/975,724, Quick Searching Facility for a Virtualized Environment, filed Sep. 27, 2007, the entirety of each of which is incorporated herein by this reference thereto.
Number | Date | Country | |
---|---|---|---|
60975724 | Sep 2007 | US | |
60806915 | Jul 2006 | US | |
60890121 | Feb 2007 | US |
Number | Date | Country | |
---|---|---|---|
Parent | 11772700 | Jul 2007 | US |
Child | 12200758 | US |
Number | Date | Country | |
---|---|---|---|
Parent | 12200758 | Aug 2008 | US |
Child | 12239701 | US |