From bf48cd27f5b987594ad6fb7c10959cde6c5cd3ef Mon Sep 17 00:00:00 2001 From: robojerk Date: Mon, 1 Sep 2025 17:56:35 +0000 Subject: [PATCH] Add dracut.md --- dracut.md | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 dracut.md diff --git a/dracut.md b/dracut.md new file mode 100644 index 0000000..c158802 --- /dev/null +++ b/dracut.md @@ -0,0 +1,36 @@ +# How Dracut and OSTree Work Together + +The Fedora discussion explains the relationship between Dracut and OSTree: + +1. **Initramfs Generation**: In OSTree systems, the initramfs is generated when building the OSTree commit, not on the target system. The `98ostree/module-setup.sh` module ensures the initramfs contains the necessary hooks for OSTree's pivot root magic. + +2. **OSTree Integration**: OSTree manages the boot process directly through code like `ostree-bootloader-grub2.c`, and both the kernel and initramfs are stored in the OSTree commit. + +3. **Local Rebuilds**: If you override kernel packages, rpm-ostree can rebuild the initramfs locally and place it in the appropriate location in a locally generated commit. + +## Modern Approaches for Initramfs Customization + +The GitHub issue discusses a more sophisticated approach called `initramfs-setup` that's being developed for Universal Blue projects: + +### Benefits of File-Based Approach +- **Cleaner deployments**: Uses files instead of kernel arguments, making it easier to track and remove modifications +- **Seamless rebasing**: Automatically handles cleanup when switching between different images +- **Better maintainability**: Supports abstracted modifications through YAML files + +### Current Implementation Challenges +The discussion mentions that existing implementations like Bazzite's `bazzite-hardware-setup` have limitations: +- Manual intervention required for some operations +- Limited logging and automatic detection capabilities +- Potential conflicts with RPM packages that also modify initramfs + +## Practical Methods + +For including files in initramfs on Fedora OSTree systems, you have several options: + +1. **rpm-ostree initramfs**: Use `rpm-ostree initramfs --enable` to rebuild initramfs with custom configurations +2. **Dracut modules**: Create custom dracut modules to include specific files +3. **Container-based builds**: Use projects like BlueBuild to create custom images with initramfs modifications baked in + +The trend seems to be moving toward more automated, container-based approaches that handle initramfs modifications as part of the image build process, making them more maintainable and reducing the chance of conflicts during system updates. + +Would you like me to elaborate on any specific aspect of these approaches or help you implement a particular solution? \ No newline at end of file