mirror of
https://git.linuxfromscratch.org/lfs.git
synced 2025-03-06 06:14:47 +00:00
Chapter 6 - Clarify remaining PTY issues.
git-svn-id: http://svn.linuxfromscratch.org/LFS/trunk/BOOK@2893 4aa44e1e-78dd-0310-a6d2-fbcd4c07a689
This commit is contained in:
parent
72b845e681
commit
7e602eabe6
@ -16,7 +16,7 @@ simple test:</para>
|
||||
|
||||
<para>If you receive the message:</para>
|
||||
|
||||
<para><screen>The system has no more ptys. Ask your system administrator to create more.</screen></para>
|
||||
<blockquote><screen>The system has no more ptys. Ask your system administrator to create more.</screen></blockquote>
|
||||
|
||||
<para>Your host distribution is not set up for proper PTY operation. In this
|
||||
case there is no point in running the test suites for GCC and Binutils until you
|
||||
|
@ -53,8 +53,7 @@ readelf -l a.out | grep ': /tools'</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: /tools/lib/ld-linux.so.2]
|
||||
</screen></para>
|
||||
<blockquote><screen>[Requesting program interpreter: /tools/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
|
||||
|
@ -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
|
||||
|
@ -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).
|
||||
|
@ -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>
|
||||
|
||||
|
@ -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
|
||||
|
@ -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>
|
||||
|
||||
|
@ -2,34 +2,23 @@
|
||||
<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>The proc file system is mounted on
|
||||
<filename class="directory">/proc</filename> by running the following
|
||||
command:</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>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>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>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 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>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>
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user