winux — Windows PE
executor for Linux.
Native, transparent execution of Windows PE32+ (x86_64) executables on Linux, without Wine, without VMs, without containers.
git clone https://github.com/devfrp/winux.git && cd winux && make && sudo make install
Windows binaries, run as Linux processes
winux loads a PE32+ executable straight into a Linux process: sections mapped into
memory, imports resolved, TEB/PEB synthesized, then native execution under a seccomp BPF filter.
The .exe name shows up in ps/htop,
its PE sections are labeled in /proc/pid/maps — no Wine, no VM, no container.
Architecture
Full execution pipeline, from PE binary down to the Linux kernel.
mmap section projection · relocationskernel32.dll stubs · ntdll.dll stubs · Handle→fd table · path translationFeatures
Everything you need to run Windows binaries on Linux, with no compromises.
PE Loader
Parses PE32+ headers, mmap sections at their virtual addresses, and applies relocations with precision.
Static IAT Resolver
Static import resolution with ~45 kernel32 functions and 17 ntdll stubs — no external dependencies.
Memory Manager
Implements VirtualAlloc/VirtualFree and heap allocation with a mutex-protected free-list.
Thread Model
TEB/PEB synthesis, GS segment configuration via arch_prctl, and native thread management.
Win32 Bridge
Handle-to-fd table, transparent Windows-to-Linux path translation (C:\ → /, separators, etc.).
seccomp BPF Filter
~50 whitelisted syscalls enforced via libseccomp for hardened isolation.
System Integration
Process name shows the .exe name in ps/htop. PE sections labeled in /proc/pid/maps.
I/O Transparency
Seamless input/output redirection between the Windows user space and native Linux descriptors.
Quick Start
Install winux in three commands and run your first PE binary.
Install
# Clone the repository git clone https://github.com/devfrp/winux.git # Build cd winux && make # Install sudo make install # Run a Windows binary! winexec prog.exe
Available Flags
winexec --debug # Verbose logging winexec --no-seccomp # Disable syscall filter winexec --paths # Custom path mapping
Dependencies · Debian / Ubuntu
sudo apt install gcc make libseccomp-dev
Specifications
A lightweight, high-performance, well-architected codebase.
FAQ
Everything you need to know about winux.
Does winux replace Wine?
No. winux is a lightweight executor specialized in PE32+ (x86_64) binaries. It does not implement the full Win32 API like Wine. It is designed for workloads where transparency and lightness take priority over full compatibility.
What types of binaries are supported?
winux supports Windows PE32+ x86_64 executables. 32-bit binaries (PE32) are not currently supported.
Is it safe for production environments?
winux includes a seccomp BPF filter that restricts the executable to ~50 syscalls. However, like any actively developed tool, evaluate the risks for your use case before production deployment.
Why is Linux kernel ≥ 4.17 required?
winux uses the MAP_FIXED_NOREPLACE mmap flag, introduced in Linux kernel 4.17. This ensures
safe memory placement without overwriting existing mappings.
Can I disable the seccomp filter?
Yes, use the --no-seccomp flag. This can be useful for debugging, but removes the security
layer provided by syscall filtering.