From 7e602eabe602030b09e5d299f8c7e5c2a751081b Mon Sep 17 00:00:00 2001 From: Greg Schafer Date: Sat, 27 Sep 2003 03:38:15 +0000 Subject: Chapter 6 - Clarify remaining PTY issues. git-svn-id: http://svn.linuxfromscratch.org/LFS/trunk/BOOK@2893 4aa44e1e-78dd-0310-a6d2-fbcd4c07a689 --- chapter05/gcc-pass2-inst.xml | 2 +- chapter05/lockingglibc.xml | 3 +- chapter06/adjustingtoolchain.xml | 3 +- chapter06/binutils-inst.xml | 20 +++++++++-- chapter06/gcc-inst.xml | 8 ++++- chapter06/glibc-inst.xml | 3 +- chapter06/makedev-inst.xml | 22 +++++++++---- chapter06/mountproc.xml | 71 ++++++++++++++++++++++------------------ index.xml | 4 +-- 9 files changed, 88 insertions(+), 48 deletions(-) diff --git a/chapter05/gcc-pass2-inst.xml b/chapter05/gcc-pass2-inst.xml index a22419cb0..e4f4febfb 100644 --- a/chapter05/gcc-pass2-inst.xml +++ b/chapter05/gcc-pass2-inst.xml @@ -16,7 +16,7 @@ simple test: If you receive the message: -The system has no more ptys. Ask your system administrator to create more. +
The system has no more ptys. Ask your system administrator to create more.
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 diff --git a/chapter05/lockingglibc.xml b/chapter05/lockingglibc.xml index 2851750a7..dbb5c2872 100644 --- a/chapter05/lockingglibc.xml +++ b/chapter05/lockingglibc.xml @@ -53,8 +53,7 @@ readelf -l a.out | grep ': /tools' If everything is working correctly, there should be no errors, and the output of the last command will be: -[Requesting program interpreter: /tools/lib/ld-linux.so.2] - +
[Requesting program interpreter: /tools/lib/ld-linux.so.2]
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/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' If everything is working correctly, there should be no errors, and the output of the last command will be: -[Requesting program interpreter: /lib/ld-linux.so.2] - +
[Requesting program interpreter: /lib/ld-linux.so.2]
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 @@ Installation of Binutils +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: + +expect -c "spawn ls" + +If you receive the message: + +
The system has no more ptys. Ask your system administrator to create more.
+ +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. + The test suite for Binutils in this section is considered -critical. Do not skip it under any circumstances. - +critical. Our advice is to not skip it under any +circumstances.
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 @@ Installation of GCC The test suite for GCC in this section is considered -critical. Do not skip it under any circumstances. +critical. Our advice is to not skip it under any +circumstances. 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 make +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. + Test the results, but don't stop at errors (you'll remember the few known ones): 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. The test suite for Glibc in this section is considered -critical. Do not skip it under any circumstances. +critical. Our advice is to not skip it under any +circumstances. Before starting to build Glibc, remember to unpack the Glibc-linuxthreads again inside the glibc-&glibc-version; 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 mknod program. Please refer to the man and info pages of mknod if you need more information. -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: - +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: mount -t devfs devfs /dev +This will mount the devfs file system over the top of the 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. + +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 /dev directory then run +./MAKEDEV -v pty. 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. + 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 @@ Mounting the proc and devpts file systems -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. +In order for certain programs to function properly, the +proc and devpts 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. -The proc file system is mounted under -/proc by running the -following command: +The proc file system is the process information +pseudo-filesystem that the kernel uses to provide status information about the +status of the system. -mount proc /proc -t proc - -The devpts file system is mounted to /dev/pts - by running: - -mount devpts /dev/pts -t devpts - - -Should this command fail with an error to the effect of: - -
filesystem devpts not supported by kernel
+The proc file system is mounted on +/proc by running the following +command: -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. +mount proc /proc -t proc You might get warning messages from the mount command, such as these: @@ -40,14 +29,34 @@ not enough memory 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. -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). +The devpts file system was mentioned earlier and is +now the most common way for pseudo terminals (PTYs) to be implemented. + +The devpts file system is mounted on +/dev/pts by running: + +mount devpts /dev/pts -t devpts + +Should this command fail with an error to the effect of: + +
filesystem devpts not supported by kernel
-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. +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 +cat /proc/filesystems. If for some reason, devpts is +listed there but the mount still doesn't work, check instead for a different +file system variety called devfs. 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 /dev 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. + +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. diff --git a/index.xml b/index.xml index 1123ac818..7fc1d9ee1 100644 --- a/index.xml +++ b/index.xml @@ -3,8 +3,8 @@ "/usr/share/docbook/docbookx.dtd" [ - - + + -- cgit v1.2.3-54-g00ecf