Skip to content
VIRTUAL FILE SYSTEM LAYER
🛡️PolicyBadge Secured
📁

حاوية fs_vault

نظام الملفات المركزي الآمن لنظام Heroban OS. يجمع بين سرعة القراءة القصوى من خلال محرك RamFS مبني بالكامل في مساحة مستخدم (Zero-Heap)، ومزامنة ذكية عبر IPC مع حاوية الأقراص، مع تطبيق صارم لسياسات الأمان على مستوى كل أمر.

RamFSZero-Heap
💾Disk SyncIPC IPC_Sync
🛡️SecuredToken Verified
💻

مخرجات الحاوية الحية

root@heroban:~/fs_vault_tty
bash
[FS Vault] =============================================
[FS Vault] seL4-Vault File System Container v0.1
[FS Vault] Initializing RamFS object...
[FS Vault] mkdir /home
[FS Vault] Checking physical disk...
[FS Vault] Physical disk empty or unavailable. Using fresh RamFS.
[FS Vault] Injecting installed apps...
[FS Vault] Ready. Listening for IPC requests...
> [FS Vault] Received IPC cmd!
> [FS Vault] ListDir path: /home/user/Desktop
_
🛡️

كيفية تطبيق الأمان (Security Policy)

توضيح لكيفية فحص الحاوية لرسائل نظام الملفات والتأكد من الصلاحيات (Token Verification) بطريقة لامركزية.

🦀 Rustsrc/main.rs
// في src/main.rs: التأكد من الصلاحيات الأمنية قبل تنفيذ أمر ListDir
let cmd = msg.mr[0]; // 1 = ListDir

match cmd {
    1 => {
        // ── 🛡️ التحقق من التذكرة الأمنية ──
        let token_word = msg.mr[1];
        let target_hash = security_policy::hash_path("/home/user");
        let badge_obj = security_policy::PolicyBadge::from_badge_word(token_word);
        
        // منع أي تطبيق غير مرخص من رؤية الملفات
        if badge_obj.path_hash != target_hash || badge_obj.permission == 0 {
            print_str("[FS Vault] SECURITY ALERT: Invalid or missing token!\n");
            reply.tag = MessageTag::Err;
            return reply;
        }

        // ... [جلب محتويات مجلد بأمان تام] ...
    }
    // ...
}
📡

أوامر الخادم (IPC Commands)

أوامر نظام الملفات الـ 9 التي يفهمها خادم IPC والمهام التي تؤديها.

Command 1: ListDir
جلب محتويات مجلد محدد بناءً على صلاحيات التذكرة الأمنية (Token). يعيد البيانات بحزم 12 بايت (11 حرف للاسم + Flag).
Command 2: Fetch Shortcuts
مخصص لواجهة المستخدم (Desktop) لجلب اختصارات سطح المكتب (.vlk) وتحليل اسم البرنامج ومساره وأيقونته.
Command 3: Delete
حذف ملف أو مجلد من RamFs ومزامنة التغيير مع القرص عبر flush_to_disk.
Command 4: Rename
إعادة تسمية ملف/مجلد أو نقله إلى مسار آخر.
Command 5: Mkdir
إنشاء مجلد جديد في شجرة الملفات الافتراضية.
Command 6: Touch
إنشاء ملف فارغ جديد في الذاكرة.
Command 7: Copy
نسخ ملف من مسار إلى مسار آخر مع الحفاظ على البيانات.
Command 8: ReadFile
قراءة محتوى ملف (بحد أقصى 512 بايت) وإرساله عبر الـ Payload لرسالة الـ IPC.
Command 9: WriteFile
كتابة بيانات في ملف (الكتابة الفوقية تحذف الملف وتنشئه من جديد).
⚙️

الهندسة المعمارية للنظام

# 01

RamFS (Zero-Heap In-Memory FS)

يعتمد النظام بشكل أساسي على ملفات وهمية (Virtual) مخزنة بالكامل في الذاكرة (مصفوفة ثابتة بحجم 64 مدخل) لضمان سرعة I/O فائقة جداً (Microsecond Latency) وبدون تخصيص ذاكرة ديناميكي.

# 02
💾

