نواة متعددة الخيوط مدمجة في وضع محمي للهندسة المعمارية x86
تم تطوير kernel باستخدام برنامج التحويل البرمجي Cross Cross مخصص من المصدر
لدى Scorpion جميع المكونات الأساسية تقريبًا في نواة متجانسة كاملة
العقرب هو نواة متجانسة تستخدم لتوضيح كيف تتصرف kernel ويمكن أن يتم بناؤها من الألف إلى الياء.
المرجع الثابت والاستمتاع المستخدم أثناء تطوير العقرب هو: https://wiki.osdev.org/main_page
فيما يلي بعض سمات العقرب:
0x80 لعملية مساحة المستخدم واتصال النواةقد لا يتم التقاط جميع سمات النواة هنا ويمكن أن تستمر في التحسن مع مرور الوقت ، ولكن ستبقى المذكورة أعلاه كخصائص أساسية.
هناك بعض المتطلبات المسبقة لبناء واختبار العقرب
قبل بناء kernel و bootloader ، نحتاج إلى استعداد البيئة عن طريق بناء المقطع العرضي. هناك حاجة إلى مُجسد عبر لأن مضيفك قد يكون له بنية مختلفة عن الهدف الذي نديره في kernel.
قم بتثبيت تبعيات المتقاطع مع الأوامر التالية:
sudo apt install build-essential bison flex libgmp3-dev libmpc-dev libmpfr-dev texinfo libisl-dev
قم بتنزيل رمز المصدر لـ Bin Utils و GCC إلى دليل $HOME/src باستخدام الروابط التالية:
استخراج كلا التنزيلات في دليل $HOME/src
الآن دعنا نحول المصدر إلى ملفات كائن البرمجيات لتحقيق هدفنا
أولاً ، يجب تعيين بعض Vars Env لتمكين Make لتثبيت الثنائيات المترجمة في الموقع الصحيح
export PREFIX="$HOME/opt/cross"
export TARGET=i686-elf
export PATH="$PREFIX/bin:$PATH"
تشغيل الأمر التالي لبناء binuTils. لا تنس استبدال XYZ بإصدارك الخاص.
cd $HOME/src
mkdir build-binutils
cd build-binutils
../binutils-x.y.z/configure --target=$TARGET --prefix="$PREFIX" --with-sysroot --disable-nls --disable-werror
make
make install
قم بتشغيل الأمر التالي لبناء GCC. لا تنس استبدال XYZ بإصدارك الخاص.
cd $HOME/src
# The $PREFIX/bin dir _must_ be in the PATH. We did that above.
which -- $TARGET-as || echo $TARGET-as is not in the PATH
mkdir build-gcc
cd build-gcc
../gcc-x.y.z/configure --target=$TARGET --prefix="$PREFIX" --disable-nls --enable-languages=c,c++ --without-headers
make all-gcc
make all-target-libgcc
make install-gcc
make install-target-libgcc
بمجرد اكتمال جميع الخطوات المذكورة أعلاه ، تابع واختبار ما إذا كان يتم بناء وتثبيت المشتركة المتقاطعة بنجاح أو لا مع الأمر التالي:
$HOME/opt/cross/bin/$TARGET-gcc --version
الآن بعد أن أصبح برنامج التحويل البرمجي الخاص بنا جاهزًا ، نحن على استعداد لبناء العقرب مع محمل التمهيد. قم بتشغيل ما يلي بجذر بنية المشروع
./build.sh
إذا نجح البناء ، فيجب إنشاء 3 ثنائيات في دليل bin في جذر المشروع
boot.binkernel.binscorpion.bin بأكملها حان الوقت لتشغيل Scorpion OS باستخدام ثنائيات الناتج التي تم إنشاؤها في القسم السابق. قم بتشغيل الأمر التالي في المحطة لمحاكاة العقرب مع QEMU
qemu-system-i386 -hda ./bin/scorpion.bin
بدلاً من ذلك ، ستجد الجهاز يركض إلى القشرة التالية إذا كان الاختبار على جهاز فعلي إذا تم تعيين الجهاز القابل للتمهيد بشكل صحيح في قائمة BIOS

يجب تنشيط موجه shell مع إصدار العقرب في أعلى اليسار. يمكنك الآن البدء في الكتابة على القشرة. تم إنشاء برنامج عينة يسمى blank.elf على محرك الأقراص الثابتة للعقرب حتى يتمكن من الوصول.
قم بتحميل البرنامج في الذاكرة عن طريق تنفيذ ما يلي على موجه أوامر Scorpion
> blank.elf
يمكن أيضًا تحميل البرنامج مع الوسائط التي يمكن معالجتها بواسطة عملية المستخدم التي تلت ذلك على النحو التالي:
> blank.elf 55 21 tree
يجب إنشاء ناتج مثل هذا اعتمادًا على ما إذا كان البرنامج محملاً أو بدون وسيطات:
