diff options
-rw-r--r-- | chapter02/hostreqs.xml | 10 | ||||
-rw-r--r-- | chapter08/binutils.xml | 23 | ||||
-rw-r--r-- | chapter08/expect.xml | 17 | ||||
-rw-r--r-- | chapter10/kernel.xml | 43 |
4 files changed, 63 insertions, 30 deletions
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 <xref linkend="chapter-bootable"/>.</para> + <para>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 <option>CONFIG_UNIX98_PTYS</option> is set to + <literal>y</literal> in the kernel configuration.</para> + </listitem> <listitem> @@ -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 @@ <sect2 role="installation"> <title>Installation of Binutils</title> - <para>Verify that the PTYs are working properly inside the chroot - environment by performing a simple test:</para> - -<screen><userinput remap="test">expect -c "spawn ls"</userinput></screen> - - <para>This command should output the following:</para> - -<screen><computeroutput>spawn ls</computeroutput></screen> - - <para>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:</para> - -<screen><computeroutput>The system has no more ptys. -Ask your system administrator to create more.</computeroutput></screen> -<!-- Fixed in binutils-2.39 - <para> - Now make a fix identified upstream that affects building some packages: - </para> - -<screen><userinput remap="pre">sed -e '/R_386_TLS_LE /i \ || (TYPE) == R_386_TLS_IE \\' \ - -i ./bfd/elfxx-x86.h</userinput></screen> ---> <para>The Binutils documentation recommends building Binutils in a dedicated build directory:</para> 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 @@ <screen><userinput remap="make">make</userinput></screen> + <important> + <para>The test suite for Expect is considered critical. + Do not skip it under any circumstances.</para> + </important> + <para>To test the results, issue:</para> <screen><userinput remap="test">make test</userinput></screen> + <para>If any test fails with the message + <quote><computeroutput>The system has no more ptys. Ask your system + administrator to create more</computeroutput></quote>, it indicates + you've not mounted the + <systemitem class="filesystem">devpts</systemitem> file system + correctly. You need to exit from the chroot environment, read + <xref linkend='ch-tools-kernfs'/> again, and ensure the + <systemitem class="filesystem">devpts</systemitem> file system (and + other virtual kernel file systems) mounted correctly. Then reenter + the chroot environment following <xref linkend='ch-tools-chroot'/>. + This issue needs to be resolved before continuing.</para> + <para>Install the package:</para> <screen><userinput remap="install">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 <ulink url="http://www.kroah.com/lkn/"/> </para> - <note> + <caution> <para>A good starting place for setting up the kernel configuration is to - run <command>make defconfig</command>. This will set the base - configuration to a good state that takes your current system architecture - into account.</para> + run <command>make localmodconfig</command>. 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 <command>make + localyesconfig</command>, which does the same except everything is built + into the kernel.</para> + + <para>Do not disable any option enabled by <command>make + localmodconfig</command> unless the following notes explicitly make it + disabled or you really know what you are doing.</para> + </caution> + + <note> + <para>Another possibility is to run <command>make defconfig</command>, + 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.</para> + </note> + <note> <para>Be sure to enable/disable/set the following features or the system might not work correctly or boot at all:</para> @@ -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] @@ -237,6 +253,19 @@ Device Drivers ---> </varlistentry> <varlistentry> + <term> + <parameter> + Configure standard kernel features (expert users) + </parameter> + </term> + <listitem> + <para>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.</para> + </listitem> + </varlistentry> + + <varlistentry> <term><parameter>Strong Stack Protector</parameter></term> <listitem> <para>Enable SSP for the kernel. We've enabled it for the entire @@ -293,7 +322,7 @@ Device Drivers ---> <para>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.</para> </listitem> |