Skip to content
ROOTTASK / PID 1
🌱The Genesis Container
🌟

حاوية init

نقطة البداية لكل شيء (The RootTask). الحاوية الأم التي توقظها النواة وتُسلّمها كل موارد النظام. مسؤولة عن خلق جميع الحاويات الأخرى، توزيع الذاكرة، وبناء شجرة القدرات (Capabilities) للنظام بأكمله.

👑RootTaskSupreme
🧠Untyped MemoryManager
🏗️ELF LoaderBootstrapper
🚀App LauncherIPC Listener
🌳

شجرة الإقلاع (The Genesis Tree)

💡
مبدأ التفويض المطلق (Delegation) في هندسة `seL4`، النواة لا تنشئ العمليات! النواة تكتفي بإنشاء مساحة مستخدم واحدة فقط تسمى `RootTask` (وهي حاوية `init`). تُعطي النواة هذه الحاوية الصلاحية المطلقة على كل الذاكرة وكل العتاد، ثم تقع مسؤولية بناء النظام بالكامل وتوزيع الصلاحيات على عاتق `init`.
⚙️
seL4 Kernelنواة النظامHardware Mode
🌟
Init (RootTask)الحاوية الأمPID 1 / User Space
🧠
Untyped Memoryالذاكرة الحرةAllocator
🎫
Slot Allocatorإدارة القدراتCapabilities
🏗️
ELF Loaderمُحمّل البرامجBinary Parser
Cryptoتشفير
Netالشبكة
Diskالأقراص
FSنظام الملفات
Authالصلاحيات
Busالناقل
Desktopسطح المكتب
🌊

دورة حياة الذاكرة (Memory Lifecycle)

🧠Untyped Memory
(managed by talc)
🎫Slot Allocator
(Capabilities)
🗂️VSpace / CNode
(Memory Map)
🧩ELF Loader
(xmas-elf)
🚀Ready Container
(User Space)
💻

تسلسل الإقلاع (Live Boot Sequence)

kernel_log_tty0
dmesg
[Kernel] Starting RootTask...
[Init] Booting HEROBAN-seL4 User Space...
[Init] Initializing UntypedAllocator & SlotAllocator...
[Init] Crypto_Vault successfully loaded and started!
[Init] Network Gateway successfully loaded and started!
[Init] Disk Vault successfully loaded and started!
[Init] FS Vault successfully loaded and started!
[Init] Shared memory mapped between FS and Disk successfully at 0x600000!
[Init] Auth Vault successfully loaded and started!
[Init] Bus_Vault successfully loaded and started!
[Init] Desktop container loaded successfully.
[Init] Input_Vault container loaded successfully.
[Init] All containers launched. Listening for app launch requests...
--------------------------------------------------------
> [Init] Launch request for: Terminal
> [Init] Loading Terminal ELF from Registry...
_
📡

حلقة الاستماع (App Launcher IPC)

بعد إقلاع النظام، تتحول حاوية init إلى خادم ينتظر طلبات تشغيل التطبيقات من حاوية Desktop.

0x0200 (LaunchApp)
يستقبل طلب تشغيل برنامج جديد من واجهة سطح المكتب (Desktop). يقرأ اسم البرنامج من MR[1..4] ويبحث عنه في سجل البرامج (Registry) ليقوم بإطلاقه.
_ (Unknown/Fault)
يطبع معلومات عن أي اتصال IPC غير متوقع أو خطأ (Fault) للمساعدة في تصحيح أخطاء النظام (Debugging).
⚙️

المسؤوليات الجوهرية (Core Responsibilities)

# 01
🌱

الحاوية الأم (The RootTask)

الحاوية الأولى والوحيدة التي تبدأها نواة seL4 مباشرة. هي نقطة انطلاق مساحة المستخدم (User Space) وأساس النظام.

# 02
🧠

إدارة الذاكرة الأولية (Memory Allocation)

تمتلك كل الذاكرة الحرة في النظام عند بدء التشغيل وتديرها عبر UntypedAllocator لمنحها لباقي الحاويات عند إنشائها.

# 03
🎫

إدارة القدرات (Capability Management)

