Re: [PATCH 0/2] Add support to have multi-purpose builds into a single initramfs image
Hari Bathini <[email protected]> Sat, 15 May 2021 15:27:31 +0530
| Newsgroups | org.kernel.vger.initramfs |
|---|---|
| Message-ID | <[email protected]> |
Hi Kairui, On 14/05/21 2:40 pm, Kairui Song wrote: > Hi Hari, > > On Fri, May 14, 2021 at 4:57 AM Hari Bathini <[email protected]> wrote: >> >> With the addition of modules.d/99squash module, most of the files in >> the initramfs image can now be squash'ed. While this saves space, this >> can also be extended further to provide support for having different >> initramfs images built into a single image, each squash'ed separately >> & activated based on different boot scenarios. >> >> For that, introduce two dracut options. One, '--squash-input-images': >> takes a space-separated list of input initramfs images to squash & >> include in the initramfs image. Patch one adds this option. >> >> Two, '--squash-image-conditional': takes a script file that sets up >> the appropriate squash image for every possible boot scenario. The >> second patch introduces this option. >> >> --- >> >> Hari Bathini (2): >> dracut: add a new argument "--squash-input-images" >> dracut/99squash: make sqaush image setup flexible >> >> >> dracut.sh | 26 +++++++- >> modules.d/99squash/module-setup.sh | 17 ++++- >> .../99squash/setup-squash-conditional.sh | 65 +++++++++++++++++++ >> .../99squash/squash-image-conditional.sh | 5 ++ >> 4 files changed, 109 insertions(+), 4 deletions(-) >> create mode 100755 modules.d/99squash/setup-squash-conditional.sh >> create mode 100755 modules.d/99squash/squash-image-conditional.sh >> >> -- >> 2.31.1 >> > > There are some major refactoring of the dracut squash module, see: > https://github.com/dracutdevs/dracut/pull/1088 > > With this refactor, now the whole initramfs is compressed in the > squash image, no longer blended with the original initramfs. > So the re-squash of the "input image content" in this series can be skipped. > > I think at least the series needs a rebase. > > And I think maybe we can make things easier and flexible here to just > add an argument like a `--custom-init` (or any other name, I'm bad at > naming things), to allow user to use a custom init process, dracut can > just move the old `init` to something like `init.dracut`, and custom > init can either `exec init.dracut`, or do custom init in its own way. > > User can combine dracut's `--include` and new `--custom-init` to do > things like this patch. > > I know this patch series will benefit fadump, so use that as an > example. The initarmfs can be generated with `dracut --custom-init > /path/fadump-init.sh --include /path/fadump-squash.img ... <other > args>`. fadump-init.sh here will judge if it's fadump boot, and > switch_root into fadump-squash.img if it is, or `exec /init.dracut` if > it's not. fadump-squash.img is just the image extracted from a normal > kdump initramfs with `lsinitrd /path/initramfs-kdump.img > squash-root.img` (after the squash refactor, the squash-root.img is a > complete environment so it can be used directly). > > And I also have another idea about this. Since linux's initramfs can > be simply contacted together, user can just create it's own overlay > initramfs and append into the original initramfs. The later appended > initramfs content will just override the original, any custom > modifications can be done that way, no need to rebuild the original > initramfs. Still use fadump as an example, create a `fadump.img`, > which contain three parts: a custom init, dracut's default init > (extracted from the original initramfs), and fadump-squash.img > (extracted from kdump initramfs). Then just `cat fadump.img >> > original-initramfs.img`. > > And perhaps you can use Github PR to submit patch updates? Most dracut > related patches are processed using Github PR workflow. Thanks for the review. I assumed code on kernel.org & github.com would be the same. I should have checked that.Naive on my part. Sorry! I will rebase, work on you suggestions and submit a PR. Thanks Hari