1 पॉइंट द्वारा GN⁺ 1 시간 전 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • oasis एक छोटा Linux सिस्टम है जो बेस सिस्टम के सभी सॉफ़्टवेयर को statically link करता है, और परिचित Linux distributions की तुलना में BSD के ज़्यादा करीब दिशा अपनाता है
  • सभी पैकेज samurai से build होते हैं और manifest Lua scripts से generate किए जाते हैं, इसलिए शुरुआती packaging cost ज़्यादा है, लेकिन यह predictable और reproducible builds के साथ package boundaries के पार incremental builds देता है
  • सिस्टम TLS और cryptography library के रूप में BearSSL का उपयोग होता है, और libcurl के native BearSSL support तथा libtls-bearssl के जरिए पूरे सिस्टम में BearSSL इस्तेमाल किया जाता है
  • oasis में package manager नहीं है; इसके बजाय किस package की कौन-सी files शामिल करनी हैं, इसे specification के रूप में define किया जाता है, फिर build system बने हुए filesystem tree को git repository में रिकॉर्ड करता है ताकि उसे / में merge किया जा सके या दूसरी machines पर fetch किया जा सके
  • /etc को इतना सरल रखने और gcc या clang की तुलना में ISO C standard के प्रति अधिक सख्त तथा बहुत छोटे cproc compiler से build करने को इसका मुख्य लक्ष्य माना गया है

oasis का अवलोकन

  • oasis एक छोटा Linux सिस्टम है, और दूसरे परिचित Linux-आधारित operating systems से काफ़ी अलग होकर BSD के अधिक निकट दिशा लेता है
  • बेस सिस्टम का हर सॉफ़्टवेयर statically linked है, और इसमें display server velox तथा web browser netsurf भी शामिल हैं
  • यह dynamic linking की तुलना में सरल mechanisms का उपयोग करता है, library upgrade समस्याएँ हटाता है, और ऐसे पूरी तरह self-contained binaries बनाता है जिन्हें दूसरे systems पर आसानी से copy किया जा सकता है

Build और bootstrap

  • सभी packages samurai से build होते हैं, और build manifests Lua scripts से generate किए जाते हैं
  • इस तरीके में शुरुआती packaging cost काफ़ी अधिक है, लेकिन maintenance cost कम रहती है, और यह लगभग optimal build time, predictable और reproducible builds, कम build-time dependencies, तथा package boundaries के पार incremental builds देता है
  • bootstrap के लिए git, lua, curl, sha256 utility, standard compression utilities, और x86_64-linux-musl cross compiler वाले किसी भी POSIX system से काम चल जाता है
  • इससे macOS या OpenBSD जैसे non-Linux systems पर भी cross-compilation आसान हो जाता है

TLS, package configuration, और system expansion

  • BearSSL सिस्टम TLS और cryptography library के रूप में उपयोग होता है
  • BearSSL बहुत छोटा है और अच्छी तरह लिखा गया है, लेकिन इसका adoption व्यापक नहीं है
  • libcurl के native BearSSL support और BearSSL-आधारित libtls replacement implementation libtls-bearssl के जरिए oasis पूरे सिस्टम में BearSSL का उपयोग करता है
  • केवल कुछ optional packages अब भी LibreSSL की ज़रूरत रखते हैं
  • oasis में package manager नहीं है
  • इसके बजाय किस package की कौन-सी files सिस्टम में शामिल करनी हैं, यह specification के रूप में configure किया जाता है, और build system बने हुए filesystem tree को git repository में रिकॉर्ड करता है
  • इस परिणाम को / में merge किया जा सकता है या दूसरी machines पर fetch किया जा सकता है
  • इसका लक्ष्य पूरा सिस्टम उपलब्ध कराना है, लेकिन इसके लक्ष्यों से मेल न खाने वाले बहुत से free software होने के कारण हज़ारों packages का नया repository बनाकर बनाए रखने के बजाय pkgsrc और nix के साथ integration चुना गया है
  • इससे बेस सिस्टम छोटा और focused बना रहता है, जबकि ज़रूरत के software से सिस्टम को expand किया जा सकता है

Configuration और C implementation की दिशा

  • oasis की एक guideline यह है कि /etc directory इतनी सरल रहे कि system administrator पूरी directory को समझ सके और आवश्यकता अनुसार customize कर सके
  • default configuration में सबसे जटिल file system init script /etc/rc.init है, और इसकी लंबाई केवल 16 lines है
  • oasis का एक मुख्य लक्ष्य gcc या clang की तुलना में ISO C standard के प्रति कहीं अधिक सख्त और आकार में कई गुना छोटे C compiler cproc से build करना है
  • यह काम अभी progress में है, लेकिन सभी core packages और अधिकांश अन्य packages cproc से सफलतापूर्वक build हो रहे हैं

सिद्धांत

  • software complexity को उसकी सभी transitive dependencies सहित मापना चाहिए
  • executable files statically linked होनी चाहिए
  • software components को आसान customization या modification की अनुमति देनी चाहिए
  • package sources को URL या git submodule के रूप में refer किया जाना चाहिए, सीधे शामिल नहीं किया जाना चाहिए
  • /etc इतना सरल होना चाहिए कि उसे पूरा समझा जा सके
  • patches सुव्यवस्थित हों, अच्छी व्याख्या रखें, और हमेशा cleanly apply हों

