
exokernel الحديثة
حتى قبل الحديث عن نظام البناء المكتوب يدويًا ، أحتاج إلى ذكر esque.toml. هذا ملف تكوين مع عدد كبير من الخيارات المتاحة للتخصيص. استغرق إعداد هذا الأمر الكثير من الوقت ، وهذا هو السبب في أنه الآن المعيار لبناء OS Esque.
cargorustcddmtools (McOpy ، MMD ، ...)dosfstools (mkfs.vfat)python >= 3python.tomlpython.xbstrap$ sudo apt install cargo rustc binutils mtools dosfstools python3 python3-pip ; pip install --user xbstrap toml y.py هي أداة مستوحاة من x.py 's Rustc. يمكنك تكوين kernel باستخدام ملف Esque.toml الذي يمكن العثور عليه في نظام هذا الدليل. يقدم هذا الملف العديد من الخيارات ، وإلقاء نظرة عليه قبل البناء.
يمكنك بناء المشروع ببساطة باستخدام
./y.py build
هذا النظام قابل للتكوين للغاية. ببساطة اكتب
./y.py --help
لرؤية جميع الخيارات.
أولاً ، يجب عليك إدخال Esque.toml وتغيير enable-kvm إلى خطأ.
لا ينصح بناء على النوافذ. أنا مستخدم Linux منذ فترة طويلة ، وقد تم تصميم عملية الإنشاء بأكملها بالنسبة لي ، ومع ذلك ، فإن البناء باستخدام winy.ps1 ممكن ، ولكن لم يتم تحسينه.
على Windows ، قد يتم تنفيذ أوامر y.py فقط بنفس الطريقة التي dd بها تنفيذ Linux (مثال ./y.py لذلك ، يتم تقديم خيارين
قد يكون هذا خيارًا مفضلاً للبعض. في هذا السيناريو ، تقوم بتشغيل جميع الأوامر باستثناء ./y.py run باستخدام WSL.
هذا يتطلب جميع التبعيات المذكورة أعلاه في قسم Dependencies (On Linux)
winy.ps1 هو نص PowerShell الذي يقرر ما يجب تشغيله أصليًا وما لا. الاستخدام يساوي ./y.py eg ./winy build ./winy run يدير kernel و.
الاهتمام هذا يتطلب منك أن تكون executionpolicy الخاصة بك في الالتفاف. يمكنك تغيير هذا مؤقتًا عن طريق فتح مضيف أوامر بامتيازات المسؤول والكتابة
Set-ExecutionPolicy Bypass هذا يتطلب جميع التبعيات المذكورة أعلاه باستثناء البضائع و Rustc على WSL. يتطلب البضائع ، Rustc ، و tar binary على النوافذ. يمكن تثبيت التبعيات المذكورة بسهولة باستخدام Rustup Binary rustup.rs
قم بتشغيل الأمر التالي على WSL (يفترض Ubuntu):
$ sudo apt install binutils mtools dosfstools python3 python3-pip ; pip install --user xbstrap tomlيجب أن يكون نظام التشغيل على وشك أن يكون خاليًا من التبعية. لسوء الحظ ، يعتمد هذا النظام على ما مجموعه 2 صناديق:
bitflags
spin
يتم الحفاظ على أكثر من 10+ من تبعياتنا داخل crates/ الدليل الفرعي. وتشمل هذه التبعيات محمل القطران وأكثر من ذلك بكثير.
std::sync::{Mutex,...} . هذا صندوق مفيد بشكل لا يصدق يتم استخدامه في جميع مشاريع OSDEV الرئيسية تقريبًا. قد يتم إسقاط هذا الصندوق في المستقبل. على الرغم من أنه قد ينتج ثنائيات أكبر ، فلنقول ، ج ، لا يزال ينتج صغارًا بعد التجريد. يبلغ حجم النواة الحالية ~ 300k ، وهو أمر مقبول بالنسبة لي. يبلغ حجم تحميل الحذاء حوالي 270 ألفًا ، نظرًا لاعتماده الضخم "UEFI".
Esque عبارة عن نواة تسعى إلى توحيد جوانب Linux و Windows ، بينما تكون نظامًا يشبه Exokernel. exokernel عبارة عن نواة توفر فقط الأشياء الأساسية ويتم تحميل أي أشياء إضافية (مثل مداخن الشبكة) عبر الوحدات النمطية.
نظرًا لتوافر البرامج الكبير على Linux ، تهدف Esque إلى أن تكون متوافقة معها إلى حد ما. وهو يحقق توافق نظام الملفات بسبب استخدام fake-root . هناك اثنين من التخصص. الجذر الحقيقي والجذر المزيف . مثال على المسار المزيف سيكون /home/user/ أو /bin/* . يبدأ مسار الجذر الحقيقي بالجهاز : مخطط المسار . أمثلة: initramfs:/myfile ، C:/Binaries/* ، B:/BOOT/EFI/BOOTX64.EFI ، C:/Users/User/ or proc:/CpuInfo .
تقع Linux Syscalls في موقعها الفعلي (0 ، 1 ، 2 ، 3 ، 4 ...) بينما تقع Syque Syscalls في (Sys_num + 0x1000)
نعم - ولا. في Esque ، هناك ثلاثة "مساحات" افتراضية مختلفة للتطبيقات. اثنان فقط من هؤلاء حقيقيين. هنالك
أنا أفهم أن الكثير منهم ليسوا على استعداد لاستخدام وقتهم على نواة مثل هذا واحد. سأظل يرحب بكل سرور بأي مساهمة ، بغض النظر عن حجمها أو صغير. يرجى قراءة ملف المساهمات وإلقاء نظرة على الملفات في دليل الوثائق
في initramfs ، اعتبارا من الآن ، لا يتم دعم أي أدلة. يمكنك إنشاء initRAMFs جديدة ببساطة عن طريق وضع الملفات في دليل initramfs/ Subderectory. بعد build/initramfs.tar ، باستخدام ./y.py initramfs يتوقع bootloader العثور على هذا الملف على قسم الجذر.
سيتم بعد ذلك تحميل جميع الملفات التي تنتهي مع .system بواسطة initRAMFS. من المتوقع أن يقوم أحد ملفات .system المذكورة بتحميل نظام الملفات.
على الرغم من أنه من الصحيح أن نظام التشغيل بدون رمز غير آمن أمر مستحيل ، إلا أنني حاولت قصره هنا. في أي وقت ،
./y.py count-unsafe
قد يتم استدعاءها والتي ستعرض معلومات حول عدم الآمنة للرمز. في وقت كتابة هذا التقرير ، يتم إنتاج الإخراج التالي:
A total of 52 occurences have been found (1641 LOC, 0.* percent Percent)
alloc