aboutsummaryrefslogtreecommitdiffstats
path: root/chapter06
diff options
context:
space:
mode:
authorGreg Schafer <greg@linuxfromscratch.org>2003-09-27 03:38:15 +0000
committerGreg Schafer <greg@linuxfromscratch.org>2003-09-27 03:38:15 +0000
commit7e602eabe602030b09e5d299f8c7e5c2a751081b (patch)
treef54e772e160681a99c859ebe4e1f691aaa147e15 /chapter06
parent72b845e68138e36852a54b46657f8db376c73e12 (diff)
Chapter 6 - Clarify remaining PTY issues.
git-svn-id: http://svn.linuxfromscratch.org/LFS/trunk/BOOK@2893 4aa44e1e-78dd-0310-a6d2-fbcd4c07a689
Diffstat (limited to 'chapter06')
-rw-r--r--chapter06/adjustingtoolchain.xml3
-rw-r--r--chapter06/binutils-inst.xml20
-rw-r--r--chapter06/gcc-inst.xml8
-rw-r--r--chapter06/glibc-inst.xml3
-rw-r--r--chapter06/makedev-inst.xml22
-rw-r--r--chapter06/mountproc.xml71
6 files changed, 84 insertions, 43 deletions
diff --git a/chapter06/adjustingtoolchain.xml b/chapter06/adjustingtoolchain.xml
index 1c328c2e1..14ce79020 100644
--- a/chapter06/adjustingtoolchain.xml
+++ b/chapter06/adjustingtoolchain.xml
@@ -46,8 +46,7 @@ readelf -l a.out | grep ': /lib'</userinput></screen></para>
<para>If everything is working correctly, there should be no errors, and the
output of the last command will be:</para>
-<para><screen>[Requesting program interpreter: /lib/ld-linux.so.2]
-</screen></para>
+<blockquote><screen>[Requesting program interpreter: /lib/ld-linux.so.2]</screen></blockquote>
<para>If you did not receive the output as shown above, then something is
seriously wrong. You will need to investigate and retrace your steps to find
diff --git a/chapter06/binutils-inst.xml b/chapter06/binutils-inst.xml
index 6b93bc2cc..a40b4c8a1 100644
--- a/chapter06/binutils-inst.xml
+++ b/chapter06/binutils-inst.xml
@@ -2,9 +2,25 @@
<sect2><title>Installation of Binutils</title>
+<para>Now is an appropriate time to verify that your pseudo terminals (PTYs) are
+working properly inside the chroot environment. We will again quickly check that
+everything is set up correctly by performing a simple test:</para>
+
+<para><screen><userinput>expect -c "spawn ls"</userinput></screen></para>
+
+<para>If you receive the message:</para>
+
+<blockquote><screen>The system has no more ptys. Ask your system administrator to create more.</screen></blockquote>
+
+<para>Your chroot environment is not set up for proper PTY operation. In this
+case there is no point in running the test suites for Binutils and GCC until you
+are able to resolve the issue. Please refer back to the "Mounting the proc and
+devpts file systems" and "Creating devices (Makedev)" sections and perform the
+recommended steps to fix the problem.</para>
+
<note><para>The test suite for Binutils in this section is considered
-<emphasis>critical</emphasis>. Do not skip it under any circumstances.</para>
-</note>
+<emphasis>critical</emphasis>. Our advice is to not skip it under any
+circumstances.</para> </note>
<para>This package is known to behave badly when you have changed its
default optimization flags (including the -march and -mcpu options).
diff --git a/chapter06/gcc-inst.xml b/chapter06/gcc-inst.xml
index ccc5c0690..62efb9103 100644
--- a/chapter06/gcc-inst.xml
+++ b/chapter06/gcc-inst.xml
@@ -4,7 +4,8 @@
<title>Installation of GCC</title>
<note><para>The test suite for GCC in this section is considered <emphasis>
-critical</emphasis>. Do not skip it under any circumstances.</para></note>
+critical</emphasis>. Our advice is to not skip it under any
+circumstances.</para></note>
<para>This package is known to behave badly when you have changed its
default optimization flags (including the -march and -mcpu options).
@@ -42,6 +43,11 @@ cd ../gcc-build</userinput></screen></para>
<para><screen><userinput>make</userinput></screen></para>
+<note><para>At this point it is strongly recommended to repeat the sanity check
+we performed earlier in the chapter. Refer back to the "Re-adjusting the
+toolchain" section and repeat the check. If the results are wrong then most
+likely, you erroneously applied the GCC Specs patch from Chapter 5.</para></note>
+
<para>Test the results, but don't stop at errors (you'll remember the few
known ones):</para>
diff --git a/chapter06/glibc-inst.xml b/chapter06/glibc-inst.xml
index 153980aac..7829f9d56 100644
--- a/chapter06/glibc-inst.xml
+++ b/chapter06/glibc-inst.xml
@@ -10,7 +10,8 @@ the Glibc install, because the Glibc autoconf tests would then give bogus
results and thus defeat our goal of achieving a clean build.</para>
<note><para>The test suite for Glibc in this section is considered <emphasis>
-critical</emphasis>. Do not skip it under any circumstances.</para></note>
+critical</emphasis>. Our advice is to not skip it under any
+circumstances.</para></note>
<para>Before starting to build Glibc, remember to unpack the Glibc-linuxthreads
again inside the <filename>glibc-&glibc-version;</filename> directory, and to
diff --git a/chapter06/makedev-inst.xml b/chapter06/makedev-inst.xml
index 75b3ecef8..fd8b087dd 100644
--- a/chapter06/makedev-inst.xml
+++ b/chapter06/makedev-inst.xml
@@ -35,14 +35,24 @@ create devices via the <emphasis>mknod</emphasis> program. Please refer to
the man and info pages of <emphasis>mknod</emphasis> if you need more
information.</para>
-<para>Also, if earlier in Chapter 6 you were unable to mount the devpts
-filesystem because your host uses devfs, we will now mount that devfs
-system over top of this new static /dev structure. This poses no problems,
-as the device nodes created are still present, they are just hidden by the
-new devfs filesystem. Run the following command to mount devfs, if necessary:
-</para>
+<para>Additionally, if you were unable to mount the devpts filesystem earlier in
+the "Mounting the proc and devpts file systems" section, now is the time to
+try the alternatives. If your kernel supports the devfs file system, run the
+following command to mount devfs:</para>
<para><screen><userinput>mount -t devfs devfs /dev</userinput></screen></para>
+<para>This will mount the devfs file system over the top of the new static
+<filename>/dev</filename> structure. This poses no problems, as the device nodes
+created are still present, they are just hidden by the new devfs
+filesystem.</para>
+
+<para>If this still doesn't work, the only option left is to use the MAKEDEV
+script to create the ptyXX and ttyXX range of files that would otherwise not be
+needed. Ensure you are still in the <filename>/dev</filename> directory then run
+<userinput>./MAKEDEV -v pty</userinput>. The downside of this is, we are
+creating an extra 512 device special files which will not be needed when we
+finally boot into the finished LFS system.</para>
+
</sect2>
diff --git a/chapter06/mountproc.xml b/chapter06/mountproc.xml
index cfe40f562..380a2ec5c 100644
--- a/chapter06/mountproc.xml
+++ b/chapter06/mountproc.xml
@@ -2,33 +2,22 @@
<title>Mounting the proc and devpts file systems</title>
<?dbhtml filename="proc.html" dir="chapter06"?>
-<para>In order for certain programs to function properly, the proc and devpts
-file systems must be available within the chroot environment.
-As a file system can be mounted as many times and in as many places
-as you like, it's not a problem that the these file systems are already
-mounted on your host system -- especially so because they are virtual
-file systems.</para>
+<para>In order for certain programs to function properly, the
+<emphasis>proc</emphasis> and <emphasis>devpts</emphasis> file systems must be
+available within the chroot environment. A file system can be mounted as many
+times and in as many places as you like, thus it's not a problem that the these
+file systems are already mounted on your host system -- especially so because
+they are virtual file systems.</para>
-<para>The proc file system is mounted under
-<filename class="directory">/proc</filename> by running the
-following command:</para>
+<para>The <emphasis>proc</emphasis> file system is the process information
+pseudo-filesystem that the kernel uses to provide status information about the
+status of the system.</para>
-<para><screen><userinput>mount proc /proc -t proc</userinput></screen></para>
-
-<para>The devpts file system is mounted to <filename class="directory">/dev/pts
-</filename> by running:</para>
-
-<para><screen><userinput>mount devpts /dev/pts -t devpts</userinput></screen>
-</para>
-
-<para>Should this command fail with an error to the effect of:</para>
-
-<blockquote><screen>filesystem devpts not supported by kernel</screen></blockquote>
+<para>The proc file system is mounted on
+<filename class="directory">/proc</filename> by running the following
+command:</para>
-<para>This most likely means that your host system uses devfs, and does not
-have the necessary support for devpts in the kernel. To work around this
-problem, we will place the host's devfs system on top of the new /dev
-structure later, in the section where we run the MAKEDEV script.</para>
+<para><screen><userinput>mount proc /proc -t proc</userinput></screen></para>
<para>You might get warning messages from the mount command, such as
these:</para>
@@ -40,14 +29,34 @@ not enough memory</screen></blockquote>
isn't installed completely yet and some files are missing. The mount itself
will be successful and that's all we care about at this point.</para>
-<para>The last error (not enough memory) doesn't always show up. It depends
-on your system configuration (such as the host system's Glibc version that was
-used to compile the mount program with).</para>
+<para>The <emphasis>devpts</emphasis> file system was mentioned earlier and is
+now the most common way for pseudo terminals (PTYs) to be implemented.</para>
+
+<para>The devpts file system is mounted on
+<filename class="directory">/dev/pts</filename> by running:</para>
+
+<para><screen><userinput>mount devpts /dev/pts -t devpts</userinput></screen></para>
+
+<para>Should this command fail with an error to the effect of:</para>
+
+<blockquote><screen>filesystem devpts not supported by kernel</screen></blockquote>
-<para>Remember, if for any reason you stop working on your LFS, and
-start again later, it's important to check that these filesystems are still
-mounted inside the chroot environment. Otherwise, some programs might
-end up compiled incorrectly.</para>
+<para>The most likely cause is that your host system's kernel was compiled
+without support for the devpts file system. You can check which file systems
+your kernel supports by peeking into its internals with a command such as
+<userinput>cat /proc/filesystems</userinput>. If for some reason, devpts is
+listed there but the mount still doesn't work, check instead for a different
+file system variety called <emphasis>devfs</emphasis>. If devfs is listed then
+we'll be able to work around the problem by mounting the host's devfs file
+system on top of the new <filename>/dev</filename> structure which we'll create
+later on in the "Creating devices (Makedev)" section. If devfs was not listed,
+do not worry because there is yet a third way to get PTYs working inside the
+chroot environment. We'll cover this shortly in the aforementioned Makedev
+section.</para>
+
+<para>Remember, if for any reason you stop working on your LFS, and start again
+later, it's important to check that these filesystems are still mounted inside
+the chroot environment, otherwise problems are likely to occur.</para>
</sect1>