المزامنة مع القرص (Disk Flush)

عند إجراء أي تعديل (إنشاء، حذف، تعديل)، يتواصل الخادم مباشرة مع Disk_Vault عبر IPC والذاكرة المشتركة (0x600000) لتخزين القطاعات.

# 03
🛡️

طبقة سياسات الأمان (Security Policy)

كل طلب IPC يُرفق بكلمة مرور (Token Word). يتحقق الخادم (عبر مكتبة security_policy) من الـ Hash للصلاحيات قبل تنفيذ أي أمر مثل ListDir.

# 04
📂

بناء الشجرة الافتراضية

عند فشل القراءة من القرص (قرص جديد)، تبني الحاوية فوراً شجرة مسارات افتراضية (/sys, /home/user, /etc, /tmp) وتزرع برامج وهمية واختصارات .vlk لتجربة سطح المكتب.

📁

توثيق الملفات البرمجية المصدريّة

بنية مجلد `src` في مسار `Hasn-Sel4/containers/fs/src` مع تحليل الكود المصدري وعدد الأسطر.

🦀

src/main.rs

Core Server
containers/fs/src/main.rs
522 سطر

القلب النابض للنظام. يبني شجرة المجلدات، يهيئ البرامج الافتراضية (Calculator و Files)، ويحتوي على حلقة IPC تعالج 9 أوامر، مع تطبيق صارم لسياسات الأمان (PolicyBadge).

🔍 أهم العناصر
Security CheckPolicyBadge::from_badge_word(token)
File Injectfs.write_file("/home/user/apps/Calculator", ...)

src/ramfs.rs

Memory FS Engine
containers/fs/src/ramfs.rs
326 سطر

محرك نظام الملفات المكتوب بالكامل بأسلوب no_std & no_alloc. يعتمد على مصفوفة ثابتة تدعم 64 ملفاً/مجلداً كحد أقصى، حجم الملف الأقصى 512 بايت.

🔍 أهم العناصر
Data Structureentries: [FsEntry; MAX_FILES]
String OpsCustom byte iterators without SIMD
💾

src/disk_writer.rs

Disk Sync Client
containers/fs/src/disk_writer.rs
165 سطر

يقوم بمزامنة شجرة RamFS مع القرص الفعلي باستخدام LBA 0 لفهرس المجلد الجذري، وباقي القطاعات للملفات. يتصل بـ Disk_Vault كعميل عبر IPC.

🔍 أهم العناصر
Shared Memory0x600000 (4096 bytes)
Root Index Size72 bytes per entry (64 path + 4 sector + 4 size)
💽

src/virtio_blk.rs

Hardware Driver
containers/fs/src/virtio_blk.rs
100 سطر

مشغل (Driver) بدائي لمتحكم Virtio-Block عبر الـ MMIO (يقرأ عناوين 0x10000000). صُمم ليكون طبقة سفلية احتياطية أو لتوسعة وظائف قراءة القطاعات المباشرة.

🔍 أهم العناصر
MMIO ScanMagic 0x74726976 ("virt")
📚

المكتبات والاعتمادات (Cargo.toml)

الاعتمادات المذكورة في ملف `Cargo.toml` والمسؤولة عن تقديم الوظائف الأساسية.

# 01
مكتبتنا
⚙️

security-policy

libs/security-policy

توفر أدوات للتحقق من صلاحيات التطبيقات وتجزئة (Hashing) مسارات الملفات لضمان عدم اختراق العزل.

# 02
مكتبتنا
⚙️

ipc-sync

libs/ipc-sync

مكتبة تمرير الرسائل.

# 03
مكتبتنا
⚙️

sel4-sys

libs/sel4-sys

للتعامل مع نداءات نظام seL4.

# 04
ليست مكتبتنا
⚙️

talc

external/talc

مُخصص ذاكرة ديناميكية.

# 05
ليست مكتبتنا
⚙️

spin

external/spin

مكتبة لأقفال Spinlocks.

# 06
ليست مكتبتنا
⚙️

arrayvec

external/arrayvec

لتوفير سلاسل نصية ومصفوفات ثابتة الحجم بدون Heap Allocation.

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