Estou vendo o mesmo comportamento no meu sistema:
free -m
total used free shared buffers cached
Mem: 2011 1877 133 0 128 685
-/+ buffers/cache: 1063 947
Swap: 2099 1 2098
ll /proc/kcore
-r-------- 1 root root 1016M 2011-12-06 01:09 /proc/kcore
Ok, eu não tenho tanta certeza sobre isso, mas isso pode estar relacionado com o problema HIGHMEM / LOWMEM em sistemas de 32 bits.
Veja isso:
dmesg | grep MEM
[ 0.000000] 1158MB HIGHMEM available.
[ 0.000000] 887MB LOWMEM available.
via linux-mm
Why highmem
Currently the 32 bit x86 architecture is the most popular type of computer. In this architecture, traditionally the Linux kernel has split the 4GB of virtual memory address space into 3GB for user programs and 1GB for the kernel.
....
Coping with highmem
However, many people insist on using more than 1GB of physical memory on such a 32 bit system. This makes it necessary for the Linux kernel to jump through some interesting hoops...
Basically the system uses the following tactics:
Memory above the physical address of 896MB are temporarily mapped into kernel virtual memory whenever the kernel needs to access that memory.
Data which the kernel frequently needs to access is allocated in the lower 896MB of memory (ZONE_NORMAL) and can be immediately accessed by the kernel (see Temporary mapping).
...
Então, acho que só vemos espaço de memória reservada do kernel com / proc / kcore. A propósito, estou usando uma versão de 32 bits do Ubuntu também.