New: extract-ikconfig only works with gzip'ed kernel images
On Thu, 7 Oct 2010 17:06:32 GMT [email protected] wrote:
Hi Dick,
Please look at this kernel bugzilla entry.
Thanks.
Quoted 18 lines
https://bugzilla.kernel.org/show_bug.cgi?id=19852
URL: https://bugs.gentoo.org/show_bug.cgi?id=340021 Summary: extract-ikconfig only works with gzip'ed kernel images Product: Other Version: 2.5 Platform: All OS/Version: Linux Tree: Mainline Status: NEW Severity: normal Priority: P1 Component: Other AssignedTo: [email protected] ReportedBy: [email protected] Regression: No
Quoted 10 lines
When anything else then
CONFIG_KERNEL_GZIPis selected e.g.CONFIG_KERNEL_BZIP2, the script extract-ikconfig fails with "extract-ikconfig:
Cannot find kernel config."
This should be either checked in the script or support for pther compression methods may be nice.Signature · 3 lines
Configure bugmail: https://bugzilla.kernel.org/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are on the CC list for the bug.
---
~Randy
*** Remember to use Documentation/SubmitChecklist when testing your code ***
On Sunday 2010-10-10 10:19, Randy Dunlap wrote:
| On Thu, 7 Oct 2010 17:06:32 GMT [email protected] wrote: | | Hi Dick, | | Please look at this kernel bugzilla entry. | Thanks. | | > https://bugzilla.kernel.org/show_bug.cgi?id=19852 | > | > URL: https://bugs.gentoo.org/show_bug.cgi?id=340021 | > Summary: extract-ikconfig only works with gzip'ed kernel images | > Product: Other | > Version: 2.5 | > Platform: All | > OS/Version: Linux | > Tree: Mainline | > Status: NEW | > Severity: normal | > Priority: P1 | > Component: Other | > AssignedTo: [email protected] | > ReportedBy: [email protected] | > Regression: No | > | > | > When anything else then CONFIG_KERNEL_GZIP is selected e.g. | > CONFIG_KERNEL_BZIP2, the script extract-ikconfig fails with "extract-ikconfig: | > Cannot find kernel config." | > This should be either checked in the script or support for pther compression | > methods may be nice.
Here is a patch to resolve this issue:
----------------------------------------------------------------------
Add support for kernels compressed with bzip2, lzma or lzo, in addition to gzip.
Signed-off-by Dick Streefland <[email protected]>
---
scripts/extract-ikconfig | 41 +++++++++++++++++++++++++++-------------- 1 files changed, 27 insertions(+), 14 deletions(-)
scripts/extract-ikconfig +27 -14
@@ -7,12 +7,10 @@ # 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]> +# (c) 2009,2010 Dick Streefland <[email protected]> # Licensed under the terms of the GNU General Public License. # ---------------------------------------------------------------------- -gz1='\037\213\010' -gz2='01' cf1='IKCFG_ST\037\213\010' cf2='0123456789'
@@ -21,11 +19,25 @@ dump_config() if pos=`tr "$cf1\n$cf2" "\n$cf2=" < "$1" | grep -abo "^$cf2"` then pos=${pos%%:*} - tail -c+$(($pos+8)) "$1" | zcat -q - exit 0 + tail -c+$(($pos+8)) "$1" | zcat > $tmp1 2> /dev/null + case $? in + 2) # there will be a warning about trailing garbage + cat $tmp1 + exit 0 + esac fi } +try_decompress() +{ + for pos in `tr "$1\n$2" "\n$2=" < "$img" | grep -abo "^$2"` + do + pos=${pos%%:*} + tail -c+$pos "$img" | $3 > $tmp2 2> /dev/null + dump_config $tmp2 + done +} + # Check invocation: me=${0##*/} img=$1
@@ -35,18 +47,19 @@ then exit 2 fi +# Prepare temp files: +tmp1=/tmp/ikconfig$$.1 +tmp2=/tmp/ikconfig$$.2 +trap "rm -f $tmp1 $tmp2" 0 + # Initial attempt for uncompressed images or objects: dump_config "$img" -# That didn't work, so decompress and try again: -tmp=/tmp/ikconfig$$ -trap "rm -f $tmp" 0 -for pos in `tr "$gz1\n$gz2" "\n$gz2=" < "$img" | grep -abo "^$gz2"` -do - pos=${pos%%:*} - tail -c+$pos "$img" | zcat 2> /dev/null > $tmp - dump_config $tmp -done +# That didn't work, so retry after decompression. +try_decompress '\037\213\010' xy gunzip +try_decompress 'BZh' xy bunzip2 +try_decompress '\135\0\0\0' xxx unlzma +try_decompress '\211\114\132' xy 'lzop -d' # Bail out: echo "$me: Cannot find kernel config." >&2