import mkosi.resources
from mkosi.config import DocFormat, InitrdProfile, OutputFormat
from mkosi.documentation import show_docs
-from mkosi.log import ARG_DEBUG, ARG_DEBUG_SHELL, log_notice, log_setup
+from mkosi.log import ARG_DEBUG, ARG_DEBUG_SHELL, die, log_notice, log_setup
from mkosi.run import find_binary, run, uncaught_exception_handler
from mkosi.sandbox import __version__, umask
from mkosi.tree import copy_tree, move_tree, rmtree
return parser
+def is_valid_modulesd(modulesd: Path) -> bool:
+ # Check whether a provided kernel modules directory is valid
+ return modulesd.is_dir() and (
+ (modulesd / "modules.dep").exists() or (modulesd / "modules.dep.bin").exists()
+ )
+
+
def process_crypttab(staging_dir: Path) -> list[str]:
cmdline = []
show_docs("mkosi-initrd", DocFormat.all(), resources=r)
return
+ modulesd = Path("/usr/lib/modules") / args.kernel_version
+ if not is_valid_modulesd(modulesd):
+ die(f"Invalid kernel directory: {modulesd}")
+
with (
tempfile.TemporaryDirectory() as staging_dir,
tempfile.TemporaryDirectory() as sandbox_tree,
f"--format={args.format}",
f"--output={args.output}",
f"--output-directory={staging_dir}",
- f"--extra-tree=/usr/lib/modules/{args.kernel_version}:/usr/lib/modules/{args.kernel_version}",
+ f"--extra-tree={modulesd}:{modulesd}",
"--extra-tree=/usr/lib/firmware:/usr/lib/firmware",
"--remove-files=/usr/lib/firmware/*-ucode",
"--build-sources=",
if args.kernel_image:
cmdline += [
- f"--extra-tree={args.kernel_image}:/usr/lib/modules/{args.kernel_version}/vmlinuz",
+ f"--extra-tree={args.kernel_image}:{modulesd}/vmlinuz",
]
if args.debug: