Run Windows On Linux: Win4Lin Revisited

Dual-Boot Configurations

Dual-boot configurations are well-practiced, well-understood, and well-suited for most basic multiple-OS configurations. Their relatively simple setup and dedicated partitions create a workable environment for jumping between isolated runtime systems, where each OS may be installed, configured, destroyed, and rebuilt or rescued entirely independent of the other. The biggest downside is downtime between shutdown of one OS, and startup of the other. In particular, this does not scale well in environments where kernel development or low-level code modification requiring frequent reboots is necessary.

Though advances in cross-platform development have lead to many successes on the Linux front, such as a workable captive NTFS driver solution that enables reading from and writing to NTFS volumes, these options remain limited to those in-the-know who are unafraid to experiment with unfamiliar command line invocations. Still, emulation provides a simple clean room environment for working with Windows applications (or vice-versa) in a simple, self-contained format.

Emulation Explained

Numerous ready-made solutions on the market essentially do the same thing - namely, create an emulation environment (or abstraction) atop the Linux platform upon which applications from other operating systems (notably Windows) may run. Detailed concepts, methods, tools, and capability vary greatly among products, and make it difficult to be fair about side-by-side comparisons between seemingly similar offerings. There are "partial" emulation environments - such as simple crossover APIs that transliterate Windows-specific function calls to similar Linux-style library calls, and vice-versa. Then there are more robust "complete" offerings that provide a much broader scope of capability, and which also permit one or more OSes to operate concurrently, usually one within another OS in a guest/host relationship.

Virtualization Techniques

Where emulation seeks to recreate hard and soft resources within real hardware and software, virtualization seeks to logically subdivide real hardware (and software) resources into multiple discrete operating environments. While virtualization is also used to describe the ability to create a virtual plane of existence for a guest operating system from within a host operating system environment, this is an incomplete description at best. Virtualization can occur at the software level, with or without modification to the guest and underlying OS, or even within the core of a specialized processor such as AMD's forthcoming Pacifica Opteron chips or most of Intel's 65 nm products.

Likewise, there are many types and variations among virtualization methods. Full virtualization simulates a complete hardware environment for use with unmodified OS environments (Bochs); paravirtualization introduces a specialized API that requires OS modification (Xen); and native virtualization, whereby partial hardware simulation supports isolated guest environments (VMware). There is also OS-level virtualization, application virtualization, and even hardware virtualization techniques that may be applied to further subdivide and make more efficient use of existing resources on a larger scale than simple emulation methods can support.

Ed Tittel

Ed Tittel is a long-time IT writer, researcher and consultant, and occasional contributor to Tom’s Hardware. A Windows Insider MVP since 2018, he likes to cover OS-related driver, troubleshooting, and security topics.