Oasis Linux
(git.sr.ht)- oasis, temel sistemdeki tüm yazılımları statik bağlantılı hale getiren küçük bir Linux sistemi; alışıldık Linux dağıtımlarından çok BSD'ye yakın bir yön izliyor
- Tüm paketler samurai ile derleniyor ve manifestler Lua betikleri ile oluşturuluyor; bu da başlangıçtaki paketleme maliyetini yükseltse de öngörülebilir ve yeniden üretilebilir derlemeler ile paket sınırlarını aşan artımlı derlemeler sağlıyor
- Sistem TLS ve kriptografi kütüphanesi olarak BearSSL kullanılıyor; libcurl'ün yerel BearSSL desteği ve libtls-bearssl sayesinde sistem genelinde BearSSL kullanılabiliyor
- oasis'te bir paket yöneticisi yok; bunun yerine hangi paketin hangi dosyalarının dahil edileceği bir belirtimle tanımlanıyor ve derleme sistemi ortaya çıkan dosya sistemi ağacını bir git deposuna kaydedip
/içine birleştirebiliyor veya başka makinelerde kullanılmak üzere çekebiliyor /etcdizinini bütünüyle anlaşılabilir kalacak kadar basit tutmak ve gcc ya da clang'den daha katı biçimde ISO C standardına uyan, çok daha küçük cproc derleyicisiyle derlemek başlıca hedefler arasında
oasis genel bakış
- oasis küçük bir Linux sistemi ve alışıldık diğer Linux tabanlı işletim sistemlerinden oldukça farklı; BSD'ye daha yakın bir yaklaşım benimsiyor
- Temel sistemdeki tüm yazılımlar statik bağlantılı ve buna görüntü sunucusu velox ile web tarayıcısı netsurf da dahil
- Dinamik bağlantıya göre daha basit mekanizmalar kullanıyor, kütüphane yükseltme sorunlarını ortadan kaldırıyor ve başka sistemlere kolayca kopyalanabilen tamamen kendi içinde yeterli ikili dosyalar üretiyor
Derleme ve bootstrap
- Tüm paketler samurai ile derleniyor ve derleme manifestleri Lua betikleri ile oluşturuluyor
- Bu yaklaşım başlangıçta ciddi bir paketleme maliyeti doğursa da bakım maliyetini düşük tutuyor; neredeyse optimuma yakın derleme süreleri, öngörülebilir ve yeniden üretilebilir derlemeler, azalmış derleme zamanı bağımlılıkları ve paket sınırlarını aşan artımlı derlemeler sunuyor
- Bootstrap için git, lua, curl, sha256 araçları, standart sıkıştırma yardımcı programları ve
x86_64-linux-muslçapraz derleyicisine sahip herhangi bir POSIX sistemi yeterli - Bu sayede macOS veya OpenBSD gibi Linux dışı sistemlerde de çapraz derleme kolaylaşıyor
TLS, paket yapısı ve sistem genişletme
- BearSSL, sistemin TLS ve kriptografi kütüphanesi olarak kullanılıyor
- BearSSL çok küçük ve iyi yazılmış olsa da yaygın biçimde benimsenmiş değil
- libcurl'ün yerel BearSSL desteği ve BearSSL tabanlı bir libtls alternatif uygulaması olan libtls-bearssl sayesinde oasis, sistem genelinde BearSSL kullanıyor
- Yalnızca bazı isteğe bağlı paketler hâlâ LibreSSL gerektiriyor
- oasis'te bir paket yöneticisi bulunmuyor
- Bunun yerine sisteme hangi paketlerin hangi dosyalarının dahil edileceği bir belirtim ile tanımlanıyor ve derleme sistemi ortaya çıkan dosya sistemi ağacını bir git deposuna kaydediyor
- Bu çıktı
/içine birleştirilebiliyor veya başka bir makinede çekilebiliyor - Amaç eksiksiz bir sistem sunmak olsa da, hedeflerle iyi örtüşmeyen çok sayıda özgür yazılım bulunduğundan binlerce paketlik bir depo kurup sürdürmek yerine pkgsrc ve nix ile entegrasyon tercih ediliyor
- Bu da temel sistemi küçük ve odaklı tutarken ihtiyaç duyulan yazılımlarla sistemi genişletmeyi mümkün kılıyor
Yapılandırma ve C uygulama yönü
- oasis'in ilkelerinden biri,
/etcdizinini sistem yöneticisinin tamamını anlayıp uygun şekilde özelleştirebileceği kadar basit tutmak - Varsayılan yapılandırmadaki en karmaşık dosya sistem başlatma betiği
/etc/rc.initve uzunluğu yalnızca 16 satır - oasis'in ana hedeflerinden biri, gcc veya clang'den ISO C standardına çok daha sıkı uyan ve boyut olarak birkaç büyüklük mertebesi daha küçük olan C derleyicisi cproc ile derlenebilmek
- Bu çalışma hâlâ devam ediyor, ancak tüm çekirdek paketler ve diğer paketlerin büyük bölümü cproc ile başarıyla derleniyor
İlkeler
- Yazılım karmaşıklığı, tüm geçişli bağımlılıklar dahil edilerek ölçülmeli
- Çalıştırılabilir dosyalar statik bağlantılı olmalı
- Yazılım bileşenleri kolay özelleştirme veya değişiklik yapmaya izin vermeli
- Paket kaynakları doğrudan gömülmek yerine URL ya da git alt modülü olarak referans gösterilmeli
/etcbütünüyle anlaşılabilecek kadar basit olmalı- Yamalar düzenli ve iyi açıklanmış olmalı, ayrıca her zaman temiz biçimde uygulanabilmeli
Kurulum ve QEMU imajı
- Kurulum rehberi wiki üzerinde bulunuyor
- oasis iddialı bir proje ve hâlâ yapılacak çok şey var
- Kullanıcıların çekirdeği kendilerinin derlemeye ve sorun çıktığında sistemi ayarlamaya alışık olması gerekiyor
- Doğrudan kurmadan denemek için bir QEMU imajı sunuluyor
- Arşivin içinde kök dosya sistemi, Linux çekirdeği ve qemu çalıştırma betiği yer alıyor
- Kullanım bilgilerini içeren bir
README.mdde bulunuyor;./rungrafik modunda,./run -sise seri modda çalıştırıyor
Dahil edilen yazılım seçimi
- oasis mümkün olduğunda daha küçük ve daha basit kütüphane ve araç uygulamalarını tercih ediyor
- Başlıca seçimler şöyle
- glibc yerine musl
- coreutils yerine sbase
- util-linux yerine ubase
- gzip yerine pigz
- man-db yerine mandoc
- openssl yerine bearssl
- bash yerine oksh
- dhclient veya dhcpcd yerine sdhcp
- vim veya emacs yerine vis
- bison yerine byacc
- sysvinit veya systemd yerine perp ve sinit
- chromium veya firefox yerine netsurf
- ninja yerine samurai
- Xorg yerine velox
- ncurses yerine netbsd-curses
- Bu paketler mantıksal sets halinde gruplanmış durumda
- Tam listeye pkg dizininden ulaşılabiliyor
- Aradığınız yazılım burada yoksa bile pkgsrc veya nix üzerinden kurulabilmesi büyük olasılık
İletişim kanalları
- Posta listesi ~mcf/oasis@lists.sr.ht adresinde
- IRC kanalı libera.chat üzerindeki
#oasis - Sorular, yamalar ve genel tartışmalar için kullanılabilir
1 yorum
Lobste.rs görüşleri
Tamamen statik bağlantılı olması etkileyici
bash'i öfkeli bir ruh haliyle linklemeyin ♪
bashyerine oksh adlı projeyi linkliyorBu projeye 2020 civarında, Wayland daha yeni yerleşmeden önce baktığımı hatırlıyorum
Kendi ekran sunucusunu da içeren tamamen statik bağlantılı bir dağıtım yapıyordu; o zaman da oldukça etkileyiciydi, hâlâ yaşıyor olması ise daha da güzel
Ekran görüntüleri burada: https://github.com/oasislinux/oasis/wiki
Bunları README'ye koymaları iyi olurdu
Tamamen statik bağlantılı olması oldukça etkileyici
Benim projelerim de neredeyse tamamen statik bağlı, ama X sunucusu veya OpenGL/Vulkan gibi grafik tarafında bazı istisnalar var
Oasis'in sunduğu daha basit kütüphane/yazılım alternatifleri listesine de kısa bir bakmaya değer
Dizüstü bilgisayarıma Oasis kurarken Linux hakkında gerçekten çok şey öğrendim
Ama kararlı olmanız gerekiyor; özellikle sway veya başka bir Wayland masaüstü kullanmak için pkgsrc ayarlarken işler kolay değil
Suckless sürümü coreutils de birçok yazılımla uyumlu değil, bu yüzden sorun beklemek gerekiyor
Özellikle hoşuma giden şey, tüm kullanıcı alanını debug etmek ve anlamanın çok kolay olmasıydı; yeniden üretilebilir sistemler kurma yaklaşımı olarak da nix'e kıyasla çok daha az büyü gibi hissettiriyor
BearSSL uzun süredir bir sürüm yayımlamadı ama ara sıra commit geliyor; geçen ay da birkaç tane vardı
Ancak hâlâ TLS 1.3 desteklemediği için geçen yıl curl 8.15'ten çıkarıldı ve TLS 1.2 hâlâ güvenli kabul ediliyor
curl tarafında, yakın tarihli commit ve hata düzeltmelerinin az olması hâlinde memnun kullanıcı kalmayabileceğine dair bir endişe de vardı; Thomas buna “Kodumda yeterince hata üretemediğim için üzgünüm. Bir dahaki sefere daha özensiz olmaya çalışacağım.” diye yanıt verdi
Alıntılanan README eski bir sürümden; 0.6'da BearSSL'i beta düzeyi bir yazılım olarak görüyor, planlanan özelliklerin çoğunun uygulandığını ve production kullanımının epey cesur ama tamamen çılgınca bir seçim olmadığını söylüyor
Bence Thomas Pornin'in “beta kalitesinde yazılım” derken kullandığı ölçüt, çoğu insanın production'a hazır dediği seviyeden daha yüksek