36 lines
No EOL
2.3 KiB
Markdown
36 lines
No EOL
2.3 KiB
Markdown
# 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? |