ابدأ من هنا
البدء
ابنِ حاوية التطوير الخاصة بـ NoWayOS وشغّل عرضه التوضيحي القابل للنقر، مع فحص كل إطار، دون حاجة إلى أي عتاد أو معرفة بـ seL4.
يُبنى NoWayOS داخل حاوية تطوير واحدة مثبّتة الإصدارات، فلا يحتاج جهازك إلا إلى القليل. تنقلك هذه الصفحة من لا شيء إلى تشغيل العرض التوضيحي. والصفحة التالية تُقلع نظام seL4 حقيقيًا في QEMU، وصفحة لاحقة تضعه على Raspberry Pi 5.
ما تحتاجه
- Podman و GNU Make. ويعمل Docker أيضًا: أضف
ENGINE=dockerإلى كل أمرmake. - git، لاستنساخ المستودعات.
- لا Rust ولا أدوات seL4 على جهازك. سلاسل أدوات Rust و Microkit SDK و QEMU كلها داخل حاوية التطوير، مثبّتة على إصدارات محددة.
على macOS، يشغّل Podman الحاويات داخل آلة افتراضية. أنشئها وشغّلها مرة واحدة، مع تخصيص بضعة معالجات وعدة غيغابايتات من الذاكرة، على سبيل المثال:
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، وأدوات الفحص. يستغرق البناء الأول بضع دقائق (أقل من أربع على جهاز Mac بمعالج Apple silicon) وينتج صورة بحجم 4.7 GB تقريبًا. أعد تشغيله كلما تغيّر tools/container/Containerfile؛ فكل هدف آخر يرفض العمل على صورة قديمة ويخبرك بذلك.
شغّل العرض التوضيحي
make demo
العرض التوضيحي تطبيق نماذج صغير مع جلسة مُعدّة مسبقًا من اللمسات والنقرات وضغطات المفاتيح. يعمل محاكاةً على الجهاز المضيف، بلا seL4 ولا QEMU، ويرسم إطار كل خطوة باستخدام لبّ واجهة المستخدم والمُصيِّر الحقيقيين في NoWayOS. ويُقارن كل إطار بصورة معتمدة، وينتهي التشغيل بما يلي:
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، تشغّل براهين فحص النماذج التي تحتاج إلى أكثر بكثير مما يحتاجه العرض التوضيحي (الفحوص والأدلة).