NoWayOS
HI
GitHub
मेन्यूबंद करें

यहाँ से शुरू करें

शुरुआत करें

NoWayOS का डेव कंटेनर बिल्ड करें और उसका क्लिक किया जा सकने वाला डेमो चलाएँ, हर फ़्रेम की जाँच के साथ, बिना किसी हार्डवेयर और बिना seL4 की जानकारी के।

NoWayOS एक पिन किए गए डेव कंटेनर के भीतर बिल्ड होता है, इसलिए आपकी मशीन को अपनी ओर से बहुत कम चीज़ों की ज़रूरत होती है। यह पेज आपको शून्य से डेमो चलने तक ले जाता है। अगला पेज QEMU में एक असली seL4 सिस्टम बूट करता है, और उसके बाद का एक पेज उसे Raspberry Pi 5 पर ले जाता है।

आपको क्या चाहिए

  • Podman और GNU Make। Docker भी काम करता है: हर make कमांड में ENGINE=docker जोड़ें।
  • git, रिपॉज़िटरी क्लोन करने के लिए।
  • आपकी मशीन पर न Rust, न seL4 टूल। Rust टूलचेन, Microkit SDK और QEMU, सब डेव कंटेनर के भीतर हैं, सटीक वर्शन पर पिन किए हुए।

macOS पर Podman कंटेनर को एक वर्चुअल मशीन में चलाता है। इसे एक बार बनाएँ और शुरू करें, और इसे कुछ CPU और कई गीगाबाइट मेमोरी दें, उदाहरण के लिए:

podman machine init --cpus 4 --memory 8192
podman machine start

NoWayOS को Apple silicon (arm64) पर विकसित किया जाता है। x86-64 पर भी डेव इमेज के पैकेज पिन और रिव्यू किए गए हैं, लेकिन वहाँ इमेज को अभी शुरू से आख़िर तक बिल्ड और टेस्ट नहीं किया गया है।

NoWayOS को उसका अपना फ़ोल्डर दें

डेव कंटेनर आपके क्लोन के ऊपर वाले फ़ोल्डर को माउंट करता है, ताकि साथ-साथ क्लोन की गई रिपॉज़िटरी एक-दूसरे के साथ बिल्ड हो सकें। पहले उनके लिए एक फ़ोल्डर बनाएँ:

mkdir nowayos-work && cd nowayos-work
git clone https://github.com/NoWayOS/nowayos.git
cd nowayos

डेव कंटेनर बिल्ड करें

make container

यह पिन की गई डेव इमेज बिल्ड करता है: Rust टूलचेन, Microkit SDK, QEMU और जाँच के टूल। पहले बिल्ड में कुछ मिनट लगते हैं (Apple-silicon Mac पर चार मिनट से कम) और लगभग 4.7 GB की इमेज बनती है। जब भी tools/container/Containerfile बदले, इसे फिर से चलाएँ; बाकी हर टार्गेट पुरानी इमेज पर चलने से मना कर देता है और आपको इसकी जानकारी देता है।

डेमो चलाएँ

make demo

डेमो एक छोटा फ़ॉर्म एप्लिकेशन है, जिसमें टैप, क्लिक और की-प्रेस का एक स्क्रिप्टेड सेशन है। यह होस्ट सिमुलेशन के रूप में चलता है, बिना seL4 और बिना QEMU के, और हर चरण का फ़्रेम NoWayOS के असली UI कोर और रेंडरर से ड्रॉ करता है। हर फ़्रेम को एक स्वीकृत इमेज से मिलाया जाता है, और रन इस तरह ख़त्म होता है:

demo: PASS - … steps, every frame as approved

अगर कोई फ़्रेम एक भी पिक्सेल से अलग हो, तो रन बताता है कि किस चरण में, और फ़ेल हो जाता है।

आसपास देखें

make # every target, with a line on each
make test # unit, property, doc and golden-image tests
make lint # rustfmt, then clippy with warnings as errors

हर टार्गेट डेव कंटेनर में चलता है और उसे आपके लिए शुरू कर देता है। रिपॉज़िटरी की DEVELOPING.md इन सबकी सूची देती है, कोड के लेआउट के साथ।

अगर कुछ गड़बड़ हो

  • error: … was not built from the current … Containerfile: कंटेनर की परिभाषा आपके बिल्ड करने के बाद बदल गई है। संदेश के मुताबिक़ make container फिर से चलाएँ।
  • Podman तक पहुँच नहीं हो पा रही: macOS पर podman machine start से उसकी वर्चुअल मशीन शुरू करें।
  • किसी बिल्ड में मेमोरी ख़त्म हो जाती है: Podman की वर्चुअल मशीन को ज़्यादा मेमोरी दें। पूरा गेट, make ci, मॉडल-चेकिंग प्रूफ़ चलाता है, जिन्हें डेमो से कहीं ज़्यादा मेमोरी चाहिए (जाँचें और सबूत)।