- oasis adalah sistem Linux kecil yang menautkan secara statis semua perangkat lunak di sistem dasarnya, dengan arah yang lebih dekat ke BSD daripada distribusi Linux yang umum dikenal
- Semua paket dibangun dengan samurai dan manifes dihasilkan dengan skrip Lua, sehingga biaya packaging awal cukup besar tetapi memberikan build yang dapat diprediksi dan direproduksi serta build inkremental yang melintasi batas paket
- Sistem ini menggunakan BearSSL sebagai pustaka TLS dan kriptografi sistem, dan memakai BearSSL di seluruh sistem melalui dukungan native BearSSL di libcurl serta libtls-bearssl
- oasis tidak memiliki manajer paket; sebagai gantinya, pengguna menyusun spesifikasi file apa dari paket mana yang akan disertakan, lalu sistem build mencatat pohon filesystem hasilnya ke repositori git untuk digabungkan ke
/ atau diambil di mesin lain
- Salah satu tujuan utamanya adalah menjaga
/etc tetap cukup sederhana agar dapat dipahami secara menyeluruh, dan membangun sistem dengan kompiler cproc yang jauh lebih ketat terhadap standar ISO C dan jauh lebih kecil dibanding gcc atau clang
Gambaran umum oasis
- oasis adalah sistem Linux kecil yang cukup berbeda dari sistem operasi berbasis Linux lain yang umum dikenal, dan arahnya lebih dekat ke BSD
- Semua perangkat lunak di sistem dasar ditautkan secara statis, termasuk server display velox dan peramban web netsurf
- Sistem ini memakai mekanisme yang lebih sederhana daripada dynamic linking, menghilangkan masalah upgrade pustaka, dan menghasilkan biner mandiri sepenuhnya yang mudah disalin ke sistem lain
Build dan bootstrap
- Semua paket dibangun dengan samurai, dan manifes build dihasilkan dengan skrip Lua
- Pendekatan ini membuat biaya packaging awal cukup tinggi, tetapi biaya pemeliharaannya kecil, dengan waktu build yang nyaris optimal, build yang dapat diprediksi dan direproduksi, dependensi saat build yang berkurang, serta build inkremental yang melintasi batas paket
- Untuk bootstrap, cukup gunakan sistem POSIX apa pun yang memiliki git, lua, curl, utilitas sha256, utilitas kompresi standar, dan cross compiler
x86_64-linux-musl
- Ini juga membuat cross compile menjadi lebih mudah pada sistem non-Linux seperti macOS atau OpenBSD
TLS, komposisi paket, dan perluasan sistem
- BearSSL digunakan sebagai pustaka TLS dan kriptografi sistem
- BearSSL sangat kecil dan ditulis dengan baik, tetapi belum diadopsi secara luas
- Melalui dukungan native BearSSL di libcurl dan libtls-bearssl, implementasi pengganti libtls berbasis BearSSL, oasis menggunakan BearSSL di seluruh sistem
- Hanya beberapa paket opsional yang masih memerlukan LibreSSL
- oasis tidak memiliki manajer paket
- Sebagai gantinya, pengguna menyusun spesifikasi tentang file apa dari paket mana yang akan disertakan ke sistem, lalu sistem build mencatat pohon filesystem hasilnya ke repositori git
- Hasil ini bisa digabungkan ke
/ atau diambil di mesin lain
- Meski bertujuan menyediakan sistem yang lengkap, ada banyak perangkat lunak bebas yang tidak selaras dengan tujuan proyek ini, sehingga alih-alih membuat dan memelihara repositori ribuan paket baru, proyek ini memilih integrasi dengan pkgsrc dan nix
- Dengan begitu, sistem dasar bisa tetap kecil dan fokus, sambil tetap memungkinkan perluasan sistem dengan perangkat lunak yang dibutuhkan
Arah konfigurasi dan implementasi C
- Salah satu pedoman oasis adalah menjaga direktori
/etc tetap cukup sederhana agar administrator sistem dapat memahami keseluruhannya dan menyesuaikannya dengan tepat
- Dalam konfigurasi bawaan, file yang paling kompleks adalah skrip inisialisasi sistem
/etc/rc.init, dan panjangnya hanya 16 baris
- Salah satu tujuan utama oasis adalah membangun sistem dengan kompiler C cproc, yang jauh lebih ketat terhadap standar ISO C dan ukurannya beberapa tingkat lebih kecil daripada gcc atau clang
- Pekerjaan ini masih berlangsung, tetapi semua paket inti dan sebagian besar paket lainnya sudah berhasil dibangun dengan cproc
Prinsip
- Kompleksitas perangkat lunak harus diukur dengan memasukkan semua dependensi transitif
- Berkas eksekusi harus ditautkan secara statis
- Komponen perangkat lunak harus memungkinkan kustomisasi atau modifikasi yang mudah
- Sumber paket harus dirujuk melalui URL atau git submodule, bukan disertakan langsung
/etc harus cukup sederhana untuk dipahami secara menyeluruh
- Patch harus tertata rapi, memiliki penjelasan yang baik, dan selalu dapat diterapkan dengan bersih
Instalasi dan image QEMU
- Panduan instalasi tersedia di wiki
- oasis adalah proyek ambisius dan masih banyak pekerjaan yang tersisa
- Pengguna perlu terbiasa membangun kernel sendiri dan menyesuaikan sistem saat terjadi masalah
- Tersedia image QEMU untuk mencoba tanpa harus memasang langsung
- Arsip tersebut berisi root filesystem, kernel Linux, dan skrip untuk menjalankan qemu
- Juga disertakan
README.md dengan informasi cara penggunaan; ./run menjalankan mode grafis dan ./run -s menjalankan mode serial
Pilihan perangkat lunak yang disertakan
- oasis menggunakan implementasi pustaka dan alat yang lebih kecil serta lebih sederhana bila memungkinkan
- Pilihan utamanya adalah sebagai berikut
- musl alih-alih glibc
- sbase alih-alih coreutils
- ubase alih-alih util-linux
- pigz alih-alih gzip
- mandoc alih-alih man-db
- bearssl alih-alih openssl
- oksh alih-alih bash
- sdhcp alih-alih dhclient atau dhcpcd
- vis alih-alih vim atau emacs
- byacc alih-alih bison
- perp dan sinit alih-alih sysvinit atau systemd
- netsurf alih-alih chromium atau firefox
- samurai alih-alih ninja
- velox alih-alih Xorg
- netbsd-curses alih-alih ncurses
- Paket-paket ini dikelompokkan ke dalam sets yang logis
- Daftar lengkapnya dapat dilihat di direktori pkg
- Jika perangkat lunak yang diinginkan tidak ada, besar kemungkinan tetap bisa dipasang melalui pkgsrc atau nix
Kanal kontak
- Mailing list tersedia di ~mcf/oasis@lists.sr.ht
- Kanal IRC-nya adalah
#oasis di libera.chat
- Dapat digunakan untuk pertanyaan, patch, dan diskusi umum
1 komentar
Pendapat di Lobste.rs
Cukup mengesankan bahwa semuanya ditautkan secara statis penuh
jangan tautkan bash saat sedang marah ♪
bashSaya ingat pernah melihat proyek ini sekitar tahun 2020, sebelum Wayland benar-benar mapan
Saat itu pun sudah cukup mengesankan karena mereka membuat distro yang sepenuhnya ditautkan statis sampai menyertakan server display sendiri, dan lebih keren lagi bahwa proyek ini masih hidup
Screenshot ada di sini: https://github.com/oasislinux/oasis/wiki
Akan bagus kalau ini dimasukkan ke README
Fakta bahwa ini ditautkan secara statis penuh sangat mengesankan
Hampir semua proyek saya juga ditautkan statis, tetapi ada pengecualian untuk hal-hal grafis seperti server X atau OpenGL/Vulkan
Daftar alternatif library/perangkat lunak yang lebih sederhana yang diajukan Oasis juga layak dilihat sekilas
Saya benar-benar belajar banyak tentang Linux saat memasang Oasis di laptop
Tapi harus benar-benar siap mental, dan terutama saat mengatur pkgsrc untuk memakai sway atau desktop Wayland lain, itu tidak mudah
Versi suckless dari coreutils juga tidak kompatibel dengan banyak perangkat lunak, jadi masalah memang harus diantisipasi
Hal yang paling saya sukai adalah sangat mudah untuk men-debug dan memahami seluruh user space, dan sebagai pendekatan untuk membuat sistem yang dapat direproduksi, rasanya jauh lebih tidak "ajaib" dibanding nix
BearSSL sudah lama tidak merilis versi baru, tetapi sesekali masih ada commit, dan bulan lalu pun ada beberapa
Namun, karena masih belum mendukung TLS 1.3, ia dihapus dari curl 8.15 tahun lalu, sementara TLS 1.2 masih dianggap aman
Di pihak curl juga ada kekhawatiran bahwa jika commit terbaru dan perbaikan bug sedikit, tidak mungkin ada pengguna yang puas, tetapi Thomas menjawab, “Maaf saya belum cukup banyak membuat bug di kode saya. Lain kali akan saya buat lebih ceroboh.”
README yang dikutip itu adalah versi lama, dan pada 0.6, BearSSL dijelaskan sebagai perangkat lunak tingkat beta dengan sebagian besar fitur yang direncanakan sudah diimplementasikan; memakainya di produksi memang cukup berani, tetapi bukan pilihan yang sepenuhnya gila
Menurut saya, standar Thomas Pornin untuk “perangkat lunak berkualitas beta” lebih tinggi daripada apa yang kebanyakan orang anggap siap produksi