diff --git a/chapter02/hostreqs.xml b/chapter02/hostreqs.xml
index 801a7e992..192eed8c1 100644
--- a/chapter02/hostreqs.xml
+++ b/chapter02/hostreqs.xml
@@ -105,6 +105,12 @@
compiling the kernel and configuring the boot loader (assuming the host
uses GRUB) are located in .
+ We require the host kernel to support UNIX 98 pseudo terminal
+ (PTY). It should be enabled on all desktop or server distros shipping
+ Linux &min-kernel; or a newer kernel. If you are building a custom
+ host kernel, ensure is set to
+ y in the kernel configuration.
+
@@ -230,6 +236,10 @@ ver_check Texinfo texi2any 4.7
ver_check Xz xz 5.0.0
ver_kernel &min-kernel;
+if mount | grep -q 'devpts on /dev/pts' && [ -e /dev/ptmx ]
+then echo "OK: Linux Kernel supports UNIX 98 PTY";
+else echo "ERROR: Linux Kernel does NOT support UNIX 98 PTY"; fi
+
alias_check() {
if $1 --version 2>&1 | grep -qi $2
then printf "OK: %-4s is $2\n" "$1";
diff --git a/chapter08/binutils.xml b/chapter08/binutils.xml
index eb83563bb..cf1c4f895 100644
--- a/chapter08/binutils.xml
+++ b/chapter08/binutils.xml
@@ -41,29 +41,6 @@
Installation of Binutils
- Verify that the PTYs are working properly inside the chroot
- environment by performing a simple test:
-
-expect -c "spawn ls"
-
- This command should output the following:
-
-spawn ls
-
- If, instead, the output includes the message below, then the environment
- is not set up for proper PTY operation. This issue needs to be resolved before
- running the test suites for Binutils and GCC:
-
-The system has no more ptys.
-Ask your system administrator to create more.
-
The Binutils documentation recommends building Binutils
in a dedicated build directory:
diff --git a/chapter08/expect.xml b/chapter08/expect.xml
index 6286d9033..7b6dac354 100644
--- a/chapter08/expect.xml
+++ b/chapter08/expect.xml
@@ -82,10 +82,27 @@
make
+
+ The test suite for Expect is considered critical.
+ Do not skip it under any circumstances.
+
+
To test the results, issue:make test
+ If any test fails with the message
+ The system has no more ptys. Ask your system
+ administrator to create more, it indicates
+ you've not mounted the
+ devpts file system
+ correctly. You need to exit from the chroot environment, read
+ again, and ensure the
+ devpts file system (and
+ other virtual kernel file systems) mounted correctly. Then reenter
+ the chroot environment following .
+ This issue needs to be resolved before continuing.
+
Install the package:make install
diff --git a/chapter10/kernel.xml b/chapter10/kernel.xml
index e7bcfdb87..023aa32b9 100644
--- a/chapter10/kernel.xml
+++ b/chapter10/kernel.xml
@@ -96,12 +96,28 @@
information about configuring and building the kernel can be found at
-
+ A good starting place for setting up the kernel configuration is to
- run make defconfig. This will set the base
- configuration to a good state that takes your current system architecture
- into account.
+ run make localmodconfig. If the host kernel version
+ is not too different from the version of the kernel you are building,
+ this will set the base configuration to a good state similar to what
+ the host uses. Another possibility is to use make
+ localyesconfig, which does the same except everything is built
+ into the kernel.
+ Do not disable any option enabled by make
+ localmodconfig unless the following notes explicitly make it
+ disabled or you really know what you are doing.
+
+
+
+ Another possibility is to run make defconfig,
+ which creates a more generic configuration for your architecture. You
+ may then have to disable drivers for hardware you do not have if
+ you want to reduce the kernel size.
+
+
+ Be sure to enable/disable/set the following features or the system might
not work correctly or boot at all:
@@ -111,6 +127,7 @@
General setup --->
[ ] Compile the kernel with warnings as errors [CONFIG_WERROR]
< > Enable kernel headers through /sys/kernel/kheaders.tar.xz [CONFIG_IKHEADERS]
+ [ ] Configure standard kernel features (expert users) [CONFIG_EXPERT]
General architecture-dependent options --->
[*] Stack Protector buffer overflow detection [CONFIG_STACKPROTECTOR]
[*] Strong Stack Protector [CONFIG_STACKPROTECTOR_STRONG]
@@ -137,8 +154,7 @@ General setup --->
[*] Control Group support [CONFIG_CGROUPS] --->
[*] Memory controller [CONFIG_MEMCG]
[ ] Enable deprecated sysfs features to support old userspace tools [CONFIG_SYSFS_DEPRECATED]
- [*] Configure standard kernel features (expert users) [CONFIG_EXPERT] --->
- [*] open by fhandle syscalls [CONFIG_FHANDLE]
+ [ ] Configure standard kernel features (expert users) [CONFIG_EXPERT]
General architecture-dependent options --->
[*] Enable seccomp to safely compute untrusted bytecode [CONFIG_SECCOMP]
[*] Stack Protector buffer overflow detection [CONFIG_STACKPROTECTOR]
@@ -236,6 +252,19 @@ Device Drivers --->
+
+
+
+ Configure standard kernel features (expert users)
+
+
+
+ This will make some options show up in the configuration
+ interface but changing those options may be dangerous. Do not use
+ this unless you know what you are doing.
+
+
+
Strong Stack Protector
@@ -293,7 +322,7 @@ Device Drivers --->
Support running the interrupt controller of 64-bit x86
processors in x2APIC mode. x2APIC may be enabled by firmware on
64-bit x86 systems, and a kernel without this option enabled will
- panic on boot if x2APIC is enabled by firmware. This option has
+ panic on boot if x2APIC is enabled by firmware. This option
has no effect, but also does no harm if x2APIC is disabled by the
firmware.