Потому что вот такой код в kernel/resource.c занимается приготовлением этих значений:
if (file_ns_capable(m->file, &init_user_ns, CAP_SYS_ADMIN)) {
start = r->start;
end = r->end;
} else {
start = end = 0;
}
Т.е. чтобы получить не нули нужно иметь CAP_SYS_ADMIN.
Это изменение появилось в ядре с версии 4.6:
commit 51d7b120418e99d6b3bf8df9eb3cc31e8171dee4
Author: Linus Torvalds <torvalds@linux-foundation.org>
Date: Thu Apr 14 12:05:37 2016 -0700
/proc/iomem: only expose physical resource addresses to privileged users
In commit c4004b02f8e5b ("x86: remove the kernel code/data/bss resources
from /proc/iomem") I was hoping to remove the phyiscal kernel address
data from /proc/iomem entirely, but that had to be reverted because some
system programs actually use it.
This limits all the detailed resource information to properly
credentialed users instead.
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>