Toaruos هو نظام تشغيل "كامل" لأجهزة الكمبيوتر X86-64 والدعم التجريبي لـ ARMV8.
في حين أن العديد من أنظمة الهوايات والهواية والبحثية تهدف إلى تجربة تصاميم جديدة ، فإن Toaruos يهدف إلى مورد تعليمي ، مما يوفر صورة مصغرة تمثيلية للوظائف الموجودة في أنظمة تشغيل سطح المكتب الرئيسية.
يشتمل نظام التشغيل على kernel ، و softloader ، ورابط كائن مشترك ديناميكي ، ومكتبة قياسية C ، ونظام الرياح المؤسس الخاص به ، ولغة برمجة ديناميكية مملوءة بالبلدة ، ومحرر التعليمات البرمجية المتقدمة ، وعشرات الأدوات المساعدة الأخرى وتطبيقات المثال.
لا توجد تبعيات خارج وقت التشغيل ، ويتم تضمين جميع التعليمات البرمجية المصدر المطلوبة ، والتي بلغ مجموعها حوالي 100 كيلو متر من (في المقام الأول) ، في هذا المستودع ، باستثناء كوروكو ، الذي يعيش بشكل منفصل.
مظاهرة واجهة المستخدم في Toaruos وبعض التطبيقات.
لقد كنت أعمل على Toaruos لأكثر من عقد من الزمان الآن ، وقد تغيرت أهدافي على مر السنين.
عندما بدأت المشروع لأول مرة في ديسمبر 2010 ، كان هدفي هو "التعلم من خلال العمل" - دراسة أنظمة تشبه UNIX عن طريق صنع واحدة من نقطة الصفر. لقد كنت مساهماً في Compiz ، أحد أوائل مديري نوافذ التركيبات المستخدمة على نطاق واسع لـ X11 ، قبل بضع سنوات ، وكسبت Toaruos بشكل طبيعي إلى حد ما واجهة المستخدم الرسومية المبنية على مفاهيم مماثلة في وقت مبكر.
بالنسبة لإصدارها الأصلي 1.0 في عام 2015 ، لم يكن Toaruos هو نظام التشغيل "تمامًا من الصفر" الذي أصبحت عليه منذ ذلك الحين. قدمت Newlib LIBC ، وتم بناء واجهة المستخدم الرسومية على القاهرة و LIBPNG و FREETYPE. في منتصف عام 2018 ، بدأت مشروعًا جديدًا لاستبدال مكونات الطرف الثالث ، والذي تم الانتهاء منه في النهاية ودمجته لتصبح Toaruos 1.6.
من خلال Out the Project ، اجتذبت Toaruos أيضًا عددًا قليلاً من مطوري OS المبتدئين الذين حاولوا استخدامه كمرجع. ومع ذلك ، كانت نواة Toaruos مصدرًا للإحراج الشخصي بالنسبة لي ، وفي أبريل 2021 ، بعد توقف طويل ، بدأت العمل على واحدة جديدة. وكانت النتيجة ميساكا: نواة جديدة 64 بت ، تدعم SMP. تم دمج Misaka في مايو وبدأت سلسلة 1.99 من الإصدار التجريبي المؤدي إلى Toaruos 2.0.
dlopen .المشاريع التالية قيد التقدم حاليًا:
يوصى باستخدام المستخدمين العامين الذين يأملون في إنشاء Toaruos من المصدر لتخليص المستودع على GitHub واستخدام خط أنابيب Github CI.
بالنسبة لأولئك الذين يتطلعون إلى البناء محليًا على مضيف Linux الذي تم تكوينه بشكل مناسب مع Docker ، تتوفر حاوية بناء. يجب استخدام مستودع Toaruos كحامل ربط AT /root/misaka ويمكن تشغيل util/build-in-docker.sh داخل هذه الحاوية لإكمال عملية التجميع:
git clone https://github.com/klange/toaruos
cd toaruos
git submodule update --init kuroko
docker pull toaruos/build-tools:1.99.x
docker run -v `pwd`:/root/misaka -w /root/misaka -e LANG=C.UTF-8 -t toaruos/build-tools:1.99.x util/build-in-docker.sh
بعد البناء مثل هذا ، يمكنك تشغيل أهداف المنفعة المختلفة ( make run ، وما إلى ذلك). حاول make shell لتشغيل قذيفة Toaruos باستخدام منفذ تسلسلي مع QEMU.
يستخدم Makefile أداة Kuroko ، auto-dep.krk ، لإنشاء MakeFiles إضافية لتطبيقات ومكتبات المستخدمين ، وحل التبعيات تلقائيًا بناءً على توجيهات #include .
بترتيب غير محدد ، تم تصميم مكتبة C و kernel ومكتبات Werstpace والتطبيقات ، ودمجها في أرشيف مضغوط للاستخدام كـ RAMDISK ، ثم يتم تعبئتها في صورة ملفات ملفات ISO9660.
base/usr/include ، وكذلك الموارد الرسومية للملحق وزخارف النافذة.يتم إعداد نظام ملفات الجذر على النحو التالي:
bin : تطبيقات الطرف الأول.cdrom : MOUNT POINT للقرص المضغوط ، إذا كان ذلك متاحًا.dev : دليل الجهاز الظاهري ، الذي تم إنشاؤه بواسطة kernel.net : أجهزة واجهة الشبكة.pex : Packet Exchange Hub ، يسرد خدمات IPC التي يمكن الوصول إليها.pts : Pty Secondaries ، نقاط النهاية لـ Ttys.etc : ملفات التكوين ، البرامج النصية بدء التشغيل.home : أدلة المستخدم.lib : مكتبات الطرف الأولkuroko : وحدات كوروكو.mod : وحدات kernel قابلة للتحميل.proc : الملفات الافتراضية التي تقدم حالة kernel.1 ، إلخ: الملفات الظاهرية مع معلومات الحالة للعمليات الفردية.src : الملفات المصدر ، انظر قسم "تخطيط المشروع" أعلاه.tmp : مثبتة كقراءة/كتابة TMPFS بشكل طبيعي.usr : موارد مساحة المستخدمينbin : تطبيقات الطرف الثالث ، فارغة عادة حتى يتم تثبيت الحزم.include : ملفات الرأس ، بما في ذلك تلك المحتملة من حزم الطرف الثالث.lib : مكتبات الطرف الثالث. يجب أن يكون libgcc_s.so بشكل افتراضي.share : موارد مختلفة.bim : بناء الجملة وموضوعات محرر النص.cursor : العفاريت المؤشر الماوس.fonts : ملفات خطوط truetype. شحن الأقراص المدمجة الحية مع deja vu sans.games : إلقاء الأرض لملفات الموارد المتعلقة بالألعاب ، مثل Doom Wads.help : ملفات الوثائق لتطبيق متصفح المساعدة.icons : رموز PNG ، مقسمة إلى أدلة أخرى حسب الحجم.ttk : موارد spriteshet لديكور النافذة ومكتبة عنصر واجهة المستخدم.wallpapers : خلفيات JPEG.var : ملفات وقت التشغيل ، بما في ذلك ذاكرة التخزين المؤقت Manager Manager ، ملفات PID ، بعض ملفات القفل ، إلخ. سيتم الحصول على أفضل تجربة مستخدم نهائي مع Toaruos في أي من هذه الأجهزة الافتراضية ، حيث أن Toaruos لديها دعم لتحجيم العرض التلقائي وتحديد المواقع المطلقة للماوس.
قم بإعداد VM جديد لضيف 64 بت "آخر" ، وقم بتزويده بـ 1GIB على الأقل من ذاكرة الوصول العشوائي ، وتوصيل صورة القرص المضغوط ، وإزالة أو تجاهل أي أقراص صلبة ، وحدد Intel Gigabit NIC. ينصح اثنين أو أكثر وحدات المعالجة المركزية ، كذلك.
Toaruos تشغيل في VirtualBox.
TOARUOS تعمل في VMware Workstation Player.
بشكل افتراضي ، سيقوم جهاز تحميل التشغيل بتمرير علامة إلى برنامج تشغيل جهاز VirtualBox لتعطيل الدعم "السلس" حيث أن التنفيذ له أهمية في الأداء. لتمكين الوضع السلس ، استخدم قائمة Bootloader للتحقق من خيار "VirtualBox Seamless" قبل التمهيد. تحتوي القائمة أيضًا على خيارات لتعطيل تغيير حجم العرض التلقائي للضيوف إذا واجهت مشكلات مع هذه الميزة.
يحدث معظم تطور Toaruos في QEMU ، لأنه يوفر أكبر قدر من المرونة في الأجهزة وأفضل تجربة تصحيح الأخطاء. سطر الأوامر QEMU الموصى به في مضيف Ubuntu 20.04 هو:
qemu-system-x86_64 -enable-kvm -m 1G -device AC97 -cdrom image.iso -smp 2
استبدل -enable-kvm بـ -accel hvm أو -accel haxm حسب الاقتضاء على منصات المضيف دون KVM ، أو إزالته لمحاولة محاكاة برنامج TCG الخاصة بـ QEMU.
لاحظ أن خيارات سطر أوامر QEMU ليست مستقرة وأن هذه الأعلام قد تنتج تحذيرات في الإصدارات الأحدث.
سيحل الخيار -M q35 محل مضاوجات مجموعة PIIX بمجموعة PIIX بمحاكاة أحدث ، والتي لها تأثير جانبي على تبديل وحدة التحكم IDE لواحدة SATA. يمكن أن يؤدي ذلك إلى أوقات التمهيد بشكل أسرع على حساب عدم قدرة Toaruos على قراءة القرص المضغوط الخاص به في وقت التشغيل حتى أتجول لإنهاء سائق AHCI.
تم اختبار Toaruos بنجاح على أجهزة حقيقية. إذا فشل BIOS الأصلي أو اللوادر EFI في العمل ، فحاول التمهيد باستخدام GRUB. يتوافق Toaruos مع المواصفات "Multiboot" و "Multiboot 2" بحيث يمكن تحميلها إما بأوامر multiboot أو multiboot2 على النحو التالي:
multiboot2 /path/to/misaka-kernel root=/dev/ram0 migrate vid=auto start=live-session
module2 /path/to/ramdisk.igz
set gfxpayload=keep
Toaruos يعمل أصلاً من عصا USB على ThinkPad T410.
يتم توفير جميع أجزاء الطرف الأول من Toaruos بموجب شروط ترخيص جامعة إلينوي / NCSA ، وهو ترخيص متساهى على غرار BSD. ما لم ينص على خلاف ذلك ، فإن هذا هو الترخيص الأصلي والوحيد لجميع الملفات في هذا المستودع - لمجرد أن الملف لا يحتوي على رأس حقوق الطبع والنشر لا يعني أنه ليس تحت هذا الترخيص. يهدف Toaruos إلى مرجع تعليمي ، وأنا أشجع استخدام الكود الخاص بي ، ولكن يرجى التأكد من اتباع متطلبات الترخيص. يجوز لك إعادة توزيع الكود بموجب ترخيص NCSA ، بالإضافة إلى إجراء تعديلات على الكود والتراجع الفرعي وفقًا لشروط أخرى (مثل GPL ، أو ترخيص الملكية) ، ولكن يجب عليك دائمًا تضمين إشعار حقوق الطبع والنشر المحددة في الترخيص وكذلك تقديم النص الكامل للترخيص (إنه مجرد عبور زوجين) متاحين للاستخدامات النهائية.
على الرغم من أن معظم Toaruos مكتوبة تمامًا بنفسي ، تأكد من تضمين مؤلفين آخرين عندما تكون ذات صلة ، كما هو الحال مع نظام Mike's Audio Subsy أو وظائف سلسلة Dale.
بعض مكونات Toaruos ، مثل Kuroko أو BIM لها مصطلحات مختلفة ولكن متوافقة.
ينعكس Toaruos بانتظام إلى مواقع استضافة GIT متعددة.
#toaruos on Libera ( irc.libera.chat )
يمكن بناء التطبيقات والمكتبات الفردية عن طريق تثبيت metapackage build-essential من المستودع ، والذي سوف يسحب في gcc و binutils . تتوفر المصادر في دليل /src على القرص المضغوط المباشر في تصميم مماثل لهذا المستودع ، كما يتوفر أيضًا برنامج auto-dep.krk Utility.
لبناء ramdisks أو اللامبالاة النهائية أو صور الأقراص المضغوطة ، فإن بعض المكونات غير متوفرة حاليًا. على وجه الخصوص ، لا يزال برنامج Build Script for Ramdisks مكتوبًا في Python ويعتمد على وحدة tarfile ودعم zlib . في السابق ، من خلال مجموعة أدوات برنامج التحويل البرمجي القادر ، تمكنت Toaruos 1.x من بناء kernel الخاص بها ، ومساحة المستخدمين ، والمكتبات ، وحمل التشغيل ، وتحويلها إلى صورة ISO CD تعمل من خلال برنامج نصي Python الذي أدى وظيفة مماثلة إلى Makefile.
لا تكون Toaruos قادرة حاليًا على بناء معظم موانئها ، نظرًا لعدم وجود قذيفة Posix المناسبة وجعل التنفيذ. هذه أهداف في نهاية المطاف للمشروع.
لا ، ليس على الإطلاق. لا يوجد رمز من Linux في أي مكان في Toaruos ، ولم يتم استخدام مصادر Linux كمواد مرجعية.
Toaruos هو مشروع مستقل تمامًا ، وجميع التعليمات البرمجية في هذا المستودع - وهو قاعدة الكود الكاملة لنظام التشغيل ، بما في ذلك kernel ومواد التحمل والمكتبات والتطبيقات - هي أصلية ، وكتبت بنفسي وحفنة من المساهمين على مدار عشر سنوات. لم يكن تاريخ المصدر الكامل ، حيث لم يكن Toaruos أكثر من مجرد "Hello World" الباريمي من خلال مستودع GIT هذا.
تكتمل Toaruos بمعنى أنها تغطي مجموعة كاملة من الوظائف لنظام التشغيل: إنها ليست "مجرد نواة" أو "مجرد مساحة مستخدمين".
Toaruos غير مكتمل بمعنى "القيام به".
على الرغم من أنني أهدف إلى دعم واجهات Posix جيدًا بما يكفي لتنفيذ البرامج ، إلا أن التنفيذ الصارم للمعيار ليس هدفًا رئيسيًا لنظام التشغيل ، وقد يكون الامتثال الكامل غير مرغوب فيه.
Toaruos هو مشروع شخصي ، وليس مشروع مجتمعي. يجب مناقشة المساهمات في شكل الكود مقدمًا. الموانئ وغيرها من الأعمال خارج الريبو ، ومع ذلك ، هي وسيلة رائعة للمساعدة.
يمكنك أيضًا المساعدة من خلال المساهمة في كوروكو - وهو جزء من سبب الاحتفاظ به كمستودع منفصل.