mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2024-12-28 16:53:49 +00:00
3cb5e51686
The statement that the Latex version of Linux Device List is unmaintained, must go back to some historic time where there were actually two separate document sources, one in a txt format and another in a tex format (maybe even just on lanana.org). Nowadays, html and tex are generated from the ReST document file and the statement might be confused, believing the actual generated LaTeX document from the maintained ReST document could be an unmaintained one. Remove this statement on the LaTeX version and only keep pointing out that the version on lanana.org is no longer maintained. Signed-off-by: Lukas Bulwahn <lukas.bulwahn@gmail.com> Link: https://lore.kernel.org/r/20220704122537.3407-6-lukas.bulwahn@gmail.com Signed-off-by: Jonathan Corbet <corbet@lwn.net>
269 lines
12 KiB
ReStructuredText
269 lines
12 KiB
ReStructuredText
.. _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 version of this document at lanana.org is no longer maintained. 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.
|