forked from Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
269 lines
12 KiB
269 lines
12 KiB
.. _admin_devices: |
|
|
|
Linux allocated devices (4.x+ version) |
|
====================================== |
|
|
|
This list is the Linux Device List, the official registry of allocated |
|
device numbers and ``/dev`` directory nodes for the Linux operating |
|
system. |
|
|
|
The LaTeX version of this document is no longer maintained, nor is |
|
the document that used to reside at lanana.org. This version in the |
|
mainline Linux kernel is the master document. Updates shall be sent |
|
as patches to the kernel maintainers (see the |
|
:ref:`Documentation/process/submitting-patches.rst <submittingpatches>` document). |
|
Specifically explore the sections titled "CHAR and MISC DRIVERS", and |
|
"BLOCK LAYER" in the MAINTAINERS file to find the right maintainers |
|
to involve for character and block devices. |
|
|
|
This document is included by reference into the Filesystem Hierarchy |
|
Standard (FHS). The FHS is available from https://www.pathname.com/fhs/. |
|
|
|
Allocations marked (68k/Amiga) apply to Linux/68k on the Amiga |
|
platform only. Allocations marked (68k/Atari) apply to Linux/68k on |
|
the Atari platform only. |
|
|
|
This document is in the public domain. The authors requests, however, |
|
that semantically altered versions are not distributed without |
|
permission of the authors, assuming the authors can be contacted without |
|
an unreasonable effort. |
|
|
|
|
|
.. attention:: |
|
|
|
DEVICE DRIVERS AUTHORS PLEASE READ THIS |
|
|
|
Linux now has extensive support for dynamic allocation of device numbering |
|
and can use ``sysfs`` and ``udev`` (``systemd``) to handle the naming needs. |
|
There are still some exceptions in the serial and boot device area. Before |
|
asking for a device number make sure you actually need one. |
|
|
|
To have a major number allocated, or a minor number in situations |
|
where that applies (e.g. busmice), please submit a patch and send to |
|
the authors as indicated above. |
|
|
|
Keep the description of the device *in the same format |
|
as this list*. The reason for this is that it is the only way we have |
|
found to ensure we have all the requisite information to publish your |
|
device and avoid conflicts. |
|
|
|
Finally, sometimes we have to play "namespace police." Please don't be |
|
offended. We often get submissions for ``/dev`` names that would be bound |
|
to cause conflicts down the road. We are trying to avoid getting in a |
|
situation where we would have to suffer an incompatible forward |
|
change. Therefore, please consult with us **before** you make your |
|
device names and numbers in any way public, at least to the point |
|
where it would be at all difficult to get them changed. |
|
|
|
Your cooperation is appreciated. |
|
|
|
.. include:: devices.txt |
|
:literal: |
|
|
|
Additional ``/dev/`` directory entries |
|
-------------------------------------- |
|
|
|
This section details additional entries that should or may exist in |
|
the /dev directory. It is preferred that symbolic links use the same |
|
form (absolute or relative) as is indicated here. Links are |
|
classified as "hard" or "symbolic" depending on the preferred type of |
|
link; if possible, the indicated type of link should be used. |
|
|
|
Compulsory links |
|
++++++++++++++++ |
|
|
|
These links should exist on all systems: |
|
|
|
=============== =============== =============== =============================== |
|
/dev/fd /proc/self/fd symbolic File descriptors |
|
/dev/stdin fd/0 symbolic stdin file descriptor |
|
/dev/stdout fd/1 symbolic stdout file descriptor |
|
/dev/stderr fd/2 symbolic stderr file descriptor |
|
/dev/nfsd socksys symbolic Required by iBCS-2 |
|
/dev/X0R null symbolic Required by iBCS-2 |
|
=============== =============== =============== =============================== |
|
|
|
Note: ``/dev/X0R`` is <letter X>-<digit 0>-<letter R>. |
|
|
|
Recommended links |
|
+++++++++++++++++ |
|
|
|
It is recommended that these links exist on all systems: |
|
|
|
|
|
=============== =============== =============== =============================== |
|
/dev/core /proc/kcore symbolic Backward compatibility |
|
/dev/ramdisk ram0 symbolic Backward compatibility |
|
/dev/ftape qft0 symbolic Backward compatibility |
|
/dev/bttv0 video0 symbolic Backward compatibility |
|
/dev/radio radio0 symbolic Backward compatibility |
|
/dev/i2o* /dev/i2o/* symbolic Backward compatibility |
|
/dev/scd? sr? hard Alternate SCSI CD-ROM name |
|
=============== =============== =============== =============================== |
|
|
|
Locally defined links |
|
+++++++++++++++++++++ |
|
|
|
The following links may be established locally to conform to the |
|
configuration of the system. This is merely a tabulation of existing |
|
practice, and does not constitute a recommendation. However, if they |
|
exist, they should have the following uses. |
|
|
|
=============== =============== =============== =============================== |
|
/dev/mouse mouse port symbolic Current mouse device |
|
/dev/tape tape device symbolic Current tape device |
|
/dev/cdrom CD-ROM device symbolic Current CD-ROM device |
|
/dev/cdwriter CD-writer symbolic Current CD-writer device |
|
/dev/scanner scanner symbolic Current scanner device |
|
/dev/modem modem port symbolic Current dialout device |
|
/dev/root root device symbolic Current root filesystem |
|
/dev/swap swap device symbolic Current swap device |
|
=============== =============== =============== =============================== |
|
|
|
``/dev/modem`` should not be used for a modem which supports dialin as |
|
well as dialout, as it tends to cause lock file problems. If it |
|
exists, ``/dev/modem`` should point to the appropriate primary TTY device |
|
(the use of the alternate callout devices is deprecated). |
|
|
|
For SCSI devices, ``/dev/tape`` and ``/dev/cdrom`` should point to the |
|
*cooked* devices (``/dev/st*`` and ``/dev/sr*``, respectively), whereas |
|
``/dev/cdwriter`` and /dev/scanner should point to the appropriate generic |
|
SCSI devices (/dev/sg*). |
|
|
|
``/dev/mouse`` may point to a primary serial TTY device, a hardware mouse |
|
device, or a socket for a mouse driver program (e.g. ``/dev/gpmdata``). |
|
|
|
Sockets and pipes |
|
+++++++++++++++++ |
|
|
|
Non-transient sockets and named pipes may exist in /dev. Common entries are: |
|
|
|
=============== =============== =============================================== |
|
/dev/printer socket lpd local socket |
|
/dev/log socket syslog local socket |
|
/dev/gpmdata socket gpm mouse multiplexer |
|
=============== =============== =============================================== |
|
|
|
Mount points |
|
++++++++++++ |
|
|
|
The following names are reserved for mounting special filesystems |
|
under /dev. These special filesystems provide kernel interfaces that |
|
cannot be provided with standard device nodes. |
|
|
|
=============== =============== =============================================== |
|
/dev/pts devpts PTY slave filesystem |
|
/dev/shm tmpfs POSIX shared memory maintenance access |
|
=============== =============== =============================================== |
|
|
|
Terminal devices |
|
---------------- |
|
|
|
Terminal, or TTY devices are a special class of character devices. A |
|
terminal device is any device that could act as a controlling terminal |
|
for a session; this includes virtual consoles, serial ports, and |
|
pseudoterminals (PTYs). |
|
|
|
All terminal devices share a common set of capabilities known as line |
|
disciplines; these include the common terminal line discipline as well |
|
as SLIP and PPP modes. |
|
|
|
All terminal devices are named similarly; this section explains the |
|
naming and use of the various types of TTYs. Note that the naming |
|
conventions include several historical warts; some of these are |
|
Linux-specific, some were inherited from other systems, and some |
|
reflect Linux outgrowing a borrowed convention. |
|
|
|
A hash mark (``#``) in a device name is used here to indicate a decimal |
|
number without leading zeroes. |
|
|
|
Virtual consoles and the console device |
|
+++++++++++++++++++++++++++++++++++++++ |
|
|
|
Virtual consoles are full-screen terminal displays on the system video |
|
monitor. Virtual consoles are named ``/dev/tty#``, with numbering |
|
starting at ``/dev/tty1``; ``/dev/tty0`` is the current virtual console. |
|
``/dev/tty0`` is the device that should be used to access the system video |
|
card on those architectures for which the frame buffer devices |
|
(``/dev/fb*``) are not applicable. Do not use ``/dev/console`` |
|
for this purpose. |
|
|
|
The console device, ``/dev/console``, is the device to which system |
|
messages should be sent, and on which logins should be permitted in |
|
single-user mode. Starting with Linux 2.1.71, ``/dev/console`` is managed |
|
by the kernel; for previous versions it should be a symbolic link to |
|
either ``/dev/tty0``, a specific virtual console such as ``/dev/tty1``, or to |
|
a serial port primary (``tty*``, not ``cu*``) device, depending on the |
|
configuration of the system. |
|
|
|
Serial ports |
|
++++++++++++ |
|
|
|
Serial ports are RS-232 serial ports and any device which simulates |
|
one, either in hardware (such as internal modems) or in software (such |
|
as the ISDN driver.) Under Linux, each serial ports has two device |
|
names, the primary or callin device and the alternate or callout one. |
|
Each kind of device is indicated by a different letter. For any |
|
letter X, the names of the devices are ``/dev/ttyX#`` and ``/dev/cux#``, |
|
respectively; for historical reasons, ``/dev/ttyS#`` and ``/dev/ttyC#`` |
|
correspond to ``/dev/cua#`` and ``/dev/cub#``. In the future, it should be |
|
expected that multiple letters will be used; all letters will be upper |
|
case for the "tty" device (e.g. ``/dev/ttyDP#``) and lower case for the |
|
"cu" device (e.g. ``/dev/cudp#``). |
|
|
|
The names ``/dev/ttyQ#`` and ``/dev/cuq#`` are reserved for local use. |
|
|
|
The alternate devices provide for kernel-based exclusion and somewhat |
|
different defaults than the primary devices. Their main purpose is to |
|
allow the use of serial ports with programs with no inherent or broken |
|
support for serial ports. Their use is deprecated, and they may be |
|
removed from a future version of Linux. |
|
|
|
Arbitration of serial ports is provided by the use of lock files with |
|
the names ``/var/lock/LCK..ttyX#``. The contents of the lock file should |
|
be the PID of the locking process as an ASCII number. |
|
|
|
It is common practice to install links such as /dev/modem |
|
which point to serial ports. In order to ensure proper locking in the |
|
presence of these links, it is recommended that software chase |
|
symlinks and lock all possible names; additionally, it is recommended |
|
that a lock file be installed with the corresponding alternate |
|
device. In order to avoid deadlocks, it is recommended that the locks |
|
are acquired in the following order, and released in the reverse: |
|
|
|
1. The symbolic link name, if any (``/var/lock/LCK..modem``) |
|
2. The "tty" name (``/var/lock/LCK..ttyS2``) |
|
3. The alternate device name (``/var/lock/LCK..cua2``) |
|
|
|
In the case of nested symbolic links, the lock files should be |
|
installed in the order the symlinks are resolved. |
|
|
|
Under no circumstances should an application hold a lock while waiting |
|
for another to be released. In addition, applications which attempt |
|
to create lock files for the corresponding alternate device names |
|
should take into account the possibility of being used on a non-serial |
|
port TTY, for which no alternate device would exist. |
|
|
|
Pseudoterminals (PTYs) |
|
++++++++++++++++++++++ |
|
|
|
Pseudoterminals, or PTYs, are used to create login sessions or provide |
|
other capabilities requiring a TTY line discipline (including SLIP or |
|
PPP capability) to arbitrary data-generation processes. Each PTY has |
|
a master side, named ``/dev/pty[p-za-e][0-9a-f]``, and a slave side, named |
|
``/dev/tty[p-za-e][0-9a-f]``. The kernel arbitrates the use of PTYs by |
|
allowing each master side to be opened only once. |
|
|
|
Once the master side has been opened, the corresponding slave device |
|
can be used in the same manner as any TTY device. The master and |
|
slave devices are connected by the kernel, generating the equivalent |
|
of a bidirectional pipe with TTY capabilities. |
|
|
|
Recent versions of the Linux kernels and GNU libc contain support for |
|
the System V/Unix98 naming scheme for PTYs, which assigns a common |
|
device, ``/dev/ptmx``, to all the masters (opening it will automatically |
|
give you a previously unassigned PTY) and a subdirectory, ``/dev/pts``, |
|
for the slaves; the slaves are named with decimal integers (``/dev/pts/#`` |
|
in our notation). This removes the problem of exhausting the |
|
namespace and enables the kernel to automatically create the device |
|
nodes for the slaves on demand using the "devpts" filesystem.
|
|
|