Với sự ra mắt của Wine 8, phiên bản sao chép Windows cho Linux lại tiếp tục phát triển và cho phép chạy nhiều chương trình Windows hơn. Tuy nhiên, trong hầu hết các trường hợp, vẫn cần thêm một số công việc để thiết lập các chương trình Windows.
Wine không phải là một trình giả lập như Qemu hay một môi trường ảo hóa như Virtualbox, mà là một môi trường thời gian chạy nhằm mô phỏng API Windows trên Linux. Việc ánh xạ API này chưa hoàn chỉnh, nhưng đủ rộng để nhiều chương trình Windows có thể chạy trên desktop Linux.
Wine bắt đầu như một dự án sở thích cách đây 30 năm vào thời điểm Windows 3.1 với API 16-bit. Sau khi chạy thành công chương trình “Hello World”, Wine nhanh chóng thành công trong việc chạy trò chơi Solitaire. Với Windows 95, Wine phải hỗ trợ API 32-bit mới và nhanh chóng đạt được thành công một phần ấn tượng, vì vậy Corel đã đầu tư phát triển Wine từ năm 1999 đến 2000 để sử dụng cho Wordperfect, sản phẩm rất phổ biến vào thời điểm đó.
Trong khi đó, sự phát triển tiếp theo đã phân tán thành các nhánh thương mại, điều này đã làm nhiều nhà phát triển mã nguồn mở sợ hãi và cản trở tiến trình. Wine đã được Google hồi sinh vào năm 2006, vì vào thời điểm đó, Wine phục vụ như một lớp tương thích cho phiên bản Linux của Picasa. Google đã tiết kiệm được một công việc chuyển đổi hoàn toàn Picasa sang Linux.
Ngày nay, lĩnh vực game và đặc biệt là Valve với lớp tương thích dựa trên Wine Proton là động lực chính đằng sau Wine. Dù bộ phần mềm văn phòng MS Office của Microsoft không còn là tâm điểm vì phiên bản đám mây Office 365 đã chạy trên trình duyệt — ngay cả trên Linux. Điều này không áp dụng với các trò chơi — và đó là lý do vì sao sự phát triển của Wine vẫn tiếp tục không ngừng nghỉ.
Tiến triển của Wine 8
Phiên bản hiện tại của Wine 8 đánh dấu một cột mốc trong sự phát triển và hỗ trợ thêm nhiều chương trình và trò chơi hiện đại. Điều này được thực hiện nhờ việc chuyển đổi các mô-đun Wine sang định dạng “tệp thực thi di động,” mà một số trò chơi yêu cầu. Ngoài ra, Wine giờ đây có thể chạy các chương trình 32-bit trong môi trường 64-bit mà không cần phải cài đặt tất cả các thư viện cần thiết ở dạng 32-bit trên hệ thống chủ.
Bài viết này sẽ hướng dẫn cách thiết lập một phiên bản Wine mới trên Ubuntu 22.04/23.04 và các bước đầu tiên để cấu hình môi trường này cho các chương trình Windows. Ngày nay, Wine mô phỏng tất cả các phiên bản Windows từ XP đến 11, mặc dù việc mô phỏng Windows 10/11 chưa hoàn thiện ở tất cả các chi tiết.
Appdb: Một chương trình Windows có chạy không?
Các ứng dụng đơn giản sẽ chạy ngay lập tức và không gặp vấn đề gì sau khi cài đặt với ít công việc chuẩn bị, trong khi các chương trình phức tạp thường cần một số cấu hình thủ công. Đối với những ứng dụng khó như Adobe Photoshop, phiên bản CS6 cũng chạy tốt trên Linux với Wine 8, có các lựa chọn thay thế và công cụ hỗ trợ cài đặt. Mặc dù sự tiến bộ mà các nhà phát triển Wine đạt được là rất ấn tượng, trong thực tế vẫn còn một số chương trình cần các quy tắc đặc biệt cho các thư viện sử dụng.
Liệu một chương trình Windows có chạy trên Wine hay không không cần phải xác định qua thử nghiệm. Luôn luôn nên tham khảo cơ sở dữ liệu ứng dụng có thể tìm kiếm tại http://appdb.winehq.org trước khi cài đặt và sử dụng Wine.
Cơ sở dữ liệu này cho biết mức độ hỗ trợ tốt hay xấu của các chương trình nhất định. Các ứng dụng được phân loại theo các trạng thái platinum, gold, silver, bronze, hoặc rubbish, tùy thuộc vào báo cáo của người dùng Wine, những người sẵn sàng thử nghiệm và chia sẻ kết quả. Tất cả các ứng dụng dưới trạng thái Gold thường chỉ chạy sau một vài bước điều chỉnh hoặc dưới các lựa chọn thay thế của Wine như Crossover. Sau khi nhấp vào “Hiển thị,” nhiều bài viết sẽ cung cấp hướng dẫn nhỏ với các chỉ dẫn cài đặt, đôi khi khá phức tạp. Luôn luôn quan trọng phải biết số phiên bản của Wine, vì nhiều chương trình chỉ chạy với các phiên bản mới hơn như 7 hoặc 8.
Crossover: Dành cho các trường hợp khó
Một tiện ích dựa trên Wine mà các nhà phát triển chính của Wine cũng đang làm việc là Crossover thương mại từ Codeweavers. Đây không chỉ là một nhánh của mã nguồn Wine gốc, mà là một phần mở rộng. Nó luôn gần với phiên bản Wine hiện tại, nhưng có thêm một số thư viện để cải thiện khả năng tương thích với các chương trình Windows.
Crossover chuyên về các ứng dụng văn phòng điển hình như Microsoft Office. Nó cung cấp một giao diện đồ họa để cài đặt và quản lý các chương trình Windows. Crossover không phải là mã nguồn mở, mà là một chương trình phân phối thương mại có giá bắt đầu từ 74 EUR. Phiên bản đánh giá 14 ngày cho phép thử nghiệm miễn phí (sau khi đăng ký với địa chỉ email).
Codeweavers cung cấp gói nhị phân thích hợp dưới dạng RPM và DEB cho các phân phối Linux khác nhau. Sau khi cài đặt đơn giản thông qua trình quản lý gói, một giao diện đồ họa sẽ thực hiện các bước thiết lập tiếp theo, ví dụ như cho các phông chữ Truetype cần thiết. Tìm kiếm tại www.codeweavers.com/compatibility cho thấy các chương trình nào thực sự hoạt động với Crossover. Các nhà phát triển lưu ý rằng Crossover 22.x vẫn dựa trên Wine 7.7 (Wine 8 là động lực cho Crossover 23, sẽ được phát hành vào cuối năm 2023).
Ubuntu: Cài đặt Wine mới nhất
Trong Ubuntu (và Linux Mint), Wine chỉ có sẵn ở phiên bản cũ trong các nguồn gói mặc định. Chúng tôi muốn cài đặt Wine mới nhất, trực tiếp từ các nhà phát triển. Bước đầu tiên để thực hiện điều này là thêm các nguồn gói 32-bit, vì Wine 8 vẫn yêu cầu rất nhiều thư viện để có sự tương thích tốt nhất:
sudo dpkg --add-architecture i386
Một thư mục cho các chữ ký của các gói Wine được tạo ra bằng lệnh:
sudo mkdir -p /etc/apt/keyrings
và
sudo wget -O /etc/apt/keyrings/winehq-archive.key https://dl.winehq.org/wine-builds/winehq.key
tải xuống chuỗi khóa để xác minh các gói. Việc thêm các nguồn gói vào Ubuntu được thực hiện bằng cách chỉ định tên mã của phiên bản Ubuntu, “jammy” cho Ubuntu 22.04 LTS và cũng cho Linux Mint:
sudo wget -NP /etc/apt/sources.list.d/ https://dl.winehq.org/wine-builds/ubuntu/dists/jammy/winehq-jammy.source
Ubuntu 23.04 (từ tháng 4 năm 2023) yêu cầu “lunar” thay vì “jammy.” Hai lệnh sau sẽ cài đặt:
sudo apt update
sudo apt install --install-recommends winehq-stable
sẽ cài đặt phiên bản ổn định mới nhất của Wine.
Cấu hình môi trường Wine
Sau khi cài đặt Wine, bước đầu tiên là khởi động chương trình cấu hình winecfg. Chương trình này tạo ra một môi trường cho Wine trong thư mục ẩn “.wine” trong thư mục nhà. Tại đó, nó tạo một bản sao của sổ đăng ký Windows dưới dạng các tệp văn bản cũng như các tệp ứng dụng của các chương trình sẽ được cài đặt trong thư mục con “~/.wine/drive_c”. Ngoài ra, winecfg kiểm tra môi trường thời gian chạy để đảm bảo tính đầy đủ và cung cấp, ví dụ, để cài đặt môi trường .NET Wine-Mono, điều này cần được xác nhận trong một hộp thoại.
Bằng cách này, winecfg tự động tạo cấu hình tiêu chuẩn đầu tiên và sau đó hiển thị hộp thoại cài đặt tiếp theo theo phong cách Windows. Tại đây, các tùy chọn quan trọng nhất để điều chỉnh sẵn có — ví dụ, để điều chỉnh màn hình, chọn thiết bị âm thanh cho đầu ra âm thanh, hoặc thêm các thư viện Windows gốc. Một điểm quan trọng là việc gán các ký tự ổ đĩa ảo cho các thư mục, điều này được thực hiện dưới “Drive.” Đây có thể là bước cần thiết nếu một chương trình Windows yêu cầu một đĩa cài đặt CD để cài đặt hoặc khởi động.
Winetricks: Các cài đặt quan trọng
Tuy nhiên, công cụ winecfg chỉ đại diện cho một phần nhỏ của các cài đặt và nhiều tùy chọn chỉ có thể được chỉnh sửa trực tiếp trong các tệp cấu hình của Wine. Một script hữu ích có tên “winetricks” giúp người dùng thực hiện các tác vụ và điều chỉnh thường xuyên thông qua các menu đồ họa đơn giản. Script này độc lập với phân phối, nhưng yêu cầu các gói “zenity” và “cabextract,” được cài đặt trong Ubuntu/Mint với:
sudo apt install zenity cabextract
trong Ubuntu/Mint.
Tốt nhất là cài đặt script trực tiếp từ máy chủ của các nhà phát triển để có phiên bản hiện tại. Trong shell, nhập
wget http://winetricks.org/winetricks
để tải tệp script “winetricks” vào thư mục hiện tại, sau đó bạn có thể khởi động nó bằng cách
sh winetricks
để bắt đầu.
Sau khi hỏi liệu có nên gửi các hành động cho mục đích đánh giá thống kê tới các nhà phát triển Wine, các tùy chọn quan trọng có sẵn thông qua mục Chọn prefix mặc định của Wine. Menu sau cho phép cài đặt các DLL và phông chữ cần thiết thường xuyên, như hướng dẫn cài đặt trong cơ sở dữ liệu Appdb đã chỉ ra. Tuy nhiên, để tiện lợi hơn, “winetricks” cũng có thể được khởi động với các tham số dòng lệnh.
Mẹo: Hầu hết các chương trình Windows yêu cầu các phông chữ chuẩn, có thể cài đặt dưới Install font > corefonts. Ngoài ra, các tham số Wine khác có thể được chỉnh sửa qua Change Wine settings. Khuyến khích bật fontsmooth=gray tại đây, vì điều này cải thiện đáng kể việc hiển thị phông chữ trong các chương trình Windows.
Môi trường riêng cho các chương trình
Các chương trình Windows cần nhiều thư viện và cài đặt riêng có thể gây nguy hiểm cho các ứng dụng khác đang hoạt động trong Wine. Vì vậy, Wine cung cấp khả năng tạo ra nhiều môi trường độc lập với các thư mục riêng (“prefix”). Để tạo một môi trường Wine mới, ví dụ như “.wine-test,” hãy sử dụng lệnh sau trong cửa sổ terminal:
env WINEPREFIX=~/.wine-test winecfg
Thư mục “~/.wine-test” sẽ được tự động tạo và được trang bị cấu hình tiêu chuẩn. Để đảm bảo rằng môi trường thay thế này cũng được sử dụng cho việc cấu hình tiếp theo với winecfg hoặc “winetricks,” nó phải được chỉ định khi gọi các công cụ:
env WINEPREFIX=~/.wine-test sh winetricks
Prefix cũng quan trọng khi thực thi các chương trình cài đặt hoặc ứng dụng Windows:
env WINEPREFIX=~/.wine-test wine /media/cdrom/setup.exe
Trong trường hợp các trình khởi động chương trình tự động được tạo cho một ứng dụng đã cài đặt, Wine sẽ tự động thêm prefix thích hợp dưới dạng tham số khởi động.
Một prefix cũng được sử dụng để tạo môi trường riêng cho 32-bit trên các hệ thống 64-bit. Mặc định, winecfg tạo ra một môi trường 64-bit cho Wine, trong đó một số chương trình 32-bit không chạy — ngay cả trong Wine 8 mới nhất. Để tạo một môi trường 32-bit đặc biệt trong thư mục “~/.wine32” cho phần mềm Windows cũ, hãy sử dụng lệnh sau:
WINEPREFIX=~/.wine32 WINEARCH='win32' winecfg
Winetricks cũng phải được khởi động với prefix để cài đặt phông chữ hoặc DLL ở đây hoặc thiết lập các tùy chọn:
WINEPREFIX=~/.wine32 WINEARCH='win32' winecfg
Mẹo: Để thử nghiệm, luôn khuyến khích cài đặt các chương trình trong các prefix riêng của Wine để không làm ảnh hưởng đến các ứng dụng Windows khác. Nếu một chương trình không chạy, chỉ cần xóa thư mục với prefix tương ứng khỏi thiết bị lưu trữ dữ liệu. Một thư mục cũng có thể được sao lưu toàn bộ hoặc chuyển sang máy tính Linux khác đang chạy Wine, vì prefix của Wine luôn chứa tất cả các cài đặt và tệp.
Mượn: Cài đặt DLL gốc
Vì lý do giấy phép, Wine không được phép cung cấp các thành phần Windows. Tuy nhiên, một số chương trình Windows có yêu cầu đặc biệt mà API không đáp ứng, ngay cả với Wine 8. Chúng yêu cầu các thư viện Windows gốc.
Winetricks cung cấp một loạt các thư viện thông qua submenu Install Windows DLL và trong hầu hết các trường hợp sẽ tải xuống gói cập nhật từ các máy chủ Microsoft. Nếu một chương trình yêu cầu một DLL đặc biệt, thư viện đó cũng có thể được sao chép từ một hệ thống Windows hiện có vào thư mục Wine “~/.wine/drive_c/windows/system32”. Sau đó, vào cấu hình của winecfg và chọn thư viện mong muốn dưới Libraries > New override for. Mục Set tạo một quy tắc mới, mà bạn có thể thay đổi bằng Edit. Cài đặt Native sử dụng DLL Windows gốc hiện có trong thư mục con system32 thay vì thư viện tích hợp của Wine 8. Script “winetricks” tạo ra những quy tắc này tự động khi cài đặt DLL.
Playonlinux: Hướng dẫn cài đặt
Một lựa chọn khác để thiết lập một số chương trình Windows phổ biến trong Wine là front-end Playonlinux. Nó cung cấp các công cụ cài đặt để thuyết phục ngay cả những ứng viên khó khăn với nhiều điều chỉnh. Playonlinux tự lo liệu các cài đặt Wine cần thiết và cài đặt các ứng dụng riêng biệt trong các môi trường Wine riêng của chúng (prefix). Tiếc là, sự phát triển của Playonlinux đã tạm ngừng một thời gian. Chỉ trong Ubuntu và Linux Mint nó vẫn có mặt trong các nguồn cài đặt mặc định và có thể được cài đặt thông qua trung tâm phần mềm hoặc dòng lệnh với:
sudo apt install playonlinux
Máy ảo: Windows đầy đủ
Nếu Wine hoặc Crossover không hoạt động với các chương trình Windows rất quan trọng đối với công việc của bạn, bạn luôn có thể sử dụng một máy ảo. Một hệ điều hành Windows được cài đặt ở đó chỉ có quyền truy cập vào phần cứng giả lập, nhưng sự mất mát về hiệu suất hầu như không thể nhận thấy trên các máy tính hiện đại. Giải pháp đơn giản nhất cho ảo hóa dưới Linux là Oracle Virtualbox. Để không phải luôn xử lý một cửa sổ bổ sung trong đó Windows được ảo hóa, chế độ “seamless” có thể được sử dụng trên Linux. Chế độ này hiển thị các cửa sổ chương trình riêng biệt từ VM trên desktop Linux.