Installation और QEMU image

  • installation guide wiki में है
  • oasis एक ambitious project है और अभी भी इसमें बहुत काम बाकी है
  • users को अपना kernel खुद build करने और समस्या आने पर सिस्टम को adjust करने में सहज होना चाहिए
  • बिना सीधे install किए आज़माने के लिए एक QEMU image उपलब्ध है
  • archive के अंदर root filesystem, Linux kernel, और qemu run script शामिल हैं
  • इसमें उपयोग की जानकारी वाला README.md भी शामिल है, और ./run graphical mode में तथा ./run -s serial mode में चलाता है

शामिल software का चयन

  • oasis जहाँ संभव हो, छोटे और सरल libraries तथा tool implementations का उपयोग करता है
  • मुख्य चयन इस प्रकार हैं
    • glibc की जगह musl
    • coreutils की जगह sbase
    • util-linux की जगह ubase
    • gzip की जगह pigz
    • man-db की जगह mandoc
    • openssl की जगह bearssl
    • bash की जगह oksh
    • dhclient या dhcpcd की जगह sdhcp
    • vim या emacs की जगह vis
    • bison की जगह byacc
    • sysvinit या systemd की जगह perp और sinit
    • chromium या firefox की जगह netsurf
    • ninja की जगह samurai
    • Xorg की जगह velox
    • ncurses की जगह netbsd-curses
  • इन packages को logical sets में समूहित किया गया है
  • पूरी सूची pkg directory में देखी जा सकती है
  • अगर आपका मनचाहा software मौजूद नहीं है, तब भी संभव है कि उसे pkgsrc या nix के जरिए install किया जा सके

संपर्क चैनल

  • mailing list ~mcf/oasis@lists.sr.ht पर है
  • IRC channel libera.chat पर #oasis है
  • इसका उपयोग प्रश्न, patches, और सामान्य चर्चा के लिए किया जा सकता है

1 टिप्पणियां

 
GN⁺ 1 시간 전
Lobste.rs की राय
  • यह पूरी तरह statically linked है, यह बात काफ़ी प्रभावशाली है
    गुस्से में bash को लिंक मत करो ♪

    • लगता है bash की जगह oksh नाम का प्रोजेक्ट लिंक किया गया है
  • मुझे याद है कि 2020 के आसपास, जब Wayland अभी बस अपनी जगह बना रहा था, मैंने इस प्रोजेक्ट को देखा था
    यह अपने खुद के display server सहित एक पूरी तरह statically linked distribution बना रहा था, जो तब भी काफ़ी प्रभावशाली था, और इसका अब तक जीवित होना तो और भी शानदार है

  • screenshots यहाँ हैं: https://github.com/oasislinux/oasis/wiki
    अच्छा होता अगर इन्हें README में रखा जाता

  • इसका पूरी तरह statically linked होना काफ़ी प्रभावशाली है
    मेरे प्रोजेक्ट भी लगभग सभी static link किए हुए हैं, लेकिन X server या OpenGL/Vulkan जैसे graphics-संबंधित हिस्सों में कुछ अपवाद हैं
    Oasis द्वारा दी गई अधिक सरल library/software विकल्पों की सूची भी एक बार देखने लायक है

  • अपने laptop पर Oasis इंस्टॉल करते हुए मैंने Linux के बारे में सच में बहुत कुछ सीखा
    लेकिन इसके लिए मानसिक रूप से तैयार रहना पड़ता है, और खासकर sway या किसी दूसरे Wayland desktop के लिए pkgsrc सेट करना आसान नहीं है
    suckless version coreutils भी कई software के साथ compatible नहीं है, इसलिए समस्याओं की उम्मीद रखनी चाहिए
    जो बात मुझे विशेष रूप से अच्छी लगी, वह यह थी कि पूरे user space को debug करना और समझना बहुत आसान था, और reproducible system बनाने का इसका तरीका nix की तुलना में कहीं कम जादुई लगा

    • यह सुनकर अच्छा लगा कि यह एक अच्छा learning experience था
      BearSSL का लंबे समय से कोई release नहीं आया है, लेकिन बीच-बीच में commits होते रहे हैं, और पिछले महीने भी कुछ हुए थे
      हालाँकि, यह अभी तक TLS 1.3 को support नहीं करता, इसलिए पिछले साल curl 8.15 से इसे हटा दिया गया, जबकि TLS 1.2 अब भी सुरक्षित माना जाता है
      curl की ओर से यह चिंता भी जताई गई थी कि अगर हाल के commits और bug fixes कम हैं, तो शायद संतुष्ट users नहीं हो सकते, जिस पर Thomas ने जवाब दिया: “माफ़ कीजिए, मैं अपने code में पर्याप्त bugs नहीं बना सका। अगली बार मैं इसे और लापरवाही से करने की कोशिश करूँगा”
      उद्धृत README एक पुराना version है, और 0.6 में BearSSL को beta-level software माना गया है; इसमें समझाया गया है कि इसकी ज़्यादातर planned features लागू की जा चुकी हैं, और production में इसका उपयोग काफ़ी साहसिक है, लेकिन पूरी तरह पागलपन नहीं
      मेरे हिसाब से Thomas Pornin के लिए “beta quality software” का मानक, ज़्यादातर लोगों की “production-ready” की धारणा से ऊँचा है