مسؤولة عن توزيع صلاحيات الوصول (Capabilities) من خلال SlotAllocator لربط الحاويات مع بعضها بشكل آمن.

# 04
🚀

إقلاع النظام (System Bootstrapping)

تقوم بفك ضغط وتحميل وإطلاق جميع الحاويات الأساسية بترتيب دقيق: (Crypto, Net, Disk, FS, Auth, Bus, Desktop, Input).

# 05
🔗

إنشاء قنوات الاتصال (IPC Endpoints)

تُنشئ قنوات اتصال IPC وتربطها بين الحاويات. على سبيل المثال، تمرر نقطة اتصال FS_Vault إلى Desktop ليتمكن من التفاعل معه.

# 06
🤝

إعداد الذاكرة المشتركة (Shared Memory)

تنشئ وتربط الذاكرة المشتركة للعمليات التي تتطلب نقل بيانات كبير، مثل ربط Disk_Vault مع FS_Vault عبر عنوان 0x600000.

# 07
📦

إدارة سجل البرامج (Program Registry)

تحمل أرشيف البرامج والتطبيقات المتاحة وتقوم بإعدادها للتشغيل بناءً على طلب المستخدم عبر واجهة سطح المكتب.

# 08
🛡️

معالجة الانهيار (Panic Handler)

تحتوي على آلية أمان للتعامل مع أخطاء الانهيار الحرج (Panic) لإيقاف تنفيذ النظام بشكل آمن ومنع أي سلوك غير محدد.

📁

البنية البرمجية (Source Files)

🦀

src/main.rs

Root Entry
containers/init/src/main.rs
~200 سطر

الملف الأهم في النظام. يحتوي على تسلسل الإقلاع، إعداد مديرات الذاكرة (Allocators)، وتحميل كل حاوية من صورة ELF الخاصة بها عبر وحدات setup منفصلة.

🔍 المكونات الأساسية
دالة البداية
_start -> rust_main
الذاكرة
untyped_allocator & slot_allocator
الذاكرة المشتركة
seL4_X86_Page_Map
حلقة الاستماع
LaunchApp Listener (0x0200)
🛠️

src/*_setup.rs

Setup Modules
containers/init/src/
متعدد الملفات

مجموعة من الملفات الفرعية (مثل auth_setup.rs, fs_setup.rs) كل منها مختص بإعداد الـ VSpace والـ CNode وتمرير القدرات (Capabilities) لحاوية معينة.

🔍 المكونات الأساسية
التفويض (Delegation)
نسخ Endpoints من init للحاوية الجديدة
إعداد الـ Stack
تجهيز مساحة مكدس مؤمنة لكل حاوية
📦

Cargo.toml

Package Config
containers/init/Cargo.toml
~18 سطر

يعرف الاعتماديات الجوهرية لحاوية الإقلاع والتي تشمل مكتبات النظام ومكتبات الطرف الثالث الموثقة التي يعتمد عليها النظام لبناء الحاويات الأخرى.

🔍 المكونات الأساسية
الاسم
init (v0.1.0)
الذاكرة (Heap)
talc = "4" & spin = "0.9"
تحليل ELF
xmas-elf = "0.9"
📚

المكتبات المساعدة (Dependencies)

# 01
⚙️

xmas-elf

crates.io
🌐 مكتبة خارجية

مكتبة خارجية موثقة ومختبرة عالمياً تُستخدم بدلاً من `elf-parser` القديمة لتحليل مقاطع ملفات ELF بأمان وفاعلية.

# 02
⚙️

talc

crates.io
🌐 مكتبة خارجية

مكتبة خارجية عالية الأداء لإدارة تخصيص الذاكرة (O(1) allocation) استُخدمت كبديل لـ bump-alloc القديمة لتوفير دعم للـ Heap بشكل آمن في init.

# 03
⚙️

sel4-sys

libs/sel4-sys
🛠️ مكتبتنا

تستخدم بشكل مكثف جداً في Init لإنشاء الـ CNode، الـ VSpace، توزيع الـ Untyped Memory، ونداءات الـ Page Mapping.

جميع الحقوق محفوظة © 2026 Qtoom