Index: chapter06/glibc.xml
===================================================================
--- chapter06/glibc.xml	(revision 4dc8dc63eef4a0b4e70ffa3ff12d8678a6a81e92)
+++ chapter06/glibc.xml	(revision b32e80330973383d4eca995d6193e35a743176cd)
@@ -112,4 +112,23 @@
 localedef -i ja_JP -f EUC-JP ja_JP</userinput></screen>
 
+<para>In fact, some locales installed by the
+<command>make localedata/install-locales</command>
+command above are not properly
+supported by some applications that are in LFS and BLFS books. Because
+of various problems that arise
+due to application programmers making
+assumptions that break in such locales, LFS <emphasis>should not</emphasis>
+be used in locales that utilize
+multibyte character sets (including UTF-8) or
+right-to-left writing order.
+Numerous unofficial and unstable patches are required to fix these problems,
+and it has been decided not to support such complex locales.
+This applies to the ja_JP and fa_IR locales as well:
+they have been installed only
+for gcc and gettext tests to pass, and e.g. <application>vim</application>
+compiled according to this book doesn't work properly in them.
+Various attempts to circumvent these
+restrictions are documented in internationalization-related hints.</para>
+
 <para>Finally, build the linuxthreads man pages, which are a great reference
 on the threading API (applicable to NPTL as well):</para>
Index: chapter06/kbd.xml
===================================================================
--- chapter06/kbd.xml	(revision 4dc8dc63eef4a0b4e70ffa3ff12d8678a6a81e92)
+++ chapter06/kbd.xml	(revision b32e80330973383d4eca995d6193e35a743176cd)
@@ -37,39 +37,6 @@
 </sect2>
 
