Abstract:
A system is provided for conveniently moving an entire computer environment among a plurality of computing platforms. The system includes a portable storage medium able to couple to a host machine of a computing platform. The portable storage medium stores an emulator program able to run a guest operating system (OS) and an executable script able to prepare and launch a computer environment based on the guest OS. The host machine includes a computer environment based on a native operating system (OS), the native OS being able to detect and mount the portable storage medium, the native OS also being able to execute the executable script.

Description:
FIELD 
       [0001]    The present invention relates generally to the field of virtual and emulated personal computing environments, and more particularly to portable virtual computing environments. 
       BACKGROUND 
       [0002]    Modern personal computers are increasingly pervasive in both business and personal environments. Additionally, personal computers are increasingly designed for mobility and functionality that supports both business and personal activities, leading to small, lightweight, full-featured electronic devices. However, even as personal computers continue to shrink in size and weight, typical personal computers are still complex hardware systems configured with an operating system. In typical systems, the operating system supports software applications that perform the user-desired functions. 
         [0003]    The typical modern operating system is highly hardware-oriented—the operating system must be configured for the particular hardware on which it runs. One configuration of Unix, for example, that runs on a particular hardware processor, motherboard, memory, etc., will not run on a different platform without reconfiguration or, at the very least, thorough compatibility testing. This configuration and compatibility testing is beyond the ability of the typical consumer user. 
         [0004]    Furthermore, modern operating systems offer a wide array of features. Increasing competition has lead to significant variation in operating systems available for the typical consumer to choose. In some cases, no one operating system meets all of a consumer&#39;s needs. As such, personal computers are increasingly configured with multiple operating systems. However, in typical systems, the user can only access one operating system at a time. Further, switching between operating systems is frequently a time-consuming and annoying task for the typical consumer user. 
         [0005]    Moreover, the hardware of typical personal computers is complex. The typical consumer user does not know or understand how the various components interact, what functions they perform, or how they are constructed. Accordingly, the typical consumer user cannot troubleshoot hardware problems that arise in a typical personal computer without extensive, often expensive, training. This problem is exacerbated by the sometimes obscure relationship between the operating system and the particular hardware on which it runs. Thus, in some cases, the user experiences a problem that is neither a pure hardware or software fault, but is instead a peculiar error arising from that particular hardware and software combination. Diagnosing and correcting such errors is usually far beyond the ability of the typical consumer user, and even exceeds the ability of some professional technicians. 
         [0006]    Finally, typical personal computers offer a wide range of customization options to the consumer user. Some users spend hours adjusting these customization options until their personal experience, usually as expressed through the user interface, is optimized to their personal preferences. But these personalization options do not persist across multiple machines. For a user that typically operates both a business machine and a personal machine, the user must duplicate optimization efforts on each machine. Further, the different machines may require subtle configuration differences that add to the frustration and time expense of the user trying to personalize his computing experience. 
       SUMMARY 
       [0007]    In a general aspect of the invention, a system is provided for conveniently moving an entire computer environment among a plurality of computing platforms. The system includes a portable storage medium able to couple to a host machine of a computing platform. The portable storage medium stores an emulator program able to run a guest operating system (OS) and an executable script able to prepare and launch a computer environment based on the guest OS. The host machine includes a computer environment based on a native operating system (OS), the native OS being able to detect and mount the portable storage medium, the native OS also being able to execute the executable script. 
         [0008]    In a preferred embodiment, the computer environment based on the guest OS isolates sensitive information from access from within the computer environment based on the native OS. In another embodiment, the native OS executes the executable script automatically. 
         [0009]    In another preferred embodiment, the native OS is one of: a Unix-type OS, a Linux-type OS, a Windows-type OS, a Macintosh-type OS, and a modern-type OS. In another embodiment, the guest OS is one of: a Unix-type OS, a Linux-type OS, a Windows-type OS, a Macintosh-type OS, and a modern-type OS. In another embodiment, native OS is one of: a Unix-type OS, a Linux-type OS, a Windows-type OS, a Macintosh-type OS, and a modern-type OS; and the guest OS is one of: a Unix-type OS, a Linux-type OS, a Windows-type OS, a Macintosh-type OS, and a modern-type OS. In another embodiment, the computer environment based on the guest OS is further configured to appear to a user as one of a conventional desktop computer environment or a conventional laptop computer environment. 
         [0010]    In yet another preferred embodiment, the portable storage medium is one of: a solid-state USB flash drive; a USB-capable traditional hard drive; a MiniSD card; a MicroSD card; a data storage module of a mobile telephone; a data storage module of a camera; a data storage module of an MP 3  device; an online storage account; a static network drive; a dynamic network drive; and a drive distributed across networks. 
         [0011]    In still another preferred embodiment, the portable storage medium further includes a plurality of guest OS files usable by the emulator program and the executable script to launch the computer environment based on the guest OS. In another preferred embodiment, the computer environment based on the guest OS is executable as a process that does not require administrator rights within the native OS. 
         [0012]    In another general aspect of the invention, a method is provided for conveniently moving an entire computer environment among a plurality of host computers, each host computer having a native computer environment based on a native operating system (OS), the native OS being able to detect and mount a portable storage medium, the native OS also being able to execute an executable script. The method includes providing a portable storage medium and storing on the portable storage medium: an emulator program able to run a guest operating system (OS); and an executable script able to prepare and launch a guest computer environment based on the guest OS. The method includes attaching the portable storage medium to a host computer and running the guest operating system (OS) on the host computer. The method includes preparing and launching a computer environment based on the guest OS. 
         [0013]    In a preferred embodiment, the guest computer environment based on the guest OS isolates sensitive information from access by a user within the native computer environment based on the native OS. In another embodiment, the native OS automatically executes an executable script to prepare and launch the guest computer environment based on the guest OS. 
         [0014]    In another preferred embodiment, the native OS is one of: a Unix-type OS, a Linux-type OS, a Windows-type OS, a Macintosh-type OS, and a modern-type OS. In another embodiment, the guest OS is one of: a Unix-type OS, a Linux-type OS, a Windows-type OS, a Macintosh-type OS, and a modern-type OS. In another embodiment, native OS is one of: a Unix-type OS, a Linux-type OS, a Windows-type OS, a Macintosh-type OS, and a modern-type OS; and the guest OS is one of: a Unix-type OS, a Linux-type OS, a Windows-type OS, a Macintosh-type OS, and a modern-type OS. 
         [0015]    In yet another preferred embodiment, the method includes providing a plurality of guest OS files usable to launch the guest computer environment based on the guest OS. In another embodiment, the guest computer environment based on the guest OS is executable as a process that does not require administrator rights within the native OS. In another embodiment, the computer environment based on the guest OS provides access to at least a portion of the host system hardware. 
         [0016]    In yet another preferred embodiment, the portable storage medium is a USB flash drive. In another embodiment, the portable storage medium is one of: a solid-state USB flash drive; a USB-capable traditional hard drive; a MiniSD card; a MicroSD card; a data storage module of a mobile telephone; a data storage module of a camera; a data storage module of an MP3 device; an online storage account; a static network drive; a dynamic network drive; and a drive distributed across networks. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWING 
         [0017]    The invention will be more fully understood from the following detailed description, in conjunction with the following figures, wherein: 
           [0018]      FIG. 1  is a generalized block diagram showing a system configured with a portable virtualized computing environment with universal inter-operability; 
           [0019]      FIGS. 2-4  are high-level flow diagrams illustrating an exemplary operational session of the portable virtualized computing environment with universal inter-operability of  FIG. 1 . 
       
    
    
     DETAILED DESCRIPTION 
       [0020]      FIG. 1  is a block diagram showing an embodiment of the invention for a portable virtualized computing environment with universal inter-operability. Specifically,  FIG. 1  shows a computer system  100  having a host system  102  supporting a portable storage device  104 , as described in more detail below. Generally, system  100  provides for conveniently moving an entire computer environment among a plurality of computing platforms, as described in more detail below. 
         [0021]    In the illustrated embodiment, host system  102  is an otherwise conventional personal computer system, configured with a modern operating system, as described in more detail below. Specifically, host system  102  includes an otherwise conventional processor  110 , and an otherwise conventional storage  112 . Generally, processor  110  is configured to execute instructions and storage  112  is configured to store data in a persistent, non-volatile state. One skilled in the art will understand that storage  112  is therefore distinct from “memory”, as described in more detail below. 
         [0022]    Host system  102  also includes a user interface  114 . Generally, user interface  114  is an otherwise conventional user interface, configured to receive user input from a user and to display information to a user. As such, user interface  114  includes a number of devices  116 . Generally, devices  116  are otherwise conventional user interface hardware devices, such as keyboards, mice, monitors, speakers, and other suitable devices for receiving information from and/or presenting information to a user. 
         [0023]    Host system  102  also includes memory  130 . Memory  130  is an otherwise conventional memory, such as a dynamic random access memory (DRAM) or other memory able to serve as main memory for host system  102 . One skilled in the art will understand that memory  130  stores data and instructions for processing and execution by host system  102 . 
         [0024]    For example, in the illustrated embodiment, memory  130  includes system processes  132 , host operating system (OS)  134 , host user processes  136 , and guest operating system (OS) processes  140 . Generally, system processes  132  are processes (and associated data) executing on behalf of the host system  102  itself, and not, for example, as a particular user. In typical systems, system processes  132  are processes governed by the operating system. As described in more detail below, system processes  132  ordinarily require a heightened privilege level than, for example, ordinary user processes. 
         [0025]    As illustrated, memory  130  includes host OS  134 . Generally, host OS  134  is an otherwise conventional modern operating system. Specifically, in one embodiment, host OS  134  is configured to recognize portable storage media, and to execute (or “run”) scripts, such as JavaScript, for example. Example suitable operating systems include, but are not limited to, Windows-type operating systems, Unix-type operating systems, Macintosh-type operating systems, mobile-type operating systems, and modern-type operating systems. 
         [0026]    Generally, a Windows-type operating system is an operating system from the Windows family of operating systems (such as Windows  7 , Windows Vista, and Windows XP, for example), or clones thereof. Generally, a Unix-type operating system is an operating system from the Unix family of operating systems (such as one of the various versions of Unix), a derivative of Linux (such as Debian, Ubuntu, and Red Hat, for example), or other modification of Unix (such as AIX, for example), or clones thereof. Generally, a Macintosh-type operating system is an operating system from the Apple Macintosh operating system family (such as OSX and Snow Leopard, for example), or clones thereof. Generally, a mobile-type operating system is an operating system oriented for use on mobile and/or embedded platforms, such as mobile telephones, smartphones, personal data assistants (PDAs), portable music players, and other such devices. Mobile-type operating systems include, for example, Android, iPhone, iTouch, Windows Mobile, and Linux Mobile. Generally, a modern-type operating system is an operating system configured with modern features, such as features that enable detection and mounting of external storage. 
         [0027]    In addition to system processes  132 , Host OS  134  also creates and launches host user processes  136 , which also reside in memory  130 . In one embodiment, host user processes  136  are otherwise conventional user processes, as configured based on the particular host OS  134  in operation. One skilled in the art will understand that host user processes  136  are typically configured based on user input and/or the operation of user applications operating on the user&#39;s behalf. Generally, a user operating host system  102  does so through host user processes  136  (and user interface  114 ). 
         [0028]    As described in more detail below, memory  130  also includes guest operating system (OS) processes  140 . Generally, guest OS processes  140  are processes operating on behalf of a guest OS, in a virtualized computing environment provided by portable storage device (PSD)  104 . Generally, in one embodiment, guest OS processes  140  are non-privileged processes on host system  102 . In an alternate embodiment, guest OS processes  140  are configured with the ordinary privilege level of host user processes  136 . 
         [0029]    Thus, generally, host system  102  provides a computer environment based on a particular OS, with features that support a guest OS. As used herein, a “computer environment based on a particular OS” includes a computer environment wherein operating system files are located on the hardware providing the computer environment. 
         [0030]    Host system  102  also includes an input/output (I/O) module  150 . I/O module  150  is an otherwise conventional I/O module, and includes interface  152 . Generally, interface  152  is an otherwise conventional I/O interface, configured to receive portable storage devices. In one embodiment, interface  152  is an otherwise conventional (female) universal serial bus (USB) port. Broadly, interface  152  is configured to couple to an interface  160  of PSD  104 , as described in more detail below. 
         [0031]    As shown, PSD  104  is a portable storage device, configured as described herein. Generally, PSD  104  is an electronic storage device, configured for portable, universal inter-operability. PSD  104  can be configured as any suitable portable storage medium that allows read/write capability and an appreciable read/write speed. As such, exemplary PSD  104  include, but are not limited to: solid-state USB ‘flash’ drives, USB hard drives with traditional hard drives, MiniSD cards, MicroSD cards, storage located on a mobile phone, storage located on a camera, storage located on an MP 3  device, online storage facilities and accounts, static and dynamic network drives, mapped drives across networks. 
         [0032]    One skilled in the art will understand that universal inter-operability depends on the interface configuration of PSD  104 . Thus, as shown in the illustrated embodiment, PSD  104  includes an interface  160 . Generally, interface  160  is an otherwise conventional interface, configured to couple to an interface  152  or a host system  102 . One skilled in the art will understand that there are a variety of well-known, interface standards, such as USB and Firewire, for example. As such, in one embodiment, interface  160  is an otherwise conventional (male) USB port. 
         [0033]    As illustrated, PSD  104  also includes storage  162 . Generally, storage  162  is otherwise conventional non-volatile storage, suitable to store and retain data across multiple sessions, whether connected to or disconnected from a host system  102 . Generally, storage  162  includes features embodying certain aspects of the invention. 
         [0034]    Specifically, storage  162  includes operating system files  170  and emulator  172 . Generally, operating system files  170  are files containing information regarding emulation and operation of one or more particular operating systems in a virtualized environment. One skilled in the art will understand that the files and data necessary to operate an installed operating system, such as host OS  134 , are not necessarily identical to those files and data necessary to operate that same operating system in a virtualized environment. For example, as described above, installed operating systems typically must be customized for the particular hardware on which the operating system is installed. In one embodiment, operating system files  170  are configured for a virtual computing environment that operates independent of any specific hardware configuration. 
         [0035]    Very generally, emulator  172  uses operating system files  170  to initialize and execute a virtualized computing environment (VCE), which runs on host system  102  as guest OS processes  140 . As such, in one embodiment, emulator  172  is an otherwise conventional virtual machine emulator, modified as described herein. In one embodiment, emulator  172  uses scripts  174  to configure, initialize, and operate a guest OS in a VCE, as described in more detail below. 
         [0036]    Specifically, in one embodiment, PSD  104  is configured to configure, initialize, and operate a guest OS in a VCE as described with respect to  FIGS. 2 through 4 . As indicated at block  205 , the process begins and the host machine is initialized. As described above, in one embodiment, after initialization, the host machine is running a modern-type operating system. As described above, a modern-type operating system includes, for example, Unix-, Linux-, Windows-, and Macintosh-type operating systems. One skilled in the art will understand that other suitable modern-type operating systems can also be employed. 
         [0037]    Next, as indicated at block  210 , the user inserts a pre-configured portable storage medium (PSM) into the appropriate port/interface on the host machine. Next, as indicated at block  215 , the host OS recognizes the PSM and the host machine/OS performs a standard PSM initialization. One skilled in the art will understand that a typical modern-type OS can be configured to recognize and mount PSM devices in standard configurations, such as, for example, USB, Firewire, and other suitable configuration protocols. 
         [0038]    Next, as indicated at decisional block  220 , the host OS determines whether auto-run features are enabled (or present) on the host machine/OS. If at decisional block  220  auto-run features are enabled, the process continues along the YES branch to block  225 . Next, as indicated at block  225 , the host OS initiates the PSM auto-run script and the process continues to block  240 , described below. 
         [0039]    If at decisional block  220  auto-run features are not enabled, the process continues along the NO branch to block  230 . Next, as indicated at block  230 , the user navigates to the PSM auto-run script on the PSM. In one embodiment, the user accesses the PSM scripts through a graphical user interface (GUI) on the host machine. Next, as indicated at block  235 , the user requests the auto-run script be initiated. The process continues to block  225 , wherein the auto-run script is initiated. 
         [0040]    Next, as indicated at block  240 , the PSM executes the emulator configuration file. As described above, this step can be performed by the PSM executing as a user-level process on the host OS. Next, as indicated at block  245 , the PSM initiates a virtual computing environment (VCE). In one embodiment, the PSM initiates a VCE using the emulator configuration files and the OS files. As described above, in one embodiment, the VCE runs as a user-level process, within a user interface embedded in a GUI on the host OS. The process continues to marker “A” of  FIG. 3 . 
         [0041]    As indicated at marker “A” of  FIG. 3 , the process continues to block  305 . As indicated at block  305 , the VCE establishes communications with the host machine/OS user interface. Next, as indicated at block  310 , the VCE establishes communications with the host machine/OS input/output (I/O) interface. Next, as indicated at block  315 , the VCE establishes a GUI on the host machine device. 
         [0042]    Next, as indicated at block  320 , the host machine establishes users processes for the VCE GUI and guest OS. Next, as indicated at block  325 , the VCE launches the guest OS in the GUI. Next, as indicated at block  330 , the user interacts with the guest OS. One skilled in the art will understand that the user interaction with the guest OS can be any of a wide variety of interactions, as, for example, a user would undertake in an ordinary computing environment. After a period of time, the user has finished whatever tasks the user performed. 
         [0043]    Next, as indicated at block  335 , the user terminates the guest OS session. Next, as indicated at block  340 , the VCE terminates the guest OS in the GUI. The process continues to marker “B” of  FIG. 4 . 
         [0044]    As indicated at marker “B” of  FIG. 4 , the process continues to block  405 . As indicated at block  405 , the VCE terminates the GUI. In one embodiment, the VCE saves the user configuration for the VCE. In another embodiment, the host OS terminates the GUI. Next, as indicated at block  410 , the PSM terminates the VCE. Next, as indicated at block  415 , the PSM initiates removal operations. As described above, in one embodiment, removal operations include decouping from the host machine power supply, requesting dismount, requesting ejections, and/or other suitable operations. 
         [0045]    Next, as indicated at block  420 , the host machine initiates removal operations. As described above, in one embodiment, the host machine removal operations include removing power from the PSM, dismounting the PSM as a drive on the hose machine, killing open tasks running on the PSM, and/or other suitable operations. Next, as indicated at block  425 , the user removes the PSM from the host machine and the process ends. 
         [0046]    One skilled in the art will appreciate that there are numerous technical advantages associated with the disclosed embodiments of the invention. For example, in the embodiments described herein, the host operating system can be any modern operating system able to recognize portable storage media and run scripts and/or JavaScript. This alone is a significant improvement over prior art approaches. Also, in the embodiments described herein, the guest operating system can be almost any operating system, past or present. Together, these two features offer significant advantages over prior art systems and methods. 
         [0047]    For example, typical prior art host systems and/or guest systems are ordinarily dependent on a specific operating system for the host and/or guest OS. As such, typical prior art systems offer limited connectivity between host systems and guest systems generally. Thus, the near universality of host and guest combinations is a significant improvement over earlier systems and methods. 
         [0048]    Additionally, in embodiments disclosed herein, the user can finish work, shut down, and move to a host system of a completely different type, while maintaining the guest OS configuration. As such, in moving to a new host system, the user will still find all of the user&#39;s latest customizations, settings, updates and files, just as they were when the guest system was last used. Thus, the embodiments disclosed herein off a continuity that is a significant advantage over what is commonly known as a “Live CD.” Similarly, the disclosed embodiments therefore also provide a significant improvement over other operating systems, such as those that can be configured to boot from a USB flash drive, such as Knoppix Linux, WindowsPE, BartPE, ReactOS, and other varieties of Ubuntu Linux. 
         [0049]    Similarly, from the perspective of the user, some embodiments disclosed herein function like a conventional desktop or laptop computer. That is, the computer environment presented to the user appears to function the same as a conventional desktop or laptop computer, but also possesses the advantage of portability, as well as other advantages. As such, from the user&#39;s perspective, the user can customize the content of the device, such as installing various software programs; storing music, photos, and movies; reading e-books; transferring files; storing information; performing backups and downloads; listening to audio books; and reading documents, etc. As described in more detail above, these customizations persist, even as the user moves the device among a plurality of host operating environments. 
         [0050]    Additionally, the embodiments disclosed herein provide access to and/or control of all or some of the host system hardware. For example, in some embodiments, the user can use and/or control the host system CD/DVD/Blu-Ray drives, printers, faxes, scanners, Internet connections, other portable storage devices, hard drives, video cards, mouse, keyboard, speakers, monitor, and sound adapters, for example. One skilled in the art will understand that these devices can also be secured with typical security protocols, and, as such, in some embodiments, access to one or more host system devices can be restricted. Notwithstanding security considerations, in some embodiments, once the user connects the portable storage device, every piece of hardware on the host computer is under the control of the portable storage device, configuring automatically and not requiring any user intervention. In some embodiments, the portable storage device is further adapted to control the host system hardware without robbing, hacking, or invading the host system. 
         [0051]    Additionally, the embodiments disclosed herein can be configured to operate from a wide variety of physical media. This feature offers near universality of the portable storage medium and is a significant advantage over the prior art. 
         [0052]    Additionally, some of the embodiments disclosed herein offer automatic configuration features that are also significant improvements over the prior art. For example, some embodiments provide auto-run and/or auto-configuration, especially with emulators, portable operating systems, and portable applications. Prior approaches have required that the user manually find and run the emulators and scripts to initiate an emulator, which can be scattered over a number of storage locations. 
         [0053]    Additionally, the disclosed embodiments also offer versatility in portable operating systems. As described above, some disclosed embodiments can be adapted to combine scripts readable by various operating systems. As such, when the device is attached and mounted by typical computing processes on nearly any host machine configured for auto run, the host computer will automatically find and run a initialization script readable by the host. This feature reduces configuration problems for the user, and improves ease of portability over prior approaches. 
         [0054]    Additionally, the disclosed embodiments can be adapted to run as a user-level process on all operating systems. Prior approaches, such as approaches of some Linux systems, for example, typically require at least some administrative privileges to install an emulator in order to run virtual machines or devices. Because the disclosed embodiments can run as a user-level process, the disclosed embodiments allow the user of any system with non-administrative rights to run the virtual computing environment (VCE). 
         [0055]    Additionally, the disclosed embodiments can be adapted to ensure that the guest OS does not modify the host OS. Further, the disclosed embodiments can be adapted to ensure that, unless specifically allowed by the user, the guest OS (VCE) restricts sharing of files or any confidential passwords or information with the host system. Together, these features help improve security by maintaining a separation between the guest OS and the host OS. 
         [0056]    Other modifications and implementations will occur to those skilled in the art without departing from the spirit and scope of the invention as claimed. Accordingly, the above description is not intended to limit the invention except as indicated in the following claims.