Skip to content
KitploitKITPLOIT
أدواتالمدونة
Log in
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

الخلاصاتاتصالالخصوصية© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
qrv — نظام التشغيل QRV | Kitploit
أدوات/GitHubGitHub/r-tty/qrv
أمان الأنظمة المدمجةأمن الأجهزةالأوراق والأبحاثالتعلم والتعليمموارد منسقة
GitHubr-tty/qrv

qrv

نظام التشغيل QRV

عرض المستودع
2414منذ 4 أشهرتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

QRV — نظام تشغيل قائم على QNX Neutrino، مُعاد تصوره لمعمارية RISC-V 64-bit

QRV هو اقتباس وإعادة تنفيذ من الصفر لنظام التشغيل QNX Neutrino 6.4 للأجهزة الحديثة ذات 64 بت، مع RISC-V (rv64g) كمعمارية رئيسية وx86-64 كهدف ثانوي. بدأ المشروع في ليلة عيد الميلاد 2020. يتجنب اسم QRV عمدًا أي ارتباط بالعلامة التجارية QNX.

QRV هو نظام تشغيل كامل، وليس مجرد نواة. النواة الصغرية هي قلبه — لكن الجزء الأكبر من العمل ذهب إلى كل ما يحيط بها. الأبرز هو taskman، مدير العمليات/الذاكرة/المسارات في وضع المستخدم (procnto الخاص بـ QNX)، والذي تمت إعادة صياغته بعمق ورفعه خارج النواة إلى مساحة المستخدم؛ إلى جانب ذلك، تم نقل مكتبة C، وبرامج تشغيل الأجهزة، ونظام الملفات، والمُحمل الديناميكي، وخوادم النظام، وجعلها نظيفة 64 بت، وفي العديد من الأماكن تمت إعادة كتابتها بشكل كبير. النواة الصغرية صغيرة حسب التصميم؛ نظام التشغيل حولها هو حيث يقع معظم QRV.

هذه ليست شوكة تقوم فقط بتجميع كود قديم على مترجم جديد. إنها نقل دقيق، وحدة بوحدة، إلى نموذج LP64 حقيقي، مع تفكيك الحدود الملكية لـ procnto، واستبدال آلية IFS/startup، ومع إزالة Big Kernel Lock بالكامل — اعتبارًا من الإصدارات الأخيرة — ونقل مدير العمليات/الذاكرة/المسارات خارج النواة إلى خادم في وضع المستخدم.

يصف ملف README هذا الإصدار QRV v0.43.

المدونة التطويرية، مع القصة الكاملة للنقل، موجودة على https://r-tty.blogspot.com. سردية بطول كتاب، The QRV Porting Story، موجودة في شجرة المصدر تحت doc/tex/PortingStory/.

تم تطوير QRV بالتعاون الوثيق مع Claude Code، أداة الترميز النشطة (agentic coding tool) من Anthropic — الكثير من النقل، وتصحيح أخطاء SMP، والتوثيق (بما في ذلك ملف README هذا) تم كجهد برمجة زوجي بين الإنسان والذكاء الاصطناعي، بالعمل جنبًا إلى جنب مع المؤلف.


المحتويات

  1. ما هو QRV
  2. الترخيص
  3. الحصول على المصادر: obtain_proj.sh وشجرة os/
  4. معمارية النظام
  5. Taskman واستدعاء النظام المميز TM_PRIV
  6. Big Kernel Lock — وإزالته
  7. التخزين: devb-nvme و fs-qrv
  8. مساحة المستخدم
  9. البناء والتشغيل
  10. التشغيل على أجهزة حقيقية
  11. ملاحظات ختامية: لماذا يهم النسخة المجانية

1. ما هو QRV

