I think you are right in all.
The difference is easy to see if you follow the steps needed when booting:
initrd
- A
ramdevblock device is created. It is a ram-based block device, that is a simulated hard disk that uses memory instead of physical disks. - The
initrdfile is read and unzipped into the device, as if you didzcat initrd | dd of=/dev/ram0or something similar. - The
initrdcontains an image of a filesystem, so now you can mount the filesystem as usual:mount /dev/ram0 /root. Naturally, filesystems need a driver, so if you use ext2, the ext2 driver has to be compiled in-kernel. - Done!
initramfs
- A
tmpfsis mounted:mount -t tmpfs nodev /root. The tmpfs doesn’t need a driver, it is always on-kernel. No device needed, no additional drivers. - The
initramfsis uncompressed directly into this new filesystem:zcat initramfs | cpio -i, or similar. - Done!
And yes, it is still called initrd in many places although it is a initramfs, particularly in boot loaders, as for them it is just a BLOB. The difference is made by the OS when it boots.