--- /dev/null
+#! /bin/sh -
+
+RCSID='$Id: MAKEDEV 2.3 1997/09/29 19:03:13 johnsonm Exp $'
+
+#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#
+# Customisation:
+# The devices fall into various classes. This section contains the mapping
+# from a class name into a group name and permission.
+# You will almost certainly need to edit the group name to match your
+# system, and you may change the permissions to suit your preference. These
+# lines _must_ be of the format "user group perm".
+
+ public=" root sys 666"
+ system=" root sys 660"
+ kmem=" root kmem 660"
+ tty=" root tty 666"
+ cons=" root tty 622" # 622 for console?
+ vcs=" root sys 600"
+dialout=" root uucp 660"
+ mouse=" root sys 666"
+printer=" root daemon 660"
+ floppy=" root floppy 660"
+ disk=" root disk 660"
+ scsi=" root sys 600"
+ cdrom=" root disk 660"
+ tape=" root disk 660"
+ audio=" root sys 666"
+ ibcs2=" root sys 666"
+scanner=" root sys 666"
+
+MAXVT=8
+
+#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#
+
+procfs=/proc
+
+opt_v=
+opt_d=
+opt_n=
+
+while [ $# -ge 1 ]
+do
+ case $1 in
+ --) shift; break ;;
+ -v) shift; opt_v=1 ;;
+ -d) shift; opt_d=1 ;;
+ -n) shift; opt_n=1; opt_v=1 ;;
+ -V) shift; opt_V=1 ;;
+ -*) echo "$0: unknown flag \"$1\"" >&2; exit 1 ;;
+ *) break ;;
+ esac
+done
+
+if [ "$opt_V" ]
+then
+ echo "$RCSID"
+ exit 0
+fi
+
+opts="${opt_n:+-n} ${opt_v:+-v} ${opt_d:+-d}"
+
+#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#
+
+makedev () { # usage: makedev name [bcu] major minor owner group mode
+ if [ "$opt_v" ]
+ then if [ "$opt_d" ]
+ then echo "delete $1"
+ else echo "create $1 $2 $3 $4 $5:$6 $7"
+ fi
+ fi
+ if [ ! "$opt_n" ]
+ then if [ "$opt_d" ]
+ then
+ rm -f $1
+ else
+ rm -f $1-
+ mknod $1- $2 $3 $4 &&
+ chown $5:$6 $1- &&
+ chmod $7 $1- &&
+ mv $1- $1
+ fi
+ fi
+}
+symlink () { # usage: symlink name target
+ if [ "$opt_v" ]
+ then if [ "$opt_d" ]
+ then echo "delete $1"
+ else echo "create $1 -> $2"
+ fi
+ fi
+ [ ! "$opt_n" ] && rm -f $1 &&
+ [ ! "$opt_d" ] && ln -s $2 $1
+}
+
+#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#
+
+# For bash and ksh, we can use faster builtin routines to do manipulation,
+# otherwise (ash) fall back to slower method using `expr'.
+# The extra level of indirection using `eval' is necessary a) for ksh, and
+# b) to get past ash.
+
+if [ "$RANDOM" != "$RANDOM" ]
+then
+ math () {
+ eval echo "\$(($*))"
+ }
+ index () { # index string c
+ eval "I=\${1%$2*}"
+ eval echo "\${#I}"
+ }
+ suffix () {
+ eval echo "\${1#$2}"
+ }
+ strip () {
+ eval echo "\${1% $2 *} \${1#* $2 }"
+ }
+else
+ math () {
+ expr "$@"
+ }
+ index () { # index string c
+ expr $1 : ".*$2" - 1
+ }
+ suffix () {
+ expr "$1" : "$2\(.*\)"
+ }
+ strip () {
+ echo "[$1][$2]" >&2
+ echo "`expr \"$1\" : \"\(.*\) $2 \"` `expr \"$1\" : \".* $2 \(.*\)\"`"
+ }
+fi
+
+#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#
+
+devices=
+if [ ! -f $procfs/devices ]
+then
+ echo "$0: warning: can't read $procfs/devices" >&2
+else
+ exec 3<$procfs/devices
+ while read major device <&3
+ do
+ case "$major" in
+ Character|Block|'')
+ ;;
+ *)
+ eval "major_$device=$major"
+ devices="$devices $device"
+ ;;
+ esac
+ done
+ exec 3<&-
+fi
+
+Major () {
+ device=$2
+ if [ "$opt_d" ]
+ then
+ echo -1 # don't care
+ else
+ eval echo \${major_$1:-\${device:?\"unknown major number for $1\"}}
+ fi
+}
+
+cvt () {
+ while [ $# -ne 0 ]
+ do
+ case "$1" in
+ mem|tty|ttyp|cua|cub) ;;
+ hd) (for d in a b c d e f g h ; do
+ echo -n hd$d " "
+ done) ; echo
+ ;;
+ ide0) echo hda hdb ;;
+ ide1) echo hdc hdd ;;
+ ide2) echo hde hdf ;;
+ ide3) echo hdg hdh ;;
+ sd) echo sda sdb ;;
+ sr) echo scd0 ;;
+ st) echo st0 ;;
+ xd) echo xda xdb ;;
+ fd) echo fd0 fd1 ;;
+ lp) echo lp ;;
+ mt) echo ftape ;;
+ loop) echo loop ;;
+ md) echo md ;;
+ ibcs2) echo ibcs2 ;;
+ tpqic02) echo qic ;;
+ sound) echo audio ;;
+ logiscan) echo logiscan ;;
+ ac4096) echo ac4096 ;;
+ hw) echo helloworld ;;
+ sbpcd | sbpcd[123]) echo $1 ;;
+ Joystick) echo js ;;
+ apm_bios) echo apm ;;
+ dcf) echo dcf ;;
+ aztcd) echo aztcd ;;
+ pcmcia) ;; # taken care of by its own driver
+ ttyC) echo cyclades ;;
+ vcs) ;;
+ *) echo "$0: don't know what \"$1\" is" >&2 ;;
+ esac
+ shift
+ done
+}
+
+for arg
+do
+ case $arg in
+ generic)
+ $0 $opts std
+ $0 $opts fd
+ $0 $opts fd0 fd1
+ $0 $opts hda hdb
+ $0 $opts xda xdb
+ $0 $opts sda sdb
+ $0 $opts pty
+ $0 $opts console
+ $0 $opts ttyS0 ttyS1 ttyS2 ttyS3
+ $0 $opts busmice
+ $0 $opts lp
+ $0 $opts par
+ ;;
+ local)
+ $0.local $opts
+ ;;
+ std)
+ makedev mem c 1 1 $kmem
+ makedev kmem c 1 2 $kmem
+ makedev null c 1 3 $public
+ makedev port c 1 4 $kmem
+ makedev zero c 1 5 $public
+ symlink core $procfs/kcore
+ makedev full c 1 7 $public
+ $0 ram
+ makedev tty c 5 0 $tty
+ ;;
+ ram)
+ for i in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ; do
+ makedev ram$i b 1 $i $disk
+ done
+ ln -sf ram1 ram
+ ;;
+ console)
+ major=`Major vcs` # not fatal
+ # console
+ makedev tty0 c 4 0 $cons
+ symlink console tty0
+ [ "$major" ] && makedev vcs0 c $major 0 $vcs
+ [ "$major" ] && makedev vcsa c $major 128 $vcs
+ # individual vts
+ line=1
+ while [ $line -le $MAXVT -a $line -le 63 ]
+ do
+ makedev tty$line c 4 $line $tty
+ [ "$major" ] && makedev vcs$line c $major $line $vcs
+ [ "$major" ] && makedev vcsa$line c $major `math $line + 128` $vcs
+ line=`math $line + 1`
+ done
+ ;;
+ tty[1-9]|tty[1-5][0-9]|tty[6][0-3])
+ line=`suffix $arg tty`
+ makedev tty$line c 4 $line $tty
+ ;;
+ ttyS[0-9]|ttyS[1-5][0-9]|ttyS[6][0-3])
+ line=`suffix $arg ttyS`
+ minor=`math 64 + $line`
+ makedev ttyS$line c 4 $minor $tty
+ makedev cua$line c 5 $minor $dialout
+ ;;
+ pty[a-ep-z])
+ bank=`suffix $arg pty`
+ base=`index pqrstuvwxyzabcde $bank`
+ base=`math $base \* 16`
+ for i in 0 1 2 3 4 5 6 7 8 9 a b c d e f
+ do
+ j=`index 0123456789abcdef $i`
+ makedev pty$bank$i c 2 `math $base + $j` $tty
+ makedev tty$bank$i c 3 `math $base + $j` $tty
+ done
+ ;;
+ pty)
+ ptysufs=""
+ for i in p q r s t u v w x y z a b c d e
+ do
+ ptysufs="$ptysufs pty$i"
+ done
+ $0 $opts $ptysufs
+ ;;
+ cyclades)
+ major1=`Major ttyC` || continue
+ major2=`Major cub` || continue
+ for i in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 \
+ 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
+ do
+ makedev ttyC$i c $major1 $i $tty
+ makedev cub$i c $major2 $i $dialout
+ done
+ ;;
+ lp)
+ major=`Major lp` || continue
+ makedev ${arg}0 c $major 0 $printer
+ makedev ${arg}1 c $major 1 $printer
+ makedev ${arg}2 c $major 2 $printer
+ ;;
+ par)
+ major=`Major lp` || continue
+ makedev ${arg}0 c $major 0 $printer
+ makedev ${arg}1 c $major 1 $printer
+ makedev ${arg}2 c $major 2 $printer
+ ;;
+ busmice)
+ major=`Major mouse 10` || continue
+ makedev logimouse c $major 0 $mouse
+ makedev psmouse c $major 1 $mouse
+ makedev msmouse c $major 2 $mouse
+ makedev atimouse c $major 3 $mouse
+ makedev jmouse c $major 4 $mouse
+ ;;
+ js)
+ major=`Major Joystick` || continue
+ makedev js0 c $major 0 $mouse
+ makedev js1 c $major 1 $mouse
+ ;;
+ fd[0-7])
+ major=`Major fd 2` || continue
+ base=`suffix $arg fd`
+ if [ $base -ge 4 ]
+ then
+ base=`math $base + 124`
+ fi
+ makedev ${arg} b $major $base $floppy
+ makedev ${arg}d360 b $major `math $base + 4` $floppy
+ makedev ${arg}h1200 b $major `math $base + 8` $floppy
+ makedev ${arg}D360 b $major `math $base + 12` $floppy
+ makedev ${arg}D720 b $major `math $base + 16` $floppy
+ makedev ${arg}h360 b $major `math $base + 20` $floppy
+ makedev ${arg}h720 b $major `math $base + 24` $floppy
+ makedev ${arg}H1440 b $major `math $base + 28` $floppy
+ makedev ${arg}E2880 b $major `math $base + 32` $floppy
+ makedev ${arg}CompaQ b $major `math $base + 36` $floppy
+
+ symlink ${arg}H360 ${arg}D360
+ symlink ${arg}H720 ${arg}D720
+
+ makedev ${arg}h1440 b $major `math $base + 40` $floppy
+ makedev ${arg}H1680 b $major `math $base + 44` $floppy
+ makedev ${arg}h410 b $major `math $base + 48` $floppy
+ makedev ${arg}H820 b $major `math $base + 52` $floppy
+ makedev ${arg}h1476 b $major `math $base + 56` $floppy
+ makedev ${arg}H1722 b $major `math $base + 60` $floppy
+ makedev ${arg}h420 b $major `math $base + 64` $floppy
+ makedev ${arg}H830 b $major `math $base + 68` $floppy
+ makedev ${arg}h1494 b $major `math $base + 72` $floppy
+ makedev ${arg}H1743 b $major `math $base + 76` $floppy
+ makedev ${arg}h880 b $major `math $base + 80` $floppy
+ makedev ${arg}D1040 b $major `math $base + 84` $floppy
+ makedev ${arg}D1120 b $major `math $base + 88` $floppy
+ makedev ${arg}h1600 b $major `math $base + 92` $floppy
+ makedev ${arg}H1760 b $major `math $base + 96` $floppy
+ makedev ${arg}H1920 b $major `math $base + 100` $floppy
+ makedev ${arg}E3200 b $major `math $base + 104` $floppy
+ makedev ${arg}E3520 b $major `math $base + 108` $floppy
+ makedev ${arg}E3840 b $major `math $base + 112` $floppy
+ makedev ${arg}H1840 b $major `math $base + 116` $floppy
+ makedev ${arg}D800 b $major `math $base + 120` $floppy
+ makedev ${arg}H1600 b $major `math $base + 124` $floppy
+ ;;
+ hd[a-b])
+ major=`Major ide0` || major=`Major hd 3` || continue
+ unit=`suffix $arg hd`
+ base=`index ab $unit`
+ base=`math $base \* 64`
+ makedev hd$unit b $major $base $disk
+ for part in 1 2 3 4 5 6 7 8 # 9 10 11 12 13 14 15 16 17 18 19 20
+ do
+ makedev hd$unit$part b $major `math $base + $part` $disk
+ done
+ ;;
+ hd[c-d])
+ major=`Major ide1 22` || continue
+ unit=`suffix $arg hd`
+ base=`index cd $unit`
+ base=`math $base \* 64`
+ makedev hd$unit b $major $base $disk
+ for part in 1 2 3 4 5 6 7 8 # 9 10 11 12 13 14 15 16 17 18 19 20
+ do
+ makedev hd$unit$part b $major `expr $base + $part` $disk
+ done
+ ;;
+ hd[e-f])
+ major=`Major ide2 33` || continue
+ unit=`suffix $arg hd`
+ base=`index ef $unit`
+ base=`math $base \* 64`
+ makedev hd$unit b $major $base $disk
+ for part in 1 2 3 4 5 6 7 8 # 9 10 11 12 13 14 15 16 17 18 19 20
+ do
+ makedev hd$unit$part b $major `expr $base + $part` $disk
+ done
+ ;;
+ hd[g-h])
+ major=`Major ide3 34` || continue
+ unit=`suffix $arg hd`
+ base=`index gh $unit`
+ base=`math $base \* 64`
+ makedev hd$unit b $major $base $disk
+ for part in 1 2 3 4 5 6 7 8 # 9 10 11 12 13 14 15 16 17 18 19 20
+ do
+ makedev hd$unit$part b $major `expr $base + $part` $disk
+ done
+ ;;
+ ht)
+ major=`Major ht0 37` || continue
+ # Only one IDE tape drive is currently supported; ht0.
+ makedev ht0 c $major 0 $tape
+ makedev ht0 c $major 0 $tape
+ makedev nht0 c $major 128 $tape
+ ;;
+ xd[a-d])
+ major=`Major xd 13` || continue
+ unit=`suffix $arg xd`
+ base=`index abcd $unit`
+ base=`math $base \* 64`
+ makedev xd$unit b $major $base $disk
+ for part in 1 2 3 4 5 6 7 8 # 9 10 11 12 13 14 15 16 17 18 19 20
+ do
+ makedev xd$unit$part b $major `expr $base + $part` $disk
+ done
+ ;;
+ sd[a-h])
+ major=`Major sd 8` || continue
+ unit=`suffix $arg sd`
+ base=`index abcdefgh $unit`
+ base=`math $base \* 16`
+ makedev sd$unit b $major $base $disk
+ for part in 1 2 3 4 5 6 7 8 # 9 10 11 12 13 14 15
+ do
+ minor=`expr $base + $part`
+ makedev sd$unit$part b $major $minor $disk
+ done
+ ;;
+ loop)
+ major=`Major loop` || continue
+ for part in 0 1 2 3 4 5 6 7
+ do
+ makedev loop$part b $major $part $disk
+ done
+ ;;
+ md)
+ major=`Major md` || continue
+ for part in 0 1 2 3
+ do
+ makedev md$part b $major $part $disk
+ done
+ ;;
+ st[0-7])
+ major=`Major st 9`
+ unit=`suffix $arg st`
+ makedev st$unit c $major $unit $tape
+ makedev nst$unit c $major `math 128 + $unit` $tape
+ ;;
+ qic)
+ major=`Major tpqic02 12`
+ makedev rmt8 c $major 6 $tape
+ makedev rmt16 c $major 8 $tape
+ makedev tape-d c $major 136 $tape
+ makedev tape-reset c $major 255 $tape
+ ;;
+ ftape)
+ major=`Major mt 27` || continue
+ for unit in 0 1 2 3
+ do
+ makedev rft$unit c $major $unit $tape
+ makedev nrft$unit c $major `math $unit + 4` $tape
+ done
+ symlink ftape rft0
+ symlink nftape nrft0
+ ;;
+ scd[0-7])
+ major=`Major sr 11` || continue
+ unit=`suffix $arg scd`
+ makedev scd$unit b $major $unit $cdrom
+ ;;
+ sonycd)
+ major=`Major cdu31a` || continue
+ makedev $arg b $major 0 $cdrom
+ ;;
+ mcd)
+ major=`Major mcd 23` || continue
+ makedev $arg b $major 0 $cdrom
+ ;;
+ mcdx)
+ major=`Major mcdx 20` || continue
+ makedev $arg b $major 0 $cdrom
+ ;;
+ cdu535)
+ makedev $arg b 24 0 $cdrom
+ ;;
+ lmscd)
+ makedev $arg b 24 0 $cdrom
+ ;;
+ sbpcd|sbpcd[123])
+ major=`Major $arg` || continue
+ base=`suffix ${arg}0 sbpcd`
+ # base=`expr ${arg}0 : "sbpcd\(.\)"`
+ for minor in 0 1 2 3
+ do
+ # XXX
+ unit=`expr substr 0123456789abcdef \( $base \* 4 + $minor + 1 \) 1`
+ makedev sbpcd$unit b $major $minor $cdrom
+ done
+ [ $arg = sbpcd ] && symlink $arg ${arg}0
+ ;;
+ aztcd)
+ major=`Major $arg` || continue
+ makedev ${arg}0 b $major 0 $cdrom
+ ;;
+ bpcd)
+ makedev $arg b 41 0 $cdrom
+ ;;
+ logiscan)
+ major=`Major logiscan` || continue
+ makedev $arg c $major 0 $scanner
+ ;;
+ m105scan)
+ major=`Major m105` || continue
+ makedev $arg c $major 0 $scanner
+ ;;
+ ac4096)
+ major=`Major ac4096` || continue
+ makedev $arg c $major 0 $scanner
+ ;;
+ audio)
+ major=`Major sound 14`
+ makedev mixer c $major 0 $audio
+ makedev sequencer c $major 1 $audio
+ makedev midi00 c $major 2 $audio
+ makedev dsp c $major 3 $audio
+ makedev audio c $major 4 $audio
+ makedev sndstat c $major 6 $audio
+# makedev sequencer2 c $major 8 $audio
+ makedev mixer1 c $major 16 $audio
+# makedev patmgr0 c $major 17 $audio
+ makedev midi01 c $major 18 $audio
+ makedev dsp1 c $major 19 $audio
+ makedev audio1 c $major 20 $audio
+# makedev patmgr1 c $major 33 $audio
+ makedev midi02 c $major 34 $audio
+ makedev midi03 c $major 50 $audio
+ ;;
+ pcaudio)
+ major=`Major pcsp` || continue
+ makedev pcmixer c $major 0 $audio
+ makedev pcsp c $major 3 $audio
+ makedev pcaudio c $major 4 $audio
+ ;;
+ sg)
+ major=`Major sg 21`
+ for unit in a b c d e f g h
+ do
+ minor=`index abcdefgh $unit`
+ # minor=`expr abcdefgh : ".*$unit" - 1`
+ makedev $arg$unit c $major $minor $scsi
+ done
+ ;;
+ fd)
+ # not really devices, we use the /proc filesystem
+ symlink fd $procfs/self/fd
+ symlink stdin fd/0
+ symlink stdout fd/1
+ symlink stderr fd/2
+ ;;
+ ibcs2)
+ major=`Major ibcs2` || continue
+ makedev socksys c $major 0 $ibcs2
+ symlink nfsd socksys
+ makedev spx c $major 1 $ibcs2
+ symlink X0R null
+ ;;
+ apm)
+ major=`Major apm_bios` || continue
+ makedev $arg c $major 0 $system
+ ;;
+ dcf)
+ major=`Major dcf` || continue
+ makedev $arg c $major 0 $system
+ ;;
+ helloworld)
+ major=`Major hw` || continue
+ makedev helloworld c $major 0 $public
+ ;;
+ update)
+ if [ ! "$devices" ]
+ then
+ echo "$0: don't appear to have any devices" >&2
+ continue
+ fi
+ if [ "$opt_d" ]
+ then
+ echo "$0: can't delete an update" >&2
+ continue
+ fi
+ create=
+ delete=
+ devs="$devices"
+ if [ -f DEVICES ]
+ then
+ exec 3<DEVICES
+ while read device major <&3
+ do
+ eval now=\$major_$device
+ if [ "$now" = "" ]
+ then
+ delete="$delete `cvt $device`"
+ continue
+ elif [ "$now" != $major ]
+ then
+ create="$create "`cvt $device`
+ fi
+ devs=`strip " $devs " $device`
+ # devs=`expr "$devs" : "\(.*\) $device"``expr "$devs" : ".* $device\(.*\)"`
+ done
+ exec 3<&-
+ fi
+ create="$create "`cvt $devs`
+ [ "$delete" != "" ] && $0 $opts -d $delete
+ [ "$create" != " " ] && $0 $opts $create
+ [ "$opt_n" ] && continue
+ for device in $devices
+ do
+ if [ "`cvt $device`" ]
+ then
+ eval echo $device \$major_$device
+ fi
+ done > DEVICES
+ ;;
+ *)
+ echo "$0: don't know how to make device \"$arg\"" >&2
+ ;;
+ esac
+done
+
+exit 0
--- /dev/null
+.\" $Id: MAKEDEV.man,v 2.2 1995/05/21 17:55:30 alfie Exp $
+.TH MAKEDEV 8 "14th August 1994" Linux "Linux Programmer's Manual"
+.SH NAME
+MAKEDEV \- create devices
+.SH SYNOPSIS
+.B "cd dev; ./MAKEDEV -V"
+.br
+.B "cd dev; ./MAKEDEV [ -n ] [ -v ] update"
+.br
+.BI "cd dev; ./MAKEDEV [ -n ] [ -v ] [ -d ]" " device ..."
+.SH DESCRIPTION
+.B MAKEDEV
+is a script that will create the devices in \fC/dev\fP used to interface
+with drivers in the kernel.
+.PP
+Note that programs giving the error ``ENOENT: No such file or
+directory'' normally means that the device file is missing, whereas
+``ENODEV: No such device'' normally means the kernel does not have the
+driver configured or loaded.
+.SH OPTIONS
+.TP
+.B \-V
+Print out version (actually RCS version information) and exit.
+.TP
+.B \-n
+Do not actually update the devices, just print the actions that would be
+performed.
+.TP
+.B \-d
+Delete the devices. The main use for this flag is by
+.B MAKEDEV
+itself.
+.TP
+.B \-v
+Be verbose. Print out the actions as they are performed. This is the
+same output as produced by
+.BR \-n .
+.SH CUSTOMISATION
+Since there is currently no standardisation in what names are used for
+system users and groups, it is possible that you may need to modify
+.B MAKEDEV
+to reflect your site's settings. Near the top of the file is a mapping
+from device type to user, group and permissions (e.g. all CD-ROM devices
+are set from the \fC$cdrom\fP variable). If you wish to change the
+defaults, this is the section to edit.
+.SH DEVICES
+.TP
+.B General Options
+.TP
+.B update
+This only works on kernels which have \fC/proc/interrupts\fP (introduced
+during 1.1.x). This file is scanned to see what devices are currently
+configured into the kernel, and this is compared with the previous
+settings stored in the file called \fCDEVICES\fP.
+Devices which are new since then or have a different major number are
+created, and those which are no longer configured are deleted.
+.TP
+.B generic
+Create a generic subset of devices. This is the standard devices, plus
+floppy drives, various hard drives, pseudo-terminals, console devices,
+basic serial devices, busmice, and printer ports.
+.TP
+.B
+std
+Standard devices.
+These are:
+.B mem
+\- acess to physical memory;
+.B kmem
+\- access to kernel virtual memory;
+.B null
+\- null device (infinite sink);
+.B port
+\- access to I/O ports;
+.B zero
+\- null byte source (infinite source);
+.B core
+\- symlink to /proc/kcore (for kernel debugging);
+.B full
+\- always returns ENOSPACE on write;
+.B ram
+\- ramdisk;
+.B tty
+\- to access the controlling tty of a process.
+.TP
+.B local
+This simply runs
+.BR MAKEDEV.local .
+This is a script that can create any local devices.
+.TP
+.B Virtual Terminals
+.TP
+.I console
+This creates the devices associated with the console. This is the virtual
+terminals
+.RI tty x ,
+where
+.I x
+can be from 0 though 63. The device tty0 is the currently active vt, and
+is also known as \fCconsole\fP. For each vt, there are two devices
+.RI vcs x
+and
+.RI vcsa x ,
+which are used to generate screen-dumps of the vt (the
+.BI vcs x
+is just the text,
+and
+.BI vcsa x
+includes the attributes).
+.TP
+.B Serial Devices
+.TP
+.I ttyS{0..63}
+Serial ports and corresponding dialout device. For device
+.BI ttyS x ,
+there is also the device
+.BI cua x
+which is used to dial out with. This can avoid the need for cooperative
+locks in simple situations.
+.TP
+.I cyclades
+Dial-in and dial-out devices for the cyclades intelligent I/O serial card.
+The dial in device is
+.BI ttyC x
+and the corresponding dial-out device is
+.BI cub x
+By default devices for 7 lines are created, but this can be changed to
+15 by removing the comment.
+.TP
+.B Pseudo Terminals
+.TP
+.I 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
+.BR pty[p-s][0-9a-f] ,
+and the slaves are
+.BR tty[p-s][0-9a-f] .
+.TP
+.B Parallel Ports
+.TP
+.I lp
+Standard parallel ports. The devices are created
+.BR lp0 ,
+.BR lp1 ,
+and
+.BR lp2 .
+These correspond to ports at 0x3bc, 0x378 and 0x278.
+Hence, on some machines, the first printer port may actually be
+.BR lp1 .
+.TP
+.I par
+Alternative to
+.IR lp .
+Ports are named
+.BI par x
+instead of
+.BI lp x .
+.TP
+.B Bus Mice
+.TP
+.I busmice
+The various bus mice devices. This creates the following devices:
+.B logimouse
+(Logitech bus mouse),
+.B psmouse
+(PS/2-style mouse),
+.B msmouse
+(Microsoft Inport bus mouse) and
+.B atimouse
+(ATI XL bus mouse) and
+.B jmouse
+(J-mouse).
+.TP
+.B Joystick Devices
+.TP
+.I js
+Joystick. Creates
+.B js0
+and
+.BR js1 .
+.TP
+.B Disk Devices
+.TP
+.I fd[0-7]
+Floppy disk devices. The device
+.BI fd x
+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
+.BI fd xLn .
+The single letter
+.I 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
+.I n
+represents the capacity of that format in K. Thus the standard formats
+are
+.BI fd x d360 ,
+.BI fd x h1200 ,
+.BI fd x D720 ,
+.BI fd x H1440 ,
+and
+.RI fd x E2880 .
+.IP
+For more information see Alain Knaff's fdutils package.
+.IP
+Devices
+.BI fd0 *
+through
+.BI fd3 *
+are floppy disks on the first controller, and devices
+.BI fd4 *
+through
+.BI fd7 *
+are floppy disks on the second controller.
+.TP
+.I hd[a-d]
+AT hard disks. The device
+.BI hd x
+provides access to the whole disk, with the partitions being
+.BI hd x [0-20].
+The four primary partitions are
+.BI hd x 1
+through
+.BI hd x 4,
+with the logical partitions being numbered from
+.BI hd x 5
+though
+.BI hd x 20.
+(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.
+.IP
+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.
+.TP
+.I xd[a-d]
+XT hard disks. Partitions are the same as IDE disks.
+.TP
+.I sd[a-h]
+SCSI hard disks. The partitions are similar to the IDE disks, but there
+is a limit of 11 logical partitions
+.RI (sd x 5
+through
+.RI sd x 15).
+This is to allow there to be 8 SCSI disks.
+.TP
+.I 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 8 devices loop0 through loop7.
+.TP
+.B Tape Devices
+.TP
+.I st[0-7]
+SCSI tapes. This creates the rewinding tape device
+.BI st x
+and the non-rewinding tape device
+.BI nst x .
+.TP
+.I qic
+QIC-80 tapes. The devices created are
+.BR rmt8 ,
+.BR rmt16 ,
+.BR tape-d ,
+and
+.BR tape-reset .
+.TP
+.I 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
+.BI rft x
+(rewinding) and
+.BI nrft x
+(non-rewinding) are created. For compatability, devices
+.B ftape
+and
+.B nftape
+are symlinks to
+.B rft0
+and
+.B nrft0
+respectively.
+.TP
+.B CDROM Devices
+.TP
+.I scd[0-7]
+SCSI CD players.
+.TP
+.I sonycd
+Sony CDU-31A CD player.
+.TP
+.I mcd
+Mitsumi CD player.
+.TP
+.I cdu535
+Sony CDU-535 CD player.
+.TP
+.I lmscd
+LMS/Philips CD player.
+.TP
+.I sbpcd{,1,2,3}
+Sound Blaster CD player. The kernel is capable of supporting 16 CDROMs,
+each of which is accessed as
+.BR sbpcd[0-9a-f] .
+These are assigned in groups of 4 to each controller.
+.B sbpcd
+is a symlink to
+.BR sbpcd0 .
+.\" .TP
+.\" .I idecd
+.\" NEC CDR-260 (note: this will probably be obsoleted by the new IDE driver).
+.TP
+.B Scanner
+.TP
+.I logiscan
+Logitech ScanMan32 & ScanMan 256.
+.TP
+.I m105scan
+Mustek M105 Handscanner.
+.TP
+.I ac4096
+A4Tek Color Handscanner.
+.TP
+.B Audio
+.TP
+.I audio
+This creates the audio devices used by the sound driver. These include
+.BR mixer ,
+.BR sequencer ,
+.BR dsp ,
+and
+.BR audio .
+.TP
+.I pcaudio
+Devices for the PC Speaker sound driver. These are
+.BR pcmixer .
+.BR pxsp ,
+and
+.BR pcaudio .
+.TP
+.B Miscellaneous
+.TP
+.I sg
+Generic SCSI devices. The devices created are
+.B sg0 through
+.BR 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, writeable CDROM).
+.TP
+.I fd
+To allow an arbitary program to be fed input from file descriptor
+.IR x ,
+use
+.BI /dev/fd/ x
+as the file name. This also creates
+BR /dev/stdin ,
+BR /dev/stdout ,
+and
+BR /dev/stderr .
+(Note, these are just symlinks into /proc/self/fd).
+.TP
+.I ibcs2
+Devices (and symlinks) needed by the IBCS2 emulation.
+.TP
+.I apm
+Devices for power management.
+.TP
+.I dcf
+Driver for DCF-77 radio clock.
+.TP
+.I helloworld
+Kernel modules demonstration device. See the modules source.
+.TP
+.B "Network Devices"
+Linux used to have devices in /dev for controlling network devices, but
+that is no longer the case. To see what network devices are known by the
+kernel, look at /proc/net/dev.
+.SH "SEE ALSO"
+Linux Allocated Devices, maintained by H.\ Peter Anvin,
+<Peter.Anvin@linux.org>.
+.SH AUTHOR
+Nick Holloway, <Nick.Hollowa
\ No newline at end of file