diff --git a/diskimage_builder/elements/dracut-regenerate/finalise.d/50-dracut-regenerate b/diskimage_builder/elements/dracut-regenerate/finalise.d/50-dracut-regenerate
index 813fb0e6c..e30de8a72 100755
--- a/diskimage_builder/elements/dracut-regenerate/finalise.d/50-dracut-regenerate
+++ b/diskimage_builder/elements/dracut-regenerate/finalise.d/50-dracut-regenerate
@@ -14,22 +14,34 @@
 #    License for the specific language governing permissions and limitations
 #    under the License.
 
+import logging
 import os
 import re
 import subprocess
 import yaml
 
 
+logging.basicConfig(
+    level=logging.DEBUG if int(os.getenv('DIB_DEBUG_TRACE', 0)) > 0
+    else logging.INFO)
+
+
 def main():
+    logging.info("Starting dracut regeneration")
+    logging.debug("Debug logging enabled")
+
     dracut_env = os.getenv('DIB_DRACUT_ENABLED_MODULES')
     dracut_objects = yaml.safe_load(dracut_env)
 
+    logging.debug(dracut_objects)
+
     modules_to_boot = []
     for dracut_object in dracut_objects:
         # first, install dependent packages
         packages = dracut_object.get('packages', [])
         for package in packages:
             cmdline = ["install-packages", package]
+            logging.debug("Calling: %s" % cmdline)
             subp = subprocess.Popen(cmdline, stdout=subprocess.PIPE)
             out = subp.communicate()[0]
             if subp.returncode:
@@ -43,9 +55,9 @@ def main():
     # regenerate dracut with the list of installed modules
     if len(modules_to_boot) > 0:
         cmdline = ["select-boot-kernel-initrd"]
+        logging.debug("Calling: %s" % cmdline)
         subp = subprocess.Popen(cmdline, stdout=subprocess.PIPE)
         out, err = subp.communicate()
-
         if subp.returncode:
             e = subprocess.CalledProcessError(subp.returncode, cmdline)
             e.output = out
@@ -57,11 +69,22 @@ def main():
         ramdisk_path = "/boot/%s" % kernel_set[1].strip()
         modules_to_boot = ' ' .join(modules_to_boot)
 
-        subp = subprocess.Popen(['dracut', '--force', '--add', modules_to_boot,
-                                 '-f', ramdisk_path, kernel_version],
-                                stdout=subprocess.PIPE)
-        subp.wait()
+        cmdline = ['dracut', '--force', '--add', modules_to_boot,
+                   '-f', ramdisk_path, kernel_version]
+        logging.debug("Calling: %s" % cmdline)
+        subp = subprocess.Popen(cmdline, stdout=subprocess.PIPE)
+        out, err = subp.communicate()
+        if subp.returncode:
+            e = subprocess.CalledProcessError(subp.returncode, cmdline)
+            e.output = out
+            raise e
+
+    logging.info("dracut regenerate done")
 
 
 if __name__ == '__main__':
     main()
+
+# Local Variables:
+# mode: python
+# End: