2012-03-02 7 views
7

unameが圧縮されたカーネルイメージから取得するのと同じ情報を抽出する良い方法はありますか?私はこれが、埋め込みLinuxシステム上の休眠中のmtdにあるカーネルのドッグタグをチェックし、それを現在実行中のカーネルと比較できるようにしたいと考えています。圧縮されたカーネルイメージからのuname情報の取得

答えて

10

gzipで圧縮されたLinuxイメージの場合は、これを使用する:画像ファイルにデータが含まれているため、圧縮終了後

dd if=arch/arm/boot/zImage bs=1 skip=$(LC_ALL=C grep -a -b -o $'\xFD\x37\x7A\x58\x5A\x00' arch/arm/boot/zImage | head -n 1 | cut -d ':' -f 1) | xzcat | grep -a 'Linux version' 

dd if=arch/arm/boot/zImage bs=1 skip=$(LC_ALL=C grep -a -b -o $'\x1f\x8b\x08\x00\x00\x00\x00\x00' arch/arm/boot/zImage | cut -d ':' -f 1) | zcat | grep -a 'Linux version' 

XZで圧縮されたLinuxイメージの場合は、これを使用あなたが無視することができるエラーが発生します。

文字列定数は、凍結されたユーザ空間可視のカーネルAPIの一部であることが表示されます。

http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=blob;f=init/version.c;hb=HEAD#l40

+0

は私のために動作しません。また、参照されたURLやversion.cの履歴で文字列定数を見つけることができません。カーネル/ zImage:LinuxカーネルARMブート実行可能ファイルzImage(リトルエンディアン) –

+0

文字列定数はそこにあります:http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git /tree/init/version.c?id=HEAD#n47 –

+0

@Daniel Alder画像にはどのような圧縮が適用されますか? –

3

$ mkimage -l uImage

Image Name: Linux-2.6.39 
Created:  Wed Jun 6 13:49:58 2012 
Image Type: ARM Linux Kernel Image (uncompressed) 
Data Size: 3091036 Bytes = 3018.59 kB = 2.95 MB 
Load Address: 80008000 
Entry Point: 80008000 
+1

もzimageで動作します – chrisvarnz

+0

が 'u-boot-tools'に入っています – sanmai

関連する問題