Ramdisk และเริ่มเหมือนกันหรือไม่?


10

ขณะที่อ่านผ่านเอกสาร kernel ใน ramdisk ใน ramfs-rootfs-initramfs.txtผมมีข้อสงสัยเช่น ramdisk อธิบายมีเช่นเดียวกับคุณสมบัติ initrd อธิบายไว้ในโพสต์ที่ที่แตกต่างระหว่าง initrd และ initramfs

มีคนช่วยอธิบายเรื่องนี้ให้ฉันหน่อยได้ไหม?

และถ้ามันเหมือนกันฉันอ่านว่ามีข้อเสียมากมายสำหรับมัน แต่ยังอยู่ใน fedora PC ของฉันฉันเห็น

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

ในโฟลเดอร์บูตของฉัน มันแตกต่างจากผู้เริ่มต้นที่กล่าวถึงข้างต้นหรือไม่?

UPDATE_EDIT:
ใน บทความที่ฉันยังเห็นคำสั่งเช่น
# update-initramfs -u all
update-initramfs: Generating /boot/initrd.img-2.6.18-5-amd64

ดังนั้น initramfs นี้เชื่อมโยงกับ initrd.img อย่างไร

คำตอบ:


13

ramdisk เป็นชุดของบล็อกที่ได้รับการคัดลอกไปยังหน่วยความจำที่จัดสรรแล้วถือว่าเป็นอุปกรณ์บล็อก ระบบไฟล์ปกติถูกสร้างขึ้นบน ramdisk initrd (ramdisk เริ่มต้น) เป็น ramdisk ที่ติดตั้งระหว่างการบูทเครื่อง

initramfs นั้นต่างออกไป เป็นไฟล์เก็บถาวร cpio ของไฟล์ที่โหลดระหว่างการบูทเครื่อง เคอร์เนลโหลดเนื้อหาลงในระบบไฟล์เสมือนที่เรียกรูต ซึ่งแตกต่างจาก ramdisk การลบไฟล์จะเพิ่มหน่วยความจำโดยตรงและไม่มีระบบไฟล์และเลเยอร์บล็อกที่เกี่ยวข้อง

ทั้งสองวิธีทำให้ไฟล์พร้อมใช้งานสำหรับเคอร์เนล ณ เวลาบูตก่อนที่จะโหลดอุปกรณ์ใด ๆ และดังนั้นในทางปฏิบัติคุณสามารถบรรลุผลลัพธ์ที่คล้ายกันกับทั้งคู่ ระบบเก่าใช้ initrd (มันถูกสร้างขึ้นก่อน initramfs) แต่ระบบที่ทันสมัยควรทั้งหมดกำลังใช้ initramfs คุณอาจยังเห็นคำว่า initrd อ้างอิงถึงบางสิ่งที่เป็นชื่อเริ่มต้นจริง ๆ มันเป็นเพียงการตั้งชื่อเพื่อประโยชน์ของความเข้ากันได้


ขอบคุณ ephemient ฉันอยากจะรู้ว่าคุณหมายถึงอะไร "ramdisk เป็นชุดของบล็อก" วิธีนี้จะถือว่าเป็นอุปกรณ์บล็อกเมื่อมันถูกคัดลอก?
Sen

@Sen: มีrdโมดูล (ภายหลังเปลี่ยนชื่อเป็นbrdและอาจถูกสร้างขึ้นในเคอร์เนล) ซึ่งจัดสรรพวงของหน่วยความจำสร้างอุปกรณ์บล็อกและแมปคำขอไปยัง / จากอุปกรณ์บล็อกเป็นอ่าน / เขียนในหน่วยความจำ
ephemient

คุณช่วยให้ฉันมีความคิดเพิ่มเติมเกี่ยวกับโมดูล rd / brd นี้ได้ไหม
Sen

ฉันยังต้องการที่จะรู้ว่าถ้าฉันได้สร้างภาพ ramdisk โดยทำตามขั้นตอนเหล่านี้: mke2fs -vm0 / dev / ram 4096; เมาท์ -t ext2 / dev / ram / mnt; cd / mnt; cp / bin, / sbin, / etc, / dev ... ไฟล์ใน mnt; cd ../; จำนวน / mnt; dd if = / dev / ram bs = 1k count = 4096 จาก = ext2ramdisk; ฉันจะบูต ext2ramdisk นี้ในอุปกรณ์ของฉันได้อย่างไร เพิ่งโหลดไปที่ ram มันจะใช้งานได้ไหม
Sen

@Sen: bootloader มีหน้าที่โหลดทั้งเคอร์เนลและ init (rd | ramfs) ลงใน RAM; ดูเอกสารประกอบของ bootloader ของคุณ แต่แม้ว่าคุณจะสร้างมันด้วยมือ (ทำไม ??) คุณควรใช้find /bin /sbin /etc /dev ... | cpio -o | gzip -c > initramfsแทน initrd
ephemient
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.