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 --- 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 ++++++++++++++++++++++------------------ 6 files changed, 84 insertions(+), 43 deletions(-) (limited to 'chapter06') 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. -- cgit v1.2.3-54-g00ecf