Cygwin

của Cygwin.]]
Cygwin là môi trường nix trong Windows bằng cách tạo một lớp tương thích. Thông qua đó người dùng Windows có thể chạy các ứng dụng mà vốn vẫn phổ biến trên Linux, Unix sau khi chương trình đó được chuyển qua Cygwin.

Hiện nay Cygwin chạy trên các bản chính thức của Windows (cả 32 bit và 64 bit) kể từ Windows Vista.

Cygwin bao gồm hai phần:
Một file DLL (cygwin1.dll) đóng vai trò của Lớp tương thích theo hình thức API, cung cấp một nền tảng các tính năng thiết yếu theo chuẩn POSIX.
Rất nhiều công cụ, chương trình, môi trường phát triển phần mềm,... của GNU và cộng đồng mã nguồn mở vốn phổ biến trong Linux được chuyển sang để chạy trên nền tảng nói trên.

Nghĩa là, Cygwin không phải một môi trường giả lập hoặc ảo hoá: Không thể dùng Cygwin để chạy các chương trình của nix nguyên bản; các chương trình đó phải được chuyển qua và biên dịch lại trên Cygwin. Cygwin cũng không phải là sự mở rộng Windows để biến Windows thành một thành viên của nix: Cách quản lý tiến trình, bộ nhớ, thiết bị,... của Windows là giữ nguyên, và Cygwin chỉ là triển khai thêm một lớp tương thích trên đó, để nhờ vậy mà có thể chuyển các chương trình của nix qua chạy được trên Windows.ws..
Cách quản lý tiến trình và quản lý đĩa của Windows là khác với hệ nix. Người sử dụng sẽ cảm nhận rằng Cygwin là cho phép chạy các chương trình của nix trên Windows với phong cách quản lý của Windows, chứ không phải biến đổi Windows thành nix.

Hiện nay, Cygwin là một trong những giải pháp phổ biến nhất để đưa các chương trình trên nix sang chạy trên Windows. Một số chương trình là chuyển qua và được cung cấp như là một chương trình chạy trên Cygwin. Một số là dùng môi trường Cygwin để biên dịch, sau đó ghép thẳng phần lõi của Cygwin vào trong chương trình khi đóng gói, nghĩa là người sử dụng không cần cài riêng Cygwin.

Chương trình mà Cygwin cung cấp
Bản thân Cygwin cung cấp các chương trình phổ biến mang tính nền tảng mà vẫn thấy trên Linux hay Unix khác:
Hầu hết các công cụ của GNU, và các công cụ phổ biến khác như: sed, awk, grep, wget, bc,...
Các chương trình điển hình: perl, python, vim,...
Các chương trình và thư viện để phát triển phần mềm: make, gcc,...
Cygwin/X: Một triển khai của X window.
Giao diện đồ họa mà chương trình có thể lựa chọn là X server hoặc là bản thân nền Windows. Đương nhiên, do đặc điểm là chương trình ứng dụng nào vốn đã được viết để chạy ngay trên Windows rồi (ví dụ Firefox, Gimp, Pidgin) thì nói chung không có nhu cầu thông qua Cygwin để chuyển sang Windows nữa. Do đó hầu như tất cả chương trình có giao diện đồ hoạ mà Cygwin cung cấp là theo giao diện X. Tuy nhiên vẫn có ngoại lệ. Điển hình nhất là Emacs. Mặc dù Emacs có phiên bản chạy trực tiếp trên Windows, nhưng người dùng Emacs theo thói quen vẫn thích chạy Emacs trong môi trường có đủ các thứ của nix (như sed, grep, w3m,...), do đó bản Emacs trên Windows/Cygwin cũng rất được hoan nghênh. Cygwin cung cấp Emacs cả bản trên X và trên Windows.
Một số chương trình sử dụng Cigwin để tạo phiên bản chạy trên Windows, như LibreOffice, OpenOffice, Oracle Java; thậm chí một số web server như lighttpd, thậm chí cả Hiawatha.
mintty - chương trình terminal của Cygwin dùng giao diện Windows. Người dùng có thể dùng mintty thay cho cmd.exe.

