Solaris và illumos: fork Unix vẫn còn tồn tại
Tìm hiểu vì sao Oracle đóng mã nguồn Solaris, còn illumos tiếp tục phát triển, và ZFS cùng DTrace vẫn chạy trên Linux, FreeBSD đến năm 2026.
Solaris và illumos là gì
Solaris và illumos là hai nhánh của cùng một cây mã nguồn Unix. Sun Microsystems phát triển Solaris và công bố phần lớn mã nguồn vào năm 2005. Oracle mua lại Sun vào năm 2010 rồi ngừng công bố mã nguồn đó, vì vậy các nhà phát triển bên ngoài Oracle tiếp tục phát triển phần mã nguồn mở dưới một tên mới: illumos. Bản thân hệ điều hành này chỉ phục vụ một thị trường ngách trong năm 2026. Tuy nhiên, lớp lưu trữ và công cụ tracing được xây dựng bên trong nó thì không như vậy. Đó là lý do lịch sử này đáng để bạn tìm hiểu.
Nếu bạn chạy ZFS trên Linux hoặc FreeBSD, bạn đang chạy mã được viết tại Sun cho Solaris và đã tồn tại lâu hơn cả công ty, dòng sản phẩm lẫn tranh chấp về giấy phép. Bài viết này kể lại quá trình đó, với các mốc thời gian đã được kiểm tra.
Nguồn gốc của Solaris: BSD, System V và SVR4
Sun Microsystems được thành lập vào ngày 24 tháng 2 năm 1982 bởi Scott McNealy, Andy Bechtolsheim, Vinod Khosla và Bill Joy. Hệ điều hành của công ty là SunOS, bắt nguồn từ BSD (Berkeley Software Distribution), dòng Unix của trường đại học mà Bill Joy đã tham gia phát triển trước khi Sun ra đời. Dòng Unix còn lại là System V của AT&T, được bán dưới dạng sản phẩm thương mại. Hai nhánh này tạo thành sự phân tách được mô tả trong cây phả hệ Unix kết thúc ở Linux, và Sun thuộc phía BSD trong suốt một thập kỷ.
Năm 1987, Sun và AT&T công bố một dự án chung nhằm hợp nhất BSD, System V và Xenix thành một bản phát hành duy nhất: UNIX System V Release 4, thường được viết là SVR4. Ngày 4 tháng 9 năm 1991, Sun thông báo SunOS 4 sẽ được thay thế bằng một hệ thống bắt nguồn từ SVR4, với tên marketing mới là Solaris 2. Solaris 2.0 được phát hành vào tháng 6 năm 1992, chỉ dành cho phần cứng SPARC. Sun đã chuyển sang phía bên kia của sự phân tách Unix, và khách hàng của họ phải port phần mềm.
Tên cũ không biến mất. Kernel vẫn giữ cách đánh số của SunOS, vì vậy Solaris 2.6 chạy SunOS 5.6, còn Oracle Solaris 11.4 vẫn tự báo cáo là SunOS 5.11. Chạy uname -a trên một máy illumos vào năm 2026, từ đầu tiên được in ra vẫn là SunOS, vì illumos kế thừa tên này cùng với mã nguồn.
Solaris 10 đã giới thiệu những gì vào năm 2005
Solaris 10 được phát hành vào ngày 31 tháng 1 năm 2005. Phiên bản này quan trọng ở đây vì mọi thành phần còn tồn tại sau khi công ty tan rã đều có trong bản phát hành đó hoặc được bổ sung trong một trong các bản cập nhật của nó.
DTrace được Bryan Cantrill, Mike Shapiro và Adam Leventhal viết tại Sun, và lần đầu có sẵn vào tháng 11 năm 2003. DTrace instrument kernel đang chạy và các user process đang chạy mà không cần biên dịch lại hoặc khởi động lại process đang được theo dõi. Probe chưa được enable không tốn chi phí nào, vì instrumentation chỉ được patch vào khi script yêu cầu. Đây là lý do administrator sẵn sàng dùng DTrace trên máy production. DTrace giành giải cao nhất trong The Wall Street Journal's 2006 Technology Innovation Awards và một giải của USENIX STUG (Software Tools User Group) vào năm 2008.
ZFS được Jeff Bonwick, Bill Moore và Matthew Ahrens thiết kế tại Sun, và được công bố vào ngày 14 tháng 9 năm 2004. ZFS hợp nhất volume manager và filesystem thành một layer. Nhờ đó, ZFS có thể checksum mọi block khi đọc và sửa block bị lỗi từ một bản sao dư thừa. Hoạt động ghi dùng cơ chế copy on write: block không bao giờ bị ghi đè tại chỗ. Vì vậy, nếu hệ thống crash giữa lúc ghi, dữ liệu cũ vẫn nguyên vẹn thay vì filesystem bị ghi dở. Snapshot gần như không tốn chi phí, vì snapshot chỉ là tập hợp các block chưa bị những lần ghi sau đó thay đổi. ZFS chưa có trong bản phát hành Solaris 10 ban đầu. ZFS được phát hành trong bản cập nhật Solaris 10 6/06 vào tháng 6 năm 2006.
Zones là mảnh ghép thứ ba. Một zone cho phép một kernel cung cấp nhiều user space được cô lập, mỗi user space có root filesystem, process table và network configuration riêng. Zones xuất hiện trong một bản beta của Solaris 10 vào tháng 2 năm 2004 và được phát hành cùng bản đầy đủ. FreeBSD đã đạt được ý tưởng tương tự sớm hơn theo một hướng khác, và so sánh giữa jail và Docker container vẫn là cách rõ ràng nhất để hiểu isolation ở kernel level thực sự là gì. Zones hiện vẫn tồn tại trong illumos và là nền tảng của ít nhất một distribution bên dưới.
Vì sao Sun công khai mã nguồn Solaris
Sun gửi CDDL (Common Development and Distribution License) cho OSI (Open Source Initiative) vào ngày 1 December 2004, và OSI phê duyệt giấy phép này vào ngày 14 January 2005. CDDL dựa trên phiên bản 1.1 của MPL (Mozilla Public License). Cơ chế copyleft của CDDL áp dụng ở cấp từng file: file mã nguồn theo CDDL phải tiếp tục dùng CDDL, nhưng binary được build từ file đó có thể kết hợp với code theo các điều khoản khác.
DTrace được công khai trước. Mã nguồn của DTrace được phát hành theo CDDL vào ngày 25 January 2005 trên website opensolaris.org mới ra mắt, trước 6 ngày so với thời điểm Solaris 10 được phát hành. Phần lớn code hệ thống Solaris được công khai tiếp theo vào ngày 14 June 2005. ZFS được tích hợp vào trunk phát triển chính của Solaris vào ngày 31 October 2005 và đến tay các developer OpenSolaris trong build 27 vào ngày 16 November 2005. OpenSolaris cũng trở thành một distribution có thể cài đặt: 2008.05 ra mắt vào ngày 5 May 2008 dưới dạng live CD, còn 2009.06 ra mắt vào ngày 1 June 2009 với hỗ trợ SPARC.
Lựa chọn licence vẫn quyết định những gì bạn có thể chạy ngày nay. Free Software Foundation xếp CDDL vào nhóm licence phần mềm tự do nhưng không tương thích với GPL (GNU General Public License). Sự không tương thích này được kế thừa từ MPL 1.1. Linux kernel dùng GPLv2. Vì vậy, ZFS on Linux được build thành kernel module bên ngoài source tree của kernel thay vì được merge vào đó, và không nằm trong mainline kernel. Quyết định phát hành theo bất kỳ open licence nào mới là yếu tố quan trọng nhất đối với phần còn lại của câu chuyện này, còn lịch sử cấp phép open source giải thích vì sao một công ty lại đưa ra quyết định đó.
Điều gì xảy ra khi Oracle mua Sun
Oracle thông báo vào ngày 20 April 2009 rằng họ sẽ mua Sun với giá US$7.4 billion, tương đương US$5.6 billion sau khi trừ tiền mặt và nợ của Sun. Thương vụ hoàn tất vào ngày 27 January 2010.
Ngày 13 August 2010, một memo nội bộ của Oracle do Mike Shapiro, Bill Nesheim và Chris Armes soạn được lưu hành trong công ty rồi bị rò rỉ. Memo nêu trực tiếp chính sách mới: "Chúng tôi sẽ không còn phân phối source code của toàn bộ hệ điều hành Solaris theo thời gian thực trong quá trình phát triển, trên cơ sở nightly." Chính sách này loại trừ các bản build cộng đồng tiếp theo: "Chúng tôi sẽ không phát hành thêm bất kỳ binary distribution nào khác, chẳng hạn như nightly build hoặc bi-weekly build của Solaris binaries, hay một distribution OpenSolaris 2010.05 hoặc mới hơn." Các bản phát hành open source thay vào đó sẽ theo sau các sản phẩm đã phát hành: "Chúng tôi sẽ phân phối các bản cập nhật cho code được cấp phép theo CDDL hoặc giấy phép open source khác sau các bản phát hành đầy đủ của hệ điều hành Solaris enterprise."
Ngày 23 August 2010, OpenSolaris Governing Board thông qua một resolution ghi nhận rằng Oracle chưa bổ nhiệm liaison cho board và đã thông báo chấm dứt quan hệ đối tác phát triển vào ngày 13 August. Board bỏ phiếu trả quyền kiểm soát community về cho Oracle theo charter do Sun soạn ban đầu; charter này đồng thời giải thể board.
Oracle Solaris 11 được phát hành vào ngày 9 November 2011. Ngày 2 September 2017, Oracle cho thôi việc phần lớn các team Solaris. Oracle Solaris 11.4 được phát hành vào ngày 28 August 2018 và vẫn là release hiện tại. Theo chính sách lifetime support của Oracle, Premier Support cho 11.4 kéo dài đến November 2031 và Extended Support đến November 2037. Vì vậy, Solaris là một sản phẩm thương mại vẫn được hỗ trợ, có end date được công bố, trên một release giữ vai trò hiện tại từ năm 2018.
illumos bắt đầu như thế nào và vì sao được gọi là fork
Ngày 3 tháng 8 năm 2010, mười ngày trước khi bản ghi nhớ bị rò rỉ, Garrett D'Amore công bố illumos. Tên này ghép illum, tiếng Latin nghĩa là ánh sáng, với OS, viết tắt của operating system. Dự án viết tên này thành một từ và chỉ viết hoa chữ cái đầu tiên.
Mục tiêu là OS/Net, thường được viết là ON: phần consolidation chứa kernel và các tiện ích hệ thống cốt lõi. OpenSolaris chưa bao giờ hoàn toàn mở. Một số thành phần được phát hành dưới dạng binary đóng mà không ai bên ngoài Sun có thể build lại, gồm mã quốc tế hóa bên trong thư viện C (libc_i18n), NFS lock manager, cryptographic framework, các driver như mpt driver cho LSI host bus adapter và một phần mã dành cho nền tảng SPARC. Thay thế các thành phần đó là công việc đầu tiên của dự án, vì một operating system không thể build từ source thì không thể được maintain.
D'Amore thận trọng khi dùng từ fork. Ông viết: "We are not a fork today, because of the way we track OS/Net", mô tả một downstream repository sẽ theo dõi tree của Oracle và có thể đưa các thay đổi trở lại upstream. Mười ngày sau, upstream ngừng publish. illumos mặc nhiên trở thành một fork vì không còn gì để theo dõi. Tính đến tháng 8 năm 2026, core tree, illumos-gate, đã vượt 23,000 commit và vẫn tiếp tục nhận thêm commit.
Những bản phân phối nào được xây dựng từ illumos
illumos không phải là thứ bạn cài đặt trực tiếp. Đây là cây mã nguồn lõi, còn các bản phân phối xây dựng một hệ thống có thể sử dụng lên trên đó. Dưới đây là những bản vẫn đang được phát hành.
- OpenIndiana được chính thức ra mắt vào ngày 14 tháng 9 năm 2010 tại JISC Centre ở London. Đây là hậu duệ gần nhất của bản phân phối OpenSolaris dành cho desktop và server trước đây. Đây là bản rolling release có tên Hipster, và snapshot 2026.04 được phát hành vào ngày 5 tháng 5 năm 2026.
- OmniOS là một bản phân phối dành cho server. Hiện cộng đồng duy trì bản này dưới tên OmniOS CE, sau khi vendor ban đầu ngừng phát triển.
- SmartOS là một nền tảng hypervisor được xây dựng trên zones. Joyent tạo ra nền tảng này và thông báo vào tháng 4 năm 2022 rằng SmartOS và Triton sẽ được chuyển sang MNX Solutions, có hiệu lực từ ngày 1 tháng 5 năm 2022.
- NexentaStor dùng cùng base cho các storage appliance. Đây là dòng sản phẩm thương mại mà illumos phát triển tách ra từ đó.
- Tribblix là một bản phân phối nhỏ do Peter Tribble duy trì, được mô tả bên dưới.
- DilOS đưa bộ công cụ quản lý package của Debian lên trên kernel illumos.
Giao diện cài đặt một hệ thống illumos hiện nay
Tribblix là ví dụ phù hợp vì hệ thống này nhỏ, có tài liệu công khai và vẫn được phát hành. Milestone 41 cho x86 được phát hành vào ngày 5 August 2026, còn nhánh SPARC đạt Milestone 34 vào ngày 21 April 2026. Dự án tự mô tả là mang phong cách retro với các thành phần hiện đại. Dự án vẫn giữ định dạng package SVR4 mà Solaris đã sử dụng, thay vì chuyển sang một hệ thống package mới hơn.
Quá trình cài đặt chạy từ một live image. Bạn boot từ ISO, đăng nhập bằng user jack với password jack, chuyển thành root rồi chạy installer trên một disk device. Đây là command trong tài liệu cài đặt chính thức của dự án:
./live_install.sh -G c1t0d0Flag -G ghi layout phân vùng EFI (extensible firmware interface), còn -b chọn layout MBR (master boot record) kiểu cũ. Tên disk tuân theo quy ước cXtYdZ của Solaris thay vì /dev/sda. Đây sẽ là điểm đầu tiên trông không quen thuộc nếu bạn xuất phát từ Linux. Các software set được gọi là overlay và có thể chỉ định trên cùng một dòng:
./live_install.sh -G c1t0d0 develop desktopSau khi cài đặt, công cụ package là zap. Công cụ này hoạt động trên các overlay và tự xử lý dependency cho bạn:
zap refresh
zap install-overlay develop
zap update-overlay -aĐó là các command mà Tribblix công bố. Chúng chạy trên hardware hoặc hypervisor do bạn kiểm soát. Bạn sẽ không tìm thấy chúng phía sau một image one-click trong control panel của VPS. Khoảng cách đó phản ánh đúng tình trạng triển khai illumos trong năm 2026.
Vì sao ZFS và DTrace tồn tại lâu hơn Solaris
ZFS rời Solaris gần như ngay sau khi mã nguồn được công bố. Pawel Jakub Dawidek đã port nó sang FreeBSD, nơi ZFS trở thành một phần của hệ thống từ FreeBSD 7.0 vào năm 2008. Công việc phát triển ZFS native cho Linux bắt đầu vào năm 2008 và tạo ra bản phát hành ổn định đầu tiên vào năm 2013. Từ năm 2010 đến năm 2013, illumos giữ bản sao tham chiếu của mã nguồn ZFS, vì cây mã nguồn của Oracle đã bị đóng và mọi bản port khác cần một nơi để lấy mã nguồn. Đây là giá trị cụ thể của fork: nếu không có nó, các bản port sẽ không có tổ tiên chung để merge.
Dự án OpenZFS được công bố vào ngày 17 tháng 9 năm 2013 để điều phối các bản port đó. Matt Ahrens, một trong những tác giả ban đầu của ZFS, là một trong các thành viên sáng lập. OpenZFS 2.0 được phát hành vào ngày 30 tháng 11 năm 2020. Ghi chú phát hành nêu rõ kết quả: "Dự án ZFS trên Linux đã được đổi tên thành OpenZFS! Linux và FreeBSD hiện được hỗ trợ từ cùng một repository, nên tất cả tính năng OpenZFS đều có trên cả hai nền tảng." FreeBSD 13.0 đã bỏ bản sao dẫn xuất từ illumos của mình và chuyển sang cây mã nguồn dùng chung đó.
Hai dòng ZFS đã khác nhau về định dạng trên đĩa. Dòng mã nguồn mở dừng ở pool version 28, là phiên bản cuối cùng Sun công bố, rồi chuyển sang các feature flag có tên dưới placeholder version 5000. Vì vậy, một pool quảng bá các feature mà nó sử dụng thay vì chỉ có một số phiên bản duy nhất. Oracle tiếp tục tăng số phiên bản riêng trong mã nguồn đóng. Một pool được tạo ở phiên bản cao hơn 28 trên phía này không thể được import ở phía kia. Nếu bạn đang chọn nơi chạy ZFS, OpenZFS hoạt động trên FreeBSD khác Linux như thế nào trình bày những khác biệt thực tế giữa hai host.
DTrace đi được quãng đường ngắn hơn. Đến phiên bản 7.1 vào tháng 1 năm 2009, DTrace đã là thành phần tiêu chuẩn của FreeBSD. Apple cũng thêm DTrace vào Mac OS X 10.5 Leopard. Oracle phát hành mã kernel của DTrace theo GPLv2 vào tháng 8 năm 2017. Thay đổi này được chú ý rộng rãi vào tháng 2 năm 2018 và đã xóa rào cản license đối với Linux. DTrace chưa bao giờ được merge vào kernel mainline. Trên Linux, tracing trên thực tế chạy trên eBPF, và bpftrace cung cấp cho nó một ngôn ngữ scripting được thiết kế gần với D của DTrace.
Điểm chính là mô hình này có tính tổng quát, không chỉ áp dụng cho Solaris. Sun đã công bố ZFS và DTrace theo một license cho phép người khác giữ một bản sao và tiếp tục phát triển. Khi công ty tài trợ cho công việc đó dừng hoạt động, công việc vẫn tiếp tục vì mã nguồn đã nằm trong các cây mã nguồn và trong tay những người khác. Những phần của Solaris chưa bao giờ được mở, bao gồm các binary đóng mà illumos phải viết lại, đã biến mất cùng công ty. Đó là điều open source thay đổi, và cũng là cơ chế đứng sau cách các bản phân phối Linux kế thừa lẫn nhau.
Có nên chạy illumos trên VPS không?
Với hầu hết mọi người, câu trả lời là không. Phần trên cũng không phải là khuyến nghị bạn thử. illumos chỉ hỗ trợ một phạm vi phần cứng hẹp, vì bộ driver của nó gồm những gì Sun từng hỗ trợ và những driver do một cộng đồng nhỏ phát triển từ đó đến nay. Nhà cung cấp VPS thường cung cấp image Linux và BSD. Vì vậy, cài illumos thường có nghĩa là tải ISO của bạn lên một nhà cung cấp cho phép dùng image tùy chỉnh, rồi kiểm tra xem các thiết bị disk ảo và network có được nhận diện hay không. Phần mềm bên thứ ba đến từ bộ package riêng của distribution hoặc từ compiler của bạn.
Có những lý do thực tế để chạy illumos: bạn cần duy trì một workload Solaris, đã vận hành sẵn một hệ thống zones, hoặc muốn đọc source code. Các distribution được liệt kê ở trên vẫn được duy trì và mailing list của chúng có thể giải đáp câu hỏi. Đây là chuyện khác với việc chọn illumos làm mặc định cho một server mới.
Nếu bạn tìm đến đây vì ZFS, bạn không cần illumos để sử dụng ZFS. Hãy chạy OpenZFS trên Linux hoặc FreeBSD, nơi OpenZFS đã được đóng gói, có tài liệu và được triển khai rộng rãi. Nếu bạn đang cân nhắc phía BSD trong cùng họ hệ điều hành này cho một server, bài so sánh thực tế giữa Linux và FreeBSD trên vai trò nền tảng server trình bày những thay đổi trong vận hành hằng ngày. illumos là nguồn gốc của các công cụ này. Biết chúng xuất phát từ đâu giúp giải thích nhiều hành vi của chúng, bắt đầu từ lý do zpool và zfs có cảm giác hoàn toàn khác với phần còn lại của storage stack trên Linux.
FAQ
illumos có phải là OpenSolaris không?
Không. OpenSolaris là dự án và bản phân phối của Sun, sau đó thuộc Oracle, và Oracle đã kết thúc dự án này vào năm 2010. illumos là một dự án riêng, được công bố vào ngày 3 August 2010, xây dựng từ mã nguồn core cuối cùng được OpenSolaris công bố, gọi là OS/Net consolidation. Nhiệm vụ đầu tiên của illumos là thay thế các thành phần binary đóng mà OpenSolaris đã phát hành, bao gồm libc_i18n, NFS lock manager, cryptographic framework và một số driver. Sau năm 2010, không có mã illumos nào đến từ Oracle vì Oracle đã ngừng công bố mã nguồn.
Vì sao Linux không thể tích hợp ZFS vào kernel?
Các license không tương thích. ZFS dùng CDDL. Free Software Foundation phân loại CDDL là một free software license không tương thích với GPL; CDDL kế thừa sự không tương thích này từ MPL 1.1. Linux kernel dùng GPLv2. Vì vậy, OpenZFS trên Linux được phát hành dưới dạng kernel module ngoài tree, thường được DKMS build cho từng kernel bạn cài đặt, hoặc dưới dạng package module đã build sẵn. Nó hoạt động tốt, nhưng module phải được build lại cho mỗi kernel mới. Vì thế, module có thể chậm hơn một bản kernel mới từ vài ngày đến vài tuần.
Oracle Solaris còn được hỗ trợ không?
Có. Oracle Solaris 11.4 được phát hành vào ngày 28 August 2018 và là bản phát hành hiện tại. Premier Support kéo dài đến November 2031 và Extended Support kéo dài đến November 2037 theo chính sách hỗ trợ trọn đời của Oracle. Oracle đã cho thôi việc phần lớn các team Solaris vào ngày 2 September 2017. Kể từ đó, 11.4 nhận các bản cập nhật từ support repository thay vì có phiên bản major mới. Toàn bộ mã nguồn không được công bố như cách OpenSolaris từng công bố.
Tôi có thể cài illumos trên VPS không?
Đôi khi có, nhưng hiếm khi thông qua danh sách image của nhà cung cấp. Thông thường, bạn cần một nhà cung cấp cho phép gắn custom ISO và sử dụng console. Sau đó, hãy kiểm tra xem các driver virtual disk và network trong illumos tree có nhận diện được các thiết bị của hypervisor hay không. OpenIndiana và Tribblix là các lựa chọn khởi đầu phổ biến cho bản cài đặt general purpose. SmartOS được thiết kế làm hypervisor host thay vì guest. Hãy thử nghiệm trên local virtual machine trước khi trả tiền cho dịch vụ.
Nếu chỉ dùng Linux, tôi có nên học DTrace không?
Mô hình tư duy có thể áp dụng được, dù phần lớn công cụ thì không. Oracle đã phát hành mã nguồn kernel của DTrace theo GPLv2 vào August 2017 và duy trì một port cho Oracle Linux. Tuy nhiên, mã này chưa bao giờ được merge vào mainline kernel. Trên Linux, tracing trên thực tế sử dụng eBPF. Ngôn ngữ bpftrace được thiết kế để trông giống D của DTrace. Vì vậy, probes, predicates và aggregations có cùng ý nghĩa trong cả hai. Học cách tư duy của DTrace sẽ giúp bạn đọc các script bpftrace ngay từ lần đầu.