In addition to /proc, the kernel also exports information to another virtual file system called sysfs. sysfs
is used by programs such as udev to access device and device driver information. The creation of sysfs helped clean up the proc file system because much of the hardware information has been moved from proc to sysfs
.
The sysfs file system is mounted on /sys
. The top-level directories are shown. Following is a brief description of some of these directories:
/sys/block
This directory contains entries for each block device in the system. Symbolic links point to the physical device that the device maps to in the physical device tree. For example, attributes for the sda
disks reside in the following directory:
# ls -l /sys/block/sda/ total 0 -r--r--r-- 1 root root 4096 Mar 24 13:03 alignment_offset lrwxrwxrwx 1 root root 0 Mar 24 13:04 bdi -> ../../../../../../../../virtual/bdi/8:0 -r--r--r-- 1 root root 4096 Mar 24 13:03 capability -r--r--r-- 1 root root 4096 Mar 24 13:03 dev lrwxrwxrwx 1 root root 0 Mar 24 13:04 device -> ../../../0:0:0:0 -r--r--r-- 1 root root 4096 Mar 24 13:03 discard_alignment -r--r--r-- 1 root root 4096 Mar 24 13:03 events -r--r--r-- 1 root root 4096 Mar 24 13:03 events_async -rw-r--r-- 1 root root 4096 Mar 24 13:03 events_poll_msecs -r--r--r-- 1 root root 4096 Mar 24 13:03 ext_range drwxr-xr-x 2 root root 0 Mar 24 13:04 holders -r--r--r-- 1 root root 4096 Mar 24 13:03 inflight drwxr-xr-x 2 root root 0 Mar 24 13:04 integrity drwxr-xr-x 2 root root 0 Mar 24 13:04 power drwxr-xr-x 3 root root 0 Mar 24 13:04 queue -r--r--r-- 1 root root 4096 Mar 24 13:03 range -r--r--r-- 1 root root 4096 Mar 24 13:03 removable -r--r--r-- 1 root root 4096 Mar 24 13:03 ro -r--r--r-- 1 root root 4096 Mar 24 13:03 size drwxr-xr-x 2 root root 0 Mar 24 13:04 slaves -r--r--r-- 1 root root 4096 Mar 24 13:03 stat lrwxrwxrwx 1 root root 0 Mar 24 13:04 subsystem -> ../../../../../../../../../class/block -rw-r--r-- 1 root root 4096 Mar 24 13:03 uevent
/sys/bus
This directory contains subdirectories for each physical bus type supported in the kernel. Each bus type has two subdirectories: devices
and drivers
. The devices directory lists devices discovered on that type of bus. The drivers directory contains directories for each device driver registered with the bus type. Driver parameters can be viewed and manipulated. For example, to list the drivers for the virtual devices, enter:
# ls -lR /sys/bus/xen/drivers /sys/bus/xen/drivers: total 0 drwxr-xr-x. 2 root root 0 Mar 24 13:37 vbd drwxr-xr-x. 2 root root 0 Mar 24 13:37 vif /sys/bus/xen/drivers/vbd: total 0 --w-------. 1 root root 4096 Mar 24 13:40 bind lrwxrwxrwx. 1 root root 0 Mar 24 13:40 module -> ../../../../module/xen_blkfront --w-------. 1 root root 4096 Mar 24 13:37 uevent --w-------. 1 root root 4096 Mar 24 13:40 unbind lrwxrwxrwx. 1 root root 0 Mar 24 13:40 vbd-51792 -> ../../../../devices/vbd-51792 lrwxrwxrwx. 1 root root 0 Mar 24 13:40 vbd-768 -> ../../../../devices/vbd-768 /sys/bus/xen/drivers/vif: total 0 --w-------. 1 root root 4096 Mar 24 13:40 bind lrwxrwxrwx. 1 root root 0 Mar 24 13:40 module -> ../../../../module/xen_netfront --w-------. 1 root root 4096 Mar 24 13:37 uevent --w-------. 1 root root 4096 Mar 24 13:40 unbind lrwxrwxrwx. 1 root root 0 Mar 24 13:40 vif-0 -> ../../../../devices/vif-0
/sys/class
This directory contains every device class registered with the kernel. Device classes describe a functional type of device. Examples include input devices, network devices, and block devices.
/sys/devices
This directory contains the global device hierarchy of all devices on the system. This directory also contains a platform directory and a system directory. The platform directory contains peripheral devices specific to a particular platform such as device controllers. The system directory contains non-peripheral devices such as CPUs and APICs.
/sys/firmware
This directory contains subdirectories with firmware objects and attributes.
/sys/module
This directory contains subdirectories for each module that is loaded into the kernel, for example:
# ls /sys/module/xen* /sys/module/xen_blkfront: coresize drivers holders initsize initstate notes parameters refcnt rhelversion sections srcversion taint uevent /sys/module/xen_netfront: coresize drivers holders initsize initstate notes parameters refcnt rhelversion sections srcversion taint uevent
/sys/power
The system power state can be controlled from this directory. The disk attribute controls the method by which the system suspends to disk. The state attribute allows a process to enter a low power state.
The sysctl Utility
The sysctl utility can also be used to view or modify values to writable files in the /proc/sys directory. To view the current kernel settings, enter:
# sysctl -a abi.vsyscall32 = 1 crypto.fips_enabled = 0 debug.exception-trace = 1 ...
This is the same information seen if each of the files were viewed individually, for example:
# cat /proc/sys/abi/vsyscall32 1
The echo command can be used to assign values to writable files in /proc/sys:
# echo 1 > /proc/sys/net/ipv4/ip_forward
The equivalent sysctl command follows, displaying the result of the change immediately:
# sysctl -w net.ipv4.ip_forward=1 net.ipv4.ip_forward = 1
Changes made by using both echo and sysctl are lost when the system is rebooted. To preserve custom settings, add them to the /etc/sysctl.conf
file. Values added to this file take effect each time the system boots.