मैं initrd के बारे में सामान सीखने की कोशिश कर रहा हूँ। मैंने अपने ट्यूटोरियल को खरोंच से बनाने के लिए इस ट्यूटोरियल का अनुसरण किया है , और मैंने इस पर बिजीबॉक्स स्थापित किया है। तब मैंने आइसोलिनक्स के साथ इसमें से एक आइसो बनाया, इसलिए मैं इसे वर्चुअलबॉक्स में टेस्ट कर सकता था। यह बहुत अच्छा काम करता है!
मेरे पास व्यस्त बॉक्स से मूल कमांड हैं, इसलिए मैं एक फाइल सिस्टम माउंट करना चाहता था। लेकिन / देव निर्देशिका लगभग खाली है (कोई एसडीए), ट्यूटोरियल का पालन करते समय मेरे द्वारा बनाई गई कुछ फ़ाइलों को छोड़कर। मुझे udv के बारे में पता चला और मुझे लगता है कि मुझे यही चाहिए। हालांकि मुझे यकीन नहीं है कि इस पर कैसे जाना है।
क्या मुझे केवल udev से नवीनतम स्रोत कोड को पकड़ना चाहिए, इसे संकलित करना चाहिए और इसे अपने initrd में जोड़ना चाहिए? और फिर कॉल / बिन / udev या ऐसा कुछ मेरे इनिट स्क्रिप्ट में? या वहाँ एक और / बेहतर तरीका है / देव निर्देशिका आबाद?
संपादित करें: कुछ अतिरिक्त जानकारी और अपडेट जो मैंने पहले ही किए हैं।
- मैं आभासी बॉक्स में सब कुछ परीक्षण करता हूं। मैंने अभी-अभी ubuntu को वर्चुअल बॉक्स में कम से कम स्थापित किया है, अपने initrd से .iso बनाया है, और फिर virtualbox में iso से बूट किया है।
- मैंने vmlinuz का उपयोग किया और
/lib/modulesजो एक डेबियन-बिज़नेसकार्ड.आईएसओ पर मौजूद थे और उन लोगों को अपने इनिटर्ड पर कॉपी किया जो मैंने पहले लिंक किए गए ट्यूटोरियल का अनुसरण करके बनाया था। - कर्नेल के पास है
CONFIG_DEVTMPFS=y - कुछ डिवाइस में
/devtty0-tty63 और कुछ अन्य जैसे दिखते हैं, लेकिन कोई sda / hda नहीं है। - दौड़ा
lspci -kमेरी वर्तमान में चल ओएस में और एक आभासी बॉक्स में जाँच करने के लिए जो मॉड्यूल उपयोग में हैं।SATA Controllerकहते हैं कि यहahciमॉड्यूल के रूप में उपयोग करता है । - जब मैं निष्पादित
modprobe -v ahciकरता हूं, तो यह "अज्ञात प्रतीक: ata_some_stuff" के बारे में बहुत शिकायत करता है, लेकिन इसके बाद यह कुछ इस तरह लौटता हैSCSI Subsystem initialized,ATA-6: VBOX HARDDISKऔरDirect-Access ATA VBOX HARDDISK। हालाँकि, अभी भी कोई हार्डड्राइव डिवाइस नहीं मिला है/dev।
मेरी वर्तमान /init/स्क्रिप्ट इस प्रकार है:
#!/bin/ash
mount -t devtmpfs none /dev
mount -t proc /proc /proc
mount -t sysfs none /sys
modprobe -v ahci
echo "Hello world"
exec /bin/ash --login
क्या किसी को कुछ भी पता नहीं है कि मैं क्या गलत कर रहा हूं और इसके बजाय मुझे क्या करना चाहिए?