извлеките vmlinux из vmlinuz или bzimage

<p>я хочу создать system.map из vmlinuz, потому что большинство машин не имеют файла system.map. фактически, vmlinuz сжимается в vmlinuz или bzimage.</p><p>это какой-то инструмент или скрипт может это сделать?</p><p>я старался:</p><pre><code>dd if=/boot/vmlinuz skip=`grep -a -b -o -m 1 -e $'x1fx8bx08x00' /boot/vmlinuz | cut -d: -f 1 bs=1 | zcat > /tmp/vmlinux не удалось:zcat: stdin: not in gzip format 32769+0 records in 32768+0 records out 

чтобы извлечь несжатое ядро из образа ядра, вы можете использовать сценарий extract-vmlinux из каталога scripts в дереве ядра (доступно по крайней мере в версии ядра 3.5) (если вы получаете сообщение об ошибке типа<blockquote> mktemp: невозможно создать временный файл/tmp/vmlinux-xxx: неверный аргумент </blockquote>вам нужно заменить $(mktemp /tmp/vmlinux-xxx)</code> на <code>$(mktemp /tmp/vmlinux-xxxxxx) в скрипте). команда /path/to/kernel/tree/scripts/extract-vmlinux <kernel image> >vmlinux.если извлеченный двоичный файл ядра содержит символьную информацию, вы должны быть в состоянии создать файл system.map, используя скрипт mksysmap из того же подкаталога. команда здесь nm=nm /path/to/kernel/tree/scripts/mksysmap vmlinux system.map.images образы ядра, поставляемые с моим дистрибутивом, похоже, удалены, поэтому скрипт не смог получить символы.

как писал abrixas2, для создания файлов system.map вам понадобится образ ядра с символьной информацией, и в упакованном образе vmlinuz вряд ли будут присутствовать символы. однако я могу убедиться, что сценарий в исходном посте работает с заменой '-e' на '-p' и удалением '$', т.е. </p><pre>$ dd if = vmlinuz-3.8.0-19-generic skip = grep -a -b -o -m 1 -p ' x1fx8bx08x00' vmlinuz-3.8.0-19-generic | cut -d: -f 1 bs = 1 | zcat> /tmp/vmlinux gzip: stdin: декомпрессия в порядке, завершающий мусор игнорируется 

я на ubuntu linux. вы можете изменить $'\037\213\010\000'</code> на <code>"$(echo '037213010000')" в shbash$ n=$(grep -abo -m1 $'\037\213\010\000' vmlinuz-4.13.0-37-generic | awk -f: '{print $1+1}') && tail -c +$n vmlinuz-4.13.0-37-generic | gzip -d > /tmp/vmlinuz </code></pre>