dev - device files in /dev

     Device files are the eyes and ears of the  system.   Through  the  device
     files  one  has  access  to  the  disks, terminals and other parts of the
     machine.  Single bytes or disk blocks may be transferred  to  or  from  a
     device  with  ordinary read(2) or write(2) calls, byte positions set with
     lseek(2), or more complicated control functions performed with ioctl(2).

     Device files as found in  /dev  have  several  attributes  that  must  be
     considered.  Here are two examples as ls -l shows them:

          brw-rw-rw-  1 root     operator   2,   1 Jun 10  1995 fd1
          crw--w----  1 kjb      tty        4,   0 May 11 09:41 console

     Most attributes are the same as for a regular  file  and  have  the  same
     function.   The  file  type  and  the  major and minor device numbers are
     special to devices.

     Character devices are marked with a c as a file type letter.  Any I/O  on
     a  character  device  is  sent  down  to  the  device  driver without any
     interpretation.  This means that a process doing the I/O  must  know  the
     characteristics of the device and deal with them appropriately.

     Block devices provoke the file system server into buffering the  data  on
     those  devices.   Data read or written by processes is passed through the
     file system block cache.  Unaligned bytes read or written  are  extracted
     or  reassembled  by the file server from or to whole blocks in the cache.
     The file server transfers data to or from the device driver as blocks  to
     positions  at  block  size  boundaries.  These blocks are Minix blocks of
     1024 bytes, disk devices usually have a 512 byte block size.  Only  block
     devices  can be mounted as part of the file system tree if they contain a
     Minix file system.

     The major device number (2 for fd1 and 4 for console) are used by  FS  to
     find the device driver that manages a device.  The minor device number (1
     for fd1 and 0 for console) is passed to the driver  to  select  a  device
     among  a  number  of related devices that are all managed by that driver.
     The device drivers are usually kernel tasks under Minix, small  processes
     that are contained within the address space of the kernel.  The following
     tasks and associated devices exist:

  Memory (major 1)
     The ram, mem, kmem, null, and zero devices  are  managed  by  the  memory
     task.  The ram device is a block device for a chunk of memory that is the
     RAM disk.  Any byte read from or written to the ram device is copied from
     or  to  that  memory chunk.  The mem device is a character device for the
     entire address space of the system, but kmem only  for  the  kernel  data
     area.   These  two  devices  allow programs like ps(1) to hunt around the
     system looking for interesting bits.   Note  that  mem  accesses  virtual
     memory as the kernel sees it, i.e. the first so-many megabytes are mapped
     1 to 1 to physical memory, everything above is virtual and  may  read  as
     zeros  if there is no real memory behind the virtual pages.  The null and
     zero devices are a data sink and a zero byte source  respectively.   Both
     devices  happily  swallow any bytes written to them.  Nothing is returned
     on a read from null, and as many zeros as requested are returned by zero.

  Floppy disk (major 2)
     The fd0, fd0a, fd0b, fd0c, and fd0d block devices are  the  first  floppy
     disk  and  the  four  partitions  that  may  exist on a that floppy disk.
     Likewise are fd1 and fd1[a-d] the device and partitions  for  the  second
     floppy  disk.   The floppy disk devices are described in detail in fd(4).
     Partitioning in general is explained in hd(4).

  Hard disk (major 3)
     The first hard disk can be accessed by block  device  hd0.   This  device
     addresses the entire hard disk from the first to the last sector.  A hard
     disk is normally partitioned in up to four primary partitions, hd1,  hd2,
     hd3,  and  hd4.  Each of these devices accesses a range of sectors on the
     hd0 device.  It is customary to give each operating system on  a  disk  a
     primary partition.  So the MS-DOS C: "drive" can be on hd1, and Minix can
     be on hd2.  Minix wants to have several partitions on its own, so hd2 can
     be  further subdivided into the subpartitions hd2a, hd2b, hd2c, and hd2d.
     /dev contains devices for the first and second hard disk  (hd0  and  hd5)
     their   primary   partitions   (hd[1-46-9])   and  subpartitions  thereof
     (hd[1-46-9][a-d]).  More detail can be found in hd(4).

  Console (minor 4)
     The console  driver  manages  the  system  console  device,  aptly  named
     console.   Through  this  device  one  can display characters on a screen
     attached to a monochrome, Hercules, color, or VGA  adapter.   The  ttyc1,
     ttyc2,  etc.  devices are the so-called "virtual consoles" that share the
     one console display.  One can select  which  virtual  console  is  to  be
     visible  on  the  screen and take input from the keyboard.  Other devices
     managed by the console driver are  profile,  a  device  used  to  profile
     Minix,  log,  used  by  daemon  processes  to  write  log messages to the
     console, vga and kbd, used by an X11 server to get raw access to the  VGA
     screen  and  keyboard,  and lastly kbdaux, the auxiliary keyboard device,
     usually a PS/2 type mouse.  See also console(4), and tty(4).

  Anonymous TTY (major 5)
     This is just one device named tty that is a synonym for  the  controlling
     tty  of  a process.  This device is not managed by any device driver, but
     is handled by FS itself.  A process can get access to the terminal it  is
     running under by using /dev/tty.

  Line printer (major 6)
     The lp device sends any bytes written to it to the printer.  See lp(4).

  TCP/IP (major 7)
     The TCP/IP task is not a kernel task, but a separate server.   It  starts
     its  life  as a normal process named inet, executes a few system calls to
     become a server like MM and FS, and then signs up with FS to  manage  the
     TCP/IP  devices  that  happen  to be assigned major 7.  There is a kernel
     task involved in this scenario though, the ethernet boards are managed by
     the   kernel  task  DP8390.   (So  the  TCP/IP  task  is  not  completely
     freestanding.)  See also ip(4).

  CD-ROM (major 8)
     This is the CD-ROM driver for the Mitsumi proprietary  CD-ROM  interface.
     The   cd0   device  addresses  the  whole  CD,  with  extra  cd[1-4]  and
     cd[1-4][a-d] devices for if the CD also contains  partitions  with  Minix
     file systems.

  Pseudo ttys (major 9)
     To allow remote login the devices under major 9 offer virtual  terminals.
     These  pseudo  ttys  come  in  tty,  pty  pairs  that form a pipe between
     processes running under the tty, and a controlling  process  attached  to
     the pty side.  See tty(4).

  SCSI disks and tapes (major 10)
     The sd* devices are disks in the same way as  the  hd*  devices.   Except
     that these disks are SCSI disks attached to an Adaptec 1540 controller or
     compatible.  The driver also manages the  rst*  and  nrst*  tape  devices
     (rewinding or non-rewinding).  See sd(4).

  Serial lines (major 11)
     The serial lines can be accessed through tty00, tty01, tty02, and  tty03.
     A  serial  mouse is often attached to tty00 with a modem on tty01, unless
     you put them somewhere else, but  then  you  probably  know  where.   See

  DOS virtual disk (major 12)
     If one creates a really big file on  an  MS-DOS  file  system  then  this
     driver  can  use  it  as  a  disk.  This DOS virtual disk can be accessed
     through dosd0, with partitions dosd1, dosd2, dosd3, and dosd4.  There are
     no  subpartitions offered by this driver.  One can use a another DOS file
     through devices dosd[5-9].  See dosd(4).

  Audio (major 13)
     The audio device can be used to produce or record air vibrations using  a
     Soundblaster 16 type audio card.  See audio(4).

  Mixer (major 14)
     The mixer device is used to control the audio driver.

  Virtual disks (major 15)
     The virtual disk driver can be used to concatenate any two  disk  devices
     to form one big disk.  These disks are named vd0, vd1, etc.  There are no
     partitions as it makes no sense to first concatenate disks  and  then  to
     partition the result.  See vd(4).


     /dev/*    All Minix devices

     read(2), write(2), lseek(2), ioctl(2), console(4), dosd(4), fd(4), hd(4),
     ip(4), lp(4), sd(4), tty(4), vd(4), MAKEDEV(8).

     There are five prominent errors that processes accessing device files may

     ENODEV - No such device
          There is no driver managing the device class this device belongs to.
          Either the driver is configured out, or it is not loaded (inet).

     ENXIO - No such device or address
          This device is not available.  Either the driver does not support it
          at  all,  or the hardware isn't available, i.e. accessing the second
          disk on a system with only one disk.

     EACCES - Permission denied
          This error may cause a lot of head  scratching  if  ls  -l  shows  a
          device  file  to be writable.  The media you are trying to access is
          simply physically write protected!

     EINVAL - Invalid argument
          Devices may not like reads or writes that are not  block  multiples,
          or  very big transfers, etc.  The device manual page should list the

     EIO - I/O error
          This may be a real I/O error, i.e. a read or  write  on  the  device
          failing  due  to a media error.  But it may also be the result of an
          operation that a device can't do, or an empty tape drive, etc.

     Some devices are not present by default.  The MAKEDEV script knows how to
     make them.

  MS-DOS equivalents
     The names of MS-DOS devices map to Minix devices as follows:

          A:        fd0
          B:        fd1
          C:        hd1, sd1        (usually the first partition)
          D:        hd6, sd1, sd6   (or an extended partition)
          CON       console
          COM1      tty00           (UNIX counts from 0)
          LPT1      lp

     Rumours claiming that the zero device upsets the  balance  of  zeros  and
     ones  in  the  universe  are  unfounded  and  are  only  vile attempts to
     discredit the industry.

     Kees J. Bot (