Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
initrd: Support ztd-compressed modules
  • Loading branch information
rwmjones committed Aug 5, 2021
1 parent c89e492 commit 4306a13
Show file tree
Hide file tree
Showing 4 changed files with 20 additions and 2 deletions.
2 changes: 2 additions & 0 deletions README
Expand Up @@ -102,6 +102,8 @@ are building:

xzcat (command) - if your kernel uses xz-compressed modules

zstdcat (command) - if your kernel uses zstd-compressed modules

Building and installing
-----------------------

Expand Down
3 changes: 3 additions & 0 deletions configure.ac
Expand Up @@ -157,6 +157,9 @@ AC_PATH_PROG(ZCAT,[zcat],[no])
dnl Check for xzcat, only needed if you have xz-compressed kernel modules.
AC_PATH_PROG(XZCAT,[xzcat],[no])

dnl Check for zstdcat, only needed if you have zstd-compressed kernel modules.
AC_PATH_PROG(ZSTDCAT,[zstdcat],[no])

dnl mke2fs.
AC_PATH_PROG([MKE2FS],[mke2fs],[no],
[$PATH$PATH_SEPARATOR/sbin$PATH_SEPARATOR])
Expand Down
1 change: 1 addition & 0 deletions src/config.ml.in
Expand Up @@ -39,6 +39,7 @@ let urpmi = "@URPMI@"
let yumdownloader = "@YUMDOWNLOADER@"
let xzcat = "@XZCAT@"
let zcat = "@ZCAT@"
let zstdcat = "@ZSTDCAT@"
let zypper = "@ZYPPER@"

let mke2fs = "@MKE2FS@"
Expand Down
16 changes: 14 additions & 2 deletions src/format_ext2_initrd.ml
Expand Up @@ -106,12 +106,24 @@ let rec build_initrd debug tmpdir modpath initrd =
visit deps;

(* Copy module to the init directory.
* Uncompress the module, if the name ends in .xz or .gz.
* Uncompress the module, if the name ends in .zst, .xz or .gz.
*)
let basename = Filename.basename modl in
let basename =
let len = String.length basename in
if Config.xzcat <> "no" &&
if Config.zstdcat <> "no" &&
Filename.check_suffix basename ".zst"
then (
let basename = String.sub basename 0 (len-4) in
let cmd = sprintf "%s %s > %s"
(quote Config.zstdcat)
(quote (modpath // modl))
(quote (initdir // basename)) in
if debug >= 2 then printf "supermin: %s\n" cmd;
run_command cmd;
basename
)
else if Config.xzcat <> "no" &&
Filename.check_suffix basename ".xz"
then (
let basename = String.sub basename 0 (len-3) in
Expand Down

0 comments on commit 4306a13

Please sign in to comment.