Cygwin/X
hoạt động trên Windows XP. Các chương trình ứng dụng của X (như xeyes, xclock, xterm), với giao diện tích hợp vào trong giao diện của Windows, chúng hiển thị cùng với các ứng dụng riêng của Windows (Lịch chỉ ngày tháng, Máy tính) trên một màn hình]]Cygwin/X là một triển khai của X window bằng cách chuyển Xorg sang chạy trên nền Cygwin. Nghĩa là Cygwin/X có thể đóng vai như một máy chủ X (X server) cho phép các chương trình dùng X (kể cả các chương trình chạy từ xa, chẳng hạn qua ssh) là có thể dùng tích hợp giao diện trong Windows.

Người dùng không bắt buộc phải dùng Cygwin/X trên nền Cygwin; nghĩa là có thể dùng X server khác (như Xming hay MobaXterm) thay cho vị trí của Cygwin/X.

Cygwinports
Cygwinports là một nỗ lực của cộng đồng chuyển rất nhiều các chương trình khác sang Windows:

Các chương trình tiện ích: php, mở rộng python, v.v.
Rất nhiều chương trình ứng dụng đồ hoạ
Các môi trường làm việc như GNOME, KDE, Xfce, LXDE

Quản lý tiến trình và quản lý đĩa
Cygwin về cơ bản không quản lý tiến trình và quản lý đĩa, đó là việc của hệ điều hành Windows. Cygwin cung cấp một số giao diện nhất định để đảm bảo tính tương thích và môi trường làm việc.

Lệnh "ps -e" liệt kê các tất cả các tiến trình "của Cygwin". Lệnh "ps -W" liệt kê thêm cả các tiến trình của Windows. Lệnh "kill" cũng thể dùng để tiêu diệt (gửi tín hiệu (signal) tới tiến trình). Các thư mục /dev và /proc cũng được triển khai với đầy đủ tính năng. Tuy nhiên, đối với người sử dụng tương tác trên màn hình, tốt nhất vẫn là dùng các tiện ích của Windows để quản lý tiến trình.

Các ổ đĩa của Windows được tự động ánh xạ sang cách đặt tên theo chuẩn POSIX: C: > /cygdrive/c, D: > /cygdrive/d, v.v. Cũng có thể truy cập đến các máy Windows khác với ánh xạ từ tên kiểu Windows sang tên kiểu POSIX ví như: \\server\sharefolder > //server/sharefolder. Chương trình mount mà Cygwin cung cấp có thể dùng để ánh xạ một thư mục của Windows sang hệ thống cây thư mục POSIX.

Cygwin cũng hiểu được cơ chế link của NTFS của Windows, kể cả theo cơ thế link shortcut hay junction. Tuy nhiên khi dùng lệnh "ln -s" của Cygwin, thì sẽ tạo ra 1 file riêng kiểu Cygwin để đảm bảo tương thích hơn với POSIX. Trước đây lệnh "ln -s" Cygwin vẫn dùng cách link của NTFS để giả lập link theo chuẩn POSIX, nhưng vì hai bên không hoàn toàn tương thích, do đó về sau đã triển khai cách riêng. Với nhu cầu thông thường, người sử dụng nên dùng cách link của Windows (bằng lệnh "mklink" của Windows, hoặc bằng Exlorer của Windows), tuy nhiên cách làm này có thể mất tính tương thích với POSIX. Do đó, nếu cần tính tương thích cao hơn thì vẫn là nên dùng lệnh "ln -s" của Cygwin.

Quản lý người dùng (user) và nhóm (group)
Có thể dùng cách thức kinh điển của nix ở đây cho các "người dùng" và "group" riêng của Cygwin. Có một ánh xạ tự động mã số người dùng (user ID) và mã số nhóm (group ID) sang mã số tương ứng của Windows để đảm bảo không xảy ra xung đột.

Xem thêm
Lớp tương thích
GnuWin32
MSYS
Cooperative Linux
Cygwin/X
Cygwinports

Tham khảo

Liên kết ngoài ==
Trang chủ của Cygwin
Trang chủ của Cygwin/X
Trang chủ của Cygwinports