Table of Contents
Ubuntu - Processes - Mounting /proc
Objective
To ensure that procfs is mounted as /proc.
Symptoms
Errors caused by the absence of /proc often mention the inability to open a pathname within /proc, and in some cases suggest that you check whether procfs has been mounted. Here are some examples:
Cannot find /proc/version - is /proc mounted?
WARNING: Could not open /proc/net/vlan/config. Maybe you need to load the 8021q module, or maybe you are not using PROCFS??
Other messages may be less helpful and state only that some higher-level operation has failed. This could be almost anything related to the status or configuration of the running kernel, including in particular:
- scheduling,
- memory management,
- device drivers, and
- the network stack.
Diagnosis
Checking whether procfs has been mounted can be achieved trivially by listing the content of /proc:
ls /proc
The result should look broadly similar to this:
1 2118 31028 823 fb loadavg stat 101 2121 31029 acpi filesystems locks swaps 1250 2125 31049 asound fs meminfo sys 131 2233 4 buddyinfo ide misc sysrq-trigger 132 2244 43 bus interrupts modules sysvipc 133 2265 45 cgroups iomem mounts timer_list 134 2284 46 cmdline ioports mtrr timer_stats 1557 2286 5 cpuinfo irq net tty 1570 2288 564 crypto kallsyms pagetypeinfo uptime 2 2289 579 devices kcore partitions version 2073 2290 581 diskstats key-users sched_debug vmallocinfo 2082 2291 6 dma kmsg scsi vmstat 2091 25840 609 driver kpagecount self zoneinfo 2114 3 742 execdomains kpageflags slabinfo
but with details that depend on what processes are running and which kernel modules are loaded.
Alternatively, execute the mount command with no arguments and look for a line similar to:
none on /proc type proc (rw)
Possible causes
/proc is not listed in /etc/fstab
The most likely reason for procfs not being mounted is it not being listed in /etc/fstab. There should be a line of the form:
none /proc proc defaults 0 0
This should allow /proc to be mounted manually using the command:
mount /proc
and cause it to be mounted automatically on reboot.
The process is running inside a chroot
The process of entering a chroot does not cause init or any other boot-time scripts to be run, therefore even if /proc is listed in the copy of /etc/fstab within the chroot it will not be mounted automatically.
The solution is to mount from outside the chroot using the copy of /etc/fstab that governs the system as a whole. Whether you should actually do this depends on what the chroot is for:
- Mounting /proc within a chroot jail is moderately undesirable because the purpose of a jail is to give the process inside it access to as little as possible. However it ought to be safe in theory: procfs does not allow non-root processes to perform privileged operations, and a root process would be able to mount it without help.
- For other purposes, such as running a different version of the OS, you probably should mount /proc (and consider other mount points such as /dev).
For a chroot environment located at /opt/chroot an appropriate entry in /etc/fstab would be:
/proc /opt/chroot/proc none rw,bind 0 0
A bind mount has been used in this example.
It is possible to use an ordinary mount, because procfs does not object to being mounted twice, however that is not generally true for other filesystems.
The simplest and safest policy is to use bind mounts for everything.
procfs is missing from the kernel
This is very unlikely. Although procfs might once have been considered optional, this is not true in any meaningful sense for a modern Linux-based operating system.
Note that the procfs module is normally compiled into the kernel statically, so do not expect to find it in /lib/modules.