क्या रामदिस्क और initrd एक ही है?


10

रामफिस्क पर कर्नेल प्रलेखन के माध्यम से पढ़ते समय ramfs-rootfs-initramfs.txt में मुझे संदेह हो रहा था जैसे कि रामदिस्क ने समझाया था कि पोस्ट में वर्णित अंतर-सुविधाओं के बीच अंतर-initrd-and-initramfs में वर्णित समान विशेषताएं हैं ।

क्या कोई मुझे इस पर स्पष्ट कर सकता है ??

और अगर यह समान है, तो मैंने पढ़ा कि इसके कई नुकसान हैं, लेकिन फिर भी मेरे फेडोरा पीसी में, मैं देख रहा हूं

initrd-2.6.29.4-167.fc11.i686.PAE.img

मेरे बूट फ़ोल्डर में। क्या यह ऊपर वर्णित initrd से अलग है ??

UPDATE_EDIT:
की में लेख मैं भी तरह एक कमांड देखा
# update-initramfs -u all
update-initramfs: Generating /boot/initrd.img-2.6.18-5-amd64

तो यह initramfs initrd.img से कैसे जुड़ा है?

जवाबों:


13

एक रैमडिस्क ब्लॉक का एक सेट है जिसे मेमोरी के आवंटित चंक में कॉपी किया जाता है, फिर ब्लॉक डिवाइस के रूप में माना जाता है। रैमडिस्क पर एक सामान्य फाइलसिस्टम बनाया जाता है। Initrd (प्रारंभिक रैमडिस्क) एक रैमडिस्क है जो बूटअप के दौरान आरोहित होता है।

Initramfs कुछ अलग है। यह बूटप के दौरान लोड की गई फ़ाइलों का cpio संग्रह है। कर्नेल एक वर्चुअल फाइलसिस्टम में सामग्रियों को लोड करता है जिसे रूटफ्स कहते हैं। एक रैमडिस्क के विपरीत, फ़ाइलों को हटाने से सीधे मेमोरी खाली हो जाती है, और इसमें कोई अतिरिक्त फाइल सिस्टम और ब्लॉक परत शामिल नहीं होती है।

किसी भी डिवाइस को लोड करने से पहले दोनों तरीकों से फाइल कर्नेल में बूट समय पर उपलब्ध होती है, और इसलिए व्यवहार में आप दोनों के साथ समान परिणाम प्राप्त कर सकते हैं। पुराने सिस्टम initrd का उपयोग करते हैं (यह initramfs से पहले बनाया गया था) लेकिन आधुनिक सिस्टम को सभी initramfs का उपयोग करना चाहिए। आप अभी भी initrd शब्द को किसी ऐसी चीज के संदर्भ में देख सकते हैं जो वास्तव में initramfs है; यह अनुकूलता के लिए सिर्फ नामकरण है।


धन्यवाद सूचक, मैं जानना चाहता हूं कि "रामदिस्क आपके लिए ब्लॉक का एक सेट है"। इसे कॉपी करते ही ब्लॉक डिवाइस के रूप में कैसे माना जाता है?
सेन

@ सीन: एक rdमॉड्यूल है (जिसे बाद में नाम दिया गया है brd, और कर्नेल में बनाया जा सकता है), जो मेमोरी का एक गुच्छा आवंटित करता है, एक ब्लॉक डिवाइस बनाता है, और ब्लॉक डिवाइस से / रीड / मेमोरी में लिखने के लिए मैप्स रिक्वेस्ट करता है।
युगान्तर

क्या आप मुझे इस rd / brd मॉड्यूल के बारे में कुछ और विचार दे सकते हैं?
सेन

मैं यह भी जानना चाहूंगा कि अगर मैंने इन चरणों का पालन करके एक रामदिस्क छवि बनाई है: mke2fs -vm0 / dev / ram 4096; आर-पार ext2 / dev / ram / mnt; सीडी / एमटीटी; cp / bin, / sbin, / etc, / dev ... फ़ाइल में mnt; cd ../; umount / mnt; dd if = / dev / ram bs = 1k count = 4096 = ext2ramdisk; मैं अपने डिवाइस में इस ext2ramdisk को कैसे बूट करूंगा? बस इसे लोड करने के लिए RAM, यह काम करेगा?
सेन

@ सीन: कर्नेल और इनिट (rd | ramfs) दोनों को रैम में लोड करने के लिए बूटलोडर जिम्मेदार है; अपने बूटलोडर के दस्तावेज़ देखें। लेकिन भले ही आप इसे हाथ से बना रहे हों (क्यों ??) आपको find /bin /sbin /etc /dev ... | cpio -o | gzip -c > initramfsinitrd के बजाय उपयोग करना चाहिए ।
युगांतर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.