Gzipowanie modułów
witekfl@poczta.onet.pl
witekfl w poczta.onet.pl
Pią, 27 Wrz 2002, 14:53:13 CEST
Gzipując moduły można zaoszczędzić kilkanaście megabajtów przestrzeni dyskowej
(w Mandrake'u - gzipują).
Tu są wstawki do macros
#-----------------------------------------------------------------
# Find and gzip all kernel modules
#
# Requires: find
#
#%no_install_post_compress_modules 1
%__spec_install_post_compress_modules { \
echo "Compress kernel modules."; \
%{!?no_install_post_compress_modules: \
%{?verbose:set -x;} \
find $RPM_BUILD_ROOT/lib/modules -name \*.o -print | xargs -r %{__gzip} -9nf; \
} }
# Przed
%_source_payload w9.gzdio
%_binary_payload w9.bzdio
[...]
%{__spec_install_post_strip}\
%{__spec_install_post_compress_docs}\
%{__spec_install_post_compress_modules}\ # dodana linia
%{__arch_install_post}\
W załączniku patch na geninitrd.
Co wy na to?
--
witekfl
-------------- następna część ---------
--- geninitrd.orig Fri Sep 27 14:15:00 2002
+++ geninitrd Fri Sep 27 14:24:21 2002
@@ -58,12 +58,12 @@
exit 1
fi
- # prepend / if no path given, append .o if not given,
+ # prepend / if no path given, append .o.gz if not given,
# quote /
origmodule="$2"
module=$(echo "$2" | \
awk '/\// {print;next} {print "/" $0}' | \
- awk '/\.o$/ {print;next} {print $0 ".o"}' |
+ awk '/\./ {print;next} {print $0 ".o.gz"}' |
awk '{gsub("/","\\/");print}')
mods=$(awk '
BEGIN { here = 0 }
@@ -72,6 +72,18 @@
/(.*)/ { gsub(/\\/," "); if (here) print }
' $depfile | xargs)
+ # fallback to .o
+ if [ "$mods" = "" ] ; then
+ module=$(echo "$module" | \
+ awk '{gsub("\.o\.gz$","\.o",$0);print}')
+ fi
+ mods=$(awk '
+BEGIN { here = 0 }
+/'"$module"':(.*)/ { gsub(/:/," "); gsub(/\\/," "); print; here = 1; next }
+/:/ { here = 0 }
+/(.*)/ { gsub(/\\/," "); if (here) print }
+' $depfile | xargs)
+
if [ "$mods" = "" ] ; then
if [ "$1" != silent ] ; then
echo "$origmodule: module not found in $depfile" 1>&2
@@ -638,6 +650,7 @@
MODULEDIR="`my_dirname "$MODULE"`"
mkdir -p "$MNTIMAGE/lib/modules/$kernel/$MODULEDIR"
cp $verbose -a "/lib/modules/$kernel/$MODULE" "$MNTIMAGE/lib/modules/$kernel/$MODULE"
+ gunzip "$MNTIMAGE/lib/modules/$kernel/$MODULE" 2> /dev/null
done
# mknod'ing the devices instead of copying them works both with and
@@ -656,6 +669,9 @@
echo "" >> "$s"
for MODULE in $MODULES; do
+ MODULE2="`my_dirname "$MODULE"`"
+ NAME2=`basename "$MODULE" .gz`
+ MODULE2=$MODULE2/$NAME2
module="`echo $MODULE | awk -F/ '{ $0=$NF } /.o$/ { $0=substr($0,1,length($0)-2); } { print $0; }'`"
options="`awk '{ if($1 == "options" && $2 == "'${module}'") { for(i=3;i<=NF;i++) printf("%s ",$i); }}' "$modulefile"`"
@@ -667,7 +683,7 @@
echo "without options."
fi
fi
- echo "insmod /lib/modules/$kernel/$MODULE $options" >> "$s"
+ echo "insmod /lib/modules/$kernel/$MODULE2 $options" >> "$s"
done
# TODO: rewrite for bsp
Więcej informacji o liście dyskusyjnej pld-devel-pl