Apakah Ramdisk dan initrd sama?

10

Saat membaca dokumentasi kernel pada ramdisk di ramfs-rootfs-initramfs.txt saya mengalami keraguan seperti ramdisk menjelaskan ada sama dengan fitur initrd yang dijelaskan dalam posting di -perbedaan-antara-initrd-dan-initramfs .

Bisakah seseorang menjelaskan saya tentang ini ??

Dan jika itu sama, saya membaca bahwa ada banyak kelemahan untuk itu, tetapi masih di PC fedora saya, saya mengerti

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

di folder boot saya. Apakah berbeda dengan initrd yang disebutkan di atas ??

UPDATE_EDIT:
Dalam artikel saya bahkan melihat perintah seperti
# update-initramfs -u all
update-initramfs: Generating /boot/initrd.img-2.6.18-5-amd64

Jadi bagaimana initramfs ini terkait dengan initrd.img?

Sen
sumber

Jawaban:

13

Ramdisk adalah sekumpulan blok yang disalin ke sejumlah memori yang dialokasikan, lalu diperlakukan sebagai perangkat blok. Sistem file normal dibuat di ramdisk. Initrd (ramdisk awal) adalah ramdisk yang dipasang selama bootup.

Initramf adalah sesuatu yang berbeda. Ini adalah arsip cpio file yang dimuat saat bootup. Kernel memuat konten ke sistem file virtual yang disebutnya rootfs. Tidak seperti ramdisk, menghapus file secara langsung membebaskan memori, dan tidak ada sistem file tambahan dan lapisan blok yang terlibat.

Kedua metode menghasilkan file yang tersedia untuk kernel pada saat boot sebelum perangkat apa pun dimuat, dan dalam praktiknya Anda dapat mencapai hasil yang sama dengan keduanya. Sistem yang lebih lama menggunakan initrd (dibuat sebelum initramfs) tetapi sistem modern semuanya harus menggunakan initramfs. Anda mungkin masih melihat kata initrd merujuk pada sesuatu yang benar-benar initramfs; itu hanya penamaan demi kompatibilitas.

singkat
sumber
Terima kasih singkat, saya ingin tahu apa yang Anda maksud dengan "ramdisk adalah serangkaian blok". Bagaimana ini diperlakukan sebagai perangkat blok setelah disalin?
Sen
@ Sen: Ada rdmodul (yang kemudian diubah namanya menjadi brd, dan dapat dibangun ke dalam kernel), yang mengalokasikan banyak memori, membuat perangkat blok, dan memetakan permintaan ke / dari perangkat blok ke baca / tulis di memori.
ephemient
Bisakah Anda memberi saya lebih banyak ide tentang modul rd / brd ini?
Sen
saya juga ingin tahu bahwa jika saya telah membuat image ramdisk dengan mengikuti langkah-langkah ini: mke2fs -vm0 / dev / ram 4096; mount -t ext2 / dev / ram / mnt; cd / mnt; file cp / bin, / sbin, / etc, / dev ... di mnt; cd ../; umount / mnt; dd jika = / dev / ram bs = 1k count = 4096 dari = ext2ramdisk; Bagaimana saya mem-boot ext2ramdisk ini di perangkat saya? Hanya memuatnya ke ram, akankah itu berhasil?
Sen
@Sen: Bootloader bertanggung jawab untuk memuat kernel dan init (rd | ramfs) ke dalam RAM; lihat dokumentasi bootloader Anda. Tetapi bahkan jika Anda sedang membangunnya dengan tangan (mengapa ??) Anda harus menggunakannya find /bin /sbin /etc /dev ... | cpio -o | gzip -c > initramfssebagai ganti initrd.
ephemient