Rebuild initramfs if it is missing
There's no reason to require the initramfs when we can rebuild it using the version from the kernel. This adds handling of missing initramfs so that lmc kickstarts can remove it from the squashfs, saving about 40M on the iso.
This commit is contained in:
parent
9559acfcb0
commit
50b15d72b5
@ -261,27 +261,34 @@ class TreeBuilder(object):
|
|||||||
If backup is empty, the existing initrd files will be overwritten.
|
If backup is empty, the existing initrd files will be overwritten.
|
||||||
If suffix is specified, the existing initrd is untouched and a new
|
If suffix is specified, the existing initrd is untouched and a new
|
||||||
image is built with the filename "${prefix}-${kernel.version}.img"
|
image is built with the filename "${prefix}-${kernel.version}.img"
|
||||||
|
|
||||||
|
If the initrd doesn't exist its name will be created based on the
|
||||||
|
name of the kernel.
|
||||||
'''
|
'''
|
||||||
add_args = add_args or []
|
add_args = add_args or []
|
||||||
dracut = ["dracut", "--nomdadmconf", "--nolvmconf"] + add_args
|
dracut = ["dracut", "--nomdadmconf", "--nolvmconf"] + add_args
|
||||||
if not backup:
|
if not backup:
|
||||||
dracut.append("--force")
|
dracut.append("--force")
|
||||||
|
|
||||||
kernels = [kernel for kernel in self.kernels if hasattr(kernel, "initrd")]
|
if not self.kernels:
|
||||||
if not kernels:
|
raise Exception("No kernels found, cannot rebuild_initrds")
|
||||||
raise Exception("No initrds found, cannot rebuild_initrds")
|
|
||||||
|
|
||||||
# Hush some dracut warnings. TODO: bind-mount proc in place?
|
# Hush some dracut warnings. TODO: bind-mount proc in place?
|
||||||
open(joinpaths(self.vars.inroot,"/proc/modules"),"w")
|
open(joinpaths(self.vars.inroot,"/proc/modules"),"w")
|
||||||
for kernel in kernels:
|
for kernel in self.kernels:
|
||||||
if prefix:
|
if prefix:
|
||||||
idir = os.path.dirname(kernel.initrd.path)
|
idir = os.path.dirname(kernel.path)
|
||||||
outfile = joinpaths(idir, prefix+'-'+kernel.version+'.img')
|
outfile = joinpaths(idir, prefix+'-'+kernel.version+'.img')
|
||||||
else:
|
elif hasattr(kernel, "initrd"):
|
||||||
|
# If there is an existing initrd, use that
|
||||||
outfile = kernel.initrd.path
|
outfile = kernel.initrd.path
|
||||||
|
else:
|
||||||
|
# Construct an initrd from the kernel name
|
||||||
|
outfile = kernel.path.replace("vmlinuz-", "initrd-") + ".img"
|
||||||
logger.info("rebuilding %s", outfile)
|
logger.info("rebuilding %s", outfile)
|
||||||
if backup:
|
if backup:
|
||||||
initrd = joinpaths(self.vars.inroot, outfile)
|
initrd = joinpaths(self.vars.inroot, outfile)
|
||||||
|
if os.path.exists(initrd):
|
||||||
os.rename(initrd, initrd + backup)
|
os.rename(initrd, initrd + backup)
|
||||||
cmd = dracut + [outfile, kernel.version]
|
cmd = dracut + [outfile, kernel.version]
|
||||||
runcmd(cmd, root=self.vars.inroot)
|
runcmd(cmd, root=self.vars.inroot)
|
||||||
|
Loading…
Reference in New Issue
Block a user