This article is from the Frequently Asked Questions for Linux, the Free/Open Source UNIX-like operating system kernel that runs on many modern computer systems. Maintained by David C. Merrill with numerous contributions by others. (v1.0).
A: Use the setleds program, for example (in /etc/rc.local or one of the /etc/ rc.d/* files):
for t in 1 2 3 4 5 6 7 8 do setleds +num < /dev/tty$t > /dev/null done
setleds is part of the kbd package ("How do I remap my keyboard to UK, French, etc.? ").
Alternatively, patch your kernel. You need to arrange for KBD_DEFLEDS to be defined to (1 << VC_NUMLOCK) when compiling drivers/char/keyboard.c.