diff options
author | Greg Schafer <greg@linuxfromscratch.org> | 2003-09-27 03:38:15 +0000 |
---|---|---|
committer | Greg Schafer <greg@linuxfromscratch.org> | 2003-09-27 03:38:15 +0000 |
commit | 7e602eabe602030b09e5d299f8c7e5c2a751081b (patch) | |
tree | f54e772e160681a99c859ebe4e1f691aaa147e15 /chapter06 | |
parent | 72b845e68138e36852a54b46657f8db376c73e12 (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.xml | 3 | ||||
-rw-r--r-- | chapter06/binutils-inst.xml | 20 | ||||
-rw-r--r-- | chapter06/gcc-inst.xml | 8 | ||||
-rw-r--r-- | chapter06/glibc-inst.xml | 3 | ||||
-rw-r--r-- | chapter06/makedev-inst.xml | 22 | ||||
-rw-r--r-- | chapter06/mountproc.xml | 71 |
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> |