mirror of https://github.com/tLDP/LDP
239 lines
8.3 KiB
Plaintext
239 lines
8.3 KiB
Plaintext
<chapter id="device-list">
|
|
<title>Hardware, Devices, and Tools</title>
|
|
|
|
<blockquote><para><quote>Knowledge speaks, but wisdom listens.</quote>
|
|
Jimi Hendrix</para></blockquote>
|
|
|
|
<para>This chapter gives an overview of what a device file is, and how to
|
|
create one. The canonical list of device files is
|
|
<filename>/usr/src/linux/Documentation/devices.txt</filename>
|
|
<indexterm id="ch04-kern-dev"><primary>kernel</primary><secondary>devices</secondary>
|
|
</indexterm> if you have
|
|
the Linux kernel source code installed on your system. The devices listed
|
|
here are correct as of kernel version 2.6.8.</para>
|
|
|
|
<sect1 id="hwutils">
|
|
<title>Hardware Utilities </title>
|
|
|
|
<sect2 id="makedev">
|
|
<title>The <command>MAKEDEV</command><indexterm id="ch04-makedev">
|
|
<primary>commands</primary><secondary>MAKEDEV</secondary>
|
|
</indexterm> Script</title>
|
|
|
|
<para>Most device files will already be created and will be there
|
|
ready to use after you install your Linux system. If by some chance
|
|
you need to create one which is not provided then you should first
|
|
try to use the <command>MAKEDEV</command> script. This script is
|
|
usually located in <filename>/dev/MAKEDEV</filename> but might also
|
|
have a copy (or a symbolic link) in
|
|
<filename>/sbin/MAKEDEV</filename>. If it turns out not to be in
|
|
your path then you will need to specify the path to it
|
|
explicitly.</para>
|
|
|
|
<para>In general the command is used as:
|
|
|
|
<screen>
|
|
<prompt>#</prompt> <userinput>/dev/MAKEDEV -v ttyS0</userinput>
|
|
<computeroutput>create ttyS0 c 4 64 root:dialout 0660</computeroutput>
|
|
</screen>
|
|
|
|
This will create the device file <filename>/dev/ttyS0</filename>
|
|
<indexterm id="ch04-ttys0"><primary>filesystem</primary>
|
|
<secondary>/dev</secondary><tertiary>/dev/ttyS0</tertiary></indexterm>
|
|
with major node 4 and minor node 64 as a character device with
|
|
access permissions 0660 with owner root and group dialout.</para>
|
|
|
|
<para><filename>ttyS0</filename> is a serial port. The major and
|
|
minor node numbers are numbers understood by the kernel. The kernel
|
|
refers to hardware devices as numbers, this would be very difficult
|
|
for us to remember, so we use filenames. Access permissions of 0660
|
|
means read and write permission for the owner (root in this case)
|
|
and read and write permission for members of the group (dialout in
|
|
this case) with no access for anyone else.</para>
|
|
</sect2>
|
|
|
|
<sect2 id="mknod">
|
|
<title>The <command>mknod</command><indexterm id="ch04-mknod">
|
|
<primary>commands</primary><secondary>mknod</secondary>
|
|
</indexterm> command</title>
|
|
|
|
<para><command>MAKEDEV</command><indexterm id="ch04-makedev2">
|
|
<primary>commands</primary><secondary>MAKEDEV</secondary>
|
|
</indexterm> is the preferred way of creating
|
|
device files which are not present. However sometimes the
|
|
<command>MAKEDEV</command> script will not know about the device
|
|
file you wish to create. This is where the <command>mknod</command>
|
|
command comes in. In order to use <command>mknod</command> you need
|
|
to know the major and minor node numbers for the device you wish to
|
|
create. The <filename>devices.txt</filename><indexterm id="kern-doc">
|
|
<primary>kernel</primary><secondary>documentation</secondary>
|
|
<tertiary>devices.txt</tertiary></indexterm> file in the kernel
|
|
source documentation is the canonical source of this
|
|
information.</para>
|
|
|
|
<para>To take an example, let us suppose that our version of the
|
|
<command>MAKEDEV</command><indexterm id="ch04-makedev3">
|
|
<primary>commands</primary><secondary>MAKEDEV</secondary>
|
|
</indexterm> script does not know how to create the
|
|
<filename>/dev/ttyS0</filename><indexterm id="ch04-ttys02">
|
|
<primary>filesystem</primary><secondary>/dev</secondary>
|
|
<tertiary>/dev/ttyS0</tertiary></indexterm> device file. We need
|
|
to use <command>mknod</command><indexterm id="ch04-mknod2">
|
|
<primary>commands</primary><secondary>mknod</secondary>
|
|
</indexterm> to create it. We know from looking at the
|
|
<filename>devices.txt</filename><indexterm id="kern-doc2">
|
|
<primary>kernel</primary><secondary>documentation</secondary>
|
|
<tertiary>devices.txt</tertiary></indexterm> that it should be a character
|
|
device with major number 4 and minor number 64. So we now know all
|
|
we need to create the file.
|
|
|
|
<screen>
|
|
<prompt>#</prompt> <userinput>mknod /dev/ttyS0 c 4 64</userinput>
|
|
<prompt>#</prompt> <userinput>chown root.dialout /dev/ttyS0</userinput>
|
|
<prompt>#</prompt> <userinput>chmod 0644 /dev/ttyS0</userinput>
|
|
<prompt>#</prompt> <userinput>ls -l /dev/ttyS0</userinput>
|
|
<computeroutput>
|
|
crw-rw---- 1 root dialout 4, 64 Oct 23 18:23 /dev/ttyS0
|
|
</computeroutput>
|
|
</screen>
|
|
|
|
As you can see, many more steps are required to create the file. In
|
|
this example you can see the process required however. It is
|
|
unlikely in the extreme that the ttyS0 file would not be provided by
|
|
the <command>MAKEDEV</command><indexterm id="ch04-makedev4">
|
|
<primary>commands</primary><secondary>MAKEDEV</secondary>
|
|
</indexterm> script, but it suffices to illustrate
|
|
the point.</para>
|
|
</sect2>
|
|
|
|
<sect2 id="lspci">
|
|
<title>The <command>lspci</command><indexterm id="ch04-lspci">
|
|
<primary>commands</primary><secondary>lspci</secondary>
|
|
</indexterm> command</title>
|
|
|
|
<para>lspci</para>
|
|
|
|
<para>TO BE ADDED</para>
|
|
|
|
</sect2>
|
|
|
|
<sect2 id="lsdev">
|
|
<title>The <command>lsdev</command><indexterm id="ch04-lsdev">
|
|
<primary>commands</primary><secondary>lsdev</secondary>
|
|
</indexterm> command</title>
|
|
|
|
<para>lsdev</para>
|
|
|
|
<para>TO BE ADDED</para>
|
|
|
|
</sect2>
|
|
|
|
<sect2 id="lsusb">
|
|
<title>The <command>lsusb</command><indexterm id="ch04-lsusb">
|
|
<primary>commands</primary><secondary>lsusb</secondary>
|
|
</indexterm> command</title>
|
|
|
|
<para>lsusb</para>
|
|
|
|
<para>TO BE ADDED</para>
|
|
|
|
</sect2>
|
|
|
|
<sect2 id="lsraid">
|
|
<title>The <command>lsraid</command><indexterm id="ch04-lsraid">
|
|
<primary>commands</primary><secondary>lsraid</secondary>
|
|
</indexterm> command</title>
|
|
|
|
<para>lsraid</para>
|
|
|
|
<para>TO BE ADDED</para>
|
|
|
|
</sect2>
|
|
|
|
<sect2 id="hdparm">
|
|
<title>The <command>hdparm</command><indexterm id="ch04-hdparm">
|
|
<primary>commands</primary><secondary>hdparm</secondary>
|
|
</indexterm> command</title>
|
|
|
|
<para>hdparm</para>
|
|
|
|
<para>TO BE ADDED</para>
|
|
|
|
</sect2>
|
|
|
|
<sect2 id="more-hwresources">
|
|
<title>More Hardware Resources</title>
|
|
|
|
<para>More information on what hardware resources the kernel is using
|
|
can be found in the <filename>/proc</filename> directory. Refer to
|
|
<xref linkend="proc-fs"> in chapter 3.
|
|
</para>
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1>
|
|
<title>Kernel Modules<indexterm id="ch04-modules"><primary>kernel</primary>
|
|
<secondary>modules</secondary></indexterm></title>
|
|
|
|
<para>This section will discuss kernel modules.</para>
|
|
|
|
<para>TO BE ADDED</para>
|
|
|
|
<sect2>
|
|
<title>lsmod<indexterm id="ch04-lsmod1"><primary>commands</primary>
|
|
<secondary>lsmod</secondary></indexterm><indexterm id="ch04-lsmod2">
|
|
<primary>kernel</primary><secondary>modules</secondary>
|
|
<tertiary>lsmod</tertiary></indexterm></title>
|
|
|
|
<para>lsmod</para>
|
|
|
|
<para>TO BE ADDED</para>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>insmod<indexterm id="ch04-insmod1"><primary>commands</primary>
|
|
<secondary>insmod</secondary></indexterm><indexterm id="ch04-insmod2">
|
|
<primary>kernel</primary><secondary>modules</secondary>
|
|
<tertiary>insmod</tertiary></indexterm></title>
|
|
|
|
<para>insmod</para>
|
|
|
|
<para>TO BE ADDED</para>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>depmod<indexterm id="ch04-depmod1"><primary>commands</primary>
|
|
<secondary>depmod</secondary></indexterm><indexterm id="ch04-depmod2">
|
|
<primary>kernel</primary><secondary>modules</secondary>
|
|
<tertiary>depmod</tertiary></indexterm></title>
|
|
|
|
<para>depmod</para>
|
|
|
|
<para>TO BE ADDED</para>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>rmmod<indexterm id="ch04-rmmod1"><primary>commands</primary>
|
|
<secondary>rmmod</secondary></indexterm><indexterm id="ch04-rmmod2">
|
|
<primary>kernel</primary><secondary>modules</secondary>
|
|
<tertiary>rmmod</tertiary></indexterm></title>
|
|
|
|
<para>rmmod</para>
|
|
|
|
<para>TO BE ADDED</para>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>modprobe<indexterm id="ch04-modprobe1"><primary>commands</primary>
|
|
<secondary>modprobe</secondary></indexterm><indexterm id="ch04-modprobe2">
|
|
<primary>kernel</primary><secondary>modules</secondary>
|
|
<tertiary>modprobe</tertiary></indexterm></title>
|
|
|
|
<para>modprobe</para>
|
|
|
|
<para>TO BE ADDED</para>
|
|
</sect2>
|
|
|
|
</sect1>
|
|
</chapter>
|