makedev
Section: Linux System Administrator's Manual (8)
Updated: 1 November 2002
Page Index
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
directory'' usually means that the device file is missing, whereas
``ENODEV: No such device'' usually means the kernel does not have the
driver configured 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 controlling 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 autodetects 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 controller, 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 partitions 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 descriptor
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 created.
- 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 ALSO
intro(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.