Hi Julian,
On 2025/3/21 21:17, Julian Stecklina wrote:
On Fri, 2025-03-21 at 13:27 +0800, Gao Xiang wrote:
Hi Christoph,
On 2025/3/21 13:01, Christoph Hellwig wrote:
We've been trying to kill off initrd in favor of initramfs for about
two decades. I don't think adding new file system support to it is
helpful.
Disclaimer: I don't know the background of this effort so
more background might be helpful.
So erofs came up in an effort to improve the experience for users of NixOS on
smaller systems. We use erofs a lot and some people in the community just
consider it a "better" cpio at this point. A great property is that the contents
stays compressed in memory and there is no need to unpack anything at boot.
Others like that the rootfs is read-only by default. In short: erofs is a great
fit.
Of course there are some solutions to using erofs images at boot now:
https://github.com/containers/initoverlayfs
But this adds yet another step in the already complex boot process and feels
like a hack. It would be nice to just use erofs images as initrd. The other
building block to this is automatically sizing /dev/ram0:
https://lkml.org/lkml/2025/3/20/1296
I didn't pack both patches into one series, because I thought enabling erofs
itself would be less controversial and is already useful on its own. The
autosizing of /dev/ram is probably more involved than my RFC patch. I'm hoping
for some input on how to do it right. :)
Ok, my own thought is that cpio format is somewhat inflexible. It
seems that the main original reason for introducing initramfs and
cpio was to avoid double caching, but it can be resolved with FSDAX
now and initdax totally avoids unnecessary cpio parsing and unpacking.
cpio format is much like tar which lacks of basic features like
random access and xattrs which are useful for some use cases as
I mentioned before.
The initrd image can even compressed as a whole and decompress in
the current initramfs way. If you really need on-demand
decompression, you could leave some file compresssed since EROFS
supports per-inode compression, but those files are still double
caching since FSDAX mode should be uncompressed to support mmap.
You could leave rare-used files compressed.
Thanks,
Gao Xiang