Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

rpm2img: regenerate kernel module info if possible #205

Merged
merged 1 commit into from
May 22, 2024

Conversation

bcressey
Copy link
Contributor

@bcressey bcressey commented May 1, 2024

Issue number:
Related: bottlerocket-os/bottlerocket#3932

Description of changes:
With conditional compilation being eliminated, it is no longer always the case that all of the modules built by the kernel package will be installed on all variants. For example, some network device drivers may be built as modules and only installed on bare metal variants, if the corresponding hardware is not expected to show up in virtualized environments.

This requires some care in packaging so that any module dependencies that are not provided by the kernel will be provided by other modules that are also installed. By regenerating module info at image build time, it's guaranteed to be present and correct, or otherwise the build will fail.

Testing done:
While testing the related pull request, I verified that modules in the new modules-metal package were not present in the regenerated modinfo.

I also verified that removing a dependency of a module resulted in a build failure. (depmod does not have an option to exit non-zero after emitting a warning, which is why rpm2img captures the output and inspects it with grep.)

Terms of contribution:

By submitting this pull request, I agree that this contribution is dual-licensed under the terms of both the Apache License, version 2.0, and the MIT license.

With conditional compilation being eliminated, it is no longer always
the case that all of the modules built by the kernel package will be
installed on all variants. For example, some network device drivers
may be built as modules and only installed on bare metal variants, if
the corresponding hardware is not expected to show up in virtualized
environments.

This requires some care in packaging so that any module dependencies
that are not provided by the kernel will be provided by other modules
that are also installed. By regenerating module info at image build
time, it's guaranteed to be present and correct, or otherwise the
build will fail.

Signed-off-by: Ben Cressey <bcressey@amazon.com>
@bcressey bcressey requested review from larvacea and yeazelm May 1, 2024 03:18
@webern webern mentioned this pull request May 7, 2024
5 tasks
Copy link
Contributor

@jmt-lab jmt-lab left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@bcressey bcressey merged commit 149fc91 into bottlerocket-os:develop May 22, 2024
1 check passed
@bcressey bcressey deleted the rpm2img-depmod branch May 22, 2024 00:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants