Foreign Linux (aka flinux) is a project to run unmodified Linux binaries on Windows without any drivers or modifications to the system. The philosophy is different to packages like Cygwin or Wine. The latter two are high level emulators while Foreign Linux works at a low level implementing kernel system calls and use the original unmodified system libraries to provide common ABIs. The approach, though more complex, reduces the amount of work and increases the efficiency of the emulation.

Foreign Linux can dynamically translate Linux system calls to their Windows equivalents or emulate them if not available (for example, fork implementation). A dynamic binary translator is introduced to process the binaries and transform the incompatible bits before it is run.

Foreign Linux is under heavy development at the time of writing. The following applications are among the ones that work currently:

Basic utilities: bash, vim, nano

Programming environments: python, gcc

Package managers: pacman

Terminal-based games: vitetris, nethack

Network utilities: wget, curl, ssh

X applications: xeyes, xclock, glxgears

Functionalities missing include file permissions, process management, signals, multi-threading, and more. Applications depending on these technologies will not work properly.

Features

Run unmodified Linux applications in a pure user-mode application, no privileged code or drivers or virtual machines

Support both dynamically and statically compiled executables

Support NTFS native hardlinks and emulated symbolic links

Xterm-like terminal emulation on Win32 console

Client-side networking (sockets) support

Usage

Follow the Beginner’s Guide for download link and to walk through the setup.

Webpage: flinux