QNX هو نظام تشغيل زمن حقيقي نواة صغرية (microkernel) فكرته الأساسية هي تمرير الرسائل المتزامن. في QNX، النواة نفسها صغيرة جدًا — فهي تعرف كيفية جدولة الخيوط، تمرير الرسائل، تسليم الإشارات، التعامل مع المؤقتات والمقاطعات، وقليل جدًا غير ذلك. كل شيء كان نظام التشغيل المتجانس (monolithic) ليضعه داخل النواة — مدير العمليات، مدير الذاكرة، نظام الملفات، برامج تشغيل الأجهزة، مكدس الشبكة — يعمل كعمليات مستخدم عادية تسمى مديري الموارد (resource managers)، ويتواصلون مع بعضهم البعض ومع عملائهم من خلال نفس أساسية IPC إرسال / استقبال / رد (send / receive / reply).

هذه المعمارية هي ما يجعل QNX أنيقًا، وهو بالضبط ما يحافظ عليه QRV. برنامج يريد فتح ملف يرسل رسالة؛ خادم نظام الملفات يستلمها، يقوم بالعمل، ويرد. النواة فقط تتوسط في rendezvous. النتيجة هي نظام حيث يمكن لبرنامج تشغيل أن يتعطل ويتم إعادة تشغيله دون إسقاط النواة، حيث يتم قياس قاعدة الحوسبة الموثوقة بعشرات الكيلوبايتات، وحيث الحدود بين "النواة" و"التطبيق" هي رسالة، وليس جدار صلاحيات مليء باستدعاءات النظام.

QRV يأخذ مصادر مجتمع QNX Neutrino 6.4 من حقبة 2009 ويحمل ذلك التصميم إلى الأمام:

  • نظيف 64 بت (LP64). كل مؤشر ونوع حجم هو 64 بت؛ النقل يتتبع ويصلح حالات اقتطاع int/uint32_t/pid_t على المؤشرات التي تملأ الكود 32 بت.
  • RISC-V أولاً. الهدف الأساسي هو qemu-system-riscv64 (جهاز virt) ولوحة التطوير SiFive Unmatched (FU740). يتم الاحتفاظ ببناء x86-64 كفحص لقابلية النقل.
  • لا حدود مملوكة. لا يوجد IFS ولا mkifs (QRV يستخدم تنسيق CPIO القياسي بدلاً من ذلك)؛ لا يوجد فصل منفصل بين startup/kernel (يتم ربط startup مباشرة مع النواة)؛ لا يوجد callouts ولا برامج تشغيل صغيرة.
  • بناء حديث. تكوين على غرار Kconfig في Linux، ربط نواة تدريجي (تتم إضافة الوحدات واختبارها واحدة تلو الأخرى، وليس رميها في الرابط ككتلة واحدة 32→64)، ومجموعة أدوات مترجم متقاطع (riscv64-linux-gnu-gcc).
  • مفردات معاد تسميتها ومحررة من العلامات التجارية. procnto أصبح taskman (مدير المهام) في كل مكان؛ تمت إزالة جميع إشارات "Neutrino".

لا يقوم QRV بتنفيذ fork() (تبدأ البرامج عبر posix_spawn())، ولا يحتوي على ترحيل حسب الطلب ولا مبادلة (swap) — نفس الخيارات التي اتخذتها QNX نفسها في جيل 8.0.


2. الترخيص

QRV محكوم بـ ترخيصين في نفس الوقت، وفهم أيهما هو أمر ضروري قبل بناء أو إعادة توزيع أي شيء.

  • كود QRV الخاص هو رخصة Apache 2.0. كل شيء كتب من الصفر لهذا المشروع — نقل RISC-V، نظام البناء الجديد، فصل taskman في وضع المستخدم، إعادة صياغة النواة بدون أقفال، برامج التشغيل والأدوات التي ألفناها — هو Apache 2.0. النص الكامل موجود في LICENSE.txt.
  • الكود المشتق من QNX هو رخصة مجتمع BlackBerry QNX (QCL) 2.0. الأجزاء من QRV التي تنحدر من مصادر مجتمع QNX Neutrino 2009 تبقى تحت رخصة QCL، والتي تسمح بالاستخدام غير التجاري والأكاديمي للمصادر المشتقة. QRV لا يمكنه، ولن يعيد ترخيص كود QNX.

