Воспользоваться программой binoffset из исходников Linux-ядра:gcc -o binoffset /usr/src/linux/scripts/binoffset.c
dd if=bzImage skip=`./binoffset bzImage 0x1f 0x8b 0x08 0x00` bs=1|gzip -d > vmlinuxВ файле vmlinux получаем распакованное ядро. Из него можно извлечь, например, версию компилятора, использованного при сборке ядра:
strings vmlinux|grep "^Linux version"
URL: http://bappoy.pp.ru/2008/09/05/extracting-vmlinux.html
Обсуждается: http://www.opennet.me/tips/info/1756.shtml
любопытно конечно... но зачем??
Иногда есть необходимость извлечь оригинальный vmlinux. Отладка, взлом "закрытых" систем и т.п.
> Отладка, взлом "закрытых" систем и т.п.А что такое взлом закрытых систем применительно к Linux?Попросить сорц ядра.По GPL обязаны дать - бинарь у вас есть, имеете право потребовать сорц (правда могут захотеть бабла за S&H сидюка, если контора реально решила усложнить эту операцию).Отказываются?Напустить на них SFLC и прочих, которые обычно довольно оперативно мозг вправляют :)
Да элементарно тем же oprofile воспользоваться. спасибо за совет, а то пересобирать ядро приходилось по дистрибутивному
Станно, я при перезборке ядер копировал из
/usr/src/linux/arch/x86/boot/bzImage в /boot/vmlinuz
и lilo запускал, всё работало.
Может я ламер?
Не заметил vmlinuz/vmlinux.
К сожалению, полученный таким образом файл не подходит для использования с oprofile.
amd64:/usr/src/linux # dd if=arch/x86/boot/bzImage skip=`/tmp/binoffset arch/x86/boot/bzImage 0x1f 0x8b 0x08 0x00` bs=1|gzip -d > /tmp/vmlinux
filesize: 2425872
number of pattern matches = 1
124142413458+0 записей считано
2413458+0 записей написано
скопировано 2413458 байт (2,4 MB), 12,09 c, 200 kB/cgzip: stdin: decompression OK, trailing garbage ignored
amd64:/media/disk/src/linux-2.6.26.2/arch/x86/boot # md5sum vmlinux.bin /tmp/vmlinux
aafd6191c36eea412b1b3be024da26a9 vmlinux.bin
6b023d8557a38e0b4814ee059d320e07 /tmp/vmlinuxУпс, не увязочка
Извиняюсь, надо сравнивать из каталога arch/x86/boot/comperssed, тогда все нормально!