Raven là một lớp tương thích Windows viết bằng C++, chạy trực tiếp trên CPU của máy Linux. Bạn cài ứng dụng Windows bằng đúng installer của nó, cái mà bạn vẫn dùng trên PC, rồi chương trình khởi động. Không máy ảo, không winetricks, không chỉnh DLL override.
Cách nó làm: code của chương trình chạy native, nằm trong một sandbox không chạm được vào Linux. Mọi lời gọi hệ thống của chương trình đều do Raven trả lời, và Raven đóng vai kernel Windows cùng các service của nó: process, thread, file, registry, cửa sổ, input. Phần đồ họa đi qua Wayland và Vulkan, còn Direct3D thì dựa vào DXVK và vkd3d-proton.
Nghe thì giống Wine ở tầng ý tưởng, nhưng điểm nhấn nằm ở chỗ Raven tự nhận mình là kernel chứ không dịch API. Đây là một dự án non trẻ, tạo ngày 2026-10-24, và đã có 494 sao tính đến lúc mình xem. Với một repo mới toanh như vậy, con số đó nói lên là dân Linux đang rất để ý.
Vì sao nó đang được chú ý
Nhu cầu thì rõ rồi: chạy phần mềm Windows trên Linux từ lâu vẫn là bài toán khó chịu. Wine mạnh nhưng đôi khi bạn phải vật lộn với winetricks, cài font, sửa registry, cài .NET bằng tay. Còn Raven quảng cáo đúng cái mà người dùng thường muốn: cài bằng installer gốc, chạy được, không cấu hình lằng nhằng.
Cái khác biệt kỹ thuật đáng để ý là cách nó xử lý redistributable. Theo README, thư viện hệ thống của Raven vẫn nắm quyền kể cả khi installer ghi đè kernel32 hay user32, trong khi các redistributable mà installer mang theo thì được nạp đúng như bản gốc. Nghe có vẻ nhỏ, nhưng đây chính là chỗ nhiều lớp tương thích khác hay vấp.
Một chi tiết nữa: Raven build các component common controls, shell dialog và installer service từ nguồn ReactOS được pin phiên bản, cho cả 64-bit lẫn 32-bit. Điều này giải thích vì sao bản build tối giản chỉ chạy được chương trình console và cửa sổ đơn giản. Muốn chạy installer hay ứng dụng desktop phổ thông thì phải provision thêm.
Cài đặt và chạy thử
Hiện tại Raven chỉ build từ source. Yêu cầu: Linux x86_64, CMake 3.20 trở lên, compiler C++20, Python 3.11 trở lên, và MinGW-w64 cho x86_64 lẫn i686 để build chương trình test Windows.
git clone https://github.com/mirkobrombin/raven.git
cd raven
cmake -S . -B build -DCMAKE_BUILD_TYPE=RelWithDebInfo
cmake --build build -j2
Build xong thì chạy một installer, hoặc bất kỳ chương trình nào:
export RAVEN_PREFIX="$HOME/.local/share/raven/my-app"
build/native/raven --run-process --execution=native --timeout-ms=600000 --desktop=wayland setup.exe
Bản build tối giản này chỉ chạy được chương trình console và cửa sổ đơn giản. Để chạy installer và phần lớn ứng dụng desktop, bạn cần provision thêm các component:
python3 scripts/provision-rtl.py --output components/rtl
python3 scripts/provision-controls.py --output components/controls
python3 scripts/provision-controls.py --arch x86 --output components/controls32
python3 scripts/provision-installer.py --output components/installer
python3 scripts/provision-installer.py --arch x86 --output components/installer32
python3 scripts/provision-graphics.py --destination components/graphics
cmake -S . -B build -DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DRAVEN_RTL_COMPONENT_PATH=$PWD/components/rtl/raven-rtl.dll \
-DRAVEN_CONTROLS_COMPONENT_DIR=$PWD/components/controls -DRAVEN_CONTROLS32_COMPONENT_DIR=$PWD/components/controls32 \
-DRAVEN_INSTALLER_COMPONENT_DIR=$PWD/components/installer -DRAVEN_INSTALLER32_COMPONENT_DIR=$PWD/components/installer32 \
-DRAVEN_DXVK_PE64_DIR=$PWD/components/graphics/dxvk/pe64 -DRAVEN_DXVK_PE32_DIR=$PWD/components/graphics/dxvk/pe32 \
-DRAVEN_VKD3D_PE64_DIR=$PWD/components/graphics/vkd3d-proton/pe64
cmake --build build -j2
DXVK và vkd3d-proton chỉ cần khi chạy chương trình dùng Direct3D hoặc game. Trên phiên X11 thì thay --desktop=wayland bằng --desktop=x11, nhưng X11 desktop đang ở mức thử nghiệm.
RAVEN_PREFIX chính là bản cài Windows mà chương trình nhìn thấy, có ổ C: và registry riêng. Mỗi ứng dụng nên có một prefix riêng. Raven chụp snapshot prefix trước mỗi lần chạy installer, và build/native/raven --restore-prefix đưa nó về trạng thái cũ. Tính năng này khá thực dụng, nhất là khi bạn thử cài app hỏng rồi muốn làm lại từ đầu.
Thực tế nó chạy được gì
README có bảng trạng thái khá chi tiết. 32-bit và 64-bit chạy song song trong cùng một prefix. Installer hỗ trợ NSIS, Inno Setup và MSI, có custom action, rollback và elevation. Visual C++ 2005 đến 2022 chạy được cả x86 lẫn x64. .NET Framework 4.8 cài từ bộ offline installer của Microsoft, chạy được console, WinForms và WPF. .NET Framework 3.5 thì bật từ package như Windows vẫn làm.
Về đồ họa: Direct3D 8 và 9 qua DXVK, kể cả chương trình 32-bit. Direct3D 11 qua DXVK với đủ shader stage, compute, MSAA, deferred context. Direct3D 12 qua vkd3d-proton, có cả ray tracing. DirectX June 2010, XNA 4.0 và OpenAL cài từ redistributable chính thức.
Danh sách ứng dụng đã test cũng đáng xem. Notepad++ 8.7.1 đạt 100%: cài, khởi động, mở cửa sổ chính, và workflow tự động gồm lưu file, đóng mở lại, append, dùng clipboard, đổi theme. 7-Zip 24.09 cả bản EXE lẫn MSI, Audacity 3.6.4, ClassiCube 1.3.8 và Minesweeper đều dừng ở 75% vì chưa tự động hóa workflow. KeePass 2.57 được 50% do cần .NET Framework 4.8 mà prefix mới chưa có. VLC 3.0.21 chỉ 25%, cài được nhưng không khởi động.
Nói thẳng: con số này cho thấy Raven đang ở giai đoạn thử nghiệm nghiêm túc, chưa phải thứ bạn cài lên máy production để chạy phần mềm kế toán. 494 sao và ngày tạo cách đây vài ngày cũng xác nhận điều đó.
Ai nên thử
Nếu bạn là dev Linux cần chạy vài app Windows lặt vặt, hoặc đang tò mò về cách một lớp tương thích được viết từ đầu, Raven là repo đáng clone. Nó cũng hữu ích cho ai muốn đóng gói ứng dụng Windows vào môi trường sandbox biệt lập với hệ thống, vì mỗi prefix là một “Windows” riêng có snapshot và restore.
Người dùng phổ thông thì chưa nên. Bạn phải build từ source, phải chạy script provision, phải hiểu prefix là gì. Khoảng cách từ “clone repo” đến “double-click file exe” vẫn còn vài bước.
So với Wine thì sao
Wine đã có hơn ba thập kỷ phát triển, kho ứng dụng chạy được lớn hơn rất nhiều, và cộng đồng xử lý lỗi đông. Raven mới ở ngày thứ ba tính theo ngày tạo repo. Benchmark trong README có nhắc so sánh với Wine 11 trên cùng máy, nhưng phần đó bị cắt trong dữ liệu mình có nên không dám khẳng định con số cụ thể. Cái mình thấy rõ là triết lý khác nhau: Wine dịch API, Raven giả làm kernel và sandbox chương trình lại. Cái sau có tiềm năng về cách ly bảo mật, nhưng cũng đặt ra nhiều việc phải làm hơn.
Ưu và nhược
Điểm cộng: kiến trúc sandbox rõ ràng, hỗ trợ installer đa dạng, có snapshot và restore prefix, xử lý redistributable khéo, và tài liệu trên README khá trung thực khi tự ghi rõ app nào hỏng ở đâu.
Điểm trừ: license không được ghi rõ trong dữ liệu repo, đây là điều bạn nên kiểm tra trước khi dùng cho dự án thương mại. Dự án còn rất non, API và cách build có thể thay đổi. Tài liệu chủ yếu nằm ở README và website, chưa có hướng dẫn xử lý lỗi chi tiết. Phải build từ source, chưa có package. Và test có phụ thuộc vào phần mềm Raven không được phép phân phối, nên một số test sẽ bị skip nếu bạn không tự cung cấp file.
Mình sẽ theo dõi repo này thêm vài tháng để xem nó có duy trì được nhịp commit không. Với 494 sao trong vài ngày đầu, ít nhất nó đã chứng minh được một điều: cài app Windows bằng installer gốc mà không cần máy ảo vẫn là giấc mơ nhiều người Linux muốn thành thật. Repo ở đây: mirkobrombin/raven.
