- oasis là một hệ thống Linux nhỏ, liên kết tĩnh toàn bộ phần mềm của hệ thống nền tảng, và có định hướng gần với BSD hơn so với các bản phân phối Linux quen thuộc
- Mọi gói đều được build bằng samurai và manifest được tạo bằng script Lua, nên chi phí đóng gói ban đầu cao nhưng đổi lại có build dễ dự đoán, tái lập được và build tăng dần vượt qua ranh giới gói
- Hệ thống dùng BearSSL làm thư viện TLS và mật mã, đồng thời sử dụng BearSSL trên toàn hệ thống thông qua hỗ trợ BearSSL native của libcurl và libtls-bearssl
- oasis không có trình quản lý gói; thay vào đó, bạn cấu hình bằng đặc tả xem sẽ đưa những tệp nào của gói nào vào hệ thống, rồi hệ thống build ghi cây filesystem kết quả vào một kho git để có thể hợp nhất vào
/ hoặc lấy sang máy khác
- Một mục tiêu chính là giữ
/etc đủ đơn giản để có thể hiểu toàn bộ, và build bằng trình biên dịch cproc nhỏ hơn nhiều và nghiêm ngặt với chuẩn ISO C hơn gcc hay clang
Tổng quan về oasis
- oasis là một hệ thống Linux nhỏ, khá khác với các hệ điều hành dựa trên Linux quen thuộc khác và đi theo hướng gần BSD hơn
- Toàn bộ phần mềm của hệ thống nền tảng đều được liên kết tĩnh, bao gồm cả display server velox và trình duyệt web netsurf
- Cách này dùng cơ chế đơn giản hơn so với liên kết động, loại bỏ các vấn đề nâng cấp thư viện và tạo ra các binary hoàn toàn tự chứa có thể dễ dàng sao chép sang hệ thống khác
Build và bootstrap
- Mọi gói đều được build bằng samurai, và manifest build được tạo bằng script Lua
- Cách làm này khiến chi phí đóng gói ban đầu khá lớn, nhưng chi phí bảo trì thấp, đồng thời mang lại thời gian build gần như tối ưu, build dễ dự đoán và tái lập được, giảm phụ thuộc tại thời điểm build, và hỗ trợ build tăng dần vượt qua ranh giới gói
- Để bootstrap chỉ cần một hệ thống POSIX bất kỳ có git, lua, curl, tiện ích sha256, các tiện ích nén tiêu chuẩn, và trình biên dịch chéo
x86_64-linux-musl
- Nhờ đó việc cross-compile từ các hệ thống không phải Linux như macOS hay OpenBSD cũng trở nên đơn giản
TLS, cấu hình gói và mở rộng hệ thống
- BearSSL được dùng làm thư viện TLS và mật mã của hệ thống
- BearSSL rất nhỏ gọn và được viết tốt, nhưng chưa được chấp nhận rộng rãi
- Thông qua hỗ trợ BearSSL native của libcurl và libtls-bearssl, một triển khai thay thế libtls dựa trên BearSSL, oasis dùng BearSSL trên toàn hệ thống
- Chỉ một số gói tùy chọn vẫn còn cần LibreSSL
- oasis không có trình quản lý gói
- Thay vào đó, bạn cấu hình bằng đặc tả xem sẽ đưa những tệp nào của gói nào vào hệ thống, rồi hệ thống build ghi cây filesystem kết quả vào một kho git
- Kết quả này có thể được hợp nhất vào
/ hoặc lấy sang máy khác
- Dù hướng tới việc cung cấp một hệ thống hoàn chỉnh, dự án chọn tích hợp với pkgsrc và nix thay vì tạo mới và duy trì một kho hàng nghìn gói, vì có nhiều phần mềm tự do không thật sự phù hợp với mục tiêu của dự án
- Nhờ vậy, hệ thống nền tảng vẫn nhỏ gọn và tập trung, đồng thời vẫn có thể mở rộng bằng phần mềm cần thiết
Cấu hình và định hướng triển khai C
- Một trong các nguyên tắc của oasis là giữ thư mục
/etc đủ đơn giản để quản trị viên hệ thống có thể hiểu toàn bộ và tùy biến phù hợp
- Trong cấu hình mặc định, tệp phức tạp nhất là script khởi tạo hệ thống
/etc/rc.init, nhưng cũng chỉ dài 16 dòng
- Một mục tiêu chính của oasis là build được bằng trình biên dịch C cproc, vốn nghiêm ngặt với chuẩn ISO C hơn nhiều so với gcc hay clang và có kích thước nhỏ hơn vài bậc độ lớn
- Việc này vẫn đang được thực hiện, nhưng toàn bộ các gói cốt lõi và phần lớn các gói khác đã build thành công bằng cproc
Nguyên tắc
- Độ phức tạp của phần mềm phải được đo cùng với toàn bộ phụ thuộc bắc cầu
- Tệp thực thi phải được liên kết tĩnh
- Các thành phần phần mềm phải cho phép tùy biến hoặc chỉnh sửa dễ dàng
- Mã nguồn gói nên được tham chiếu qua URL hoặc git submodule, không nên nhúng trực tiếp
/etc phải đủ đơn giản để có thể hiểu toàn bộ
- Patch phải được sắp xếp gọn gàng, có giải thích rõ ràng và luôn áp dụng sạch
Cài đặt và image QEMU
- Hướng dẫn cài đặt có trên wiki
- oasis là một dự án đầy tham vọng và vẫn còn rất nhiều việc phải làm
- Người dùng cần quen với việc tự build kernel và tự điều chỉnh hệ thống khi có vấn đề phát sinh
- Có sẵn image QEMU để thử nghiệm mà không cần tự cài đặt
- Trong archive có root filesystem, Linux kernel và script chạy qemu
- Cũng có kèm
README.md với thông tin cách dùng; ./run chạy ở chế độ đồ họa còn ./run -s chạy ở chế độ serial
Lựa chọn phần mềm đi kèm
- oasis ưu tiên dùng các triển khai thư viện và công cụ nhỏ hơn, đơn giản hơn khi có thể
- Các lựa chọn chính gồm:
- musl thay cho glibc
- sbase thay cho coreutils
- ubase thay cho util-linux
- pigz thay cho gzip
- mandoc thay cho man-db
- bearssl thay cho openssl
- oksh thay cho bash
- sdhcp thay cho dhclient hoặc dhcpcd
- vis thay cho vim hoặc emacs
- byacc thay cho bison
- perp và sinit thay cho sysvinit hoặc systemd
- netsurf thay cho chromium hoặc firefox
- samurai thay cho ninja
- velox thay cho Xorg
- netbsd-curses thay cho ncurses
- Các gói này được nhóm thành các sets hợp lý
- Có thể xem toàn bộ danh sách trong thư mục pkg
- Nếu không có phần mềm bạn cần, nhiều khả năng vẫn có thể cài qua pkgsrc hoặc nix
Kênh liên hệ
- Mailing list ở ~mcf/oasis@lists.sr.ht
- Kênh IRC là
#oasis trên libera.chat
- Có thể dùng cho câu hỏi, patch và thảo luận chung
1 bình luận
Ý kiến trên Lobste.rs
Việc nó được liên kết tĩnh hoàn toàn thật sự rất ấn tượng
Đừng liên kết
bashtrong lúc đang nổi giận ♪bashTôi nhớ đã xem dự án này vào khoảng năm 2020, trước khi Wayland thực sự bắt đầu ổn định
Khi đó họ đang làm một bản phân phối liên kết tĩnh hoàn toàn bao gồm cả máy chủ hiển thị riêng, nên lúc ấy đã khá ấn tượng rồi, và việc nó vẫn còn tồn tại lại càng tuyệt hơn
Ảnh chụp màn hình ở đây: https://github.com/oasislinux/oasis/wiki
Sẽ tốt hơn nếu đưa mấy thứ này vào README
Việc nó liên kết tĩnh hoàn toàn là điều cực kỳ ấn tượng
Các dự án của tôi cũng gần như đều liên kết tĩnh, nhưng có ngoại lệ với những phần đồ họa như máy chủ X hoặc OpenGL/Vulkan
Danh sách các lựa chọn thay thế về thư viện/phần mềm đơn giản hơn mà Oasis đưa ra cũng đáng xem qua
Tôi đã học được rất nhiều về Linux khi cài Oasis lên laptop
Tuy vậy cần phải chuẩn bị tinh thần, và đặc biệt là việc cấu hình pkgsrc để dùng sway hay desktop Wayland khác không hề dễ
Phiên bản coreutils của suckless cũng không tương thích với nhiều phần mềm, nên phải lường trước rắc rối
Điểm tôi thích nhất là việc gỡ lỗi và hiểu toàn bộ user space rất dễ, và với cách tiếp cận để tạo ra một hệ thống có thể tái lập thì nó cho cảm giác ít “phép thuật” hơn nhiều so với nix
BearSSL đã lâu không có bản phát hành mới, nhưng thỉnh thoảng vẫn có commit, và tháng trước cũng có vài cái
Tuy nhiên, nó vẫn chưa hỗ trợ TLS 1.3 nên đã bị loại khỏi curl 8.15 vào năm ngoái, còn TLS 1.2 thì vẫn được xem là an toàn
Phía curl cũng từng lo ngại rằng nếu commit gần đây và bản sửa lỗi quá ít thì có thể không còn người dùng nào hài lòng, nhưng Thomas đã đáp lại: “Xin lỗi vì tôi không tạo ra đủ lỗi trong code của mình. Lần sau tôi sẽ cố làm cẩu thả hơn.”
README được trích dẫn là từ phiên bản cũ; ở bản 0.6, BearSSL được xem là phần mềm mức beta, phần lớn các tính năng dự kiến đã được triển khai, và việc dùng trong production là khá táo bạo nhưng không hẳn là một lựa chọn điên rồ
Theo tôi, tiêu chuẩn của Thomas Pornin khi nói về “phần mềm chất lượng beta” cao hơn mức mà đa số mọi người nghĩ là đã sẵn sàng cho production