[syslinux] Kernel Image CRC checking

H. Peter Anvin hpa at zytor.com
Fri Jun 7 23:01:04 PDT 2019

On 6/7/19 10:48 PM, H. Peter Anvin via Syslinux wrote:
> On 6/7/19 10:34 PM, H. Peter Anvin via Syslinux wrote:
>> On 6/7/19 10:25 PM, H. Peter Anvin via Syslinux wrote:
>>>> However, the CRC polynomial for zlib and the Linux kernel should both be the
>>>> same: 0x04c11db7.
>>> I just double-checked, and the CRC tables are indeed identical. I was pretty
>>> sure, because I wrote that code a long time ago...
>> Ah, it seems that zlib's CRC32 returns the binary inverse of the CRC32 (i.e.
>> crc32 ^ 0xffffffff); so unless the Linux code is broken (and the spec needs to
>> be corrected, since that error would go back many years) using the zlib code
>> one would have to look for 0xffffffff == UINT32_MAX instead of 0.
> Just double-checked: the spec is correct. So the zlib crc32() routine should
> return UINT32_MAX == ~(uint32_t)0 == (uint32_t)-1 for a correctly loaded kernel.

And just to double check:

gzip -9 bzImage
gzip -l -v bzImage.gz
method  crc     date  time  compressed  uncompressed  ratio uncompressed_name
defla ffffffff Jun  7 22:53     728000        881200  17.4% bzImage


More information about the Syslinux mailing list