Author: glen
Date: Fri May 21 16:23:12 2010
New Revision: 11482

Modified:
   geninitrd/trunk/geninitrd
Log:
- extract CONFIG_BLK_DEV_RAM_SIZE from configs kernel module if possible
- based on extract-ikconfig from linux/scripts/extract-ikconfig

Modified: geninitrd/trunk/geninitrd
==============================================================================
--- geninitrd/trunk/geninitrd   (original)
+++ geninitrd/trunk/geninitrd   Fri May 21 16:23:12 2010
@@ -270,6 +270,41 @@
        fi
 }
 
+# extract-ikconfig - Extract the .config file from a kernel image
+#
+# The obscure use of the "tr" filter is to work around older versions of
+# "grep" that report the byte offset of the line instead of the pattern.
+#
+# (c) 2009, Dick Streefland <[email protected]>
+# Licensed under the terms of the GNU General Public License.
+#
+# Ripped and adjusted for geninitrd from linux-2.6.34/scripts/extract-ikconfig
+extract-ikconfig() {
+       local img=$(mktemp)
+       local kofile=$(modinfo -k $kernel -n configs)
+       case "$kofile" in
+       '')
+               return
+               ;;
+       *.gz)
+               gzip -dc "$kofile" > $img
+               ;;
+       *)
+               cat "$kofile" > $img
+               ;;
+       esac
+
+       local cf1='IKCFG_ST\037\213\010'
+       local cf2='0123456789'
+       local pos
+
+       if pos=$(tr "$cf1\n$cf2" "\n$cf2=" < "$img" | grep -abo "^$cf2"); then
+               pos=${pos%%:*}
+               tail -c+$(($pos+8)) "$img" | gzip -dcq
+       fi
+       rm -f $img
+}
+
 # Finds module dependencies
 #
 # @param       $module
@@ -1312,8 +1347,10 @@
        die "Filesystem $INITRDFS not supported by $PROGRAM"
 esac
 
-# TODO: figure out this automatically
-CONFIG_BLK_DEV_RAM_SIZE=4096
+CONFIG_BLK_DEV_RAM_SIZE=$(extract-ikconfig | awk -F= 
'/^CONFIG_BLK_DEV_RAM_SIZE/{print $2}')
+if [ -z "$CONFIG_BLK_DEV_RAM_SIZE" ]; then
+       CONFIG_BLK_DEV_RAM_SIZE=4096
+fi
 
 IMAGESIZE=$(du -ks $DESTDIR | awk '{print int(($1+1023+512)/1024)*1024}')
 debug  "image size: $IMAGESIZE KiB ($DESTDIR)"
_______________________________________________
pld-cvs-commit mailing list
[email protected]
http://lists.pld-linux.org/mailman/listinfo/pld-cvs-commit

Reply via email to