The System.map is just a list of public symbols (mostly functions) from the kernel. It used to be used as the basis for the kernel module loader, prior to the introduction of /proc/ksyms (hey, maybe that exists on the empeg.. gotta check).

So when you load a "kernel module", the System.map or /proc/ksyms are what are used by the loader to map references for things like "kmalloc()" to the actual code for the module being loaded.

Debuggers (kadb) also rely on those.

Apart from that, they're mostly just a waste of space.

Cheers