هذه الحقيقة المزدوجة الترخيص هي بالضبط لماذا لا يحتوي هذا المستودع على شجرة مصادر قابلة للبناء مباشرة. لا يُسمح لنا بإعادة توزيع المصادر المشتقة من QNX. لذا بدلاً من شحن الكود، يشحن هذا المستودع وصفة (انظر القسم التالي): خريطة توضح أين يذهب كل ملف QNX، بالإضافة إلى تصحيحات QRV التي تحوله. تحصل أنت على مصادر مجتمع QNX الأصلية بنفسك، من مرآتها العامة، وتقوم الوصفة بإعادة بناء شجرة QRV على جهازك. نسختك هي ملكك؛ نحن نعيد توزيع فقط تصحيحاتنا وبياناتنا الوصفية المرخصة تحت Apache.

QRV يدمج أيضًا كودًا تحت تراخيص سماحية أخرى — على سبيل المثال مكونات مرخصة BSD مأخوذة من FreeBSD (تحل محل وحدات QNX القديمة)، وبرنامج تشغيل قرص virtio مرخص MIT من أصل xv6، وصدفة Korn من MirBSD (mksh) كصدفة النظام. WHAT_IS_WHAT.md هو التحليل التفصيلي الموثوق لكل مكون حول ما هو تحت أي ترخيص ومن أين أتى — استشرها كلما كنت غير متأكد من ملف أو نظام فرعي معين.

أخيرًا، يحتوي المستودع على PETITION.md: طلب مفتوح لأنظمة برمجيات QNX و BlackBerry لإعادة ترخيص مصادر Neutrino التاريخية من 2007–2009 تحت رخصة سماحية معتمدة من OSI. إذا كنت ترغب في أن تكون أسس هذا العمل حرة بالكامل يومًا ما، فذلك المستند هو المكان لإضافة اسمك.


3. الحصول على المصادر: obtain_proj.sh وشجرة os/

نظرًا لعدم إمكانية إعادة توزيع المصادر المشتقة من QNX هنا، فإن هذا المستودع هو توزيع إعادة بناء المصادر. يحتوي على:

الملف / الدليلالغرض
obtain_proj.shبرنامج إعادة البناء — قم بتشغيله.
placement.txtيربط كل مسار QNX أصلي بمسار QRV الخاص به (≈680 إدخال).
patches/سلسلة تصحيحات QRV، مضغوطة بـ LZ4، بالإضافة إلى ملف ترتيب series.
LICENSE.txtرخصة Apache 2.0.
WHAT_IS_WHAT.mdالترخيص والمصدر لكل مكون على حدة.
PETITION.mdعريضة إعادة الترخيص.

ماذا يفعل البرنامج النصي```

$ ./obtain_proj.sh

1. **يستنسخ المرآة المجتمعية لـ QNX من المنبع** (`github.com/vocho/openqnx`، استنساخ ضحل).
2. **يضع الملفات** وفقًا لـ `placement.txt`، بنسخ كل ملف من المنبع إلى موقعه في QRV تحت `os/`. يبلغ عن عدد الملفات التي تم وضعها، الموجودة مسبقًا، أو المفقودة.
3. **يزيل الاستنساخ** بمجرد الانتهاء من التنسيب.
4. **يطبق سلسلة تصحيحات QRV** من `patches/series`، بالترتيب. كل تصحيح مضغوط بصيغة LZ4 (`*.patch.lz4`) ويتم تطبيقه باستخدام `lz4cat … | patch -p1`. تحمل التصحيحات إصدار الإصدار الحالي.
5. **يضبط صلاحيات التنفيذ** على عدد قليل من البرامج النصية التي تحتاجها (مثل `emu.sh`، `host_tools/mkgpt.py`).

الأدوات المطلوبة هي `git`، `patch`، و `lz4cat` (من حزمة `lz4`)؛ يتحقق البرنامج النصي من وجودها مقدمًا ويخبرك بكيفية تثبيت أي منها مفقود.
تنزيل الأداة