Я только что понял, что ядра, к которым у меня есть немедленный доступ do , хранят несжатую строку версии в заголовках. strings uImage | grep 2.6
должно быть достаточно для любого ядра 2.6, которое охватывает почти все за последние 5+ лет).
(оригинальный ответ следует)
Это теоретически возможно, но не совсем тривиально.
Современные версии ядра Linux используют формат bzImage (для x86 / x86_64, YMMV на других платформах). На самом деле он состоит из заголовка ELF и некоторых других мелочей (например, кода декомпрессии), за которыми следует, да, сжатый образ реального ядра.
Традиционно, алгоритм сжатия был zlib (вопреки распространенному заблуждению, «bzImage» действительно не означало «bzipped image», но «big zImage» - исходный формат zImage не мог обрабатывать большие ядра), хотя версии после 2.6.30 также поддерживают bzip2 и LZMA.
Что вам, вероятно, придется сделать, это точно определить, где начинаются сжатые данные (извините, в этом вам ничего не поможет, но метод проб и ошибок может сработать), и написать немного кода, чтобы запустить его через библиотеку для какой бы алгоритм сжатия ни использовался.