mirror of
https://git.linuxfromscratch.org/lfs.git
synced 2025-06-19 03:39:20 +01:00
Chapter07 indentation.
git-svn-id: http://svn.linuxfromscratch.org/LFS/trunk/BOOK@7230 4aa44e1e-78dd-0310-a6d2-fbcd4c07a689
This commit is contained in:
parent
b78c7479d4
commit
d781ffbe09
@ -1,239 +1,302 @@
|
||||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN" "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [
|
||||
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN"
|
||||
"http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [
|
||||
<!ENTITY % general-entities SYSTEM "../general.ent">
|
||||
%general-entities;
|
||||
]>
|
||||
|
||||
<sect1 id="ch-scripts-bootscripts" role="wrap">
|
||||
<title>LFS-Bootscripts-&lfs-bootscripts-version;</title>
|
||||
<?dbhtml filename="bootscripts.html"?>
|
||||
<?dbhtml filename="bootscripts.html"?>
|
||||
|
||||
<indexterm zone="ch-scripts-bootscripts"><primary sortas="a-Bootscripts">Bootscripts</primary></indexterm>
|
||||
<title>LFS-Bootscripts-&lfs-bootscripts-version;</title>
|
||||
|
||||
<sect2 role="package"><title/>
|
||||
<para>The LFS-Bootscripts package contains a set of scripts to start/stop the
|
||||
LFS system at bootup/shutdown.</para>
|
||||
<indexterm zone="ch-scripts-bootscripts">
|
||||
<primary sortas="a-Bootscripts">Bootscripts</primary>
|
||||
</indexterm>
|
||||
|
||||
<segmentedlist>
|
||||
<segtitle>&buildtime;</segtitle>
|
||||
<segtitle>&diskspace;</segtitle>
|
||||
<seglistitem><seg>0.1 SBU</seg><seg>516 KB</seg></seglistitem>
|
||||
</segmentedlist>
|
||||
<sect2 role="package">
|
||||
<title/>
|
||||
|
||||
<segmentedlist>
|
||||
<segtitle>&dependencies;</segtitle>
|
||||
<seglistitem><seg>Bash and Coreutils</seg></seglistitem>
|
||||
</segmentedlist>
|
||||
</sect2>
|
||||
<para>The LFS-Bootscripts package contains a set of scripts to start/stop the
|
||||
LFS system at bootup/shutdown.</para>
|
||||
|
||||
<sect2 role="installation">
|
||||
<title>Installation of LFS-Bootscripts</title>
|
||||
<segmentedlist>
|
||||
<segtitle>&buildtime;</segtitle>
|
||||
<segtitle>&diskspace;</segtitle>
|
||||
|
||||
<para>Install the package:</para>
|
||||
<seglistitem>
|
||||
<seg>0.1 SBU</seg>
|
||||
<seg>516 KB</seg>
|
||||
</seglistitem>
|
||||
</segmentedlist>
|
||||
|
||||
<segmentedlist>
|
||||
<segtitle>&dependencies;</segtitle>
|
||||
|
||||
<seglistitem>
|
||||
<seg>Bash and Coreutils</seg>
|
||||
</seglistitem>
|
||||
</segmentedlist>
|
||||
|
||||
</sect2>
|
||||
|
||||
<sect2 role="installation">
|
||||
<title>Installation of LFS-Bootscripts</title>
|
||||
|
||||
<para>Install the package:</para>
|
||||
|
||||
<screen><userinput>make install</userinput></screen>
|
||||
|
||||
</sect2>
|
||||
</sect2>
|
||||
|
||||
<sect2 id="contents-bootscripts" role="content"><title>Contents of LFS-Bootscripts</title>
|
||||
<sect2 id="contents-bootscripts" role="content">
|
||||
<title>Contents of LFS-Bootscripts</title>
|
||||
|
||||
<segmentedlist>
|
||||
<segtitle>Installed scripts</segtitle>
|
||||
<seglistitem><seg>checkfs, cleanfs, console, functions, halt, hotplug, ifdown, ifup,
|
||||
localnet, mountfs, mountkernfs, network, rc, reboot, sendsignals, setclock, static,
|
||||
swap, sysklogd, template, and udev</seg></seglistitem>
|
||||
</segmentedlist>
|
||||
<segmentedlist>
|
||||
<segtitle>Installed scripts</segtitle>
|
||||
|
||||
<variablelist><bridgehead renderas="sect3">Short Descriptions</bridgehead>
|
||||
<?dbfo list-presentation="list"?>
|
||||
<?dbhtml list-presentation="table"?>
|
||||
<seglistitem>
|
||||
<seg>checkfs, cleanfs, console, functions, halt, hotplug, ifdown, ifup,
|
||||
localnet, mountfs, mountkernfs, network, rc, reboot, sendsignals,
|
||||
setclock, static, swap, sysklogd, template, and udev</seg>
|
||||
</seglistitem>
|
||||
</segmentedlist>
|
||||
|
||||
<varlistentry id="checkfs-bootscripts">
|
||||
<term><command>checkfs</command></term>
|
||||
<listitem>
|
||||
<para>Checks the integrity of the file systems before they are mounted (with the
|
||||
exception of journal and network based file systems)</para>
|
||||
<indexterm zone="ch-scripts-bootscripts checkfs-bootscripts"><primary sortas="d-checkfs">checkfs</primary></indexterm>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<variablelist>
|
||||
<bridgehead renderas="sect3">Short Descriptions</bridgehead>
|
||||
<?dbfo list-presentation="list"?>
|
||||
<?dbhtml list-presentation="table"?>
|
||||
|
||||
<varlistentry id="cleanfs-bootscripts">
|
||||
<term><command>cleanfs</command></term>
|
||||
<listitem>
|
||||
<para>Removes files that should not be
|
||||
preserved between reboots, such as those in <filename class="directory">/var/run/</filename> and
|
||||
<filename class="directory">/var/lock/</filename>; it re-creates <filename>/var/run/utmp</filename>
|
||||
and removes the possibly present <filename>/etc/nologin</filename>,
|
||||
<filename>/fastboot</filename>, and <filename>/forcefsck</filename> files</para>
|
||||
<indexterm zone="ch-scripts-bootscripts cleanfs-bootscripts"><primary sortas="d-cleanfs">cleanfs</primary></indexterm>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry id="checkfs-bootscripts">
|
||||
<term><command>checkfs</command></term>
|
||||
<listitem>
|
||||
<para>Checks the integrity of the file systems before they are mounted
|
||||
(with the exception of journal and network based file systems)</para>
|
||||
<indexterm zone="ch-scripts-bootscripts checkfs-bootscripts">
|
||||
<primary sortas="d-checkfs">checkfs</primary>
|
||||
</indexterm>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry id="console-bootscripts">
|
||||
<term><command>console</command></term>
|
||||
<listitem>
|
||||
<para>Loads the correct keymap table for the desired keyboard layout; it also
|
||||
sets the screen font</para>
|
||||
<indexterm zone="ch-scripts-bootscripts console-bootscripts"><primary sortas="d-console">console</primary></indexterm>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry id="cleanfs-bootscripts">
|
||||
<term><command>cleanfs</command></term>
|
||||
<listitem>
|
||||
<para>Removes files that should not be preserved between reboots, such
|
||||
as those in <filename class="directory">/var/run/</filename> and
|
||||
<filename class="directory">/var/lock/</filename>; it re-creates
|
||||
<filename>/var/run/utmp</filename> and removes the possibly present
|
||||
<filename>/etc/nologin</filename>, <filename>/fastboot</filename>, and
|
||||
<filename>/forcefsck</filename> files</para>
|
||||
<indexterm zone="ch-scripts-bootscripts cleanfs-bootscripts">
|
||||
<primary sortas="d-cleanfs">cleanfs</primary>
|
||||
</indexterm>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry id="functions-bootscripts">
|
||||
<term><command>functions</command></term>
|
||||
<listitem>
|
||||
<para>Contains common functions, such as error and status checking, that are
|
||||
used by several bootscripts</para>
|
||||
<indexterm zone="ch-scripts-bootscripts functions-bootscripts"><primary sortas="d-functions">functions</primary></indexterm>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry id="console-bootscripts">
|
||||
<term><command>console</command></term>
|
||||
<listitem>
|
||||
<para>Loads the correct keymap table for the desired keyboard layout;
|
||||
it also sets the screen font</para>
|
||||
<indexterm zone="ch-scripts-bootscripts console-bootscripts">
|
||||
<primary sortas="d-console">console</primary>
|
||||
</indexterm>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry id="halt-bootscripts">
|
||||
<term><command>halt</command></term>
|
||||
<listitem>
|
||||
<para>Halts the system</para>
|
||||
<indexterm zone="ch-scripts-bootscripts halt-bootscripts"><primary sortas="d-halt">halt</primary></indexterm>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry id="functions-bootscripts">
|
||||
<term><command>functions</command></term>
|
||||
<listitem>
|
||||
<para>Contains common functions, such as error and status checking,
|
||||
that are used by several bootscripts</para>
|
||||
<indexterm zone="ch-scripts-bootscripts functions-bootscripts">
|
||||
<primary sortas="d-functions">functions</primary>
|
||||
</indexterm>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry id="hotplug-bootscripts">
|
||||
<term><command>hotplug</command></term>
|
||||
<listitem>
|
||||
<para>Loads modules for system devices</para>
|
||||
<indexterm zone="ch-scripts-bootscripts hotplug-bootscripts"><primary sortas="d-hotplug">hotplug</primary></indexterm>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry id="halt-bootscripts">
|
||||
<term><command>halt</command></term>
|
||||
<listitem>
|
||||
<para>Halts the system</para>
|
||||
<indexterm zone="ch-scripts-bootscripts halt-bootscripts">
|
||||
<primary sortas="d-halt">halt</primary>
|
||||
</indexterm>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry id="ifdown-bootscripts">
|
||||
<term><command>ifdown</command></term>
|
||||
<listitem>
|
||||
<para>Assists the network script with stopping network devices</para>
|
||||
<indexterm zone="ch-scripts-bootscripts ifdown-bootscripts"><primary sortas="d-ifdown">ifdown</primary></indexterm>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry id="hotplug-bootscripts">
|
||||
<term><command>hotplug</command></term>
|
||||
<listitem>
|
||||
<para>Loads modules for system devices</para>
|
||||
<indexterm zone="ch-scripts-bootscripts hotplug-bootscripts">
|
||||
<primary sortas="d-hotplug">hotplug</primary>
|
||||
</indexterm>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry id="ifup-bootscripts">
|
||||
<term><command>ifup</command></term>
|
||||
<listitem>
|
||||
<para>Assists the network script with starting network devices</para>
|
||||
<indexterm zone="ch-scripts-bootscripts ifup-bootscripts"><primary sortas="d-ifup">ifup</primary></indexterm>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry id="ifdown-bootscripts">
|
||||
<term><command>ifdown</command></term>
|
||||
<listitem>
|
||||
<para>Assists the network script with stopping network devices</para>
|
||||
<indexterm zone="ch-scripts-bootscripts ifdown-bootscripts">
|
||||
<primary sortas="d-ifdown">ifdown</primary>
|
||||
</indexterm>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry id="localnet-bootscripts">
|
||||
<term><command>localnet</command></term>
|
||||
<listitem>
|
||||
<para>Sets up the system's hostname and local loopback device</para>
|
||||
<indexterm zone="ch-scripts-bootscripts localnet-bootscripts"><primary sortas="d-localnet">localnet</primary></indexterm>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry id="ifup-bootscripts">
|
||||
<term><command>ifup</command></term>
|
||||
<listitem>
|
||||
<para>Assists the network script with starting network devices</para>
|
||||
<indexterm zone="ch-scripts-bootscripts ifup-bootscripts">
|
||||
<primary sortas="d-ifup">ifup</primary>
|
||||
</indexterm>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry id="mountfs-bootscripts">
|
||||
<term><command>mountfs</command></term>
|
||||
<listitem>
|
||||
<para>Mounts all file systems, except ones that are marked
|
||||
<emphasis>noauto</emphasis> or are network based</para>
|
||||
<indexterm zone="ch-scripts-bootscripts mountfs-bootscripts"><primary sortas="d-mountfs">mountfs</primary></indexterm>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry id="localnet-bootscripts">
|
||||
<term><command>localnet</command></term>
|
||||
<listitem>
|
||||
<para>Sets up the system's hostname and local loopback device</para>
|
||||
<indexterm zone="ch-scripts-bootscripts localnet-bootscripts">
|
||||
<primary sortas="d-localnet">localnet</primary>
|
||||
</indexterm>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry id="mountkernfs-bootscripts">
|
||||
<term><command>mountkernfs</command></term>
|
||||
<listitem>
|
||||
<para>Mounts virtual kernel file systems, such as <systemitem
|
||||
class="filesystem">proc</systemitem></para>
|
||||
<indexterm zone="ch-scripts-bootscripts mountkernfs-bootscripts"><primary sortas="d-mountkernfs">mountkernfs</primary></indexterm>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry id="mountfs-bootscripts">
|
||||
<term><command>mountfs</command></term>
|
||||
<listitem>
|
||||
<para>Mounts all file systems, except ones that are marked
|
||||
<emphasis>noauto</emphasis> or are network based</para>
|
||||
<indexterm zone="ch-scripts-bootscripts mountfs-bootscripts">
|
||||
<primary sortas="d-mountfs">mountfs</primary>
|
||||
</indexterm>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry id="network-bootscripts">
|
||||
<term><command>network</command></term>
|
||||
<listitem>
|
||||
<para>Sets up network interfaces, such as network cards, and sets up
|
||||
the default gateway (where applicable)</para>
|
||||
<indexterm zone="ch-scripts-bootscripts network-bootscripts"><primary sortas="d-network">network</primary></indexterm>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry id="mountkernfs-bootscripts">
|
||||
<term><command>mountkernfs</command></term>
|
||||
<listitem>
|
||||
<para>Mounts virtual kernel file systems, such as <systemitem
|
||||
class="filesystem">proc</systemitem></para>
|
||||
<indexterm zone="ch-scripts-bootscripts mountkernfs-bootscripts">
|
||||
<primary sortas="d-mountkernfs">mountkernfs</primary>
|
||||
</indexterm>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry id="rc-bootscripts">
|
||||
<term><command>rc</command></term>
|
||||
<listitem>
|
||||
<para>The master run-level control script; it is responsible for running all the
|
||||
other bootscripts one-by-one, in a sequence determined by the name of the
|
||||
symbolic links being processed</para>
|
||||
<indexterm zone="ch-scripts-bootscripts rc-bootscripts"><primary sortas="d-rc">rc</primary></indexterm>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry id="network-bootscripts">
|
||||
<term><command>network</command></term>
|
||||
<listitem>
|
||||
<para>Sets up network interfaces, such as network cards, and sets up
|
||||
the default gateway (where applicable)</para>
|
||||
<indexterm zone="ch-scripts-bootscripts network-bootscripts">
|
||||
<primary sortas="d-network">network</primary>
|
||||
</indexterm>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry id="reboot-bootscripts">
|
||||
<term><command>reboot</command></term>
|
||||
<listitem>
|
||||
<para>Reboots the system</para>
|
||||
<indexterm zone="ch-scripts-bootscripts reboot-bootscripts"><primary sortas="d-reboot">reboot</primary></indexterm>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry id="rc-bootscripts">
|
||||
<term><command>rc</command></term>
|
||||
<listitem>
|
||||
<para>The master run-level control script; it is responsible for
|
||||
running all the other bootscripts one-by-one, in a sequence determined
|
||||
by the name of the symbolic links being processed</para>
|
||||
<indexterm zone="ch-scripts-bootscripts rc-bootscripts">
|
||||
<primary sortas="d-rc">rc</primary>
|
||||
</indexterm>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry id="sendsignals-bootscripts">
|
||||
<term><command>sendsignals</command></term>
|
||||
<listitem>
|
||||
<para>Makes sure every process is terminated before the system reboots
|
||||
or halts</para>
|
||||
<indexterm zone="ch-scripts-bootscripts sendsignals-bootscripts"><primary sortas="d-sendsignals">sendsignals</primary></indexterm>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry id="reboot-bootscripts">
|
||||
<term><command>reboot</command></term>
|
||||
<listitem>
|
||||
<para>Reboots the system</para>
|
||||
<indexterm zone="ch-scripts-bootscripts reboot-bootscripts">
|
||||
<primary sortas="d-reboot">reboot</primary>
|
||||
</indexterm>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry id="setclock-bootscripts">
|
||||
<term><command>setclock</command></term>
|
||||
<listitem>
|
||||
<para>Resets the kernel clock to local time in case the hardware clock
|
||||
is not set to UTC time</para>
|
||||
<indexterm zone="ch-scripts-bootscripts setclock-bootscripts"><primary sortas="d-setclock">setclock</primary></indexterm>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry id="sendsignals-bootscripts">
|
||||
<term><command>sendsignals</command></term>
|
||||
<listitem>
|
||||
<para>Makes sure every process is terminated before the system reboots
|
||||
or halts</para>
|
||||
<indexterm zone="ch-scripts-bootscripts sendsignals-bootscripts">
|
||||
<primary sortas="d-sendsignals">sendsignals</primary>
|
||||
</indexterm>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry id="static-bootscripts">
|
||||
<term><command>static</command></term>
|
||||
<listitem>
|
||||
<para>Provides the functionality needed to assign a static Internet
|
||||
Protocol (IP) address to a network interface</para>
|
||||
<indexterm zone="ch-scripts-bootscripts static-bootscripts"><primary sortas="d-static">static</primary></indexterm>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry id="setclock-bootscripts">
|
||||
<term><command>setclock</command></term>
|
||||
<listitem>
|
||||
<para>Resets the kernel clock to local time in case the hardware clock
|
||||
is not set to UTC time</para>
|
||||
<indexterm zone="ch-scripts-bootscripts setclock-bootscripts">
|
||||
<primary sortas="d-setclock">setclock</primary>
|
||||
</indexterm>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry id="swap-bootscripts">
|
||||
<term><command>swap</command></term>
|
||||
<listitem>
|
||||
<para>Enables and disables swap files and partitions</para>
|
||||
<indexterm zone="ch-scripts-bootscripts swap-bootscripts"><primary sortas="d-swap">swap</primary></indexterm>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry id="static-bootscripts">
|
||||
<term><command>static</command></term>
|
||||
<listitem>
|
||||
<para>Provides the functionality needed to assign a static Internet
|
||||
Protocol (IP) address to a network interface</para>
|
||||
<indexterm zone="ch-scripts-bootscripts static-bootscripts">
|
||||
<primary sortas="d-static">static</primary>
|
||||
</indexterm>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry id="sysklogd-bootscripts">
|
||||
<term><command>sysklogd</command></term>
|
||||
<listitem>
|
||||
<para>Starts and stops the system and kernel log daemons</para>
|
||||
<indexterm zone="ch-scripts-bootscripts sysklogd-bootscripts"><primary sortas="d-sysklogd">sysklogd</primary></indexterm>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry id="swap-bootscripts">
|
||||
<term><command>swap</command></term>
|
||||
<listitem>
|
||||
<para>Enables and disables swap files and partitions</para>
|
||||
<indexterm zone="ch-scripts-bootscripts swap-bootscripts">
|
||||
<primary sortas="d-swap">swap</primary>
|
||||
</indexterm>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry id="template-bootscripts">
|
||||
<term><command>template</command></term>
|
||||
<listitem>
|
||||
<para>A template to create custom bootscripts for other
|
||||
daemons</para>
|
||||
<indexterm zone="ch-scripts-bootscripts template-bootscripts"><primary sortas="d-template">template</primary></indexterm>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry id="sysklogd-bootscripts">
|
||||
<term><command>sysklogd</command></term>
|
||||
<listitem>
|
||||
<para>Starts and stops the system and kernel log daemons</para>
|
||||
<indexterm zone="ch-scripts-bootscripts sysklogd-bootscripts">
|
||||
<primary sortas="d-sysklogd">sysklogd</primary>
|
||||
</indexterm>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry id="udev-bootscripts">
|
||||
<term><command>udev</command></term>
|
||||
<listitem>
|
||||
<para>Prepares the <filename class="directory">/dev</filename> directory and
|
||||
starts Udev</para>
|
||||
<indexterm zone="ch-scripts-bootscripts udev-bootscripts"><primary sortas="d-udev">udev</primary></indexterm>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
<varlistentry id="template-bootscripts">
|
||||
<term><command>template</command></term>
|
||||
<listitem>
|
||||
<para>A template to create custom bootscripts for other
|
||||
daemons</para>
|
||||
<indexterm zone="ch-scripts-bootscripts template-bootscripts">
|
||||
<primary sortas="d-template">template</primary>
|
||||
</indexterm>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
</sect2>
|
||||
<varlistentry id="udev-bootscripts">
|
||||
<term><command>udev</command></term>
|
||||
<listitem>
|
||||
<para>Prepares the <filename class="directory">/dev</filename>
|
||||
directory and starts Udev</para>
|
||||
<indexterm zone="ch-scripts-bootscripts udev-bootscripts">
|
||||
<primary sortas="d-udev">udev</primary>
|
||||
</indexterm>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
</variablelist>
|
||||
|
||||
</sect2>
|
||||
|
||||
</sect1>
|
||||
|
||||
|
@ -1,24 +1,27 @@
|
||||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN" "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [
|
||||
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN"
|
||||
"http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [
|
||||
<!ENTITY % general-entities SYSTEM "../general.ent">
|
||||
%general-entities;
|
||||
]>
|
||||
<chapter id="chapter-bootscripts" xreflabel="Chapter 7">
|
||||
<?dbhtml dir="chapter07"?>
|
||||
<title>Setting Up System Bootscripts</title>
|
||||
<?dbhtml filename="chapter07.html"?>
|
||||
|
||||
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="introduction.xml"/>
|
||||
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="bootscripts.xml"/>
|
||||
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="usage.xml"/>
|
||||
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="udev.xml"/>
|
||||
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="setclock.xml"/>
|
||||
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="console.xml"/>
|
||||
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="sysklogd.xml"/>
|
||||
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="inputrc.xml"/>
|
||||
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="profile.xml"/>
|
||||
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="hostname.xml"/>
|
||||
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="hosts.xml"/>
|
||||
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="network.xml"/>
|
||||
<chapter id="chapter-bootscripts" xreflabel="Chapter 7">
|
||||
<?dbhtml dir="chapter07"?>
|
||||
<?dbhtml filename="chapter07.html"?>
|
||||
|
||||
<title>Setting Up System Bootscripts</title>
|
||||
|
||||
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="introduction.xml"/>
|
||||
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="bootscripts.xml"/>
|
||||
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="usage.xml"/>
|
||||
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="udev.xml"/>
|
||||
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="setclock.xml"/>
|
||||
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="console.xml"/>
|
||||
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="sysklogd.xml"/>
|
||||
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="inputrc.xml"/>
|
||||
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="profile.xml"/>
|
||||
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="hostname.xml"/>
|
||||
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="hosts.xml"/>
|
||||
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="network.xml"/>
|
||||
|
||||
</chapter>
|
||||
|
@ -1,70 +1,76 @@
|
||||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN" "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [
|
||||
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN"
|
||||
"http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [
|
||||
<!ENTITY % general-entities SYSTEM "../general.ent">
|
||||
%general-entities;
|
||||
]>
|
||||
|
||||
<sect1 id="ch-scripts-console">
|
||||
<title>Configuring the Linux Console</title>
|
||||
<?dbhtml filename="console.html"?>
|
||||
<?dbhtml filename="console.html"?>
|
||||
|
||||
<indexterm zone="ch-scripts-console">
|
||||
<primary sortas="d-console">console</primary>
|
||||
<secondary>configuring</secondary></indexterm>
|
||||
<title>Configuring the Linux Console</title>
|
||||
|
||||
<para>This section discusses how to configure the <command>console</command>
|
||||
bootscript that sets up the keyboard map and the console font. If non-ASCII
|
||||
characters (e.g., the British pound sign and Euro character) will not be used
|
||||
and the keyboard is a U.S. one, skip this section. Without the configuration
|
||||
file, the <command>console</command> bootscript will do nothing.</para>
|
||||
<indexterm zone="ch-scripts-console">
|
||||
<primary sortas="d-console">console</primary>
|
||||
<secondary>configuring</secondary>
|
||||
</indexterm>
|
||||
|
||||
<para>The <command>console</command> script reads the
|
||||
<filename>/etc/sysconfig/console</filename> file for configuration information.
|
||||
Decide which keymap and screen font will be used. Various language-specific
|
||||
HOWTO's can also help with this (see <ulink
|
||||
url="http://www.tldp.org/HOWTO/HOWTO-INDEX/other-lang.html"/>. A pre-made
|
||||
<filename>/etc/sysconfig/console</filename> file with known settings for several
|
||||
countries was installed with the LFS-Bootscripts package, so the relevant
|
||||
section can be uncommented if the country is supported. If still in doubt, look
|
||||
in the <filename class="directory">/usr/share/kbd</filename> directory for valid
|
||||
keymaps and screen fonts. Read <filename>loadkeys(1)</filename> and
|
||||
<filename>setfont(8)</filename> to determine the correct arguments for
|
||||
these programs. Once decided, create the configuration file with the following
|
||||
command:</para>
|
||||
<para>This section discusses how to configure the <command>console</command>
|
||||
bootscript that sets up the keyboard map and the console font. If non-ASCII
|
||||
characters (e.g., the British pound sign and Euro character) will not be used
|
||||
and the keyboard is a U.S. one, skip this section. Without the configuration
|
||||
file, the <command>console</command> bootscript will do nothing.</para>
|
||||
|
||||
<para>The <command>console</command> script reads the
|
||||
<filename>/etc/sysconfig/console</filename> file for configuration information.
|
||||
Decide which keymap and screen font will be used. Various language-specific
|
||||
HOWTO's can also help with this (see <ulink
|
||||
url="http://www.tldp.org/HOWTO/HOWTO-INDEX/other-lang.html"/>. A pre-made
|
||||
<filename>/etc/sysconfig/console</filename> file with known settings for several
|
||||
countries was installed with the LFS-Bootscripts package, so the relevant
|
||||
section can be uncommented if the country is supported. If still in doubt, look
|
||||
in the <filename class="directory">/usr/share/kbd</filename> directory for valid
|
||||
keymaps and screen fonts. Read <filename>loadkeys(1)</filename> and
|
||||
<filename>setfont(8)</filename> to determine the correct arguments for
|
||||
these programs. Once decided, create the configuration file with the following
|
||||
command:</para>
|
||||
|
||||
<screen><userinput>cat >/etc/sysconfig/console <<"EOF"
|
||||
<literal>KEYMAP="<replaceable>[arguments for loadkeys]</replaceable>"
|
||||
FONT="<replaceable>[arguments for setfont]</replaceable>"</literal>
|
||||
EOF</userinput></screen>
|
||||
|
||||
<para>For example, for Spanish users who also want to use the Euro
|
||||
character (accessible by pressing AltGr+E), the following settings are
|
||||
correct:</para>
|
||||
<para>For example, for Spanish users who also want to use the Euro
|
||||
character (accessible by pressing AltGr+E), the following settings are
|
||||
correct:</para>
|
||||
|
||||
<screen role="nodump"><userinput>cat >/etc/sysconfig/console <<"EOF"
|
||||
<literal>KEYMAP="es euro2"
|
||||
FONT="lat9-16 -u iso01"</literal>
|
||||
EOF</userinput></screen>
|
||||
|
||||
<note><para>The <envar>FONT</envar> line above is correct only for the ISO 8859-15
|
||||
character set. If using ISO 8859-1 and, therefore, a pound sign
|
||||
instead of Euro, the correct <envar>FONT</envar> line would be:</para>
|
||||
<note>
|
||||
<para>The <envar>FONT</envar> line above is correct only for the ISO 8859-15
|
||||
character set. If using ISO 8859-1 and, therefore, a pound sign
|
||||
instead of Euro, the correct <envar>FONT</envar> line would be:</para>
|
||||
|
||||
<screen role="nodump"><userinput>FONT="lat1-16"</userinput></screen></note>
|
||||
<screen role="nodump"><userinput>FONT="lat1-16"</userinput></screen>
|
||||
</note>
|
||||
|
||||
<para>If the <envar>KEYMAP</envar> or <envar>FONT</envar> variable is not set, the
|
||||
<command>console</command> initscript will not run the corresponding
|
||||
program.</para>
|
||||
<para>If the <envar>KEYMAP</envar> or <envar>FONT</envar> variable is not set,
|
||||
the <command>console</command> initscript will not run the corresponding
|
||||
program.</para>
|
||||
|
||||
<para>In some keymaps, the Backspace and Delete keys send characters different
|
||||
from ones in the default keymap built into the kernel. This confuses some
|
||||
applications. For example, Emacs displays its help (instead of erasing the
|
||||
character before the cursor) when Backspace is pressed. To check if the keymap
|
||||
in use is affected (this works only for i386 keymaps):</para>
|
||||
<para>In some keymaps, the Backspace and Delete keys send characters different
|
||||
from ones in the default keymap built into the kernel. This confuses some
|
||||
applications. For example, Emacs displays its help (instead of erasing the
|
||||
character before the cursor) when Backspace is pressed. To check if the keymap
|
||||
in use is affected (this works only for i386 keymaps):</para>
|
||||
|
||||
<screen role="nodump"><userinput>zgrep '\W14\W' <replaceable>[/path/to/your/keymap]</replaceable></userinput></screen>
|
||||
|
||||
<para>If the keycode 14 is Backspace instead of Delete, create the
|
||||
following keymap snippet to fix this issue:</para>
|
||||
<para>If the keycode 14 is Backspace instead of Delete, create the
|
||||
following keymap snippet to fix this issue:</para>
|
||||
|
||||
<screen role="nodump"><userinput>mkdir -pv /etc/kbd && cat > /etc/kbd/bs-sends-del <<"EOF"
|
||||
<literal> keycode 14 = Delete Delete Delete Delete
|
||||
@ -76,32 +82,31 @@ following keymap snippet to fix this issue:</para>
|
||||
altgr control alt keycode 111 = Boot</literal>
|
||||
EOF</userinput></screen>
|
||||
|
||||
<para>Tell the <command>console</command> script to load this
|
||||
snippet after the main keymap:</para>
|
||||
<para>Tell the <command>console</command> script to load this
|
||||
snippet after the main keymap:</para>
|
||||
|
||||
<screen role="nodump"><userinput>cat >>/etc/sysconfig/console <<"EOF"
|
||||
<literal>KEYMAP_CORRECTIONS="/etc/kbd/bs-sends-del"</literal>
|
||||
EOF</userinput></screen>
|
||||
|
||||
<para>To compile the keymap directly into the kernel instead of
|
||||
setting it every time from the <command>console</command> bootscript,
|
||||
follow the instructions given in <xref linkend="ch-bootable-kernel" role="."/>
|
||||
Doing this ensures that the keyboard will always work as expected,
|
||||
even when booting into maintenance mode (by passing
|
||||
<parameter>init=/bin/sh</parameter> to the kernel), because the
|
||||
<command>console</command> bootscript will not be run in that
|
||||
situation. Additionally, the kernel will not set the screen font
|
||||
automatically. This should not pose many problems because ASCII characters
|
||||
will be handled correctly, and it is unlikely that a user would need
|
||||
to rely on non-ASCII characters while in maintenance mode.</para>
|
||||
<para>To compile the keymap directly into the kernel instead of
|
||||
setting it every time from the <command>console</command> bootscript,
|
||||
follow the instructions given in <xref linkend="ch-bootable-kernel" role="."/>
|
||||
Doing this ensures that the keyboard will always work as expected,
|
||||
even when booting into maintenance mode (by passing
|
||||
<parameter>init=/bin/sh</parameter> to the kernel), because the
|
||||
<command>console</command> bootscript will not be run in that
|
||||
situation. Additionally, the kernel will not set the screen font
|
||||
automatically. This should not pose many problems because ASCII characters
|
||||
will be handled correctly, and it is unlikely that a user would need
|
||||
to rely on non-ASCII characters while in maintenance mode.</para>
|
||||
|
||||
<para>Since the kernel will set up the keymap, it is possible to omit
|
||||
the <envar>KEYMAP</envar> variable from the
|
||||
<filename>/etc/sysconfig/console</filename> configuration file. It can
|
||||
also be left in place, if desired, without consequence. Keeping it
|
||||
could be beneficial if running several different kernels where it is
|
||||
difficult to ensure that the keymap is compiled into every one of
|
||||
them.</para>
|
||||
<para>Since the kernel will set up the keymap, it is possible to omit
|
||||
the <envar>KEYMAP</envar> variable from the
|
||||
<filename>/etc/sysconfig/console</filename> configuration file. It can
|
||||
also be left in place, if desired, without consequence. Keeping it
|
||||
could be beneficial if running several different kernels where it is
|
||||
difficult to ensure that the keymap is compiled into every one of
|
||||
them.</para>
|
||||
|
||||
</sect1>
|
||||
|
||||
|
@ -1,29 +1,32 @@
|
||||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN" "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [
|
||||
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN"
|
||||
"http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [
|
||||
<!ENTITY % general-entities SYSTEM "../general.ent">
|
||||
%general-entities;
|
||||
]>
|
||||
|
||||
<sect1 id="ch-scripts-hostname">
|
||||
<title>Configuring the localnet Script</title>
|
||||
<?dbhtml filename="hostname.html"?>
|
||||
<?dbhtml filename="hostname.html"?>
|
||||
|
||||
<indexterm zone="ch-scripts-hostname">
|
||||
<primary sortas="d-localnet">localnet</primary>
|
||||
<secondary>configuring</secondary></indexterm>
|
||||
<title>Configuring the localnet Script</title>
|
||||
|
||||
<para>Part of the job of the <command>localnet</command> script is setting the
|
||||
system's hostname. This needs to be configured in the
|
||||
<filename>/etc/sysconfig/network</filename> file.</para>
|
||||
<indexterm zone="ch-scripts-hostname">
|
||||
<primary sortas="d-localnet">localnet</primary>
|
||||
<secondary>configuring</secondary>
|
||||
</indexterm>
|
||||
|
||||
<para>Create the <filename>/etc/sysconfig/network</filename> file and enter a
|
||||
hostname by running:</para>
|
||||
<para>Part of the job of the <command>localnet</command> script is setting the
|
||||
system's hostname. This needs to be configured in the
|
||||
<filename>/etc/sysconfig/network</filename> file.</para>
|
||||
|
||||
<para>Create the <filename>/etc/sysconfig/network</filename> file and enter a
|
||||
hostname by running:</para>
|
||||
|
||||
<screen><userinput>echo "HOSTNAME=<replaceable>[lfs]</replaceable>" > /etc/sysconfig/network</userinput></screen>
|
||||
|
||||
<para><replaceable>[lfs]</replaceable> needs to be replaced with the name given
|
||||
to the computer. Do not enter the Fully Qualified Domain Name (FQDN) here. That
|
||||
information will be put in the <filename>/etc/hosts</filename> file in the next
|
||||
section.</para>
|
||||
<para><replaceable>[lfs]</replaceable> needs to be replaced with the name given
|
||||
to the computer. Do not enter the Fully Qualified Domain Name (FQDN) here. That
|
||||
information will be put in the <filename>/etc/hosts</filename> file in the next
|
||||
section.</para>
|
||||
|
||||
</sect1>
|
||||
|
||||
|
@ -1,48 +1,53 @@
|
||||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN" "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [
|
||||
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN"
|
||||
"http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [
|
||||
<!ENTITY % general-entities SYSTEM "../general.ent">
|
||||
%general-entities;
|
||||
]>
|
||||
|
||||
<sect1 id="ch-scripts-hosts">
|
||||
<title>Creating the /etc/hosts File</title>
|
||||
<?dbhtml filename="hosts.html"?>
|
||||
<?dbhtml filename="hosts.html"?>
|
||||
|
||||
<indexterm zone="ch-scripts-hosts"><primary sortas="e-/etc/hosts">/etc/hosts</primary></indexterm>
|
||||
<title>Creating the /etc/hosts File</title>
|
||||
|
||||
<indexterm zone="ch-scripts-hosts">
|
||||
<primary sortas="d-localnet">localnet</primary>
|
||||
<secondary>/etc/hosts</secondary></indexterm>
|
||||
<indexterm zone="ch-scripts-hosts">
|
||||
<primary sortas="e-/etc/hosts">/etc/hosts</primary>
|
||||
</indexterm>
|
||||
|
||||
<indexterm zone="ch-scripts-hosts">
|
||||
<primary sortas="d-network">network</primary>
|
||||
<secondary>/etc/hosts</secondary></indexterm>
|
||||
<indexterm zone="ch-scripts-hosts">
|
||||
<primary sortas="d-localnet">localnet</primary>
|
||||
<secondary>/etc/hosts</secondary></indexterm>
|
||||
|
||||
<para>If a network card is to be configured, decide on the IP address,
|
||||
FQDN, and possible aliases for use in the
|
||||
<filename>/etc/hosts</filename> file. The syntax is:</para>
|
||||
<indexterm zone="ch-scripts-hosts">
|
||||
<primary sortas="d-network">network</primary>
|
||||
<secondary>/etc/hosts</secondary></indexterm>
|
||||
|
||||
<screen><IP address> myhost.example.org aliases</screen>
|
||||
<para>If a network card is to be configured, decide on the IP address,
|
||||
FQDN, and possible aliases for use in the
|
||||
<filename>/etc/hosts</filename> file. The syntax is:</para>
|
||||
|
||||
<para>Unless the computer is to be visible to the Internet (i.e.,
|
||||
there is a registered domain and a valid block of assigned IP
|
||||
addresses—most users do not have this), make sure that the IP
|
||||
address is in the private network IP address range. Valid ranges
|
||||
are:</para>
|
||||
<screen><literal><IP address> myhost.example.org aliases</literal></screen>
|
||||
|
||||
<screen> Class Networks
|
||||
<para>Unless the computer is to be visible to the Internet (i.e.,
|
||||
there is a registered domain and a valid block of assigned IP
|
||||
addresses—most users do not have this), make sure that the IP
|
||||
address is in the private network IP address range. Valid ranges
|
||||
are:</para>
|
||||
|
||||
<screen><literal> Class Networks
|
||||
A 10.0.0.0
|
||||
B 172.16.0.0 through 172.31.0.255
|
||||
C 192.168.0.0 through 192.168.255.255</screen>
|
||||
C 192.168.0.0 through 192.168.255.255</literal></screen>
|
||||
|
||||
<para>A valid IP address could be 192.168.1.1. A valid FQDN for this
|
||||
IP could be www.linuxfromscratch.org (not recommended because this is
|
||||
a valid registered domain address and could cause domain name server
|
||||
issues).</para>
|
||||
<para>A valid IP address could be 192.168.1.1. A valid FQDN for this
|
||||
IP could be www.linuxfromscratch.org (not recommended because this is
|
||||
a valid registered domain address and could cause domain name server
|
||||
issues).</para>
|
||||
|
||||
<para>Even if not using a network card, an FQDN is still required.
|
||||
This is necessary for certain programs to operate correctly.</para>
|
||||
<para>Even if not using a network card, an FQDN is still required.
|
||||
This is necessary for certain programs to operate correctly.</para>
|
||||
|
||||
<para>Create the <filename>/etc/hosts</filename> file by running:</para>
|
||||
<para>Create the <filename>/etc/hosts</filename> file by running:</para>
|
||||
|
||||
<screen><userinput>cat > /etc/hosts << "EOF"
|
||||
<literal># Begin /etc/hosts (network card version)
|
||||
@ -53,14 +58,14 @@ This is necessary for certain programs to operate correctly.</para>
|
||||
# End /etc/hosts (network card version)</literal>
|
||||
EOF</userinput></screen>
|
||||
|
||||
<para>The <replaceable>[192.168.1.1]</replaceable> and
|
||||
<replaceable>[<HOSTNAME>.example.org]</replaceable>
|
||||
values need to be changed for specific users or requirements (if
|
||||
assigned an IP address by a network/system administrator and the
|
||||
machine will be connected to an existing network).</para>
|
||||
<para>The <replaceable>[192.168.1.1]</replaceable> and
|
||||
<replaceable>[<HOSTNAME>.example.org]</replaceable>
|
||||
values need to be changed for specific users or requirements (if
|
||||
assigned an IP address by a network/system administrator and the
|
||||
machine will be connected to an existing network).</para>
|
||||
|
||||
<para>If a network card is not going to be configured, create the
|
||||
<filename>/etc/hosts</filename> file by running:</para>
|
||||
<para>If a network card is not going to be configured, create the
|
||||
<filename>/etc/hosts</filename> file by running:</para>
|
||||
|
||||
<screen role="nodump"><userinput>cat > /etc/hosts << "EOF"
|
||||
<literal># Begin /etc/hosts (no network card version)
|
||||
@ -71,4 +76,3 @@ machine will be connected to an existing network).</para>
|
||||
EOF</userinput></screen>
|
||||
|
||||
</sect1>
|
||||
|
||||
|
@ -1,31 +1,37 @@
|
||||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN" "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [
|
||||
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN"
|
||||
"http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [
|
||||
<!ENTITY % general-entities SYSTEM "../general.ent">
|
||||
%general-entities;
|
||||
]>
|
||||
|
||||
<sect1 id="ch-scripts-inputrc">
|
||||
<title>Creating the /etc/inputrc File</title>
|
||||
<?dbhtml filename="inputrc.html"?>
|
||||
<?dbhtml filename="inputrc.html"?>
|
||||
|
||||
<indexterm zone="ch-scripts-inputrc"><primary sortas="e-/etc/inputrc">/etc/inputrc</primary></indexterm>
|
||||
<title>Creating the /etc/inputrc File</title>
|
||||
|
||||
<para>The <filename>inputrc</filename> file handles keyboard mapping for
|
||||
specific situations. This file is the startup file used by Readline — the
|
||||
input-related library — used by Bash and most other shells.</para>
|
||||
<indexterm zone="ch-scripts-inputrc">
|
||||
<primary sortas="e-/etc/inputrc">/etc/inputrc</primary>
|
||||
</indexterm>
|
||||
|
||||
<para>Most people do not need user-specific keyboard mappings so the command
|
||||
below creates a global <filename>/etc/inputrc</filename> used by everyone who
|
||||
logs in. If you later decide you need to override the defaults on a per-user
|
||||
basis, you can create a <filename>.inputrc</filename> file in the user's home
|
||||
directory with the modified mappings.</para>
|
||||
<para>The <filename>inputrc</filename> file handles keyboard mapping for
|
||||
specific situations. This file is the startup file used by Readline — the
|
||||
input-related library — used by Bash and most other shells.</para>
|
||||
|
||||
<para>For more information on how to edit the <filename>inputrc</filename> file,
|
||||
see <command>info bash</command> under the <emphasis>Readline Init File</emphasis>
|
||||
section. <command>info readline</command> is also a good source of information.</para>
|
||||
<para>Most people do not need user-specific keyboard mappings so the command
|
||||
below creates a global <filename>/etc/inputrc</filename> used by everyone who
|
||||
logs in. If you later decide you need to override the defaults on a per-user
|
||||
basis, you can create a <filename>.inputrc</filename> file in the user's home
|
||||
directory with the modified mappings.</para>
|
||||
|
||||
<para>Below is a generic global <filename>inputrc</filename> along with comments
|
||||
to explain what the various options do. Note that comments cannot be on the same
|
||||
line as commands. Create the file using the following command:</para>
|
||||
<para>For more information on how to edit the <filename>inputrc</filename>
|
||||
file, see <command>info bash</command> under the <emphasis>Readline Init
|
||||
File</emphasis> section. <command>info readline</command> is also a good
|
||||
source of information.</para>
|
||||
|
||||
<para>Below is a generic global <filename>inputrc</filename> along with comments
|
||||
to explain what the various options do. Note that comments cannot be on the same
|
||||
line as commands. Create the file using the following command:</para>
|
||||
|
||||
<screen><userinput>cat > /etc/inputrc << "EOF"
|
||||
<literal># Begin /etc/inputrc
|
||||
@ -74,4 +80,3 @@ set bell-style none
|
||||
EOF</userinput></screen>
|
||||
|
||||
</sect1>
|
||||
|
||||
|
@ -1,27 +1,28 @@
|
||||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN" "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [
|
||||
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN"
|
||||
"http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [
|
||||
<!ENTITY % general-entities SYSTEM "../general.ent">
|
||||
%general-entities;
|
||||
]>
|
||||
|
||||
<sect1 id="ch-scripts-introduction">
|
||||
<title>Introduction</title>
|
||||
<?dbhtml filename="introduction.html"?>
|
||||
<?dbhtml filename="introduction.html"?>
|
||||
|
||||
<para>This chapter details how to install and configure the LFS-Bootscripts
|
||||
package. Most of these scripts will work without modification, but a few require
|
||||
additional configuration files because they deal with hardware-dependent
|
||||
information.</para>
|
||||
<title>Introduction</title>
|
||||
|
||||
<para>System-V style init scripts are employed in this book because they are
|
||||
widely used. For additional options, a hint detailing the BSD style
|
||||
init setup is available at
|
||||
<ulink
|
||||
url="http://www.linuxfromscratch.org/hints/downloads/files/bsd-init.txt"/>.
|
||||
Searching the LFS mailing lists for <quote>depinit</quote> will also offer
|
||||
additional choices.</para>
|
||||
<para>This chapter details how to install and configure the LFS-Bootscripts
|
||||
package. Most of these scripts will work without modification, but a few require
|
||||
additional configuration files because they deal with hardware-dependent
|
||||
information.</para>
|
||||
|
||||
<para>If using an alternative style of init scripts, skip this chapter
|
||||
and move on to <xref linkend="chapter-bootable"/>.</para>
|
||||
<para>System-V style init scripts are employed in this book because they are
|
||||
widely used. For additional options, a hint detailing the BSD style init setup
|
||||
is available at <ulink
|
||||
url="http://www.linuxfromscratch.org/hints/downloads/files/bsd-init.txt"/>.
|
||||
Searching the LFS mailing lists for <quote>depinit</quote> will also offer
|
||||
additional choices.</para>
|
||||
|
||||
<para>If using an alternative style of init scripts, skip this chapter
|
||||
and move on to <xref linkend="chapter-bootable"/>.</para>
|
||||
|
||||
</sect1>
|
||||
|
||||
|
@ -1,40 +1,42 @@
|
||||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN" "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [
|
||||
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN"
|
||||
"http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [
|
||||
<!ENTITY % general-entities SYSTEM "../general.ent">
|
||||
%general-entities;
|
||||
]>
|
||||
|
||||
<sect1 id="ch-scripts-network">
|
||||
<title>Configuring the network Script</title>
|
||||
<?dbhtml filename="network.html"?>
|
||||
<?dbhtml filename="network.html"?>
|
||||
|
||||
<indexterm zone="ch-scripts-network">
|
||||
<primary sortas="d-network">network</primary>
|
||||
<secondary>configuring</secondary></indexterm>
|
||||
<title>Configuring the network Script</title>
|
||||
|
||||
<para>This section only applies if a network card is to be
|
||||
configured.</para>
|
||||
<indexterm zone="ch-scripts-network">
|
||||
<primary sortas="d-network">network</primary>
|
||||
<secondary>configuring</secondary></indexterm>
|
||||
|
||||
<para>If a network card will not be used, there is likely no need to
|
||||
create any configuration files relating to network cards. If that is
|
||||
the case, remove the <filename class="symlink">network</filename>
|
||||
symlinks from all run-level directories (<filename
|
||||
class="directory">/etc/rc.d/rc*.d</filename>).</para>
|
||||
<para>This section only applies if a network card is to be
|
||||
configured.</para>
|
||||
|
||||
<sect2>
|
||||
<title>Creating Network Interface Configuration Files</title>
|
||||
<para>If a network card will not be used, there is likely no need to
|
||||
create any configuration files relating to network cards. If that is
|
||||
the case, remove the <filename class="symlink">network</filename>
|
||||
symlinks from all run-level directories (<filename
|
||||
class="directory">/etc/rc.d/rc*.d</filename>).</para>
|
||||
|
||||
<!-- Edit Me -->
|
||||
<para>Which interfaces are brought up and down by the network script
|
||||
depends on the files and directories in the <filename
|
||||
class="directory">/etc/sysconfig/network-devices</filename> hierarchy.
|
||||
This directory should contain a sub-directory for each interface to be configured,
|
||||
such as <filename>ifconfig.xyz</filename>, where <quote>xyz</quote> is a
|
||||
network interface name. Inside this directory would be files defining
|
||||
the attributes to this interface, such as its IP address(es), subnet
|
||||
masks, and so forth.</para>
|
||||
<sect2>
|
||||
<title>Creating Network Interface Configuration Files</title>
|
||||
|
||||
<para>The following command creates a sample <filename>ipv4</filename> file for
|
||||
the <emphasis>eth0</emphasis> device:</para>
|
||||
<para>Which interfaces are brought up and down by the network script
|
||||
depends on the files and directories in the <filename
|
||||
class="directory">/etc/sysconfig/network-devices</filename> hierarchy.
|
||||
This directory should contain a sub-directory for each interface to be
|
||||
configured, such as <filename>ifconfig.xyz</filename>, where
|
||||
<quote>xyz</quote> is a network interface name. Inside this directory
|
||||
would be files defining the attributes to this interface, such as its IP
|
||||
address(es), subnet masks, and so forth.</para>
|
||||
|
||||
<para>The following command creates a sample <filename>ipv4</filename>
|
||||
file for the <emphasis>eth0</emphasis> device:</para>
|
||||
|
||||
<screen><userinput>cd /etc/sysconfig/network-devices &&
|
||||
mkdir -v ifconfig.eth0 &&
|
||||
@ -47,45 +49,50 @@ PREFIX=24
|
||||
BROADCAST=192.168.1.255</literal>
|
||||
EOF</userinput></screen>
|
||||
|
||||
<para>The values of these variables must be changed in every file to match the
|
||||
proper setup. If the <envar>ONBOOT</envar> variable is set to <quote>yes</quote>
|
||||
the network script will bring up the Network Interface Card (NIC) during booting
|
||||
of the system. If set to anything but <quote>yes</quote> the NIC will be ignored
|
||||
by the network script and not be brought up.</para>
|
||||
<para>The values of these variables must be changed in every file to match
|
||||
the proper setup. If the <envar>ONBOOT</envar> variable is set to
|
||||
<quote>yes</quote> the network script will bring up the Network Interface
|
||||
Card (NIC) during booting of the system. If set to anything but
|
||||
<quote>yes</quote> the NIC will be ignored by the network script and not
|
||||
be brought up.</para>
|
||||
|
||||
<para>The <envar>SERVICE</envar> variable defines the method used for obtaining
|
||||
the IP address. The LFS-Bootscripts package has a modular IP assignment format,
|
||||
and creating additional files in the <filename
|
||||
class="directory">/etc/sysconfig/network-devices/services</filename> directory
|
||||
allows other IP assignment methods. This is commonly used for Dynamic Host
|
||||
Configuration Protocol (DHCP), which is addressed in the BLFS book.</para>
|
||||
<para>The <envar>SERVICE</envar> variable defines the method used for
|
||||
obtaining the IP address. The LFS-Bootscripts package has a modular IP
|
||||
assignment format, and creating additional files in the <filename
|
||||
class="directory">/etc/sysconfig/network-devices/services</filename>
|
||||
directory allows other IP assignment methods. This is commonly used for
|
||||
Dynamic Host Configuration Protocol (DHCP), which is addressed in the
|
||||
BLFS book.</para>
|
||||
|
||||
<para>The <envar>GATEWAY</envar> variable should contain
|
||||
the default gateway IP address, if one is present. If not, then comment out
|
||||
the variable entirely.</para>
|
||||
<para>The <envar>GATEWAY</envar> variable should contain the default
|
||||
gateway IP address, if one is present. If not, then comment out the
|
||||
variable entirely.</para>
|
||||
|
||||
<para>The <envar>PREFIX</envar> variable needs to contain the number of bits
|
||||
used in the subnet. Each octet in an IP address is 8 bits. If the subnet's
|
||||
netmask is 255.255.255.0, then it is using the first three octets (24 bits) to
|
||||
specify the network number. If the netmask is 255.255.255.240, it would be using
|
||||
the first 28 bits. Prefixes longer than 24 bits are commonly used by DSL and
|
||||
cable-based Internet Service Providers (ISPs). In this example (PREFIX=24), the
|
||||
netmask is 255.255.255.0. Adjust the <envar>PREFIX</envar> variable according to
|
||||
your specific subnet.</para>
|
||||
<para>The <envar>PREFIX</envar> variable needs to contain the number of
|
||||
bits used in the subnet. Each octet in an IP address is 8 bits. If the
|
||||
subnet's netmask is 255.255.255.0, then it is using the first three octets
|
||||
(24 bits) to specify the network number. If the netmask is 255.255.255.240,
|
||||
it would be using the first 28 bits. Prefixes longer than 24 bits are
|
||||
commonly used by DSL and cable-based Internet Service Providers (ISPs).
|
||||
In this example (PREFIX=24), the netmask is 255.255.255.0. Adjust the
|
||||
<envar>PREFIX</envar> variable according to your specific subnet.</para>
|
||||
|
||||
</sect2>
|
||||
</sect2>
|
||||
|
||||
<sect2 id="resolv.conf">
|
||||
<title>Creating the /etc/resolv.conf File</title>
|
||||
<indexterm zone="resolv.conf"><primary sortas="e-/etc/resolv.conf">/etc/resolv.conf</primary></indexterm>
|
||||
<sect2 id="resolv.conf">
|
||||
<title>Creating the /etc/resolv.conf File</title>
|
||||
|
||||
<para>If the system is going to be connected to the Internet, it will
|
||||
need some means of Domain Name Service (DNS) name resolution to
|
||||
resolve Internet domain names to IP addresses, and vice versa. This is
|
||||
best achieved by placing the IP address of the DNS server, available
|
||||
from the ISP or network administrator, into
|
||||
<filename>/etc/resolv.conf</filename>. Create the file by running the
|
||||
following:</para>
|
||||
<indexterm zone="resolv.conf">
|
||||
<primary sortas="e-/etc/resolv.conf">/etc/resolv.conf</primary>
|
||||
</indexterm>
|
||||
|
||||
<para>If the system is going to be connected to the Internet, it will
|
||||
need some means of Domain Name Service (DNS) name resolution to
|
||||
resolve Internet domain names to IP addresses, and vice versa. This is
|
||||
best achieved by placing the IP address of the DNS server, available
|
||||
from the ISP or network administrator, into
|
||||
<filename>/etc/resolv.conf</filename>. Create the file by running the
|
||||
following:</para>
|
||||
|
||||
<screen><userinput>cat > /etc/resolv.conf << "EOF"
|
||||
<literal># Begin /etc/resolv.conf
|
||||
@ -97,14 +104,13 @@ nameserver <replaceable>[IP address of your secondary nameserver]</replaceable>
|
||||
# End /etc/resolv.conf</literal>
|
||||
EOF</userinput></screen>
|
||||
|
||||
<para>Replace <replaceable>[IP address of the
|
||||
nameserver]</replaceable> with the IP address of the DNS most
|
||||
appropriate for the setup. There will often be more than one entry
|
||||
(requirements demand secondary servers for fallback capability). If
|
||||
you only need or want one DNS server, remove the second
|
||||
<emphasis>nameserver</emphasis> line from the file. The IP address may
|
||||
also be a router on the local network.</para>
|
||||
</sect2>
|
||||
<para>Replace <replaceable>[IP address of the nameserver]</replaceable>
|
||||
with the IP address of the DNS most appropriate for the setup. There will
|
||||
often be more than one entry (requirements demand secondary servers for
|
||||
fallback capability). If you only need or want one DNS server, remove the
|
||||
second <emphasis>nameserver</emphasis> line from the file. The IP address
|
||||
may also be a router on the local network.</para>
|
||||
|
||||
</sect2>
|
||||
|
||||
</sect1>
|
||||
|
||||
|
@ -1,91 +1,99 @@
|
||||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN" "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [
|
||||
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN"
|
||||
"http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [
|
||||
<!ENTITY % general-entities SYSTEM "../general.ent">
|
||||
%general-entities;
|
||||
]>
|
||||
|
||||
<sect1 id="ch-scripts-profile">
|
||||
<title>The Bash Shell Startup Files</title>
|
||||
<?dbhtml filename="profile.html"?>
|
||||
<?dbhtml filename="profile.html"?>
|
||||
|
||||
<indexterm zone="ch-scripts-profile"><primary sortas="e-/etc/profile">/etc/profile</primary></indexterm>
|
||||
<title>The Bash Shell Startup Files</title>
|
||||
|
||||
<para>The shell program <command>/bin/bash</command> (hereafter
|
||||
referred to as <quote>the shell</quote>) uses a collection of startup
|
||||
files to help create an environment to run in. Each file has a
|
||||
specific use and may affect login and interactive environments
|
||||
differently. The files in the <filename
|
||||
class="directory">/etc</filename> directory provide global settings.
|
||||
If an equivalent file exists in the home directory, it may override
|
||||
the global settings.</para>
|
||||
<indexterm zone="ch-scripts-profile">
|
||||
<primary sortas="e-/etc/profile">/etc/profile</primary>
|
||||
</indexterm>
|
||||
|
||||
<para>An interactive login shell is started after a successful login,
|
||||
using <command>/bin/login</command>, by reading the
|
||||
<filename>/etc/passwd</filename> file. An interactive non-login shell
|
||||
is started at the command-line (e.g.,
|
||||
<prompt>[prompt]$</prompt><command>/bin/bash</command>). A
|
||||
non-interactive shell is usually present when a shell script is
|
||||
running. It is non-interactive because it is processing a script and
|
||||
not waiting for user input between commands.</para>
|
||||
<para>The shell program <command>/bin/bash</command> (hereafter referred to
|
||||
as <quote>the shell</quote>) uses a collection of startup files to help
|
||||
create an environment to run in. Each file has a specific use and may affect
|
||||
login and interactive environments differently. The files in the <filename
|
||||
class="directory">/etc</filename> directory provide global settings. If an
|
||||
equivalent file exists in the home directory, it may override the global
|
||||
settings.</para>
|
||||
|
||||
<para>For more information, see <command>info bash</command> under the
|
||||
<emphasis>Bash Startup Files and Interactive Shells</emphasis> section.</para>
|
||||
<para>An interactive login shell is started after a successful login, using
|
||||
<command>/bin/login</command>, by reading the <filename>/etc/passwd</filename>
|
||||
file. An interactive non-login shell is started at the command-line (e.g.,
|
||||
<prompt>[prompt]$</prompt><command>/bin/bash</command>). A non-interactive
|
||||
shell is usually present when a shell script is running. It is non-interactive
|
||||
because it is processing a script and not waiting for user input between
|
||||
commands.</para>
|
||||
|
||||
<para>The files <filename>/etc/profile</filename> and
|
||||
<filename>~/.bash_profile</filename> are read when the shell is
|
||||
invoked as an interactive login shell.</para>
|
||||
<para>For more information, see <command>info bash</command> under the
|
||||
<emphasis>Bash Startup Files and Interactive Shells</emphasis> section.</para>
|
||||
|
||||
<para>The base <filename>/etc/profile</filename> below sets some
|
||||
environment variables necessary for native language support. Setting
|
||||
them properly results in:</para>
|
||||
<para>The files <filename>/etc/profile</filename> and
|
||||
<filename>~/.bash_profile</filename> are read when the shell is
|
||||
invoked as an interactive login shell.</para>
|
||||
|
||||
<itemizedlist>
|
||||
<listitem><para>The output of programs translated into the native
|
||||
language</para></listitem>
|
||||
<listitem><para>Correct classification of characters into letters, digits and
|
||||
other classes. This is necessary for <command>bash</command> to properly accept
|
||||
non-ASCII characters in command lines in non-English locales</para></listitem>
|
||||
<listitem><para>The correct alphabetical sorting order for the
|
||||
country</para></listitem>
|
||||
<listitem><para>Appropriate default paper size</para></listitem>
|
||||
<listitem><para>Correct formatting of monetary, time, and date
|
||||
values</para></listitem>
|
||||
</itemizedlist>
|
||||
<para>The base <filename>/etc/profile</filename> below sets some
|
||||
environment variables necessary for native language support. Setting
|
||||
them properly results in:</para>
|
||||
|
||||
<para>This script also sets the <envar>INPUTRC</envar> environment variable that
|
||||
makes Bash and Readline use the <filename>/etc/inputrc</filename> file created
|
||||
earlier.</para>
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>The output of programs translated into the native language</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>Correct classification of characters into letters, digits and other
|
||||
classes. This is necessary for <command>bash</command> to properly accept
|
||||
non-ASCII characters in command lines in non-English locales</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>The correct alphabetical sorting order for the country</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>Appropriate default paper size</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>Correct formatting of monetary, time, and date values</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
|
||||
<para>Replace <replaceable>[ll]</replaceable> below with the
|
||||
two-letter code for the desired language (e.g., <quote>en</quote>) and
|
||||
<replaceable>[CC]</replaceable> with the two-letter code for the
|
||||
appropriate country (e.g., <quote>GB</quote>).
|
||||
<replaceable>[charmap]</replaceable> should be replaced with the
|
||||
canonical charmap for your chosen locale.</para>
|
||||
<para>This script also sets the <envar>INPUTRC</envar> environment variable that
|
||||
makes Bash and Readline use the <filename>/etc/inputrc</filename> file created
|
||||
earlier.</para>
|
||||
|
||||
<para>The list of all locales supported by Glibc can be obtained by running
|
||||
the following command:</para>
|
||||
<para>Replace <replaceable>[ll]</replaceable> below with the two-letter code
|
||||
for the desired language (e.g., <quote>en</quote>) and
|
||||
<replaceable>[CC]</replaceable> with the two-letter code for the appropriate
|
||||
country (e.g., <quote>GB</quote>). <replaceable>[charmap]</replaceable> should
|
||||
be replaced with the canonical charmap for your chosen locale.</para>
|
||||
|
||||
<para>The list of all locales supported by Glibc can be obtained by running
|
||||
the following command:</para>
|
||||
|
||||
<screen role="nodump"><userinput>locale -a</userinput></screen>
|
||||
|
||||
<para>Locales can have a number of synonyms, e.g. <quote>ISO-8859-1</quote> is
|
||||
also referred to as <quote>iso8859-1</quote> and <quote>iso88591</quote>.
|
||||
Some applications cannot handle the various synonyms correctly, so it is safest
|
||||
to choose the canonical name for a particular locale. To determine the
|
||||
canonical name, run the following command, where
|
||||
<replaceable>[locale name]</replaceable> is the output given by
|
||||
<command>locale -a</command> for your preferred locale
|
||||
(<quote>en_GB.iso88591</quote> in our example).</para>
|
||||
<para>Locales can have a number of synonyms, e.g. <quote>ISO-8859-1</quote>
|
||||
is also referred to as <quote>iso8859-1</quote> and <quote>iso88591</quote>.
|
||||
Some applications cannot handle the various synonyms correctly, so it is
|
||||
safest to choose the canonical name for a particular locale. To determine
|
||||
the canonical name, run the following command, where <replaceable>[locale
|
||||
name]</replaceable> is the output given by <command>locale -a</command> for
|
||||
your preferred locale (<quote>en_GB.iso88591</quote> in our example).</para>
|
||||
|
||||
<screen role="nodump"><userinput>LC_ALL=<replaceable>[locale name]</replaceable> locale charmap</userinput></screen>
|
||||
|
||||
<para>For the <quote>en_GB.iso88591</quote> locale, the above command
|
||||
will print:</para>
|
||||
<para>For the <quote>en_GB.iso88591</quote> locale, the above command
|
||||
will print:</para>
|
||||
|
||||
<screen>ISO-8859-1</screen>
|
||||
<screen><computeroutput>ISO-8859-1</computeroutput></screen>
|
||||
|
||||
<para>This results in a final locale setting of <quote>en_GB.ISO-8859-1</quote>.
|
||||
It is important that the locale found using the heuristic above is tested prior
|
||||
to it being added to the Bash startup files:</para>
|
||||
<para>This results in a final locale setting of <quote>en_GB.ISO-8859-1</quote>.
|
||||
It is important that the locale found using the heuristic above is tested prior
|
||||
to it being added to the Bash startup files:</para>
|
||||
|
||||
<screen role="nodump"><userinput>LC_ALL=[locale name] locale country
|
||||
LC_ALL=[locale name] locale language
|
||||
@ -93,39 +101,40 @@ LC_ALL=[locale name] locale charmap
|
||||
LC_ALL=[locale name] locale int_curr_symbol
|
||||
LC_ALL=[locale name] locale int_prefix</userinput></screen>
|
||||
|
||||
<para>The above commands should print the country and language names, the
|
||||
character encoding used by the locale, the local currency and the prefix to dial
|
||||
before the telephone number in order to get into the country. If any of the
|
||||
commands above fail with a message similar to the one shown below, this means
|
||||
that your locale was either not installed in Chapter 6 or is not supported by
|
||||
the default installation of Glibc.</para>
|
||||
<para>The above commands should print the country and language names, the
|
||||
character encoding used by the locale, the local currency and the prefix to dial
|
||||
before the telephone number in order to get into the country. If any of the
|
||||
commands above fail with a message similar to the one shown below, this means
|
||||
that your locale was either not installed in Chapter 6 or is not supported by
|
||||
the default installation of Glibc.</para>
|
||||
|
||||
<screen><computeroutput>locale: Cannot set LC_* to default locale: No such file or directory</computeroutput></screen>
|
||||
|
||||
<para>If this happens, you should either install the desired locale using the <command>localedef</command> command, or consider choosing a different locale.
|
||||
Further instructions assume that there are no such error messages from Glibc.
|
||||
</para>
|
||||
<para>If this happens, you should either install the desired locale using the
|
||||
<command>localedef</command> command, or consider choosing a different locale.
|
||||
Further instructions assume that there are no such error messages from
|
||||
Glibc.</para>
|
||||
|
||||
<para>Some packages beyond LFS may also lack support for your chosen locale. One
|
||||
example is the X library (part of the X Window System), which outputs the
|
||||
following error message:</para>
|
||||
<para>Some packages beyond LFS may also lack support for your chosen locale. One
|
||||
example is the X library (part of the X Window System), which outputs the
|
||||
following error message:</para>
|
||||
|
||||
<screen><computeroutput>Warning: locale not supported by Xlib, locale set to C</computeroutput></screen>
|
||||
|
||||
<para>Sometimes it is possible to fix this by removing the charmap part of the
|
||||
locale specification, as long as that does not change the character map that
|
||||
Glibc associates with the locale (this can be checked by running the
|
||||
<command>locale charmap</command> command in both locales). For example, one
|
||||
would have to change "de_DE.ISO-8859-15@euro" to
|
||||
"de_DE@euro" in order to get this locale recognized by Xlib.</para>
|
||||
<para>Sometimes it is possible to fix this by removing the charmap part of the
|
||||
locale specification, as long as that does not change the character map that
|
||||
Glibc associates with the locale (this can be checked by running the
|
||||
<command>locale charmap</command> command in both locales). For example, one
|
||||
would have to change "de_DE.ISO-8859-15@euro" to
|
||||
"de_DE@euro" in order to get this locale recognized by Xlib.</para>
|
||||
|
||||
<para>Other packages can also function incorrectly (but may not necessarily
|
||||
display any error messages) if the locale name does not meet their expectations.
|
||||
In those cases, investigating how other Linux distributions support your locale
|
||||
might provide some useful information.</para>
|
||||
<para>Other packages can also function incorrectly (but may not necessarily
|
||||
display any error messages) if the locale name does not meet their expectations.
|
||||
In those cases, investigating how other Linux distributions support your locale
|
||||
might provide some useful information.</para>
|
||||
|
||||
<para>Once the proper locale settings have been determined, create the
|
||||
<filename>/etc/profile</filename> file:</para>
|
||||
<para>Once the proper locale settings have been determined, create the
|
||||
<filename>/etc/profile</filename> file:</para>
|
||||
|
||||
<screen><userinput>cat > /etc/profile << "EOF"
|
||||
<literal># Begin /etc/profile
|
||||
@ -136,18 +145,17 @@ export INPUTRC=/etc/inputrc
|
||||
# End /etc/profile</literal>
|
||||
EOF</userinput></screen>
|
||||
|
||||
<note><para>The <quote>C</quote> (default) and <quote>en_US</quote>
|
||||
(the recommended one for United States English users) locales are
|
||||
different.</para></note>
|
||||
<note>
|
||||
<para>The <quote>C</quote> (default) and <quote>en_US</quote> (the
|
||||
recommended one for United States English users) locales are different.</para>
|
||||
</note>
|
||||
|
||||
<para>Setting the keyboard layout, screen font, and
|
||||
locale-related environment variables are the only internationalization
|
||||
steps needed to support locales that use ordinary single-byte
|
||||
encodings and left-to-right writing direction. More complex cases
|
||||
(including UTF-8 based locales) require additional steps and
|
||||
additional patches because many applications tend to not work properly
|
||||
under such conditions. These steps and patches are not included in
|
||||
the LFS book and such locales are not yet supported by LFS.</para>
|
||||
<para>Setting the keyboard layout, screen font, and locale-related environment
|
||||
variables are the only internationalization steps needed to support locales
|
||||
that use ordinary single-byte encodings and left-to-right writing direction.
|
||||
More complex cases (including UTF-8 based locales) require additional steps
|
||||
and additional patches because many applications tend to not work properly
|
||||
under such conditions. These steps and patches are not included in the LFS
|
||||
book and such locales are not yet supported by LFS.</para>
|
||||
|
||||
</sect1>
|
||||
|
||||
|
@ -1,42 +1,45 @@
|
||||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN" "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [
|
||||
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN"
|
||||
"http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [
|
||||
<!ENTITY % general-entities SYSTEM "../general.ent">
|
||||
%general-entities;
|
||||
]>
|
||||
|
||||
<sect1 id="ch-scripts-setclock">
|
||||
<title>Configuring the setclock Script</title>
|
||||
<?dbhtml filename="setclock.html"?>
|
||||
<?dbhtml filename="setclock.html"?>
|
||||
|
||||
<indexterm zone="ch-scripts-setclock">
|
||||
<primary sortas="d-setclock">setclock</primary>
|
||||
<secondary>configuring</secondary></indexterm>
|
||||
<title>Configuring the setclock Script</title>
|
||||
|
||||
<para>The <command>setclock</command> script reads the time from the hardware
|
||||
clock, also known as the BIOS or the Complementary Metal Oxide Semiconductor
|
||||
(CMOS) clock. If the hardware clock is set to UTC, this script will convert the
|
||||
hardware clock's time to the local time using the
|
||||
<filename>/etc/localtime</filename> file (which tells the
|
||||
<command>hwclock</command> program which timezone the user is in). There is no
|
||||
way to detect whether or not the hardware clock is set to UTC, so this
|
||||
needs to be configured manually.</para>
|
||||
<indexterm zone="ch-scripts-setclock">
|
||||
<primary sortas="d-setclock">setclock</primary>
|
||||
<secondary>configuring</secondary></indexterm>
|
||||
|
||||
<para>If you cannot remember whether or not the hardware clock is set to UTC,
|
||||
find out by running the <userinput>hwclock --localtime --show</userinput>
|
||||
command. This will display what the current time is according to the hardware
|
||||
clock. If this time matches whatever your watch says, then the hardware clock is
|
||||
set to local time. If the output from <command>hwclock</command> is not local
|
||||
time, chances are it is set to UTC time. Verify this by adding or subtracting
|
||||
the proper amount of hours for the timezone to the time shown by
|
||||
<command>hwclock</command>. For example, if you are currently in the MST
|
||||
timezone, which is also known as GMT -0700, add seven hours to the local
|
||||
time.</para>
|
||||
<para>The <command>setclock</command> script reads the time from the hardware
|
||||
clock, also known as the BIOS or the Complementary Metal Oxide Semiconductor
|
||||
(CMOS) clock. If the hardware clock is set to UTC, this script will convert the
|
||||
hardware clock's time to the local time using the
|
||||
<filename>/etc/localtime</filename> file (which tells the
|
||||
<command>hwclock</command> program which timezone the user is in). There is no
|
||||
way to detect whether or not the hardware clock is set to UTC, so this
|
||||
needs to be configured manually.</para>
|
||||
|
||||
<para>Change the value of the <envar>UTC</envar> variable below
|
||||
to a value of <parameter>0</parameter> (zero) if the hardware clock
|
||||
is <emphasis>not</emphasis> set to UTC time.</para>
|
||||
<para>If you cannot remember whether or not the hardware clock is set to UTC,
|
||||
find out by running the <userinput>hwclock --localtime --show</userinput>
|
||||
command. This will display what the current time is according to the hardware
|
||||
clock. If this time matches whatever your watch says, then the hardware clock is
|
||||
set to local time. If the output from <command>hwclock</command> is not local
|
||||
time, chances are it is set to UTC time. Verify this by adding or subtracting
|
||||
the proper amount of hours for the timezone to the time shown by
|
||||
<command>hwclock</command>. For example, if you are currently in the MST
|
||||
timezone, which is also known as GMT -0700, add seven hours to the local
|
||||
time.</para>
|
||||
|
||||
<para>Create a new file <filename>/etc/sysconfig/clock</filename> by running
|
||||
the following:</para>
|
||||
<para>Change the value of the <envar>UTC</envar> variable below
|
||||
to a value of <parameter>0</parameter> (zero) if the hardware clock
|
||||
is <emphasis>not</emphasis> set to UTC time.</para>
|
||||
|
||||
<para>Create a new file <filename>/etc/sysconfig/clock</filename> by running
|
||||
the following:</para>
|
||||
|
||||
<screen><userinput>cat > /etc/sysconfig/clock << "EOF"
|
||||
<literal># Begin /etc/sysconfig/clock
|
||||
@ -46,9 +49,8 @@ UTC=1
|
||||
# End /etc/sysconfig/clock</literal>
|
||||
EOF</userinput></screen>
|
||||
|
||||
<para>A good hint explaining how to deal with time on LFS is available
|
||||
at <ulink url="&hints-root;time.txt"/>. It explains issues such as
|
||||
time zones, UTC, and the <envar>TZ</envar> environment variable.</para>
|
||||
<para>A good hint explaining how to deal with time on LFS is available
|
||||
at <ulink url="&hints-root;time.txt"/>. It explains issues such as
|
||||
time zones, UTC, and the <envar>TZ</envar> environment variable.</para>
|
||||
|
||||
</sect1>
|
||||
|
||||
|
@ -1,22 +1,26 @@
|
||||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN" "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [
|
||||
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN"
|
||||
"http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [
|
||||
<!ENTITY % general-entities SYSTEM "../general.ent">
|
||||
%general-entities;
|
||||
]>
|
||||
|
||||
<sect1 id="ch-scripts-sysklogd">
|
||||
<title>Configuring the sysklogd script</title>
|
||||
<?dbhtml filename="sysklogd.html"?>
|
||||
<?dbhtml filename="sysklogd.html"?>
|
||||
|
||||
<indexterm zone="ch-scripts-sysklogd">
|
||||
<primary sortas="d-sysklogd">sysklogd</primary>
|
||||
<secondary>configuring</secondary></indexterm>
|
||||
<title>Configuring the sysklogd script</title>
|
||||
|
||||
<para>The <filename>sysklogd</filename> script invokes the
|
||||
<command>syslogd</command> program with the <parameter>-m 0</parameter> option.
|
||||
This option turns off the periodic timestamp mark that
|
||||
<command>syslogd</command> writes to the log files every 20 minutes by default.
|
||||
If you want to turn on this periodic timestamp mark, edit the
|
||||
<filename>sysklogd</filename> script and make the changes accordingly. See
|
||||
<userinput>man syslogd</userinput> for more information.</para>
|
||||
<indexterm zone="ch-scripts-sysklogd">
|
||||
<primary sortas="d-sysklogd">sysklogd</primary>
|
||||
<secondary>configuring</secondary>
|
||||
</indexterm>
|
||||
|
||||
<para>The <filename>sysklogd</filename> script invokes the
|
||||
<command>syslogd</command> program with the <parameter>-m 0</parameter> option.
|
||||
This option turns off the periodic timestamp mark that
|
||||
<command>syslogd</command> writes to the log files every 20 minutes by default.
|
||||
If you want to turn on this periodic timestamp mark, edit the
|
||||
<filename>sysklogd</filename> script and make the changes accordingly. See
|
||||
<userinput>man syslogd</userinput> for more information.</para>
|
||||
|
||||
</sect1>
|
||||
|
@ -1,213 +1,237 @@
|
||||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN" "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [
|
||||
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN"
|
||||
"http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [
|
||||
<!ENTITY % general-entities SYSTEM "../general.ent">
|
||||
%general-entities;
|
||||
]>
|
||||
|
||||
<sect1 id="ch-scripts-udev">
|
||||
<title>Device and Module Handling on an LFS System</title>
|
||||
<?dbhtml filename="udev.html"?>
|
||||
<?dbhtml filename="udev.html"?>
|
||||
|
||||
<indexterm zone="ch-scripts-udev">
|
||||
<primary sortas="a-Udev">Udev</primary>
|
||||
<secondary>usage</secondary></indexterm>
|
||||
<title>Device and Module Handling on an LFS System</title>
|
||||
|
||||
<para>In <xref linkend="chapter-building-system"/>, we installed the Udev
|
||||
package. Before we go into the details regarding how this works,
|
||||
a brief history of previous methods of handling devices is in
|
||||
order.</para>
|
||||
<indexterm zone="ch-scripts-udev">
|
||||
<primary sortas="a-Udev">Udev</primary>
|
||||
<secondary>usage</secondary>
|
||||
</indexterm>
|
||||
|
||||
<para>Linux systems in general traditionally use a static device creation
|
||||
method, whereby a great many device nodes are created under <filename
|
||||
class="directory">/dev</filename> (sometimes literally thousands of nodes),
|
||||
regardless of whether the corresponding hardware devices actually exist. This is
|
||||
typically done via a <command>MAKEDEV</command> script, which contains a number
|
||||
of calls to the <command>mknod</command> program with the relevant major and
|
||||
minor device numbers for every possible device that might exist in the world.
|
||||
Using the Udev method, only those devices which are detected by the kernel get
|
||||
device nodes created for them. Because these device nodes will be created each
|
||||
time the system boots, they will be stored on a <systemitem
|
||||
class="filesystem">tmpfs</systemitem> file system (a virtual file system that
|
||||
resides entirely in system memory). Device nodes do not require much space, so
|
||||
the memory that is used is negligible.</para>
|
||||
<para>In <xref linkend="chapter-building-system"/>, we installed the Udev
|
||||
package. Before we go into the details regarding how this works,
|
||||
a brief history of previous methods of handling devices is in
|
||||
order.</para>
|
||||
|
||||
<sect2>
|
||||
<title>History</title>
|
||||
<para>Linux systems in general traditionally use a static device creation
|
||||
method, whereby a great many device nodes are created under <filename
|
||||
class="directory">/dev</filename> (sometimes literally thousands of nodes),
|
||||
regardless of whether the corresponding hardware devices actually exist. This is
|
||||
typically done via a <command>MAKEDEV</command> script, which contains a number
|
||||
of calls to the <command>mknod</command> program with the relevant major and
|
||||
minor device numbers for every possible device that might exist in the world.
|
||||
Using the Udev method, only those devices which are detected by the kernel get
|
||||
device nodes created for them. Because these device nodes will be created each
|
||||
time the system boots, they will be stored on a <systemitem
|
||||
class="filesystem">tmpfs</systemitem> file system (a virtual file system that
|
||||
resides entirely in system memory). Device nodes do not require much space, so
|
||||
the memory that is used is negligible.</para>
|
||||
|
||||
<para>In February 2000, a new filesystem called <systemitem
|
||||
class="filesystem">devfs</systemitem> was merged into the 2.3.46
|
||||
kernel and was made available during the 2.4 series of
|
||||
stable kernels. Although it was present in the kernel source itself,
|
||||
this method of creating devices dynamically never received
|
||||
overwhelming support from the core kernel developers.</para>
|
||||
<sect2>
|
||||
<title>History</title>
|
||||
|
||||
<para>The main problem with the approach adopted by <systemitem
|
||||
class="filesystem">devfs</systemitem> was the way it handled
|
||||
device detection, creation, and naming. The latter issue, that of
|
||||
device node naming, was perhaps the most critical. It is generally
|
||||
accepted that if device names are allowed to be configurable, then
|
||||
the device naming policy should be up to a system administrator, not
|
||||
imposed on them by any particular developer(s). The <systemitem
|
||||
class="filesystem">devfs</systemitem> file system also suffers from race
|
||||
conditions that are inherent in its design and cannot be fixed
|
||||
without a substantial revision to the kernel. It has also been marked
|
||||
as deprecated due to a lack of recent maintenance.</para>
|
||||
<para>In February 2000, a new filesystem called <systemitem
|
||||
class="filesystem">devfs</systemitem> was merged into the 2.3.46 kernel
|
||||
and was made available during the 2.4 series of stable kernels. Although
|
||||
it was present in the kernel source itself, this method of creating devices
|
||||
dynamically never received overwhelming support from the core kernel
|
||||
developers.</para>
|
||||
|
||||
<para>With the development of the unstable 2.5 kernel tree, later released as
|
||||
the 2.6 series of stable kernels, a new virtual filesystem called <systemitem
|
||||
class="filesystem">sysfs</systemitem> came to be. The job of <systemitem
|
||||
class="filesystem">sysfs</systemitem> is to export a view of the system's
|
||||
hardrware configuration to userspace processes. With this userspace-visible
|
||||
representation, the possibility of seeing a userspace replacement for
|
||||
<systemitem class="filesystem">devfs</systemitem> became much more
|
||||
realistic.</para>
|
||||
<para>The main problem with the approach adopted by <systemitem
|
||||
class="filesystem">devfs</systemitem> was the way it handled device
|
||||
detection, creation, and naming. The latter issue, that of device node
|
||||
naming, was perhaps the most critical. It is generally accepted that if
|
||||
device names are allowed to be configurable, then the device naming policy
|
||||
should be up to a system administrator, not imposed on them by any
|
||||
particular developer(s). The <systemitem class="filesystem">devfs</systemitem>
|
||||
file system also suffers from race conditions that are inherent in its design
|
||||
and cannot be fixed without a substantial revision to the kernel. It has also
|
||||
been marked as deprecated due to a lack of recent maintenance.</para>
|
||||
|
||||
</sect2>
|
||||
<para>With the development of the unstable 2.5 kernel tree, later released as
|
||||
the 2.6 series of stable kernels, a new virtual filesystem called <systemitem
|
||||
class="filesystem">sysfs</systemitem> came to be. The job of <systemitem
|
||||
class="filesystem">sysfs</systemitem> is to export a view of the system's
|
||||
hardrware configuration to userspace processes. With this userspace-visible
|
||||
representation, the possibility of seeing a userspace replacement for
|
||||
<systemitem class="filesystem">devfs</systemitem> became much more
|
||||
realistic.</para>
|
||||
|
||||
<sect2>
|
||||
<title>Udev Implementation</title>
|
||||
</sect2>
|
||||
|
||||
<para>The <systemitem class="filesystem">sysfs</systemitem> filesystem was
|
||||
mentioned briefly above. One may wonder how <systemitem
|
||||
class="filesystem">sysfs</systemitem> knows about the devices present on a
|
||||
system and what device numbers should be used for them. Drivers that have been
|
||||
compiled into the kernel directly register their objects with <systemitem
|
||||
class="filesystem">sysfs</systemitem> as they are detected by the kernel. For
|
||||
drivers compiled as modules, this registration will happen when the module is
|
||||
loaded. Once the <systemitem class="filesystem">sysfs</systemitem> filesystem is
|
||||
mounted (on <filename class="directory">/sys</filename>), data which the
|
||||
built-in drivers registered with <systemitem
|
||||
class="filesystem">sysfs</systemitem> are available to userspace processes and
|
||||
to <command>udev</command> for device node creation.</para>
|
||||
<sect2>
|
||||
<title>Udev Implementation</title>
|
||||
|
||||
<para>The <command>S10udev</command> initscript takes care of creating these
|
||||
device nodes when Linux is booted. This script starts by registering
|
||||
<command>/sbin/udevsend</command> as a hotplug event handler. Hotplug events
|
||||
(discussed below) are not usually generated during this stage, but
|
||||
<command>udev</command> is registered just in case they do occur. The
|
||||
<command>udevstart</command> program then walks through the <systemitem
|
||||
class="filesystem">/sys</systemitem> filesystem and creates devices under
|
||||
<filename class="directory">/dev</filename> that match the descriptions. For
|
||||
example, <filename>/sys/class/tty/vcs/dev</filename> contains the string
|
||||
<quote>7:0</quote> This string is used by <command>udevstart</command> to create
|
||||
<filename>/dev/vcs</filename> with major number <emphasis>7</emphasis> and minor
|
||||
<emphasis>0</emphasis>. The names and permissions of the nodes created under
|
||||
the <filename class="directory">/dev</filename> directory are configured
|
||||
according to the rules specified in the files within the <filename
|
||||
class="directory">/etc/udev/rules.d/</filename> directory. These are numbered in
|
||||
a similar fashion to the LFS-Bootscripts package. If <command>udev</command>
|
||||
can't find a rule for the device it is creating, it will default permissions to
|
||||
<emphasis>660</emphasis> and ownership to <emphasis>root:root</emphasis>.</para>
|
||||
<para>The <systemitem class="filesystem">sysfs</systemitem> filesystem was
|
||||
mentioned briefly above. One may wonder how <systemitem
|
||||
class="filesystem">sysfs</systemitem> knows about the devices present on
|
||||
a system and what device numbers should be used for them. Drivers that have
|
||||
been compiled into the kernel directly register their objects with
|
||||
<systemitem class="filesystem">sysfs</systemitem> as they are detected by
|
||||
the kernel. For drivers compiled as modules, this registration will happen
|
||||
when the module is loaded. Once the <systemitem
|
||||
class="filesystem">sysfs</systemitem> filesystem is mounted (on <filename
|
||||
class="directory">/sys</filename>), data which the built-in drivers
|
||||
registered with <systemitem class="filesystem">sysfs</systemitem> are
|
||||
available to userspace processes and to <command>udev</command> for device
|
||||
node creation.</para>
|
||||
|
||||
<para>Once the above stage is complete, all devices that were already present
|
||||
and have compiled-in drivers will be available for use. This leads us to the
|
||||
devices that have modular drivers.</para>
|
||||
<para>The <command>S10udev</command> initscript takes care of creating
|
||||
these device nodes when Linux is booted. This script starts by registering
|
||||
<command>/sbin/udevsend</command> as a hotplug event handler. Hotplug events
|
||||
(discussed below) are not usually generated during this stage, but
|
||||
<command>udev</command> is registered just in case they do occur. The
|
||||
<command>udevstart</command> program then walks through the <systemitem
|
||||
class="filesystem">/sys</systemitem> filesystem and creates devices under
|
||||
<filename class="directory">/dev</filename> that match the descriptions.
|
||||
For example, <filename>/sys/class/tty/vcs/dev</filename> contains the
|
||||
string <quote>7:0</quote> This string is used by <command>udevstart</command>
|
||||
to create <filename>/dev/vcs</filename> with major number
|
||||
<emphasis>7</emphasis> and minor <emphasis>0</emphasis>. The names and
|
||||
permissions of the nodes created under the <filename
|
||||
class="directory">/dev</filename> directory are configured according to the
|
||||
rules specified in the files within the <filename
|
||||
class="directory">/etc/udev/rules.d/</filename> directory. These are
|
||||
numbered in a similar fashion to the LFS-Bootscripts package. If
|
||||
<command>udev</command> can't find a rule for the device it is creating,
|
||||
it will default permissions to <emphasis>660</emphasis> and ownership to
|
||||
<emphasis>root:root</emphasis>.</para>
|
||||
|
||||
<para>Earlier, we mentioned the concept of a <quote>hotplug event
|
||||
handler.</quote> When a new device connection is detected by the kernel, the
|
||||
kernel will generate a hotplug event and look at the file
|
||||
<filename>/proc/sys/kernel/hotplug</filename> to determine the userspace program
|
||||
that handles the device's connection. The <command>udev</command> bootscript
|
||||
registered <command>udevsend</command> as this handler. When these hotplug
|
||||
events are generated, the kernel will tell <command>udev</command> to check the
|
||||
<filename class="directory">/sys</filename> filesystem for the information
|
||||
pertaining to this new device and create the <filename
|
||||
class="directory">/dev</filename> entry for it.</para>
|
||||
<para>Once the above stage is complete, all devices that were already present
|
||||
and have compiled-in drivers will be available for use. This leads us to the
|
||||
devices that have modular drivers.</para>
|
||||
|
||||
<para>This brings us to one problem that exists with <command>udev</command>,
|
||||
and likewise with <systemitem class="filesystem">devfs</systemitem> before it.
|
||||
It is commonly referred to as the <quote>chicken and egg</quote> problem. Most
|
||||
Linux distributions handle loading modules via entries in
|
||||
<filename>/etc/modules.conf</filename>. Access to a device node causes the
|
||||
appropriate kernel module to load. With <command>udev</command>, this method
|
||||
will not work because the device node does not exist until the module is loaded.
|
||||
To solve this, the <command>S05modules</command> bootscript was added to the
|
||||
LFS-Bootscripts package, along with the
|
||||
<filename>/etc/sysconfig/modules</filename> file. By adding module names to the
|
||||
<filename>modules</filename> file, these modules will be loaded when the
|
||||
computer starts up. This allows <command>udev</command> to detect the devices
|
||||
and create the appropriate device nodes.</para>
|
||||
<para>Earlier, we mentioned the concept of a <quote>hotplug event
|
||||
handler.</quote> When a new device connection is detected by the kernel,
|
||||
the kernel will generate a hotplug event and look at the file
|
||||
<filename>/proc/sys/kernel/hotplug</filename> to determine the userspace
|
||||
program that handles the device's connection. The <command>udev</command>
|
||||
bootscript registered <command>udevsend</command> as this handler. When
|
||||
these hotplug events are generated, the kernel will tell
|
||||
<command>udev</command> to check the <filename
|
||||
class="directory">/sys</filename> filesystem for the information pertaining
|
||||
to this new device and create the <filename class="directory">/dev</filename>
|
||||
entry for it.</para>
|
||||
|
||||
<para>Note that on slower machines or for drivers that create a lot
|
||||
of device nodes, the process of creating devices may take a few
|
||||
seconds to complete. This means that some device nodes may not be
|
||||
immediately accessible.</para>
|
||||
</sect2>
|
||||
<para>This brings us to one problem that exists with <command>udev</command>,
|
||||
and likewise with <systemitem class="filesystem">devfs</systemitem> before it.
|
||||
It is commonly referred to as the <quote>chicken and egg</quote> problem. Most
|
||||
Linux distributions handle loading modules via entries in
|
||||
<filename>/etc/modules.conf</filename>. Access to a device node causes the
|
||||
appropriate kernel module to load. With <command>udev</command>, this method
|
||||
will not work because the device node does not exist until the module is loaded.
|
||||
To solve this, the <command>S05modules</command> bootscript was added to the
|
||||
LFS-Bootscripts package, along with the
|
||||
<filename>/etc/sysconfig/modules</filename> file. By adding module names to the
|
||||
<filename>modules</filename> file, these modules will be loaded when the
|
||||
computer starts up. This allows <command>udev</command> to detect the devices
|
||||
and create the appropriate device nodes.</para>
|
||||
|
||||
<sect2>
|
||||
<title>Handling Hotpluggable/Dynamic Devices</title>
|
||||
<para>Note that on slower machines or for drivers that create a lot of device
|
||||
nodes, the process of creating devices may take a few seconds to complete.
|
||||
This means that some device nodes may not be immediately accessible.</para>
|
||||
|
||||
<para>When you plug in a device, such as a Universal Serial Bus (USB) MP3 player, the kernel
|
||||
recognizes that the device is now connected and generates a hotplug
|
||||
event. If the driver is already loaded (either because it was compiled
|
||||
into the kernel or because it was loaded via the
|
||||
<command>S05modules</command> bootscript), <command>udev</command> will
|
||||
be called upon to create the relevant device node(s) according to the
|
||||
<systemitem class="filesystem">sysfs</systemitem> data available in
|
||||
<filename class="directory">/sys</filename>.</para>
|
||||
</sect2>
|
||||
|
||||
<para>If the driver for the just plugged in device is available as a module but
|
||||
currently unloaded, the Hotplug package will load the appropriate module
|
||||
and make this device available by creating the device node(s) for it.</para>
|
||||
</sect2>
|
||||
<sect2>
|
||||
<title>Handling Hotpluggable/Dynamic Devices</title>
|
||||
|
||||
<sect2>
|
||||
<title>Problems with Creating Devices</title>
|
||||
<para>When you plug in a device, such as a Universal Serial Bus (USB) MP3
|
||||
player, the kernel recognizes that the device is now connected and generates
|
||||
a hotplug event. If the driver is already loaded (either because it was
|
||||
compiled into the kernel or because it was loaded via the
|
||||
<command>S05modules</command> bootscript), <command>udev</command> will be
|
||||
called upon to create the relevant device node(s) according to the
|
||||
<systemitem class="filesystem">sysfs</systemitem> data available in
|
||||
<filename class="directory">/sys</filename>.</para>
|
||||
|
||||
<para>There are a few known problems when it comes to automatically creating
|
||||
device nodes:</para>
|
||||
<para>If the driver for the just plugged in device is available as a module but
|
||||
currently unloaded, the Hotplug package will load the appropriate module
|
||||
and make this device available by creating the device node(s) for it.</para>
|
||||
|
||||
<para>1) A kernel driver may not export its data to <systemitem
|
||||
class="filesystem">sysfs</systemitem>.</para>
|
||||
|
||||
<para>This is most common with third party drivers from outside the kernel tree.
|
||||
Udev will be unable to automatically create device nodes for such drivers. Use
|
||||
the <filename>/etc/sysconfig/createfiles</filename> configuration file to
|
||||
manually create the devices. Consult the <filename>devices.txt</filename> file
|
||||
inside the kernel documentation or the documentation for that driver to find the
|
||||
proper major/minor numbers.</para>
|
||||
</sect2>
|
||||
|
||||
<para>2) A non-hardware device is required. This is most common with
|
||||
the Advanced Linux Sound Architecture (ALSA) project's Open Sound
|
||||
System (OSS) compatibility module. These types of devices can be
|
||||
handled in one of two ways:</para>
|
||||
<sect2>
|
||||
<title>Problems with Creating Devices</title>
|
||||
|
||||
<itemizedlist>
|
||||
<para>There are a few known problems when it comes to automatically creating
|
||||
device nodes:</para>
|
||||
|
||||
<listitem><para>Adding the module names to
|
||||
<filename>/etc/sysconfig/modules</filename></para></listitem>
|
||||
<listitem><para>Using an
|
||||
<quote>install</quote> line in
|
||||
<filename>/etc/modprobe.conf</filename>. This tells the
|
||||
<command>modprobe</command> command <quote>when loading this module,
|
||||
also load this other module, at the same time.</quote> For example:</para>
|
||||
<para>1) A kernel driver may not export its data to <systemitem
|
||||
class="filesystem">sysfs</systemitem>.</para>
|
||||
|
||||
<para>This is most common with third party drivers from outside the kernel
|
||||
tree. Udev will be unable to automatically create device nodes for such
|
||||
drivers. Use the <filename>/etc/sysconfig/createfiles</filename>
|
||||
configuration file to manually create the devices. Consult the
|
||||
<filename>devices.txt</filename> file inside the kernel documentation or
|
||||
the documentation for that driver to find the proper major/minor
|
||||
numbers.</para>
|
||||
|
||||
<para>2) A non-hardware device is required. This is most common with
|
||||
the Advanced Linux Sound Architecture (ALSA) project's Open Sound
|
||||
System (OSS) compatibility module. These types of devices can be
|
||||
handled in one of two ways:</para>
|
||||
|
||||
<itemizedlist>
|
||||
|
||||
<listitem>
|
||||
<para>Adding the module names to
|
||||
<filename>/etc/sysconfig/modules</filename></para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>Using an <quote>install</quote> line in
|
||||
<filename>/etc/modprobe.conf</filename>. This tells the
|
||||
<command>modprobe</command> command <quote>when loading this module,
|
||||
also load this other module, at the same time.</quote>
|
||||
For example:</para>
|
||||
|
||||
<screen role="nodump"><userinput>install snd-pcm modprobe -i snd-pcm ; modprobe \
|
||||
snd-pcm-oss ; true</userinput></screen>
|
||||
|
||||
<para>This will cause the system to load both the
|
||||
<emphasis>snd-pcm</emphasis> and <emphasis>snd-pcm-oss</emphasis>
|
||||
modules when any request is made to load the driver
|
||||
<emphasis>snd-pcm</emphasis>.</para></listitem>
|
||||
</itemizedlist>
|
||||
</sect2>
|
||||
<para>This will cause the system to load both the
|
||||
<emphasis>snd-pcm</emphasis> and <emphasis>snd-pcm-oss</emphasis>
|
||||
modules when any request is made to load the driver
|
||||
<emphasis>snd-pcm</emphasis>.</para>
|
||||
</listitem>
|
||||
|
||||
<sect2>
|
||||
<title>Useful Reading</title>
|
||||
</itemizedlist>
|
||||
|
||||
<para>Additional helpful documentation is available at the following
|
||||
sites:</para>
|
||||
</sect2>
|
||||
|
||||
<itemizedlist>
|
||||
<listitem><para>A Userspace Implementation of <systemitem class="filesystem">devfs</systemitem>
|
||||
<ulink url="http://www.kroah.com/linux/talks/ols_2003_udev_paper/Reprint-Kroah-Hartman-OLS2003.pdf"/></para></listitem>
|
||||
<sect2>
|
||||
<title>Useful Reading</title>
|
||||
|
||||
<listitem><para>udev FAQ
|
||||
<ulink url="http://www.kernel.org/pub/linux/utils/kernel/hotplug/udev-FAQ"/></para></listitem>
|
||||
<para>Additional helpful documentation is available at the following
|
||||
sites:</para>
|
||||
|
||||
<listitem><para>The Linux Kernel Driver Model
|
||||
<ulink url="http://public.planetmirror.com/pub/lca/2003/proceedings/papers/Patrick_Mochel/Patrick_Mochel.pdf"/></para></listitem>
|
||||
</itemizedlist>
|
||||
</sect2>
|
||||
<itemizedlist>
|
||||
|
||||
<listitem>
|
||||
<para>A Userspace Implementation of <systemitem class="filesystem">devfs</systemitem>
|
||||
<ulink url="http://www.kroah.com/linux/talks/ols_2003_udev_paper/Reprint-Kroah-Hartman-OLS2003.pdf"/></para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>udev FAQ
|
||||
<ulink url="http://www.kernel.org/pub/linux/utils/kernel/hotplug/udev-FAQ"/></para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>The Linux Kernel Driver Model
|
||||
<ulink url="http://public.planetmirror.com/pub/lca/2003/proceedings/papers/Patrick_Mochel/Patrick_Mochel.pdf"/></para>
|
||||
</listitem>
|
||||
|
||||
</itemizedlist>
|
||||
|
||||
</sect2>
|
||||
|
||||
</sect1>
|
||||
|
||||
|
@ -1,29 +1,33 @@
|
||||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN" "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [
|
||||
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN"
|
||||
"http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [
|
||||
<!ENTITY % general-entities SYSTEM "../general.ent">
|
||||
%general-entities;
|
||||
]>
|
||||
|
||||
<sect1 id="ch-scripts-usage">
|
||||
<title>How Do These Bootscripts Work?</title>
|
||||
<?dbhtml filename="usage.html"?>
|
||||
<?dbhtml filename="usage.html"?>
|
||||
|
||||
<indexterm zone="ch-scripts-usage">
|
||||
<primary sortas="a-Bootscripts">Bootscripts</primary>
|
||||
<secondary>usage</secondary></indexterm>
|
||||
<title>How Do These Bootscripts Work?</title>
|
||||
|
||||
<para>Linux uses a special booting facility named SysVinit that is based on a
|
||||
concept of <emphasis>run-levels</emphasis>. It can be quite different from one
|
||||
system to another, so it cannot be assumed that because things worked in one
|
||||
particular Linux distribution, they should work the same in LFS too. LFS has its
|
||||
own way of doing things, but it respects generally accepted standards.</para>
|
||||
<indexterm zone="ch-scripts-usage">
|
||||
<primary sortas="a-Bootscripts">Bootscripts</primary>
|
||||
<secondary>usage</secondary>
|
||||
</indexterm>
|
||||
|
||||
<para>SysVinit (which will be referred to as <quote>init</quote> from now on)
|
||||
works using a run-levels scheme. There are seven (numbered 0 to 6) run-levels
|
||||
(actually, there are more run-levels, but they are for special cases and are
|
||||
generally not used. See <filename>init(8)</filename> for more details), and each one
|
||||
of those corresponds to the actions the computer is supposed to perform when it
|
||||
starts up. The default run-level is 3. Here are the descriptions of the
|
||||
different run-levels as they are implemented:</para>
|
||||
<para>Linux uses a special booting facility named SysVinit that is based on a
|
||||
concept of <emphasis>run-levels</emphasis>. It can be quite different from one
|
||||
system to another, so it cannot be assumed that because things worked in one
|
||||
particular Linux distribution, they should work the same in LFS too. LFS has its
|
||||
own way of doing things, but it respects generally accepted standards.</para>
|
||||
|
||||
<para>SysVinit (which will be referred to as <quote>init</quote> from now on)
|
||||
works using a run-levels scheme. There are seven (numbered 0 to 6) run-levels
|
||||
(actually, there are more run-levels, but they are for special cases and are
|
||||
generally not used. See <filename>init(8)</filename> for more details), and
|
||||
each one of those corresponds to the actions the computer is supposed to
|
||||
perform when it starts up. The default run-level is 3. Here are the
|
||||
descriptions of the different run-levels as they are implemented:</para>
|
||||
|
||||
<literallayout>0: halt the computer
|
||||
1: single-user mode
|
||||
@ -33,83 +37,93 @@ different run-levels as they are implemented:</para>
|
||||
5: same as 4, it is usually used for GUI login (like X's <command>xdm</command> or KDE's <command>kdm</command>)
|
||||
6: reboot the computer</literallayout>
|
||||
|
||||
<para>The command used to change run-levels is <command>init
|
||||
<replaceable>[runlevel]</replaceable></command>, where
|
||||
<replaceable>[runlevel]</replaceable> is the target run-level. For example, to
|
||||
reboot the computer, a user could issue the <command>init 6</command> command,
|
||||
which is an alias for the <command>reboot</command> command. Likewise,
|
||||
<command>init 0</command> is an alias for the <command>halt</command>
|
||||
command.</para>
|
||||
<para>The command used to change run-levels is <command>init
|
||||
<replaceable>[runlevel]</replaceable></command>, where
|
||||
<replaceable>[runlevel]</replaceable> is the target run-level. For example, to
|
||||
reboot the computer, a user could issue the <command>init 6</command> command,
|
||||
which is an alias for the <command>reboot</command> command. Likewise,
|
||||
<command>init 0</command> is an alias for the <command>halt</command>
|
||||
command.</para>
|
||||
|
||||
<para>There are a number of directories under <filename
|
||||
class="directory">/etc/rc.d</filename> that look like <filename
|
||||
class="directory">rc?.d</filename> (where ? is the number of the run-level) and
|
||||
<filename class="directory">rcsysinit.d</filename>, all containing a number of
|
||||
symbolic links. Some begin with a <emphasis>K</emphasis>, the others begin with
|
||||
an <emphasis>S</emphasis>, and all of them have two numbers following the
|
||||
initial letter. The K means to stop (kill) a service and the S means to start a
|
||||
service. The numbers determine the order in which the scripts are run, from 00
|
||||
to 99—the lower the number the earlier it gets executed. When
|
||||
<command>init</command> switches to another run-level, the appropriate services
|
||||
are either started or stopped, depending on the runlevel chosen.</para>
|
||||
<para>There are a number of directories under <filename
|
||||
class="directory">/etc/rc.d</filename> that look like <filename
|
||||
class="directory">rc?.d</filename> (where ? is the number of the run-level) and
|
||||
<filename class="directory">rcsysinit.d</filename>, all containing a number of
|
||||
symbolic links. Some begin with a <emphasis>K</emphasis>, the others begin with
|
||||
an <emphasis>S</emphasis>, and all of them have two numbers following the
|
||||
initial letter. The K means to stop (kill) a service and the S means to start a
|
||||
service. The numbers determine the order in which the scripts are run, from 00
|
||||
to 99—the lower the number the earlier it gets executed. When
|
||||
<command>init</command> switches to another run-level, the appropriate services
|
||||
are either started or stopped, depending on the runlevel chosen.</para>
|
||||
|
||||
<para>The real scripts are in <filename
|
||||
class="directory">/etc/rc.d/init.d</filename>. They do the actual
|
||||
work, and the symlinks all point to them. Killing links and starting
|
||||
links point to the same script in <filename
|
||||
class="directory">/etc/rc.d/init.d</filename>. This is because the
|
||||
scripts can be called with different parameters like
|
||||
<parameter>start</parameter>, <parameter>stop</parameter>,
|
||||
<parameter>restart</parameter>, <parameter>reload</parameter>, and
|
||||
<parameter>status</parameter>. When a K link is encountered, the
|
||||
appropriate script is run with the <parameter>stop</parameter>
|
||||
argument. When an S link is encountered, the appropriate script is run
|
||||
with the <parameter>start</parameter> argument.</para>
|
||||
<para>The real scripts are in <filename
|
||||
class="directory">/etc/rc.d/init.d</filename>. They do the actual work, and
|
||||
the symlinks all point to them. Killing links and starting links point to
|
||||
the same script in <filename class="directory">/etc/rc.d/init.d</filename>.
|
||||
This is because the scripts can be called with different parameters like
|
||||
<parameter>start</parameter>, <parameter>stop</parameter>,
|
||||
<parameter>restart</parameter>, <parameter>reload</parameter>, and
|
||||
<parameter>status</parameter>. When a K link is encountered, the appropriate
|
||||
script is run with the <parameter>stop</parameter> argument. When an S link
|
||||
is encountered, the appropriate script is run with the
|
||||
<parameter>start</parameter> argument.</para>
|
||||
|
||||
<para>There is one exception to this explanation. Links that start
|
||||
with an <emphasis>S</emphasis> in the <filename
|
||||
class="directory">rc0.d</filename> and <filename
|
||||
class="directory">rc6.d</filename> directories will not cause anything
|
||||
to be started. They will be called with the parameter
|
||||
<parameter>stop</parameter> to stop something. The logic behind this
|
||||
is that when a user is going to reboot or halt the system, nothing
|
||||
needs to be started. The system only needs to be stopped.</para>
|
||||
<para>There is one exception to this explanation. Links that start
|
||||
with an <emphasis>S</emphasis> in the <filename
|
||||
class="directory">rc0.d</filename> and <filename
|
||||
class="directory">rc6.d</filename> directories will not cause anything
|
||||
to be started. They will be called with the parameter
|
||||
<parameter>stop</parameter> to stop something. The logic behind this
|
||||
is that when a user is going to reboot or halt the system, nothing
|
||||
needs to be started. The system only needs to be stopped.</para>
|
||||
|
||||
<para>These are descriptions of what the arguments make the scripts
|
||||
do:</para>
|
||||
<para>These are descriptions of what the arguments make the scripts
|
||||
do:</para>
|
||||
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term><parameter>start</parameter></term>
|
||||
<listitem><para>The service is started.</para></listitem>
|
||||
</varlistentry>
|
||||
<variablelist>
|
||||
|
||||
<varlistentry>
|
||||
<term><parameter>stop</parameter></term>
|
||||
<listitem><para>The service is stopped.</para></listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><parameter>start</parameter></term>
|
||||
<listitem>
|
||||
<para>The service is started.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><parameter>restart</parameter></term>
|
||||
<listitem><para>The service is stopped and then started again.</para></listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><parameter>stop</parameter></term>
|
||||
<listitem>
|
||||
<para>The service is stopped.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><parameter>reload</parameter></term>
|
||||
<listitem><para>The configuration of the service is updated.
|
||||
This is used after the configuration file of a service was modified, when
|
||||
the service does not need to be restarted.</para></listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><parameter>restart</parameter></term>
|
||||
<listitem>
|
||||
<para>The service is stopped and then started again.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><parameter>status</parameter></term>
|
||||
<listitem><para>Tells if the service is running and with which PIDs.</para></listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
<varlistentry>
|
||||
<term><parameter>reload</parameter></term>
|
||||
<listitem>
|
||||
<para>The configuration of the service is updated.
|
||||
This is used after the configuration file of a service was modified, when
|
||||
the service does not need to be restarted.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<para>Feel free to modify the way the boot process works (after all,
|
||||
it is your own LFS system). The files given here are an example of how
|
||||
it can be done.</para>
|
||||
<varlistentry>
|
||||
<term><parameter>status</parameter></term>
|
||||
<listitem>
|
||||
<para>Tells if the service is running and with which PIDs.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
</variablelist>
|
||||
|
||||
<para>Feel free to modify the way the boot process works (after all,
|
||||
it is your own LFS system). The files given here are an example of how
|
||||
it can be done.</para>
|
||||
|
||||
</sect1>
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user