"إذا أردت صنع فطيرة تفاح من الصفر، فعليك أولاً اختراع الكون." -- كارل ساجان
تخطيط القرص
تستخدم الصورة جدول أقسام GPT:
| القسم | الحجم | نظام الملفات | التسمية |
|---|---|---|---|
| p1 | 10G | F2FS | Fleur_de_Lys_Root |
| p2 | 20G | bcachefs | Fleur_de_Lys_Sources |
| p3 | 10G | bcachefs | Fleur_de_Lys_Home |
المتطلبات الأساسية
مضيف لينكس يتوفر فيه ما يلي:
losetup،mount،chroot(util-linux)- دعم نظامي الملفات F2FS و bcachefs (
f2fs-tools،bcachefs-tools) - مجموعة أدوات التطوير القياسية (gcc، g++، make، binutils، إلخ.)
قم بتشغيل bash tests/version-check.sh للتحقق من توفر الأدوات المطلوبة على مضيفك.
الاستخدام
جميع الأوامر تتطلب صلاحيات الجذر.
sudo make mount # ربط الصورة وتثبيت الأقسام داخل mnt_image/
sudo make run # تثبيت + ربط أنظمة الملفات الافتراضية + الدخول إلى بيئة chroot
sudo make umount # فك تثبيت كل شيء وفصل جهاز الحلقة
بناء الصورة من الصفر
لإنشاء صورة قرص فارغة جديدة (20 جيجابايت) مع جدول الأقسام وأنظمة الملفات المنسقة:
sudo bash scripts/build_os.sh
هيكل المشروع
Fleur_de_Lys.img # صورة القرص
mnt_image/ # نقطة التثبيت (يتم إنشاؤها بواسطة make mount)
Makefile # أهداف التثبيت والتشغيل والفك
docker/ # بيئة بناء دوكر متعددة المراحل
Dockerfile # طبقات البناء للمرحلة 1 و 2
engine/ # نصوص البناء (fleur-build.sh، إلخ.)
recipes/ # تعليمات بناء البرمجيات حسب المرحلة
etc/
os-release # هوية التوزيعة
scripts/
build_os.sh # إنشاء وتقسيم صورة قرص جديدة
build_img.sh # مساعد إنشاء الصورة
mount.sh # نص تثبيت قديم
tests/
version-check.sh # التحقق من متطلبات أدوات المضيف
بيئة أدوات دوكر
يتم بناء سلسلة الأدوات وأدوات النظام الوسيطة باستخدام بناء دوكر متعدد المراحل:
- المرحلة 1 (toolchain-builder): بناء المترجم (gcc/clang)، binutils، و glibc.
- المرحلة 2 (temp-tools-builder): بناء جميع الأدوات المساعدة المترجمة بشكل متقاطع (bash، coreutils، python، meson، ninja، إلخ.) داخل
/tools.
لبناء بيئة سلسلة الأدوات:
cd docker
make build
