|
Bugzilla – Full Text Bug Listing |
| Summary: | mkinitrd should not check the running kernel | ||
|---|---|---|---|
| Product: | [openSUSE] openSUSE 11.2 | Reporter: | Andreas Gruenbacher <agruen> |
| Component: | Basesystem | Assignee: | Michal Marek <mmarek> |
| Status: | RESOLVED FIXED | QA Contact: | E-mail List <qa-bugs> |
| Severity: | Normal | ||
| Priority: | P4 - Low | CC: | agraf, hare, jeffm, mmarek, mvancura |
| Version: | unspecified | ||
| Target Milestone: | --- | ||
| Hardware: | Other | ||
| OS: | Other | ||
| Whiteboard: | |||
| Found By: | --- | Services Priority: | |
| Business Priority: | Blocker: | --- | |
| Marketing QA Status: | --- | IT Deployment: | --- |
| Attachments: | Buggy check | ||
Yes, we know it's broken. But the real fix would indeed create some kbuild magic which puts all compiled-in module name into the kernel somewhere. But knowing little-to-none about kbuild internals I'm not really qualified for doing a patch. Mkinitrd can not distinguish between "a module isn't there" and "the module is compiled into the kernel" atm. We would definitely need some magic exported from the kernel build system that tells us "this would've been a module, but it's compiled into the kernel". Andreas, do you know who could write such an enhancement for the kernel build system? I'm adding Michal; he may be interested in looking into this at some point. Andreas, did you get any response from Sam? No, sorry. He seems to be very busy with other things lately. I think the best approach would be to hack this up and send a proposal to linux-kbuild@vger.kernel.org. It shouldn't be hard to do. For SLE11 it's a bit late already, though. ok. I sent a patch to Sam, let's see what's his opinion. Fixed in kernel and module-init-tools. |
Created attachment 242101 [details] Buggy check When computing the list of modules which should be included in the initrd, mkinitrd tries to be smart about modules which used to be standalone, and which have been built into the main kernel image later. There is no way to determine which modules have been built into a kernel, so mkinitrd currently looks at the running kernel and tries to guess from the contents of /sys/modules whether a module has likely become a built-in. This is broken. Nevertheless, we want to keep kernel upgrade paths painless and so failing mkinitrd whenever a module cannot be found is not acceptable. I have sent a proposal how to fix this to the upstream kbuild maintainer (Hannes, you were CCed). The proposal is to compute the list of built-in modules and attach that to the kernel image, or at least the kernel package. I am attaching a patch showing where mkinitrd gets this wrong.