"यदि आप शून्य से एक एप्पल पाई बनाना चाहते हैं, तो पहले ब्रह्मांड का आविष्कार करें।" -- कार्ल सैगन
डिस्क लेआउट
छवि एक 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 # माउंट + बाइंड वर्चुअल फ़ाइलसिस्टम्स + चरूट शेल में प्रवेश करें
sudo make umount # सब कुछ अनमाउंट करें और लूप डिवाइस को अलग करें
## शून्य से इमेज बनाना
पार्टीशन टेबल और फ़ॉर्मेट किए गए फ़ाइलसिस्टम्स के साथ एक नई खाली डिस्क इमेज (20 GB) बनाने के लिए:
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 (टूलचेन-बिल्डर):** कंपाइलर (gcc/clang), बाइनयूटिल्स, और ग्लिबसी को बूटस्ट्रैप करता है।
- **स्टेज 2 (temp-tools-builder):** सभी क्रॉस-कंपाइल्ड यूटिलिटीज़ (bash, coreutils, python, meson, ninja, आदि) को `/tools` में बिल्ड करता है।
टूलचेन वातावरण को बिल्ड करने के लिए:
```bash
cd docker
make build
