mirror of
https://git.linuxfromscratch.org/lfs.git
synced 2025-06-19 03:39:20 +01:00
Rewrite and reorganize Chapter 7.
Update systemd customization. git-svn-id: http://svn.linuxfromscratch.org/LFS/trunk/BOOK@10542 4aa44e1e-78dd-0310-a6d2-fbcd4c07a689
This commit is contained in:
parent
c65dd23ee4
commit
bf58c1eecd
@ -35,6 +35,16 @@
|
||||
</itemizedlist>
|
||||
</listitem>
|
||||
-->
|
||||
<listitem>
|
||||
<para>2014-03-21</para>
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>[bdubbs] - Rewrote and reorganized Chapter 7.
|
||||
Updated systemd customization.</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>2014-04-18</para>
|
||||
<itemizedlist>
|
||||
|
@ -24,8 +24,9 @@
|
||||
<title/>
|
||||
|
||||
<para>The LFS-Bootscripts package contains a set of scripts to start/stop
|
||||
the LFS system at bootup/shutdown. The networking systemd unit file is
|
||||
also installed.</para>
|
||||
the LFS system at bootup/shutdown. A networking systemd unit file is
|
||||
also installed. The configuration files and procedures needed to
|
||||
customize the boot process are described in the following sections.</para>
|
||||
|
||||
<segmentedlist>
|
||||
<segtitle>&buildtime;</segtitle>
|
||||
|
@ -13,17 +13,17 @@
|
||||
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="introduction.xml"/>
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="bootscripts.xml"/>
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="network.xml"/>
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="hosts.xml"/>
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="udev.xml"/>
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="symlinks.xml"/>
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="network.xml"/>
|
||||
<!-- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="hosts.xml"/>-->
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="usage.xml"/>
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="sysd-custom.xml"/>
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="hostname.xml"/>
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="setclock.xml"/>
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="console.xml"/>
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="sysklogd.xml"/>
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="site.xml"/>
|
||||
<!-- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="hostname.xml"/>-->
|
||||
<!-- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="setclock.xml"/>-->
|
||||
<!-- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="console.xml"/>-->
|
||||
<!-- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="sysklogd.xml"/>-->
|
||||
<!-- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="site.xml"/>-->
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="profile.xml"/>
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="inputrc.xml"/>
|
||||
|
||||
|
@ -39,15 +39,15 @@
|
||||
<filename>/etc/inittab</filename> file and is organized into run levels that
|
||||
can be run by the user:</para>
|
||||
|
||||
<itemizedlist>
|
||||
<listitem><para>0 — halt</para></listitem>
|
||||
<listitem><para>1 — Single user mode</para></listitem>
|
||||
<listitem><para>2 — Multiuser, without networking</para></listitem>
|
||||
<listitem><para>3 — Full multiuser mode</para></listitem>
|
||||
<listitem><para>4 — User definable</para></listitem>
|
||||
<listitem><para>5 — Full multiuser mode with display manager</para></listitem>
|
||||
<listitem><para>6 — reboot</para></listitem>
|
||||
</itemizedlist>
|
||||
<literallayout>
|
||||
0 — halt
|
||||
1 — Single user mode
|
||||
2 — Multiuser, without networking
|
||||
3 — Full multiuser mode
|
||||
4 — User definable
|
||||
5 — Full multiuser mode with display manager
|
||||
6 — reboot
|
||||
</literallayout>
|
||||
|
||||
<para>The usual default run level is 3 or 5.</para>
|
||||
|
||||
@ -207,6 +207,11 @@ EOF
|
||||
|
||||
chmod 0744 /usr/sbin/set-sysv</userinput></screen>
|
||||
|
||||
<note><para>The comment about the correct command to reboot in the
|
||||
above scripts is correct. The reboot command for the current boot
|
||||
system must be used after the script changes the default reboot command.
|
||||
</para></note>
|
||||
|
||||
<para>Now set the desired boot system. The default is System V:</para>
|
||||
|
||||
<screen><userinput remap="install">/usr/sbin/set-sysv</userinput></screen>
|
||||
|
@ -24,106 +24,11 @@
|
||||
class="directory">/etc/rc.d/rc*.d</filename>) after the bootscripts are
|
||||
installed in <xref linkend="ch-scripts-bootscripts"/>.</para>
|
||||
|
||||
<sect2 id='stable-net-names'>
|
||||
<title>Creating stable names for network interfaces</title>
|
||||
|
||||
<para>If there is only one network interface in the system to be
|
||||
configured, this section is optional, although it will never be wrong to do
|
||||
it. In many cases (e.g. a laptop with a wireless and a wired interface),
|
||||
accomplishing the configuration in this section is necessary.</para>
|
||||
|
||||
<para>With Udev and modular network drivers, the network interface numbering
|
||||
is not persistent across reboots by default, because the drivers are loaded
|
||||
in parallel and, thus, in random order. For example, on a computer having
|
||||
two network cards made by Intel and Realtek, the network card manufactured
|
||||
by Intel may become <filename class="devicefile">eth0</filename> and the
|
||||
Realtek card becomes <filename class="devicefile">eth1</filename>. In some
|
||||
cases, after a reboot the cards get renumbered the other way around. To
|
||||
avoid this, Udev comes with a script and some rules to assign stable names
|
||||
to network cards based on their MAC address.</para>
|
||||
|
||||
<para>If using the traditional network interface names such as eth0 is desired,
|
||||
generate a custom Udev rule:</para>
|
||||
|
||||
<screen><userinput>bash /lib/udev/init-net-rules.sh</userinput></screen>
|
||||
|
||||
<para> Now, inspect the
|
||||
<filename>/etc/udev/rules.d/70-persistent-net.rules</filename> file, to
|
||||
find out which name was assigned to which network device:</para>
|
||||
|
||||
<screen role="nodump"><userinput>cat /etc/udev/rules.d/70-persistent-net.rules</userinput></screen>
|
||||
|
||||
<note><para>In some cases such as when MAC addresess have been assigned to
|
||||
a network card manually or in a virtual environment such as Xen,
|
||||
the network rules file may not have been generated because addresses
|
||||
are not consistently assigned. In these cases, just continue to
|
||||
the next section.</para></note>
|
||||
|
||||
<para>The file begins with a comment block followed by two lines for each
|
||||
NIC. The first line for each NIC is a commented description showing its
|
||||
hardware IDs (e.g. its PCI vendor and device IDs, if it's a PCI card),
|
||||
along with its driver in parentheses, if the driver can be found. Neither
|
||||
the hardware ID nor the driver is used to determine which name to give an
|
||||
interface; this information is only for reference. The second line is the
|
||||
Udev rule that matches this NIC and actually assigns it a name.</para>
|
||||
|
||||
<para>All Udev rules are made up of several keys, separated by commas and
|
||||
optional whitespace. This rule's keys and an explanation of each of them
|
||||
are as follows:</para>
|
||||
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para><literal>SUBSYSTEM=="net"</literal> - This tells Udev to ignore
|
||||
devices that are not network cards.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para><literal>ACTION=="add"</literal> - This tells Udev to ignore this
|
||||
rule for a uevent that isn't an add ("remove" and "change" uevents also
|
||||
happen, but don't need to rename network interfaces).</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para><literal>DRIVERS=="?*"</literal> - This exists so that Udev will
|
||||
ignore VLAN or bridge sub-interfaces (because these sub-interfaces do
|
||||
not have drivers). These sub-interfaces are skipped because the name
|
||||
that would be assigned would collide with their parent devices.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para><literal>ATTR{address}</literal> - The value of this key is the
|
||||
NIC's MAC address.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para><literal>ATTR{type}=="1"</literal> - This ensures the rule only
|
||||
matches the primary interface in the case of certain wireless drivers,
|
||||
which create multiple virtual interfaces. The secondary interfaces are
|
||||
skipped for the same reason that VLAN and bridge sub-interfaces are
|
||||
skipped: there would be a name collision otherwise.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para><literal>KERNEL=="eth*"</literal> - This key was added to the
|
||||
Udev rule generator to handle machines that have multiple network
|
||||
interfaces, all with the same MAC address (the PS3 is one such
|
||||
machine). If the independent interfaces have different basenames,
|
||||
this key will allow Udev to tell them apart. This is generally not
|
||||
necessary for most Linux From Scratch users, but does not hurt.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para><literal>NAME</literal> - The value of this key is the name that
|
||||
Udev will assign to this interface.</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
|
||||
<para>The value of <literal>NAME</literal> is the important part. Make sure
|
||||
you know which name has been assigned to each of your network cards before
|
||||
proceeding, and be sure to use that <literal>NAME</literal> value when
|
||||
creating your configuration files below.</para>
|
||||
|
||||
</sect2>
|
||||
|
||||
<sect2>
|
||||
<title>Creating Network Interface Configuration Files</title>
|
||||
|
||||
<para>Which interfaces are brought up and down by the network script
|
||||
depends on the files in <filename
|
||||
usually depends on the files in <filename
|
||||
class="directory">/etc/sysconfig/</filename>. This directory should
|
||||
contain a file for each interface to be configured, such as
|
||||
<filename>ifconfig.xyz</filename>, where <quote>xyz</quote> is required to
|
||||
@ -216,12 +121,38 @@ EOF</userinput></screen>
|
||||
<para>Replace eth0 with the correct network interface card
|
||||
name as described on the beginning of this page.</para>
|
||||
|
||||
<note><para>These procedures require the configuartion files as specified
|
||||
in the previous section.</para></note>
|
||||
|
||||
<note><para>The network card can also be started or stopped
|
||||
with the traditional <command>ifup <device></command> or
|
||||
<command>ifdown <device></command> commands.</para></note>
|
||||
|
||||
</sect2>
|
||||
|
||||
<sect2 id="systemd2-net-enable">
|
||||
<title>Configuring the Network Interface Card for systemd-networkd</title>
|
||||
|
||||
<para>An alternative way to configure a NIC when booting with with
|
||||
systemd is to create a configuration file recognized by the
|
||||
systemd-networkd daemon. To configure the device create a file similar
|
||||
to this:</para>
|
||||
|
||||
<screen role="nodump"><userinput>cat > /etc/systemd/network/10-static-eth0.network << "EOF"
|
||||
[Match]
|
||||
Name=eth0
|
||||
|
||||
[Network]
|
||||
Address=192.168.0.2/24
|
||||
Gateway=192.168.0.1
|
||||
EOF</userinput></screen>
|
||||
|
||||
<para>You can use multiple .network files if desired. You can also specify
|
||||
DHCP=yes instead of the Address and Gateway settings. See the man page for
|
||||
systemd.network for more details,</para>
|
||||
|
||||
</sect2>
|
||||
|
||||
<sect2 id="resolv.conf">
|
||||
<title>Creating the /etc/resolv.conf File</title>
|
||||
|
||||
@ -262,4 +193,100 @@ EOF</userinput></screen>
|
||||
|
||||
</sect2>
|
||||
|
||||
<sect2 id="ch-scripts-hostname">
|
||||
<title>Configuring the system hostname</title>
|
||||
|
||||
<indexterm zone="ch-scripts-hostname">
|
||||
<primary sortas="d-hostname">hostname</primary>
|
||||
<secondary>configuring</secondary>
|
||||
</indexterm>
|
||||
|
||||
<para>During the boot process, both Systemd and System V use the same file
|
||||
for establishing the system's hostname. This needs to be configured by
|
||||
creating <filename>/etc/hostname</filename>.</para>
|
||||
|
||||
<para>Create the <filename>/etc/hostname</filename> file and enter a
|
||||
hostname by running:</para>
|
||||
|
||||
<screen><userinput>echo "<replaceable><lfs></replaceable>" > /etc/hostname</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 is put in the
|
||||
<filename>/etc/hosts</filename> file.</para>
|
||||
|
||||
</sect2>
|
||||
|
||||
<sect2 id="ch-scripts-hosts">
|
||||
<title>Customizing the /etc/hosts File</title>
|
||||
|
||||
<indexterm zone="ch-scripts-hosts">
|
||||
<primary sortas="e-/etc/hosts">/etc/hosts</primary>
|
||||
</indexterm>
|
||||
|
||||
<indexterm zone="ch-scripts-hosts">
|
||||
<primary sortas="d-localnet">localnet</primary>
|
||||
<secondary>/etc/hosts</secondary>
|
||||
</indexterm>
|
||||
|
||||
<indexterm zone="ch-scripts-hosts">
|
||||
<primary sortas="d-network">network</primary>
|
||||
<secondary>/etc/hosts</secondary>
|
||||
</indexterm>
|
||||
|
||||
<para>Decide on the IP address, fully-qualified domain name (FQDN), and
|
||||
possible aliases for use in the <filename>/etc/hosts</filename> file. The
|
||||
syntax is:</para>
|
||||
|
||||
<screen><literal>IP_address myhost.example.org aliases</literal></screen>
|
||||
|
||||
<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>Private Network Address Range Normal Prefix
|
||||
10.0.0.1 - 10.255.255.254 8
|
||||
172.x.0.1 - 172.x.255.254 16
|
||||
192.168.y.1 - 192.168.y.254 24</literal></screen>
|
||||
|
||||
<para>x can be any number in the range 16-31. y can be any number in the
|
||||
range 0-255.</para>
|
||||
|
||||
<para>A valid private IP address could be 192.168.1.1. A valid FQDN for
|
||||
this IP could be lfs.example.org.</para>
|
||||
|
||||
<para>Even if not using a network card, a valid 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>
|
||||
|
||||
<screen><userinput>cat > /etc/hosts << "EOF"
|
||||
<literal># Begin /etc/hosts (network card version)
|
||||
|
||||
127.0.0.1 localhost
|
||||
<replaceable><192.168.1.1></replaceable> <replaceable><HOSTNAME.example.org></replaceable> <replaceable>[alias1] [alias2 ...]</replaceable>
|
||||
|
||||
# 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 uses or requirements (if assigned an IP address by a
|
||||
network/system administrator and the machine will be connected to an
|
||||
existing network). The optional alias name(s) can be omitted.</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)
|
||||
|
||||
127.0.0.1 <replaceable><HOSTNAME.example.org></replaceable> <replaceable><HOSTNAME></replaceable> localhost
|
||||
|
||||
# End /etc/hosts (no network card version)</literal>
|
||||
EOF</userinput></screen>
|
||||
|
||||
</sect2>
|
||||
|
||||
</sect1>
|
||||
|
@ -8,7 +8,151 @@
|
||||
<sect1 id="ch-scripts-symlinks">
|
||||
<?dbhtml filename="symlinks.html"?>
|
||||
|
||||
<title>Creating Custom Symlinks to Devices</title>
|
||||
<title>Managing Devices</title>
|
||||
|
||||
<sect2>
|
||||
|
||||
<title>Network Devices</title>
|
||||
|
||||
<para>Udev, by default, names network devices according to Firmware/BIOS
|
||||
data or physical characteristics like the bus, slot, or MAC address. The
|
||||
purpose of this naming convention is to ensure that network devices are
|
||||
named consistently and not based on the time the network card was
|
||||
discovered. For example, on a computer having two network cards made by
|
||||
Intel and Realtek, the network card manufactured by Intel may become eth0
|
||||
and the Realtek card becomes eth1. In some cases, after a reboot the cards
|
||||
get renumbered the other way around.</para>
|
||||
|
||||
<para>In the new naming scheme, typical network device names would then
|
||||
be something like enp5s0 or wlp3s0. If this naming convention is not
|
||||
desired, the traditional naming scheme or a custom scheme can be
|
||||
implemented.</para>
|
||||
|
||||
<sect3>
|
||||
<title>Disabling Persistent Naming on the Kernel Command Line</title>
|
||||
|
||||
<para>The traditional naming scheme using eth0, eth1, etc can be
|
||||
restored by adding <userinput>net.ifnames=0</userinput> on the
|
||||
kernel command line. This is most appropriate for those systems
|
||||
that have only one ethernet device of the same type. Laptops
|
||||
often have multiple ethernet connections that are named eth0 and
|
||||
wlan0 and are also candidates for this method. The command line
|
||||
is passed in the GRUB configuration file.
|
||||
See <xref linkend="grub-cfg"/>.</para>
|
||||
</sect3>
|
||||
|
||||
<sect3>
|
||||
<title>Creating Custom Udev Rules</title>
|
||||
|
||||
<para>The naming scheme can be customized by creating custom Udev
|
||||
rules. A script has been included that generates the initial rules.
|
||||
Generate these rules by running:</para>
|
||||
|
||||
<screen role="nodump"><userinput>bash /lib/udev/init-net-rules.sh</userinput></screen>
|
||||
|
||||
<para> Now, inspect th
|
||||
<filename>/etc/udev/rules.d/70-persistent-net.rules</filename> file, to
|
||||
find out which name was assigned to which network device:</para>
|
||||
|
||||
<screen role="nodump"><userinput>cat /etc/udev/rules.d/70-persistent-net.rules</userinput></screen>
|
||||
|
||||
<note><para>In some cases such as when MAC addresess have been assigned to
|
||||
a network card manually or in a virtual environment such as Qemu or Xen,
|
||||
the network rules file may not have been generated because addresses
|
||||
are not consistently assigned. In these cases, this method cannot
|
||||
be used.</para></note>
|
||||
|
||||
<para>The file begins with a comment block followed by two lines for each
|
||||
NIC. The first line for each NIC is a commented description showing its
|
||||
hardware IDs (e.g. its PCI vendor and device IDs, if it's a PCI card),
|
||||
along with its driver in parentheses, if the driver can be found. Neither
|
||||
the hardware ID nor the driver is used to determine which name to give an
|
||||
interface; this information is only for reference. The second line is the
|
||||
Udev rule that matches this NIC and actually assigns it a name.</para>
|
||||
|
||||
<para>All Udev rules are made up of several keys, separated by commas and
|
||||
optional whitespace. This rule's keys and an explanation of each of them
|
||||
are as follows:</para>
|
||||
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para><literal>SUBSYSTEM=="net"</literal> - This tells Udev to ignore
|
||||
devices that are not network cards.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para><literal>ACTION=="add"</literal> - This tells Udev to ignore this
|
||||
rule for a uevent that isn't an add ("remove" and "change" uevents also
|
||||
happen, but don't need to rename network interfaces).</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para><literal>DRIVERS=="?*"</literal> - This exists so that Udev will
|
||||
ignore VLAN or bridge sub-interfaces (because these sub-interfaces do
|
||||
not have drivers). These sub-interfaces are skipped because the name
|
||||
that would be assigned would collide with their parent devices.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para><literal>ATTR{address}</literal> - The value of this key is the
|
||||
NIC's MAC address.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para><literal>ATTR{type}=="1"</literal> - This ensures the rule only
|
||||
matches the primary interface in the case of certain wireless drivers,
|
||||
which create multiple virtual interfaces. The secondary interfaces are
|
||||
skipped for the same reason that VLAN and bridge sub-interfaces are
|
||||
skipped: there would be a name collision otherwise.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para><literal>NAME</literal> - The value of this key is the name that
|
||||
Udev will assign to this interface.</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
|
||||
<para>The value of <literal>NAME</literal> is the important part. Make sure
|
||||
you know which name has been assigned to each of your network cards before
|
||||
proceeding, and be sure to use that <literal>NAME</literal> value when
|
||||
creating your configuration files below.</para>
|
||||
|
||||
</sect3>
|
||||
|
||||
<sect3>
|
||||
<title>Custom Naming in Systemd</title>
|
||||
|
||||
<para>Network interface names can also be customized with a set of
|
||||
files spcific to systemd. A file with a name such as 10-eth0.link
|
||||
in the /etc/systemd/network directory can set an interface name. All
|
||||
files in the directory will be applied in lexical order. Files
|
||||
in the /lib/systemd/network directory with the same name as those
|
||||
in /etc/systemd/network will be overridden. See the man page
|
||||
for systemd.link for a full explanation.</para>
|
||||
|
||||
<para>An example file looks like:</para>
|
||||
|
||||
<screen role="nodump">[Match]
|
||||
MACAddress=12:34:56:78:9a:bc
|
||||
Driver=brcmsmac
|
||||
Path=pci-0000:02:00.0-*
|
||||
Type=wlan
|
||||
Virtualization=no
|
||||
Host=my-laptop
|
||||
Architecture=x86-64
|
||||
|
||||
[Link]
|
||||
Name=wireless0
|
||||
MTUBytes=1450
|
||||
BitsPerSecond=10M
|
||||
WakeOnLan=magic
|
||||
MACAddress=cb:a9:87:65:43:21</screen>
|
||||
|
||||
<para>The [Match] section specifies when to apply the rule. In
|
||||
the example above, the entries can be shortened to the minimum
|
||||
needed to uniquely identify the network device. Similarly,
|
||||
the [Link] section only needs to specify the changes from the
|
||||
default that are desired. In many cases, the only thing needed is
|
||||
the Name entry.</para>
|
||||
|
||||
</sect3>
|
||||
|
||||
</sect2>
|
||||
|
||||
<sect2>
|
||||
|
||||
@ -108,7 +252,7 @@
|
||||
<filename>/dev/video1</filename> refers to the tuner, and sometimes
|
||||
after a reboot the order changes to the opposite one.
|
||||
For all classes of hardware except sound cards and network cards, this is
|
||||
fixable by creating udev rules for custom persistent symlinks.
|
||||
fixable by creating Udev rules for custom persistent symlinks.
|
||||
The case of network cards is covered separately in
|
||||
<xref linkend="ch-scripts-network"/>, and sound card configuration can
|
||||
be found in <ulink url="&blfs-root;view/svn/postlfs/devices.html">BLFS</ulink>.</para>
|
||||
|
@ -8,7 +8,7 @@
|
||||
<sect1 id="ch-scripts-sysd-custom">
|
||||
<?dbhtml filename="sysd-custom.html"?>
|
||||
|
||||
<title>Systemd Customization</title>
|
||||
<title>Systemd Usage and Confiuration</title>
|
||||
|
||||
<indexterm zone="ch-scripts-sysd-custom">
|
||||
<primary sortas="e-Systemd">Systemd Customization</primary>
|
||||
@ -98,6 +98,143 @@ EOF</userinput></screen>
|
||||
|
||||
</sect2>
|
||||
|
||||
<sect2 id="ch-scripts-systemd-console">
|
||||
<title>Setting Console Fonts and Keyboard</title>
|
||||
|
||||
<indexterm zone="ch-scripts-systemd-console">
|
||||
<primary sortas="d-console">systemd console</primary>
|
||||
<secondary>configuring</secondary>
|
||||
</indexterm>
|
||||
|
||||
<para>This section discusses how to configure the
|
||||
<command>systemd-vconsole-setup</command> system service, which configures
|
||||
the virtual console font and console keymap.</para>
|
||||
|
||||
<para>The <command>systemd-vconsole-setup</command> service reads the
|
||||
<filename>/etc/vconsole.conf</filename> file for configuration
|
||||
information. Decide which keymap and screen font will be used. Various
|
||||
language-specific HOWTOs can also help with this, see <ulink
|
||||
url="http://www.tldp.org/HOWTO/HOWTO-INDEX/other-lang.html"/>.
|
||||
Examine <command>localectl list-keymaps</command> output for a list of
|
||||
valid console keymaps. Look in
|
||||
<filename class="directory">/usr/share/consolefonts</filename>
|
||||
directory for valid screen fonts.</para>
|
||||
|
||||
<para>The <filename>/etc/vconsole.conf</filename> file should contain lines
|
||||
of the form: VARIABLE="value". The following variables are recognized:</para>
|
||||
|
||||
<variablelist>
|
||||
|
||||
<varlistentry>
|
||||
<term>KEYMAP</term>
|
||||
<listitem>
|
||||
<para>This variable specifies the key mapping table for the keyboard. If
|
||||
unset, it defaults to <literal>us</literal>.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term>KEYMAP_TOGGLE</term>
|
||||
<listitem>
|
||||
<para>This variable can be used to configure a second toggle keymap and
|
||||
is unset by default.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>FONT</term>
|
||||
<listitem>
|
||||
<para>This variable specifies the font used by the virtual
|
||||
console.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>FONT_MAP</term>
|
||||
<listitem>
|
||||
<para>This variable specifies the console map to be used.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term>FONT_UNIMAP</term>
|
||||
<listitem>
|
||||
<para>This variable specifies the unicode font map.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
</variablelist>
|
||||
|
||||
<para>An example for a German keyboard and console is given below:</para>
|
||||
|
||||
<screen role="nodump"><userinput>cat > /etc/vconsole.conf << "EOF"
|
||||
<literal>KEYMAP=de-latin1
|
||||
FONT=Lat2-Terminus16</literal>
|
||||
EOF</userinput></screen>
|
||||
|
||||
<para>You can change KEYMAP value at runtime by using the
|
||||
<command>localectl</command> utility:</para>
|
||||
|
||||
<screen role="nodump"><userinput>localectl set-keymap MAP</userinput></screen>
|
||||
|
||||
<note><para>Please note that <command>localectl</command> command can
|
||||
be used only on a system booted with Systemd.</para></note>
|
||||
|
||||
</sect2>
|
||||
|
||||
<sect2>
|
||||
<title>Clock Configuration</title>
|
||||
|
||||
<indexterm zone="ch-scripts-clock">
|
||||
<primary sortas="d-clock">clock</primary>
|
||||
<secondary>configuring</secondary></indexterm>
|
||||
|
||||
<para>This section discusses how to configure the
|
||||
<command>systemd-timedated</command> system service, which configures
|
||||
system clock and timezone.</para>
|
||||
|
||||
<para><command>systemd-timedated</command> reads
|
||||
<filename>/etc/adjtime</filename>, and depending on the contents of the file,
|
||||
it sets the clock to either UTC or local time. Create the
|
||||
<filename>/etc/adjtime</filename> file with the following contents <emphasis>if your
|
||||
hardware clock is set to local time</emphasis>:</para>
|
||||
|
||||
<screen role="nodump"><userinput>cat > /etc/adjtime << "EOF"
|
||||
<literal>0.0 0 0.0
|
||||
0
|
||||
LOCAL</literal>
|
||||
EOF</userinput></screen>
|
||||
|
||||
<para>If <filename>/etc/adjtime</filename> isn't present at first boot,
|
||||
<command>systemd-timedated</command> will assume that hardware clock is
|
||||
set to UTC and create the file using that setting.</para>
|
||||
|
||||
<para>You can also use the <command>timedatectl</command> utility to tell
|
||||
<command>systemd-timedated</command> if your hardware clock is set to
|
||||
UTC or local time:</para>
|
||||
|
||||
<screen role="nodump"><userinput>timedatectl set-local-rtc 1</userinput></screen>
|
||||
|
||||
<para><command>timedatectl</command> can also be used to change system time and
|
||||
time zone.</para>
|
||||
|
||||
<para>To change your current system time, issue:</para>
|
||||
|
||||
<screen role="nodump"><userinput>timedatectl set-time YYYY:MM:DD HH:MM:SS</userinput></screen>
|
||||
|
||||
<para>Hardware clock will also be updated accordingly.</para>
|
||||
|
||||
<para>To change your current time zone, issue:</para>
|
||||
|
||||
<screen role="nodump"><userinput>timedatectl set-timezone TIMEZONE</userinput></screen>
|
||||
|
||||
<para>You can get list of available time zones by running:</para>
|
||||
|
||||
<screen role="nodump"><userinput>timedatectl list-timezones</userinput></screen>
|
||||
|
||||
<note><para>The <command>timedatectl</command> command can
|
||||
be used only on a system booted with Systemd.</para></note>
|
||||
|
||||
</sect2>
|
||||
|
||||
<sect2>
|
||||
<title>Debugging the Boot Sequence</title>
|
||||
|
||||
|
@ -8,7 +8,7 @@
|
||||
<sect1 id="ch-scripts-udev">
|
||||
<?dbhtml filename="udev.html"?>
|
||||
|
||||
<title>Device and Module Handling on an LFS System</title>
|
||||
<title>Overview of Device and Module Handling</title>
|
||||
|
||||
<indexterm zone="ch-scripts-udev">
|
||||
<primary sortas="a-Udev">Udev</primary>
|
||||
@ -16,15 +16,15 @@
|
||||
</indexterm>
|
||||
|
||||
<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
|
||||
package as a part of systemd. Before we go into the details regarding how
|
||||
this works, a brief history of previous methods of handling devices is in
|
||||
order.</para>
|
||||
|
||||
<para>Linux systems in general traditionally use a static device creation
|
||||
method, whereby a great many device nodes are created under <filename
|
||||
<para>Linux systems in general traditionally used a static device creation
|
||||
method, whereby a great many device nodes were 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
|
||||
regardless of whether the corresponding hardware devices actually existed. This
|
||||
was 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.</para>
|
||||
@ -53,8 +53,8 @@
|
||||
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
|
||||
class="filesystem">devfs</systemitem> file system also suffered from race
|
||||
conditions that were inherent in its design and could not be fixed without a
|
||||
substantial revision to the kernel. It was marked as deprecated for a long
|
||||
period – due to a lack of maintenance – and was finally removed
|
||||
from the kernel in June, 2006.</para>
|
||||
@ -64,7 +64,7 @@
|
||||
<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 hardware configuration to userspace processes. With this
|
||||
userspace-visible representation, the possibility of seeing a userspace
|
||||
userspace-visible representation, the possibility of developing a userspace
|
||||
replacement for <systemitem class="filesystem">devfs</systemitem> became
|
||||
much more realistic.</para>
|
||||
|
||||
@ -97,7 +97,7 @@
|
||||
|
||||
<para>Device files are created by the kernel by the <systemitem
|
||||
class="filesystem">devtmpfs</systemitem> filesystem. Any driver that
|
||||
wishes to register a device node will go through <systemitem
|
||||
wishes to register a device node will go through the <systemitem
|
||||
class="filesystem">devtmpfs</systemitem> (via the driver core) to do it.
|
||||
When a <systemitem class="filesystem">devtmpfs</systemitem> instance is
|
||||
mounted on <filename class="directory">/dev</filename>, the device node
|
||||
@ -113,52 +113,11 @@
|
||||
change its permissions, owner, or group, or modify the internal
|
||||
<command>udevd</command> database entry (name) for that object.</para>
|
||||
|
||||
<para>The rules in these three directories are numbered in a similar
|
||||
fashion to the LFS-Bootscripts package and all three directories are
|
||||
merged together. If <command>udevd</command> can't find a rule for the
|
||||
device it is creating, it will leave the permissions and ownership at
|
||||
whatever <systemitem class="filesystem">devtmpfs</systemitem> used
|
||||
initially.</para> </sect3>
|
||||
|
||||
<sect3>
|
||||
<title>Udev Bootscripts</title>
|
||||
|
||||
<para>The first LFS bootscript,
|
||||
<filename>/etc/init.d/mountvirtfs</filename> will copy any devices
|
||||
located in <filename class="directory">/lib/udev/devices</filename> to
|
||||
<filename class="directory">/dev</filename>. This is necessary because
|
||||
some devices, directories, and symlinks are needed before the dynamic
|
||||
device handling processes are available during the early stages of
|
||||
booting a system, or are required by <command>udevd</command> itself.
|
||||
Creating static device nodes in <filename
|
||||
class="directory">/lib/udev/devices</filename> also provides an easy
|
||||
workaround for devices that are not supported by the dynamic device
|
||||
handling infrastructure.</para>
|
||||
|
||||
<para>The <filename>/etc/rc.d/init.d/udev</filename> initscript starts
|
||||
<command>udevd</command>, triggers any "coldplug" devices that have
|
||||
already been created by the kernel and waits for any rules to complete.
|
||||
The script also unsets the uevent handler from the default of
|
||||
<filename>/sbin/hotplug </filename>. This is done because the kernel no
|
||||
longer needs to call out to an external binary. Instead
|
||||
<command>udevd</command> will listen on a netlink socket for uevents that
|
||||
the kernel raises.</para>
|
||||
|
||||
<para>The <command>/etc/rc.d/init.d/udev_retry</command> initscript takes
|
||||
care of re-triggering events for subsystems whose rules may rely on
|
||||
filesystems that are not mounted until the <command>mountfs</command>
|
||||
script is run (in particular, <filename class="directory">/usr</filename>
|
||||
and <filename class="directory">/var</filename> may cause this). This
|
||||
script runs after the <command>mountfs</command> script, so those rules
|
||||
(if re-triggered) should succeed the second time around. It is
|
||||
configured from the <filename>/etc/sysconfig/udev_retry</filename> file;
|
||||
any words in this file other than comments are considered subsystem names
|
||||
to trigger at retry time. To find the subsystem of a device, use
|
||||
<command>udevadm info --attribute-walk <device></command> where
|
||||
<device> is an absolute path in /dev or /sys such as /dev/sr0 or
|
||||
/sys/class/rtc.</para>
|
||||
|
||||
</sect3>
|
||||
<para>The rules in these three directories are numbered and all three
|
||||
directories are merged together. If <command>udevd</command> can't find a
|
||||
rule for the device it is creating, it will leave the permissions and
|
||||
ownership at whatever <systemitem
|
||||
class="filesystem">devtmpfs</systemitem> used initially.</para> </sect3>
|
||||
|
||||
<sect3>
|
||||
<title>Module Loading</title>
|
||||
@ -313,27 +272,6 @@
|
||||
|
||||
</sect3>
|
||||
|
||||
<sect3>
|
||||
<title>Udev does not create a device</title>
|
||||
|
||||
<para>Further text assumes that the driver is built statically into the
|
||||
kernel or already loaded as a module, and that you have already checked
|
||||
that Udev doesn't create a misnamed device.</para>
|
||||
|
||||
<para>Udev has no information needed to create a device node if a kernel
|
||||
driver does not export its data to <systemitem
|
||||
class="filesystem">sysfs</systemitem>.
|
||||
This is most common with third party drivers from outside the kernel
|
||||
tree. Create a static device node in
|
||||
<filename>/lib/udev/devices</filename> with the appropriate major/minor
|
||||
numbers (see the file <filename>devices.txt</filename> inside the kernel
|
||||
documentation or the documentation provided by the third party driver
|
||||
vendor). The static device node will be copied to
|
||||
<filename class="directory">/dev</filename> by the
|
||||
<command>udev</command> bootscript.</para>
|
||||
|
||||
</sect3>
|
||||
|
||||
<sect3>
|
||||
<title>Device naming order changes randomly after rebooting</title>
|
||||
|
||||
|
@ -2,19 +2,23 @@
|
||||
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
|
||||
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
|
||||
<!ENTITY % general-entities SYSTEM "../general.ent">
|
||||
<!ENTITY site SYSTEM "../appendices/rc.site.script">
|
||||
%general-entities;
|
||||
]>
|
||||
|
||||
<sect1 id="ch-scripts-usage">
|
||||
<?dbhtml filename="usage.html"?>
|
||||
|
||||
<title>How Do the System V Bootscripts Work?</title>
|
||||
<title>System V Bootscript Usage and Configuration</title>
|
||||
|
||||
<indexterm zone="ch-scripts-usage">
|
||||
<primary sortas="a-Bootscripts">Bootscripts</primary>
|
||||
<secondary>usage</secondary>
|
||||
</indexterm>
|
||||
|
||||
<sect2>
|
||||
<title>How Do the System V 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
|
||||
@ -37,6 +41,8 @@
|
||||
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>
|
||||
|
||||
</sect2>
|
||||
|
||||
<sect2 id="conf-sysvinit" role="configuration">
|
||||
<title>Configuring Sysvinit</title>
|
||||
|
||||
@ -106,9 +112,7 @@ EOF</userinput></screen>
|
||||
persistent across boots, however it is appended to the more permanent file
|
||||
<filename>/var/log/boot.log</filename> at the end of the boot process.</para>
|
||||
|
||||
</sect2>
|
||||
|
||||
<sect2 id="init-levels" >
|
||||
<sect3 id="init-levels" >
|
||||
<title>Changing Run Levels</title>
|
||||
|
||||
<para>Changing run-levels is done with <command>init
|
||||
@ -200,6 +204,430 @@ EOF</userinput></screen>
|
||||
it is your own LFS system). The files given here are an example of how
|
||||
it can be done.</para>
|
||||
|
||||
</sect3>
|
||||
</sect2>
|
||||
|
||||
<sect2 id="ch-scripts-clock">
|
||||
<title>Configuring the System Clock</title>
|
||||
|
||||
<sect3 id="ch-scripts-setclock">
|
||||
<title>System V Clock Configuration</title>
|
||||
|
||||
<indexterm zone="ch-scripts-setclock">
|
||||
<primary sortas="d-setclock">setclock</primary>
|
||||
<secondary>configuring</secondary></indexterm>
|
||||
|
||||
<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>The <command>setclock</command> is run via
|
||||
<application>udev</application> when the kernel detects the hardware
|
||||
capability upon boot. It can also be run manually with the stop parameter to
|
||||
store the system time to the CMOS clock.</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>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
|
||||
|
||||
UTC=1
|
||||
|
||||
# Set this to any options you might need to give to hwclock,
|
||||
# such as machine hardware clock type for Alphas.
|
||||
CLOCKPARAMS=
|
||||
|
||||
# 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>
|
||||
|
||||
<note><para>The CLOCKPARAMS and UTC paramaters may be alternatively set
|
||||
in the <filename>/etc/sysconfig/rc.site</filename> file.</para></note>
|
||||
|
||||
</sect3>
|
||||
</sect2>
|
||||
|
||||
<sect2 id="ch-scripts-console">
|
||||
<?dbhtml filename="console.html"?>
|
||||
|
||||
<title>Configuring the Linux Console</title>
|
||||
|
||||
<indexterm zone="ch-scripts-console">
|
||||
<primary sortas="d-console">console</primary>
|
||||
<secondary>configuring</secondary>
|
||||
</indexterm>
|
||||
|
||||
<para>This section discusses how to configure the <command>console</command>
|
||||
bootscript that sets up the keyboard map, console font and console kernel log
|
||||
level. If non-ASCII characters (e.g., the copyright sign, the British pound
|
||||
sign and Euro symbol) will not be used and the keyboard is a U.S. one, much
|
||||
of this section can be skipped. Without the configuration file, (or
|
||||
equivalent settings in <filename>rc.site</filename>), 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 HOWTOs can also help with this, see <ulink
|
||||
url="http://www.tldp.org/HOWTO/HOWTO-INDEX/other-lang.html"/>. If still in
|
||||
doubt, look in the <filename class="directory">/usr/share/keymaps</filename>
|
||||
and <filename class="directory">/usr/share/consolefonts</filename> directories
|
||||
for valid keymaps and screen fonts. Read <filename>loadkeys(1)</filename> and
|
||||
<filename>setfont(8)</filename> manual pages to determine the correct
|
||||
arguments for these programs.</para>
|
||||
|
||||
<para>The <filename>/etc/sysconfig/console</filename> file should contain lines
|
||||
of the form: VARIABLE="value". The following variables are recognized:</para>
|
||||
<variablelist>
|
||||
|
||||
<varlistentry>
|
||||
<term>LOGLEVEL</term>
|
||||
<listitem>
|
||||
<para>This variable specifies the log level for kernel messages sent
|
||||
to the console as set by <command>dmesg</command>. Valid levels are
|
||||
from "1" (no messages) to "8". The default level is "7".</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term>KEYMAP</term>
|
||||
<listitem>
|
||||
<para>This variable specifies the arguments for the
|
||||
<command>loadkeys</command> program, typically, the name of keymap
|
||||
to load, e.g., <quote>es</quote>. If this variable is not set, the
|
||||
bootscript will not run the <command>loadkeys</command> program,
|
||||
and the default kernel keymap will be used.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term>KEYMAP_CORRECTIONS</term>
|
||||
<listitem>
|
||||
<para>This (rarely used) variable
|
||||
specifies the arguments for the second call to the
|
||||
<command>loadkeys</command> program. This is useful if the stock keymap
|
||||
is not completely satisfactory and a small adjustment has to be made. E.g.,
|
||||
to include the Euro sign into a keymap that normally doesn't have it,
|
||||
set this variable to <quote>euro2</quote>.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term>FONT</term>
|
||||
<listitem>
|
||||
<para>This variable specifies the arguments for the
|
||||
<command>setfont</command> program. Typically, this includes the font
|
||||
name, <quote>-m</quote>, and the name of the application character
|
||||
map to load. E.g., in order to load the <quote>lat1-16</quote> font
|
||||
together with the <quote>8859-1</quote> application character map
|
||||
(as it is appropriate in the USA),
|
||||
<!-- because of the copyright sign -->
|
||||
set this variable to <quote>lat1-16 -m 8859-1</quote>.
|
||||
In UTF-8 mode, the kernel uses the application character map for
|
||||
conversion of composed 8-bit key codes in the keymap to UTF-8, and thus
|
||||
the argument of the "-m" parameter should be set to the encoding of the
|
||||
composed key codes in the keymap.</para>
|
||||
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term>UNICODE</term>
|
||||
<listitem>
|
||||
<para>Set this variable to <quote>1</quote>, <quote>yes</quote> or
|
||||
<quote>true</quote> in order to put the
|
||||
console into UTF-8 mode. This is useful in UTF-8 based locales and
|
||||
harmful otherwise.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term>LEGACY_CHARSET</term>
|
||||
<listitem>
|
||||
<para>For many keyboard layouts, there is no stock Unicode keymap in
|
||||
the Kbd package. The <command>console</command> bootscript will
|
||||
convert an available keymap to UTF-8 on the fly if this variable is
|
||||
set to the encoding of the available non-UTF-8 keymap.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
</variablelist>
|
||||
|
||||
<para>Some examples:</para>
|
||||
|
||||
<itemizedlist>
|
||||
|
||||
<listitem>
|
||||
<para>For a non-Unicode setup, only the KEYMAP and FONT variables are
|
||||
generally needed. E.g., for a Polish setup, one would use:</para>
|
||||
<screen role="nodump"><userinput>cat > /etc/sysconfig/console << "EOF"
|
||||
<literal># Begin /etc/sysconfig/console
|
||||
|
||||
KEYMAP="pl2"
|
||||
FONT="lat2a-16 -m 8859-2"
|
||||
|
||||
# End /etc/sysconfig/console</literal>
|
||||
EOF</userinput></screen>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>As mentioned above, it is sometimes necessary to adjust a
|
||||
stock keymap slightly. The following example adds the Euro symbol to the
|
||||
German keymap:</para>
|
||||
|
||||
<screen role="nodump"><userinput>cat > /etc/sysconfig/console << "EOF"
|
||||
<literal># Begin /etc/sysconfig/console
|
||||
|
||||
KEYMAP="de-latin1"
|
||||
KEYMAP_CORRECTIONS="euro2"
|
||||
FONT="lat0-16 -m 8859-15"
|
||||
|
||||
# End /etc/sysconfig/console</literal>
|
||||
EOF</userinput></screen>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>The following is a Unicode-enabled example for Bulgarian, where a
|
||||
stock UTF-8 keymap exists:</para>
|
||||
|
||||
<screen role="nodump"><userinput>cat > /etc/sysconfig/console << "EOF"
|
||||
<literal># Begin /etc/sysconfig/console
|
||||
|
||||
UNICODE="1"
|
||||
KEYMAP="bg_bds-utf8"
|
||||
FONT="LatArCyrHeb-16"
|
||||
|
||||
# End /etc/sysconfig/console</literal>
|
||||
EOF</userinput></screen>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>Due to the use of a 512-glyph LatArCyrHeb-16 font in the previous
|
||||
example, bright colors are no longer available on the Linux console unless
|
||||
a framebuffer is used. If one wants to have bright colors without
|
||||
framebuffer and can live without characters not belonging to his language,
|
||||
it is still possible to use a language-specific 256-glyph font, as
|
||||
illustrated below:</para>
|
||||
|
||||
<screen role="nodump"><userinput>cat > /etc/sysconfig/console << "EOF"
|
||||
<literal># Begin /etc/sysconfig/console
|
||||
|
||||
UNICODE="1"
|
||||
KEYMAP="bg_bds-utf8"
|
||||
FONT="cyr-sun16"
|
||||
|
||||
# End /etc/sysconfig/console</literal>
|
||||
EOF</userinput></screen>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>The following example illustrates keymap autoconversion from
|
||||
ISO-8859-15 to UTF-8 and enabling dead keys in Unicode mode:</para>
|
||||
|
||||
<screen role="nodump"><userinput>cat > /etc/sysconfig/console << "EOF"
|
||||
<literal># Begin /etc/sysconfig/console
|
||||
|
||||
UNICODE="1"
|
||||
KEYMAP="de-latin1"
|
||||
KEYMAP_CORRECTIONS="euro2"
|
||||
LEGACY_CHARSET="iso-8859-15"
|
||||
FONT="LatArCyrHeb-16 -m 8859-15"
|
||||
|
||||
# End /etc/sysconfig/console</literal>
|
||||
EOF</userinput></screen>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>Some keymaps have dead keys (i.e., keys that don't produce a
|
||||
character by themselves, but put an accent on the character produced
|
||||
by the next key) or define composition rules (such as: <quote>press
|
||||
Ctrl+. A E to get Æ</quote> in the default keymap).
|
||||
Linux-&linux-version; interprets dead keys and composition rules in the
|
||||
keymap correctly only when the source characters to be composed together
|
||||
are not multibyte. This deficiency doesn't affect keymaps for European
|
||||
languages, because there accents are added to unaccented ASCII
|
||||
characters, or two ASCII characters are composed together. However, in
|
||||
UTF-8 mode it is a problem, e.g., for the Greek language, where one
|
||||
sometimes needs to put an accent on the letter <quote>alpha</quote>.
|
||||
The solution is either to avoid the use of UTF-8, or to install the
|
||||
X window system that doesn't have this limitation in its input
|
||||
handling.</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>For Chinese, Japanese, Korean and some other languages, the Linux
|
||||
console cannot be configured to display the needed characters. Users
|
||||
who need such languages should install the X Window System, fonts that
|
||||
cover the necessary character ranges, and the proper input method (e.g.,
|
||||
SCIM, it supports a wide variety of languages).</para>
|
||||
</listitem>
|
||||
|
||||
</itemizedlist>
|
||||
|
||||
<!-- Added because folks keep posting their console file with X questions
|
||||
to blfs-support list -->
|
||||
<note>
|
||||
<para>The <filename>/etc/sysconfig/console</filename> file only controls
|
||||
the Linux text console localization. It has nothing to do with setting
|
||||
the proper keyboard layout and terminal fonts in the X Window System, with
|
||||
ssh sessions or with a serial console. In such situations, limitations
|
||||
mentioned in the last two list items above do not apply.</para>
|
||||
</note>
|
||||
|
||||
</sect2>
|
||||
|
||||
<sect2 id="ch-scripts-createfiles">
|
||||
<title>Creating Files at Boot</title>
|
||||
|
||||
<indexterm zone="ch-scripts-createfiles">
|
||||
<primary sortas="d-createfiles">File creation at boot</primary>
|
||||
<secondary>configuring</secondary>
|
||||
</indexterm>
|
||||
|
||||
<para>At times, it is desired to create files at boot time. For instance,
|
||||
the <filename class="directory">/tmp/.ICE-unix</filename> directory
|
||||
may be desired. This can be done by creating an entry in the
|
||||
<filename>/etc/sysconfig/createfiles</filename> configuration script.
|
||||
The format of this file is embedded in the comments of the default
|
||||
configuration file.</para>
|
||||
</sect2>
|
||||
|
||||
<sect2 id="ch-scripts-sysklogd">
|
||||
<title>Configuring the sysklogd Script</title>
|
||||
|
||||
<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 as a part of System V initialization. The
|
||||
<parameter>-m 0</parameter> 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
|
||||
<filename>/etc/sysconfig/rc.site</filename> and define the variable
|
||||
SYSKLOGD_PARMS to the desired value. For instance, to remove all parameters,
|
||||
set the variable to a null value:</para>
|
||||
|
||||
<screen role="nodump">SYSKLOGD_PARMS=</screen>
|
||||
|
||||
<para>See <userinput>man syslogd</userinput> for more options.</para>
|
||||
|
||||
</sect2>
|
||||
|
||||
<sect2 id="ch-scripts-site">
|
||||
<title>The rc.site File</title>
|
||||
|
||||
<indexterm zone="ch-scripts-site">
|
||||
<primary sortas="a-rc.site">rc.site</primary>
|
||||
</indexterm>
|
||||
|
||||
<para>The optional <filename>/etc/sysconfig/rc.site</filename> file contains
|
||||
settings that are automatically set for each SystemV boot script. It can
|
||||
alternatively set the values specified in the <filename>hostname</filename>,
|
||||
<filename>console</filename>, and <filename>clock</filename> files in the
|
||||
<filename class='directory'>/etc/sysconfig/</filename> directory. If the
|
||||
associated variables are present in both these separate files and
|
||||
<filename>rc.site</filename>, the values in the script specific files have
|
||||
precedence. </para>
|
||||
|
||||
<para><filename>rc.site</filename> also contains parameters that can
|
||||
customize other aspects of the boot process. Setting the IPROMPT variable
|
||||
will enable selective running of bootscripts. Other options are described
|
||||
in the file comments. The default version of the file is as follows:</para>
|
||||
|
||||
<!-- Use role to fix a pdf generation problem -->
|
||||
<screen role="auto">&site;</screen>
|
||||
|
||||
<sect3>
|
||||
<title>Customizing the Boot and Shutdown Scripts</title>
|
||||
|
||||
<para>The LFS boot scripts boot and shut down a system in a fairly
|
||||
efficient manner, but there are a few tweaks that you can make in the
|
||||
rc.site file to improve speed even more and to adjust messages according
|
||||
to your preferences. To do this, adjust the settings in
|
||||
the <filename>/etc/sysconfig/rc.site</filename> file above.</para>
|
||||
|
||||
<itemizedlist>
|
||||
|
||||
<listitem><para>During the boot script <filename>udev</filename>, there is
|
||||
a call to <command>udev settle</command> that requires some time to
|
||||
complete. This time may or may not be required depending on devices present
|
||||
in the system. If you only have simple partitions and a single ethernet
|
||||
card, the boot process will probably not need to wait for this command. To
|
||||
skip it, set the variable OMIT_UDEV_SETTLE=y.</para></listitem>
|
||||
|
||||
<listitem><para>The boot script <filename>udev_retry</filename> also runs
|
||||
<command>udev settle</command> by default. This command is only needed by
|
||||
default if the <filename class='directory'>/var</filename> directory is
|
||||
separately mounted. This is because the clock needs the file
|
||||
<filename>/var/lib/hwclock/adjtime</filename>. Other customizations may
|
||||
also need to wait for udev to complete, but in many installations it is not
|
||||
needed. Skip the command by setting the variable OMIT_UDEV_RETRY_SETTLE=y.
|
||||
</para></listitem>
|
||||
|
||||
<listitem><para>By default, the file system checks are silent. This can
|
||||
appear to be a delay during the bootup process. To turn on the
|
||||
<command>fsck</command> output, set the variable VERBOSE_FSCK=y.
|
||||
</para></listitem>
|
||||
|
||||
<listitem><para>When rebooting, you may want to skip the filesystem check,
|
||||
<command>fsck</command>, completely. To do this, either create the file
|
||||
<filename>/fastboot</filename> or reboot the system with the command
|
||||
<command>/sbin/shutdown -f -r now</command>. On the other hand, you can
|
||||
force all file systems to be checked by creating
|
||||
<filename>/forcefsck</filename> or running <command>shutdown</command> with
|
||||
the <parameter>-F</parameter> parameter instead of <parameter>-f</parameter>.
|
||||
</para>
|
||||
|
||||
<para>Setting the variable FASTBOOT=y will disable <command>fsck</command>
|
||||
during the boot process until it is removed. This is not recommended
|
||||
on a permanent basis.</para></listitem>
|
||||
|
||||
<listitem><para>Normally, all files in the <filename
|
||||
class='directory'>/tmp</filename> directory are deleted at boot time.
|
||||
Depending on the number of files or directories present, this can cause a
|
||||
noticeable delay in the boot process. To skip removing these files set the
|
||||
variable SKIPTMPCLEAN=y.</para></listitem>
|
||||
|
||||
<listitem><para>During shutdown, the <command>init</command> program sends
|
||||
a TERM signal to each program it has started (e.g. agetty), waits for a set
|
||||
time (default 3 seconds), and sends each process a KILL signal and waits
|
||||
again. This process is repeated in the <command>sendsignals</command>
|
||||
script for any processes that are not shut down by their own scripts. The
|
||||
delay for <command>init</command> can be set by passing a parameter. For
|
||||
example to remove the delay in <command>init</command>, pass the -t0
|
||||
parameter when shutting down or rebooting (e.g. <command>/sbin/shutdown
|
||||
-t0 -r now</command>). The delay for the <command>sendsignals</command>
|
||||
script can be skipped by setting the parameter
|
||||
KILLDELAY=0.</para></listitem>
|
||||
|
||||
</itemizedlist>
|
||||
|
||||
</sect3>
|
||||
</sect2>
|
||||
</sect1>
|
||||
|
@ -113,8 +113,8 @@ xorriso -as cdrecord -v dev=/dev/cdrw blank=as_needed grub-img.iso</userinput></
|
||||
-->
|
||||
</sect2>
|
||||
|
||||
<sect2>
|
||||
<title>Creating the Configuration File</title>
|
||||
<sect2 id="grub-cfg">
|
||||
<title>Creating the GRUB Configuration File</title>
|
||||
|
||||
<para>Generate <filename>/boot/grub/grub.cfg</filename>:</para>
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
<!ENTITY version "SVN-20140418">
|
||||
<!ENTITY releasedate "April 18, 2014">
|
||||
<!ENTITY version "SVN-20140421">
|
||||
<!ENTITY releasedate "April 21, 2014">
|
||||
<!ENTITY copyrightdate "1999-2014"><!-- jhalfs needs a literal dash, not – -->
|
||||
<!ENTITY milestone "8.0">
|
||||
<!ENTITY generic-version "development"> <!-- Use "development", "testing", or "x.y[-pre{x}]" -->
|
||||
|
Loading…
Reference in New Issue
Block a user