An embedded Linux device I am working with has the following kernel parameter:
Additionally, the kernel image is bundled together with an initrd and device tree to make a flattened image tree, or FIT image.
When fully booted the device does not have persistent storage. That is, anything written to the file system is completely volatile. Considering the
root= parameter passed to the kernel, this is not surprising.
My questions is: How does this work?
I do know that Uboot copies the kernel into ram and executes it with a
bootmcommand, but where do the filesystem files come from? Are they contained within the initrd? My understanding of an initrd is that it is a temporary construct. If so, it would be an offset into FIT image blob. So, how is just passing
root=/dev/ram0sufficient for the kernel to know where its file system is?
Does the kernel perform introspection and read the FIT image's header to determine placement of constituent components?
How are file system changes supported inside a FIT image considering it will be packed together with both the kernel and device tree blob?