makedev(8) Linux System Administrator's Manual makedev(8)NAME
makedev - create devices
SYNOPSIS
makedev <directory> [<device_name>]
DESCRIPTION
makedev is a program that will create the device files in /dev used to
interface with drivers in the kernel.
Note that programs giving the error ``ENOENT: No such file or direc‐
tory'' usually means that the device file is missing, whereas ``ENODEV:
No such device'' usually means the kernel does not have the driver con‐
figured or loaded.
OPTIONS
<directory>
The directory where to create the device files.
<device_name>
Only create device nodes that match <device_name> (wich can be
either a canonical name or a regexp). eg:
makedev /dev 'dvb.*' will create /dev/dvb/adapter0/*
makedev /dev hda will create /dev/hda
CUSTOMIZATION
Since there is currently no standardization in what names are used for
system users and groups, it is possible that you may need to modify
makedev's configuration files to reflect your site's settings.
DEVICES
Certain devices are required for minimal functionality. These are:
mem - access to physical memory; kmem - access to kernel virtual
memory; null - null device (infinite sink); port - access to I/O
ports; zero - null byte source (infinite source); core - symlink
to /proc/kcore (for kernel debugging); full - always returns
ENOSPACE on write; ram - ramdisk; tty - to access the control‐
ling tty of a process.
Virtual Terminals
console
This creates the devices associated with the console. These are
the virtual terminals ttyx, where x can be from 0 though 63.
The device tty0 is the currently active VT, and is also known as
console. For each VT, there are two devices: vcsx and vcsax,
which can be used to generate screen-dumps of the VT (vcsx is
just the text, and vcsax includes the attributes).
Serial Devices
ttyS{0..63}
Serial ports.
Pseudo Terminals
pty[p-s]
Each possible argument will create a bank of 16 master and slave
pairs. The current kernel (1.2) is limited to 64 such pairs.
The master pseudo-terminals are pty[p-s][0-9a-f], and the slaves
are tty[p-s][0-9a-f].
Parallel Ports
lp Standard parallel ports. The devices are created lp0, lp1, and
lp2.
Bus Mice
busmice
The various bus mice devices. This creates the following
devices: logimouse (Logitech bus mouse), psmouse (PS/2-style
mouse), msmouse (Microsoft Inport bus mouse) and atimouse (ATI
XL bus mouse) and jmouse (J-mouse).
Joystick Devices
js Joystick. Creates js0 and js1.
Disk Devices
fd[0-7]
Floppy disk devices. The device fdx is the device which autode‐
tects the format, and the additional devices are fixed format
(whose size is indicated in the name). The other devices are
named as fdxLn. The single letter L identifies the type of
floppy disk (d = 5.25" DD, h = 5.25" HD, D = 3.5" DD, H = 3.5"
HD, E = 3.5" ED). The number n represents the capacity of that
format in K. Thus the standard formats are fdxd360, fdxh1200,
fdxD720, fdxH1440, and fdxE2880.
For more information see Alain Knaff's fdutils package.
Devices fd0* through fd3* are floppy disks on the first con‐
troller, and devices fd4* through fd7* are floppy disks on the
second controller.
hd[a-d]
AT hard disks. The device hdx provides access to the whole
disk, with the partitions being hdx[0-20]. The four primary
partitions are hdx1 through hdx4, with the logical partitions
being numbered from hdx5 though hdx20. (A primary partition can
be made into an extended partition, which can hold 4 logical
partitions). By default, only the devices for 4 logical parti‐
tions are made. The others can be made by uncommenting them.
Drives hda and hdb are the two on the first controller. If
using the new IDE driver (rather than the old HD driver), then
hdc and hdd are the two drives on the secondary controller.
These devices can also be used to acess IDE CDROMs if using the
new IDE driver.
sd[a-z], sd[a-c][a-z], sdd[a-x]
SCSI hard disks. The partitions are similar to the IDE disks,
but there is a limit of 11 logical partitions (sdx5 through
sdx15). This is to allow there to be 128 SCSI disks.
loop Loopback disk devices. These allow you to use a regular file as
a block device. This means that images of filesystems can be
mounted, and used as normal. This creates 16 devices loop0
through loop15.
Tape Devices
st[0-7]
SCSI tapes. This creates the rewinding tape device stx and the
non-rewinding tape device nstx.
qic QIC-80 tapes. The devices created are rmt8, rmt16, tape-d, and
tape-reset.
ftape Floppy driver tapes (QIC-117). There are 4 methods of access
depending on the floppy tape drive. For each of access methods
0, 1, 2 and 3, the devices rftx (rewinding) and nrftx (non-
rewinding) are created. For compatability, devices ftape and
nftape are symlinks to rft0 and nrft0 respectively.
CDROM Devices
sr[0-7]
SCSI CD-ROM/DVD drives.
scd[0-7]
For compatibility reason (aka historical ``compatibility'' with
RedHat), we provide a /dev/scdx entry for each /dev/srx device.
Audio
sound This creates the audio devices used by the sound driver. These
include mixer, sequencer, dsp, and audio.
Miscellaneous
sg Generic SCSI devices. The devices created are sga through sgh
and sg0 through sg7. These allow arbitary commands to be sent
to any SCSI device. This allows for querying information about
the device, or controlling SCSI devices that are not one of
disk, tape or CDROM (e.g. scanner, CD-R, CD-RW).
fd To allow an arbitary program to be fed input from file descrip‐
tor x, use /dev/fd/x as the file name. This also creates
/dev/stdin, /dev/stdout, and /dev/stderr. (Note, these are just
symlinks into /proc/self/fd).
apm Devices for power management.
Other Devices
Note that the present list of devices above is not exhaustive.
makedev can create more devices nodes. Its aim is to be able to
create everything listed in the devices.txt file distributed
with Linux 2.4.
CONFIGURATION
makedev doesn't actually know anything about devices. It reads all of
the information from files stored in /etc/makedev.d. makedev will read
any and all files in the subdirectory, processing lines in them like
so:
devices
[b|c] mode owner group major minor inc count fmt [base]
count devices will be created, with permissions set to mode and
owned by owner and group. The first device will be named fmt,
and additional devices will be created if count is larger than
1. If fmt contains a C-style formatting string, it will be
filled with the sum of base and zero. Subsequent devices will
be filled with the sum of base and n * inc, where n is the order
this device is being created in. If the format string did not
already include a format specifier, a "%d" will automatically be
appended to it to make this work.
symbolic links
l linkname target
A symbolic link pointing to target named linkname will be cre‐
ated.
aliases
a alias value
Any commands that create devices for alias will also include
devices that would be crated for value.
FILES
The /etc/makedev.d/* files contains instructions that instrument makdev
to create the device files in /dev.
BUGS
makedev need to be run by root in order to work smoothly since
mknod(2) won't work for non privilegied users (basically those who
don't have EUID==0). Indeed, the mknod(2) syscall need the CAP_MKNOD
permissions (see linux/capability.h)
Usually, any problems we'll find will be confined to the configuration
files, which were written by examining the devices.txt file.
HISTORY
Debian first come with a script building the /dev/* devices files (the
makedev script).
RedHat enhanced that idea with the MAKEDEV package. This package was
made of two parts :
the first one is a set of config files and script that generate
config files. These files usually reside in /etc/makedev.d/.
the second was MAKEDEV, a program written in C that read the
/etc/makedev.d/* files to create the actual devices files.
Mandrake further enhanced its predecessors in various ways :
· the generator scripts build configuration files that are faster
to parse and to handle
· there's a new makedev perl program that create all devices in a
very fast way
RETURN VALUE
The exit code returned by makedev is either 0 (``no error'') or 255.
In that case, an error message will be displayed:
``unrecognized macro MACRO at "LINE"''
makedev didn't recognize the macro MACRO on the quoted line LINE
(see makedev(5) for further informations about macros)
``unrecognised line "LINE"''
makedev failled in parsing the line quoted in LINE ; the line
did not begin by a character in the [bcls] set
SEE ALSOintro(4), devfsd(8), makdev(5).
AUTHORS
Pascal Rigaux <pixel@mandrakesoft.com>, 2002
Thierry Vignaud <tvignaud@mandrakesoft.com>, 2002
The device database is heavily inspirated by Redhat one.
Mandrake Linux 1 November 2002 makedev(8)