-<sect2 id="conf-kbd"><title>Configuring your keyboard</title>
-<indexterm zone="conf-kbd">
-<primary sortas="a-Kbd">Kbd</primary>
-<secondary>configuring</secondary></indexterm>
-
-<para>Few things are more annoying than using Linux while a wrong keymap
-for your keyboard is loaded. If you have a standard US keyboard, however, you
-can skip this section, as the US keymap is the default as long as you don't
-change it.</para>
-
-<para>To change the default keymap, create the
-<filename class="symlink">/usr/share/kbd/keymaps/defkeymap.map.gz</filename>
-symlink by running the following command:</para>
-
-<screen><userinput>ln -s path/to/keymap /usr/share/kbd/keymaps/defkeymap.map.gz</userinput></screen>
-
-<para>Of course, replace <filename>path/to/keymap</filename> with the path and
-name of your keyboard's map file. For example, if you have a Dutch keyboard,
-you would use <filename>/usr/share/kbd/keymaps/i386/qwerty/nl.map.gz</filename>.</para>
-
-<para>Another way to set your keyboard's layout is to compile the keymap
-into the kernel. This ensures that your keyboard will always work as expected,
-even when you boot into maintenance mode (by passing `init=/bin/sh' to the
-kernel), as then the bootscript that normally sets up your keymap isn't run.</para>
-
-<para>When in <xref linkend="chapter-bootable"/> you're ready to compile the
-kernel, run the following command to patch the current default keymap into the
-source (you will have to repeat this command whenever you unpack a new
-kernel):</para>
-
-<screen><userinput>loadkeys -m /usr/share/kbd/keymaps/defkeymap.map.gz &gt; \
-    /usr/src/linux-&linux-version;/drivers/char/defkeymap.c</userinput></screen>
-
-</sect2>
-
+<!-- The "Configuring your keyboard" section has been moved to
+Chapter 7 and renamed to "Configuring Linux console" -->
 
 <sect2 id="contents-kbd"><title>Contents of Kbd</title>
@@ -164,9 +131,10 @@
 <indexterm zone="ch-system-kbd unicode_start"><primary sortas="b-unicode_start">unicode_start</primary></indexterm>
 <para id="unicode_start"><command>unicode_start</command> puts the keyboard and console in
-unicode mode.</para>
+UNICODE mode. Never use it on LFS, because applications are not
+configured to support UNICODE.</para>
 
 <indexterm zone="ch-system-kbd unicode_stop"><primary sortas="b-unicode_stop">unicode_stop</primary></indexterm>
 <para id="unicode_stop"><command>unicode_stop</command> reverts keyboard and console from
-unicode mode.</para>
+UNICODE mode.</para>
 
 </sect2>
Index: chapter06/man.xml
===================================================================
--- chapter06/man.xml	(revision 4dc8dc63eef4a0b4e70ffa3ff12d8678a6a81e92)
+++ chapter06/man.xml	(revision b32e80330973383d4eca995d6193e35a743176cd)
@@ -74,4 +74,33 @@
 to NROFF.</para></note>
 
+<para>If your character set uses 8-bit characters, search for the line
+beginning with "NROFF" in /etc/man.conf, and verify that it coincides
+with the following:</para>
+
+<screen>NROFF  /usr/bin/nroff -Tlatin1 -mandoc</screen>
+
+<para>Note that you should use "latin1" even if it is not the character set
+of your locale. The reason is that,
+according to the specification, <application>groff</application> has
+no means of typesetting characters outside ISO-8859-1
+without some strange escape codes, and localized manual
+pages are therefore really a hack. When formatting manual pages,
+<application>groff</application> thinks that they are in the ISO-8859-1
+encoding and this <emphasis>-Tlatin1</emphasis> switch tells
+<application>groff</application> to use the same encoding for output.
+Since <application>groff</application> does no recoding of input characters,
+the formatted result is really in the same encoding as input (although
+<application>groff</application> doesn't know that it is not ISO-8859-1)
+and therefore it is usable as the input for a pager.</para>
+
+<para>Of course, this hack does not solve the problem of non-working
+<command>man2dvi</command> program for localized manual
+pages in non-ISO-8859-1 locales.
+Also, it does not work at all with multibyte character sets.
+The first problem does not have a solution currently. The second
+one is not of a concern because the LFS installation does not support
+multibyte character sets properly anyway. You may want to look at
+internationalization related hints, though.</para>
+
 <para>You may want to also take a look at the BLFS page at
 <ulink url="&blfs-root;view/cvs/postlfs/compressdoc.html"/> which deals with
Index: chapter06/sysvinit.xml
===================================================================
--- chapter06/sysvinit.xml	(revision 4dc8dc63eef4a0b4e70ffa3ff12d8678a6a81e92)
+++ chapter06/sysvinit.xml	(revision b32e80330973383d4eca995d6193e35a743176cd)
@@ -75,13 +75,23 @@
 su:S016:once:/sbin/sulogin
 
-1:2345:respawn:/sbin/agetty tty1 9600
-2:2345:respawn:/sbin/agetty tty2 9600
-3:2345:respawn:/sbin/agetty tty3 9600
-4:2345:respawn:/sbin/agetty tty4 9600
-5:2345:respawn:/sbin/agetty tty5 9600
-6:2345:respawn:/sbin/agetty tty6 9600
+1:2345:respawn:/sbin/agetty -I '\033(K' tty1 9600
+2:2345:respawn:/sbin/agetty -I '\033(K' tty2 9600
+3:2345:respawn:/sbin/agetty -I '\033(K' tty3 9600
+4:2345:respawn:/sbin/agetty -I '\033(K' tty4 9600
+5:2345:respawn:/sbin/agetty -I '\033(K' tty5 9600
+6:2345:respawn:/sbin/agetty -I '\033(K' tty6 9600
 
 # End /etc/inittab
 <userinput>EOF</userinput></screen>
+
+<para> The -I '\033(K' switch tells agetty to send this escape sequence to
+the terminal before doing anything else. This escape sequence switches the
+console character set to a user-defined one, which can be modified by
+running the <command>setfont</command> program.
+Actually, the <command>console</command> initscript from the LFS-Bootscripts
+package calls the <command>setfont</command> program during system
+startup. Sending this escape sequence is necessary for
+people who use non-ISO-8859-1 screen font, but does not hurt native English
+speakers.</para>
 
 </sect2>
Index: chapter07/bootscripts.xml
===================================================================
--- chapter07/bootscripts.xml	(revision 4dc8dc63eef4a0b4e70ffa3ff12d8678a6a81e92)
+++ chapter07/bootscripts.xml	(revision b32e80330973383d4eca995d6193e35a743176cd)
@@ -31,6 +31,8 @@
 <sect2 id="contents-bootscripts"><title>Contents of LFS-bootscripts</title>
 
-<para><emphasis>Installed scripts</emphasis>: checkfs, cleanfs, functions,
-halt, ifdown, ifup, loadkeys, localnet, mountfs, mountkernfs, network, rc,
+<para><emphasis>Installed scripts</emphasis>: checkfs, cleanfs,
+console,
+functions, halt, ifdown, ifup,
+localnet, mountfs, mountkernfs, network, rc,
 reboot, sendsignals, setclock, static, swap, sysklogd and template</para>
 
@@ -52,4 +54,10 @@
 <filename>/fastboot</filename> and <filename>/forcefsck</filename> files.</para>
 
+<indexterm zone="ch-scripts-bootscripts console-bootscripts"><primary sortas="d-console">console</primary></indexterm>
+<para id="console-bootscripts">The <command>console</command> script 
+loads the keymap table you
+specified as proper for your keyboard layout.
+It also sets the screen font.</para>
+
 <indexterm zone="ch-scripts-bootscripts functions-bootscripts"><primary sortas="d-functions">functions</primary></indexterm>
 <para id="functions-bootscripts">The <command>functions</command> script contains functions shared among
@@ -62,8 +70,4 @@
 <para id="ifdown-bootscripts">The <command>ifdown</command> and <command>ifup</command> scripts assist
 the network script with network devices.</para>
-
-<indexterm zone="ch-scripts-bootscripts loadkeys-bootscripts"><primary sortas="d-loadkeys">loadkeys</primary></indexterm>
-<para id="loadkeys-bootscripts">The <command>loadkeys</command> script loads the keymap table you
-specified as proper for your keyboard layout.</para>
 
 <indexterm zone="ch-scripts-bootscripts localnet-bootscripts"><primary sortas="d-localnet">localnet</primary></indexterm>
Index: chapter07/chapter07.xml
===================================================================
--- chapter07/chapter07.xml	(revision 4dc8dc63eef4a0b4e70ffa3ff12d8678a6a81e92)
+++ chapter07/chapter07.xml	(revision b32e80330973383d4eca995d6193e35a743176cd)
@@ -14,4 +14,6 @@
 <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="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="sysklogd.xml"/>
 <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="hostname.xml"/>
Index: chapter07/console.xml
===================================================================
--- chapter07/console.xml	(revision 4dc8dc63eef4a0b4e70ffa3ff12d8678a6a81e92)
+++ chapter07/console.xml	(revision b32e80330973383d4eca995d6193e35a743176cd)
@@ -5,5 +5,5 @@
 ]>
 <sect1 id="ch-scripts-console">
-<title>Do I need the console script?</title>
+<title>Configuring the Linux console</title>
 <?dbhtml filename="console.html"?>
 
@@ -12,14 +12,84 @@
 <secondary>configuring</secondary></indexterm>
 
-<para>If you plan to compile the keymap directly in the kernel during <xref
-linkend="chapter-bootable"/> (see <xref linkend="ch-system-kbd"/>), then strictly
-speaking you don't need to run this loadkeys script, since the kernel will set
-up the keymap for you. If you wish, you can still run the script, it isn't going
-to hurt you. Keeping it could even be beneficial, in case you run a lot of
-different kernels and can't be sure that the keymap is compiled into every one
-of them.</para>
+<para>In this section we will configure the <command>console</command>
+initscript that sets up the keyboard
+map and the console font. If you are a native English speaker so that you
+don't need to use any non-ASCII characters, and your keyboard is a US one,
+skip this section. Without the configuration file,
+the <command>console</command> initscript will do nothing.</para>
 
-<para>If you decided you don't need or don't want to use the console script,
-remove the <filename class="symlink">/etc/rc.d/rcsysinit.d/S70console</filename> symlink.</para>
+<para>The <command>console</command> script uses the
+<filename>/etc/sysconfig/console</filename>
+as a configuration file. You need to decide which keymap and screen font you
+will use. The language-specific HOWTO can help you.
+In the future releases of LFS-Bootscripts, there will be a pre-made
+<filename>/etc/sysconfig/console</filename> file with known
+good settings for several countries, and you will just have to uncomment
+the relevant section.
+If still in doubt,
+look into <filename class="directory">/usr/share/kbd</filename>
+for valid keymaps and screen fonts. Then read the <command>loadkeys</command>
+and <command>setfont</command> manual pages and figure out the correct
+arguments for these programs.
+Once you decided, create the
+configuration file with the following command:</para>
+
+<screen><userinput>cat &gt;/etc/sysconfig/console &lt;&lt;"EOF"</userinput>
+KEYMAP="<emphasis>arguments for loadkeys</emphasis>"
+FONT="<emphasis>arguments for setfont</emphasis>"
+<userinput>EOF</userinput></screen>
+
+<para>E.g., for Spanish users who also want to use the Euro character
+(accessible by pressing Alt+E),
+the following settings are correct:</para>
+
+<screen><userinput>cat &gt;/etc/sysconfig/console &lt;&lt;"EOF"</userinput>
+KEYMAP="es euro"
+FONT="lat9-16 -u iso01"
+<userinput>EOF</userinput></screen>
+
+<para>If the KEYMAP or FONT variable is not set, the console initscript
+will not run the corresponding program.</para>
+
+<para>In some keymaps, the Backspace and Delete keys send characters
+different form ones in the default keymap built into the kernel.
+This confuses some applications, e.g. <application>Emacs</application>
+displays its help (instead of erasing the character before the cursor)
+when you press Backspace. To check if your keymap is affected (this works
+only for i386 keymaps):</para>
+
+<screen><userinput>zgrep '\W14\W' <emphasis>/path/to/your/keymap</emphasis></userinput></screen>
+
+<para>If you see that keycode 14 is Backspace and not Delete,
+create the following keymap snippet to fix this issue:</para>
+
+<screen><userinput>mkdir -p /etc/kbd &amp; &amp; cat &gt;/etc/kbd/bs-sends-del &lt;&lt;"EOF"</userinput>
+                keycode 14 =    Delete  Delete          Delete  Delete
+        alt     keycode 14 =    Meta_Delete
+altgr   alt     keycode 14 =    Meta_Delete
+                keycode 111 =   Remove
+altgr   control keycode 111 =   Boot
+control alt     keycode 111 =   Boot
+altgr   control alt keycode 111 = Boot
+<userinput>EOF</userinput></screen>
+
+<para>Then tell the <command>console</command> script to load this snippet
+after the main keymap:</para>
+
+<screen><userinput>cat &gt;&gt;/etc/sysconfig/console &lt;&lt;EOF</userinput>
+KEYMAP_CORRECTION="/etc/kbd/bs-sends-del"
+<userinput>EOF</userinput></screen>
+
+<para>If back in <xref linkend="chapter-building-system"/> you decided to go
+compile your keymap directly into the kernel (later on in <xref
+linkend="chapter-bootable"/>), then strictly speaking you don't need to run the
+loadkeys program, since the kernel will set up the keymap for you,
+and thus you may omit the KEYMAP variable from the
+<filename>/etc/sysconfig/console</filename>
+configuration file. If you wish,
+you can still have it, this isn't going to hurt you. Keeping it could even
+be beneficial, in case you run a lot of different kernels and can't be sure
+that the keymap is compiled into every one of them.</para>
 
 </sect1>
+
Index: chapter07/inputrc.xml
===================================================================
--- chapter07/inputrc.xml	(revision b32e80330973383d4eca995d6193e35a743176cd)
+++ chapter07/inputrc.xml	(revision b32e80330973383d4eca995d6193e35a743176cd)
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN" "http://www.oasis-open.org/docbook/xml/4.3/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"?>
+
+<para><filename>Inputrc</filename> deals with the mapping of the keyboard for 
+certain situations.  This file is the start-up file used by
+<application>readline</application> - the input related library used by 
+<application>Bash</application> and most other shells.</para>
+
+<para>For more information see <command>info bash</command> -- <emphasis
+role="strong">Node: Readline Init</emphasis> file as well as
+<command>info readline</command>. There is a lot that can be done with this 
+one rc file.</para>
+
+<para>Global values are set in <filename>/etc/inputrc</filename>.
+Personal user values are set in <filename>~/.inputrc</filename>. The
+<filename>~/.inputrc</filename> file will override the global settings
+file.  A later page sets up <application>Bash</application> to use
+<filename>/etc/inputrc</filename> if there is no
+<filename>.inputrc</filename> for a user when
+<filename>/etc/profile</filename> is read (usually at login).  If you
+want your system to use both, or don't want <emphasis>global</emphasis>
+keyboard handling, it is a good idea to place a default
+<filename>.inputrc</filename> into the <filename>/etc/skel</filename>
+directory for use with new users.</para>
+
+<para>
+Below is a base <filename>/etc/inputrc</filename> along with
+comments to explain what the various options do.  Note that comments
+can <emphasis>not</emphasis> be on the same line as commands.
+</para>
+
+<para>If you will create an <filename>.inputrc</filename> in
+<filename>/etc/skel</filename> using the command below, change the
+command's output to <filename>/etc/skel/.inputrc</filename> and be
+sure to check/set permissions afterward. Then you can just copy that
+file to <filename>/etc/inputrc</filename> and the home directory
+of any user already existing in the system, including root, that needs
+a private version of the file.  Be sure to use the <option>-p</option> parameter
+of <command>cp</command> to maintain permissions and be sure to change owner and group
+appropriately.
+</para>
+
+<screen><userinput>cat &gt; /etc/inputrc &lt;&lt; "EOF"</userinput>
+# Begin /etc/inputrc
+
+# Make sure we don't output everything on the 1 line
+set horizontal-scroll-mode Off
+
+# Enable 8bit input
+set meta-flag On 
+set input-meta On
+
+# Turns off 8th bit stripping
+set convert-meta Off
+
+# Keep the 8th bit for display
+set output-meta On
+
+# none, visible or audible
+set bell-style none
+
+# All of the following map the escape sequence of the 
+# value contained inside the 1st argument to the 
+# readline specific functions
+
+"\eOd": backward-word
+"\eOc": forward-word
+
+# for linux console
+"\e[1~": beginning-of-line
+"\e[4~": end-of-line
+"\e[5~": beginning-of-history
+"\e[6~": end-of-history
+"\e[3~": delete-char
+"\e[2~": quoted-insert
+
+# for xterm
+"\eOH": beginning-of-line
+"\eOF": end-of-line
+
+# for Konsole
+"\e[H": beginning-of-line
+"\e[F": end-of-line
+
+# End /etc/inputrc
+<userinput>EOF</userinput></screen>
+
+</sect1>
Index: chapter07/profile.xml
===================================================================
--- chapter07/profile.xml	(revision b32e80330973383d4eca995d6193e35a743176cd)
+++ chapter07/profile.xml	(revision b32e80330973383d4eca995d6193e35a743176cd)
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN" "http://www.oasis-open.org/docbook/xml/4.3/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"?>
+
+<para>The shell program <filename>/bin/bash</filename> (hereafter
+referred to as just "the shell") 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 generally provide global
+settings. If an equivalent file exists in your home directory it may
+override the global settings.
+</para>
+
+<para>An interactive login shell is started after a successful login, using
+<filename>/bin/login</filename>, 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>For more information see <command>info bash</command> -- 
+<emphasis role="strong">Nodes: Bash Startup Files and Interactive
+Shells.</emphasis></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>A base <filename>/etc/profile</filename> created below only sets some
+environment variables necessary for Bash to accept keystrokes properly,
+even in non-English locale. Replace "ll" with the
+two-letter code for your language (e.g. "en") and
+"CC" with the two-letter code for your country
+(e.g. "GB"). Also you may need to specify
+(and this is actually the preferred form) your
+character encoding (e.g. "iso8859-1") after a dot (so that the result
+is "en_GB.iso8859-1").
+Issue the following command for more information:</para>
+
+<screen><userinput>man 3 setlocale</userinput></screen>
+
+<para>The list of all locales supported by glibc can be obtained by running
+the following command:</para>
+
+<screen><userinput>locale -a</userinput></screen>
+
+<para>Now, when you are sure about your locale settings, create the
+<filename>/etc/profile</filename> file:</para>
+<screen><userinput>cat &gt; /etc/profile &lt;&lt; "EOF"
+# Begin /etc/profile
+# Written for Linux From Scratch
+# by Alexander E. Patrakov
+
+export LC_ALL=ll_CC
+export LANG=ll_CC
+export INPUTRC=/etc/inputrc
+
+# End /etc/profile
+EOF</userinput></screen>
+
+<para>Setting the keyboard layout,
+the screen font and the 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 break in such conditions. Because of too little educational
+value for a typical reader, these steps and patches are not included
+in the LFS book and such locales are not supported by LFS in any way.
+</para>
+</sect1>
