dracut.sh: Adjust squash and strip order
Previously with squash module, some binaries will be reinstalled, but stripping happens before that so new installed binaries is not stripped. So adjust the squash and strip order, ensure new installed binaries are stripped just the same way with the old binaries. Also split squash into two stage to make the split easier, move the squash temp dir into initdir so stripping will cover that too, and print more usefule message. Signed-off-by: Kairui Song <kasong@redhat.com>master
parent
d1afff43ae
commit
6a74c03b4a
43
dracut.sh
43
dracut.sh
|
@ -1671,21 +1671,6 @@ for d in $(ldconfig_paths); do
|
||||||
rmdir -p --ignore-fail-on-non-empty "$initdir/$d" >/dev/null 2>&1
|
rmdir -p --ignore-fail-on-non-empty "$initdir/$d" >/dev/null 2>&1
|
||||||
done
|
done
|
||||||
|
|
||||||
if [[ $do_strip = yes ]] && ! [[ $DRACUT_FIPS_MODE ]]; then
|
|
||||||
dinfo "*** Stripping files ***"
|
|
||||||
find "$initdir" -type f \
|
|
||||||
-executable -not -path '*/lib/modules/*.ko' -print0 \
|
|
||||||
| xargs -r -0 $strip_cmd -g -p 2>/dev/null
|
|
||||||
|
|
||||||
# strip kernel modules, but do not touch signed modules
|
|
||||||
find "$initdir" -type f -path '*/lib/modules/*.ko' -print0 \
|
|
||||||
| while read -r -d $'\0' f || [ -n "$f" ]; do
|
|
||||||
SIG=$(tail -c 28 "$f" | tr -d '\000')
|
|
||||||
[[ $SIG == '~Module signature appended~' ]] || { printf "%s\000" "$f"; }
|
|
||||||
done | xargs -r -0 $strip_cmd -g -p
|
|
||||||
|
|
||||||
dinfo "*** Stripping files done ***"
|
|
||||||
fi
|
|
||||||
if [[ $early_microcode = yes ]]; then
|
if [[ $early_microcode = yes ]]; then
|
||||||
dinfo "*** Generating early-microcode cpio image ***"
|
dinfo "*** Generating early-microcode cpio image ***"
|
||||||
ucode_dir=(amd-ucode intel-ucode)
|
ucode_dir=(amd-ucode intel-ucode)
|
||||||
|
@ -1757,9 +1742,8 @@ if [[ $hostonly_cmdline == "yes" ]] ; then
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
dinfo "*** Creating image file '$outfile' ***"
|
|
||||||
|
|
||||||
if dracut_module_included "squash"; then
|
if dracut_module_included "squash"; then
|
||||||
|
dinfo "*** Install squash loader ***"
|
||||||
if ! check_kernel_config CONFIG_SQUASHFS; then
|
if ! check_kernel_config CONFIG_SQUASHFS; then
|
||||||
dfatal "CONFIG_SQUASHFS have to be enabled for dracut squash module to work"
|
dfatal "CONFIG_SQUASHFS have to be enabled for dracut squash module to work"
|
||||||
exit 1
|
exit 1
|
||||||
|
@ -1773,7 +1757,7 @@ if dracut_module_included "squash"; then
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
readonly squash_dir="${DRACUT_TMPDIR}/squashfs"
|
readonly squash_dir="$initdir/squash/root"
|
||||||
readonly squash_img=$initdir/squash/root.img
|
readonly squash_img=$initdir/squash/root.img
|
||||||
|
|
||||||
# Currently only move "usr" "etc" to squashdir
|
# Currently only move "usr" "etc" to squashdir
|
||||||
|
@ -1864,15 +1848,38 @@ if dracut_module_included "squash"; then
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
done
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ $do_strip = yes ]] && ! [[ $DRACUT_FIPS_MODE ]]; then
|
||||||
|
dinfo "*** Stripping files ***"
|
||||||
|
find "$initdir" -type f \
|
||||||
|
-executable -not -path '*/lib/modules/*.ko' -print0 \
|
||||||
|
| xargs -r -0 $strip_cmd -g -p 2>/dev/null
|
||||||
|
|
||||||
|
# strip kernel modules, but do not touch signed modules
|
||||||
|
find "$initdir" -type f -path '*/lib/modules/*.ko' -print0 \
|
||||||
|
| while read -r -d $'\0' f || [ -n "$f" ]; do
|
||||||
|
SIG=$(tail -c 28 "$f" | tr -d '\000')
|
||||||
|
[[ $SIG == '~Module signature appended~' ]] || { printf "%s\000" "$f"; }
|
||||||
|
done | xargs -r -0 $strip_cmd -g -p
|
||||||
|
dinfo "*** Stripping files done ***"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if dracut_module_included "squash"; then
|
||||||
|
dinfo "*** Squashing the files inside the initramfs ***"
|
||||||
mksquashfs $squash_dir $squash_img -comp xz -b 64K -Xdict-size 100% &> /dev/null
|
mksquashfs $squash_dir $squash_img -comp xz -b 64K -Xdict-size 100% &> /dev/null
|
||||||
|
|
||||||
if [[ $? != 0 ]]; then
|
if [[ $? != 0 ]]; then
|
||||||
dfatal "dracut: Failed making squash image"
|
dfatal "dracut: Failed making squash image"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
rm -rf $squash_dir
|
||||||
|
dinfo "*** Squashing the files inside the initramfs done ***"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
dinfo "*** Creating image file '$outfile' ***"
|
||||||
|
|
||||||
if [[ $uefi = yes ]]; then
|
if [[ $uefi = yes ]]; then
|
||||||
readonly uefi_outdir="$DRACUT_TMPDIR/uefi"
|
readonly uefi_outdir="$DRACUT_TMPDIR/uefi"
|
||||||
mkdir "$uefi_outdir"
|
mkdir "$uefi_outdir"
|
||||||
|
|
Loading…
Reference in New Issue