npak, молодец, навел на мысль, старую как мир: если установлены исходники ядра, а не только заголовки, в /usr/include имена asm и linux должны быть не папками, а ссылками на /usr/src/linux/include/asm и /usr/src/linux/include/linux . Т.е., если поставить другое ядро, то при сборке подключаются старые заголовки.
konst, проверь этот момент.
/usr/include/linux/string.h:8:2: warning: #warning Using kernel header in userland!
Скачал именно kernel-source-2.4.20-8.rpm. Ни в одном заголовке нет строки "Using kernel header in userland!". Может у тебя, все таки, другая версия?