Ramdisk e initrd sono uguali?


10

Durante la lettura della documentazione del kernel su ramdisk in ramfs-rootfs-initramfs.txt ho avuto dei dubbi come il ramdisk spiegato che ci sono le stesse caratteristiche di initrd descritte nel post nella differenza-tra-initrd-e-initramfs .

Qualcuno potrebbe chiarirmi su questo ??

E se è lo stesso, leggo che ci sono molti svantaggi per questo, ma ancora nel mio PC fedora, vedo

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

nella mia cartella di avvio. È diverso da quello di cui sopra ??

UPDATE_EDIT:
In degli articoli ho anche visto un comando simile
# update-initramfs -u all
update-initramfs: Generating /boot/initrd.img-2.6.18-5-amd64

Quindi, come si collega initramfs a initrd.img?

Risposte:


13

Un ramdisk è un insieme di blocchi che viene copiato in un blocco di memoria allocato, quindi trattato come un dispositivo a blocchi. Un file system normale viene creato sul ramdisk. Initrd (ramdisk iniziale) è un ramdisk che viene montato durante l'avvio.

Initramfs è qualcosa di diverso. È un archivio cpio di file che viene caricato durante l'avvio. Il kernel carica il contenuto in un filesystem virtuale che chiama rootfs. A differenza di un ramdisk, l'eliminazione dei file libera direttamente la memoria e non è richiesto alcun file system aggiuntivo e livello di blocco.

Entrambi i metodi fanno sì che i file siano disponibili per il kernel all'avvio prima che tutti i dispositivi siano stati caricati, quindi in pratica è possibile ottenere risultati simili con entrambi. I sistemi più vecchi usano initrd (è stato creato prima di initramfs) ma i sistemi moderni dovrebbero usare initramfs. Potresti ancora vedere la parola initrd in riferimento a qualcosa che è veramente un initramfs; è solo nominare per motivi di compatibilità.


Grazie effimero, vorrei sapere cosa intendevi per "ramdisk è un insieme di blocchi". Come viene trattato come un dispositivo a blocchi una volta che è stato copiato?
Sen

@Sen: esiste un rdmodulo (in seguito rinominato brde potrebbe essere integrato nel kernel), che alloca un mucchio di memoria, crea un dispositivo a blocchi e mappa le richieste da / verso il dispositivo a blocchi in lettura / scrittura in memoria.
effimero

Puoi darmi qualche idea in più su questo modulo rd / brd?
Sen

vorrei anche sapere che se ho creato un'immagine ramdisk seguendo questi passaggi: mke2fs -vm0 / dev / ram 4096; mount -t ext2 / dev / ram / mnt; cd / mnt; file cp / bin, / sbin, / etc, / dev ... in mnt; cd ../; umount / mnt; dd if = / dev / ram bs = 1k count = 4096 di = ext2ramdisk; Come posso avviare questo ext2ramdisk sul mio dispositivo? Basta caricarlo sul pistone, funzionerà?
Sen

@Sen: Il bootloader è responsabile del caricamento sia del kernel che di init (rd | ramfs) nella RAM; consultare la documentazione del proprio bootloader. Ma anche se lo stai costruendo a mano (perché ??) dovresti usare find /bin /sbin /etc /dev ... | cpio -o | gzip -c > initramfsinvece di initrd.
effimero
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.