From: "Brian C. Lane" bcl@redhat.com
dracut depends on some of the configuration settings we write out in doConfiguration so we need to always regenerate the initramfs for the system after we write these.
-- I realized that livepayload was already doign this, and that the driver disk -- code does as well. I think this patch should cover all the cases. --- pyanaconda/install.py | 7 +++++-- pyanaconda/packaging/__init__.py | 12 +++++++++--- pyanaconda/packaging/livepayload.py | 1 - 3 files changed, 14 insertions(+), 6 deletions(-)
diff --git a/pyanaconda/install.py b/pyanaconda/install.py index ab00369..4b23016 100644 --- a/pyanaconda/install.py +++ b/pyanaconda/install.py @@ -52,12 +52,12 @@ def _writeKS(ksdata): def doConfiguration(storage, payload, ksdata, instClass): from pyanaconda.kickstart import runPostScripts
- step_count = 5 + step_count = 6 # if a realm was discovered, # increment the counter as the # real joining step will be executed if ksdata.realm.discovered: - step_count = 6 + step_count += 1 progressQ.send_init(step_count)
# Now run the execute methods of ksdata that require an installed system @@ -89,6 +89,9 @@ def doConfiguration(storage, payload, ksdata, instClass): ksdata.addons.execute(storage, ksdata, instClass, u) ksdata.configured_spokes.execute(storage, ksdata, instClass, u)
+ with progress_report(_("Generating initramfs")): + payload.recreateInitrds(force=True) + if ksdata.realm.discovered: with progress_report(_("Joining realm: %s") % ksdata.realm.discovered): ksdata.realm.execute(storage, ksdata, instClass) diff --git a/pyanaconda/packaging/__init__.py b/pyanaconda/packaging/__init__.py index a90663d..2e266a2 100644 --- a/pyanaconda/packaging/__init__.py +++ b/pyanaconda/packaging/__init__.py @@ -565,10 +565,16 @@ class Payload(object): # XXX TODO: real error handling, as this is probably going to # prevent boot on some systems
- if new_firmware: - self._recreateInitrds() + def recreateInitrds(self, force=False): + """ Recreate the initrds by calling new-kernel-pkg
- def _recreateInitrds(self, force=False): + This needs to be done after all configuration files have been + written, since dracut depends on some of them. + + :param force: Always recreate, default is to only do it on first call + :type force: bool + :returns: None + """ if not force and self._createdInitrds: return
diff --git a/pyanaconda/packaging/livepayload.py b/pyanaconda/packaging/livepayload.py index d8cbbc8..0046f4f 100644 --- a/pyanaconda/packaging/livepayload.py +++ b/pyanaconda/packaging/livepayload.py @@ -147,7 +147,6 @@ class LiveImagePayload(ImagePayload): blivet.util.umount(INSTALL_TREE)
super(LiveImagePayload, self).postInstall() - self._recreateInitrds()
@property def spaceRequired(self):