diff --git a/chapter06/chapter06.xml b/chapter06/chapter06.xml index 39dc0139a..a9ddc2a71 100644 --- a/chapter06/chapter06.xml +++ b/chapter06/chapter06.xml @@ -296,7 +296,7 @@ file records the bad login attempts. &c6-makedev; -&c6-kernel; +&c6-kernel-headers; &c6-manpages; &c6-glibc; diff --git a/chapter06/kernel-exp-headers.xml b/chapter06/kernel-headers.xml similarity index 59% rename from chapter06/kernel-exp-headers.xml rename to chapter06/kernel-headers.xml index 9829fe2c9..14d73d992 100644 --- a/chapter06/kernel-exp-headers.xml +++ b/chapter06/kernel-headers.xml @@ -1,7 +1,37 @@ + +Installing Linux-&kernel-version; headers + + +&buildtime; &kernel-time-headers; +&diskspace; &kernel-compsize-headers; +    -Why we copy the kernel headers and don't symlink them +Installation of the kernel headers + +We won't be compiling a new kernel yet -- we'll do that when we have +finished the installation of all the packages. But the libraries installed in +the next section need to refer to the kernel header files in order to know how +to interface with the kernel. Instead of unpacking the kernel sources again, +making the version file and the symlinks and so on, we will simply copy the +headers from the temporary tools directory in one swoop: + +cp -a /tools/include/{asm,asm-generic,linux} /usr/include + +A few kernel header files refer to the autoconf.h +header file. Since we have not yet configured the kernel, we need to create +this file ourselves in order to avoid a compilation failure of Sysklogd. +Create an empty autoconf.h file with: + +touch /usr/include/linux/autoconf.h + + + +   + + +Why we copy the kernel headers In the past it was common practice to symlink the /usr/include/{linux,asm} directories @@ -40,3 +70,5 @@ symlinks. + + diff --git a/chapter06/kernel.xml b/chapter06/kernel.xml deleted file mode 100644 index b90356b67..000000000 --- a/chapter06/kernel.xml +++ /dev/null @@ -1,70 +0,0 @@ - -Installing Linux-&kernel-version; headers - - -&buildtime; &kernel-time-headers; -&diskspace; &kernel-compsize-headers; - -   - - -Installation of the kernel headers - -We won't be compiling a new kernel yet -- we'll do that when we have -finished the installation of all the packages. But as some packages need the -kernel header files, we're going to unpack the kernel archive now, set it up -and copy the header files so they can be found by these packages. - -It is important to note that the files in the kernel source directory -are not owned by root. Whenever you unpack a package as -user root (like we do here inside chroot), the files end -up having the user and group IDs of whatever they were on the packager's -computer. This is usually not a -problem for any other package you install because you remove the source -tree after the installation. But the Linux kernel source tree is often kept -around for a long time, so there's a chance that whatever user ID the packager -used will be assigned to somebody on your machine and then that person would -have write access to the kernel source. - -In light of this, you might want to run chown -R 0:0 -on the linux-&kernel-version; directory -to ensure all files are owned by user root. - -Prepare for header installation: - -make mrproper - -This ensures that the kernel tree is absolutely clean. The kernel team -recommends that this command be issued prior to each kernel -compilation. You shouldn't rely on the source tree being clean after -untarring. - -Create the include/linux/version.h file: - -make include/linux/version.h - -Create the platform-specific include/asm -symlink: - -make symlinks - -Install the platform specific-header files: - -cp -HR include/asm /usr/include -cp -R include/asm-generic /usr/include - -Install the cross-platform kernel header files: - -cp -R include/linux /usr/include - -There are a few kernel header files which make use of the -autoconf.h header file. Since we do not yet configure the -kernel, we need to create this file ourselves in order to avoid compilation -failures. Create an empty autoconf.h file: - -touch /usr/include/linux/autoconf.h - - -&c6-kernel-exp-headers; - - diff --git a/chapter08/kernel-inst.xml b/chapter08/kernel-inst.xml deleted file mode 100644 index 667f2dc28..000000000 --- a/chapter08/kernel-inst.xml +++ /dev/null @@ -1,97 +0,0 @@ -   - - -Installation of the kernel - -Building the kernel involves a few steps: configuration, -compilation, and installation. If you don't like the way this -book configures the kernel, view the README -file in the kernel source tree for alternative methods. - -Prepare for compilation by running the following command: - -make mrproper - -This ensures that the kernel tree is absolutely clean. The kernel -team recommends that this command be issued prior to -each kernel compilation. You shouldn't rely -on the source tree being clean after untarring. - -Configure the kernel via a menu-driven interface: - -make menuconfig - -make oldconfig may be more appropriate -in some situations. See the README file for -more information. - -If you wish, you may skip kernel configuration by simply copying the -kernel config file, .config, from your host system -(assuming it is available) to the unpacked -linux-&kernel-version; directory. -However, we don't recommend this option. You're much better off exploring all -the configuration menus and creating your own kernel configuration from -scratch. - -For POSIX shared memory support, ensure that the kernel config option -"Virtual memory file system support" is enabled. It resides within the -"File systems" menu and is normally enabled by default. - -Verify dependencies and create dependency information files: - -make CC=/opt/gcc-2.95.3/bin/gcc dep - -Compile the kernel image: - -make CC=/opt/gcc-2.95.3/bin/gcc bzImage - -Compile the drivers which have been configured as modules: - -make CC=/opt/gcc-2.95.3/bin/gcc modules - -If you intend to use kernel modules, you will need an -/etc/modules.conf file. Information pertaining -to modules and to kernel configuration in general may be found in the -kernel documentation, which is found in the -linux-&kernel-version;/Documentation directory. The -modules.conf man page and the kernel HOWTO at - may also be of -interest to you. - -Install the modules: - -make CC=/opt/gcc-2.95.3/bin/gcc modules_install - -As nothing is complete without documentation, build the manual pages -that come with the kernel: - -make mandocs - -And install these pages: - -cp -a Documentation/man /usr/share/man/man9 - -Kernel compilation has finished but more steps are required to complete -the installation. Some files need to be copied to the /boot -directory. - -The path to the kernel image may vary depending on the platform -you're using. Issue the following command to install the kernel: - -cp arch/i386/boot/bzImage /boot/lfskernel - -System.map is a symbol file for the kernel. -It maps the function entrypoints of every function in the kernel API, -as well as the addresses of the kernel data structures for the running -kernel. Issue the following command to install the map file: - -cp System.map /boot - -.config is the kernel configuration file that was -produced by the make menuconfig step above. It contains -all the config selections for the kernel that was just compiled. It's a good -idea to keep this file for future reference: - -cp .config /boot/config-lfskernel - - diff --git a/chapter08/kernel.xml b/chapter08/kernel.xml index 007827c13..87d533864 100644 --- a/chapter08/kernel.xml +++ b/chapter08/kernel.xml @@ -10,7 +10,118 @@ Estimated required disk space: &kernel-compsize; &aa-kernel-down; &aa-kernel-dep; -&c8-kernel-inst; +   + + +Installation of the kernel + +Building the kernel involves a few steps: configuration, compilation, and +installation. If you don't like the way this book configures the kernel, view +the README file in the kernel source tree for alternative +methods. + +Prepare for compilation by running the following command: + +make mrproper + +This ensures that the kernel tree is absolutely clean. The kernel team +recommends that this command be issued prior to each +kernel compilation. You shouldn't rely on the source tree being clean after +untarring. + +Configure the kernel via a menu-driven interface: + +make menuconfig + +make oldconfig may be more appropriate in some +situations. See the README file for more +information. + +If you wish, you may skip kernel configuration by simply copying the +kernel config file, .config, from your host system +(assuming it is available) to the unpacked linux-&kernel-version; directory. However, we +don't recommend this option. You're much better off exploring all the +configuration menus and creating your own kernel configuration from +scratch. + +For POSIX shared memory support, ensure that the kernel config option +"Virtual memory file system support" is enabled. It resides within the +"File systems" menu and is normally enabled by default. + +Verify dependencies and create dependency information files: + +make CC=/opt/gcc-2.95.3/bin/gcc dep + +Compile the kernel image: + +make CC=/opt/gcc-2.95.3/bin/gcc bzImage + +Compile the drivers which have been configured as modules: + +make CC=/opt/gcc-2.95.3/bin/gcc modules + +If you intend to use kernel modules, you will need an +/etc/modules.conf file. Information pertaining +to modules and to kernel configuration in general may be found in the +kernel documentation, which is found in the +linux-&kernel-version;/Documentation directory. The +modules.conf man page and the kernel HOWTO at + may also be of +interest to you. + +Install the modules: + +make CC=/opt/gcc-2.95.3/bin/gcc modules_install + +As nothing is complete without documentation, build the manual pages +that come with the kernel: + +make mandocs + +And install these pages: + +cp -a Documentation/man /usr/share/man/man9 + +Kernel compilation has finished but more steps are required to complete +the installation. Some files need to be copied to the /boot +directory. + +The path to the kernel image may vary depending on the platform you're +using. Issue the following command to install the kernel: + +cp arch/i386/boot/bzImage /boot/lfskernel + +System.map is a symbol file for the kernel. It maps +the function entrypoints of every function in the kernel API, as well as the +addresses of the kernel data structures for the running kernel. Issue the +following command to install the map file: + +cp System.map /boot + +.config is the kernel configuration file that was +produced by the make menuconfig step above. It contains all +the config selections for the kernel that was just compiled. It's a good idea +to keep this file for future reference: + +cp .config /boot/config-lfskernel + +It is important to note that the files in the kernel source directory are +not owned by root. Whenever you unpack a package as user +root (like we did here inside chroot), the files end up +having the user and group IDs of whatever they were on the packager's computer. +This is usually not a problem for any other package you install because you +remove the source tree after the installation. But the Linux source tree is +often kept around for a long time, so there's a chance that whatever user ID +the packager used will be assigned to somebody on your machine and then that +person would have write access to the kernel source. + +If you are going to keep the kernel source tree around, you may want to +run chown -R 0:0 on the +linux-&kernel-version; directory to ensure all files are +owned by user root. + + &aa-kernel-shortdesc; &aa-kernel-desc; diff --git a/entities/kernel.ent b/entities/kernel.ent index b8bb9a62b..6d40aa38f 100644 --- a/entities/kernel.ent +++ b/entities/kernel.ent @@ -1,12 +1,9 @@ - - - + -