commit b6879a569b05dbf93b979615d44d36bfb2764017 Author: Baho Utot Date: Fri May 24 08:27:40 2019 -0400 2019-05-24 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..200274b --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +github-*.sh diff --git a/BOOK/LFS-BOOK-8.4-NOCHUNKS.html b/BOOK/LFS-BOOK-8.4-NOCHUNKS.html new file mode 100644 index 0000000..83ff367 --- /dev/null +++ b/BOOK/LFS-BOOK-8.4-NOCHUNKS.html @@ -0,0 +1,53562 @@ + + + + + + Linux From Scratch + + + + + +
+
+
+
+

+ Linux + From Scratch +

+
+
+

+ Version 8.4 +

+
+
+
+
+

+ Created by Gerard + Beekmans +

+
+
+

+ Managing Editor: Bruce + Dubbs +

+
+
+
+
+ +
+
+
+ +

+ Copyright © 1999-2019, Gerard Beekmans +

+

+ All rights reserved. +

+

+ This book is licensed under a Creative Commons + License. +

+

+ Computer instructions may be extracted from the book under + the MIT License. +

+

+ Linux® is a registered + trademark of Linus Torvalds. +

+
+
+
+
+
+
+

+ Table of Contents +

+ +
+
+
+
+
+

+ Preface +

+
+
+
+
+
+
+
+

+ Foreword +

+
+
+
+

+ My journey to learn and better understand Linux began back in + 1998. I had just installed my first Linux distribution and had + quickly become intrigued with the whole concept and philosophy + behind Linux. +

+

+ There are always many ways to accomplish a single task. The same + can be said about Linux distributions. A great many have existed + over the years. Some still exist, some have morphed into + something else, yet others have been relegated to our memories. + They all do things differently to suit the needs of their target + audience. Because so many different ways to accomplish the same + end goal exist, I began to realize I no longer had to be limited + by any one implementation. Prior to discovering Linux, we simply + put up with issues in other Operating Systems as you had no + choice. It was what it was, whether you liked it or not. With + Linux, the concept of choice began to emerge. If you didn't like + something, you were free, even encouraged, to change it. +

+

+ I tried a number of distributions and could not decide on any + one. They were great systems in their own right. It wasn't a + matter of right and wrong anymore. It had become a matter of + personal taste. With all that choice available, it became + apparent that there would not be a single system that would be + perfect for me. So I set out to create my own Linux system that + would fully conform to my personal preferences. +

+

+ To truly make it my own system, I resolved to compile everything + from source code instead of using pre-compiled binary packages. + This perfect Linux system would have the + strengths of various systems without their perceived weaknesses. + At first, the idea was rather daunting. I remained committed to + the idea that such a system could be built. +

+

+ After sorting through issues such as circular dependencies and + compile-time errors, I finally built a custom-built Linux system. + It was fully operational and perfectly usable like any of the + other Linux systems out there at the time. But it was my own + creation. It was very satisfying to have put together such a + system myself. The only thing better would have been to create + each piece of software myself. This was the next best thing. +

+

+ As I shared my goals and experiences with other members of the + Linux community, it became apparent that there was a sustained + interest in these ideas. It quickly became plain that such + custom-built Linux systems serve not only to meet user specific + requirements, but also serve as an ideal learning opportunity for + programmers and system administrators to enhance their (existing) + Linux skills. Out of this broadened interest, the Linux From Scratch Project was born. +

+

+ This Linux From Scratch book is the central core around that + project. It provides the background and instructions necessary + for you to design and build your own system. While this book + provides a template that will result in a correctly working + system, you are free to alter the instructions to suit yourself, + which is, in part, an important part of this project. You remain + in control; we just lend a helping hand to get you started on + your own journey. +

+

+ I sincerely hope you will have a great time working on your own + Linux From Scratch system and enjoy the numerous benefits of + having a system that is truly your own. +

+
+

+ --
+ Gerard Beekmans
+ gerard AT linuxfromscratch D0T org +

+
+
+
+
+
+
+

+ Audience +

+
+
+
+

+ There are many reasons why you would want to read this book. One + of the questions many people raise is, why go through all the hassle + of manually building a Linux system from scratch when you can + just download and install an existing one? +

+

+ One important reason for this project's existence is to help you + learn how a Linux system works from the inside out. Building an + LFS system helps demonstrate what makes Linux tick, and how + things work together and depend on each other. One of the best + things that this learning experience can provide is the ability + to customize a Linux system to suit your own unique needs. +

+

+ Another key benefit of LFS is that it allows you to have more + control over the system without relying on someone else's Linux + implementation. With LFS, you are in the driver's seat and + dictate every aspect of the system. +

+

+ LFS allows you to create very compact Linux systems. When + installing regular distributions, you are often forced to install + a great many programs which are probably never used or + understood. These programs waste resources. You may argue that + with today's hard drive and CPUs, such resources are no longer a + consideration. Sometimes, however, you are still constrained by + size considerations if nothing else. Think about bootable CDs, + USB sticks, and embedded systems. Those are areas where LFS can + be beneficial. +

+

+ Another advantage of a custom built Linux system is security. By + compiling the entire system from source code, you are empowered + to audit everything and apply all the security patches desired. + It is no longer necessary to wait for somebody else to compile + binary packages that fix a security hole. Unless you examine the + patch and implement it yourself, you have no guarantee that the + new binary package was built correctly and adequately fixes the + problem. +

+

+ The goal of Linux From Scratch is to build a complete and usable + foundation-level system. If you do not wish to build your own + Linux system from scratch, you may nevertheless benefit from the + information in this book. +

+

+ There are too many other good reasons to build your own LFS + system to list them all here. In the end, education is by far the + most powerful of reasons. As you continue in your LFS experience, + you will discover the power that information and knowledge truly + bring. +

+
+
+
+
+
+

+ LFS + Target Architectures +

+
+
+
+

+ The primary target architectures of LFS are the AMD/Intel x86 + (32-bit) and x86_64 (64-bit) CPUs. On the other hand, the + instructions in this book are also known to work, with some + modifications, with the Power PC and ARM CPUs. To build a system + that utilizes one of these CPUs, the main prerequisite, in + addition to those on the next few pages, is an existing Linux + system such as an earlier LFS installation, Ubuntu, Red + Hat/Fedora, SuSE, or other distribution that targets the + architecture that you have. Also note that a 32-bit distribution + can be installed and used as a host system on a 64-bit AMD/Intel + computer. +

+

+ Some other facts about 64-bit systems need to be added here. When + compared to a 32-bit system, the sizes of executable programs are + slightly larger and the execution speeds of arbitrary programs + are only slightly faster. For example, in a test build of LFS-6.5 + on a Core2Duo CPU based system, the following statistics were + measured: +

+
+Architecture Build Time     Build Size
+32-bit       198.5 minutes  648 MB
+64-bit       190.6 minutes  709 MB
+
+

+ As you can see, the 64-bit build is only 4% faster and is 9% + larger than the 32-bit build. The gain from going to a 64-bit + system is relatively minimal. Of course, if you have more than + 4GB of RAM or want to manipulate data that exceeds 4GB, the + advantages of a 64-bit system are substantial. +

+
+

+ Note +

+

+ The above discussion is only appropriate when comparing builds + on the same hardware. Modern 64-bit systems are considerably + faster than older 64-bit systems and the LFS authors recommend + building on a 64-bit system when given a choice. +

+
+

+ The default 64-bit build that results from LFS is considered a + "pure" 64-bit system. That is, it supports 64-bit executables + only. Building a "multi-lib" system requires compiling many + applications twice, once for a 32-bit system and once for a + 64-bit system. This is not directly supported in LFS because it + would interfere with the educational objective of providing the + instructions needed for a straightforward base Linux system. You + can refer to the Cross Linux From Scratch project for + this advanced topic. +

+
+
+
+
+
+

+ LFS and + Standards +

+
+
+
+

+ The structure of LFS follows Linux standards as closely as + possible. The primary standards are: +

+
+
    +
  • +

    + POSIX.1-2008. +

    +
  • +
  • +

    + + Filesystem Hierarchy Standard (FHS) Version 3.0 +

    +
  • +
  • +

    + Linux + Standard Base (LSB) Version 5.0 (2015) +

    +

    + The LSB has four separate standards: Core, Desktop, Runtime + Languages, and Imaging. In addition to generic requirements + there are also architecture specific requirements. There + are also two areas for trial use: Gtk3 and Graphics. LFS + attempts to conform to the architectures discussed in the + previous section. +

    +
    +

    + Note +

    +

    + Many people do not agree with the requirements of the + LSB. The main purpose of defining it is to ensure that + proprietary software will be able to be installed and run + properly on a compliant system. Since LFS is source + based, the user has complete control over what packages + are desired and many choose not to install some packages + that are specified by the LSB. +

    +
    +
  • +
+
+

+ Creating a complete LFS system capable of passing the LSB + certifications tests is possible, but not without many additional + packages that are beyond the scope of LFS. These additional + packages have installation instructions in BLFS. +

+
+

+ Packages + supplied by LFS needed to satisfy the LSB Requirements +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ LSB + Core: +

+
+

+ Bash, Bc, Binutils, Coreutils, Diffutils, File, + Findutils, Gawk, Grep, Gzip, M4, Man-DB, Ncurses, + Procps, Psmisc, Sed, Shadow, Tar, Util-linux, Zlib +

+
+

+ LSB + Desktop: +

+
+

+ None +

+
+

+ LSB + Runtime Languages: +

+
+

+ Perl +

+
+

+ LSB + Imaging: +

+
+

+ None +

+
+

+ LSB Gtk3 + and LSB Graphics (Trial Use): +

+
+

+ None +

+
+
+
+

+ Packages + supplied by BLFS needed to satisfy the LSB Requirements +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ LSB + Core: +

+
+

+ At, Batch (a part of At), Cpio, Ed, Fcrontab, + Initd-tools, Lsb_release, NSPR, NSS, PAM, Pax, Sendmail + (or Postfix or Exim), time +

+
+

+ LSB + Desktop: +

+
+

+ Alsa, ATK, Cairo, Desktop-file-utils, Freetype, + Fontconfig, Gdk-pixbuf, Glib2, GTK+2, + Icon-naming-utils, Libjpeg-turbo, Libpng, Libtiff, + Libxml2, MesaLib, Pango, Xdg-utils, Xorg +

+
+

+ LSB + Runtime Languages: +

+
+

+ Python, Libxml2, Libxslt +

+
+

+ LSB + Imaging: +

+
+

+ CUPS, Cups-filters, Ghostscript, SANE +

+
+

+ LSB Gtk3 + and LSB Graphics (Trial Use): +

+
+

+ GTK+3 +

+
+
+
+

+ Packages + not supplied by LFS or BLFS needed to satisfy the LSB + Requirements +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ LSB + Core: +

+
+

+ None +

+
+

+ LSB + Desktop: +

+
+

+ Qt4 (but Qt5 is provided) +

+
+

+ LSB + Runtime Languages: +

+
+

+ None +

+
+

+ LSB + Imaging: +

+
+

+ None +

+
+

+ LSB Gtk3 + and LSB Graphics (Trial Use): +

+
+

+ None +

+
+
+
+
+
+
+
+

+ Rationale for Packages + in the Book +

+
+
+
+

+ As stated earlier, the goal of LFS is to build a complete and + usable foundation-level system. This includes all packages needed + to replicate itself while providing a relatively minimal base + from which to customize a more complete system based on the + choices of the user. This does not mean that LFS is the smallest + system possible. Several important packages are included that are + not strictly required. The lists below document the rationale for + each package in the book. +

+
+
    +
  • +

    + Acl +

    +

    + This package contains utilities to administer Access + Control Lists, which are used to define more fine-grained + discretionary access rights for files and directories. +

    +
  • +
  • +

    + Attr +

    +

    + This package contains programs for administering extended + attributes on filesystem objects. +

    +
  • +
  • +

    + Autoconf +

    +

    + This package contains programs for producing shell scripts + that can automatically configure source code from a + developer's template. It is often needed to rebuild a + package after updates to the build procedures. +

    +
  • +
  • +

    + Automake +

    +

    + This package contains programs for generating Make files + from a template. It is often needed to rebuild a package + after updates to the build procedures. +

    +
  • +
  • +

    + Bash +

    +

    + This package satisfies an LSB core requirement to provide a + Bourne Shell interface to the system. It was chosen over + other shell packages because of its common usage and + extensive capabilities beyond basic shell functions. +

    +
  • +
  • +

    + Bc +

    +

    + This package provides an arbitrary precision numeric + processing language. It satisfies a requirement needed when + building the Linux kernel. +

    +
  • +
  • +

    + Binutils +

    +

    + This package contains a linker, an assembler, and other + tools for handling object files. The programs in this + package are needed to compile most of the packages in an + LFS system and beyond. +

    +
  • +
  • +

    + Bison +

    +

    + This package contains the GNU version of yacc (Yet Another + Compiler Compiler) needed to build several other LFS + programs. +

    +
  • +
  • +

    + Bzip2 +

    +

    + This package contains programs for compressing and + decompressing files. It is required to decompress many LFS + packages. +

    +
  • +
  • +

    + Check +

    +

    + This package contains a test harness for other programs. It + is only installed in the temporary toolchain. +

    +
  • +
  • +

    + Coreutils +

    +

    + This package contains a number of essential programs for + viewing and manipulating files and directories. These + programs are needed for command line file management, and + are necessary for the installation procedures of every + package in LFS. +

    +
  • +
  • +

    + DejaGNU +

    +

    + This package contains a framework for testing other + programs. It is only installed in the temporary toolchain. +

    +
  • +
  • +

    + Diffutils +

    +

    + This package contains programs that show the differences + between files or directories. These programs can be used to + create patches, and are also used in many packages' build + procedures. +

    +
  • +
  • +

    + E2fsprogs +

    +

    + This package contains the utilities for handling the ext2, + ext3 and ext4 file systems. These are the most common and + thoroughly tested file systems that Linux supports. +

    +
  • +
  • +

    + Eudev +

    +

    + This package is a device manager. It dynamically controls + the entries in the /dev directory as devices are added or + removed from the system. +

    +
  • +
  • +

    + Expat +

    +

    + This package contains a relatively small XML parsing + library. It is required by the XML::Parser Perl module. +

    +
  • +
  • +

    + Expect +

    +

    + This package contains a program for carrying out scripted + dialogues with other interactive programs. It is commonly + used for testing other packages. It is only installed in + the temporary toolchain. +

    +
  • +
  • +

    + File +

    +

    + This package contains a utility for determining the type of + a given file or files. A few packages need it to build. +

    +
  • +
  • +

    + Findutils +

    +

    + This package contains programs to find files in a file + system. It is used in many packages' build scripts. +

    +
  • +
  • +

    + Flex +

    +

    + This package contains a utility for generating programs + that recognize patterns in text. It is the GNU version of + the lex (lexical analyzer) program. It is required to build + several LFS packages. +

    +
  • +
  • +

    + Gawk +

    +

    + This package contains programs for manipulating text files. + It is the GNU version of awk (Aho-Weinberg-Kernighan). It + is used in many other packages' build scripts. +

    +
  • +
  • +

    + Gcc +

    +

    + This package is the Gnu Compiler Collection. It contains + the C and C++ compilers as well as several others not built + by LFS. +

    +
  • +
  • +

    + GDBM +

    +

    + This package contains the GNU Database Manager library. It + is used by one other LFS package, Man-DB. +

    +
  • +
  • +

    + Gettext +

    +

    + This package contains utilities and libraries for + internationalization and localization of numerous packages. +

    +
  • +
  • +

    + Glibc +

    +

    + This package contains the main C library. Linux programs + would not run without it. +

    +
  • +
  • +

    + GMP +

    +

    + This package contains math libraries that provide useful + functions for arbitrary precision arithmetic. It is + required to build Gcc. +

    +
  • +
  • +

    + Gperf +

    +

    + This package contains a program that generates a perfect + hash function from a key set. It is required for Eudev. +

    +
  • +
  • +

    + Grep +

    +

    + This package contains programs for searching through files. + These programs are used by most packages' build scripts. +

    +
  • +
  • +

    + Groff +

    +

    + This package contains programs for processing and + formatting text. One important function of these programs + is to format man pages. +

    +
  • +
  • +

    + GRUB +

    +

    + This package is the Grand Unified Boot Loader. It is one of + several boot loaders available, but is the most flexible. +

    +
  • +
  • +

    + Gzip +

    +

    + This package contains programs for compressing and + decompressing files. It is needed to decompress many + packages in LFS and beyond. +

    +
  • +
  • +

    + Iana-etc +

    +

    + This package provides data for network services and + protocols. It is needed to enable proper networking + capabilities. +

    +
  • +
  • +

    + Inetutils +

    +

    + This package contains programs for basic network + administration. +

    +
  • +
  • +

    + Intltool +

    +

    + This package contains tools for extracting translatable + strings from source files. +

    +
  • +
  • +

    + IProute2 +

    +

    + This package contains programs for basic and advanced IPv4 + and IPv6 networking. It was chosen over the other common + network tools package (net-tools) for its IPv6 + capabilities. +

    +
  • +
  • +

    + Kbd +

    +

    + This package contains key-table files, keyboard utilities + for non-US keyboards, and a number of console fonts. +

    +
  • +
  • +

    + Kmod +

    +

    + This package contains programs needed to administer Linux + kernel modules. +

    +
  • +
  • +

    + Less +

    +

    + This package contains a very nice text file viewer that + allows scrolling up or down when viewing a file. It is also + used by Man-DB for viewing manpages. +

    +
  • +
  • +

    + Libcap +

    +

    + This package implements the user-space interfaces to the + POSIX 1003.1e capabilities available in Linux kernels. +

    +
  • +
  • +

    + Libelf +

    +

    + The elfutils project provides libraries and tools for ELF + files and DWARF data. Most utilities in this package are + available in other packages, but the library is needed to + build the Linux kernel using the default (and most + efficient) configuration. +

    +
  • +
  • +

    + Libffi +

    +

    + This package implements a portable, high level programming + interface to various calling conventions. Some programs may + not know at the time of compilation what arguments are to + be passed to a function. For instance, an interpreter may + be told at run-time about the number and types of arguments + used to call a given function. Libffi can be used in such + programs to provide a bridge from the interpreter program + to compiled code. +

    +
  • +
  • +

    + Libpipeline +

    +

    + The Libpipeline package contains a library for manipulating + pipelines of subprocesses in a flexible and convenient way. + It is required by the Man-DB package. +

    +
  • +
  • +

    + Libtool +

    +

    + This package contains the GNU generic library support + script. It wraps the complexity of using shared libraries + in a consistent, portable interface. It is needed by the + test suites in other LFS packages. +

    +
  • +
  • +

    + Linux Kernel +

    +

    + This package is the Operating System. It is the Linux in + the GNU/Linux environment. +

    +
  • +
  • +

    + M4 +

    +

    + This package contains a general text macro processor useful + as a build tool for other programs. +

    +
  • +
  • +

    + Make +

    +

    + This package contains a program for directing the building + of packages. It is required by almost every package in LFS. +

    +
  • +
  • +

    + Man-DB +

    +

    + This package contains programs for finding and viewing man + pages. It was chosen instead of the man package due to superior + internationalization capabilities. It supplies the man + program. +

    +
  • +
  • +

    + Man-pages +

    +

    + This package contains the actual contents of the basic + Linux man pages. +

    +
  • +
  • +

    + Meson +

    +

    + This package provides a software tool for automating the + building of software. The main goal for Meson is to + minimize the amount of time that software developers need + to spend configuring their build system. +

    +
  • +
  • +

    + MPC +

    +

    + This package contains functions for the arithmetic of + complex numbers. It is required by Gcc. +

    +
  • +
  • +

    + MPFR +

    +

    + This package contains functions for multiple precision + arithmetic. It is required by Gcc. +

    +
  • +
  • +

    + Ninja +

    +

    + This package contains a small build system with a focus on + speed. It is designed to have its input files generated by + a higher-level build system, and to run builds as fast as + possible. +

    +
  • +
  • +

    + Ncurses +

    +

    + This package contains libraries for terminal-independent + handling of character screens. It is often used to provide + cursor control for a menuing system. It is needed by a + number of packages in LFS. +

    +
  • +
  • +

    + Openssl +

    +

    + This package provides management tools and libraries + relating to cryptography. These are useful for providing + cryptographic functions to other packages, including the + Linux kernel. +

    +
  • +
  • +

    + Patch +

    +

    + This package contains a program for modifying or creating + files by applying a patch file typically created by + the diff program. It is + needed by the build procedure for several LFS packages. +

    +
  • +
  • +

    + Perl +

    +

    + This package is an interpreter for the runtime language + PERL. It is needed for the installation and test suites of + several LFS packages. +

    +
  • +
  • +

    + Pkg-config +

    +

    + This package provides a program to return meta-data about + an installed library or package. +

    +
  • +
  • +

    + Procps-NG +

    +

    + This package contains programs for monitoring processes. + These programs are useful for system administration, and + are also used by the LFS Bootscripts. +

    +
  • +
  • +

    + Psmisc +

    +

    + This package contains programs for displaying information + about running processes. These programs are useful for + system administration. +

    +
  • +
  • +

    + Python 3 +

    +

    + This package provides an interpreted language that has a + design philosophy that emphasizes code readability. +

    +
  • +
  • +

    + Readline +

    +

    + This package is a set of libraries that offers command-line + editing and history capabilities. It is used by Bash. +

    +
  • +
  • +

    + Sed +

    +

    + This package allows editing of text without opening it in a + text editor. It is also needed by most LFS packages' + configure scripts. +

    +
  • +
  • +

    + Shadow +

    +

    + This package contains programs for handling passwords in a + secure way. +

    +
  • +
  • +

    + Sysklogd +

    +

    + This package contains programs for logging system messages, + such as those given by the kernel or daemon processes when + unusual events occur. +

    +
  • +
  • +

    + Sysvinit +

    +

    + This package provides the init program, which is the parent of + all other processes on the Linux system. +

    +
  • +
  • +

    + Tar +

    +

    + This package provides archiving and extraction capabilities + of virtually all packages used in LFS. +

    +
  • +
  • +

    + Tcl +

    +

    + This package contains the Tool Command Language used in + many test suites in LFS packages. It is only installed in + the temporary toolchain. +

    +
  • +
  • +

    + Texinfo +

    +

    + This package contains programs for reading, writing, and + converting info pages. It is used in the installation + procedures of many LFS packages. +

    +
  • +
  • +

    + Util-linux +

    +

    + This package contains miscellaneous utility programs. Among + them are utilities for handling file systems, consoles, + partitions, and messages. +

    +
  • +
  • +

    + Vim +

    +

    + This package contains an editor. It was chosen because of + its compatibility with the classic vi editor and its huge + number of powerful capabilities. An editor is a very + personal choice for many users and any other editor could + be substituted if desired. +

    +
  • +
  • +

    + XML::Parser +

    +

    + This package is a Perl module that interfaces with Expat. +

    +
  • +
  • +

    + XZ Utils +

    +

    + This package contains programs for compressing and + decompressing files. It provides the highest compression + generally available and is useful for decompressing + packages in XZ or LZMA format. +

    +
  • +
  • +

    + Zlib +

    +

    + This package contains compression and decompression + routines used by some programs. +

    +
  • +
+
+
+
+
+
+
+

+ Prerequisites +

+
+
+
+

+ Building an LFS system is not a simple task. It requires a + certain level of existing knowledge of Unix system administration + in order to resolve problems and correctly execute the commands + listed. In particular, as an absolute minimum, you should already + have the ability to use the command line (shell) to copy or move + files and directories, list directory and file contents, and + change the current directory. It is also expected that you have a + reasonable knowledge of using and installing Linux software. +

+

+ Because the LFS book assumes at + least this basic level of skill, the various LFS + support forums are unlikely to be able to provide you with much + assistance in these areas. You will find that your questions + regarding such basic knowledge will likely go unanswered or you + will simply be referred to the LFS essential pre-reading list. +

+

+ Before building an LFS system, we recommend reading the + following: +

+
+ +
+
+
+
+
+
+

+ Typography +

+
+
+
+

+ To make things easier to follow, there are a few typographical + conventions used throughout this book. This section contains some + examples of the typographical format found throughout Linux From + Scratch. +

+
+./configure --prefix=/usr
+
+

+ This form of text is designed to be typed exactly as seen unless + otherwise noted in the surrounding text. It is also used in the + explanation sections to identify which of the commands is being + referenced. +

+

+ In some cases, a logical line is extended to two or more physical + lines with a backslash at the end of the line. +

+
+CC="gcc -B/usr/bin/" ../binutils-2.18/configure \
+  --prefix=/tools --disable-nls --disable-werror
+
+

+ Note that the backslash must be followed by an immediate return. + Other whitespace characters like spaces or tab characters will + create incorrect results. +

+
+install-info: unknown option '--dir-file=/mnt/lfs/usr/info/dir'
+
+

+ This form of text (fixed-width text) shows screen output, usually + as the result of commands issued. This format is also used to + show filenames, such as /etc/ld.so.conf. +

+

+ Emphasis +

+

+ This form of text is used for several purposes in the book. Its + main purpose is to emphasize important points or items. +

+

+ http://www.linuxfromscratch.org/ +

+

+ This format is used for hyperlinks both within the LFS community + and to external pages. It includes HOWTOs, download locations, + and websites. +

+
+cat > $LFS/etc/group << "EOF"
+root:x:0:
+bin:x:1:
+......
+EOF
+
+

+ This format is used when creating configuration files. The first + command tells the system to create the file $LFS/etc/group from whatever is typed on the + following lines until the sequence End Of File (EOF) is + encountered. Therefore, this entire section is generally typed as + seen. +

+

+ <REPLACED TEXT> +

+

+ This format is used to encapsulate text that is not to be typed + as seen or for copy-and-paste operations. +

+

+ [OPTIONAL TEXT] +

+

+ This format is used to encapsulate text that is optional. +

+

+ passwd(5) +

+

+ This format is used to refer to a specific manual (man) page. The + number inside parentheses indicates a specific section inside the + manuals. For example, passwd has two man pages. Per + LFS installation instructions, those two man pages will be + located at /usr/share/man/man1/passwd.1 and /usr/share/man/man5/passwd.5. When the book + uses passwd(5) it is specifically + referring to /usr/share/man/man5/passwd.5. man passwd will print the first + man page it finds that matches passwd, + which will be /usr/share/man/man1/passwd.1. For this example, + you will need to run man 5 + passwd in order to read the specific page being + referred to. It should be noted that most man pages do not have + duplicate page names in different sections. Therefore, + man <program + name> is generally sufficient. +

+
+
+
+
+
+

+ Structure +

+
+
+
+

+ This book is divided into the following parts. +

+
+

+ Part I - Introduction +

+

+ Part I explains a few important notes on how to proceed with + the LFS installation. This section also provides + meta-information about the book. +

+
+
+

+ Part II - Preparing for the Build +

+

+ Part II describes how to prepare for the building + process—making a partition, downloading the packages, and + compiling temporary tools. +

+
+
+

+ Part III - Building the LFS System +

+

+ Part III guides the reader through the building of the LFS + system—compiling and installing all the packages one by + one, setting up the boot scripts, and installing the kernel. + The resulting Linux system is the foundation on which other + software can be built to expand the system as desired. At the + end of this book, there is an easy to use reference listing all + of the programs, libraries, and important files that have been + installed. +

+
+
+
+
+
+
+

+ Errata +

+
+
+
+

+ The software used to create an LFS system is constantly being + updated and enhanced. Security warnings and bug fixes may become + available after the LFS book has been released. To check whether + the package versions or instructions in this release of LFS need + any modifications to accommodate security vulnerabilities or + other bug fixes, please visit http://www.linuxfromscratch.org/lfs/errata/8.4/ + before proceeding with your build. You should note any changes + shown and apply them to the relevant section of the book as you + progress with building the LFS system. +

+
+
+
+
+
+
+

+ Part I. Introduction +

+
+
+
+
+
+
+
+

+ Chapter 1. Introduction +

+
+
+
+
+
+
+
+

+ 1.1. How to Build an LFS System +

+
+
+
+

+ The LFS system will be built by using an already installed + Linux distribution (such as Debian, OpenMandriva, Fedora, or + openSUSE). This existing Linux system (the host) will be used + as a starting point to provide necessary programs, including a + compiler, linker, and shell, to build the new system. Select + the development option during the + distribution installation to be able to access these tools. +

+

+ As an alternative to installing a separate distribution onto + your machine, you may wish to use a LiveCD from a commercial + distribution. +

+

+ Chapter 2 + of this book describes how to create a new Linux native + partition and file system. This is the place where the new LFS + system will be compiled and installed. Chapter 3 + explains which packages and patches need to be downloaded to + build an LFS system and how to store them on the new file + system. Chapter 4 + discusses the setup of an appropriate working environment. + Please read Chapter 4 + carefully as it explains several important issues you need be + aware of before beginning to work your way through Chapter 5 + and beyond. +

+

+ Chapter 5 + explains the installation of a number of packages that will + form the basic development suite (or toolchain) which is used + to build the actual system in Chapter 6. + Some of these packages are needed to resolve circular + dependencies—for example, to compile a compiler, you need + a compiler. +

+

+ Chapter 5 + also shows you how to build a first pass of the toolchain, + including Binutils and GCC (first pass basically means these + two core packages will be reinstalled). The next step is to + build Glibc, the C library. Glibc will be compiled by the + toolchain programs built in the first pass. Then, a second pass + of the toolchain will be built. This time, the toolchain will + be dynamically linked against the newly built Glibc. The + remaining Chapter 5 + packages are built using this second pass toolchain. When this + is done, the LFS installation process will no longer depend on + the host distribution, with the exception of the running + kernel. +

+

+ This effort to isolate the new system from the host + distribution may seem excessive. A full technical explanation + as to why this is done is provided in Section 5.2, + “Toolchain Technical Notes”. +

+

+ In Chapter 6, + the full LFS system is built. The chroot (change root) program + is used to enter a virtual environment and start a new shell + whose root directory will be set to the LFS partition. This is + very similar to rebooting and instructing the kernel to mount + the LFS partition as the root partition. The system does not + actually reboot, but instead uses chroot because creating a + bootable system requires additional work which is not necessary + just yet. The major advantage is that chrooting allows you to continue + using the host system while LFS is being built. While waiting + for package compilations to complete, you can continue using + your computer as normal. +

+

+ To finish the installation, the basic system configuration is + set up in Chapter 7, + and the kernel and boot loader are set up in Chapter 8. + Chapter 9 contains + information on continuing the LFS experience beyond this book. + After the steps in this book have been implemented, the + computer will be ready to reboot into the new LFS system. +

+

+ This is the process in a nutshell. Detailed information on each + step is discussed in the following chapters and package + descriptions. Items that may seem complicated will be + clarified, and everything will fall into place as you embark on + the LFS adventure. +

+
+
+
+
+
+

+ 1.2. What's new since the + last release +

+
+
+
+

+ Below is a list of package updates made since the previous + release of the book. +

+
+

+ Upgraded to: +

+
    +
  • +

    + Bash 5.0 +

    +
  • +
  • +

    + Binutils-2.32 +

    +
  • +
  • +

    + Bison-3.3.2 +

    +
  • +
  • +

    + DejaGNU-1.6.2 +

    +
  • +
  • +

    + Diffutils-3.7 +

    +
  • +
  • +

    + Eudev-3.2.7 +

    +
  • +
  • +

    + E2fsprogs-1.44.5 +

    +
  • +
  • +

    + File-5.36 +

    +
  • +
  • +

    + GDBM-1.18.1 +

    +
  • +
  • +

    + Glibc-2.29 +

    +
  • +
  • +

    + Grep-3.3 +

    +
  • +
  • +

    + Groff-1.22.4 +

    +
  • +
  • +

    + Gzip-1.10 +

    +
  • +
  • +

    + IPRoute2-4.20.0 +

    +
  • +
  • +

    + Kmod-26 +

    +
  • +
  • +

    + Libcap-2.26 +

    +
  • +
  • +

    + Libelf-0.176 (from elfutils) +

    +
  • +
  • +

    + Libpipeline-1.5.1 +

    +
  • +
  • +

    + Linux-4.20.12 +

    +
  • +
  • +

    + Man-DB-2.8.5 +

    +
  • +
  • +

    + Meson-0.49.2 +

    +
  • +
  • +

    + MPFR-4.0.2 +

    +
  • +
  • +

    + Ninja-1.9.0 +

    +
  • +
  • +

    + Openssl-1.1.1a +

    +
  • +
  • +

    + Perl-5.28.1 +

    +
  • +
  • +

    + Psmisc-23.2 +

    +
  • +
  • +

    + Python-3.7.2 +

    +
  • +
  • +

    + Readline-8.0 +

    +
  • +
  • +

    + Sed-4.7 +

    +
  • +
  • +

    + SysVinit-2.93 +

    +
  • +
  • +

    + Tar-1.31 +

    +
  • +
  • +

    + Tcl-8.6.9 +

    +
  • +
  • +

    + Tzdata-2018i +

    +
  • +
  • +

    + Util-Linux-2.33.1 +

    +
  • +
+
+
+

+ Added: +

+
+
+

+ Removed: +

+
+
+
+
+
+
+

+ 1.3. Changelog +

+
+
+
+

+ This is version 8.4 of the Linux + From Scratch book, dated Maarch 1, 2019. If this book is more + than six months old, a newer and better version is probably + already available. To find out, please check one of the mirrors + via http://www.linuxfromscratch.org/mirrors.html. +

+

+ Below is a list of changes made since the previous release of + the book. +

+
+

+ Changelog Entries: +

+
    +
  • +

    + 2019-03-01 +

    +
    +
      +
    • +

      + [bdubbs] - LFS-8.4 released. +

      +
    • +
    +
    +
  • +
  • +

    + 2019-02-25 +

    +
    +
      +
    • +

      + [bdubbs] - Update to linux-4.20.12. Fixes #4425. +

      +
    • +
    • +

      + [bdubbs] - Update to elfutils-0.176. Fixes + #4426. +

      +
    • +
    • +

      + [bdubbs] - Update to file-5.36. Fixes #4429. +

      +
    • +
    +
    +
  • +
  • +

    + 2019-02-21 +

    +
    +
      +
    • +

      + [ken] - Suppress /lib/systemd/ directory created by + man-db-2.8.5. +

      +
    • +
    +
    +
  • +
  • +

    + 2019-02-19 +

    +
    +
      +
    • +

      + [bdubbs] - Add an optional modification to the + build procedure for ninja to allow use the the + environment variable NINJAJOBS. +

      +
    • +
    +
    +
  • +
  • +

    + 2019-02-14 +

    +
    +
      +
    • +

      + [bdubbs] - Update to linux-4.20.8. Fixes #4423. +

      +
    • +
    • +

      + [bdubbs] - Fix a problem when building Python in + Chapter 5 where some hosts may use host dependent + headers. +

      +
    • +
    +
    +
  • +
  • +

    + 2019-02-11 +

    +
    +
      +
    • +

      + [bdubbs] - Update to linux-4.20.7. Fixes #4421. +

      +
    • +
    • +

      + [bdubbs] - Update to kmod-26. Fixes #4422. +

      +
    • +
    +
    +
  • +
  • +

    + 2019-02-08 +

    +
    +
      +
    • +

      + [renodr] - Update host system requirements. +

      +
    • +
    +
    +
  • +
  • +

    + 2019-02-06 +

    +
    +
      +
    • +

      + [bdubbs] - Simlify instructions for glibc in + Chapter 5. Thanks to Romain Geissler for the + report. +

      +
    • +
    +
    +
  • +
  • +

    + 2019-02-05 +

    +
    +
      +
    • +

      + [bdubbs] - Update to bison-3.3.2. Fixes #4419. +

      +
    • +
    • +

      + [bdubbs] - Update to meson-0.49.2. Fixes #4420. +

      +
    • +
    +
    +
  • +
  • +

    + 2019-02-02 +

    +
    +
      +
    • +

      + [bdubbs] - Fix psmisc URL. Fixes #4418. +

      +
    • +
    • +

      + [bdubbs] - Update to binutils-2.32. Fixes #4417. +

      +
    • +
    +
    +
  • +
  • +

    + 2019-02-01 +

    +
    +
      +
    • +

      + [bdubbs] - Update to bison-3.3.1. Fixes #4412. +

      +
    • +
    • +

      + [bdubbs] - Update to glibc-2.29. Fixes #4415. +

      +
    • +
    • +

      + [bdubbs] - Update to libpipeline-1.5.1. Fixes + #4413. +

      +
    • +
    • +

      + [bdubbs] - Update to linux-4.20.6. Fixes #4409. +

      +
    • +
    • +

      + [bdubbs] - Update to meson-0.49.1. Fixes #4410. +

      +
    • +
    • +

      + [bdubbs] - Update to mpfr-4.0.2. Fixes #4416. +

      +
    • +
    • +

      + [bdubbs] - Update to ninja-1.9.0. Fixes #4414. +

      +
    • +
    +
    +
  • +
  • +

    + 2019-01-27 +

    +
    +
      +
    • +

      + [pierre] - Fix a bug introduced in tar-1.31, by + adding a sed to the build instructions. Also remove + an obsolete comment about a failing test. +

      +
    • +
    +
    +
  • +
  • +

    + 2019-01-10 +

    +
    +
      +
    • +

      + [bdubbs] - Update to linux-4.20.1. Fixes #4398. +

      +
    • +
    • +

      + [bdubbs] - Update to diffutils-3.7. Fixes #4401. +

      +
    • +
    • +

      + [bdubbs] - Update to tar-1.31. Fixes #4402. +

      +
    • +
    • +

      + [bdubbs] - Update to man-db-2.8.5. Fixes #4403. +

      +
    • +
    • +

      + [bdubbs] - Update to bash-5.0. Fixes #4404. +

      +
    • +
    • +

      + [bdubbs] - Update to readline-8.0. Fixes #4405. +

      +
    • +
    • +

      + [bdubbs] - Update to iproute2-4.20.0. Fixes + #4406. +

      +
    • +
    • +

      + [bdubbs] - Update to util-linux-2.33.1. Fixes + #4407. +

      +
    • +
    +
    +
  • +
  • +

    + 2019-01-01 +

    +
    +
      +
    • +

      + [bdubbs] - Update to gzip-1.10. Fixes #4400. +

      +
    • +
    • +

      + [bdubbs] - Update to tzdata-2018i. Fixes #4399. +

      +
    • +
    +
    +
  • +
  • +

    + 2018-12-27 +

    +
    +
      +
    • +

      + [renodr] - Update to linux-4.19.12. Fixes #4389. +

      +
    • +
    • +

      + [renodr] - Update to e2fsprogs-1.44.5. Fixes + #4390. +

      +
    • +
    • +

      + [renodr] - Update to bison-3.2.4. Fixes #4391. +

      +
    • +
    • +

      + [renodr] - Update to sed-4.7. Fixes #4392. +

      +
    • +
    • +

      + [renodr] - Update to grep-3.3. Fixes #4393. +

      +
    • +
    • +

      + [renodr] - Update to Python-3.7.2. Fixes #4395. +

      +
    • +
    • +

      + [renodr] - Update to groff-1.22.4. Fixes #4396. +

      +
    • +
    +
    +
  • +
  • +

    + 2018-12-12 +

    +
    +
      +
    • +

      + [renodr] - Add a note to libffi about optimizing + for the specific CPU in use at compile time. + Similar to GMP, this causes Illegal Operation + errors if the installation is moved to another + system. +

      +
    • +
    +
    +
  • +
  • +

    + 2018-12-11 +

    +
    +
      +
    • +

      + [bdubbs] - Update to linux-4.19.8. Fixes #4387. +

      +
    • +
    • +

      + [bdubbs] - Update to meson-0.49.0. Fixes #4388. +

      +
    • +
    +
    +
  • +
  • +

    + 2018-12-01 +

    +
    +
      +
    • +

      + [bdubbs] - Move /etc/bash_completions.d/grub to a + better location. Fixes #4385. +

      +
    • +
    • +

      + [bdubbs] - Update to dejagnu-1.6.2. Fixes #4382. +

      +
    • +
    • +

      + [bdubbs] - Update to linux-4.19.6. Fixes #4383. +

      +
    • +
    • +

      + [bdubbs] - Update to perl-5.28.1. Fixes #4384. +

      +
    • +
    +
    +
  • +
  • +

    + 2018-11-25 +

    +
    +
      +
    • +

      + [bdubbs] - Update to bison-3.2.2. Fixes #4380. +

      +
    • +
    • +

      + [bdubbs] - Update to sysvinit-2.93. Fixes #4360. +

      +
    • +
    +
    +
  • +
  • +

    + 2018-11-24 +

    +
    +
      +
    • +

      + [dj] - Update to linux-4.19.4. Fixes #4381. +

      +
    • +
    • +

      + [dj] - Update to systemd-239-6b4878d. +

      +
    • +
    • +

      + [dj] - Add touch to the list of moved coreutils + programs, and clarify necessity of the moves to + meet FHS compliance. +

      +
    • +
    +
    +
  • +
  • +

    + 2018-11-21 +

    +
    +
      +
    • +

      + [renodr] - Add "wheel" group to satisfy systemd + requirements. Fixes #4376. +

      +
    • +
    • +

      + [renodr] - Add a sed to fix a bug in autoconf's + test suite. Fixes #4372. +

      +
    • +
    • +

      + [renodr] - Update to tcl-8.6.9. Security update. + Fixes #4375. +

      +
    • +
    • +

      + [renodr] - Update to openssl-1.1.1a. This is a + security update. Fixes #4379. +

      +
    • +
    • +

      + [renodr] - Update to linux-4.19.3. Fixes #4373. +

      +
    • +
    • +

      + [renodr] - Update to elfutils-0.175. Fixes + #4374. +

      +
    • +
    +
    +
  • +
  • +

    + 2018-11-19 +

    +
    +
      +
    • +

      + [bdubbs] - Update to libcap-2.26. Fixes #4378. +

      +
    • +
    +
    +
  • +
  • +

    + 2018-11-09 +

    +
    +
      +
    • +

      + [bdubbs] - Update groups file for new eudev. Fixes + #4369. +

      +
    • +
    • +

      + [bdubbs] - Update to meson-0.48.2. Fixes #4371. +

      +
    • +
    • +

      + [bdubbs] - Update to bison-3.2.1. Fixes #4370. +

      +
    • +
    +
    +
  • +
  • +

    + 2018-11-06 +

    +
    +
      +
    • +

      + [bdubbs] - Update to eudev-3.2.7. Fixes #4365. +

      +
    • +
    • +

      + [bdubbs] - Update to bison-3.2. Fixes #4367. +

      +
    • +
    • +

      + [bdubbs] - Update to linux-4.19.1. Fixes #4368. +

      +
    • +
    • +

      + [bdubbs] - Update to tzdata-2018g. Fixes #4366. +

      +
    • +
    • +

      + [bdubbs] - Update to util-linux-v2.33. Fixes + #4353. +

      +
    • +
    +
    +
  • +
  • +

    + 2018-10-29 +

    +
    +
      +
    • +

      + [dj] - Update to gdbm-1.18.1. Fixes #4364. +

      +
    • +
    • +

      + [dj] - Update to Python-3.7.1. Fixes #4361. +

      +
    • +
    +
    +
  • +
  • +

    + 2018-10-27 +

    +
    +
      +
    • +

      + [dj] - Update to iproute2-4.19.0. Fixes #4363. +

      +
    • +
    • +

      + [dj] - Update to file-5.35. Fixes #4359. +

      +
    • +
    • +

      + [dj] - Update to tzdata-2018f. Fixes #4358. +

      +
    • +
    • +

      + [dj] - Update to meson-0.48.1. Fixes #4357. +

      +
    • +
    • +

      + [dj] - Update to linux-4.19. Fixes #4356. +

      +
    • +
    +
    +
  • +
  • +

    + 2018-10-10 +

    +
    +
      +
    • +

      + [dj] - Update to meson-0.48.0. Fixes #4351. +

      +
    • +
    • +

      + [dj] - Update to linux-4.18.12. Fixes #4352. +

      +
    • +
    +
    +
  • +
  • +

    + 2018-09-30 +

    +
    +
      +
    • +

      + [dj] - Moved installation of Util-Linux and + E2fsprogs after Procps to satisfy build order in + the Systemd book. This has no effect on the SysV + book. +

      +
    • +
    +
    +
  • +
  • +

    + 2018-09-20 +

    +
    +
      +
    • +

      + [bdubbs] - Clean up of unneeded symbolic links. + Reordered packages so version specific packages are + built as late as possible in Chapter 6. Now + building util-linux in Chapter 5 is unneeded and + has been removed. Fixes #4345 + and #4349. +

      +
    • +
    • +

      + [bdubbs] - Update to eudev-3.2.6. Fixes #4350. +

      +
    • +
    • +

      + [bdubbs] - Update to elfutils-0.174 (libelf). Fixes + #4348. +

      +
    • +
    • +

      + [bdubbs] - Update to psmisc-23.2. Fixes #4347. +

      +
    • +
    • +

      + [bdubbs] - Update to openssl-1.1.1. Fixes #4346. +

      +
    • +
    • +

      + [bdubbs] - Update to linux-4.18.9. Fixes #4344. +

      +
    • +
    +
    +
  • +
  • +

    + 2018-09-02 +

    +
    +
      +
    • +

      + [bdubbs] - Update to bison-3.1. Fixes #4342. +

      +
    • +
    • +

      + [bdubbs] - Update to meson-0.47.2. Fixes #4341. +

      +
    • +
    • +

      + [bdubbs] - Update to gdbm-1.18. Fixes #4340. +

      +
    • +
    • +

      + [bdubbs] - Update to e2fsprogs-1.44.4. Fixes + #4338. +

      +
    • +
    +
    +
  • +
  • +

    + 2018-09-01 +

    +
    +
      +
    • +

      + [bdubbs] - LFS-8.3 released. +

      +
    • +
    +
    +
  • +
+
+
+
+
+
+
+

+ 1.4. Resources +

+
+
+
+
+

+ 1.4.1. FAQ +

+

+ If during the building of the LFS system you encounter any + errors, have any questions, or think there is a typo in the + book, please start by consulting the Frequently Asked + Questions (FAQ) that is located at http://www.linuxfromscratch.org/faq/. +

+
+
+

+ 1.4.2. Mailing Lists +

+

+ The linuxfromscratch.org server + hosts a number of mailing lists used for the development of + the LFS project. These lists include the main development and + support lists, among others. If the FAQ does not solve the + problem you are having, the next step would be to search the + mailing lists at http://www.linuxfromscratch.org/search.html. +

+

+ For information on the different lists, how to subscribe, + archive locations, and additional information, visit + http://www.linuxfromscratch.org/mail.html. +

+
+
+

+ 1.4.3. IRC +

+

+ Several members of the LFS community offer assistance on + Internet Relay Chat (IRC). Before using this support, please + make sure that your question is not already answered in the + LFS FAQ or the mailing list archives. You can find the IRC + network at irc.freenode.net. The + support channel is named #LFS-support. +

+
+
+

+ 1.4.4. + Mirror Sites +

+

+ The LFS project has a number of world-wide mirrors to make + accessing the website and downloading the required packages + more convenient. Please visit the LFS website at http://www.linuxfromscratch.org/mirrors.html + for a list of current mirrors. +

+
+
+

+ 1.4.5. Contact Information +

+

+ Please direct all your questions and comments to one of the + LFS mailing lists (see above). +

+
+
+
+
+
+
+

+ 1.5. Help +

+
+
+
+

+ If an issue or a question is encountered while working through + this book, please check the FAQ page at http://www.linuxfromscratch.org/faq/#generalfaq. + Questions are often already answered there. If your question is + not answered on this page, try to find the source of the + problem. The following hint will give you some guidance for + troubleshooting: + http://www.linuxfromscratch.org/hints/downloads/files/errors.txt. +

+

+ If you cannot find your problem listed in the FAQ, search the + mailing lists at http://www.linuxfromscratch.org/search.html. +

+

+ We also have a wonderful LFS community that is willing to offer + assistance through the mailing lists and IRC (see the Section 1.4, + “Resources” section of this book). However, we + get several support questions every day and many of them can be + easily answered by going to the FAQ and by searching the + mailing lists first. So, for us to offer the best assistance + possible, you need to do some research on your own first. That + allows us to focus on the more unusual support needs. If your + searches do not produce a solution, please include all relevant + information (mentioned below) in your request for help. +

+
+

+ 1.5.1. Things to Mention +

+

+ Apart from a brief explanation of the problem being + experienced, the essential things to include in any request + for help are: +

+
+
    +
  • +

    + The version of the book being used (in this case + 8.4 ) +

    +
  • +
  • +

    + The host distribution and version being used to create + LFS +

    +
  • +
  • +

    + The output from the Host System Requirements script +

    +
  • +
  • +

    + The package or section the problem was encountered in +

    +
  • +
  • +

    + The exact error message or symptom being received +

    +
  • +
  • +

    + Note whether you have deviated from the book at all +

    +
  • +
+
+
+

+ Note +

+

+ Deviating from this book does not mean that we will not help + you. After all, LFS is about personal preference. Being + upfront about any changes to the established procedure + helps us evaluate and determine possible causes of your + problem. +

+
+
+
+

+ 1.5.2. Configure Script Problems +

+

+ If something goes wrong while running the configure script, review + the config.log file. This file + may contain errors encountered during configure which were not + printed to the screen. Include the relevant lines if you need to ask + for help. +

+
+
+

+ 1.5.3. Compilation Problems +

+

+ Both the screen output and the contents of various files are + useful in determining the cause of compilation problems. The + screen output from the configure script and the + make run can be + helpful. It is not necessary to include the entire output, + but do include enough of the relevant information. Below is + an example of the type of information to include from the + screen output from make: +

+
+gcc -DALIASPATH=\"/mnt/lfs/usr/share/locale:.\"
+-DLOCALEDIR=\"/mnt/lfs/usr/share/locale\"
+-DLIBDIR=\"/mnt/lfs/usr/lib\"
+-DINCLUDEDIR=\"/mnt/lfs/usr/include\" -DHAVE_CONFIG_H -I. -I.
+-g -O2 -c getopt1.c
+gcc -g -O2 -static -o make ar.o arscan.o commands.o dir.o
+expand.o file.o function.o getopt.o implicit.o job.o main.o
+misc.o read.o remake.o rule.o signame.o variable.o vpath.o
+default.o remote-stub.o version.o opt1.o
+-lutil job.o: In function `load_too_high':
+/lfs/tmp/make-3.79.1/job.c:1565: undefined reference
+to `getloadavg'
+collect2: ld returned 1 exit status
+make[2]: *** [make] Error 1
+make[2]: Leaving directory `/lfs/tmp/make-3.79.1'
+make[1]: *** [all-recursive] Error 1
+make[1]: Leaving directory `/lfs/tmp/make-3.79.1'
+make: *** [all-recursive-am] Error 2
+
+

+ In this case, many people would just include the bottom + section: +

+
+make [2]: *** [make] Error 1
+
+

+ This is not enough information to properly diagnose the + problem because it only notes that something went wrong, not + what went wrong. The + entire section, as in the example above, is what should be + saved because it includes the command that was executed and + the associated error message(s). +

+

+ An excellent article about asking for help on the Internet is + available online at http://catb.org/~esr/faqs/smart-questions.html. + Read and follow the hints in this document to increase the + likelihood of getting the help you need. +

+
+
+
+
+
+
+
+
+

+ Part II. Preparing + for the Build +

+
+
+
+
+
+
+
+

+ Chapter 2. Preparing + the Host System +

+
+
+
+
+
+
+
+

+ 2.1. Introduction +

+
+
+
+

+ In this chapter, the host tools needed for building LFS are + checked and, if necessary, installed. Then a partition which + will host the LFS system is prepared. We will create the + partition itself, create a file system on it, and mount it. +

+
+
+
+
+
+

+ 2.2. Host System Requirements +

+
+
+
+

+ Your host system should have the following software with the + minimum versions indicated. This should not be an issue for + most modern Linux distributions. Also note that many + distributions will place software headers into separate + packages, often in the form of <package-name>-devel or + <package-name>-dev. Be sure + to install those if your distribution provides them. +

+

+ Earlier versions of the listed software packages may work, but + have not been tested. +

+
+
    +
  • +

    + Bash-3.2 + (/bin/sh should be a symbolic or hard link to bash) +

    +
  • +
  • +

    + Binutils-2.25 (Versions + greater than 2.32 are not recommended as they have not + been tested) +

    +
  • +
  • +

    + Bison-2.7 + (/usr/bin/yacc should be a link to bison or small script + that executes bison) +

    +
  • +
  • +

    + Bzip2-1.0.4 +

    +
  • +
  • +

    + Coreutils-6.9 +

    +
  • +
  • +

    + Diffutils-2.8.1 +

    +
  • +
  • +

    + Findutils-4.2.31 +

    +
  • +
  • +

    + Gawk-4.0.1 + (/usr/bin/awk should be a link to gawk) +

    +
  • +
  • +

    + GCC-5.2 + including the C++ compiler, g++ (Versions greater + than 8.2.0 are not recommended as they have not been + tested) +

    +
  • +
  • +

    + Glibc-2.11 + (Versions greater than 2.29 are not recommended as they + have not been tested) +

    +
  • +
  • +

    + Grep-2.5.1a +

    +
  • +
  • +

    + Gzip-1.3.12 +

    +
  • +
  • +

    + Linux + Kernel-3.2 +

    +

    + The reason for the kernel version requirement is that we + specify that version when building glibc in Chapter 6 at the + recommendation of the developers. It is also required by + udev. +

    +

    + If the host kernel is earlier than 3.2 you will need to + replace the kernel with a more up to date version. There + are two ways you can go about this. First, see if your + Linux vendor provides a 3.2 or later kernel package. If + so, you may wish to install it. If your vendor doesn't + offer an acceptable kernel package, or you would prefer + not to install it, you can compile a kernel yourself. + Instructions for compiling the kernel and configuring the + boot loader (assuming the host uses GRUB) are located in + Chapter 8. +

    +
  • +
  • +

    + M4-1.4.10 +

    +
  • +
  • +

    + Make-4.0 +

    +
  • +
  • +

    + Patch-2.5.4 +

    +
  • +
  • +

    + Perl-5.8.8 +

    +
  • +
  • +

    + Python-3.4 +

    +
  • +
  • +

    + Sed-4.1.5 +

    +
  • +
  • +

    + Tar-1.22 +

    +
  • +
  • +

    + Texinfo-4.7 +

    +
  • +
  • +

    + Xz-5.0.0 +

    +
  • +
+
+
+

+ Important +

+

+ Note that the symlinks mentioned above are required to build + an LFS system using the instructions contained within this + book. Symlinks that point to other software (such as dash, + mawk, etc.) may work, but are not tested or supported by the + LFS development team, and may require either deviation from + the instructions or additional patches to some packages. +

+
+

+ +

+

+ To see whether your host system has all the appropriate + versions, and the ability to compile programs, run the + following: +

+
+cat > version-check.sh << "EOF"
+#!/bin/bash
+# Simple script to list version numbers of critical development tools
+export LC_ALL=C
+bash --version | head -n1 | cut -d" " -f2-4
+MYSH=$(readlink -f /bin/sh)
+echo "/bin/sh -> $MYSH"
+echo $MYSH | grep -q bash || echo "ERROR: /bin/sh does not point to bash"
+unset MYSH
+
+echo -n "Binutils: "; ld --version | head -n1 | cut -d" " -f3-
+bison --version | head -n1
+
+if [ -h /usr/bin/yacc ]; then
+  echo "/usr/bin/yacc -> `readlink -f /usr/bin/yacc`";
+elif [ -x /usr/bin/yacc ]; then
+  echo yacc is `/usr/bin/yacc --version | head -n1`
+else
+  echo "yacc not found" 
+fi
+
+bzip2 --version 2>&1 < /dev/null | head -n1 | cut -d" " -f1,6-
+echo -n "Coreutils: "; chown --version | head -n1 | cut -d")" -f2
+diff --version | head -n1
+find --version | head -n1
+gawk --version | head -n1
+
+if [ -h /usr/bin/awk ]; then
+  echo "/usr/bin/awk -> `readlink -f /usr/bin/awk`";
+elif [ -x /usr/bin/awk ]; then
+  echo awk is `/usr/bin/awk --version | head -n1`
+else 
+  echo "awk not found" 
+fi
+
+gcc --version | head -n1
+g++ --version | head -n1
+ldd --version | head -n1 | cut -d" " -f2-  # glibc version
+grep --version | head -n1
+gzip --version | head -n1
+cat /proc/version
+m4 --version | head -n1
+make --version | head -n1
+patch --version | head -n1
+echo Perl `perl -V:version`
+python3 --version
+sed --version | head -n1
+tar --version | head -n1
+makeinfo --version | head -n1  # texinfo version
+xz --version | head -n1
+
+echo 'int main(){}' > dummy.c && g++ -o dummy dummy.c
+if [ -x dummy ]
+  then echo "g++ compilation OK";
+  else echo "g++ compilation failed"; fi
+rm -f dummy.c dummy
+EOF
+
+bash version-check.sh
+
+
+
+
+
+
+

+ 2.3. Building LFS + in Stages +

+
+
+
+

+ LFS is designed to be built in one session. That is, the + instructions assume that the system will not be shut down + during the process. That does not mean that the system has to + be done in one sitting. The issue is that certain procedures + have to be re-accomplished after a reboot if resuming LFS at + different points. +

+
+

+ 2.3.1. Chapters 1–4 +

+

+ These chapters are accomplished on the host system. When + restarting, be careful of the following: +

+
+
    +
  • +

    + Procedures done as the root user after Section 2.4 need + to have the LFS environment variable set FOR THE ROOT USER. +

    +
  • +
+
+
+
+

+ 2.3.2. Chapter 5 +

+
+
    +
  • +

    + The /mnt/lfs partition must be mounted. +

    +
  • +
  • +

    + ALL instructions + in Chapter 5 must be done by user lfs. A su - lfs needs to be + done before any task in Chapter 5. +

    +
  • +
  • +

    + The procedures in Section 5.3, + “General Compilation Instructions” are + critical. If there is any doubt about installing a + package, ensure any previously expanded tarballs are + removed, re-extract the package files, and complete all + instructions in that section. +

    +
  • +
+
+
+
+

+ 2.3.3. Chapters 6–8 +

+
+ +
+
+
+
+
+
+
+

+ 2.4. Creating a New + Partition +

+
+
+
+

+ Like most other operating systems, LFS is usually installed on + a dedicated partition. The recommended approach to building an + LFS system is to use an available empty partition or, if you + have enough unpartitioned space, to create one. +

+

+ A minimal system requires a partition of around 6 gigabytes + (GB). This is enough to store all the source tarballs and + compile the packages. However, if the LFS system is intended to + be the primary Linux system, additional software will probably + be installed which will require additional space. A 20 GB + partition is a reasonable size to provide for growth. The LFS + system itself will not take up this much room. A large portion + of this requirement is to provide sufficient free temporary + storage as well as for adding additional capabilities after LFS + is complete. Additionally, compiling packages can require a lot + of disk space which will be reclaimed after the package is + installed. +

+

+ Because there is not always enough Random Access Memory (RAM) + available for compilation processes, it is a good idea to use a + small disk partition as swap + space. This is used by the kernel to store seldom-used data and + leave more memory available for active processes. The + swap partition for an LFS + system can be the same as the one used by the host system, in + which case it is not necessary to create another one. +

+

+ Start a disk partitioning program such as cfdisk or fdisk with a command line + option naming the hard disk on which the new partition will be + created—for example /dev/sda for the primary Integrated Drive + Electronics (IDE) disk. Create a Linux native partition and a + swap partition, if needed. + Please refer to cfdisk(8) or + fdisk(8) if you do not yet know + how to use the programs. +

+
+

+ Note +

+

+ For experienced users, other partitioning schemes are + possible. The new LFS system can be on a software + RAID array or an + LVM logical volume. However, some of these options + require an + initramfs, which is an advanced topic. These partitioning + methodologies are not recommended for first time LFS users. +

+
+

+ Remember the designation of the new partition (e.g., + sda5). This book will refer to + this as the LFS partition. Also remember the designation of the + swap partition. These names + will be needed later for the /etc/fstab file. +

+
+

+ 2.4.1. Other Partition Issues +

+

+ Requests for advice on system partitioning are often posted + on the LFS mailing lists. This is a highly subjective topic. + The default for most distributions is to use the entire drive + with the exception of one small swap partition. This is not + optimal for LFS for several reasons. It reduces flexibility, + makes sharing of data across multiple distributions or LFS + builds more difficult, makes backups more time consuming, and + can waste disk space through inefficient allocation of file + system structures. +

+
+
+
+
+

+ 2.4.1.1. The Root + Partition +

+
+
+
+

+ A root LFS partition (not to be confused with the + /root directory) of ten + gigabytes is a good compromise for most systems. It + provides enough space to build LFS and most of BLFS, but is + small enough so that multiple partitions can be easily + created for experimentation. +

+
+
+
+
+
+

+ 2.4.1.2. The Swap + Partition +

+
+
+
+

+ Most distributions automatically create a swap partition. + Generally the recommended size of the swap partition is + about twice the amount of physical RAM, however this is + rarely needed. If disk space is limited, hold the swap + partition to two gigabytes and monitor the amount of disk + swapping. +

+

+ Swapping is never good. Generally you can tell if a system + is swapping by just listening to disk activity and + observing how the system reacts to commands. The first + reaction to swapping should be to check for an unreasonable + command such as trying to edit a five gigabyte file. If + swapping becomes a normal occurrence, the best solution is + to purchase more RAM for your system. +

+
+
+
+
+
+

+ 2.4.1.3. The Grub Bios + Partition +

+
+
+
+

+ If the boot disk has + been partitioned with a GUID Partition Table (GPT), then a + small, typically 1 MB, partition must be created if it does + not already exist. This partition is not formatted, but + must be available for GRUB to use during installation of + the boot loader. This partition will normally be labeled + 'BIOS Boot' if using fdisk or have a code of + EF02 if using + gdisk. +

+
+

+ Note +

+

+ The Grub Bios partition must be on the drive that the + BIOS uses to boot the system. This is not necessarily the + same drive where the LFS root partition is located. Disks + on a system may use different partition table types. The + requirement for this partition depends only on the + partition table type of the boot disk. +

+
+
+
+
+
+
+

+ 2.4.1.4. Convenience + Partitions +

+
+
+
+

+ There are several other partitions that are not required, + but should be considered when designing a disk layout. The + following list is not comprehensive, but is meant as a + guide. +

+
+
    +
  • +

    + /boot – Highly recommended. Use this partition + to store kernels and other booting information. To + minimize potential boot problems with larger disks, + make this the first physical partition on your first + disk drive. A partition size of 100 megabytes is + quite adequate. +

    +
  • +
  • +

    + /home – Highly recommended. Share your home + directory and user customization across multiple + distributions or LFS builds. The size is generally + fairly large and depends on available disk space. +

    +
  • +
  • +

    + /usr – A separate /usr partition is generally + used if providing a server for a thin client or + diskless workstation. It is normally not needed for + LFS. A size of five gigabytes will handle most + installations. +

    +
  • +
  • +

    + /opt – This directory is most useful for BLFS + where multiple installations of large packages like + Gnome or KDE can be installed without embedding the + files in the /usr hierarchy. If used, 5 to 10 + gigabytes is generally adequate. +

    +
  • +
  • +

    + /tmp – A separate /tmp directory is rare, but + useful if configuring a thin client. This partition, + if used, will usually not need to exceed a couple of + gigabytes. +

    +
  • +
  • +

    + /usr/src – This partition is very useful for + providing a location to store BLFS source files and + share them across LFS builds. It can also be used as + a location for building BLFS packages. A reasonably + large partition of 30-50 gigabytes allows plenty of + room. +

    +
  • +
+
+

+ Any separate partition that you want automatically mounted + upon boot needs to be specified in the /etc/fstab. Details about how to specify + partitions will be discussed in Section 8.2, + “Creating the /etc/fstab File”. +

+
+
+
+
+
+
+
+

+ 2.5. Creating a File + System on the Partition +

+
+
+
+

+ Now that a blank partition has been set up, the file system can + be created. LFS can use any file system recognized by the Linux + kernel, but the most common types are ext3 and ext4. The choice + of file system can be complex and depends on the + characteristics of the files and the size of the partition. For + example: +

+
+
+
+ ext2 +
+
+

+ is suitable for small partitions that are updated + infrequently such as /boot. +

+
+
+ ext3 +
+
+

+ is an upgrade to ext2 that includes a journal to help + recover the partition's status in the case of an unclean + shutdown. It is commonly used as a general purpose file + system. +

+
+
+ ext4 +
+
+

+ is the latest version of the ext file system family of + partition types. It provides several new capabilities + including nano-second timestamps, creation and use of + very large files (16 TB), and speed improvements. +

+
+
+
+

+ Other file systems, including FAT32, NTFS, ReiserFS, JFS, and + XFS are useful for specialized purposes. More information about + these file systems can be found at http://en.wikipedia.org/wiki/Comparison_of_file_systems. +

+

+ LFS assumes that the root file system (/) is of type ext4. To + create an ext4 file system on + the LFS partition, run the following: +

+
+mkfs -v -t ext4 /dev/<xxx>
+
+

+ If you are using an existing swap partition, there is no need to format + it. If a new swap partition was + created, it will need to be initialized with this command: +

+
+mkswap /dev/<yyy>
+
+

+ Replace <yyy> + with the name of the swap + partition. +

+
+
+
+
+
+

+ 2.6. Setting The $LFS + Variable +

+
+
+
+

+ Throughout this book, the environment variable LFS will be used several times. You should + ensure that this variable is always defined throughout the LFS + build process. It should be set to the name of the directory + where you will be building your LFS system - we will use + /mnt/lfs as an example, but the + directory choice is up to you. If you are building LFS on a + separate partition, this directory will be the mount point for + the partition. Choose a directory location and set the variable + with the following command: +

+
+export LFS=/mnt/lfs
+
+

+ Having this variable set is beneficial in that commands such as + mkdir -v + $LFS/tools can be typed literally. The shell + will automatically replace $LFS + with /mnt/lfs (or whatever the variable + was set to) when it processes the command line. +

+
+

+ Caution +

+

+ Do not forget to check that LFS is + set whenever you leave and reenter the current working + environment (such as when doing a su to root or another user). Check that the + LFS variable is set up properly + with: +

+
+echo $LFS
+
+

+ Make sure the output shows the path to your LFS system's + build location, which is /mnt/lfs if the provided example was + followed. If the output is incorrect, use the command given + earlier on this page to set $LFS + to the correct directory name. +

+
+
+

+ Note +

+

+ One way to ensure that the LFS + variable is always set is to edit the .bash_profile file in both your personal + home directory and in /root/.bash_profile and enter the export + command above. In addition, the shell specified in the + /etc/passwd file for all users + that need the LFS variable needs + to be bash to ensure that the /root/.bash_profile file is incorporated as + a part of the login process. +

+

+ Another consideration is the method that is used to log into + the host system. If logging in through a graphical display + manager, the user's .bash_profile is not normally used when a + virtual terminal is started. In this case, add the export + command to the .bashrc file for + the user and root. In addition, some distributions have + instructions to not run the .bashrc instructions in a non-interactive + bash invocation. Be sure to add the export command before the + test for non-interactive use. +

+
+
+
+
+
+
+

+ 2.7. Mounting the New Partition +

+
+
+
+

+ Now that a file system has been created, the partition needs to + be made accessible. In order to do this, the partition needs to + be mounted at a chosen mount point. For the purposes of this + book, it is assumed that the file system is mounted under the + directory specified by the LFS + environment variable as described in the previous section. +

+

+ Create the mount point and mount the LFS file system by + running: +

+
+mkdir -pv $LFS
+mount -v -t ext4 /dev/<xxx> $LFS
+
+

+ Replace <xxx> + with the designation of the LFS partition. +

+

+ If using multiple partitions for LFS (e.g., one for + / and another for /usr), mount them using: +

+
+mkdir -pv $LFS
+mount -v -t ext4 /dev/<xxx> $LFS
+mkdir -v $LFS/usr
+mount -v -t ext4 /dev/<yyy> $LFS/usr
+
+

+ Replace <xxx> + and <yyy> with + the appropriate partition names. +

+

+ Ensure that this new partition is not mounted with permissions + that are too restrictive (such as the nosuid or nodev + options). Run the mount command without any + parameters to see what options are set for the mounted LFS + partition. If nosuid and/or + nodev are set, the partition will + need to be remounted. +

+
+

+ Warning +

+

+ The above instructions assume that you will not be restarting + your computer throughout the LFS process. If you shut down + your system, you will either need to remount the LFS + partition each time you restart the build process or modify + your host system's /etc/fstab file to automatically remount + it upon boot. For example: +

+
+/dev/<xxx>  /mnt/lfs ext4   defaults      1     1
+
+

+ If you use additional optional partitions, be sure to add + them also. +

+
+

+ If you are using a swap + partition, ensure that it is enabled using the swapon command: +

+
+/sbin/swapon -v /dev/<zzz>
+
+

+ Replace <zzz> + with the name of the swap + partition. +

+

+ Now that there is an established place to work, it is time to + download the packages. +

+
+
+
+
+
+
+

+ Chapter 3. Packages + and Patches +

+
+
+
+
+
+
+
+

+ 3.1. Introduction +

+
+
+
+

+ This chapter includes a list of packages that need to be + downloaded in order to build a basic Linux system. The listed + version numbers correspond to versions of the software that are + known to work, and this book is based on their use. We highly + recommend against using newer versions because the build + commands for one version may not work with a newer version. The + newest package versions may also have problems that require + work-arounds. These work-arounds will be developed and + stabilized in the development version of the book. +

+

+ Download locations may not always be accessible. If a download + location has changed since this book was published, Google + (http://www.google.com/) provides a + useful search engine for most packages. If this search is + unsuccessful, try one of the alternative means of downloading + discussed at http://www.linuxfromscratch.org/lfs/packages.html#packages. +

+

+ Downloaded packages and patches will need to be stored + somewhere that is conveniently available throughout the entire + build. A working directory is also required to unpack the + sources and build them. $LFS/sources can be used both as the place to + store the tarballs and patches and as a working directory. By + using this directory, the required elements will be located on + the LFS partition and will be available during all stages of + the building process. +

+

+ To create this directory, execute the following command, as + user root, before starting the + download session: +

+
+mkdir -v $LFS/sources
+
+

+ Make this directory writable and sticky. Sticky + means that even if multiple users have write permission on a + directory, only the owner of a file can delete the file within + a sticky directory. The following command will enable the write + and sticky modes: +

+
+chmod -v a+wt $LFS/sources
+
+

+ An easy way to download all of the packages and patches is by + using wget-list as an + input to wget. + For example: +

+
+wget --input-file=wget-list --continue --directory-prefix=$LFS/sources
+
+

+ Additionally, starting with LFS-7.0, there is a separate file, + md5sums, which can be + used to verify that all the correct packages are available + before proceeding. Place that file in $LFS/sources and run: +

+
+pushd $LFS/sources
+md5sum -c md5sums
+popd
+
+
+
+
+
+
+

+ 3.2. All Packages +

+
+
+
+

+ Download or otherwise obtain the following packages: +

+
+
+
+
+ Acl (2.2.53) - 513 + KB: +
+
+

+ Download: + http://download.savannah.gnu.org/releases/acl/acl-2.2.53.tar.gz +

+

+ MD5 sum: 007aabf1dbb550bcddde52a244cd1070 +

+
+
+ Attr (2.4.48) - 457 KB: +
+
+

+ Home page: https://savannah.nongnu.org/projects/attr +

+

+ Download: + http://download.savannah.gnu.org/releases/attr/attr-2.4.48.tar.gz +

+

+ MD5 sum: bc1e5cb5c96d99b24886f1f527d3bb3d +

+
+
+ Autoconf (2.69) - 1,186 KB: +
+
+

+ Home page: http://www.gnu.org/software/autoconf/ +

+

+ Download: http://ftp.gnu.org/gnu/autoconf/autoconf-2.69.tar.xz +

+

+ MD5 sum: 50f97f4159805e374639a73e2636f22e +

+
+
+ Automake (1.16.1) - 1,499 KB: +
+
+

+ Home page: http://www.gnu.org/software/automake/ +

+

+ Download: + http://ftp.gnu.org/gnu/automake/automake-1.16.1.tar.xz +

+

+ MD5 sum: 53f38e7591fa57c3d2cee682be668e5b +

+
+
+ Bash (5.0) - 9,898 + KB: +
+
+

+ Home page: http://www.gnu.org/software/bash/ +

+

+ Download: http://ftp.gnu.org/gnu/bash/bash-5.0.tar.gz +

+

+ MD5 sum: 2b44b47b905be16f45709648f671820b +

+
+
+ Bc (1.07.1) - 411 + KB: +
+
+

+ Home page: http://www.gnu.org/software/bc/ +

+

+ Download: http://ftp.gnu.org/gnu/bc/bc-1.07.1.tar.gz +

+

+ MD5 sum: cda93857418655ea43590736fc3ca9fc +

+
+
+ Binutils (2.32) - 20,288 KB: +
+
+

+ Home page: http://www.gnu.org/software/binutils/ +

+

+ Download: http://ftp.gnu.org/gnu/binutils/binutils-2.32.tar.xz +

+

+ MD5 sum: 0d174cdaf85721c5723bf52355be41e6 +

+
+
+ Bison (3.3.2) - 2,060 KB: +
+
+

+ Home page: http://www.gnu.org/software/bison/ +

+

+ Download: http://ftp.gnu.org/gnu/bison/bison-3.3.2.tar.xz +

+

+ MD5 sum: c9b552dee234b2f6b66e56b27e5234c9 +

+
+
+ Bzip2 (1.0.6) - 764 KB: +
+
+

+ Download: + http://anduin.linuxfromscratch.org/LFS/bzip2-1.0.6.tar.gz +

+

+ MD5 sum: 00b516f4704d4a7cb50a1d97e6e8e15b +

+
+
+ Check (0.12.0) - 747 KB: +
+
+

+ Home page: https://libcheck.github.io/check +

+

+ Download: + https://github.com/libcheck/check/releases/download/0.12.0/check-0.12.0.tar.gz +

+

+ MD5 sum: 31b17c6075820a434119592941186f70 +

+
+
+ Coreutils (8.30) - 5,234 KB: +
+
+

+ Home page: http://www.gnu.org/software/coreutils/ +

+

+ Download: + http://ftp.gnu.org/gnu/coreutils/coreutils-8.30.tar.xz +

+

+ MD5 sum: ab06d68949758971fe744db66b572816 +

+
+
+ DejaGNU (1.6.2) - 514 KB: +
+
+

+ Home page: http://www.gnu.org/software/dejagnu/ +

+

+ Download: http://ftp.gnu.org/gnu/dejagnu/dejagnu-1.6.2.tar.gz +

+

+ MD5 sum: e1b07516533f351b3aba3423fafeffd6 +

+
+
+ Diffutils (3.7) - 1,415 KB: +
+
+

+ Home page: http://www.gnu.org/software/diffutils/ +

+

+ Download: + http://ftp.gnu.org/gnu/diffutils/diffutils-3.7.tar.xz +

+

+ MD5 sum: 4824adc0e95dbbf11dfbdfaad6a1e461 +

+
+
+ E2fsprogs (1.44.5) - 7,448 KB: +
+
+

+ Home page: http://e2fsprogs.sourceforge.net/ +

+

+ Download: + https://downloads.sourceforge.net/project/e2fsprogs/e2fsprogs/v1.44.5/e2fsprogs-1.44.5.tar.gz +

+

+ MD5 sum: 8d78b11d04d26c0b2dd149529441fa80 +

+
+
+ Elfutils (0.176) - 8,444 KB: +
+
+

+ Home page: https://sourceware.org/ftp/elfutils/ +

+

+ Download: + https://sourceware.org/ftp/elfutils/0.176/elfutils-0.176.tar.bz2 +

+

+ MD5 sum: 077e4f49320cad82bf17a997068b1db9 +

+
+
+ Eudev (3.2.7) - 1,849 KB: +
+
+

+ Download: + https://dev.gentoo.org/~blueness/eudev/eudev-3.2.7.tar.gz +

+

+ MD5 sum: c75d99910c1791dd9430d26ab76059c0 +

+
+
+ Expat (2.2.6) - 502 KB: +
+
+

+ Home page: https://libexpat.github.io/ +

+

+ Download: + https://prdownloads.sourceforge.net/expat/expat-2.2.6.tar.bz2 +

+

+ MD5 sum: ca047ae951b40020ac831c28859161b2 +

+
+
+ Expect (5.45.4) - 618 KB: +
+
+

+ Home page: https://core.tcl.tk/expect/ +

+

+ Download: + https://prdownloads.sourceforge.net/expect/expect5.45.4.tar.gz +

+

+ MD5 sum: 00fce8de158422f5ccd2666512329bd2 +

+
+
+ File (5.36) - 856 + KB: +
+
+

+ Home page: https://www.darwinsys.com/file/ +

+

+ Download: ftp://ftp.astron.com/pub/file/file-5.36.tar.gz +

+

+ MD5 sum: 9af0eb3f5db4ae00fffc37f7b861575c +

+
+

+ Note +

+

+ File (5.36) may no longer be available at the listed + location. The site administrators of the master + download location occasionally remove older versions + when new ones are released. An alternative download + location that may have the correct version available + can also be found at: + http://www.linuxfromscratch.org/lfs/download.html#ftp. +

+
+
+
+ Findutils (4.6.0) - 3,692 KB: +
+
+

+ Home page: http://www.gnu.org/software/findutils/ +

+

+ Download: + http://ftp.gnu.org/gnu/findutils/findutils-4.6.0.tar.gz +

+

+ MD5 sum: 9936aa8009438ce185bea2694a997fc1 +

+
+
+ Flex (2.6.4) - 1,386 KB: +
+
+

+ Home page: https://github.com/westes/flex +

+

+ Download: + https://github.com/westes/flex/releases/download/v2.6.4/flex-2.6.4.tar.gz +

+

+ MD5 sum: 2882e3179748cc9f9c23ec593d6adc8d +

+
+
+ Gawk (4.2.1) - 2,916 KB: +
+
+

+ Home page: http://www.gnu.org/software/gawk/ +

+

+ Download: http://ftp.gnu.org/gnu/gawk/gawk-4.2.1.tar.xz +

+

+ MD5 sum: 95cf553f50ec9f386b5dfcd67f30180a +

+
+
+ GCC (8.2.0) - 61,974 KB: +
+
+

+ Home page: https://gcc.gnu.org/ +

+

+ Download: + http://ftp.gnu.org/gnu/gcc/gcc-8.2.0/gcc-8.2.0.tar.xz +

+

+ MD5 sum: 4ab282f414676496483b3e1793d07862 +

+
+
+ GDBM (1.18.1) - 920 KB: +
+
+

+ Home page: http://www.gnu.org/software/gdbm/ +

+

+ Download: http://ftp.gnu.org/gnu/gdbm/gdbm-1.18.1.tar.gz +

+

+ MD5 sum: 988dc82182121c7570e0cb8b4fcd5415 +

+
+
+ Gettext (0.19.8.1) - 7,041 KB: +
+
+

+ Home page: http://www.gnu.org/software/gettext/ +

+

+ Download: + http://ftp.gnu.org/gnu/gettext/gettext-0.19.8.1.tar.xz +

+

+ MD5 sum: df3f5690eaa30fd228537b00cb7b7590 +

+
+
+ Glibc (2.29) - 16,129 KB: +
+
+

+ Home page: http://www.gnu.org/software/libc/ +

+

+ Download: http://ftp.gnu.org/gnu/glibc/glibc-2.29.tar.xz +

+

+ MD5 sum: e6c279d5b2f0736f740216f152acf974 +

+
+
+ GMP (6.1.2) - 1,901 KB: +
+
+

+ Home page: http://www.gnu.org/software/gmp/ +

+

+ Download: http://ftp.gnu.org/gnu/gmp/gmp-6.1.2.tar.xz +

+

+ MD5 sum: f58fa8001d60c4c77595fbbb62b63c1d +

+
+
+ Gperf (3.1) - 1,188 KB: +
+
+

+ Home page: http://www.gnu.org/software/gperf/ +

+

+ Download: http://ftp.gnu.org/gnu/gperf/gperf-3.1.tar.gz +

+

+ MD5 sum: 9e251c0a618ad0824b51117d5d9db87e +

+
+
+ Grep (3.3) - 1,440 + KB: +
+
+

+ Home page: http://www.gnu.org/software/grep/ +

+

+ Download: http://ftp.gnu.org/gnu/grep/grep-3.3.tar.xz +

+

+ MD5 sum: 05d0718a1b7cc706a4bdf8115363f1ed +

+
+
+ Groff (1.22.4) - 4,044 KB: +
+
+

+ Home page: http://www.gnu.org/software/groff/ +

+

+ Download: http://ftp.gnu.org/gnu/groff/groff-1.22.4.tar.gz +

+

+ MD5 sum: 08fb04335e2f5e73f23ea4c3adbf0c5f +

+
+
+ GRUB (2.02) - 5,970 KB: +
+
+

+ Home page: http://www.gnu.org/software/grub/ +

+

+ Download: https://ftp.gnu.org/gnu/grub/grub-2.02.tar.xz +

+

+ MD5 sum: 8a4a2a95aac551fb0fba860ceabfa1d3 +

+
+
+ Gzip (1.10) - 757 + KB: +
+
+

+ Home page: http://www.gnu.org/software/gzip/ +

+

+ Download: http://ftp.gnu.org/gnu/gzip/gzip-1.10.tar.xz +

+

+ MD5 sum: 691b1221694c3394f1c537df4eee39d3 +

+
+
+ Iana-Etc (2.30) - 201 KB: +
+
+

+ Home page: http://freecode.com/projects/iana-etc +

+

+ Download: + http://anduin.linuxfromscratch.org/LFS/iana-etc-2.30.tar.bz2 +

+

+ MD5 sum: 3ba3afb1d1b261383d247f46cb135ee8 +

+
+
+ Inetutils (1.9.4) - 1,333 KB: +
+
+

+ Home page: http://www.gnu.org/software/inetutils/ +

+

+ Download: + http://ftp.gnu.org/gnu/inetutils/inetutils-1.9.4.tar.xz +

+

+ MD5 sum: 87fef1fa3f603aef11c41dcc097af75e +

+
+
+ Intltool (0.51.0) - 159 KB: +
+
+

+ Home page: https://freedesktop.org/wiki/Software/intltool +

+

+ Download: + https://launchpad.net/intltool/trunk/0.51.0/+download/intltool-0.51.0.tar.gz +

+

+ MD5 sum: 12e517cac2b57a0121cda351570f1e63 +

+
+
+ IPRoute2 (4.20.0) - 691 KB: +
+
+

+ Home page: https://www.kernel.org/pub/linux/utils/net/iproute2/ +

+

+ Download: + https://www.kernel.org/pub/linux/utils/net/iproute2/iproute2-4.20.0.tar.xz +

+

+ MD5 sum: f3dab4c812812bbb5873cb90f471bcbf +

+
+
+ Kbd (2.0.4) - 1,008 KB: +
+
+

+ Home page: http://ftp.altlinux.org/pub/people/legion/kbd +

+

+ Download: + https://www.kernel.org/pub/linux/utils/kbd/kbd-2.0.4.tar.xz +

+

+ MD5 sum: c1635a5a83b63aca7f97a3eab39ebaa6 +

+
+
+ Kmod (26) - 540 + KB: +
+
+

+ Download: + https://www.kernel.org/pub/linux/utils/kernel/kmod/kmod-26.tar.xz +

+

+ MD5 sum: 1129c243199bdd7db01b55a61aa19601 +

+
+
+ Less (530) - 332 + KB: +
+
+

+ Home page: http://www.greenwoodsoftware.com/less/ +

+

+ Download: + http://www.greenwoodsoftware.com/less/less-530.tar.gz +

+

+ MD5 sum: 6a39bccf420c946b0fd7ffc64961315b +

+
+
+ LFS-Bootscripts (20180820) - + 32 KB: +
+
+

+ Download: + http://www.linuxfromscratch.org/lfs/downloads/8.4/lfs-bootscripts-20180820.tar.bz2 +

+

+ MD5 sum: e08811a18356eeef524b2ed333e8cb86 +

+
+
+ Libcap (2.26) - 66 + KB: +
+
+

+ Home page: https://sites.google.com/site/fullycapable/ +

+

+ Download: + https://www.kernel.org/pub/linux/libs/security/linux-privs/libcap2/libcap-2.26.tar.xz +

+

+ MD5 sum: 968ac4d42a1a71754313527be2ab5df3 +

+
+
+ Libffi (3.2.1) - 920 KB: +
+
+

+ Home page: https://sourceware.org/libffi/ +

+

+ Download: ftp://sourceware.org/pub/libffi/libffi-3.2.1.tar.gz +

+

+ MD5 sum: 83b89587607e3eb65c70d361f13bab43 +

+
+
+ Libpipeline (1.5.1) - 965 KB: +
+
+

+ Home page: http://libpipeline.nongnu.org/ +

+

+ Download: + http://download.savannah.gnu.org/releases/libpipeline/libpipeline-1.5.1.tar.gz +

+

+ MD5 sum: 4c8fe6cd85422baafd6e060f896c61bc +

+
+
+ Libtool (2.4.6) - 951 KB: +
+
+

+ Home page: http://www.gnu.org/software/libtool/ +

+

+ Download: http://ftp.gnu.org/gnu/libtool/libtool-2.4.6.tar.xz +

+

+ MD5 sum: 1bfb9b923f2c1339b4d2ce1807064aa5 +

+
+
+ Linux (4.20.12) - 101,841 KB: +
+
+

+ Home page: https://www.kernel.org/ +

+

+ Download: + https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.20.12.tar.xz +

+

+ MD5 sum: edd3015435d60598b99cf6aaf223710e +

+
+

+ Note +

+

+ The Linux kernel is updated relatively often, many + times due to discoveries of security vulnerabilities. + The latest available 4.20.x kernel version should be + used, unless the errata page says otherwise. +

+

+ For users with limited speed or expensive bandwidth + who wish to update the Linux kernel, a baseline + version of the package and patches can be downloaded + separately. This may save some time or cost for a + subsequent patch level upgrade within a minor + release. +

+
+
+
+ M4 (1.4.18) - 1,180 KB: +
+
+

+ Home page: http://www.gnu.org/software/m4/ +

+

+ Download: http://ftp.gnu.org/gnu/m4/m4-1.4.18.tar.xz +

+

+ MD5 sum: 730bb15d96fffe47e148d1e09235af82 +

+
+
+ Make (4.2.1) - 1,375 KB: +
+
+

+ Home page: http://www.gnu.org/software/make/ +

+

+ Download: http://ftp.gnu.org/gnu/make/make-4.2.1.tar.bz2 +

+

+ MD5 sum: 15b012617e7c44c0ed482721629577ac +

+
+
+ Man-DB (2.8.5) - 1,746 KB: +
+
+

+ Home page: https://www.nongnu.org/man-db/ +

+

+ Download: + http://download.savannah.gnu.org/releases/man-db/man-db-2.8.5.tar.xz +

+

+ MD5 sum: c5c6c3434be14a5527d43b5ad0f09a13 +

+
+
+ Man-pages (4.16) - 1,592 KB: +
+
+

+ Home page: https://www.kernel.org/doc/man-pages/ +

+

+ Download: + https://www.kernel.org/pub/linux/docs/man-pages/man-pages-4.16.tar.xz +

+

+ MD5 sum: ad9f1ff81276fe8d90d077484d6d4b5e +

+
+
+ Meson (0.49.2) - 1,310 KB: +
+
+

+ Home page: https://mesonbuild.com +

+

+ Download: + https://github.com/mesonbuild/meson/releases/download/0.49.2/meson-0.49.2.tar.gz +

+

+ MD5 sum: 0267b0871266056184c484792572c682 +

+
+
+ MPC (1.1.0) - 685 + KB: +
+
+

+ Home page: http://www.multiprecision.org/ +

+

+ Download: https://ftp.gnu.org/gnu/mpc/mpc-1.1.0.tar.gz +

+

+ MD5 sum: 4125404e41e482ec68282a2e687f6c73 +

+
+
+ MPFR (4.0.2) - 1,409 KB: +
+
+

+ Home page: https://www.mpfr.org/ +

+

+ Download: http://www.mpfr.org/mpfr-4.0.2/mpfr-4.0.2.tar.xz +

+

+ MD5 sum: 320fbc4463d4c8cb1e566929d8adc4f8 +

+
+
+ Ninja (1.9.0) - 187 KB: +
+
+

+ Home page: https://ninja-build.org/ +

+

+ Download: + https://github.com/ninja-build/ninja/archive/v1.9.0/ninja-1.9.0.tar.gz +

+

+ MD5 sum: f340be768a76724b83e6daab69009902 +

+
+
+ Ncurses (6.1) - 3,288 KB: +
+
+

+ Home page: http://www.gnu.org/software/ncurses/ +

+

+ Download: http://ftp.gnu.org/gnu/ncurses/ncurses-6.1.tar.gz +

+

+ MD5 sum: 98c889aaf8d23910d2b92d65be2e737a +

+
+
+ OpenSSL (1.1.1a) - 8,160 KB: +
+
+

+ Home page: https://www.openssl.org/ +

+

+ Download: https://openssl.org/source/openssl-1.1.1a.tar.gz +

+

+ MD5 sum: 963deb2272d6be7d4c2458afd2517b73 +

+
+
+ Patch (2.7.6) - 766 KB: +
+
+

+ Home page: https://savannah.gnu.org/projects/patch/ +

+

+ Download: http://ftp.gnu.org/gnu/patch/patch-2.7.6.tar.xz +

+

+ MD5 sum: 78ad9937e4caadcba1526ef1853730d5 +

+
+
+ Perl (5.28.1) - 12,083 KB: +
+
+

+ Home page: https://www.perl.org/ +

+

+ Download: https://www.cpan.org/src/5.0/perl-5.28.1.tar.xz +

+

+ MD5 sum: fbb590c305f2f88578f448581b8cf9c4 +

+
+
+ Pkg-config (0.29.2) - 1,970 KB: +
+
+

+ Home page: https://www.freedesktop.org/wiki/Software/pkg-config +

+

+ Download: + https://pkg-config.freedesktop.org/releases/pkg-config-0.29.2.tar.gz +

+

+ MD5 sum: f6e931e319531b736fadc017f470e68a +

+
+
+ Procps (3.3.15) - 884 KB: +
+
+

+ Home page: https://sourceforge.net/projects/procps-ng +

+

+ Download: + https://sourceforge.net/projects/procps-ng/files/Production/procps-ng-3.3.15.tar.xz +

+

+ MD5 sum: 2b0717a7cb474b3d6dfdeedfbad2eccc +

+
+
+ Psmisc (23.2) - 297 KB: +
+
+

+ Home page: http://psmisc.sourceforge.net/ +

+

+ Download: + https://sourceforge.net/projects/psmisc/files/psmisc/psmisc-23.2.tar.xz +

+

+ MD5 sum: 0524258861f00be1a02d27d39d8e5e62 +

+
+
+ Python (3.7.2) - 16,648 KB: +
+
+

+ Home page: https://www.python.org/ +

+

+ Download: + https://www.python.org/ftp/python/3.7.2/Python-3.7.2.tar.xz +

+

+ MD5 sum: df6ec36011808205beda239c72f947cb +

+
+
+ Python Documentation (3.7.2) - + 6,072 KB: +
+
+

+ Download: + https://docs.python.org/ftp/python/doc/3.7.2/python-3.7.2-docs-html.tar.bz2 +

+

+ MD5 sum: 107ade7bb17efd104a22b2d457f4cb67 +

+
+
+ Readline (8.0) - 2,907 KB: +
+
+

+ Home page: https://tiswww.case.edu/php/chet/readline/rltop.html +

+

+ Download: http://ftp.gnu.org/gnu/readline/readline-8.0.tar.gz +

+

+ MD5 sum: 7e6c1f16aee3244a69aba6e438295ca3 +

+
+
+ Sed (4.7) - 1,268 + KB: +
+
+

+ Home page: http://www.gnu.org/software/sed/ +

+

+ Download: http://ftp.gnu.org/gnu/sed/sed-4.7.tar.xz +

+

+ MD5 sum: 777ddfd9d71dd06711fe91f0925e1573 +

+
+
+ Shadow (4.6) - 1,639 KB: +
+
+

+ Download: + https://github.com/shadow-maint/shadow/releases/download/4.6/shadow-4.6.tar.xz +

+

+ MD5 sum: b491fecbf1232632c32ff8f1437fd60e +

+
+
+ Sysklogd (1.5.1) - 88 KB: +
+
+

+ Home page: http://www.infodrom.org/projects/sysklogd/ +

+

+ Download: + http://www.infodrom.org/projects/sysklogd/download/sysklogd-1.5.1.tar.gz +

+

+ MD5 sum: c70599ab0d037fde724f7210c2c8d7f8 +

+
+
+ Sysvinit (2.93) - 115 KB: +
+
+

+ Home page: https://savannah.nongnu.org/projects/sysvinit +

+

+ Download: + http://download.savannah.gnu.org/releases/sysvinit/sysvinit-2.93.tar.xz +

+

+ MD5 sum: 041dbe36a5dd80b2108aff305bc10620 +

+
+
+ Tar (1.31) - 2,052 + KB: +
+
+

+ Home page: http://www.gnu.org/software/tar/ +

+

+ Download: http://ftp.gnu.org/gnu/tar/tar-1.31.tar.xz +

+

+ MD5 sum: bc9a89da1185ceb2210de12552c43ce2 +

+
+
+ Tcl (8.6.9) - 9,772 KB: +
+
+

+ Home page: http://tcl.sourceforge.net/ +

+

+ Download: + https://downloads.sourceforge.net/tcl/tcl8.6.9-src.tar.gz +

+

+ MD5 sum: aa0a121d95a0e7b73a036f26028538d4 +

+
+
+ Texinfo (6.5) - 4,399 KB: +
+
+

+ Home page: http://www.gnu.org/software/texinfo/ +

+

+ Download: http://ftp.gnu.org/gnu/texinfo/texinfo-6.5.tar.xz +

+

+ MD5 sum: 3715197e62e0e07f85860b3d7aab55ed +

+
+
+ Time Zone Data (2018i) - 369 KB: +
+
+

+ Home page: https://www.iana.org/time-zones +

+

+ Download: + https://www.iana.org/time-zones/repository/releases/tzdata2018i.tar.gz +

+

+ MD5 sum: b3f0a1a789480a036e58466cd0702477 +

+
+
+ Udev-lfs Tarball (udev-lfs-20171102) - + 11 KB: +
+
+

+ Download: + http://anduin.linuxfromscratch.org/LFS/udev-lfs-20171102.tar.bz2 +

+

+ MD5 sum: d92afb0c6e8e616792068ee4737b0d24 +

+
+
+ Util-linux (2.33.1) - 4,542 KB: +
+
+

+ Home page: http://freecode.com/projects/util-linux +

+

+ Download: + https://www.kernel.org/pub/linux/utils/util-linux/v2.33/util-linux-2.33.1.tar.xz +

+

+ MD5 sum: 6fcfea2043b5ac188fd3eed56aeb5d90 +

+
+
+ Vim (8.1) - 10,995 + KB: +
+
+

+ Home page: https://www.vim.org +

+

+ Download: ftp://ftp.vim.org/pub/vim/unix/vim-8.1.tar.bz2 +

+

+ MD5 sum: 1739a1df312305155285f0cfa6118294 +

+
+
+ XML::Parser (2.44) - 232 KB: +
+
+

+ Home page: https://github.com/chorny/XML-Parser +

+

+ Download: + https://cpan.metacpan.org/authors/id/T/TO/TODDR/XML-Parser-2.44.tar.gz +

+

+ MD5 sum: af4813fe3952362451201ced6fbce379 +

+
+
+ Xz Utils (5.2.4) - 1030 KB: +
+
+

+ Home page: https://tukaani.org/xz +

+

+ Download: https://tukaani.org/xz/xz-5.2.4.tar.xz +

+

+ MD5 sum: 003e4d0b1b1899fc6e3000b24feddf7c +

+
+
+ Zlib (1.2.11) - 457 KB: +
+
+

+ Home page: https://www.zlib.net/ +

+

+ Download: https://zlib.net/zlib-1.2.11.tar.xz +

+

+ MD5 sum: 85adef240c5f370b308da8c938951a68 +

+
+
+
+
+

+ Total size of these packages: about 374 MB +

+
+
+
+
+
+

+ 3.3. Needed Patches +

+
+
+
+

+ In addition to the packages, several patches are also required. + These patches correct any mistakes in the packages that should + be fixed by the maintainer. The patches also make small + modifications to make the packages easier to work with. The + following patches will be needed to build an LFS system: +

+
+
+
+
+ Bzip2 Documentation Patch - + 1.6 KB: +
+
+

+ Download: + http://www.linuxfromscratch.org/patches/lfs/8.4/bzip2-1.0.6-install_docs-1.patch +

+

+ MD5 sum: 6a5ac7e89b791aae556de0f745916f7f +

+
+
+ Coreutils Internationalization Fixes + Patch - 168 KB: +
+
+

+ Download: + http://www.linuxfromscratch.org/patches/lfs/8.4/coreutils-8.30-i18n-1.patch +

+

+ MD5 sum: a9404fb575dfd5514f3c8f4120f9ca7d +

+
+
+ Glibc FHS Patch - 2.8 KB: +
+
+

+ Download: + http://www.linuxfromscratch.org/patches/lfs/8.4/glibc-2.29-fhs-1.patch +

+

+ MD5 sum: 9a5997c3452909b1769918c759eff8a2 +

+
+
+ Kbd Backspace/Delete Fix Patch - + 12 KB: +
+
+

+ Download: + http://www.linuxfromscratch.org/patches/lfs/8.4/kbd-2.0.4-backspace-1.patch +

+

+ MD5 sum: f75cca16a38da6caa7d52151f7136895 +

+
+
+ Sysvinit Consolidated Patch - + 2.6 KB: +
+
+

+ Download: + http://www.linuxfromscratch.org/patches/lfs/8.4/sysvinit-2.93-consolidated-1.patch +

+

+ MD5 sum: aaa84675e717504d7d3da452c8c2eaf1 +

+
+
+
+
+

+ Total size of these patches: about 187 KB +

+

+ In addition to the above required patches, there exist a number + of optional patches created by the LFS community. These + optional patches solve minor problems or enable functionality + that is not enabled by default. Feel free to peruse the patches + database located at http://www.linuxfromscratch.org/patches/downloads/ + and acquire any additional patches to suit your system needs. +

+
+
+
+
+
+
+

+ Chapter 4. Final + Preparations +

+
+
+
+
+
+
+
+

+ 4.1. Introduction +

+
+
+
+

+ In this chapter, we will perform a few additional tasks to + prepare for building the temporary system. We will create a + directory in $LFS for the + installation of the temporary tools, add an unprivileged user + to reduce risk, and create an appropriate build environment for + that user. We will also explain the unit of time we use to + measure how long LFS packages take to build, or SBUs, + and give some information about package test suites. +

+
+
+
+
+
+

+ 4.2. Creating the + $LFS/tools Directory +

+
+
+
+

+ All programs compiled in Chapter 5 + will be installed under $LFS/tools to keep them separate from the + programs compiled in Chapter 6. + The programs compiled here are temporary tools and will not be + a part of the final LFS system. By keeping these programs in a + separate directory, they can easily be discarded later after + their use. This also prevents these programs from ending up in + the host production directories (easy to do by accident in + Chapter 5). +

+

+ Create the required directory by running the following as + root: +

+
+mkdir -v $LFS/tools
+
+

+ The next step is to create a /tools symlink on the host system. This will + point to the newly-created directory on the LFS partition. Run + this command as root as well: +

+
+ln -sv $LFS/tools /
+
+
+

+ Note +

+

+ The above command is correct. The ln command has a few + syntactic variations, so be sure to check info coreutils ln and + ln(1) before reporting what you + may think is an error. +

+
+

+ The created symlink enables the toolchain to be compiled so + that it always refers to /tools, + meaning that the compiler, assembler, and linker will work both + in Chapter 5 (when we are still using some tools from the + host) and in the next (when we are chrooted to the LFS partition). +

+
+
+
+
+
+

+ 4.3. Adding the LFS User +

+
+
+
+

+ When logged in as user root, + making a single mistake can damage or destroy a system. + Therefore, we recommend building the packages in this chapter + as an unprivileged user. You could use your own user name, but + to make it easier to set up a clean working environment, create + a new user called lfs as a + member of a new group (also named lfs) and use this user during the + installation process. As root, + issue the following commands to add the new user: +

+
+groupadd lfs
+useradd -s /bin/bash -g lfs -m -k /dev/null lfs
+
+
+

+ The meaning of the command line options: +

+
+
+ -s + /bin/bash +
+
+

+ This makes bash the default shell + for user lfs. +

+
+
+ -g + lfs +
+
+

+ This option adds user lfs + to group lfs. +

+
+
+ -m +
+
+

+ This creates a home directory for lfs. +

+
+
+ -k + /dev/null +
+
+

+ This parameter prevents possible copying of files from a + skeleton directory (default is /etc/skel) by changing the input + location to the special null device. +

+
+
+ lfs +
+
+

+ This is the actual name for the created group and user. +

+
+
+
+

+ To log in as lfs (as opposed to + switching to user lfs when + logged in as root, which does + not require the lfs user to + have a password), give lfs a + password: +

+
+passwd lfs
+
+

+ Grant lfs full access to + $LFS/tools by making lfs the directory owner: +

+
+chown -v lfs $LFS/tools
+
+

+ If a separate working directory was created as suggested, give + user lfs ownership of this + directory: +

+
+chown -v lfs $LFS/sources
+
+

+ Next, login as user lfs. This + can be done via a virtual console, through a display manager, + or with the following substitute user command: +

+
+su - lfs
+
+

+ The - instructs + su to start a + login shell as opposed to a non-login shell. The difference + between these two types of shells can be found in detail in + bash(1) and info bash. +

+
+
+
+
+
+

+ 4.4. Setting Up the + Environment +

+
+
+
+

+ Set up a good working environment by creating two new startup + files for the bash shell. While logged in + as user lfs, issue the + following command to create a new .bash_profile: +

+
+cat > ~/.bash_profile << "EOF"
+exec env -i HOME=$HOME TERM=$TERM PS1='\u:\w\$ ' /bin/bash
+EOF
+
+

+ When logged on as user lfs, the + initial shell is usually a login shell which reads the + /etc/profile of the host + (probably containing some settings and environment variables) + and then .bash_profile. The + exec env + -i.../bin/bash command in the .bash_profile file replaces the running shell + with a new one with a completely empty environment, except for + the HOME, TERM, and PS1 + variables. This ensures that no unwanted and potentially + hazardous environment variables from the host system leak into + the build environment. The technique used here achieves the + goal of ensuring a clean environment. +

+

+ The new instance of the shell is a non-login shell, which does not read + the /etc/profile or .bash_profile files, but rather reads the + .bashrc file instead. Create the + .bashrc file now: +

+
+cat > ~/.bashrc << "EOF"
+set +h
+umask 022
+LFS=/mnt/lfs
+LC_ALL=POSIX
+LFS_TGT=$(uname -m)-lfs-linux-gnu
+PATH=/tools/bin:/bin:/usr/bin
+export LFS LC_ALL LFS_TGT PATH
+EOF
+
+

+ The set +h + command turns off bash's hash function. Hashing + is ordinarily a useful feature—bash uses a hash table to + remember the full path of executable files to avoid searching + the PATH time and again to find the + same executable. However, the new tools should be used as soon + as they are installed. By switching off the hash function, the + shell will always search the PATH + when a program is to be run. As such, the shell will find the + newly compiled tools in $LFS/tools as soon as they are available + without remembering a previous version of the same program in a + different location. +

+

+ Setting the user file-creation mask (umask) to 022 ensures that + newly created files and directories are only writable by their + owner, but are readable and executable by anyone (assuming + default modes are used by the open(2) system call, new files will end up + with permission mode 644 and directories with mode 755). +

+

+ The LFS variable should be set to + the chosen mount point. +

+

+ The LC_ALL variable controls the + localization of certain programs, making their messages follow + the conventions of a specified country. Setting LC_ALL to POSIX + or C (the two are equivalent) ensures + that everything will work as expected in the chroot + environment. +

+

+ The LFS_TGT variable sets a + non-default, but compatible machine description for use when + building our cross compiler and linker and when cross compiling + our temporary toolchain. More information is contained in + Section 5.2, + “Toolchain Technical Notes”. +

+

+ By putting /tools/bin ahead of + the standard PATH, all the programs + installed in Chapter 5 + are picked up by the shell immediately after their + installation. This, combined with turning off hashing, limits + the risk that old programs are used from the host when the same + programs are available in the chapter 5 environment. +

+

+ Finally, to have the environment fully prepared for building + the temporary tools, source the just-created user profile: +

+
+source ~/.bash_profile
+
+
+
+
+
+
+

+ 4.5. About SBUs +

+
+
+
+

+ Many people would like to know beforehand approximately how + long it takes to compile and install each package. Because + Linux From Scratch can be built on many different systems, it + is impossible to provide accurate time estimates. The biggest + package (Glibc) will take approximately 20 minutes on the + fastest systems, but could take up to three days on slower + systems! Instead of providing actual times, the Standard Build + Unit (SBU) measure will be used instead. +

+

+ The SBU measure works as follows. The first package to be + compiled from this book is Binutils in Chapter 5. + The time it takes to compile this package is what will be + referred to as the Standard Build Unit or SBU. All other + compile times will be expressed relative to this time. +

+

+ For example, consider a package whose compilation time is 4.5 + SBUs. This means that if a system took 10 minutes to compile + and install the first pass of Binutils, it will take + approximately 45 minutes + to build this example package. Fortunately, most build times + are shorter than the one for Binutils. +

+

+ In general, SBUs are not entirely accurate because they depend + on many factors, including the host system's version of GCC. + They are provided here to give an estimate of how long it might + take to install a package, but the numbers can vary by as much + as dozens of minutes in some cases. +

+
+

+ Note +

+

+ For many modern systems with multiple processors (or cores) + the compilation time for a package can be reduced by + performing a "parallel make" by either setting an environment + variable or telling the make program how many + processors are available. For instance, a Core2Duo can + support two simultaneous processes with: +

+
+export MAKEFLAGS='-j 2'
+
+

+ or just building with: +

+
+make -j2
+
+

+ When multiple processors are used in this way, the SBU units + in the book will vary even more than they normally would. In + some cases, the make step will simply fail. Analyzing the + output of the build process will also be more difficult + because the lines of different processes will be interleaved. + If you run into a problem with a build step, revert back to a + single processor build to properly analyze the error + messages. +

+
+
+
+
+
+
+

+ 4.6. About the Test + Suites +

+
+
+
+

+ Most packages provide a test suite. Running the test suite for + a newly built package is a good idea because it can provide a + sanity + check indicating that everything compiled + correctly. A test suite that passes its set of checks usually + proves that the package is functioning as the developer + intended. It does not, however, guarantee that the package is + totally bug free. +

+

+ Some test suites are more important than others. For example, + the test suites for the core toolchain packages—GCC, + Binutils, and Glibc—are of the utmost importance due to + their central role in a properly functioning system. The test + suites for GCC and Glibc can take a very long time to complete, + especially on slower hardware, but are strongly recommended. +

+
+

+ Note +

+

+ Experience has shown that there is little to be gained from + running the test suites in Chapter 5. + There can be no escaping the fact that the host system always + exerts some influence on the tests in that chapter, often + causing inexplicable failures. Because the tools built in + Chapter 5 + are temporary and eventually discarded, we do not recommend + running the test suites in Chapter 5 + for the average reader. The instructions for running those + test suites are provided for the benefit of testers and + developers, but they are strictly optional. +

+
+

+ A common issue with running the test suites for Binutils and + GCC is running out of pseudo terminals (PTYs). This can result + in a high number of failing tests. This may happen for several + reasons, but the most likely cause is that the host system does + not have the devpts file system + set up correctly. This issue is discussed in greater detail at + http://www.linuxfromscratch.org/lfs/faq.html#no-ptys. +

+

+ Sometimes package test suites will fail, but for reasons which + the developers are aware of and have deemed non-critical. + Consult the logs located at http://www.linuxfromscratch.org/lfs/build-logs/8.4/ + to verify whether or not these failures are expected. This site + is valid for all tests throughout this book. +

+
+
+
+
+
+
+

+ Chapter 5. Constructing + a Temporary System +

+
+
+
+
+
+
+
+

+ 5.1. Introduction +

+
+
+
+

+ This chapter shows how to build a minimal Linux system. This + system will contain just enough tools to start constructing the + final LFS system in Chapter 6 + and allow a working environment with more user convenience than + a minimum environment would. +

+

+ There are two steps in building this minimal system. The first + step is to build a new and host-independent toolchain + (compiler, assembler, linker, libraries, and a few useful + utilities). The second step uses this toolchain to build the + other essential tools. +

+

+ The files compiled in this chapter will be installed under the + $LFS/tools directory to keep them + separate from the files installed in the next chapter and the + host production directories. Since the packages compiled here + are temporary, we do not want them to pollute the soon-to-be + LFS system. +

+
+
+
+
+
+

+ 5.2. Toolchain + Technical Notes +

+
+
+
+

+ This section explains some of the rationale and technical + details behind the overall build method. It is not essential to + immediately understand everything in this section. Most of this + information will be clearer after performing an actual build. + This section can be referred to at any time during the process. +

+

+ The overall goal of Chapter 5 + is to produce a temporary area that contains a known-good set + of tools that can be isolated from the host system. By using + chroot, the + commands in the remaining chapters will be contained within + that environment, ensuring a clean, trouble-free build of the + target LFS system. The build process has been designed to + minimize the risks for new readers and to provide the most + educational value at the same time. +

+
+

+ Note +

+

+ Before continuing, be aware of the name of the working + platform, often referred to as the target triplet. A simple + way to determine the name of the target triplet is to run the + config.guess + script that comes with the source for many packages. Unpack + the Binutils sources and run the script: ./config.guess and note the + output. For example, for a 32-bit Intel processor the output + will be i686-pc-linux-gnu. On a 64-bit + system it will be x86_64-pc-linux-gnu. +

+

+ Also be aware of the name of the platform's dynamic linker, + often referred to as the dynamic loader (not to be confused + with the standard linker ld that is part of + Binutils). The dynamic linker provided by Glibc finds and + loads the shared libraries needed by a program, prepares the + program to run, and then runs it. The name of the dynamic + linker for a 32-bit Intel machine will be ld-linux.so.2 (ld-linux-x86-64.so.2 for 64-bit systems). A + sure-fire way to determine the name of the dynamic linker is + to inspect a random binary from the host system by running: + readelf -l <name of + binary> | grep interpreter and noting the + output. The authoritative reference covering all platforms is + in the shlib-versions file in + the root of the Glibc source tree. +

+
+

+ Some key technical points of how the Chapter 5 + build method works: +

+
+
    +
  • +

    + Slightly adjusting the name of the working platform, by + changing the "vendor" field target triplet by way of the + LFS_TGT variable, ensures that + the first build of Binutils and GCC produces a compatible + cross-linker and cross-compiler. Instead of producing + binaries for another architecture, the cross-linker and + cross-compiler will produce binaries compatible with the + current hardware. +

    +
  • +
  • +

    + The temporary libraries are cross-compiled. Because a + cross-compiler by its nature cannot rely on anything from + its host system, this method removes potential + contamination of the target system by lessening the + chance of headers or libraries from the host being + incorporated into the new tools. Cross-compilation also + allows for the possibility of building both 32-bit and + 64-bit libraries on 64-bit capable hardware. +

    +
  • +
  • +

    + Careful manipulation of the GCC source tells the compiler + which target dynamic linker will be used. +

    +
  • +
+
+

+ Binutils is installed first because the configure runs of both GCC + and Glibc perform various feature tests on the assembler and + linker to determine which software features to enable or + disable. This is more important than one might first realize. + An incorrectly configured GCC or Glibc can result in a subtly + broken toolchain, where the impact of such breakage might not + show up until near the end of the build of an entire + distribution. A test suite failure will usually highlight this + error before too much additional work is performed. +

+

+ Binutils installs its assembler and linker in two locations, + /tools/bin and /tools/$LFS_TGT/bin. The tools in one + location are hard linked to the other. An important facet of + the linker is its library search order. Detailed information + can be obtained from ld by passing it the + --verbose flag. For + example, an ld --verbose | grep + SEARCH will illustrate the current search paths + and their order. It shows which files are linked by + ld by compiling a + dummy program and passing the --verbose switch to the linker. + For example, gcc dummy.c + -Wl,--verbose 2>&1 | grep succeeded will + show all the files successfully opened during the linking. +

+

+ The next package installed is GCC. An example of what can be + seen during its run of configure is: +

+
+checking what assembler to use... /tools/i686-lfs-linux-gnu/bin/as
+checking what linker to use... /tools/i686-lfs-linux-gnu/bin/ld
+
+

+ This is important for the reasons mentioned above. It also + demonstrates that GCC's configure script does not search the + PATH directories to find which tools to use. However, during + the actual operation of gcc itself, the same search + paths are not necessarily used. To find out which standard + linker gcc will + use, run: gcc + -print-prog-name=ld. +

+

+ Detailed information can be obtained from gcc by passing it the + -v command line option + while compiling a dummy program. For example, gcc -v dummy.c will show + detailed information about the preprocessor, compilation, and + assembly stages, including gcc's included search paths + and their order. +

+

+ Next installed are sanitized Linux API headers. These allow the + standard C library (Glibc) to interface with features that the + Linux kernel will provide. +

+

+ The next package installed is Glibc. The most important + considerations for building Glibc are the compiler, binary + tools, and kernel headers. The compiler is generally not an + issue since Glibc will always use the compiler relating to the + --host parameter passed + to its configure script; e.g. in our case, the compiler will be + i686-lfs-linux-gnu-gcc. The + binary tools and kernel headers can be a bit more complicated. + Therefore, take no risks and use the available configure + switches to enforce the correct selections. After the run of + configure, check + the contents of the config.make + file in the glibc-build directory + for all important details. Note the use of CC="i686-lfs-gnu-gcc" to control + which binary tools are used and the use of the -nostdinc and -isystem flags to control the + compiler's include search path. These items highlight an + important aspect of the Glibc package—it is very + self-sufficient in terms of its build machinery and generally + does not rely on toolchain defaults. +

+

+ During the second pass of Binutils, we are able to utilize the + --with-lib-path + configure switch to control ld's library search path. +

+

+ For the second pass of GCC, its sources also need to be + modified to tell GCC to use the new dynamic linker. Failure to + do so will result in the GCC programs themselves having the + name of the dynamic linker from the host system's /lib directory embedded into them, which + would defeat the goal of getting away from the host. From this + point onwards, the core toolchain is self-contained and + self-hosted. The remainder of the Chapter 5 + packages all build against the new Glibc in /tools. +

+

+ Upon entering the chroot environment in Chapter 6, + the first major package to be installed is Glibc, due to its + self-sufficient nature mentioned above. Once this Glibc is + installed into /usr, we will + perform a quick changeover of the toolchain defaults, and then + proceed in building the rest of the target LFS system. +

+
+
+
+
+
+

+ 5.3. General + Compilation Instructions +

+
+
+
+

+ When building packages there are several assumptions made + within the instructions: +

+
+
    +
  • +

    + Several of the packages are patched before compilation, + but only when the patch is needed to circumvent a + problem. A patch is often needed in both this and the + next chapter, but sometimes in only one or the other. + Therefore, do not be concerned if instructions for a + downloaded patch seem to be missing. Warning messages + about offset or + fuzz may also be + encountered when applying a patch. Do not worry about + these warnings, as the patch was still successfully + applied. +

    +
  • +
  • +

    + During the compilation of most packages, there will be + several warnings that scroll by on the screen. These are + normal and can safely be ignored. These warnings are as + they appear—warnings about deprecated, but not + invalid, use of the C or C++ syntax. C standards change + fairly often, and some packages still use the older + standard. This is not a problem, but does prompt the + warning. +

    +
  • +
  • +

    + Check one last time that the LFS environment variable is set up + properly: +

    +
    +echo $LFS
    +
    +

    + Make sure the output shows the path to the LFS + partition's mount point, which is /mnt/lfs, using our example. +

    +
  • +
  • +

    + Finally, two important items must be emphasized: +

    +
    +

    + Important +

    +

    + The build instructions assume that the Host System + Requirements, including symbolic links, have been + set properly: +

    +
    +
      +
    • +

      + bash is the + shell in use. +

      +
    • +
    • +

      + sh + is a symbolic link to bash. +

      +
    • +
    • +

      + /usr/bin/awk is + a symbolic link to gawk. +

      +
    • +
    • +

      + /usr/bin/yacc + is a symbolic link to bison or a + small script that executes bison. +

      +
    • +
    +
    +
    +
    +

    + Important +

    +

    + To re-emphasize the build process: +

    +
    +
      +
    1. +

      + Place all the sources and patches in a directory + that will be accessible from the chroot + environment such as /mnt/lfs/sources/. Do + not put + sources in /mnt/lfs/tools/. +

      +
    2. +
    3. +

      + Change to the sources directory. +

      +
    4. +
    5. +

      + For each + package: +

      +
      +
        +
      1. +

        + Using the tar + program, extract the package to be built. + In Chapter 5, ensure you are the + lfs + user when extracting the package. +

        +
      2. +
      3. +

        + Change to the directory created when the + package was extracted. +

        +
      4. +
      5. +

        + Follow the book's instructions for building + the package. +

        +
      6. +
      7. +

        + Change back to the sources directory. +

        +
      8. +
      9. +

        + Delete the extracted source directory + unless instructed otherwise. +

        +
      10. +
      +
      +
    6. +
    +
    +
    +
  • +
+
+
+
+
+
+
+

+ 5.4. Binutils-2.32 - + Pass 1 +

+
+
+
+
+

+ The Binutils package contains a linker, an assembler, and + other tools for handling object files. +

+
+
+
+ Approximate build time: + 1 SBU +
+
+ Required disk space: + 580 MB +
+
+
+
+
+

+ 5.4.1. Installation of Cross Binutils +

+
+

+ Note +

+

+ Go back and re-read the notes in the previous section. + Understanding the notes labeled important will save you a + lot of problems later. +

+
+

+ It is important that Binutils be the first package compiled + because both Glibc and GCC perform various tests on the + available linker and assembler to determine which of their + own features to enable. +

+

+ The Binutils documentation recommends building Binutils in a + dedicated build directory: +

+
+mkdir -v build
+cd       build
+
+
+

+ Note +

+

+ In order for the SBU values listed in the rest of the book + to be of any use, measure the time it takes to build this + package from the configuration, up to and including the + first install. To achieve this easily, wrap the commands in + a time + command like this: time { + ./configure ... && ... && make install; + }. +

+
+
+

+ Note +

+

+ The approximate build SBU values and required disk space in + Chapter 5 does not include test suite data. +

+
+

+ Now prepare Binutils for compilation: +

+
+../configure --prefix=/tools            \
+             --with-sysroot=$LFS        \
+             --with-lib-path=/tools/lib \
+             --target=$LFS_TGT          \
+             --disable-nls              \
+             --disable-werror
+
+
+

+ The meaning of the configure options: +

+
+
+ --prefix=/tools +
+
+

+ This tells the configure script to prepare to install + the Binutils programs in the /tools directory. +

+
+
+ --with-sysroot=$LFS +
+
+

+ For cross compilation, this tells the build system to + look in $LFS for the target system libraries as needed. +

+
+
+ --with-lib-path=/tools/lib +
+
+

+ This specifies which library path the linker should be + configured to use. +

+
+
+ --target=$LFS_TGT +
+
+

+ Because the machine description in the LFS_TGT variable is slightly different + than the value returned by the config.guess script, + this switch will tell the configure script to + adjust Binutil's build system for building a cross + linker. +

+
+
+ --disable-nls +
+
+

+ This disables internationalization as i18n is not + needed for the temporary tools. +

+
+
+ --disable-werror +
+
+

+ This prevents the build from stopping in the event that + there are warnings from the host's compiler. +

+
+
+
+

+ Continue with compiling the package: +

+
+make
+
+

+ Compilation is now complete. Ordinarily we would now run the + test suite, but at this early stage the test suite framework + (Tcl, Expect, and DejaGNU) is not yet in place. The benefits + of running the tests at this point are minimal since the + programs from this first pass will soon be replaced by those + from the second. +

+

+ If building on x86_64, create a symlink to ensure the sanity + of the toolchain: +

+
+case $(uname -m) in
+  x86_64) mkdir -v /tools/lib && ln -sv lib /tools/lib64 ;;
+esac
+
+

+ Install the package: +

+
+make install
+
+
+
+

+ Details on this package are located in Section 6.16.2, + “Contents of Binutils.” +

+
+
+
+
+
+
+

+ 5.5. GCC-8.2.0 - Pass 1 +

+
+
+
+
+

+ The GCC package contains the GNU compiler collection, which + includes the C and C++ compilers. +

+
+
+
+ Approximate build time: + 11 SBU +
+
+ Required disk space: + 2.9 GB +
+
+
+
+
+

+ 5.5.1. Installation of Cross GCC +

+

+ GCC now requires the GMP, MPFR and MPC packages. As these + packages may not be included in your host distribution, they + will be built with GCC. Unpack each package into the GCC + source directory and rename the resulting directories so the + GCC build procedures will automatically use them: +

+
+

+ Note +

+

+ There are frequent misunderstandings about this chapter. + The procedures are the same as every other chapter as + explained earlier (Package build instructions). First + extract the gcc tarball from the sources directory and then + change to the directory created. Only then should you + proceed with the instructions below. +

+
+
+tar -xf ../mpfr-4.0.2.tar.xz
+mv -v mpfr-4.0.2 mpfr
+tar -xf ../gmp-6.1.2.tar.xz
+mv -v gmp-6.1.2 gmp
+tar -xf ../mpc-1.1.0.tar.gz
+mv -v mpc-1.1.0 mpc
+
+

+ The following command will change the location of GCC's + default dynamic linker to use the one installed in + /tools. It also removes + /usr/include from GCC's include + search path. Issue: +

+
+for file in gcc/config/{linux,i386/linux{,64}}.h
+do
+  cp -uv $file{,.orig}
+  sed -e 's@/lib\(64\)\?\(32\)\?/ld@/tools&@g' \
+      -e 's@/usr@/tools@g' $file.orig > $file
+  echo '
+#undef STANDARD_STARTFILE_PREFIX_1
+#undef STANDARD_STARTFILE_PREFIX_2
+#define STANDARD_STARTFILE_PREFIX_1 "/tools/lib/"
+#define STANDARD_STARTFILE_PREFIX_2 ""' >> $file
+  touch $file.orig
+done
+
+

+ In case the above seems hard to follow, let's break it down a + bit. First we copy the files gcc/config/linux.h, gcc/config/i386/linux.h, and gcc/config/i368/linux64.h to a file of the + same name but with an added suffix of .orig. Then the first sed + expression prepends /tools to every instance of + /lib/ld, /lib64/ld or /lib32/ld, while the second one + replaces hard-coded instances of /usr. + Next, we add our define statements which alter the default + startfile prefix to the end of the file. Note that the + trailing / in /tools/lib/ is required. + Finally, we use touch to update the + timestamp on the copied files. When used in conjunction with + cp -u, this + prevents unexpected changes to the original files in case the + commands are inadvertently run twice. +

+

+ Finally, on x86_64 hosts, set the default directory name for + 64-bit libraries to lib: +

+
+case $(uname -m) in
+  x86_64)
+    sed -e '/m64=/s/lib64/lib/' \
+        -i.orig gcc/config/i386/t-linux64
+ ;;
+esac
+
+

+ The GCC documentation recommends building GCC in a dedicated + build directory: +

+
+mkdir -v build
+cd       build
+
+

+ Prepare GCC for compilation: +

+
+../configure                                       \
+    --target=$LFS_TGT                              \
+    --prefix=/tools                                \
+    --with-glibc-version=2.11                      \
+    --with-sysroot=$LFS                            \
+    --with-newlib                                  \
+    --without-headers                              \
+    --with-local-prefix=/tools                     \
+    --with-native-system-header-dir=/tools/include \
+    --disable-nls                                  \
+    --disable-shared                               \
+    --disable-multilib                             \
+    --disable-decimal-float                        \
+    --disable-threads                              \
+    --disable-libatomic                            \
+    --disable-libgomp                              \
+    --disable-libmpx                               \
+    --disable-libquadmath                          \
+    --disable-libssp                               \
+    --disable-libvtv                               \
+    --disable-libstdcxx                            \
+    --enable-languages=c,c++
+
+
+

+ The meaning of the configure options: +

+
+
+ --with-newlib +
+
+

+ Since a working C library is not yet available, this + ensures that the inhibit_libc constant is defined when + building libgcc. This prevents the compiling of any + code that requires libc support. +

+
+
+ --without-headers +
+
+

+ When creating a complete cross-compiler, GCC requires + standard headers compatible with the target system. For + our purposes these headers will not be needed. This + switch prevents GCC from looking for them. +

+
+
+ --with-local-prefix=/tools +
+
+

+ The local prefix is the location in the system that GCC + will search for locally installed include files. The + default is /usr/local. + Setting this to /tools + helps keep the host location of /usr/local out of this GCC's search + path. +

+
+
+ --with-native-system-header-dir=/tools/include +
+
+

+ By default GCC searches /usr/include for system headers. In + conjunction with the sysroot switch, this would + normally translate to $LFS/usr/include. However the headers + that will be installed in the next two sections will go + to $LFS/tools/include. + This switch ensures that gcc will find them correctly. + In the second pass of GCC, this same switch will ensure + that no headers from the host system are found. +

+
+
+ --disable-shared +
+
+

+ This switch forces GCC to link its internal libraries + statically. We do this to avoid possible issues with + the host system. +

+
+
+ --disable-decimal-float, + --disable-threads, --disable-libatomic, + --disable-libgomp, --disable-libmpx, + --disable-libquadmath, --disable-libssp, + --disable-libvtv, --disable-libstdcxx +
+
+

+ These switches disable support for the decimal floating + point extension, threading, libatomic, libgomp, libmpx, + libquadmath, libssp, libvtv, and the C++ standard + library respectively. These features will fail to + compile when building a cross-compiler and are not + necessary for the task of cross-compiling the temporary + libc. +

+
+
+ --disable-multilib +
+
+

+ On x86_64, LFS does not yet support a multilib + configuration. This switch is harmless for x86. +

+
+
+ --enable-languages=c,c++ +
+
+

+ This option ensures that only the C and C++ compilers + are built. These are the only languages needed now. +

+
+
+
+

+ Compile GCC by running: +

+
+make
+
+

+ Compilation is now complete. At this point, the test suite + would normally be run, but, as mentioned before, the test + suite framework is not in place yet. The benefits of running + the tests at this point are minimal since the programs from + this first pass will soon be replaced. +

+

+ Install the package: +

+
+make install
+
+
+
+

+ Details on this package are located in Section 6.21.2, + “Contents of GCC.” +

+
+
+
+
+
+
+

+ 5.6. Linux-4.20.12 API + Headers +

+
+
+
+
+

+ The Linux API Headers (in linux-4.20.12.tar.xz) expose the + kernel's API for use by Glibc. +

+
+
+
+ Approximate build time: + 0.1 SBU +
+
+ Required disk space: + 937 MB +
+
+
+
+
+

+ 5.6.1. Installation of Linux API Headers +

+

+ The Linux kernel needs to expose an Application Programming + Interface (API) for the system's C library (Glibc in LFS) to + use. This is done by way of sanitizing various C header files + that are shipped in the Linux kernel source tarball. +

+

+ Make sure there are no stale files embedded in the package: +

+
+make mrproper
+
+

+ Now extract the user-visible kernel headers from the source. + They are placed in an intermediate local directory and copied + to the needed location because the extraction process removes + any existing files in the target directory. +

+
+make INSTALL_HDR_PATH=dest headers_install
+cp -rv dest/include/* /tools/include
+
+
+
+

+ Details on this package are located in Section 6.7.2, + “Contents of Linux API Headers.” +

+
+
+
+
+
+
+

+ 5.7. Glibc-2.29 +

+
+
+
+
+

+ The Glibc package contains the main C library. This library + provides the basic routines for allocating memory, searching + directories, opening and closing files, reading and writing + files, string handling, pattern matching, arithmetic, and so + on. +

+
+
+
+ Approximate build time: + 5.1 SBU +
+
+ Required disk space: + 885 MB +
+
+
+
+
+

+ 5.7.1. Installation of Glibc +

+

+ The Glibc documentation recommends building Glibc in a + dedicated build directory: +

+
+mkdir -v build
+cd       build
+
+

+ Next, prepare Glibc for compilation: +

+
+../configure                             \
+      --prefix=/tools                    \
+      --host=$LFS_TGT                    \
+      --build=$(../scripts/config.guess) \
+      --enable-kernel=3.2                \
+      --with-headers=/tools/include
+
+
+

+ The meaning of the configure options: +

+
+
+ --host=$LFS_TGT, + --build=$(../scripts/config.guess) +
+
+

+ The combined effect of these switches is that Glibc's + build system configures itself to cross-compile, using + the cross-linker and cross-compiler in /tools. +

+
+
+ --enable-kernel=3.2 +
+
+

+ This tells Glibc to compile the library with support + for 3.2 and later Linux kernels. Workarounds for older + kernels are not enabled. +

+
+
+ --with-headers=/tools/include +
+
+

+ This tells Glibc to compile itself against the headers + recently installed to the tools directory, so that it + knows exactly what features the kernel has and can + optimize itself accordingly. +

+
+
+
+

+ During this stage the following warning might appear: +

+
+
+
+configure: WARNING:
+*** These auxiliary programs are missing or
+*** incompatible versions: msgfmt
+*** some features will be disabled.
+*** Check the INSTALL file for required versions.
+
+
+
+

+ The missing or incompatible msgfmt program is generally + harmless. This msgfmt program is part of + the Gettext package which the host distribution should + provide. +

+
+

+ Note +

+

+ There have been reports that this package may fail when + building as a "parallel make". If this occurs, rerun the + make command with a "-j1" option. +

+
+

+ Compile the package: +

+
+make
+
+

+ Install the package: +

+
+make install
+
+
+

+ Caution +

+

+ At this point, it is imperative to stop and ensure that the + basic functions (compiling and linking) of the new + toolchain are working as expected. To perform a sanity + check, run the following commands: +

+
+echo 'int main(){}' > dummy.c
+$LFS_TGT-gcc dummy.c
+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 of the + form: +

+
+[Requesting program interpreter: /tools/lib64/ld-linux-x86-64.so.2]
+
+

+ Note that for 32-bit machines, the interpreter name will be + /tools/lib/ld-linux.so.2. +

+

+ If the output is not shown as above or there was no output + at all, then something is wrong. Investigate and retrace + the steps to find out where the problem is and correct it. + This issue must be resolved before continuing on. +

+

+ Once all is well, clean up the test files: +

+
+rm -v dummy.c a.out
+
+
+
+

+ Note +

+

+ Building Binutils in the section after next will serve as + an additional check that the toolchain has been built + properly. If Binutils fails to build, it is an indication + that something has gone wrong with the previous Binutils, + GCC, or Glibc installations. +

+
+
+
+

+ Details on this package are located in Section 6.9.3, + “Contents of Glibc.” +

+
+
+
+
+
+
+

+ 5.8. Libstdc++ from + GCC-8.2.0 +

+
+
+
+
+

+ Libstdc++ is the standard C++ library. It is needed to + compile C++ code (part of GCC is written in C++), but we had + to defer its installation when we built gcc-pass1 because it + depends on glibc, which was not yet available in /tools. +

+
+
+
+ Approximate build time: + 0.5 SBU +
+
+ Required disk space: + 803 MB +
+
+
+
+
+

+ 5.8.1. Installation of Target Libstdc++ +

+
+

+ Note +

+

+ Libstdc++ is part of the + GCC sources. You should first unpack the GCC tarball and + change to the gcc-8.2.0 + directory. +

+
+

+ Create a separate build directory for Libstdc++ and enter it: +

+
+mkdir -v build
+cd       build
+
+

+ Prepare Libstdc++ for compilation: +

+
+../libstdc++-v3/configure           \
+    --host=$LFS_TGT                 \
+    --prefix=/tools                 \
+    --disable-multilib              \
+    --disable-nls                   \
+    --disable-libstdcxx-threads     \
+    --disable-libstdcxx-pch         \
+    --with-gxx-include-dir=/tools/$LFS_TGT/include/c++/8.2.0
+
+
+

+ The meaning of the configure options: +

+
+
+ --host=... +
+
+

+ Indicates to use the cross compiler we have just built + instead of the one in /usr/bin. +

+
+
+ --disable-libstdcxx-threads +
+
+

+ Since we have not yet built the C threads library, the + C++ one cannot be built either. +

+
+
+ --disable-libstdcxx-pch +
+
+

+ This switch prevents the installation of precompiled + include files, which are not needed at this stage. +

+
+
+ --with-gxx-include-dir=/tools/$LFS_TGT/include/c++/8.2.0 +
+
+

+ This is the location where the standard include files + are searched by the C++ compiler. In a normal build, + this information is automatically passed to the + Libstdc++ configure options + from the top level directory. In our case, this + information must be explicitly given. +

+
+
+
+

+ Compile libstdc++ by running: +

+
+make
+
+

+ Install the library: +

+
+make install
+
+
+
+

+ Details on this package are located in Section 6.21.2, + “Contents of GCC.” +

+
+
+
+
+
+
+

+ 5.9. Binutils-2.32 - + Pass 2 +

+
+
+
+
+

+ The Binutils package contains a linker, an assembler, and + other tools for handling object files. +

+
+
+
+ Approximate build time: + 1.1 SBU +
+
+ Required disk space: + 598 MB +
+
+
+
+
+

+ 5.9.1. Installation of Binutils +

+

+ Create a separate build directory again: +

+
+mkdir -v build
+cd       build
+
+

+ Prepare Binutils for compilation: +

+
+CC=$LFS_TGT-gcc                \
+AR=$LFS_TGT-ar                 \
+RANLIB=$LFS_TGT-ranlib         \
+../configure                   \
+    --prefix=/tools            \
+    --disable-nls              \
+    --disable-werror           \
+    --with-lib-path=/tools/lib \
+    --with-sysroot
+
+
+

+ The meaning of the new configure options: +

+
+
+ CC=$LFS_TGT-gcc AR=$LFS_TGT-ar + RANLIB=$LFS_TGT-ranlib +
+
+

+ Because this is really a native build of Binutils, + setting these variables ensures that the build system + uses the cross-compiler and associated tools instead of + the ones on the host system. +

+
+
+ --with-lib-path=/tools/lib +
+
+

+ This tells the configure script to specify the library + search path during the compilation of Binutils, + resulting in /tools/lib + being passed to the linker. This prevents the linker + from searching through library directories on the host. +

+
+
+ --with-sysroot +
+
+

+ The sysroot feature enables the linker to find shared + objects which are required by other shared objects + explicitly included on the linker's command line. + Without this, some packages may not build successfully + on some hosts. +

+
+
+
+

+ Compile the package: +

+
+make
+
+

+ Install the package: +

+
+make install
+
+

+ Now prepare the linker for the Re-adjusting phase in the next + chapter: +

+
+make -C ld clean
+make -C ld LIB_PATH=/usr/lib:/lib
+cp -v ld/ld-new /tools/bin
+
+
+

+ The meaning of the make parameters: +

+
+
+ -C ld + clean +
+
+

+ This tells the make program to remove all compiled + files in the ld + subdirectory. +

+
+
+ -C ld + LIB_PATH=/usr/lib:/lib +
+
+

+ This option rebuilds everything in the ld subdirectory. Specifying the + LIB_PATH Makefile variable + on the command line allows us to override the default + value of the temporary tools and point it to the proper + final path. The value of this variable specifies the + linker's default library search path. This preparation + is used in the next chapter. +

+
+
+
+
+
+

+ Details on this package are located in Section 6.16.2, + “Contents of Binutils.” +

+
+
+
+
+
+
+

+ 5.10. GCC-8.2.0 - Pass 2 +

+
+
+
+
+

+ The GCC package contains the GNU compiler collection, which + includes the C and C++ compilers. +

+
+
+
+ Approximate build time: + 14 SBU +
+
+ Required disk space: + 3.4 GB +
+
+
+
+
+

+ 5.10.1. Installation of GCC +

+

+ Our first build of GCC has installed a couple of internal + system headers. Normally one of them, limits.h, will in turn include the + corresponding system limits.h + header, in this case, /tools/include/limits.h. However, at the + time of the first build of gcc /tools/include/limits.h did not exist, so + the internal header that GCC installed is a partial, + self-contained file and does not include the extended + features of the system header. This was adequate for building + the temporary libc, but this build of GCC now requires the + full internal header. Create a full version of the internal + header using a command that is identical to what the GCC + build system does in normal circumstances: +

+
+cat gcc/limitx.h gcc/glimits.h gcc/limity.h > \
+  `dirname $($LFS_TGT-gcc -print-libgcc-file-name)`/include-fixed/limits.h
+
+

+ Once again, change the location of GCC's default dynamic + linker to use the one installed in /tools. +

+
+for file in gcc/config/{linux,i386/linux{,64}}.h
+do
+  cp -uv $file{,.orig}
+  sed -e 's@/lib\(64\)\?\(32\)\?/ld@/tools&@g' \
+      -e 's@/usr@/tools@g' $file.orig > $file
+  echo '
+#undef STANDARD_STARTFILE_PREFIX_1
+#undef STANDARD_STARTFILE_PREFIX_2
+#define STANDARD_STARTFILE_PREFIX_1 "/tools/lib/"
+#define STANDARD_STARTFILE_PREFIX_2 ""' >> $file
+  touch $file.orig
+done
+
+

+ If building on x86_64, change the default directory name for + 64-bit libraries to lib: +

+
+case $(uname -m) in
+  x86_64)
+    sed -e '/m64=/s/lib64/lib/' \
+        -i.orig gcc/config/i386/t-linux64
+  ;;
+esac
+
+

+ As in the first build of GCC it requires the GMP, MPFR and + MPC packages. Unpack the tarballs and move them into the + required directory names: +

+
+tar -xf ../mpfr-4.0.2.tar.xz
+mv -v mpfr-4.0.2 mpfr
+tar -xf ../gmp-6.1.2.tar.xz
+mv -v gmp-6.1.2 gmp
+tar -xf ../mpc-1.1.0.tar.gz
+mv -v mpc-1.1.0 mpc
+
+

+ Create a separate build directory again: +

+
+mkdir -v build
+cd       build
+
+

+ Before starting to build GCC, remember to unset any + environment variables that override the default optimization + flags. +

+

+ Now prepare GCC for compilation: +

+
+CC=$LFS_TGT-gcc                                    \
+CXX=$LFS_TGT-g++                                   \
+AR=$LFS_TGT-ar                                     \
+RANLIB=$LFS_TGT-ranlib                             \
+../configure                                       \
+    --prefix=/tools                                \
+    --with-local-prefix=/tools                     \
+    --with-native-system-header-dir=/tools/include \
+    --enable-languages=c,c++                       \
+    --disable-libstdcxx-pch                        \
+    --disable-multilib                             \
+    --disable-bootstrap                            \
+    --disable-libgomp
+
+
+

+ The meaning of the new configure options: +

+
+
+ --enable-languages=c,c++ +
+
+

+ This option ensures that both the C and C++ compilers + are built. +

+
+
+ --disable-libstdcxx-pch +
+
+

+ Do not build the pre-compiled header (PCH) for + libstdc++. It takes up a + lot of space, and we have no use for it. +

+
+
+ --disable-bootstrap +
+
+

+ For native builds of GCC, the default is to do a + "bootstrap" build. This does not just compile GCC, but + compiles it several times. It uses the programs + compiled in a first round to compile itself a second + time, and then again a third time. The second and third + iterations are compared to make sure it can reproduce + itself flawlessly. This also implies that it was + compiled correctly. However, the LFS build method + should provide a solid compiler without the need to + bootstrap each time. +

+
+
+
+

+ Compile the package: +

+
+make
+
+

+ Install the package: +

+
+make install
+
+

+ As a finishing touch, create a symlink. Many programs and + scripts run cc + instead of gcc, + which is used to keep programs generic and therefore usable + on all kinds of UNIX systems where the GNU C compiler is not + always installed. Running cc leaves the system + administrator free to decide which C compiler to install: +

+
+ln -sv gcc /tools/bin/cc
+
+
+

+ Caution +

+

+ At this point, it is imperative to stop and ensure that the + basic functions (compiling and linking) of the new + toolchain are working as expected. To perform a sanity + check, run the following commands: +

+
+echo 'int main(){}' > dummy.c
+cc dummy.c
+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 of the + form: +

+
+[Requesting program interpreter: /tools/lib64/ld-linux-x86-64.so.2]
+
+

+ Note that the dynamic linker will be + /tools/lib/ld-linux.so.2 for 32-bit machines. +

+

+ If the output is not shown as above or there was no output + at all, then something is wrong. Investigate and retrace + the steps to find out where the problem is and correct it. + This issue must be resolved before continuing on. First, + perform the sanity check again, using gcc instead of + cc. If this + works, then the /tools/bin/cc + symlink is missing. Install the symlink as per above. Next, + ensure that the PATH is correct. + This can be checked by running echo $PATH and verifying + that /tools/bin is at the + head of the list. If the PATH is + wrong it could mean that you are not logged in as user + lfs or that something went + wrong back in Section 4.4, + “Setting Up the Environment.” +

+

+ Once all is well, clean up the test files: +

+
+rm -v dummy.c a.out
+
+
+
+
+

+ Details on this package are located in Section 6.21.2, + “Contents of GCC.” +

+
+
+
+
+
+
+

+ 5.11. Tcl-8.6.9 +

+
+
+
+
+

+ The Tcl package contains the Tool Command Language. +

+
+
+
+ Approximate build time: + 0.9 SBU +
+
+ Required disk space: + 66 MB +
+
+
+
+
+

+ 5.11.1. Installation of Tcl +

+

+ This package and the next two (Expect and DejaGNU) are + installed to support running the test suites for GCC and + Binutils and other packages. Installing three packages for + testing purposes may seem excessive, but it is very + reassuring, if not essential, to know that the most important + tools are working properly. Even if the test suites are not + run in this chapter (they are not mandatory), these packages + are required to run the test suites in Chapter 6. +

+

+ Note that the Tcl package used here is a minimal version + needed to run the LFS tests. For the full package, see the + + BLFS Tcl procedures. +

+

+ Prepare Tcl for compilation: +

+
+cd unix
+./configure --prefix=/tools
+
+

+ Build the package: +

+
+make
+
+

+ Compilation is now complete. As discussed earlier, running + the test suite is not mandatory for the temporary tools here + in this chapter. To run the Tcl test suite anyway, issue the + following command: +

+
+TZ=UTC make test
+
+

+ The Tcl test suite may experience failures under certain host + conditions that are not fully understood. Therefore, test + suite failures here are not surprising, and are not + considered critical. The TZ=UTC parameter sets the time + zone to Coordinated Universal Time (UTC), but only for the + duration of the test suite run. This ensures that the clock + tests are exercised correctly. Details on the TZ environment variable are provided in + Chapter 7. +

+

+ Install the package: +

+
+make install
+
+

+ Make the installed library writable so debugging symbols can + be removed later: +

+
+chmod -v u+w /tools/lib/libtcl8.6.so
+
+

+ Install Tcl's headers. The next package, Expect, requires + them to build. +

+
+make install-private-headers
+
+

+ Now make a necessary symbolic link: +

+
+ln -sv tclsh8.6 /tools/bin/tclsh
+
+
+
+

+ 5.11.2. Contents + of Tcl +

+
+
+
+ Installed programs: + tclsh (link to tclsh8.6) and + tclsh8.6 +
+
+ Installed library: + libtcl8.6.so, + libtclstub8.6.a +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + +
+

+ tclsh8.6 +

+
+

+ The Tcl command shell +

+
+

+ tclsh +

+
+

+ A link to tclsh8.6 +

+
+

+ libtcl8.6.so +

+
+

+ The Tcl library +

+
+

+ libtclstub8.6.a +

+
+

+ The Tcl Stub library +

+
+
+
+
+
+
+
+
+

+ 5.12. Expect-5.45.4 +

+
+
+
+
+

+ The Expect package contains a program for carrying out + scripted dialogues with other interactive programs. +

+
+
+
+ Approximate build time: + 0.1 SBU +
+
+ Required disk space: + 3.9 MB +
+
+
+
+
+

+ 5.12.1. Installation of Expect +

+

+ First, force Expect's configure script to use /bin/stty instead of a /usr/local/bin/stty it may find on the host + system. This will ensure that our test suite tools remain + sane for the final builds of our toolchain: +

+
+cp -v configure{,.orig}
+sed 's:/usr/local/bin:/bin:' configure.orig > configure
+
+

+ Now prepare Expect for compilation: +

+
+./configure --prefix=/tools       \
+            --with-tcl=/tools/lib \
+            --with-tclinclude=/tools/include
+
+
+

+ The meaning of the configure options: +

+
+
+ --with-tcl=/tools/lib +
+
+

+ This ensures that the configure script finds the Tcl + installation in the temporary tools location instead of + possibly locating an existing one on the host system. +

+
+
+ --with-tclinclude=/tools/include +
+
+

+ This explicitly tells Expect where to find Tcl's + internal headers. Using this option avoids conditions + where configure fails + because it cannot automatically discover the location + of Tcl's headers. +

+
+
+
+

+ Build the package: +

+
+make
+
+

+ Compilation is now complete. As discussed earlier, running + the test suite is not mandatory for the temporary tools here + in this chapter. To run the Expect test suite anyway, issue + the following command: +

+
+make test
+
+

+ Note that the Expect test suite is known to experience + failures under certain host conditions that are not within + our control. Therefore, test suite failures here are not + surprising and are not considered critical. +

+

+ Install the package: +

+
+make SCRIPTS="" install
+
+
+

+ The meaning of the make parameter: +

+
+
+ SCRIPTS="" +
+
+

+ This prevents installation of the supplementary Expect + scripts, which are not needed. +

+
+
+
+
+
+

+ 5.12.2. + Contents of Expect +

+
+
+
+ Installed program: + expect +
+
+ Installed library: + libexpect-5.45.so +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ expect +

+
+

+ Communicates with other interactive programs + according to a script +

+
+

+ libexpect-5.45.so +

+
+

+ Contains functions that allow Expect to be used as + a Tcl extension or to be used directly from C or + C++ (without Tcl) +

+
+
+
+
+
+
+
+
+

+ 5.13. DejaGNU-1.6.2 +

+
+
+
+
+

+ The DejaGNU package contains a framework for testing other + programs. +

+
+
+
+ Approximate build time: + less than 0.1 SBU +
+
+ Required disk space: + 3.2 MB +
+
+
+
+
+

+ 5.13.1. Installation of DejaGNU +

+

+ Prepare DejaGNU for compilation: +

+
+./configure --prefix=/tools
+
+

+ Build and install the package: +

+
+make install
+
+

+ To test the results, issue: +

+
+make check
+
+
+
+

+ 5.13.2. + Contents of DejaGNU +

+
+
+
+ Installed program: + runtest +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ runtest +

+
+

+ A wrapper script that locates the proper + expect shell and + then runs DejaGNU +

+
+
+
+
+
+
+
+
+

+ 5.14. M4-1.4.18 +

+
+
+
+
+

+ The M4 package contains a macro processor. +

+
+
+
+ Approximate build time: + 0.2 SBU +
+
+ Required disk space: + 20 MB +
+
+
+
+
+

+ 5.14.1. Installation of M4 +

+

+ First, make some fixes required by glibc-2.28: +

+
+sed -i 's/IO_ftrylockfile/IO_EOF_SEEN/' lib/*.c
+echo "#define _IO_IN_BACKUP 0x100" >> lib/stdio-impl.h
+
+

+ Prepare M4 for compilation: +

+
+./configure --prefix=/tools
+
+

+ Compile the package: +

+
+make
+
+

+ Compilation is now complete. As discussed earlier, running + the test suite is not mandatory for the temporary tools here + in this chapter. To run the M4 test suite anyway, issue the + following command: +

+
+make check
+
+

+ Install the package: +

+
+make install
+
+
+
+

+ Details on this package are located in Section 6.14.2, + “Contents of M4.” +

+
+
+
+
+
+
+

+ 5.15. Ncurses-6.1 +

+
+
+
+
+

+ The Ncurses package contains libraries for + terminal-independent handling of character screens. +

+
+
+
+ Approximate build time: + 0.6 SBU +
+
+ Required disk space: + 41 MB +
+
+
+
+
+

+ 5.15.1. Installation of Ncurses +

+

+ First, ensure that gawk is found first during + configuration: +

+
+sed -i s/mawk// configure
+
+

+ Prepare Ncurses for compilation: +

+
+./configure --prefix=/tools \
+            --with-shared   \
+            --without-debug \
+            --without-ada   \
+            --enable-widec  \
+            --enable-overwrite
+
+
+

+ The meaning of the configure options: +

+
+
+ --without-ada +
+
+

+ This ensures that Ncurses does not build support for + the Ada compiler which may be present on the host but + will not be available once we enter the chroot environment. +

+
+
+ --enable-overwrite +
+
+

+ This tells Ncurses to install its header files into + /tools/include, instead + of /tools/include/ncurses, to ensure + that other packages can find the Ncurses headers + successfully. +

+
+
+ --enable-widec +
+
+

+ This switch causes wide-character libraries (e.g., + libncursesw.so.6.1) to be + built instead of normal ones (e.g., libncurses.so.6.1). These + wide-character libraries are usable in both multibyte + and traditional 8-bit locales, while normal libraries + work properly only in 8-bit locales. Wide-character and + normal libraries are source-compatible, but not + binary-compatible. +

+
+
+
+

+ Compile the package: +

+
+make
+
+

+ This package has a test suite, but it can only be run after + the package has been installed. The tests reside in the + test/ directory. See the + README file in that directory + for further details. +

+

+ Install the package: +

+
+make install
+ln -s libncursesw.so /tools/lib/libncurses.so
+
+
+
+

+ Details on this package are located in Section 6.24.2, + “Contents of Ncurses.” +

+
+
+
+
+
+
+

+ 5.16. Bash-5.0 +

+
+
+
+
+

+ The Bash package contains the Bourne-Again SHell. +

+
+
+
+ Approximate build time: + 0.4 SBU +
+
+ Required disk space: + 67 MB +
+
+
+
+
+

+ 5.16.1. Installation of Bash +

+

+ Prepare Bash for compilation: +

+
+./configure --prefix=/tools --without-bash-malloc
+
+
+

+ The meaning of the configure options: +

+
+
+ --without-bash-malloc +
+
+

+ This option turns off the use of Bash's memory + allocation (malloc) + function which is known to cause segmentation faults. + By turning this option off, Bash will use the + malloc functions from + Glibc which are more stable. +

+
+
+
+

+ Compile the package: +

+
+make
+
+

+ Compilation is now complete. As discussed earlier, running + the test suite is not mandatory for the temporary tools here + in this chapter. To run the Bash test suite anyway, issue the + following command: +

+
+make tests
+
+

+ Install the package: +

+
+make install
+
+

+ Make a link for the programs that use sh for a shell: +

+
+ln -sv bash /tools/bin/sh
+
+
+
+

+ Details on this package are located in Section 6.34.2, + “Contents of Bash.” +

+
+
+
+
+
+
+

+ 5.17. Bison-3.3.2 +

+
+
+
+
+

+ The Bison package contains a parser generator. +

+
+
+
+ Approximate build time: + 0.3 SBU +
+
+ Required disk space: + 37 MB +
+
+
+
+
+

+ 5.17.1. Installation of Bison +

+

+ Prepare Bison for compilation: +

+
+./configure --prefix=/tools
+
+

+ Compile the package: +

+
+make
+
+

+ To test the results, issue: +

+
+make check
+
+

+ Install the package: +

+
+make install
+
+
+
+

+ Details on this package are located in Section 6.31.2, + “Contents of Bison.” +

+
+
+
+
+
+
+

+ 5.18. Bzip2-1.0.6 +

+
+
+
+
+

+ The Bzip2 package contains programs for compressing and + decompressing files. Compressing text files with bzip2 yields a much better + compression percentage than with the traditional gzip. +

+
+
+
+ Approximate build time: + less than 0.1 SBU +
+
+ Required disk space: + 5.5 MB +
+
+
+
+
+

+ 5.18.1. Installation of Bzip2 +

+

+ The Bzip2 package does not contain a configure script. Compile + and test it with: +

+
+make
+
+

+ Install the package: +

+
+make PREFIX=/tools install
+
+
+
+

+ Details on this package are located in Section 6.22.2, + “Contents of Bzip2.” +

+
+
+
+
+
+
+

+ 5.19. Coreutils-8.30 +

+
+
+
+
+

+ The Coreutils package contains utilities for showing and + setting the basic system characteristics. +

+
+
+
+ Approximate build time: + 0.8 SBU +
+
+ Required disk space: + 148 MB +
+
+
+
+
+

+ 5.19.1. Installation of Coreutils +

+

+ Prepare Coreutils for compilation: +

+
+./configure --prefix=/tools --enable-install-program=hostname
+
+
+

+ The meaning of the configure options: +

+
+
+ --enable-install-program=hostname +
+
+

+ This enables the hostname binary to be + built and installed – it is disabled by default + but is required by the Perl test suite. +

+
+
+
+

+ Compile the package: +

+
+make
+
+

+ Compilation is now complete. As discussed earlier, running + the test suite is not mandatory for the temporary tools here + in this chapter. To run the Coreutils test suite anyway, + issue the following command: +

+
+make RUN_EXPENSIVE_TESTS=yes check
+
+

+ The RUN_EXPENSIVE_TESTS=yes + parameter tells the test suite to run several additional + tests that are considered relatively expensive (in terms of + CPU power and memory usage) on some platforms, but generally + are not a problem on Linux. +

+

+ Install the package: +

+
+make install
+
+
+
+

+ Details on this package are located in Section 6.54.2, + “Contents of Coreutils.” +

+
+
+
+
+
+
+

+ 5.20. Diffutils-3.7 +

+
+
+
+
+

+ The Diffutils package contains programs that show the + differences between files or directories. +

+
+
+
+ Approximate build time: + 0.2 SBU +
+
+ Required disk space: + 26 MB +
+
+
+
+
+

+ 5.20.1. Installation of Diffutils +

+

+ Prepare Diffutils for compilation: +

+
+./configure --prefix=/tools
+
+

+ Compile the package: +

+
+make
+
+

+ Compilation is now complete. As discussed earlier, running + the test suite is not mandatory for the temporary tools here + in this chapter. To run the Diffutils test suite anyway, + issue the following command: +

+
+make check
+
+

+ Install the package: +

+
+make install
+
+
+
+

+ Details on this package are located in Section 6.56.2, + “Contents of Diffutils.” +

+
+
+
+
+
+
+

+ 5.21. File-5.36 +

+
+
+
+
+

+ The File package contains a utility for determining the type + of a given file or files. +

+
+
+
+ Approximate build time: + 0.1 SBU +
+
+ Required disk space: + 18 MB +
+
+
+
+
+

+ 5.21.1. Installation of File +

+

+ Prepare File for compilation: +

+
+./configure --prefix=/tools
+
+

+ Compile the package: +

+
+make
+
+

+ Compilation is now complete. As discussed earlier, running + the test suite is not mandatory for the temporary tools here + in this chapter. To run the File test suite anyway, issue the + following command: +

+
+make check
+
+

+ Install the package: +

+
+make install
+
+
+
+

+ Details on this package are located in Section 6.12.2, + “Contents of File.” +

+
+
+
+
+
+
+

+ 5.22. Findutils-4.6.0 +

+
+
+
+
+

+ The Findutils package contains programs to find files. These + programs are provided to recursively search through a + directory tree and to create, maintain, and search a database + (often faster than the recursive find, but unreliable if the + database has not been recently updated). +

+
+
+
+ Approximate build time: + 0.3 SBU +
+
+ Required disk space: + 36 MB +
+
+
+
+
+

+ 5.22.1. Installation of Findutils +

+

+ First, make some fixes required by glibc-2.28: +

+
+sed -i 's/IO_ftrylockfile/IO_EOF_SEEN/' gl/lib/*.c
+sed -i '/unistd/a #include <sys/sysmacros.h>' gl/lib/mountlist.c
+echo "#define _IO_IN_BACKUP 0x100" >> gl/lib/stdio-impl.h
+
+

+ Prepare Findutils for compilation: +

+
+./configure --prefix=/tools
+
+

+ Compile the package: +

+
+make
+
+

+ Compilation is now complete. As discussed earlier, running + the test suite is not mandatory for the temporary tools here + in this chapter. To run the Findutils test suite anyway, + issue the following command: +

+
+make check
+
+

+ Install the package: +

+
+make install
+
+
+
+

+ Details on this package are located in Section 6.58.2, + “Contents of Findutils.” +

+
+
+
+
+
+
+

+ 5.23. Gawk-4.2.1 +

+
+
+
+
+

+ The Gawk package contains programs for manipulating text + files. +

+
+
+
+ Approximate build time: + 0.2 SBU +
+
+ Required disk space: + 43 MB +
+
+
+
+
+

+ 5.23.1. Installation of Gawk +

+

+ Prepare Gawk for compilation: +

+
+./configure --prefix=/tools
+
+

+ Compile the package: +

+
+make
+
+

+ Compilation is now complete. As discussed earlier, running + the test suite is not mandatory for the temporary tools here + in this chapter. To run the Gawk test suite anyway, issue the + following command: +

+
+make check
+
+

+ Install the package: +

+
+make install
+
+
+
+

+ Details on this package are located in Section 6.57.2, + “Contents of Gawk.” +

+
+
+
+
+
+
+

+ 5.24. Gettext-0.19.8.1 +

+
+
+
+
+

+ The Gettext package contains utilities for + internationalization and localization. These allow programs + to be compiled with NLS (Native Language Support), enabling + them to output messages in the user's native language. +

+
+
+
+ Approximate build time: + 0.9 SBU +
+
+ Required disk space: + 173 MB +
+
+
+
+
+

+ 5.24.1. Installation of Gettext +

+

+ For our temporary set of tools, we only need to build and + install three programs from Gettext. +

+

+ Prepare Gettext for compilation: +

+
+cd gettext-tools
+EMACS="no" ./configure --prefix=/tools --disable-shared
+
+
+

+ The meaning of the configure option: +

+
+
+ EMACS="no" +
+
+

+ This prevents the configure script from determining + where to install Emacs Lisp files as the test is known + to hang on some hosts. +

+
+
+ --disable-shared +
+
+

+ We do not need to install any of the shared Gettext + libraries at this time, therefore there is no need to + build them. +

+
+
+
+

+ Compile the package: +

+
+make -C gnulib-lib
+make -C intl pluralx.c
+make -C src msgfmt
+make -C src msgmerge
+make -C src xgettext
+
+

+ As only three programs have been compiled, it is not possible + to run the test suite without compiling additional support + libraries from the Gettext package. It is therefore not + recommended to attempt to run the test suite at this stage. +

+

+ Install the msgfmt, msgmerge and xgettext programs: +

+
+cp -v src/{msgfmt,msgmerge,xgettext} /tools/bin
+
+
+
+

+ Details on this package are located in Section 6.47.2, + “Contents of Gettext.” +

+
+
+
+
+
+
+

+ 5.25. Grep-3.3 +

+
+
+
+
+

+ The Grep package contains programs for searching through + files. +

+
+
+
+ Approximate build time: + 0.2 SBU +
+
+ Required disk space: + 24 MB +
+
+
+
+
+

+ 5.25.1. Installation of Grep +

+

+ Prepare Grep for compilation: +

+
+./configure --prefix=/tools
+
+

+ Compile the package: +

+
+make
+
+

+ Compilation is now complete. As discussed earlier, running + the test suite is not mandatory for the temporary tools here + in this chapter. To run the Grep test suite anyway, issue the + following command: +

+
+make check
+
+

+ Install the package: +

+
+make install
+
+
+
+

+ Details on this package are located in Section 6.33.2, + “Contents of Grep.” +

+
+
+
+
+
+
+

+ 5.26. Gzip-1.10 +

+
+
+
+
+

+ The Gzip package contains programs for compressing and + decompressing files. +

+
+
+
+ Approximate build time: + 0.1 SBU +
+
+ Required disk space: + 10 MB +
+
+
+
+
+

+ 5.26.1. Installation of Gzip +

+

+ Prepare Gzip for compilation: +

+
+./configure --prefix=/tools
+
+

+ Compile the package: +

+
+make
+
+

+ Compilation is now complete. As discussed earlier, running + the test suite is not mandatory for the temporary tools here + in this chapter. To run the Gzip test suite anyway, issue the + following command: +

+
+make check
+
+

+ Install the package: +

+
+make install
+
+
+
+

+ Details on this package are located in Section 6.62.2, + “Contents of Gzip.” +

+
+
+
+
+
+
+

+ 5.27. Make-4.2.1 +

+
+
+
+
+

+ The Make package contains a program for compiling packages. +

+
+
+
+ Approximate build time: + 0.1 SBU +
+
+ Required disk space: + 13 MB +
+
+
+
+
+

+ 5.27.1. Installation of Make +

+

+ First, work around an error caused by glibc-2.27 and later: +

+
+sed -i '211,217 d; 219,229 d; 232 d' glob/glob.c
+
+

+ Prepare Make for compilation: +

+
+./configure --prefix=/tools --without-guile
+
+
+

+ The meaning of the configure option: +

+
+
+ --without-guile +
+
+

+ This ensures that Make-4.2.1 won't link against Guile + libraries, which may be present on the host system, but + won't be available within the chroot environment in + the next chapter. +

+
+
+
+

+ Compile the package: +

+
+make
+
+

+ Compilation is now complete. As discussed earlier, running + the test suite is not mandatory for the temporary tools here + in this chapter. To run the Make test suite anyway, issue the + following command: +

+
+make check
+
+

+ Install the package: +

+
+make install
+
+
+
+

+ Details on this package are located in Section 6.66.2, + “Contents of Make.” +

+
+
+
+
+
+
+

+ 5.28. Patch-2.7.6 +

+
+
+
+
+

+ The Patch package contains a program for modifying or + creating files by applying a patch + file typically created by the diff program. +

+
+
+
+ Approximate build time: + 0.2 SBU +
+
+ Required disk space: + 12 MB +
+
+
+
+
+

+ 5.28.1. Installation of Patch +

+

+ Prepare Patch for compilation: +

+
+./configure --prefix=/tools
+
+

+ Compile the package: +

+
+make
+
+

+ Compilation is now complete. As discussed earlier, running + the test suite is not mandatory for the temporary tools here + in this chapter. To run the Patch test suite anyway, issue + the following command: +

+
+make check
+
+

+ Install the package: +

+
+make install
+
+
+
+

+ Details on this package are located in Section 6.67.2, + “Contents of Patch.” +

+
+
+
+
+
+
+

+ 5.29. Perl-5.28.1 +

+
+
+
+
+

+ The Perl package contains the Practical Extraction and Report + Language. +

+
+
+
+ Approximate build time: + 1.6 SBU +
+
+ Required disk space: + 275 MB +
+
+
+
+
+

+ 5.29.1. Installation of Perl +

+

+ Prepare Perl for compilation: +

+
+sh Configure -des -Dprefix=/tools -Dlibs=-lm -Uloclibpth -Ulocincpth
+
+
+

+ The meaning of the Configure options: +

+
+
+ -des +
+
+

+ This is a combination of three options: -d uses + defaults for all items; -e ensures completion of all + tasks; -s silences non-essential output. +

+
+
+ -Uloclibpth amd + -Ulocincpth +
+
+

+ These entries undefine variables that cause the + configuration to search for locally installed + components that may exist on the host system. +

+
+
+
+

+ Build the package: +

+
+make
+
+

+ Although Perl comes with a test suite, it would be better to + wait until it is installed in the next chapter. +

+

+ Only a few of the utilities and libraries need to be + installed at this time: +

+
+cp -v perl cpan/podlators/scripts/pod2man /tools/bin
+mkdir -pv /tools/lib/perl5/5.28.1
+cp -Rv lib/* /tools/lib/perl5/5.28.1
+
+
+
+

+ Details on this package are located in Section 6.40.2, + “Contents of Perl.” +

+
+
+
+
+
+
+

+ 5.30. Python-3.7.2 +

+
+
+
+
+

+ The Python 3 package contains the Python development + environment. It is useful for object-oriented programming, + writing scripts, prototyping large programs or developing + entire applications. +

+
+
+
+ Approximate build time: + 1.5 SBU +
+
+ Required disk space: + 371 MB +
+
+
+
+
+

+ 5.30.1. Installation of Python +

+

+ This package first builds the Python interpreter, then some + standard Python modules. The main script for building modules + is written in Python, and uses hard-coded paths to the host + /usr/include and /usr/lib directories. To prevent them from + being used, issue: +

+
+sed -i '/def add_multiarch_paths/a \        return' setup.py
+
+

+ Prepare Python for compilation: +

+
+./configure --prefix=/tools --without-ensurepip
+
+
+

+ The meaning of the configure option: +

+
+
+ --without-ensurepip +
+
+

+ This switch disables the Python installer, which is not + needed at this stage. +

+
+
+
+

+ Compile the package: +

+
+make
+
+

+ Compilation is now complete. The test suite requires TK and + and X Windows and cannot be run at this time. +

+

+ Install the package: +

+
+make install
+
+
+
+

+ Details on this package are located in Section 6.51.2, + “Contents of Python 3.” +

+
+
+
+
+
+
+

+ 5.31. Sed-4.7 +

+
+
+
+
+

+ The Sed package contains a stream editor. +

+
+
+
+ Approximate build time: + 0.2 SBU +
+
+ Required disk space: + 20 MB +
+
+
+
+
+

+ 5.31.1. Installation of Sed +

+

+ Prepare Sed for compilation: +

+
+./configure --prefix=/tools
+
+

+ Compile the package: +

+
+make
+
+

+ Compilation is now complete. As discussed earlier, running + the test suite is not mandatory for the temporary tools here + in this chapter. To run the Sed test suite anyway, issue the + following command: +

+
+make check
+
+

+ Install the package: +

+
+make install
+
+
+
+

+ Details on this package are located in Section 6.28.2, + “Contents of Sed.” +

+
+
+
+
+
+
+

+ 5.32. Tar-1.31 +

+
+
+
+
+

+ The Tar package contains an archiving program. +

+
+
+
+ Approximate build time: + 0.3 SBU +
+
+ Required disk space: + 38 MB +
+
+
+
+
+

+ 5.32.1. Installation of Tar +

+

+ Prepare Tar for compilation: +

+
+./configure --prefix=/tools
+
+

+ Compile the package: +

+
+make
+
+

+ Compilation is now complete. As discussed earlier, running + the test suite is not mandatory for the temporary tools here + in this chapter. To run the Tar test suite anyway, issue the + following command: +

+
+make check
+
+

+ Install the package: +

+
+make install
+
+
+
+

+ Details on this package are located in Section 6.69.2, + “Contents of Tar.” +

+
+
+
+
+
+
+

+ 5.33. Texinfo-6.5 +

+
+
+
+
+

+ The Texinfo package contains programs for reading, writing, + and converting info pages. +

+
+
+
+ Approximate build time: + 0.3 SBU +
+
+ Required disk space: + 104 MB +
+
+
+
+
+

+ 5.33.1. Installation of Texinfo +

+

+ Prepare Texinfo for compilation: +

+
+./configure --prefix=/tools
+
+
+

+ Note +

+

+ As part of the configure process, a test is made that + indicates an error for TestXS_la-TestXS.lo. This is not + relevant for LFS and should be ignored. +

+
+

+ Compile the package: +

+
+make
+
+

+ Compilation is now complete. As discussed earlier, running + the test suite is not mandatory for the temporary tools here + in this chapter. To run the Texinfo test suite anyway, issue + the following command: +

+
+make check
+
+

+ Install the package: +

+
+make install
+
+
+
+

+ Details on this package are located in Section 6.70.2, + “Contents of Texinfo.” +

+
+
+
+
+
+
+

+ 5.34. Xz-5.2.4 +

+
+
+
+
+

+ The Xz package contains programs for compressing and + decompressing files. It provides capabilities for the lzma + and the newer xz compression formats. Compressing text files + with xz yields + a better compression percentage than with the traditional + gzip or + bzip2 commands. +

+
+
+
+ Approximate build time: + 0.2 SBU +
+
+ Required disk space: + 18 MB +
+
+
+
+
+

+ 5.34.1. Installation of Xz +

+

+ Prepare Xz for compilation: +

+
+./configure --prefix=/tools
+
+

+ Compile the package: +

+
+make
+
+

+ Compilation is now complete. As discussed earlier, running + the test suite is not mandatory for the temporary tools here + in this chapter. To run the Xz test suite anyway, issue the + following command: +

+
+make check
+
+

+ Install the package: +

+
+make install
+
+
+
+

+ Details on this package are located in Section 6.45.2, + “Contents of Xz.” +

+
+
+
+
+
+
+

+ 5.35. Stripping +

+
+
+
+

+ The steps in this section are optional, but if the LFS + partition is rather small, it is beneficial to learn that + unnecessary items can be removed. The executables and libraries + built so far contain about 70 MB of unneeded debugging symbols. + Remove those symbols with: +

+
+strip --strip-debug /tools/lib/*
+/usr/bin/strip --strip-unneeded /tools/{,s}bin/*
+
+

+ These commands will skip a number of files, reporting that it + does not recognize their file format. Most of these are scripts + instead of binaries. Also use the system strip command to + include the strip binary in /tools. +

+

+ Take care not to use + --strip-unneeded on the + libraries. The static ones would be destroyed and the toolchain + packages would need to be built all over again. +

+

+ To save more, remove the documentation: +

+
+rm -rf /tools/{,share}/{info,man,doc}
+
+

+ Remove unneeded files: +

+
+find /tools/{lib,libexec} -name \*.la -delete
+
+

+ At this point, you should have at least 3 GB of free space in + $LFS that can be used to build and + install Glibc and Gcc in the next phase. If you can build and + install Glibc, you can build and install the rest too. +

+
+
+
+
+
+

+ 5.36. Changing + Ownership +

+
+
+
+
+

+ Note +

+

+ The commands in the remainder of this book must be performed + while logged in as user root + and no longer as user lfs. + Also, double check that $LFS is + set in root's environment. +

+
+

+ Currently, the $LFS/tools + directory is owned by the user lfs, a user that exists only on the host + system. If the $LFS/tools + directory is kept as is, the files are owned by a user ID + without a corresponding account. This is dangerous because a + user account created later could get this same user ID and + would own the $LFS/tools + directory and all the files therein, thus exposing these files + to possible malicious manipulation. +

+

+ To avoid this issue, you could add the lfs user to the new LFS system later when + creating the /etc/passwd file, + taking care to assign it the same user and group IDs as on the + host system. Better yet, change the ownership of the + $LFS/tools directory to user + root by running the following + command: +

+
+chown -R root:root $LFS/tools
+
+

+ Although the $LFS/tools directory + can be deleted once the LFS system has been finished, it can be + retained to build additional LFS systems of the same book version. How best + to backup $LFS/tools is a matter + of personal preference. +

+
+

+ Caution +

+

+ If you intend to keep the temporary tools for use in building + future LFS systems, now is the time to back them up. + Subsequent commands in chapter 6 will alter the tools + currently in place, rendering them useless for future builds. +

+
+
+
+
+
+
+
+
+

+ Part III. Building + the LFS System +

+
+
+
+
+
+
+
+

+ Chapter 6. Installing + Basic System Software +

+
+
+
+
+
+
+
+

+ 6.1. Introduction +

+
+
+
+

+ In this chapter, we enter the building site and start + constructing the LFS system in earnest. That is, we chroot into + the temporary mini Linux system, make a few final preparations, + and then begin installing the packages. +

+

+ The installation of this software is straightforward. Although + in many cases the installation instructions could be made + shorter and more generic, we have opted to provide the full + instructions for every package to minimize the possibilities + for mistakes. The key to learning what makes a Linux system + work is to know what each package is used for and why you (or + the system) may need it. +

+

+ We do not recommend using optimizations. They can make a + program run slightly faster, but they may also cause + compilation difficulties and problems when running the program. + If a package refuses to compile when using optimization, try to + compile it without optimization and see if that fixes the + problem. Even if the package does compile when using + optimization, there is the risk it may have been compiled + incorrectly because of the complex interactions between the + code and build tools. Also note that the -march and -mtune + options using values not specified in the book have not been + tested. This may cause problems with the toolchain packages + (Binutils, GCC and Glibc). The small potential gains achieved + in using compiler optimizations are often outweighed by the + risks. First-time builders of LFS are encouraged to build + without custom optimizations. The subsequent system will still + run very fast and be stable at the same time. +

+

+ The order that packages are installed in this chapter needs to + be strictly followed to ensure that no program accidentally + acquires a path referring to /tools hard-wired into it. For the same + reason, do not compile separate packages in parallel. Compiling + in parallel may save time (especially on dual-CPU machines), + but it could result in a program containing a hard-wired path + to /tools, which will cause the + program to stop working when that directory is removed. +

+

+ Before the installation instructions, each installation page + provides information about the package, including a concise + description of what it contains, approximately how long it will + take to build, and how much disk space is required during this + building process. Following the installation instructions, + there is a list of programs and libraries (along with brief + descriptions of these) that the package installs. +

+
+

+ Note +

+

+ The SBU values and required disk space includes test suite + data for all applicable packages in Chapter 6. +

+
+
+

+ 6.1.1. About libraries +

+

+ In general, the LFS editors discourage building and + installing static libraries. The original purpose for most + static libraries has been made obsolete in a modern Linux + system. In addition linking a static library into a program + can be detrimental. If an update to the library is needed to + remove a security problem, all programs that use the static + library will need to be relinked to the new library. Since + the use of static libraries is not always obvious, the + relevant programs (and the procedures needed to do the + linking) may not even be known. +

+

+ In the procedures in Chapter 6, we remove or disable + installation of most static libraries. Usually this is done + by passing a --disable-static + option to configure. In other cases, + alternate means are needed. In a few cases, especially glibc + and gcc, the use of static libraries remains essential to the + general package building process. +

+

+ For a more complete discussion of libraries, see the + discussion + Libraries: Static or shared? in the BLFS book. +

+
+
+
+
+
+
+

+ 6.2. Preparing Virtual Kernel + File Systems +

+
+
+
+

+ Various file systems exported by the kernel are used to + communicate to and from the kernel itself. These file systems + are virtual in that no disk space is used for them. The content + of the file systems resides in memory. +

+

+ Begin by creating directories onto which the file systems will + be mounted: +

+
+mkdir -pv $LFS/{dev,proc,sys,run}
+
+
+

+ 6.2.1. Creating Initial Device Nodes +

+

+ When the kernel boots the system, it requires the presence of + a few device nodes, in particular the console and null devices. The device nodes must be + created on the hard disk so that they are available before + udevd has been + started, and additionally when Linux is started with + init=/bin/bash. + Create the devices by running the following commands: +

+
+mknod -m 600 $LFS/dev/console c 5 1
+mknod -m 666 $LFS/dev/null c 1 3
+
+
+
+

+ 6.2.2. Mounting and Populating /dev +

+

+ The recommended method of populating the /dev directory with devices is to mount a + virtual filesystem (such as tmpfs) on the /dev directory, and allow the devices to be + created dynamically on that virtual filesystem as they are + detected or accessed. Device creation is generally done + during the boot process by Udev. Since this new system does + not yet have Udev and has not yet been booted, it is + necessary to mount and populate /dev manually. This is accomplished by bind + mounting the host system's /dev + directory. A bind mount is a special type of mount that + allows you to create a mirror of a directory or mount point + to some other location. Use the following command to achieve + this: +

+
+mount -v --bind /dev $LFS/dev
+
+
+
+

+ 6.2.3. Mounting Virtual Kernel + File Systems +

+

+ Now mount the remaining virtual kernel filesystems: +

+
+mount -vt devpts devpts $LFS/dev/pts -o gid=5,mode=620
+mount -vt proc proc $LFS/proc
+mount -vt sysfs sysfs $LFS/sys
+mount -vt tmpfs tmpfs $LFS/run
+
+
+

+ The meaning of the mount options for + devpts: +

+
+
+ gid=5 +
+
+

+ This ensures that all devpts-created device nodes are + owned by group ID 5. This is the ID we will use later + on for the tty group. + We use the group ID instead of a name, since the host + system might use a different ID for its tty group. +

+
+
+ mode=0620 +
+
+

+ This ensures that all devpts-created device nodes have + mode 0620 (user readable and writable, group writable). + Together with the option above, this ensures that + devpts will create device nodes that meet the + requirements of grantpt(), meaning the Glibc + pt_chown + helper binary (which is not installed by default) is + not necessary. +

+
+
+
+

+ In some host systems, /dev/shm + is a symbolic link to /run/shm. + The /run tmpfs was mounted above so in this case only a + directory needs to be created. +

+
+if [ -h $LFS/dev/shm ]; then
+  mkdir -pv $LFS/$(readlink $LFS/dev/shm)
+fi
+
+
+
+
+
+
+
+

+ 6.3. Package Management +

+
+
+
+

+ Package Management is an often requested addition to the LFS + Book. A Package Manager allows tracking the installation of + files making it easy to remove and upgrade packages. As well as + the binary and library files, a package manager will handle the + installation of configuration files. Before you begin to + wonder, NO—this section will not talk about nor recommend + any particular package manager. What it provides is a roundup + of the more popular techniques and how they work. The perfect + package manager for you may be among these techniques or may be + a combination of two or more of these techniques. This section + briefly mentions issues that may arise when upgrading packages. +

+

+ Some reasons why no package manager is mentioned in LFS or BLFS + include: +

+
+
    +
  • +

    + Dealing with package management takes the focus away from + the goals of these books—teaching how a Linux + system is built. +

    +
  • +
  • +

    + There are multiple solutions for package management, each + having its strengths and drawbacks. Including one that + satisfies all audiences is difficult. +

    +
  • +
+
+

+ There are some hints written on the topic of package + management. Visit the Hints + Project and see if one of them fits your need. +

+
+

+ 6.3.1. Upgrade Issues +

+

+ A Package Manager makes it easy to upgrade to newer versions + when they are released. Generally the instructions in the LFS + and BLFS Book can be used to upgrade to the newer versions. + Here are some points that you should be aware of when + upgrading packages, especially on a running system. +

+
+
    +
  • +

    + If Glibc needs to be upgraded to a newer version, (e.g. + from glibc-2.19 to glibc-2.20), it is safer to rebuild + LFS. Though you may be able to rebuild all + the packages in their dependency order, we do not + recommend it. +

    +
  • +
  • +

    + If a package containing a shared library is updated, + and if the name of the library changes, then all the + packages dynamically linked to the library need to be + recompiled to link against the newer library. (Note + that there is no correlation between the package + version and the name of the library.) For example, + consider a package foo-1.2.3 that installs a shared + library with name libfoo.so.1. Say you upgrade the + package to a newer version foo-1.2.4 that installs a + shared library with name libfoo.so.2. In this case, all + packages that are dynamically linked to libfoo.so.1 need to be recompiled to + link against libfoo.so.2. + Note that you should not remove the previous libraries + until the dependent packages are recompiled. +

    +
  • +
+
+
+
+

+ 6.3.2. Package Management Techniques +

+

+ The following are some common package management techniques. + Before making a decision on a package manager, do some + research on the various techniques, particularly the + drawbacks of the particular scheme. +

+
+
+
+
+

+ 6.3.2.1. It is All in My + Head! +

+
+
+
+

+ Yes, this is a package management technique. Some folks do + not find the need for a package manager because they know + the packages intimately and know what files are installed + by each package. Some users also do not need any package + management because they plan on rebuilding the entire + system when a package is changed. +

+
+
+
+
+
+

+ 6.3.2.2. Install in + Separate Directories +

+
+
+
+

+ This is a simplistic package management that does not need + any extra package to manage the installations. Each package + is installed in a separate directory. For example, package + foo-1.1 is installed in /usr/pkg/foo-1.1 and a symlink is made + from /usr/pkg/foo to + /usr/pkg/foo-1.1. When + installing a new version foo-1.2, it is installed in + /usr/pkg/foo-1.2 and the + previous symlink is replaced by a symlink to the new + version. +

+

+ Environment variables such as PATH, LD_LIBRARY_PATH, MANPATH, INFOPATH + and CPPFLAGS need to be expanded + to include /usr/pkg/foo. For + more than a few packages, this scheme becomes unmanageable. +

+
+
+
+
+
+

+ 6.3.2.3. Symlink Style + Package Management +

+
+
+
+

+ This is a variation of the previous package management + technique. Each package is installed similar to the + previous scheme. But instead of making the symlink, each + file is symlinked into the /usr hierarchy. This removes the need to + expand the environment variables. Though the symlinks can + be created by the user to automate the creation, many + package managers have been written using this approach. A + few of the popular ones include Stow, Epkg, Graft, and + Depot. +

+

+ The installation needs to be faked, so that the package + thinks that it is installed in /usr though in reality it is installed in + the /usr/pkg hierarchy. + Installing in this manner is not usually a trivial task. + For example, consider that you are installing a package + libfoo-1.1. The following instructions may not install the + package properly: +

+
+./configure --prefix=/usr/pkg/libfoo/1.1
+make
+make install
+
+

+ The installation will work, but the dependent packages may + not link to libfoo as you would expect. If you compile a + package that links against libfoo, you may notice that it + is linked to /usr/pkg/libfoo/1.1/lib/libfoo.so.1 + instead of /usr/lib/libfoo.so.1 as you would expect. + The correct approach is to use the DESTDIR strategy to fake installation of the + package. This approach works as follows: +

+
+./configure --prefix=/usr
+make
+make DESTDIR=/usr/pkg/libfoo/1.1 install
+
+

+ Most packages support this approach, but there are some + which do not. For the non-compliant packages, you may + either need to manually install the package, or you may + find that it is easier to install some problematic packages + into /opt. +

+
+
+
+
+
+

+ 6.3.2.4. Timestamp Based +

+
+
+
+

+ In this technique, a file is timestamped before the + installation of the package. After the installation, a + simple use of the find command with the + appropriate options can generate a log of all the files + installed after the timestamp file was created. A package + manager written with this approach is install-log. +

+

+ Though this scheme has the advantage of being simple, it + has two drawbacks. If, during installation, the files are + installed with any timestamp other than the current time, + those files will not be tracked by the package manager. + Also, this scheme can only be used when one package is + installed at a time. The logs are not reliable if two + packages are being installed on two different consoles. +

+
+
+
+
+
+

+ 6.3.2.5. Tracing + Installation Scripts +

+
+
+
+

+ In this approach, the commands that the installation + scripts perform are recorded. There are two techniques that + one can use: +

+

+ The LD_PRELOAD environment + variable can be set to point to a library to be preloaded + before installation. During installation, this library + tracks the packages that are being installed by attaching + itself to various executables such as cp, install, mv and tracking the + system calls that modify the filesystem. For this approach + to work, all the executables need to be dynamically linked + without the suid or sgid bit. Preloading the library may + cause some unwanted side-effects during installation. + Therefore, it is advised that one performs some tests to + ensure that the package manager does not break anything and + logs all the appropriate files. +

+

+ The second technique is to use strace, which logs all + system calls made during the execution of the installation + scripts. +

+
+
+
+
+
+

+ 6.3.2.6. Creating + Package Archives +

+
+
+
+

+ In this scheme, the package installation is faked into a + separate tree as described in the Symlink style package + management. After the installation, a package archive is + created using the installed files. This archive is then + used to install the package either on the local machine or + can even be used to install the package on other machines. +

+

+ This approach is used by most of the package managers found + in the commercial distributions. Examples of package + managers that follow this approach are RPM (which, + incidentally, is required by the Linux + Standard Base Specification), pkg-utils, Debian's apt, + and Gentoo's Portage system. A hint describing how to adopt + this style of package management for LFS systems is located + at + http://www.linuxfromscratch.org/hints/downloads/files/fakeroot.txt. +

+

+ Creation of package files that include dependency + information is complex and is beyond the scope of LFS. +

+

+ Slackware uses a tar based system for + package archives. This system purposely does not handle + package dependencies as more complex package managers do. + For details of Slackware package management, see http://www.slackbook.org/html/package-management.html. +

+
+
+
+
+
+

+ 6.3.2.7. User Based + Management +

+
+
+
+

+ This scheme, unique to LFS, was devised by Matthias + Benkmann, and is available from the Hints + Project. In this scheme, each package is installed as a + separate user into the standard locations. Files belonging + to a package are easily identified by checking the user ID. + The features and shortcomings of this approach are too + complex to describe in this section. For the details please + see the hint at + http://www.linuxfromscratch.org/hints/downloads/files/more_control_and_pkg_man.txt. +

+
+
+
+

+ 6.3.3. Deploying LFS on Multiple Systems +

+

+ One of the advantages of an LFS system is that there are no + files that depend on the position of files on a disk system. + Cloning an LFS build to another computer with the same + architecture as the base system is as simple as using + tar on the LFS + partition that contains the root directory (about 250MB + uncompressed for a base LFS build), copying that file via + network transfer or CD-ROM to the new system and expanding + it. From that point, a few configuration files will have to + be changed. Configuration files that may need to be updated + include: /etc/hosts, + /etc/fstab, /etc/passwd, /etc/group, /etc/shadow, + /etc/ld.so.conf, /etc/sysconfig/rc.site, /etc/sysconfig/network, and /etc/sysconfig/ifconfig.eth0. +

+

+ A custom kernel may need to be built for the new system + depending on differences in system hardware and the original + kernel configuration. +

+
+

+ Note +

+

+ There have been some reports of issues when copying between + similar but not identical architectures. For instance, the + instruction set for an Intel system is not identical with + an AMD processor and later versions of some processors may + have instructions that are unavailable in earlier versions. +

+
+

+ Finally the new system has to be made bootable via Section 8.4, + “Using GRUB to Set Up the Boot Process”. +

+
+
+
+
+
+
+

+ 6.4. Entering the Chroot + Environment +

+
+
+
+

+ It is time to enter the chroot environment to begin building + and installing the final LFS system. As user root, run the following command to enter + the realm that is, at the moment, populated with only the + temporary tools: +

+
+chroot "$LFS" /tools/bin/env -i \
+    HOME=/root                  \
+    TERM="$TERM"                \
+    PS1='(lfs chroot) \u:\w\$ ' \
+    PATH=/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin \
+    /tools/bin/bash --login +h
+
+

+ The -i option given to + the env command + will clear all variables of the chroot environment. After that, + only the HOME, TERM, PS1, and + PATH variables are set again. The + TERM=$TERM construct + will set the TERM variable inside + chroot to the same value as outside chroot. This variable is + needed for programs like vim and less to operate properly. If + other variables are needed, such as CFLAGS or CXXFLAGS, + this is a good place to set them again. +

+

+ From this point on, there is no need to use the LFS variable anymore, because all work will be + restricted to the LFS file system. This is because the Bash + shell is told that $LFS is now + the root (/) directory. +

+

+ Notice that /tools/bin comes last + in the PATH. This means that a + temporary tool will no longer be used once its final version is + installed. This occurs when the shell does not remember the locations of executed + binaries—for this reason, hashing is switched off by + passing the +h option + to bash. +

+

+ Note that the bash prompt will say + I have no name! This is + normal because the /etc/passwd + file has not been created yet. +

+
+

+ Note +

+

+ It is important that all the commands throughout the + remainder of this chapter and the following chapters are run + from within the chroot environment. If you leave this + environment for any reason (rebooting for example), ensure + that the virtual kernel filesystems are mounted as explained + in Section 6.2.2, + “Mounting and Populating /dev” and Section 6.2.3, + “Mounting Virtual Kernel File Systems” and + enter chroot again before continuing with the installation. +

+
+
+
+
+
+
+

+ 6.5. Creating + Directories +

+
+
+
+

+ It is time to create some structure in the LFS file system. + Create a standard directory tree by issuing the following + commands: +

+
+mkdir -pv /{bin,boot,etc/{opt,sysconfig},home,lib/firmware,mnt,opt}
+mkdir -pv /{media/{floppy,cdrom},sbin,srv,var}
+install -dv -m 0750 /root
+install -dv -m 1777 /tmp /var/tmp
+mkdir -pv /usr/{,local/}{bin,include,lib,sbin,src}
+mkdir -pv /usr/{,local/}share/{color,dict,doc,info,locale,man}
+mkdir -v  /usr/{,local/}share/{misc,terminfo,zoneinfo}
+mkdir -v  /usr/libexec
+mkdir -pv /usr/{,local/}share/man/man{1..8}
+
+case $(uname -m) in
+ x86_64) mkdir -v /lib64 ;;
+esac
+
+mkdir -v /var/{log,mail,spool}
+ln -sv /run /var/run
+ln -sv /run/lock /var/lock
+mkdir -pv /var/{opt,cache,lib/{color,misc,locate},local}
+
+

+ Directories are, by default, created with permission mode 755, + but this is not desirable for all directories. In the commands + above, two changes are made—one to the home directory of + user root, and another to the + directories for temporary files. +

+

+ The first mode change ensures that not just anybody can enter + the /root directory—the + same as a normal user would do with his or her home directory. + The second mode change makes sure that any user can write to + the /tmp and /var/tmp directories, but cannot remove + another user's files from them. The latter is prohibited by the + so-called sticky + bit, the highest bit (1) in the 1777 bit + mask. +

+
+

+ 6.5.1. FHS Compliance Note +

+

+ The directory tree is based on the Filesystem Hierarchy + Standard (FHS) (available at https://wiki.linuxfoundation.org/en/FHS). + The FHS also specifies the optional existence of some + directories such as /usr/local/games and /usr/share/games. We create only the + directories that are needed. However, feel free to create + these directories. +

+
+
+
+
+
+
+

+ 6.6. Creating Essential + Files and Symlinks +

+
+
+
+

+ Some programs use hard-wired paths to programs which do not + exist yet. In order to satisfy these programs, create a number + of symbolic links which will be replaced by real files + throughout the course of this chapter after the software has + been installed: +

+
+ln -sv /tools/bin/{bash,cat,chmod,dd,echo,ln,mkdir,pwd,rm,stty,touch} /bin
+ln -sv /tools/bin/{env,install,perl,printf}         /usr/bin
+ln -sv /tools/lib/libgcc_s.so{,.1}                  /usr/lib
+ln -sv /tools/lib/libstdc++.{a,so{,.6}}             /usr/lib
+
+install -vdm755 /usr/lib/pkgconfig
+
+ln -sv bash /bin/sh
+
+
+

+ The purpose of each link: +

+
+
+ /bin/bash +
+
+

+ Many bash + scripts specify /bin/bash. +

+
+
+ /bin/cat +
+
+

+ This pathname is hard-coded into Glibc's configure + script. +

+
+
+ /bin/dd +
+
+

+ The path to dd will be + hard-coded into the /usr/bin/libtool utility. +

+
+
+ /bin/echo +
+
+

+ This is to satisfy one of the tests in Glibc's test + suite, which expects /bin/echo. +

+
+
+ /usr/bin/env +
+
+

+ This pathname is hard-coded into some packages build + procedures. +

+
+
+ /usr/bin/install +
+
+

+ The path to install will be + hard-coded into the /usr/lib/bash/Makefile.inc file. +

+
+
+ /bin/ln +
+
+

+ The path to ln will be + hard-coded into the /usr/lib/perl5/5.28.1/<target-triplet>/Config_heavy.pl + file. +

+
+
+ /bin/pwd +
+
+

+ Some configure scripts, + particularly Glibc's, have this pathname hard-coded. +

+
+
+ /bin/rm +
+
+

+ The path to rm will be + hard-coded into the /usr/lib/perl5/5.28.1/<target-triplet>/Config_heavy.pl + file. +

+
+
+ /bin/stty +
+
+

+ This pathname is hard-coded into Expect, therefore it is + needed for Binutils and GCC test suites to pass. +

+
+
+ /usr/bin/perl +
+
+

+ Many Perl scripts hard-code this path to the perl program. +

+
+
+ /usr/lib/libgcc_s.so{,.1} +
+
+

+ Glibc needs this for the pthreads library to work. +

+
+
+ /usr/lib/libstdc++{,.6} +
+
+

+ This is needed by several tests in Glibc's test suite, as + well as for C++ support in GMP. +

+
+
+ /bin/sh +
+
+

+ Many shell scripts hard-code /bin/sh. +

+
+
+
+

+ Historically, Linux maintains a list of the mounted file + systems in the file /etc/mtab. + Modern kernels maintain this list internally and exposes it to + the user via the /proc + filesystem. To satisfy utilities that expect the presence of + /etc/mtab, create the following + symbolic link: +

+
+ln -sv /proc/self/mounts /etc/mtab
+
+

+ In order for user root to be + able to login and for the name root to + be recognized, there must be relevant entries in the + /etc/passwd and /etc/group files. +

+

+ Create the /etc/passwd file by + running the following command: +

+
+cat > /etc/passwd << "EOF"
+root:x:0:0:root:/root:/bin/bash
+bin:x:1:1:bin:/dev/null:/bin/false
+daemon:x:6:6:Daemon User:/dev/null:/bin/false
+messagebus:x:18:18:D-Bus Message Daemon User:/var/run/dbus:/bin/false
+nobody:x:99:99:Unprivileged User:/dev/null:/bin/false
+EOF
+
+

+ The actual password for root + (the x used here is just a placeholder) + will be set later. +

+

+ Create the /etc/group file by + running the following command: +

+
+cat > /etc/group << "EOF"
+root:x:0:
+bin:x:1:daemon
+sys:x:2:
+kmem:x:3:
+tape:x:4:
+tty:x:5:
+daemon:x:6:
+floppy:x:7:
+disk:x:8:
+lp:x:9:
+dialout:x:10:
+audio:x:11:
+video:x:12:
+utmp:x:13:
+usb:x:14:
+cdrom:x:15:
+adm:x:16:
+messagebus:x:18:
+input:x:24:
+mail:x:34:
+kvm:x:61:
+wheel:x:97:
+nogroup:x:99:
+users:x:999:
+EOF
+
+

+ The created groups are not part of any standard—they are + groups decided on in part by the requirements of the Udev + configuration in this chapter, and in part by common convention + employed by a number of existing Linux distributions. In + addition, some test suites rely on specific users or groups. + The Linux Standard Base (LSB, available at http://www.linuxbase.org) + recommends only that, besides the group root with a Group ID (GID) of 0, a group + bin with a GID of 1 be present. + All other group names and GIDs can be chosen freely by the + system administrator since well-written programs do not depend + on GID numbers, but rather use the group's name. +

+

+ To remove the I + have no name! prompt, start a new shell. + Since a full Glibc was installed in Chapter 5 + and the /etc/passwd and + /etc/group files have been + created, user name and group name resolution will now work: +

+
+exec /tools/bin/bash --login +h
+
+

+ Note the use of the +h + directive. This tells bash not to use its internal + path hashing. Without this directive, bash would remember the paths + to binaries it has executed. To ensure the use of the newly + compiled binaries as soon as they are installed, the +h directive will be used for the + duration of this chapter. +

+

+ The login, + agetty, and + init programs + (and others) use a number of log files to record information + such as who was logged into the system and when. However, these + programs will not write to the log files if they do not already + exist. Initialize the log files and give them proper + permissions: +

+
+touch /var/log/{btmp,lastlog,faillog,wtmp}
+chgrp -v utmp /var/log/lastlog
+chmod -v 664  /var/log/lastlog
+chmod -v 600  /var/log/btmp
+
+

+ The /var/log/wtmp file records + all logins and logouts. The /var/log/lastlog file records when each user + last logged in. The /var/log/faillog file records failed login + attempts. The /var/log/btmp file + records the bad login attempts. +

+
+

+ Note +

+

+ The /run/utmp file records the + users that are currently logged in. This file is created + dynamically in the boot scripts. +

+
+
+
+
+
+
+

+ 6.7. Linux-4.20.12 API + Headers +

+
+
+
+
+

+ The Linux API Headers (in linux-4.20.12.tar.xz) expose the + kernel's API for use by Glibc. +

+
+
+
+ Approximate build time: + less than 0.1 SBU +
+
+ Required disk space: + 941 MB +
+
+
+
+
+

+ 6.7.1. Installation of Linux API Headers +

+

+ The Linux kernel needs to expose an Application Programming + Interface (API) for the system's C library (Glibc in LFS) to + use. This is done by way of sanitizing various C header files + that are shipped in the Linux kernel source tarball. +

+

+ Make sure there are no stale files and dependencies lying + around from previous activity: +

+
+make mrproper
+
+

+ Now extract the user-visible kernel headers from the source. + They are placed in an intermediate local directory and copied + to the needed location because the extraction process removes + any existing files in the target directory. There are also + some hidden files used by the kernel developers and not + needed by LFS that are removed from the intermediate + directory. +

+
+make INSTALL_HDR_PATH=dest headers_install
+find dest/include \( -name .install -o -name ..install.cmd \) -delete
+cp -rv dest/include/* /usr/include
+
+
+
+

+ 6.7.2. Contents of Linux API + Headers +

+
+
+
+ Installed headers: + /usr/include/asm/*.h, + /usr/include/asm-generic/*.h, /usr/include/drm/*.h, + /usr/include/linux/*.h, /usr/include/misc/*.h, + /usr/include/mtd/*.h, /usr/include/rdma/*.h, + /usr/include/scsi/*.h, /usr/include/sound/*.h, + /usr/include/video/*.h, and /usr/include/xen/*.h +
+
+ Installed directories: + /usr/include/asm, + /usr/include/asm-generic, /usr/include/drm, + /usr/include/linux, /usr/include/misc, /usr/include/mtd, + /usr/include/rdma, /usr/include/scsi, /usr/include/sound, + /usr/include/video, and /usr/include/xen +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ /usr/include/asm/*.h +

+
+

+ The Linux API ASM Headers +

+
+

+ /usr/include/asm-generic/*.h +

+
+

+ The Linux API ASM Generic Headers +

+
+

+ /usr/include/drm/*.h +

+
+

+ The Linux API DRM Headers +

+
+

+ /usr/include/linux/*.h +

+
+

+ The Linux API Linux Headers +

+
+

+ /usr/include/mtd/*.h +

+
+

+ The Linux API MTD Headers +

+
+

+ /usr/include/rdma/*.h +

+
+

+ The Linux API RDMA Headers +

+
+

+ /usr/include/scsi/*.h +

+
+

+ The Linux API SCSI Headers +

+
+

+ /usr/include/sound/*.h +

+
+

+ The Linux API Sound Headers +

+
+

+ /usr/include/video/*.h +

+
+

+ The Linux API Video Headers +

+
+

+ /usr/include/xen/*.h +

+
+

+ The Linux API Xen Headers +

+
+
+
+
+
+
+
+
+

+ 6.8. Man-pages-4.16 +

+
+
+
+
+

+ The Man-pages package contains over 2,200 man pages. +

+
+
+
+ Approximate build time: + less than 0.1 SBU +
+
+ Required disk space: + 28 MB +
+
+
+
+
+

+ 6.8.1. Installation of Man-pages +

+

+ Install Man-pages by running: +

+
+make install
+
+
+
+

+ 6.8.2. + Contents of Man-pages +

+
+
+
+ Installed files: + various man pages +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ man + pages +

+
+

+ Describe C programming language functions, + important device files, and significant + configuration files +

+
+
+
+
+
+
+
+
+

+ 6.9. Glibc-2.29 +

+
+
+
+
+

+ The Glibc package contains the main C library. This library + provides the basic routines for allocating memory, searching + directories, opening and closing files, reading and writing + files, string handling, pattern matching, arithmetic, and so + on. +

+
+
+
+ Approximate build time: + 22 SBU +
+
+ Required disk space: + 3.2 GB +
+
+
+
+
+

+ 6.9.1. Installation of Glibc +

+
+

+ Note +

+

+ The Glibc build system is self-contained and will install + perfectly, even though the compiler specs file and linker + are still pointing to /tools. + The specs and linker cannot be adjusted before the Glibc + install because the Glibc autoconf tests would give false + results and defeat the goal of achieving a clean build. +

+
+

+ Some of the Glibc programs use the non-FHS compilant + /var/db directory to store + their runtime data. Apply the following patch to make such + programs store their runtime data in the FHS-compliant + locations: +

+
+patch -Np1 -i ../glibc-2.29-fhs-1.patch
+
+

+ First create a compatibility symlink to avoid references to + /tools in our final glibc: +

+
+ln -sfv /tools/lib/gcc /usr/lib
+
+

+ Determine the GCC include directory and create a symlink for + LSB compliance. Additionally, for x86_64, create a + compatibility symlink required for the dynamic loader to + function correctly: +

+
+case $(uname -m) in
+    i?86)    GCC_INCDIR=/usr/lib/gcc/$(uname -m)-pc-linux-gnu/8.2.0/include
+            ln -sfv ld-linux.so.2 /lib/ld-lsb.so.3
+    ;;
+    x86_64) GCC_INCDIR=/usr/lib/gcc/x86_64-pc-linux-gnu/8.2.0/include
+            ln -sfv ../lib/ld-linux-x86-64.so.2 /lib64
+            ln -sfv ../lib/ld-linux-x86-64.so.2 /lib64/ld-lsb-x86-64.so.3
+    ;;
+esac
+
+

+ Remove a file that may be left over from a previous build + attempt: +

+
+rm -f /usr/include/limits.h
+
+

+ The Glibc documentation recommends building Glibc in a + dedicated build directory: +

+
+mkdir -v build
+cd       build
+
+

+ Prepare Glibc for compilation: +

+
+CC="gcc -isystem $GCC_INCDIR -isystem /usr/include" \
+../configure --prefix=/usr                          \
+             --disable-werror                       \
+             --enable-kernel=3.2                    \
+             --enable-stack-protector=strong        \
+             libc_cv_slibdir=/lib
+unset GCC_INCDIR
+
+
+

+ The meaning of the options and new configure + parameters: +

+
+
+ CC="gcc + -isystem $GCC_INCDIR -isystem + /usr/include" +
+
+

+ Setting the location of both gcc and system include + directories avoids introduction of invalid paths in + debugging symbols. +

+
+
+ --disable-werror +
+
+

+ This option disables the -Werror option passed to GCC. + This is necessary for running the test suite. +

+
+
+ --enable-stack-protector=strong +
+
+

+ This option increases system security by adding extra + code to check for buffer overflows, such as stack + smashing attacks. +

+
+
+ libc_cv_slibdir=/lib +
+
+

+ This variable sets the correct library for all systems. + We do not want lib64 to be used. +

+
+
+
+

+ Compile the package: +

+
+make
+
+
+

+ Important +

+

+ In this section, the test suite for Glibc is considered + critical. Do not skip it under any circumstance. +

+
+

+ Generally a few tests do not pass. The test failures listed + below are usually safe to ignore. +

+
+case $(uname -m) in
+  i?86)   ln -sfnv $PWD/elf/ld-linux.so.2        /lib ;;
+  x86_64) ln -sfnv $PWD/elf/ld-linux-x86-64.so.2 /lib ;;
+esac
+
+
+

+ Note +

+

+ The symbolic link above is needed to run the tests at this + stage of building in the chroot envirnment. It will be + overwritten in the install phase below. +

+
+
+make check
+
+

+ You may see some test failures. The Glibc test suite is + somewhat dependent on the host system. This is a list of the + most common issues seen for some versions of LFS: +

+
+
    +
  • +

    + misc/tst-ttyname + is known to fail in the LFS chroot environment. +

    +
  • +
  • +

    + inet/tst-idna_name_classify + is known to fail in the LFS chroot environment. +

    +
  • +
  • +

    + posix/tst-getaddrinfo4 and + posix/tst-getaddrinfo5 may + fail on some architectures. +

    +
  • +
  • +

    + The nss/tst-nss-files-hosts-multi + test may fail for reasons that have not been + determined. +

    +
  • +
  • +

    + The rt/tst-cputimer{1,2,3} tests + depend on the host system kernel. Kernels + 4.14.91–4.14.96, 4.19.13–4.19.18, and + 4.20.0–4.20.5 are known to cause these tests to + fail. +

    +
  • +
  • +

    + The math tests sometimes fail when running on systems + where the CPU is not a relatively new Intel or AMD + processor. +

    +
  • +
+
+

+ Though it is a harmless message, the install stage of Glibc + will complain about the absence of /etc/ld.so.conf. Prevent this warning with: +

+
+touch /etc/ld.so.conf
+
+

+ Fix the generated Makefile to skip an unneeded sanity check + that fails in the LFS partial environment: +

+
+sed '/test-installation/s@$(PERL)@echo not running@' -i ../Makefile
+
+

+ Install the package: +

+
+make install
+
+

+ Install the configuration file and runtime directory for + nscd: +

+
+cp -v ../nscd/nscd.conf /etc/nscd.conf
+mkdir -pv /var/cache/nscd
+
+

+ Next, install the locales that can make the system respond in + a different language. None of the locales are required, but + if some of them are missing, the test suites of future + packages would skip important testcases. +

+

+ Individual locales can be installed using the localedef program. E.g., + the first localedef command below + combines the /usr/share/i18n/locales/cs_CZ + charset-independent locale definition with the /usr/share/i18n/charmaps/UTF-8.gz charmap + definition and appends the result to the /usr/lib/locale/locale-archive file. The + following instructions will install the minimum set of + locales necessary for the optimal coverage of tests: +

+
+mkdir -pv /usr/lib/locale
+localedef -i POSIX -f UTF-8 C.UTF-8 2> /dev/null || true
+localedef -i cs_CZ -f UTF-8 cs_CZ.UTF-8
+localedef -i de_DE -f ISO-8859-1 de_DE
+localedef -i de_DE@euro -f ISO-8859-15 de_DE@euro
+localedef -i de_DE -f UTF-8 de_DE.UTF-8
+localedef -i el_GR -f ISO-8859-7 el_GR
+localedef -i en_GB -f UTF-8 en_GB.UTF-8
+localedef -i en_HK -f ISO-8859-1 en_HK
+localedef -i en_PH -f ISO-8859-1 en_PH
+localedef -i en_US -f ISO-8859-1 en_US
+localedef -i en_US -f UTF-8 en_US.UTF-8
+localedef -i es_MX -f ISO-8859-1 es_MX
+localedef -i fa_IR -f UTF-8 fa_IR
+localedef -i fr_FR -f ISO-8859-1 fr_FR
+localedef -i fr_FR@euro -f ISO-8859-15 fr_FR@euro
+localedef -i fr_FR -f UTF-8 fr_FR.UTF-8
+localedef -i it_IT -f ISO-8859-1 it_IT
+localedef -i it_IT -f UTF-8 it_IT.UTF-8
+localedef -i ja_JP -f EUC-JP ja_JP
+localedef -i ja_JP -f SHIFT_JIS ja_JP.SIJS 2> /dev/null || true
+localedef -i ja_JP -f UTF-8 ja_JP.UTF-8
+localedef -i ru_RU -f KOI8-R ru_RU.KOI8-R
+localedef -i ru_RU -f UTF-8 ru_RU.UTF-8
+localedef -i tr_TR -f UTF-8 tr_TR.UTF-8
+localedef -i zh_CN -f GB18030 zh_CN.GB18030
+localedef -i zh_HK -f BIG5-HKSCS zh_HK.BIG5-HKSCS
+
+

+ In addition, install the locale for your own country, + language and character set. +

+

+ Alternatively, install all locales listed in the glibc-2.29/localedata/SUPPORTED file (it + includes every locale listed above and many more) at once + with the following time-consuming command: +

+
+make localedata/install-locales
+
+

+ Then use the localedef command to create + and install locales not listed in the glibc-2.29/localedata/SUPPORTED file in the + unlikely case you need them. +

+
+

+ Note +

+

+ Glibc now uses libidn2 when resolving internationalized + domain names. This is a run time dependency. If this + capability is needed, the instructions for installing + libidn2 are in the + BLFS libidn2 page. +

+
+
+
+

+ 6.9.2. Configuring + Glibc +

+
+
+
+
+

+ 6.9.2.1. Adding + nsswitch.conf +

+
+
+
+

+ The /etc/nsswitch.conf file + needs to be created because the Glibc defaults do not work + well in a networked environment. +

+

+ Create a new file /etc/nsswitch.conf by running the + following: +

+
+cat > /etc/nsswitch.conf << "EOF"
+# Begin /etc/nsswitch.conf
+
+passwd: files
+group: files
+shadow: files
+
+hosts: files dns
+networks: files
+
+protocols: files
+services: files
+ethers: files
+rpc: files
+
+# End /etc/nsswitch.conf
+EOF
+
+
+
+
+
+
+

+ 6.9.2.2. Adding time + zone data +

+
+
+
+

+ Install and set up the time zone data with the following: +

+
+tar -xf ../../tzdata2018i.tar.gz
+
+ZONEINFO=/usr/share/zoneinfo
+mkdir -pv $ZONEINFO/{posix,right}
+
+for tz in etcetera southamerica northamerica europe africa antarctica  \
+          asia australasia backward pacificnew systemv; do
+    zic -L /dev/null   -d $ZONEINFO       ${tz}
+    zic -L /dev/null   -d $ZONEINFO/posix ${tz}
+    zic -L leapseconds -d $ZONEINFO/right ${tz}
+done
+
+cp -v zone.tab zone1970.tab iso3166.tab $ZONEINFO
+zic -d $ZONEINFO -p America/New_York
+unset ZONEINFO
+
+
+

+ The meaning of the zic commands: +

+
+
+ zic -L + /dev/null ... +
+
+

+ This creates posix time zones, without any leap + seconds. It is conventional to put these in both + zoneinfo and + zoneinfo/posix. It is + necessary to put the POSIX time zones in zoneinfo, otherwise various + test-suites will report errors. On an embedded + system, where space is tight and you do not intend to + ever update the time zones, you could save 1.9MB by + not using the posix + directory, but some applications or test-suites might + produce some failures. +

+
+
+ zic -L + leapseconds ... +
+
+

+ This creates right time zones, including leap + seconds. On an embedded system, where space is tight + and you do not intend to ever update the time zones, + or care about the correct time, you could save 1.9MB + by omitting the right + directory. +

+
+
+ zic ... + -p ... +
+
+

+ This creates the posixrules file. We use New York + because POSIX requires the daylight savings time + rules to be in accordance with US rules. +

+
+
+
+

+ One way to determine the local time zone is to run the + following script: +

+
+tzselect
+
+

+ After answering a few questions about the location, the + script will output the name of the time zone (e.g., + America/Edmonton). + There are also some other possible time zones listed in + /usr/share/zoneinfo such as + Canada/Eastern or + EST5EDT that are not + identified by the script but can be used. +

+

+ Then create the /etc/localtime file by running: +

+
+cp -v /usr/share/zoneinfo/<xxx> /etc/localtime
+
+

+ Replace <xxx> with the name + of the time zone selected (e.g., Canada/Eastern). +

+
+
+
+
+
+

+ 6.9.2.3. Configuring the Dynamic + Loader +

+
+
+
+

+ By default, the dynamic loader (/lib/ld-linux.so.2) searches through + /lib and /usr/lib for dynamic libraries that are + needed by programs as they are run. However, if there are + libraries in directories other than /lib and /usr/lib, these need to be added to the + /etc/ld.so.conf file in order + for the dynamic loader to find them. Two directories that + are commonly known to contain additional libraries are + /usr/local/lib and + /opt/lib, so add those + directories to the dynamic loader's search path. +

+

+ Create a new file /etc/ld.so.conf by running the following: +

+
+cat > /etc/ld.so.conf << "EOF"
+# Begin /etc/ld.so.conf
+/usr/local/lib
+/opt/lib
+
+EOF
+
+

+ If desired, the dynamic loader can also search a directory + and include the contents of files found there. Generally + the files in this include directory are one line specifying + the desired library path. To add this capability run the + following commands: +

+
+cat >> /etc/ld.so.conf << "EOF"
+# Add an include directory
+include /etc/ld.so.conf.d/*.conf
+
+EOF
+mkdir -pv /etc/ld.so.conf.d
+
+
+
+
+

+ 6.9.3. + Contents of Glibc +

+
+
+
+ Installed programs: + catchsegv, gencat, getconf, getent, + iconv, iconvconfig, ldconfig, ldd, lddlibc4, locale, + localedef, makedb, mtrace, nscd, pldd, sln, sotruss, + sprof, tzselect, xtrace, zdump, and zic +
+
+ Installed libraries: + ld-2.29.so, libBrokenLocale.{a,so}, + libSegFault.so, libanl.{a,so}, libc.{a,so}, + libc_nonshared.a, libcidn.so, libcrypt.{a,so}, + libdl.{a,so}, libg.a, libieee.a, libm.{a,so}, + libmcheck.a, libmemusage.so, libnsl.{a,so}, + libnss_compat.so, libnss_dns.so, libnss_files.so, + libnss_hesiod.so, libnss_nis.so, libnss_nisplus.so, + libpthread.{a,so}, libpthread_nonshared.a, + libresolv.{a,so}, librpcsvc.a, librt.{a,so}, + libthread_db.so, and libutil.{a,so} +
+
+ Installed directories: + /usr/include/arpa, + /usr/include/bits, /usr/include/gnu, /usr/include/net, + /usr/include/netash, /usr/include/netatalk, + /usr/include/netax25, /usr/include/neteconet, + /usr/include/netinet, /usr/include/netipx, + /usr/include/netiucv, /usr/include/netpacket, + /usr/include/netrom, /usr/include/netrose, + /usr/include/nfs, /usr/include/protocols, + /usr/include/rpc, /usr/include/rpcsvc, /usr/include/sys, + /usr/lib/audit, /usr/lib/gconv, /usr/lib/locale, + /usr/libexec/getconf, /usr/share/i18n, + /usr/share/zoneinfo, /var/cache/nscd, and + /var/lib/nss_db +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ catchsegv +

+
+

+ Can be used to create a stack trace when a program + terminates with a segmentation fault +

+
+

+ gencat +

+
+

+ Generates message catalogues +

+
+

+ getconf +

+
+

+ Displays the system configuration values for file + system specific variables +

+
+

+ getent +

+
+

+ Gets entries from an administrative database +

+
+

+ iconv +

+
+

+ Performs character set conversion +

+
+

+ iconvconfig +

+
+

+ Creates fastloading iconv module + configuration files +

+
+

+ ldconfig +

+
+

+ Configures the dynamic linker runtime bindings +

+
+

+ ldd +

+
+

+ Reports which shared libraries are required by each + given program or shared library +

+
+

+ lddlibc4 +

+
+

+ Assists ldd with object + files +

+
+

+ locale +

+
+

+ Prints various information about the current locale +

+
+

+ localedef +

+
+

+ Compiles locale specifications +

+
+

+ makedb +

+
+

+ Creates a simple database from textual input +

+
+

+ mtrace +

+
+

+ Reads and interprets a memory trace file and + displays a summary in human-readable format +

+
+

+ nscd +

+
+

+ A daemon that provides a cache for the most common + name service requests +

+
+

+ pldd +

+
+

+ Lists dynamic shared objects used by running + processes +

+
+

+ sln +

+
+

+ A statically linked ln program +

+
+

+ sotruss +

+
+

+ Traces shared library procedure calls of a + specified command +

+
+

+ sprof +

+
+

+ Reads and displays shared object profiling data +

+
+

+ tzselect +

+
+

+ Asks the user about the location of the system and + reports the corresponding time zone description +

+
+

+ xtrace +

+
+

+ Traces the execution of a program by printing the + currently executed function +

+
+

+ zdump +

+
+

+ The time zone dumper +

+
+

+ zic +

+
+

+ The time zone compiler +

+
+

+ ld-2.29.so +

+
+

+ The helper program for shared library executables +

+
+

+ libBrokenLocale +

+
+

+ Used internally by Glibc as a gross hack to get + broken programs (e.g., some Motif applications) + running. See comments in glibc-2.29/locale/broken_cur_max.c + for more information +

+
+

+ libSegFault +

+
+

+ The segmentation fault signal handler, used by + catchsegv +

+
+

+ libanl +

+
+

+ An asynchronous name lookup library +

+
+

+ libc +

+
+

+ The main C library +

+
+

+ libcidn +

+
+

+ Used internally by Glibc for handling + internationalized domain names in the getaddrinfo() function +

+
+

+ libcrypt +

+
+

+ The cryptography library +

+
+

+ libdl +

+
+

+ The dynamic linking interface library +

+
+

+ libg +

+
+

+ Dummy library containing no functions. Previously + was a runtime library for g++ +

+
+

+ libieee +

+
+

+ Linking in this module forces error handling rules + for math functions as defined by the Institute of + Electrical and Electronic Engineers (IEEE). The + default is POSIX.1 error handling +

+
+

+ libm +

+
+

+ The mathematical library +

+
+

+ libmcheck +

+
+

+ Turns on memory allocation checking when linked to +

+
+

+ libmemusage +

+
+

+ Used by memusage to help + collect information about the memory usage of a + program +

+
+

+ libnsl +

+
+

+ The network services library +

+
+

+ libnss +

+
+

+ The Name Service Switch libraries, containing + functions for resolving host names, user names, + group names, aliases, services, protocols, etc. +

+
+

+ libpthread +

+
+

+ The POSIX threads library +

+
+

+ libresolv +

+
+

+ Contains functions for creating, sending, and + interpreting packets to the Internet domain name + servers +

+
+

+ librpcsvc +

+
+

+ Contains functions providing miscellaneous RPC + services +

+
+

+ librt +

+
+

+ Contains functions providing most of the interfaces + specified by the POSIX.1b Realtime Extension +

+
+

+ libthread_db +

+
+

+ Contains functions useful for building debuggers + for multi-threaded programs +

+
+

+ libutil +

+
+

+ Contains code for standard functions + used in many different Unix utilities +

+
+
+
+
+
+
+
+
+

+ 6.10. Adjusting the + Toolchain +

+
+
+
+

+ Now that the final C libraries have been installed, it is time + to adjust the toolchain so that it will link any newly compiled + program against these new libraries. +

+

+ First, backup the /tools linker, + and replace it with the adjusted linker we made in chapter 5. + We'll also create a link to its counterpart in /tools/$(uname -m)-pc-linux-gnu/bin: +

+
+mv -v /tools/bin/{ld,ld-old}
+mv -v /tools/$(uname -m)-pc-linux-gnu/bin/{ld,ld-old}
+mv -v /tools/bin/{ld-new,ld}
+ln -sv /tools/bin/ld /tools/$(uname -m)-pc-linux-gnu/bin/ld
+
+

+ Next, amend the GCC specs file so that it points to the new + dynamic linker. Simply deleting all instances of /tools + should leave us with the correct path to the dynamic linker. + Also adjust the specs file so that GCC knows where to find the + correct headers and Glibc start files. A sed command accomplishes + this: +

+
+gcc -dumpspecs | sed -e 's@/tools@@g'                   \
+    -e '/\*startfile_prefix_spec:/{n;s@.*@/usr/lib/ @}' \
+    -e '/\*cpp:/{n;s@$@ -isystem /usr/include@}' >      \
+    `dirname $(gcc --print-libgcc-file-name)`/specs
+
+

+ It is a good idea to visually inspect the specs file to verify + the intended change was actually made. +

+

+ It is imperative at this point to ensure that the basic + functions (compiling and linking) of the adjusted toolchain are + working as expected. To do this, perform the following sanity + checks: +

+
+echo 'int main(){}' > dummy.c
+cc dummy.c -v -Wl,--verbose &> dummy.log
+readelf -l a.out | grep ': /lib'
+
+

+ There should be no errors, and the output of the last command + will be (allowing for platform-specific differences in dynamic + linker name): +

+
+[Requesting program interpreter: /lib64/ld-linux-x86-64.so.2]
+
+

+ Note that on 64-bit systems /lib + is the location of our dynamic linker, but is accessed via a + symbolic link in /lib64. +

+
+

+ Note +

+

+ On 32-bit systems the interpreter should be + /lib/ld-linux.so.2. +

+
+

+ Now make sure that we're setup to use the correct start files: +

+
+grep -o '/usr/lib.*/crt[1in].*succeeded' dummy.log
+
+

+ The output of the last command should be: +

+
+/usr/lib/../lib/crt1.o succeeded
+/usr/lib/../lib/crti.o succeeded
+/usr/lib/../lib/crtn.o succeeded
+
+

+ Verify that the compiler is searching for the correct header + files: +

+
+grep -B1 '^ /usr/include' dummy.log
+
+

+ This command should return the following output: +

+
+#include <...> search starts here:
+ /usr/include
+
+

+ Next, verify that the new linker is being used with the correct + search paths: +

+
+grep 'SEARCH.*/usr/lib' dummy.log |sed 's|; |\n|g'
+
+

+ References to paths that have components with '-linux-gnu' + should be ignored, but otherwise the output of the last command + should be: +

+
+SEARCH_DIR("/usr/lib")
+SEARCH_DIR("/lib")
+
+

+ Next make sure that we're using the correct libc: +

+
+grep "/lib.*/libc.so.6 " dummy.log
+
+

+ The output of the last command should be: +

+
+attempt to open /lib/libc.so.6 succeeded
+
+

+ Lastly, make sure GCC is using the correct dynamic linker: +

+
+grep found dummy.log
+
+

+ The output of the last command should be (allowing for + platform-specific differences in dynamic linker name): +

+
+found ld-linux-x86-64.so.2 at /lib/ld-linux-x86-64.so.2
+
+

+ If the output does not appear as shown above or is not received + at all, then something is seriously wrong. Investigate and + retrace the steps to find out where the problem is and correct + it. The most likely reason is that something went wrong with + the specs file adjustment. Any issues will need to be resolved + before continuing with the process. +

+

+ Once everything is working correctly, clean up the test files: +

+
+rm -v dummy.c a.out dummy.log
+
+
+
+
+
+
+

+ 6.11. Zlib-1.2.11 +

+
+
+
+
+

+ The Zlib package contains compression and decompression + routines used by some programs. +

+
+
+
+ Approximate build time: + less than 0.1 SBU +
+
+ Required disk space: + 4.4 MB +
+
+
+
+
+

+ 6.11.1. Installation of Zlib +

+

+ Prepare Zlib for compilation: +

+
+./configure --prefix=/usr
+
+

+ Compile the package: +

+
+make
+
+

+ To test the results, issue: +

+
+make check
+
+

+ Install the package: +

+
+make install
+
+

+ The shared library needs to be moved to /lib, and as a result the .so file in /usr/lib will need to be recreated: +

+
+mv -v /usr/lib/libz.so.* /lib
+ln -sfv ../../lib/$(readlink /usr/lib/libz.so) /usr/lib/libz.so
+
+
+
+

+ 6.11.2. + Contents of Zlib +

+
+
+
+ Installed libraries: + libz.{a,so} +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ libz +

+
+

+ Contains compression and decompression functions + used by some programs +

+
+
+
+
+
+
+
+
+

+ 6.12. File-5.36 +

+
+
+
+
+

+ The File package contains a utility for determining the type + of a given file or files. +

+
+
+
+ Approximate build time: + 0.1 SBU +
+
+ Required disk space: + 18 MB +
+
+
+
+
+

+ 6.12.1. Installation of File +

+

+ Prepare File for compilation: +

+
+./configure --prefix=/usr
+
+

+ Compile the package: +

+
+make
+
+

+ To test the results, issue: +

+
+make check
+
+

+ Install the package: +

+
+make install
+
+
+
+

+ 6.12.2. + Contents of File +

+
+
+
+ Installed programs: + file +
+
+ Installed library: + libmagic.so +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ file +

+
+

+ Tries to classify each given file; it does this by + performing several tests—file system tests, + magic number tests, and language tests +

+
+

+ libmagic +

+
+

+ Contains routines for magic number recognition, + used by the file program +

+
+
+
+
+
+
+
+
+

+ 6.13. Readline-8.0 +

+
+
+
+
+

+ The Readline package is a set of libraries that offers + command-line editing and history capabilities. +

+
+
+
+ Approximate build time: + 0.1 SBU +
+
+ Required disk space: + 15 MB +
+
+
+
+
+

+ 6.13.1. Installation of Readline +

+

+ Reinstalling Readline will cause the old libraries to be + moved to <libraryname>.old. While this is normally not + a problem, in some cases it can trigger a linking bug in + ldconfig. This + can be avoided by issuing the following two seds: +

+
+sed -i '/MV.*old/d' Makefile.in
+sed -i '/{OLDSUFF}/c:' support/shlib-install
+
+

+ Prepare Readline for compilation: +

+
+./configure --prefix=/usr    \
+            --disable-static \
+            --docdir=/usr/share/doc/readline-8.0
+
+

+ Compile the package: +

+
+make SHLIB_LIBS="-L/tools/lib -lncursesw"
+
+
+

+ The meaning of the make option: +

+
+
+ SHLIB_LIBS="-L/tools/lib + -lncursesw" +
+
+

+ This option forces Readline to link against the + libncursesw library. +

+
+
+
+

+ This package does not come with a test suite. +

+

+ Install the package: +

+
+make SHLIB_LIBS="-L/tools/lib -lncursesw" install
+
+

+ Now move the dynamic libraries to a more appropriate location + and fix up some permissions and symbolic links: +

+
+mv -v /usr/lib/lib{readline,history}.so.* /lib
+chmod -v u+w /lib/lib{readline,history}.so.*
+ln -sfv ../../lib/$(readlink /usr/lib/libreadline.so) /usr/lib/libreadline.so
+ln -sfv ../../lib/$(readlink /usr/lib/libhistory.so ) /usr/lib/libhistory.so
+
+

+ If desired, install the documentation: +

+
+install -v -m644 doc/*.{ps,pdf,html,dvi} /usr/share/doc/readline-8.0
+
+
+
+

+ 6.13.2. Contents of Readline +

+
+
+
+ Installed libraries: + libhistory.so and + libreadline.so +
+
+ Installed directories: + /usr/include/readline, + /usr/share/readline, and + /usr/share/doc/readline-8.0 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ libhistory +

+
+

+ Provides a consistent user interface for recalling + lines of history +

+
+

+ libreadline +

+
+

+ Provides a set of commands for manipulating text + entered in an interactive session of a program. +

+
+
+
+
+
+
+
+
+

+ 6.14. M4-1.4.18 +

+
+
+
+
+

+ The M4 package contains a macro processor. +

+
+
+
+ Approximate build time: + 0.4 SBU +
+
+ Required disk space: + 33 MB +
+
+
+
+
+

+ 6.14.1. Installation of M4 +

+

+ First, make some fixes required by glibc-2.28: +

+
+sed -i 's/IO_ftrylockfile/IO_EOF_SEEN/' lib/*.c
+echo "#define _IO_IN_BACKUP 0x100" >> lib/stdio-impl.h
+
+

+ Prepare M4 for compilation: +

+
+./configure --prefix=/usr
+
+

+ Compile the package: +

+
+make
+
+

+ To test the results, issue: +

+
+make check
+
+

+ Install the package: +

+
+make install
+
+
+
+

+ 6.14.2. Contents + of M4 +

+
+
+
+ Installed program: + m4 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ m4 +

+
+

+ Copies the given files while expanding the macros + that they contain [These macros are either built-in + or user-defined and can take any number of + arguments. Besides performing macro expansion, + m4 + has built-in functions for including named files, + running Unix commands, performing integer + arithmetic, manipulating text, recursion, etc. The + m4 + program can be used either as a front-end to a + compiler or as a macro processor in its own right.] +

+
+
+
+
+
+
+
+
+

+ 6.15. Bc-1.07.1 +

+
+
+
+
+

+ The Bc package contains an arbitrary precision numeric + processing language. +

+
+
+
+ Approximate build time: + 0.1 SBU +
+
+ Required disk space: + 4.1 MB +
+
+
+
+
+

+ 6.15.1. Installation of Bc +

+

+ First, change an internal script to use sed instead of ed: +

+
+cat > bc/fix-libmath_h << "EOF"
+#! /bin/bash
+sed -e '1   s/^/{"/' \
+    -e     's/$/",/' \
+    -e '2,$ s/^/"/'  \
+    -e   '$ d'       \
+    -i libmath.h
+
+sed -e '$ s/$/0}/' \
+    -i libmath.h
+EOF
+
+

+ Create temporary symbolic links so the package can find the + readline library and confirm that its required libncurses + library is available. Even though the libraries are in + /tools/lib at this point, the system will use /usr/lib at the + end of this chapter. +

+
+ln -sv /tools/lib/libncursesw.so.6 /usr/lib/libncursesw.so.6
+ln -sfv libncursesw.so.6 /usr/lib/libncurses.so
+
+

+ Fix an issue in configure due to missing + files in the early stages of LFS: +

+
+sed -i -e '/flex/s/as_fn_error/: ;; # &/' configure
+
+

+ Prepare Bc for compilation: +

+
+./configure --prefix=/usr           \
+            --with-readline         \
+            --mandir=/usr/share/man \
+            --infodir=/usr/share/info
+
+
+

+ The meaning of the configure options: +

+
+
+ --with-readline +
+
+

+ This option tells Bc to use the readline library that is already + installed on the system rather than using its own + readline version. +

+
+
+
+

+ Compile the package: +

+
+make
+
+

+ To test bc, run the commands below. There is quite a bit of + output, so you may want to redirect it to a file. There are a + very small percentage of tests (10 of 12,144) that will + indicate a round off error at the last digit. +

+
+echo "quit" | ./bc/bc -l Test/checklib.b
+
+

+ Install the package: +

+
+make install
+
+
+
+

+ 6.15.2. Contents + of Bc +

+
+
+
+ Installed programs: + bc and dc +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ bc +

+
+

+ A command line calculator +

+
+

+ dc +

+
+

+ A reverse-polish command line calculator +

+
+
+
+
+
+
+
+
+

+ 6.16. Binutils-2.32 +

+
+
+
+
+

+ The Binutils package contains a linker, an assembler, and + other tools for handling object files. +

+
+
+
+ Approximate build time: + 6.9 SBU +
+
+ Required disk space: + 4.9 GB +
+
+
+
+
+

+ 6.16.1. 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: +

+
+mkdir -v build
+cd       build
+
+

+ Prepare Binutils for compilation: +

+
+../configure --prefix=/usr       \
+             --enable-gold       \
+             --enable-ld=default \
+             --enable-plugins    \
+             --enable-shared     \
+             --disable-werror    \
+             --enable-64-bit-bfd \
+             --with-system-zlib
+
+
+

+ The meaning of the configure parameters: +

+
+
+ --enable-gold +
+
+

+ Build the gold linker and install it as ld.gold (along + side the default linker). +

+
+
+ --enable-ld=default +
+
+

+ Build the original bdf linker and install it as both ld + (the default linker) and ld.bfd. +

+
+
+ --enable-plugins +
+
+

+ Enables plugin support for the linker. +

+
+
+ --enable-64-bit-bfd +
+
+

+ Enables 64-bit support (on hosts with narrower word + sizes). May not be needed on 64-bit systems, but does + no harm. +

+
+
+ --with-system-zlib +
+
+

+ Use the installed zlib library rather than building the + included version. +

+
+
+
+

+ Compile the package: +

+
+make tooldir=/usr
+
+
+

+ The meaning of the make parameter: +

+
+
+ tooldir=/usr +
+
+

+ Normally, the tooldir (the directory where the + executables will ultimately be located) is set to + $(exec_prefix)/$(target_alias). For + example, x86_64 machines would expand that to + /usr/x86_64-unknown-linux-gnu. + Because this is a custom system, this target-specific + directory in /usr is not + required. $(exec_prefix)/$(target_alias) would + be used if the system was used to cross-compile (for + example, compiling a package on an Intel machine that + generates code that can be executed on PowerPC + machines). +

+
+
+
+
+

+ Important +

+

+ The test suite for Binutils in this section is considered + critical. Do not skip it under any circumstances. +

+
+

+ Test the results: +

+
+make -k check
+
+

+ One test, debug_msg.sh, is known to fail. +

+

+ Install the package: +

+
+make tooldir=/usr install
+
+
+
+

+ 6.16.2. Contents of Binutils +

+
+
+
+ Installed programs: + addr2line, ar, as, c++filt, + elfedit, gprof, ld, ld.bfd, ld.gold, nm, objcopy, + objdump, ranlib, readelf, size, strings, and strip +
+
+ Installed libraries: + libbfd.{a,so} and + libopcodes.{a,so} +
+
+ Installed directory: + /usr/lib/ldscripts +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ addr2line +

+
+

+ Translates program addresses to file names and line + numbers; given an address and the name of an + executable, it uses the debugging information in + the executable to determine which source file and + line number are associated with the address +

+
+

+ ar +

+
+

+ Creates, modifies, and extracts from archives +

+
+

+ as +

+
+

+ An assembler that assembles the output of + gcc + into object files +

+
+

+ c++filt +

+
+

+ Used by the linker to de-mangle C++ and Java + symbols and to keep overloaded functions from + clashing +

+
+

+ elfedit +

+
+

+ Updates the ELF header of ELF files +

+
+

+ gprof +

+
+

+ Displays call graph profile data +

+
+

+ ld +

+
+

+ A linker that combines a number of object and + archive files into a single file, relocating their + data and tying up symbol references +

+
+

+ ld.gold +

+
+

+ A cut down version of ld that only supports the elf + object file format +

+
+

+ ld.bfd +

+
+

+ Hard link to ld +

+
+

+ nm +

+
+

+ Lists the symbols occurring in a given object file +

+
+

+ objcopy +

+
+

+ Translates one type of object file into another +

+
+

+ objdump +

+
+

+ Displays information about the given object file, + with options controlling the particular information + to display; the information shown is useful to + programmers who are working on the compilation + tools +

+
+

+ ranlib +

+
+

+ Generates an index of the contents of an archive + and stores it in the archive; the index lists all + of the symbols defined by archive members that are + relocatable object files +

+
+

+ readelf +

+
+

+ Displays information about ELF type binaries +

+
+

+ size +

+
+

+ Lists the section sizes and the total size for the + given object files +

+
+

+ strings +

+
+

+ Outputs, for each given file, the sequences of + printable characters that are of at least the + specified length (defaulting to four); for object + files, it prints, by default, only the strings from + the initializing and loading sections while for + other types of files, it scans the entire file +

+
+

+ strip +

+
+

+ Discards symbols from object files +

+
+

+ libbfd +

+
+

+ The Binary File Descriptor library +

+
+

+ libopcodes +

+
+

+ A library for dealing with opcodes—the + readable text versions + of instructions for the processor; it is used for + building utilities like objdump +

+
+
+
+
+
+
+
+
+

+ 6.17. GMP-6.1.2 +

+
+
+
+
+

+ The GMP package contains math libraries. These have useful + functions for arbitrary precision arithmetic. +

+
+
+
+ Approximate build time: + 1.3 SBU +
+
+ Required disk space: + 61 MB +
+
+
+
+
+

+ 6.17.1. Installation of GMP +

+
+

+ Note +

+

+ If you are building for 32-bit x86, but you have a CPU + which is capable of running 64-bit code and you have specified + CFLAGS in the environment, the + configure script will attempt to configure for 64-bits and + fail. Avoid this by invoking the configure command below + with +

+
+ABI=32 ./configure ...
+
+
+
+

+ Note +

+

+ The default settings of GMP produce libraries optimized for + the host processor. If libraries suitable for processors + less capable than the host's CPU are desired, generic + libraries can be created by running the following: +

+
+cp -v configfsf.guess config.guess
+cp -v configfsf.sub   config.sub
+
+
+

+ Prepare GMP for compilation: +

+
+./configure --prefix=/usr    \
+            --enable-cxx     \
+            --disable-static \
+            --docdir=/usr/share/doc/gmp-6.1.2
+
+
+

+ The meaning of the new configure options: +

+
+
+ --enable-cxx +
+
+

+ This parameter enables C++ support +

+
+
+ --docdir=/usr/share/doc/gmp-6.1.2 +
+
+

+ This variable specifies the correct place for the + documentation. +

+
+
+
+

+ Compile the package and generate the HTML documentation: +

+
+make
+make html
+
+
+

+ Important +

+

+ The test suite for GMP in this section is considered + critical. Do not skip it under any circumstances. +

+
+

+ Test the results: +

+
+make check 2>&1 | tee gmp-check-log
+
+
+

+ Caution +

+

+ The code in gmp is highly optimized for the processor where + it is built. Occasionally, the code that detects the + processor misidentifies the system capabilities and there + will be errors in the tests or other applications using the + gmp libraries with the message "Illegal instruction". In + this case, gmp should be reconfigured with the option + --build=x86_64-unknown-linux-gnu and rebuilt. +

+
+

+ Ensure that all 190 tests in the test suite passed. Check the + results by issuing the following command: +

+
+awk '/# PASS:/{total+=$3} ; END{print total}' gmp-check-log
+
+

+ Install the package and its documentation: +

+
+make install
+make install-html
+
+
+
+

+ 6.17.2. Contents + of GMP +

+
+
+
+ Installed Libraries: + libgmp.so and libgmpxx.so +
+
+ Installed directory: + /usr/share/doc/gmp-6.1.2 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ libgmp +

+
+

+ Contains precision math functions +

+
+

+ libgmpxx +

+
+

+ Contains C++ precision math functions +

+
+
+
+
+
+
+
+
+

+ 6.18. MPFR-4.0.2 +

+
+
+
+
+

+ The MPFR package contains functions for multiple precision + math. +

+
+
+
+ Approximate build time: + 1.0 SBU +
+
+ Required disk space: + 37 MB +
+
+
+
+
+

+ 6.18.1. Installation of MPFR +

+

+ Prepare MPFR for compilation: +

+
+./configure --prefix=/usr        \
+            --disable-static     \
+            --enable-thread-safe \
+            --docdir=/usr/share/doc/mpfr-4.0.2
+
+

+ Compile the package and generate the HTML documentation: +

+
+make
+make html
+
+
+

+ Important +

+

+ The test suite for MPFR in this section is considered + critical. Do not skip it under any circumstances. +

+
+

+ Test the results and ensure that all tests passed: +

+
+make check
+
+

+ Install the package and its documentation: +

+
+make install
+make install-html
+
+
+
+

+ 6.18.2. + Contents of MPFR +

+
+
+
+ Installed Libraries: + libmpfr.so +
+
+ Installed directory: + /usr/share/doc/mpfr-4.0.2 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ libmpfr +

+
+

+ Contains multiple-precision math functions +

+
+
+
+
+
+
+
+
+

+ 6.19. MPC-1.1.0 +

+
+
+
+
+

+ The MPC package contains a library for the arithmetic of + complex numbers with arbitrarily high precision and correct + rounding of the result. +

+
+
+
+ Approximate build time: + 0.3 SBU +
+
+ Required disk space: + 22 MB +
+
+
+
+
+

+ 6.19.1. Installation of MPC +

+

+ Prepare MPC for compilation: +

+
+./configure --prefix=/usr    \
+            --disable-static \
+            --docdir=/usr/share/doc/mpc-1.1.0
+
+

+ Compile the package and generate the HTML documentation: +

+
+make
+make html
+
+

+ To test the results, issue: +

+
+make check
+
+

+ Install the package and its documentation: +

+
+make install
+make install-html
+
+
+
+

+ 6.19.2. Contents + of MPC +

+
+
+
+ Installed Libraries: + libmpc.so +
+
+ Installed Directory: + /usr/share/doc/mpc-1.1.0 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ libmpc +

+
+

+ Contains complex math functions +

+
+
+
+
+
+
+
+
+

+ 6.20. Shadow-4.6 +

+
+
+
+
+

+ The Shadow package contains programs for handling passwords + in a secure way. +

+
+
+
+ Approximate build time: + 0.2 SBU +
+
+ Required disk space: + 46 MB +
+
+
+
+
+

+ 6.20.1. Installation of Shadow +

+
+

+ Note +

+

+ If you would like to enforce the use of strong passwords, + refer to + http://www.linuxfromscratch.org/blfs/view/8.4/postlfs/cracklib.html + for installing CrackLib prior to building Shadow. Then add + --with-libcrack to + the configure + command below. +

+
+

+ Disable the installation of the groups program and its man + pages, as Coreutils provides a better version. Also Prevent + the installation of manual pages that were already installed + in Section 6.8, + “Man-pages-4.16”: +

+
+sed -i 's/groups$(EXEEXT) //' src/Makefile.in
+find man -name Makefile.in -exec sed -i 's/groups\.1 / /'   {} \;
+find man -name Makefile.in -exec sed -i 's/getspnam\.3 / /' {} \;
+find man -name Makefile.in -exec sed -i 's/passwd\.5 / /'   {} \;
+
+

+ Instead of using the default + crypt method, use the + more secure SHA-512 + method of password encryption, which also allows passwords + longer than 8 characters. It is also necessary to change the + obsolete /var/spool/mail + location for user mailboxes that Shadow uses by default to + the /var/mail location used + currently: +

+
+sed -i -e 's@#ENCRYPT_METHOD DES@ENCRYPT_METHOD SHA512@' \
+       -e 's@/var/spool/mail@/var/mail@' etc/login.defs
+
+
+

+ Note +

+

+ If you chose to build Shadow with Cracklib support, run the + following: +

+
+sed -i 's@DICTPATH.*@DICTPATH\t/lib/cracklib/pw_dict@' etc/login.defs
+
+
+

+ Make a minor change to make the first group number generated + by useradd 1000: +

+
+sed -i 's/1000/999/' etc/useradd
+
+

+ Prepare Shadow for compilation: +

+
+./configure --sysconfdir=/etc --with-group-name-max-length=32
+
+
+

+ The meaning of the configure option: +

+
+
+ --with-group-name-max-length=32 +
+
+

+ The maximum user name is 32 characters. Make the + maximum group name the same. +

+
+
+
+

+ Compile the package: +

+
+make
+
+

+ This package does not come with a test suite. +

+

+ Install the package: +

+
+make install
+
+

+ Move a misplaced program to its proper location: +

+
+mv -v /usr/bin/passwd /bin
+
+
+
+

+ 6.20.2. + Configuring Shadow +

+

+ This package contains utilities to add, modify, and delete + users and groups; set and change their passwords; and perform + other administrative tasks. For a full explanation of what + password shadowing + means, see the doc/HOWTO file + within the unpacked source tree. If using Shadow support, + keep in mind that programs which need to verify passwords + (display managers, FTP programs, pop3 daemons, etc.) must be + Shadow-compliant. That is, they need to be able to work with + shadowed passwords. +

+

+ To enable shadowed passwords, run the following command: +

+
+pwconv
+
+

+ To enable shadowed group passwords, run: +

+
+grpconv
+
+

+ Shadow's stock configuration for the useradd utility has a few + caveats that need some explanation. First, the default action + for the useradd + utility is to create the user and a group of the same name as + the user. By default the user ID (UID) and group ID (GID) + numbers will begin with 1000. This means if you don't pass + parameters to useradd, each user will be + a member of a unique group on the system. If this behavior is + undesirable, you'll need to pass the -g parameter to useradd. The default + parameters are stored in the /etc/default/useradd file. You may need to + modify two parameters in this file to suit your particular + needs. +

+
+

+ /etc/default/useradd + Parameter Explanations +

+
+
+ GROUP=1000 +
+
+

+ This parameter sets the beginning of the group numbers + used in the /etc/group file. You can modify it to + anything you desire. Note that useradd will never + reuse a UID or GID. If the number identified in this + parameter is used, it will use the next available + number after this. Note also that if you don't have a + group 1000 on your system the first time you use + useradd + without the -g + parameter, you'll get a message displayed on the + terminal that says: useradd: unknown GID 1000. You + may disregard this message and group number 1000 will + be used. +

+
+
+ CREATE_MAIL_SPOOL=yes +
+
+

+ This parameter causes useradd to create a + mailbox file for the newly created user. useradd will make the + group ownership of this file to the mail group with 0660 permissions. + If you would prefer that these mailbox files are not + created by useradd, issue the + following command: +

+
+sed -i 's/yes/no/' /etc/default/useradd
+
+
+
+
+
+
+

+ 6.20.3. Setting the root password +

+

+ Choose a password for user root and set it by running: +

+
+passwd root
+
+
+
+

+ 6.20.4. + Contents of Shadow +

+
+
+
+ Installed programs: + chage, chfn, chgpasswd, chpasswd, + chsh, expiry, faillog, gpasswd, groupadd, groupdel, + groupmems, groupmod, grpck, grpconv, grpunconv, lastlog, + login, logoutd, newgidmap, newgrp, newuidmap, newusers, + nologin, passwd, pwck, pwconv, pwunconv, sg (link to + newgrp), su, useradd, userdel, usermod, vigr (link to + vipw), and vipw +
+
+ Installed directory: + /etc/default +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ chage +

+
+

+ Used to change the maximum number of days between + obligatory password changes +

+
+

+ chfn +

+
+

+ Used to change a user's full name and other + information +

+
+

+ chgpasswd +

+
+

+ Used to update group passwords in batch mode +

+
+

+ chpasswd +

+
+

+ Used to update user passwords in batch mode +

+
+

+ chsh +

+
+

+ Used to change a user's default login shell +

+
+

+ expiry +

+
+

+ Checks and enforces the current password expiration + policy +

+
+

+ faillog +

+
+

+ Is used to examine the log of login failures, to + set a maximum number of failures before an account + is blocked, or to reset the failure count +

+
+

+ gpasswd +

+
+

+ Is used to add and delete members and + administrators to groups +

+
+

+ groupadd +

+
+

+ Creates a group with the given name +

+
+

+ groupdel +

+
+

+ Deletes the group with the given name +

+
+

+ groupmems +

+
+

+ Allows a user to administer his/her own group + membership list without the requirement of super + user privileges. +

+
+

+ groupmod +

+
+

+ Is used to modify the given group's name or GID +

+
+

+ grpck +

+
+

+ Verifies the integrity of the group files + /etc/group and + /etc/gshadow +

+
+

+ grpconv +

+
+

+ Creates or updates the shadow group file from the + normal group file +

+
+

+ grpunconv +

+
+

+ Updates /etc/group + from /etc/gshadow and + then deletes the latter +

+
+

+ lastlog +

+
+

+ Reports the most recent login of all users or of a + given user +

+
+

+ login +

+
+

+ Is used by the system to let users sign on +

+
+

+ logoutd +

+
+

+ Is a daemon used to enforce restrictions on log-on + time and ports +

+
+

+ newgidmap +

+
+

+ Is used to set the gid mapping of a user namespace +

+
+

+ newgrp +

+
+

+ Is used to change the current GID during a login + session +

+
+

+ newuidmap +

+
+

+ Is used to set the uid mapping of a user namespace +

+
+

+ newusers +

+
+

+ Is used to create or update an entire series of + user accounts +

+
+

+ nologin +

+
+

+ Displays a message that an account is not + available; it is designed to be used as the default + shell for accounts that have been disabled +

+
+

+ passwd +

+
+

+ Is used to change the password for a user or group + account +

+
+

+ pwck +

+
+

+ Verifies the integrity of the password files + /etc/passwd and + /etc/shadow +

+
+

+ pwconv +

+
+

+ Creates or updates the shadow password file from + the normal password file +

+
+

+ pwunconv +

+
+

+ Updates /etc/passwd + from /etc/shadow and + then deletes the latter +

+
+

+ sg +

+
+

+ Executes a given command while the user's GID is + set to that of the given group +

+
+

+ su +

+
+

+ Runs a shell with substitute user and group IDs +

+
+

+ useradd +

+
+

+ Creates a new user with the given name, or updates + the default new-user information +

+
+

+ userdel +

+
+

+ Deletes the given user account +

+
+

+ usermod +

+
+

+ Is used to modify the given user's login name, User + Identification (UID), shell, initial group, home + directory, etc. +

+
+

+ vigr +

+
+

+ Edits the /etc/group + or /etc/gshadow files +

+
+

+ vipw +

+
+

+ Edits the /etc/passwd + or /etc/shadow files +

+
+
+
+
+
+
+
+
+

+ 6.21. GCC-8.2.0 +

+
+
+
+
+

+ The GCC package contains the GNU compiler collection, which + includes the C and C++ compilers. +

+
+
+
+ Approximate build time: + 92 SBU (with tests) +
+
+ Required disk space: + 3.9 GB +
+
+
+
+
+

+ 6.21.1. Installation of GCC +

+

+ If building on x86_64, change the default directory name for + 64-bit libraries to lib: +

+
+case $(uname -m) in
+  x86_64)
+    sed -e '/m64=/s/lib64/lib/' \
+        -i.orig gcc/config/i386/t-linux64
+  ;;
+esac
+
+

+ Remove the symlink created earlier as the final gcc includes + will be installed here: +

+
+rm -f /usr/lib/gcc
+
+

+ The GCC documentation recommends building GCC in a dedicated + build directory: +

+
+mkdir -v build
+cd       build
+
+

+ Prepare GCC for compilation: +

+
+SED=sed                               \
+../configure --prefix=/usr            \
+             --enable-languages=c,c++ \
+             --disable-multilib       \
+             --disable-bootstrap      \
+             --disable-libmpx         \
+             --with-system-zlib
+
+

+ Note that for other languages, there are some prerequisites + that are not yet available. See the + BLFS Book for instructions on how to build all of GCC's + supported languages. +

+
+

+ The meaning of the new configure + parameters: +

+
+
+ SED=sed +
+
+

+ Setting this environment variable prevents a hard-coded + path to /tools/bin/sed. +

+
+
+ --disable-libmpx +
+
+

+ This switch tells GCC to not build mpx (Memory + Protection Extensions) that can cause problems on some + processors. It has been removed from the next version + of gcc. +

+
+
+ --with-system-zlib +
+
+

+ This switch tells GCC to link to the system installed + copy of the Zlib library, rather than its own internal + copy. +

+
+
+
+

+ Compile the package: +

+
+make
+
+
+

+ Important +

+

+ In this section, the test suite for GCC is considered + critical. Do not skip it under any circumstance. +

+
+

+ One set of tests in the GCC test suite is known to exhaust + the stack, so increase the stack size prior to running the + tests: +

+
+ulimit -s 32768
+
+

+ Remove one test known to cause a problem: +

+
+rm ../gcc/testsuite/g++.dg/pr83239.C
+
+

+ Test the results as a non-privileged user, but do not stop at + errors: +

+
+chown -Rv nobody . 
+su nobody -s /bin/bash -c "PATH=$PATH make -k check"
+
+

+ To receive a summary of the test suite results, run: +

+
+../contrib/test_summary
+
+

+ For only the summaries, pipe the output through + grep -A7 + Summ. +

+

+ Results can be compared with those located at http://www.linuxfromscratch.org/lfs/build-logs/8.4/ + and https://gcc.gnu.org/ml/gcc-testresults/. +

+

+ A few unexpected failures cannot always be avoided. The GCC + developers are usually aware of these issues, but have not + resolved them yet. Unless the test results are vastly + different from those at the above URL, it is safe to + continue. +

+
+

+ Note +

+

+ On some combinations of kernel configuration and AMD + processors there may be more than 1100 failures in the + gcc.target/i386/mpx tests (which are designed to test the + MPX option on recent Intel processors). These can safely be + ignored on AMD processors. These tests will also fail on + Intel processors if MPX support is not enabled in the + kernel even though it is present on the CPU. +

+
+

+ Install the package: +

+
+make install
+
+

+ Create a symlink required by the + FHS for "historical" reasons. +

+
+ln -sv ../usr/bin/cpp /lib
+
+

+ Many packages use the name cc to call the C compiler. + To satisfy those packages, create a symlink: +

+
+ln -sv gcc /usr/bin/cc
+
+

+ Add a compatibility symlink to enable building programs with + Link Time Optimization (LTO): +

+
+install -v -dm755 /usr/lib/bfd-plugins
+ln -sfv ../../libexec/gcc/$(gcc -dumpmachine)/8.2.0/liblto_plugin.so \
+        /usr/lib/bfd-plugins/
+
+

+ Now that our final toolchain is in place, it is important to + again ensure that compiling and linking will work as + expected. We do this by performing the same sanity checks as + we did earlier in the chapter: +

+
+echo 'int main(){}' > dummy.c
+cc dummy.c -v -Wl,--verbose &> dummy.log
+readelf -l a.out | grep ': /lib'
+
+

+ There should be no errors, and the output of the last command + will be (allowing for platform-specific differences in + dynamic linker name): +

+
+[Requesting program interpreter: /lib64/ld-linux-x86-64.so.2]
+
+

+ Now make sure that we're setup to use the correct start + files: +

+
+grep -o '/usr/lib.*/crt[1in].*succeeded' dummy.log
+
+

+ The output of the last command should be: +

+
+/usr/lib/gcc/x86_64-pc-linux-gnu/8.2.0/../../../../lib/crt1.o succeeded
+/usr/lib/gcc/x86_64-pc-linux-gnu/8.2.0/../../../../lib/crti.o succeeded
+/usr/lib/gcc/x86_64-pc-linux-gnu/8.2.0/../../../../lib/crtn.o succeeded
+
+

+ Depending on your machine architecture, the above may differ + slightly, the difference usually being the name of the + directory after /usr/lib/gcc. + The important thing to look for here is that gcc has found all three + crt*.o files under the + /usr/lib directory. +

+

+ Verify that the compiler is searching for the correct header + files: +

+
+grep -B4 '^ /usr/include' dummy.log
+
+

+ This command should return the following output: +

+
+#include <...> search starts here:
+ /usr/lib/gcc/x86_64-pc-linux-gnu/8.2.0/include
+ /usr/local/include
+ /usr/lib/gcc/x86_64-pc-linux-gnu/8.2.0/include-fixed
+ /usr/include
+
+

+ Again, note that the directory named after your target + triplet may be different than the above, depending on your + architecture. +

+

+ Next, verify that the new linker is being used with the + correct search paths: +

+
+grep 'SEARCH.*/usr/lib' dummy.log |sed 's|; |\n|g'
+
+

+ References to paths that have components with '-linux-gnu' + should be ignored, but otherwise the output of the last + command should be: +

+
+SEARCH_DIR("/usr/x86_64-pc-linux-gnu/lib64")
+SEARCH_DIR("/usr/local/lib64")
+SEARCH_DIR("/lib64")
+SEARCH_DIR("/usr/lib64")
+SEARCH_DIR("/usr/x86_64-pc-linux-gnu/lib")
+SEARCH_DIR("/usr/local/lib")
+SEARCH_DIR("/lib")
+SEARCH_DIR("/usr/lib");
+
+

+ A 32-bit system may see a few different directories. For + example, here is the output from an i686 machine: +

+
+SEARCH_DIR("/usr/i686-pc-linux-gnu/lib32")
+SEARCH_DIR("/usr/local/lib32")
+SEARCH_DIR("/lib32")
+SEARCH_DIR("/usr/lib32")
+SEARCH_DIR("/usr/i686-pc-linux-gnu/lib")
+SEARCH_DIR("/usr/local/lib")
+SEARCH_DIR("/lib")
+SEARCH_DIR("/usr/lib");
+
+

+ Next make sure that we're using the correct libc: +

+
+grep "/lib.*/libc.so.6 " dummy.log
+
+

+ The output of the last command should be: +

+
+attempt to open /lib/libc.so.6 succeeded
+
+

+ Lastly, make sure GCC is using the correct dynamic linker: +

+
+grep found dummy.log
+
+

+ The output of the last command should be (allowing for + platform-specific differences in dynamic linker name): +

+
+found ld-linux-x86-64.so.2 at /lib/ld-linux-x86-64.so.2
+
+

+ If the output does not appear as shown above or is not + received at all, then something is seriously wrong. + Investigate and retrace the steps to find out where the + problem is and correct it. The most likely reason is that + something went wrong with the specs file adjustment. Any + issues will need to be resolved before continuing with the + process. +

+

+ Once everything is working correctly, clean up the test + files: +

+
+rm -v dummy.c a.out dummy.log
+
+

+ Finally, move a misplaced file: +

+
+mkdir -pv /usr/share/gdb/auto-load/usr/lib
+mv -v /usr/lib/*gdb.py /usr/share/gdb/auto-load/usr/lib
+
+
+
+

+ 6.21.2. Contents + of GCC +

+
+
+
+ Installed programs: + c++, cc (link to gcc), cpp, g++, + gcc, gcc-ar, gcc-nm, gcc-ranlib, and gcov +
+
+ Installed libraries: + libasan.{a,so}, libatomic.{a,so}, + libgcc.a, libgcc_eh.a, libgcc_s.so, libgcov.a, + libgomp.{a,so}, libiberty.a, libitm.{a,so}, + liblto_plugin.so, libquadmath.{a,so}, libssp.{a,so}, + libssp_nonshared.a, libstdc++.{a,so}, libsupc++.a, and + libtsan.{a,so} +
+
+ Installed directories: + /usr/include/c++, /usr/lib/gcc, + /usr/libexec/gcc, and /usr/share/gcc-8.2.0 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ c++ +

+
+

+ The C++ compiler +

+
+

+ cc +

+
+

+ The C compiler +

+
+

+ cpp +

+
+

+ The C preprocessor; it is used by the compiler to + expand the #include, #define, and similar + statements in the source files +

+
+

+ g++ +

+
+

+ The C++ compiler +

+
+

+ gcc +

+
+

+ The C compiler +

+
+

+ gcc-ar +

+
+

+ A wrapper around ar that adds a + plugin to the command line. This program is only + used to add "link time optimization" and is not + useful with the default build options +

+
+

+ gcc-nm +

+
+

+ A wrapper around nm that adds a + plugin to the command line. This program is only + used to add "link time optimization" and is not + useful with the default build options +

+
+

+ gcc-ranlib +

+
+

+ A wrapper around ranlib that adds + a plugin to the command line. This program is only + used to add "link time optimization" and is not + useful with the default build options +

+
+

+ gcov +

+
+

+ A coverage testing tool; it is used to analyze + programs to determine where optimizations will have + the most effect +

+
+

+ libasan +

+
+

+ The Address Sanitizer runtime library +

+
+

+ libgcc +

+
+

+ Contains run-time support for gcc +

+
+

+ libgcov +

+
+

+ This library is linked in to a program when GCC is + instructed to enable profiling +

+
+

+ libgomp +

+
+

+ GNU implementation of the OpenMP API for + multi-platform shared-memory parallel programming + in C/C++ and Fortran +

+
+

+ libiberty +

+
+

+ Contains routines used by various GNU programs, + including getopt, + obstack, + strerror, + strtol, and + strtoul +

+
+

+ liblto_plugin +

+
+

+ GCC's Link Time Optimization (LTO) plugin allows + GCC to perform optimizations across compilation + units +

+
+

+ libquadmath +

+
+

+ GCC Quad Precision Math Library API +

+
+

+ libssp +

+
+

+ Contains routines supporting GCC's stack-smashing + protection functionality +

+
+

+ libstdc++ +

+
+

+ The standard C++ library +

+
+

+ libsupc++ +

+
+

+ Provides supporting routines for the C++ + programming language +

+
+

+ libtsan +

+
+

+ The Thread Sanitizer runtime library +

+
+
+
+
+
+
+
+
+

+ 6.22. Bzip2-1.0.6 +

+
+
+
+
+

+ The Bzip2 package contains programs for compressing and + decompressing files. Compressing text files with bzip2 yields a much better + compression percentage than with the traditional gzip. +

+
+
+
+ Approximate build time: + less than 0.1 SBU +
+
+ Required disk space: + 2.3 MB +
+
+
+
+
+

+ 6.22.1. Installation of Bzip2 +

+

+ Apply a patch that will install the documentation for this + package: +

+
+patch -Np1 -i ../bzip2-1.0.6-install_docs-1.patch
+
+

+ The following command ensures installation of symbolic links + are relative: +

+
+sed -i 's@\(ln -s -f \)$(PREFIX)/bin/@\1@' Makefile
+
+

+ Ensure the man pages are installed into the correct location: +

+
+sed -i "s@(PREFIX)/man@(PREFIX)/share/man@g" Makefile
+
+

+ Prepare Bzip2 for compilation with: +

+
+make -f Makefile-libbz2_so
+make clean
+
+
+

+ The meaning of the make parameter: +

+
+
+ -f + Makefile-libbz2_so +
+
+

+ This will cause Bzip2 to be built using a different + Makefile file, in this + case the Makefile-libbz2_so file, which + creates a dynamic libbz2.so library and links the Bzip2 + utilities against it. +

+
+
+
+

+ Compile and test the package: +

+
+make
+
+

+ Install the programs: +

+
+make PREFIX=/usr install
+
+

+ Install the shared bzip2 binary into the + /bin directory, make some + necessary symbolic links, and clean up: +

+
+cp -v bzip2-shared /bin/bzip2
+cp -av libbz2.so* /lib
+ln -sv ../../lib/libbz2.so.1.0 /usr/lib/libbz2.so
+rm -v /usr/bin/{bunzip2,bzcat,bzip2}
+ln -sv bzip2 /bin/bunzip2
+ln -sv bzip2 /bin/bzcat
+
+
+
+

+ 6.22.2. + Contents of Bzip2 +

+
+
+
+ Installed programs: + bunzip2 (link to bzip2), bzcat + (link to bzip2), bzcmp (link to bzdiff), bzdiff, bzegrep + (link to bzgrep), bzfgrep (link to bzgrep), bzgrep, + bzip2, bzip2recover, bzless (link to bzmore), and + bzmore +
+
+ Installed libraries: + libbz2.{a,so} +
+
+ Installed directory: + /usr/share/doc/bzip2-1.0.6 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ bunzip2 +

+
+

+ Decompresses bzipped files +

+
+

+ bzcat +

+
+

+ Decompresses to standard output +

+
+

+ bzcmp +

+
+

+ Runs cmp on bzipped + files +

+
+

+ bzdiff +

+
+

+ Runs diff on bzipped + files +

+
+

+ bzegrep +

+
+

+ Runs egrep on bzipped + files +

+
+

+ bzfgrep +

+
+

+ Runs fgrep on bzipped + files +

+
+

+ bzgrep +

+
+

+ Runs grep on bzipped + files +

+
+

+ bzip2 +

+
+

+ Compresses files using the Burrows-Wheeler block + sorting text compression algorithm with Huffman + coding; the compression rate is better than that + achieved by more conventional compressors using + Lempel-Ziv algorithms, + like gzip +

+
+

+ bzip2recover +

+
+

+ Tries to recover data from damaged bzipped files +

+
+

+ bzless +

+
+

+ Runs less on bzipped + files +

+
+

+ bzmore +

+
+

+ Runs more on bzipped + files +

+
+

+ libbz2 +

+
+

+ The library implementing lossless, block-sorting + data compression, using the Burrows-Wheeler + algorithm +

+
+
+
+
+
+
+
+
+

+ 6.23. Pkg-config-0.29.2 +

+
+
+
+
+

+ The pkg-config package contains a tool for passing the + include path and/or library paths to build tools during the + configure and make file execution. +

+
+
+
+ Approximate build time: + 0.3 SBU +
+
+ Required disk space: + 30 MB +
+
+
+
+
+

+ 6.23.1. Installation of Pkg-config +

+

+ Prepare Pkg-config for compilation: +

+
+./configure --prefix=/usr              \
+            --with-internal-glib       \
+            --disable-host-tool        \
+            --docdir=/usr/share/doc/pkg-config-0.29.2
+
+
+

+ The meaning of the new configure options: +

+
+
+ --with-internal-glib +
+
+

+ This will allow pkg-config to use its internal version + of Glib because an external version is not available in + LFS. +

+
+
+ --disable-host-tool +
+
+

+ This option disables the creation of an undesired hard + link to the pkg-config program. +

+
+
+
+

+ Compile the package: +

+
+make
+
+

+ To test the results, issue: +

+
+make check
+
+

+ Install the package: +

+
+make install
+
+
+
+

+ 6.23.2. Contents of Pkg-config +

+
+
+
+ Installed program: + pkg-config +
+
+ Installed directory: + /usr/share/doc/pkg-config-0.29.2 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ pkg-config +

+
+

+ Returns meta information for the specified library + or package +

+
+
+
+
+
+
+
+
+

+ 6.24. Ncurses-6.1 +

+
+
+
+
+

+ The Ncurses package contains libraries for + terminal-independent handling of character screens. +

+
+
+
+ Approximate build time: + 0.3 SBU +
+
+ Required disk space: + 42 MB +
+
+
+
+
+

+ 6.24.1. Installation of Ncurses +

+

+ Don't install a static library that is not handled by + configure: +

+
+sed -i '/LIBTOOL_INSTALL/d' c++/Makefile.in
+
+

+ Prepare Ncurses for compilation: +

+
+./configure --prefix=/usr           \
+            --mandir=/usr/share/man \
+            --with-shared           \
+            --without-debug         \
+            --without-normal        \
+            --enable-pc-files       \
+            --enable-widec
+
+
+

+ The meaning of the new configure options: +

+
+
+ --enable-widec +
+
+

+ This switch causes wide-character libraries (e.g., + libncursesw.so.6.1) to be + built instead of normal ones (e.g., libncurses.so.6.1). These + wide-character libraries are usable in both multibyte + and traditional 8-bit locales, while normal libraries + work properly only in 8-bit locales. Wide-character and + normal libraries are source-compatible, but not + binary-compatible. +

+
+
+ --enable-pc-files +
+
+

+ This switch generates and installs .pc files for + pkg-config. +

+
+
+ --without-normal +
+
+

+ This switch disables building and installing most + static libraries. +

+
+
+
+

+ Compile the package: +

+
+make
+
+

+ This package has a test suite, but it can only be run after + the package has been installed. The tests reside in the + test/ directory. See the + README file in that directory + for further details. +

+

+ Install the package: +

+
+make install
+
+

+ Move the shared libraries to the /lib directory, where they are expected to + reside: +

+
+mv -v /usr/lib/libncursesw.so.6* /lib
+
+

+ Because the libraries have been moved, one symlink points to + a non-existent file. Recreate it: +

+
+ln -sfv ../../lib/$(readlink /usr/lib/libncursesw.so) /usr/lib/libncursesw.so
+
+

+ Many applications still expect the linker to be able to find + non-wide-character Ncurses libraries. Trick such applications + into linking with wide-character libraries by means of + symlinks and linker scripts: +

+
+for lib in ncurses form panel menu ; do
+    rm -vf                    /usr/lib/lib${lib}.so
+    echo "INPUT(-l${lib}w)" > /usr/lib/lib${lib}.so
+    ln -sfv ${lib}w.pc        /usr/lib/pkgconfig/${lib}.pc
+done
+
+

+ Finally, make sure that old applications that look for + -lcurses at build time are + still buildable: +

+
+rm -vf                     /usr/lib/libcursesw.so
+echo "INPUT(-lncursesw)" > /usr/lib/libcursesw.so
+ln -sfv libncurses.so      /usr/lib/libcurses.so
+
+

+ If desired, install the Ncurses documentation: +

+
+mkdir -v       /usr/share/doc/ncurses-6.1
+cp -v -R doc/* /usr/share/doc/ncurses-6.1
+
+
+

+ Note +

+

+ The instructions above don't create non-wide-character + Ncurses libraries since no package installed by compiling + from sources would link against them at runtime. However, + the only known binary-only applications that link against + non-wide-character Ncurses libraries require version 5. If + you must have such libraries because of some binary-only + application or to be compliant with LSB, build the package + again with the following commands: +

+
+make distclean
+./configure --prefix=/usr    \
+            --with-shared    \
+            --without-normal \
+            --without-debug  \
+            --without-cxx-binding \
+            --with-abi-version=5 
+make sources libs
+cp -av lib/lib*.so.5* /usr/lib
+
+
+
+
+

+ 6.24.2. + Contents of Ncurses +

+
+
+
+ Installed programs: + captoinfo (link to tic), clear, + infocmp, infotocap (link to tic), ncursesw6-config, reset + (link to tset), tabs, tic, toe, tput, and tset +
+
+ Installed libraries: + libcursesw.so (symlink and linker + script to libncursesw.so), libformw.so, libmenuw.so, + libncursesw.so, libncurses++w.a, libpanelw.so, and their + non-wide-character counterparts without "w" in the + library names. +
+
+ Installed directories: + /usr/share/tabset, + /usr/share/terminfo, and + /usr/share/doc/ncurses-6.1 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ captoinfo +

+
+

+ Converts a termcap description into a terminfo + description +

+
+

+ clear +

+
+

+ Clears the screen, if possible +

+
+

+ infocmp +

+
+

+ Compares or prints out terminfo descriptions +

+
+

+ infotocap +

+
+

+ Converts a terminfo description into a termcap + description +

+
+

+ ncursesw6-config +

+
+

+ Provides configuration information for ncurses +

+
+

+ reset +

+
+

+ Reinitializes a terminal to its default values +

+
+

+ tabs +

+
+

+ Clears and sets tab stops on a terminal +

+
+

+ tic +

+
+

+ The terminfo entry-description compiler that + translates a terminfo file from source format into + the binary format needed for the ncurses library + routines [A terminfo file contains information on + the capabilities of a certain terminal.] +

+
+

+ toe +

+
+

+ Lists all available terminal types, giving the + primary name and description for each +

+
+

+ tput +

+
+

+ Makes the values of terminal-dependent capabilities + available to the shell; it can also be used to + reset or initialize a terminal or report its long + name +

+
+

+ tset +

+
+

+ Can be used to initialize terminals +

+
+

+ libcursesw +

+
+

+ A link to libncursesw +

+
+

+ libncursesw +

+
+

+ Contains functions to display text in many complex + ways on a terminal screen; a good example of the + use of these functions is the menu displayed during + the kernel's make + menuconfig +

+
+

+ libformw +

+
+

+ Contains functions to implement forms +

+
+

+ libmenuw +

+
+

+ Contains functions to implement menus +

+
+

+ libpanelw +

+
+

+ Contains functions to implement panels +

+
+
+
+
+
+
+
+
+

+ 6.25. Attr-2.4.48 +

+
+
+
+
+

+ The attr package contains utilities to administer the + extended attributes on filesystem objects. +

+
+
+
+ Approximate build time: + less than 0.1 SBU +
+
+ Required disk space: + 4.2 MB +
+
+
+
+
+

+ 6.25.1. Installation of Attr +

+

+ Prepare Attr for compilation: +

+
+./configure --prefix=/usr     \
+            --bindir=/bin     \
+            --disable-static  \
+            --sysconfdir=/etc \
+            --docdir=/usr/share/doc/attr-2.4.48
+
+

+ Compile the package: +

+
+make
+
+

+ The tests need to be run on a filesystem that supports + extended attributes such as the ext2, ext3, or ext4 + filesystems. To test the results, issue: +

+
+make check
+
+

+ Install the package: +

+
+make install
+
+

+ The shared library needs to be moved to /lib, and as a result the .so file in /usr/lib will need to be recreated: +

+
+mv -v /usr/lib/libattr.so.* /lib
+ln -sfv ../../lib/$(readlink /usr/lib/libattr.so) /usr/lib/libattr.so
+
+
+
+

+ 6.25.2. + Contents of Attr +

+
+
+
+ Installed programs: + attr, getfattr, and setfattr +
+
+ Installed library: + libattr.so +
+
+ Installed directories: + /usr/include/attr and + /usr/share/doc/attr-2.4.48 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + +
+

+ attr +

+
+

+ Extends attributes on filesystem objects +

+
+

+ getfattr +

+
+

+ Gets the extended attributes of filesystem objects +

+
+

+ setfattr +

+
+

+ Sets the extended attributes of filesystem objects +

+
+

+ libattr +

+
+

+ Contains the library functions for manipulating + extended attributes +

+
+
+
+
+
+
+
+
+

+ 6.26. Acl-2.2.53 +

+
+
+
+
+

+ The Acl package contains utilities to administer Access + Control Lists, which are used to define more fine-grained + discretionary access rights for files and directories. +

+
+
+
+ Approximate build time: + less than 0.1 SBU +
+
+ Required disk space: + 6.4 MB +
+
+
+
+
+

+ 6.26.1. Installation of Acl +

+

+ Prepare Acl for compilation: +

+
+./configure --prefix=/usr         \
+            --bindir=/bin         \
+            --disable-static      \
+            --libexecdir=/usr/lib \
+            --docdir=/usr/share/doc/acl-2.2.53
+
+

+ Compile the package: +

+
+make
+
+

+ The Acl tests need to be run on a filesystem that supports + access controls after Coreutils has been built with the Acl + libraries. If desired, return to this package and run + make check + after Coreutils has been + built later in this chapter. +

+

+ Install the package: +

+
+make install
+
+

+ The shared library needs to be moved to /lib, and as a result the .so file in /usr/lib will need to be recreated: +

+
+mv -v /usr/lib/libacl.so.* /lib
+ln -sfv ../../lib/$(readlink /usr/lib/libacl.so) /usr/lib/libacl.so
+
+
+
+

+ 6.26.2. Contents + of Acl +

+
+
+
+ Installed programs: + chacl, getfacl, and setfacl +
+
+ Installed library: + libacl.so +
+
+ Installed directories: + /usr/include/acl and + /usr/share/doc/acl-2.2.53 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + +
+

+ chacl +

+
+

+ Changes the access control list of a file or + directory +

+
+

+ getfacl +

+
+

+ Gets file access control lists +

+
+

+ setfacl +

+
+

+ Sets file access control lists +

+
+

+ libacl +

+
+

+ Contains the library functions for manipulating + Access Control Lists +

+
+
+
+
+
+
+
+
+

+ 6.27. Libcap-2.26 +

+
+
+
+
+

+ The Libcap package implements the user-space interfaces to + the POSIX 1003.1e capabilities available in Linux kernels. + These capabilities are a partitioning of the all powerful + root privilege into a set of distinct privileges. +

+
+
+
+ Approximate build time: + less than 0.1 SBU +
+
+ Required disk space: + 1.4 MB +
+
+
+
+
+

+ 6.27.1. Installation of Libcap +

+

+ Prevent a static library from being installed: +

+
+sed -i '/install.*STALIBNAME/d' libcap/Makefile
+
+

+ Compile the package: +

+
+make
+
+

+ This package does not come with a test suite. +

+

+ Install the package: +

+
+make RAISE_SETFCAP=no lib=lib prefix=/usr install
+chmod -v 755 /usr/lib/libcap.so.2.26
+
+
+

+ The meaning of the make option: +

+
+
+ RAISE_SETFCAP=no +
+
+

+ This parameter skips trying to use setcap on itself. + This avoids an installation error if the kernel or file + system does not support extended capabilities. +

+
+
+ lib=lib +
+
+

+ This parameter installs the library in $prefix/lib rather than $prefix/lib64 on x86_64. It has no + effect on x86. +

+
+
+
+

+ The shared library needs to be moved to /lib, and as a result the .so file in /usr/lib will need to be recreated: +

+
+mv -v /usr/lib/libcap.so.* /lib
+ln -sfv ../../lib/$(readlink /usr/lib/libcap.so) /usr/lib/libcap.so
+
+
+
+

+ 6.27.2. + Contents of Libcap +

+
+
+
+ Installed programs: + capsh, getcap, getpcaps, and + setcap +
+
+ Installed library: + libcap.so +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ capsh +

+
+

+ A shell wrapper to explore and constrain capability + support +

+
+

+ getcap +

+
+

+ Examines file capabilities +

+
+

+ getpcaps +

+
+

+ Displays the capabilities on the queried + process(es) +

+
+

+ setcap +

+
+

+ Sets file capabilities +

+
+

+ libcap +

+
+

+ Contains the library functions for manipulating + POSIX 1003.1e capabilities +

+
+
+
+
+
+
+
+
+

+ 6.28. Sed-4.7 +

+
+
+
+
+

+ The Sed package contains a stream editor. +

+
+
+
+ Approximate build time: + 0.3 SBU +
+
+ Required disk space: + 32 MB +
+
+
+
+
+

+ 6.28.1. Installation of Sed +

+

+ First fix an issue in the LFS environment and remove a + failing test: +

+
+sed -i 's/usr/tools/'                 build-aux/help2man
+sed -i 's/testsuite.panic-tests.sh//' Makefile.in
+
+

+ Prepare Sed for compilation: +

+
+./configure --prefix=/usr --bindir=/bin
+
+

+ Compile the package and generate the HTML documentation: +

+
+make
+make html
+
+

+ To test the results, issue: +

+
+make check
+
+

+ Install the package and its documentation: +

+
+make install
+install -d -m755           /usr/share/doc/sed-4.7
+install -m644 doc/sed.html /usr/share/doc/sed-4.7
+
+
+
+

+ 6.28.2. Contents + of Sed +

+
+
+
+ Installed program: + sed +
+
+ Installed directory: + /usr/share/doc/sed-4.7 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ sed +

+
+

+ Filters and transforms text files in a single pass +

+
+
+
+
+
+
+
+
+

+ 6.29. Psmisc-23.2 +

+
+
+
+
+

+ The Psmisc package contains programs for displaying + information about running processes. +

+
+
+
+ Approximate build time: + less than 0.1 SBU +
+
+ Required disk space: + 4.5 MB +
+
+
+
+
+

+ 6.29.1. Installation of Psmisc +

+

+ Prepare Psmisc for compilation: +

+
+./configure --prefix=/usr
+
+

+ Compile the package: +

+
+make
+
+

+ This package does not come with a test suite. +

+

+ Install the package: +

+
+make install
+
+

+ Finally, move the killall and fuser programs to the + location specified by the FHS: +

+
+mv -v /usr/bin/fuser   /bin
+mv -v /usr/bin/killall /bin
+
+
+
+

+ 6.29.2. + Contents of Psmisc +

+
+
+
+ Installed programs: + fuser, killall, peekfd, prtstat, + pstree, and pstree.x11 (link to pstree) +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ fuser +

+
+

+ Reports the Process IDs (PIDs) of processes that + use the given files or file systems +

+
+

+ killall +

+
+

+ Kills processes by name; it sends a signal to all + processes running any of the given commands +

+
+

+ peekfd +

+
+

+ Peek at file descriptors of a running process, + given its PID +

+
+

+ prtstat +

+
+

+ Prints information about a process +

+
+

+ pstree +

+
+

+ Displays running processes as a tree +

+
+

+ pstree.x11 +

+
+

+ Same as pstree, except + that it waits for confirmation before exiting +

+
+
+
+
+
+
+
+
+

+ 6.30. Iana-Etc-2.30 +

+
+
+
+
+

+ The Iana-Etc package provides data for network services and + protocols. +

+
+
+
+ Approximate build time: + less than 0.1 SBU +
+
+ Required disk space: + 2.3 MB +
+
+
+
+
+

+ 6.30.1. Installation of Iana-Etc +

+

+ The following command converts the raw data provided by IANA + into the correct formats for the /etc/protocols and /etc/services data files: +

+
+make
+
+

+ This package does not come with a test suite. +

+

+ Install the package: +

+
+make install
+
+
+
+

+ 6.30.2. Contents of Iana-Etc +

+
+
+
+ Installed files: + /etc/protocols and + /etc/services +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ /etc/protocols +

+
+

+ Describes the various DARPA Internet protocols that + are available from the TCP/IP subsystem +

+
+

+ /etc/services +

+
+

+ Provides a mapping between friendly textual names + for internet services, and their underlying + assigned port numbers and protocol types +

+
+
+
+
+
+
+
+
+

+ 6.31. Bison-3.3.2 +

+
+
+
+
+

+ The Bison package contains a parser generator. +

+
+
+
+ Approximate build time: + 0.3 SBU +
+
+ Required disk space: + 37 MB +
+
+
+
+
+

+ 6.31.1. Installation of Bison +

+

+ Prepare Bison for compilation: +

+
+./configure --prefix=/usr --docdir=/usr/share/doc/bison-3.3.2
+
+

+ Compile the package: +

+
+make
+
+

+ There is a circular dependency between bison and flex with + regard to the checks. If desired, after installing flex in + the next section, the bison package can be rebuilt and the + bison checks can be run with make check. +

+

+ Install the package: +

+
+make install
+
+
+
+

+ 6.31.2. + Contents of Bison +

+
+
+
+ Installed programs: + bison and yacc +
+
+ Installed library: + liby.a +
+
+ Installed directory: + /usr/share/bison +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + +
+

+ bison +

+
+

+ Generates, from a series of rules, a program for + analyzing the structure of text files; Bison is a + replacement for Yacc (Yet Another Compiler + Compiler) +

+
+

+ yacc +

+
+

+ A wrapper for bison, meant for + programs that still call yacc instead of + bison; it calls + bison + with the -y + option +

+
+

+ liby +

+
+

+ The Yacc library containing implementations of + Yacc-compatible yyerror and main functions; this library is + normally not very useful, but POSIX requires it +

+
+
+
+
+
+
+
+
+

+ 6.32. Flex-2.6.4 +

+
+
+
+
+

+ The Flex package contains a utility for generating programs + that recognize patterns in text. +

+
+
+
+ Approximate build time: + 0.4 SBU +
+
+ Required disk space: + 35 MB +
+
+
+
+
+

+ 6.32.1. Installation of Flex +

+

+ First, fix a problem introduced with glibc-2.26: +

+
+sed -i "/math.h/a #include <malloc.h>" src/flexdef.h
+
+

+ The build procedure assumes the help2man program is available to create + a man page from the executable --help option. This is not + present, so we use an environment variable to skip this + process. Now, prepare Flex for compilation: +

+
+HELP2MAN=/tools/bin/true \
+./configure --prefix=/usr --docdir=/usr/share/doc/flex-2.6.4
+
+

+ Compile the package: +

+
+make
+
+

+ To test the results (about 0.5 SBU), issue: +

+
+make check
+
+

+ Install the package: +

+
+make install
+
+

+ A few programs do not know about flex yet and try to run its + predecessor, lex. To support those + programs, create a symbolic link named lex that runs flex in lex emulation mode: +

+
+ln -sv flex /usr/bin/lex
+
+
+
+

+ 6.32.2. + Contents of Flex +

+
+
+
+ Installed programs: + flex, flex++ (link to flex), and + lex (link to flex) +
+
+ Installed libraries: + libfl.so +
+
+ Installed directory: + /usr/share/doc/flex-2.6.4 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + +
+

+ flex +

+
+

+ A tool for generating programs that recognize + patterns in text; it allows for the versatility to + specify the rules for pattern-finding, eradicating + the need to develop a specialized program +

+
+

+ flex++ +

+
+

+ An extension of flex, is used for generating C++ + code and classes. It is a symbolic link to + flex +

+
+

+ lex +

+
+

+ A symbolic link that runs flex in + lex + emulation mode +

+
+

+ libfl +

+
+

+ The flex library +

+
+
+
+
+
+
+
+
+

+ 6.33. Grep-3.3 +

+
+
+
+
+

+ The Grep package contains programs for searching through + files. +

+
+
+
+ Approximate build time: + 0.4 SBU +
+
+ Required disk space: + 37 MB +
+
+
+
+
+

+ 6.33.1. Installation of Grep +

+

+ Prepare Grep for compilation: +

+
+./configure --prefix=/usr --bindir=/bin
+
+

+ Compile the package: +

+
+make
+
+

+ To test the results, issue: +

+
+make -k check
+
+

+ Install the package: +

+
+make install
+
+
+
+

+ 6.33.2. + Contents of Grep +

+
+
+
+ Installed programs: + egrep, fgrep, and grep +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + +
+

+ egrep +

+
+

+ Prints lines matching an extended regular + expression +

+
+

+ fgrep +

+
+

+ Prints lines matching a list of fixed strings +

+
+

+ grep +

+
+

+ Prints lines matching a basic regular expression +

+
+
+
+
+
+
+
+
+

+ 6.34. Bash-5.0 +

+
+
+
+
+

+ The Bash package contains the Bourne-Again SHell. +

+
+
+
+ Approximate build time: + 1.7 SBU +
+
+ Required disk space: + 62 MB +
+
+
+
+
+

+ 6.34.1. Installation of Bash +

+

+ Prepare Bash for compilation: +

+
+./configure --prefix=/usr                    \
+            --docdir=/usr/share/doc/bash-5.0 \
+            --without-bash-malloc            \
+            --with-installed-readline
+
+
+

+ The meaning of the new configure option: +

+
+
+ --with-installed-readline +
+
+

+ This option tells Bash to use the readline library that is already + installed on the system rather than using its own + readline version. +

+
+
+
+

+ Compile the package: +

+
+make
+
+

+ Skip down to Install the package if not + running the test suite. +

+

+ To prepare the tests, ensure that the nobody user can write to the sources + tree: +

+
+chown -Rv nobody .
+
+

+ Now, run the tests as the nobody user: +

+
+su nobody -s /bin/bash -c "PATH=$PATH HOME=/home make tests"
+
+

+ Install the package and move the main executable to + /bin: +

+
+make install
+mv -vf /usr/bin/bash /bin
+
+

+ Run the newly compiled bash program (replacing the + one that is currently being executed): +

+
+exec /bin/bash --login +h
+
+
+

+ Note +

+

+ The parameters used make the bash process an + interactive login shell and continue to disable hashing so + that new programs are found as they become available. +

+
+
+
+

+ 6.34.2. + Contents of Bash +

+
+
+
+ Installed programs: + bash, bashbug, and sh (link to + bash) +
+
+ Installed directory: + /usr/share/doc/bash-5.0 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + +
+

+ bash +

+
+

+ A widely-used command interpreter; it performs many + types of expansions and substitutions on a given + command line before executing it, thus making this + interpreter a powerful tool +

+
+

+ bashbug +

+
+

+ A shell script to help the user compose and mail + standard formatted bug reports concerning + bash +

+
+

+ sh +

+
+

+ A symlink to the bash program; + when invoked as sh, bash tries to + mimic the startup behavior of historical versions + of sh + as closely as possible, while conforming to the + POSIX standard as well +

+
+
+
+
+
+
+
+
+

+ 6.35. Libtool-2.4.6 +

+
+
+
+
+

+ The Libtool package contains the GNU generic library support + script. It wraps the complexity of using shared libraries in + a consistent, portable interface. +

+
+
+
+ Approximate build time: + 1.5 SBU +
+
+ Required disk space: + 43 MB +
+
+
+
+
+

+ 6.35.1. Installation of Libtool +

+

+ Prepare Libtool for compilation: +

+
+./configure --prefix=/usr
+
+

+ Compile the package: +

+
+make
+
+

+ To test the results (about 11.0 SBU), issue: +

+
+make check
+
+
+

+ Note +

+

+ The test time for libtool can be reduced significantly on a + system with multiple cores. To do this, append TESTSUITEFLAGS=-j<N> + to the line above. For instance, using -j4 can reduce the + test time by over 60 percent. +

+
+

+ Five tests are known to fail in the LFS build environment due + to a circular dependency, but all tests pass if rechecked + after automake is installed. +

+

+ Install the package: +

+
+make install
+
+
+
+

+ 6.35.2. + Contents of Libtool +

+
+
+
+ Installed programs: + libtool and libtoolize +
+
+ Installed libraries: + libltdl.so +
+
+ Installed directories: + /usr/include/libltdl and + /usr/share/libtool +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + +
+

+ libtool +

+
+

+ Provides generalized library-building support + services +

+
+

+ libtoolize +

+
+

+ Provides a standard way to add libtool support + to a package +

+
+

+ libltdl +

+
+

+ Hides the various difficulties of dlopening + libraries +

+
+
+
+
+
+
+
+
+

+ 6.36. GDBM-1.18.1 +

+
+
+
+
+

+ The GDBM package contains the GNU Database Manager. It is a + library of database functions that use extensible hashing and + work similar to the standard UNIX dbm. The library provides + primitives for storing key/data pairs, searching and + retrieving the data by its key and deleting a key along with + its data. +

+
+
+
+ Approximate build time: + 0.1 SBU +
+
+ Required disk space: + 11 MB +
+
+
+
+
+

+ 6.36.1. Installation of GDBM +

+

+ Prepare GDBM for compilation: +

+
+./configure --prefix=/usr    \
+            --disable-static \
+            --enable-libgdbm-compat
+
+
+

+ The meaning of the configure option: +

+
+
+ --enable-libgdbm-compat +
+
+

+ This switch enables the libgdbm compatibility library + to be built, as some packages outside of LFS may + require the older DBM routines it provides. +

+
+
+
+

+ Compile the package: +

+
+make
+
+

+ To test the results, issue: +

+
+make check
+
+

+ Install the package: +

+
+make install
+
+
+
+

+ 6.36.2. + Contents of GDBM +

+
+
+
+ Installed programs: + gdbm_dump, gdbm_load, and + gdbmtool +
+
+ Installed libraries: + libgdbm.so and + libgdbm_compat.so +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ gdbm_dump +

+
+

+ Dumps a GDBM database to a file +

+
+

+ gdbm_load +

+
+

+ Recreates a GDBM database from a dump file +

+
+

+ gdbmtool +

+
+

+ Tests and modifies a GDBM database +

+
+

+ libgdbm +

+
+

+ Contains functions to manipulate a hashed database +

+
+

+ libgdbm_compat +

+
+

+ Compatibility library containing older DBM + functions +

+
+
+
+
+
+
+
+
+

+ 6.37. Gperf-3.1 +

+
+
+
+
+

+ Gperf generates a perfect hash function from a key set. +

+
+
+
+ Approximate build time: + less than 0.1 SBU +
+
+ Required disk space: + 6.3 MB +
+
+
+
+
+

+ 6.37.1. Installation of Gperf +

+

+ Prepare Gperf for compilation: +

+
+./configure --prefix=/usr --docdir=/usr/share/doc/gperf-3.1
+
+

+ Compile the package: +

+
+make
+
+

+ The tests are known to fail if running multiple simultaneous + tests (-j option greater than 1). To test the results, issue: +

+
+make -j1 check
+
+

+ Install the package: +

+
+make install
+
+
+
+

+ 6.37.2. + Contents of Gperf +

+
+
+
+ Installed program: + gperf +
+
+ Installed directory: + /usr/share/doc/gperf-3.1 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ gperf +

+
+

+ Generates a perfect hash from a key set +

+
+
+
+
+
+
+
+
+

+ 6.38. Expat-2.2.6 +

+
+
+
+
+

+ The Expat package contains a stream oriented C library for + parsing XML. +

+
+
+
+ Approximate build time: + 0.1 SBU +
+
+ Required disk space: + 11 MB +
+
+
+
+
+

+ 6.38.1. Installation of Expat +

+

+ First fix a problem with the regression tests in the LFS + environment: +

+
+sed -i 's|usr/bin/env |bin/|' run.sh.in
+
+

+ Prepare Expat for compilation: +

+
+./configure --prefix=/usr    \
+            --disable-static \
+            --docdir=/usr/share/doc/expat-2.2.6
+
+

+ Compile the package: +

+
+make
+
+

+ To test the results, issue: +

+
+make check
+
+

+ Install the package: +

+
+make install
+
+

+ If desired, install the documentation: +

+
+install -v -m644 doc/*.{html,png,css} /usr/share/doc/expat-2.2.6
+
+
+
+

+ 6.38.2. + Contents of Expat +

+
+
+
+ Installed program: + xmlwf +
+
+ Installed libraries: + libexpat.so +
+
+ Installed directory: + /usr/share/doc/expat-2.2.6 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ xmlwf +

+
+

+ Is a non-validating utility to check whether or not + XML documents are well formed +

+
+

+ libexpat +

+
+

+ Contains API functions for parsing XML +

+
+
+
+
+
+
+
+
+

+ 6.39. Inetutils-1.9.4 +

+
+
+
+
+

+ The Inetutils package contains programs for basic networking. +

+
+
+
+ Approximate build time: + 0.3 SBU +
+
+ Required disk space: + 29 MB +
+
+
+
+
+

+ 6.39.1. Installation of Inetutils +

+

+ Prepare Inetutils for compilation: +

+
+./configure --prefix=/usr        \
+            --localstatedir=/var \
+            --disable-logger     \
+            --disable-whois      \
+            --disable-rcp        \
+            --disable-rexec      \
+            --disable-rlogin     \
+            --disable-rsh        \
+            --disable-servers
+
+
+

+ The meaning of the configure options: +

+
+
+ --disable-logger +
+
+

+ This option prevents Inetutils from installing the + logger + program, which is used by scripts to pass messages to + the System Log Daemon. Do not install it because + Util-linux installs a more recent version. +

+
+
+ --disable-whois +
+
+

+ This option disables the building of the Inetutils + whois + client, which is out of date. Instructions for a better + whois + client are in the BLFS book. +

+
+
+ --disable-r* +
+
+

+ These parameters disable building obsolete programs + that should not be used due to security issues. The + functions provided by these programs can be provided by + the openssh package in + the BLFS book. +

+
+
+ --disable-servers +
+
+

+ This disables the installation of the various network + servers included as part of the Inetutils package. + These servers are deemed not appropriate in a basic LFS + system. Some are insecure by nature and are only + considered safe on trusted networks. Note that better + replacements are available for many of these servers. +

+
+
+
+

+ Compile the package: +

+
+make
+
+

+ To test the results, issue: +

+
+make check
+
+
+

+ Note +

+

+ One test, libls.sh, may fail in the initial chroot + environment but will pass if the test is rerun after the + LFS system is complete. One test, ping-localhost.sh, will + fail if the host system does not have ipv6 capability. +

+
+

+ Install the package: +

+
+make install
+
+

+ Move some programs so they are available if /usr is not accessible: +

+
+mv -v /usr/bin/{hostname,ping,ping6,traceroute} /bin
+mv -v /usr/bin/ifconfig /sbin
+
+
+
+

+ 6.39.2. Contents of Inetutils +

+
+
+
+ Installed programs: + dnsdomainname, ftp, ifconfig, + hostname, ping, ping6, talk, telnet, tftp, and + traceroute +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ dnsdomainname +

+
+

+ Show the system's DNS domain name +

+
+

+ ftp +

+
+

+ Is the file transfer protocol program +

+
+

+ hostname +

+
+

+ Reports or sets the name of the host +

+
+

+ ifconfig +

+
+

+ Manages network interfaces +

+
+

+ ping +

+
+

+ Sends echo-request packets and reports how long the + replies take +

+
+

+ ping6 +

+
+

+ A version of ping for IPv6 + networks +

+
+

+ talk +

+
+

+ Is used to chat with another user +

+
+

+ telnet +

+
+

+ An interface to the TELNET protocol +

+
+

+ tftp +

+
+

+ A trivial file transfer program +

+
+

+ traceroute +

+
+

+ Traces the route your packets take from the host + you are working on to another host on a network, + showing all the intermediate hops (gateways) along + the way +

+
+
+
+
+
+
+
+
+

+ 6.40. Perl-5.28.1 +

+
+
+
+
+

+ The Perl package contains the Practical Extraction and Report + Language. +

+
+
+
+ Approximate build time: + 7.1 SBU +
+
+ Required disk space: + 274 MB +
+
+
+
+
+

+ 6.40.1. Installation of Perl +

+

+ First create a basic /etc/hosts + file to be referenced in one of Perl's configuration files as + well as the optional test suite: +

+
+echo "127.0.0.1 localhost $(hostname)" > /etc/hosts
+
+

+ This version of Perl now builds the Compress::Raw::Zlib and + Compress::Raw::BZip2 modules. By default Perl will use an + internal copy of the sources for the build. Issue the + following command so that Perl will use the libraries + installed on the system: +

+
+export BUILD_ZLIB=False
+export BUILD_BZIP2=0
+
+

+ To have full control over the way Perl is set up, you can + remove the -des options from the following + command and hand-pick the way this package is built. + Alternatively, use the command exactly as below to use the + defaults that Perl auto-detects: +

+
+sh Configure -des -Dprefix=/usr                 \
+                  -Dvendorprefix=/usr           \
+                  -Dman1dir=/usr/share/man/man1 \
+                  -Dman3dir=/usr/share/man/man3 \
+                  -Dpager="/usr/bin/less -isR"  \
+                  -Duseshrplib                  \
+                  -Dusethreads
+
+
+

+ The meaning of the configure options: +

+
+
+ -Dvendorprefix=/usr +
+
+

+ This ensures perl knows how to + tell packages where they should install their perl + modules. +

+
+
+ -Dpager="/usr/bin/less + -isR" +
+
+

+ This ensures that less is used instead + of more. +

+
+
+ -Dman1dir=/usr/share/man/man1 + -Dman3dir=/usr/share/man/man3 +
+
+

+ Since Groff is not installed yet, Configure thinks that + we do not want man pages for Perl. Issuing these + parameters overrides this decision. +

+
+
+ -Duseshrplib +
+
+

+ Build a shared libperl needed by some perl modules. +

+
+
+ -Dusethreads +
+
+

+ Build perl with support for threads. +

+
+
+
+

+ Compile the package: +

+
+make
+
+

+ To test the results (approximately 11 SBU), issue: +

+
+make -k test
+
+
+

+ Note +

+

+ One test fails due to using the most recent version of + gdbm. +

+
+

+ Install the package and clean up: +

+
+make install
+unset BUILD_ZLIB BUILD_BZIP2
+
+
+
+

+ 6.40.2. + Contents of Perl +

+
+
+
+ Installed programs: + corelist, cpan, enc2xs, encguess, + h2ph, h2xs, instmodsh, json_pp, libnetcfg, perl, + perl5.28.1 (hard link to perl), perlbug, perldoc, + perlivp, perlthanks (hard link to perlbug), piconv, + pl2pm, pod2html, pod2man, pod2text, pod2usage, + podchecker, podselect, prove, ptar, ptardiff, ptargrep, + shasum, splain, xsubpp, and zipdetails +
+
+ Installed libraries: + Many which cannot all be listed + here +
+
+ Installed directory: + /usr/lib/perl5 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ corelist +

+
+

+ A commandline frontend to Module::CoreList +

+
+

+ cpan +

+
+

+ Interact with the Comprehensive Perl Archive + Network (CPAN) from the command line +

+
+

+ enc2xs +

+
+

+ Builds a Perl extension for the Encode module from + either Unicode Character Mappings or Tcl Encoding + Files +

+
+

+ encguess +

+
+

+ Guess the encoding type of one or several files +

+
+

+ h2ph +

+
+

+ Converts .h C header + files to .ph Perl + header files +

+
+

+ h2xs +

+
+

+ Converts .h C header + files to Perl extensions +

+
+

+ instmodsh +

+
+

+ Shell script for examining installed Perl modules, + and can create a tarball from an installed module +

+
+

+ json_pp +

+
+

+ Converts data between certain input and output + formats +

+
+

+ libnetcfg +

+
+

+ Can be used to configure the libnet Perl module +

+
+

+ perl +

+
+

+ Combines some of the best features of C, + sed, + awk + and sh into a single + swiss-army language +

+
+

+ perl5.28.1 +

+
+

+ A hard link to perl +

+
+

+ perlbug +

+
+

+ Used to generate bug reports about Perl, or the + modules that come with it, and mail them +

+
+

+ perldoc +

+
+

+ Displays a piece of documentation in pod format + that is embedded in the Perl installation tree or + in a Perl script +

+
+

+ perlivp +

+
+

+ The Perl Installation Verification Procedure; it + can be used to verify that Perl and its libraries + have been installed correctly +

+
+

+ perlthanks +

+
+

+ Used to generate thank you messages to mail to the + Perl developers +

+
+

+ piconv +

+
+

+ A Perl version of the character encoding converter + iconv +

+
+

+ pl2pm +

+
+

+ A rough tool for converting Perl4 .pl files to Perl5 .pm modules +

+
+

+ pod2html +

+
+

+ Converts files from pod format to HTML format +

+
+

+ pod2man +

+
+

+ Converts pod data to formatted *roff input +

+
+

+ pod2text +

+
+

+ Converts pod data to formatted ASCII text +

+
+

+ pod2usage +

+
+

+ Prints usage messages from embedded pod docs in + files +

+
+

+ podchecker +

+
+

+ Checks the syntax of pod format documentation files +

+
+

+ podselect +

+
+

+ Displays selected sections of pod documentation +

+
+

+ prove +

+
+

+ Command line tool for running tests against the + Test::Harness module +

+
+

+ ptar +

+
+

+ A tar-like program + written in Perl +

+
+

+ ptardiff +

+
+

+ A Perl program that compares an extracted archive + with an unextracted one +

+
+

+ ptargrep +

+
+

+ A Perl program that applies pattern matching to the + contents of files in a tar archive +

+
+

+ shasum +

+
+

+ Prints or checks SHA checksums +

+
+

+ splain +

+
+

+ Is used to force verbose warning diagnostics in + Perl +

+
+

+ xsubpp +

+
+

+ Converts Perl XS code into C code +

+
+

+ zipdetails +

+
+

+ Displays details about the internal structure of a + Zip file +

+
+
+
+
+
+
+
+
+

+ 6.41. XML::Parser-2.44 +

+
+
+
+
+

+ The XML::Parser module is a Perl interface to James Clark's + XML parser, Expat. +

+
+
+
+ Approximate build time: + less than 0.1 SBU +
+
+ Required disk space: + 2.1 MB +
+
+
+
+
+

+ 6.41.1. Installation of XML::Parser +

+

+ Prepare XML::Parser for compilation: +

+
+perl Makefile.PL
+
+

+ Compile the package: +

+
+make
+
+

+ To test the results, issue: +

+
+make test
+
+

+ Install the package: +

+
+make install
+
+
+
+

+ 6.41.2. Contents of XML::Parser +

+
+
+
+ Installed module: + Expat.so +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ Expat +

+
+

+ provides the Perl Expat interface +

+
+
+
+
+
+
+
+
+

+ 6.42. Intltool-0.51.0 +

+
+
+
+
+

+ The Intltool is an internationalization tool used for + extracting translatable strings from source files. +

+
+
+
+ Approximate build time: + less than 0.1 SBU +
+
+ Required disk space: + 1.5 MB +
+
+
+
+
+

+ 6.42.1. Installation of Intltool +

+

+ First fix a warning that is caused by perl-5.22 and later: +

+
+sed -i 's:\\\${:\\\$\\{:' intltool-update.in
+
+

+ Prepare Intltool for compilation: +

+
+./configure --prefix=/usr
+
+

+ Compile the package: +

+
+make
+
+

+ To test the results, issue: +

+
+make check
+
+

+ Install the package: +

+
+make install
+install -v -Dm644 doc/I18N-HOWTO /usr/share/doc/intltool-0.51.0/I18N-HOWTO
+
+
+
+

+ 6.42.2. Contents of Intltool +

+
+
+
+ Installed programs: + intltool-extract, intltool-merge, + intltool-prepare, intltool-update, and intltoolize +
+
+ Installed directories: + /usr/share/doc/intltool-0.51.0 and + /usr/share/intltool +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ intltoolize +

+
+

+ Prepares a package to use intltool +

+
+

+ intltool-extract +

+
+

+ Generates header files that can be read by + gettext +

+
+

+ intltool-merge +

+
+

+ Merges translated strings into various file types +

+
+

+ intltool-prepare +

+
+

+ Updates pot files and merges them with translation + files +

+
+

+ intltool-update +

+
+

+ Updates the po template files and merges them with + the translations +

+
+
+
+
+
+
+
+
+

+ 6.43. Autoconf-2.69 +

+
+
+
+
+

+ The Autoconf package contains programs for producing shell + scripts that can automatically configure source code. +

+
+
+
+ Approximate build time: + less than 0.1 SBU (about 2.7 SBU + with tests) +
+
+ Required disk space: + 17 MB +
+
+
+
+
+

+ 6.43.1. Installation of Autoconf +

+

+ First, fix a bug generated by Perl 5.28. +

+
+sed '361 s/{/\\{/' -i bin/autoscan.in
+
+

+ Prepare Autoconf for compilation: +

+
+./configure --prefix=/usr
+
+

+ Compile the package: +

+
+make
+
+

+ The test suite is currently broken by bash-5 and + libtool-2.4.3. To run the tests anyway, issue: +

+
+make check
+
+

+ Install the package: +

+
+make install
+
+
+
+

+ 6.43.2. Contents of Autoconf +

+
+
+
+ Installed programs: + autoconf, autoheader, autom4te, + autoreconf, autoscan, autoupdate, and ifnames +
+
+ Installed directory: + /usr/share/autoconf +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ autoconf +

+
+

+ Produces shell scripts that automatically configure + software source code packages to adapt to many + kinds of Unix-like systems; the configuration + scripts it produces are independent—running + them does not require the autoconf program +

+
+

+ autoheader +

+
+

+ A tool for creating template files of C + #define + statements for configure to use +

+
+

+ autom4te +

+
+

+ A wrapper for the M4 macro processor +

+
+

+ autoreconf +

+
+

+ Automatically runs autoconf, + autoheader, + aclocal, + automake, + gettextize, and + libtoolize in the + correct order to save time when changes are made to + autoconf and + automake template + files +

+
+

+ autoscan +

+
+

+ Helps to create a configure.in file for a software + package; it examines the source files in a + directory tree, searching them for common + portability issues, and creates a configure.scan file that serves + as as a preliminary configure.in file for the package +

+
+

+ autoupdate +

+
+

+ Modifies a configure.in file that still + calls autoconf macros + by their old names to use the current macro names +

+
+

+ ifnames +

+
+

+ Helps when writing configure.in files for a software + package; it prints the identifiers that the package + uses in C preprocessor conditionals [If a package + has already been set up to have some portability, + this program can help determine what configure needs + to check for. It can also fill in gaps in a + configure.in file + generated by autoscan.] +

+
+
+
+
+
+
+
+
+

+ 6.44. Automake-1.16.1 +

+
+
+
+
+

+ The Automake package contains programs for generating + Makefiles for use with Autoconf. +

+
+
+
+ Approximate build time: + less than 0.1 SBU (about 6.9 SBU + with tests) +
+
+ Required disk space: + 107 MB +
+
+
+
+
+

+ 6.44.1. Installation of Automake +

+

+ Prepare Automake for compilation: +

+
+./configure --prefix=/usr --docdir=/usr/share/doc/automake-1.16.1
+
+

+ Compile the package: +

+
+make
+
+

+ Using the -j4 make option speeds up the tests, even on + systems with only one processor, due to internal delays in + individual tests. To test the results, issue: +

+
+make -j4 check
+
+

+ One test is known to fail in the LFS environment: subobj.sh. +

+

+ Install the package: +

+
+make install
+
+
+
+

+ 6.44.2. Contents of Automake +

+
+
+
+ Installed programs: + aclocal, aclocal-1.16 (hard linked + with aclocal), automake, and automake-1.16 (hard linked + with automake) +
+
+ Installed directories: + /usr/share/aclocal-1.16, + /usr/share/automake-1.16, and + /usr/share/doc/automake-1.16.1 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + +
+

+ aclocal +

+
+

+ Generates aclocal.m4 + files based on the contents of configure.in files +

+
+

+ aclocal-1.16 +

+
+

+ A hard link to aclocal +

+
+

+ automake +

+
+

+ A tool for automatically generating Makefile.in files from + Makefile.am files [To + create all the Makefile.in files for a package, + run this program in the top-level directory. By + scanning the configure.in file, it + automatically finds each appropriate Makefile.am file and generates + the corresponding Makefile.in file.] +

+
+

+ automake-1.16 +

+
+

+ A hard link to automake +

+
+
+
+
+
+
+
+
+

+ 6.45. Xz-5.2.4 +

+
+
+
+
+

+ The Xz package contains programs for compressing and + decompressing files. It provides capabilities for the lzma + and the newer xz compression formats. Compressing text files + with xz yields + a better compression percentage than with the traditional + gzip or + bzip2 commands. +

+
+
+
+ Approximate build time: + 0.2 SBU +
+
+ Required disk space: + 16 MB +
+
+
+
+
+

+ 6.45.1. Installation of Xz +

+

+ Prepare Xz for compilation with: +

+
+./configure --prefix=/usr    \
+            --disable-static \
+            --docdir=/usr/share/doc/xz-5.2.4
+
+

+ Compile the package: +

+
+make
+
+

+ To test the results, issue: +

+
+make check
+
+

+ Install the package and make sure that all essential files + are in the correct directory: +

+
+make install
+mv -v   /usr/bin/{lzma,unlzma,lzcat,xz,unxz,xzcat} /bin
+mv -v /usr/lib/liblzma.so.* /lib
+ln -svf ../../lib/$(readlink /usr/lib/liblzma.so) /usr/lib/liblzma.so
+
+
+
+

+ 6.45.2. Contents + of Xz +

+
+
+
+ Installed programs: + lzcat (link to xz), lzcmp (link to + xzdiff), lzdiff (link to xzdiff), lzegrep (link to + xzgrep), lzfgrep (link to xzgrep), lzgrep (link to + xzgrep), lzless (link to xzless), lzma (link to xz), + lzmadec, lzmainfo, lzmore (link to xzmore), unlzma (link + to xz), unxz (link to xz), xz, xzcat (link to xz), xzcmp + (link to xzdiff), xzdec, xzdiff, xzegrep (link to + xzgrep), xzfgrep (link to xzgrep), xzgrep, xzless, and + xzmore +
+
+ Installed libraries: + liblzma.so +
+
+ Installed directories: + /usr/include/lzma and + /usr/share/doc/xz-5.2.4 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ lzcat +

+
+

+ Decompresses to standard output +

+
+

+ lzcmp +

+
+

+ Runs cmp on LZMA + compressed files +

+
+

+ lzdiff +

+
+

+ Runs diff on LZMA + compressed files +

+
+

+ lzegrep +

+
+

+ Runs egrep on LZMA + compressed files +

+
+

+ lzfgrep +

+
+

+ Runs fgrep on LZMA + compressed files +

+
+

+ lzgrep +

+
+

+ Runs grep on LZMA + compressed files +

+
+

+ lzless +

+
+

+ Runs less on LZMA + compressed files +

+
+

+ lzma +

+
+

+ Compresses or decompresses files using the LZMA + format +

+
+

+ lzmadec +

+
+

+ A small and fast decoder for LZMA compressed files +

+
+

+ lzmainfo +

+
+

+ Shows information stored in the LZMA compressed + file header +

+
+

+ lzmore +

+
+

+ Runs more on LZMA + compressed files +

+
+

+ unlzma +

+
+

+ Decompresses files using the LZMA format +

+
+

+ unxz +

+
+

+ Decompresses files using the XZ format +

+
+

+ xz +

+
+

+ Compresses or decompresses files using the XZ + format +

+
+

+ xzcat +

+
+

+ Decompresses to standard output +

+
+

+ xzcmp +

+
+

+ Runs cmp on XZ + compressed files +

+
+

+ xzdec +

+
+

+ A small and fast decoder for XZ compressed files +

+
+

+ xzdiff +

+
+

+ Runs diff on XZ + compressed files +

+
+

+ xzegrep +

+
+

+ Runs egrep on XZ + compressed files +

+
+

+ xzfgrep +

+
+

+ Runs fgrep on XZ + compressed files +

+
+

+ xzgrep +

+
+

+ Runs grep on XZ + compressed files +

+
+

+ xzless +

+
+

+ Runs less on XZ + compressed files +

+
+

+ xzmore +

+
+

+ Runs more on XZ + compressed files +

+
+

+ liblzma +

+
+

+ The library implementing lossless, block-sorting + data compression, using the Lempel-Ziv-Markov chain + algorithm +

+
+
+
+
+
+
+
+
+

+ 6.46. Kmod-26 +

+
+
+
+
+

+ The Kmod package contains libraries and utilities for loading + kernel modules +

+
+
+
+ Approximate build time: + 0.1 SBU +
+
+ Required disk space: + 13 MB +
+
+
+
+
+

+ 6.46.1. Installation of Kmod +

+

+ Prepare Kmod for compilation: +

+
+./configure --prefix=/usr          \
+            --bindir=/bin          \
+            --sysconfdir=/etc      \
+            --with-rootlibdir=/lib \
+            --with-xz              \
+            --with-zlib
+
+
+

+ The meaning of the configure options: +

+
+
+ --with-xz, + --with-zlib +
+
+

+ These options enable Kmod to handle compressed kernel + modules. +

+
+
+ --with-rootlibdir=/lib +
+
+

+ This option ensures different library related files are + placed in the correct directories. +

+
+
+
+

+ Compile the package: +

+
+make
+
+

+ This package does not come with a test suite that can be run + in the LFS chroot environment. At a minimum the git program + is required and several tests will not run outside of a git + repository. +

+

+ Install the package, and create symlinks for compatibility + with Module-Init-Tools (the package that previously handled + Linux kernel modules): +

+
+make install
+
+for target in depmod insmod lsmod modinfo modprobe rmmod; do
+  ln -sfv ../bin/kmod /sbin/$target
+done
+
+ln -sfv kmod /bin/lsmod
+
+
+
+

+ 6.46.2. + Contents of Kmod +

+
+
+
+ Installed programs: + depmod (link to kmod), insmod (link + to kmod), kmod, lsmod (link to kmod), modinfo (link to + kmod), modprobe (link to kmod), and rmmod (link to + kmod) +
+
+ Installed library: + libkmod.so +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ depmod +

+
+

+ Creates a dependency file based on the symbols it + finds in the existing set of modules; this + dependency file is used by modprobe to + automatically load the required modules +

+
+

+ insmod +

+
+

+ Installs a loadable module in the running kernel +

+
+

+ kmod +

+
+

+ Loads and unloads kernel modules +

+
+

+ lsmod +

+
+

+ Lists currently loaded modules +

+
+

+ modinfo +

+
+

+ Examines an object file associated with a kernel + module and displays any information that it can + glean +

+
+

+ modprobe +

+
+

+ Uses a dependency file, created by depmod, to + automatically load relevant modules +

+
+

+ rmmod +

+
+

+ Unloads modules from the running kernel +

+
+

+ libkmod +

+
+

+ This library is used by other programs to load and + unload kernel modules +

+
+
+
+
+
+
+
+
+

+ 6.47. Gettext-0.19.8.1 +

+
+
+
+
+

+ The Gettext package contains utilities for + internationalization and localization. These allow programs + to be compiled with NLS (Native Language Support), enabling + them to output messages in the user's native language. +

+
+
+
+ Approximate build time: + 2.0 SBU +
+
+ Required disk space: + 210 MB +
+
+
+
+
+

+ 6.47.1. Installation of Gettext +

+

+ First, suppress two invocations of test-lock which on some + machines can loop forever: +

+
+sed -i '/^TESTS =/d' gettext-runtime/tests/Makefile.in &&
+sed -i 's/test-lock..EXEEXT.//' gettext-tools/gnulib-tests/Makefile.in
+
+

+ Now fix a configuration file: +

+
+sed -e '/AppData/{N;N;p;s/\.appdata\./.metainfo./}' \
+    -i gettext-tools/its/appdata.loc
+
+

+ Prepare Gettext for compilation: +

+
+./configure --prefix=/usr    \
+            --disable-static \
+            --docdir=/usr/share/doc/gettext-0.19.8.1
+
+

+ Compile the package: +

+
+make
+
+

+ To test the results (this takes a long time, around 3 SBUs), + issue: +

+
+make check
+
+

+ Install the package: +

+
+make install
+chmod -v 0755 /usr/lib/preloadable_libintl.so
+
+
+
+

+ 6.47.2. + Contents of Gettext +

+
+
+
+ Installed programs: + autopoint, envsubst, gettext, + gettext.sh, gettextize, msgattrib, msgcat, msgcmp, + msgcomm, msgconv, msgen, msgexec, msgfilter, msgfmt, + msggrep, msginit, msgmerge, msgunfmt, msguniq, ngettext, + recode-sr-latin, and xgettext +
+
+ Installed libraries: + libasprintf.so, libgettextlib.so, + libgettextpo.so, libgettextsrc.so, and + preloadable_libintl.so +
+
+ Installed directories: + /usr/lib/gettext, + /usr/share/doc/gettext-0.19.8.1, and + /usr/share/gettext +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ autopoint +

+
+

+ Copies standard Gettext infrastructure files into a + source package +

+
+

+ envsubst +

+
+

+ Substitutes environment variables in shell format + strings +

+
+

+ gettext +

+
+

+ Translates a natural language message into the + user's language by looking up the translation in a + message catalog +

+
+

+ gettext.sh +

+
+

+ Primarily serves as a shell function library for + gettext +

+
+

+ gettextize +

+
+

+ Copies all standard Gettext files into the given + top-level directory of a package to begin + internationalizing it +

+
+

+ msgattrib +

+
+

+ Filters the messages of a translation catalog + according to their attributes and manipulates the + attributes +

+
+

+ msgcat +

+
+

+ Concatenates and merges the given .po files +

+
+

+ msgcmp +

+
+

+ Compares two .po + files to check that both contain the same set of + msgid strings +

+
+

+ msgcomm +

+
+

+ Finds the messages that are common to the given + .po files +

+
+

+ msgconv +

+
+

+ Converts a translation catalog to a different + character encoding +

+
+

+ msgen +

+
+

+ Creates an English translation catalog +

+
+

+ msgexec +

+
+

+ Applies a command to all translations of a + translation catalog +

+
+

+ msgfilter +

+
+

+ Applies a filter to all translations of a + translation catalog +

+
+

+ msgfmt +

+
+

+ Generates a binary message catalog from a + translation catalog +

+
+

+ msggrep +

+
+

+ Extracts all messages of a translation catalog that + match a given pattern or belong to some given + source files +

+
+

+ msginit +

+
+

+ Creates a new .po + file, initializing the meta information with values + from the user's environment +

+
+

+ msgmerge +

+
+

+ Combines two raw translations into a single file +

+
+

+ msgunfmt +

+
+

+ Decompiles a binary message catalog into raw + translation text +

+
+

+ msguniq +

+
+

+ Unifies duplicate translations in a translation + catalog +

+
+

+ ngettext +

+
+

+ Displays native language translations of a textual + message whose grammatical form depends on a number +

+
+

+ recode-sr-latin +

+
+

+ Recodes Serbian text from Cyrillic to Latin script +

+
+

+ xgettext +

+
+

+ Extracts the translatable message lines from the + given source files to make the first translation + template +

+
+

+ libasprintf +

+
+

+ defines the autosprintf class, which + makes C formatted output routines usable in C++ + programs, for use with the <string> strings + and the <iostream> streams +

+
+

+ libgettextlib +

+
+

+ a private library containing common routines used + by the various Gettext programs; these are not + intended for general use +

+
+

+ libgettextpo +

+
+

+ Used to write specialized programs that process + .po files; this + library is used when the standard applications + shipped with Gettext (such as msgcomm, + msgcmp, + msgattrib, and + msgen) will not + suffice +

+
+

+ libgettextsrc +

+
+

+ A private library containing common routines used + by the various Gettext programs; these are not + intended for general use +

+
+

+ preloadable_libintl +

+
+

+ A library, intended to be used by LD_PRELOAD that + assists libintl in + logging untranslated messages +

+
+
+
+
+
+
+
+
+

+ 6.48. Libelf from + Elfutils-0.176 +

+
+
+
+
+

+ Libelf is a library for handling ELF (Executable and Linkable + Format) files. +

+
+
+
+ Approximate build time: + 1.3 SBU +
+
+ Required disk space: + 105 MB +
+
+
+
+
+

+ 6.48.1. Installation of Libelf +

+

+ Libelf is part of elfutils-0.176 package. Use the + elfutils-0.176.tar.bz2 as the source tarball. +

+

+ Prepare Libelf for compilation: +

+
+./configure --prefix=/usr
+
+

+ Compile the package: +

+
+make
+
+

+ To test the results, issue: +

+
+make check
+
+

+ Install only Libelf: +

+
+make -C libelf install
+install -vm644 config/libelf.pc /usr/lib/pkgconfig
+
+
+
+

+ 6.48.2. Contents of Libelf +

+
+
+
+ Installed Library: + libelf.so +
+
+
+
+
+
+
+
+
+

+ 6.49. Libffi-3.2.1 +

+
+
+
+
+

+ The Libffi library provides a portable, high level + programming interface to various calling conventions. This + allows a programmer to call any function specified by a call + interface description at run time. +

+
+
+
+ Approximate build time: + 0.3 SBU +
+
+ Required disk space: + 7.6 MB +
+
+
+
+
+

+ 6.49.1. Installation of Libffi +

+
+

+ Note +

+

+ Similar to GMP, libffi builds with optimizations specific + to the proccesor in use. If building for another system, + export CFLAGS and CXXFLAGS to specify a generic build for + your architecture. If this is not done, all applications + that link to libffi will trigger Illegal Operation Errors. +

+
+

+ Modify the Makefile to install headers into the standard + /usr/include directory instead + of /usr/lib/libffi-3.2.1/include. +

+
+sed -e '/^includesdir/ s/$(libdir).*$/$(includedir)/' \
+    -i include/Makefile.in
+
+sed -e '/^includedir/ s/=.*$/=@includedir@/' \
+    -e 's/^Cflags: -I${includedir}/Cflags:/' \
+    -i libffi.pc.in
+
+

+ Prepare libffi for compilation: +

+
+./configure --prefix=/usr --disable-static --with-gcc-arch=native
+
+
+

+ The meaning of the configure option: +

+
+
+ --with-gcc-arch=native +
+
+

+ Ensure gcc optimizes for the current system. If this is + not specified, the system is guessed and the code + generated may not be correct for some systems. If the + generated code will be copied from the native system to + a less capable system, use the less capable system as a + parameter. For details about alternative system types, + see + the x86 options in the gcc manual. +

+
+
+
+

+ Compile the package: +

+
+make
+
+

+ To test the results, issue: +

+
+make check
+
+

+ Install the package: +

+
+make install
+
+
+
+

+ 6.49.2. + Contents of Libffi +

+
+
+
+ Installed library: + libffi.so +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ libffi +

+
+

+ contains the libffi API functions. +

+
+
+
+
+
+
+
+
+

+ 6.50. OpenSSL-1.1.1a +

+
+
+
+
+

+ The OpenSSL package contains management tools and libraries + relating to cryptography. These are useful for providing + cryptographic functions to other packages, such as OpenSSH, + email applications and web browsers (for accessing HTTPS + sites). +

+
+
+
+ Approximate build time: + 1.7 SBU +
+
+ Required disk space: + 141 MB +
+
+
+
+
+

+ 6.50.1. Installation of OpenSSL +

+

+ Prepare OpenSSL for compilation: +

+
+./config --prefix=/usr         \
+         --openssldir=/etc/ssl \
+         --libdir=lib          \
+         shared                \
+         zlib-dynamic
+
+

+ Compile the package: +

+
+make
+
+

+ To test the results, issue: +

+
+make test
+
+

+ Install the package: +

+
+sed -i '/INSTALL_LIBS/s/libcrypto.a libssl.a//' Makefile
+make MANSUFFIX=ssl install
+
+

+ If desired, install the documentation: +

+
+mv -v /usr/share/doc/openssl /usr/share/doc/openssl-1.1.1a
+cp -vfr doc/* /usr/share/doc/openssl-1.1.1a
+
+
+
+

+ 6.50.2. + Contents of OpenSSL +

+
+
+
+ Installed programs: + c_rehash and openssl +
+
+ Installed libraries: + libcrypto.{so,a} and + libssl.{so,a} +
+
+ Installed directories: + /etc/ssl, /usr/include/openssl, + /usr/lib/engines and /usr/share/doc/openssl-1.1.1a +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + +
+

+ c_rehash +

+
+

+ is a Perl script + that scans all files in a directory and adds + symbolic links to their hash values. +

+
+

+ openssl +

+
+

+ is a command-line tool for using the various + cryptography functions of OpenSSL's crypto library from + the shell. It can be used for various functions + which are documented in man 1 openssl. +

+
+

+ libcrypto.so +

+
+

+ implements a wide range of cryptographic algorithms + used in various Internet standards. The services + provided by this library are used by the + OpenSSL + implementations of SSL, TLS and S/MIME, and they + have also been used to implement OpenSSH, OpenPGP, and other + cryptographic standards. +

+
+

+ libssl.so +

+
+

+ implements the Transport Layer Security (TLS v1) + protocol. It provides a rich API, documentation on + which can be found by running man 3 ssl. +

+
+
+
+
+
+
+
+
+

+ 6.51. Python-3.7.2 +

+
+
+
+
+

+ The Python 3 package contains the Python development + environment. It is useful for object-oriented programming, + writing scripts, prototyping large programs or developing + entire applications. +

+
+
+
+ Approximate build time: + 1.0 SBU +
+
+ Required disk space: + 392 MB +
+
+
+
+
+

+ 6.51.1. Installation of Python 3 +

+

+ Prepare Python for compilation: +

+
+./configure --prefix=/usr       \
+            --enable-shared     \
+            --with-system-expat \
+            --with-system-ffi   \
+            --with-ensurepip=yes
+
+
+

+ The meaning of the configure options: +

+
+
+ --with-system-expat +
+
+

+ This switch enables linking against system version of + Expat. +

+
+
+ --with-system-ffi +
+
+

+ This switch enables linking against system version of + libffi. +

+
+
+ --with-ensurepip=yes +
+
+

+ This switch enables building pip and setuptools packaging + programs. +

+
+
+
+

+ Compile the package: +

+
+make
+
+

+ The test suite requires TK and and X Windows session and + cannot be run until Python 3 is reinstalled in BLFS. +

+

+ Install the package: +

+
+make install
+chmod -v 755 /usr/lib/libpython3.7m.so
+chmod -v 755 /usr/lib/libpython3.so
+
+
+

+ The meaning of the install commands: +

+
+
+ chmod -v + 755 /usr/lib/libpython3.{7m.,}so +
+
+

+ Fix permissions for libraries to be consistent with + other libraries. +

+
+
+
+

+ If desired, install the preformatted documentation: +

+
+install -v -dm755 /usr/share/doc/python-3.7.2/html 
+
+tar --strip-components=1  \
+    --no-same-owner       \
+    --no-same-permissions \
+    -C /usr/share/doc/python-3.7.2/html \
+    -xvf ../python-3.7.2-docs-html.tar.bz2
+
+
+

+ The meaning of the documentation install + commands: +

+
+
+ --no-same-owner and + --no-same-permissions +
+
+

+ Ensure the installed files have the correct ownership + and permissions. Without these options, using + tar will install the + package files with the upstream creator's values. +

+
+
+
+
+
+

+ 6.51.2. + Contents of Python 3 +

+
+
+
+ Installed Programs: + 2to3, idle3, pydoc3, python3, + python3-config, pyvenv +
+
+ Installed Library: + libpython3.7m.so and + libpython3.so +
+
+ Installed Directories: + /usr/include/python3.7m, + /usr/lib/python3 and /usr/share/doc/python-3.7.2 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ 2to3 +

+
+

+ is a Python + program that reads Python + 2.x source code and applies a series of + fixes to transform it into valid Python 3.x code. +

+
+

+ idle3 +

+
+

+ is a wrapper script that opens a Python aware GUI editor. For + this script to run, you must have installed + Tk before Python + so that the Tkinter Python module is built. +

+
+

+ pydoc3 +

+
+

+ is the Python + documentation tool. +

+
+

+ python3 +

+
+

+ is an interpreted, interactive, object-oriented + programming language. +

+
+

+ pyvenv +

+
+

+ creates virtual Python environments in one or + more target directories. +

+
+
+
+
+
+
+
+
+

+ 6.52. Ninja-1.9.0 +

+
+
+
+
+

+ Ninja is a small build system with a focus on speed. +

+
+
+
+ Approximate build time: + 0.2 SBU +
+
+ Required disk space: + 65 MB +
+
+
+
+
+

+ 6.52.1. Installation of Ninja +

+

+ When run, ninja normally runs a maximum number of processes + in parallel. By default this is the number of cores on the + system plus two. In some cases this can overheat a CPU or run + a system out of memory. If run from the command line, passing + a -jN parameter will limit the number of parallel processes, + but some packages embed the execution of ninja and do not + pass a -j parameter. +

+

+ Using the optional + procedure below allows a user to limit the number of parallel + processes via an environment variable, NINJAJOBS. + For example, + setting: +

+
+export NINJAJOBS=4
+
+

+ will limit ninja to four parallel processes. +

+

+ If desired, add the capability to use the environment + variable NINJAJOBS by running: +

+
+sed -i '/int Guess/a \
+  int   j = 0;\
+  char* jobs = getenv( "NINJAJOBS" );\
+  if ( jobs != NULL ) j = atoi( jobs );\
+  if ( j > 0 ) return j;\
+' src/ninja.cc
+
+

+ Build Ninja with: +

+
+python3 configure.py --bootstrap
+
+
+

+ The meaning of the build option: +

+
+
+ --bootstrap +
+
+

+ This parameter forces ninja to rebuild itself for the + current system. +

+
+
+
+

+ To test the results, issue: +

+
+python3 configure.py
+./ninja ninja_test
+./ninja_test --gtest_filter=-SubprocessTest.SetWithLots
+
+

+ Install the package: +

+
+install -vm755 ninja /usr/bin/
+install -vDm644 misc/bash-completion /usr/share/bash-completion/completions/ninja
+install -vDm644 misc/zsh-completion  /usr/share/zsh/site-functions/_ninja
+
+
+
+

+ 6.52.2. + Contents of Ninja +

+
+
+
+ Installed programs: + ninja +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ ninja +

+
+

+ is the Ninja build system. +

+
+
+
+
+
+
+
+
+

+ 6.53. Meson-0.49.2 +

+
+
+
+
+

+ Meson is an open source build system meant to be both + extremely fast, and, even more importantly, as user friendly + as possible. +

+
+
+
+ Approximate build time: + less than 0.1 SBU +
+
+ Required disk space: + 24 MB +
+
+
+
+
+

+ 6.53.1. Installation of Meson +

+

+ Compile Meson with the following command: +

+
+python3 setup.py build
+
+

+ This package does not come with a test suite. +

+

+ Install the package: +

+
+python3 setup.py install --root=dest
+cp -rv dest/* /
+
+
+

+ The meaning of the install parameters: +

+
+
+ --root=dest +
+
+

+ By default python3 + setup.py install installs various files + (such as man pages) into Python Eggs. With a specified + root location, setup.py installs + these files into a standard hierarchy. Then we can just + copy the hierarchy so the files will be in the standard + location. +

+
+
+
+
+
+

+ 6.53.2. + Contents of Meson +

+
+
+
+ Installed programs: + meson, mesonconf, mesonintrospect, + mesontest, and wraptool +
+
+ Installed directory: + /usr/lib/python3.7/site-packages/meson-0.49.2-py3.7.egg +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ meson +

+
+

+ A high productivity build system +

+
+

+ mesonconf +

+
+

+ A tool to configure Meson builds +

+
+

+ mesonintrospect +

+
+

+ A tool to extract information about a Meson build +

+
+

+ mesontest +

+
+

+ Test tool for the Meson build system +

+
+

+ wraptool +

+
+

+ Source dependency downloader +

+
+
+
+
+
+
+
+
+

+ 6.54. Coreutils-8.30 +

+
+
+
+
+

+ The Coreutils package contains utilities for showing and + setting the basic system characteristics. +

+
+
+
+ Approximate build time: + 2.6 SBU +
+
+ Required disk space: + 190 MB +
+
+
+
+
+

+ 6.54.1. Installation of Coreutils +

+

+ POSIX requires that programs from Coreutils recognize + character boundaries correctly even in multibyte locales. The + following patch fixes this non-compliance and other + internationalization-related bugs. +

+
+patch -Np1 -i ../coreutils-8.30-i18n-1.patch
+
+
+

+ Note +

+

+ In the past, many bugs were found in this patch. When + reporting new bugs to Coreutils maintainers, please check + first if they are reproducible without this patch. +

+
+

+ Suppress a test which on some machines can loop forever: +

+
+sed -i '/test.lock/s/^/#/' gnulib-tests/gnulib.mk
+
+

+ Now prepare Coreutils for compilation: +

+
+autoreconf -fiv
+FORCE_UNSAFE_CONFIGURE=1 ./configure \
+            --prefix=/usr            \
+            --enable-no-install-program=kill,uptime
+
+
+

+ The meaning of the configure options: +

+
+
+ autoreconf +
+
+

+ This command updates generated configuration files + consistent with the latest version of automake. +

+
+
+ FORCE_UNSAFE_CONFIGURE=1 +
+
+

+ This environment variable allows the package to be + built as the root user. +

+
+
+ --enable-no-install-program=kill,uptime +
+
+

+ The purpose of this switch is to prevent Coreutils from + installing binaries that will be installed by other + packages later. +

+
+
+
+

+ Compile the package: +

+
+FORCE_UNSAFE_CONFIGURE=1 make
+
+

+ Skip down to Install the package if not + running the test suite. +

+

+ Now the test suite is ready to be run. First, run the tests + that are meant to be run as user root: +

+
+make NON_ROOT_USERNAME=nobody check-root
+
+

+ We're going to run the remainder of the tests as the + nobody user. Certain tests, + however, require that the user be a member of more than one + group. So that these tests are not skipped we'll add a + temporary group and make the user nobody a part of it: +

+
+echo "dummy:x:1000:nobody" >> /etc/group
+
+

+ Fix some of the permissions so that the non-root user can + compile and run the tests: +

+
+chown -Rv nobody . 
+
+

+ Now run the tests. Make sure the PATH in the su environment includes + /tools/bin. +

+
+su nobody -s /bin/bash \
+          -c "PATH=$PATH make RUN_EXPENSIVE_TESTS=yes check"
+
+

+ The test program test-getlogin is known to fail in a + partially built system environment like the chroot + environment here, but passes if run at the end of this + chapter. The test program tty.sh is also known to fail. +

+

+ Remove the temporary group: +

+
+sed -i '/dummy/d' /etc/group
+
+

+ Install the package: +

+
+make install
+
+

+ Move programs to the locations specified by the FHS: +

+
+mv -v /usr/bin/{cat,chgrp,chmod,chown,cp,date,dd,df,echo} /bin
+mv -v /usr/bin/{false,ln,ls,mkdir,mknod,mv,pwd,rm} /bin
+mv -v /usr/bin/{rmdir,stty,sync,true,uname} /bin
+mv -v /usr/bin/chroot /usr/sbin
+mv -v /usr/share/man/man1/chroot.1 /usr/share/man/man8/chroot.8
+sed -i s/\"1\"/\"8\"/1 /usr/share/man/man8/chroot.8
+
+

+ Some of the scripts in the LFS-Bootscripts package depend on + head, + nice, + sleep, and + touch. As + /usr may not be available + during the early and late stages of booting, those binaries + need to be on the root partition to maintain FHS compliance: +

+
+mv -v /usr/bin/{head,nice,sleep,touch} /bin
+
+
+
+

+ 6.54.2. Contents of Coreutils +

+
+
+
+ Installed programs: + [, base32, base64, basename, cat, + chcon, chgrp, chmod, chown, chroot, cksum, comm, cp, + csplit, cut, date, dd, df, dir, dircolors, dirname, du, + echo, env, expand, expr, factor, false, fmt, fold, + groups, head, hostid, id, install, join, link, ln, + logname, ls, md5sum, mkdir, mkfifo, mknod, mktemp, mv, + nice, nl, nohup, nproc, numfmt, od, paste, pathchk, + pinky, pr, printenv, printf, ptx, pwd, readlink, + realpath, rm, rmdir, runcon, seq, sha1sum, sha224sum, + sha256sum, sha384sum, sha512sum, shred, shuf, sleep, + sort, split, stat, stdbuf, stty, sum, sync, tac, tail, + tee, test, timeout, touch, tr, true, truncate, tsort, + tty, uname, unexpand, uniq, unlink, users, vdir, wc, who, + whoami, and yes +
+
+ Installed library: + libstdbuf.so +
+
+ Installed directory: + /usr/libexec/coreutils +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ base32 +

+
+

+ Encodes and decodes data according to the base32 + specification (RFC 4648) +

+
+

+ base64 +

+
+

+ Encodes and decodes data according to the base64 + specification (RFC 4648) +

+
+

+ basename +

+
+

+ Strips any path and a given suffix from a file name +

+
+

+ cat +

+
+

+ Concatenates files to standard output +

+
+

+ chcon +

+
+

+ Changes security context for files and directories +

+
+

+ chgrp +

+
+

+ Changes the group ownership of files and + directories +

+
+

+ chmod +

+
+

+ Changes the permissions of each file to the given + mode; the mode can be either a symbolic + representation of the changes to make or an octal + number representing the new permissions +

+
+

+ chown +

+
+

+ Changes the user and/or group ownership of files + and directories +

+
+

+ chroot +

+
+

+ Runs a command with the specified directory as the + / directory +

+
+

+ cksum +

+
+

+ Prints the Cyclic Redundancy Check (CRC) checksum + and the byte counts of each specified file +

+
+

+ comm +

+
+

+ Compares two sorted files, outputting in three + columns the lines that are unique and the lines + that are common +

+
+

+ cp +

+
+

+ Copies files +

+
+

+ csplit +

+
+

+ Splits a given file into several new files, + separating them according to given patterns or line + numbers and outputting the byte count of each new + file +

+
+

+ cut +

+
+

+ Prints sections of lines, selecting the parts + according to given fields or positions +

+
+

+ date +

+
+

+ Displays the current time in the given format, or + sets the system date +

+
+

+ dd +

+
+

+ Copies a file using the given block size and count, + while optionally performing conversions on it +

+
+

+ df +

+
+

+ Reports the amount of disk space available (and + used) on all mounted file systems, or only on the + file systems holding the selected files +

+
+

+ dir +

+
+

+ Lists the contents of each given directory (the + same as the ls command) +

+
+

+ dircolors +

+
+

+ Outputs commands to set the LS_COLOR environment variable to + change the color scheme used by ls +

+
+

+ dirname +

+
+

+ Strips the non-directory suffix from a file name +

+
+

+ du +

+
+

+ Reports the amount of disk space used by the + current directory, by each of the given directories + (including all subdirectories) or by each of the + given files +

+
+

+ echo +

+
+

+ Displays the given strings +

+
+

+ env +

+
+

+ Runs a command in a modified environment +

+
+

+ expand +

+
+

+ Converts tabs to spaces +

+
+

+ expr +

+
+

+ Evaluates expressions +

+
+

+ factor +

+
+

+ Prints the prime factors of all specified integer + numbers +

+
+

+ false +

+
+

+ Does nothing, unsuccessfully; it always exits with + a status code indicating failure +

+
+

+ fmt +

+
+

+ Reformats the paragraphs in the given files +

+
+

+ fold +

+
+

+ Wraps the lines in the given files +

+
+

+ groups +

+
+

+ Reports a user's group memberships +

+
+

+ head +

+
+

+ Prints the first ten lines (or the given number of + lines) of each given file +

+
+

+ hostid +

+
+

+ Reports the numeric identifier (in hexadecimal) of + the host +

+
+

+ id +

+
+

+ Reports the effective user ID, group ID, and group + memberships of the current user or specified user +

+
+

+ install +

+
+

+ Copies files while setting their permission modes + and, if possible, their owner and group +

+
+

+ join +

+
+

+ Joins the lines that have identical join fields + from two separate files +

+
+

+ link +

+
+

+ Creates a hard link with the given name to a file +

+
+

+ ln +

+
+

+ Makes hard links or soft (symbolic) links between + files +

+
+

+ logname +

+
+

+ Reports the current user's login name +

+
+

+ ls +

+
+

+ Lists the contents of each given directory +

+
+

+ md5sum +

+
+

+ Reports or checks Message Digest 5 (MD5) checksums +

+
+

+ mkdir +

+
+

+ Creates directories with the given names +

+
+

+ mkfifo +

+
+

+ Creates First-In, First-Outs (FIFOs), a "named + pipe" in UNIX parlance, with the given names +

+
+

+ mknod +

+
+

+ Creates device nodes with the given names; a device + node is a character special file, a block special + file, or a FIFO +

+
+

+ mktemp +

+
+

+ Creates temporary files in a secure manner; it is + used in scripts +

+
+

+ mv +

+
+

+ Moves or renames files or directories +

+
+

+ nice +

+
+

+ Runs a program with modified scheduling priority +

+
+

+ nl +

+
+

+ Numbers the lines from the given files +

+
+

+ nohup +

+
+

+ Runs a command immune to hangups, with its output + redirected to a log file +

+
+

+ nproc +

+
+

+ Prints the number of processing units available to + a process +

+
+

+ numfmt +

+
+

+ Converts numbers to or from human-readable strings +

+
+

+ od +

+
+

+ Dumps files in octal and other formats +

+
+

+ paste +

+
+

+ Merges the given files, joining sequentially + corresponding lines side by side, separated by tab + characters +

+
+

+ pathchk +

+
+

+ Checks if file names are valid or portable +

+
+

+ pinky +

+
+

+ Is a lightweight finger client; it reports some + information about the given users +

+
+

+ pr +

+
+

+ Paginates and columnates files for printing +

+
+

+ printenv +

+
+

+ Prints the environment +

+
+

+ printf +

+
+

+ Prints the given arguments according to the given + format, much like the C printf function +

+
+

+ ptx +

+
+

+ Produces a permuted index from the contents of the + given files, with each keyword in its context +

+
+

+ pwd +

+
+

+ Reports the name of the current working directory +

+
+

+ readlink +

+
+

+ Reports the value of the given symbolic link +

+
+

+ realpath +

+
+

+ Prints the resolved path +

+
+

+ rm +

+
+

+ Removes files or directories +

+
+

+ rmdir +

+
+

+ Removes directories if they are empty +

+
+

+ runcon +

+
+

+ Runs a command with specified security context +

+
+

+ seq +

+
+

+ Prints a sequence of numbers within a given range + and with a given increment +

+
+

+ sha1sum +

+
+

+ Prints or checks 160-bit Secure Hash Algorithm 1 + (SHA1) checksums +

+
+

+ sha224sum +

+
+

+ Prints or checks 224-bit Secure Hash Algorithm + checksums +

+
+

+ sha256sum +

+
+

+ Prints or checks 256-bit Secure Hash Algorithm + checksums +

+
+

+ sha384sum +

+
+

+ Prints or checks 384-bit Secure Hash Algorithm + checksums +

+
+

+ sha512sum +

+
+

+ Prints or checks 512-bit Secure Hash Algorithm + checksums +

+
+

+ shred +

+
+

+ Overwrites the given files repeatedly with complex + patterns, making it difficult to recover the data +

+
+

+ shuf +

+
+

+ Shuffles lines of text +

+
+

+ sleep +

+
+

+ Pauses for the given amount of time +

+
+

+ sort +

+
+

+ Sorts the lines from the given files +

+
+

+ split +

+
+

+ Splits the given file into pieces, by size or by + number of lines +

+
+

+ stat +

+
+

+ Displays file or filesystem status +

+
+

+ stdbuf +

+
+

+ Runs commands with altered buffering operations for + its standard streams +

+
+

+ stty +

+
+

+ Sets or reports terminal line settings +

+
+

+ sum +

+
+

+ Prints checksum and block counts for each given + file +

+
+

+ sync +

+
+

+ Flushes file system buffers; it forces changed + blocks to disk and updates the super block +

+
+

+ tac +

+
+

+ Concatenates the given files in reverse +

+
+

+ tail +

+
+

+ Prints the last ten lines (or the given number of + lines) of each given file +

+
+

+ tee +

+
+

+ Reads from standard input while writing both to + standard output and to the given files +

+
+

+ test +

+
+

+ Compares values and checks file types +

+
+

+ timeout +

+
+

+ Runs a command with a time limit +

+
+

+ touch +

+
+

+ Changes file timestamps, setting the access and + modification times of the given files to the + current time; files that do not exist are created + with zero length +

+
+

+ tr +

+
+

+ Translates, squeezes, and deletes the given + characters from standard input +

+
+

+ true +

+
+

+ Does nothing, successfully; it always exits with a + status code indicating success +

+
+

+ truncate +

+
+

+ Shrinks or expands a file to the specified size +

+
+

+ tsort +

+
+

+ Performs a topological sort; it writes a completely + ordered list according to the partial ordering in a + given file +

+
+

+ tty +

+
+

+ Reports the file name of the terminal connected to + standard input +

+
+

+ uname +

+
+

+ Reports system information +

+
+

+ unexpand +

+
+

+ Converts spaces to tabs +

+
+

+ uniq +

+
+

+ Discards all but one of successive identical lines +

+
+

+ unlink +

+
+

+ Removes the given file +

+
+

+ users +

+
+

+ Reports the names of the users currently logged on +

+
+

+ vdir +

+
+

+ Is the same as ls + -l +

+
+

+ wc +

+
+

+ Reports the number of lines, words, and bytes for + each given file, as well as a total line when more + than one file is given +

+
+

+ who +

+
+

+ Reports who is logged on +

+
+

+ whoami +

+
+

+ Reports the user name associated with the current + effective user ID +

+
+

+ yes +

+
+

+ Repeatedly outputs y or a given string + until killed +

+
+

+ libstdbuf +

+
+

+ Library used by stdbuf +

+
+
+
+
+
+
+
+
+

+ 6.55. Check-0.12.0 +

+
+
+
+
+

+ Check is a unit testing framework for C. +

+
+
+
+ Approximate build time: + 0.1 SBU (about 3.0 SBU with + tests) +
+
+ Required disk space: + 12 MB +
+
+
+
+
+

+ 6.55.1. Installation of Check +

+

+ Prepare Check for compilation: +

+
+./configure --prefix=/usr
+
+

+ Build the package: +

+
+make
+
+

+ Compilation is now complete. To run the Check test suite, + issue the following command: +

+
+make check
+
+

+ Note that the Check test suite may take a relatively long (up + to 4 SBU) time. +

+

+ Install the package and fix a script: +

+
+make install
+sed -i '1 s/tools/usr/' /usr/bin/checkmk
+
+
+
+

+ 6.55.2. + Contents of Check +

+
+
+
+ Installed program: + checkmk +
+
+ Installed library: + libcheck.{a,so} +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ checkmk +

+
+

+ Awk script for generating C unit tests for use with + the Check unit testing framework +

+
+

+ libcheck.{a,so} +

+
+

+ Contains functions that allow Check to be called + from a test program +

+
+
+
+
+
+
+
+
+

+ 6.56. Diffutils-3.7 +

+
+
+
+
+

+ The Diffutils package contains programs that show the + differences between files or directories. +

+
+
+
+ Approximate build time: + 0.3 SBU +
+
+ Required disk space: + 36 MB +
+
+
+
+
+

+ 6.56.1. Installation of Diffutils +

+

+ Prepare Diffutils for compilation: +

+
+./configure --prefix=/usr
+
+

+ Compile the package: +

+
+make
+
+

+ To test the results, issue: +

+
+make check
+
+

+ Install the package: +

+
+make install
+
+
+
+

+ 6.56.2. Contents of Diffutils +

+
+
+
+ Installed programs: + cmp, diff, diff3, and sdiff +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + +
+

+ cmp +

+
+

+ Compares two files and reports whether or in which + bytes they differ +

+
+

+ diff +

+
+

+ Compares two files or directories and reports which + lines in the files differ +

+
+

+ diff3 +

+
+

+ Compares three files line by line +

+
+

+ sdiff +

+
+

+ Merges two files and interactively outputs the + results +

+
+
+
+
+
+
+
+
+

+ 6.57. Gawk-4.2.1 +

+
+
+
+
+

+ The Gawk package contains programs for manipulating text + files. +

+
+
+
+ Approximate build time: + 0.3 SBU +
+
+ Required disk space: + 44 MB +
+
+
+
+
+

+ 6.57.1. Installation of Gawk +

+

+ First, ensure some unneeded files are not installed: +

+
+sed -i 's/extras//' Makefile.in
+
+

+ Prepare Gawk for compilation: +

+
+./configure --prefix=/usr
+
+

+ Compile the package: +

+
+make
+
+

+ To test the results, issue: +

+
+make check
+
+

+ Install the package: +

+
+make install
+
+

+ If desired, install the documentation: +

+
+mkdir -v /usr/share/doc/gawk-4.2.1
+cp    -v doc/{awkforai.txt,*.{eps,pdf,jpg}} /usr/share/doc/gawk-4.2.1
+
+
+
+

+ 6.57.2. + Contents of Gawk +

+
+
+
+ Installed programs: + awk (link to gawk), gawk, and + awk-4.2.1 +
+
+ Installed libraries: + filefuncs.so, fnmatch.so, fork.so, + inplace.so, ordchr.so, readdir.so, readfile.so, + revoutput.so, revtwoway.so, rwarray.so, testext.so, and + time.so +
+
+ Installed directories: + /usr/lib/gawk, /usr/libexec/awk, + /usr/share/awk, and /usr/share/doc/gawk-4.2.1 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + +
+

+ awk +

+
+

+ A link to gawk +

+
+

+ gawk +

+
+

+ A program for manipulating text files; it is the + GNU implementation of awk +

+
+

+ gawk-4.2.1 +

+
+

+ A hard link to gawk +

+
+
+
+
+
+
+
+
+

+ 6.58. Findutils-4.6.0 +

+
+
+
+
+

+ The Findutils package contains programs to find files. These + programs are provided to recursively search through a + directory tree and to create, maintain, and search a database + (often faster than the recursive find, but unreliable if the + database has not been recently updated). +

+
+
+
+ Approximate build time: + 0.6 SBU +
+
+ Required disk space: + 51 MB +
+
+
+
+
+

+ 6.58.1. Installation of Findutils +

+

+ First, suppress a test which on some machines can loop + forever: +

+
+sed -i 's/test-lock..EXEEXT.//' tests/Makefile.in
+
+

+ Next, make some fixes required by glibc-2.28 and later: +

+
+sed -i 's/IO_ftrylockfile/IO_EOF_SEEN/' gl/lib/*.c
+sed -i '/unistd/a #include <sys/sysmacros.h>' gl/lib/mountlist.c
+echo "#define _IO_IN_BACKUP 0x100" >> gl/lib/stdio-impl.h
+
+

+ Prepare Findutils for compilation: +

+
+./configure --prefix=/usr --localstatedir=/var/lib/locate
+
+
+

+ The meaning of the configure options: +

+
+
+ --localstatedir +
+
+

+ This option changes the location of the locate database to be + in /var/lib/locate, which + is FHS-compliant. +

+
+
+
+

+ Compile the package: +

+
+make
+
+

+ To test the results, issue: +

+
+make check
+
+

+ Install the package: +

+
+make install
+
+

+ Some of the scripts in the LFS-Bootscripts package depend on + find. As + /usr may not be available + during the early stages of booting, this program needs to be + on the root partition. The updatedb script also needs + to be modified to correct an explicit path: +

+
+mv -v /usr/bin/find /bin
+sed -i 's|find:=${BINDIR}|find:=/bin|' /usr/bin/updatedb
+
+
+
+

+ 6.58.2. Contents of Findutils +

+
+
+
+ Installed programs: + find, locate, updatedb, and + xargs +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + +
+

+ find +

+
+

+ Searches given directory trees for files matching + the specified criteria +

+
+

+ locate +

+
+

+ Searches through a database of file names and + reports the names that contain a given string or + match a given pattern +

+
+

+ updatedb +

+
+

+ Updates the locate database; + it scans the entire file system (including other + file systems that are currently mounted, unless + told not to) and puts every file name it finds into + the database +

+
+

+ xargs +

+
+

+ Can be used to apply a given command to a list of + files +

+
+
+
+
+
+
+
+
+

+ 6.59. Groff-1.22.4 +

+
+
+
+
+

+ The Groff package contains programs for processing and + formatting text. +

+
+
+
+ Approximate build time: + 0.4 SBU +
+
+ Required disk space: + 94 MB +
+
+
+
+
+

+ 6.59.1. Installation of Groff +

+

+ Groff expects the environment variable PAGE to contain the default paper size. For + users in the United States, PAGE=letter is appropriate. + Elsewhere, PAGE=A4 + may be more suitable. While the default paper size is + configured during compilation, it can be overridden later by + echoing either A4 or letter to the /etc/papersize file. +

+

+ Prepare Groff for compilation: +

+
+PAGE=<paper_size> ./configure --prefix=/usr
+
+

+ This package does not support parallel build. Compile the + package: +

+
+make -j1
+
+

+ This package does not come with a test suite. +

+

+ Install the package: +

+
+make install
+
+
+
+

+ 6.59.2. + Contents of Groff +

+
+
+
+ Installed programs: + addftinfo, afmtodit, chem, eqn, + eqn2graph, gdiffmk, glilypond, gperl, gpinyin, + grap2graph, grn, grodvi, groff, groffer, grog, grolbp, + grolj4, gropdf, grops, grotty, hpftodit, indxbib, lkbib, + lookbib, mmroff, neqn, nroff, pdfmom, pdfroff, pfbtops, + pic, pic2graph, post-grohtml, preconv, pre-grohtml, + refer, roff2dvi, roff2html, roff2pdf, roff2ps, roff2text, + roff2x, soelim, tbl, tfmtodit, and troff +
+
+ Installed directories: + /usr/lib/groff and + /usr/share/doc/groff-1.22.4, /usr/share/groff +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ addftinfo +

+
+

+ Reads a troff font file and adds some additional + font-metric information that is used by the + groff + system +

+
+

+ afmtodit +

+
+

+ Creates a font file for use with groff and + grops +

+
+

+ chem +

+
+

+ Groff preprocessor for producing chemical structure + diagrams +

+
+

+ eqn +

+
+

+ Compiles descriptions of equations embedded within + troff input files into commands that are understood + by troff +

+
+

+ eqn2graph +

+
+

+ Converts a troff EQN (equation) into a cropped + image +

+
+

+ gdiffmk +

+
+

+ Marks differences between groff/nroff/troff files +

+
+

+ glilypond +

+
+

+ Transforms sheet music written in the lilypond + language into the groff language +

+
+

+ gperl +

+
+

+ Preprocesor for groff, allowing addition of perl + code into groff files +

+
+

+ gpinyin +

+
+

+ Preprocesor for groff, allowing addition of Chinese + European-like language Pinyin into groff files. +

+
+

+ grap2graph +

+
+

+ Converts a grap diagram into a cropped bitmap image +

+
+

+ grn +

+
+

+ A groff + preprocessor for gremlin files +

+
+

+ grodvi +

+
+

+ A driver for groff that + produces TeX dvi format +

+
+

+ groff +

+
+

+ A front-end to the groff document formatting + system; normally, it runs the troff program and + a post-processor appropriate for the selected + device +

+
+

+ groffer +

+
+

+ Displays groff files and man pages on X and tty + terminals +

+
+

+ grog +

+
+

+ Reads files and guesses which of the groff options + -e, -man, -me, -mm, -ms, -p, -s, + and -t are required for + printing files, and reports the groff command + including those options +

+
+

+ grolbp +

+
+

+ Is a groff driver for + Canon CAPSL printers (LBP-4 and LBP-8 series laser + printers) +

+
+

+ grolj4 +

+
+

+ Is a driver for groff that + produces output in PCL5 format suitable for an HP + LaserJet 4 printer +

+
+

+ gropdf +

+
+

+ Translates the output of GNU troff to PDF +

+
+

+ grops +

+
+

+ Translates the output of GNU troff to + PostScript +

+
+

+ grotty +

+
+

+ Translates the output of GNU troff into a form + suitable for typewriter-like devices +

+
+

+ hpftodit +

+
+

+ Creates a font file for use with groff -Tlj4 from + an HP-tagged font metric file +

+
+

+ indxbib +

+
+

+ Creates an inverted index for the bibliographic + databases with a specified file for use with + refer, + lookbib, and + lkbib +

+
+

+ lkbib +

+
+

+ Searches bibliographic databases for references + that contain specified keys and reports any + references found +

+
+

+ lookbib +

+
+

+ Prints a prompt on the standard error (unless the + standard input is not a terminal), reads a line + containing a set of keywords from the standard + input, searches the bibliographic databases in a + specified file for references containing those + keywords, prints any references found on the + standard output, and repeats this process until the + end of input +

+
+

+ mmroff +

+
+

+ A simple preprocessor for groff +

+
+

+ neqn +

+
+

+ Formats equations for American Standard Code for + Information Interchange (ASCII) output +

+
+

+ nroff +

+
+

+ A script that emulates the nroff command + using groff +

+
+

+ pdfmom +

+
+

+ Is a wrapper around groff that facilitates the + production of PDF documents from files formatted + with the mom macros. +

+
+

+ pdfroff +

+
+

+ Creates pdf documents using groff +

+
+

+ pfbtops +

+
+

+ Translates a PostScript font in .pfb format to ASCII +

+
+

+ pic +

+
+

+ Compiles descriptions of pictures embedded within + troff or TeX input files into commands understood + by TeX or troff +

+
+

+ pic2graph +

+
+

+ Converts a PIC diagram into a cropped image +

+
+

+ post-grohtml +

+
+

+ Translates the output of GNU troff to HTML +

+
+

+ preconv +

+
+

+ Converts encoding of input files to something GNU + troff + understands +

+
+

+ pre-grohtml +

+
+

+ Translates the output of GNU troff to HTML +

+
+

+ refer +

+
+

+ Copies the contents of a file to the standard + output, except that lines between .[ and .] are interpreted as + citations, and lines between .R1 and .R2 are interpreted as + commands for how citations are to be processed +

+
+

+ roff2dvi +

+
+

+ Transforms roff files into DVI format +

+
+

+ roff2html +

+
+

+ Transforms roff files into HTML format +

+
+

+ roff2pdf +

+
+

+ Transforms roff files into PDFs +

+
+

+ roff2ps +

+
+

+ Transforms roff files into ps files +

+
+

+ roff2text +

+
+

+ Transforms roff files into text files +

+
+

+ roff2x +

+
+

+ Transforms roff files into other formats +

+
+

+ soelim +

+
+

+ Reads files and replaces lines of the form + .so file by + the contents of the mentioned file +

+
+

+ tbl +

+
+

+ Compiles descriptions of tables embedded within + troff input files into commands that are understood + by troff +

+
+

+ tfmtodit +

+
+

+ Creates a font file for use with groff -Tdvi +

+
+

+ troff +

+
+

+ Is highly compatible with Unix troff; it should + usually be invoked using the groff command, + which will also run preprocessors and + post-processors in the appropriate order and with + the appropriate options +

+
+
+
+
+
+
+
+
+

+ 6.60. GRUB-2.02 +

+
+
+
+
+

+ The GRUB package contains the GRand Unified Bootloader. +

+
+
+
+ Approximate build time: + 0.6 SBU +
+
+ Required disk space: + 147 MB +
+
+
+
+
+

+ 6.60.1. Installation of GRUB +

+

+ Prepare GRUB for compilation: +

+
+./configure --prefix=/usr          \
+            --sbindir=/sbin        \
+            --sysconfdir=/etc      \
+            --disable-efiemu       \
+            --disable-werror
+
+
+

+ The meaning of the new configure options: +

+
+
+ --disable-werror +
+
+

+ This allows the build to complete with warnings + introduced by more recent Flex versions. +

+
+
+ --disable-efiemu +
+
+

+ This option minimizes what is built by disabling a + feature and testing programs not needed for LFS. +

+
+
+
+

+ Compile the package: +

+
+make
+
+

+ This package does not come with a test suite. +

+

+ Install the package: +

+
+make install
+mv -v /etc/bash_completion.d/grub /usr/share/bash-completion/completions
+
+

+ Using GRUB to make your LFS system bootable will be discussed + in Section 8.4, + “Using GRUB to Set Up the Boot Process”. +

+
+
+

+ 6.60.2. + Contents of GRUB +

+
+
+
+ Installed programs: + grub-bios-setup, grub-editenv, + grub-file, grub-fstest, grub-glue-efi, grub-install, + grub-kbdcomp, grub-macbless, grub-menulst2cfg, + grub-mkconfig, grub-mkimage, grub-mklayout, + grub-mknetdir, grub-mkpasswd-pbkdf2, grub-mkrelpath, + grub-mkrescue, grub-mkstandalone, grub-ofpathname, + grub-probe, grub-reboot, grub-render-label, + grub-script-check, grub-set-default, grub-sparc64-setup, + and grub-syslinux2cfg +
+
+ Installed directories: + /usr/lib/grub, /etc/grub.d, + /usr/share/grub, and boot/grub (when grub-install is + first run) +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ grub-bios-setup +

+
+

+ Is a helper program for grub-install +

+
+

+ grub-editenv +

+
+

+ A tool to edit the environment block +

+
+

+ grub-file +

+
+

+ Checks if FILE is of the specified type. +

+
+

+ grub-fstest +

+
+

+ Tool to debug the filesystem driver +

+
+

+ grub-glue-efi +

+
+

+ Processes ia32 and amd64 EFI images and glues them + according to Apple format. +

+
+

+ grub-install +

+
+

+ Install GRUB on your drive +

+
+

+ grub-kbdcomp +

+
+

+ Script that converts an xkb layout into one + recognized by GRUB +

+
+

+ grub-macbless +

+
+

+ Mac-style bless on HFS or HFS+ files +

+
+

+ grub-menulst2cfg +

+
+

+ Converts a GRUB Legacy menu.lst into a grub.cfg for use with GRUB 2 +

+
+

+ grub-mkconfig +

+
+

+ Generate a grub config file +

+
+

+ grub-mkimage +

+
+

+ Make a bootable image of GRUB +

+
+

+ grub-mklayout +

+
+

+ Generates a GRUB keyboard layout file +

+
+

+ grub-mknetdir +

+
+

+ Prepares a GRUB netboot directory +

+
+

+ grub-mkpasswd-pbkdf2 +

+
+

+ Generates an encrypted PBKDF2 password for use in + the boot menu +

+
+

+ grub-mkrelpath +

+
+

+ Makes a system pathname relative to its root +

+
+

+ grub-mkrescue +

+
+

+ Make a bootable image of GRUB suitable for a floppy + disk or CDROM/DVD +

+
+

+ grub-mkstandalone +

+
+

+ Generates a standalone image +

+
+

+ grub-ofpathname +

+
+

+ Is a helper program that prints the path of a GRUB + device +

+
+

+ grub-probe +

+
+

+ Probe device information for a given path or device +

+
+

+ grub-reboot +

+
+

+ Sets the default boot entry for GRUB for the next + boot only +

+
+

+ grub-render-label +

+
+

+ Render Apple .disk_label for Apple Macs +

+
+

+ grub-script-check +

+
+

+ Checks GRUB configuration script for syntax errors +

+
+

+ grub-set-default +

+
+

+ Sets the default boot entry for GRUB +

+
+

+ grub-sparc64-setup +

+
+

+ Is a helper program for grub-setup +

+
+

+ grub-syslinux2cfg +

+
+

+ Transform a syslinux config file into grub.cfg + format +

+
+
+
+
+
+
+
+
+

+ 6.61. Less-530 +

+
+
+
+
+

+ The Less package contains a text file viewer. +

+
+
+
+ Approximate build time: + less than 0.1 SBU +
+
+ Required disk space: + 3.9 MB +
+
+
+
+
+

+ 6.61.1. Installation of Less +

+

+ Prepare Less for compilation: +

+
+./configure --prefix=/usr --sysconfdir=/etc
+
+
+

+ The meaning of the configure options: +

+
+
+ --sysconfdir=/etc +
+
+

+ This option tells the programs created by the package + to look in /etc for the + configuration files. +

+
+
+
+

+ Compile the package: +

+
+make
+
+

+ This package does not come with a test suite. +

+

+ Install the package: +

+
+make install
+
+
+
+

+ 6.61.2. + Contents of Less +

+
+
+
+ Installed programs: + less, lessecho, and lesskey +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + +
+

+ less +

+
+

+ A file viewer or pager; it displays the contents of + the given file, letting the user scroll, find + strings, and jump to marks +

+
+

+ lessecho +

+
+

+ Needed to expand meta-characters, such as + * and + ?, in + filenames on Unix systems +

+
+

+ lesskey +

+
+

+ Used to specify the key bindings for less +

+
+
+
+
+
+
+
+
+

+ 6.62. Gzip-1.10 +

+
+
+
+
+

+ The Gzip package contains programs for compressing and + decompressing files. +

+
+
+
+ Approximate build time: + 0.1 SBU +
+
+ Required disk space: + 20 MB +
+
+
+
+
+

+ 6.62.1. Installation of Gzip +

+

+ Prepare Gzip for compilation: +

+
+./configure --prefix=/usr
+
+

+ Compile the package: +

+
+make
+
+

+ To test the results, issue: +

+
+make check
+
+

+ Two tests are known to fail in the LFS environment: + help-version and zmore. +

+

+ Install the package: +

+
+make install
+
+

+ Move a program that needs to be on the root filesystem: +

+
+mv -v /usr/bin/gzip /bin
+
+
+
+

+ 6.62.2. + Contents of Gzip +

+
+
+
+ Installed programs: + gunzip, gzexe, gzip, uncompress + (hard link with gunzip), zcat, zcmp, zdiff, zegrep, + zfgrep, zforce, zgrep, zless, zmore, and znew +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ gunzip +

+
+

+ Decompresses gzipped files +

+
+

+ gzexe +

+
+

+ Creates self-decompressing executable files +

+
+

+ gzip +

+
+

+ Compresses the given files using Lempel-Ziv (LZ77) + coding +

+
+

+ uncompress +

+
+

+ Decompresses compressed files +

+
+

+ zcat +

+
+

+ Decompresses the given gzipped files to standard + output +

+
+

+ zcmp +

+
+

+ Runs cmp on gzipped + files +

+
+

+ zdiff +

+
+

+ Runs diff on gzipped + files +

+
+

+ zegrep +

+
+

+ Runs egrep on gzipped + files +

+
+

+ zfgrep +

+
+

+ Runs fgrep on gzipped + files +

+
+

+ zforce +

+
+

+ Forces a .gz + extension on all given files that are gzipped + files, so that gzip will not + compress them again; this can be useful when file + names were truncated during a file transfer +

+
+

+ zgrep +

+
+

+ Runs grep on gzipped + files +

+
+

+ zless +

+
+

+ Runs less on gzipped + files +

+
+

+ zmore +

+
+

+ Runs more on gzipped + files +

+
+

+ znew +

+
+

+ Re-compresses files from compress format + to gzip + format—.Z to + .gz +

+
+
+
+
+
+
+
+
+

+ 6.63. IPRoute2-4.20.0 +

+
+
+
+
+

+ The IPRoute2 package contains programs for basic and advanced + IPV4-based networking. +

+
+
+
+ Approximate build time: + 0.2 SBU +
+
+ Required disk space: + 13 MB +
+
+
+
+
+

+ 6.63.1. Installation of IPRoute2 +

+

+ The arpd + program included in this package will not be built since it + is dependent on Berkeley DB, which is not installed in LFS. + However, a directory for arpd and a man page will + still be installed. Prevent this by running the commands + below. If the arpd binary is needed, + instructions for compiling Berkeley DB can be found in the + BLFS Book at + http://www.linuxfromscratch.org/blfs/view/8.4/server/databases.html#db. +

+
+sed -i /ARPD/d Makefile
+rm -fv man/man8/arpd.8
+
+

+ It is also necessary to disable building two modules that + requires + http://www.linuxfromscratch.org/blfs/view/8.4/postlfs/iptables.html. +

+
+sed -i 's/.m_ipt.o//' tc/Makefile
+
+

+ Compile the package: +

+
+make
+
+

+ This package does not have a working test suite. +

+

+ Install the package: +

+
+make DOCDIR=/usr/share/doc/iproute2-4.20.0 install
+
+
+
+

+ 6.63.2. Contents of IPRoute2 +

+
+
+
+ Installed programs: + bridge, ctstat (link to lnstat), + genl, ifcfg, ifstat, ip, lnstat, nstat, routef, routel, + rtacct, rtmon, rtpr, rtstat (link to lnstat), ss, and + tc +
+
+ Installed directories: + /etc/iproute2, /usr/lib/tc, and + /usr/share/doc/iproute2-4.20.0, +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ bridge +

+
+

+ Configures network bridges +

+
+

+ ctstat +

+
+

+ Connection status utility +

+
+

+ genl +

+
+

+ Generic netlink utility frontend +

+
+

+ ifcfg +

+
+

+ A shell script wrapper for the ip command [Note + that it requires the arping and + rdisk + programs from the iputils package found at + http://www.skbuff.net/iputils/.] +

+
+

+ ifstat +

+
+

+ Shows the interface statistics, including the + amount of transmitted and received packets by + interface +

+
+

+ ip +

+
+

+ The main executable. It has several different + functions: +

+

+ ip link <device> + allows users to look at the state of devices and to + make changes +

+

+ ip + addr allows users to look at + addresses and their properties, add new addresses, + and delete old ones +

+

+ ip + neighbor allows users to look at + neighbor bindings and their properties, add new + neighbor entries, and delete old ones +

+

+ ip + rule allows users to look at the + routing policies and change them +

+

+ ip + route allows users to look at the + routing table and change routing table rules +

+

+ ip + tunnel allows users to look at the + IP tunnels and their properties, and change them +

+

+ ip + maddr allows users to look at the + multicast addresses and their properties, and + change them +

+

+ ip + mroute allows users to set, change, + or delete the multicast routing +

+

+ ip + monitor allows users to + continuously monitor the state of devices, + addresses and routes +

+
+

+ lnstat +

+
+

+ Provides Linux network statistics; it is a + generalized and more feature-complete replacement + for the old rtstat program +

+
+

+ nstat +

+
+

+ Shows network statistics +

+
+

+ routef +

+
+

+ A component of ip + route. This is for flushing the + routing tables +

+
+

+ routel +

+
+

+ A component of ip + route. This is for listing the + routing tables +

+
+

+ rtacct +

+
+

+ Displays the contents of /proc/net/rt_acct +

+
+

+ rtmon +

+
+

+ Route monitoring utility +

+
+

+ rtpr +

+
+

+ Converts the output of ip -o back into a + readable form +

+
+

+ rtstat +

+
+

+ Route status utility +

+
+

+ ss +

+
+

+ Similar to the netstat command; + shows active connections +

+
+

+ tc +

+
+

+ Traffic Controlling Executable; this is for Quality + Of Service (QOS) and Class Of Service (COS) + implementations +

+

+ tc + qdisc allows users to setup the + queueing discipline +

+

+ tc + class allows users to setup classes + based on the queuing discipline scheduling +

+

+ tc + estimator allows users to estimate + the network flow into a network +

+

+ tc + filter allows users to setup the + QOS/COS packet filtering +

+

+ tc + policy allows users to setup the + QOS/COS policies +

+
+
+
+
+
+
+
+
+

+ 6.64. Kbd-2.0.4 +

+
+
+
+
+

+ The Kbd package contains key-table files, console fonts, and + keyboard utilities. +

+
+
+
+ Approximate build time: + 0.1 SBU +
+
+ Required disk space: + 30 MB +
+
+
+
+
+

+ 6.64.1. Installation of Kbd +

+

+ The behaviour of the Backspace and Delete keys is not + consistent across the keymaps in the Kbd package. The + following patch fixes this issue for i386 keymaps: +

+
+patch -Np1 -i ../kbd-2.0.4-backspace-1.patch
+
+

+ After patching, the Backspace key generates the character + with code 127, and the Delete key generates a well-known + escape sequence. +

+

+ Remove the redundant resizecons program (it + requires the defunct svgalib to provide the video mode files + - for normal use setfont sizes the console + appropriately) together with its manpage. +

+
+sed -i 's/\(RESIZECONS_PROGS=\)yes/\1no/g' configure
+sed -i 's/resizecons.8 //' docs/man/man8/Makefile.in
+
+

+ Prepare Kbd for compilation: +

+
+PKG_CONFIG_PATH=/tools/lib/pkgconfig ./configure --prefix=/usr --disable-vlock
+
+
+

+ The meaning of the configure options: +

+
+
+ --disable-vlock +
+
+

+ This option prevents the vlock utility from being + built, as it requires the PAM library, which isn't + available in the chroot environment. +

+
+
+
+

+ Compile the package: +

+
+make
+
+

+ To test the results, issue: +

+
+make check
+
+

+ Install the package: +

+
+make install
+
+
+

+ Note +

+

+ For some languages (e.g., Belarusian) the Kbd package + doesn't provide a useful keymap where the stock + by keymap assumes the + ISO-8859-5 encoding, and the CP1251 keymap is normally + used. Users of such languages have to download working + keymaps separately. +

+
+

+ If desired, install the documentation: +

+
+mkdir -v       /usr/share/doc/kbd-2.0.4
+cp -R -v docs/doc/* /usr/share/doc/kbd-2.0.4
+
+
+
+

+ 6.64.2. Contents + of Kbd +

+
+
+
+ Installed programs: + chvt, deallocvt, dumpkeys, + fgconsole, getkeycodes, kbdinfo, kbd_mode, kbdrate, + loadkeys, loadunimap, mapscrn, openvt, psfaddtable (link + to psfxtable), psfgettable (link to psfxtable), + psfstriptable (link to psfxtable), psfxtable, setfont, + setkeycodes, setleds, setmetamode, setvtrgb, + showconsolefont, showkey, unicode_start, and + unicode_stop +
+
+ Installed directories: + /usr/share/consolefonts, + /usr/share/consoletrans, /usr/share/keymaps, + /usr/share/doc/kbd-2.0.4, and /usr/share/unimaps +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ chvt +

+
+

+ Changes the foreground virtual terminal +

+
+

+ deallocvt +

+
+

+ Deallocates unused virtual terminals +

+
+

+ dumpkeys +

+
+

+ Dumps the keyboard translation tables +

+
+

+ fgconsole +

+
+

+ Prints the number of the active virtual terminal +

+
+

+ getkeycodes +

+
+

+ Prints the kernel scancode-to-keycode mapping table +

+
+

+ kbdinfo +

+
+

+ Obtains information about the status of a console +

+
+

+ kbd_mode +

+
+

+ Reports or sets the keyboard mode +

+
+

+ kbdrate +

+
+

+ Sets the keyboard repeat and delay rates +

+
+

+ loadkeys +

+
+

+ Loads the keyboard translation tables +

+
+

+ loadunimap +

+
+

+ Loads the kernel unicode-to-font mapping table +

+
+

+ mapscrn +

+
+

+ An obsolete program that used to load a + user-defined output character mapping table into + the console driver; this is now done by + setfont +

+
+

+ openvt +

+
+

+ Starts a program on a new virtual terminal (VT) +

+
+

+ psfaddtable +

+
+

+ Adds a Unicode character table to a console font +

+
+

+ psfgettable +

+
+

+ Extracts the embedded Unicode character table from + a console font +

+
+

+ psfstriptable +

+
+

+ Removes the embedded Unicode character table from a + console font +

+
+

+ psfxtable +

+
+

+ Handles Unicode character tables for console fonts +

+
+

+ setfont +

+
+

+ Changes the Enhanced Graphic Adapter (EGA) and + Video Graphics Array (VGA) fonts on the console +

+
+

+ setkeycodes +

+
+

+ Loads kernel scancode-to-keycode mapping table + entries; this is useful if there are unusual keys + on the keyboard +

+
+

+ setleds +

+
+

+ Sets the keyboard flags and Light Emitting Diodes + (LEDs) +

+
+

+ setmetamode +

+
+

+ Defines the keyboard meta-key handling +

+
+

+ setvtrgb +

+
+

+ Sets the console color map in all virtual terminals +

+
+

+ showconsolefont +

+
+

+ Shows the current EGA/VGA console screen font +

+
+

+ showkey +

+
+

+ Reports the scancodes, keycodes, and ASCII codes of + the keys pressed on the keyboard +

+
+

+ unicode_start +

+
+

+ Puts the keyboard and console in UNICODE mode + [Don't use this program unless your keymap file is + in the ISO-8859-1 encoding. For other encodings, + this utility produces incorrect results.] +

+
+

+ unicode_stop +

+
+

+ Reverts keyboard and console from UNICODE mode +

+
+
+
+
+
+
+
+
+

+ 6.65. Libpipeline-1.5.1 +

+
+
+
+
+

+ The Libpipeline package contains a library for manipulating + pipelines of subprocesses in a flexible and convenient way. +

+
+
+
+ Approximate build time: + 0.1 SBU +
+
+ Required disk space: + 9.0 MB +
+
+
+
+
+

+ 6.65.1. Installation of Libpipeline +

+

+ Prepare Libpipeline for compilation: +

+
+./configure --prefix=/usr
+
+

+ Compile the package: +

+
+make
+
+

+ To test the results, issue: +

+
+make check
+
+

+ Install the package: +

+
+make install
+
+
+
+

+ 6.65.2. Contents of Libpipeline +

+
+
+
+ Installed library: + libpipeline.so +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ libpipeline +

+
+

+ This library is used to safely construct pipelines + between subprocesses +

+
+
+
+
+
+
+
+
+

+ 6.66. Make-4.2.1 +

+
+
+
+
+

+ The Make package contains a program for compiling packages. +

+
+
+
+ Approximate build time: + 0.5 SBU +
+
+ Required disk space: + 13 MB +
+
+
+
+
+

+ 6.66.1. Installation of Make +

+

+ Again, work around an error caused by glibc-2.27 and later: +

+
+sed -i '211,217 d; 219,229 d; 232 d' glob/glob.c
+
+

+ Prepare Make for compilation: +

+
+./configure --prefix=/usr
+
+

+ Compile the package: +

+
+make
+
+

+ The test suite needs to know where supporting perl files are + located. We use an environment variable to accomplish this. + To test the results, issue: +

+
+make PERL5LIB=$PWD/tests/ check
+
+

+ Install the package: +

+
+make install
+
+
+
+

+ 6.66.2. + Contents of Make +

+
+
+
+ Installed program: + make +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ make +

+
+

+ Automatically determines which pieces of a package + need to be (re)compiled and then issues the + relevant commands +

+
+
+
+
+
+
+
+
+

+ 6.67. Patch-2.7.6 +

+
+
+
+
+

+ The Patch package contains a program for modifying or + creating files by applying a patch + file typically created by the diff program. +

+
+
+
+ Approximate build time: + 0.2 SBU +
+
+ Required disk space: + 13 MB +
+
+
+
+
+

+ 6.67.1. Installation of Patch +

+

+ Prepare Patch for compilation: +

+
+./configure --prefix=/usr
+
+

+ Compile the package: +

+
+make
+
+

+ To test the results, issue: +

+
+make check
+
+

+ Install the package: +

+
+make install
+
+
+
+

+ 6.67.2. + Contents of Patch +

+
+
+
+ Installed program: + patch +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ patch +

+
+

+ Modifies files according to a patch file [A patch + file is normally a difference listing created with + the diff program. By + applying these differences to the original files, + patch + creates the patched versions.] +

+
+
+
+
+
+
+
+
+

+ 6.68. Man-DB-2.8.5 +

+
+
+
+
+

+ The Man-DB package contains programs for finding and viewing + man pages. +

+
+
+
+ Approximate build time: + 0.3 SBU +
+
+ Required disk space: + 36 MB +
+
+
+
+
+

+ 6.68.1. Installation of Man-DB +

+

+ Prepare Man-DB for compilation: +

+
+./configure --prefix=/usr                        \
+            --docdir=/usr/share/doc/man-db-2.8.5 \
+            --sysconfdir=/etc                    \
+            --disable-setuid                     \
+            --enable-cache-owner=bin             \
+            --with-browser=/usr/bin/lynx         \
+            --with-vgrind=/usr/bin/vgrind        \
+            --with-grap=/usr/bin/grap            \
+            --with-systemdtmpfilesdir=           \
+            --with-systemdsystemunitdir=
+
+
+

+ The meaning of the configure options: +

+
+
+ --disable-setuid +
+
+

+ This disables making the man program setuid to + user man. +

+
+
+ --enable-cache-owner=bin +
+
+

+ This makes the system-wide cache files be owned by user + bin. +

+
+
+ --with-... +
+
+

+ These three parameters are used to set some default + programs. lynx is a text-based + web browser (see BLFS for installation instructions), + vgrind + converts program sources to Groff input, and + grap is + useful for typesetting graphs in Groff documents. The + vgrind + and grap + programs are not normally needed for viewing manual + pages. They are not part of LFS or BLFS, but you should + be able to install them yourself after finishing LFS if + you wish to do so. +

+
+
+ --with-systemd... +
+
+

+ These parameters prevent installing unneeded systemd + directories and files. +

+
+
+
+

+ Compile the package: +

+
+make
+
+

+ To test the results, issue: +

+
+make check
+
+

+ Install the package: +

+
+make install
+
+
+
+

+ 6.68.2. Non-English Manual Pages in LFS +

+

+ The following table shows the character set that Man-DB + assumes manual pages installed under /usr/share/man/<ll> will be encoded + with. In addition to this, Man-DB correctly determines if + manual pages installed in that directory are UTF-8 encoded. +

+
+ +

+ Table 6.1. Expected character encoding of + legacy 8-bit manual pages +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Language (code) + + Encoding + + Language (code) + + Encoding +
+ Danish (da) + + ISO-8859-1 + + Croatian (hr) + + ISO-8859-2 +
+ German (de) + + ISO-8859-1 + + Hungarian (hu) + + ISO-8859-2 +
+ English (en) + + ISO-8859-1 + + Japanese (ja) + + EUC-JP +
+ Spanish (es) + + ISO-8859-1 + + Korean (ko) + + EUC-KR +
+ Estonian (et) + + ISO-8859-1 + + Lithuanian (lt) + + ISO-8859-13 +
+ Finnish (fi) + + ISO-8859-1 + + Latvian (lv) + + ISO-8859-13 +
+ French (fr) + + ISO-8859-1 + + Macedonian (mk) + + ISO-8859-5 +
+ Irish (ga) + + ISO-8859-1 + + Polish (pl) + + ISO-8859-2 +
+ Galician (gl) + + ISO-8859-1 + + Romanian (ro) + + ISO-8859-2 +
+ Indonesian (id) + + ISO-8859-1 + + Russian (ru) + + KOI8-R +
+ Icelandic (is) + + ISO-8859-1 + + Slovak (sk) + + ISO-8859-2 +
+ Italian (it) + + ISO-8859-1 + + Slovenian (sl) + + ISO-8859-2 +
+ Norwegian Bokmal (nb) + + ISO-8859-1 + + Serbian Latin (sr@latin) + + ISO-8859-2 +
+ Dutch (nl) + + ISO-8859-1 + + Serbian (sr) + + ISO-8859-5 +
+ Norwegian Nynorsk (nn) + + ISO-8859-1 + + Turkish (tr) + + ISO-8859-9 +
+ Norwegian (no) + + ISO-8859-1 + + Ukrainian (uk) + + KOI8-U +
+ Portuguese (pt) + + ISO-8859-1 + + Vietnamese (vi) + + TCVN5712-1 +
+ Swedish (sv) + + ISO-8859-1 + + Simplified Chinese (zh_CN) + + GBK +
+ Belarusian (be) + + CP1251 + + Simplified Chinese, Singapore (zh_SG) + + GBK +
+ Bulgarian (bg) + + CP1251 + + Traditional Chinese, Hong Kong (zh_HK) + + BIG5HKSCS +
+ Czech (cs) + + ISO-8859-2 + + Traditional Chinese (zh_TW) + + BIG5 +
+ Greek (el) + + ISO-8859-7 + +   + +   +
+
+

+
+

+ Note +

+

+ Manual pages in languages not in the list are not + supported. +

+
+
+
+

+ 6.68.3. + Contents of Man-DB +

+
+
+
+ Installed programs: + accessdb, apropos (link to whatis), + catman, lexgrog, man, mandb, manpath, and whatis +
+
+ Installed libraries: + libman.so and libmandb.so +
+
+ Installed directories: + /usr/lib/man-db, + /usr/lib/tmpfiles.d, /usr/libexec/man-db, and + /usr/share/doc/man-db-2.8.5 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ accessdb +

+
+

+ Dumps the whatis database + contents in human-readable form +

+
+

+ apropos +

+
+

+ Searches the whatis database + and displays the short descriptions of system + commands that contain a given string +

+
+

+ catman +

+
+

+ Creates or updates the pre-formatted manual pages +

+
+

+ lexgrog +

+
+

+ Displays one-line summary information about a given + manual page +

+
+

+ man +

+
+

+ Formats and displays the requested manual page +

+
+

+ mandb +

+
+

+ Creates or updates the whatis database +

+
+

+ manpath +

+
+

+ Displays the contents of $MANPATH or (if $MANPATH + is not set) a suitable search path based on the + settings in man.conf and the user's environment +

+
+

+ whatis +

+
+

+ Searches the whatis database + and displays the short descriptions of system + commands that contain the given keyword as a + separate word +

+
+

+ libman +

+
+

+ Contains run-time support for man +

+
+

+ libmandb +

+
+

+ Contains run-time support for man +

+
+
+
+
+
+
+
+
+

+ 6.69. Tar-1.31 +

+
+
+
+
+

+ The Tar package contains an archiving program. +

+
+
+
+ Approximate build time: + 1.7 SBU +
+
+ Required disk space: + 45 MB +
+
+
+
+
+

+ 6.69.1. Installation of Tar +

+

+ Fix a bug introduced in tar-1.31: +

+
+sed -i 's/abort.*/FALLTHROUGH;/' src/extract.c
+
+

+ Prepare Tar for compilation: +

+
+FORCE_UNSAFE_CONFIGURE=1  \
+./configure --prefix=/usr \
+            --bindir=/bin
+
+
+

+ The meaning of the configure options: +

+
+
+ FORCE_UNSAFE_CONFIGURE=1 +
+
+

+ This forces the test for mknod to be run as root. It is + generally considered dangerous to run this test as the + root user, but as it is being run on a system that has + only been partially built, overriding it is OK. +

+
+
+
+

+ Compile the package: +

+
+make
+
+

+ To test the results (about 3 SBU), issue: +

+
+make check
+
+

+ Install the package: +

+
+make install
+make -C doc install-html docdir=/usr/share/doc/tar-1.31
+
+
+
+

+ 6.69.2. Contents + of Tar +

+
+
+
+ Installed programs: + tar +
+
+ Installed directory: + /usr/share/doc/tar-1.31 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + +
+

+ tar +

+
+

+ Creates, extracts files from, and lists the + contents of archives, also known as tarballs +

+
+
+
+
+
+
+
+
+

+ 6.70. Texinfo-6.5 +

+
+
+
+
+

+ The Texinfo package contains programs for reading, writing, + and converting info pages. +

+
+
+
+ Approximate build time: + 0.9 SBU +
+
+ Required disk space: + 129 MB +
+
+
+
+
+

+ 6.70.1. Installation of Texinfo +

+

+ Fix a file that creates a lot of failures in the regression + checks: +

+
+sed -i '5481,5485 s/({/(\\{/' tp/Texinfo/Parser.pm
+
+

+ Prepare Texinfo for compilation: +

+
+./configure --prefix=/usr --disable-static
+
+
+

+ The meaning of the configure options: +

+
+
+ --disable-static +
+
+

+ In this case, the top-level configure script will + complain that this is an unrecognized option, but the + configure script for XSParagraph recognizes it and uses + it to disable installing a static XSParagraph.a to /usr/lib/texinfo. +

+
+
+
+

+ Compile the package: +

+
+make
+
+

+ To test the results, issue: +

+
+make check
+
+

+ Install the package: +

+
+make install
+
+

+ Optionally, install the components belonging in a TeX + installation: +

+
+make TEXMF=/usr/share/texmf install-tex
+
+
+

+ The meaning of the make parameter: +

+
+
+ TEXMF=/usr/share/texmf +
+
+

+ The TEXMF makefile variable + holds the location of the root of the TeX tree if, for + example, a TeX package will be installed later. +

+
+
+
+

+ The Info documentation system uses a plain text file to hold + its list of menu entries. The file is located at /usr/share/info/dir. Unfortunately, due to + occasional problems in the Makefiles of various packages, it + can sometimes get out of sync with the info pages installed + on the system. If the /usr/share/info/dir file ever needs to be + recreated, the following optional commands will accomplish + the task: +

+
+pushd /usr/share/info
+rm -v dir
+for f in *
+  do install-info $f dir 2>/dev/null
+done
+popd
+
+
+
+

+ 6.70.2. + Contents of Texinfo +

+
+
+
+ Installed programs: + info, install-info, makeinfo (link + to texi2any), pdftexi2dvi, pod2texi, texi2any, texi2dvi, + texi2pdf, and texindex +
+
+ Installed library: + XSParagraph.so +
+
+ Installed directories: + /usr/share/texinfo and + /usr/lib/texinfo +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ info +

+
+

+ Used to read info pages which are similar to man + pages, but often go much deeper than just + explaining all the available command line options + [For example, compare man bison and + info + bison.] +

+
+

+ install-info +

+
+

+ Used to install info pages; it updates entries in + the info index file +

+
+

+ makeinfo +

+
+

+ Translates the given Texinfo source documents into + info pages, plain text, or HTML +

+
+

+ pdftexi2dvi +

+
+

+ Used to format the given Texinfo document into a + Portable Document Format (PDF) file +

+
+

+ pod2texi +

+
+

+ Converts Pod to Texinfo format +

+
+

+ texi2any +

+
+

+ Translate Texinfo source documentation to various + other formats +

+
+

+ texi2dvi +

+
+

+ Used to format the given Texinfo document into a + device-independent file that can be printed +

+
+

+ texi2pdf +

+
+

+ Used to format the given Texinfo document into a + Portable Document Format (PDF) file +

+
+

+ texindex +

+
+

+ Used to sort Texinfo index files +

+
+
+
+
+
+
+
+
+

+ 6.71. Vim-8.1 +

+
+
+
+
+

+ The Vim package contains a powerful text editor. +

+
+
+
+ Approximate build time: + 1.3 SBU +
+
+ Required disk space: + 169 MB +
+
+
+
+

+ Alternatives to Vim +

+

+ If you prefer another editor—such as Emacs, Joe, or + Nano—please refer to + http://www.linuxfromscratch.org/blfs/view/8.4/postlfs/editors.html + for suggested installation instructions. +

+
+
+
+

+ 6.71.1. Installation of Vim +

+

+ First, change the default location of the vimrc configuration file to /etc: +

+
+echo '#define SYS_VIMRC_FILE "/etc/vimrc"' >> src/feature.h
+
+

+ Prepare Vim for compilation: +

+
+./configure --prefix=/usr
+
+

+ Compile the package: +

+
+make
+
+

+ To test the results, issue: +

+
+LANG=en_US.UTF-8 make -j1 test &> vim-test.log
+
+

+ The test suite outputs a lot of binary data to the screen. + This can cause issues with the settings of the current + terminal. The problem can be avoided by redirecting the + output to a log file as shown above. A successful test will + result in the words "ALL DONE" in the log file at completion. +

+

+ Install the package: +

+
+make install
+
+

+ Many users are used to using vi instead of vim. To allow execution of + vim when users + habitually enter vi, create a symlink for + both the binary and the man page in the provided languages: +

+
+ln -sv vim /usr/bin/vi
+for L in  /usr/share/man/{,*/}man1/vim.1; do
+    ln -sv vim.1 $(dirname $L)/vi.1
+done
+
+

+ By default, Vim's documentation is installed in /usr/share/vim. The following symlink + allows the documentation to be accessed via /usr/share/doc/vim-8.1, making it + consistent with the location of documentation for other + packages: +

+
+ln -sv ../vim/vim81/doc /usr/share/doc/vim-8.1
+
+

+ If an X Window System is going to be installed on the LFS + system, it may be necessary to recompile Vim after installing + X. Vim comes with a GUI version of the editor that requires X + and some additional libraries to be installed. For more + information on this process, refer to the Vim documentation + and the Vim installation page in the BLFS book at + http://www.linuxfromscratch.org/blfs/view/8.4/postlfs/vim.html. +

+
+
+

+ 6.71.2. Configuring Vim +

+

+ By default, vim + runs in vi-incompatible mode. This may be new to users who + have used other editors in the past. The nocompatible setting is included + below to highlight the fact that a new behavior is being + used. It also reminds those who would change to compatible mode that it should + be the first setting in the configuration file. This is + necessary because it changes other settings, and overrides + must come after this setting. Create a default vim configuration file by + running the following: +

+
+cat > /etc/vimrc << "EOF"
+" Begin /etc/vimrc
+
+" Ensure defaults are set before customizing settings, not after
+source $VIMRUNTIME/defaults.vim
+let skip_defaults_vim=1 
+
+set nocompatible
+set backspace=2
+set mouse=
+syntax on
+if (&term == "xterm") || (&term == "putty")
+  set background=dark
+endif
+
+" End /etc/vimrc
+EOF
+
+

+ The set nocompatible + setting makes vim behave in a more useful + way (the default) than the vi-compatible manner. Remove the + no to keep the old vi behavior. The set backspace=2 setting allows + backspacing over line breaks, autoindents, and the start of + insert. The syntax on + parameter enables vim's syntax highlighting. The set mouse= setting enables + proper pasting of text with the mouse when working in chroot + or over a remote connection. Finally, the if statement with the set background=dark setting + corrects vim's + guess about the background color of some terminal emulators. + This gives the highlighting a better color scheme for use on + the black background of these programs. +

+

+ Documentation for other available options can be obtained by + running the following command: +

+
+vim -c ':options'
+
+
+

+ Note +

+

+ By default, Vim only installs spell files for the English + language. To install spell files for your preferred + language, download the *.spl + and optionally, the *.sug + files for your language and character encoding from + ftp://ftp.vim.org/pub/vim/runtime/spell/ + and save them to /usr/share/vim/vim81/spell/. +

+

+ To use these spell files, some configuration in + /etc/vimrc is needed, e.g.: +

+
+set spelllang=en,ru
+set spell
+
+

+ For more information, see the appropriate README file + located at the URL above. +

+
+
+
+

+ 6.71.3. Contents + of Vim +

+
+
+
+ Installed programs: + ex (link to vim), rview (link to + vim), rvim (link to vim), vi (link to vim), view (link to + vim), vim, vimdiff (link to vim), vimtutor, and + xxd +
+
+ Installed directory: + /usr/share/vim +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ ex +

+
+

+ Starts vim in ex mode +

+
+

+ rview +

+
+

+ Is a restricted version of view; no shell + commands can be started and view cannot be + suspended +

+
+

+ rvim +

+
+

+ Is a restricted version of vim; no shell + commands can be started and vim cannot be + suspended +

+
+

+ vi +

+
+

+ Link to vim +

+
+

+ view +

+
+

+ Starts vim in read-only + mode +

+
+

+ vim +

+
+

+ Is the editor +

+
+

+ vimdiff +

+
+

+ Edits two or three versions of a file with + vim + and shows differences +

+
+

+ vimtutor +

+
+

+ Teaches the basic keys and commands of vim +

+
+

+ xxd +

+
+

+ Creates a hex dump of the given file; it can also + do the reverse, so it can be used for binary + patching +

+
+
+
+
+
+
+
+
+

+ 6.72. Procps-ng-3.3.15 +

+
+
+
+
+

+ The Procps-ng package contains programs for monitoring + processes. +

+
+
+
+ Approximate build time: + 0.1 SBU +
+
+ Required disk space: + 17 MB +
+
+
+
+
+

+ 6.72.1. Installation of Procps-ng +

+

+ Prepare procps-ng for compilation: +

+
+./configure --prefix=/usr                            \
+            --exec-prefix=                           \
+            --libdir=/usr/lib                        \
+            --docdir=/usr/share/doc/procps-ng-3.3.15 \
+            --disable-static                         \
+            --disable-kill
+
+
+

+ The meaning of the configure options: +

+
+
+ --disable-kill +
+
+

+ This switch disables building the kill command that + will be installed by the Util-linux package. +

+
+
+
+

+ Compile the package: +

+
+make
+
+

+ The test suite needs some custom modifications for LFS. + Remove a test that fails when scripting does not use a tty + device and fix two others. To run the test suite, run the + following commands: +

+
+sed -i -r 's|(pmap_initname)\\\$|\1|' testsuite/pmap.test/pmap.exp
+sed -i '/set tty/d' testsuite/pkill.test/pkill.exp
+rm testsuite/pgrep.test/pgrep.exp
+make check
+
+

+ Install the package: +

+
+make install
+
+

+ Finally, move essential libraries to a location that can be + found if /usr is not mounted. +

+
+mv -v /usr/lib/libprocps.so.* /lib
+ln -sfv ../../lib/$(readlink /usr/lib/libprocps.so) /usr/lib/libprocps.so
+
+
+
+

+ 6.72.2. + Contents of Procps-ng +

+
+
+
+ Installed programs: + free, pgrep, pidof, pkill, pmap, + ps, pwdx, slabtop, sysctl, tload, top, uptime, vmstat, w, + and watch +
+
+ Installed library: + libprocps.so +
+
+ Installed directories: + /usr/include/proc and + /usr/share/doc/procps-ng-3.3.15 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ free +

+
+

+ Reports the amount of free and used memory (both + physical and swap memory) in the system +

+
+

+ pgrep +

+
+

+ Looks up processes based on their name and other + attributes +

+
+

+ pidof +

+
+

+ Reports the PIDs of the given programs +

+
+

+ pkill +

+
+

+ Signals processes based on their name and other + attributes +

+
+

+ pmap +

+
+

+ Reports the memory map of the given process +

+
+

+ ps +

+
+

+ Lists the current running processes +

+
+

+ pwdx +

+
+

+ Reports the current working directory of a process +

+
+

+ slabtop +

+
+

+ Displays detailed kernel slab cache information in + real time +

+
+

+ sysctl +

+
+

+ Modifies kernel parameters at run time +

+
+

+ tload +

+
+

+ Prints a graph of the current system load average +

+
+

+ top +

+
+

+ Displays a list of the most CPU intensive + processes; it provides an ongoing look at processor + activity in real time +

+
+

+ uptime +

+
+

+ Reports how long the system has been running, how + many users are logged on, and the system load + averages +

+
+

+ vmstat +

+
+

+ Reports virtual memory statistics, giving + information about processes, memory, paging, block + Input/Output (IO), traps, and CPU activity +

+
+

+ w +

+
+

+ Shows which users are currently logged on, where, + and since when +

+
+

+ watch +

+
+

+ Runs a given command repeatedly, displaying the + first screen-full of its output; this allows a user + to watch the output change over time +

+
+

+ libprocps +

+
+

+ Contains the functions used by most programs in + this package +

+
+
+
+
+
+
+
+
+

+ 6.73. Util-linux-2.33.1 +

+
+
+
+
+

+ The Util-linux package contains miscellaneous utility + programs. Among them are utilities for handling file systems, + consoles, partitions, and messages. +

+
+
+
+ Approximate build time: + 1.5 SBU +
+
+ Required disk space: + 214 MB +
+
+
+
+
+

+ 6.73.1. FHS compliance notes +

+

+ The FHS recommends using the /var/lib/hwclock directory instead of the + usual /etc directory as the + location for the adjtime file. + First create a directory to enable storage for the + hwclock + program: +

+
+mkdir -pv /var/lib/hwclock
+
+
+
+

+ 6.73.2. Installation of Util-linux +

+

+ Remove the earlier created symlinks: +

+
+rm -vf /usr/include/{blkid,libmount,uuid}
+
+

+ Prepare Util-linux for compilation: +

+
+./configure ADJTIME_PATH=/var/lib/hwclock/adjtime   \
+            --docdir=/usr/share/doc/util-linux-2.33.1 \
+            --disable-chfn-chsh  \
+            --disable-login      \
+            --disable-nologin    \
+            --disable-su         \
+            --disable-setpriv    \
+            --disable-runuser    \
+            --disable-pylibmount \
+            --disable-static     \
+            --without-python     \
+            --without-systemd    \
+            --without-systemdsystemunitdir
+
+

+ The --disable and --without options prevent warnings about + building components that require packages not in LFS or are + inconsistent with programs installed by other packages. +

+

+ Compile the package: +

+
+make
+
+

+ If desired, run the test suite as a non-root user: +

+
+

+ Warning +

+

+ Running the test suite as the root user can be harmful to + your system. To run it, the CONFIG_SCSI_DEBUG option for + the kernel must be available in the currently running + system, and must be built as a module. Building it into the + kernel will prevent booting. For complete coverage, other + BLFS packages must be installed. If desired, this test can + be run after rebooting into the completed LFS system and + running: +

+
+bash tests/run.sh --srcdir=$PWD --builddir=$PWD
+
+
+
+chown -Rv nobody .
+su nobody -s /bin/bash -c "PATH=$PATH make -k check"
+
+

+ Install the package: +

+
+make install
+
+
+
+

+ 6.73.3. Contents of Util-linux +

+
+
+
+ Installed programs: + addpart, agetty, blkdiscard, blkid, + blockdev, cal, cfdisk, chcpu, choom, chrt, col, colcrt, + colrm, column, ctrlaltdel, delpart, dmesg, eject, + fallocate, fdformat, fdisk, findfs, findmnt, flock, fsck, + fsck.cramfs, fsck.minix, fsfreeze, fstrim, getopt, + hexdump, hwclock, i386, ionice, ipcmk, ipcrm, ipcs, + isosize, kill, last, lastb (link to last), ldattach, + linux32, linux64, logger, look, losetup, lsblk, lscpu, + lsipc, lslocks, lslogins, mcookie, mesg, mkfs, mkfs.bfs, + mkfs.cramfs, mkfs.minix, mkswap, more, mount, mountpoint, + namei, nsenter, partx, pg, pivot_root, prlimit, raw, + readprofile, rename, renice, resizepart, rev, rtcwake, + script, scriptreplay, setarch, setsid, setterm, sfdisk, + sulogin, swaplabel, swapoff (link to swapon), swapon, + switch_root, tailf, taskset, ul, umount, uname26, + unshare, utmpdump, uuidd, uuidgen, wall, wdctl, whereis, + wipefs, x86_64, and zramctl +
+
+ Installed libraries: + libblkid.so, libfdisk.so, + libmount.so, libsmartcols.so, and libuuid.so +
+
+ Installed directories: + /usr/include/blkid, + /usr/include/libfdisk, /usr/include/libmount, + /usr/include/libsmartcols, /usr/include/uuid, + /usr/share/doc/util-linux-2.33.1, and + /var/lib/hwclock +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ addpart +

+
+

+ Informs the Linux kernel of new partitions +

+
+

+ agetty +

+
+

+ Opens a tty port, prompts for a login name, and + then invokes the login program +

+
+

+ blkdiscard +

+
+

+ Discards sectors on a device +

+
+

+ blkid +

+
+

+ A command line utility to locate and print block + device attributes +

+
+

+ blockdev +

+
+

+ Allows users to call block device ioctls from the + command line +

+
+

+ cal +

+
+

+ Displays a simple calendar +

+
+

+ cfdisk +

+
+

+ Manipulates the partition table of the given device +

+
+

+ chcpu +

+
+

+ Modifies the state of CPUs +

+
+

+ choom +

+
+

+ Displays and adjusts OOM-killer score +

+
+

+ chrt +

+
+

+ Manipulates real-time attributes of a process +

+
+

+ col +

+
+

+ Filters out reverse line feeds +

+
+

+ colcrt +

+
+

+ Filters nroff output for + terminals that lack some capabilities, such as + overstriking and half-lines +

+
+

+ colrm +

+
+

+ Filters out the given columns +

+
+

+ column +

+
+

+ Formats a given file into multiple columns +

+
+

+ ctrlaltdel +

+
+

+ Sets the function of the Ctrl+Alt+Del key + combination to a hard or a soft reset +

+
+

+ delpart +

+
+

+ Asks the Linux kernel to remove a partition +

+
+

+ dmesg +

+
+

+ Dumps the kernel boot messages +

+
+

+ eject +

+
+

+ Ejects removable media +

+
+

+ fallocate +

+
+

+ Preallocates space to a file +

+
+

+ fdformat +

+
+

+ Low-level formats a floppy disk +

+
+

+ fdisk +

+
+

+ Manipulates the partition table of the given device +

+
+

+ findfs +

+
+

+ Finds a file system by label or Universally Unique + Identifier (UUID) +

+
+

+ findmnt +

+
+

+ Is a command line interface to the libmount library + for work with mountinfo, fstab and mtab files +

+
+

+ flock +

+
+

+ Acquires a file lock and then executes a command + with the lock held +

+
+

+ fsck +

+
+

+ Is used to check, and optionally repair, file + systems +

+
+

+ fsck.cramfs +

+
+

+ Performs a consistency check on the Cramfs file + system on the given device +

+
+

+ fsck.minix +

+
+

+ Performs a consistency check on the Minix file + system on the given device +

+
+

+ fsfreeze +

+
+

+ Is a very simple wrapper around FIFREEZE/FITHAW + ioctl kernel driver operations +

+
+

+ fstrim +

+
+

+ Discards unused blocks on a mounted filesystem +

+
+

+ getopt +

+
+

+ Parses options in the given command line +

+
+

+ hexdump +

+
+

+ Dumps the given file in hexadecimal or in another + given format +

+
+

+ hwclock +

+
+

+ Reads or sets the system's hardware clock, also + called the Real-Time Clock (RTC) or Basic + Input-Output System (BIOS) clock +

+
+

+ i386 +

+
+

+ A symbolic link to setarch +

+
+

+ ionice +

+
+

+ Gets or sets the io scheduling class and priority + for a program +

+
+

+ ipcmk +

+
+

+ Creates various IPC resources +

+
+

+ ipcrm +

+
+

+ Removes the given Inter-Process Communication (IPC) + resource +

+
+

+ ipcs +

+
+

+ Provides IPC status information +

+
+

+ isosize +

+
+

+ Reports the size of an iso9660 file system +

+
+

+ kill +

+
+

+ Sends signals to processes +

+
+

+ last +

+
+

+ Shows which users last logged in (and out), + searching back through the /var/log/wtmp file; it also shows + system boots, shutdowns, and run-level changes +

+
+

+ lastb +

+
+

+ Shows the failed login attempts, as logged in + /var/log/btmp +

+
+

+ ldattach +

+
+

+ Attaches a line discipline to a serial line +

+
+

+ linux32 +

+
+

+ A symbolic link to setarch +

+
+

+ linux64 +

+
+

+ A symbolic link to setarch +

+
+

+ logger +

+
+

+ Enters the given message into the system log +

+
+

+ look +

+
+

+ Displays lines that begin with the given string +

+
+

+ losetup +

+
+

+ Sets up and controls loop devices +

+
+

+ lsblk +

+
+

+ Lists information about all or selected block + devices in a tree-like format +

+
+

+ lscpu +

+
+

+ Prints CPU architecture information +

+
+

+ lsipc +

+
+

+ Prints information on IPC facilities currently + employed in the system +

+
+

+ lslocks +

+
+

+ Lists local system locks +

+
+

+ lslogins +

+
+

+ Lists information about users, groups and system + accounts +

+
+

+ mcookie +

+
+

+ Generates magic cookies (128-bit random hexadecimal + numbers) for xauth +

+
+

+ mesg +

+
+

+ Controls whether other users can send messages to + the current user's terminal +

+
+

+ mkfs +

+
+

+ Builds a file system on a device (usually a hard + disk partition) +

+
+

+ mkfs.bfs +

+
+

+ Creates a Santa Cruz Operations (SCO) bfs file + system +

+
+

+ mkfs.cramfs +

+
+

+ Creates a cramfs file system +

+
+

+ mkfs.minix +

+
+

+ Creates a Minix file system +

+
+

+ mkswap +

+
+

+ Initializes the given device or file to be used as + a swap area +

+
+

+ more +

+
+

+ A filter for paging through text one screen at a + time +

+
+

+ mount +

+
+

+ Attaches the file system on the given device to a + specified directory in the file-system tree +

+
+

+ mountpoint +

+
+

+ Checks if the directory is a mountpoint +

+
+

+ namei +

+
+

+ Shows the symbolic links in the given pathnames +

+
+

+ nsenter +

+
+

+ Runs a program with namespaces of other processes +

+
+

+ partx +

+
+

+ Tells the kernel about the presence and numbering + of on-disk partitions +

+
+

+ pg +

+
+

+ Displays a text file one screen full at a time +

+
+

+ pivot_root +

+
+

+ Makes the given file system the new root file + system of the current process +

+
+

+ prlimit +

+
+

+ Get and set a process' resource limits +

+
+

+ raw +

+
+

+ Bind a Linux raw character device to a block device +

+
+

+ readprofile +

+
+

+ Reads kernel profiling information +

+
+

+ rename +

+
+

+ Renames the given files, replacing a given string + with another +

+
+

+ renice +

+
+

+ Alters the priority of running processes +

+
+

+ resizepart +

+
+

+ Asks the Linux kernel to resize a partition +

+
+

+ rev +

+
+

+ Reverses the lines of a given file +

+
+

+ rtcwake +

+
+

+ Used to enter a system sleep state until specified + wakeup time +

+
+

+ script +

+
+

+ Makes a typescript of a terminal session +

+
+

+ scriptreplay +

+
+

+ Plays back typescripts using timing information +

+
+

+ setarch +

+
+

+ Changes reported architecture in a new program + environment and sets personality flags +

+
+

+ setsid +

+
+

+ Runs the given program in a new session +

+
+

+ setterm +

+
+

+ Sets terminal attributes +

+
+

+ sfdisk +

+
+

+ A disk partition table manipulator +

+
+

+ sulogin +

+
+

+ Allows root to log + in; it is normally invoked by init when the + system goes into single user mode +

+
+

+ swaplabel +

+
+

+ Allows to change swaparea UUID and label +

+
+

+ swapoff +

+
+

+ Disables devices and files for paging and swapping +

+
+

+ swapon +

+
+

+ Enables devices and files for paging and swapping + and lists the devices and files currently in use +

+
+

+ switch_root +

+
+

+ Switches to another filesystem as the root of the + mount tree +

+
+

+ tailf +

+
+

+ Tracks the growth of a log file; displays the last + 10 lines of a log file, then continues displaying + any new entries in the log file as they are created +

+
+

+ taskset +

+
+

+ Retrieves or sets a process' CPU affinity +

+
+

+ ul +

+
+

+ A filter for translating underscores into escape + sequences indicating underlining for the terminal + in use +

+
+

+ umount +

+
+

+ Disconnects a file system from the system's file + tree +

+
+

+ uname26 +

+
+

+ A symbolic link to setarch +

+
+

+ unshare +

+
+

+ Runs a program with some namespaces unshared from + parent +

+
+

+ utmpdump +

+
+

+ Displays the content of the given login file in a + more user-friendly format +

+
+

+ uuidd +

+
+

+ A daemon used by the UUID library to generate + time-based UUIDs in a secure and guaranteed-unique + fashion +

+
+

+ uuidgen +

+
+

+ Creates new UUIDs. Each new UUID can reasonably be + considered unique among all UUIDs created, on the + local system and on other systems, in the past and + in the future +

+
+

+ wall +

+
+

+ Displays the contents of a file or, by default, its + standard input, on the terminals of all currently + logged in users +

+
+

+ wdctl +

+
+

+ Shows hardware watchdog status +

+
+

+ whereis +

+
+

+ Reports the location of the binary, source, and man + page for the given command +

+
+

+ wipefs +

+
+

+ Wipes a filesystem signature from a device +

+
+

+ x86_64 +

+
+

+ A symbolic link to setarch +

+
+

+ zramctl +

+
+

+ A program to set up and control zram (compressed + ram disk) devices +

+
+

+ libblkid +

+
+

+ Contains routines for device identification and + token extraction +

+
+

+ libfdisk +

+
+

+ Contains routines for manipulating partition tables +

+
+

+ libmount +

+
+

+ Contains routines for block device mounting and + unmounting +

+
+

+ libsmartcols +

+
+

+ Contains routines for aiding screen output in + tabular form +

+
+

+ libuuid +

+
+

+ Contains routines for generating unique identifiers + for objects that may be accessible beyond the local + system +

+
+
+
+
+
+
+
+
+

+ 6.74. E2fsprogs-1.44.5 +

+
+
+
+
+

+ The E2fsprogs package contains the utilities for handling the + ext2 file system. It also + supports the ext3 and + ext4 journaling file systems. +

+
+
+
+ Approximate build time: + 1.6 SBU +
+
+ Required disk space: + 96 MB +
+
+
+
+
+

+ 6.74.1. Installation of E2fsprogs +

+

+ The E2fsprogs documentation recommends that the package be + built in a subdirectory of the source tree: +

+
+mkdir -v build
+cd build
+
+

+ Prepare E2fsprogs for compilation: +

+
+../configure --prefix=/usr           \
+             --bindir=/bin           \
+             --with-root-prefix=""   \
+             --enable-elf-shlibs     \
+             --disable-libblkid      \
+             --disable-libuuid       \
+             --disable-uuidd         \
+             --disable-fsck
+
+
+

+ The meaning of the environment variable and + configure options: +

+
+
+ --with-root-prefix="" and + --bindir=/bin +
+
+

+ Certain programs (such as the e2fsck program) are + considered essential programs. When, for example, + /usr is not mounted, + these programs still need to be available. They belong + in directories like /lib + and /sbin. If this option + is not passed to E2fsprogs' configure, the programs are + installed into the /usr + directory. +

+
+
+ --enable-elf-shlibs +
+
+

+ This creates the shared libraries which some programs + in this package use. +

+
+
+ --disable-* +
+
+

+ This prevents E2fsprogs from building and installing + the libuuid and + libblkid libraries, the + uuidd daemon, and the + fsck + wrapper, as Util-Linux installs more recent versions. +

+
+
+
+

+ Compile the package: +

+
+make
+
+

+ To run the tests, issue: +

+
+make check
+
+

+ One of the E2fsprogs tests will attempt to allocate 256 MB of + memory. If you do not have significantly more RAM than this, + be sure to enable sufficient swap space for the test. See + Section 2.5, + “Creating a File System on the Partition” and + Section 2.7, + “Mounting the New Partition” for details on + creating and enabling swap space. +

+

+ Install the binaries, documentation, and shared libraries: +

+
+make install
+
+

+ Install the static libraries and headers: +

+
+make install-libs
+
+

+ Make the installed static libraries writable so debugging + symbols can be removed later: +

+
+chmod -v u+w /usr/lib/{libcom_err,libe2p,libext2fs,libss}.a
+
+

+ This package installs a gzipped .info file but doesn't update the + system-wide dir file. Unzip + this file and then update the system dir file using the following commands: +

+
+gunzip -v /usr/share/info/libext2fs.info.gz
+install-info --dir-file=/usr/share/info/dir /usr/share/info/libext2fs.info
+
+

+ If desired, create and install some additional documentation + by issuing the following commands: +

+
+makeinfo -o      doc/com_err.info ../lib/et/com_err.texinfo
+install -v -m644 doc/com_err.info /usr/share/info
+install-info --dir-file=/usr/share/info/dir /usr/share/info/com_err.info
+
+
+
+

+ 6.74.2. Contents of E2fsprogs +

+
+
+
+ Installed programs: + badblocks, chattr, compile_et, + debugfs, dumpe2fs,e2freefrag, e2fsck, e2image, e2label, + e2undo, e4defrag, filefrag, fsck.ext2, fsck.ext3, + fsck.ext4, fsck.ext4dev, logsave, lsattr, mk_cmds, + mke2fs, mkfs.ext2, mkfs.ext3, mkfs.ext4, mkfs.ext4dev, + mklost+found, resize2fs, and tune2fs +
+
+ Installed libraries: + libcom_err.so, libe2p.so, + libext2fs.so, and libss.so +
+
+ Installed directories: + /usr/include/e2p, /usr/include/et, + /usr/include/ext2fs, /usr/include/ss, /usr/share/et, and + /usr/share/ss +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ badblocks +

+
+

+ Searches a device (usually a disk partition) for + bad blocks +

+
+

+ chattr +

+
+

+ Changes the attributes of files on an ext2 file system; it also + changes ext3 file + systems, the journaling version of ext2 file systems +

+
+

+ compile_et +

+
+

+ An error table compiler; it converts a table of + error-code names and messages into a C source file + suitable for use with the com_err library +

+
+

+ debugfs +

+
+

+ A file system debugger; it can be used to examine + and change the state of an ext2 file system +

+
+

+ dumpe2fs +

+
+

+ Prints the super block and blocks group information + for the file system present on a given device +

+
+

+ e2freefrag +

+
+

+ Reports free space fragmentation information +

+
+

+ e2fsck +

+
+

+ Is used to check, and optionally repair + ext2 file systems + and ext3 file + systems +

+
+

+ e2image +

+
+

+ Is used to save critical ext2 file system data to a file +

+
+

+ e2label +

+
+

+ Displays or changes the file system label on the + ext2 file system + present on a given device +

+
+

+ e2undo +

+
+

+ Replays the undo log undo_log for an ext2/ext3/ext4 + filesystem found on a device [This can be used to + undo a failed operation by an e2fsprogs program.] +

+
+

+ e4defrag +

+
+

+ Online defragmenter for ext4 filesystems +

+
+

+ filefrag +

+
+

+ Reports on how badly fragmented a particular file + might be +

+
+

+ fsck.ext2 +

+
+

+ By default checks ext2 file systems and is a hard + link to e2fsck +

+
+

+ fsck.ext3 +

+
+

+ By default checks ext3 file systems and is a hard + link to e2fsck +

+
+

+ fsck.ext4 +

+
+

+ By default checks ext4 file systems and is a hard + link to e2fsck +

+
+

+ fsck.ext4dev +

+
+

+ By default checks ext4 development file systems + and is a hard link to e2fsck +

+
+

+ logsave +

+
+

+ Saves the output of a command in a log file +

+
+

+ lsattr +

+
+

+ Lists the attributes of files on a second extended + file system +

+
+

+ mk_cmds +

+
+

+ Converts a table of command names and help messages + into a C source file suitable for use with the + libss subsystem + library +

+
+

+ mke2fs +

+
+

+ Creates an ext2 or + ext3 file system on + the given device +

+
+

+ mkfs.ext2 +

+
+

+ By default creates ext2 file systems and is a hard + link to mke2fs +

+
+

+ mkfs.ext3 +

+
+

+ By default creates ext3 file systems and is a hard + link to mke2fs +

+
+

+ mkfs.ext4 +

+
+

+ By default creates ext4 file systems and is a hard + link to mke2fs +

+
+

+ mkfs.ext4dev +

+
+

+ By default creates ext4 development file systems + and is a hard link to mke2fs +

+
+

+ mklost+found +

+
+

+ Used to create a lost+found directory on an + ext2 file system; + it pre-allocates disk blocks to this directory to + lighten the task of e2fsck +

+
+

+ resize2fs +

+
+

+ Can be used to enlarge or shrink an ext2 file system +

+
+

+ tune2fs +

+
+

+ Adjusts tunable file system parameters on an + ext2 file system +

+
+

+ libcom_err +

+
+

+ The common error display routine +

+
+

+ libe2p +

+
+

+ Used by dumpe2fs, + chattr, and + lsattr +

+
+

+ libext2fs +

+
+

+ Contains routines to enable user-level programs to + manipulate an ext2 + file system +

+
+

+ libss +

+
+

+ Used by debugfs +

+
+
+
+
+
+
+
+
+

+ 6.75. Sysklogd-1.5.1 +

+
+
+
+
+

+ The Sysklogd package contains programs for logging system + messages, such as those given by the kernel when unusual + things happen. +

+
+
+
+ Approximate build time: + less than 0.1 SBU +
+
+ Required disk space: + 0.6 MB +
+
+
+
+
+

+ 6.75.1. Installation of Sysklogd +

+

+ First, fix problems that causes a segmentation fault under + some conditions in klogd and fix an obsolete program + construct: +

+
+sed -i '/Error loading kernel symbols/{n;n;d}' ksym_mod.c
+sed -i 's/union wait/int/' syslogd.c
+
+

+ Compile the package: +

+
+make
+
+

+ This package does not come with a test suite. +

+

+ Install the package: +

+
+make BINDIR=/sbin install
+
+
+
+

+ 6.75.2. + Configuring Sysklogd +

+

+ Create a new /etc/syslog.conf + file by running the following: +

+
+cat > /etc/syslog.conf << "EOF"
+# Begin /etc/syslog.conf
+
+auth,authpriv.* -/var/log/auth.log
+*.*;auth,authpriv.none -/var/log/sys.log
+daemon.* -/var/log/daemon.log
+kern.* -/var/log/kern.log
+mail.* -/var/log/mail.log
+user.* -/var/log/user.log
+*.emerg *
+
+# End /etc/syslog.conf
+EOF
+
+
+
+

+ 6.75.3. Contents of Sysklogd +

+
+
+
+ Installed programs: + klogd and syslogd +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + +
+

+ klogd +

+
+

+ A system daemon for intercepting and logging kernel + messages +

+
+

+ syslogd +

+
+

+ Logs the messages that system programs offer for + logging [Every logged message contains at least a + date stamp and a hostname, and normally the + program's name too, but that depends on how + trusting the logging daemon is told to be.] +

+
+
+
+
+
+
+
+
+

+ 6.76. Sysvinit-2.93 +

+
+
+
+
+

+ The Sysvinit package contains programs for controlling the + startup, running, and shutdown of the system. +

+
+
+
+ Approximate build time: + less than 0.1 SBU +
+
+ Required disk space: + 1.3 MB +
+
+
+
+
+

+ 6.76.1. Installation of Sysvinit +

+

+ First, apply a patch that removes several programs installed + by other packages, clarifies a message, and fixes a compiler + warning: +

+
+patch -Np1 -i ../sysvinit-2.93-consolidated-1.patch
+
+

+ Compile the package: +

+
+make
+
+

+ This package does not come with a test suite. +

+

+ Install the package: +

+
+make install
+
+
+
+

+ 6.76.2. Contents of Sysvinit +

+
+
+
+ Installed programs: + bootlogd, fstab-decode, halt, init, + killall5, poweroff (link to halt), reboot (link to halt), + runlevel, shutdown, and telinit (link to init) +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ bootlogd +

+
+

+ Logs boot messages to a log file +

+
+

+ fstab-decode +

+
+

+ Run a command with fstab-encoded arguments +

+
+

+ halt +

+
+

+ Normally invokes shutdown with the + -h option, + except when already in run-level 0, then it tells + the kernel to halt the system; it notes in the file + /var/log/wtmp that + the system is being brought down +

+
+

+ init +

+
+

+ The first process to be started when the kernel has + initialized the hardware which takes over the boot + process and starts all the proceses specified in + its configuration file +

+
+

+ killall5 +

+
+

+ Sends a signal to all processes, except the + processes in its own session so it will not kill + its parent shell +

+
+

+ poweroff +

+
+

+ Tells the kernel to halt the system and switch off + the computer (see halt) +

+
+

+ reboot +

+
+

+ Tells the kernel to reboot the system (see + halt) +

+
+

+ runlevel +

+
+

+ Reports the previous and the current run-level, as + noted in the last run-level record in /var/run/utmp +

+
+

+ shutdown +

+
+

+ Brings the system down in a secure way, signaling + all processes and notifying all logged-in users +

+
+

+ telinit +

+
+

+ Tells init which + run-level to change to +

+
+
+
+
+
+
+
+
+

+ 6.77. Eudev-3.2.7 +

+
+
+
+
+

+ The Eudev package contains programs for dynamic creation of + device nodes. +

+
+
+
+ Approximate build time: + 0.2 SBU +
+
+ Required disk space: + 82 MB +
+
+
+
+
+

+ 6.77.1. Installation of Eudev +

+

+ Next, add a workaround to prevent the /tools directory from + being hard coded into Eudev binary files library locations: +

+
+cat > config.cache << "EOF"
+HAVE_BLKID=1
+BLKID_LIBS="-lblkid"
+BLKID_CFLAGS="-I/tools/include"
+EOF
+
+

+ Prepare Eudev for compilation: +

+
+./configure --prefix=/usr           \
+            --bindir=/sbin          \
+            --sbindir=/sbin         \
+            --libdir=/usr/lib       \
+            --sysconfdir=/etc       \
+            --libexecdir=/lib       \
+            --with-rootprefix=      \
+            --with-rootlibdir=/lib  \
+            --enable-manpages       \
+            --disable-static        \
+            --config-cache
+
+

+ Compile the package: +

+
+LIBRARY_PATH=/tools/lib make
+
+
+

+ Note +

+

+ The LIBRARY_PATH variable here and the LD_LIBRARY_PATH + variable below are needed to allow the use of libraries + that were installed in /tools, but have not yet been + installed in the main system. LIBRARY_PATH is used to find + libraries during the linking process. LD_LIBRARY_PATH is + used to find libraries during program execution. +

+
+

+ Create some directories now that are needed for tests, but + will also be used as a part of installation: +

+
+mkdir -pv /lib/udev/rules.d
+mkdir -pv /etc/udev/rules.d
+
+

+ To test the results, issue: +

+
+make LD_LIBRARY_PATH=/tools/lib check
+
+

+ Install the package: +

+
+make LD_LIBRARY_PATH=/tools/lib install
+
+

+ Install some custom rules and support files useful in an LFS + environment: +

+
+tar -xvf ../udev-lfs-20171102.tar.bz2
+make -f udev-lfs-20171102/Makefile.lfs install
+
+
+
+

+ 6.77.2. Configuring + Eudev +

+

+ Information about hardware devices is maintained in the + /etc/udev/hwdb.d and + /lib/udev/hwdb.d directories. + Eudev needs that information + to be compiled into a binary database /etc/udev/hwdb.bin. Create the initial + database: +

+
+LD_LIBRARY_PATH=/tools/lib udevadm hwdb --update
+
+

+ This command needs to be run each time the hardware + information is updated. +

+
+
+

+ 6.77.3. + Contents of Eudev +

+
+
+
+ Installed programs: + udevadm and udevd +
+
+ Installed libraries: + libudev.so +
+
+ Installed directories: + /etc/udev, /lib/udev, and + /usr/share/doc/udev-udev-lfs-20171102 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + +
+

+ udevadm +

+
+

+ Generic udev administration tool: controls the + udevd daemon, provides info from the Udev database, + monitors uevents, waits for uevents to finish, + tests Udev configuration, and triggers uevents for + a given device +

+
+

+ udevd +

+
+

+ A daemon that listens for uevents on the netlink + socket, creates devices and runs the configured + external programs in response to these uevents +

+
+

+ libudev +

+
+

+ A library interface to udev device information +

+
+

+ /etc/udev +

+
+

+ Contains Udev configuration files, device + permissions, and rules for device naming +

+
+
+
+
+
+
+
+
+

+ 6.78. About Debugging + Symbols +

+
+
+
+

+ Most programs and libraries are, by default, compiled with + debugging symbols included (with gcc's -g option). This means that when + debugging a program or library that was compiled with debugging + information included, the debugger can provide not only memory + addresses, but also the names of the routines and variables. +

+

+ However, the inclusion of these debugging symbols enlarges a + program or library significantly. The following is an example + of the amount of space these symbols occupy: +

+
+
    +
  • +

    + A bash + binary with debugging symbols: 1200 KB +

    +
  • +
  • +

    + A bash + binary without debugging symbols: 480 KB +

    +
  • +
  • +

    + Glibc and GCC files (/lib + and /usr/lib) with + debugging symbols: 87 MB +

    +
  • +
  • +

    + Glibc and GCC files without debugging symbols: 16 MB +

    +
  • +
+
+

+ Sizes may vary depending on which compiler and C library were + used, but when comparing programs with and without debugging + symbols, the difference will usually be a factor between two + and five. +

+

+ Because most users will never use a debugger on their system + software, a lot of disk space can be regained by removing these + symbols. The next section shows how to strip all debugging + symbols from the programs and libraries. +

+
+
+
+
+
+

+ 6.79. Stripping Again +

+
+
+
+

+ This section is optional. If the intended user is not a + programmer and does not plan to do any debugging on the system + software, the system size can be decreased by about 90 MB by + removing the debugging symbols from binaries and libraries. + This causes no inconvenience other than not being able to debug + the software fully anymore. +

+

+ Most people who use the commands mentioned below do not + experience any difficulties. However, it is easy to make a typo + and render the new system unusable, so before running the + strip commands, + it is a good idea to make a backup of the LFS system in its + current state. +

+

+ First place the debugging symbols for selected libraries in + separate files. This debugging information is needed if running + regression tests that use + valgrind or + gdb later in BLFS. +

+
+save_lib="ld-2.29.so libc-2.29.so libpthread-2.29.so libthread_db-1.0.so"
+
+cd /lib
+
+for LIB in $save_lib; do
+    objcopy --only-keep-debug $LIB $LIB.dbg 
+    strip --strip-unneeded $LIB
+    objcopy --add-gnu-debuglink=$LIB.dbg $LIB 
+done    
+
+save_usrlib="libquadmath.so.0.0.0 libstdc++.so.6.0.25
+             libitm.so.1.0.0 libatomic.so.1.2.0" 
+
+cd /usr/lib
+
+for LIB in $save_usrlib; do
+    objcopy --only-keep-debug $LIB $LIB.dbg
+    strip --strip-unneeded $LIB
+    objcopy --add-gnu-debuglink=$LIB.dbg $LIB
+done
+
+unset LIB save_lib save_usrlib
+
+

+ Before performing the stripping, take special care to ensure + that none of the binaries that are about to be stripped are + running: +

+
+exec /tools/bin/bash
+
+

+ Now the binaries and libraries can be safely stripped: +

+
+/tools/bin/find /usr/lib -type f -name \*.a \
+   -exec /tools/bin/strip --strip-debug {} ';'
+
+/tools/bin/find /lib /usr/lib -type f \( -name \*.so* -a ! -name \*dbg \) \
+   -exec /tools/bin/strip --strip-unneeded {} ';'
+
+/tools/bin/find /{bin,sbin} /usr/{bin,sbin,libexec} -type f \
+    -exec /tools/bin/strip --strip-all {} ';'
+
+

+ A large number of files will be reported as having their file + format not recognized. These warnings can be safely ignored. + These warnings indicate that those files are scripts instead of + binaries. +

+
+
+
+
+
+

+ 6.80. Cleaning Up +

+
+
+
+

+ Finally, clean up some extra files left around from running + tests: +

+
+rm -rf /tmp/*
+
+

+ Now log out and reenter the chroot environment with an updated + chroot command. From now on, use this updated chroot command + any time you need to reenter the chroot environment after + exiting: +

+
+logout
+
+chroot "$LFS" /usr/bin/env -i          \
+    HOME=/root TERM="$TERM"            \
+    PS1='(lfs chroot) \u:\w\$ '        \
+    PATH=/bin:/usr/bin:/sbin:/usr/sbin \
+    /bin/bash --login
+
+

+ The reason for this is that the programs in /tools are no longer needed. For this reason + you can delete the /tools + directory if so desired. +

+
+

+ Note +

+

+ Removing /tools will also + remove the temporary copies of Tcl, Expect, and DejaGNU which + were used for running the toolchain tests. If you need these + programs later on, they will need to be recompiled and + re-installed. The BLFS book has instructions for this (see + http://www.linuxfromscratch.org/blfs/). +

+
+

+ If the virtual kernel file systems have been unmounted, either + manually or through a reboot, ensure that the virtual kernel + file systems are mounted when reentering the chroot. This + process was explained in Section 6.2.2, + “Mounting and Populating /dev” and Section 6.2.3, + “Mounting Virtual Kernel File Systems”. +

+

+ There were several static libraries that were not suppressed + earlier in the chapter in order to satisfy the regression tests + in several packages. These libraries are from binutils, bzip2, + e2fsprogs, flex, libtool, and zlib. If desired, remove them + now: +

+
+rm -f /usr/lib/lib{bfd,opcodes}.a
+rm -f /usr/lib/libbz2.a
+rm -f /usr/lib/lib{com_err,e2p,ext2fs,ss}.a
+rm -f /usr/lib/libltdl.a
+rm -f /usr/lib/libfl.a
+rm -f /usr/lib/libz.a
+
+

+ There are also several files installed in the /usr/lib and + /usr/libexec directories with a file name extention of .la. + These are "libtool archive" files and generally unneeded on a + linux system. None of these are necessary at this point. To + remove them, run: +

+
+find /usr/lib /usr/libexec -name \*.la -delete
+
+

+ For more information about libtool archive files, see the + + BLFS section "About Libtool Archive (.la) files". +

+
+
+
+
+
+
+

+ Chapter 7. System + Configuration +

+
+
+
+
+
+
+
+

+ 7.1. Introduction +

+
+
+
+

+ Booting a Linux system involves several tasks. The process must + mount both virtual and real file systems, initialize devices, + activate swap, check file systems for integrity, mount any swap + partitions or files, set the system clock, bring up networking, + start any daemons required by the system, and accomplish any + other custom tasks needed by the user. This process must be + organized to ensure the tasks are performed in the correct + order but, at the same time, be executed as fast as possible. +

+
+

+ 7.1.1. System V +

+

+ System V is the classic boot process that has been used in + Unix and Unix-like systems such as Linux since about 1983. It + consists of a small program, init, that sets up basic + programs such as login (via getty) and runs + a script. This script, usually named rc, controls the execution + of a set of additional scripts that perform the tasks + required to initialize the system. +

+

+ The init + program is controlled by the /etc/inittab file and is organized into run + levels that can be run by the user: +

+
+

+
+ 0 — halt
+ 1 — Single user mode
+ 2 — Multiuser, without networking
+ + 3 — Full multiuser mode
+ 4 — User definable
+ 5 — Full multiuser mode with display manager
+ + 6 — reboot
+

+
+

+ The usual default run level is 3 or 5. +

+

+ Advantages +

+
+
    +
  • +

    + Established, well understood system. +

    +
  • +
  • +

    + Easy to customize. +

    +
  • +
+
+

+ Disadvantages +

+
+
    +
  • +

    + Slower to boot. A medium speed base LFS system takes + 8-12 seconds where the boot time is measured from the + first kernel message to the login prompt. Network + connectivity is typically established about 2 seconds + after the login prompt. +

    +
  • +
  • +

    + Serial processing of boot tasks. This is related to the + previous point. A delay in any process such as a file + system check, will delay the entire boot process. +

    +
  • +
  • +

    + Does not directly support advanced features like + control groups (cgroups), and per-user fair share + scheduling. +

    +
  • +
  • +

    + Adding scripts requires manual, static sequencing + decisions. +

    +
  • +
+
+
+
+
+
+
+
+

+ 7.2. LFS-Bootscripts-20180820 +

+
+
+
+
+

+ The LFS-Bootscripts package contains a set of scripts to + start/stop the LFS system at bootup/shutdown. The + configuration files and procedures needed to customize the + boot process are described in the following sections. +

+
+
+
+ Approximate build time: + less than 0.1 SBU +
+
+ Required disk space: + 244 KB +
+
+
+
+
+

+ 7.2.1. Installation of LFS-Bootscripts +

+

+ Install the package: +

+
+make install
+
+
+
+

+ 7.2.2. Contents of LFS-Bootscripts +

+
+
+
+ Installed scripts: + checkfs, cleanfs, console, + functions, halt, ifdown, ifup, localnet, modules, + mountfs, mountvirtfs, network, rc, reboot, sendsignals, + setclock, ipv4-static, swap, sysctl, sysklogd, template, + udev, and udev_retry +
+
+ Installed directories: + /etc/rc.d, /etc/init.d (symbolic + link), /etc/sysconfig, /lib/services, /lib/lsb (symbolic + link) +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ checkfs +

+
+

+ Checks the integrity of the file systems before + they are mounted (with the exception of journal and + network based file systems) +

+
+

+ cleanfs +

+
+

+ Removes files that should not be preserved between + reboots, such as those in /var/run/ and /var/lock/; it re-creates + /var/run/utmp and + removes the possibly present /etc/nologin, /fastboot, and /forcefsck files +

+
+

+ console +

+
+

+ Loads the correct keymap table for the desired + keyboard layout; it also sets the screen font +

+
+

+ functions +

+
+

+ Contains common functions, such as error and status + checking, that are used by several bootscripts +

+
+

+ halt +

+
+

+ Halts the system +

+
+

+ ifdown +

+
+

+ Stops a network device +

+
+

+ ifup +

+
+

+ Initializes a network device +

+
+

+ localnet +

+
+

+ Sets up the system's hostname and local loopback + device +

+
+

+ modules +

+
+

+ Loads kernel modules listed in /etc/sysconfig/modules, using + arguments that are also given there +

+
+

+ mountfs +

+
+

+ Mounts all file systems, except ones that are + marked noauto or are network + based +

+
+

+ mountvirtfs +

+
+

+ Mounts virtual kernel file systems, such as + proc +

+
+

+ network +

+
+

+ Sets up network interfaces, such as network cards, + and sets up the default gateway (where applicable) +

+
+

+ rc +

+
+

+ The master run-level control script; it is + responsible for running all the other bootscripts + one-by-one, in a sequence determined by the name of + the symbolic links being processed +

+
+

+ reboot +

+
+

+ Reboots the system +

+
+

+ sendsignals +

+
+

+ Makes sure every process is terminated before the + system reboots or halts +

+
+

+ setclock +

+
+

+ Resets the kernel clock to local time in case the + hardware clock is not set to UTC time +

+
+

+ ipv4-static +

+
+

+ Provides the functionality needed to assign a + static Internet Protocol (IP) address to a network + interface +

+
+

+ swap +

+
+

+ Enables and disables swap files and partitions +

+
+

+ sysctl +

+
+

+ Loads system configuration values from /etc/sysctl.conf, if that file + exists, into the running kernel +

+
+

+ sysklogd +

+
+

+ Starts and stops the system and kernel log daemons +

+
+

+ template +

+
+

+ A template to create custom bootscripts for other + daemons +

+
+

+ udev +

+
+

+ Prepares the /dev + directory and starts Udev +

+
+

+ udev_retry +

+
+

+ Retries failed udev uevents, and copies generated + rules files from /run/udev to /etc/udev/rules.d if required +

+
+
+
+
+
+
+
+
+

+ 7.3. Overview of Device and + Module Handling +

+
+
+
+

+ In Chapter 6, + we installed the Udev package when eudev was built. Before we go into the details + regarding how this works, a brief history of previous methods + of handling devices is in order. +

+

+ Linux systems in general traditionally used a static device + creation method, whereby a great many device nodes were created + under /dev (sometimes literally + thousands of nodes), regardless of whether the corresponding + hardware devices actually existed. This was typically done via + a MAKEDEV script, + which contains a number of calls to the mknod program with the + relevant major and minor device numbers for every possible + device that might exist in the world. +

+

+ Using the Udev method, only those devices which are detected by + the kernel get device nodes created for them. Because these + device nodes will be created each time the system boots, they + will be stored on a devtmpfs + file system (a virtual file system that resides entirely in + system memory). Device nodes do not require much space, so the + memory that is used is negligible. +

+
+

+ 7.3.1. History +

+

+ In February 2000, a new filesystem called devfs was merged into the 2.3.46 kernel + and was made available during the 2.4 series of stable + kernels. Although it was present in the kernel source itself, + this method of creating devices dynamically never received + overwhelming support from the core kernel developers. +

+

+ The main problem with the approach adopted by devfs was the way it handled device + detection, creation, and naming. The latter issue, that of + device node naming, was perhaps the most critical. It is + generally accepted that if device names are allowed to be + configurable, then the device naming policy should be up to a + system administrator, not imposed on them by any particular + developer(s). The devfs file + system also suffered from race conditions that were inherent + in its design and could not be fixed without a substantial + revision to the kernel. It was marked as deprecated for a + long period – due to a lack of maintenance – and + was finally removed from the kernel in June, 2006. +

+

+ With the development of the unstable 2.5 kernel tree, later + released as the 2.6 series of stable kernels, a new virtual + filesystem called sysfs came + to be. The job of sysfs is to + export a view of the system's hardware configuration to + userspace processes. With this userspace-visible + representation, the possibility of developing a userspace + replacement for devfs became + much more realistic. +

+
+
+

+ 7.3.2. Udev Implementation +

+
+
+
+
+

+ 7.3.2.1. Sysfs +

+
+
+
+

+ The sysfs filesystem was + mentioned briefly above. One may wonder how sysfs knows about the devices present + on a system and what device numbers should be used for + them. Drivers that have been compiled into the kernel + directly register their objects with a sysfs (devtmpfs internally) as they are + detected by the kernel. For drivers compiled as modules, + this registration will happen when the module is loaded. + Once the sysfs filesystem + is mounted (on /sys), data which the drivers register with + sysfs are available to + userspace processes and to udevd for processing (including + modifications to device nodes). +

+
+
+
+
+
+

+ 7.3.2.2. Device Node + Creation +

+
+
+
+

+ Device files are created by the kernel by the devtmpfs filesystem. Any driver that + wishes to register a device node will go through the + devtmpfs (via the driver + core) to do it. When a devtmpfs instance is mounted on + /dev, the device node will + initially be created with a fixed name, permissions, and + owner. +

+

+ A short time later, the kernel will send a uevent to + udevd. Based + on the rules specified in the files within the /etc/udev/rules.d, /lib/udev/rules.d, and /run/udev/rules.d directories, + udevd will + create additional symlinks to the device node, or change + its permissions, owner, or group, or modify the internal + udevd + database entry (name) for that object. +

+

+ The rules in these three directories are numbered and all + three directories are merged together. If udevd can't find a rule + for the device it is creating, it will leave the + permissions and ownership at whatever devtmpfs used initially. +

+
+
+
+
+
+

+ 7.3.2.3. Module Loading +

+
+
+
+

+ Device drivers compiled as modules may have aliases built + into them. Aliases are visible in the output of the + modinfo + program and are usually related to the bus-specific + identifiers of devices supported by a module. For example, + the snd-fm801 driver + supports PCI devices with vendor ID 0x1319 and device ID + 0x0801, and has an alias of pci:v00001319d00000801sv*sd*bc04sc01i*. + For most devices, the bus driver exports the alias of the + driver that would handle the device via sysfs. E.g., the /sys/bus/pci/devices/0000:00:0d.0/modalias + file might contain the string pci:v00001319d00000801sv00001319sd00001319bc04sc01i00. + The default rules provided with Udev will cause + udevd to call + out to /sbin/modprobe with the + contents of the MODALIAS uevent + environment variable (which should be the same as the + contents of the modalias file + in sysfs), thus loading all modules whose aliases match + this string after wildcard expansion. +

+

+ In this example, this means that, in addition to + snd-fm801, the + obsolete (and unwanted) forte driver will be loaded if + it is available. See below for ways in which the loading of + unwanted drivers can be prevented. +

+

+ The kernel itself is also able to load modules for network + protocols, filesystems and NLS support on demand. +

+
+
+
+
+
+

+ 7.3.2.4. Handling + Hotpluggable/Dynamic Devices +

+
+
+
+

+ When you plug in a device, such as a Universal Serial Bus + (USB) MP3 player, the kernel recognizes that the device is + now connected and generates a uevent. This uevent is then + handled by udevd as described above. +

+
+
+
+

+ 7.3.3. Problems with Loading Modules and Creating Devices +

+

+ There are a few possible problems when it comes to + automatically creating device nodes. +

+
+
+
+
+

+ 7.3.3.1. A kernel module + is not loaded automatically +

+
+
+
+

+ Udev will only load a module if it has a bus-specific alias + and the bus driver properly exports the necessary aliases + to sysfs. In other cases, + one should arrange module loading by other means. With + Linux-4.20.12, Udev is known to load properly-written + drivers for INPUT, IDE, PCI, USB, SCSI, SERIO, and FireWire + devices. +

+

+ To determine if the device driver you require has the + necessary support for Udev, run modinfo with the module + name as the argument. Now try locating the device directory + under /sys/bus and check + whether there is a modalias + file there. +

+

+ If the modalias file exists + in sysfs, the driver + supports the device and can talk to it directly, but + doesn't have the alias, it is a bug in the driver. Load the + driver without the help from Udev and expect the issue to + be fixed later. +

+

+ If there is no modalias file + in the relevant directory under /sys/bus, this means that the kernel + developers have not yet added modalias support to this bus + type. With Linux-4.20.12, this is the case with ISA busses. + Expect this issue to be fixed in later kernel versions. +

+

+ Udev is not intended to load wrapper drivers such as + snd-pcm-oss and + non-hardware drivers such as loop at all. +

+
+
+
+
+
+

+ 7.3.3.2. A kernel module + is not loaded automatically, and Udev is not intended + to load it +

+
+
+
+

+ If the wrapper module only enhances + the functionality provided by some other module (e.g., + snd-pcm-oss enhances + the functionality of snd-pcm by making the sound + cards available to OSS applications), configure + modprobe to + load the wrapper after Udev loads the wrapped module. To do + this, add a softdep line to the + corresponding /etc/modprobe.d/<filename>.conf + file. For example: +

+
+softdep snd-pcm post: snd-pcm-oss
+
+

+ Note that the softdep command also allows + pre: dependencies, or a + mixture of both pre: and + post:. See the modprobe.d(5) manual page for more + information on softdep syntax and + capabilities. +

+

+ If the module in question is not a wrapper and is useful by + itself, configure the modules bootscript to + load this module on system boot. To do this, add the module + name to the /etc/sysconfig/modules file on a separate + line. This works for wrapper modules too, but is suboptimal + in that case. +

+
+
+
+
+
+

+ 7.3.3.3. Udev loads some + unwanted module +

+
+
+
+

+ Either don't build the module, or blacklist it in a + /etc/modprobe.d/blacklist.conf file as + done with the forte + module in the example below: +

+
+blacklist forte
+
+

+ Blacklisted modules can still be loaded manually with the + explicit modprobe command. +

+
+
+
+
+
+

+ 7.3.3.4. Udev creates a + device incorrectly, or makes a wrong symlink +

+
+
+
+

+ This usually happens if a rule unexpectedly matches a + device. For example, a poorly-written rule can match both a + SCSI disk (as desired) and the corresponding SCSI generic + device (incorrectly) by vendor. Find the offending rule and + make it more specific, with the help of the udevadm info command. +

+
+
+
+
+
+

+ 7.3.3.5. Udev rule works + unreliably +

+
+
+
+

+ This may be another manifestation of the previous problem. + If not, and your rule uses sysfs attributes, it may be a kernel + timing issue, to be fixed in later kernels. For now, you + can work around it by creating a rule that waits for the + used sysfs attribute and + appending it to the /etc/udev/rules.d/10-wait_for_sysfs.rules + file (create this file if it does not exist). Please notify + the LFS Development list if you do so and it helps. +

+
+
+
+
+
+

+ 7.3.3.6. Udev does not + create a device +

+
+
+
+

+ Further text assumes that the driver is built statically + into the kernel or already loaded as a module, and that you + have already checked that Udev doesn't create a misnamed + device. +

+

+ Udev has no information needed to create a device node if a + kernel driver does not export its data to sysfs. This is most common with third + party drivers from outside the kernel tree. Create a static + device node in /lib/udev/devices with the appropriate + major/minor numbers (see the file devices.txt inside the kernel + documentation or the documentation provided by the third + party driver vendor). The static device node will be copied + to /dev by udev. +

+
+
+
+
+
+

+ 7.3.3.7. Device naming + order changes randomly after rebooting +

+
+
+
+

+ This is due to the fact that Udev, by design, handles + uevents and loads modules in parallel, and thus in an + unpredictable order. This will never be fixed. You should not rely + upon the kernel device names being stable. Instead, create + your own rules that make symlinks with stable names based + on some stable attributes of the device, such as a serial + number or the output of various *_id utilities installed by + Udev. See Section 7.4, + “Managing Devices” and Section 7.5, + “General Network Configuration” for + examples. +

+
+
+
+

+ 7.3.4. Useful Reading +

+

+ Additional helpful documentation is available at the + following sites: +

+ +
+
+
+
+
+
+

+ 7.4. Managing Devices +

+
+
+
+
+

+ 7.4.1. Network Devices +

+

+ Udev, by default, names network devices according to + Firmware/BIOS data or physical characteristics like the bus, + slot, or MAC address. The purpose of this naming convention + is to ensure that network devices are named consistently and + not based on the time the network card was discovered. For + example, on a computer having two network cards made by Intel + and Realtek, the network card manufactured by Intel may + become eth0 and the Realtek card becomes eth1. In some cases, + after a reboot the cards get renumbered the other way around. +

+

+ In the new naming scheme, typical network device names would + then be something like enp5s0 or wlp3s0. If this naming + convention is not desired, the traditional naming scheme or a + custom scheme can be implemented. +

+
+
+
+
+

+ 7.4.1.1. Disabling + Persistent Naming on the Kernel Command Line +

+
+
+
+

+ The traditional naming scheme using eth0, eth1, etc can be + restored by adding net.ifnames=0 on the + kernel command line. This is most appropriate for those + systems that have only one ethernet device of the same + type. Laptops often have multiple ethernet connections that + are named eth0 and wlan0 and are also candidates for this + method. The command line is passed in the GRUB + configuration file. See Section 8.4.4, + “Creating the GRUB Configuration File”. +

+
+
+
+
+
+

+ 7.4.1.2. Creating Custom + Udev Rules +

+
+
+
+

+ The naming scheme can be customized by creating custom Udev + rules. A script has been included that generates the + initial rules. Generate these rules by running: +

+
+bash /lib/udev/init-net-rules.sh
+
+

+ Now, inspect the /etc/udev/rules.d/70-persistent-net.rules + file, to find out which name was assigned to which network + device: +

+
+cat /etc/udev/rules.d/70-persistent-net.rules
+
+
+

+ Note +

+

+ In some cases such as when MAC addresses have been + assigned to a network card manually or in a virtual + environment such as Qemu or Xen, the network rules file + may not have been generated because addresses are not + consistently assigned. In these cases, this method cannot + be used. +

+
+

+ The file begins with a comment block followed by two lines + for each NIC. The first line for each NIC is a commented + description showing its hardware IDs (e.g. its PCI vendor + and device IDs, if it's a PCI card), along with its driver + in parentheses, if the driver can be found. Neither the + hardware ID nor the driver is used to determine which name + to give an interface; this information is only for + reference. The second line is the Udev rule that matches + this NIC and actually assigns it a name. +

+

+ All Udev rules are made up of several keys, separated by + commas and optional whitespace. This rule's keys and an + explanation of each of them are as follows: +

+
+
    +
  • +

    + SUBSYSTEM=="net" - This + tells Udev to ignore devices that are not network + cards. +

    +
  • +
  • +

    + ACTION=="add" - This + tells Udev to ignore this rule for a uevent that + isn't an add ("remove" and "change" uevents also + happen, but don't need to rename network interfaces). +

    +
  • +
  • +

    + DRIVERS=="?*" - This + exists so that Udev will ignore VLAN or bridge + sub-interfaces (because these sub-interfaces do not + have drivers). These sub-interfaces are skipped + because the name that would be assigned would collide + with their parent devices. +

    +
  • +
  • +

    + ATTR{address} - The + value of this key is the NIC's MAC address. +

    +
  • +
  • +

    + ATTR{type}=="1" - This + ensures the rule only matches the primary interface + in the case of certain wireless drivers, which create + multiple virtual interfaces. The secondary interfaces + are skipped for the same reason that VLAN and bridge + sub-interfaces are skipped: there would be a name + collision otherwise. +

    +
  • +
  • +

    + NAME - The value of this + key is the name that Udev will assign to this + interface. +

    +
  • +
+
+

+ The value of NAME is the + important part. Make sure you know which name has been + assigned to each of your network cards before proceeding, + and be sure to use that NAME + value when creating your configuration files below. +

+
+
+
+

+ 7.4.2. CD-ROM symlinks +

+

+ Some software that you may want to install later (e.g., + various media players) expect the /dev/cdrom and /dev/dvd symlinks to exist, and to point to + a CD-ROM or DVD-ROM device. Also, it may be convenient to put + references to those symlinks into /etc/fstab. Udev comes with a script that + will generate rules files to create these symlinks for you, + depending on the capabilities of each device, but you need to + decide which of two modes of operation you wish to have the + script use. +

+

+ First, the script can operate in by-path mode (used by default + for USB and FireWire devices), where the rules it creates + depend on the physical path to the CD or DVD device. Second, + it can operate in by-id mode (default for IDE and + SCSI devices), where the rules it creates depend on + identification strings stored in the CD or DVD device itself. + The path is determined by Udev's path_id script, and the + identification strings are read from the hardware by its + ata_id or + scsi_id + programs, depending on which type of device you have. +

+

+ There are advantages to each approach; the correct approach + to use will depend on what kinds of device changes may + happen. If you expect the physical path to the device (that + is, the ports and/or slots that it plugs into) to change, for + example because you plan on moving the drive to a different + IDE port or a different USB connector, then you should use + the by-id mode. On the other hand, + if you expect the device's identification to change, for + example because it may die, and you would replace it with a + different device with the same capabilities and which is + plugged into the same connectors, then you should use the + by-path mode. +

+

+ If either type of change is possible with your drive, then + choose a mode based on the type of change you expect to + happen more often. +

+
+

+ Important +

+

+ External devices (for example, a USB-connected CD drive) + should not use by-path persistence, because each time the + device is plugged into a new external port, its physical + path will change. All externally-connected devices will + have this problem if you write Udev rules to recognize them + by their physical path; the problem is not limited to CD + and DVD drives. +

+
+

+ If you wish to see the values that the Udev scripts will use, + then for the appropriate CD-ROM device, find the + corresponding directory under /sys (e.g., this can be /sys/block/hdd) and run a command similar + to the following: +

+
+udevadm test /sys/block/hdd
+
+

+ Look at the lines containing the output of various *_id + programs. The by-id mode will use the + ID_SERIAL value if it exists and is not empty, otherwise it + will use a combination of ID_MODEL and ID_REVISION. The + by-path mode will use the + ID_PATH value. +

+

+ If the default mode is not suitable for your situation, then + the following modification can be made to the /etc/udev/rules.d/83-cdrom-symlinks.rules + file, as follows (where mode is one of by-id + or by-path): +

+
+sed -i -e 's/"write_cd_rules"/"write_cd_rules mode"/' \
+    /etc/udev/rules.d/83-cdrom-symlinks.rules
+
+

+ Note that it is not necessary to create the rules files or + symlinks at this time, because you have bind-mounted the + host's /dev directory into the + LFS system, and we assume the symlinks exist on the host. The + rules and symlinks will be created the first time you boot + your LFS system. +

+

+ However, if you have multiple CD-ROM devices, then the + symlinks generated at that time may point to different + devices than they point to on your host, because devices are + not discovered in a predictable order. The assignments + created when you first boot the LFS system will be stable, so + this is only an issue if you need the symlinks on both + systems to point to the same device. If you need that, then + inspect (and possibly edit) the generated /etc/udev/rules.d/70-persistent-cd.rules + file after booting, to make sure the assigned symlinks match + what you need. +

+
+
+

+ 7.4.3. Dealing with duplicate devices +

+

+ As explained in Section 7.3, + “Overview of Device and Module Handling”, the + order in which devices with the same function appear in + /dev is essentially random. + E.g., if you have a USB web camera and a TV tuner, sometimes + /dev/video0 refers to the + camera and /dev/video1 refers + to the tuner, and sometimes after a reboot the order changes + to the opposite one. For all classes of hardware except sound + cards and network cards, this is fixable by creating Udev + rules for custom persistent symlinks. The case of network + cards is covered separately in Section 7.5, + “General Network Configuration”, and sound + card configuration can be found in + BLFS. +

+

+ For each of your devices that is likely to have this problem + (even if the problem doesn't exist in your current Linux + distribution), find the corresponding directory under + /sys/class or /sys/block. For video devices, this may be + /sys/class/video4linux/videoX. Figure out the + attributes that identify the device uniquely (usually, vendor + and product IDs and/or serial numbers work): +

+
+udevadm info -a -p /sys/class/video4linux/video0
+
+

+ Then write rules that create the symlinks, e.g.: +

+
+cat > /etc/udev/rules.d/83-duplicate_devs.rules << "EOF"
+
+# Persistent symlinks for webcam and tuner
+KERNEL=="video*", ATTRS{idProduct}=="1910", ATTRS{idVendor}=="0d81", \
+    SYMLINK+="webcam"
+KERNEL=="video*", ATTRS{device}=="0x036f", ATTRS{vendor}=="0x109e", \
+    SYMLINK+="tvtuner"
+
+EOF
+
+

+ The result is that /dev/video0 + and /dev/video1 devices still + refer randomly to the tuner and the web camera (and thus + should never be used directly), but there are symlinks + /dev/tvtuner and /dev/webcam that always point to the + correct device. +

+
+
+
+
+
+
+

+ 7.5. General Network + Configuration +

+
+
+
+
+

+ 7.5.1. Creating Network Interface Configuration Files +

+

+ Which interfaces are brought up and down by the network + script usually depends on the files in /etc/sysconfig/. This directory should + contain a file for each interface to be configured, such as + ifconfig.xyz, where + xyz should describe the network + card. The interface name (e.g. eth0) is usually appropriate. + Inside this file are attributes to this interface, such as + its IP address(es), subnet masks, and so forth. It is + necessary that the stem of the filename be ifconfig. +

+
+

+ Note +

+

+ If the procedure in the previous section was not used, Udev + will assign network card interface names based on system + physical characteristics such as enp2s1. If you are not + sure what your interface name is, you can always run + ip link or + ls + /sys/class/net after you have booted your + system. +

+
+

+ The following command creates a sample file for the + eth0 device with a + static IP address: +

+
+cd /etc/sysconfig/
+cat > ifconfig.eth0 << "EOF"
+ONBOOT=yes
+IFACE=eth0
+SERVICE=ipv4-static
+IP=192.168.1.2
+GATEWAY=192.168.1.1
+PREFIX=24
+BROADCAST=192.168.1.255
+EOF
+
+

+ The values of these variables must be changed in every file + to match the proper setup. +

+

+ If the ONBOOT variable is set to + yes the System V network script + will bring up the Network Interface Card (NIC) during booting + of the system. If set to anything but yes + the NIC will be ignored by the network script and not be + automatically brought up. The interface can be manually + started or stopped with the ifup and ifdown commands. +

+

+ The IFACE variable defines the + interface name, for example, eth0. It is required for all + network device configuration files. +

+

+ The SERVICE variable defines the + method used for obtaining the IP address. The LFS-Bootscripts + package has a modular IP assignment format, and creating + additional files in the /lib/services/ directory allows other IP + assignment methods. This is commonly used for Dynamic Host + Configuration Protocol (DHCP), which is addressed in the BLFS + book. +

+

+ The GATEWAY variable should + contain the default gateway IP address, if one is present. If + not, then comment out the variable entirely. +

+

+ The PREFIX variable contains the + number of bits used in the subnet. Each octet in an IP + address is 8 bits. If the subnet's netmask is 255.255.255.0, + then it is using the first three octets (24 bits) to specify + the network number. If the netmask is 255.255.255.240, it + would be using the first 28 bits. Prefixes longer than 24 + bits are commonly used by DSL and cable-based Internet + Service Providers (ISPs). In this example (PREFIX=24), the + netmask is 255.255.255.0. Adjust the PREFIX variable according to your specific + subnet. If omitted, the PREFIX defaults to 24. +

+

+ For more information see the ifup man page. +

+
+
+

+ 7.5.2. Creating + the /etc/resolv.conf File +

+

+ The system will need some means of obtaining Domain Name + Service (DNS) name resolution to resolve Internet domain + names to IP addresses, and vice versa. This is best achieved + by placing the IP address of the DNS server, available from + the ISP or network administrator, into /etc/resolv.conf. Create the file by + running the following: +

+
+cat > /etc/resolv.conf << "EOF"
+# Begin /etc/resolv.conf
+
+domain <Your Domain Name>
+nameserver <IP address of your primary nameserver>
+nameserver <IP address of your secondary nameserver>
+
+# End /etc/resolv.conf
+EOF
+
+

+ The domain statement can be + omitted or replaced with a search statement. See the man page for + resolv.conf for more details. +

+

+ Replace <IP address of the + nameserver> with the IP address of the DNS + most appropriate for the setup. There will often be more than + one entry (requirements demand secondary servers for fallback + capability). If you only need or want one DNS server, remove + the second nameserver + line from the file. The IP address may also be a router on + the local network. +

+
+

+ Note +

+

+ The Google Public IPv4 DNS addresses are 8.8.8.8 and + 8.8.4.4. +

+
+
+
+

+ 7.5.3. Configuring the system + hostname +

+

+ During the boot process, the file /etc/hostname is used for establishing the + system's hostname. +

+

+ Create the /etc/hostname file + and enter a hostname by running: +

+
+echo "<lfs>" > /etc/hostname
+
+

+ <lfs> needs + to be replaced with the name given to the computer. Do not + enter the Fully Qualified Domain Name (FQDN) here. That + information is put in the /etc/hosts file. +

+
+
+

+ 7.5.4. + Customizing the /etc/hosts File +

+

+ Decide on the IP address, fully-qualified domain name (FQDN), + and possible aliases for use in the /etc/hosts file. The syntax is: +

+
+IP_address myhost.example.org aliases
+
+

+ Unless the computer is to be visible to the Internet (i.e., + there is a registered domain and a valid block of assigned IP + addresses—most users do not have this), make sure that + the IP address is in the private network IP address range. + Valid ranges are: +

+
+Private Network Address Range      Normal Prefix
+10.0.0.1 - 10.255.255.254           8
+172.x.0.1 - 172.x.255.254           16
+192.168.y.1 - 192.168.y.254         24
+
+

+ x can be any number in the range 16-31. y can be any number + in the range 0-255. +

+

+ A valid private IP address could be 192.168.1.1. A valid FQDN + for this IP could be lfs.example.org. +

+

+ Even if not using a network card, a valid FQDN is still + required. This is necessary for certain programs to operate + correctly. +

+

+ Create the /etc/hosts file by + running: +

+
+cat > /etc/hosts << "EOF"
+# Begin /etc/hosts
+
+127.0.0.1 localhost
+127.0.1.1 <FQDN> <HOSTNAME>
+<192.168.1.1> <FQDN> <HOSTNAME> [alias1] [alias2 ...]
+::1       localhost ip6-localhost ip6-loopback
+ff02::1   ip6-allnodes
+ff02::2   ip6-allrouters
+
+# End /etc/hosts
+EOF
+
+

+ The <192.168.1.1>, + <FQDN>, and + <HOSTNAME> + values need to be changed for specific uses or requirements + (if assigned an IP address by a network/system administrator + and the machine will be connected to an existing network). + The optional alias name(s) can be omitted. +

+
+
+
+
+
+
+

+ 7.6. System V Bootscript + Usage and Configuration +

+
+
+
+
+

+ 7.6.1. How Do the System V Bootscripts Work? +

+

+ Linux uses a special booting facility named SysVinit that is + based on a concept of run-levels. It can be quite + different from one system to another, so it cannot be assumed + that because things worked in one particular Linux + distribution, they should work the same in LFS too. LFS has + its own way of doing things, but it respects generally + accepted standards. +

+

+ SysVinit (which will be referred to as init + from now on) works using a run-levels scheme. There are seven + (numbered 0 to 6) run-levels (actually, there are more + run-levels, but they are for special cases and are generally + not used. See init(8) for more + details), and each one of those corresponds to the actions + the computer is supposed to perform when it starts up. The + default run-level is 3. Here are the descriptions of the + different run-levels as they are implemented: +

+
+

+ 0: halt the computer
+ 1: single-user mode
+ 2: multi-user mode without networking
+ + 3: multi-user mode with networking
+ + 4: reserved for customization, otherwise does the same as 3
+ + 5: same as 4, it is usually used for GUI login (like X's xdm or KDE's kdm)
+ + 6: reboot the computer +

+
+
+
+

+ 7.6.2. + Configuring Sysvinit +

+

+ During the kernel initialization, the first program that is + run is either specified on the command line or, by default + init. This + program reads the initialization file /etc/inittab. Create this file with: +

+
+cat > /etc/inittab << "EOF"
+# Begin /etc/inittab
+
+id:3:initdefault:
+
+si::sysinit:/etc/rc.d/init.d/rc S
+
+l0:0:wait:/etc/rc.d/init.d/rc 0
+l1:S1:wait:/etc/rc.d/init.d/rc 1
+l2:2:wait:/etc/rc.d/init.d/rc 2
+l3:3:wait:/etc/rc.d/init.d/rc 3
+l4:4:wait:/etc/rc.d/init.d/rc 4
+l5:5:wait:/etc/rc.d/init.d/rc 5
+l6:6:wait:/etc/rc.d/init.d/rc 6
+
+ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now
+
+su:S016:once:/sbin/sulogin
+
+1:2345:respawn:/sbin/agetty --noclear tty1 9600
+2:2345:respawn:/sbin/agetty tty2 9600
+3:2345:respawn:/sbin/agetty tty3 9600
+4:2345:respawn:/sbin/agetty tty4 9600
+5:2345:respawn:/sbin/agetty tty5 9600
+6:2345:respawn:/sbin/agetty tty6 9600
+
+# End /etc/inittab
+EOF
+
+

+ An explanation of this initialization file is in the man page + for inittab. For LFS, + the key command that is run is rc. The initialization file + above will instruct rc to run all the scripts + starting with an S in the /etc/rc.d/rcS.d directory followed by all + the scripts starting with an S in the /etc/rc.d/rc?.d directory where the + question mark is specified by the initdefault value. +

+

+ As a convenience, the rc script reads a library + of functions in /lib/lsb/init-functions. This library also + reads an optional configuration file, /etc/sysconfig/rc.site. Any of the system + configuration file parameters described in subsequent + sections can be alternatively placed in this file allowing + consolidation of all system parameters in this one file. +

+

+ As a debugging convenience, the functions script also logs + all output to /run/var/bootlog. + Since the /run directory is a + tmpfs, this file is not persistent across boots, however it + is appended to the more permanent file /var/log/boot.log at the end of the boot + process. +

+
+
+
+
+

+ 7.6.2.1. Changing Run Levels +

+
+
+
+

+ Changing run-levels is done with init <runlevel>, + where <runlevel> is the + target run-level. For example, to reboot the computer, a + user could issue the init + 6 command, which is an alias for the + reboot + command. Likewise, init + 0 is an alias for the halt command. +

+

+ There are a number of directories under /etc/rc.d that look like rc?.d (where ? is the number of the + run-level) and rcsysinit.d, + all containing a number of symbolic links. Some begin with + a K, the others + begin with an S, and + all of them have two numbers following the initial letter. + The K means to stop (kill) a service and the S means to + start a service. The numbers determine the order in which + the scripts are run, from 00 to 99—the lower the + number the earlier it gets executed. When init switches to another + run-level, the appropriate services are either started or + stopped, depending on the runlevel chosen. +

+

+ The real scripts are in /etc/rc.d/init.d. They do the actual + work, and the symlinks all point to them. K links and S + links point to the same script in /etc/rc.d/init.d. This is because the + scripts can be called with different parameters like + start, stop, restart, reload, and status. When a K link is + encountered, the appropriate script is run with the + stop argument. When + an S link is encountered, the appropriate script is run + with the start + argument. +

+

+ There is one exception to this explanation. Links that + start with an S in + the rc0.d and rc6.d directories will not cause anything + to be started. They will be called with the parameter + stop to stop + something. The logic behind this is that when a user is + going to reboot or halt the system, nothing needs to be + started. The system only needs to be stopped. +

+

+ These are descriptions of what the arguments make the + scripts do: +

+
+
+
+ start +
+
+

+ The service is started. +

+
+
+ stop +
+
+

+ The service is stopped. +

+
+
+ restart +
+
+

+ The service is stopped and then started again. +

+
+
+ reload +
+
+

+ The configuration of the service is updated. This is + used after the configuration file of a service was + modified, when the service does not need to be + restarted. +

+
+
+ status +
+
+

+ Tells if the service is running and with which PIDs. +

+
+
+
+

+ Feel free to modify the way the boot process works (after + all, it is your own LFS system). The files given here are + an example of how it can be done. +

+
+
+
+

+ 7.6.3. Udev Bootscripts +

+

+ The /etc/rc.d/init.d/udev + initscript starts udevd, triggers any + "coldplug" devices that have already been created by the + kernel and waits for any rules to complete. The script also + unsets the uevent handler from the default of /sbin/hotplug . This is done because the + kernel no longer needs to call out to an external binary. + Instead udevd + will listen on a netlink socket for uevents that the kernel + raises. +

+

+ The /etc/rc.d/init.d/udev_retry + initscript takes care of re-triggering events for subsystems + whose rules may rely on filesystems that are not mounted + until the mountfs script is run (in + particular, /usr and + /var may cause this). This + script runs after the mountfs script, so those + rules (if re-triggered) should succeed the second time + around. It is configured from the /etc/sysconfig/udev_retry file; any words + in this file other than comments are considered subsystem + names to trigger at retry time. To find the subsystem of a + device, use udevadm info + --attribute-walk <device> where + <device> is an absolute path in /dev or /sys such as + /dev/sr0 or /sys/class/rtc. +

+

+ For information on kernel module loading and udev, see + Section 7.3.2.3, + “Module Loading”. +

+
+
+

+ 7.6.4. + Configuring the System Clock +

+

+ The setclock + script reads the time from the hardware clock, also known as + the BIOS or the Complementary Metal Oxide Semiconductor + (CMOS) clock. If the hardware clock is set to UTC, this + script will convert the hardware clock's time to the local + time using the /etc/localtime + file (which tells the hwclock program which + timezone the user is in). There is no way to detect whether + or not the hardware clock is set to UTC, so this needs to be + configured manually. +

+

+ The setclock is + run via udev when the kernel + detects the hardware capability upon boot. It can also be run + manually with the stop parameter to store the system time to + the CMOS clock. +

+

+ If you cannot remember whether or not the hardware clock is + set to UTC, find out by running the hwclock --localtime --show + command. This will display what the current time is according + to the hardware clock. If this time matches whatever your + watch says, then the hardware clock is set to local time. If + the output from hwclock is not local time, + chances are it is set to UTC time. Verify this by adding or + subtracting the proper amount of hours for the timezone to + the time shown by hwclock. For example, if + you are currently in the MST timezone, which is also known as + GMT -0700, add seven hours to the local time. +

+

+ Change the value of the UTC + variable below to a value of 0 (zero) if the hardware clock + is not set to UTC + time. +

+

+ Create a new file /etc/sysconfig/clock by running the + following: +

+
+cat > /etc/sysconfig/clock << "EOF"
+# Begin /etc/sysconfig/clock
+
+UTC=1
+
+# Set this to any options you might need to give to hwclock,
+# such as machine hardware clock type for Alphas.
+CLOCKPARAMS=
+
+# End /etc/sysconfig/clock
+EOF
+
+

+ A good hint explaining how to deal with time on LFS is + available at + http://www.linuxfromscratch.org/hints/downloads/files/time.txt. + It explains issues such as time zones, UTC, and the + TZ environment variable. +

+
+

+ Note +

+

+ The CLOCKPARAMS and UTC paramaters may be alternatively set + in the /etc/sysconfig/rc.site + file. +

+
+
+
+

+ 7.6.5. Configuring the Linux Console +

+

+ This section discusses how to configure the console bootscript that + sets up the keyboard map, console font and console kernel log + level. If non-ASCII characters (e.g., the copyright sign, the + British pound sign and Euro symbol) will not be used and the + keyboard is a U.S. one, much of this section can be skipped. + Without the configuration file, (or equivalent settings in + rc.site), the console bootscript will do + nothing. +

+

+ The console + script reads the /etc/sysconfig/console file for + configuration information. Decide which keymap and screen + font will be used. Various language-specific HOWTOs can also + help with this, see http://www.tldp.org/HOWTO/HOWTO-INDEX/other-lang.html. + If still in doubt, look in the /usr/share/keymaps and /usr/share/consolefonts directories for + valid keymaps and screen fonts. Read loadkeys(1) and setfont(8) manual pages to determine the + correct arguments for these programs. +

+

+ The /etc/sysconfig/console file + should contain lines of the form: VARIABLE="value". The + following variables are recognized: +

+
+
+
+ LOGLEVEL +
+
+

+ This variable specifies the log level for kernel + messages sent to the console as set by dmesg. Valid levels + are from "1" (no messages) to "8". The default level is + "7". +

+
+
+ KEYMAP +
+
+

+ This variable specifies the arguments for the + loadkeys + program, typically, the name of keymap to load, e.g., + it. If this variable is + not set, the bootscript will not run the loadkeys program, and + the default kernel keymap will be used. Note that a few + keymaps have multiple versions with the same name (cz + and its variants in qwerty/ and qwertz/, es in olpc/ + and qwerty/, and trf in fgGIod/ and qwerty/). In these + cases the parent directory should also be specified + (e.g. qwerty/es) to ensure the proper keymap is loaded. +

+
+
+ KEYMAP_CORRECTIONS +
+
+

+ This (rarely used) variable specifies the arguments for + the second call to the loadkeys program. + This is useful if the stock keymap is not completely + satisfactory and a small adjustment has to be made. + E.g., to include the Euro sign into a keymap that + normally doesn't have it, set this variable to + euro2. +

+
+
+ FONT +
+
+

+ This variable specifies the arguments for the + setfont + program. Typically, this includes the font name, + -m, and the name of the + application character map to load. E.g., in order to + load the lat1-16 font together with + the 8859-1 application + character map (as it is appropriate in the USA), set + this variable to lat1-16 -m + 8859-1. In UTF-8 mode, the kernel + uses the application character map for conversion of + composed 8-bit key codes in the keymap to UTF-8, and + thus the argument of the "-m" parameter should be set + to the encoding of the composed key codes in the + keymap. +

+
+
+ UNICODE +
+
+

+ Set this variable to 1, yes or true in order to put the + console into UTF-8 mode. This is useful in UTF-8 based + locales and harmful otherwise. +

+
+
+ LEGACY_CHARSET +
+
+

+ For many keyboard layouts, there is no stock Unicode + keymap in the Kbd package. The console bootscript + will convert an available keymap to UTF-8 on the fly if + this variable is set to the encoding of the available + non-UTF-8 keymap. +

+
+
+
+

+ Some examples: +

+
+
    +
  • +

    + For a non-Unicode setup, only the KEYMAP and FONT + variables are generally needed. E.g., for a Polish + setup, one would use: +

    +
    +cat > /etc/sysconfig/console << "EOF"
    +# Begin /etc/sysconfig/console
    +
    +KEYMAP="pl2"
    +FONT="lat2a-16 -m 8859-2"
    +
    +# End /etc/sysconfig/console
    +EOF
    +
    +
  • +
  • +

    + As mentioned above, it is sometimes necessary to adjust + a stock keymap slightly. The following example adds the + Euro symbol to the German keymap: +

    +
    +cat > /etc/sysconfig/console << "EOF"
    +# Begin /etc/sysconfig/console
    +
    +KEYMAP="de-latin1"
    +KEYMAP_CORRECTIONS="euro2"
    +FONT="lat0-16 -m 8859-15"
    +UNICODE=1
    +
    +# End /etc/sysconfig/console
    +EOF
    +
    +
  • +
  • +

    + The following is a Unicode-enabled example for + Bulgarian, where a stock UTF-8 keymap exists: +

    +
    +cat > /etc/sysconfig/console << "EOF"
    +# Begin /etc/sysconfig/console
    +
    +UNICODE="1"
    +KEYMAP="bg_bds-utf8"
    +FONT="LatArCyrHeb-16"
    +
    +# End /etc/sysconfig/console
    +EOF
    +
    +
  • +
  • +

    + Due to the use of a 512-glyph LatArCyrHeb-16 font in + the previous example, bright colors are no longer + available on the Linux console unless a framebuffer is + used. If one wants to have bright colors without + framebuffer and can live without characters not + belonging to his language, it is still possible to use + a language-specific 256-glyph font, as illustrated + below: +

    +
    +cat > /etc/sysconfig/console << "EOF"
    +# Begin /etc/sysconfig/console
    +
    +UNICODE="1"
    +KEYMAP="bg_bds-utf8"
    +FONT="cyr-sun16"
    +
    +# End /etc/sysconfig/console
    +EOF
    +
    +
  • +
  • +

    + The following example illustrates keymap autoconversion + from ISO-8859-15 to UTF-8 and enabling dead keys in + Unicode mode: +

    +
    +cat > /etc/sysconfig/console << "EOF"
    +# Begin /etc/sysconfig/console
    +
    +UNICODE="1"
    +KEYMAP="de-latin1"
    +KEYMAP_CORRECTIONS="euro2"
    +LEGACY_CHARSET="iso-8859-15"
    +FONT="LatArCyrHeb-16 -m 8859-15"
    +
    +# End /etc/sysconfig/console
    +EOF
    +
    +
  • +
  • +

    + Some keymaps have dead keys (i.e., keys that don't + produce a character by themselves, but put an accent on + the character produced by the next key) or define + composition rules (such as: press Ctrl+. A E to + get Æ in the default keymap). + Linux-4.20.12 interprets dead keys and composition + rules in the keymap correctly only when the source + characters to be composed together are not multibyte. + This deficiency doesn't affect keymaps for European + languages, because there accents are added to + unaccented ASCII characters, or two ASCII characters + are composed together. However, in UTF-8 mode it is a + problem, e.g., for the Greek language, where one + sometimes needs to put an accent on the letter + alpha. The solution is + either to avoid the use of UTF-8, or to install the X + window system that doesn't have this limitation in its + input handling. +

    +
  • +
  • +

    + For Chinese, Japanese, Korean and some other languages, + the Linux console cannot be configured to display the + needed characters. Users who need such languages should + install the X Window System, fonts that cover the + necessary character ranges, and the proper input method + (e.g., SCIM, it supports a wide variety of languages). +

    +
  • +
+
+
+

+ Note +

+

+ The /etc/sysconfig/console + file only controls the Linux text console localization. It + has nothing to do with setting the proper keyboard layout + and terminal fonts in the X Window System, with ssh + sessions or with a serial console. In such situations, + limitations mentioned in the last two list items above do + not apply. +

+
+
+
+

+ 7.6.6. Creating Files at Boot +

+

+ At times, it is desired to create files at boot time. For + instance, the /tmp/.ICE-unix + directory may be desired. This can be done by creating an + entry in the /etc/sysconfig/createfiles configuration + script. The format of this file is embedded in the comments + of the default configuration file. +

+
+
+

+ 7.6.7. Configuring the sysklogd + Script +

+

+ The sysklogd script invokes the + syslogd program + as a part of System V initialization. The -m 0 option turns off the + periodic timestamp mark that syslogd writes to the log + files every 20 minutes by default. If you want to turn on + this periodic timestamp mark, edit /etc/sysconfig/rc.site and define the + variable SYSKLOGD_PARMS to the desired value. For instance, + to remove all parameters, set the variable to a null value: +

+
+SYSKLOGD_PARMS=
+
+

+ See man + syslogd for more options. +

+
+
+

+ 7.6.8. The + rc.site File +

+

+ The optional /etc/sysconfig/rc.site file contains + settings that are automatically set for each SystemV boot + script. It can alternatively set the values specified in the + hostname, console, and clock files in the /etc/sysconfig/ directory. If the + associated variables are present in both these separate files + and rc.site, the values in the + script specific files have precedence. +

+

+ rc.site also contains + parameters that can customize other aspects of the boot + process. Setting the IPROMPT variable will enable selective + running of bootscripts. Other options are described in the + file comments. The default version of the file is as follows: +

+
+# rc.site
+# Optional parameters for boot scripts.
+
+# Distro Information
+# These values, if specified here, override the defaults
+#DISTRO="Linux From Scratch" # The distro name
+#DISTRO_CONTACT="lfs-dev@linuxfromscratch.org" # Bug report address
+#DISTRO_MINI="LFS" # Short name used in filenames for distro config
+
+# Define custom colors used in messages printed to the screen
+
+# Please consult `man console_codes` for more information
+# under the "ECMA-48 Set Graphics Rendition" section
+#
+# Warning: when switching from a 8bit to a 9bit font,
+# the linux console will reinterpret the bold (1;) to
+# the top 256 glyphs of the 9bit font.  This does
+# not affect framebuffer consoles
+
+# These values, if specified here, override the defaults
+#BRACKET="\\033[1;34m" # Blue
+#FAILURE="\\033[1;31m" # Red
+#INFO="\\033[1;36m"    # Cyan
+#NORMAL="\\033[0;39m"  # Grey
+#SUCCESS="\\033[1;32m" # Green
+#WARNING="\\033[1;33m" # Yellow
+
+# Use a colored prefix
+# These values, if specified here, override the defaults
+#BMPREFIX="     "
+#SUCCESS_PREFIX="${SUCCESS}  *  ${NORMAL}"
+#FAILURE_PREFIX="${FAILURE}*****${NORMAL}"
+#WARNING_PREFIX="${WARNING} *** ${NORMAL}"
+
+# Manually seet the right edge of message output (characters)
+# Useful when resetting console font during boot to override
+# automatic screen width detection
+#COLUMNS=120
+
+# Interactive startup
+#IPROMPT="yes" # Whether to display the interactive boot prompt
+#itime="3"    # The amount of time (in seconds) to display the prompt
+
+# The total length of the distro welcome string, without escape codes
+#wlen=$(echo "Welcome to ${DISTRO}" | wc -c )
+#welcome_message="Welcome to ${INFO}${DISTRO}${NORMAL}"
+
+# The total length of the interactive string, without escape codes
+#ilen=$(echo "Press 'I' to enter interactive startup" | wc -c )
+#i_message="Press '${FAILURE}I${NORMAL}' to enter interactive startup"
+
+# Set scripts to skip the file system check on reboot
+#FASTBOOT=yes
+
+# Skip reading from the console
+#HEADLESS=yes
+
+# Write out fsck progress if yes
+#VERBOSE_FSCK=no
+
+# Speed up boot without waiting for settle in udev
+#OMIT_UDEV_SETTLE=y
+
+# Speed up boot without waiting for settle in udev_retry
+#OMIT_UDEV_RETRY_SETTLE=yes
+
+# Skip cleaning /tmp if yes
+#SKIPTMPCLEAN=no
+
+# For setclock
+#UTC=1
+#CLOCKPARAMS=
+
+# For consolelog (Note that the default, 7=debug, is noisy)
+#LOGLEVEL=7
+
+# For network
+#HOSTNAME=mylfs
+
+# Delay between TERM and KILL signals at shutdown
+#KILLDELAY=3
+
+# Optional sysklogd parameters
+#SYSKLOGD_PARMS="-m 0"
+
+# Console parameters
+#UNICODE=1
+#KEYMAP="de-latin1"
+#KEYMAP_CORRECTIONS="euro2"
+#FONT="lat0-16 -m 8859-15"
+#LEGACY_CHARSET=
+
+
+
+
+
+
+

+ 7.6.8.1. Customizing the + Boot and Shutdown Scripts +

+
+
+
+

+ The LFS boot scripts boot and shut down a system in a + fairly efficient manner, but there are a few tweaks that + you can make in the rc.site file to improve speed even more + and to adjust messages according to your preferences. To do + this, adjust the settings in the /etc/sysconfig/rc.site file above. +

+
+
    +
  • +

    + During the boot script udev, there is a call to + udev + settle that requires some time to + complete. This time may or may not be required + depending on devices present in the system. If you + only have simple partitions and a single ethernet + card, the boot process will probably not need to wait + for this command. To skip it, set the variable + OMIT_UDEV_SETTLE=y. +

    +
  • +
  • +

    + The boot script udev_retry also runs udev settle by + default. This command is only needed by default if + the /var directory is + separately mounted. This is because the clock needs + the file /var/lib/hwclock/adjtime. Other + customizations may also need to wait for udev to + complete, but in many installations it is not needed. + Skip the command by setting the variable + OMIT_UDEV_RETRY_SETTLE=y. +

    +
  • +
  • +

    + By default, the file system checks are silent. This + can appear to be a delay during the bootup process. + To turn on the fsck output, set + the variable VERBOSE_FSCK=y. +

    +
  • +
  • +

    + When rebooting, you may want to skip the filesystem + check, fsck, completely. + To do this, either create the file /fastboot or reboot the system with + the command /sbin/shutdown -f -r + now. On the other hand, you can force + all file systems to be checked by creating + /forcefsck or running + shutdown with the + -F parameter + instead of -f. +

    +

    + Setting the variable FASTBOOT=y will disable + fsck + during the boot process until it is removed. This is + not recommended on a permanent basis. +

    +
  • +
  • +

    + Normally, all files in the /tmp directory are deleted at boot + time. Depending on the number of files or directories + present, this can cause a noticeable delay in the + boot process. To skip removing these files set the + variable SKIPTMPCLEAN=y. +

    +
  • +
  • +

    + During shutdown, the init program sends + a TERM signal to each program it has started (e.g. + agetty), waits for a set time (default 3 seconds), + and sends each process a KILL signal and waits again. + This process is repeated in the sendsignals script + for any processes that are not shut down by their own + scripts. The delay for init can be set by + passing a parameter. For example to remove the delay + in init, pass the -t0 + parameter when shutting down or rebooting (e.g. + /sbin/shutdown -t0 -r + now). The delay for the sendsignals script + can be skipped by setting the parameter KILLDELAY=0. +

    +
  • +
+
+
+
+
+
+
+
+
+

+ 7.7. The Bash Shell Startup + Files +

+
+
+
+

+ The shell program /bin/bash (hereafter referred + to as the + shell) uses a collection of startup files + to help create an environment to run in. Each file has a + specific use and may affect login and interactive environments + differently. The files in the /etc directory provide global settings. If an + equivalent file exists in the home directory, it may override + the global settings. +

+

+ An interactive login shell is started after a successful login, + using /bin/login, + by reading the /etc/passwd file. + An interactive non-login shell is started at the command-line + (e.g., [prompt]$/bin/bash). A non-interactive + shell is usually present when a shell script is running. It is + non-interactive because it is processing a script and not + waiting for user input between commands. +

+

+ For more information, see info + bash under the Bash + Startup Files and Interactive Shells section. +

+

+ The files /etc/profile and + ~/.bash_profile are read when the + shell is invoked as an interactive login shell. +

+

+ The base /etc/profile below sets + some environment variables necessary for native language + support. Setting them properly results in: +

+
+
    +
  • +

    + The output of programs translated into the native + language +

    +
  • +
  • +

    + Correct classification of characters into letters, digits + and other classes. This is necessary for bash to properly accept + non-ASCII characters in command lines in non-English + locales +

    +
  • +
  • +

    + The correct alphabetical sorting order for the country +

    +
  • +
  • +

    + Appropriate default paper size +

    +
  • +
  • +

    + Correct formatting of monetary, time, and date values +

    +
  • +
+
+

+ Replace <ll> + below with the two-letter code for the desired language (e.g., + en) and <CC> with the two-letter + code for the appropriate country (e.g., GB). + <charmap> + should be replaced with the canonical charmap for your chosen + locale. Optional modifiers such as @euro + may also be present. +

+

+ The list of all locales supported by Glibc can be obtained by + running the following command: +

+
+locale -a
+
+

+ Charmaps can have a number of aliases, e.g., ISO-8859-1 is also referred to as + iso8859-1 and iso88591. Some applications cannot + handle the various synonyms correctly (e.g., require that + UTF-8 is written as UTF-8, + not utf8), so it is safest in most + cases to choose the canonical name for a particular locale. To + determine the canonical name, run the following command, where + <locale name> + is the output given by locale + -a for your preferred locale (en_GB.iso88591 in our example). +

+
+LC_ALL=<locale name> locale charmap
+
+

+ For the en_GB.iso88591 locale, the above + command will print: +

+
+ISO-8859-1
+
+

+ This results in a final locale setting of en_GB.ISO-8859-1. It is important + that the locale found using the heuristic above is tested prior + to it being added to the Bash startup files: +

+
+LC_ALL=<locale name> locale language
+LC_ALL=<locale name> locale charmap
+LC_ALL=<locale name> locale int_curr_symbol
+LC_ALL=<locale name> locale int_prefix
+
+

+ The above commands should print the language name, the + character encoding used by the locale, the local currency, and + the prefix to dial before the telephone number in order to get + into the country. If any of the commands above fail with a + message similar to the one shown below, this means that your + locale was either not installed in Chapter 6 or is not + supported by the default installation of Glibc. +

+
+locale: Cannot set LC_* to default locale: No such file or directory
+
+

+ If this happens, you should either install the desired locale + using the localedef command, or + consider choosing a different locale. Further instructions + assume that there are no such error messages from Glibc. +

+

+ Some packages beyond LFS may also lack support for your chosen + locale. One example is the X library (part of the X Window + System), which outputs the following error message if the + locale does not exactly match one of the character map names in + its internal files: +

+
+Warning: locale not supported by Xlib, locale set to C
+
+

+ In several cases Xlib expects that the character map will be + listed in uppercase notation with canonical dashes. For + instance, "ISO-8859-1" rather than "iso88591". It is also + possible to find an appropriate specification by removing the + charmap part of the locale specification. This can be checked + by running the locale + charmap command in both locales. For example, + one would have to change "de_DE.ISO-8859-15@euro" to + "de_DE@euro" in order to get this locale recognized by Xlib. +

+

+ Other packages can also function incorrectly (but may not + necessarily display any error messages) if the locale name does + not meet their expectations. In those cases, investigating how + other Linux distributions support your locale might provide + some useful information. +

+

+ Once the proper locale settings have been determined, create + the /etc/profile file: +

+
+cat > /etc/profile << "EOF"
+# Begin /etc/profile
+
+export LANG=<ll>_<CC>.<charmap><@modifiers>
+
+# End /etc/profile
+EOF
+
+

+ The C (default) and en_US + (the recommended one for United States English users) locales + are different. C uses the US-ASCII 7-bit + character set, and treats bytes with the high bit set as + invalid characters. That's why, e.g., the ls command substitutes them + with question marks in that locale. Also, an attempt to send + mail with such characters from Mutt or Pine results in + non-RFC-conforming messages being sent (the charset in the + outgoing mail is indicated as unknown + 8-bit). So you can use the C + locale only if you are sure that you will never need 8-bit + characters. +

+

+ UTF-8 based locales are not supported well by some programs. + Work is in progress to document and, if possible, fix such + problems, see + http://www.linuxfromscratch.org/blfs/view/8.4/introduction/locale-issues.html. +

+
+
+
+
+
+

+ 7.8. Creating the + /etc/inputrc File +

+
+
+
+

+ The inputrc file is the + configuration file for the Readline library, which provides + editing capabilities while the user is entering a line from the + terminal. It works by translating keyboard inputs into specific + actions. Readline is used by Bash and most other shells as well + as many other applications. +

+

+ Most people do not need user-specific functionality so the + command below creates a global /etc/inputrc used by everyone who logs in. If + you later decide you need to override the defaults on a + per-user basis, you can create a .inputrc file in the user's home directory + with the modified mappings. +

+

+ For more information on how to edit the inputrc file, see info bash under the + Readline Init File + section. info + readline is also a good source of information. +

+

+ Below is a generic global inputrc + along with comments to explain what the various options do. + Note that comments cannot be on the same line as commands. + Create the file using the following command: +

+
+cat > /etc/inputrc << "EOF"
+# Begin /etc/inputrc
+# Modified by Chris Lynn <roryo@roryo.dynup.net>
+
+# Allow the command prompt to wrap to the next line
+set horizontal-scroll-mode Off
+
+# Enable 8bit input
+set meta-flag On
+set input-meta On
+
+# Turns off 8th bit stripping
+set convert-meta Off
+
+# Keep the 8th bit for display
+set output-meta On
+
+# none, visible or audible
+set bell-style none
+
+# All of the following map the escape sequence of the value
+# contained in the 1st argument to the readline specific functions
+"\eOd": backward-word
+"\eOc": forward-word
+
+# for linux console
+"\e[1~": beginning-of-line
+"\e[4~": end-of-line
+"\e[5~": beginning-of-history
+"\e[6~": end-of-history
+"\e[3~": delete-char
+"\e[2~": quoted-insert
+
+# for xterm
+"\eOH": beginning-of-line
+"\eOF": end-of-line
+
+# for Konsole
+"\e[H": beginning-of-line
+"\e[F": end-of-line
+
+# End /etc/inputrc
+EOF
+
+
+
+
+
+
+

+ 7.9. Creating the /etc/shells + File +

+
+
+
+

+ The shells file contains a list + of login shells on the system. Applications use this file to + determine whether a shell is valid. For each shell a single + line should be present, consisting of the shell's path, + relative to the root of the directory structure (/). +

+

+ For example, this file is consulted by chsh to determine whether an + unprivileged user may change the login shell for her own + account. If the command name is not listed, the user will be + denied of change. +

+

+ It is a requirement for applications such as GDM which does not populate the face + browser if it can't find /etc/shells, or FTP daemons which + traditionally disallow access to users with shells not included + in this file. +

+
+cat > /etc/shells << "EOF"
+# Begin /etc/shells
+
+/bin/sh
+/bin/bash
+
+# End /etc/shells
+EOF
+
+
+
+
+
+
+
+

+ Chapter 8. Making the LFS + System Bootable +

+
+
+
+
+
+
+
+

+ 8.1. Introduction +

+
+
+
+

+ It is time to make the LFS system bootable. This chapter + discusses creating an fstab file, + building a kernel for the new LFS system, and installing the + GRUB boot loader so that the LFS system can be selected for + booting at startup. +

+
+
+
+
+
+

+ 8.2. Creating the /etc/fstab + File +

+
+
+
+

+ The /etc/fstab file is used by + some programs to determine where file systems are to be mounted + by default, in which order, and which must be checked (for + integrity errors) prior to mounting. Create a new file systems + table like this: +

+
+cat > /etc/fstab << "EOF"
+# Begin /etc/fstab
+
+# file system  mount-point  type     options             dump  fsck
+#                                                              order
+
+/dev/<xxx>     /            <fff>    defaults            1     1
+/dev/<yyy>     swap         swap     pri=1               0     0
+proc           /proc        proc     nosuid,noexec,nodev 0     0
+sysfs          /sys         sysfs    nosuid,noexec,nodev 0     0
+devpts         /dev/pts     devpts   gid=5,mode=620      0     0
+tmpfs          /run         tmpfs    defaults            0     0
+devtmpfs       /dev         devtmpfs mode=0755,nosuid    0     0
+
+# End /etc/fstab
+EOF
+
+

+ Replace <xxx>, + <yyy>, and + <fff> with the + values appropriate for the system, for example, sda2, sda5, and + ext4. For details on the six + fields in this file, see man 5 + fstab. +

+

+ Filesystems with MS-DOS or Windows origin (i.e. vfat, ntfs, + smbfs, cifs, iso9660, udf) need a special option, utf8, in + order for non-ASCII characters in file names to be interpreted + properly. For non-UTF-8 locales, the value of iocharset should be set to be the same as the + character set of the locale, adjusted in such a way that the + kernel understands it. This works if the relevant character set + definition (found under File systems -> Native Language + Support when configuring the kernel) has been compiled into the + kernel or built as a module. However, if the character set of + the locale is UTF-8, the corresponding option iocharset=utf8 would make the file system case + sensitive. To fix this, use the special option utf8 instead of iocharset=utf8, for UTF-8 locales. The + codepage option is also needed for + vfat and smbfs filesystems. It should be set to the codepage + number used under MS-DOS in your country. For example, in order + to mount USB flash drives, a ru_RU.KOI8-R user would need the + following in the options portion of its mount line in + /etc/fstab: +

+
+noauto,user,quiet,showexec,codepage=866,iocharset=koi8r
+
+

+ The corresponding options fragment for ru_RU.UTF-8 users is: +

+
+noauto,user,quiet,showexec,codepage=866,utf8
+
+

+ Note that using iocharset is the + default for iso8859-1 (which keeps + the file system case insensitive), and the utf8 option tells the kernel to convert the + file names using UTF-8 so they can be interpreted in the UTF-8 + locale. +

+

+ It is also possible to specify default codepage and iocharset + values for some filesystems during kernel configuration. The + relevant parameters are named Default NLS + Option (CONFIG_NLS_DEFAULT), Default Remote NLS + Option (CONFIG_SMB_NLS_DEFAULT), Default codepage for + FAT (CONFIG_FAT_DEFAULT_CODEPAGE), and Default iocharset for + FAT (CONFIG_FAT_DEFAULT_IOCHARSET). There is no way + to specify these settings for the ntfs filesystem at kernel + compilation time. +

+

+ It is possible to make the ext3 filesystem reliable across + power failures for some hard disk types. To do this, add the + barrier=1 mount option to the + appropriate entry in /etc/fstab. + To check if the disk drive supports this option, run + hdparm on the applicable disk drive. For example, if: +

+
+hdparm -I /dev/sda | grep NCQ
+
+

+ returns non-empty output, the option is supported. +

+

+ Note: Logical Volume Management (LVM) based partitions cannot + use the barrier option. +

+
+
+
+
+
+

+ 8.3. Linux-4.20.12 +

+
+
+
+
+

+ The Linux package contains the Linux kernel. +

+
+
+
+ Approximate build time: + 4.4 - 66.0 SBU (typically about 6 + SBU) +
+
+ Required disk space: + 960 - 4250 MB (typically about 1100 + MB) +
+
+
+
+
+

+ 8.3.1. Installation of the kernel +

+

+ Building the kernel involves a few steps—configuration, + compilation, and installation. Read the README file in the kernel source tree for + alternative methods to the way this book configures the + kernel. +

+

+ 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. Do not rely on the source tree being + clean after un-tarring. +

+

+ Configure the kernel via a menu-driven interface. For general + information on kernel configuration see + http://www.linuxfromscratch.org/hints/downloads/files/kernel-configuration.txt. + BLFS has some information regarding particular kernel + configuration requirements of packages outside of LFS at + + http://www.linuxfromscratch.org/blfs/view/8.4/longindex.html#kernel-config-index. + Additional information about configuring and building the + kernel can be found at http://www.kroah.com/lkn/ +

+
+

+ Note +

+

+ 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. +

+

+ Be sure to enable/disable/set the following features or the + system might not work correctly or boot at all: +

+
+Device Drivers  --->
+  Generic Driver Options  --->
+   [ ] Support for uevent helper [CONFIG_UEVENT_HELPER]
+   [*] Maintain a devtmpfs filesystem to mount at /dev [CONFIG_DEVTMPFS]
+
+Kernel hacking  --->
+       Choose kernel unwinder (Frame pointer unwinder)  ---> [CONFIG_UNWINDER_FRAME_POINTER]
+
+
+

+ There are several other options that may be desired depending + on the requirements for the system. For a list of options + needed for BLFS packages, see the + BLFS Index of Kernel Settings + (http://www.linuxfromscratch.org/blfs/view/8.4/longindex.html#kernel-config-index). +

+
+

+ Note +

+

+ If your host hardware is using UEFI, then the 'make + defconfig' above should automatically add in some + EFI-related kernel options. +

+

+ In order to allow your LFS kernel to be booted from within + your host's UEFI boot environment, your kernel must have + this option selected: +

+
+Processor type and features  --->
+   [*]   EFI stub support  [CONFIG_EFI_STUB]
+
+

+ A fuller description of managing UEFI environments from + within LFS is covered by the lfs-uefi.txt hint at + http://www.linuxfromscratch.org/hints/downloads/files/lfs-uefi.txt. +

+
+
+

+ The rationale for the above configuration + items: +

+
+
+ Support + for uevent helper +
+
+

+ Having this option set may interfere with device + management when using Udev/Eudev. +

+
+
+ Maintain a + devtmpfs +
+
+

+ This will create automated device nodes which are + populated by the kernel, even without Udev running. + Udev then runs on top of this, managing permissions and + adding symlinks. This configuration item is required + for all users of Udev/Eudev. +

+
+
+
+
+make menuconfig
+
+
+

+ The meaning of optional make environment + variables: +

+
+
+ LANG=<host_LANG_value> + LC_ALL= +
+
+

+ This establishes the locale setting to the one used on + the host. This may be needed for a proper menuconfig + ncurses interface line drawing on a UTF-8 linux text + console. +

+

+ If used, be sure to replace <host_LANG_value> + by the value of the $LANG + variable from your host. You can alternatively use + instead the host's value of $LC_ALL or $LC_CTYPE. +

+
+
+
+

+ Alternatively, make + oldconfig may be more appropriate in some + situations. See the README file + for more information. +

+

+ If desired, skip kernel configuration by copying the kernel + config file, .config, from the + host system (assuming it is available) to the unpacked + linux-4.20.12 directory. + However, we do not recommend this option. It is often better + to explore all the configuration menus and create the kernel + configuration from scratch. +

+

+ Compile the kernel image and modules: +

+
+make
+
+

+ If using kernel modules, module configuration in /etc/modprobe.d may be required. + Information pertaining to modules and kernel configuration is + located in Section 7.3, + “Overview of Device and Module Handling” and + in the kernel documentation in the linux-4.20.12/Documentation directory. + Also, modprobe.d(5) may be of + interest. +

+

+ Install the modules, if the kernel configuration uses them: +

+
+make modules_install
+
+

+ After kernel compilation is complete, additional steps are + required to complete the installation. Some files need to be + copied to the /boot directory. +

+
+

+ Caution +

+

+ If the host system has a separate /boot partition, the + files copied below should go there. The easiest way to do + that is to bind /boot on the host (outside chroot) to + /mnt/lfs/boot before proceeding. As the root user in the + host system: +

+
+mount --bind /boot /mnt/lfs/boot
+
+
+

+ The path to the kernel image may vary depending on the + platform being used. The filename below can be changed to + suit your taste, but the stem of the filename should be + vmlinuz to be + compatible with the automatic setup of the boot process + described in the next section. The following command assumes + an x86 architecture: +

+
+cp -iv arch/x86/boot/bzImage /boot/vmlinuz-4.20.12-lfs-8.4
+
+

+ System.map is a symbol file for + the kernel. It maps the function entry points of every + function in the kernel API, as well as the addresses of the + kernel data structures for the running kernel. It is used as + a resource when investigating kernel problems. Issue the + following command to install the map file: +

+
+cp -iv System.map /boot/System.map-4.20.12
+
+

+ The kernel configuration file .config produced by the make menuconfig step above + contains all the configuration selections for the kernel that + was just compiled. It is a good idea to keep this file for + future reference: +

+
+cp -iv .config /boot/config-4.20.12
+
+

+ Install the documentation for the Linux kernel: +

+
+install -d /usr/share/doc/linux-4.20.12
+cp -r Documentation/* /usr/share/doc/linux-4.20.12
+
+

+ It is important to note that the files in the kernel source + directory are not owned by root. Whenever a package is + unpacked as user root + (like we did inside chroot), the files have the user and + group IDs of whatever they were on the packager's computer. + This is usually not a problem for any other package to be + installed because the source tree is removed after the + installation. However, the Linux source tree is often + retained for a long time. Because of this, there is a chance + that whatever user ID the packager used will be assigned to + somebody on the machine. That person would then have write + access to the kernel source. +

+
+

+ Note +

+

+ In many cases, the configuration of the kernel will need to + be updated for packages that will be installed later in + BLFS. Unlike other packages, it is not necessary to remove + the kernel source tree after the newly built kernel is + installed. +

+

+ If the kernel source tree is going to be retained, run + chown -R 0:0 + on the linux-4.20.12 + directory to ensure all files are owned by user + root. +

+
+
+

+ Warning +

+

+ Some kernel documentation recommends creating a symlink + from /usr/src/linux pointing + to the kernel source directory. This is specific to kernels + prior to the 2.6 series and must + not be created on an LFS system as it can cause + problems for packages you may wish to build once your base + LFS system is complete. +

+
+
+

+ Warning +

+

+ The headers in the system's include directory (/usr/include) should always be the ones against which + Glibc was compiled, that is, the sanitised headers + installed in Section 6.7, + “Linux-4.20.12 API Headers”. Therefore, + they should never be + replaced by either the raw kernel headers or any other + kernel sanitized headers. +

+
+
+
+

+ 8.3.2. + Configuring Linux Module Load Order +

+

+ Most of the time Linux modules are loaded automatically, but + sometimes it needs some specific direction. The program that + loads modules, modprobe or insmod, uses /etc/modprobe.d/usb.conf for this purpose. + This file needs to be created so that if the USB drivers + (ehci_hcd, ohci_hcd and uhci_hcd) have been built as modules, + they will be loaded in the correct order; ehci_hcd needs to + be loaded prior to ohci_hcd and uhci_hcd in order to avoid a + warning being output at boot time. +

+

+ Create a new file /etc/modprobe.d/usb.conf by running the + following: +

+
+install -v -m755 -d /etc/modprobe.d
+cat > /etc/modprobe.d/usb.conf << "EOF"
+# Begin /etc/modprobe.d/usb.conf
+
+install ohci_hcd /sbin/modprobe ehci_hcd ; /sbin/modprobe -i ohci_hcd ; true
+install uhci_hcd /sbin/modprobe ehci_hcd ; /sbin/modprobe -i uhci_hcd ; true
+
+# End /etc/modprobe.d/usb.conf
+EOF
+
+
+
+

+ 8.3.3. + Contents of Linux +

+
+
+
+ Installed files: + config-4.20.12, vmlinuz-4.20.12-lfs-8.4, and + System.map-4.20.12 +
+
+ Installed directories: + /lib/modules, + /usr/share/doc/linux-4.20.12 +
+
+
+
+

+ Short Descriptions +

+ + + + + + + + + + + + + + + + + + + +
+

+ config-4.20.12 +

+
+

+ Contains all the configuration selections for the + kernel +

+
+

+ vmlinuz-4.20.12-lfs-8.4 +

+
+

+ The engine of the Linux system. When turning on the + computer, the kernel is the first part of the + operating system that gets loaded. It detects and + initializes all components of the computer's + hardware, then makes these components available as + a tree of files to the software and turns a single + CPU into a multitasking machine capable of running + scores of programs seemingly at the same time +

+
+

+ System.map-4.20.12 +

+
+

+ A list of addresses and symbols; it maps the entry + points and addresses of all the functions and data + structures in the kernel +

+
+
+
+
+
+
+
+
+

+ 8.4. Using GRUB to Set Up the + Boot Process +

+
+
+
+
+

+ 8.4.1. Introduction +

+
+

+ Warning +

+

+ Configuring GRUB incorrectly can render your system + inoperable without an alternate boot device such as a + CD-ROM. This section is not required to boot your LFS + system. You may just want to modify your current boot + loader, e.g. Grub-Legacy, GRUB2, or LILO. +

+
+

+ Ensure that an emergency boot disk is ready to rescue the computer if the + computer becomes unusable (un-bootable). If you do not + already have a boot device, you can create one. In order for + the procedure below to work, you need to jump ahead to BLFS + and install xorriso from the + libisoburn package. +

+
+cd /tmp 
+grub-mkrescue --output=grub-img.iso 
+xorriso -as cdrecord -v dev=/dev/cdrw blank=as_needed grub-img.iso
+
+
+

+ Note +

+

+ To boot LFS on host systems that have UEFI enabled, the + kernel needs to have been built with the CONFIG_EFI_STUB + capabality described in the previous section. However, LFS + can be booted using GRUB2 without such an addition. To do + this, the UEFI Mode and Secure Boot capabilities in the + host system's BIOS need to be turned off. For details, see + + the lfs-uefi.txt hint at + http://www.linuxfromscratch.org/hints/downloads/files/lfs-uefi.txt. +

+
+
+
+

+ 8.4.2. GRUB Naming Conventions +

+

+ GRUB uses its own naming structure for drives and partitions + in the form of (hdn,m), where n is the hard drive number and + m is the partition + number. The hard drive number starts from zero, but the + partition number starts from one for normal partitions and + five for extended partitions. Note that this is different + from earlier versions where both numbers started from zero. + For example, partition sda1 is + (hd0,1) to GRUB and + sdb3 is (hd1,3). In contrast to Linux, + GRUB does not consider CD-ROM drives to be hard drives. For + example, if using a CD on hdb + and a second hard drive on hdc, + that second hard drive would still be (hd1). +

+
+
+

+ 8.4.3. Setting Up the Configuration +

+

+ GRUB works by writing data to the first physical track of the + hard disk. This area is not part of any file system. The + programs there access GRUB modules in the boot partition. The + default location is /boot/grub/. +

+

+ The location of the boot partition is a choice of the user + that affects the configuration. One recommendation is to have + a separate small (suggested size is 100 MB) partition just + for boot information. That way each build, whether LFS or + some commercial distro, can access the same boot files and + access can be made from any booted system. If you choose to + do this, you will need to mount the separate partition, move + all files in the current /boot + directory (e.g. the linux kernel you just built in the + previous section) to the new partition. You will then need to + unmount the partition and remount it as /boot. If you do this, be sure to update + /etc/fstab. +

+

+ Using the current lfs partition will also work, but + configuration for multiple systems is more difficult. +

+

+ Using the above information, determine the appropriate + designator for the root partition (or boot partition, if a + separate one is used). For the following example, it is + assumed that the root (or separate boot) partition is + sda2. +

+

+ Install the GRUB files into /boot/grub and set up the boot track: +

+
+

+ Warning +

+

+ The following command will overwrite the current boot + loader. Do not run the command if this is not desired, for + example, if using a third party boot manager to manage the + Master Boot Record (MBR). +

+
+
+grub-install /dev/sda
+
+
+

+ Note +

+

+ If the system has been booted using UEFI, grub-install will try to + install files for the x86_64-efi target, but those + files have not been installed in chapter 6. If this is the + case, add --target i386-pc to + the command above. +

+
+
+
+

+ 8.4.4. Creating the GRUB + Configuration File +

+

+ Generate /boot/grub/grub.cfg: +

+
+cat > /boot/grub/grub.cfg << "EOF"
+# Begin /boot/grub/grub.cfg
+set default=0
+set timeout=5
+
+insmod ext2
+set root=(hd0,2)
+
+menuentry "GNU/Linux, Linux 4.20.12-lfs-8.4" {
+        linux   /boot/vmlinuz-4.20.12-lfs-8.4 root=/dev/sda2 ro
+}
+EOF
+
+
+

+ Note +

+

+ From GRUB's perspective, + the kernel files are relative to the partition used. If you + used a separate /boot partition, remove /boot from the + above linux line. + You will also need to change the set root line to point to the + boot partition. +

+
+

+ GRUB is an extremely powerful program and it provides a + tremendous number of options for booting from a wide variety + of devices, operating systems, and partition types. There are + also many options for customization such as graphical splash + screens, playing sounds, mouse input, etc. The details of + these options are beyond the scope of this introduction. +

+
+

+ Caution +

+

+ There is a command, grub-mkconfig, that can write a + configuration file automatically. It uses a set of scripts + in /etc/grub.d/ and will destroy any customizations that + you make. These scripts are designed primarily for + non-source distributions and are not recommended for LFS. + If you install a commercial Linux distribution, there is a + good chance that this program will be run. Be sure to back + up your grub.cfg file. +

+
+
+
+
+
+
+
+
+

+ Chapter 9. The End +

+
+
+
+
+
+
+
+

+ 9.1. The End +

+
+
+
+

+ Well done! The new LFS system is installed! We wish you much + success with your shiny new custom-built Linux system. +

+

+ It may be a good idea to create an /etc/lfs-release file. By having this file, + it is very easy for you (and for us if you need to ask for help + at some point) to find out which LFS version is installed on + the system. Create this file by running: +

+
+echo 8.4 > /etc/lfs-release
+
+

+ It is also a good idea to create a file to show the status of + your new system with respect to the Linux Standards Base (LSB). + To create this file, run: +

+
+cat > /etc/lsb-release << "EOF"
+DISTRIB_ID="Linux From Scratch"
+DISTRIB_RELEASE="8.4"
+DISTRIB_CODENAME="<your name here>"
+DISTRIB_DESCRIPTION="Linux From Scratch"
+EOF
+
+

+ Be sure to put some sort of customization for the field + 'DISTRIB_CODENAME' to make the system uniquely yours. +

+
+
+
+
+
+

+ 9.2. Get Counted +

+
+
+
+

+ Now that you have finished the book, do you want to be counted + as an LFS user? Head over to http://www.linuxfromscratch.org/cgi-bin/lfscounter.php + and register as an LFS user by entering your name and the first + LFS version you have used. +

+

+ Let's reboot into LFS now. +

+
+
+
+
+
+

+ 9.3. Rebooting the System +

+
+
+
+

+ Now that all of the software has been installed, it is time to + reboot your computer. However, you should be aware of a few + things. The system you have created in this book is quite + minimal, and most likely will not have the functionality you + would need to be able to continue forward. By installing a few + extra packages from the BLFS book while still in our current + chroot environment, you can leave yourself in a much better + position to continue on once you reboot into your new LFS + installation. Here are some suggestions: +

+
+
    +
  • +

    + A text mode browser such as + Lynx will allow you to easily view the BLFS book in + one virtual terminal, while building packages in another. +

    +
  • +
  • +

    + The + GPM package will allow you to perform copy/paste + actions in your virtual terminals. +

    +
  • +
  • +

    + If you are in a situation where static IP configuration + does not meet your networking requirements, installing a + package such as + dhcpcd or the client portion of + dhcp may be useful. +

    +
  • +
  • +

    + Installing + sudo may be useful for building packages as a + non-root user and easily installing the resulting + packages in your new system. +

    +
  • +
  • +

    + If you want to access your new system from a remote + system within a comfortable GUI environment, install + + openssh. +

    +
  • +
  • +

    + To make fetching files over the internet easier, install + + wget. +

    +
  • +
  • +

    + If one or more of your disk drives have a GUID partition + table (GPT), either + gptfdisk or + parted will be useful. +

    +
  • +
  • +

    + Finally, a review of the following configuration files is + also appropriate at this point. +

    +
    +
      +
    • +

      + /etc/bashrc +

      +
    • +
    • +

      + /etc/dircolors +

      +
    • +
    • +

      + /etc/fstab +

      +
    • +
    • +

      + /etc/hosts +

      +
    • +
    • +

      + /etc/inputrc +

      +
    • +
    • +

      + /etc/profile +

      +
    • +
    • +

      + /etc/resolv.conf +

      +
    • +
    • +

      + /etc/vimrc +

      +
    • +
    • +

      + /root/.bash_profile +

      +
    • +
    • +

      + /root/.bashrc +

      +
    • +
    • +

      + /etc/sysconfig/network +

      +
    • +
    • +

      + /etc/sysconfig/ifconfig.eth0 +

      +
    • +
    +
    +
  • +
+
+

+ Now that we have said that, let's move on to booting our shiny + new LFS installation for the first time! First exit from the + chroot environment: +

+
+logout
+
+

+ Then unmount the virtual file systems: +

+
+umount -v $LFS/dev/pts
+umount -v $LFS/dev
+umount -v $LFS/run
+umount -v $LFS/proc
+umount -v $LFS/sys
+
+

+ Unmount the LFS file system itself: +

+
+umount -v $LFS
+
+

+ If multiple partitions were created, unmount the other + partitions before unmounting the main one, like this: +

+
+umount -v $LFS/usr
+umount -v $LFS/home
+umount -v $LFS
+
+

+ Now, reboot the system with: +

+
+shutdown -r now
+
+

+ Assuming the GRUB boot loader was set up as outlined earlier, + the menu is set to boot LFS + 8.4 automatically. +

+

+ When the reboot is complete, the LFS system is ready for use + and more software may be added to suit your needs. +

+
+
+
+
+
+

+ 9.4. What Now? +

+
+
+
+

+ Thank you for reading this LFS book. We hope that you have + found this book helpful and have learned more about the system + creation process. +

+

+ Now that the LFS system is installed, you may be wondering + What + next? To answer that question, we have + compiled a list of resources for you. +

+
+
    +
  • +

    + Maintenance +

    +

    + Bugs and security notices are reported regularly for all + software. Since an LFS system is compiled from source, it + is up to you to keep abreast of such reports. There are + several online resources that track such reports, some of + which are shown below: +

    +
    +
      +
    • +

      + CERT (Computer Emergency + Response Team) +

      +

      + CERT has a mailing list that publishes security + alerts concerning various operating systems and + applications. Subscription information is available + at http://www.us-cert.gov/cas/signup.html. +

      +
    • +
    • +

      + Bugtraq +

      +

      + Bugtraq is a full-disclosure computer security + mailing list. It publishes newly discovered + security issues, and occasionally potential fixes + for them. Subscription information is available at + http://www.securityfocus.com/archive. +

      +
    • +
    +
    +
  • +
  • +

    + Beyond Linux From Scratch +

    +

    + The Beyond Linux From Scratch book covers installation + procedures for a wide range of software beyond the scope + of the LFS Book. The BLFS project is located at http://www.linuxfromscratch.org/blfs/. +

    +
  • +
  • +

    + LFS Hints +

    +

    + The LFS Hints are a collection of educational documents + submitted by volunteers in the LFS community. The hints + are available at http://www.linuxfromscratch.org/hints/list.html. +

    +
  • +
  • +

    + Mailing lists +

    +

    + There are several LFS mailing lists you may subscribe to + if you are in need of help, want to stay current with the + latest developments, want to contribute to the project, + and more. See Chapter 1 - + Mailing Lists for more information. +

    +
  • +
  • +

    + The Linux Documentation Project +

    +

    + The goal of The Linux Documentation Project (TLDP) is to + collaborate on all of the issues of Linux documentation. + The TLDP features a large collection of HOWTOs, guides, + and man pages. It is located at http://www.tldp.org/. +

    +
  • +
+
+
+
+
+
+
+
+
+

+ Part IV. Appendices +

+
+
+
+
+
+
+
+

+ Appendix A. Acronyms and Terms +

+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ ABI +

+
+

+ Application Binary Interface +

+
+

+ ALFS +

+
+

+ Automated Linux From Scratch +

+
+

+ API +

+
+

+ Application Programming Interface +

+
+

+ ASCII +

+
+

+ American Standard Code for Information Interchange +

+
+

+ BIOS +

+
+

+ Basic Input/Output System +

+
+

+ BLFS +

+
+

+ Beyond Linux From Scratch +

+
+

+ BSD +

+
+

+ Berkeley Software Distribution +

+
+

+ chroot +

+
+

+ change root +

+
+

+ CMOS +

+
+

+ Complementary Metal Oxide Semiconductor +

+
+

+ COS +

+
+

+ Class Of Service +

+
+

+ CPU +

+
+

+ Central Processing Unit +

+
+

+ CRC +

+
+

+ Cyclic Redundancy Check +

+
+

+ CVS +

+
+

+ Concurrent Versions System +

+
+

+ DHCP +

+
+

+ Dynamic Host Configuration Protocol +

+
+

+ DNS +

+
+

+ Domain Name Service +

+
+

+ EGA +

+
+

+ Enhanced Graphics Adapter +

+
+

+ ELF +

+
+

+ Executable and Linkable Format +

+
+

+ EOF +

+
+

+ End of File +

+
+

+ EQN +

+
+

+ equation +

+
+

+ ext2 +

+
+

+ second extended file system +

+
+

+ ext3 +

+
+

+ third extended file system +

+
+

+ ext4 +

+
+

+ fourth extended file system +

+
+

+ FAQ +

+
+

+ Frequently Asked Questions +

+
+

+ FHS +

+
+

+ Filesystem Hierarchy Standard +

+
+

+ FIFO +

+
+

+ First-In, First Out +

+
+

+ FQDN +

+
+

+ Fully Qualified Domain Name +

+
+

+ FTP +

+
+

+ File Transfer Protocol +

+
+

+ GB +

+
+

+ Gigabytes +

+
+

+ GCC +

+
+

+ GNU Compiler Collection +

+
+

+ GID +

+
+

+ Group Identifier +

+
+

+ GMT +

+
+

+ Greenwich Mean Time +

+
+

+ HTML +

+
+

+ Hypertext Markup Language +

+
+

+ IDE +

+
+

+ Integrated Drive Electronics +

+
+

+ IEEE +

+
+

+ Institute of Electrical and Electronic Engineers +

+
+

+ IO +

+
+

+ Input/Output +

+
+

+ IP +

+
+

+ Internet Protocol +

+
+

+ IPC +

+
+

+ Inter-Process Communication +

+
+

+ IRC +

+
+

+ Internet Relay Chat +

+
+

+ ISO +

+
+

+ International Organization for Standardization +

+
+

+ ISP +

+
+

+ Internet Service Provider +

+
+

+ KB +

+
+

+ Kilobytes +

+
+

+ LED +

+
+

+ Light Emitting Diode +

+
+

+ LFS +

+
+

+ Linux From Scratch +

+
+

+ LSB +

+
+

+ Linux Standard Base +

+
+

+ MB +

+
+

+ Megabytes +

+
+

+ MBR +

+
+

+ Master Boot Record +

+
+

+ MD5 +

+
+

+ Message Digest 5 +

+
+

+ NIC +

+
+

+ Network Interface Card +

+
+

+ NLS +

+
+

+ Native Language Support +

+
+

+ NNTP +

+
+

+ Network News Transport Protocol +

+
+

+ NPTL +

+
+

+ Native POSIX Threading Library +

+
+

+ OSS +

+
+

+ Open Sound System +

+
+

+ PCH +

+
+

+ Pre-Compiled Headers +

+
+

+ PCRE +

+
+

+ Perl Compatible Regular Expression +

+
+

+ PID +

+
+

+ Process Identifier +

+
+

+ PTY +

+
+

+ pseudo terminal +

+
+

+ QOS +

+
+

+ Quality Of Service +

+
+

+ RAM +

+
+

+ Random Access Memory +

+
+

+ RPC +

+
+

+ Remote Procedure Call +

+
+

+ RTC +

+
+

+ Real Time Clock +

+
+

+ SBU +

+
+

+ Standard Build Unit +

+
+

+ SCO +

+
+

+ The Santa Cruz Operation +

+
+

+ SHA1 +

+
+

+ Secure-Hash Algorithm 1 +

+
+

+ TLDP +

+
+

+ The Linux Documentation Project +

+
+

+ TFTP +

+
+

+ Trivial File Transfer Protocol +

+
+

+ TLS +

+
+

+ Thread-Local Storage +

+
+

+ UID +

+
+

+ User Identifier +

+
+

+ umask +

+
+

+ user file-creation mask +

+
+

+ USB +

+
+

+ Universal Serial Bus +

+
+

+ UTC +

+
+

+ Coordinated Universal Time +

+
+

+ UUID +

+
+

+ Universally Unique Identifier +

+
+

+ VC +

+
+

+ Virtual Console +

+
+

+ VGA +

+
+

+ Video Graphics Array +

+
+

+ VT +

+
+

+ Virtual Terminal +

+
+
+
+
+
+
+
+

+ Appendix B. Acknowledgments +

+
+
+
+

+ We would like to thank the following people and organizations for + their contributions to the Linux From Scratch Project. +

+
+
    +
  • +

    + Gerard Beekmans + <gerard AT linuxfromscratch D0T org> – LFS Creator +

    +
  • +
  • +

    + Bruce Dubbs + <bdubbs AT linuxfromscratch D0T org> – LFS Managing + Editor +

    +
  • +
  • +

    + Jim + Gifford <jim AT linuxfromscratch D0T org> – CLFS + Project Co-Leader +

    +
  • +
  • +

    + Pierre Labastie + <pierre AT linuxfromscratch D0T org> – BLFS Editor and + ALFS Lead +

    +
  • +
  • +

    + DJ + Lucas <dj AT linuxfromscratch D0T org> – LFS and + BLFS Editor +

    +
  • +
  • +

    + Ken + Moffat <ken AT linuxfromscratch D0T org> – BLFS + Editor +

    +
  • +
  • +

    + Countless other people on the various LFS and BLFS mailing + lists who helped make this book possible by giving their + suggestions, testing the book, and submitting bug reports, + instructions, and their experiences with installing various + packages. +

    +
  • +
+
+

+ Translators +

+
+
    +
  • +

    + Manuel + Canales Esparcia <macana AT macana-es D0T com> – + Spanish LFS translation project +

    +
  • +
  • +

    + Johan Lenglet + <johan AT linuxfromscratch D0T org> – French LFS + translation project until 2008 +

    +
  • +
  • +

    + Jean-Philippe + Mengual <jmengual AT linuxfromscratch D0T org> – + French LFS translation project 2008-2016 +

    +
  • +
  • +

    + Julien Lepiller + <jlepiller AT linuxfromscratch D0T org> – French LFS + translation project 2017-present +

    +
  • +
  • +

    + Anderson Lizardo + <lizardo AT linuxfromscratch D0T org> – Portuguese LFS + translation project +

    +
  • +
  • +

    + Thomas + Reitelbach <tr AT erdfunkstelle D0T de> – German + LFS translation project +

    +
  • +
  • +

    + Anton Maisak + <info AT linuxfromscratch D0T org D0T ru> – Russian LFS + translation project +

    +
  • +
  • +

    + Elena Shevcova + <helen AT linuxfromscratch D0T org D0T ru> – Russian LFS + translation project +

    +
  • +
+
+

+ Mirror + Maintainers +

+

+ North + American Mirrors +

+
+
    +
  • +

    + Scott + Kveton <scott AT osuosl D0T org> – + lfs.oregonstate.edu mirror +

    +
  • +
  • +

    + William + Astle <lost AT l-w D0T net> – + ca.linuxfromscratch.org mirror +

    +
  • +
  • +

    + Eujon Sellers + <jpolen@rackspace.com> – lfs.introspeed.com + mirror +

    +
  • +
  • +

    + Justin + Knierim <tim@idge.net> – lfs-matrix.net + mirror +

    +
  • +
+
+

+ South + American Mirrors +

+
+ +
+

+ European + Mirrors +

+
+
    +
  • +

    + Guido + Passet <guido AT primerelay D0T net> – + nl.linuxfromscratch.org mirror +

    +
  • +
  • +

    + Bastiaan + Jacques <baafie AT planet D0T nl> – + lfs.pagefault.net mirror +

    +
  • +
  • +

    + Sven + Cranshoff <sven D0T cranshoff AT lineo D0T be> – + lfs.lineo.be mirror +

    +
  • +
  • +

    + Scarlet Belgium – lfs.scarlet.be mirror +

    +
  • +
  • +

    + Sebastian + Faulborn <info AT aliensoft D0T org> – + lfs.aliensoft.org mirror +

    +
  • +
  • +

    + Stuart + Fox <stuart AT dontuse D0T ms> – lfs.dontuse.ms + mirror +

    +
  • +
  • +

    + Ralf + Uhlemann <admin AT realhost D0T de> – + lfs.oss-mirror.org mirror +

    +
  • +
  • +

    + Antonin Sprinzl + <Antonin D0T Sprinzl AT tuwien D0T ac D0T at> – + at.linuxfromscratch.org mirror +

    +
  • +
  • +

    + Fredrik Danerklint + <fredan-lfs AT fredan D0T org> – + se.linuxfromscratch.org mirror +

    +
  • +
  • +

    + Franck + <franck AT linuxpourtous D0T com> – + lfs.linuxpourtous.com mirror +

    +
  • +
  • +

    + Philippe + Baque <baque AT cict D0T fr> – lfs.cict.fr mirror +

    +
  • +
  • +

    + Vitaly + Chekasin <gyouja AT pilgrims D0T ru> – + lfs.pilgrims.ru mirror +

    +
  • +
  • +

    + Benjamin + Heil <kontakt AT wankoo D0T org> – lfs.wankoo.org + mirror +

    +
  • +
  • +

    + Anton Maisak + <info AT linuxfromscratch D0T org D0T ru> – + linuxfromscratch.org.ru mirror +

    +
  • +
+
+

+ Asian + Mirrors +

+
+
    +
  • +

    + Satit + Phermsawang <satit AT wbac D0T ac D0T th> – + lfs.phayoune.org mirror +

    +
  • +
  • +

    + Shizunet + Co.,Ltd. <info AT shizu-net D0T jp> – + lfs.mirror.shizu-net.jp mirror +

    +
  • +
  • +

    + Init + World <http://www.initworld.com/> – + lfs.initworld.com mirror +

    +
  • +
+
+

+ Australian + Mirrors +

+
+
    +
  • +

    + Jason + Andrade <jason AT dstc D0T edu D0T au> – + au.linuxfromscratch.org mirror +

    +
  • +
+
+

+ Former + Project Team Members +

+
+
    +
  • +

    + Christine + Barczak <theladyskye AT linuxfromscratch D0T org> + – LFS Book Editor +

    +
  • +
  • +

    + Archaic <archaic@linuxfromscratch.org> – LFS + Technical Writer/Editor, HLFS Project Leader, BLFS Editor, + Hints and Patches Project Maintainer +

    +
  • +
  • +

    + Matthew Burgess + <matthew AT linuxfromscratch D0T org> – LFS Project + Leader, LFS Technical Writer/Editor +

    +
  • +
  • +

    + Nathan Coulson + <nathan AT linuxfromscratch D0T org> – LFS-Bootscripts + Maintainer +

    +
  • +
  • +

    + Timothy Bauscher +

    +
  • +
  • +

    + Robert Briggs +

    +
  • +
  • +

    + Ian Chilton +

    +
  • +
  • +

    + Jeroen Coumans + <jeroen AT linuxfromscratch D0T org> – Website + Developer, FAQ Maintainer +

    +
  • +
  • +

    + Manuel Canales + Esparcia <manuel AT linuxfromscratch D0T org> – + LFS/BLFS/HLFS XML and XSL Maintainer +

    +
  • +
  • +

    + Alex Groenewoud – LFS Technical Writer +

    +
  • +
  • +

    + Marc Heerdink +

    +
  • +
  • +

    + Jeremy Huntwork + <jhuntwork AT linuxfromscratch D0T org> – LFS + Technical Writer, LFS LiveCD Maintainer +

    +
  • +
  • +

    + Bryan Kadzban + <bryan AT linuxfromscratch D0T org> – LFS Technical + Writer +

    +
  • +
  • +

    + Mark Hymers +

    +
  • +
  • +

    + Seth W. Klein – FAQ maintainer +

    +
  • +
  • +

    + Nicholas Leippe + <nicholas AT linuxfromscratch D0T org> – Wiki + Maintainer +

    +
  • +
  • +

    + Anderson Lizardo + <lizardo AT linuxfromscratch D0T org> – Website + Backend-Scripts Maintainer +

    +
  • +
  • +

    + Randy McMurchy + <randy AT linuxfromscratch D0T org> – BLFS Project + Leader, LFS Editor +

    +
  • +
  • +

    + Dan Nicholson + <dnicholson AT linuxfromscratch D0T org> – LFS and + BLFS Editor +

    +
  • +
  • +

    + Alexander E. + Patrakov <alexander AT linuxfromscratch D0T org> – + LFS Technical Writer, LFS Internationalization Editor, LFS + Live CD Maintainer +

    +
  • +
  • +

    + Simon Perreault +

    +
  • +
  • +

    + Scot Mc Pherson + <scot AT linuxfromscratch D0T org> – LFS NNTP Gateway + Maintainer +

    +
  • +
  • +

    + Douglas R. Reno + <renodr AT linuxfromscratch D0T org> – Systemd Editor +

    +
  • +
  • +

    + Ryan Oliver + <ryan AT linuxfromscratch D0T org> – CLFS Project + Co-Leader +

    +
  • +
  • +

    + Greg + Schafer <gschafer AT zip D0T com D0T au> – LFS + Technical Writer and Architect of the Next Generation + 64-bit-enabling Build Method +

    +
  • +
  • +

    + Jesse Tie-Ten-Quee – LFS Technical Writer +

    +
  • +
  • +

    + James Robertson + <jwrober AT linuxfromscratch D0T org> – Bugzilla + Maintainer +

    +
  • +
  • +

    + Tushar Teredesai + <tushar AT linuxfromscratch D0T org> – BLFS Book + Editor, Hints and Patches Project Leader +

    +
  • +
  • +

    + Jeremy Utley + <jeremy AT linuxfromscratch D0T org> – LFS Technical + Writer, Bugzilla Maintainer, LFS-Bootscripts Maintainer +

    +
  • +
  • +

    + Zack + Winkles <zwinkles AT gmail D0T com> – LFS + Technical Writer +

    +
  • +
+
+
+
+
+
+
+

+ Appendix C. Dependencies +

+
+
+
+

+ Every package built in LFS relies on one or more other packages + in order to build and install properly. Some packages even + participate in circular dependencies, that is, the first package + depends on the second which in turn depends on the first. Because + of these dependencies, the order in which packages are built in + LFS is very important. The purpose of this page is to document + the dependencies of each package built in LFS. +

+

+ For each package we build, we have listed three, and sometimes + four, types of dependencies. The first lists what other packages + need to be available in order to compile and install the package + in question. The second lists what packages, in addition to those + on the first list, need to be available in order to run the test + suites. The third list of dependencies are packages that require + this package to be built and installed in its final location + before they are built and installed. In most cases, this is + because these packages will hard code paths to binaries within + their scripts. If not built in a certain order, this could result + in paths of /tools/bin/[binary] being placed inside scripts + installed to the final system. This is obviously not desirable. +

+

+ The last list of dependencies are optional packages that are not + addressed in LFS, but could be useful to the user. These packages + may have additional mandatory or optional dependencies of their + own. For these dependencies, the recommended practice is to + install them after completion of the LFS book and then go back + and rebuild the LFS package. In several cases, re-installation is + addressed in BLFS. +

+

+ Acl +

+
+
+
+ Installation depends on: + Attr, Bash, Binutils, Coreutils, GCC, + Gettext, Grep, M4, Make, Perl, Sed, and Texinfo +
+
+
+
+
+
+ Test suite depends on: + Automake, Diffutils, Findutils, and + Libtool +
+
+
+
+
+
+ Must be installed before: + Coreutils, Sed, Tar, and Vim +
+
+
+
+
+
+ Optional dependencies: + None +
+
+
+

+ Attr +

+
+
+
+ Installation depends on: + Bash, Binutils, Coreutils, GCC, + Gettext, Grep, M4, Make, Perl, Sed, and Texinfo +
+
+
+
+
+
+ Test suite depends on: + Automake, Diffutils, Findutils, and + Libtool +
+
+
+
+
+
+ Must be installed before: + Acl and Libcap +
+
+
+
+
+
+ Optional dependencies: + None +
+
+
+

+ Autoconf +

+
+
+
+ Installation depends on: + Bash, Coreutils, Grep, M4, Make, Perl, + Sed, and Texinfo +
+
+
+
+
+
+ Test suite depends on: + Automake, Diffutils, Findutils, GCC, + and Libtool +
+
+
+
+
+
+ Must be installed before: + Automake +
+
+
+
+
+
+ Optional dependencies: + Emacs +
+
+
+

+ Automake +

+
+
+
+ Installation depends on: + Autoconf, Bash, Coreutils, Gettext, + Grep, M4, Make, Perl, Sed, and Texinfo +
+
+
+
+
+
+ Test suite depends on: + Binutils, Bison, Bzip2, DejaGNU, + Diffutils, Expect, Findutils, Flex, GCC, Gettext, Gzip, + Libtool, and Tar +
+
+
+
+
+
+ Must be installed before: + None +
+
+
+
+
+
+ Optional dependencies: + None +
+
+
+

+ Bash +

+
+
+
+ Installation depends on: + Bash, Binutils, Bison, Coreutils, + Diffutils, Gawk, GCC, Glibc, Grep, Make, Ncurses, Patch, + Readline, Sed, and Texinfo +
+
+
+
+
+
+ Test suite depends on: + Shadow +
+
+
+
+
+
+ Must be installed before: + None +
+
+
+
+
+
+ Optional dependencies: + Xorg +
+
+
+

+ Bc +

+
+
+
+ Installation depends on: + Bash, Binutils, Bison, Coreutils, GCC, + Glibc, Grep, Make, and Readline +
+
+
+
+
+
+ Test suite depends on: + Gawk +
+
+
+
+
+
+ Must be installed before: + Linux Kernel +
+
+
+
+
+
+ Optional dependencies: + None +
+
+
+

+ Binutils +

+
+
+
+ Installation depends on: + Bash, Binutils, Coreutils, Diffutils, + File, Gawk, GCC, Glibc, Grep, Make, Perl, Sed, Texinfo and + Zlib +
+
+
+
+
+
+ Test suite depends on: + DejaGNU and Expect +
+
+
+
+
+
+ Must be installed before: + None +
+
+
+
+
+
+ Optional dependencies: + None +
+
+
+

+ Bison +

+
+
+
+ Installation depends on: + Bash, Binutils, Coreutils, GCC, + Gettext, Glibc, Grep, M4, Make, Perl, and Sed +
+
+
+
+
+
+ Test suite depends on: + Diffutils, Findutils, and Flex +
+
+
+
+
+
+ Must be installed before: + Kbd and Tar +
+
+
+
+
+
+ Optional dependencies: + Doxygen (test suite) +
+
+
+

+ Bzip2 +

+
+
+
+ Installation depends on: + Bash, Binutils, Coreutils, Diffutils, + GCC, Glibc, Make, and Patch +
+
+
+
+
+
+ Test suite depends on: + None +
+
+
+
+
+
+ Must be installed before: + None +
+
+
+
+
+
+ Optional dependencies: + None +
+
+
+

+ Check +

+
+
+
+ Installation depends on: + GCC, Grep, Make, Sed, and + Texinfo +
+
+
+
+
+
+ Test suite depends on: + None +
+
+
+
+
+
+ Must be installed before: + None +
+
+
+
+
+
+ Optional dependencies: + None +
+
+
+

+ Coreutils +

+
+
+
+ Installation depends on: + Bash, Binutils, Coreutils, GCC, + Gettext, Glibc, GMP, Grep, Make, Patch, Perl, Sed, and + Texinfo +
+
+
+
+
+
+ Test suite depends on: + Diffutils, E2fsprogs, Findutils, + Shadow, and Util-linux +
+
+
+
+
+
+ Must be installed before: + Bash, Diffutils, Eudev, Findutils, and + Man-DB +
+
+
+
+
+
+ Optional dependencies: + Perl Expect and IO:Tty modules (for + test suite) +
+
+
+

+ DejaGNU +

+
+
+
+ Installation depends on: + Bash, Coreutils, Diffutils, GCC, Grep, + Make, and Sed +
+
+
+
+
+
+ Test suite depends on: + None +
+
+
+
+
+
+ Must be installed before: + None +
+
+
+
+
+
+ Optional dependencies: + None +
+
+
+

+ Diffutils +

+
+
+
+ Installation depends on: + Bash, Binutils, Coreutils, Gawk, GCC, + Gettext, Glibc, Grep, Make, Sed, and Texinfo +
+
+
+
+
+
+ Test suite depends on: + Perl +
+
+
+
+
+
+ Must be installed before: + None +
+
+
+
+
+
+ Optional dependencies: + None +
+
+
+

+ E2fsprogs +

+
+
+
+ Installation depends on: + Bash, Binutils, Coreutils, Diffutils, + Gawk, GCC, Glibc, Grep, Gzip, Make, Sed, Texinfo, and + Util-linux +
+
+
+
+
+
+ Test suite depends on: + Procps-ng and Psmisc +
+
+
+
+
+
+ Must be installed before: + None +
+
+
+
+
+
+ Optional dependencies: + None +
+
+
+

+ Eudev +

+
+
+
+ Installation depends on: + Bash, Binutils, Coreutils, Gawk, GCC, + Glibc, Grep, Gperf, Make, and Sed +
+
+
+
+
+
+ Test suite depends on: + None +
+
+
+
+
+
+ Must be installed before: + None +
+
+
+
+
+
+ Optional dependencies: + None +
+
+
+

+ Expat +

+
+
+
+ Installation depends on: + Bash, Binutils, Coreutils, Gawk, GCC, + Glibc, Grep, Make, and Sed +
+
+
+
+
+
+ Test suite depends on: + None +
+
+
+
+
+
+ Must be installed before: + XML::Parser +
+
+
+
+
+
+ Optional dependencies: + None +
+
+
+

+ Expect +

+
+
+
+ Installation depends on: + Bash, Binutils, Coreutils, Diffutils, + GCC, Glibc, Grep, Make, Patch, Sed, and Tcl +
+
+
+
+
+
+ Test suite depends on: + None +
+
+
+
+
+
+ Must be installed before: + None +
+
+
+
+
+
+ Optional dependencies: + None +
+
+
+

+ File +

+
+
+
+ Installation depends on: + Bash, Binutils, Coreutils, Diffutils, + Gawk, GCC, Glibc, Grep, Make, Sed, and Zlib +
+
+
+
+
+
+ Test suite depends on: + None +
+
+
+
+
+
+ Must be installed before: + None +
+
+
+
+
+
+ Optional dependencies: + None +
+
+
+

+ Findutils +

+
+
+
+ Installation depends on: + Bash, Binutils, Coreutils, GCC, + Gettext, Glibc, Grep, Make, Sed, and Texinfo +
+
+
+
+
+
+ Test suite depends on: + DejaGNU, Diffutils, and Expect +
+
+
+
+
+
+ Must be installed before: + None +
+
+
+
+
+
+ Optional dependencies: + None +
+
+
+

+ Flex +

+
+
+
+ Installation depends on: + Bash, Binutils, Coreutils, GCC, + Gettext, Glibc, Grep, M4, Make, Patch, Sed, and + Texinfo +
+
+
+
+
+
+ Test suite depends on: + Bison and Gawk +
+
+
+
+
+
+ Must be installed before: + IPRoute2, Kbd, and Man-DB +
+
+
+
+
+
+ Optional dependencies: + None +
+
+
+

+ Gawk +

+
+
+
+ Installation depends on: + Bash, Binutils, Coreutils, GCC, + Gettext, Glibc, GMP, Grep, Make, MPFR, Patch, Readline, Sed, + and Texinfo +
+
+
+
+
+
+ Test suite depends on: + Diffutils +
+
+
+
+
+
+ Must be installed before: + None +
+
+
+
+
+
+ Optional dependencies: + None +
+
+
+

+ Gcc +

+
+
+
+ Installation depends on: + Bash, Binutils, Coreutils, Diffutils, + Findutils, Gawk, GCC, Gettext, Glibc, GMP, Grep, M4, Make, + MPC, MPFR, Patch, Perl, Sed, Tar, and Texinfo +
+
+
+
+
+
+ Test suite depends on: + DejaGNU, Expect, and Shadow +
+
+
+
+
+
+ Must be installed before: + None +
+
+
+
+
+
+ Optional dependencies: + GNAT and ISL +
+
+
+

+ GDBM +

+
+
+
+ Installation depends on: + Bash, Binutils, Coreutils, Diffutils, + GCC, Grep, Make, and Sed +
+
+
+
+
+
+ Test suite depends on: + None +
+
+
+
+
+
+ Must be installed before: + None +
+
+
+
+
+
+ Optional dependencies: + None +
+
+
+

+ Gettext +

+
+
+
+ Installation depends on: + Bash, Binutils, Coreutils, Gawk, GCC, + Glibc, Grep, Make, Sed, and Texinfo +
+
+
+
+
+
+ Test suite depends on: + Diffutils, Perl, and Tcl +
+
+
+
+
+
+ Must be installed before: + Automake +
+
+
+
+
+
+ Optional dependencies: + None +
+
+
+

+ Glibc +

+
+
+
+ Installation depends on: + Bash, Binutils, Coreutils, Diffutils, + Gawk, GCC, Gettext, Grep, Gzip, Linux API Headers, Make, + Perl, Python, Sed, and Texinfo +
+
+
+
+
+
+ Test suite depends on: + File +
+
+
+
+
+
+ Must be installed before: + None +
+
+
+
+
+
+ Optional dependencies: + None +
+
+
+

+ GMP +

+
+
+
+ Installation depends on: + Bash, Binutils, Coreutils, Diffutils, + Gawk, GCC, Glibc, Grep, M4, Make, Sed, and Texinfo +
+
+
+
+
+
+ Test suite depends on: + None +
+
+
+
+
+
+ Must be installed before: + MPFR and GCC +
+
+
+
+
+
+ Optional dependencies: + None +
+
+
+

+ Gperf +

+
+
+
+ Installation depends on: + Bash, Binutils, Coreutils, GCC, Glibc, + and Make +
+
+
+
+
+
+ Test suite depends on: + Diffutils and Expect +
+
+
+
+
+
+ Must be installed before: + None +
+
+
+
+
+
+ Optional dependencies: + None +
+
+
+

+ Grep +

+
+
+
+ Installation depends on: + Bash, Binutils, Coreutils, Diffutils, + GCC, Gettext, Glibc, Grep, Make, Patch, Sed, and + Texinfo +
+
+
+
+
+
+ Test suite depends on: + Gawk +
+
+
+
+
+
+ Must be installed before: + Man-DB +
+
+
+
+
+
+ Optional dependencies: + Pcre +
+
+
+

+ Groff +

+
+
+
+ Installation depends on: + Bash, Binutils, Bison, Coreutils, Gawk, + GCC, Glibc, Grep, Make, Patch, Sed, and Texinfo +
+
+
+
+
+
+ Test suite depends on: + No test suite available +
+
+
+
+
+
+ Must be installed before: + Man-DB and Perl +
+
+
+
+
+
+ Optional dependencies: + GPL Ghostscript +
+
+
+

+ GRUB +

+
+
+
+ Installation depends on: + Bash, Binutils, Bison, Coreutils, + Diffutils, GCC, Gettext, Glibc, Grep, Make, Ncurses, Sed, + Texinfo, and Xz +
+
+
+
+
+
+ Test suite depends on: + None +
+
+
+
+
+
+ Must be installed before: + None +
+
+
+
+
+
+ Optional dependencies: + None +
+
+
+

+ Gzip +

+
+
+
+ Installation depends on: + Bash, Binutils, Coreutils, GCC, Glibc, + Grep, Make, Sed, and Texinfo +
+
+
+
+
+
+ Test suite depends on: + Diffutils and Less +
+
+
+
+
+
+ Must be installed before: + Man-DB +
+
+
+
+
+
+ Optional dependencies: + None +
+
+
+

+ Iana-Etc +

+
+
+
+ Installation depends on: + Coreutils, Gawk, and Make +
+
+
+
+
+
+ Test suite depends on: + No test suite available +
+
+
+
+
+
+ Must be installed before: + Perl +
+
+
+
+
+
+ Optional dependencies: + None +
+
+
+

+ Inetutils +

+
+
+
+ Installation depends on: + Bash, Binutils, Coreutils, GCC, Glibc, + Grep, Make, Ncurses, Patch, Sed, Texinfo, and Zlib +
+
+
+
+
+
+ Test suite depends on: + No test suite available +
+
+
+
+
+
+ Must be installed before: + Tar +
+
+
+
+
+
+ Optional dependencies: + None +
+
+
+

+ Intltool +

+
+
+
+ Installation depends on: + Bash, Gawk, Glibc, Make, Perl, Sed, and + XML::Parser +
+
+
+
+
+
+ Test suite depends on: + Perl +
+
+
+
+
+
+ Must be installed before: + None +
+
+
+
+
+
+ Optional dependencies: + None +
+
+
+

+ IProute2 +

+
+
+
+ Installation depends on: + Bash, Bison, Coreutils, Flex, GCC, + Glibc, Make, and Linux API Headers +
+
+
+
+
+
+ Test suite depends on: + No test suite available +
+
+
+
+
+
+ Must be installed before: + None +
+
+
+
+
+
+ Optional dependencies: + None +
+
+
+

+ Kbd +

+
+
+
+ Installation depends on: + Bash, Binutils, Bison, Check, + Coreutils, Flex, GCC, Gettext, Glibc, Gzip, Make, Patch, and + Sed +
+
+
+
+
+
+ Test suite depends on: + No test suite available +
+
+
+
+
+
+ Must be installed before: + None +
+
+
+
+
+
+ Optional dependencies: + None +
+
+
+

+ Kmod +

+
+
+
+ Installation depends on: + Bash, Binutils, Bison, Coreutils, Flex, + GCC, Gettext, Glibc, Gzip, Make, Sed, Xz-Utils, and + Zlib +
+
+
+
+
+
+ Test suite depends on: + No test suite available +
+
+
+
+
+
+ Must be installed before: + Eudev +
+
+
+
+
+
+ Optional dependencies: + None +
+
+
+

+ Less +

+
+
+
+ Installation depends on: + Bash, Binutils, Coreutils, Diffutils, + GCC, Glibc, Grep, Make, Ncurses, and Sed +
+
+
+
+
+
+ Test suite depends on: + No test suite available +
+
+
+
+
+
+ Must be installed before: + Gzip +
+
+
+
+
+
+ Optional dependencies: + Pcre +
+
+
+

+ Libcap +

+
+
+
+ Installation depends on: + Attr, Bash, Binutils, Coreutils, GCC, + Glibc, Perl, Make, and Sed +
+
+
+
+
+
+ Test suite depends on: + No test suite available +
+
+
+
+
+
+ Must be installed before: + None +
+
+
+
+
+
+ Optional dependencies: + Linux-PAM +
+
+
+

+ Libelf +

+
+
+
+ Installation depends on: + Bash, Binutils, Coreutils, GCC, Glibc, + and Make +
+
+
+
+
+
+ Test suite depends on: + No test suite available +
+
+
+
+
+
+ Must be installed before: + Linux Kernel +
+
+
+
+
+
+ Optional dependencies: + None +
+
+
+

+ Libffi +

+
+
+
+ Installation depends on: + Bash, Binutils, Coreutils, GCC, Glibc, + Make, and Sed +
+
+
+
+
+
+ Test suite depends on: + DejaGnu +
+
+
+
+
+
+ Must be installed before: + Python +
+
+
+
+
+
+ Optional dependencies: + None +
+
+
+

+ Libpipeline +

+
+
+
+ Installation depends on: + Bash, Binutils, Coreutils, Diffutils, + Gawk, GCC, Glibc, Grep, Make, Sed, and Texinfo +
+
+
+
+
+
+ Test suite depends on: + Check +
+
+
+
+
+
+ Must be installed before: + Man-DB +
+
+
+
+
+
+ Optional dependencies: + None +
+
+
+

+ Libtool +

+
+
+
+ Installation depends on: + Bash, Binutils, Coreutils, Diffutils, + Gawk, GCC, Glibc, Grep, Make, Sed, and Texinfo +
+
+
+
+
+
+ Test suite depends on: + Autoconf, Automake, and + Findutils +
+
+
+
+
+
+ Must be installed before: + None +
+
+
+
+
+
+ Optional dependencies: + None +
+
+
+

+ Linux Kernel +

+
+
+
+ Installation depends on: + Bash, Bc, Binutils, Coreutils, + Diffutils, Findutils, GCC, Glibc, Grep, Gzip, Kmod, Libelf, + Make, Ncurses, OpenSSL, Perl, and Sed +
+
+
+
+
+
+ Test suite depends on: + No test suite available +
+
+
+
+
+
+ Must be installed before: + None +
+
+
+
+
+
+ Optional dependencies: + None +
+
+
+

+ M4 +

+
+
+
+ Installation depends on: + Bash, Binutils, Coreutils, GCC, Glibc, + Grep, Make, Sed, and Texinfo +
+
+
+
+
+
+ Test suite depends on: + Diffutils +
+
+
+
+
+
+ Must be installed before: + Autoconf and Bison +
+
+
+
+
+
+ Optional dependencies: + libsigsegv +
+
+
+

+ Make +

+
+
+
+ Installation depends on: + Bash, Binutils, Coreutils, GCC, + Gettext, Glibc, Grep, Make, Sed, and Texinfo +
+
+
+
+
+
+ Test suite depends on: + Perl and Procps-ng +
+
+
+
+
+
+ Must be installed before: + None +
+
+
+
+
+
+ Optional dependencies: + None +
+
+
+

+ Man-DB +

+
+
+
+ Installation depends on: + Bash, Binutils, Bzip2, Coreutils, Flex, + GCC, GDBM, Gettext, Glibc, Grep, Groff, Gzip, Less, + Libpipeline, Make, Sed, and Xz +
+
+
+
+
+
+ Test suite depends on: + Util-linux +
+
+
+
+
+
+ Must be installed before: + None +
+
+
+
+
+
+ Optional dependencies: + None +
+
+
+

+ Man-Pages +

+
+
+
+ Installation depends on: + Bash, Coreutils, and Make +
+
+
+
+
+
+ Test suite depends on: + No test suite available +
+
+
+
+
+
+ Must be installed before: + None +
+
+
+
+
+
+ Optional dependencies: + None +
+
+
+

+ Meson +

+
+
+
+ Installation depends on: + Ninja and Python +
+
+
+
+
+
+ Test suite depends on: + No test suite available +
+
+
+
+
+
+ Must be installed before: + None +
+
+
+
+
+
+ Optional dependencies: + None +
+
+
+

+ MPC +

+
+
+
+ Installation depends on: + Bash, Binutils, Coreutils, Diffutils, + Gawk, GCC, Glibc, Grep, GMP, Make, MPFR, Sed, and + Texinfo +
+
+
+
+
+
+ Test suite depends on: + None +
+
+
+
+
+
+ Must be installed before: + GCC +
+
+
+
+
+
+ Optional dependencies: + None +
+
+
+

+ MPFR +

+
+
+
+ Installation depends on: + Bash, Binutils, Coreutils, Diffutils, + Gawk, GCC, Glibc, Grep, GMP, Make, Sed, and Texinfo +
+
+
+
+
+
+ Test suite depends on: + None +
+
+
+
+
+
+ Must be installed before: + Gawk and GCC +
+
+
+
+
+
+ Optional dependencies: + None +
+
+
+

+ Ncurses +

+
+
+
+ Installation depends on: + Bash, Binutils, Coreutils, Diffutils, + Gawk, GCC, Glibc, Grep, Make, Patch, and Sed +
+
+
+
+
+
+ Test suite depends on: + No test suite available +
+
+
+
+
+
+ Must be installed before: + Bash, GRUB, Inetutils, Less, Procps-ng, + Psmisc, Readline, Texinfo, Util-linux, and Vim +
+
+
+
+
+
+ Optional dependencies: + None +
+
+
+

+ Ninja +

+
+
+
+ Installation depends on: + Binutils, Coreutils, Gcc, and + Python +
+
+
+
+
+
+ Test suite depends on: + None +
+
+
+
+
+
+ Must be installed before: + Meson +
+
+
+
+
+
+ Optional dependencies: + Asciidoc, Doxygen, Emacs, and + re2c +
+
+
+

+ Openssl +

+
+
+
+ Installation depends on: + Binutils, Coreutils, Gcc, Make, and + Perl +
+
+
+
+
+
+ Test suite depends on: + None +
+
+
+
+
+
+ Must be installed before: + Linux +
+
+
+
+
+
+ Optional dependencies: + None +
+
+
+

+ Patch +

+
+
+
+ Installation depends on: + Bash, Binutils, Coreutils, GCC, Glibc, + Grep, Make, and Sed +
+
+
+
+
+
+ Test suite depends on: + Diffutils +
+
+
+
+
+
+ Must be installed before: + None +
+
+
+
+
+
+ Optional dependencies: + Ed +
+
+
+

+ Perl +

+
+
+
+ Installation depends on: + Bash, Binutils, Coreutils, Gawk, GCC, + GDBM, Glibc, Grep, Groff, Make, Sed, and Zlib +
+
+
+
+
+
+ Test suite depends on: + Iana-Etc and Procps-ng +
+
+
+
+
+
+ Must be installed before: + Autoconf +
+
+
+
+
+
+ Optional dependencies: + None +
+
+
+

+ Pkg-config +

+
+
+
+ Installation depends on: + Bash, Binutils, Coreutils, Gawk, GCC, + Glibc, Grep, Make, Popt, and Sed +
+
+
+
+
+
+ Test suite depends on: + None +
+
+
+
+
+
+ Must be installed before: + Kmod +
+
+
+
+
+
+ Optional dependencies: + None +
+
+
+

+ Popt +

+
+
+
+ Installation depends on: + Bash, Binutils, Coreutils, Gawk, GCC, + Glibc, Grep, and Make +
+
+
+
+
+
+ Test suite depends on: + Diffutils and Sed +
+
+
+
+
+
+ Must be installed before: + Pkg-config +
+
+
+
+
+
+ Optional dependencies: + None +
+
+
+

+ Procps-ng +

+
+
+
+ Installation depends on: + Bash, Binutils, Coreutils, GCC, Glibc, + Make, and Ncurses +
+
+
+
+
+
+ Test suite depends on: + DejaGNU +
+
+
+
+
+
+ Must be installed before: + None +
+
+
+
+
+
+ Optional dependencies: + None +
+
+
+

+ Psmisc +

+
+
+
+ Installation depends on: + Bash, Binutils, Coreutils, GCC, + Gettext, Glibc, Grep, Make, Ncurses, and Sed +
+
+
+
+
+
+ Test suite depends on: + No test suite available +
+
+
+
+
+
+ Must be installed before: + None +
+
+
+
+
+
+ Optional dependencies: + None +
+
+
+

+ Python +

+
+
+
+ Installation depends on: + Bash, Binutils, Coreutils, GCC, Gdbm, + Gettext, Glibc, Grep, Libffi, Make, Ncurses, and Sed +
+
+
+
+
+
+ Test suite depends on: + GDB and Valgrind +
+
+
+
+
+
+ Must be installed before: + Ninja +
+
+
+
+
+
+ Optional dependencies: + Berkeley DB, OpenSSL, SQLite, and + Tk +
+
+
+

+ Readline +

+
+
+
+ Installation depends on: + Bash, Binutils, Coreutils, Gawk, GCC, + Glibc, Grep, Make, Ncurses, Patch, Sed, and Texinfo +
+
+
+
+
+
+ Test suite depends on: + No test suite available +
+
+
+
+
+
+ Must be installed before: + Bash and Gawk +
+
+
+
+
+
+ Optional dependencies: + None +
+
+
+

+ Sed +

+
+
+
+ Installation depends on: + Bash, Binutils, Coreutils, GCC, + Gettext, Glibc, Grep, Make, Sed, and Texinfo +
+
+
+
+
+
+ Test suite depends on: + Diffutils and Gawk +
+
+
+
+
+
+ Must be installed before: + E2fsprogs, File, Libtool, and + Shadow +
+
+
+
+
+
+ Optional dependencies: + None +
+
+
+

+ Shadow +

+
+
+
+ Installation depends on: + Bash, Binutils, Coreutils, Diffutils, + Findutils, Gawk, GCC, Gettext, Glibc, Grep, Make, and + Sed +
+
+
+
+
+
+ Test suite depends on: + No test suite available +
+
+
+
+
+
+ Must be installed before: + Coreutils +
+
+
+
+
+
+ Optional dependencies: + Acl, Attr, Cracklib, and PAM +
+
+
+

+ Sysklogd +

+
+
+
+ Installation depends on: + Binutils, Coreutils, GCC, Glibc, Make, + and Patch +
+
+
+
+
+
+ Test suite depends on: + No test suite available +
+
+
+
+
+
+ Must be installed before: + None +
+
+
+
+
+
+ Optional dependencies: + None +
+
+
+

+ Systemd +

+
+
+
+ Installation depends on: + Acl, Attr, Bash, Binutils, Coreutils, + Diffutils, Expat, Gawk, GCC, Glibc, Gperf, Grep, Intltool, + Libcap, Make, Sed, and Util-linux +
+
+
+
+
+
+ Test suite depends on: + None +
+
+
+
+
+
+ Must be installed before: + None +
+
+
+
+
+
+ Optional dependencies: + None +
+
+
+

+ Sysvinit +

+
+
+
+ Installation depends on: + Binutils, Coreutils, GCC, Glibc, Make, + and Sed +
+
+
+
+
+
+ Test suite depends on: + No test suite available +
+
+
+
+
+
+ Must be installed before: + None +
+
+
+
+
+
+ Optional dependencies: + None +
+
+
+

+ Tar +

+
+
+
+ Installation depends on: + Acl, Attr, Bash, Binutils, Bison, + Coreutils, GCC, Gettext, Glibc, Grep, Inetutils, Make, Sed, + and Texinfo +
+
+
+
+
+
+ Test suite depends on: + Autoconf, Diffutils, Findutils, Gawk, + and Gzip +
+
+
+
+
+
+ Must be installed before: + None +
+
+
+
+
+
+ Optional dependencies: + None +
+
+
+

+ Tcl +

+
+
+
+ Installation depends on: + Bash, Binutils, Coreutils, Diffutils, + GCC, Glibc, Grep, Make, and Sed +
+
+
+
+
+
+ Test suite depends on: + None +
+
+
+
+
+
+ Must be installed before: + None +
+
+
+
+
+
+ Optional dependencies: + None +
+
+
+

+ Texinfo +

+
+
+
+ Installation depends on: + Bash, Binutils, Coreutils, GCC, + Gettext, Glibc, Grep, Make, Ncurses, Patch, and Sed +
+
+
+
+
+
+ Test suite depends on: + None +
+
+
+
+
+
+ Must be installed before: + None +
+
+
+
+
+
+ Optional dependencies: + None +
+
+
+

+ Util-linux +

+
+
+
+ Installation depends on: + Bash, Binutils, Coreutils, Diffutils, + Eudev, Findutils, Gawk, GCC, Gettext, Glibc, Grep, Make, + Ncurses, Sed, and Zlib +
+
+
+
+
+
+ Test suite depends on: + None +
+
+
+
+
+
+ Must be installed before: + None +
+
+
+
+
+
+ Optional dependencies: + Libcap-ng +
+
+
+

+ Vim +

+
+
+
+ Installation depends on: + Acl, Attr, Bash, Binutils, Coreutils, + Diffutils, GCC, Glibc, Grep, Make, Ncurses, and Sed +
+
+
+
+
+
+ Test suite depends on: + None +
+
+
+
+
+
+ Must be installed before: + None +
+
+
+
+
+
+ Optional dependencies: + Xorg, GTK+2, LessTif, Python, Tcl, + Ruby, and GPM +
+
+
+

+ XML::Parser +

+
+
+
+ Installation depends on: + Bash, Binutils, Coreutils, Expat, GCC, + Glibc, Make, and Perl +
+
+
+
+
+
+ Test suite depends on: + Perl +
+
+
+
+
+
+ Must be installed before: + Intltool +
+
+
+
+
+
+ Optional dependencies: + None +
+
+
+

+ Xz +

+
+
+
+ Installation depends on: + Bash, Binutils, Coreutils, Diffutils, + GCC, Glibc, and Make +
+
+
+
+
+
+ Test suite depends on: + None +
+
+
+
+
+
+ Must be installed before: + Eudev, GRUB, Kmod, and Man-DB +
+
+
+
+
+
+ Optional dependencies: + None +
+
+
+

+ Zlib +

+
+
+
+ Installation depends on: + Bash, Binutils, Coreutils, GCC, Glibc, + Make, and Sed +
+
+
+
+
+
+ Test suite depends on: + None +
+
+
+
+
+
+ Must be installed before: + File, Kmod, Perl, and Util-linux +
+
+
+
+
+
+ Optional dependencies: + None +
+
+
+
+
+
+
+
+

+ Appendix D. Boot and sysconfig + scripts version-20180820 +

+
+
+
+

+ The scripts in this appendix are listed by the directory where + they normally reside. The order is /etc/rc.d/init.d, /etc/sysconfig, /etc/sysconfig/network-devices, and + /etc/sysconfig/network-devices/services. + Within each section, the files are listed in the order they are + normally called. +

+
+
+
+
+

+ D.1. /etc/rc.d/init.d/rc +

+
+
+
+

+ The rc script is the first + script called by init and + initiates the boot process. +

+
+#!/bin/bash
+########################################################################
+# Begin rc
+#
+# Description : Main Run Level Control Script
+#
+# Authors     : Gerard Beekmans  - gerard AT linuxfromscratch D0T org
+#             : DJ Lucas - dj AT linuxfromscratch D0T org
+# Update      : Bruce Dubbs - bdubbs AT linuxfromscratch D0T org
+#
+# Version     : LFS 7.0
+#
+########################################################################
+
+. /lib/lsb/init-functions
+
+print_error_msg()
+{
+   log_failure_msg
+   # $i is set when called
+   MSG="FAILURE:\n\nYou should not be reading this error message.\n\n" 
+   MSG="${MSG}It means that an unforeseen error took place in\n"
+   MSG="${MSG}${i},\n"
+   MSG="${MSG}which exited with a return value of ${error_value}.\n"
+  
+   MSG="${MSG}If you're able to track this error down to a bug in one of\n"
+   MSG="${MSG}the files provided by the ${DISTRO_MINI} book,\n"
+   MSG="${MSG}please be so kind to inform us at ${DISTRO_CONTACT}.\n"
+   log_failure_msg "${MSG}"
+
+   log_info_msg "Press Enter to continue..."
+   wait_for_user
+}
+
+check_script_status()
+{
+   # $i is set when called
+   if [ ! -f ${i} ]; then
+      log_warning_msg "${i} is not a valid symlink." 
+      SCRIPT_STAT="1"
+   fi
+
+   if [ ! -x ${i} ]; then
+      log_warning_msg "${i} is not executable, skipping."
+      SCRIPT_STAT="1"
+   fi
+}
+
+run()
+{
+   if [ -z $interactive ]; then
+      ${1} ${2}
+      return $?
+   fi
+
+   while true; do
+      read -p "Run ${1} ${2} (Yes/no/continue)? " -n 1 runit
+      echo
+
+      case ${runit} in
+         c | C)
+            interactive=""
+            ${i} ${2}
+            ret=${?}
+            break;
+            ;;
+
+         n | N)
+            return 0
+            ;;
+
+         y | Y)
+            ${i} ${2}
+            ret=${?}
+            break
+            ;;
+      esac
+   done
+
+   return $ret
+}
+
+# Read any local settings/overrides
+[ -r /etc/sysconfig/rc.site ] && source /etc/sysconfig/rc.site
+
+DISTRO=${DISTRO:-"Linux From Scratch"}
+DISTRO_CONTACT=${DISTRO_CONTACT:-"lfs-dev@linuxfromscratch.org (Registration required)"}
+DISTRO_MINI=${DISTRO_MINI:-"LFS"}
+IPROMPT=${IPROMPT:-"no"}
+
+# These 3 signals will not cause our script to exit
+trap "" INT QUIT TSTP
+
+[ "${1}" != "" ] && runlevel=${1}
+
+if [ "${runlevel}" == "" ]; then
+   echo "Usage: ${0} <runlevel>" >&2
+   exit 1
+fi
+
+previous=${PREVLEVEL}
+[ "${previous}" == "" ] && previous=N
+
+if [ ! -d /etc/rc.d/rc${runlevel}.d ]; then
+   log_info_msg "/etc/rc.d/rc${runlevel}.d does not exist.\n" 
+   exit 1
+fi
+
+if [ "$runlevel" == "6" -o "$runlevel" == "0" ]; then IPROMPT="no"; fi
+
+# Note: In ${LOGLEVEL:-7}, it is ':' 'dash' '7', not minus 7
+if [ "$runlevel" == "S" ]; then 
+   [ -r /etc/sysconfig/console ] && source /etc/sysconfig/console 
+   dmesg -n "${LOGLEVEL:-7}" 
+fi
+
+if [ "${IPROMPT}" == "yes" -a "${runlevel}" == "S" ]; then
+   # The total length of the distro welcome string, without escape codes
+   wlen=${wlen:-$(echo "Welcome to ${DISTRO}" | wc -c )}
+   welcome_message=${welcome_message:-"Welcome to ${INFO}${DISTRO}${NORMAL}"}
+
+   # The total length of the interactive string, without escape codes
+   ilen=${ilen:-$(echo "Press 'I' to enter interactive startup" | wc -c )}
+   i_message=${i_message:-"Press '${FAILURE}I${NORMAL}' to enter interactive startup"}
+
+
+   # dcol and icol are spaces before the message to center the message
+   # on screen. itime is the amount of wait time for the user to press a key
+   wcol=$(( ( ${COLUMNS} - ${wlen} ) / 2 ))
+   icol=$(( ( ${COLUMNS} - ${ilen} ) / 2 ))
+   itime=${itime:-"3"}
+
+   echo -e "\n\n"
+   echo -e "\\033[${wcol}G${welcome_message}"
+   echo -e "\\033[${icol}G${i_message}${NORMAL}"
+   echo ""
+   read -t "${itime}" -n 1 interactive 2>&1 > /dev/null
+fi
+
+# Make lower case
+[ "${interactive}" == "I" ] && interactive="i"
+[ "${interactive}" != "i" ] && interactive=""
+
+# Read the state file if it exists from runlevel S
+[ -r /var/run/interactive ] && source /var/run/interactive
+
+# Attempt to stop all services started by the previous runlevel,
+# and killed in this runlevel
+if [ "${previous}" != "N" ]; then
+   for i in $(ls -v /etc/rc.d/rc${runlevel}.d/K* 2> /dev/null)
+   do
+      check_script_status
+      if [ "${SCRIPT_STAT}" == "1" ]; then
+         SCRIPT_STAT="0"
+         continue
+      fi
+
+      suffix=${i#/etc/rc.d/rc$runlevel.d/K[0-9][0-9]}
+      prev_start=/etc/rc.d/rc$previous.d/S[0-9][0-9]$suffix
+      sysinit_start=/etc/rc.d/rcS.d/S[0-9][0-9]$suffix
+
+      if [ "${runlevel}" != "0" -a "${runlevel}" != "6" ]; then
+         if [ ! -f ${prev_start} -a  ! -f ${sysinit_start} ]; then
+            MSG="WARNING:\n\n${i} can't be "
+            MSG="${MSG}executed because it was not "
+            MSG="${MSG}not started in the previous "
+            MSG="${MSG}runlevel (${previous})."
+            log_warning_msg "$MSG"
+            continue
+         fi
+      fi
+
+      run ${i} stop
+      error_value=${?}
+
+      if [ "${error_value}" != "0" ]; then print_error_msg; fi
+   done
+fi
+
+if [ "${previous}" == "N" ]; then export IN_BOOT=1; fi
+
+if [ "$runlevel" == "6" -a -n "${FASTBOOT}" ]; then
+   touch /fastboot
+fi
+
+
+# Start all functions in this runlevel
+for i in $( ls -v /etc/rc.d/rc${runlevel}.d/S* 2> /dev/null)
+do
+   if [ "${previous}" != "N" ]; then
+      suffix=${i#/etc/rc.d/rc$runlevel.d/S[0-9][0-9]}
+      stop=/etc/rc.d/rc$runlevel.d/K[0-9][0-9]$suffix
+      prev_start=/etc/rc.d/rc$previous.d/S[0-9][0-9]$suffix
+
+      [ -f ${prev_start} -a ! -f ${stop} ] && continue
+   fi
+
+   check_script_status
+      if [ "${SCRIPT_STAT}" == "1" ]; then
+         SCRIPT_STAT="0"
+         continue
+      fi
+
+   case ${runlevel} in
+      0|6)
+         run ${i} stop
+         ;;
+      *)
+         run ${i} start
+         ;;
+   esac
+
+   error_value=${?}
+
+   if [ "${error_value}" != "0" ]; then print_error_msg; fi
+done
+
+# Store interactive variable on switch from runlevel S and remove if not
+if [ "${runlevel}" == "S" -a "${interactive}" == "i" ]; then
+    echo "interactive=\"i\"" > /var/run/interactive
+else
+    rm -f /var/run/interactive 2> /dev/null
+fi
+
+# Copy the boot log on initial boot only
+if [ "${previous}" == "N" -a  "${runlevel}" != "S" ]; then
+   cat $BOOTLOG >> /var/log/boot.log
+      
+   # Mark the end of boot
+   echo "--------" >> /var/log/boot.log
+   
+   # Remove the temporary file
+   rm -f $BOOTLOG 2> /dev/null
+fi
+
+# End rc
+
+
+
+
+
+
+

+ D.2. /lib/lsb/init-functions +

+
+
+
+
+#!/bin/sh
+########################################################################
+# 
+# Begin /lib/lsb/init-funtions
+#
+# Description : Run Level Control Functions
+#
+# Authors     : Gerard Beekmans - gerard AT linuxfromscratch D0T org
+#             : DJ Lucas - dj AT linuxfromscratch D0T org
+# Update      : Bruce Dubbs - bdubbs AT linuxfromscratch D0T org
+#
+# Version     : LFS 7.0
+#
+# Notes       : With code based on Matthias Benkmann's simpleinit-msb
+#               http://winterdrache.de/linux/newboot/index.html
+#
+#               The file should be located in /lib/lsb
+#
+########################################################################
+
+## Environmental setup
+# Setup default values for environment
+umask 022
+export PATH="/bin:/usr/bin:/sbin:/usr/sbin"
+
+## Set color commands, used via echo
+# Please consult `man console_codes for more information
+# under the "ECMA-48 Set Graphics Rendition" section
+#
+# Warning: when switching from a 8bit to a 9bit font,
+# the linux console will reinterpret the bold (1;) to
+# the top 256 glyphs of the 9bit font.  This does
+# not affect framebuffer consoles
+
+NORMAL="\\033[0;39m"         # Standard console grey
+SUCCESS="\\033[1;32m"        # Success is green
+WARNING="\\033[1;33m"        # Warnings are yellow
+FAILURE="\\033[1;31m"        # Failures are red
+INFO="\\033[1;36m"           # Information is light cyan
+BRACKET="\\033[1;34m"        # Brackets are blue
+
+# Use a colored prefix
+BMPREFIX="     "
+SUCCESS_PREFIX="${SUCCESS}  *  ${NORMAL}"
+FAILURE_PREFIX="${FAILURE}*****${NORMAL}"
+WARNING_PREFIX="${WARNING} *** ${NORMAL}"
+SKIP_PREFIX="${INFO}  S  ${NORMAL}"
+
+SUCCESS_SUFFIX="${BRACKET}[${SUCCESS}  OK  ${BRACKET}]${NORMAL}"
+FAILURE_SUFFIX="${BRACKET}[${FAILURE} FAIL ${BRACKET}]${NORMAL}"
+WARNING_SUFFIX="${BRACKET}[${WARNING} WARN ${BRACKET}]${NORMAL}"
+SKIP_SUFFIX="${BRACKET}[${INFO} SKIP ${BRACKET}]${NORMAL}"
+
+BOOTLOG=/run/bootlog
+KILLDELAY=3
+SCRIPT_STAT="0"
+
+# Set any user specified environment variables e.g. HEADLESS
+[ -r /etc/sysconfig/rc.site ]  && . /etc/sysconfig/rc.site
+
+## Screen Dimensions
+# Find current screen size
+if [ -z "${COLUMNS}" ]; then
+   COLUMNS=$(stty size)
+   COLUMNS=${COLUMNS##* }
+fi
+
+# When using remote connections, such as a serial port, stty size returns 0
+if [ "${COLUMNS}" = "0" ]; then
+   COLUMNS=80
+fi
+
+## Measurements for positioning result messages
+COL=$((${COLUMNS} - 8))
+WCOL=$((${COL} - 2))
+
+## Set Cursor Position Commands, used via echo
+SET_COL="\\033[${COL}G"      # at the $COL char
+SET_WCOL="\\033[${WCOL}G"    # at the $WCOL char
+CURS_UP="\\033[1A\\033[0G"   # Up one line, at the 0'th char
+CURS_ZERO="\\033[0G"
+
+################################################################################
+# start_daemon()                                                               #
+# Usage: start_daemon [-f] [-n nicelevel] [-p pidfile] pathname [args...]      #
+#                                                                              #
+# Purpose: This runs the specified program as a daemon                         #
+#                                                                              #
+# Inputs: -f: (force) run the program even if it is already running.           #
+#         -n nicelevel: specify a nice level. See 'man nice(1)'.               #
+#         -p pidfile: use the specified file to determine PIDs.                #
+#         pathname: the complete path to the specified program                 #
+#         args: additional arguments passed to the program (pathname)          #
+#                                                                              #
+# Return values (as defined by LSB exit codes):                                #
+#       0 - program is running or service is OK                                #
+#       1 - generic or unspecified error                                       #
+#       2 - invalid or excessive argument(s)                                   #
+#       5 - program is not installed                                           #
+################################################################################
+start_daemon()
+{
+    local force=""
+    local nice="0"
+    local pidfile=""
+    local pidlist=""
+    local retval=""
+
+    # Process arguments
+    while true
+    do
+        case "${1}" in
+
+            -f)
+                force="1"
+                shift 1
+                ;;
+
+            -n)
+                nice="${2}"
+                shift 2
+                ;;
+
+            -p)
+                pidfile="${2}"
+                shift 2
+                ;;
+
+            -*)
+                return 2
+                ;;
+
+            *)
+                program="${1}"
+                break
+                ;;
+        esac
+    done
+
+    # Check for a valid program
+    if [ ! -e "${program}" ]; then return 5; fi
+
+    # Execute
+    if [ -z "${force}" ]; then
+        if [ -z "${pidfile}" ]; then
+            # Determine the pid by discovery
+            pidlist=`pidofproc "${1}"`
+            retval="${?}"
+        else
+            # The PID file contains the needed PIDs
+            # Note that by LSB requirement, the path must be given to pidofproc,
+            # however, it is not used by the current implementation or standard.
+            pidlist=`pidofproc -p "${pidfile}" "${1}"`
+            retval="${?}"
+        fi
+
+        # Return a value ONLY 
+        # It is the init script's (or distribution's functions) responsibilty
+        # to log messages!
+        case "${retval}" in
+
+            0)
+                # Program is already running correctly, this is a 
+                # successful start.
+                return 0
+                ;;
+
+            1)
+                # Program is not running, but an invalid pid file exists
+                # remove the pid file and continue
+                rm -f "${pidfile}"
+                ;;
+
+            3)
+                # Program is not running and no pidfile exists
+                # do nothing here, let start_deamon continue.
+                ;;
+
+            *)
+                # Others as returned by status values shall not be interpreted
+                # and returned as an unspecified error.
+                return 1
+                ;;
+        esac
+    fi
+
+    # Do the start!
+    nice -n "${nice}" "${@}"
+}
+
+################################################################################
+# killproc()                                                                   #
+# Usage: killproc [-p pidfile] pathname [signal]                               #
+#                                                                              #
+# Purpose: Send control signals to running processes                           #
+#                                                                              #
+# Inputs: -p pidfile, uses the specified pidfile                               #
+#         pathname, pathname to the specified program                          #
+#         signal, send this signal to pathname                                 #
+#                                                                              #
+# Return values (as defined by LSB exit codes):                                #
+#       0 - program (pathname) has stopped/is already stopped or a             #
+#           running program has been sent specified signal and stopped         #
+#           successfully                                                       #
+#       1 - generic or unspecified error                                       #
+#       2 - invalid or excessive argument(s)                                   #
+#       5 - program is not installed                                           #
+#       7 - program is not running and a signal was supplied                   #
+################################################################################
+killproc()
+{
+    local pidfile
+    local program
+    local prefix
+    local progname
+    local signal="-TERM"
+    local fallback="-KILL"
+    local nosig
+    local pidlist
+    local retval
+    local pid
+    local delay="30"
+    local piddead
+    local dtime
+
+    # Process arguments
+    while true; do
+        case "${1}" in
+            -p)
+                pidfile="${2}"
+                shift 2
+                ;;
+ 
+             *)
+                 program="${1}"
+                 if [ -n "${2}" ]; then
+                     signal="${2}"
+                     fallback=""
+                 else
+                     nosig=1
+                 fi
+
+                 # Error on additional arguments
+                 if [ -n "${3}" ]; then
+                     return 2
+                 else 
+                     break
+                 fi                 
+                 ;;
+        esac
+    done
+
+    # Check for a valid program
+    if [ ! -e "${program}" ]; then return 5; fi
+
+    # Check for a valid signal
+    check_signal "${signal}"
+    if [ "${?}" -ne "0" ]; then return 2; fi
+
+    # Get a list of pids
+    if [ -z "${pidfile}" ]; then
+        # determine the pid by discovery
+        pidlist=`pidofproc "${1}"`
+        retval="${?}"
+    else
+        # The PID file contains the needed PIDs
+        # Note that by LSB requirement, the path must be given to pidofproc,
+        # however, it is not used by the current implementation or standard.
+        pidlist=`pidofproc -p "${pidfile}" "${1}"`
+        retval="${?}"
+    fi
+
+    # Return a value ONLY
+    # It is the init script's (or distribution's functions) responsibilty
+    # to log messages!
+    case "${retval}" in
+
+        0)
+            # Program is running correctly
+            # Do nothing here, let killproc continue.
+            ;;
+
+        1)
+            # Program is not running, but an invalid pid file exists
+            # Remove the pid file.
+            rm -f "${pidfile}"
+
+            # This is only a success if no signal was passed.
+            if [ -n "${nosig}" ]; then
+                return 0
+            else
+                return 7
+            fi
+            ;;
+
+        3)
+            # Program is not running and no pidfile exists
+            # This is only a success if no signal was passed.
+            if [ -n "${nosig}" ]; then
+                return 0
+            else
+                return 7
+            fi
+            ;;
+
+        *)
+            # Others as returned by status values shall not be interpreted
+            # and returned as an unspecified error.
+            return 1
+            ;;
+    esac
+
+    # Perform different actions for exit signals and control signals
+    check_sig_type "${signal}"
+
+    if [ "${?}" -eq "0" ]; then # Signal is used to terminate the program
+
+        # Account for empty pidlist (pid file still exists and no 
+        # signal was given)
+        if [ "${pidlist}" != "" ]; then
+
+            # Kill the list of pids
+            for pid in ${pidlist}; do
+
+                kill -0 "${pid}" 2> /dev/null
+
+                if [ "${?}" -ne "0" ]; then
+                    # Process is dead, continue to next and assume all is well
+                    continue
+                else
+                    kill "${signal}" "${pid}" 2> /dev/null
+
+                    # Wait up to ${delay}/10 seconds to for "${pid}" to 
+                    # terminate in 10ths of a second
+
+                    while [ "${delay}" -ne "0" ]; do
+                        kill -0 "${pid}" 2> /dev/null || piddead="1"
+                        if [ "${piddead}" = "1" ]; then break; fi
+                        sleep 0.1
+                        delay="$(( ${delay} - 1 ))"
+                    done
+
+                    # If a fallback is set, and program is still running, then
+                    # use the fallback
+                    if [ -n "${fallback}" -a "${piddead}" != "1" ]; then
+                        kill "${fallback}" "${pid}" 2> /dev/null
+                        sleep 1
+                        # Check again, and fail if still running
+                        kill -0 "${pid}" 2> /dev/null && return 1
+                    fi
+                fi
+            done
+        fi
+
+        # Check for and remove stale PID files.
+        if [ -z "${pidfile}" ]; then
+            # Find the basename of $program
+            prefix=`echo "${program}" | sed 's/[^/]*$//'`
+            progname=`echo "${program}" | sed "s@${prefix}@@"`
+
+            if [ -e "/var/run/${progname}.pid" ]; then
+                rm -f "/var/run/${progname}.pid" 2> /dev/null
+            fi
+        else
+            if [ -e "${pidfile}" ]; then rm -f "${pidfile}" 2> /dev/null; fi
+        fi
+
+    # For signals that do not expect a program to exit, simply
+    # let kill do its job, and evaluate kill's return for value
+
+    else # check_sig_type - signal is not used to terminate program
+        for pid in ${pidlist}; do
+            kill "${signal}" "${pid}"
+            if [ "${?}" -ne "0" ]; then return 1; fi
+        done
+    fi
+}
+
+################################################################################
+# pidofproc()                                                                  #
+# Usage: pidofproc [-p pidfile] pathname                                       #
+#                                                                              #
+# Purpose: This function returns one or more pid(s) for a particular daemon    #
+#                                                                              #
+# Inputs: -p pidfile, use the specified pidfile instead of pidof               #
+#         pathname, path to the specified program                              #
+#                                                                              #
+# Return values (as defined by LSB status codes):                              #
+#       0 - Success (PIDs to stdout)                                           #
+#       1 - Program is dead, PID file still exists (remaining PIDs output)     #
+#       3 - Program is not running (no output)                                 #
+################################################################################
+pidofproc()
+{
+    local pidfile
+    local program
+    local prefix
+    local progname
+    local pidlist
+    local lpids
+    local exitstatus="0"
+
+    # Process arguments
+    while true; do
+        case "${1}" in
+
+            -p)
+                pidfile="${2}"
+                shift 2
+                ;;
+
+            *)
+                program="${1}"
+                if [ -n "${2}" ]; then
+                    # Too many arguments
+                    # Since this is status, return unknown
+                    return 4
+                else
+                    break
+                fi
+                ;;
+        esac
+    done
+
+    # If a PID file is not specified, try and find one.
+    if [ -z "${pidfile}" ]; then
+        # Get the program's basename
+        prefix=`echo "${program}" | sed 's/[^/]*$//'`
+
+        if [ -z "${prefix}" ]; then 
+           progname="${program}"
+        else
+           progname=`echo "${program}" | sed "s@${prefix}@@"`
+        fi
+
+        # If a PID file exists with that name, assume that is it.
+        if [ -e "/var/run/${progname}.pid" ]; then
+            pidfile="/var/run/${progname}.pid"
+        fi
+    fi
+
+    # If a PID file is set and exists, use it.
+    if [ -n "${pidfile}" -a -e "${pidfile}" ]; then
+
+        # Use the value in the first line of the pidfile
+        pidlist=`/bin/head -n1 "${pidfile}"`
+        # This can optionally be written as 'sed 1q' to repalce 'head -n1'
+        # should LFS move /bin/head to /usr/bin/head
+    else
+        # Use pidof
+        pidlist=`pidof "${program}"`
+    fi
+
+    # Figure out if all listed PIDs are running.
+    for pid in ${pidlist}; do
+        kill -0 ${pid} 2> /dev/null
+
+        if [ "${?}" -eq "0" ]; then
+            lpids="${lpids}${pid} "
+        else
+            exitstatus="1"
+        fi
+    done
+
+    if [ -z "${lpids}" -a ! -f "${pidfile}" ]; then
+        return 3
+    else
+        echo "${lpids}"
+        return "${exitstatus}"
+    fi
+}
+
+################################################################################
+# statusproc()                                                                 #
+# Usage: statusproc [-p pidfile] pathname                                      #
+#                                                                              #
+# Purpose: This function prints the status of a particular daemon to stdout    #
+#                                                                              #
+# Inputs: -p pidfile, use the specified pidfile instead of pidof               #
+#         pathname, path to the specified program                              #
+#                                                                              #
+# Return values:                                                               #
+#       0 - Status printed                                                     #
+#       1 - Input error. The daemon to check was not specified.                #
+################################################################################
+statusproc()
+{
+   local pidfile
+   local pidlist
+
+   if [ "${#}" = "0" ]; then
+      echo "Usage: statusproc [-p pidfle] {program}"
+      exit 1
+   fi
+
+   # Process arguments
+   while true; do
+       case "${1}" in
+
+           -p)
+               pidfile="${2}"
+               shift 2
+               ;;
+
+           *)
+               if [ -n "${2}" ]; then
+                   echo "Too many arguments"
+                   return 1
+               else
+                   break
+               fi
+               ;;
+       esac
+   done
+
+   if [ -n "${pidfile}" ]; then
+      pidlist=`pidofproc -p "${pidfile}" $@`
+   else
+      pidlist=`pidofproc $@`
+   fi
+
+   # Trim trailing blanks
+   pidlist=`echo "${pidlist}" | sed -r 's/ +$//'`
+
+   base="${1##*/}"
+
+   if [ -n "${pidlist}" ]; then
+      /bin/echo -e "${INFO}${base} is running with Process" \
+         "ID(s) ${pidlist}.${NORMAL}"
+   else
+      if [ -n "${base}" -a -e "/var/run/${base}.pid" ]; then
+         /bin/echo -e "${WARNING}${1} is not running but" \
+            "/var/run/${base}.pid exists.${NORMAL}"
+      else
+         if [ -n "${pidfile}" -a -e "${pidfile}" ]; then
+            /bin/echo -e "${WARNING}${1} is not running" \
+               "but ${pidfile} exists.${NORMAL}"
+         else
+            /bin/echo -e "${INFO}${1} is not running.${NORMAL}"
+         fi
+      fi
+   fi
+}
+
+################################################################################
+# timespec()                                                                   #
+#                                                                              #
+# Purpose: An internal utility function to format a timestamp                  #
+#          a boot log file.  Sets the STAMP variable.                          #
+#                                                                              #
+# Return value: Not used                                                       #
+################################################################################
+timespec()
+{
+   STAMP="$(echo `date +"%b %d %T %:z"` `hostname`) "
+   return 0
+}
+
+################################################################################
+# log_success_msg()                                                            #
+# Usage: log_success_msg ["message"]                                           #
+#                                                                              #
+# Purpose: Print a successful status message to the screen and                 #
+#          a boot log file.                                                    #
+#                                                                              #
+# Inputs: $@ - Message                                                         #
+#                                                                              #
+# Return values: Not used                                                      #
+################################################################################
+log_success_msg()
+{
+    /bin/echo -n -e "${BMPREFIX}${@}"
+    /bin/echo -e "${CURS_ZERO}${SUCCESS_PREFIX}${SET_COL}${SUCCESS_SUFFIX}"
+
+    # Strip non-printable characters from log file
+    logmessage=`echo "${@}" | sed 's/\\\033[^a-zA-Z]*.//g'`
+
+    timespec
+    /bin/echo -e "${STAMP} ${logmessage} OK" >> ${BOOTLOG}
+    
+    return 0
+}
+
+log_success_msg2()
+{
+    /bin/echo -n -e "${BMPREFIX}${@}"
+    /bin/echo -e "${CURS_ZERO}${SUCCESS_PREFIX}${SET_COL}${SUCCESS_SUFFIX}"
+
+    echo " OK" >> ${BOOTLOG}
+    
+    return 0
+}
+
+################################################################################
+# log_failure_msg()                                                            #
+# Usage: log_failure_msg ["message"]                                           #
+#                                                                              #
+# Purpose: Print a failure status message to the screen and                    #
+#          a boot log file.                                                    #
+#                                                                              #
+# Inputs: $@ - Message                                                         #
+#                                                                              #
+# Return values: Not used                                                      #
+################################################################################
+log_failure_msg()
+{
+    /bin/echo -n -e "${BMPREFIX}${@}"
+    /bin/echo -e "${CURS_ZERO}${FAILURE_PREFIX}${SET_COL}${FAILURE_SUFFIX}"
+
+    # Strip non-printable characters from log file
+
+    timespec
+    logmessage=`echo "${@}" | sed 's/\\\033[^a-zA-Z]*.//g'`
+    /bin/echo -e "${STAMP} ${logmessage} FAIL" >> ${BOOTLOG}
+    
+    return 0
+}
+
+log_failure_msg2()
+{
+    /bin/echo -n -e "${BMPREFIX}${@}"
+    /bin/echo -e "${CURS_ZERO}${FAILURE_PREFIX}${SET_COL}${FAILURE_SUFFIX}"
+
+    echo "FAIL" >> ${BOOTLOG}
+    
+    return 0
+}
+
+################################################################################
+# log_warning_msg()                                                            #
+# Usage: log_warning_msg ["message"]                                           #
+#                                                                              #
+# Purpose: Print a warning status message to the screen and                    #
+#          a boot log file.                                                    #
+#                                                                              #
+# Return values: Not used                                                      #
+################################################################################
+log_warning_msg()
+{
+    /bin/echo -n -e "${BMPREFIX}${@}"
+    /bin/echo -e "${CURS_ZERO}${WARNING_PREFIX}${SET_COL}${WARNING_SUFFIX}"
+
+    # Strip non-printable characters from log file
+    logmessage=`echo "${@}" | sed 's/\\\033[^a-zA-Z]*.//g'`
+    timespec
+    /bin/echo -e "${STAMP} ${logmessage} WARN" >> ${BOOTLOG}
+    
+    return 0
+}
+
+log_skip_msg()
+{
+    /bin/echo -n -e "${BMPREFIX}${@}"
+    /bin/echo -e "${CURS_ZERO}${SKIP_PREFIX}${SET_COL}${SKIP_SUFFIX}"
+
+    # Strip non-printable characters from log file
+    logmessage=`echo "${@}" | sed 's/\\\033[^a-zA-Z]*.//g'`
+    /bin/echo "SKIP" >> ${BOOTLOG}
+    
+    return 0
+}
+
+################################################################################
+# log_info_msg()                                                               #
+# Usage: log_info_msg message                                                  #
+#                                                                              #
+# Purpose: Print an information message to the screen and                      #
+#          a boot log file.  Does not print a trailing newline character.      #
+#                                                                              #
+# Return values: Not used                                                      #
+################################################################################
+log_info_msg()
+{
+    /bin/echo -n -e "${BMPREFIX}${@}"
+
+    # Strip non-printable characters from log file
+    logmessage=`echo "${@}" | sed 's/\\\033[^a-zA-Z]*.//g'`
+    timespec
+    /bin/echo -n -e "${STAMP} ${logmessage}" >> ${BOOTLOG}
+    
+    return 0
+}
+
+log_info_msg2()
+{
+    /bin/echo -n -e "${@}"
+
+    # Strip non-printable characters from log file
+    logmessage=`echo "${@}" | sed 's/\\\033[^a-zA-Z]*.//g'`
+    /bin/echo -n -e "${logmessage}" >> ${BOOTLOG}
+    
+    return 0
+}
+
+################################################################################
+# evaluate_retval()                                                            #
+# Usage: Evaluate a return value and print success or failyure as appropriate  #
+#                                                                              #
+# Purpose: Convenience function to terminate an info message                   #
+#                                                                              #
+# Return values: Not used                                                      #
+################################################################################
+evaluate_retval()
+{
+   local error_value="${?}"
+
+   if [ ${error_value} = 0 ]; then
+      log_success_msg2
+   else
+      log_failure_msg2
+   fi
+}
+
+################################################################################
+# check_signal()                                                               #
+# Usage: check_signal [ -{signal} | {signal} ]                                 #
+#                                                                              #
+# Purpose: Check for a valid signal.  This is not defined by any LSB draft,    #
+#          however, it is required to check the signals to determine if the    #
+#          signals chosen are invalid arguments to the other functions.        #
+#                                                                              #
+# Inputs: Accepts a single string value in the form or -{signal} or {signal}   #
+#                                                                              #
+# Return values:                                                               #
+#       0 - Success (signal is valid                                           #
+#       1 - Signal is not valid                                                #
+################################################################################
+check_signal()
+{
+    local valsig
+
+    # Add error handling for invalid signals
+    valsig="-ALRM -HUP -INT -KILL -PIPE -POLL -PROF -TERM -USR1 -USR2"
+    valsig="${valsig} -VTALRM -STKFLT -PWR -WINCH -CHLD -URG -TSTP -TTIN"
+    valsig="${valsig} -TTOU -STOP -CONT -ABRT -FPE -ILL -QUIT -SEGV -TRAP"
+    valsig="${valsig} -SYS -EMT -BUS -XCPU -XFSZ -0 -1 -2 -3 -4 -5 -6 -8 -9"
+    valsig="${valsig} -11 -13 -14 -15"
+
+    echo "${valsig}" | grep -- " ${1} " > /dev/null
+
+    if [ "${?}" -eq "0" ]; then
+        return 0
+    else
+        return 1
+    fi
+}
+
+################################################################################
+# check_sig_type()                                                             #
+# Usage: check_signal [ -{signal} | {signal} ]                                 #
+#                                                                              #
+# Purpose: Check if signal is a program termination signal or a control signal #
+#          This is not defined by any LSB draft, however, it is required to    #
+#          check the signals to determine if they are intended to end a        #
+#          program or simply to control it.                                    #
+#                                                                              #
+# Inputs: Accepts a single string value in the form or -{signal} or {signal}   #
+#                                                                              #
+# Return values:                                                               #
+#       0 - Signal is used for program termination                             #
+#       1 - Signal is used for program control                                 #
+################################################################################
+check_sig_type()
+{
+    local valsig
+
+    # The list of termination signals (limited to generally used items)
+    valsig="-ALRM -INT -KILL -TERM -PWR -STOP -ABRT -QUIT -2 -3 -6 -9 -14 -15"
+
+    echo "${valsig}" | grep -- " ${1} " > /dev/null
+
+    if [ "${?}" -eq "0" ]; then
+        return 0
+    else
+        return 1
+    fi
+}
+
+################################################################################
+# wait_for_user()                                                              #
+#                                                                              #
+# Purpose: Wait for the user to respond if not a headless system               #
+#                                                                              #
+################################################################################
+wait_for_user()
+{
+   # Wait for the user by default
+   [ "${HEADLESS=0}" = "0" ] && read ENTER
+   return 0
+}
+
+################################################################################
+# is_true()                                                                    #
+#                                                                              #
+# Purpose: Utility to test if a variable is true | yes | 1                     #
+#                                                                              #
+################################################################################
+is_true()
+{
+   [ "$1" = "1" ] || [ "$1" = "yes" ] || [ "$1" = "true" ] ||  [ "$1" = "y" ] ||
+   [ "$1" = "t" ]
+}
+
+# End /lib/lsb/init-functions
+
+
+
+
+
+
+

+ D.3. /etc/rc.d/init.d/mountvirtfs +

+
+
+
+
+#!/bin/sh
+########################################################################
+# Begin mountvirtfs
+#
+# Description : Mount proc, sysfs, and run
+#
+# Authors     : Gerard Beekmans - gerard AT linuxfromscratch D0T org
+#               DJ Lucas - dj AT linuxfromscratch D0T org
+# Update      : Bruce Dubbs - bdubbs AT linuxfromscratch D0T org
+#
+# Version     : LFS 7.0
+#
+########################################################################
+
+### BEGIN INIT INFO
+# Provides:            mountvirtfs
+# Required-Start:
+# Should-Start:
+# Required-Stop:
+# Should-Stop:
+# Default-Start:       S
+# Default-Stop:
+# Short-Description:   Mounts /sys and /proc virtual (kernel) filesystems.
+#                      Mounts /run (tmpfs) and /dev (devtmpfs).
+# Description:         Mounts /sys and /proc virtual (kernel) filesystems.
+#                      Mounts /run (tmpfs) and /dev (devtmpfs).
+# X-LFS-Provided-By:   LFS
+### END INIT INFO
+
+. /lib/lsb/init-functions
+
+case "${1}" in
+   start)
+      # Make sure /run is available before logging any messages
+      if ! mountpoint /run >/dev/null; then
+         mount /run || failed=1
+      fi
+
+      mkdir -p /run/lock /run/shm
+      chmod 1777 /run/shm /run/lock
+
+      log_info_msg "Mounting virtual file systems: ${INFO}/run" 
+
+      if ! mountpoint /proc >/dev/null; then
+         log_info_msg2 " ${INFO}/proc"
+         mount -o nosuid,noexec,nodev /proc || failed=1
+      fi
+
+      if ! mountpoint /sys >/dev/null; then
+         log_info_msg2 " ${INFO}/sys" 
+         mount -o nosuid,noexec,nodev /sys || failed=1
+      fi
+
+      if ! mountpoint /dev >/dev/null; then
+         log_info_msg2 " ${INFO}/dev" 
+         mount -o mode=0755,nosuid /dev  || failed=1
+      fi
+
+      ln -sfn /run/shm /dev/shm
+      
+      (exit ${failed})
+      evaluate_retval
+      exit $failed
+      ;;
+
+   *)
+      echo "Usage: ${0} {start}"
+      exit 1
+      ;;
+esac
+
+# End mountvirtfs
+
+
+
+
+
+
+

+ D.4. /etc/rc.d/init.d/modules +

+
+
+
+
+#!/bin/sh
+########################################################################
+# Begin modules
+#
+# Description : Module auto-loading script
+#
+# Authors     : Zack Winkles
+#               DJ Lucas - dj AT linuxfromscratch D0T org
+# Update      : Bruce Dubbs - bdubbs AT linuxfromscratch D0T org
+#
+# Version     : LFS 7.0
+#
+########################################################################
+
+### BEGIN INIT INFO
+# Provides:            modules
+# Required-Start:      mountvirtfs sysctl
+# Should-Start:
+# Required-Stop:
+# Should-Stop:
+# Default-Start:       S
+# Default-Stop:
+# Short-Description:   Loads required modules.
+# Description:         Loads modules listed in /etc/sysconfig/modules.
+# X-LFS-Provided-By:   LFS
+### END INIT INFO
+
+# Assure that the kernel has module support.
+[ -e /proc/modules ] || exit 0
+
+. /lib/lsb/init-functions
+
+case "${1}" in
+   start)
+      # Exit if there's no modules file or there are no
+      # valid entries
+      [ -r /etc/sysconfig/modules ]             || exit 0
+      egrep -qv '^($|#)' /etc/sysconfig/modules || exit 0
+
+      log_info_msg "Loading modules:" 
+
+      # Only try to load modules if the user has actually given us
+      # some modules to load.
+
+      while read module args; do
+
+         # Ignore comments and blank lines.
+         case "$module" in
+            ""|"#"*) continue ;;
+         esac
+
+         # Attempt to load the module, passing any arguments provided.
+         modprobe ${module} ${args} >/dev/null
+
+         # Print the module name if successful, otherwise take note.
+         if [ $? -eq 0 ]; then
+            log_info_msg2 " ${module}" 
+         else
+            failedmod="${failedmod} ${module}"
+         fi
+      done < /etc/sysconfig/modules
+
+      # Print a message about successfully loaded modules on the correct line.
+      log_success_msg2
+
+      # Print a failure message with a list of any modules that 
+      # may have failed to load.
+      if [ -n "${failedmod}" ]; then
+         log_failure_msg "Failed to load modules:${failedmod}" 
+         exit 1
+      fi
+      ;;
+
+   *)
+      echo "Usage: ${0} {start}"
+      exit 1
+      ;;
+esac
+
+exit 0
+
+# End modules
+
+
+
+
+
+
+

+ D.5. /etc/rc.d/init.d/udev +

+
+
+
+
+#!/bin/sh
+########################################################################
+# Begin udev
+#
+# Description : Udev cold-plugging script
+#
+# Authors     : Zack Winkles, Alexander E. Patrakov
+#               DJ Lucas - dj AT linuxfromscratch D0T org
+# Update      : Bruce Dubbs - bdubbs AT linuxfromscratch D0T org
+#
+# Version     : LFS 7.0
+#
+########################################################################
+
+### BEGIN INIT INFO
+# Provides:            udev $time
+# Required-Start:
+# Should-Start:        modules
+# Required-Stop:
+# Should-Stop:
+# Default-Start:       S
+# Default-Stop:
+# Short-Description:   Populates /dev with device nodes.
+# Description:         Mounts a tempfs on /dev and starts the udevd daemon.
+#                      Device nodes are created as defined by udev.
+# X-LFS-Provided-By:   LFS
+### END INIT INFO
+
+. /lib/lsb/init-functions
+
+case "${1}" in
+   start)
+      log_info_msg "Populating /dev with device nodes... "
+      if ! grep -q '[[:space:]]sysfs' /proc/mounts; then
+         log_failure_msg2
+         msg="FAILURE:\n\nUnable to create "
+         msg="${msg}devices without a SysFS filesystem\n\n"
+         msg="${msg}After you press Enter, this system "
+         msg="${msg}will be halted and powered off.\n\n"
+         log_info_msg "$msg"
+         log_info_msg "Press Enter to continue..."
+         wait_for_user
+         /etc/rc.d/init.d/halt stop
+      fi
+
+      # Start the udev daemon to continually watch for, and act on,
+      # uevents
+      /sbin/udevd --daemon
+
+      # Now traverse /sys in order to "coldplug" devices that have
+      # already been discovered
+      /sbin/udevadm trigger --action=add    --type=subsystems
+      /sbin/udevadm trigger --action=add    --type=devices
+      /sbin/udevadm trigger --action=change --type=devices
+
+      # Now wait for udevd to process the uevents we triggered
+      if ! is_true "$OMIT_UDEV_SETTLE"; then
+         /sbin/udevadm settle
+      fi
+
+      # If any LVM based partitions are on the system, ensure they
+      # are activated so they can be used.
+      if [ -x /sbin/vgchange ]; then /sbin/vgchange -a y >/dev/null; fi 
+
+      log_success_msg2 
+      ;;
+
+   *)
+      echo "Usage ${0} {start}"
+      exit 1
+      ;;
+esac
+
+exit 0
+
+# End udev
+
+
+
+
+
+
+

+ D.6. /etc/rc.d/init.d/swap +

+
+
+
+
+#!/bin/sh
+########################################################################
+# Begin swap
+#
+# Description : Swap Control Script
+#
+# Authors     : Gerard Beekmans - gerard AT linuxfromscratch D0T org
+#               DJ Lucas - dj AT linuxfromscratch D0T org
+# Update      : Bruce Dubbs - bdubbs AT linuxfromscratch D0T org
+#
+# Version     : LFS 7.0
+#
+########################################################################
+
+### BEGIN INIT INFO
+# Provides:            swap
+# Required-Start:      udev
+# Should-Start:        modules
+# Required-Stop:       localnet
+# Should-Stop:
+# Default-Start:       S
+# Default-Stop:        0 6
+# Short-Description:   Mounts and unmounts swap partitions.
+# Description:         Mounts and unmounts swap partitions defined in
+#                      /etc/fstab.
+# X-LFS-Provided-By:   LFS
+### END INIT INFO
+
+. /lib/lsb/init-functions
+
+case "${1}" in
+   start)
+      log_info_msg "Activating all swap files/partitions..."
+      swapon -a
+      evaluate_retval
+      ;;
+
+   stop)
+      log_info_msg "Deactivating all swap files/partitions..."
+      swapoff -a
+      evaluate_retval
+      ;;
+
+   restart)
+      ${0} stop
+      sleep 1
+      ${0} start
+      ;;
+
+   status)
+      log_success_msg "Retrieving swap status." 
+      swapon -s
+      ;;
+
+   *)
+      echo "Usage: ${0} {start|stop|restart|status}"
+      exit 1
+      ;;
+esac
+
+exit 0
+
+# End swap
+
+
+
+
+
+
+

+ D.7. /etc/rc.d/init.d/setclock +

+
+
+
+
+#!/bin/sh
+########################################################################
+# Begin setclock
+#
+# Description : Setting Linux Clock
+#
+# Authors     : Gerard Beekmans - gerard AT linuxfromscratch D0T org
+#               DJ Lucas - dj AT linuxfromscratch D0T org
+# Update      : Bruce Dubbs - bdubbs AT linuxfromscratch D0T org
+#
+# Version     : LFS 7.0
+#
+########################################################################
+
+### BEGIN INIT INFO
+# Provides:            
+# Required-Start:
+# Should-Start:        modules
+# Required-Stop:
+# Should-Stop:         $syslog
+# Default-Start:       S
+# Default-Stop:
+# Short-Description:   Stores and restores time from the hardware clock
+# Description:         On boot, system time is obtained from hwclock.  The
+#                      hardware clock can also be set on shutdown.
+# X-LFS-Provided-By:   LFS BLFS
+### END INIT INFO
+
+. /lib/lsb/init-functions
+
+[ -r /etc/sysconfig/clock ] && . /etc/sysconfig/clock
+
+
+case "${UTC}" in
+   yes|true|1)
+      CLOCKPARAMS="${CLOCKPARAMS} --utc"
+      ;;
+
+   no|false|0)
+      CLOCKPARAMS="${CLOCKPARAMS} --localtime"
+      ;;
+
+esac
+
+case ${1} in
+   start)
+      hwclock --hctosys ${CLOCKPARAMS} >/dev/null
+      ;;
+
+   stop)
+      log_info_msg "Setting hardware clock..."
+      hwclock --systohc ${CLOCKPARAMS} >/dev/null
+      evaluate_retval
+      ;;
+
+   *)
+      echo "Usage: ${0} {start|stop}"
+      exit 1
+      ;;
+
+esac
+
+exit 0
+
+
+
+
+
+
+

+ D.8. /etc/rc.d/init.d/checkfs +

+
+
+
+
+#!/bin/sh
+########################################################################
+# Begin checkfs
+#
+# Description : File System Check
+#
+# Authors     : Gerard Beekmans - gerard AT linuxfromscratch D0T org
+#               A. Luebke - luebke@users.sourceforge.net
+#               DJ Lucas - dj AT linuxfromscratch D0T org
+# Update      : Bruce Dubbs - bdubbs AT linuxfromscratch D0T org
+#
+# Version     : LFS 7.0
+#
+# Based on checkfs script from LFS-3.1 and earlier.
+#
+# From man fsck
+# 0    - No errors
+# 1    - File system errors corrected
+# 2    - System should be rebooted
+# 4    - File system errors left uncorrected
+# 8    - Operational error
+# 16   - Usage or syntax error
+# 32   - Fsck canceled by user request
+# 128  - Shared library error
+#
+#########################################################################
+
+### BEGIN INIT INFO
+# Provides:            checkfs
+# Required-Start:      udev swap $time
+# Should-Start:
+# Required-Stop:
+# Should-Stop:
+# Default-Start:       S
+# Default-Stop:
+# Short-Description:   Checks local filesystems before mounting.
+# Description:         Checks local filesystmes before mounting.
+# X-LFS-Provided-By:   LFS
+### END INIT INFO
+
+. /lib/lsb/init-functions
+
+case "${1}" in
+   start)
+      if [ -f /fastboot ]; then
+         msg="/fastboot found, will omit "
+         msg="${msg} file system checks as requested.\n"
+         log_info_msg "${msg}"
+         exit 0
+      fi
+
+      log_info_msg "Mounting root file system in read-only mode... "
+      mount -n -o remount,ro / >/dev/null
+
+      if [ ${?} != 0 ]; then
+         log_failure_msg2
+         msg="\n\nCannot check root "
+         msg="${msg}filesystem because it could not be mounted "
+         msg="${msg}in read-only mode.\n\n"
+         msg="${msg}After you press Enter, this system will be "
+         msg="${msg}halted and powered off.\n\n"
+         log_failure_msg "${msg}"
+
+         log_info_msg "Press Enter to continue..." 
+         wait_for_user
+         /etc/rc.d/init.d/halt stop
+      else
+         log_success_msg2
+      fi
+
+      if [ -f /forcefsck ]; then
+         msg="/forcefsck found, forcing file" 
+         msg="${msg} system checks as requested."
+         log_success_msg "$msg"
+         options="-f"
+      else
+         options=""
+      fi
+
+      log_info_msg "Checking file systems..."
+      # Note: -a option used to be -p; but this fails e.g. on fsck.minix
+      if is_true "$VERBOSE_FSCK"; then
+        fsck ${options} -a -A -C -T
+      else
+        fsck ${options} -a -A -C -T >/dev/null
+      fi
+
+      error_value=${?}
+
+      if [ "${error_value}" = 0 ]; then
+         log_success_msg2
+      fi
+
+      if [ "${error_value}" = 1 ]; then
+         msg="\nWARNING:\n\nFile system errors "
+         msg="${msg}were found and have been corrected.\n"
+         msg="${msg}     You may want to double-check that "
+         msg="${msg}everything was fixed properly."
+         log_warning_msg "$msg"
+      fi
+
+      if [ "${error_value}" = 2 -o "${error_value}" = 3 ]; then
+         msg="\nWARNING:\n\nFile system errors "
+         msg="${msg}were found and have been been "
+         msg="${msg}corrected, but the nature of the "
+         msg="${msg}errors require this system to be rebooted.\n\n"
+         msg="${msg}After you press enter, "
+         msg="${msg}this system will be rebooted\n\n"
+         log_failure_msg "$msg"
+
+         log_info_msg "Press Enter to continue..." 
+         wait_for_user
+         reboot -f
+      fi
+
+      if [ "${error_value}" -gt 3 -a "${error_value}" -lt 16 ]; then
+         msg="\nFAILURE:\n\nFile system errors "
+         msg="${msg}were encountered that could not be "
+         msg="${msg}fixed automatically.\nThis system "
+         msg="${msg}cannot continue to boot and will "
+         msg="${msg}therefore be halted until those "
+         msg="${msg}errors are fixed manually by a "
+         msg="${msg}System Administrator.\n\n"
+         msg="${msg}After you press Enter, this system will be "
+         msg="${msg}halted and powered off.\n\n"
+         log_failure_msg "$msg"
+
+         log_info_msg "Press Enter to continue..." 
+         wait_for_user
+         /etc/rc.d/init.d/halt stop
+      fi
+
+      if [ "${error_value}" -ge 16 ]; then
+         msg="FAILURE:\n\nUnexpected failure "
+         msg="${msg}running fsck.  Exited with error "
+         msg="${msg} code: ${error_value}.\n"
+         log_info_msg $msg
+         exit ${error_value}
+      fi
+
+      exit 0
+      ;;
+   *)
+      echo "Usage: ${0} {start}"
+      exit 1
+      ;;
+esac
+
+# End checkfs
+
+
+
+
+
+
+

+ D.9. /etc/rc.d/init.d/mountfs +

+
+
+
+
+#!/bin/sh
+########################################################################
+# Begin mountfs
+#
+# Description : File System Mount Script
+#
+# Authors     : Gerard Beekmans - gerard AT linuxfromscratch D0T org
+#               DJ Lucas - dj AT linuxfromscratch D0T org
+# Update      : Bruce Dubbs - bdubbs AT linuxfromscratch D0T org
+#
+# Version     : LFS 7.0
+#
+########################################################################
+
+### BEGIN INIT INFO
+# Provides:            $local_fs
+# Required-Start:      udev checkfs
+# Should-Start:
+# Required-Stop:       swap
+# Should-Stop:
+# Default-Start:       S
+# Default-Stop:        0 6
+# Short-Description:   Mounts/unmounts local filesystems defined in /etc/fstab.
+# Description:         Remounts root filesystem read/write and mounts all
+#                      remaining local filesystems defined in /etc/fstab on
+#                      start.  Remounts root filesystem read-only and unmounts
+#                      remaining filesystems on stop.
+# X-LFS-Provided-By:   LFS
+### END INIT INFO
+
+. /lib/lsb/init-functions
+
+case "${1}" in
+   start)
+      log_info_msg "Remounting root file system in read-write mode..."
+      mount --options remount,rw / >/dev/null
+      evaluate_retval
+
+      # Remove fsck-related file system watermarks.
+      rm -f /fastboot /forcefsck
+
+      # Make sure /dev/pts exists
+      mkdir -p /dev/pts
+
+      # This will mount all filesystems that do not have _netdev in
+      # their option list.  _netdev denotes a network filesystem.
+
+      log_info_msg "Mounting remaining file systems..."
+      mount --all --test-opts no_netdev >/dev/null
+      evaluate_retval
+      exit $failed
+      ;;
+
+   stop)
+      # Don't unmount virtual file systems like /run
+      log_info_msg "Unmounting all other currently mounted file systems..."
+      # Ensure any loop devies are removed
+      losetup -D
+      umount --all --detach-loop --read-only \
+             --types notmpfs,nosysfs,nodevtmpfs,noproc,nodevpts >/dev/null
+      evaluate_retval
+
+      # Make sure / is mounted read only (umount bug)
+      mount --options remount,ro /
+
+      # Make all LVM volume groups unavailable, if appropriate
+      # This fails if swap or / are on an LVM partition
+      #if [ -x /sbin/vgchange ]; then /sbin/vgchange -an > /dev/null; fi
+      ;;
+
+   *)
+      echo "Usage: ${0} {start|stop}"
+      exit 1
+      ;;
+esac
+
+# End mountfs
+
+
+
+
+
+
+

+ D.10. /etc/rc.d/init.d/udev_retry +

+
+
+
+
+#!/bin/sh
+########################################################################
+# Begin udev_retry
+#
+# Description : Udev cold-plugging script (retry)
+#
+# Authors     : Alexander E. Patrakov
+#               DJ Lucas - dj AT linuxfromscratch D0T org
+# Update      : Bruce Dubbs - bdubbs AT linuxfromscratch D0T org
+#               Bryan Kadzban - 
+#
+# Version     : LFS 7.0
+#
+########################################################################
+
+### BEGIN INIT INFO
+# Provides:            udev_retry
+# Required-Start:      udev
+# Should-Start:        $local_fs
+# Required-Stop:
+# Should-Stop:
+# Default-Start:       S
+# Default-Stop:
+# Short-Description:   Replays failed uevents and creates additional devices.
+# Description:         Replays any failed uevents that were skipped due to
+#                      slow hardware initialization, and creates those needed
+#                      device nodes
+# X-LFS-Provided-By:   LFS
+### END INIT INFO
+
+. /lib/lsb/init-functions
+
+case "${1}" in
+   start)
+      log_info_msg "Retrying failed uevents, if any..."
+
+      # As of udev-186, the --run option is no longer valid
+      #rundir=$(/sbin/udevadm info --run)
+      rundir=/run/udev
+      # From Debian: "copy the rules generated before / was mounted
+      # read-write":
+    
+      for file in ${rundir}/tmp-rules--*; do
+         dest=${file##*tmp-rules--}
+         [ "$dest" = '*' ] && break
+         cat $file >> /etc/udev/rules.d/$dest
+         rm -f $file
+      done
+
+      # Re-trigger the uevents that may have failed, 
+      # in hope they will succeed now
+      /bin/sed -e 's/#.*$//' /etc/sysconfig/udev_retry | /bin/grep -v '^$' | \
+      while read line ; do
+         for subsystem in $line ; do
+            /sbin/udevadm trigger --subsystem-match=$subsystem --action=add
+         done
+      done
+
+      # Now wait for udevd to process the uevents we triggered
+      if ! is_true "$OMIT_UDEV_RETRY_SETTLE"; then
+         /sbin/udevadm settle
+      fi
+
+      evaluate_retval
+      ;;
+
+   *)
+      echo "Usage ${0} {start}"
+      exit 1
+      ;;
+esac
+
+exit 0
+
+# End udev_retry
+
+
+
+
+
+
+

+ D.11. /etc/rc.d/init.d/cleanfs +

+
+
+
+
+#!/bin/sh
+########################################################################
+# Begin cleanfs
+#
+# Description : Clean file system
+#
+# Authors     : Gerard Beekmans - gerard AT linuxfromscratch D0T org
+#               DJ Lucas - dj AT linuxfromscratch D0T org
+# Update      : Bruce Dubbs - bdubbs AT linuxfromscratch D0T org
+#
+# Version     : LFS 7.0
+#
+########################################################################
+
+### BEGIN INIT INFO
+# Provides:            cleanfs
+# Required-Start:      $local_fs
+# Should-Start:
+# Required-Stop:
+# Should-Stop:
+# Default-Start:       S
+# Default-Stop:
+# Short-Description:   Cleans temporary directories early in the boot process.
+# Description:         Cleans temporary directories /var/run, /var/lock, and
+#                      optionally, /tmp.  cleanfs also creates /var/run/utmp 
+#                      and any files defined in /etc/sysconfig/createfiles.
+# X-LFS-Provided-By:   LFS
+### END INIT INFO
+
+. /lib/lsb/init-functions
+
+# Function to create files/directory on boot.
+create_files() 
+{
+   # Input to file descriptor 9 and output to stdin (redirection)
+   exec 9>&0 < /etc/sysconfig/createfiles
+
+   while read name type perm usr grp dtype maj min junk
+   do
+      # Ignore comments and blank lines.
+      case "${name}" in
+         ""|\#*) continue ;;
+      esac
+
+      # Ignore existing files.
+      if [ ! -e "${name}" ]; then
+         # Create stuff based on its type.
+         case "${type}" in
+            dir)
+               mkdir "${name}"
+               ;;
+            file)
+               :> "${name}"
+               ;;
+            dev)
+               case "${dtype}" in
+                  char)
+                     mknod "${name}" c ${maj} ${min}
+                     ;;
+                  block)
+                     mknod "${name}" b ${maj} ${min}
+                     ;;
+                  pipe)
+                     mknod "${name}" p
+                     ;;
+                  *) 
+                     log_warning_msg "\nUnknown device type: ${dtype}" 
+                     ;;
+               esac
+               ;;
+            *)
+               log_warning_msg "\nUnknown type: ${type}" 
+               continue
+               ;;
+         esac
+
+         # Set up the permissions, too.
+         chown ${usr}:${grp} "${name}"
+         chmod ${perm} "${name}"
+      fi
+   done
+
+   # Close file descriptor 9 (end redirection)
+   exec 0>&9 9>&-
+   return 0
+}
+
+case "${1}" in
+   start)
+      log_info_msg "Cleaning file systems:" 
+
+      if [ "${SKIPTMPCLEAN}" = "" ]; then
+         log_info_msg2 " /tmp" 
+         cd /tmp &&
+         find . -xdev -mindepth 1 ! -name lost+found -delete || failed=1
+      fi
+
+      > /var/run/utmp
+
+      if grep -q '^utmp:' /etc/group ; then
+         chmod 664 /var/run/utmp
+         chgrp utmp /var/run/utmp
+      fi
+
+      (exit ${failed})
+      evaluate_retval
+
+      if egrep -qv '^(#|$)' /etc/sysconfig/createfiles 2>/dev/null; then
+         log_info_msg "Creating files and directories... "
+         create_files      # Always returns 0
+         evaluate_retval
+      fi
+
+      exit $failed
+      ;;
+   *)
+      echo "Usage: ${0} {start}"
+      exit 1
+      ;;
+esac
+
+# End cleanfs
+
+
+
+
+
+
+

+ D.12. /etc/rc.d/init.d/console +

+
+
+
+
+#!/bin/sh
+########################################################################
+# Begin console
+#
+# Description : Sets keymap and screen font
+#
+# Authors     : Gerard Beekmans - gerard AT linuxfromscratch D0T org
+#               Alexander E. Patrakov
+#               DJ Lucas - dj AT linuxfromscratch D0T org
+# Update      : Bruce Dubbs - bdubbs AT linuxfromscratch D0T org
+#
+# Version     : LFS 7.0
+#
+########################################################################
+
+### BEGIN INIT INFO
+# Provides:            console
+# Required-Start:
+# Should-Start:        $local_fs
+# Required-Stop:
+# Should-Stop:
+# Default-Start:       S
+# Default-Stop:
+# Short-Description:   Sets up a localised console.
+# Description:         Sets up fonts and language settings for the user's
+#                      local as defined by /etc/sysconfig/console.
+# X-LFS-Provided-By:   LFS
+### END INIT INFO
+
+. /lib/lsb/init-functions
+
+# Native English speakers probably don't have /etc/sysconfig/console at all
+[ -r /etc/sysconfig/console ] && . /etc/sysconfig/console
+
+is_true() 
+{
+   [ "$1" = "1" ] || [ "$1" = "yes" ] || [ "$1" = "true" ]
+}
+
+failed=0
+
+case "${1}" in
+   start)
+      # See if we need to do anything
+      if [ -z "${KEYMAP}"         ] && [ -z "${KEYMAP_CORRECTIONS}" ] &&
+         [ -z "${FONT}"           ] && [ -z "${LEGACY_CHARSET}"     ] &&     
+         ! is_true "${UNICODE}"; then 
+         exit 0
+      fi
+
+      # There should be no bogus failures below this line!
+      log_info_msg "Setting up Linux console..."
+
+      # Figure out if a framebuffer console is used
+      [ -d /sys/class/graphics/fb0 ] && use_fb=1 || use_fb=0
+
+      # Figure out the command to set the console into the
+      # desired mode
+      is_true "${UNICODE}" &&
+         MODE_COMMAND="echo -en '\033%G' && kbd_mode -u" ||
+         MODE_COMMAND="echo -en '\033%@\033(K' && kbd_mode -a"
+
+      # On framebuffer consoles, font has to be set for each vt in
+      # UTF-8 mode. This doesn't hurt in non-UTF-8 mode also.
+
+      ! is_true "${use_fb}" || [ -z "${FONT}" ] ||
+         MODE_COMMAND="${MODE_COMMAND} && setfont ${FONT}"
+
+      # Apply that command to all consoles mentioned in
+      # /etc/inittab. Important: in the UTF-8 mode this should
+      # happen before setfont, otherwise a kernel bug will
+      # show up and the unicode map of the font will not be
+      # used.
+
+      for TTY in `grep '^[^#].*respawn:/sbin/agetty' /etc/inittab |
+         grep -o '\btty[[:digit:]]*\b'`
+      do
+         openvt -f -w -c ${TTY#tty} -- \
+            /bin/sh -c "${MODE_COMMAND}" || failed=1
+      done
+
+      # Set the font (if not already set above) and the keymap
+      [ "${use_fb}" == "1" ] || [ -z "${FONT}" ] || setfont $FONT || failed=1
+
+      [ -z "${KEYMAP}" ] ||
+         loadkeys ${KEYMAP} >/dev/null 2>&1 ||
+         failed=1
+      
+      [ -z "${KEYMAP_CORRECTIONS}" ] ||
+         loadkeys ${KEYMAP_CORRECTIONS} >/dev/null 2>&1 ||
+         failed=1
+
+      # Convert the keymap from $LEGACY_CHARSET to UTF-8
+      [ -z "$LEGACY_CHARSET" ] ||
+         dumpkeys -c "$LEGACY_CHARSET" | loadkeys -u >/dev/null 2>&1 ||
+         failed=1
+
+      # If any of the commands above failed, the trap at the
+      # top would set $failed to 1
+      ( exit $failed ) 
+      evaluate_retval
+
+      exit $failed
+      ;;              
+
+   *)                 
+      echo "Usage:  ${0} {start}"
+      exit 1          
+      ;;              
+esac
+
+# End console
+
+
+
+
+
+
+

+ D.13. /etc/rc.d/init.d/localnet +

+
+
+
+
+#!/bin/sh
+########################################################################
+# Begin localnet
+#
+# Description : Loopback device
+#
+# Authors     : Gerard Beekmans  - gerard AT linuxfromscratch D0T org
+#               DJ Lucas - dj AT linuxfromscratch D0T org
+# Update      : Bruce Dubbs - bdubbs AT linuxfromscratch D0T org
+#
+# Version     : LFS 7.0
+#
+########################################################################
+
+### BEGIN INIT INFO
+# Provides:            localnet
+# Required-Start:      $local_fs
+# Should-Start:
+# Required-Stop:
+# Should-Stop:
+# Default-Start:       S
+# Default-Stop:        0 6
+# Short-Description:   Starts the local network.
+# Description:         Sets the hostname of the machine and starts the
+#                      loopback interface.
+# X-LFS-Provided-By:   LFS
+### END INIT INFO
+
+. /lib/lsb/init-functions
+[ -r /etc/sysconfig/network ] && . /etc/sysconfig/network
+[ -r /etc/hostname ] && HOSTNAME=`cat /etc/hostname`
+
+case "${1}" in
+   start)
+      log_info_msg "Bringing up the loopback interface..."
+      ip addr add 127.0.0.1/8 label lo dev lo
+      ip link set lo up
+      evaluate_retval
+
+      log_info_msg "Setting hostname to ${HOSTNAME}..."
+      hostname ${HOSTNAME}
+      evaluate_retval
+      ;;
+
+   stop)
+      log_info_msg "Bringing down the loopback interface..."
+      ip link set lo down
+      evaluate_retval
+      ;;
+
+   restart)
+      ${0} stop
+      sleep 1
+      ${0} start
+      ;;
+
+   status)
+      echo "Hostname is: $(hostname)"
+      ip link show lo
+      ;;
+
+   *)
+      echo "Usage: ${0} {start|stop|restart|status}"
+      exit 1
+      ;;
+esac
+
+exit 0
+
+# End localnet
+
+
+
+
+
+
+

+ D.14. /etc/rc.d/init.d/sysctl +

+
+
+
+
+#!/bin/sh
+########################################################################
+# Begin sysctl
+#
+# Description : File uses /etc/sysctl.conf to set kernel runtime
+#               parameters
+#
+# Authors     : Nathan Coulson (nathan AT linuxfromscratch D0T org)
+#               Matthew Burgress (matthew AT linuxfromscratch D0T org)
+#               DJ Lucas - dj AT linuxfromscratch D0T org
+# Update      : Bruce Dubbs - bdubbs AT linuxfromscratch D0T org
+#
+# Version     : LFS 7.0
+#
+########################################################################
+
+### BEGIN INIT INFO
+# Provides:            sysctl
+# Required-Start:      mountvirtfs
+# Should-Start:
+# Required-Stop:
+# Should-Stop:
+# Default-Start:       S
+# Default-Stop:
+# Short-Description:   Makes changes to the proc filesystem
+# Description:         Makes changes to the proc filesystem as defined in
+#                      /etc/sysctl.conf.  See 'man sysctl(8)'.
+# X-LFS-Provided-By:   LFS
+### END INIT INFO
+
+. /lib/lsb/init-functions
+
+case "${1}" in
+   start)
+      if [ -f "/etc/sysctl.conf" ]; then
+         log_info_msg "Setting kernel runtime parameters..."
+         sysctl -q -p
+         evaluate_retval
+      fi
+      ;;
+
+   status)
+      sysctl -a
+      ;;
+
+   *)
+      echo "Usage: ${0} {start|status}"
+      exit 1
+      ;;
+esac
+
+exit 0
+
+# End sysctl
+
+
+
+
+
+
+

+ D.15. /etc/rc.d/init.d/sysklogd +

+
+
+
+
+#!/bin/sh
+########################################################################
+# Begin sysklogd
+#
+# Description : Sysklogd loader
+#
+# Authors     : Gerard Beekmans - gerard AT linuxfromscratch D0T org
+#               DJ Lucas - dj AT linuxfromscratch D0T org
+# Update      : Bruce Dubbs - bdubbs AT linuxfromscratch D0T org
+#
+# Version     : LFS 7.0
+#
+########################################################################
+
+### BEGIN INIT INFO
+# Provides:            $syslog
+# Required-Start:      localnet
+# Should-Start:
+# Required-Stop:       $local_fs sendsignals
+# Should-Stop:
+# Default-Start:       3 4 5
+# Default-Stop:        0 1 2 6
+# Short-Description:   Starts kernel and system log daemons.
+# Description:         Starts kernel and system log daemons.
+#                      /etc/fstab.
+# X-LFS-Provided-By:   LFS
+### END INIT INFO
+
+# Note: sysklogd is not started in runlevel 2 due to possible
+# remote logging configurations
+
+. /lib/lsb/init-functions
+
+case "${1}" in
+   start)
+      log_info_msg "Starting system log daemon..."
+      parms=${SYSKLOGD_PARMS-'-m 0'}
+      start_daemon /sbin/syslogd $parms
+      evaluate_retval
+
+      log_info_msg "Starting kernel log daemon..."
+      start_daemon /sbin/klogd
+      evaluate_retval
+      ;;
+
+   stop)
+      log_info_msg "Stopping kernel log daemon..."
+      killproc /sbin/klogd
+      evaluate_retval
+
+      log_info_msg "Stopping system log daemon..."
+      killproc /sbin/syslogd
+      evaluate_retval
+      ;;
+
+   reload)
+      log_info_msg "Reloading system log daemon config file..."
+      pid=`pidofproc syslogd`
+      kill -HUP "${pid}"
+      evaluate_retval
+      ;;
+
+   restart)
+      ${0} stop
+      sleep 1
+      ${0} start
+      ;;
+
+   status)
+      statusproc /sbin/syslogd
+      statusproc klogd
+      ;;
+
+   *)
+      echo "Usage: ${0} {start|stop|reload|restart|status}"
+      exit 1
+      ;;
+esac
+
+exit 0
+
+# End sysklogd
+
+
+
+
+
+
+

+ D.16. /etc/rc.d/init.d/network +

+
+
+
+
+#!/bin/sh
+########################################################################
+# Begin network
+#
+# Description : Network Control Script
+#
+# Authors     : Gerard Beekmans - gerard AT linuxfromscratch D0T org
+#               Nathan Coulson - nathan AT linuxfromscratch D0T org
+#               Kevin P. Fleming - kpfleming@linuxfromscratch.org
+#               DJ Lucas - dj AT linuxfromscratch D0T org
+# Update      : Bruce Dubbs - bdubbs AT linuxfromscratch D0T org
+#
+# Version     : LFS 7.0
+#
+########################################################################
+
+### BEGIN INIT INFO
+# Provides:            $network
+# Required-Start:      $local_fs swap localnet
+# Should-Start:        $syslog
+# Required-Stop:       $local_fs swap localnet
+# Should-Stop:         $syslog
+# Default-Start:       3 4 5
+# Default-Stop:        0 1 2 6
+# Short-Description:   Starts and configures network interfaces.
+# Description:         Starts and configures network interfaces.
+# X-LFS-Provided-By:   LFS
+### END INIT INFO
+
+case "${1}" in
+   start)
+      # Start all network interfaces
+      for file in /etc/sysconfig/ifconfig.*
+      do
+         interface=${file##*/ifconfig.}
+
+         # Skip if $file is * (because nothing was found)
+         if [ "${interface}" = "*" ]
+         then
+            continue
+         fi
+
+         /sbin/ifup ${interface}
+      done
+      ;;
+
+   stop)
+      # Unmount any network mounted file systems
+       umount --all --force --types nfs,cifs,nfs4 
+
+      # Reverse list
+      net_files=""
+      for file in  /etc/sysconfig/ifconfig.*
+      do
+         net_files="${file} ${net_files}"
+      done
+
+      # Stop all network interfaces
+      for file in ${net_files}
+      do
+         interface=${file##*/ifconfig.}
+
+         # Skip if $file is * (because nothing was found)
+         if [ "${interface}" = "*" ]
+         then
+            continue
+         fi
+
+         /sbin/ifdown ${interface}
+      done
+      ;;
+
+   restart)
+      ${0} stop
+      sleep 1
+      ${0} start
+      ;;
+
+   *)
+      echo "Usage: ${0} {start|stop|restart}"
+      exit 1
+      ;;
+esac
+
+exit 0
+
+# End network
+
+
+
+
+
+
+

+ D.17. /etc/rc.d/init.d/sendsignals +

+
+
+
+
+#!/bin/sh
+########################################################################
+# Begin sendsignals
+#
+# Description : Sendsignals Script
+#
+# Authors     : Gerard Beekmans - gerard AT linuxfromscratch D0T org
+#               DJ Lucas - dj AT linuxfromscratch D0T org
+# Update      : Bruce Dubbs - bdubbs AT linuxfromscratch D0T org
+#
+# Version     : LFS 7.0
+#
+########################################################################
+
+### BEGIN INIT INFO
+# Provides:            sendsignals
+# Required-Start:
+# Should-Start:
+# Required-Stop:       $local_fs swap localnet
+# Should-Stop:
+# Default-Start:
+# Default-Stop:        0 6
+# Short-Description:   Attempts to kill remaining processes.
+# Description:         Attempts to kill remaining processes.
+# X-LFS-Provided-By:   LFS
+### END INIT INFO
+
+. /lib/lsb/init-functions
+
+case "${1}" in
+   stop)
+      log_info_msg "Sending all processes the TERM signal..."
+      killall5 -15
+      error_value=${?}
+
+      sleep ${KILLDELAY}
+
+      if [ "${error_value}" = 0 -o "${error_value}" = 2 ]; then
+         log_success_msg
+      else
+         log_failure_msg
+      fi
+
+      log_info_msg "Sending all processes the KILL signal..."
+      killall5 -9
+      error_value=${?}
+
+      sleep ${KILLDELAY}
+
+      if [ "${error_value}" = 0 -o "${error_value}" = 2 ]; then
+         log_success_msg
+      else
+         log_failure_msg
+      fi
+      ;;
+
+   *)
+      echo "Usage: ${0} {stop}"
+      exit 1
+      ;;
+
+esac
+
+exit 0
+
+# End sendsignals
+
+
+
+
+
+
+

+ D.18. /etc/rc.d/init.d/reboot +

+
+
+
+
+#!/bin/sh
+########################################################################
+# Begin reboot
+#
+# Description : Reboot Scripts
+#
+# Authors     : Gerard Beekmans - gerard AT linuxfromscratch D0T org
+#               DJ Lucas - dj AT linuxfromscratch D0T org
+# Update      : Bruce Dubbs - bdubbs AT linuxfromscratch D0T org
+#
+# Version     : LFS 7.0
+#
+########################################################################
+
+### BEGIN INIT INFO
+# Provides:            reboot
+# Required-Start:
+# Should-Start:
+# Required-Stop:
+# Should-Stop:
+# Default-Start:       6
+# Default-Stop:
+# Short-Description:   Reboots the system.
+# Description:         Reboots the System.
+# X-LFS-Provided-By:   LFS
+### END INIT INFO
+
+. /lib/lsb/init-functions
+
+case "${1}" in
+   stop)
+      log_info_msg "Restarting system..."
+      reboot -d -f -i
+      ;;
+
+   *)
+      echo "Usage: ${0} {stop}"
+      exit 1
+      ;;
+
+esac
+
+# End reboot
+
+
+
+
+
+
+

+ D.19. /etc/rc.d/init.d/halt +

+
+
+
+
+#!/bin/sh
+########################################################################
+# Begin halt
+#
+# Description : Halt Script
+#
+# Authors     : Gerard Beekmans - gerard AT linuxfromscratch D0T org
+#               DJ Lucas - dj AT linuxfromscratch D0T org
+# Update      : Bruce Dubbs - bdubbs AT linuxfromscratch D0T org
+#
+# Version     : LFS 7.0
+#
+########################################################################
+
+### BEGIN INIT INFO
+# Provides:            halt
+# Required-Start:
+# Should-Start:
+# Required-Stop:
+# Should-Stop:
+# Default-Start:       0
+# Default-Stop:
+# Short-Description:   Halts the system.
+# Description:         Halts the System.
+# X-LFS-Provided-By:   LFS
+### END INIT INFO
+
+case "${1}" in
+   stop)
+      halt -d -f -i -p
+      ;;
+
+   *)
+      echo "Usage: {stop}"
+      exit 1
+      ;;
+esac
+
+# End halt
+
+
+
+
+
+
+

+ D.20. /etc/rc.d/init.d/template +

+
+
+
+
+#!/bin/sh
+########################################################################
+# Begin scriptname
+#
+# Description :
+#
+# Authors     :
+#
+# Version     : LFS x.x
+#
+# Notes       :
+#
+########################################################################
+
+### BEGIN INIT INFO
+# Provides:            template
+# Required-Start:
+# Should-Start:
+# Required-Stop:
+# Should-Stop:
+# Default-Start:
+# Default-Stop:
+# Short-Description:
+# Description:
+# X-LFS-Provided-By:
+### END INIT INFO
+
+. /lib/lsb/init-functions
+
+case "${1}" in
+   start)
+      log_info_msg "Starting..."
+      start_daemon fully_qualified_path
+      ;;
+
+   stop)
+      log_info_msg "Stopping..."
+      killproc fully_qualified_path
+      ;;
+
+   restart)
+      ${0} stop
+      sleep 1
+      ${0} start
+      ;;
+
+   *)
+      echo "Usage: ${0} {start|stop|restart}"
+      exit 1
+      ;;
+esac
+
+exit 0
+
+# End scriptname
+
+
+
+
+
+
+

+ D.21. /etc/sysconfig/modules +

+
+
+
+
+########################################################################
+# Begin /etc/sysconfig/modules
+#
+# Description : Module auto-loading configuration
+#
+# Authors     :
+#
+# Version     : 00.00
+#
+# Notes       : The syntax of this file is as follows:
+#          <module> [<arg1> <arg2> ...]
+#
+# Each module should be on its own line, and any options that you want
+# passed to the module should follow it.  The line deliminator is either
+# a space or a tab.
+########################################################################
+
+# End /etc/sysconfig/modules
+
+
+
+
+
+
+

+ D.22. /etc/sysconfig/createfiles +

+
+
+
+
+########################################################################
+# Begin /etc/sysconfig/createfiles
+#
+# Description : Createfiles script config file
+#
+# Authors     :
+#
+# Version     : 00.00
+#
+# Notes       : The syntax of this file is as follows:
+#         if type is equal to "file" or "dir"
+#          <filename> <type> <permissions> <user> <group>
+#         if type is equal to "dev"
+#          <filename> <type> <permissions> <user> <group> <devtype> 
+#             <major> <minor>
+#
+#         <filename> is the name of the file which is to be created
+#         <type> is either file, dir, or dev.
+#               file creates a new file
+#               dir creates a new directory
+#               dev creates a new device
+#         <devtype> is either block, char or pipe
+#               block creates a block device
+#               char creates a character deivce
+#               pipe creates a pipe, this will ignore the <major> and 
+#           <minor> fields
+#         <major> and <minor> are the major and minor numbers used for 
+#     the device.
+########################################################################
+
+# End /etc/sysconfig/createfiles
+
+
+
+
+
+
+

+ D.23. /etc/sysconfig/udev-retry +

+
+
+
+
+########################################################################
+# Begin /etc/sysconfig/udev_retry
+#
+# Description : udev_retry script configuration
+#
+# Authors     :
+#
+# Version     : 00.00
+#
+# Notes       : Each subsystem that may need to be re-triggered after mountfs
+#               runs should be listed in this file.  Probable subsystems to be
+#               listed here are rtc (due to /var/lib/hwclock/adjtime) and sound
+#               (due to both /var/lib/alsa/asound.state and /usr/sbin/alsactl).
+#               Entries are whitespace-separated.
+########################################################################
+
+rtc
+
+# End /etc/sysconfig/udev_retry
+
+
+
+
+
+
+

+ D.24. /sbin/ifup +

+
+
+
+
+#!/bin/sh
+########################################################################
+# Begin /sbin/ifup
+#
+# Description : Interface Up
+#
+# Authors     : Nathan Coulson - nathan AT linuxfromscratch D0T org
+#               Kevin P. Fleming - kpfleming@linuxfromscratch.org
+# Update      : Bruce Dubbs - bdubbs AT linuxfromscratch D0T org
+#
+# Version     : LFS 7.7
+#
+# Notes       : The IFCONFIG variable is passed to the SERVICE script
+#               in the /lib/services directory, to indicate what file the
+#               service should source to get interface specifications.
+#
+########################################################################
+
+up()
+{
+  if ip link show $1 > /dev/null 2>&1; then
+     link_status=`ip link show $1`
+
+     if [ -n "${link_status}" ]; then
+        if ! echo "${link_status}" | grep -q UP; then
+           ip link set $1 up
+        fi
+     fi
+
+  else
+     log_failure_msg "\nInterface ${IFACE} doesn't exist."
+     exit 1
+  fi
+}
+
+RELEASE="7.7"
+
+USAGE="Usage: $0 [ -hV ] [--help] [--version] interface"
+VERSTR="LFS ifup, version ${RELEASE}"
+
+while [ $# -gt 0 ]; do
+   case "$1" in
+      --help | -h)     help="y"; break ;;
+
+      --version | -V)  echo "${VERSTR}"; exit 0 ;;
+   
+      -*)              echo "ifup: ${1}: invalid option" >&2
+                       echo "${USAGE}" >& 2
+                       exit 2 ;;
+                       
+      *)               break ;;
+   esac
+done
+
+if [ -n "$help" ]; then
+   echo "${VERSTR}"
+   echo "${USAGE}"
+   echo
+   cat << HERE_EOF
+ifup is used to bring up a network interface.  The interface
+parameter, e.g. eth0 or eth0:2, must match the trailing part of the
+interface specifications file, e.g. /etc/sysconfig/ifconfig.eth0:2.
+
+HERE_EOF
+   exit 0
+fi
+
+file=/etc/sysconfig/ifconfig.${1}
+
+# Skip backup files
+[ "${file}" = "${file%""~""}" ] || exit 0
+
+. /lib/lsb/init-functions
+
+log_info_msg "Bringing up the ${1} interface... "
+
+if [ ! -r "${file}" ]; then
+   log_failure_msg2 "${file} is missing or cannot be accessed." 
+   exit 1
+fi
+
+. $file
+
+if [ "$IFACE" = "" ]; then
+   log_failure_msg2 "${file} does not define an interface [IFACE]."
+   exit 1
+fi
+
+# Do not process this service if started by boot, and ONBOOT
+# is not set to yes
+if [ "${IN_BOOT}" = "1" -a "${ONBOOT}" != "yes" ]; then
+   log_skip_msg
+   exit 0
+fi
+
+for S in ${SERVICE}; do
+  if [ ! -x "/lib/services/${S}" ]; then
+    MSG="\nUnable to process ${file}.  Either " 
+    MSG="${MSG}the SERVICE '${S} was not present "
+    MSG="${MSG}or cannot be executed."
+    log_failure_msg "$MSG"
+    exit 1
+  fi
+done
+
+if [ "${SERVICE}" = "wpa" ]; then log_success_msg; fi
+
+# Create/configure the interface
+for S in ${SERVICE}; do 
+  IFCONFIG=${file} /lib/services/${S} ${IFACE} up
+done
+
+# Bring up the interface and any components
+for I in $IFACE $INTERFACE_COMPONENTS; do up $I; done
+
+# Set MTU if requested. Check if MTU has a "good" value.
+if test -n "${MTU}"; then
+   if [[ ${MTU} =~ ^[0-9]+$ ]] && [[ $MTU -ge 68 ]] ; then
+      for I in $IFACE $INTERFACE_COMPONENTS; do 
+         ip link set dev $I mtu $MTU; 
+      done
+   else
+      log_info_msg2 "Invalid MTU $MTU"
+   fi
+fi 
+
+# Set the route default gateway if requested
+if [ -n "${GATEWAY}" ]; then
+   if ip route | grep -q default; then
+      log_skip_msg "\n     Gateway already setup; skipping."
+   else
+      log_info_msg "Setting up default gateway..."
+      ip route add default via ${GATEWAY} dev ${IFACE}
+      evaluate_retval
+   fi
+fi
+
+# End /sbin/ifup
+
+
+
+
+
+
+

+ D.25. /sbin/ifdown +

+
+
+
+
+#!/bin/bash 
+########################################################################
+# Begin /sbin/ifdown
+#
+# Description : Interface Down
+#
+# Authors     : Nathan Coulson - nathan AT linuxfromscratch D0T org
+#               Kevin P. Fleming - kpfleming@linuxfromscratch.org
+# Update      : Bruce Dubbs - bdubbs AT linuxfromscratch D0T org
+#
+# Version     : LFS 7.0
+#
+# Notes       : the IFCONFIG variable is passed to the scripts found
+#               in the /lib/services directory, to indicate what file the
+#               service should source to get interface specifications.
+#
+########################################################################
+
+RELEASE="7.0"
+
+USAGE="Usage: $0 [ -hV ] [--help] [--version] interface"
+VERSTR="LFS ifdown, version ${RELEASE}"
+
+while [ $# -gt 0 ]; do
+   case "$1" in
+      --help | -h)     help="y"; break ;;
+
+      --version | -V)  echo "${VERSTR}"; exit 0 ;;
+
+      -*)              echo "ifup: ${1}: invalid option" >&2
+                       echo "${USAGE}" >& 2
+                       exit 2 ;;
+                    
+      *)               break ;;
+   esac
+done
+
+if [ -n "$help" ]; then
+   echo "${VERSTR}"
+   echo "${USAGE}"
+   echo
+   cat << HERE_EOF
+ifdown is used to bring down a network interface.  The interface
+parameter, e.g. eth0 or eth0:2, must match the trailing part of the
+interface specifications file, e.g. /etc/sysconfig/ifconfig.eth0:2.
+
+HERE_EOF
+   exit 0
+fi
+
+file=/etc/sysconfig/ifconfig.${1}
+
+# Skip backup files
+[ "${file}" = "${file%""~""}" ] || exit 0
+
+. /lib/lsb/init-functions 
+
+if [ ! -r "${file}" ]; then
+   log_warning_msg "${file} is missing or cannot be accessed."
+   exit 1
+fi
+
+. ${file}
+
+if [ "$IFACE" = "" ]; then
+   log_failure_msg "${file} does not define an interface [IFACE]."
+   exit 1
+fi
+
+# We only need to first service to bring down the interface
+S=`echo ${SERVICE} | cut -f1 -d" "`
+
+if ip link show ${IFACE} > /dev/null 2>&1; then
+   if [ -n "${S}" -a -x "/lib/services/${S}" ]; then
+     IFCONFIG=${file} /lib/services/${S} ${IFACE} down
+   else
+     MSG="Unable to process ${file}.  Either "
+     MSG="${MSG}the SERVICE variable was not set "
+     MSG="${MSG}or the specified service cannot be executed."
+     log_failure_msg "$MSG"
+     exit 1
+  fi
+else
+   log_warning_msg "Interface ${1} doesn't exist."
+fi
+
+# Leave the interface up if there are additional interfaces in the device
+link_status=`ip link show ${IFACE} 2>/dev/null`
+
+if [ -n "${link_status}" ]; then
+   if [ "$(echo "${link_status}" | grep UP)" != "" ]; then
+      if [ "$(ip addr show ${IFACE} | grep 'inet ')" == ""  ]; then
+         log_info_msg "Bringing down the ${IFACE} interface..."
+         ip link set ${IFACE} down
+         evaluate_retval
+      fi
+   fi
+fi
+
+# End /sbin/ifdown
+
+
+
+
+
+
+

+ D.26. /lib/services/ipv4-static +

+
+
+
+
+#!/bin/sh
+########################################################################
+# Begin /lib/services/ipv4-static
+#
+# Description : IPV4 Static Boot Script
+#
+# Authors     : Nathan Coulson - nathan AT linuxfromscratch D0T org
+#               Kevin P. Fleming - kpfleming@linuxfromscratch.org
+# Update      : Bruce Dubbs - bdubbs AT linuxfromscratch D0T org
+#
+# Version     : LFS 7.0
+#
+########################################################################
+
+. /lib/lsb/init-functions
+. ${IFCONFIG}
+
+if [ -z "${IP}" ]; then
+   log_failure_msg "\nIP variable missing from ${IFCONFIG}, cannot continue."
+   exit 1
+fi
+
+if [ -z "${PREFIX}" -a -z "${PEER}" ]; then
+   log_warning_msg "\nPREFIX variable missing from ${IFCONFIG}, assuming 24."
+   PREFIX=24
+   args="${args} ${IP}/${PREFIX}"
+
+elif [ -n "${PREFIX}" -a -n "${PEER}" ]; then
+   log_failure_msg "\nPREFIX and PEER both specified in ${IFCONFIG}, cannot continue."
+   exit 1
+
+elif [ -n "${PREFIX}" ]; then
+   args="${args} ${IP}/${PREFIX}"
+
+elif [ -n "${PEER}" ]; then
+   args="${args} ${IP} peer ${PEER}"
+fi
+
+if [ -n "${LABEL}" ]; then
+   args="${args} label ${LABEL}"
+fi
+
+if [ -n "${BROADCAST}" ]; then
+   args="${args} broadcast ${BROADCAST}"
+fi
+
+case "${2}" in
+   up)
+      if [ "$(ip addr show ${1} 2>/dev/null | grep ${IP}/)" = "" ]; then
+         
+         # Cosmetic output 
+         if ! $(echo ${SERVICE} | grep -q " "); then 
+           log_info_msg2 "\n" # Terminate the previous message
+         fi
+         
+         log_info_msg "Adding IPv4 address ${IP} to the ${1} interface..."
+         ip addr add ${args} dev ${1}
+         evaluate_retval
+      else
+         log_warning_msg "Cannot add IPv4 address ${IP} to ${1}.  Already present."
+      fi
+   ;;
+
+   down)
+      if [ "$(ip addr show ${1} 2>/dev/null | grep ${IP}/)" != "" ]; then
+         log_info_msg "Removing IPv4 address ${IP} from the ${1} interface..."
+         ip addr del ${args} dev ${1}
+         evaluate_retval
+      fi
+
+      if [ -n "${GATEWAY}" ]; then
+         # Only remove the gateway if there are no remaining ipv4 addresses
+         if [ "$(ip addr show ${1} 2>/dev/null | grep 'inet ')" != "" ]; then
+            log_info_msg "Removing default gateway..."
+            ip route del default
+            evaluate_retval
+         fi
+      fi
+   ;;
+
+   *)
+      echo "Usage: ${0} [interface] {up|down}"
+      exit 1
+   ;;
+esac
+
+# End /lib/services/ipv4-static
+
+
+
+
+
+
+

+ D.27. /lib/services/ipv4-static-route +

+
+
+
+
+#!/bin/sh
+########################################################################
+# Begin /lib/services/ipv4-static-route
+#
+# Description : IPV4 Static Route Script
+#
+# Authors     : Kevin P. Fleming - kpfleming@linuxfromscratch.org
+#               DJ Lucas - dj AT linuxfromscratch D0T org
+# Update      : Bruce Dubbs - bdubbs AT linuxfromscratch D0T org
+#
+# Version     : LFS 7.0
+#
+########################################################################
+
+. /lib/lsb/init-functions
+. ${IFCONFIG}
+
+case "${TYPE}" in
+   ("" | "network")
+      need_ip=1
+      need_gateway=1
+   ;;
+
+   ("default")
+      need_gateway=1
+      args="${args} default"
+      desc="default"
+   ;;
+
+   ("host")
+      need_ip=1
+   ;;
+
+   ("unreachable")
+      need_ip=1
+      args="${args} unreachable"
+      desc="unreachable "
+   ;;
+
+   (*)
+      log_failure_msg "Unknown route type (${TYPE}) in ${IFCONFIG}, cannot continue."
+      exit 1
+   ;;
+esac
+
+if [ -n "${GATEWAY}" ]; then
+   MSG="The GATEWAY variable cannot be set in ${IFCONFIG} for static routes.\n"
+   log_failure_msg "$MSG Use STATIC_GATEWAY only, cannot continue"
+   exit 1
+fi
+
+if [ -n "${need_ip}" ]; then
+   if [ -z "${IP}" ]; then
+      log_failure_msg "IP variable missing from ${IFCONFIG}, cannot continue."
+      exit 1
+   fi
+
+   if [ -z "${PREFIX}" ]; then
+      log_failure_msg "PREFIX variable missing from ${IFCONFIG}, cannot continue." 
+      exit 1
+   fi
+   
+   args="${args} ${IP}/${PREFIX}"
+   desc="${desc}${IP}/${PREFIX}"
+fi
+
+if [ -n "${need_gateway}" ]; then
+   if [ -z "${STATIC_GATEWAY}" ]; then
+      log_failure_msg "STATIC_GATEWAY variable missing from ${IFCONFIG}, cannot continue."
+      exit 1
+   fi
+   args="${args} via ${STATIC_GATEWAY}"
+fi
+
+if [ -n "${SOURCE}" ]; then
+        args="${args} src ${SOURCE}"
+fi
+
+case "${2}" in
+   up)
+      log_info_msg "Adding '${desc}' route to the ${1} interface..."
+      ip route add ${args} dev ${1}
+      evaluate_retval
+   ;;
+   
+   down)
+      log_info_msg "Removing '${desc}' route from the ${1} interface..."
+      ip route del ${args} dev ${1}
+      evaluate_retval
+   ;;
+   
+   *)
+      echo "Usage: ${0} [interface] {up|down}"
+      exit 1
+   ;;
+esac
+
+# End /lib/services/ipv4-static-route
+
+
+
+
+
+
+
+

+ Appendix E. Udev + configuration rules +

+
+
+
+

+ The rules in this appendix are listed for convenience. + Installation is normally done via instructions in Section 6.77, + “Eudev-3.2.7”. +

+
+
+
+
+

+ E.1. 55-lfs.rules +

+
+
+
+
+# /etc/udev/rules.d/55-lfs.rules: Rule definitions for LFS.
+
+# Core kernel devices
+
+# This causes the system clock to be set as soon as /dev/rtc becomes available.
+SUBSYSTEM=="rtc", ACTION=="add", MODE="0644", RUN+="/etc/rc.d/init.d/setclock start"
+KERNEL=="rtc", ACTION=="add", MODE="0644", RUN+="/etc/rc.d/init.d/setclock start"
+
+# Comms devices
+
+KERNEL=="ippp[0-9]*",       GROUP="dialout"
+KERNEL=="isdn[0-9]*",       GROUP="dialout"
+KERNEL=="isdnctrl[0-9]*",   GROUP="dialout"
+KERNEL=="dcbri[0-9]*",      GROUP="dialout"
+
+
+
+
+
+
+
+

+ Appendix F. LFS Licenses +

+
+
+
+

+ This book is licensed under the Creative Commons + Attribution-NonCommercial-ShareAlike 2.0 License. +

+

+ Computer instructions may be extracted from the book under the + MIT License. +

+
+
+
+
+

+ F.1. Creative Commons + License +

+
+
+
+

+ Creative Commons Legal Code +

+

+ Attribution-NonCommercial-ShareAlike 2.0 +

+
+

+ Important +

+

+ CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT + PROVIDE LEGAL SERVICES. DISTRIBUTION OF THIS LICENSE DOES NOT + CREATE AN ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS + PROVIDES THIS INFORMATION ON AN "AS-IS" BASIS. CREATIVE + COMMONS MAKES NO WARRANTIES REGARDING THE INFORMATION + PROVIDED, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM + ITS USE. +

+
+

+ License +

+

+ THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS + CREATIVE COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK + IS PROTECTED BY COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE + OF THE WORK OTHER THAN AS AUTHORIZED UNDER THIS LICENSE OR + COPYRIGHT LAW IS PROHIBITED. +

+

+ BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT + AND AGREE TO BE BOUND BY THE TERMS OF THIS LICENSE. THE + LICENSOR GRANTS YOU THE RIGHTS CONTAINED HERE IN CONSIDERATION + OF YOUR ACCEPTANCE OF SUCH TERMS AND CONDITIONS. +

+
+
    +
  1. +

    + Definitions +

    +
    +
      +
    1. +

      + "Collective Work" means a work, such as a + periodical issue, anthology or encyclopedia, in + which the Work in its entirety in unmodified form, + along with a number of other contributions, + constituting separate and independent works in + themselves, are assembled into a collective whole. + A work that constitutes a Collective Work will not + be considered a Derivative Work (as defined below) + for the purposes of this License. +

      +
    2. +
    3. +

      + "Derivative Work" means a work based upon the Work + or upon the Work and other pre-existing works, such + as a translation, musical arrangement, + dramatization, fictionalization, motion picture + version, sound recording, art reproduction, + abridgment, condensation, or any other form in + which the Work may be recast, transformed, or + adapted, except that a work that constitutes a + Collective Work will not be considered a Derivative + Work for the purpose of this License. For the + avoidance of doubt, where the Work is a musical + composition or sound recording, the synchronization + of the Work in timed-relation with a moving image + ("synching") will be considered a Derivative Work + for the purpose of this License. +

      +
    4. +
    5. +

      + "Licensor" means the individual or entity that + offers the Work under the terms of this License. +

      +
    6. +
    7. +

      + "Original Author" means the individual or entity + who created the Work. +

      +
    8. +
    9. +

      + "Work" means the copyrightable work of authorship + offered under the terms of this License. +

      +
    10. +
    11. +

      + "You" means an individual or entity exercising + rights under this License who has not previously + violated the terms of this License with respect to + the Work, or who has received express permission + from the Licensor to exercise rights under this + License despite a previous violation. +

      +
    12. +
    13. +

      + "License Elements" means the following high-level + license attributes as selected by Licensor and + indicated in the title of this License: + Attribution, Noncommercial, ShareAlike. +

      +
    14. +
    +
    +
  2. +
  3. +

    + Fair Use Rights. Nothing in this license is intended to + reduce, limit, or restrict any rights arising from fair + use, first sale or other limitations on the exclusive + rights of the copyright owner under copyright law or + other applicable laws. +

    +
  4. +
  5. +

    + License Grant. Subject to the terms and conditions of + this License, Licensor hereby grants You a worldwide, + royalty-free, non-exclusive, perpetual (for the duration + of the applicable copyright) license to exercise the + rights in the Work as stated below: +

    +
    +
      +
    1. +

      + to reproduce the Work, to incorporate the Work into + one or more Collective Works, and to reproduce the + Work as incorporated in the Collective Works; +

      +
    2. +
    3. +

      + to create and reproduce Derivative Works; +

      +
    4. +
    5. +

      + to distribute copies or phonorecords of, display + publicly, perform publicly, and perform publicly by + means of a digital audio transmission the Work + including as incorporated in Collective Works; +

      +
    6. +
    7. +

      + to distribute copies or phonorecords of, display + publicly, perform publicly, and perform publicly by + means of a digital audio transmission Derivative + Works; +

      +
    8. +
    +
    +

    + The above rights may be exercised in all media and + formats whether now known or hereafter devised. The above + rights include the right to make such modifications as + are technically necessary to exercise the rights in other + media and formats. All rights not expressly granted by + Licensor are hereby reserved, including but not limited + to the rights set forth in Sections 4(e) and 4(f). +

    +
  6. +
  7. +

    + Restrictions.The license granted in Section 3 above is + expressly made subject to and limited by the following + restrictions: +

    +
    +
      +
    1. +

      + You may distribute, publicly display, publicly + perform, or publicly digitally perform the Work + only under the terms of this License, and You must + include a copy of, or the Uniform Resource + Identifier for, this License with every copy or + phonorecord of the Work You distribute, publicly + display, publicly perform, or publicly digitally + perform. You may not offer or impose any terms on + the Work that alter or restrict the terms of this + License or the recipients' exercise of the rights + granted hereunder. You may not sublicense the Work. + You must keep intact all notices that refer to this + License and to the disclaimer of warranties. You + may not distribute, publicly display, publicly + perform, or publicly digitally perform the Work + with any technological measures that control access + or use of the Work in a manner inconsistent with + the terms of this License Agreement. The above + applies to the Work as incorporated in a Collective + Work, but this does not require the Collective Work + apart from the Work itself to be made subject to + the terms of this License. If You create a + Collective Work, upon notice from any Licensor You + must, to the extent practicable, remove from the + Collective Work any reference to such Licensor or + the Original Author, as requested. If You create a + Derivative Work, upon notice from any Licensor You + must, to the extent practicable, remove from the + Derivative Work any reference to such Licensor or + the Original Author, as requested. +

      +
    2. +
    3. +

      + You may distribute, publicly display, publicly + perform, or publicly digitally perform a Derivative + Work only under the terms of this License, a later + version of this License with the same License + Elements as this License, or a Creative Commons + iCommons license that contains the same License + Elements as this License (e.g. + Attribution-NonCommercial-ShareAlike 2.0 Japan). + You must include a copy of, or the Uniform Resource + Identifier for, this License or other license + specified in the previous sentence with every copy + or phonorecord of each Derivative Work You + distribute, publicly display, publicly perform, or + publicly digitally perform. You may not offer or + impose any terms on the Derivative Works that alter + or restrict the terms of this License or the + recipients' exercise of the rights granted + hereunder, and You must keep intact all notices + that refer to this License and to the disclaimer of + warranties. You may not distribute, publicly + display, publicly perform, or publicly digitally + perform the Derivative Work with any technological + measures that control access or use of the Work in + a manner inconsistent with the terms of this + License Agreement. The above applies to the + Derivative Work as incorporated in a Collective + Work, but this does not require the Collective Work + apart from the Derivative Work itself to be made + subject to the terms of this License. +

      +
    4. +
    5. +

      + You may not exercise any of the rights granted to + You in Section 3 above in any manner that is + primarily intended for or directed toward + commercial advantage or private monetary + compensation. The exchange of the Work for other + copyrighted works by means of digital file-sharing + or otherwise shall not be considered to be intended + for or directed toward commercial advantage or + private monetary compensation, provided there is no + payment of any monetary compensation in connection + with the exchange of copyrighted works. +

      +
    6. +
    7. +

      + If you distribute, publicly display, publicly + perform, or publicly digitally perform the Work or + any Derivative Works or Collective Works, You must + keep intact all copyright notices for the Work and + give the Original Author credit reasonable to the + medium or means You are utilizing by conveying the + name (or pseudonym if applicable) of the Original + Author if supplied; the title of the Work if + supplied; to the extent reasonably practicable, the + Uniform Resource Identifier, if any, that Licensor + specifies to be associated with the Work, unless + such URI does not refer to the copyright notice or + licensing information for the Work; and in the case + of a Derivative Work, a credit identifying the use + of the Work in the Derivative Work (e.g., "French + translation of the Work by Original Author," or + "Screenplay based on original Work by Original + Author"). Such credit may be implemented in any + reasonable manner; provided, however, that in the + case of a Derivative Work or Collective Work, at a + minimum such credit will appear where any other + comparable authorship credit appears and in a + manner at least as prominent as such other + comparable authorship credit. +

      +
    8. +
    9. +

      + For the avoidance of doubt, where the Work is a + musical composition: +

      +
      +
        +
      1. +

        + Performance Royalties Under Blanket Licenses. + Licensor reserves the exclusive right to + collect, whether individually or via a + performance rights society (e.g. ASCAP, BMI, + SESAC), royalties for the public performance + or public digital performance (e.g. webcast) + of the Work if that performance is primarily + intended for or directed toward commercial + advantage or private monetary compensation. +

        +
      2. +
      3. +

        + Mechanical Rights and Statutory Royalties. + Licensor reserves the exclusive right to + collect, whether individually or via a music + rights agency or designated agent (e.g. Harry + Fox Agency), royalties for any phonorecord + You create from the Work ("cover version") + and distribute, subject to the compulsory + license created by 17 USC Section 115 of the + US Copyright Act (or the equivalent in other + jurisdictions), if Your distribution of such + cover version is primarily intended for or + directed toward commercial advantage or + private monetary compensation. 6. Webcasting + Rights and Statutory Royalties. For the + avoidance of doubt, where the Work is a sound + recording, Licensor reserves the exclusive + right to collect, whether individually or via + a performance-rights society (e.g. + SoundExchange), royalties for the public + digital performance (e.g. webcast) of the + Work, subject to the compulsory license + created by 17 USC Section 114 of the US + Copyright Act (or the equivalent in other + jurisdictions), if Your public digital + performance is primarily intended for or + directed toward commercial advantage or + private monetary compensation. +

        +
      4. +
      +
      +
    10. +
    11. +

      + Webcasting Rights and Statutory Royalties. For the + avoidance of doubt, where the Work is a sound + recording, Licensor reserves the exclusive right to + collect, whether individually or via a + performance-rights society (e.g. SoundExchange), + royalties for the public digital performance (e.g. + webcast) of the Work, subject to the compulsory + license created by 17 USC Section 114 of the US + Copyright Act (or the equivalent in other + jurisdictions), if Your public digital performance + is primarily intended for or directed toward + commercial advantage or private monetary + compensation. +

      +
    12. +
    +
    +
  8. +
  9. +

    + Representations, Warranties and Disclaimer +

    +

    + UNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN + WRITING, LICENSOR OFFERS THE WORK AS-IS AND MAKES NO + REPRESENTATIONS OR WARRANTIES OF ANY KIND CONCERNING THE + WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, + INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, + MERCHANTIBILITY, FITNESS FOR A PARTICULAR PURPOSE, + NONINFRINGEMENT, OR THE ABSENCE OF LATENT OR OTHER + DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS, + WHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS DO NOT + ALLOW THE EXCLUSION OF IMPLIED WARRANTIES, SO SUCH + EXCLUSION MAY NOT APPLY TO YOU. +

    +
  10. +
  11. +

    + Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY + APPLICABLE LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO + YOU ON ANY LEGAL THEORY FOR ANY SPECIAL, INCIDENTAL, + CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES ARISING OUT + OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR + HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. +

    +
  12. +
  13. +

    + Termination +

    +
    +
      +
    1. +

      + This License and the rights granted hereunder will + terminate automatically upon any breach by You of + the terms of this License. Individuals or entities + who have received Derivative Works or Collective + Works from You under this License, however, will + not have their licenses terminated provided such + individuals or entities remain in full compliance + with those licenses. Sections 1, 2, 5, 6, 7, and 8 + will survive any termination of this License. +

      +
    2. +
    3. +

      + Subject to the above terms and conditions, the + license granted here is perpetual (for the duration + of the applicable copyright in the Work). + Notwithstanding the above, Licensor reserves the + right to release the Work under different license + terms or to stop distributing the Work at any time; + provided, however that any such election will not + serve to withdraw this License (or any other + license that has been, or is required to be, + granted under the terms of this License), and this + License will continue in full force and effect + unless terminated as stated above. +

      +
    4. +
    +
    +
  14. +
  15. +

    + Miscellaneous +

    +
    +
      +
    1. +

      + Each time You distribute or publicly digitally + perform the Work or a Collective Work, the Licensor + offers to the recipient a license to the Work on + the same terms and conditions as the license + granted to You under this License. +

      +
    2. +
    3. +

      + Each time You distribute or publicly digitally + perform a Derivative Work, Licensor offers to the + recipient a license to the original Work on the + same terms and conditions as the license granted to + You under this License. +

      +
    4. +
    5. +

      + If any provision of this License is invalid or + unenforceable under applicable law, it shall not + affect the validity or enforceability of the + remainder of the terms of this License, and without + further action by the parties to this agreement, + such provision shall be reformed to the minimum + extent necessary to make such provision valid and + enforceable. +

      +
    6. +
    7. +

      + No term or provision of this License shall be + deemed waived and no breach consented to unless + such waiver or consent shall be in writing and + signed by the party to be charged with such waiver + or consent. +

      +
    8. +
    9. +

      + This License constitutes the entire agreement + between the parties with respect to the Work + licensed here. There are no understandings, + agreements or representations with respect to the + Work not specified here. Licensor shall not be + bound by any additional provisions that may appear + in any communication from You. This License may not + be modified without the mutual written agreement of + the Licensor and You. +

      +
    10. +
    +
    +
  16. +
+
+
+

+ Important +

+

+ Creative Commons is not a party to this License, and makes no + warranty whatsoever in connection with the Work. Creative + Commons will not be liable to You or any party on any legal + theory for any damages whatsoever, including without + limitation any general, special, incidental or consequential + damages arising in connection to this license. + Notwithstanding the foregoing two (2) sentences, if Creative + Commons has expressly identified itself as the Licensor + hereunder, it shall have all rights and obligations of + Licensor. +

+

+ Except for the limited purpose of indicating to the public + that the Work is licensed under the CCPL, neither party will + use the trademark "Creative Commons" or any related trademark + or logo of Creative Commons without the prior written consent + of Creative Commons. Any permitted use will be in compliance + with Creative Commons' then-current trademark usage + guidelines, as may be published on its website or otherwise + made available upon request from time to time. +

+

+ Creative Commons may be contacted at http://creativecommons.org/. +

+
+
+
+
+
+
+

+ F.2. The MIT License +

+
+
+
+

+ Copyright © 1999-2019 Gerard Beekmans +

+

+ Permission is hereby granted, free of charge, to any person + obtaining a copy of this software and associated documentation + files (the "Software"), to deal in the Software without + restriction, including without limitation the rights to use, + copy, modify, merge, publish, distribute, sublicense, and/or + sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following + conditions: +

+

+ The above copyright notice and this permission notice shall be + included in all copies or substantial portions of the Software. +

+

+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + OTHER DEALINGS IN THE SOFTWARE. +

+
+
+
+
+
+
+
+

+ Index +

+
+
+
+
+

+ Packages +

+ +

+ Programs +

+ +

+ Libraries +

+ +

+ Scripts +

+ +

+ Others +

+ +
+
+
+ + diff --git a/BOOK/LFS-BOOK-8.4.pdf b/BOOK/LFS-BOOK-8.4.pdf new file mode 100644 index 0000000..10fe0ed Binary files /dev/null and b/BOOK/LFS-BOOK-8.4.pdf differ diff --git a/BOOK/LFS-BOOK-8.4.tar.bz2 b/BOOK/LFS-BOOK-8.4.tar.bz2 new file mode 100644 index 0000000..fc556ca Binary files /dev/null and b/BOOK/LFS-BOOK-8.4.tar.bz2 differ diff --git a/BOOK/lfs-bootscripts-20180820.tar.bz2 b/BOOK/lfs-bootscripts-20180820.tar.bz2 new file mode 100644 index 0000000..e8c02a1 Binary files /dev/null and b/BOOK/lfs-bootscripts-20180820.tar.bz2 differ diff --git a/BOOK/md5sums b/BOOK/md5sums new file mode 100644 index 0000000..707b56e --- /dev/null +++ b/BOOK/md5sums @@ -0,0 +1,82 @@ +007aabf1dbb550bcddde52a244cd1070 acl-2.2.53.tar.gz +bc1e5cb5c96d99b24886f1f527d3bb3d attr-2.4.48.tar.gz +50f97f4159805e374639a73e2636f22e autoconf-2.69.tar.xz +53f38e7591fa57c3d2cee682be668e5b automake-1.16.1.tar.xz +2b44b47b905be16f45709648f671820b bash-5.0.tar.gz +cda93857418655ea43590736fc3ca9fc bc-1.07.1.tar.gz +0d174cdaf85721c5723bf52355be41e6 binutils-2.32.tar.xz +c9b552dee234b2f6b66e56b27e5234c9 bison-3.3.2.tar.xz +00b516f4704d4a7cb50a1d97e6e8e15b bzip2-1.0.6.tar.gz +31b17c6075820a434119592941186f70 check-0.12.0.tar.gz +ab06d68949758971fe744db66b572816 coreutils-8.30.tar.xz +e1b07516533f351b3aba3423fafeffd6 dejagnu-1.6.2.tar.gz +4824adc0e95dbbf11dfbdfaad6a1e461 diffutils-3.7.tar.xz +8d78b11d04d26c0b2dd149529441fa80 e2fsprogs-1.44.5.tar.gz +077e4f49320cad82bf17a997068b1db9 elfutils-0.176.tar.bz2 +c75d99910c1791dd9430d26ab76059c0 eudev-3.2.7.tar.gz +ca047ae951b40020ac831c28859161b2 expat-2.2.6.tar.bz2 +00fce8de158422f5ccd2666512329bd2 expect5.45.4.tar.gz +9af0eb3f5db4ae00fffc37f7b861575c file-5.36.tar.gz +9936aa8009438ce185bea2694a997fc1 findutils-4.6.0.tar.gz +2882e3179748cc9f9c23ec593d6adc8d flex-2.6.4.tar.gz +95cf553f50ec9f386b5dfcd67f30180a gawk-4.2.1.tar.xz +4ab282f414676496483b3e1793d07862 gcc-8.2.0.tar.xz +988dc82182121c7570e0cb8b4fcd5415 gdbm-1.18.1.tar.gz +df3f5690eaa30fd228537b00cb7b7590 gettext-0.19.8.1.tar.xz +e6c279d5b2f0736f740216f152acf974 glibc-2.29.tar.xz +f58fa8001d60c4c77595fbbb62b63c1d gmp-6.1.2.tar.xz +9e251c0a618ad0824b51117d5d9db87e gperf-3.1.tar.gz +05d0718a1b7cc706a4bdf8115363f1ed grep-3.3.tar.xz +08fb04335e2f5e73f23ea4c3adbf0c5f groff-1.22.4.tar.gz +8a4a2a95aac551fb0fba860ceabfa1d3 grub-2.02.tar.xz +691b1221694c3394f1c537df4eee39d3 gzip-1.10.tar.xz +3ba3afb1d1b261383d247f46cb135ee8 iana-etc-2.30.tar.bz2 +87fef1fa3f603aef11c41dcc097af75e inetutils-1.9.4.tar.xz +12e517cac2b57a0121cda351570f1e63 intltool-0.51.0.tar.gz +f3dab4c812812bbb5873cb90f471bcbf iproute2-4.20.0.tar.xz +c1635a5a83b63aca7f97a3eab39ebaa6 kbd-2.0.4.tar.xz +1129c243199bdd7db01b55a61aa19601 kmod-26.tar.xz +6a39bccf420c946b0fd7ffc64961315b less-530.tar.gz +e08811a18356eeef524b2ed333e8cb86 lfs-bootscripts-20180820.tar.bz2 +968ac4d42a1a71754313527be2ab5df3 libcap-2.26.tar.xz +83b89587607e3eb65c70d361f13bab43 libffi-3.2.1.tar.gz +4c8fe6cd85422baafd6e060f896c61bc libpipeline-1.5.1.tar.gz +1bfb9b923f2c1339b4d2ce1807064aa5 libtool-2.4.6.tar.xz +edd3015435d60598b99cf6aaf223710e linux-4.20.12.tar.xz +730bb15d96fffe47e148d1e09235af82 m4-1.4.18.tar.xz +15b012617e7c44c0ed482721629577ac make-4.2.1.tar.bz2 +c5c6c3434be14a5527d43b5ad0f09a13 man-db-2.8.5.tar.xz +ad9f1ff81276fe8d90d077484d6d4b5e man-pages-4.16.tar.xz +0267b0871266056184c484792572c682 meson-0.49.2.tar.gz +4125404e41e482ec68282a2e687f6c73 mpc-1.1.0.tar.gz +320fbc4463d4c8cb1e566929d8adc4f8 mpfr-4.0.2.tar.xz +f340be768a76724b83e6daab69009902 ninja-1.9.0.tar.gz +98c889aaf8d23910d2b92d65be2e737a ncurses-6.1.tar.gz +963deb2272d6be7d4c2458afd2517b73 openssl-1.1.1a.tar.gz +78ad9937e4caadcba1526ef1853730d5 patch-2.7.6.tar.xz +fbb590c305f2f88578f448581b8cf9c4 perl-5.28.1.tar.xz +f6e931e319531b736fadc017f470e68a pkg-config-0.29.2.tar.gz +2b0717a7cb474b3d6dfdeedfbad2eccc procps-ng-3.3.15.tar.xz +0524258861f00be1a02d27d39d8e5e62 psmisc-23.2.tar.xz +df6ec36011808205beda239c72f947cb Python-3.7.2.tar.xz +107ade7bb17efd104a22b2d457f4cb67 python-3.7.2-docs-html.tar.bz2 +7e6c1f16aee3244a69aba6e438295ca3 readline-8.0.tar.gz +777ddfd9d71dd06711fe91f0925e1573 sed-4.7.tar.xz +b491fecbf1232632c32ff8f1437fd60e shadow-4.6.tar.xz +c70599ab0d037fde724f7210c2c8d7f8 sysklogd-1.5.1.tar.gz +041dbe36a5dd80b2108aff305bc10620 sysvinit-2.93.tar.xz +bc9a89da1185ceb2210de12552c43ce2 tar-1.31.tar.xz +aa0a121d95a0e7b73a036f26028538d4 tcl8.6.9-src.tar.gz +3715197e62e0e07f85860b3d7aab55ed texinfo-6.5.tar.xz +b3f0a1a789480a036e58466cd0702477 tzdata2018i.tar.gz +d92afb0c6e8e616792068ee4737b0d24 udev-lfs-20171102.tar.bz2 +6fcfea2043b5ac188fd3eed56aeb5d90 util-linux-2.33.1.tar.xz +1739a1df312305155285f0cfa6118294 vim-8.1.tar.bz2 +af4813fe3952362451201ced6fbce379 XML-Parser-2.44.tar.gz +003e4d0b1b1899fc6e3000b24feddf7c xz-5.2.4.tar.xz +85adef240c5f370b308da8c938951a68 zlib-1.2.11.tar.xz +6a5ac7e89b791aae556de0f745916f7f bzip2-1.0.6-install_docs-1.patch +a9404fb575dfd5514f3c8f4120f9ca7d coreutils-8.30-i18n-1.patch +9a5997c3452909b1769918c759eff8a2 glibc-2.29-fhs-1.patch +f75cca16a38da6caa7d52151f7136895 kbd-2.0.4-backspace-1.patch +aaa84675e717504d7d3da452c8c2eaf1 sysvinit-2.93-consolidated-1.patch diff --git a/BOOK/wget-list b/BOOK/wget-list new file mode 100644 index 0000000..fb70d51 --- /dev/null +++ b/BOOK/wget-list @@ -0,0 +1,86 @@ +http://download.savannah.gnu.org/releases/acl/acl-2.2.53.tar.gz +http://download.savannah.gnu.org/releases/attr/attr-2.4.48.tar.gz +http://ftp.gnu.org/gnu/autoconf/autoconf-2.69.tar.xz +http://ftp.gnu.org/gnu/automake/automake-1.16.1.tar.xz +http://ftp.gnu.org/gnu/bash/bash-5.0.tar.gz +http://ftp.gnu.org/gnu/bc/bc-1.07.1.tar.gz +http://ftp.gnu.org/gnu/binutils/binutils-2.32.tar.xz +http://ftp.gnu.org/gnu/bison/bison-3.3.2.tar.xz +http://anduin.linuxfromscratch.org/LFS/bzip2-1.0.6.tar.gz +https://github.com/libcheck/check/releases/download/0.12.0/check-0.12.0.tar.gz +http://ftp.gnu.org/gnu/coreutils/coreutils-8.30.tar.xz +https://dbus.freedesktop.org/releases/dbus/dbus-1.12.12.tar.gz +http://ftp.gnu.org/gnu/dejagnu/dejagnu-1.6.2.tar.gz +http://ftp.gnu.org/gnu/diffutils/diffutils-3.7.tar.xz +https://downloads.sourceforge.net/project/e2fsprogs/e2fsprogs/v1.44.5/e2fsprogs-1.44.5.tar.gz +https://sourceware.org/ftp/elfutils/0.176/elfutils-0.176.tar.bz2 +https://dev.gentoo.org/~blueness/eudev/eudev-3.2.7.tar.gz +https://prdownloads.sourceforge.net/expat/expat-2.2.6.tar.bz2 +https://prdownloads.sourceforge.net/expect/expect5.45.4.tar.gz +ftp://ftp.astron.com/pub/file/file-5.36.tar.gz +http://ftp.gnu.org/gnu/findutils/findutils-4.6.0.tar.gz +https://github.com/westes/flex/releases/download/v2.6.4/flex-2.6.4.tar.gz +http://ftp.gnu.org/gnu/gawk/gawk-4.2.1.tar.xz +http://ftp.gnu.org/gnu/gcc/gcc-8.2.0/gcc-8.2.0.tar.xz +http://ftp.gnu.org/gnu/gdbm/gdbm-1.18.1.tar.gz +http://ftp.gnu.org/gnu/gettext/gettext-0.19.8.1.tar.xz +http://ftp.gnu.org/gnu/glibc/glibc-2.29.tar.xz +http://ftp.gnu.org/gnu/gmp/gmp-6.1.2.tar.xz +http://ftp.gnu.org/gnu/gperf/gperf-3.1.tar.gz +http://ftp.gnu.org/gnu/grep/grep-3.3.tar.xz +http://ftp.gnu.org/gnu/groff/groff-1.22.4.tar.gz +https://ftp.gnu.org/gnu/grub/grub-2.02.tar.xz +http://ftp.gnu.org/gnu/gzip/gzip-1.10.tar.xz +http://anduin.linuxfromscratch.org/LFS/iana-etc-2.30.tar.bz2 +http://ftp.gnu.org/gnu/inetutils/inetutils-1.9.4.tar.xz +https://launchpad.net/intltool/trunk/0.51.0/+download/intltool-0.51.0.tar.gz +https://www.kernel.org/pub/linux/utils/net/iproute2/iproute2-4.20.0.tar.xz +https://www.kernel.org/pub/linux/utils/kbd/kbd-2.0.4.tar.xz +https://www.kernel.org/pub/linux/utils/kernel/kmod/kmod-26.tar.xz +http://www.greenwoodsoftware.com/less/less-530.tar.gz +http://www.linuxfromscratch.org/lfs/downloads/8.4/lfs-bootscripts-20180820.tar.bz2 +https://www.kernel.org/pub/linux/libs/security/linux-privs/libcap2/libcap-2.26.tar.xz +ftp://sourceware.org/pub/libffi/libffi-3.2.1.tar.gz +http://download.savannah.gnu.org/releases/libpipeline/libpipeline-1.5.1.tar.gz +http://ftp.gnu.org/gnu/libtool/libtool-2.4.6.tar.xz +https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.20.12.tar.xz +http://ftp.gnu.org/gnu/m4/m4-1.4.18.tar.xz +http://ftp.gnu.org/gnu/make/make-4.2.1.tar.bz2 +http://download.savannah.gnu.org/releases/man-db/man-db-2.8.5.tar.xz +https://www.kernel.org/pub/linux/docs/man-pages/man-pages-4.16.tar.xz +https://github.com/mesonbuild/meson/releases/download/0.49.2/meson-0.49.2.tar.gz +https://ftp.gnu.org/gnu/mpc/mpc-1.1.0.tar.gz +http://www.mpfr.org/mpfr-4.0.2/mpfr-4.0.2.tar.xz +https://github.com/ninja-build/ninja/archive/v1.9.0/ninja-1.9.0.tar.gz +http://ftp.gnu.org/gnu/ncurses/ncurses-6.1.tar.gz +https://www.openssl.org/source/old/1.1.1/openssl-1.1.1a.tar.gz +http://ftp.gnu.org/gnu/patch/patch-2.7.6.tar.xz +https://www.cpan.org/src/5.0/perl-5.28.1.tar.xz +https://pkg-config.freedesktop.org/releases/pkg-config-0.29.2.tar.gz +https://sourceforge.net/projects/procps-ng/files/Production/procps-ng-3.3.15.tar.xz +https://sourceforge.net/projects/psmisc/files/psmisc/psmisc-23.2.tar.xz +https://www.python.org/ftp/python/3.7.2/Python-3.7.2.tar.xz +https://docs.python.org/ftp/python/doc/3.7.2/python-3.7.2-docs-html.tar.bz2 +http://ftp.gnu.org/gnu/readline/readline-8.0.tar.gz +http://ftp.gnu.org/gnu/sed/sed-4.7.tar.xz +https://github.com/shadow-maint/shadow/releases/download/4.6/shadow-4.6.tar.xz +http://www.infodrom.org/projects/sysklogd/download/sysklogd-1.5.1.tar.gz +https://github.com/systemd/systemd/archive/v240/systemd-240.tar.gz +http://anduin.linuxfromscratch.org/LFS/systemd-man-pages-240.tar.xz +http://download.savannah.gnu.org/releases/sysvinit/sysvinit-2.93.tar.xz +http://ftp.gnu.org/gnu/tar/tar-1.31.tar.xz +https://downloads.sourceforge.net/tcl/tcl8.6.9-src.tar.gz +http://ftp.gnu.org/gnu/texinfo/texinfo-6.5.tar.xz +https://www.iana.org/time-zones/repository/releases/tzdata2018i.tar.gz +http://anduin.linuxfromscratch.org/LFS/udev-lfs-20171102.tar.bz2 +https://www.kernel.org/pub/linux/utils/util-linux/v2.33/util-linux-2.33.1.tar.xz +ftp://ftp.vim.org/pub/vim/unix/vim-8.1.tar.bz2 +https://cpan.metacpan.org/authors/id/T/TO/TODDR/XML-Parser-2.44.tar.gz +https://tukaani.org/xz/xz-5.2.4.tar.xz +https://zlib.net/zlib-1.2.11.tar.xz +http://www.linuxfromscratch.org/patches/lfs/8.4/bzip2-1.0.6-install_docs-1.patch +http://www.linuxfromscratch.org/patches/lfs/8.4/coreutils-8.30-i18n-1.patch +http://www.linuxfromscratch.org/patches/lfs/8.4/glibc-2.29-fhs-1.patch +http://www.linuxfromscratch.org/patches/lfs/8.4/kbd-2.0.4-backspace-1.patch +http://www.linuxfromscratch.org/patches/lfs/8.4/sysvinit-2.93-consolidated-1.patch +http://www.linuxfromscratch.org/patches/lfs/8.4/systemd-240-security_fixes-2.patch diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..f288702 --- /dev/null +++ b/LICENSE @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/README b/README new file mode 100644 index 0000000..c61f63b --- /dev/null +++ b/README @@ -0,0 +1,127 @@ +#----------------------------------------------------------------------------- +# Copyright 2019 Baho Utot +#----------------------------------------------------------------------------- +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +#----------------------------------------------------------------------------- +OVERVIEW: + This build tracks linux from scratch version 8.4 +#----------------------------------------------------------------------------- +REQUIREMENTS: + 1. git installed on the host + 2. wget on host system + 3. Directory for build, mounted at /mnt/lfs + + There will need to be partition mounted there. + You will be responsible for that. + This build system uses whatever filesystem + that is at ${LFS} + + 4. run version-check.sh and install required packages if needed +#----------------------------------------------------------------------------- +WARNING: + This build system is designed in such a way to not be + able to trash your host system. Mistakes can happen. + Not responsible for trashed host system. You + bear all responsibilities for any failures. +#----------------------------------------------------------------------------- +GENERAL NOTES: + This system was designed and debugged on an AMD64 {x86_64} system + and I have not tested it on a i686 system as I no longer have or + use such systems. + + The build system installs/work directory: + /mnt/lfs/usr/src/LFS-RPM + + This build has a mkinitramfs step ( which requires cpio ) this step + creates an initrd so cpu updates and firmware is loaded. + Your lfs kernel should be configured to use this. + + This build has Microcode updates for AMD CPUs. + To use it make a link to the proper cpu family. + See BLFS book for more information. + + I have installed rpm macro files in: + /home/lfs/.rpmmacros + This makes the rpm environment correct so it builds + the base system correctly. +#----------------------------------------------------------------------------- +ADDITIONS: + cpio # needed for mkinitramfs + mkinitramfs # to create initrd + popt # needed for rpm + python2 # needed for rpm + rpm # package manager + wget # needed to fetch packages + firmware-radeon # firmware for radeon graphics + firmware-realtek # firmware for realtek network + firmware-amd-ucode # microcode updates for AMD CPUs +#----------------------------------------------------------------------------- +BUILD PROCEDURE: + login as root user + fdisk /dev/sdx partition drive, you need to do this + mkfs.ext4 /dev/sdxx create ext4 filesystem + + install -vdm 755 /mnt/lfs create lfs directory + mount /dev/sdxx /mnt/lfs mount partition to work directory + install -vdm 755 /mnt/lfs/usr/src create build directory + cd /mnt/lfs/usr/src goto build directory + + Now fetch the build system it will go into /mnt/lfs/usr/src/LFS-RPM by default + git clone https://github.com/baho-utot/LFS-RPM.git + + cd LFS-RPM Lets do this + ./setup.sh setup environment and fetches source tarballs + ./lfs.sh build it + ./cleanup.sh cleanup host + + Build at this point is complete. + All that is needed is to install grub and/or add a menu item in the + the grub configuration file /boot/grub.cfg +This completes the build. +#----------------------------------------------------------------------------- +GRUB: + + GPT partitioned drive + menuentry 'Linux From Scratch (8.4) (on /dev/sdxx)' { + insmod part_gpt + insmod ext2 + set root='hdx,gptx' + linux /boot/vmlinuz-4.20.12 root=/dev/sdxx + initrd /boot/initrd.img-4.20.12 + } + + MSDOS/BIOS partitioned drive + menuentry 'Linux From Scratch (8.4) (on /dev/sdxx)' { + insmod part_msdos + insmod ext2 + set root='hdx,msdosx' + linux /boot/vmlinuz-4.20.12 root=/dev/sdxx + initrd /boot/initrd.img-4.20.12 + } + Change the x's to the proper drives and partition +#----------------------------------------------------------------------------- +INSTALLER SCRIPT: + The installer.sh script will take the binary rpms ( chapter 6 ) and + install them into a partition that YOU mounted on /mnt. If you want + to install else where then change ROOTPATH="/mnt" to the installation + partition mounted by YOU. +#----------------------------------------------------------------------------- +SCRIPTS: + base.sh* builds chapter 6 + cleanup.sh* cleanup host system after build + installer.sh* install rpm binaries to mounted partition + lfs.sh* builds the whole thing + setup.sh* configure for build + tools.sh* builds chapter 5 + version-check.sh* checks host system for requirements diff --git a/SOURCES/config-4.20.12 b/SOURCES/config-4.20.12 new file mode 100644 index 0000000..358d9bc --- /dev/null +++ b/SOURCES/config-4.20.12 @@ -0,0 +1,7117 @@ +# +# Automatically generated file; DO NOT EDIT. +# Linux/x86 4.20.12 Kernel Configuration +# + +# +# Compiler: gcc (GCC) 8.2.0 +# +CONFIG_CC_IS_GCC=y +CONFIG_GCC_VERSION=80200 +CONFIG_CLANG_VERSION=0 +CONFIG_IRQ_WORK=y +CONFIG_BUILDTIME_EXTABLE_SORT=y +CONFIG_THREAD_INFO_IN_TASK=y + +# +# General setup +# +CONFIG_INIT_ENV_ARG_LIMIT=32 +# CONFIG_COMPILE_TEST is not set +CONFIG_LOCALVERSION="" +# CONFIG_LOCALVERSION_AUTO is not set +CONFIG_BUILD_SALT="" +CONFIG_HAVE_KERNEL_GZIP=y +CONFIG_HAVE_KERNEL_BZIP2=y +CONFIG_HAVE_KERNEL_LZMA=y +CONFIG_HAVE_KERNEL_XZ=y +CONFIG_HAVE_KERNEL_LZO=y +CONFIG_HAVE_KERNEL_LZ4=y +# CONFIG_KERNEL_GZIP is not set +# CONFIG_KERNEL_BZIP2 is not set +# CONFIG_KERNEL_LZMA is not set +CONFIG_KERNEL_XZ=y +# CONFIG_KERNEL_LZO is not set +# CONFIG_KERNEL_LZ4 is not set +CONFIG_DEFAULT_HOSTNAME="(none)" +CONFIG_SWAP=y +CONFIG_SYSVIPC=y +CONFIG_SYSVIPC_SYSCTL=y +CONFIG_POSIX_MQUEUE=y +CONFIG_POSIX_MQUEUE_SYSCTL=y +CONFIG_CROSS_MEMORY_ATTACH=y +# CONFIG_USELIB is not set +CONFIG_AUDIT=y +CONFIG_HAVE_ARCH_AUDITSYSCALL=y +CONFIG_AUDITSYSCALL=y +CONFIG_AUDIT_WATCH=y +CONFIG_AUDIT_TREE=y + +# +# IRQ subsystem +# +CONFIG_GENERIC_IRQ_PROBE=y +CONFIG_GENERIC_IRQ_SHOW=y +CONFIG_GENERIC_IRQ_EFFECTIVE_AFF_MASK=y +CONFIG_GENERIC_PENDING_IRQ=y +CONFIG_GENERIC_IRQ_MIGRATION=y +CONFIG_IRQ_DOMAIN=y +CONFIG_IRQ_DOMAIN_HIERARCHY=y +CONFIG_GENERIC_MSI_IRQ=y +CONFIG_GENERIC_MSI_IRQ_DOMAIN=y +CONFIG_GENERIC_IRQ_MATRIX_ALLOCATOR=y +CONFIG_GENERIC_IRQ_RESERVATION_MODE=y +CONFIG_IRQ_FORCED_THREADING=y +CONFIG_SPARSE_IRQ=y +# CONFIG_GENERIC_IRQ_DEBUGFS is not set +CONFIG_CLOCKSOURCE_WATCHDOG=y +CONFIG_ARCH_CLOCKSOURCE_DATA=y +CONFIG_ARCH_CLOCKSOURCE_INIT=y +CONFIG_CLOCKSOURCE_VALIDATE_LAST_CYCLE=y +CONFIG_GENERIC_TIME_VSYSCALL=y +CONFIG_GENERIC_CLOCKEVENTS=y +CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y +CONFIG_GENERIC_CLOCKEVENTS_MIN_ADJUST=y +CONFIG_GENERIC_CMOS_UPDATE=y + +# +# Timers subsystem +# +CONFIG_TICK_ONESHOT=y +CONFIG_NO_HZ_COMMON=y +# CONFIG_HZ_PERIODIC is not set +CONFIG_NO_HZ_IDLE=y +# CONFIG_NO_HZ_FULL is not set +CONFIG_NO_HZ=y +CONFIG_HIGH_RES_TIMERS=y +# CONFIG_PREEMPT_NONE is not set +CONFIG_PREEMPT_VOLUNTARY=y +# CONFIG_PREEMPT is not set + +# +# CPU/Task time and stats accounting +# +CONFIG_TICK_CPU_ACCOUNTING=y +# CONFIG_VIRT_CPU_ACCOUNTING_GEN is not set +CONFIG_IRQ_TIME_ACCOUNTING=y +CONFIG_HAVE_SCHED_AVG_IRQ=y +CONFIG_BSD_PROCESS_ACCT=y +CONFIG_BSD_PROCESS_ACCT_V3=y +CONFIG_TASKSTATS=y +CONFIG_TASK_DELAY_ACCT=y +CONFIG_TASK_XACCT=y +CONFIG_TASK_IO_ACCOUNTING=y +# CONFIG_PSI is not set +CONFIG_CPU_ISOLATION=y + +# +# RCU Subsystem +# +CONFIG_TREE_RCU=y +# CONFIG_RCU_EXPERT is not set +CONFIG_SRCU=y +CONFIG_TREE_SRCU=y +CONFIG_RCU_STALL_COMMON=y +CONFIG_RCU_NEED_SEGCBLIST=y +CONFIG_BUILD_BIN2C=y +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_LOG_BUF_SHIFT=19 +CONFIG_LOG_CPU_MAX_BUF_SHIFT=12 +CONFIG_PRINTK_SAFE_LOG_BUF_SHIFT=13 +CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=y +CONFIG_ARCH_SUPPORTS_NUMA_BALANCING=y +CONFIG_ARCH_WANT_BATCHED_UNMAP_TLB_FLUSH=y +CONFIG_ARCH_SUPPORTS_INT128=y +CONFIG_CGROUPS=y +CONFIG_PAGE_COUNTER=y +CONFIG_MEMCG=y +CONFIG_MEMCG_SWAP=y +CONFIG_MEMCG_SWAP_ENABLED=y +CONFIG_MEMCG_KMEM=y +CONFIG_BLK_CGROUP=y +# CONFIG_DEBUG_BLK_CGROUP is not set +CONFIG_CGROUP_WRITEBACK=y +CONFIG_CGROUP_SCHED=y +CONFIG_FAIR_GROUP_SCHED=y +CONFIG_CFS_BANDWIDTH=y +# CONFIG_RT_GROUP_SCHED is not set +CONFIG_CGROUP_PIDS=y +CONFIG_CGROUP_RDMA=y +CONFIG_CGROUP_FREEZER=y +# CONFIG_CGROUP_HUGETLB is not set +CONFIG_CPUSETS=y +CONFIG_PROC_PID_CPUSET=y +CONFIG_CGROUP_DEVICE=y +CONFIG_CGROUP_CPUACCT=y +# CONFIG_CGROUP_PERF is not set +# CONFIG_CGROUP_DEBUG is not set +CONFIG_SOCK_CGROUP_DATA=y +CONFIG_NAMESPACES=y +CONFIG_UTS_NS=y +CONFIG_IPC_NS=y +CONFIG_USER_NS=y +CONFIG_PID_NS=y +CONFIG_NET_NS=y +# CONFIG_CHECKPOINT_RESTORE is not set +CONFIG_SCHED_AUTOGROUP=y +# CONFIG_SYSFS_DEPRECATED is not set +CONFIG_RELAY=y +CONFIG_BLK_DEV_INITRD=y +CONFIG_INITRAMFS_SOURCE="" +CONFIG_RD_GZIP=y +CONFIG_RD_BZIP2=y +CONFIG_RD_LZMA=y +CONFIG_RD_XZ=y +CONFIG_RD_LZO=y +CONFIG_RD_LZ4=y +CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE=y +# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set +CONFIG_SYSCTL=y +CONFIG_ANON_INODES=y +CONFIG_HAVE_UID16=y +CONFIG_SYSCTL_EXCEPTION_TRACE=y +CONFIG_HAVE_PCSPKR_PLATFORM=y +CONFIG_BPF=y +# CONFIG_EXPERT is not set +CONFIG_UID16=y +CONFIG_MULTIUSER=y +CONFIG_SGETMASK_SYSCALL=y +CONFIG_SYSFS_SYSCALL=y +CONFIG_FHANDLE=y +CONFIG_POSIX_TIMERS=y +CONFIG_PRINTK=y +CONFIG_PRINTK_NMI=y +CONFIG_BUG=y +CONFIG_ELF_CORE=y +CONFIG_PCSPKR_PLATFORM=y +CONFIG_BASE_FULL=y +CONFIG_FUTEX=y +CONFIG_FUTEX_PI=y +CONFIG_EPOLL=y +CONFIG_SIGNALFD=y +CONFIG_TIMERFD=y +CONFIG_EVENTFD=y +CONFIG_SHMEM=y +CONFIG_AIO=y +CONFIG_ADVISE_SYSCALLS=y +CONFIG_MEMBARRIER=y +CONFIG_KALLSYMS=y +# CONFIG_KALLSYMS_ALL is not set +CONFIG_KALLSYMS_ABSOLUTE_PERCPU=y +CONFIG_KALLSYMS_BASE_RELATIVE=y +# CONFIG_BPF_SYSCALL is not set +# CONFIG_USERFAULTFD is not set +CONFIG_ARCH_HAS_MEMBARRIER_SYNC_CORE=y +CONFIG_RSEQ=y +# CONFIG_EMBEDDED is not set +CONFIG_HAVE_PERF_EVENTS=y + +# +# Kernel Performance Events And Counters +# +CONFIG_PERF_EVENTS=y +# CONFIG_DEBUG_PERF_USE_VMALLOC is not set +CONFIG_VM_EVENT_COUNTERS=y +CONFIG_SLUB_DEBUG=y +# CONFIG_COMPAT_BRK is not set +# CONFIG_SLAB is not set +CONFIG_SLUB=y +CONFIG_SLAB_MERGE_DEFAULT=y +# CONFIG_SLAB_FREELIST_RANDOM is not set +# CONFIG_SLAB_FREELIST_HARDENED is not set +CONFIG_SLUB_CPU_PARTIAL=y +CONFIG_SYSTEM_DATA_VERIFICATION=y +# CONFIG_PROFILING is not set +CONFIG_64BIT=y +CONFIG_X86_64=y +CONFIG_X86=y +CONFIG_INSTRUCTION_DECODER=y +CONFIG_OUTPUT_FORMAT="elf64-x86-64" +CONFIG_ARCH_DEFCONFIG="arch/x86/configs/x86_64_defconfig" +CONFIG_LOCKDEP_SUPPORT=y +CONFIG_STACKTRACE_SUPPORT=y +CONFIG_MMU=y +CONFIG_ARCH_MMAP_RND_BITS_MIN=28 +CONFIG_ARCH_MMAP_RND_BITS_MAX=32 +CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MIN=8 +CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MAX=16 +CONFIG_GENERIC_ISA_DMA=y +CONFIG_GENERIC_BUG=y +CONFIG_GENERIC_BUG_RELATIVE_POINTERS=y +CONFIG_GENERIC_HWEIGHT=y +CONFIG_ARCH_MAY_HAVE_PC_FDC=y +CONFIG_RWSEM_XCHGADD_ALGORITHM=y +CONFIG_GENERIC_CALIBRATE_DELAY=y +CONFIG_ARCH_HAS_CPU_RELAX=y +CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y +CONFIG_ARCH_HAS_FILTER_PGPROT=y +CONFIG_HAVE_SETUP_PER_CPU_AREA=y +CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK=y +CONFIG_NEED_PER_CPU_PAGE_FIRST_CHUNK=y +CONFIG_ARCH_HIBERNATION_POSSIBLE=y +CONFIG_ARCH_SUSPEND_POSSIBLE=y +CONFIG_ARCH_WANT_HUGE_PMD_SHARE=y +CONFIG_ARCH_WANT_GENERAL_HUGETLB=y +CONFIG_ZONE_DMA32=y +CONFIG_AUDIT_ARCH=y +CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING=y +CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y +CONFIG_HAVE_INTEL_TXT=y +CONFIG_X86_64_SMP=y +CONFIG_ARCH_SUPPORTS_UPROBES=y +CONFIG_FIX_EARLYCON_MEM=y +CONFIG_PGTABLE_LEVELS=4 +CONFIG_CC_HAS_SANE_STACKPROTECTOR=y + +# +# Processor type and features +# +CONFIG_ZONE_DMA=y +CONFIG_SMP=y +CONFIG_X86_FEATURE_NAMES=y +CONFIG_X86_X2APIC=y +CONFIG_X86_MPPARSE=y +# CONFIG_GOLDFISH is not set +CONFIG_RETPOLINE=y +# CONFIG_INTEL_RDT is not set +CONFIG_X86_EXTENDED_PLATFORM=y +# CONFIG_X86_VSMP is not set +# CONFIG_X86_GOLDFISH is not set +# CONFIG_X86_INTEL_MID is not set +CONFIG_X86_INTEL_LPSS=y +CONFIG_X86_AMD_PLATFORM_DEVICE=y +CONFIG_IOSF_MBI=y +# CONFIG_IOSF_MBI_DEBUG is not set +CONFIG_X86_SUPPORTS_MEMORY_FAILURE=y +CONFIG_SCHED_OMIT_FRAME_POINTER=y +# CONFIG_HYPERVISOR_GUEST is not set +# CONFIG_MK8 is not set +# CONFIG_MPSC is not set +# CONFIG_MCORE2 is not set +# CONFIG_MATOM is not set +CONFIG_GENERIC_CPU=y +CONFIG_X86_INTERNODE_CACHE_SHIFT=6 +CONFIG_X86_L1_CACHE_SHIFT=6 +CONFIG_X86_TSC=y +CONFIG_X86_CMPXCHG64=y +CONFIG_X86_CMOV=y +CONFIG_X86_MINIMUM_CPU_FAMILY=64 +CONFIG_X86_DEBUGCTLMSR=y +CONFIG_CPU_SUP_INTEL=y +CONFIG_CPU_SUP_AMD=y +CONFIG_CPU_SUP_HYGON=y +CONFIG_CPU_SUP_CENTAUR=y +CONFIG_HPET_TIMER=y +CONFIG_HPET_EMULATE_RTC=y +CONFIG_DMI=y +CONFIG_GART_IOMMU=y +# CONFIG_CALGARY_IOMMU is not set +# CONFIG_MAXSMP is not set +CONFIG_NR_CPUS_RANGE_BEGIN=2 +CONFIG_NR_CPUS_RANGE_END=512 +CONFIG_NR_CPUS_DEFAULT=64 +CONFIG_NR_CPUS=16 +CONFIG_SCHED_SMT=y +CONFIG_SCHED_MC=y +CONFIG_SCHED_MC_PRIO=y +CONFIG_X86_LOCAL_APIC=y +CONFIG_X86_IO_APIC=y +CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS=y +CONFIG_X86_MCE=y +# CONFIG_X86_MCELOG_LEGACY is not set +CONFIG_X86_MCE_INTEL=y +CONFIG_X86_MCE_AMD=y +CONFIG_X86_MCE_THRESHOLD=y +# CONFIG_X86_MCE_INJECT is not set +CONFIG_X86_THERMAL_VECTOR=y + +# +# Performance monitoring +# +CONFIG_PERF_EVENTS_INTEL_UNCORE=y +CONFIG_PERF_EVENTS_INTEL_RAPL=y +CONFIG_PERF_EVENTS_INTEL_CSTATE=y +# CONFIG_PERF_EVENTS_AMD_POWER is not set +CONFIG_X86_16BIT=y +CONFIG_X86_ESPFIX64=y +CONFIG_X86_VSYSCALL_EMULATION=y +CONFIG_I8K=m +CONFIG_MICROCODE=y +CONFIG_MICROCODE_INTEL=y +CONFIG_MICROCODE_AMD=y +CONFIG_MICROCODE_OLD_INTERFACE=y +CONFIG_X86_MSR=y +CONFIG_X86_CPUID=y +# CONFIG_X86_5LEVEL is not set +CONFIG_X86_DIRECT_GBPAGES=y +# CONFIG_X86_CPA_STATISTICS is not set +CONFIG_ARCH_HAS_MEM_ENCRYPT=y +# CONFIG_AMD_MEM_ENCRYPT is not set +# CONFIG_NUMA is not set +CONFIG_ARCH_SPARSEMEM_ENABLE=y +CONFIG_ARCH_SPARSEMEM_DEFAULT=y +CONFIG_ARCH_SELECT_MEMORY_MODEL=y +CONFIG_ARCH_PROC_KCORE_TEXT=y +CONFIG_ILLEGAL_POINTER_VALUE=0xdead000000000000 +# CONFIG_X86_PMEM_LEGACY is not set +CONFIG_X86_CHECK_BIOS_CORRUPTION=y +# CONFIG_X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK is not set +CONFIG_X86_RESERVE_LOW=64 +CONFIG_MTRR=y +CONFIG_MTRR_SANITIZER=y +CONFIG_MTRR_SANITIZER_ENABLE_DEFAULT=0 +CONFIG_MTRR_SANITIZER_SPARE_REG_NR_DEFAULT=1 +CONFIG_X86_PAT=y +CONFIG_ARCH_USES_PG_UNCACHED=y +CONFIG_ARCH_RANDOM=y +CONFIG_X86_SMAP=y +CONFIG_X86_INTEL_UMIP=y +# CONFIG_X86_INTEL_MPX is not set +CONFIG_X86_INTEL_MEMORY_PROTECTION_KEYS=y +CONFIG_EFI=y +CONFIG_EFI_STUB=y +CONFIG_EFI_MIXED=y +CONFIG_SECCOMP=y +# CONFIG_HZ_100 is not set +CONFIG_HZ_250=y +# CONFIG_HZ_300 is not set +# CONFIG_HZ_1000 is not set +CONFIG_HZ=250 +CONFIG_SCHED_HRTICK=y +CONFIG_KEXEC=y +# CONFIG_KEXEC_FILE is not set +CONFIG_CRASH_DUMP=y +CONFIG_KEXEC_JUMP=y +CONFIG_PHYSICAL_START=0x200000 +CONFIG_RELOCATABLE=y +CONFIG_RANDOMIZE_BASE=y +CONFIG_X86_NEED_RELOCS=y +CONFIG_PHYSICAL_ALIGN=0x1000000 +CONFIG_DYNAMIC_MEMORY_LAYOUT=y +CONFIG_RANDOMIZE_MEMORY=y +CONFIG_RANDOMIZE_MEMORY_PHYSICAL_PADDING=0x0 +CONFIG_HOTPLUG_CPU=y +# CONFIG_BOOTPARAM_HOTPLUG_CPU0 is not set +# CONFIG_DEBUG_HOTPLUG_CPU0 is not set +# CONFIG_COMPAT_VDSO is not set +CONFIG_LEGACY_VSYSCALL_EMULATE=y +# CONFIG_LEGACY_VSYSCALL_NONE is not set +# CONFIG_CMDLINE_BOOL is not set +CONFIG_MODIFY_LDT_SYSCALL=y +CONFIG_HAVE_LIVEPATCH=y +CONFIG_ARCH_HAS_ADD_PAGES=y +CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y +CONFIG_ARCH_ENABLE_SPLIT_PMD_PTLOCK=y +CONFIG_ARCH_ENABLE_HUGEPAGE_MIGRATION=y +CONFIG_ARCH_ENABLE_THP_MIGRATION=y + +# +# Power management and ACPI options +# +CONFIG_ARCH_HIBERNATION_HEADER=y +CONFIG_SUSPEND=y +CONFIG_SUSPEND_FREEZER=y +CONFIG_HIBERNATE_CALLBACKS=y +CONFIG_HIBERNATION=y +CONFIG_PM_STD_PARTITION="" +CONFIG_PM_SLEEP=y +CONFIG_PM_SLEEP_SMP=y +# CONFIG_PM_AUTOSLEEP is not set +# CONFIG_PM_WAKELOCKS is not set +CONFIG_PM=y +# CONFIG_PM_DEBUG is not set +CONFIG_PM_CLK=y +CONFIG_PM_GENERIC_DOMAINS=y +# CONFIG_WQ_POWER_EFFICIENT_DEFAULT is not set +CONFIG_PM_GENERIC_DOMAINS_SLEEP=y +CONFIG_ARCH_SUPPORTS_ACPI=y +CONFIG_ACPI=y +CONFIG_ACPI_LEGACY_TABLES_LOOKUP=y +CONFIG_ARCH_MIGHT_HAVE_ACPI_PDC=y +CONFIG_ACPI_SYSTEM_POWER_STATES_SUPPORT=y +# CONFIG_ACPI_DEBUGGER is not set +CONFIG_ACPI_SPCR_TABLE=y +CONFIG_ACPI_LPIT=y +CONFIG_ACPI_SLEEP=y +# CONFIG_ACPI_PROCFS_POWER is not set +CONFIG_ACPI_REV_OVERRIDE_POSSIBLE=y +# CONFIG_ACPI_EC_DEBUGFS is not set +CONFIG_ACPI_AC=y +CONFIG_ACPI_BATTERY=y +CONFIG_ACPI_BUTTON=y +CONFIG_ACPI_VIDEO=m +CONFIG_ACPI_FAN=y +# CONFIG_ACPI_TAD is not set +CONFIG_ACPI_DOCK=y +CONFIG_ACPI_CPU_FREQ_PSS=y +CONFIG_ACPI_PROCESSOR_CSTATE=y +CONFIG_ACPI_PROCESSOR_IDLE=y +CONFIG_ACPI_CPPC_LIB=y +CONFIG_ACPI_PROCESSOR=y +CONFIG_ACPI_IPMI=m +CONFIG_ACPI_HOTPLUG_CPU=y +CONFIG_ACPI_PROCESSOR_AGGREGATOR=m +CONFIG_ACPI_THERMAL=y +CONFIG_ACPI_CUSTOM_DSDT_FILE="" +CONFIG_ARCH_HAS_ACPI_TABLE_UPGRADE=y +CONFIG_ACPI_TABLE_UPGRADE=y +# CONFIG_ACPI_DEBUG is not set +CONFIG_ACPI_PCI_SLOT=y +CONFIG_ACPI_CONTAINER=y +CONFIG_ACPI_HOTPLUG_IOAPIC=y +CONFIG_ACPI_SBS=m +CONFIG_ACPI_HED=y +CONFIG_ACPI_CUSTOM_METHOD=m +CONFIG_ACPI_BGRT=y +# CONFIG_ACPI_NFIT is not set +CONFIG_HAVE_ACPI_APEI=y +CONFIG_HAVE_ACPI_APEI_NMI=y +CONFIG_ACPI_APEI=y +CONFIG_ACPI_APEI_GHES=y +CONFIG_ACPI_APEI_PCIEAER=y +CONFIG_ACPI_APEI_MEMORY_FAILURE=y +# CONFIG_ACPI_APEI_EINJ is not set +# CONFIG_ACPI_APEI_ERST_DEBUG is not set +# CONFIG_DPTF_POWER is not set +# CONFIG_ACPI_EXTLOG is not set +# CONFIG_PMIC_OPREGION is not set +# CONFIG_ACPI_CONFIGFS is not set +CONFIG_X86_PM_TIMER=y +CONFIG_SFI=y + +# +# CPU Frequency scaling +# +CONFIG_CPU_FREQ=y +CONFIG_CPU_FREQ_GOV_ATTR_SET=y +CONFIG_CPU_FREQ_GOV_COMMON=y +CONFIG_CPU_FREQ_STAT=y +CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y +# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set +# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set +# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set +# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set +# CONFIG_CPU_FREQ_DEFAULT_GOV_SCHEDUTIL is not set +CONFIG_CPU_FREQ_GOV_PERFORMANCE=y +CONFIG_CPU_FREQ_GOV_POWERSAVE=y +CONFIG_CPU_FREQ_GOV_USERSPACE=y +CONFIG_CPU_FREQ_GOV_ONDEMAND=y +CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y +CONFIG_CPU_FREQ_GOV_SCHEDUTIL=y + +# +# CPU frequency scaling drivers +# +CONFIG_X86_INTEL_PSTATE=y +CONFIG_X86_PCC_CPUFREQ=m +CONFIG_X86_ACPI_CPUFREQ=m +CONFIG_X86_ACPI_CPUFREQ_CPB=y +CONFIG_X86_POWERNOW_K8=m +CONFIG_X86_AMD_FREQ_SENSITIVITY=m +CONFIG_X86_SPEEDSTEP_CENTRINO=m +CONFIG_X86_P4_CLOCKMOD=m + +# +# shared options +# +CONFIG_X86_SPEEDSTEP_LIB=m + +# +# CPU Idle +# +CONFIG_CPU_IDLE=y +CONFIG_CPU_IDLE_GOV_LADDER=y +CONFIG_CPU_IDLE_GOV_MENU=y +CONFIG_INTEL_IDLE=y + +# +# Bus options (PCI etc.) +# +CONFIG_PCI=y +CONFIG_PCI_DIRECT=y +CONFIG_PCI_MMCONFIG=y +CONFIG_PCI_DOMAINS=y +CONFIG_MMCONF_FAM10H=y +CONFIG_PCIEPORTBUS=y +# CONFIG_HOTPLUG_PCI_PCIE is not set +CONFIG_PCIEAER=y +# CONFIG_PCIEAER_INJECT is not set +CONFIG_PCIE_ECRC=y +CONFIG_PCIEASPM=y +# CONFIG_PCIEASPM_DEBUG is not set +CONFIG_PCIEASPM_DEFAULT=y +# CONFIG_PCIEASPM_POWERSAVE is not set +# CONFIG_PCIEASPM_POWER_SUPERSAVE is not set +# CONFIG_PCIEASPM_PERFORMANCE is not set +CONFIG_PCIE_PME=y +CONFIG_PCIE_DPC=y +# CONFIG_PCIE_PTM is not set +CONFIG_PCI_MSI=y +CONFIG_PCI_MSI_IRQ_DOMAIN=y +CONFIG_PCI_QUIRKS=y +# CONFIG_PCI_DEBUG is not set +# CONFIG_PCI_REALLOC_ENABLE_AUTO is not set +CONFIG_PCI_STUB=y +# CONFIG_PCI_PF_STUB is not set +CONFIG_PCI_ATS=y +CONFIG_PCI_LOCKLESS_CONFIG=y +CONFIG_PCI_IOV=y +CONFIG_PCI_PRI=y +CONFIG_PCI_PASID=y +CONFIG_PCI_LABEL=y +CONFIG_HOTPLUG_PCI=y +CONFIG_HOTPLUG_PCI_ACPI=y +CONFIG_HOTPLUG_PCI_ACPI_IBM=m +CONFIG_HOTPLUG_PCI_CPCI=y +CONFIG_HOTPLUG_PCI_CPCI_ZT5550=m +CONFIG_HOTPLUG_PCI_CPCI_GENERIC=m +# CONFIG_HOTPLUG_PCI_SHPC is not set + +# +# PCI controller drivers +# + +# +# Cadence PCIe controllers support +# +CONFIG_VMD=m + +# +# DesignWare PCI Core Support +# +# CONFIG_PCIE_DW_PLAT_HOST is not set + +# +# PCI Endpoint +# +# CONFIG_PCI_ENDPOINT is not set + +# +# PCI switch controller drivers +# +# CONFIG_PCI_SW_SWITCHTEC is not set +CONFIG_ISA_DMA_API=y +CONFIG_AMD_NB=y +CONFIG_PCCARD=m +CONFIG_PCMCIA=m +CONFIG_PCMCIA_LOAD_CIS=y +CONFIG_CARDBUS=y + +# +# PC-card bridges +# +CONFIG_YENTA=m +CONFIG_YENTA_O2=y +CONFIG_YENTA_RICOH=y +CONFIG_YENTA_TI=y +CONFIG_YENTA_ENE_TUNE=y +CONFIG_YENTA_TOSHIBA=y +CONFIG_PD6729=m +CONFIG_I82092=m +CONFIG_PCCARD_NONSTATIC=y +# CONFIG_RAPIDIO is not set +# CONFIG_X86_SYSFB is not set + +# +# Binary Emulations +# +CONFIG_IA32_EMULATION=y +CONFIG_IA32_AOUT=y +# CONFIG_X86_X32 is not set +CONFIG_COMPAT_32=y +CONFIG_COMPAT=y +CONFIG_COMPAT_FOR_U64_ALIGNMENT=y +CONFIG_SYSVIPC_COMPAT=y +CONFIG_X86_DEV_DMA_OPS=y +CONFIG_HAVE_GENERIC_GUP=y + +# +# Firmware Drivers +# +CONFIG_EDD=m +# CONFIG_EDD_OFF is not set +CONFIG_FIRMWARE_MEMMAP=y +CONFIG_DMIID=y +CONFIG_DMI_SYSFS=y +CONFIG_DMI_SCAN_MACHINE_NON_EFI_FALLBACK=y +CONFIG_ISCSI_IBFT_FIND=y +CONFIG_ISCSI_IBFT=m +# CONFIG_FW_CFG_SYSFS is not set +# CONFIG_GOOGLE_FIRMWARE is not set + +# +# EFI (Extensible Firmware Interface) Support +# +CONFIG_EFI_VARS=y +CONFIG_EFI_ESRT=y +CONFIG_EFI_VARS_PSTORE=y +CONFIG_EFI_VARS_PSTORE_DEFAULT_DISABLE=y +CONFIG_EFI_RUNTIME_MAP=y +# CONFIG_EFI_FAKE_MEMMAP is not set +CONFIG_EFI_RUNTIME_WRAPPERS=y +# CONFIG_EFI_BOOTLOADER_CONTROL is not set +# CONFIG_EFI_CAPSULE_LOADER is not set +# CONFIG_EFI_TEST is not set +# CONFIG_APPLE_PROPERTIES is not set +# CONFIG_RESET_ATTACK_MITIGATION is not set +CONFIG_UEFI_CPER=y +CONFIG_UEFI_CPER_X86=y + +# +# Tegra firmware driver +# +CONFIG_HAVE_KVM=y +CONFIG_HAVE_KVM_IRQCHIP=y +CONFIG_HAVE_KVM_IRQFD=y +CONFIG_HAVE_KVM_IRQ_ROUTING=y +CONFIG_HAVE_KVM_EVENTFD=y +CONFIG_KVM_MMIO=y +CONFIG_KVM_ASYNC_PF=y +CONFIG_HAVE_KVM_MSI=y +CONFIG_HAVE_KVM_CPU_RELAX_INTERCEPT=y +CONFIG_KVM_VFIO=y +CONFIG_KVM_GENERIC_DIRTYLOG_READ_PROTECT=y +CONFIG_KVM_COMPAT=y +CONFIG_HAVE_KVM_IRQ_BYPASS=y +CONFIG_VIRTUALIZATION=y +CONFIG_KVM=m +CONFIG_KVM_INTEL=m +CONFIG_KVM_AMD=m +CONFIG_KVM_AMD_SEV=y +CONFIG_VHOST_NET=m +CONFIG_VHOST_SCSI=m +# CONFIG_VHOST_VSOCK is not set +CONFIG_VHOST=m +# CONFIG_VHOST_CROSS_ENDIAN_LEGACY is not set + +# +# General architecture-dependent options +# +CONFIG_CRASH_CORE=y +CONFIG_KEXEC_CORE=y +CONFIG_HOTPLUG_SMT=y +CONFIG_HAVE_OPROFILE=y +CONFIG_OPROFILE_NMI_TIMER=y +# CONFIG_KPROBES is not set +CONFIG_JUMP_LABEL=y +# CONFIG_STATIC_KEYS_SELFTEST is not set +CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y +CONFIG_ARCH_USE_BUILTIN_BSWAP=y +CONFIG_USER_RETURN_NOTIFIER=y +CONFIG_HAVE_IOREMAP_PROT=y +CONFIG_HAVE_KPROBES=y +CONFIG_HAVE_KRETPROBES=y +CONFIG_HAVE_OPTPROBES=y +CONFIG_HAVE_KPROBES_ON_FTRACE=y +CONFIG_HAVE_FUNCTION_ERROR_INJECTION=y +CONFIG_HAVE_NMI=y +CONFIG_HAVE_ARCH_TRACEHOOK=y +CONFIG_HAVE_DMA_CONTIGUOUS=y +CONFIG_GENERIC_SMP_IDLE_THREAD=y +CONFIG_ARCH_HAS_FORTIFY_SOURCE=y +CONFIG_ARCH_HAS_SET_MEMORY=y +CONFIG_HAVE_ARCH_THREAD_STRUCT_WHITELIST=y +CONFIG_ARCH_WANTS_DYNAMIC_TASK_STRUCT=y +CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y +CONFIG_HAVE_RSEQ=y +CONFIG_HAVE_FUNCTION_ARG_ACCESS_API=y +CONFIG_HAVE_CLK=y +CONFIG_HAVE_HW_BREAKPOINT=y +CONFIG_HAVE_MIXED_BREAKPOINTS_REGS=y +CONFIG_HAVE_USER_RETURN_NOTIFIER=y +CONFIG_HAVE_PERF_EVENTS_NMI=y +CONFIG_HAVE_HARDLOCKUP_DETECTOR_PERF=y +CONFIG_HAVE_PERF_REGS=y +CONFIG_HAVE_PERF_USER_STACK_DUMP=y +CONFIG_HAVE_ARCH_JUMP_LABEL=y +CONFIG_HAVE_ARCH_JUMP_LABEL_RELATIVE=y +CONFIG_ARCH_HAVE_NMI_SAFE_CMPXCHG=y +CONFIG_HAVE_ALIGNED_STRUCT_PAGE=y +CONFIG_HAVE_CMPXCHG_LOCAL=y +CONFIG_HAVE_CMPXCHG_DOUBLE=y +CONFIG_ARCH_WANT_COMPAT_IPC_PARSE_VERSION=y +CONFIG_ARCH_WANT_OLD_COMPAT_IPC=y +CONFIG_HAVE_ARCH_SECCOMP_FILTER=y +CONFIG_SECCOMP_FILTER=y +CONFIG_HAVE_ARCH_STACKLEAK=y +CONFIG_HAVE_STACKPROTECTOR=y +CONFIG_CC_HAS_STACKPROTECTOR_NONE=y +CONFIG_STACKPROTECTOR=y +CONFIG_STACKPROTECTOR_STRONG=y +CONFIG_HAVE_ARCH_WITHIN_STACK_FRAMES=y +CONFIG_HAVE_CONTEXT_TRACKING=y +CONFIG_HAVE_VIRT_CPU_ACCOUNTING_GEN=y +CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y +CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE=y +CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD=y +CONFIG_HAVE_ARCH_HUGE_VMAP=y +CONFIG_HAVE_ARCH_SOFT_DIRTY=y +CONFIG_HAVE_MOD_ARCH_SPECIFIC=y +CONFIG_MODULES_USE_ELF_RELA=y +CONFIG_HAVE_IRQ_EXIT_ON_IRQ_STACK=y +CONFIG_ARCH_HAS_ELF_RANDOMIZE=y +CONFIG_HAVE_ARCH_MMAP_RND_BITS=y +CONFIG_HAVE_EXIT_THREAD=y +CONFIG_ARCH_MMAP_RND_BITS=28 +CONFIG_HAVE_ARCH_MMAP_RND_COMPAT_BITS=y +CONFIG_ARCH_MMAP_RND_COMPAT_BITS=8 +CONFIG_HAVE_ARCH_COMPAT_MMAP_BASES=y +CONFIG_HAVE_COPY_THREAD_TLS=y +CONFIG_HAVE_STACK_VALIDATION=y +CONFIG_HAVE_RELIABLE_STACKTRACE=y +CONFIG_OLD_SIGSUSPEND3=y +CONFIG_COMPAT_OLD_SIGACTION=y +CONFIG_COMPAT_32BIT_TIME=y +CONFIG_HAVE_ARCH_VMAP_STACK=y +CONFIG_VMAP_STACK=y +CONFIG_ARCH_HAS_STRICT_KERNEL_RWX=y +CONFIG_STRICT_KERNEL_RWX=y +CONFIG_ARCH_HAS_STRICT_MODULE_RWX=y +CONFIG_STRICT_MODULE_RWX=y +CONFIG_ARCH_HAS_REFCOUNT=y +# CONFIG_REFCOUNT_FULL is not set +CONFIG_HAVE_ARCH_PREL32_RELOCATIONS=y + +# +# GCOV-based kernel profiling +# +# CONFIG_GCOV_KERNEL is not set +CONFIG_ARCH_HAS_GCOV_PROFILE_ALL=y +CONFIG_PLUGIN_HOSTCC="g++" +CONFIG_HAVE_GCC_PLUGINS=y +# CONFIG_GCC_PLUGINS is not set +CONFIG_RT_MUTEXES=y +CONFIG_BASE_SMALL=0 +CONFIG_MODULES=y +CONFIG_MODULE_FORCE_LOAD=y +CONFIG_MODULE_UNLOAD=y +CONFIG_MODULE_FORCE_UNLOAD=y +# CONFIG_MODVERSIONS is not set +# CONFIG_MODULE_SRCVERSION_ALL is not set +# CONFIG_MODULE_SIG is not set +# CONFIG_MODULE_COMPRESS is not set +# CONFIG_TRIM_UNUSED_KSYMS is not set +CONFIG_MODULES_TREE_LOOKUP=y +CONFIG_BLOCK=y +CONFIG_BLK_SCSI_REQUEST=y +CONFIG_BLK_DEV_BSG=y +CONFIG_BLK_DEV_BSGLIB=y +CONFIG_BLK_DEV_INTEGRITY=y +# CONFIG_BLK_DEV_ZONED is not set +CONFIG_BLK_DEV_THROTTLING=y +# CONFIG_BLK_DEV_THROTTLING_LOW is not set +# CONFIG_BLK_CMDLINE_PARSER is not set +# CONFIG_BLK_WBT is not set +# CONFIG_BLK_CGROUP_IOLATENCY is not set +# CONFIG_BLK_DEBUG_FS is not set +# CONFIG_BLK_SED_OPAL is not set + +# +# Partition Types +# +CONFIG_PARTITION_ADVANCED=y +# CONFIG_ACORN_PARTITION is not set +# CONFIG_AIX_PARTITION is not set +# CONFIG_OSF_PARTITION is not set +# CONFIG_AMIGA_PARTITION is not set +# CONFIG_ATARI_PARTITION is not set +CONFIG_MAC_PARTITION=y +CONFIG_MSDOS_PARTITION=y +CONFIG_BSD_DISKLABEL=y +CONFIG_MINIX_SUBPARTITION=y +# CONFIG_SOLARIS_X86_PARTITION is not set +# CONFIG_UNIXWARE_DISKLABEL is not set +CONFIG_LDM_PARTITION=y +# CONFIG_LDM_DEBUG is not set +# CONFIG_SGI_PARTITION is not set +# CONFIG_ULTRIX_PARTITION is not set +# CONFIG_SUN_PARTITION is not set +CONFIG_KARMA_PARTITION=y +CONFIG_EFI_PARTITION=y +# CONFIG_SYSV68_PARTITION is not set +# CONFIG_CMDLINE_PARTITION is not set +CONFIG_BLOCK_COMPAT=y +CONFIG_BLK_MQ_PCI=y +CONFIG_BLK_MQ_VIRTIO=y +CONFIG_BLK_MQ_RDMA=y +CONFIG_BLK_PM=y + +# +# IO Schedulers +# +CONFIG_IOSCHED_NOOP=y +CONFIG_IOSCHED_DEADLINE=y +CONFIG_IOSCHED_CFQ=y +CONFIG_CFQ_GROUP_IOSCHED=y +# CONFIG_DEFAULT_DEADLINE is not set +CONFIG_DEFAULT_CFQ=y +# CONFIG_DEFAULT_NOOP is not set +CONFIG_DEFAULT_IOSCHED="cfq" +CONFIG_MQ_IOSCHED_DEADLINE=y +CONFIG_MQ_IOSCHED_KYBER=y +CONFIG_IOSCHED_BFQ=y +CONFIG_BFQ_GROUP_IOSCHED=y +CONFIG_PREEMPT_NOTIFIERS=y +CONFIG_PADATA=y +CONFIG_ASN1=y +CONFIG_INLINE_SPIN_UNLOCK_IRQ=y +CONFIG_INLINE_READ_UNLOCK=y +CONFIG_INLINE_READ_UNLOCK_IRQ=y +CONFIG_INLINE_WRITE_UNLOCK=y +CONFIG_INLINE_WRITE_UNLOCK_IRQ=y +CONFIG_ARCH_SUPPORTS_ATOMIC_RMW=y +CONFIG_MUTEX_SPIN_ON_OWNER=y +CONFIG_RWSEM_SPIN_ON_OWNER=y +CONFIG_LOCK_SPIN_ON_OWNER=y +CONFIG_ARCH_USE_QUEUED_SPINLOCKS=y +CONFIG_QUEUED_SPINLOCKS=y +CONFIG_ARCH_USE_QUEUED_RWLOCKS=y +CONFIG_QUEUED_RWLOCKS=y +CONFIG_ARCH_HAS_SYNC_CORE_BEFORE_USERMODE=y +CONFIG_ARCH_HAS_SYSCALL_WRAPPER=y +CONFIG_FREEZER=y + +# +# Executable file formats +# +CONFIG_BINFMT_ELF=y +CONFIG_COMPAT_BINFMT_ELF=y +CONFIG_ELFCORE=y +# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set +CONFIG_BINFMT_SCRIPT=y +CONFIG_BINFMT_MISC=m +CONFIG_COREDUMP=y + +# +# Memory Management options +# +CONFIG_SELECT_MEMORY_MODEL=y +CONFIG_SPARSEMEM_MANUAL=y +CONFIG_SPARSEMEM=y +CONFIG_HAVE_MEMORY_PRESENT=y +CONFIG_SPARSEMEM_EXTREME=y +CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y +CONFIG_SPARSEMEM_VMEMMAP=y +CONFIG_HAVE_MEMBLOCK_NODE_MAP=y +CONFIG_ARCH_DISCARD_MEMBLOCK=y +CONFIG_MEMORY_ISOLATION=y +# CONFIG_MEMORY_HOTPLUG is not set +CONFIG_SPLIT_PTLOCK_CPUS=4 +CONFIG_MEMORY_BALLOON=y +CONFIG_BALLOON_COMPACTION=y +CONFIG_COMPACTION=y +CONFIG_MIGRATION=y +CONFIG_PHYS_ADDR_T_64BIT=y +CONFIG_BOUNCE=y +CONFIG_VIRT_TO_BUS=y +CONFIG_MMU_NOTIFIER=y +CONFIG_KSM=y +CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 +CONFIG_ARCH_SUPPORTS_MEMORY_FAILURE=y +CONFIG_MEMORY_FAILURE=y +# CONFIG_HWPOISON_INJECT is not set +CONFIG_TRANSPARENT_HUGEPAGE=y +# CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS is not set +CONFIG_TRANSPARENT_HUGEPAGE_MADVISE=y +CONFIG_ARCH_WANTS_THP_SWAP=y +CONFIG_THP_SWAP=y +CONFIG_TRANSPARENT_HUGE_PAGECACHE=y +CONFIG_CLEANCACHE=y +CONFIG_FRONTSWAP=y +# CONFIG_CMA is not set +CONFIG_ZSWAP=y +CONFIG_ZPOOL=y +CONFIG_ZBUD=y +# CONFIG_Z3FOLD is not set +CONFIG_ZSMALLOC=y +# CONFIG_PGTABLE_MAPPING is not set +# CONFIG_ZSMALLOC_STAT is not set +CONFIG_GENERIC_EARLY_IOREMAP=y +# CONFIG_DEFERRED_STRUCT_PAGE_INIT is not set +# CONFIG_IDLE_PAGE_TRACKING is not set +CONFIG_ARCH_HAS_ZONE_DEVICE=y +CONFIG_FRAME_VECTOR=y +CONFIG_ARCH_USES_HIGH_VMA_FLAGS=y +CONFIG_ARCH_HAS_PKEYS=y +# CONFIG_PERCPU_STATS is not set +# CONFIG_GUP_BENCHMARK is not set +CONFIG_ARCH_HAS_PTE_SPECIAL=y +CONFIG_NET=y +CONFIG_COMPAT_NETLINK_MESSAGES=y +CONFIG_NET_INGRESS=y +CONFIG_NET_EGRESS=y + +# +# Networking options +# +CONFIG_PACKET=y +CONFIG_PACKET_DIAG=m +CONFIG_UNIX=y +CONFIG_UNIX_DIAG=m +# CONFIG_TLS is not set +CONFIG_XFRM=y +CONFIG_XFRM_ALGO=m +CONFIG_XFRM_USER=m +# CONFIG_XFRM_INTERFACE is not set +# CONFIG_XFRM_SUB_POLICY is not set +# CONFIG_XFRM_MIGRATE is not set +CONFIG_XFRM_STATISTICS=y +CONFIG_XFRM_IPCOMP=m +CONFIG_NET_KEY=m +# CONFIG_NET_KEY_MIGRATE is not set +# CONFIG_SMC is not set +CONFIG_INET=y +CONFIG_IP_MULTICAST=y +CONFIG_IP_ADVANCED_ROUTER=y +CONFIG_IP_FIB_TRIE_STATS=y +CONFIG_IP_MULTIPLE_TABLES=y +CONFIG_IP_ROUTE_MULTIPATH=y +CONFIG_IP_ROUTE_VERBOSE=y +CONFIG_IP_ROUTE_CLASSID=y +# CONFIG_IP_PNP is not set +CONFIG_NET_IPIP=m +CONFIG_NET_IPGRE_DEMUX=m +CONFIG_NET_IP_TUNNEL=m +CONFIG_NET_IPGRE=m +CONFIG_NET_IPGRE_BROADCAST=y +CONFIG_IP_MROUTE_COMMON=y +CONFIG_IP_MROUTE=y +# CONFIG_IP_MROUTE_MULTIPLE_TABLES is not set +CONFIG_IP_PIMSM_V1=y +CONFIG_IP_PIMSM_V2=y +CONFIG_SYN_COOKIES=y +CONFIG_NET_IPVTI=m +CONFIG_NET_UDP_TUNNEL=m +CONFIG_NET_FOU=m +CONFIG_NET_FOU_IP_TUNNELS=y +CONFIG_INET_AH=m +CONFIG_INET_ESP=m +# CONFIG_INET_ESP_OFFLOAD is not set +CONFIG_INET_IPCOMP=m +CONFIG_INET_XFRM_TUNNEL=m +CONFIG_INET_TUNNEL=m +CONFIG_INET_XFRM_MODE_TRANSPORT=m +CONFIG_INET_XFRM_MODE_TUNNEL=m +CONFIG_INET_XFRM_MODE_BEET=m +CONFIG_INET_DIAG=m +CONFIG_INET_TCP_DIAG=m +CONFIG_INET_UDP_DIAG=m +# CONFIG_INET_RAW_DIAG is not set +CONFIG_INET_DIAG_DESTROY=y +CONFIG_TCP_CONG_ADVANCED=y +CONFIG_TCP_CONG_BIC=m +CONFIG_TCP_CONG_CUBIC=m +CONFIG_TCP_CONG_WESTWOOD=y +CONFIG_TCP_CONG_HTCP=m +CONFIG_TCP_CONG_HSTCP=m +CONFIG_TCP_CONG_HYBLA=m +CONFIG_TCP_CONG_VEGAS=m +CONFIG_TCP_CONG_NV=m +CONFIG_TCP_CONG_SCALABLE=m +CONFIG_TCP_CONG_LP=m +CONFIG_TCP_CONG_VENO=m +CONFIG_TCP_CONG_YEAH=m +CONFIG_TCP_CONG_ILLINOIS=m +CONFIG_TCP_CONG_DCTCP=m +CONFIG_TCP_CONG_CDG=m +CONFIG_TCP_CONG_BBR=m +CONFIG_DEFAULT_WESTWOOD=y +# CONFIG_DEFAULT_RENO is not set +CONFIG_DEFAULT_TCP_CONG="westwood" +CONFIG_TCP_MD5SIG=y +CONFIG_IPV6=y +CONFIG_IPV6_ROUTER_PREF=y +CONFIG_IPV6_ROUTE_INFO=y +# CONFIG_IPV6_OPTIMISTIC_DAD is not set +CONFIG_INET6_AH=m +CONFIG_INET6_ESP=m +# CONFIG_INET6_ESP_OFFLOAD is not set +CONFIG_INET6_IPCOMP=m +CONFIG_IPV6_MIP6=m +CONFIG_IPV6_ILA=m +CONFIG_INET6_XFRM_TUNNEL=m +CONFIG_INET6_TUNNEL=m +CONFIG_INET6_XFRM_MODE_TRANSPORT=m +CONFIG_INET6_XFRM_MODE_TUNNEL=m +CONFIG_INET6_XFRM_MODE_BEET=m +CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m +CONFIG_IPV6_VTI=m +CONFIG_IPV6_SIT=m +CONFIG_IPV6_SIT_6RD=y +CONFIG_IPV6_NDISC_NODETYPE=y +CONFIG_IPV6_TUNNEL=m +CONFIG_IPV6_GRE=m +CONFIG_IPV6_FOU=m +CONFIG_IPV6_FOU_TUNNEL=m +CONFIG_IPV6_MULTIPLE_TABLES=y +CONFIG_IPV6_SUBTREES=y +CONFIG_IPV6_MROUTE=y +CONFIG_IPV6_MROUTE_MULTIPLE_TABLES=y +CONFIG_IPV6_PIMSM_V2=y +# CONFIG_IPV6_SEG6_LWTUNNEL is not set +# CONFIG_IPV6_SEG6_HMAC is not set +CONFIG_NETLABEL=y +CONFIG_NETWORK_SECMARK=y +CONFIG_NET_PTP_CLASSIFY=y +# CONFIG_NETWORK_PHY_TIMESTAMPING is not set +CONFIG_NETFILTER=y +CONFIG_NETFILTER_ADVANCED=y +CONFIG_BRIDGE_NETFILTER=m + +# +# Core Netfilter Configuration +# +CONFIG_NETFILTER_INGRESS=y +CONFIG_NETFILTER_NETLINK=m +CONFIG_NETFILTER_FAMILY_BRIDGE=y +CONFIG_NETFILTER_FAMILY_ARP=y +CONFIG_NETFILTER_NETLINK_ACCT=m +CONFIG_NETFILTER_NETLINK_QUEUE=m +CONFIG_NETFILTER_NETLINK_LOG=m +CONFIG_NETFILTER_NETLINK_OSF=m +CONFIG_NF_CONNTRACK=m +CONFIG_NF_LOG_COMMON=m +# CONFIG_NF_LOG_NETDEV is not set +CONFIG_NETFILTER_CONNCOUNT=m +CONFIG_NF_CONNTRACK_MARK=y +CONFIG_NF_CONNTRACK_SECMARK=y +CONFIG_NF_CONNTRACK_ZONES=y +# CONFIG_NF_CONNTRACK_PROCFS is not set +CONFIG_NF_CONNTRACK_EVENTS=y +CONFIG_NF_CONNTRACK_TIMEOUT=y +CONFIG_NF_CONNTRACK_TIMESTAMP=y +CONFIG_NF_CONNTRACK_LABELS=y +CONFIG_NF_CT_PROTO_DCCP=y +CONFIG_NF_CT_PROTO_GRE=m +CONFIG_NF_CT_PROTO_SCTP=y +CONFIG_NF_CT_PROTO_UDPLITE=y +CONFIG_NF_CONNTRACK_AMANDA=m +CONFIG_NF_CONNTRACK_FTP=m +CONFIG_NF_CONNTRACK_H323=m +CONFIG_NF_CONNTRACK_IRC=m +CONFIG_NF_CONNTRACK_BROADCAST=m +CONFIG_NF_CONNTRACK_NETBIOS_NS=m +CONFIG_NF_CONNTRACK_SNMP=m +CONFIG_NF_CONNTRACK_PPTP=m +CONFIG_NF_CONNTRACK_SANE=m +CONFIG_NF_CONNTRACK_SIP=m +CONFIG_NF_CONNTRACK_TFTP=m +CONFIG_NF_CT_NETLINK=m +CONFIG_NF_CT_NETLINK_TIMEOUT=m +# CONFIG_NETFILTER_NETLINK_GLUE_CT is not set +CONFIG_NF_NAT=m +CONFIG_NF_NAT_NEEDED=y +CONFIG_NF_NAT_PROTO_DCCP=y +CONFIG_NF_NAT_PROTO_UDPLITE=y +CONFIG_NF_NAT_PROTO_SCTP=y +CONFIG_NF_NAT_AMANDA=m +CONFIG_NF_NAT_FTP=m +CONFIG_NF_NAT_IRC=m +CONFIG_NF_NAT_SIP=m +CONFIG_NF_NAT_TFTP=m +CONFIG_NF_NAT_REDIRECT=y +CONFIG_NETFILTER_SYNPROXY=m +CONFIG_NF_TABLES=m +# CONFIG_NF_TABLES_SET is not set +# CONFIG_NF_TABLES_INET is not set +# CONFIG_NF_TABLES_NETDEV is not set +CONFIG_NFT_NUMGEN=m +CONFIG_NFT_CT=m +CONFIG_NFT_COUNTER=m +# CONFIG_NFT_CONNLIMIT is not set +CONFIG_NFT_LOG=m +CONFIG_NFT_LIMIT=m +CONFIG_NFT_MASQ=m +CONFIG_NFT_REDIR=m +CONFIG_NFT_NAT=m +# CONFIG_NFT_TUNNEL is not set +# CONFIG_NFT_OBJREF is not set +CONFIG_NFT_QUEUE=m +CONFIG_NFT_QUOTA=m +CONFIG_NFT_REJECT=m +CONFIG_NFT_COMPAT=m +CONFIG_NFT_HASH=m +# CONFIG_NFT_XFRM is not set +# CONFIG_NFT_SOCKET is not set +# CONFIG_NFT_OSF is not set +# CONFIG_NFT_TPROXY is not set +# CONFIG_NF_FLOW_TABLE is not set +CONFIG_NETFILTER_XTABLES=m + +# +# Xtables combined modules +# +CONFIG_NETFILTER_XT_MARK=m +CONFIG_NETFILTER_XT_CONNMARK=m +CONFIG_NETFILTER_XT_SET=m + +# +# Xtables targets +# +CONFIG_NETFILTER_XT_TARGET_AUDIT=m +CONFIG_NETFILTER_XT_TARGET_CHECKSUM=m +CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m +CONFIG_NETFILTER_XT_TARGET_CONNMARK=m +CONFIG_NETFILTER_XT_TARGET_CONNSECMARK=m +CONFIG_NETFILTER_XT_TARGET_CT=m +CONFIG_NETFILTER_XT_TARGET_DSCP=m +CONFIG_NETFILTER_XT_TARGET_HL=m +CONFIG_NETFILTER_XT_TARGET_HMARK=m +CONFIG_NETFILTER_XT_TARGET_IDLETIMER=m +CONFIG_NETFILTER_XT_TARGET_LED=m +CONFIG_NETFILTER_XT_TARGET_LOG=m +CONFIG_NETFILTER_XT_TARGET_MARK=m +CONFIG_NETFILTER_XT_NAT=m +CONFIG_NETFILTER_XT_TARGET_NETMAP=m +CONFIG_NETFILTER_XT_TARGET_NFLOG=m +CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m +CONFIG_NETFILTER_XT_TARGET_NOTRACK=m +CONFIG_NETFILTER_XT_TARGET_RATEEST=m +CONFIG_NETFILTER_XT_TARGET_REDIRECT=m +CONFIG_NETFILTER_XT_TARGET_TEE=m +CONFIG_NETFILTER_XT_TARGET_TPROXY=m +CONFIG_NETFILTER_XT_TARGET_TRACE=m +CONFIG_NETFILTER_XT_TARGET_SECMARK=m +CONFIG_NETFILTER_XT_TARGET_TCPMSS=m +CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m + +# +# Xtables matches +# +CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m +CONFIG_NETFILTER_XT_MATCH_BPF=m +CONFIG_NETFILTER_XT_MATCH_CGROUP=m +CONFIG_NETFILTER_XT_MATCH_CLUSTER=m +CONFIG_NETFILTER_XT_MATCH_COMMENT=m +CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m +CONFIG_NETFILTER_XT_MATCH_CONNLABEL=m +CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m +CONFIG_NETFILTER_XT_MATCH_CONNMARK=m +CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m +CONFIG_NETFILTER_XT_MATCH_CPU=m +CONFIG_NETFILTER_XT_MATCH_DCCP=m +CONFIG_NETFILTER_XT_MATCH_DEVGROUP=m +CONFIG_NETFILTER_XT_MATCH_DSCP=m +CONFIG_NETFILTER_XT_MATCH_ECN=m +CONFIG_NETFILTER_XT_MATCH_ESP=m +CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m +CONFIG_NETFILTER_XT_MATCH_HELPER=m +CONFIG_NETFILTER_XT_MATCH_HL=m +CONFIG_NETFILTER_XT_MATCH_IPCOMP=m +CONFIG_NETFILTER_XT_MATCH_IPRANGE=m +CONFIG_NETFILTER_XT_MATCH_L2TP=m +CONFIG_NETFILTER_XT_MATCH_LENGTH=m +CONFIG_NETFILTER_XT_MATCH_LIMIT=m +CONFIG_NETFILTER_XT_MATCH_MAC=m +CONFIG_NETFILTER_XT_MATCH_MARK=m +CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m +CONFIG_NETFILTER_XT_MATCH_NFACCT=m +CONFIG_NETFILTER_XT_MATCH_OSF=m +CONFIG_NETFILTER_XT_MATCH_OWNER=m +CONFIG_NETFILTER_XT_MATCH_POLICY=m +CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m +CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m +CONFIG_NETFILTER_XT_MATCH_QUOTA=m +CONFIG_NETFILTER_XT_MATCH_RATEEST=m +CONFIG_NETFILTER_XT_MATCH_REALM=m +CONFIG_NETFILTER_XT_MATCH_RECENT=m +CONFIG_NETFILTER_XT_MATCH_SCTP=m +# CONFIG_NETFILTER_XT_MATCH_SOCKET is not set +CONFIG_NETFILTER_XT_MATCH_STATE=m +CONFIG_NETFILTER_XT_MATCH_STATISTIC=m +CONFIG_NETFILTER_XT_MATCH_STRING=m +CONFIG_NETFILTER_XT_MATCH_TCPMSS=m +CONFIG_NETFILTER_XT_MATCH_TIME=m +CONFIG_NETFILTER_XT_MATCH_U32=m +CONFIG_IP_SET=m +CONFIG_IP_SET_MAX=256 +CONFIG_IP_SET_BITMAP_IP=m +CONFIG_IP_SET_BITMAP_IPMAC=m +CONFIG_IP_SET_BITMAP_PORT=m +CONFIG_IP_SET_HASH_IP=m +CONFIG_IP_SET_HASH_IPMARK=m +CONFIG_IP_SET_HASH_IPPORT=m +CONFIG_IP_SET_HASH_IPPORTIP=m +CONFIG_IP_SET_HASH_IPPORTNET=m +# CONFIG_IP_SET_HASH_IPMAC is not set +CONFIG_IP_SET_HASH_MAC=m +CONFIG_IP_SET_HASH_NETPORTNET=m +CONFIG_IP_SET_HASH_NET=m +CONFIG_IP_SET_HASH_NETNET=m +CONFIG_IP_SET_HASH_NETPORT=m +CONFIG_IP_SET_HASH_NETIFACE=m +CONFIG_IP_SET_LIST_SET=m +# CONFIG_IP_VS is not set + +# +# IP: Netfilter Configuration +# +CONFIG_NF_DEFRAG_IPV4=m +# CONFIG_NF_SOCKET_IPV4 is not set +CONFIG_NF_TPROXY_IPV4=m +# CONFIG_NF_TABLES_IPV4 is not set +# CONFIG_NF_TABLES_ARP is not set +CONFIG_NF_DUP_IPV4=m +CONFIG_NF_LOG_ARP=m +CONFIG_NF_LOG_IPV4=m +CONFIG_NF_REJECT_IPV4=m +CONFIG_NF_NAT_IPV4=m +CONFIG_NF_NAT_MASQUERADE_IPV4=y +CONFIG_NF_NAT_SNMP_BASIC=m +CONFIG_NF_NAT_PROTO_GRE=m +CONFIG_NF_NAT_PPTP=m +CONFIG_NF_NAT_H323=m +CONFIG_IP_NF_IPTABLES=m +CONFIG_IP_NF_MATCH_AH=m +CONFIG_IP_NF_MATCH_ECN=m +CONFIG_IP_NF_MATCH_RPFILTER=m +CONFIG_IP_NF_MATCH_TTL=m +CONFIG_IP_NF_FILTER=m +CONFIG_IP_NF_TARGET_REJECT=m +CONFIG_IP_NF_TARGET_SYNPROXY=m +CONFIG_IP_NF_NAT=m +CONFIG_IP_NF_TARGET_MASQUERADE=m +CONFIG_IP_NF_TARGET_NETMAP=m +CONFIG_IP_NF_TARGET_REDIRECT=m +CONFIG_IP_NF_MANGLE=m +CONFIG_IP_NF_TARGET_CLUSTERIP=m +CONFIG_IP_NF_TARGET_ECN=m +CONFIG_IP_NF_TARGET_TTL=m +CONFIG_IP_NF_RAW=m +CONFIG_IP_NF_SECURITY=m +CONFIG_IP_NF_ARPTABLES=m +CONFIG_IP_NF_ARPFILTER=m +CONFIG_IP_NF_ARP_MANGLE=m + +# +# IPv6: Netfilter Configuration +# +# CONFIG_NF_SOCKET_IPV6 is not set +CONFIG_NF_TPROXY_IPV6=m +# CONFIG_NF_TABLES_IPV6 is not set +CONFIG_NF_DUP_IPV6=m +CONFIG_NF_REJECT_IPV6=m +CONFIG_NF_LOG_IPV6=m +CONFIG_NF_NAT_IPV6=m +CONFIG_NF_NAT_MASQUERADE_IPV6=y +CONFIG_IP6_NF_IPTABLES=m +CONFIG_IP6_NF_MATCH_AH=m +CONFIG_IP6_NF_MATCH_EUI64=m +CONFIG_IP6_NF_MATCH_FRAG=m +CONFIG_IP6_NF_MATCH_OPTS=m +CONFIG_IP6_NF_MATCH_HL=m +CONFIG_IP6_NF_MATCH_IPV6HEADER=m +CONFIG_IP6_NF_MATCH_MH=m +CONFIG_IP6_NF_MATCH_RPFILTER=m +CONFIG_IP6_NF_MATCH_RT=m +# CONFIG_IP6_NF_MATCH_SRH is not set +CONFIG_IP6_NF_TARGET_HL=m +CONFIG_IP6_NF_FILTER=m +CONFIG_IP6_NF_TARGET_REJECT=m +CONFIG_IP6_NF_TARGET_SYNPROXY=m +CONFIG_IP6_NF_MANGLE=m +CONFIG_IP6_NF_RAW=m +CONFIG_IP6_NF_SECURITY=m +CONFIG_IP6_NF_NAT=m +CONFIG_IP6_NF_TARGET_MASQUERADE=m +CONFIG_IP6_NF_TARGET_NPT=m +CONFIG_NF_DEFRAG_IPV6=m +# CONFIG_NF_TABLES_BRIDGE is not set +CONFIG_BRIDGE_NF_EBTABLES=m +CONFIG_BRIDGE_EBT_BROUTE=m +CONFIG_BRIDGE_EBT_T_FILTER=m +CONFIG_BRIDGE_EBT_T_NAT=m +CONFIG_BRIDGE_EBT_802_3=m +CONFIG_BRIDGE_EBT_AMONG=m +CONFIG_BRIDGE_EBT_ARP=m +CONFIG_BRIDGE_EBT_IP=m +CONFIG_BRIDGE_EBT_IP6=m +CONFIG_BRIDGE_EBT_LIMIT=m +CONFIG_BRIDGE_EBT_MARK=m +CONFIG_BRIDGE_EBT_PKTTYPE=m +CONFIG_BRIDGE_EBT_STP=m +CONFIG_BRIDGE_EBT_VLAN=m +CONFIG_BRIDGE_EBT_ARPREPLY=m +CONFIG_BRIDGE_EBT_DNAT=m +CONFIG_BRIDGE_EBT_MARK_T=m +CONFIG_BRIDGE_EBT_REDIRECT=m +CONFIG_BRIDGE_EBT_SNAT=m +CONFIG_BRIDGE_EBT_LOG=m +CONFIG_BRIDGE_EBT_NFLOG=m +# CONFIG_BPFILTER is not set +CONFIG_IP_DCCP=m +CONFIG_INET_DCCP_DIAG=m + +# +# DCCP CCIDs Configuration +# +# CONFIG_IP_DCCP_CCID2_DEBUG is not set +CONFIG_IP_DCCP_CCID3=y +# CONFIG_IP_DCCP_CCID3_DEBUG is not set +CONFIG_IP_DCCP_TFRC_LIB=y + +# +# DCCP Kernel Hacking +# +# CONFIG_IP_DCCP_DEBUG is not set +CONFIG_IP_SCTP=m +# CONFIG_SCTP_DBG_OBJCNT is not set +CONFIG_SCTP_DEFAULT_COOKIE_HMAC_MD5=y +# CONFIG_SCTP_DEFAULT_COOKIE_HMAC_SHA1 is not set +# CONFIG_SCTP_DEFAULT_COOKIE_HMAC_NONE is not set +CONFIG_SCTP_COOKIE_HMAC_MD5=y +CONFIG_SCTP_COOKIE_HMAC_SHA1=y +CONFIG_INET_SCTP_DIAG=m +CONFIG_RDS=m +CONFIG_RDS_RDMA=m +CONFIG_RDS_TCP=m +# CONFIG_RDS_DEBUG is not set +CONFIG_TIPC=m +CONFIG_TIPC_MEDIA_IB=y +CONFIG_TIPC_MEDIA_UDP=y +CONFIG_TIPC_DIAG=m +CONFIG_ATM=m +CONFIG_ATM_CLIP=m +# CONFIG_ATM_CLIP_NO_ICMP is not set +CONFIG_ATM_LANE=m +CONFIG_ATM_MPOA=m +CONFIG_ATM_BR2684=m +CONFIG_ATM_BR2684_IPFILTER=y +CONFIG_L2TP=m +CONFIG_L2TP_DEBUGFS=m +# CONFIG_L2TP_V3 is not set +CONFIG_STP=m +CONFIG_GARP=m +CONFIG_MRP=m +CONFIG_BRIDGE=m +CONFIG_BRIDGE_IGMP_SNOOPING=y +CONFIG_BRIDGE_VLAN_FILTERING=y +CONFIG_HAVE_NET_DSA=y +# CONFIG_NET_DSA is not set +CONFIG_VLAN_8021Q=m +CONFIG_VLAN_8021Q_GVRP=y +CONFIG_VLAN_8021Q_MVRP=y +# CONFIG_DECNET is not set +CONFIG_LLC=m +# CONFIG_LLC2 is not set +CONFIG_ATALK=m +CONFIG_DEV_APPLETALK=m +CONFIG_IPDDP=m +CONFIG_IPDDP_ENCAP=y +# CONFIG_X25 is not set +# CONFIG_LAPB is not set +# CONFIG_PHONET is not set +CONFIG_6LOWPAN=m +# CONFIG_6LOWPAN_DEBUGFS is not set +CONFIG_6LOWPAN_NHC=m +CONFIG_6LOWPAN_NHC_DEST=m +CONFIG_6LOWPAN_NHC_FRAGMENT=m +CONFIG_6LOWPAN_NHC_HOP=m +CONFIG_6LOWPAN_NHC_IPV6=m +CONFIG_6LOWPAN_NHC_MOBILITY=m +CONFIG_6LOWPAN_NHC_ROUTING=m +CONFIG_6LOWPAN_NHC_UDP=m +CONFIG_6LOWPAN_GHC_EXT_HDR_HOP=m +CONFIG_6LOWPAN_GHC_UDP=m +CONFIG_6LOWPAN_GHC_ICMPV6=m +CONFIG_6LOWPAN_GHC_EXT_HDR_DEST=m +CONFIG_6LOWPAN_GHC_EXT_HDR_FRAG=m +CONFIG_6LOWPAN_GHC_EXT_HDR_ROUTE=m +CONFIG_IEEE802154=m +# CONFIG_IEEE802154_NL802154_EXPERIMENTAL is not set +CONFIG_IEEE802154_SOCKET=m +CONFIG_IEEE802154_6LOWPAN=m +CONFIG_MAC802154=m +CONFIG_NET_SCHED=y + +# +# Queueing/Scheduling +# +CONFIG_NET_SCH_CBQ=m +CONFIG_NET_SCH_HTB=m +CONFIG_NET_SCH_HFSC=m +CONFIG_NET_SCH_ATM=m +CONFIG_NET_SCH_PRIO=m +CONFIG_NET_SCH_MULTIQ=m +CONFIG_NET_SCH_RED=m +CONFIG_NET_SCH_SFB=m +CONFIG_NET_SCH_SFQ=m +CONFIG_NET_SCH_TEQL=m +CONFIG_NET_SCH_TBF=m +# CONFIG_NET_SCH_CBS is not set +# CONFIG_NET_SCH_ETF is not set +# CONFIG_NET_SCH_TAPRIO is not set +CONFIG_NET_SCH_GRED=m +CONFIG_NET_SCH_DSMARK=m +CONFIG_NET_SCH_NETEM=m +CONFIG_NET_SCH_DRR=m +CONFIG_NET_SCH_MQPRIO=m +# CONFIG_NET_SCH_SKBPRIO is not set +CONFIG_NET_SCH_CHOKE=m +CONFIG_NET_SCH_QFQ=m +CONFIG_NET_SCH_CODEL=m +CONFIG_NET_SCH_FQ_CODEL=m +# CONFIG_NET_SCH_CAKE is not set +CONFIG_NET_SCH_FQ=m +CONFIG_NET_SCH_HHF=m +CONFIG_NET_SCH_PIE=m +CONFIG_NET_SCH_INGRESS=m +CONFIG_NET_SCH_PLUG=m +# CONFIG_NET_SCH_DEFAULT is not set + +# +# Classification +# +CONFIG_NET_CLS=y +CONFIG_NET_CLS_BASIC=m +CONFIG_NET_CLS_TCINDEX=m +CONFIG_NET_CLS_ROUTE4=m +CONFIG_NET_CLS_FW=m +CONFIG_NET_CLS_U32=m +# CONFIG_CLS_U32_PERF is not set +# CONFIG_CLS_U32_MARK is not set +CONFIG_NET_CLS_RSVP=m +CONFIG_NET_CLS_RSVP6=m +CONFIG_NET_CLS_FLOW=m +CONFIG_NET_CLS_CGROUP=y +CONFIG_NET_CLS_BPF=m +CONFIG_NET_CLS_FLOWER=m +# CONFIG_NET_CLS_MATCHALL is not set +CONFIG_NET_EMATCH=y +CONFIG_NET_EMATCH_STACK=32 +CONFIG_NET_EMATCH_CMP=m +CONFIG_NET_EMATCH_NBYTE=m +CONFIG_NET_EMATCH_U32=m +CONFIG_NET_EMATCH_META=m +CONFIG_NET_EMATCH_TEXT=m +CONFIG_NET_EMATCH_IPSET=m +# CONFIG_NET_EMATCH_IPT is not set +CONFIG_NET_CLS_ACT=y +CONFIG_NET_ACT_POLICE=y +CONFIG_NET_ACT_GACT=m +CONFIG_GACT_PROB=y +CONFIG_NET_ACT_MIRRED=m +CONFIG_NET_ACT_SAMPLE=m +CONFIG_NET_ACT_IPT=m +CONFIG_NET_ACT_NAT=m +CONFIG_NET_ACT_PEDIT=m +CONFIG_NET_ACT_SIMP=m +CONFIG_NET_ACT_SKBEDIT=m +CONFIG_NET_ACT_CSUM=m +CONFIG_NET_ACT_VLAN=m +CONFIG_NET_ACT_BPF=m +CONFIG_NET_ACT_CONNMARK=m +# CONFIG_NET_ACT_SKBMOD is not set +# CONFIG_NET_ACT_IFE is not set +# CONFIG_NET_ACT_TUNNEL_KEY is not set +# CONFIG_NET_CLS_IND is not set +CONFIG_NET_SCH_FIFO=y +CONFIG_DCB=y +CONFIG_DNS_RESOLVER=y +# CONFIG_BATMAN_ADV is not set +CONFIG_OPENVSWITCH=m +CONFIG_OPENVSWITCH_GRE=m +CONFIG_OPENVSWITCH_VXLAN=m +CONFIG_VSOCKETS=m +CONFIG_VSOCKETS_DIAG=m +CONFIG_VMWARE_VMCI_VSOCKETS=m +# CONFIG_VIRTIO_VSOCKETS is not set +CONFIG_NETLINK_DIAG=m +CONFIG_MPLS=y +CONFIG_NET_MPLS_GSO=y +# CONFIG_MPLS_ROUTING is not set +CONFIG_NET_NSH=m +CONFIG_HSR=m +# CONFIG_NET_SWITCHDEV is not set +# CONFIG_NET_L3_MASTER_DEV is not set +# CONFIG_NET_NCSI is not set +CONFIG_RPS=y +CONFIG_RFS_ACCEL=y +CONFIG_XPS=y +CONFIG_CGROUP_NET_PRIO=y +CONFIG_CGROUP_NET_CLASSID=y +CONFIG_NET_RX_BUSY_POLL=y +CONFIG_BQL=y +CONFIG_BPF_JIT=y +CONFIG_NET_FLOW_LIMIT=y + +# +# Network testing +# +CONFIG_NET_PKTGEN=m +CONFIG_HAMRADIO=y + +# +# Packet Radio protocols +# +CONFIG_AX25=m +CONFIG_AX25_DAMA_SLAVE=y +CONFIG_NETROM=m +CONFIG_ROSE=m + +# +# AX.25 network device drivers +# +CONFIG_MKISS=m +CONFIG_6PACK=m +CONFIG_BPQETHER=m +CONFIG_BAYCOM_SER_FDX=m +CONFIG_BAYCOM_SER_HDX=m +CONFIG_BAYCOM_PAR=m +CONFIG_YAM=m +# CONFIG_CAN is not set +CONFIG_BT=m +CONFIG_BT_BREDR=y +CONFIG_BT_RFCOMM=m +CONFIG_BT_RFCOMM_TTY=y +CONFIG_BT_BNEP=m +CONFIG_BT_BNEP_MC_FILTER=y +CONFIG_BT_BNEP_PROTO_FILTER=y +CONFIG_BT_HIDP=m +CONFIG_BT_HS=y +CONFIG_BT_LE=y +CONFIG_BT_6LOWPAN=m +CONFIG_BT_LEDS=y +# CONFIG_BT_SELFTEST is not set +# CONFIG_BT_DEBUGFS is not set + +# +# Bluetooth device drivers +# +CONFIG_BT_INTEL=m +CONFIG_BT_BCM=m +CONFIG_BT_RTL=m +CONFIG_BT_HCIBTUSB=m +# CONFIG_BT_HCIBTUSB_AUTOSUSPEND is not set +CONFIG_BT_HCIBTUSB_BCM=y +CONFIG_BT_HCIBTUSB_RTL=y +CONFIG_BT_HCIBTSDIO=m +CONFIG_BT_HCIUART=m +CONFIG_BT_HCIUART_H4=y +CONFIG_BT_HCIUART_BCSP=y +CONFIG_BT_HCIUART_ATH3K=y +CONFIG_BT_HCIUART_INTEL=y +CONFIG_BT_HCIUART_AG6XX=y +CONFIG_BT_HCIUART_MRVL=y +CONFIG_BT_HCIBCM203X=m +CONFIG_BT_HCIBPA10X=m +CONFIG_BT_HCIBFUSB=m +CONFIG_BT_HCIDTL1=m +CONFIG_BT_HCIBT3C=m +CONFIG_BT_HCIBLUECARD=m +CONFIG_BT_HCIVHCI=m +CONFIG_BT_MRVL=m +CONFIG_BT_MRVL_SDIO=m +CONFIG_BT_ATH3K=m +CONFIG_BT_HCIRSI=m +CONFIG_AF_RXRPC=m +# CONFIG_AF_RXRPC_IPV6 is not set +# CONFIG_AF_RXRPC_INJECT_LOSS is not set +# CONFIG_AF_RXRPC_DEBUG is not set +# CONFIG_RXKAD is not set +# CONFIG_AF_KCM is not set +CONFIG_FIB_RULES=y +CONFIG_WIRELESS=y +CONFIG_WIRELESS_EXT=y +CONFIG_WEXT_CORE=y +CONFIG_WEXT_PROC=y +CONFIG_WEXT_SPY=y +CONFIG_WEXT_PRIV=y +CONFIG_CFG80211=m +# CONFIG_NL80211_TESTMODE is not set +# CONFIG_CFG80211_DEVELOPER_WARNINGS is not set +CONFIG_CFG80211_REQUIRE_SIGNED_REGDB=y +CONFIG_CFG80211_USE_KERNEL_REGDB_KEYS=y +CONFIG_CFG80211_DEFAULT_PS=y +# CONFIG_CFG80211_DEBUGFS is not set +CONFIG_CFG80211_CRDA_SUPPORT=y +CONFIG_CFG80211_WEXT=y +CONFIG_CFG80211_WEXT_EXPORT=y +CONFIG_LIB80211=m +CONFIG_LIB80211_CRYPT_WEP=m +CONFIG_LIB80211_CRYPT_CCMP=m +CONFIG_LIB80211_CRYPT_TKIP=m +# CONFIG_LIB80211_DEBUG is not set +CONFIG_MAC80211=m +CONFIG_MAC80211_HAS_RC=y +CONFIG_MAC80211_RC_MINSTREL=y +CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y +CONFIG_MAC80211_RC_DEFAULT="minstrel_ht" +CONFIG_MAC80211_MESH=y +CONFIG_MAC80211_LEDS=y +# CONFIG_MAC80211_DEBUGFS is not set +# CONFIG_MAC80211_MESSAGE_TRACING is not set +# CONFIG_MAC80211_DEBUG_MENU is not set +CONFIG_MAC80211_STA_HASH_MAX_SIZE=0 +CONFIG_WIMAX=m +CONFIG_WIMAX_DEBUG_LEVEL=8 +CONFIG_RFKILL=y +CONFIG_RFKILL_LEDS=y +CONFIG_RFKILL_INPUT=y +CONFIG_RFKILL_GPIO=m +CONFIG_NET_9P=m +CONFIG_NET_9P_VIRTIO=m +CONFIG_NET_9P_RDMA=m +# CONFIG_NET_9P_DEBUG is not set +# CONFIG_CAIF is not set +CONFIG_CEPH_LIB=m +# CONFIG_CEPH_LIB_PRETTYDEBUG is not set +# CONFIG_CEPH_LIB_USE_DNS_RESOLVER is not set +# CONFIG_NFC is not set +CONFIG_PSAMPLE=m +# CONFIG_NET_IFE is not set +CONFIG_LWTUNNEL=y +CONFIG_LWTUNNEL_BPF=y +CONFIG_DST_CACHE=y +CONFIG_GRO_CELLS=y +# CONFIG_NET_DEVLINK is not set +CONFIG_MAY_USE_DEVLINK=y +CONFIG_FAILOVER=m +CONFIG_HAVE_EBPF_JIT=y + +# +# Device Drivers +# + +# +# Generic Driver Options +# +CONFIG_UEVENT_HELPER=y +CONFIG_UEVENT_HELPER_PATH="" +CONFIG_DEVTMPFS=y +# CONFIG_DEVTMPFS_MOUNT is not set +# CONFIG_STANDALONE is not set +CONFIG_PREVENT_FIRMWARE_BUILD=y + +# +# Firmware loader +# +CONFIG_FW_LOADER=y +CONFIG_EXTRA_FIRMWARE="" +CONFIG_FW_LOADER_USER_HELPER=y +CONFIG_FW_LOADER_USER_HELPER_FALLBACK=y +CONFIG_WANT_DEV_COREDUMP=y +CONFIG_ALLOW_DEV_COREDUMP=y +CONFIG_DEV_COREDUMP=y +# CONFIG_DEBUG_DRIVER is not set +# CONFIG_DEBUG_DEVRES is not set +# CONFIG_DEBUG_TEST_DRIVER_REMOVE is not set +# CONFIG_TEST_ASYNC_DRIVER_PROBE is not set +CONFIG_GENERIC_CPU_AUTOPROBE=y +CONFIG_GENERIC_CPU_VULNERABILITIES=y +CONFIG_REGMAP=y +CONFIG_REGMAP_I2C=y +CONFIG_DMA_SHARED_BUFFER=y +# CONFIG_DMA_FENCE_TRACE is not set + +# +# Bus devices +# +CONFIG_CONNECTOR=y +CONFIG_PROC_EVENTS=y +# CONFIG_GNSS is not set +CONFIG_MTD=m +# CONFIG_MTD_TESTS is not set +# CONFIG_MTD_REDBOOT_PARTS is not set +# CONFIG_MTD_CMDLINE_PARTS is not set +# CONFIG_MTD_AR7_PARTS is not set + +# +# Partition parsers +# + +# +# User Modules And Translation Layers +# +CONFIG_MTD_BLKDEVS=m +CONFIG_MTD_BLOCK=m +# CONFIG_MTD_BLOCK_RO is not set +# CONFIG_FTL is not set +# CONFIG_NFTL is not set +# CONFIG_INFTL is not set +# CONFIG_RFD_FTL is not set +# CONFIG_SSFDC is not set +# CONFIG_SM_FTL is not set +# CONFIG_MTD_OOPS is not set +# CONFIG_MTD_SWAP is not set +# CONFIG_MTD_PARTITIONED_MASTER is not set + +# +# RAM/ROM/Flash chip drivers +# +# CONFIG_MTD_CFI is not set +# CONFIG_MTD_JEDECPROBE is not set +CONFIG_MTD_MAP_BANK_WIDTH_1=y +CONFIG_MTD_MAP_BANK_WIDTH_2=y +CONFIG_MTD_MAP_BANK_WIDTH_4=y +CONFIG_MTD_CFI_I1=y +CONFIG_MTD_CFI_I2=y +# CONFIG_MTD_RAM is not set +# CONFIG_MTD_ROM is not set +# CONFIG_MTD_ABSENT is not set + +# +# Mapping drivers for chip access +# +# CONFIG_MTD_COMPLEX_MAPPINGS is not set +# CONFIG_MTD_INTEL_VR_NOR is not set +# CONFIG_MTD_PLATRAM is not set + +# +# Self-contained MTD device drivers +# +# CONFIG_MTD_PMC551 is not set +# CONFIG_MTD_SLRAM is not set +# CONFIG_MTD_PHRAM is not set +# CONFIG_MTD_MTDRAM is not set +# CONFIG_MTD_BLOCK2MTD is not set + +# +# Disk-On-Chip Device Drivers +# +# CONFIG_MTD_DOCG3 is not set +# CONFIG_MTD_ONENAND is not set +# CONFIG_MTD_NAND is not set + +# +# LPDDR & LPDDR2 PCM memory drivers +# +# CONFIG_MTD_LPDDR is not set +# CONFIG_MTD_SPI_NOR is not set +CONFIG_MTD_UBI=m +CONFIG_MTD_UBI_WL_THRESHOLD=4096 +CONFIG_MTD_UBI_BEB_LIMIT=20 +# CONFIG_MTD_UBI_FASTMAP is not set +# CONFIG_MTD_UBI_GLUEBI is not set +# CONFIG_MTD_UBI_BLOCK is not set +# CONFIG_OF is not set +CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y +CONFIG_PARPORT=m +CONFIG_PARPORT_PC=m +CONFIG_PARPORT_SERIAL=m +# CONFIG_PARPORT_PC_FIFO is not set +# CONFIG_PARPORT_PC_SUPERIO is not set +CONFIG_PARPORT_PC_PCMCIA=m +# CONFIG_PARPORT_AX88796 is not set +CONFIG_PARPORT_1284=y +CONFIG_PARPORT_NOT_PC=y +CONFIG_PNP=y +# CONFIG_PNP_DEBUG_MESSAGES is not set + +# +# Protocols +# +CONFIG_PNPACPI=y +CONFIG_BLK_DEV=y +CONFIG_BLK_DEV_NULL_BLK=m +CONFIG_BLK_DEV_FD=m +CONFIG_CDROM=y +# CONFIG_PARIDE is not set +CONFIG_BLK_DEV_PCIESSD_MTIP32XX=m +CONFIG_ZRAM=m +# CONFIG_ZRAM_WRITEBACK is not set +# CONFIG_ZRAM_MEMORY_TRACKING is not set +CONFIG_BLK_DEV_UMEM=m +CONFIG_BLK_DEV_LOOP=m +CONFIG_BLK_DEV_LOOP_MIN_COUNT=8 +CONFIG_BLK_DEV_CRYPTOLOOP=m +CONFIG_BLK_DEV_DRBD=m +# CONFIG_DRBD_FAULT_INJECTION is not set +CONFIG_BLK_DEV_NBD=m +CONFIG_BLK_DEV_SKD=m +CONFIG_BLK_DEV_SX8=m +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_COUNT=16 +CONFIG_BLK_DEV_RAM_SIZE=32000 +CONFIG_CDROM_PKTCDVD=m +CONFIG_CDROM_PKTCDVD_BUFFERS=8 +# CONFIG_CDROM_PKTCDVD_WCACHE is not set +CONFIG_ATA_OVER_ETH=m +CONFIG_VIRTIO_BLK=m +# CONFIG_VIRTIO_BLK_SCSI is not set +CONFIG_BLK_DEV_RBD=m +# CONFIG_BLK_DEV_RSXX is not set + +# +# NVME Support +# +CONFIG_NVME_CORE=y +CONFIG_BLK_DEV_NVME=y +# CONFIG_NVME_MULTIPATH is not set +CONFIG_NVME_FABRICS=y +CONFIG_NVME_RDMA=m +CONFIG_NVME_FC=y +CONFIG_NVME_TARGET=m +CONFIG_NVME_TARGET_LOOP=m +CONFIG_NVME_TARGET_RDMA=m +CONFIG_NVME_TARGET_FC=m +# CONFIG_NVME_TARGET_FCLOOP is not set + +# +# Misc devices +# +CONFIG_SENSORS_LIS3LV02D=m +# CONFIG_AD525X_DPOT is not set +# CONFIG_DUMMY_IRQ is not set +# CONFIG_IBM_ASM is not set +# CONFIG_PHANTOM is not set +CONFIG_SGI_IOC4=m +CONFIG_TIFM_CORE=m +CONFIG_TIFM_7XX1=m +# CONFIG_ICS932S401 is not set +CONFIG_ENCLOSURE_SERVICES=m +CONFIG_HP_ILO=m +CONFIG_APDS9802ALS=m +CONFIG_ISL29003=m +CONFIG_ISL29020=m +CONFIG_SENSORS_TSL2550=m +CONFIG_SENSORS_BH1770=m +CONFIG_SENSORS_APDS990X=m +# CONFIG_HMC6352 is not set +# CONFIG_DS1682 is not set +# CONFIG_USB_SWITCH_FSA9480 is not set +# CONFIG_SRAM is not set +# CONFIG_PCI_ENDPOINT_TEST is not set +CONFIG_MISC_RTSX=m +# CONFIG_C2PORT is not set + +# +# EEPROM support +# +CONFIG_EEPROM_AT24=m +CONFIG_EEPROM_LEGACY=m +CONFIG_EEPROM_MAX6875=m +CONFIG_EEPROM_93CX6=m +# CONFIG_EEPROM_IDT_89HPESX is not set +# CONFIG_EEPROM_EE1004 is not set +CONFIG_CB710_CORE=m +# CONFIG_CB710_DEBUG is not set +CONFIG_CB710_DEBUG_ASSUMPTIONS=y + +# +# Texas Instruments shared transport line discipline +# +# CONFIG_TI_ST is not set +CONFIG_SENSORS_LIS3_I2C=m +CONFIG_ALTERA_STAPL=m +CONFIG_INTEL_MEI=m +CONFIG_INTEL_MEI_ME=m +CONFIG_INTEL_MEI_TXE=m +CONFIG_VMWARE_VMCI=m + +# +# Intel MIC & related support +# + +# +# Intel MIC Bus Driver +# +CONFIG_INTEL_MIC_BUS=m + +# +# SCIF Bus Driver +# +# CONFIG_SCIF_BUS is not set + +# +# VOP Bus Driver +# +# CONFIG_VOP_BUS is not set + +# +# Intel MIC Host Driver +# + +# +# Intel MIC Card Driver +# + +# +# SCIF Driver +# + +# +# Intel MIC Coprocessor State Management (COSM) Drivers +# + +# +# VOP Driver +# +# CONFIG_GENWQE is not set +# CONFIG_ECHO is not set +CONFIG_MISC_RTSX_PCI=m +CONFIG_MISC_RTSX_USB=m +CONFIG_HAVE_IDE=y +# CONFIG_IDE is not set + +# +# SCSI device support +# +CONFIG_SCSI_MOD=y +CONFIG_RAID_ATTRS=m +CONFIG_SCSI=y +CONFIG_SCSI_DMA=y +CONFIG_SCSI_NETLINK=y +# CONFIG_SCSI_MQ_DEFAULT is not set +CONFIG_SCSI_PROC_FS=y + +# +# SCSI support type (disk, tape, CD-ROM) +# +CONFIG_BLK_DEV_SD=y +CONFIG_CHR_DEV_ST=m +CONFIG_CHR_DEV_OSST=m +CONFIG_BLK_DEV_SR=y +CONFIG_BLK_DEV_SR_VENDOR=y +CONFIG_CHR_DEV_SG=y +CONFIG_CHR_DEV_SCH=m +CONFIG_SCSI_ENCLOSURE=m +CONFIG_SCSI_CONSTANTS=y +CONFIG_SCSI_LOGGING=y +CONFIG_SCSI_SCAN_ASYNC=y + +# +# SCSI Transports +# +CONFIG_SCSI_SPI_ATTRS=m +CONFIG_SCSI_FC_ATTRS=m +CONFIG_SCSI_ISCSI_ATTRS=m +CONFIG_SCSI_SAS_ATTRS=m +CONFIG_SCSI_SAS_LIBSAS=m +CONFIG_SCSI_SAS_ATA=y +CONFIG_SCSI_SAS_HOST_SMP=y +CONFIG_SCSI_SRP_ATTRS=m +CONFIG_SCSI_LOWLEVEL=y +CONFIG_ISCSI_TCP=m +CONFIG_ISCSI_BOOT_SYSFS=m +CONFIG_SCSI_CXGB3_ISCSI=m +CONFIG_SCSI_CXGB4_ISCSI=m +CONFIG_SCSI_BNX2_ISCSI=m +CONFIG_SCSI_BNX2X_FCOE=m +CONFIG_BE2ISCSI=m +CONFIG_BLK_DEV_3W_XXXX_RAID=m +CONFIG_SCSI_HPSA=m +CONFIG_SCSI_3W_9XXX=m +CONFIG_SCSI_3W_SAS=m +CONFIG_SCSI_ACARD=m +CONFIG_SCSI_AACRAID=m +CONFIG_SCSI_AIC7XXX=m +CONFIG_AIC7XXX_CMDS_PER_DEVICE=4 +CONFIG_AIC7XXX_RESET_DELAY_MS=15000 +# CONFIG_AIC7XXX_DEBUG_ENABLE is not set +CONFIG_AIC7XXX_DEBUG_MASK=0 +# CONFIG_AIC7XXX_REG_PRETTY_PRINT is not set +CONFIG_SCSI_AIC79XX=m +CONFIG_AIC79XX_CMDS_PER_DEVICE=4 +CONFIG_AIC79XX_RESET_DELAY_MS=15000 +# CONFIG_AIC79XX_DEBUG_ENABLE is not set +CONFIG_AIC79XX_DEBUG_MASK=0 +# CONFIG_AIC79XX_REG_PRETTY_PRINT is not set +# CONFIG_SCSI_AIC94XX is not set +CONFIG_SCSI_MVSAS=m +# CONFIG_SCSI_MVSAS_DEBUG is not set +CONFIG_SCSI_MVSAS_TASKLET=y +CONFIG_SCSI_MVUMI=m +# CONFIG_SCSI_DPT_I2O is not set +CONFIG_SCSI_ADVANSYS=m +CONFIG_SCSI_ARCMSR=m +CONFIG_SCSI_ESAS2R=m +CONFIG_MEGARAID_NEWGEN=y +CONFIG_MEGARAID_MM=m +CONFIG_MEGARAID_MAILBOX=m +CONFIG_MEGARAID_LEGACY=m +CONFIG_MEGARAID_SAS=m +CONFIG_SCSI_MPT3SAS=m +CONFIG_SCSI_MPT2SAS_MAX_SGE=128 +CONFIG_SCSI_MPT3SAS_MAX_SGE=128 +CONFIG_SCSI_MPT2SAS=m +# CONFIG_SCSI_SMARTPQI is not set +CONFIG_SCSI_UFSHCD=m +CONFIG_SCSI_UFSHCD_PCI=m +# CONFIG_SCSI_UFS_DWC_TC_PCI is not set +CONFIG_SCSI_UFSHCD_PLATFORM=m +# CONFIG_SCSI_UFS_DWC_TC_PLATFORM is not set +# CONFIG_SCSI_UFS_BSG is not set +CONFIG_SCSI_HPTIOP=m +CONFIG_SCSI_BUSLOGIC=m +CONFIG_SCSI_FLASHPOINT=y +# CONFIG_SCSI_MYRB is not set +# CONFIG_SCSI_MYRS is not set +CONFIG_VMWARE_PVSCSI=m +CONFIG_LIBFC=m +CONFIG_LIBFCOE=m +CONFIG_FCOE=m +CONFIG_FCOE_FNIC=m +# CONFIG_SCSI_SNIC is not set +CONFIG_SCSI_DMX3191D=m +CONFIG_SCSI_GDTH=m +CONFIG_SCSI_ISCI=m +CONFIG_SCSI_IPS=m +CONFIG_SCSI_INITIO=m +CONFIG_SCSI_INIA100=m +# CONFIG_SCSI_PPA is not set +# CONFIG_SCSI_IMM is not set +CONFIG_SCSI_STEX=m +CONFIG_SCSI_SYM53C8XX_2=m +CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=0 +CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16 +CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64 +CONFIG_SCSI_SYM53C8XX_MMIO=y +CONFIG_SCSI_IPR=m +# CONFIG_SCSI_IPR_TRACE is not set +# CONFIG_SCSI_IPR_DUMP is not set +CONFIG_SCSI_QLOGIC_1280=m +CONFIG_SCSI_QLA_FC=m +CONFIG_TCM_QLA2XXX=m +# CONFIG_TCM_QLA2XXX_DEBUG is not set +CONFIG_SCSI_QLA_ISCSI=m +CONFIG_SCSI_LPFC=m +# CONFIG_SCSI_LPFC_DEBUG_FS is not set +CONFIG_SCSI_DC395x=m +CONFIG_SCSI_AM53C974=m +CONFIG_SCSI_WD719X=m +# CONFIG_SCSI_DEBUG is not set +CONFIG_SCSI_PMCRAID=m +CONFIG_SCSI_PM8001=m +CONFIG_SCSI_BFA_FC=m +CONFIG_SCSI_VIRTIO=m +CONFIG_SCSI_CHELSIO_FCOE=m +# CONFIG_SCSI_LOWLEVEL_PCMCIA is not set +CONFIG_SCSI_DH=y +CONFIG_SCSI_DH_RDAC=m +CONFIG_SCSI_DH_HP_SW=m +CONFIG_SCSI_DH_EMC=m +CONFIG_SCSI_DH_ALUA=m +CONFIG_SCSI_OSD_INITIATOR=m +CONFIG_SCSI_OSD_ULD=m +CONFIG_SCSI_OSD_DPRINT_SENSE=1 +# CONFIG_SCSI_OSD_DEBUG is not set +CONFIG_ATA=y +CONFIG_ATA_VERBOSE_ERROR=y +CONFIG_ATA_ACPI=y +CONFIG_SATA_ZPODD=y +CONFIG_SATA_PMP=y + +# +# Controllers with non-SFF native interface +# +CONFIG_SATA_AHCI=y +CONFIG_SATA_MOBILE_LPM_POLICY=0 +CONFIG_SATA_AHCI_PLATFORM=y +CONFIG_SATA_INIC162X=m +CONFIG_SATA_ACARD_AHCI=m +CONFIG_SATA_SIL24=m +CONFIG_ATA_SFF=y + +# +# SFF controllers with custom DMA interface +# +CONFIG_PDC_ADMA=m +CONFIG_SATA_QSTOR=m +CONFIG_SATA_SX4=m +CONFIG_ATA_BMDMA=y + +# +# SATA SFF controllers with BMDMA +# +CONFIG_ATA_PIIX=y +CONFIG_SATA_DWC=m +# CONFIG_SATA_DWC_OLD_DMA is not set +# CONFIG_SATA_DWC_DEBUG is not set +CONFIG_SATA_MV=m +CONFIG_SATA_NV=m +CONFIG_SATA_PROMISE=m +CONFIG_SATA_SIL=m +CONFIG_SATA_SIS=m +CONFIG_SATA_SVW=m +CONFIG_SATA_ULI=m +CONFIG_SATA_VIA=m +CONFIG_SATA_VITESSE=m + +# +# PATA SFF controllers with BMDMA +# +CONFIG_PATA_ALI=m +CONFIG_PATA_AMD=m +CONFIG_PATA_ARTOP=m +CONFIG_PATA_ATIIXP=m +CONFIG_PATA_ATP867X=m +CONFIG_PATA_CMD64X=m +CONFIG_PATA_CYPRESS=m +CONFIG_PATA_EFAR=m +CONFIG_PATA_HPT366=m +CONFIG_PATA_HPT37X=m +CONFIG_PATA_HPT3X2N=m +CONFIG_PATA_HPT3X3=m +# CONFIG_PATA_HPT3X3_DMA is not set +CONFIG_PATA_IT8213=m +CONFIG_PATA_IT821X=m +CONFIG_PATA_JMICRON=m +CONFIG_PATA_MARVELL=m +CONFIG_PATA_NETCELL=m +CONFIG_PATA_NINJA32=m +CONFIG_PATA_NS87415=m +CONFIG_PATA_OLDPIIX=m +CONFIG_PATA_OPTIDMA=m +CONFIG_PATA_PDC2027X=m +CONFIG_PATA_PDC_OLD=m +CONFIG_PATA_RADISYS=m +CONFIG_PATA_RDC=m +CONFIG_PATA_SCH=m +CONFIG_PATA_SERVERWORKS=m +CONFIG_PATA_SIL680=m +CONFIG_PATA_SIS=m +CONFIG_PATA_TOSHIBA=m +CONFIG_PATA_TRIFLEX=m +CONFIG_PATA_VIA=m +CONFIG_PATA_WINBOND=m + +# +# PIO-only SFF controllers +# +CONFIG_PATA_CMD640_PCI=m +CONFIG_PATA_MPIIX=m +CONFIG_PATA_NS87410=m +CONFIG_PATA_OPTI=m +CONFIG_PATA_PCMCIA=m +CONFIG_PATA_RZ1000=m + +# +# Generic fallback / legacy drivers +# +CONFIG_PATA_ACPI=m +CONFIG_ATA_GENERIC=m +CONFIG_PATA_LEGACY=m +CONFIG_MD=y +CONFIG_BLK_DEV_MD=y +CONFIG_MD_AUTODETECT=y +CONFIG_MD_LINEAR=m +CONFIG_MD_RAID0=m +CONFIG_MD_RAID1=m +CONFIG_MD_RAID10=m +CONFIG_MD_RAID456=m +CONFIG_MD_MULTIPATH=m +CONFIG_MD_FAULTY=m +# CONFIG_MD_CLUSTER is not set +CONFIG_BCACHE=m +# CONFIG_BCACHE_DEBUG is not set +# CONFIG_BCACHE_CLOSURES_DEBUG is not set +CONFIG_BLK_DEV_DM_BUILTIN=y +CONFIG_BLK_DEV_DM=m +# CONFIG_DM_DEBUG is not set +CONFIG_DM_BUFIO=m +# CONFIG_DM_DEBUG_BLOCK_MANAGER_LOCKING is not set +CONFIG_DM_BIO_PRISON=m +CONFIG_DM_PERSISTENT_DATA=m +# CONFIG_DM_UNSTRIPED is not set +CONFIG_DM_CRYPT=m +CONFIG_DM_SNAPSHOT=m +CONFIG_DM_THIN_PROVISIONING=m +CONFIG_DM_CACHE=m +CONFIG_DM_CACHE_SMQ=m +# CONFIG_DM_WRITECACHE is not set +CONFIG_DM_ERA=m +CONFIG_DM_MIRROR=m +CONFIG_DM_LOG_USERSPACE=m +CONFIG_DM_RAID=m +CONFIG_DM_ZERO=m +CONFIG_DM_MULTIPATH=m +CONFIG_DM_MULTIPATH_QL=m +CONFIG_DM_MULTIPATH_ST=m +CONFIG_DM_DELAY=m +CONFIG_DM_UEVENT=y +CONFIG_DM_FLAKEY=m +CONFIG_DM_VERITY=m +# CONFIG_DM_VERITY_FEC is not set +CONFIG_DM_SWITCH=m +# CONFIG_DM_LOG_WRITES is not set +# CONFIG_DM_INTEGRITY is not set +CONFIG_TARGET_CORE=m +CONFIG_TCM_IBLOCK=m +CONFIG_TCM_FILEIO=m +CONFIG_TCM_PSCSI=m +# CONFIG_TCM_USER2 is not set +CONFIG_LOOPBACK_TARGET=m +CONFIG_TCM_FC=m +CONFIG_ISCSI_TARGET=m +# CONFIG_ISCSI_TARGET_CXGB4 is not set +CONFIG_SBP_TARGET=m +CONFIG_FUSION=y +CONFIG_FUSION_SPI=m +CONFIG_FUSION_FC=m +CONFIG_FUSION_SAS=m +CONFIG_FUSION_MAX_SGE=40 +CONFIG_FUSION_CTL=m +CONFIG_FUSION_LAN=m +CONFIG_FUSION_LOGGING=y + +# +# IEEE 1394 (FireWire) support +# +CONFIG_FIREWIRE=m +CONFIG_FIREWIRE_OHCI=m +CONFIG_FIREWIRE_SBP2=m +CONFIG_FIREWIRE_NET=m +CONFIG_FIREWIRE_NOSY=m +CONFIG_MACINTOSH_DRIVERS=y +CONFIG_MAC_EMUMOUSEBTN=y +CONFIG_NETDEVICES=y +CONFIG_MII=m +CONFIG_NET_CORE=y +CONFIG_BONDING=m +CONFIG_DUMMY=m +CONFIG_EQUALIZER=m +CONFIG_NET_FC=y +CONFIG_IFB=m +CONFIG_NET_TEAM=m +CONFIG_NET_TEAM_MODE_BROADCAST=m +CONFIG_NET_TEAM_MODE_ROUNDROBIN=m +CONFIG_NET_TEAM_MODE_RANDOM=m +CONFIG_NET_TEAM_MODE_ACTIVEBACKUP=m +CONFIG_NET_TEAM_MODE_LOADBALANCE=m +CONFIG_MACVLAN=m +CONFIG_MACVTAP=m +# CONFIG_IPVLAN is not set +CONFIG_VXLAN=m +# CONFIG_GENEVE is not set +# CONFIG_GTP is not set +# CONFIG_MACSEC is not set +CONFIG_NETCONSOLE=m +CONFIG_NETCONSOLE_DYNAMIC=y +CONFIG_NETPOLL=y +CONFIG_NET_POLL_CONTROLLER=y +CONFIG_TUN=m +CONFIG_TAP=m +# CONFIG_TUN_VNET_CROSS_LE is not set +CONFIG_VETH=m +CONFIG_VIRTIO_NET=m +CONFIG_NLMON=m +CONFIG_SUNGEM_PHY=m +# CONFIG_ARCNET is not set +CONFIG_ATM_DRIVERS=y +# CONFIG_ATM_DUMMY is not set +CONFIG_ATM_TCP=m +# CONFIG_ATM_LANAI is not set +CONFIG_ATM_ENI=m +# CONFIG_ATM_ENI_DEBUG is not set +# CONFIG_ATM_ENI_TUNE_BURST is not set +CONFIG_ATM_FIRESTREAM=m +# CONFIG_ATM_ZATM is not set +CONFIG_ATM_NICSTAR=m +# CONFIG_ATM_NICSTAR_USE_SUNI is not set +# CONFIG_ATM_NICSTAR_USE_IDT77105 is not set +# CONFIG_ATM_IDT77252 is not set +# CONFIG_ATM_AMBASSADOR is not set +# CONFIG_ATM_HORIZON is not set +# CONFIG_ATM_IA is not set +# CONFIG_ATM_FORE200E is not set +CONFIG_ATM_HE=m +# CONFIG_ATM_HE_USE_SUNI is not set +CONFIG_ATM_SOLOS=m + +# +# CAIF transport drivers +# + +# +# Distributed Switch Architecture drivers +# +CONFIG_ETHERNET=y +CONFIG_MDIO=m +CONFIG_NET_VENDOR_3COM=y +CONFIG_PCMCIA_3C574=m +CONFIG_PCMCIA_3C589=m +CONFIG_VORTEX=m +CONFIG_TYPHOON=m +CONFIG_NET_VENDOR_ADAPTEC=y +CONFIG_ADAPTEC_STARFIRE=m +# CONFIG_NET_VENDOR_AGERE is not set +CONFIG_NET_VENDOR_ALACRITECH=y +# CONFIG_SLICOSS is not set +CONFIG_NET_VENDOR_ALTEON=y +CONFIG_ACENIC=m +# CONFIG_ACENIC_OMIT_TIGON_I is not set +CONFIG_ALTERA_TSE=m +CONFIG_NET_VENDOR_AMAZON=y +# CONFIG_ENA_ETHERNET is not set +CONFIG_NET_VENDOR_AMD=y +CONFIG_AMD8111_ETH=m +CONFIG_PCNET32=m +CONFIG_PCMCIA_NMCLAN=m +# CONFIG_AMD_XGBE is not set +CONFIG_NET_VENDOR_AQUANTIA=y +# CONFIG_AQTION is not set +CONFIG_NET_VENDOR_ARC=y +CONFIG_NET_VENDOR_ATHEROS=y +CONFIG_ATL2=m +CONFIG_ATL1=m +CONFIG_ATL1E=m +CONFIG_ATL1C=m +CONFIG_ALX=m +# CONFIG_NET_VENDOR_AURORA is not set +CONFIG_NET_VENDOR_BROADCOM=y +CONFIG_B44=m +CONFIG_B44_PCI_AUTOSELECT=y +CONFIG_B44_PCICORE_AUTOSELECT=y +CONFIG_B44_PCI=y +# CONFIG_BCMGENET is not set +CONFIG_BNX2=m +CONFIG_CNIC=m +CONFIG_TIGON3=m +CONFIG_TIGON3_HWMON=y +CONFIG_BNX2X=m +CONFIG_BNX2X_SRIOV=y +# CONFIG_SYSTEMPORT is not set +# CONFIG_BNXT is not set +CONFIG_NET_VENDOR_BROCADE=y +CONFIG_BNA=m +CONFIG_NET_VENDOR_CADENCE=y +# CONFIG_MACB is not set +CONFIG_NET_VENDOR_CAVIUM=y +# CONFIG_THUNDER_NIC_PF is not set +# CONFIG_THUNDER_NIC_VF is not set +# CONFIG_THUNDER_NIC_BGX is not set +# CONFIG_THUNDER_NIC_RGX is not set +CONFIG_CAVIUM_PTP=y +# CONFIG_LIQUIDIO is not set +# CONFIG_LIQUIDIO_VF is not set +CONFIG_NET_VENDOR_CHELSIO=y +CONFIG_CHELSIO_T1=m +CONFIG_CHELSIO_T1_1G=y +CONFIG_CHELSIO_T3=m +CONFIG_CHELSIO_T4=m +# CONFIG_CHELSIO_T4_DCB is not set +CONFIG_CHELSIO_T4VF=m +CONFIG_CHELSIO_LIB=m +CONFIG_NET_VENDOR_CISCO=y +CONFIG_ENIC=m +CONFIG_NET_VENDOR_CORTINA=y +# CONFIG_CX_ECAT is not set +CONFIG_DNET=m +CONFIG_NET_VENDOR_DEC=y +CONFIG_NET_TULIP=y +CONFIG_DE2104X=m +CONFIG_DE2104X_DSL=0 +CONFIG_TULIP=m +# CONFIG_TULIP_MWI is not set +# CONFIG_TULIP_MMIO is not set +# CONFIG_TULIP_NAPI is not set +CONFIG_DE4X5=m +CONFIG_WINBOND_840=m +CONFIG_DM9102=m +CONFIG_ULI526X=m +CONFIG_PCMCIA_XIRCOM=m +CONFIG_NET_VENDOR_DLINK=y +CONFIG_DL2K=m +CONFIG_SUNDANCE=m +# CONFIG_SUNDANCE_MMIO is not set +CONFIG_NET_VENDOR_EMULEX=y +CONFIG_BE2NET=m +CONFIG_BE2NET_HWMON=y +CONFIG_BE2NET_BE2=y +CONFIG_BE2NET_BE3=y +CONFIG_BE2NET_LANCER=y +CONFIG_BE2NET_SKYHAWK=y +# CONFIG_NET_VENDOR_EZCHIP is not set +# CONFIG_NET_VENDOR_FUJITSU is not set +# CONFIG_NET_VENDOR_HP is not set +CONFIG_NET_VENDOR_HUAWEI=y +CONFIG_HINIC=m +# CONFIG_NET_VENDOR_I825XX is not set +CONFIG_NET_VENDOR_INTEL=y +CONFIG_E100=m +CONFIG_E1000=m +CONFIG_E1000E=m +CONFIG_E1000E_HWTS=y +CONFIG_IGB=m +CONFIG_IGB_HWMON=y +CONFIG_IGB_DCA=y +CONFIG_IGBVF=m +CONFIG_IXGB=m +CONFIG_IXGBE=m +CONFIG_IXGBE_HWMON=y +CONFIG_IXGBE_DCA=y +CONFIG_IXGBE_DCB=y +CONFIG_IXGBEVF=m +CONFIG_I40E=m +# CONFIG_I40E_DCB is not set +CONFIG_IAVF=m +CONFIG_I40EVF=m +# CONFIG_ICE is not set +CONFIG_FM10K=m +# CONFIG_IGC is not set +CONFIG_JME=m +CONFIG_NET_VENDOR_MARVELL=y +CONFIG_MVMDIO=m +CONFIG_SKGE=m +# CONFIG_SKGE_DEBUG is not set +CONFIG_SKGE_GENESIS=y +CONFIG_SKY2=m +# CONFIG_SKY2_DEBUG is not set +CONFIG_NET_VENDOR_MELLANOX=y +CONFIG_MLX4_EN=m +CONFIG_MLX4_EN_DCB=y +CONFIG_MLX4_CORE=m +CONFIG_MLX4_DEBUG=y +CONFIG_MLX4_CORE_GEN2=y +# CONFIG_MLX5_CORE is not set +# CONFIG_MLXSW_CORE is not set +# CONFIG_MLXFW is not set +CONFIG_NET_VENDOR_MICREL=y +# CONFIG_KS8842 is not set +# CONFIG_KS8851_MLL is not set +CONFIG_KSZ884X_PCI=m +CONFIG_NET_VENDOR_MICROCHIP=y +# CONFIG_LAN743X is not set +CONFIG_NET_VENDOR_MICROSEMI=y +CONFIG_NET_VENDOR_MYRI=y +CONFIG_MYRI10GE=m +CONFIG_MYRI10GE_DCA=y +CONFIG_FEALNX=m +CONFIG_NET_VENDOR_NATSEMI=y +CONFIG_NATSEMI=m +CONFIG_NS83820=m +CONFIG_NET_VENDOR_NETERION=y +CONFIG_S2IO=m +CONFIG_VXGE=m +# CONFIG_VXGE_DEBUG_TRACE_ALL is not set +CONFIG_NET_VENDOR_NETRONOME=y +CONFIG_NFP=m +# CONFIG_NFP_DEBUG is not set +CONFIG_NET_VENDOR_NI=y +# CONFIG_NI_XGE_MANAGEMENT_ENET is not set +CONFIG_NET_VENDOR_8390=y +CONFIG_PCMCIA_AXNET=m +CONFIG_NE2K_PCI=m +CONFIG_PCMCIA_PCNET=m +CONFIG_NET_VENDOR_NVIDIA=y +CONFIG_FORCEDETH=m +CONFIG_NET_VENDOR_OKI=y +CONFIG_ETHOC=m +CONFIG_NET_VENDOR_PACKET_ENGINES=y +CONFIG_HAMACHI=m +CONFIG_YELLOWFIN=m +CONFIG_NET_VENDOR_QLOGIC=y +CONFIG_QLA3XXX=m +CONFIG_QLCNIC=m +CONFIG_QLCNIC_SRIOV=y +CONFIG_QLCNIC_DCB=y +CONFIG_QLCNIC_HWMON=y +CONFIG_QLGE=m +CONFIG_NETXEN_NIC=m +# CONFIG_QED is not set +# CONFIG_NET_VENDOR_QUALCOMM is not set +CONFIG_NET_VENDOR_RDC=y +CONFIG_R6040=m +CONFIG_NET_VENDOR_REALTEK=y +CONFIG_ATP=m +CONFIG_8139CP=m +CONFIG_8139TOO=m +# CONFIG_8139TOO_PIO is not set +# CONFIG_8139TOO_TUNE_TWISTER is not set +CONFIG_8139TOO_8129=y +# CONFIG_8139_OLD_RX_RESET is not set +CONFIG_R8169=m +CONFIG_NET_VENDOR_RENESAS=y +CONFIG_NET_VENDOR_ROCKER=y +# CONFIG_NET_VENDOR_SAMSUNG is not set +# CONFIG_NET_VENDOR_SEEQ is not set +CONFIG_NET_VENDOR_SOLARFLARE=y +CONFIG_SFC=m +CONFIG_SFC_MTD=y +CONFIG_SFC_MCDI_MON=y +CONFIG_SFC_SRIOV=y +CONFIG_SFC_MCDI_LOGGING=y +# CONFIG_SFC_FALCON is not set +CONFIG_NET_VENDOR_SILAN=y +CONFIG_SC92031=m +CONFIG_NET_VENDOR_SIS=y +CONFIG_SIS900=m +CONFIG_SIS190=m +CONFIG_NET_VENDOR_SMSC=y +CONFIG_PCMCIA_SMC91C92=m +CONFIG_EPIC100=m +CONFIG_SMSC911X=m +CONFIG_SMSC9420=m +CONFIG_NET_VENDOR_SOCIONEXT=y +CONFIG_NET_VENDOR_STMICRO=y +CONFIG_STMMAC_ETH=m +# CONFIG_STMMAC_PLATFORM is not set +# CONFIG_STMMAC_PCI is not set +CONFIG_NET_VENDOR_SUN=y +CONFIG_HAPPYMEAL=m +CONFIG_SUNGEM=m +CONFIG_CASSINI=m +CONFIG_NIU=m +CONFIG_NET_VENDOR_SYNOPSYS=y +# CONFIG_DWC_XLGMAC is not set +CONFIG_NET_VENDOR_TEHUTI=y +CONFIG_TEHUTI=m +CONFIG_NET_VENDOR_TI=y +# CONFIG_TI_CPSW_ALE is not set +CONFIG_TLAN=m +CONFIG_NET_VENDOR_VIA=y +CONFIG_VIA_RHINE=m +CONFIG_VIA_RHINE_MMIO=y +CONFIG_VIA_VELOCITY=m +CONFIG_NET_VENDOR_WIZNET=y +CONFIG_WIZNET_W5100=m +CONFIG_WIZNET_W5300=m +# CONFIG_WIZNET_BUS_DIRECT is not set +# CONFIG_WIZNET_BUS_INDIRECT is not set +CONFIG_WIZNET_BUS_ANY=y +CONFIG_NET_VENDOR_XIRCOM=y +CONFIG_PCMCIA_XIRC2PS=m +# CONFIG_FDDI is not set +# CONFIG_HIPPI is not set +# CONFIG_NET_SB1000 is not set +CONFIG_MDIO_DEVICE=y +CONFIG_MDIO_BUS=y +# CONFIG_MDIO_BCM_UNIMAC is not set +CONFIG_MDIO_BITBANG=m +# CONFIG_MDIO_GPIO is not set +# CONFIG_MDIO_MSCC_MIIM is not set +# CONFIG_MDIO_THUNDER is not set +CONFIG_PHYLIB=y +CONFIG_SWPHY=y +# CONFIG_LED_TRIGGER_PHY is not set + +# +# MII PHY device drivers +# +CONFIG_AMD_PHY=m +# CONFIG_AQUANTIA_PHY is not set +# CONFIG_ASIX_PHY is not set +CONFIG_AT803X_PHY=m +CONFIG_BCM7XXX_PHY=m +CONFIG_BCM87XX_PHY=m +CONFIG_BCM_NET_PHYLIB=m +CONFIG_BROADCOM_PHY=m +CONFIG_CICADA_PHY=m +# CONFIG_CORTINA_PHY is not set +CONFIG_DAVICOM_PHY=m +# CONFIG_DP83822_PHY is not set +# CONFIG_DP83TC811_PHY is not set +# CONFIG_DP83848_PHY is not set +# CONFIG_DP83867_PHY is not set +CONFIG_FIXED_PHY=y +CONFIG_ICPLUS_PHY=m +# CONFIG_INTEL_XWAY_PHY is not set +CONFIG_LSI_ET1011C_PHY=m +CONFIG_LXT_PHY=m +CONFIG_MARVELL_PHY=m +CONFIG_MARVELL_10G_PHY=m +CONFIG_MICREL_PHY=m +CONFIG_MICROCHIP_PHY=m +# CONFIG_MICROCHIP_T1_PHY is not set +CONFIG_MICROSEMI_PHY=m +CONFIG_NATIONAL_PHY=m +CONFIG_QSEMI_PHY=m +CONFIG_REALTEK_PHY=m +# CONFIG_RENESAS_PHY is not set +# CONFIG_ROCKCHIP_PHY is not set +CONFIG_SMSC_PHY=m +CONFIG_STE10XP=m +# CONFIG_TERANETICS_PHY is not set +CONFIG_VITESSE_PHY=m +# CONFIG_XILINX_GMII2RGMII is not set +# CONFIG_PLIP is not set +CONFIG_PPP=m +CONFIG_PPP_BSDCOMP=m +CONFIG_PPP_DEFLATE=m +CONFIG_PPP_FILTER=y +CONFIG_PPP_MPPE=m +CONFIG_PPP_MULTILINK=y +CONFIG_PPPOATM=m +CONFIG_PPPOE=m +CONFIG_PPTP=m +CONFIG_PPPOL2TP=m +CONFIG_PPP_ASYNC=m +CONFIG_PPP_SYNC_TTY=m +CONFIG_SLIP=m +CONFIG_SLHC=m +CONFIG_SLIP_COMPRESSED=y +CONFIG_SLIP_SMART=y +# CONFIG_SLIP_MODE_SLIP6 is not set +CONFIG_USB_NET_DRIVERS=y +CONFIG_USB_CATC=m +CONFIG_USB_KAWETH=m +CONFIG_USB_PEGASUS=m +CONFIG_USB_RTL8150=m +CONFIG_USB_RTL8152=m +CONFIG_USB_LAN78XX=m +CONFIG_USB_USBNET=m +CONFIG_USB_NET_AX8817X=m +CONFIG_USB_NET_AX88179_178A=m +CONFIG_USB_NET_CDCETHER=m +CONFIG_USB_NET_CDC_EEM=m +CONFIG_USB_NET_CDC_NCM=m +CONFIG_USB_NET_HUAWEI_CDC_NCM=m +CONFIG_USB_NET_CDC_MBIM=m +CONFIG_USB_NET_DM9601=m +CONFIG_USB_NET_SR9700=m +CONFIG_USB_NET_SR9800=m +CONFIG_USB_NET_SMSC75XX=m +CONFIG_USB_NET_SMSC95XX=m +CONFIG_USB_NET_GL620A=m +CONFIG_USB_NET_NET1080=m +CONFIG_USB_NET_PLUSB=m +CONFIG_USB_NET_MCS7830=m +CONFIG_USB_NET_RNDIS_HOST=m +CONFIG_USB_NET_CDC_SUBSET_ENABLE=m +CONFIG_USB_NET_CDC_SUBSET=m +CONFIG_USB_ALI_M5632=y +CONFIG_USB_AN2720=y +CONFIG_USB_BELKIN=y +CONFIG_USB_ARMLINUX=y +CONFIG_USB_EPSON2888=y +CONFIG_USB_KC2190=y +CONFIG_USB_NET_ZAURUS=m +CONFIG_USB_NET_CX82310_ETH=m +CONFIG_USB_NET_KALMIA=m +CONFIG_USB_NET_QMI_WWAN=m +CONFIG_USB_HSO=m +CONFIG_USB_NET_INT51X1=m +CONFIG_USB_IPHETH=m +CONFIG_USB_SIERRA_NET=m +CONFIG_USB_VL600=m +# CONFIG_USB_NET_CH9200 is not set +CONFIG_WLAN=y +CONFIG_WLAN_VENDOR_ADMTEK=y +# CONFIG_ADM8211 is not set +CONFIG_ATH_COMMON=m +CONFIG_WLAN_VENDOR_ATH=y +# CONFIG_ATH_DEBUG is not set +CONFIG_ATH5K=m +# CONFIG_ATH5K_DEBUG is not set +CONFIG_ATH5K_PCI=y +CONFIG_ATH9K_HW=m +CONFIG_ATH9K_COMMON=m +CONFIG_ATH9K_BTCOEX_SUPPORT=y +CONFIG_ATH9K=m +CONFIG_ATH9K_PCI=y +CONFIG_ATH9K_AHB=y +# CONFIG_ATH9K_DEBUGFS is not set +# CONFIG_ATH9K_DYNACK is not set +CONFIG_ATH9K_WOW=y +CONFIG_ATH9K_RFKILL=y +# CONFIG_ATH9K_CHANNEL_CONTEXT is not set +CONFIG_ATH9K_PCOEM=y +CONFIG_ATH9K_HTC=m +# CONFIG_ATH9K_HTC_DEBUGFS is not set +CONFIG_ATH9K_HWRNG=y +CONFIG_CARL9170=m +CONFIG_CARL9170_LEDS=y +CONFIG_CARL9170_WPC=y +# CONFIG_CARL9170_HWRNG is not set +CONFIG_ATH6KL=m +CONFIG_ATH6KL_SDIO=m +CONFIG_ATH6KL_USB=m +# CONFIG_ATH6KL_DEBUG is not set +CONFIG_AR5523=m +CONFIG_WIL6210=m +CONFIG_WIL6210_ISR_COR=y +# CONFIG_WIL6210_DEBUGFS is not set +CONFIG_ATH10K=m +CONFIG_ATH10K_CE=y +CONFIG_ATH10K_PCI=m +# CONFIG_ATH10K_SDIO is not set +# CONFIG_ATH10K_USB is not set +# CONFIG_ATH10K_DEBUG is not set +# CONFIG_ATH10K_DEBUGFS is not set +CONFIG_WCN36XX=m +# CONFIG_WCN36XX_DEBUGFS is not set +CONFIG_WLAN_VENDOR_ATMEL=y +# CONFIG_ATMEL is not set +CONFIG_AT76C50X_USB=m +CONFIG_WLAN_VENDOR_BROADCOM=y +CONFIG_B43=m +CONFIG_B43_BCMA=y +CONFIG_B43_SSB=y +CONFIG_B43_BUSES_BCMA_AND_SSB=y +# CONFIG_B43_BUSES_BCMA is not set +# CONFIG_B43_BUSES_SSB is not set +CONFIG_B43_PCI_AUTOSELECT=y +CONFIG_B43_PCICORE_AUTOSELECT=y +CONFIG_B43_SDIO=y +CONFIG_B43_BCMA_PIO=y +CONFIG_B43_PIO=y +CONFIG_B43_PHY_G=y +CONFIG_B43_PHY_N=y +CONFIG_B43_PHY_LP=y +CONFIG_B43_PHY_HT=y +CONFIG_B43_LEDS=y +CONFIG_B43_HWRNG=y +# CONFIG_B43_DEBUG is not set +CONFIG_B43LEGACY=m +CONFIG_B43LEGACY_PCI_AUTOSELECT=y +CONFIG_B43LEGACY_PCICORE_AUTOSELECT=y +CONFIG_B43LEGACY_LEDS=y +CONFIG_B43LEGACY_HWRNG=y +# CONFIG_B43LEGACY_DEBUG is not set +CONFIG_B43LEGACY_DMA=y +CONFIG_B43LEGACY_PIO=y +CONFIG_B43LEGACY_DMA_AND_PIO_MODE=y +# CONFIG_B43LEGACY_DMA_MODE is not set +# CONFIG_B43LEGACY_PIO_MODE is not set +CONFIG_BRCMUTIL=m +CONFIG_BRCMSMAC=m +CONFIG_BRCMFMAC=m +CONFIG_BRCMFMAC_PROTO_BCDC=y +CONFIG_BRCMFMAC_PROTO_MSGBUF=y +CONFIG_BRCMFMAC_SDIO=y +CONFIG_BRCMFMAC_USB=y +CONFIG_BRCMFMAC_PCIE=y +# CONFIG_BRCM_TRACING is not set +# CONFIG_BRCMDBG is not set +CONFIG_WLAN_VENDOR_CISCO=y +# CONFIG_AIRO is not set +# CONFIG_AIRO_CS is not set +CONFIG_WLAN_VENDOR_INTEL=y +CONFIG_IPW2100=m +CONFIG_IPW2100_MONITOR=y +# CONFIG_IPW2100_DEBUG is not set +CONFIG_IPW2200=m +CONFIG_IPW2200_MONITOR=y +CONFIG_IPW2200_RADIOTAP=y +CONFIG_IPW2200_PROMISCUOUS=y +CONFIG_IPW2200_QOS=y +# CONFIG_IPW2200_DEBUG is not set +CONFIG_LIBIPW=m +# CONFIG_LIBIPW_DEBUG is not set +CONFIG_IWLEGACY=m +CONFIG_IWL4965=m +CONFIG_IWL3945=m + +# +# iwl3945 / iwl4965 Debugging Options +# +# CONFIG_IWLEGACY_DEBUG is not set +CONFIG_IWLWIFI=m +CONFIG_IWLWIFI_LEDS=y +CONFIG_IWLDVM=m +CONFIG_IWLMVM=m +CONFIG_IWLWIFI_OPMODE_MODULAR=y +# CONFIG_IWLWIFI_BCAST_FILTERING is not set + +# +# Debugging Options +# +# CONFIG_IWLWIFI_DEBUG is not set +CONFIG_WLAN_VENDOR_INTERSIL=y +# CONFIG_HOSTAP is not set +CONFIG_HERMES=m +CONFIG_HERMES_PRISM=y +CONFIG_HERMES_CACHE_FW_ON_INIT=y +CONFIG_PLX_HERMES=m +# CONFIG_TMD_HERMES is not set +CONFIG_NORTEL_HERMES=m +CONFIG_PCI_HERMES=m +CONFIG_PCMCIA_HERMES=m +# CONFIG_PCMCIA_SPECTRUM is not set +CONFIG_ORINOCO_USB=m +CONFIG_P54_COMMON=m +CONFIG_P54_USB=m +CONFIG_P54_PCI=m +CONFIG_P54_LEDS=y +# CONFIG_PRISM54 is not set +CONFIG_WLAN_VENDOR_MARVELL=y +CONFIG_LIBERTAS=m +CONFIG_LIBERTAS_USB=m +CONFIG_LIBERTAS_CS=m +CONFIG_LIBERTAS_SDIO=m +# CONFIG_LIBERTAS_DEBUG is not set +CONFIG_LIBERTAS_MESH=y +# CONFIG_LIBERTAS_THINFIRM is not set +CONFIG_MWIFIEX=m +CONFIG_MWIFIEX_SDIO=m +CONFIG_MWIFIEX_PCIE=m +CONFIG_MWIFIEX_USB=m +CONFIG_MWL8K=m +CONFIG_WLAN_VENDOR_MEDIATEK=y +CONFIG_MT7601U=m +CONFIG_MT76_CORE=m +CONFIG_MT76_LEDS=y +CONFIG_MT76x02_LIB=m +# CONFIG_MT76x0U is not set +# CONFIG_MT76x0E is not set +CONFIG_MT76x2_COMMON=m +CONFIG_MT76x2E=m +# CONFIG_MT76x2U is not set +CONFIG_WLAN_VENDOR_RALINK=y +CONFIG_RT2X00=m +CONFIG_RT2400PCI=m +CONFIG_RT2500PCI=m +CONFIG_RT61PCI=m +CONFIG_RT2800PCI=m +CONFIG_RT2800PCI_RT33XX=y +CONFIG_RT2800PCI_RT35XX=y +CONFIG_RT2800PCI_RT53XX=y +CONFIG_RT2800PCI_RT3290=y +CONFIG_RT2500USB=m +CONFIG_RT73USB=m +CONFIG_RT2800USB=m +CONFIG_RT2800USB_RT33XX=y +CONFIG_RT2800USB_RT35XX=y +CONFIG_RT2800USB_RT3573=y +CONFIG_RT2800USB_RT53XX=y +CONFIG_RT2800USB_RT55XX=y +CONFIG_RT2800USB_UNKNOWN=y +CONFIG_RT2800_LIB=m +CONFIG_RT2800_LIB_MMIO=m +CONFIG_RT2X00_LIB_MMIO=m +CONFIG_RT2X00_LIB_PCI=m +CONFIG_RT2X00_LIB_USB=m +CONFIG_RT2X00_LIB=m +CONFIG_RT2X00_LIB_FIRMWARE=y +CONFIG_RT2X00_LIB_CRYPTO=y +CONFIG_RT2X00_LIB_LEDS=y +# CONFIG_RT2X00_DEBUG is not set +CONFIG_WLAN_VENDOR_REALTEK=y +CONFIG_RTL8180=m +CONFIG_RTL8187=m +CONFIG_RTL8187_LEDS=y +CONFIG_RTL_CARDS=m +CONFIG_RTL8192CE=m +CONFIG_RTL8192SE=m +CONFIG_RTL8192DE=m +CONFIG_RTL8723AE=m +CONFIG_RTL8723BE=m +CONFIG_RTL8188EE=m +CONFIG_RTL8192EE=m +CONFIG_RTL8821AE=m +CONFIG_RTL8192CU=m +CONFIG_RTLWIFI=m +CONFIG_RTLWIFI_PCI=m +CONFIG_RTLWIFI_USB=m +# CONFIG_RTLWIFI_DEBUG is not set +CONFIG_RTL8192C_COMMON=m +CONFIG_RTL8723_COMMON=m +CONFIG_RTLBTCOEXIST=m +CONFIG_RTL8XXXU=m +CONFIG_RTL8XXXU_UNTESTED=y +CONFIG_WLAN_VENDOR_RSI=y +CONFIG_RSI_91X=m +# CONFIG_RSI_DEBUGFS is not set +CONFIG_RSI_SDIO=m +CONFIG_RSI_USB=m +CONFIG_RSI_COEX=y +CONFIG_WLAN_VENDOR_ST=y +CONFIG_CW1200=m +CONFIG_CW1200_WLAN_SDIO=m +CONFIG_WLAN_VENDOR_TI=y +# CONFIG_WL1251 is not set +# CONFIG_WL12XX is not set +# CONFIG_WL18XX is not set +# CONFIG_WLCORE is not set +CONFIG_WLAN_VENDOR_ZYDAS=y +CONFIG_USB_ZD1201=m +CONFIG_ZD1211RW=m +# CONFIG_ZD1211RW_DEBUG is not set +CONFIG_WLAN_VENDOR_QUANTENNA=y +# CONFIG_QTNFMAC_PEARL_PCIE is not set +# CONFIG_PCMCIA_RAYCS is not set +# CONFIG_PCMCIA_WL3501 is not set +CONFIG_MAC80211_HWSIM=m +CONFIG_USB_NET_RNDIS_WLAN=m + +# +# WiMAX Wireless Broadband devices +# +# CONFIG_WIMAX_I2400M_USB is not set +# CONFIG_WAN is not set +CONFIG_IEEE802154_DRIVERS=m +CONFIG_IEEE802154_FAKELB=m +CONFIG_IEEE802154_ATUSB=m +# CONFIG_IEEE802154_HWSIM is not set +CONFIG_VMXNET3=m +# CONFIG_FUJITSU_ES is not set +# CONFIG_NETDEVSIM is not set +CONFIG_NET_FAILOVER=m +# CONFIG_ISDN is not set +# CONFIG_NVM is not set + +# +# Input device support +# +CONFIG_INPUT=y +CONFIG_INPUT_LEDS=m +CONFIG_INPUT_FF_MEMLESS=y +CONFIG_INPUT_POLLDEV=m +CONFIG_INPUT_SPARSEKMAP=m +CONFIG_INPUT_MATRIXKMAP=m + +# +# Userland interfaces +# +CONFIG_INPUT_MOUSEDEV=y +CONFIG_INPUT_MOUSEDEV_PSAUX=y +CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 +CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 +CONFIG_INPUT_JOYDEV=m +CONFIG_INPUT_EVDEV=y +# CONFIG_INPUT_EVBUG is not set + +# +# Input Device Drivers +# +CONFIG_INPUT_KEYBOARD=y +# CONFIG_KEYBOARD_ADC is not set +# CONFIG_KEYBOARD_ADP5588 is not set +# CONFIG_KEYBOARD_ADP5589 is not set +CONFIG_KEYBOARD_ATKBD=y +# CONFIG_KEYBOARD_QT1070 is not set +CONFIG_KEYBOARD_QT2160=m +# CONFIG_KEYBOARD_DLINK_DIR685 is not set +CONFIG_KEYBOARD_LKKBD=m +# CONFIG_KEYBOARD_GPIO is not set +CONFIG_KEYBOARD_GPIO_POLLED=m +CONFIG_KEYBOARD_TCA6416=m +CONFIG_KEYBOARD_TCA8418=m +# CONFIG_KEYBOARD_MATRIX is not set +# CONFIG_KEYBOARD_LM8323 is not set +# CONFIG_KEYBOARD_LM8333 is not set +# CONFIG_KEYBOARD_MAX7359 is not set +# CONFIG_KEYBOARD_MCS is not set +# CONFIG_KEYBOARD_MPR121 is not set +CONFIG_KEYBOARD_NEWTON=m +# CONFIG_KEYBOARD_OPENCORES is not set +CONFIG_KEYBOARD_SAMSUNG=m +CONFIG_KEYBOARD_STOWAWAY=m +CONFIG_KEYBOARD_SUNKBD=m +# CONFIG_KEYBOARD_TM2_TOUCHKEY is not set +CONFIG_KEYBOARD_XTKBD=m +CONFIG_INPUT_MOUSE=y +CONFIG_MOUSE_PS2=m +CONFIG_MOUSE_PS2_ALPS=y +CONFIG_MOUSE_PS2_BYD=y +CONFIG_MOUSE_PS2_LOGIPS2PP=y +CONFIG_MOUSE_PS2_SYNAPTICS=y +CONFIG_MOUSE_PS2_SYNAPTICS_SMBUS=y +CONFIG_MOUSE_PS2_CYPRESS=y +CONFIG_MOUSE_PS2_LIFEBOOK=y +CONFIG_MOUSE_PS2_TRACKPOINT=y +CONFIG_MOUSE_PS2_ELANTECH=y +CONFIG_MOUSE_PS2_ELANTECH_SMBUS=y +CONFIG_MOUSE_PS2_SENTELIC=y +CONFIG_MOUSE_PS2_TOUCHKIT=y +CONFIG_MOUSE_PS2_FOCALTECH=y +CONFIG_MOUSE_PS2_SMBUS=y +CONFIG_MOUSE_SERIAL=m +CONFIG_MOUSE_APPLETOUCH=m +CONFIG_MOUSE_BCM5974=m +CONFIG_MOUSE_CYAPA=m +CONFIG_MOUSE_ELAN_I2C=m +CONFIG_MOUSE_ELAN_I2C_I2C=y +CONFIG_MOUSE_ELAN_I2C_SMBUS=y +CONFIG_MOUSE_VSXXXAA=m +CONFIG_MOUSE_GPIO=m +CONFIG_MOUSE_SYNAPTICS_I2C=m +CONFIG_MOUSE_SYNAPTICS_USB=m +CONFIG_INPUT_JOYSTICK=y +CONFIG_JOYSTICK_ANALOG=m +CONFIG_JOYSTICK_A3D=m +CONFIG_JOYSTICK_ADI=m +CONFIG_JOYSTICK_COBRA=m +CONFIG_JOYSTICK_GF2K=m +CONFIG_JOYSTICK_GRIP=m +CONFIG_JOYSTICK_GRIP_MP=m +CONFIG_JOYSTICK_GUILLEMOT=m +CONFIG_JOYSTICK_INTERACT=m +CONFIG_JOYSTICK_SIDEWINDER=m +CONFIG_JOYSTICK_TMDC=m +CONFIG_JOYSTICK_IFORCE=m +CONFIG_JOYSTICK_IFORCE_USB=y +CONFIG_JOYSTICK_IFORCE_232=y +CONFIG_JOYSTICK_WARRIOR=m +CONFIG_JOYSTICK_MAGELLAN=m +CONFIG_JOYSTICK_SPACEORB=m +CONFIG_JOYSTICK_SPACEBALL=m +CONFIG_JOYSTICK_STINGER=m +CONFIG_JOYSTICK_TWIDJOY=m +CONFIG_JOYSTICK_ZHENHUA=m +CONFIG_JOYSTICK_DB9=m +CONFIG_JOYSTICK_GAMECON=m +CONFIG_JOYSTICK_TURBOGRAFX=m +CONFIG_JOYSTICK_AS5011=m +CONFIG_JOYSTICK_JOYDUMP=m +CONFIG_JOYSTICK_XPAD=m +CONFIG_JOYSTICK_XPAD_FF=y +CONFIG_JOYSTICK_XPAD_LEDS=y +CONFIG_JOYSTICK_WALKERA0701=m +# CONFIG_JOYSTICK_PXRC is not set +CONFIG_INPUT_TABLET=y +CONFIG_TABLET_USB_ACECAD=m +CONFIG_TABLET_USB_AIPTEK=m +CONFIG_TABLET_USB_GTCO=m +CONFIG_TABLET_USB_HANWANG=m +CONFIG_TABLET_USB_KBTAB=m +CONFIG_TABLET_USB_PEGASUS=m +CONFIG_TABLET_SERIAL_WACOM4=m +# CONFIG_INPUT_TOUCHSCREEN is not set +CONFIG_INPUT_MISC=y +# CONFIG_INPUT_AD714X is not set +# CONFIG_INPUT_BMA150 is not set +# CONFIG_INPUT_E3X0_BUTTON is not set +CONFIG_INPUT_PCSPKR=m +CONFIG_INPUT_MMA8450=m +CONFIG_INPUT_APANEL=m +CONFIG_INPUT_GP2A=m +# CONFIG_INPUT_GPIO_BEEPER is not set +# CONFIG_INPUT_GPIO_DECODER is not set +CONFIG_INPUT_ATLAS_BTNS=m +CONFIG_INPUT_ATI_REMOTE2=m +CONFIG_INPUT_KEYSPAN_REMOTE=m +CONFIG_INPUT_KXTJ9=m +# CONFIG_INPUT_KXTJ9_POLLED_MODE is not set +CONFIG_INPUT_POWERMATE=m +CONFIG_INPUT_YEALINK=m +CONFIG_INPUT_CM109=m +CONFIG_INPUT_UINPUT=m +# CONFIG_INPUT_PCF8574 is not set +CONFIG_INPUT_GPIO_ROTARY_ENCODER=m +# CONFIG_INPUT_ADXL34X is not set +# CONFIG_INPUT_IMS_PCU is not set +CONFIG_INPUT_CMA3000=m +CONFIG_INPUT_CMA3000_I2C=m +CONFIG_INPUT_IDEAPAD_SLIDEBAR=m +# CONFIG_INPUT_DRV260X_HAPTICS is not set +# CONFIG_INPUT_DRV2665_HAPTICS is not set +# CONFIG_INPUT_DRV2667_HAPTICS is not set +CONFIG_RMI4_CORE=m +# CONFIG_RMI4_I2C is not set +# CONFIG_RMI4_SMB is not set +CONFIG_RMI4_F03=y +CONFIG_RMI4_F03_SERIO=m +CONFIG_RMI4_2D_SENSOR=y +CONFIG_RMI4_F11=y +CONFIG_RMI4_F12=y +CONFIG_RMI4_F30=y +# CONFIG_RMI4_F34 is not set +# CONFIG_RMI4_F54 is not set +# CONFIG_RMI4_F55 is not set + +# +# Hardware I/O ports +# +CONFIG_SERIO=y +CONFIG_ARCH_MIGHT_HAVE_PC_SERIO=y +CONFIG_SERIO_I8042=y +CONFIG_SERIO_SERPORT=y +# CONFIG_SERIO_CT82C710 is not set +# CONFIG_SERIO_PARKBD is not set +# CONFIG_SERIO_PCIPS2 is not set +CONFIG_SERIO_LIBPS2=y +CONFIG_SERIO_RAW=m +CONFIG_SERIO_ALTERA_PS2=m +# CONFIG_SERIO_PS2MULT is not set +CONFIG_SERIO_ARC_PS2=m +# CONFIG_SERIO_GPIO_PS2 is not set +# CONFIG_USERIO is not set +CONFIG_GAMEPORT=m +CONFIG_GAMEPORT_NS558=m +CONFIG_GAMEPORT_L4=m +CONFIG_GAMEPORT_EMU10K1=m +CONFIG_GAMEPORT_FM801=m + +# +# Character devices +# +CONFIG_TTY=y +CONFIG_VT=y +CONFIG_CONSOLE_TRANSLATIONS=y +CONFIG_VT_CONSOLE=y +CONFIG_VT_CONSOLE_SLEEP=y +CONFIG_HW_CONSOLE=y +CONFIG_VT_HW_CONSOLE_BINDING=y +CONFIG_UNIX98_PTYS=y +CONFIG_LEGACY_PTYS=y +CONFIG_LEGACY_PTY_COUNT=0 +CONFIG_SERIAL_NONSTANDARD=y +CONFIG_ROCKETPORT=m +CONFIG_CYCLADES=m +# CONFIG_CYZ_INTR is not set +# CONFIG_MOXA_INTELLIO is not set +# CONFIG_MOXA_SMARTIO is not set +CONFIG_SYNCLINK=m +CONFIG_SYNCLINKMP=m +CONFIG_SYNCLINK_GT=m +CONFIG_NOZOMI=m +# CONFIG_ISI is not set +# CONFIG_N_HDLC is not set +CONFIG_N_GSM=m +# CONFIG_TRACE_SINK is not set +CONFIG_DEVMEM=y +# CONFIG_DEVKMEM is not set + +# +# Serial drivers +# +CONFIG_SERIAL_EARLYCON=y +CONFIG_SERIAL_8250=y +# CONFIG_SERIAL_8250_DEPRECATED_OPTIONS is not set +CONFIG_SERIAL_8250_PNP=y +# CONFIG_SERIAL_8250_FINTEK is not set +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_SERIAL_8250_DMA=y +CONFIG_SERIAL_8250_PCI=y +CONFIG_SERIAL_8250_EXAR=y +CONFIG_SERIAL_8250_CS=m +CONFIG_SERIAL_8250_NR_UARTS=32 +CONFIG_SERIAL_8250_RUNTIME_UARTS=4 +CONFIG_SERIAL_8250_EXTENDED=y +CONFIG_SERIAL_8250_MANY_PORTS=y +CONFIG_SERIAL_8250_SHARE_IRQ=y +# CONFIG_SERIAL_8250_DETECT_IRQ is not set +CONFIG_SERIAL_8250_RSA=y +# CONFIG_SERIAL_8250_DW is not set +# CONFIG_SERIAL_8250_RT288X is not set +CONFIG_SERIAL_8250_LPSS=y +CONFIG_SERIAL_8250_MID=y +# CONFIG_SERIAL_8250_MOXA is not set + +# +# Non-8250 serial port support +# +# CONFIG_SERIAL_UARTLITE is not set +CONFIG_SERIAL_CORE=y +CONFIG_SERIAL_CORE_CONSOLE=y +CONFIG_SERIAL_JSM=m +# CONFIG_SERIAL_SCCNXP is not set +# CONFIG_SERIAL_SC16IS7XX is not set +# CONFIG_SERIAL_ALTERA_JTAGUART is not set +# CONFIG_SERIAL_ALTERA_UART is not set +CONFIG_SERIAL_ARC=m +CONFIG_SERIAL_ARC_NR_PORTS=1 +# CONFIG_SERIAL_RP2 is not set +# CONFIG_SERIAL_FSL_LPUART is not set +# CONFIG_SERIAL_DEV_BUS is not set +CONFIG_PRINTER=m +CONFIG_LP_CONSOLE=y +CONFIG_PPDEV=m +CONFIG_HVC_DRIVER=y +CONFIG_VIRTIO_CONSOLE=m +CONFIG_IPMI_HANDLER=m +CONFIG_IPMI_DMI_DECODE=y +# CONFIG_IPMI_PANIC_EVENT is not set +CONFIG_IPMI_DEVICE_INTERFACE=m +CONFIG_IPMI_SI=m +CONFIG_IPMI_SSIF=m +CONFIG_IPMI_WATCHDOG=m +CONFIG_IPMI_POWEROFF=m +CONFIG_HW_RANDOM=y +CONFIG_HW_RANDOM_TIMERIOMEM=m +CONFIG_HW_RANDOM_INTEL=m +CONFIG_HW_RANDOM_AMD=m +CONFIG_HW_RANDOM_VIA=m +CONFIG_HW_RANDOM_VIRTIO=m +CONFIG_NVRAM=y +CONFIG_R3964=m +# CONFIG_APPLICOM is not set + +# +# PCMCIA character devices +# +# CONFIG_SYNCLINK_CS is not set +CONFIG_CARDMAN_4000=m +CONFIG_CARDMAN_4040=m +# CONFIG_SCR24X is not set +CONFIG_IPWIRELESS=m +CONFIG_MWAVE=m +CONFIG_RAW_DRIVER=y +CONFIG_MAX_RAW_DEVS=8192 +CONFIG_HPET=y +# CONFIG_HPET_MMAP is not set +CONFIG_HANGCHECK_TIMER=m +CONFIG_TCG_TPM=m +CONFIG_HW_RANDOM_TPM=y +CONFIG_TCG_TIS_CORE=m +CONFIG_TCG_TIS=m +# CONFIG_TCG_TIS_I2C_ATMEL is not set +# CONFIG_TCG_TIS_I2C_INFINEON is not set +# CONFIG_TCG_TIS_I2C_NUVOTON is not set +CONFIG_TCG_NSC=m +CONFIG_TCG_ATMEL=m +CONFIG_TCG_INFINEON=m +# CONFIG_TCG_CRB is not set +# CONFIG_TCG_VTPM_PROXY is not set +# CONFIG_TCG_TIS_ST33ZP24_I2C is not set +CONFIG_TELCLOCK=m +CONFIG_DEVPORT=y +# CONFIG_XILLYBUS is not set +# CONFIG_RANDOM_TRUST_CPU is not set + +# +# I2C support +# +CONFIG_I2C=y +CONFIG_ACPI_I2C_OPREGION=y +CONFIG_I2C_BOARDINFO=y +CONFIG_I2C_COMPAT=y +CONFIG_I2C_CHARDEV=m +CONFIG_I2C_MUX=m + +# +# Multiplexer I2C Chip support +# +# CONFIG_I2C_MUX_GPIO is not set +# CONFIG_I2C_MUX_LTC4306 is not set +# CONFIG_I2C_MUX_PCA9541 is not set +# CONFIG_I2C_MUX_PCA954x is not set +# CONFIG_I2C_MUX_REG is not set +# CONFIG_I2C_MUX_MLXCPLD is not set +CONFIG_I2C_HELPER_AUTO=y +CONFIG_I2C_SMBUS=m +CONFIG_I2C_ALGOBIT=m +CONFIG_I2C_ALGOPCA=m + +# +# I2C Hardware Bus support +# + +# +# PC SMBus host controller drivers +# +CONFIG_I2C_ALI1535=m +CONFIG_I2C_ALI1563=m +CONFIG_I2C_ALI15X3=m +CONFIG_I2C_AMD756=m +CONFIG_I2C_AMD756_S4882=m +CONFIG_I2C_AMD8111=m +CONFIG_I2C_I801=m +CONFIG_I2C_ISCH=m +CONFIG_I2C_ISMT=m +CONFIG_I2C_PIIX4=m +CONFIG_I2C_NFORCE2=m +CONFIG_I2C_NFORCE2_S4985=m +# CONFIG_I2C_NVIDIA_GPU is not set +CONFIG_I2C_SIS5595=m +CONFIG_I2C_SIS630=m +CONFIG_I2C_SIS96X=m +CONFIG_I2C_VIA=m +CONFIG_I2C_VIAPRO=m + +# +# ACPI drivers +# +CONFIG_I2C_SCMI=m + +# +# I2C system bus drivers (mostly embedded / system-on-chip) +# +# CONFIG_I2C_CBUS_GPIO is not set +CONFIG_I2C_DESIGNWARE_CORE=m +CONFIG_I2C_DESIGNWARE_PLATFORM=m +# CONFIG_I2C_DESIGNWARE_SLAVE is not set +CONFIG_I2C_DESIGNWARE_PCI=m +CONFIG_I2C_DESIGNWARE_BAYTRAIL=y +# CONFIG_I2C_EMEV2 is not set +# CONFIG_I2C_GPIO is not set +CONFIG_I2C_OCORES=m +CONFIG_I2C_PCA_PLATFORM=m +CONFIG_I2C_SIMTEC=m +CONFIG_I2C_XILINX=m + +# +# External I2C/SMBus adapter drivers +# +CONFIG_I2C_DIOLAN_U2C=m +CONFIG_I2C_PARPORT=m +CONFIG_I2C_PARPORT_LIGHT=m +CONFIG_I2C_ROBOTFUZZ_OSIF=m +CONFIG_I2C_TAOS_EVM=m +CONFIG_I2C_TINY_USB=m +CONFIG_I2C_VIPERBOARD=m + +# +# Other I2C/SMBus bus drivers +# +# CONFIG_I2C_MLXCPLD is not set +CONFIG_I2C_STUB=m +CONFIG_I2C_SLAVE=y +CONFIG_I2C_SLAVE_EEPROM=m +# CONFIG_I2C_DEBUG_CORE is not set +# CONFIG_I2C_DEBUG_ALGO is not set +# CONFIG_I2C_DEBUG_BUS is not set +# CONFIG_SPI is not set +# CONFIG_SPMI is not set +# CONFIG_HSI is not set +CONFIG_PPS=y +# CONFIG_PPS_DEBUG is not set + +# +# PPS clients support +# +# CONFIG_PPS_CLIENT_KTIMER is not set +CONFIG_PPS_CLIENT_LDISC=m +CONFIG_PPS_CLIENT_PARPORT=m +CONFIG_PPS_CLIENT_GPIO=m + +# +# PPS generators support +# + +# +# PTP clock support +# +CONFIG_PTP_1588_CLOCK=y + +# +# Enable PHYLIB and NETWORK_PHY_TIMESTAMPING to see the additional clocks. +# +CONFIG_PINCTRL=y +CONFIG_PINMUX=y +CONFIG_PINCONF=y +CONFIG_GENERIC_PINCONF=y +# CONFIG_DEBUG_PINCTRL is not set +# CONFIG_PINCTRL_AMD is not set +# CONFIG_PINCTRL_MCP23S08 is not set +# CONFIG_PINCTRL_SX150X is not set +CONFIG_PINCTRL_BAYTRAIL=y +CONFIG_PINCTRL_CHERRYVIEW=m +# CONFIG_PINCTRL_BROXTON is not set +# CONFIG_PINCTRL_CANNONLAKE is not set +# CONFIG_PINCTRL_CEDARFORK is not set +# CONFIG_PINCTRL_DENVERTON is not set +# CONFIG_PINCTRL_GEMINILAKE is not set +# CONFIG_PINCTRL_ICELAKE is not set +# CONFIG_PINCTRL_LEWISBURG is not set +# CONFIG_PINCTRL_SUNRISEPOINT is not set +CONFIG_GPIOLIB=y +CONFIG_GPIOLIB_FASTPATH_LIMIT=512 +CONFIG_GPIO_ACPI=y +CONFIG_GPIOLIB_IRQCHIP=y +# CONFIG_DEBUG_GPIO is not set +CONFIG_GPIO_SYSFS=y + +# +# Memory mapped GPIO drivers +# +# CONFIG_GPIO_AMDPT is not set +# CONFIG_GPIO_DWAPB is not set +# CONFIG_GPIO_EXAR is not set +# CONFIG_GPIO_GENERIC_PLATFORM is not set +CONFIG_GPIO_ICH=m +# CONFIG_GPIO_LYNXPOINT is not set +# CONFIG_GPIO_MB86S7X is not set +# CONFIG_GPIO_MOCKUP is not set +# CONFIG_GPIO_VX855 is not set + +# +# Port-mapped I/O GPIO drivers +# +# CONFIG_GPIO_F7188X is not set +# CONFIG_GPIO_IT87 is not set +# CONFIG_GPIO_SCH is not set +# CONFIG_GPIO_SCH311X is not set +# CONFIG_GPIO_WINBOND is not set +# CONFIG_GPIO_WS16C48 is not set + +# +# I2C GPIO expanders +# +# CONFIG_GPIO_ADP5588 is not set +# CONFIG_GPIO_MAX7300 is not set +# CONFIG_GPIO_MAX732X is not set +# CONFIG_GPIO_PCA953X is not set +# CONFIG_GPIO_PCF857X is not set +# CONFIG_GPIO_TPIC2810 is not set + +# +# MFD GPIO expanders +# + +# +# PCI GPIO expanders +# +# CONFIG_GPIO_AMD8111 is not set +# CONFIG_GPIO_ML_IOH is not set +# CONFIG_GPIO_PCI_IDIO_16 is not set +# CONFIG_GPIO_PCIE_IDIO_24 is not set +# CONFIG_GPIO_RDC321X is not set + +# +# USB GPIO expanders +# +CONFIG_GPIO_VIPERBOARD=m +# CONFIG_W1 is not set +# CONFIG_POWER_AVS is not set +CONFIG_POWER_RESET=y +# CONFIG_POWER_RESET_RESTART is not set +CONFIG_POWER_SUPPLY=y +# CONFIG_POWER_SUPPLY_DEBUG is not set +# CONFIG_PDA_POWER is not set +# CONFIG_GENERIC_ADC_BATTERY is not set +# CONFIG_TEST_POWER is not set +# CONFIG_CHARGER_ADP5061 is not set +# CONFIG_BATTERY_DS2780 is not set +# CONFIG_BATTERY_DS2781 is not set +# CONFIG_BATTERY_DS2782 is not set +# CONFIG_BATTERY_SBS is not set +# CONFIG_CHARGER_SBS is not set +# CONFIG_MANAGER_SBS is not set +# CONFIG_BATTERY_BQ27XXX is not set +# CONFIG_BATTERY_MAX17040 is not set +# CONFIG_BATTERY_MAX17042 is not set +# CONFIG_CHARGER_ISP1704 is not set +# CONFIG_CHARGER_MAX8903 is not set +# CONFIG_CHARGER_LP8727 is not set +# CONFIG_CHARGER_GPIO is not set +# CONFIG_CHARGER_LTC3651 is not set +# CONFIG_CHARGER_BQ2415X is not set +# CONFIG_CHARGER_BQ24190 is not set +# CONFIG_CHARGER_BQ24257 is not set +# CONFIG_CHARGER_BQ24735 is not set +# CONFIG_CHARGER_BQ25890 is not set +# CONFIG_CHARGER_SMB347 is not set +# CONFIG_BATTERY_GAUGE_LTC2941 is not set +# CONFIG_CHARGER_RT9455 is not set +CONFIG_HWMON=y +CONFIG_HWMON_VID=m +# CONFIG_HWMON_DEBUG_CHIP is not set + +# +# Native drivers +# +CONFIG_SENSORS_ABITUGURU=m +CONFIG_SENSORS_ABITUGURU3=m +CONFIG_SENSORS_AD7414=m +CONFIG_SENSORS_AD7418=m +CONFIG_SENSORS_ADM1021=m +CONFIG_SENSORS_ADM1025=m +CONFIG_SENSORS_ADM1026=m +CONFIG_SENSORS_ADM1029=m +CONFIG_SENSORS_ADM1031=m +CONFIG_SENSORS_ADM9240=m +CONFIG_SENSORS_ADT7X10=m +CONFIG_SENSORS_ADT7410=m +CONFIG_SENSORS_ADT7411=m +CONFIG_SENSORS_ADT7462=m +CONFIG_SENSORS_ADT7470=m +CONFIG_SENSORS_ADT7475=m +CONFIG_SENSORS_ASC7621=m +CONFIG_SENSORS_K8TEMP=m +CONFIG_SENSORS_K10TEMP=m +CONFIG_SENSORS_FAM15H_POWER=m +CONFIG_SENSORS_APPLESMC=m +CONFIG_SENSORS_ASB100=m +# CONFIG_SENSORS_ASPEED is not set +CONFIG_SENSORS_ATXP1=m +CONFIG_SENSORS_DS620=m +CONFIG_SENSORS_DS1621=m +CONFIG_SENSORS_DELL_SMM=m +CONFIG_SENSORS_I5K_AMB=m +CONFIG_SENSORS_F71805F=m +CONFIG_SENSORS_F71882FG=m +CONFIG_SENSORS_F75375S=m +CONFIG_SENSORS_FSCHMD=m +# CONFIG_SENSORS_FTSTEUTATES is not set +CONFIG_SENSORS_GL518SM=m +CONFIG_SENSORS_GL520SM=m +CONFIG_SENSORS_G760A=m +CONFIG_SENSORS_G762=m +# CONFIG_SENSORS_HIH6130 is not set +CONFIG_SENSORS_IBMAEM=m +CONFIG_SENSORS_IBMPEX=m +# CONFIG_SENSORS_IIO_HWMON is not set +CONFIG_SENSORS_I5500=m +CONFIG_SENSORS_CORETEMP=m +CONFIG_SENSORS_IT87=m +# CONFIG_SENSORS_JC42 is not set +CONFIG_SENSORS_POWR1220=m +CONFIG_SENSORS_LINEAGE=m +CONFIG_SENSORS_LTC2945=m +# CONFIG_SENSORS_LTC2990 is not set +CONFIG_SENSORS_LTC4151=m +CONFIG_SENSORS_LTC4215=m +CONFIG_SENSORS_LTC4222=m +CONFIG_SENSORS_LTC4245=m +CONFIG_SENSORS_LTC4260=m +CONFIG_SENSORS_LTC4261=m +CONFIG_SENSORS_MAX16065=m +CONFIG_SENSORS_MAX1619=m +CONFIG_SENSORS_MAX1668=m +CONFIG_SENSORS_MAX197=m +CONFIG_SENSORS_MAX6621=m +CONFIG_SENSORS_MAX6639=m +CONFIG_SENSORS_MAX6642=m +CONFIG_SENSORS_MAX6650=m +CONFIG_SENSORS_MAX6697=m +# CONFIG_SENSORS_MAX31790 is not set +CONFIG_SENSORS_MCP3021=m +# CONFIG_SENSORS_TC654 is not set +CONFIG_SENSORS_LM63=m +CONFIG_SENSORS_LM73=m +CONFIG_SENSORS_LM75=m +CONFIG_SENSORS_LM77=m +CONFIG_SENSORS_LM78=m +CONFIG_SENSORS_LM80=m +CONFIG_SENSORS_LM83=m +CONFIG_SENSORS_LM85=m +CONFIG_SENSORS_LM87=m +CONFIG_SENSORS_LM90=m +CONFIG_SENSORS_LM92=m +CONFIG_SENSORS_LM93=m +CONFIG_SENSORS_LM95234=m +CONFIG_SENSORS_LM95241=m +CONFIG_SENSORS_LM95245=m +CONFIG_SENSORS_PC87360=m +CONFIG_SENSORS_PC87427=m +CONFIG_SENSORS_NTC_THERMISTOR=m +CONFIG_SENSORS_NCT6683=m +CONFIG_SENSORS_NCT6775=m +CONFIG_SENSORS_NCT7802=m +# CONFIG_SENSORS_NCT7904 is not set +# CONFIG_SENSORS_NPCM7XX is not set +CONFIG_SENSORS_PCF8591=m +CONFIG_PMBUS=m +CONFIG_SENSORS_PMBUS=m +CONFIG_SENSORS_ADM1275=m +# CONFIG_SENSORS_IBM_CFFPS is not set +CONFIG_SENSORS_IR35221=m +CONFIG_SENSORS_LM25066=m +CONFIG_SENSORS_LTC2978=m +# CONFIG_SENSORS_LTC3815 is not set +CONFIG_SENSORS_MAX16064=m +# CONFIG_SENSORS_MAX20751 is not set +CONFIG_SENSORS_MAX31785=m +CONFIG_SENSORS_MAX34440=m +CONFIG_SENSORS_MAX8688=m +CONFIG_SENSORS_TPS40422=m +# CONFIG_SENSORS_TPS53679 is not set +CONFIG_SENSORS_UCD9000=m +CONFIG_SENSORS_UCD9200=m +CONFIG_SENSORS_ZL6100=m +CONFIG_SENSORS_SHT15=m +CONFIG_SENSORS_SHT21=m +# CONFIG_SENSORS_SHT3x is not set +CONFIG_SENSORS_SHTC1=m +CONFIG_SENSORS_SIS5595=m +CONFIG_SENSORS_DME1737=m +CONFIG_SENSORS_EMC1403=m +# CONFIG_SENSORS_EMC2103 is not set +CONFIG_SENSORS_EMC6W201=m +CONFIG_SENSORS_SMSC47M1=m +CONFIG_SENSORS_SMSC47M192=m +CONFIG_SENSORS_SMSC47B397=m +CONFIG_SENSORS_SCH56XX_COMMON=m +CONFIG_SENSORS_SCH5627=m +CONFIG_SENSORS_SCH5636=m +# CONFIG_SENSORS_STTS751 is not set +# CONFIG_SENSORS_SMM665 is not set +CONFIG_SENSORS_ADC128D818=m +CONFIG_SENSORS_ADS1015=m +CONFIG_SENSORS_ADS7828=m +CONFIG_SENSORS_AMC6821=m +CONFIG_SENSORS_INA209=m +CONFIG_SENSORS_INA2XX=m +# CONFIG_SENSORS_INA3221 is not set +CONFIG_SENSORS_TC74=m +CONFIG_SENSORS_THMC50=m +CONFIG_SENSORS_TMP102=m +CONFIG_SENSORS_TMP103=m +# CONFIG_SENSORS_TMP108 is not set +CONFIG_SENSORS_TMP401=m +CONFIG_SENSORS_TMP421=m +CONFIG_SENSORS_VIA_CPUTEMP=m +CONFIG_SENSORS_VIA686A=m +CONFIG_SENSORS_VT1211=m +CONFIG_SENSORS_VT8231=m +# CONFIG_SENSORS_W83773G is not set +CONFIG_SENSORS_W83781D=m +CONFIG_SENSORS_W83791D=m +CONFIG_SENSORS_W83792D=m +CONFIG_SENSORS_W83793=m +CONFIG_SENSORS_W83795=m +# CONFIG_SENSORS_W83795_FANCTRL is not set +CONFIG_SENSORS_W83L785TS=m +CONFIG_SENSORS_W83L786NG=m +CONFIG_SENSORS_W83627HF=m +CONFIG_SENSORS_W83627EHF=m +# CONFIG_SENSORS_XGENE is not set + +# +# ACPI drivers +# +CONFIG_SENSORS_ACPI_POWER=m +CONFIG_SENSORS_ATK0110=m +CONFIG_THERMAL=y +# CONFIG_THERMAL_STATISTICS is not set +CONFIG_THERMAL_EMERGENCY_POWEROFF_DELAY_MS=0 +CONFIG_THERMAL_HWMON=y +CONFIG_THERMAL_WRITABLE_TRIPS=y +CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y +# CONFIG_THERMAL_DEFAULT_GOV_FAIR_SHARE is not set +# CONFIG_THERMAL_DEFAULT_GOV_USER_SPACE is not set +# CONFIG_THERMAL_DEFAULT_GOV_POWER_ALLOCATOR is not set +CONFIG_THERMAL_GOV_FAIR_SHARE=y +CONFIG_THERMAL_GOV_STEP_WISE=y +CONFIG_THERMAL_GOV_BANG_BANG=y +CONFIG_THERMAL_GOV_USER_SPACE=y +# CONFIG_THERMAL_GOV_POWER_ALLOCATOR is not set +# CONFIG_CLOCK_THERMAL is not set +# CONFIG_DEVFREQ_THERMAL is not set +# CONFIG_THERMAL_EMULATION is not set +# CONFIG_INTEL_POWERCLAMP is not set +CONFIG_X86_PKG_TEMP_THERMAL=m +CONFIG_INTEL_SOC_DTS_IOSF_CORE=m +CONFIG_INTEL_SOC_DTS_THERMAL=m + +# +# ACPI INT340X thermal drivers +# +CONFIG_INT340X_THERMAL=m +CONFIG_ACPI_THERMAL_REL=m +# CONFIG_INT3406_THERMAL is not set +# CONFIG_INTEL_PCH_THERMAL is not set +# CONFIG_GENERIC_ADC_THERMAL is not set +CONFIG_WATCHDOG=y +CONFIG_WATCHDOG_CORE=y +# CONFIG_WATCHDOG_NOWAYOUT is not set +CONFIG_WATCHDOG_HANDLE_BOOT_ENABLED=y +# CONFIG_WATCHDOG_SYSFS is not set + +# +# Watchdog Device Drivers +# +CONFIG_SOFT_WATCHDOG=m +# CONFIG_WDAT_WDT is not set +# CONFIG_XILINX_WATCHDOG is not set +# CONFIG_ZIIRAVE_WATCHDOG is not set +# CONFIG_CADENCE_WATCHDOG is not set +# CONFIG_DW_WATCHDOG is not set +# CONFIG_MAX63XX_WATCHDOG is not set +# CONFIG_ACQUIRE_WDT is not set +# CONFIG_ADVANTECH_WDT is not set +CONFIG_ALIM1535_WDT=m +CONFIG_ALIM7101_WDT=m +# CONFIG_EBC_C384_WDT is not set +CONFIG_F71808E_WDT=m +CONFIG_SP5100_TCO=m +CONFIG_SBC_FITPC2_WATCHDOG=m +# CONFIG_EUROTECH_WDT is not set +CONFIG_IB700_WDT=m +CONFIG_IBMASR=m +# CONFIG_WAFER_WDT is not set +CONFIG_I6300ESB_WDT=m +CONFIG_IE6XX_WDT=m +CONFIG_ITCO_WDT=m +CONFIG_ITCO_VENDOR_SUPPORT=y +CONFIG_IT8712F_WDT=m +CONFIG_IT87_WDT=m +CONFIG_HP_WATCHDOG=m +CONFIG_HPWDT_NMI_DECODING=y +# CONFIG_SC1200_WDT is not set +# CONFIG_PC87413_WDT is not set +CONFIG_NV_TCO=m +# CONFIG_60XX_WDT is not set +# CONFIG_CPU5_WDT is not set +CONFIG_SMSC_SCH311X_WDT=m +# CONFIG_SMSC37B787_WDT is not set +CONFIG_VIA_WDT=m +CONFIG_W83627HF_WDT=m +CONFIG_W83877F_WDT=m +CONFIG_W83977F_WDT=m +CONFIG_MACHZ_WDT=m +# CONFIG_SBC_EPX_C3_WATCHDOG is not set +# CONFIG_INTEL_MEI_WDT is not set +# CONFIG_NI903X_WDT is not set +# CONFIG_NIC7018_WDT is not set +# CONFIG_MEN_A21_WDT is not set + +# +# PCI-based Watchdog Cards +# +CONFIG_PCIPCWATCHDOG=m +CONFIG_WDTPCI=m + +# +# USB-based Watchdog Cards +# +CONFIG_USBPCWATCHDOG=m + +# +# Watchdog Pretimeout Governors +# +# CONFIG_WATCHDOG_PRETIMEOUT_GOV is not set +CONFIG_SSB_POSSIBLE=y +CONFIG_SSB=m +CONFIG_SSB_SPROM=y +CONFIG_SSB_BLOCKIO=y +CONFIG_SSB_PCIHOST_POSSIBLE=y +CONFIG_SSB_PCIHOST=y +CONFIG_SSB_B43_PCI_BRIDGE=y +CONFIG_SSB_PCMCIAHOST_POSSIBLE=y +CONFIG_SSB_PCMCIAHOST=y +CONFIG_SSB_SDIOHOST_POSSIBLE=y +CONFIG_SSB_SDIOHOST=y +CONFIG_SSB_DRIVER_PCICORE_POSSIBLE=y +CONFIG_SSB_DRIVER_PCICORE=y +CONFIG_SSB_DRIVER_GPIO=y +CONFIG_BCMA_POSSIBLE=y +CONFIG_BCMA=m +CONFIG_BCMA_BLOCKIO=y +CONFIG_BCMA_HOST_PCI_POSSIBLE=y +CONFIG_BCMA_HOST_PCI=y +# CONFIG_BCMA_HOST_SOC is not set +CONFIG_BCMA_DRIVER_PCI=y +CONFIG_BCMA_DRIVER_GMAC_CMN=y +CONFIG_BCMA_DRIVER_GPIO=y +# CONFIG_BCMA_DEBUG is not set + +# +# Multifunction device drivers +# +CONFIG_MFD_CORE=m +# CONFIG_MFD_AS3711 is not set +# CONFIG_PMIC_ADP5520 is not set +# CONFIG_MFD_AAT2870_CORE is not set +# CONFIG_MFD_AT91_USART is not set +# CONFIG_MFD_BCM590XX is not set +# CONFIG_MFD_BD9571MWV is not set +# CONFIG_MFD_AXP20X_I2C is not set +# CONFIG_MFD_CROS_EC is not set +# CONFIG_MFD_MADERA is not set +# CONFIG_PMIC_DA903X is not set +# CONFIG_MFD_DA9052_I2C is not set +# CONFIG_MFD_DA9055 is not set +# CONFIG_MFD_DA9062 is not set +# CONFIG_MFD_DA9063 is not set +# CONFIG_MFD_DA9150 is not set +# CONFIG_MFD_DLN2 is not set +# CONFIG_MFD_MC13XXX_I2C is not set +# CONFIG_HTC_PASIC3 is not set +# CONFIG_HTC_I2CPLD is not set +# CONFIG_MFD_INTEL_QUARK_I2C_GPIO is not set +CONFIG_LPC_ICH=m +CONFIG_LPC_SCH=m +# CONFIG_INTEL_SOC_PMIC is not set +# CONFIG_INTEL_SOC_PMIC_BXTWC is not set +# CONFIG_INTEL_SOC_PMIC_CHTWC is not set +# CONFIG_INTEL_SOC_PMIC_CHTDC_TI is not set +# CONFIG_MFD_INTEL_LPSS_ACPI is not set +# CONFIG_MFD_INTEL_LPSS_PCI is not set +# CONFIG_MFD_JANZ_CMODIO is not set +# CONFIG_MFD_KEMPLD is not set +# CONFIG_MFD_88PM800 is not set +# CONFIG_MFD_88PM805 is not set +# CONFIG_MFD_88PM860X is not set +# CONFIG_MFD_MAX14577 is not set +# CONFIG_MFD_MAX77693 is not set +# CONFIG_MFD_MAX77843 is not set +# CONFIG_MFD_MAX8907 is not set +# CONFIG_MFD_MAX8925 is not set +# CONFIG_MFD_MAX8997 is not set +# CONFIG_MFD_MAX8998 is not set +# CONFIG_MFD_MT6397 is not set +# CONFIG_MFD_MENF21BMC is not set +CONFIG_MFD_VIPERBOARD=m +# CONFIG_MFD_RETU is not set +# CONFIG_MFD_PCF50633 is not set +# CONFIG_UCB1400_CORE is not set +# CONFIG_MFD_RDC321X is not set +# CONFIG_MFD_RT5033 is not set +# CONFIG_MFD_RC5T583 is not set +# CONFIG_MFD_SEC_CORE is not set +# CONFIG_MFD_SI476X_CORE is not set +CONFIG_MFD_SM501=m +CONFIG_MFD_SM501_GPIO=y +# CONFIG_MFD_SKY81452 is not set +# CONFIG_MFD_SMSC is not set +# CONFIG_ABX500_CORE is not set +# CONFIG_MFD_SYSCON is not set +# CONFIG_MFD_TI_AM335X_TSCADC is not set +# CONFIG_MFD_LP3943 is not set +# CONFIG_MFD_LP8788 is not set +# CONFIG_MFD_TI_LMU is not set +# CONFIG_MFD_PALMAS is not set +# CONFIG_TPS6105X is not set +# CONFIG_TPS65010 is not set +# CONFIG_TPS6507X is not set +# CONFIG_MFD_TPS65086 is not set +# CONFIG_MFD_TPS65090 is not set +# CONFIG_MFD_TPS68470 is not set +# CONFIG_MFD_TI_LP873X is not set +# CONFIG_MFD_TPS6586X is not set +# CONFIG_MFD_TPS65910 is not set +# CONFIG_MFD_TPS65912_I2C is not set +# CONFIG_MFD_TPS80031 is not set +# CONFIG_TWL4030_CORE is not set +# CONFIG_TWL6040_CORE is not set +CONFIG_MFD_WL1273_CORE=m +# CONFIG_MFD_LM3533 is not set +CONFIG_MFD_VX855=m +# CONFIG_MFD_ARIZONA_I2C is not set +# CONFIG_MFD_WM8400 is not set +# CONFIG_MFD_WM831X_I2C is not set +# CONFIG_MFD_WM8350_I2C is not set +# CONFIG_MFD_WM8994 is not set +# CONFIG_REGULATOR is not set +CONFIG_RC_CORE=m +CONFIG_RC_MAP=m +CONFIG_LIRC=y +CONFIG_RC_DECODERS=y +CONFIG_IR_NEC_DECODER=m +CONFIG_IR_RC5_DECODER=m +CONFIG_IR_RC6_DECODER=m +CONFIG_IR_JVC_DECODER=m +CONFIG_IR_SONY_DECODER=m +CONFIG_IR_SANYO_DECODER=m +CONFIG_IR_SHARP_DECODER=m +CONFIG_IR_MCE_KBD_DECODER=m +CONFIG_IR_XMP_DECODER=m +# CONFIG_IR_IMON_DECODER is not set +CONFIG_RC_DEVICES=y +CONFIG_RC_ATI_REMOTE=m +CONFIG_IR_ENE=m +CONFIG_IR_IMON=m +# CONFIG_IR_IMON_RAW is not set +CONFIG_IR_MCEUSB=m +CONFIG_IR_ITE_CIR=m +CONFIG_IR_FINTEK=m +CONFIG_IR_NUVOTON=m +CONFIG_IR_REDRAT3=m +CONFIG_IR_STREAMZAP=m +CONFIG_IR_WINBOND_CIR=m +CONFIG_IR_IGORPLUGUSB=m +CONFIG_IR_IGUANA=m +CONFIG_IR_TTUSBIR=m +CONFIG_RC_LOOPBACK=m +# CONFIG_IR_SERIAL is not set +# CONFIG_IR_SIR is not set +CONFIG_MEDIA_SUPPORT=m + +# +# Multimedia core support +# +CONFIG_MEDIA_CAMERA_SUPPORT=y +CONFIG_MEDIA_ANALOG_TV_SUPPORT=y +CONFIG_MEDIA_DIGITAL_TV_SUPPORT=y +CONFIG_MEDIA_RADIO_SUPPORT=y +CONFIG_MEDIA_SDR_SUPPORT=y +# CONFIG_MEDIA_CEC_SUPPORT is not set +CONFIG_MEDIA_CONTROLLER=y +# CONFIG_MEDIA_CONTROLLER_DVB is not set +# CONFIG_MEDIA_CONTROLLER_REQUEST_API is not set +CONFIG_VIDEO_DEV=m +CONFIG_VIDEO_V4L2_SUBDEV_API=y +CONFIG_VIDEO_V4L2=m +# CONFIG_VIDEO_ADV_DEBUG is not set +# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set +# CONFIG_VIDEO_PCI_SKELETON is not set +CONFIG_VIDEO_TUNER=m +CONFIG_V4L2_MEM2MEM_DEV=m +CONFIG_V4L2_FWNODE=m +CONFIG_VIDEOBUF_GEN=m +CONFIG_VIDEOBUF_DMA_SG=m +CONFIG_VIDEOBUF_VMALLOC=m +CONFIG_DVB_CORE=m +# CONFIG_DVB_MMAP is not set +CONFIG_DVB_NET=y +CONFIG_TTPCI_EEPROM=m +CONFIG_DVB_MAX_ADAPTERS=8 +# CONFIG_DVB_DYNAMIC_MINORS is not set +# CONFIG_DVB_DEMUX_SECTION_LOSS_LOG is not set +# CONFIG_DVB_ULE_DEBUG is not set + +# +# Media drivers +# +CONFIG_MEDIA_USB_SUPPORT=y + +# +# Webcam devices +# +CONFIG_USB_VIDEO_CLASS=m +CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y +CONFIG_USB_GSPCA=m +CONFIG_USB_M5602=m +CONFIG_USB_STV06XX=m +CONFIG_USB_GL860=m +CONFIG_USB_GSPCA_BENQ=m +CONFIG_USB_GSPCA_CONEX=m +CONFIG_USB_GSPCA_CPIA1=m +CONFIG_USB_GSPCA_DTCS033=m +CONFIG_USB_GSPCA_ETOMS=m +CONFIG_USB_GSPCA_FINEPIX=m +CONFIG_USB_GSPCA_JEILINJ=m +CONFIG_USB_GSPCA_JL2005BCD=m +CONFIG_USB_GSPCA_KINECT=m +CONFIG_USB_GSPCA_KONICA=m +CONFIG_USB_GSPCA_MARS=m +CONFIG_USB_GSPCA_MR97310A=m +CONFIG_USB_GSPCA_NW80X=m +CONFIG_USB_GSPCA_OV519=m +CONFIG_USB_GSPCA_OV534=m +CONFIG_USB_GSPCA_OV534_9=m +CONFIG_USB_GSPCA_PAC207=m +CONFIG_USB_GSPCA_PAC7302=m +CONFIG_USB_GSPCA_PAC7311=m +CONFIG_USB_GSPCA_SE401=m +CONFIG_USB_GSPCA_SN9C2028=m +CONFIG_USB_GSPCA_SN9C20X=m +CONFIG_USB_GSPCA_SONIXB=m +CONFIG_USB_GSPCA_SONIXJ=m +CONFIG_USB_GSPCA_SPCA500=m +CONFIG_USB_GSPCA_SPCA501=m +CONFIG_USB_GSPCA_SPCA505=m +CONFIG_USB_GSPCA_SPCA506=m +CONFIG_USB_GSPCA_SPCA508=m +CONFIG_USB_GSPCA_SPCA561=m +CONFIG_USB_GSPCA_SPCA1528=m +CONFIG_USB_GSPCA_SQ905=m +CONFIG_USB_GSPCA_SQ905C=m +CONFIG_USB_GSPCA_SQ930X=m +CONFIG_USB_GSPCA_STK014=m +CONFIG_USB_GSPCA_STK1135=m +CONFIG_USB_GSPCA_STV0680=m +CONFIG_USB_GSPCA_SUNPLUS=m +CONFIG_USB_GSPCA_T613=m +CONFIG_USB_GSPCA_TOPRO=m +CONFIG_USB_GSPCA_TOUPTEK=m +CONFIG_USB_GSPCA_TV8532=m +CONFIG_USB_GSPCA_VC032X=m +CONFIG_USB_GSPCA_VICAM=m +CONFIG_USB_GSPCA_XIRLINK_CIT=m +CONFIG_USB_GSPCA_ZC3XX=m +CONFIG_USB_PWC=m +# CONFIG_USB_PWC_DEBUG is not set +CONFIG_USB_PWC_INPUT_EVDEV=y +CONFIG_VIDEO_CPIA2=m +CONFIG_USB_ZR364XX=m +CONFIG_USB_STKWEBCAM=m +CONFIG_USB_S2255=m +CONFIG_VIDEO_USBTV=m + +# +# Analog TV USB devices +# +CONFIG_VIDEO_PVRUSB2=m +CONFIG_VIDEO_PVRUSB2_SYSFS=y +CONFIG_VIDEO_PVRUSB2_DVB=y +# CONFIG_VIDEO_PVRUSB2_DEBUGIFC is not set +CONFIG_VIDEO_HDPVR=m +CONFIG_VIDEO_USBVISION=m +CONFIG_VIDEO_STK1160_COMMON=m +CONFIG_VIDEO_STK1160=m +CONFIG_VIDEO_GO7007=m +CONFIG_VIDEO_GO7007_USB=m +CONFIG_VIDEO_GO7007_LOADER=m +# CONFIG_VIDEO_GO7007_USB_S2250_BOARD is not set + +# +# Analog/digital TV USB devices +# +CONFIG_VIDEO_AU0828=m +CONFIG_VIDEO_AU0828_V4L2=y +CONFIG_VIDEO_AU0828_RC=y +CONFIG_VIDEO_CX231XX=m +CONFIG_VIDEO_CX231XX_RC=y +CONFIG_VIDEO_CX231XX_ALSA=m +CONFIG_VIDEO_CX231XX_DVB=m +CONFIG_VIDEO_TM6000=m +CONFIG_VIDEO_TM6000_ALSA=m +CONFIG_VIDEO_TM6000_DVB=m + +# +# Digital TV USB devices +# +CONFIG_DVB_USB=m +# CONFIG_DVB_USB_DEBUG is not set +CONFIG_DVB_USB_DIB3000MC=m +CONFIG_DVB_USB_A800=m +CONFIG_DVB_USB_DIBUSB_MB=m +CONFIG_DVB_USB_DIBUSB_MB_FAULTY=y +CONFIG_DVB_USB_DIBUSB_MC=m +CONFIG_DVB_USB_DIB0700=m +CONFIG_DVB_USB_UMT_010=m +CONFIG_DVB_USB_CXUSB=m +CONFIG_DVB_USB_M920X=m +CONFIG_DVB_USB_DIGITV=m +CONFIG_DVB_USB_VP7045=m +CONFIG_DVB_USB_VP702X=m +CONFIG_DVB_USB_GP8PSK=m +CONFIG_DVB_USB_NOVA_T_USB2=m +CONFIG_DVB_USB_TTUSB2=m +CONFIG_DVB_USB_DTT200U=m +CONFIG_DVB_USB_OPERA1=m +CONFIG_DVB_USB_AF9005=m +CONFIG_DVB_USB_AF9005_REMOTE=m +CONFIG_DVB_USB_PCTV452E=m +CONFIG_DVB_USB_DW2102=m +CONFIG_DVB_USB_CINERGY_T2=m +CONFIG_DVB_USB_DTV5100=m +CONFIG_DVB_USB_AZ6027=m +CONFIG_DVB_USB_TECHNISAT_USB2=m +CONFIG_DVB_USB_V2=m +CONFIG_DVB_USB_AF9015=m +CONFIG_DVB_USB_AF9035=m +CONFIG_DVB_USB_ANYSEE=m +CONFIG_DVB_USB_AU6610=m +CONFIG_DVB_USB_AZ6007=m +CONFIG_DVB_USB_CE6230=m +CONFIG_DVB_USB_EC168=m +CONFIG_DVB_USB_GL861=m +CONFIG_DVB_USB_LME2510=m +CONFIG_DVB_USB_MXL111SF=m +CONFIG_DVB_USB_RTL28XXU=m +CONFIG_DVB_USB_DVBSKY=m +CONFIG_DVB_USB_ZD1301=m +CONFIG_DVB_TTUSB_BUDGET=m +CONFIG_DVB_TTUSB_DEC=m +CONFIG_SMS_USB_DRV=m +CONFIG_DVB_B2C2_FLEXCOP_USB=m +# CONFIG_DVB_B2C2_FLEXCOP_USB_DEBUG is not set +CONFIG_DVB_AS102=m + +# +# Webcam, TV (analog/digital) USB devices +# +CONFIG_VIDEO_EM28XX=m +CONFIG_VIDEO_EM28XX_V4L2=m +CONFIG_VIDEO_EM28XX_ALSA=m +CONFIG_VIDEO_EM28XX_DVB=m +CONFIG_VIDEO_EM28XX_RC=m + +# +# Software defined radio USB devices +# +# CONFIG_USB_AIRSPY is not set +# CONFIG_USB_HACKRF is not set +CONFIG_MEDIA_PCI_SUPPORT=y + +# +# Media capture support +# +CONFIG_VIDEO_MEYE=m +CONFIG_VIDEO_SOLO6X10=m +CONFIG_VIDEO_TW5864=m +CONFIG_VIDEO_TW68=m +CONFIG_VIDEO_TW686X=m + +# +# Media capture/analog TV support +# +CONFIG_VIDEO_IVTV=m +# CONFIG_VIDEO_IVTV_DEPRECATED_IOCTLS is not set +CONFIG_VIDEO_IVTV_ALSA=m +CONFIG_VIDEO_FB_IVTV=m +CONFIG_VIDEO_HEXIUM_GEMINI=m +CONFIG_VIDEO_HEXIUM_ORION=m +CONFIG_VIDEO_MXB=m +CONFIG_VIDEO_DT3155=m + +# +# Media capture/analog/hybrid TV support +# +CONFIG_VIDEO_CX18=m +CONFIG_VIDEO_CX18_ALSA=m +CONFIG_VIDEO_CX23885=m +CONFIG_MEDIA_ALTERA_CI=m +CONFIG_VIDEO_CX25821=m +CONFIG_VIDEO_CX25821_ALSA=m +CONFIG_VIDEO_CX88=m +CONFIG_VIDEO_CX88_ALSA=m +CONFIG_VIDEO_CX88_BLACKBIRD=m +CONFIG_VIDEO_CX88_DVB=m +CONFIG_VIDEO_CX88_ENABLE_VP3054=y +CONFIG_VIDEO_CX88_VP3054=m +CONFIG_VIDEO_CX88_MPEG=m +CONFIG_VIDEO_BT848=m +CONFIG_DVB_BT8XX=m +CONFIG_VIDEO_SAA7134=m +CONFIG_VIDEO_SAA7134_ALSA=m +CONFIG_VIDEO_SAA7134_RC=y +CONFIG_VIDEO_SAA7134_DVB=m +CONFIG_VIDEO_SAA7134_GO7007=m +CONFIG_VIDEO_SAA7164=m + +# +# Media digital TV PCI Adapters +# +CONFIG_DVB_AV7110_IR=y +CONFIG_DVB_AV7110=m +CONFIG_DVB_AV7110_OSD=y +CONFIG_DVB_BUDGET_CORE=m +CONFIG_DVB_BUDGET=m +CONFIG_DVB_BUDGET_CI=m +CONFIG_DVB_BUDGET_AV=m +CONFIG_DVB_BUDGET_PATCH=m +CONFIG_DVB_B2C2_FLEXCOP_PCI=m +# CONFIG_DVB_B2C2_FLEXCOP_PCI_DEBUG is not set +CONFIG_DVB_PLUTO2=m +CONFIG_DVB_DM1105=m +CONFIG_DVB_PT1=m +CONFIG_DVB_PT3=m +CONFIG_MANTIS_CORE=m +CONFIG_DVB_MANTIS=m +CONFIG_DVB_HOPPER=m +CONFIG_DVB_NGENE=m +CONFIG_DVB_DDBRIDGE=m +# CONFIG_DVB_DDBRIDGE_MSIENABLE is not set +CONFIG_DVB_SMIPCIE=m +# CONFIG_VIDEO_IPU3_CIO2 is not set +# CONFIG_V4L_PLATFORM_DRIVERS is not set +CONFIG_V4L_MEM2MEM_DRIVERS=y +CONFIG_VIDEO_MEM2MEM_DEINTERLACE=m +CONFIG_VIDEO_SH_VEU=m +CONFIG_V4L_TEST_DRIVERS=y +# CONFIG_VIDEO_VIMC is not set +# CONFIG_VIDEO_VIVID is not set +# CONFIG_VIDEO_VIM2M is not set +# CONFIG_VIDEO_VICODEC is not set +# CONFIG_DVB_PLATFORM_DRIVERS is not set +# CONFIG_SDR_PLATFORM_DRIVERS is not set + +# +# Supported MMC/SDIO adapters +# +CONFIG_SMS_SDIO_DRV=m +CONFIG_RADIO_ADAPTERS=y +CONFIG_RADIO_TEA575X=m +CONFIG_RADIO_SI470X=m +CONFIG_USB_SI470X=m +CONFIG_I2C_SI470X=m +CONFIG_RADIO_SI4713=m +CONFIG_USB_SI4713=m +CONFIG_PLATFORM_SI4713=m +CONFIG_I2C_SI4713=m +CONFIG_USB_MR800=m +CONFIG_USB_DSBR=m +CONFIG_RADIO_MAXIRADIO=m +CONFIG_RADIO_SHARK=m +CONFIG_RADIO_SHARK2=m +CONFIG_USB_KEENE=m +CONFIG_USB_RAREMONO=m +CONFIG_USB_MA901=m +CONFIG_RADIO_TEA5764=m +CONFIG_RADIO_SAA7706H=m +CONFIG_RADIO_TEF6862=m +CONFIG_RADIO_WL1273=m + +# +# Texas Instruments WL128x FM driver (ST based) +# + +# +# Supported FireWire (IEEE 1394) Adapters +# +CONFIG_DVB_FIREDTV=m +CONFIG_DVB_FIREDTV_INPUT=y +CONFIG_MEDIA_COMMON_OPTIONS=y + +# +# common driver options +# +CONFIG_VIDEO_CX2341X=m +CONFIG_VIDEO_TVEEPROM=m +CONFIG_CYPRESS_FIRMWARE=m +CONFIG_VIDEOBUF2_CORE=m +CONFIG_VIDEOBUF2_V4L2=m +CONFIG_VIDEOBUF2_MEMOPS=m +CONFIG_VIDEOBUF2_DMA_CONTIG=m +CONFIG_VIDEOBUF2_VMALLOC=m +CONFIG_VIDEOBUF2_DMA_SG=m +CONFIG_VIDEOBUF2_DVB=m +CONFIG_DVB_B2C2_FLEXCOP=m +CONFIG_VIDEO_SAA7146=m +CONFIG_VIDEO_SAA7146_VV=m +CONFIG_SMS_SIANO_MDTV=m +CONFIG_SMS_SIANO_RC=y +# CONFIG_SMS_SIANO_DEBUGFS is not set + +# +# Media ancillary drivers (tuners, sensors, i2c, spi, frontends) +# +CONFIG_MEDIA_SUBDRV_AUTOSELECT=y +CONFIG_MEDIA_ATTACH=y +CONFIG_VIDEO_IR_I2C=m + +# +# Audio decoders, processors and mixers +# +CONFIG_VIDEO_TVAUDIO=m +CONFIG_VIDEO_TDA7432=m +CONFIG_VIDEO_TDA9840=m +CONFIG_VIDEO_TEA6415C=m +CONFIG_VIDEO_TEA6420=m +CONFIG_VIDEO_MSP3400=m +CONFIG_VIDEO_CS3308=m +CONFIG_VIDEO_CS5345=m +CONFIG_VIDEO_CS53L32A=m +CONFIG_VIDEO_UDA1342=m +CONFIG_VIDEO_WM8775=m +CONFIG_VIDEO_WM8739=m +CONFIG_VIDEO_VP27SMPX=m +CONFIG_VIDEO_SONY_BTF_MPX=m + +# +# RDS decoders +# +CONFIG_VIDEO_SAA6588=m + +# +# Video decoders +# +CONFIG_VIDEO_SAA711X=m +CONFIG_VIDEO_TVP5150=m +CONFIG_VIDEO_TW2804=m +CONFIG_VIDEO_TW9903=m +CONFIG_VIDEO_TW9906=m + +# +# Video and audio decoders +# +CONFIG_VIDEO_SAA717X=m +CONFIG_VIDEO_CX25840=m + +# +# Video encoders +# +CONFIG_VIDEO_SAA7127=m + +# +# Camera sensor devices +# +CONFIG_VIDEO_OV2640=m +CONFIG_VIDEO_OV7640=m +CONFIG_VIDEO_MT9V011=m + +# +# Flash devices +# + +# +# Video improvement chips +# +CONFIG_VIDEO_UPD64031A=m +CONFIG_VIDEO_UPD64083=m + +# +# Audio/Video compression chips +# +CONFIG_VIDEO_SAA6752HS=m + +# +# SDR tuner chips +# + +# +# Miscellaneous helper chips +# +CONFIG_VIDEO_M52790=m + +# +# Sensors used on soc_camera driver +# +CONFIG_MEDIA_TUNER=m +CONFIG_MEDIA_TUNER_SIMPLE=m +CONFIG_MEDIA_TUNER_TDA18250=m +CONFIG_MEDIA_TUNER_TDA8290=m +CONFIG_MEDIA_TUNER_TDA827X=m +CONFIG_MEDIA_TUNER_TDA18271=m +CONFIG_MEDIA_TUNER_TDA9887=m +CONFIG_MEDIA_TUNER_TEA5761=m +CONFIG_MEDIA_TUNER_TEA5767=m +CONFIG_MEDIA_TUNER_MT20XX=m +CONFIG_MEDIA_TUNER_MT2060=m +CONFIG_MEDIA_TUNER_MT2063=m +CONFIG_MEDIA_TUNER_MT2266=m +CONFIG_MEDIA_TUNER_MT2131=m +CONFIG_MEDIA_TUNER_QT1010=m +CONFIG_MEDIA_TUNER_XC2028=m +CONFIG_MEDIA_TUNER_XC5000=m +CONFIG_MEDIA_TUNER_XC4000=m +CONFIG_MEDIA_TUNER_MXL5005S=m +CONFIG_MEDIA_TUNER_MXL5007T=m +CONFIG_MEDIA_TUNER_MC44S803=m +CONFIG_MEDIA_TUNER_MAX2165=m +CONFIG_MEDIA_TUNER_TDA18218=m +CONFIG_MEDIA_TUNER_FC0011=m +CONFIG_MEDIA_TUNER_FC0012=m +CONFIG_MEDIA_TUNER_FC0013=m +CONFIG_MEDIA_TUNER_TDA18212=m +CONFIG_MEDIA_TUNER_E4000=m +CONFIG_MEDIA_TUNER_FC2580=m +CONFIG_MEDIA_TUNER_M88RS6000T=m +CONFIG_MEDIA_TUNER_TUA9001=m +CONFIG_MEDIA_TUNER_SI2157=m +CONFIG_MEDIA_TUNER_IT913X=m +CONFIG_MEDIA_TUNER_R820T=m +CONFIG_MEDIA_TUNER_MXL301RF=m +CONFIG_MEDIA_TUNER_QM1D1C0042=m +CONFIG_MEDIA_TUNER_QM1D1B0004=m + +# +# Multistandard (satellite) frontends +# +CONFIG_DVB_STB0899=m +CONFIG_DVB_STB6100=m +CONFIG_DVB_STV090x=m +CONFIG_DVB_STV0910=m +CONFIG_DVB_STV6110x=m +CONFIG_DVB_STV6111=m +CONFIG_DVB_MXL5XX=m +CONFIG_DVB_M88DS3103=m + +# +# Multistandard (cable + terrestrial) frontends +# +CONFIG_DVB_DRXK=m +CONFIG_DVB_TDA18271C2DD=m +CONFIG_DVB_SI2165=m +CONFIG_DVB_MN88472=m +CONFIG_DVB_MN88473=m + +# +# DVB-S (satellite) frontends +# +CONFIG_DVB_CX24110=m +CONFIG_DVB_CX24123=m +CONFIG_DVB_MT312=m +CONFIG_DVB_ZL10036=m +CONFIG_DVB_ZL10039=m +CONFIG_DVB_S5H1420=m +CONFIG_DVB_STV0288=m +CONFIG_DVB_STB6000=m +CONFIG_DVB_STV0299=m +CONFIG_DVB_STV6110=m +CONFIG_DVB_STV0900=m +CONFIG_DVB_TDA8083=m +CONFIG_DVB_TDA10086=m +CONFIG_DVB_TDA8261=m +CONFIG_DVB_VES1X93=m +CONFIG_DVB_TUNER_ITD1000=m +CONFIG_DVB_TUNER_CX24113=m +CONFIG_DVB_TDA826X=m +CONFIG_DVB_TUA6100=m +CONFIG_DVB_CX24116=m +CONFIG_DVB_CX24117=m +CONFIG_DVB_CX24120=m +CONFIG_DVB_SI21XX=m +CONFIG_DVB_TS2020=m +CONFIG_DVB_DS3000=m +CONFIG_DVB_MB86A16=m +CONFIG_DVB_TDA10071=m + +# +# DVB-T (terrestrial) frontends +# +CONFIG_DVB_SP8870=m +CONFIG_DVB_SP887X=m +CONFIG_DVB_CX22700=m +CONFIG_DVB_CX22702=m +CONFIG_DVB_DRXD=m +CONFIG_DVB_L64781=m +CONFIG_DVB_TDA1004X=m +CONFIG_DVB_NXT6000=m +CONFIG_DVB_MT352=m +CONFIG_DVB_ZL10353=m +CONFIG_DVB_DIB3000MB=m +CONFIG_DVB_DIB3000MC=m +CONFIG_DVB_DIB7000M=m +CONFIG_DVB_DIB7000P=m +CONFIG_DVB_TDA10048=m +CONFIG_DVB_AF9013=m +CONFIG_DVB_EC100=m +CONFIG_DVB_STV0367=m +CONFIG_DVB_CXD2820R=m +CONFIG_DVB_CXD2841ER=m +CONFIG_DVB_RTL2830=m +CONFIG_DVB_RTL2832=m +CONFIG_DVB_RTL2832_SDR=m +CONFIG_DVB_SI2168=m +CONFIG_DVB_AS102_FE=m +CONFIG_DVB_ZD1301_DEMOD=m +CONFIG_DVB_GP8PSK_FE=m + +# +# DVB-C (cable) frontends +# +CONFIG_DVB_VES1820=m +CONFIG_DVB_TDA10021=m +CONFIG_DVB_TDA10023=m +CONFIG_DVB_STV0297=m + +# +# ATSC (North American/Korean Terrestrial/Cable DTV) frontends +# +CONFIG_DVB_NXT200X=m +CONFIG_DVB_OR51211=m +CONFIG_DVB_OR51132=m +CONFIG_DVB_BCM3510=m +CONFIG_DVB_LGDT330X=m +CONFIG_DVB_LGDT3305=m +CONFIG_DVB_LGDT3306A=m +CONFIG_DVB_LG2160=m +CONFIG_DVB_S5H1409=m +CONFIG_DVB_AU8522=m +CONFIG_DVB_AU8522_DTV=m +CONFIG_DVB_AU8522_V4L=m +CONFIG_DVB_S5H1411=m + +# +# ISDB-T (terrestrial) frontends +# +CONFIG_DVB_S921=m +CONFIG_DVB_DIB8000=m +CONFIG_DVB_MB86A20S=m + +# +# ISDB-S (satellite) & ISDB-T (terrestrial) frontends +# +CONFIG_DVB_TC90522=m + +# +# Digital terrestrial only tuners/PLL +# +CONFIG_DVB_PLL=m +CONFIG_DVB_TUNER_DIB0070=m +CONFIG_DVB_TUNER_DIB0090=m + +# +# SEC control devices for DVB-S +# +CONFIG_DVB_DRX39XYJ=m +CONFIG_DVB_LNBH25=m +CONFIG_DVB_LNBP21=m +CONFIG_DVB_LNBP22=m +CONFIG_DVB_ISL6405=m +CONFIG_DVB_ISL6421=m +CONFIG_DVB_ISL6423=m +CONFIG_DVB_A8293=m +CONFIG_DVB_LGS8GXX=m +CONFIG_DVB_ATBM8830=m +CONFIG_DVB_TDA665x=m +CONFIG_DVB_IX2505V=m +CONFIG_DVB_M88RS2000=m +CONFIG_DVB_AF9033=m + +# +# Common Interface (EN50221) controller drivers +# +CONFIG_DVB_CXD2099=m +CONFIG_DVB_SP2=m + +# +# Tools to develop new frontends +# +CONFIG_DVB_DUMMY_FE=m + +# +# Graphics support +# +CONFIG_AGP=y +CONFIG_AGP_AMD64=y +CONFIG_AGP_INTEL=y +CONFIG_AGP_SIS=y +CONFIG_AGP_VIA=y +CONFIG_INTEL_GTT=y +CONFIG_VGA_ARB=y +CONFIG_VGA_ARB_MAX_GPUS=16 +CONFIG_VGA_SWITCHEROO=y +CONFIG_DRM=m +CONFIG_DRM_MIPI_DSI=y +CONFIG_DRM_DP_AUX_CHARDEV=y +# CONFIG_DRM_DEBUG_SELFTEST is not set +CONFIG_DRM_KMS_HELPER=m +CONFIG_DRM_KMS_FB_HELPER=y +CONFIG_DRM_FBDEV_EMULATION=y +CONFIG_DRM_FBDEV_OVERALLOC=100 +CONFIG_DRM_LOAD_EDID_FIRMWARE=y +# CONFIG_DRM_DP_CEC is not set +CONFIG_DRM_TTM=m +CONFIG_DRM_VM=y +CONFIG_DRM_SCHED=m + +# +# I2C encoder or helper chips +# +CONFIG_DRM_I2C_CH7006=m +CONFIG_DRM_I2C_SIL164=m +CONFIG_DRM_I2C_NXP_TDA998X=m +# CONFIG_DRM_I2C_NXP_TDA9950 is not set +CONFIG_DRM_RADEON=m +CONFIG_DRM_RADEON_USERPTR=y +CONFIG_DRM_AMDGPU=m +CONFIG_DRM_AMDGPU_SI=y +CONFIG_DRM_AMDGPU_CIK=y +CONFIG_DRM_AMDGPU_USERPTR=y +# CONFIG_DRM_AMDGPU_GART_DEBUGFS is not set + +# +# ACP (Audio CoProcessor) Configuration +# +CONFIG_DRM_AMD_ACP=y + +# +# Display Engine Configuration +# +CONFIG_DRM_AMD_DC=y +CONFIG_DRM_AMD_DC_DCN1_0=y +CONFIG_DRM_AMD_DC_DCN1_01=y +# CONFIG_DEBUG_KERNEL_DC is not set +# CONFIG_HSA_AMD is not set + +# +# AMD Library routines +# +CONFIG_CHASH=m +# CONFIG_CHASH_STATS is not set +# CONFIG_CHASH_SELFTEST is not set +CONFIG_DRM_NOUVEAU=m +CONFIG_NOUVEAU_DEBUG=5 +CONFIG_NOUVEAU_DEBUG_DEFAULT=3 +# CONFIG_NOUVEAU_DEBUG_MMU is not set +CONFIG_DRM_NOUVEAU_BACKLIGHT=y +CONFIG_DRM_I915=m +# CONFIG_DRM_I915_ALPHA_SUPPORT is not set +CONFIG_DRM_I915_CAPTURE_ERROR=y +CONFIG_DRM_I915_COMPRESS_ERROR=y +CONFIG_DRM_I915_USERPTR=y +CONFIG_DRM_I915_GVT=y +CONFIG_DRM_VGEM=m +# CONFIG_DRM_VKMS is not set +CONFIG_DRM_VMWGFX=m +CONFIG_DRM_VMWGFX_FBCON=y +CONFIG_DRM_GMA500=m +CONFIG_DRM_GMA600=y +CONFIG_DRM_GMA3600=y +CONFIG_DRM_UDL=m +CONFIG_DRM_AST=m +CONFIG_DRM_MGAG200=m +CONFIG_DRM_CIRRUS_QEMU=m +CONFIG_DRM_QXL=m +CONFIG_DRM_BOCHS=m +CONFIG_DRM_VIRTIO_GPU=m +CONFIG_DRM_PANEL=y + +# +# Display Panels +# +# CONFIG_DRM_PANEL_RASPBERRYPI_TOUCHSCREEN is not set +CONFIG_DRM_BRIDGE=y +CONFIG_DRM_PANEL_BRIDGE=y + +# +# Display Interface Bridges +# +# CONFIG_DRM_ANALOGIX_ANX78XX is not set +# CONFIG_DRM_HISI_HIBMC is not set +# CONFIG_DRM_TINYDRM is not set +# CONFIG_DRM_LEGACY is not set +CONFIG_DRM_PANEL_ORIENTATION_QUIRKS=y + +# +# Frame buffer Devices +# +CONFIG_FB_CMDLINE=y +CONFIG_FB_NOTIFY=y +CONFIG_FB=y +# CONFIG_FIRMWARE_EDID is not set +CONFIG_FB_DDC=m +CONFIG_FB_BOOT_VESA_SUPPORT=y +CONFIG_FB_CFB_FILLRECT=y +CONFIG_FB_CFB_COPYAREA=y +CONFIG_FB_CFB_IMAGEBLIT=y +CONFIG_FB_SYS_FILLRECT=m +CONFIG_FB_SYS_COPYAREA=m +CONFIG_FB_SYS_IMAGEBLIT=m +CONFIG_FB_FOREIGN_ENDIAN=y +CONFIG_FB_BOTH_ENDIAN=y +# CONFIG_FB_BIG_ENDIAN is not set +# CONFIG_FB_LITTLE_ENDIAN is not set +CONFIG_FB_SYS_FOPS=m +CONFIG_FB_DEFERRED_IO=y +CONFIG_FB_BACKLIGHT=y +CONFIG_FB_MODE_HELPERS=y +CONFIG_FB_TILEBLITTING=y + +# +# Frame buffer hardware drivers +# +# CONFIG_FB_CIRRUS is not set +# CONFIG_FB_PM2 is not set +# CONFIG_FB_CYBER2000 is not set +# CONFIG_FB_ARC is not set +# CONFIG_FB_ASILIANT is not set +# CONFIG_FB_IMSTT is not set +CONFIG_FB_VGA16=m +# CONFIG_FB_UVESA is not set +CONFIG_FB_VESA=y +CONFIG_FB_EFI=y +# CONFIG_FB_N411 is not set +# CONFIG_FB_HGA is not set +# CONFIG_FB_OPENCORES is not set +# CONFIG_FB_S1D13XXX is not set +CONFIG_FB_NVIDIA=m +CONFIG_FB_NVIDIA_I2C=y +# CONFIG_FB_NVIDIA_DEBUG is not set +CONFIG_FB_NVIDIA_BACKLIGHT=y +# CONFIG_FB_RIVA is not set +# CONFIG_FB_I740 is not set +# CONFIG_FB_LE80578 is not set +# CONFIG_FB_MATROX is not set +CONFIG_FB_RADEON=m +CONFIG_FB_RADEON_I2C=y +CONFIG_FB_RADEON_BACKLIGHT=y +# CONFIG_FB_RADEON_DEBUG is not set +# CONFIG_FB_ATY128 is not set +# CONFIG_FB_ATY is not set +# CONFIG_FB_S3 is not set +# CONFIG_FB_SAVAGE is not set +# CONFIG_FB_SIS is not set +# CONFIG_FB_VIA is not set +# CONFIG_FB_NEOMAGIC is not set +# CONFIG_FB_KYRO is not set +# CONFIG_FB_3DFX is not set +# CONFIG_FB_VOODOO1 is not set +# CONFIG_FB_VT8623 is not set +# CONFIG_FB_TRIDENT is not set +# CONFIG_FB_ARK is not set +# CONFIG_FB_PM3 is not set +# CONFIG_FB_CARMINE is not set +# CONFIG_FB_SM501 is not set +# CONFIG_FB_SMSCUFX is not set +# CONFIG_FB_UDL is not set +# CONFIG_FB_IBM_GXT4500 is not set +CONFIG_FB_VIRTUAL=m +# CONFIG_FB_METRONOME is not set +# CONFIG_FB_MB862XX is not set +# CONFIG_FB_SIMPLE is not set +# CONFIG_FB_SM712 is not set +CONFIG_BACKLIGHT_LCD_SUPPORT=y +CONFIG_LCD_CLASS_DEVICE=m +CONFIG_LCD_PLATFORM=m +CONFIG_BACKLIGHT_CLASS_DEVICE=y +# CONFIG_BACKLIGHT_GENERIC is not set +CONFIG_BACKLIGHT_APPLE=m +# CONFIG_BACKLIGHT_PM8941_WLED is not set +# CONFIG_BACKLIGHT_SAHARA is not set +# CONFIG_BACKLIGHT_ADP8860 is not set +# CONFIG_BACKLIGHT_ADP8870 is not set +# CONFIG_BACKLIGHT_LM3639 is not set +# CONFIG_BACKLIGHT_GPIO is not set +# CONFIG_BACKLIGHT_LV5207LP is not set +# CONFIG_BACKLIGHT_BD6107 is not set +# CONFIG_BACKLIGHT_ARCXCNN is not set +CONFIG_VGASTATE=m +CONFIG_HDMI=y + +# +# Console display driver support +# +CONFIG_VGA_CONSOLE=y +CONFIG_VGACON_SOFT_SCROLLBACK=y +CONFIG_VGACON_SOFT_SCROLLBACK_SIZE=64 +# CONFIG_VGACON_SOFT_SCROLLBACK_PERSISTENT_ENABLE_BY_DEFAULT is not set +CONFIG_DUMMY_CONSOLE=y +CONFIG_DUMMY_CONSOLE_COLUMNS=80 +CONFIG_DUMMY_CONSOLE_ROWS=25 +CONFIG_FRAMEBUFFER_CONSOLE=y +CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y +# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set +# CONFIG_FRAMEBUFFER_CONSOLE_DEFERRED_TAKEOVER is not set +# CONFIG_LOGO is not set +CONFIG_SOUND=m +CONFIG_SOUND_OSS_CORE=y +CONFIG_SOUND_OSS_CORE_PRECLAIM=y +CONFIG_SND=m +CONFIG_SND_TIMER=m +CONFIG_SND_PCM=m +CONFIG_SND_HWDEP=m +CONFIG_SND_SEQ_DEVICE=m +CONFIG_SND_RAWMIDI=m +CONFIG_SND_JACK=y +CONFIG_SND_JACK_INPUT_DEV=y +CONFIG_SND_OSSEMUL=y +CONFIG_SND_MIXER_OSS=m +CONFIG_SND_PCM_OSS=m +CONFIG_SND_PCM_OSS_PLUGINS=y +CONFIG_SND_PCM_TIMER=y +CONFIG_SND_HRTIMER=m +CONFIG_SND_DYNAMIC_MINORS=y +CONFIG_SND_MAX_CARDS=32 +# CONFIG_SND_SUPPORT_OLD_API is not set +CONFIG_SND_PROC_FS=y +CONFIG_SND_VERBOSE_PROCFS=y +# CONFIG_SND_VERBOSE_PRINTK is not set +# CONFIG_SND_DEBUG is not set +CONFIG_SND_VMASTER=y +CONFIG_SND_DMA_SGBUF=y +CONFIG_SND_SEQUENCER=m +CONFIG_SND_SEQ_DUMMY=m +CONFIG_SND_SEQUENCER_OSS=m +CONFIG_SND_SEQ_HRTIMER_DEFAULT=y +CONFIG_SND_SEQ_MIDI_EVENT=m +CONFIG_SND_SEQ_MIDI=m +CONFIG_SND_SEQ_MIDI_EMUL=m +CONFIG_SND_SEQ_VIRMIDI=m +CONFIG_SND_MPU401_UART=m +CONFIG_SND_OPL3_LIB=m +CONFIG_SND_OPL3_LIB_SEQ=m +CONFIG_SND_VX_LIB=m +CONFIG_SND_AC97_CODEC=m +CONFIG_SND_DRIVERS=y +# CONFIG_SND_PCSP is not set +CONFIG_SND_DUMMY=m +CONFIG_SND_ALOOP=m +CONFIG_SND_VIRMIDI=m +CONFIG_SND_MTPAV=m +CONFIG_SND_MTS64=m +CONFIG_SND_SERIAL_U16550=m +CONFIG_SND_MPU401=m +CONFIG_SND_PORTMAN2X4=m +CONFIG_SND_AC97_POWER_SAVE=y +CONFIG_SND_AC97_POWER_SAVE_DEFAULT=0 +CONFIG_SND_SB_COMMON=m +CONFIG_SND_PCI=y +CONFIG_SND_AD1889=m +CONFIG_SND_ALS300=m +CONFIG_SND_ALS4000=m +CONFIG_SND_ALI5451=m +CONFIG_SND_ASIHPI=m +CONFIG_SND_ATIIXP=m +CONFIG_SND_ATIIXP_MODEM=m +CONFIG_SND_AU8810=m +CONFIG_SND_AU8820=m +CONFIG_SND_AU8830=m +CONFIG_SND_AW2=m +CONFIG_SND_AZT3328=m +CONFIG_SND_BT87X=m +# CONFIG_SND_BT87X_OVERCLOCK is not set +CONFIG_SND_CA0106=m +CONFIG_SND_CMIPCI=m +CONFIG_SND_OXYGEN_LIB=m +CONFIG_SND_OXYGEN=m +CONFIG_SND_CS4281=m +CONFIG_SND_CS46XX=m +CONFIG_SND_CS46XX_NEW_DSP=y +CONFIG_SND_CTXFI=m +CONFIG_SND_DARLA20=m +CONFIG_SND_GINA20=m +CONFIG_SND_LAYLA20=m +CONFIG_SND_DARLA24=m +CONFIG_SND_GINA24=m +CONFIG_SND_LAYLA24=m +CONFIG_SND_MONA=m +CONFIG_SND_MIA=m +CONFIG_SND_ECHO3G=m +CONFIG_SND_INDIGO=m +CONFIG_SND_INDIGOIO=m +CONFIG_SND_INDIGODJ=m +CONFIG_SND_INDIGOIOX=m +CONFIG_SND_INDIGODJX=m +CONFIG_SND_EMU10K1=m +CONFIG_SND_EMU10K1_SEQ=m +CONFIG_SND_EMU10K1X=m +CONFIG_SND_ENS1370=m +CONFIG_SND_ENS1371=m +CONFIG_SND_ES1938=m +CONFIG_SND_ES1968=m +CONFIG_SND_ES1968_INPUT=y +CONFIG_SND_ES1968_RADIO=y +CONFIG_SND_FM801=m +CONFIG_SND_FM801_TEA575X_BOOL=y +CONFIG_SND_HDSP=m +CONFIG_SND_HDSPM=m +CONFIG_SND_ICE1712=m +CONFIG_SND_ICE1724=m +CONFIG_SND_INTEL8X0=m +CONFIG_SND_INTEL8X0M=m +CONFIG_SND_KORG1212=m +CONFIG_SND_LOLA=m +CONFIG_SND_LX6464ES=m +CONFIG_SND_MAESTRO3=m +CONFIG_SND_MAESTRO3_INPUT=y +CONFIG_SND_MIXART=m +CONFIG_SND_NM256=m +CONFIG_SND_PCXHR=m +CONFIG_SND_RIPTIDE=m +CONFIG_SND_RME32=m +CONFIG_SND_RME96=m +CONFIG_SND_RME9652=m +CONFIG_SND_SONICVIBES=m +CONFIG_SND_TRIDENT=m +CONFIG_SND_VIA82XX=m +CONFIG_SND_VIA82XX_MODEM=m +CONFIG_SND_VIRTUOSO=m +CONFIG_SND_VX222=m +CONFIG_SND_YMFPCI=m + +# +# HD-Audio +# +CONFIG_SND_HDA=m +CONFIG_SND_HDA_INTEL=m +CONFIG_SND_HDA_HWDEP=y +CONFIG_SND_HDA_RECONFIG=y +CONFIG_SND_HDA_INPUT_BEEP=y +CONFIG_SND_HDA_INPUT_BEEP_MODE=0 +CONFIG_SND_HDA_PATCH_LOADER=y +CONFIG_SND_HDA_CODEC_REALTEK=m +CONFIG_SND_HDA_CODEC_ANALOG=m +CONFIG_SND_HDA_CODEC_SIGMATEL=m +CONFIG_SND_HDA_CODEC_VIA=m +CONFIG_SND_HDA_CODEC_HDMI=m +CONFIG_SND_HDA_CODEC_CIRRUS=m +CONFIG_SND_HDA_CODEC_CONEXANT=m +CONFIG_SND_HDA_CODEC_CA0110=m +CONFIG_SND_HDA_CODEC_CA0132=m +CONFIG_SND_HDA_CODEC_CA0132_DSP=y +CONFIG_SND_HDA_CODEC_CMEDIA=m +CONFIG_SND_HDA_CODEC_SI3054=m +CONFIG_SND_HDA_GENERIC=m +CONFIG_SND_HDA_POWER_SAVE_DEFAULT=0 +CONFIG_SND_HDA_CORE=m +CONFIG_SND_HDA_DSP_LOADER=y +CONFIG_SND_HDA_COMPONENT=y +CONFIG_SND_HDA_I915=y +CONFIG_SND_HDA_PREALLOC_SIZE=4096 +CONFIG_SND_USB=y +CONFIG_SND_USB_AUDIO=m +CONFIG_SND_USB_UA101=m +CONFIG_SND_USB_USX2Y=m +CONFIG_SND_USB_CAIAQ=m +CONFIG_SND_USB_CAIAQ_INPUT=y +CONFIG_SND_USB_US122L=m +CONFIG_SND_USB_6FIRE=m +CONFIG_SND_USB_HIFACE=m +# CONFIG_SND_BCD2000 is not set +# CONFIG_SND_USB_POD is not set +# CONFIG_SND_USB_PODHD is not set +# CONFIG_SND_USB_TONEPORT is not set +# CONFIG_SND_USB_VARIAX is not set +CONFIG_SND_FIREWIRE=y +CONFIG_SND_FIREWIRE_LIB=m +CONFIG_SND_DICE=m +CONFIG_SND_OXFW=m +CONFIG_SND_ISIGHT=m +CONFIG_SND_FIREWORKS=m +# CONFIG_SND_BEBOB is not set +# CONFIG_SND_FIREWIRE_DIGI00X is not set +# CONFIG_SND_FIREWIRE_TASCAM is not set +# CONFIG_SND_FIREWIRE_MOTU is not set +# CONFIG_SND_FIREFACE is not set +# CONFIG_SND_PCMCIA is not set +# CONFIG_SND_SOC is not set +CONFIG_SND_X86=y +CONFIG_HDMI_LPE_AUDIO=m +CONFIG_SND_SYNTH_EMUX=m +CONFIG_AC97_BUS=m + +# +# HID support +# +CONFIG_HID=y +CONFIG_HID_BATTERY_STRENGTH=y +CONFIG_HIDRAW=y +CONFIG_UHID=m +CONFIG_HID_GENERIC=y + +# +# Special HID drivers +# +CONFIG_HID_A4TECH=y +# CONFIG_HID_ACCUTOUCH is not set +CONFIG_HID_ACRUX=m +CONFIG_HID_ACRUX_FF=y +CONFIG_HID_APPLE=y +CONFIG_HID_APPLEIR=m +CONFIG_HID_ASUS=m +CONFIG_HID_AUREAL=m +CONFIG_HID_BELKIN=y +# CONFIG_HID_BETOP_FF is not set +# CONFIG_HID_BIGBEN_FF is not set +CONFIG_HID_CHERRY=y +CONFIG_HID_CHICONY=y +# CONFIG_HID_CORSAIR is not set +# CONFIG_HID_COUGAR is not set +CONFIG_HID_PRODIKEYS=m +# CONFIG_HID_CMEDIA is not set +# CONFIG_HID_CP2112 is not set +CONFIG_HID_CYPRESS=y +CONFIG_HID_DRAGONRISE=m +CONFIG_DRAGONRISE_FF=y +CONFIG_HID_EMS_FF=m +# CONFIG_HID_ELAN is not set +CONFIG_HID_ELECOM=m +CONFIG_HID_ELO=m +CONFIG_HID_EZKEY=y +# CONFIG_HID_GEMBIRD is not set +# CONFIG_HID_GFRM is not set +CONFIG_HID_HOLTEK=m +CONFIG_HOLTEK_FF=y +CONFIG_HID_GT683R=m +CONFIG_HID_KEYTOUCH=m +CONFIG_HID_KYE=m +CONFIG_HID_UCLOGIC=m +CONFIG_HID_WALTOP=m +CONFIG_HID_GYRATION=m +CONFIG_HID_ICADE=m +CONFIG_HID_ITE=y +# CONFIG_HID_JABRA is not set +CONFIG_HID_TWINHAN=m +CONFIG_HID_KENSINGTON=y +CONFIG_HID_LCPOWER=m +CONFIG_HID_LED=m +CONFIG_HID_LENOVO=m +CONFIG_HID_LOGITECH=y +CONFIG_HID_LOGITECH_DJ=m +CONFIG_HID_LOGITECH_HIDPP=m +CONFIG_LOGITECH_FF=y +CONFIG_LOGIRUMBLEPAD2_FF=y +CONFIG_LOGIG940_FF=y +CONFIG_LOGIWHEELS_FF=y +CONFIG_HID_MAGICMOUSE=y +# CONFIG_HID_MAYFLASH is not set +CONFIG_HID_REDRAGON=y +CONFIG_HID_MICROSOFT=y +CONFIG_HID_MONTEREY=y +CONFIG_HID_MULTITOUCH=m +# CONFIG_HID_NTI is not set +CONFIG_HID_NTRIG=y +CONFIG_HID_ORTEK=m +CONFIG_HID_PANTHERLORD=m +CONFIG_PANTHERLORD_FF=y +CONFIG_HID_PENMOUNT=m +CONFIG_HID_PETALYNX=m +CONFIG_HID_PICOLCD=m +CONFIG_HID_PICOLCD_FB=y +CONFIG_HID_PICOLCD_BACKLIGHT=y +CONFIG_HID_PICOLCD_LCD=y +CONFIG_HID_PICOLCD_LEDS=y +CONFIG_HID_PICOLCD_CIR=y +CONFIG_HID_PLANTRONICS=m +CONFIG_HID_PRIMAX=m +# CONFIG_HID_RETRODE is not set +CONFIG_HID_ROCCAT=m +CONFIG_HID_SAITEK=m +CONFIG_HID_SAMSUNG=m +CONFIG_HID_SONY=m +CONFIG_SONY_FF=y +CONFIG_HID_SPEEDLINK=m +# CONFIG_HID_STEAM is not set +CONFIG_HID_STEELSERIES=m +CONFIG_HID_SUNPLUS=m +CONFIG_HID_RMI=m +CONFIG_HID_GREENASIA=m +CONFIG_GREENASIA_FF=y +CONFIG_HID_SMARTJOYPLUS=m +CONFIG_SMARTJOYPLUS_FF=y +CONFIG_HID_TIVO=m +CONFIG_HID_TOPSEED=m +CONFIG_HID_THINGM=m +CONFIG_HID_THRUSTMASTER=m +CONFIG_THRUSTMASTER_FF=y +# CONFIG_HID_UDRAW_PS3 is not set +CONFIG_HID_WACOM=m +CONFIG_HID_WIIMOTE=m +CONFIG_HID_XINMO=m +CONFIG_HID_ZEROPLUS=m +CONFIG_ZEROPLUS_FF=y +CONFIG_HID_ZYDACRON=m +CONFIG_HID_SENSOR_HUB=m +# CONFIG_HID_SENSOR_CUSTOM_SENSOR is not set +# CONFIG_HID_ALPS is not set + +# +# USB HID support +# +CONFIG_USB_HID=y +CONFIG_HID_PID=y +CONFIG_USB_HIDDEV=y + +# +# I2C HID support +# +CONFIG_I2C_HID=m + +# +# Intel ISH HID support +# +# CONFIG_INTEL_ISH_HID is not set +CONFIG_USB_OHCI_LITTLE_ENDIAN=y +CONFIG_USB_SUPPORT=y +CONFIG_USB_COMMON=y +CONFIG_USB_ARCH_HAS_HCD=y +CONFIG_USB=y +CONFIG_USB_PCI=y +CONFIG_USB_ANNOUNCE_NEW_DEVICES=y + +# +# Miscellaneous USB options +# +CONFIG_USB_DEFAULT_PERSIST=y +# CONFIG_USB_DYNAMIC_MINORS is not set +# CONFIG_USB_OTG is not set +# CONFIG_USB_OTG_WHITELIST is not set +# CONFIG_USB_LEDS_TRIGGER_USBPORT is not set +CONFIG_USB_MON=y +CONFIG_USB_WUSB=m +CONFIG_USB_WUSB_CBAF=m +# CONFIG_USB_WUSB_CBAF_DEBUG is not set + +# +# USB Host Controller Drivers +# +# CONFIG_USB_C67X00_HCD is not set +CONFIG_USB_XHCI_HCD=y +# CONFIG_USB_XHCI_DBGCAP is not set +CONFIG_USB_XHCI_PCI=y +# CONFIG_USB_XHCI_PLATFORM is not set +CONFIG_USB_EHCI_HCD=y +CONFIG_USB_EHCI_ROOT_HUB_TT=y +CONFIG_USB_EHCI_TT_NEWSCHED=y +CONFIG_USB_EHCI_PCI=y +# CONFIG_USB_EHCI_HCD_PLATFORM is not set +# CONFIG_USB_OXU210HP_HCD is not set +# CONFIG_USB_ISP116X_HCD is not set +# CONFIG_USB_FOTG210_HCD is not set +CONFIG_USB_OHCI_HCD=y +CONFIG_USB_OHCI_HCD_PCI=y +# CONFIG_USB_OHCI_HCD_PLATFORM is not set +CONFIG_USB_UHCI_HCD=y +CONFIG_USB_U132_HCD=m +CONFIG_USB_SL811_HCD=m +CONFIG_USB_SL811_HCD_ISO=y +# CONFIG_USB_SL811_CS is not set +# CONFIG_USB_R8A66597_HCD is not set +# CONFIG_USB_WHCI_HCD is not set +CONFIG_USB_HWA_HCD=m +# CONFIG_USB_HCD_BCMA is not set +# CONFIG_USB_HCD_SSB is not set +# CONFIG_USB_HCD_TEST_MODE is not set + +# +# USB Device Class drivers +# +CONFIG_USB_ACM=m +CONFIG_USB_PRINTER=m +CONFIG_USB_WDM=m +CONFIG_USB_TMC=m + +# +# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may +# + +# +# also be needed; see USB_STORAGE Help for more info +# +CONFIG_USB_STORAGE=m +# CONFIG_USB_STORAGE_DEBUG is not set +CONFIG_USB_STORAGE_REALTEK=m +CONFIG_REALTEK_AUTOPM=y +CONFIG_USB_STORAGE_DATAFAB=m +CONFIG_USB_STORAGE_FREECOM=m +CONFIG_USB_STORAGE_ISD200=m +CONFIG_USB_STORAGE_USBAT=m +CONFIG_USB_STORAGE_SDDR09=m +CONFIG_USB_STORAGE_SDDR55=m +CONFIG_USB_STORAGE_JUMPSHOT=m +CONFIG_USB_STORAGE_ALAUDA=m +CONFIG_USB_STORAGE_ONETOUCH=m +CONFIG_USB_STORAGE_KARMA=m +CONFIG_USB_STORAGE_CYPRESS_ATACB=m +CONFIG_USB_STORAGE_ENE_UB6250=m +# CONFIG_USB_UAS is not set + +# +# USB Imaging devices +# +CONFIG_USB_MDC800=m +CONFIG_USB_MICROTEK=m +CONFIG_USBIP_CORE=m +CONFIG_USBIP_VHCI_HCD=m +CONFIG_USBIP_VHCI_HC_PORTS=8 +CONFIG_USBIP_VHCI_NR_HCS=1 +CONFIG_USBIP_HOST=m +# CONFIG_USBIP_DEBUG is not set +# CONFIG_USB_MUSB_HDRC is not set +# CONFIG_USB_DWC3 is not set +# CONFIG_USB_DWC2 is not set +# CONFIG_USB_CHIPIDEA is not set +# CONFIG_USB_ISP1760 is not set + +# +# USB port drivers +# +CONFIG_USB_USS720=m +CONFIG_USB_SERIAL=y +CONFIG_USB_SERIAL_CONSOLE=y +CONFIG_USB_SERIAL_GENERIC=y +CONFIG_USB_SERIAL_SIMPLE=m +CONFIG_USB_SERIAL_AIRCABLE=m +CONFIG_USB_SERIAL_ARK3116=m +CONFIG_USB_SERIAL_BELKIN=m +CONFIG_USB_SERIAL_CH341=m +CONFIG_USB_SERIAL_WHITEHEAT=m +CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m +CONFIG_USB_SERIAL_CP210X=m +CONFIG_USB_SERIAL_CYPRESS_M8=m +CONFIG_USB_SERIAL_EMPEG=m +CONFIG_USB_SERIAL_FTDI_SIO=m +CONFIG_USB_SERIAL_VISOR=m +CONFIG_USB_SERIAL_IPAQ=m +CONFIG_USB_SERIAL_IR=m +CONFIG_USB_SERIAL_EDGEPORT=m +CONFIG_USB_SERIAL_EDGEPORT_TI=m +# CONFIG_USB_SERIAL_F81232 is not set +# CONFIG_USB_SERIAL_F8153X is not set +CONFIG_USB_SERIAL_GARMIN=m +CONFIG_USB_SERIAL_IPW=m +CONFIG_USB_SERIAL_IUU=m +CONFIG_USB_SERIAL_KEYSPAN_PDA=m +CONFIG_USB_SERIAL_KEYSPAN=m +CONFIG_USB_SERIAL_KLSI=m +CONFIG_USB_SERIAL_KOBIL_SCT=m +CONFIG_USB_SERIAL_MCT_U232=m +# CONFIG_USB_SERIAL_METRO is not set +CONFIG_USB_SERIAL_MOS7720=m +CONFIG_USB_SERIAL_MOS7715_PARPORT=y +CONFIG_USB_SERIAL_MOS7840=m +# CONFIG_USB_SERIAL_MXUPORT is not set +CONFIG_USB_SERIAL_NAVMAN=m +CONFIG_USB_SERIAL_PL2303=m +CONFIG_USB_SERIAL_OTI6858=m +CONFIG_USB_SERIAL_QCAUX=m +CONFIG_USB_SERIAL_QUALCOMM=m +CONFIG_USB_SERIAL_SPCP8X5=m +CONFIG_USB_SERIAL_SAFE=m +CONFIG_USB_SERIAL_SAFE_PADDED=y +CONFIG_USB_SERIAL_SIERRAWIRELESS=m +CONFIG_USB_SERIAL_SYMBOL=m +CONFIG_USB_SERIAL_TI=m +CONFIG_USB_SERIAL_CYBERJACK=m +CONFIG_USB_SERIAL_XIRCOM=m +CONFIG_USB_SERIAL_WWAN=m +CONFIG_USB_SERIAL_OPTION=m +CONFIG_USB_SERIAL_OMNINET=m +CONFIG_USB_SERIAL_OPTICON=m +CONFIG_USB_SERIAL_XSENS_MT=m +# CONFIG_USB_SERIAL_WISHBONE is not set +CONFIG_USB_SERIAL_SSU100=m +CONFIG_USB_SERIAL_QT2=m +CONFIG_USB_SERIAL_UPD78F0730=m +CONFIG_USB_SERIAL_DEBUG=m + +# +# USB Miscellaneous drivers +# +CONFIG_USB_EMI62=m +CONFIG_USB_EMI26=m +CONFIG_USB_ADUTUX=m +CONFIG_USB_SEVSEG=m +# CONFIG_USB_RIO500 is not set +CONFIG_USB_LEGOTOWER=m +CONFIG_USB_LCD=m +# CONFIG_USB_CYPRESS_CY7C63 is not set +# CONFIG_USB_CYTHERM is not set +CONFIG_USB_IDMOUSE=m +CONFIG_USB_FTDI_ELAN=m +CONFIG_USB_APPLEDISPLAY=m +CONFIG_USB_SISUSBVGA=m +CONFIG_USB_SISUSBVGA_CON=y +CONFIG_USB_LD=m +CONFIG_USB_TRANCEVIBRATOR=m +CONFIG_USB_IOWARRIOR=m +# CONFIG_USB_TEST is not set +# CONFIG_USB_EHSET_TEST_FIXTURE is not set +CONFIG_USB_ISIGHTFW=m +CONFIG_USB_YUREX=m +CONFIG_USB_EZUSB_FX2=m +CONFIG_USB_HUB_USB251XB=m +CONFIG_USB_HSIC_USB3503=m +CONFIG_USB_HSIC_USB4604=m +# CONFIG_USB_LINK_LAYER_TEST is not set +# CONFIG_USB_CHAOSKEY is not set +CONFIG_USB_ATM=m +CONFIG_USB_SPEEDTOUCH=m +CONFIG_USB_CXACRU=m +CONFIG_USB_UEAGLEATM=m +CONFIG_USB_XUSBATM=m + +# +# USB Physical Layer drivers +# +CONFIG_USB_PHY=y +CONFIG_NOP_USB_XCEIV=m +# CONFIG_USB_GPIO_VBUS is not set +# CONFIG_USB_ISP1301 is not set +# CONFIG_USB_GADGET is not set +CONFIG_TYPEC=m +CONFIG_TYPEC_TCPM=m +CONFIG_TYPEC_TCPCI=m +# CONFIG_TYPEC_RT1711H is not set +CONFIG_TYPEC_FUSB302=m +# CONFIG_TYPEC_UCSI is not set +# CONFIG_TYPEC_TPS6598X is not set + +# +# USB Type-C Multiplexer/DeMultiplexer Switch support +# +# CONFIG_TYPEC_MUX_PI3USB30532 is not set + +# +# USB Type-C Alternate Mode drivers +# +# CONFIG_TYPEC_DP_ALTMODE is not set +CONFIG_USB_ROLE_SWITCH=m +# CONFIG_USB_ROLES_INTEL_XHCI is not set +CONFIG_USB_LED_TRIG=y +# CONFIG_USB_ULPI_BUS is not set +CONFIG_UWB=m +CONFIG_UWB_HWA=m +CONFIG_UWB_WHCI=m +CONFIG_UWB_I1480U=m +CONFIG_MMC=m +CONFIG_MMC_BLOCK=m +CONFIG_MMC_BLOCK_MINORS=8 +CONFIG_SDIO_UART=m +# CONFIG_MMC_TEST is not set + +# +# MMC/SD/SDIO Host Controller Drivers +# +# CONFIG_MMC_DEBUG is not set +CONFIG_MMC_SDHCI=m +CONFIG_MMC_SDHCI_PCI=m +CONFIG_MMC_RICOH_MMC=y +CONFIG_MMC_SDHCI_ACPI=m +CONFIG_MMC_SDHCI_PLTFM=m +# CONFIG_MMC_SDHCI_F_SDH30 is not set +CONFIG_MMC_WBSD=m +CONFIG_MMC_TIFM_SD=m +CONFIG_MMC_SDRICOH_CS=m +CONFIG_MMC_CB710=m +CONFIG_MMC_VIA_SDMMC=m +CONFIG_MMC_VUB300=m +CONFIG_MMC_USHC=m +# CONFIG_MMC_USDHI6ROL0 is not set +CONFIG_MMC_REALTEK_PCI=m +CONFIG_MMC_REALTEK_USB=m +CONFIG_MMC_CQHCI=m +CONFIG_MMC_TOSHIBA_PCI=m +CONFIG_MMC_MTK=m +# CONFIG_MMC_SDHCI_XENON is not set +CONFIG_MEMSTICK=m +# CONFIG_MEMSTICK_DEBUG is not set + +# +# MemoryStick drivers +# +# CONFIG_MEMSTICK_UNSAFE_RESUME is not set +CONFIG_MSPRO_BLOCK=m +# CONFIG_MS_BLOCK is not set + +# +# MemoryStick Host Controller Drivers +# +CONFIG_MEMSTICK_TIFM_MS=m +CONFIG_MEMSTICK_JMICRON_38X=m +CONFIG_MEMSTICK_R592=m +CONFIG_MEMSTICK_REALTEK_PCI=m +CONFIG_MEMSTICK_REALTEK_USB=m +CONFIG_NEW_LEDS=y +CONFIG_LEDS_CLASS=y +# CONFIG_LEDS_CLASS_FLASH is not set +# CONFIG_LEDS_BRIGHTNESS_HW_CHANGED is not set + +# +# LED drivers +# +# CONFIG_LEDS_APU is not set +CONFIG_LEDS_LM3530=m +# CONFIG_LEDS_LM3642 is not set +# CONFIG_LEDS_PCA9532 is not set +# CONFIG_LEDS_GPIO is not set +CONFIG_LEDS_LP3944=m +# CONFIG_LEDS_LP3952 is not set +CONFIG_LEDS_LP55XX_COMMON=m +CONFIG_LEDS_LP5521=m +CONFIG_LEDS_LP5523=m +CONFIG_LEDS_LP5562=m +# CONFIG_LEDS_LP8501 is not set +CONFIG_LEDS_CLEVO_MAIL=m +# CONFIG_LEDS_PCA955X is not set +# CONFIG_LEDS_PCA963X is not set +# CONFIG_LEDS_BD2802 is not set +CONFIG_LEDS_INTEL_SS4200=m +CONFIG_LEDS_LT3593=m +# CONFIG_LEDS_TCA6507 is not set +# CONFIG_LEDS_TLC591XX is not set +# CONFIG_LEDS_LM355x is not set + +# +# LED driver for blink(1) USB RGB LED is under Special HID drivers (HID_THINGM) +# +CONFIG_LEDS_BLINKM=m +# CONFIG_LEDS_MLXCPLD is not set +# CONFIG_LEDS_MLXREG is not set +# CONFIG_LEDS_USER is not set +# CONFIG_LEDS_NIC78BX is not set + +# +# LED Triggers +# +CONFIG_LEDS_TRIGGERS=y +CONFIG_LEDS_TRIGGER_TIMER=m +CONFIG_LEDS_TRIGGER_ONESHOT=m +# CONFIG_LEDS_TRIGGER_DISK is not set +# CONFIG_LEDS_TRIGGER_MTD is not set +CONFIG_LEDS_TRIGGER_HEARTBEAT=m +CONFIG_LEDS_TRIGGER_BACKLIGHT=m +# CONFIG_LEDS_TRIGGER_CPU is not set +# CONFIG_LEDS_TRIGGER_ACTIVITY is not set +CONFIG_LEDS_TRIGGER_GPIO=m +CONFIG_LEDS_TRIGGER_DEFAULT_ON=m + +# +# iptables trigger is under Netfilter config (LED target) +# +CONFIG_LEDS_TRIGGER_TRANSIENT=m +CONFIG_LEDS_TRIGGER_CAMERA=m +# CONFIG_LEDS_TRIGGER_PANIC is not set +# CONFIG_LEDS_TRIGGER_NETDEV is not set +# CONFIG_LEDS_TRIGGER_PATTERN is not set +CONFIG_ACCESSIBILITY=y +CONFIG_A11Y_BRAILLE_CONSOLE=y +CONFIG_INFINIBAND=m +CONFIG_INFINIBAND_USER_MAD=m +CONFIG_INFINIBAND_USER_ACCESS=m +# CONFIG_INFINIBAND_EXP_LEGACY_VERBS_NEW_UAPI is not set +CONFIG_INFINIBAND_USER_MEM=y +CONFIG_INFINIBAND_ON_DEMAND_PAGING=y +CONFIG_INFINIBAND_ADDR_TRANS=y +CONFIG_INFINIBAND_ADDR_TRANS_CONFIGFS=y +CONFIG_INFINIBAND_MTHCA=m +CONFIG_INFINIBAND_MTHCA_DEBUG=y +CONFIG_INFINIBAND_QIB=m +CONFIG_INFINIBAND_QIB_DCA=y +CONFIG_INFINIBAND_CXGB3=m +CONFIG_INFINIBAND_CXGB4=m +# CONFIG_INFINIBAND_I40IW is not set +CONFIG_MLX4_INFINIBAND=m +CONFIG_INFINIBAND_NES=m +# CONFIG_INFINIBAND_NES_DEBUG is not set +CONFIG_INFINIBAND_OCRDMA=m +# CONFIG_INFINIBAND_VMWARE_PVRDMA is not set +CONFIG_INFINIBAND_USNIC=m +CONFIG_INFINIBAND_IPOIB=m +# CONFIG_INFINIBAND_IPOIB_CM is not set +CONFIG_INFINIBAND_IPOIB_DEBUG=y +# CONFIG_INFINIBAND_IPOIB_DEBUG_DATA is not set +CONFIG_INFINIBAND_SRP=m +CONFIG_INFINIBAND_SRPT=m +CONFIG_INFINIBAND_ISER=m +CONFIG_INFINIBAND_ISERT=m +# CONFIG_INFINIBAND_OPA_VNIC is not set +CONFIG_INFINIBAND_RDMAVT=m +# CONFIG_RDMA_RXE is not set +# CONFIG_INFINIBAND_HFI1 is not set +# CONFIG_INFINIBAND_BNXT_RE is not set +CONFIG_EDAC_ATOMIC_SCRUB=y +CONFIG_EDAC_SUPPORT=y +CONFIG_EDAC=y +CONFIG_EDAC_LEGACY_SYSFS=y +# CONFIG_EDAC_DEBUG is not set +CONFIG_EDAC_DECODE_MCE=y +# CONFIG_EDAC_GHES is not set +CONFIG_EDAC_AMD64=m +# CONFIG_EDAC_AMD64_ERROR_INJECTION is not set +CONFIG_EDAC_E752X=m +CONFIG_EDAC_I82975X=m +CONFIG_EDAC_I3000=m +CONFIG_EDAC_I3200=m +# CONFIG_EDAC_IE31200 is not set +CONFIG_EDAC_X38=m +CONFIG_EDAC_I5400=m +CONFIG_EDAC_I7CORE=m +CONFIG_EDAC_I5000=m +CONFIG_EDAC_I5100=m +CONFIG_EDAC_I7300=m +CONFIG_EDAC_SBRIDGE=m +# CONFIG_EDAC_SKX is not set +# CONFIG_EDAC_PND2 is not set +CONFIG_RTC_LIB=y +CONFIG_RTC_MC146818_LIB=y +CONFIG_RTC_CLASS=y +CONFIG_RTC_HCTOSYS=y +CONFIG_RTC_HCTOSYS_DEVICE="rtc0" +# CONFIG_RTC_SYSTOHC is not set +# CONFIG_RTC_DEBUG is not set +CONFIG_RTC_NVMEM=y + +# +# RTC interfaces +# +CONFIG_RTC_INTF_SYSFS=y +CONFIG_RTC_INTF_PROC=y +CONFIG_RTC_INTF_DEV=y +# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set +# CONFIG_RTC_DRV_TEST is not set + +# +# I2C RTC drivers +# +# CONFIG_RTC_DRV_ABB5ZES3 is not set +CONFIG_RTC_DRV_ABX80X=m +CONFIG_RTC_DRV_DS1307=m +# CONFIG_RTC_DRV_DS1307_CENTURY is not set +CONFIG_RTC_DRV_DS1374=m +CONFIG_RTC_DRV_DS1374_WDT=y +CONFIG_RTC_DRV_DS1672=m +CONFIG_RTC_DRV_MAX6900=m +CONFIG_RTC_DRV_RS5C372=m +CONFIG_RTC_DRV_ISL1208=m +CONFIG_RTC_DRV_ISL12022=m +CONFIG_RTC_DRV_X1205=m +CONFIG_RTC_DRV_PCF8523=m +CONFIG_RTC_DRV_PCF85063=m +# CONFIG_RTC_DRV_PCF85363 is not set +CONFIG_RTC_DRV_PCF8563=m +CONFIG_RTC_DRV_PCF8583=m +CONFIG_RTC_DRV_M41T80=m +CONFIG_RTC_DRV_M41T80_WDT=y +CONFIG_RTC_DRV_BQ32K=m +CONFIG_RTC_DRV_S35390A=m +CONFIG_RTC_DRV_FM3130=m +CONFIG_RTC_DRV_RX8010=m +CONFIG_RTC_DRV_RX8581=m +CONFIG_RTC_DRV_RX8025=m +CONFIG_RTC_DRV_EM3027=m +# CONFIG_RTC_DRV_RV8803 is not set + +# +# SPI RTC drivers +# +CONFIG_RTC_I2C_AND_SPI=y + +# +# SPI and I2C RTC drivers +# +CONFIG_RTC_DRV_DS3232=m +CONFIG_RTC_DRV_DS3232_HWMON=y +CONFIG_RTC_DRV_PCF2127=m +CONFIG_RTC_DRV_RV3029C2=m +CONFIG_RTC_DRV_RV3029_HWMON=y + +# +# Platform RTC drivers +# +CONFIG_RTC_DRV_CMOS=y +CONFIG_RTC_DRV_DS1286=m +CONFIG_RTC_DRV_DS1511=m +CONFIG_RTC_DRV_DS1553=m +# CONFIG_RTC_DRV_DS1685_FAMILY is not set +CONFIG_RTC_DRV_DS1742=m +CONFIG_RTC_DRV_DS2404=m +CONFIG_RTC_DRV_STK17TA8=m +CONFIG_RTC_DRV_M48T86=m +CONFIG_RTC_DRV_M48T35=m +CONFIG_RTC_DRV_M48T59=m +CONFIG_RTC_DRV_MSM6242=m +CONFIG_RTC_DRV_BQ4802=m +CONFIG_RTC_DRV_RP5C01=m +CONFIG_RTC_DRV_V3020=m + +# +# on-CPU RTC drivers +# +# CONFIG_RTC_DRV_FTRTC010 is not set + +# +# HID Sensor RTC drivers +# +# CONFIG_RTC_DRV_HID_SENSOR_TIME is not set +CONFIG_DMADEVICES=y +# CONFIG_DMADEVICES_DEBUG is not set + +# +# DMA Devices +# +CONFIG_DMA_ENGINE=y +CONFIG_DMA_VIRTUAL_CHANNELS=y +CONFIG_DMA_ACPI=y +# CONFIG_ALTERA_MSGDMA is not set +# CONFIG_INTEL_IDMA64 is not set +CONFIG_INTEL_IOATDMA=m +CONFIG_INTEL_MIC_X100_DMA=m +# CONFIG_QCOM_HIDMA_MGMT is not set +# CONFIG_QCOM_HIDMA is not set +CONFIG_DW_DMAC_CORE=y +CONFIG_DW_DMAC=m +CONFIG_DW_DMAC_PCI=y +CONFIG_HSU_DMA=y + +# +# DMA Clients +# +CONFIG_ASYNC_TX_DMA=y +# CONFIG_DMATEST is not set +CONFIG_DMA_ENGINE_RAID=y + +# +# DMABUF options +# +CONFIG_SYNC_FILE=y +# CONFIG_SW_SYNC is not set +# CONFIG_UDMABUF is not set +CONFIG_DCA=m +CONFIG_AUXDISPLAY=y +# CONFIG_HD44780 is not set +CONFIG_KS0108=m +CONFIG_KS0108_PORT=0x378 +CONFIG_KS0108_DELAY=2 +CONFIG_CFAG12864B=m +CONFIG_CFAG12864B_RATE=20 +# CONFIG_IMG_ASCII_LCD is not set +# CONFIG_PANEL is not set +CONFIG_UIO=m +CONFIG_UIO_CIF=m +# CONFIG_UIO_PDRV_GENIRQ is not set +# CONFIG_UIO_DMEM_GENIRQ is not set +CONFIG_UIO_AEC=m +CONFIG_UIO_SERCOS3=m +CONFIG_UIO_PCI_GENERIC=m +# CONFIG_UIO_NETX is not set +# CONFIG_UIO_PRUSS is not set +# CONFIG_UIO_MF624 is not set +CONFIG_VFIO_IOMMU_TYPE1=m +CONFIG_VFIO_VIRQFD=m +CONFIG_VFIO=m +# CONFIG_VFIO_NOIOMMU is not set +CONFIG_VFIO_PCI=m +CONFIG_VFIO_PCI_VGA=y +CONFIG_VFIO_PCI_MMAP=y +CONFIG_VFIO_PCI_INTX=y +CONFIG_VFIO_PCI_IGD=y +# CONFIG_VFIO_MDEV is not set +CONFIG_IRQ_BYPASS_MANAGER=m +# CONFIG_VIRT_DRIVERS is not set +CONFIG_VIRTIO=m +CONFIG_VIRTIO_MENU=y +CONFIG_VIRTIO_PCI=m +CONFIG_VIRTIO_PCI_LEGACY=y +CONFIG_VIRTIO_BALLOON=m +# CONFIG_VIRTIO_INPUT is not set +CONFIG_VIRTIO_MMIO=m +# CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES is not set + +# +# Microsoft Hyper-V guest support +# +CONFIG_STAGING=y +# CONFIG_PRISM2_USB is not set +# CONFIG_COMEDI is not set +CONFIG_RTL8192U=m +CONFIG_RTLLIB=m +CONFIG_RTLLIB_CRYPTO_CCMP=m +CONFIG_RTLLIB_CRYPTO_TKIP=m +CONFIG_RTLLIB_CRYPTO_WEP=m +CONFIG_RTL8192E=m +CONFIG_RTL8723BS=m +CONFIG_R8712U=m +CONFIG_R8188EU=m +CONFIG_88EU_AP_MODE=y +CONFIG_R8822BE=m +CONFIG_RTLWIFI_DEBUG_ST=y +CONFIG_RTS5208=m +CONFIG_VT6655=m +CONFIG_VT6656=m + +# +# IIO staging drivers +# + +# +# Accelerometers +# + +# +# Analog to digital converters +# +# CONFIG_AD7606 is not set + +# +# Analog digital bi-direction converters +# +# CONFIG_ADT7316 is not set + +# +# Capacitance to digital converters +# +# CONFIG_AD7150 is not set +# CONFIG_AD7152 is not set +# CONFIG_AD7746 is not set + +# +# Direct Digital Synthesis +# + +# +# Network Analyzer, Impedance Converters +# +# CONFIG_AD5933 is not set + +# +# Active energy metering IC +# +# CONFIG_ADE7854 is not set + +# +# Resolver to digital converters +# +# CONFIG_FB_SM750 is not set +# CONFIG_FB_XGI is not set + +# +# Speakup console speech +# +# CONFIG_SPEAKUP is not set +CONFIG_STAGING_MEDIA=y +# CONFIG_I2C_BCM2048 is not set +# CONFIG_VIDEO_ZORAN is not set + +# +# Android +# +# CONFIG_LTE_GDM724X is not set +# CONFIG_FIREWIRE_SERIAL is not set +# CONFIG_GS_FPGABOOT is not set +# CONFIG_UNISYSSPAR is not set +# CONFIG_WILC1000_SDIO is not set +# CONFIG_MOST is not set +# CONFIG_KS7010 is not set +# CONFIG_GREYBUS is not set +# CONFIG_DRM_VBOXVIDEO is not set +# CONFIG_MTK_MMC is not set + +# +# Gasket devices +# +# CONFIG_STAGING_GASKET_FRAMEWORK is not set +# CONFIG_XIL_AXIS_FIFO is not set +# CONFIG_EROFS_FS is not set +CONFIG_X86_PLATFORM_DEVICES=y +CONFIG_ACER_WMI=m +CONFIG_ACER_WIRELESS=m +CONFIG_ACERHDF=m +CONFIG_ALIENWARE_WMI=m +CONFIG_ASUS_LAPTOP=m +CONFIG_DCDBAS=m +CONFIG_DELL_SMBIOS=m +# CONFIG_DELL_SMBIOS_WMI is not set +# CONFIG_DELL_SMBIOS_SMM is not set +CONFIG_DELL_LAPTOP=m +CONFIG_DELL_WMI=m +CONFIG_DELL_WMI_DESCRIPTOR=m +CONFIG_DELL_WMI_AIO=m +CONFIG_DELL_WMI_LED=m +CONFIG_DELL_SMO8800=m +CONFIG_DELL_RBTN=m +# CONFIG_DELL_RBU is not set +CONFIG_FUJITSU_LAPTOP=m +CONFIG_FUJITSU_TABLET=m +CONFIG_AMILO_RFKILL=m +# CONFIG_GPD_POCKET_FAN is not set +CONFIG_HP_ACCEL=m +CONFIG_HP_WIRELESS=m +CONFIG_HP_WMI=m +# CONFIG_LG_LAPTOP is not set +CONFIG_MSI_LAPTOP=m +CONFIG_PANASONIC_LAPTOP=m +CONFIG_COMPAL_LAPTOP=m +CONFIG_SONY_LAPTOP=m +CONFIG_SONYPI_COMPAT=y +CONFIG_IDEAPAD_LAPTOP=m +CONFIG_THINKPAD_ACPI=m +CONFIG_THINKPAD_ACPI_ALSA_SUPPORT=y +# CONFIG_THINKPAD_ACPI_DEBUGFACILITIES is not set +# CONFIG_THINKPAD_ACPI_DEBUG is not set +# CONFIG_THINKPAD_ACPI_UNSAFE_LEDS is not set +CONFIG_THINKPAD_ACPI_VIDEO=y +CONFIG_THINKPAD_ACPI_HOTKEY_POLL=y +CONFIG_SENSORS_HDAPS=m +CONFIG_INTEL_MENLOW=m +CONFIG_EEEPC_LAPTOP=m +CONFIG_ASUS_WMI=m +CONFIG_ASUS_NB_WMI=m +CONFIG_EEEPC_WMI=m +CONFIG_ASUS_WIRELESS=m +CONFIG_ACPI_WMI=m +CONFIG_WMI_BMOF=m +# CONFIG_INTEL_WMI_THUNDERBOLT is not set +CONFIG_MSI_WMI=m +CONFIG_PEAQ_WMI=m +CONFIG_TOPSTAR_LAPTOP=m +CONFIG_ACPI_TOSHIBA=m +CONFIG_TOSHIBA_BT_RFKILL=m +CONFIG_TOSHIBA_HAPS=m +CONFIG_TOSHIBA_WMI=m +CONFIG_ACPI_CMPC=m +CONFIG_INTEL_INT0002_VGPIO=m +CONFIG_INTEL_HID_EVENT=m +CONFIG_INTEL_VBTN=m +CONFIG_INTEL_IPS=m +CONFIG_INTEL_PMC_CORE=y +CONFIG_IBM_RTL=m +CONFIG_SAMSUNG_LAPTOP=m +CONFIG_MXM_WMI=m +CONFIG_INTEL_OAKTRAIL=m +CONFIG_SAMSUNG_Q10=m +CONFIG_APPLE_GMUX=m +CONFIG_INTEL_RST=m +CONFIG_INTEL_SMARTCONNECT=m +CONFIG_PVPANIC=m +CONFIG_INTEL_PMC_IPC=m +CONFIG_SURFACE_PRO3_BUTTON=m +CONFIG_INTEL_PUNIT_IPC=m +CONFIG_INTEL_TELEMETRY=m +CONFIG_MLX_PLATFORM=m +CONFIG_INTEL_TURBO_MAX_3=y +# CONFIG_I2C_MULTI_INSTANTIATE is not set +# CONFIG_INTEL_ATOMISP2_PM is not set +CONFIG_PMC_ATOM=y +CONFIG_CHROME_PLATFORMS=y +CONFIG_CHROMEOS_LAPTOP=m +CONFIG_CHROMEOS_PSTORE=m +# CONFIG_CHROMEOS_TBMC is not set +CONFIG_CROS_KBD_LED_BACKLIGHT=m +# CONFIG_MELLANOX_PLATFORM is not set +CONFIG_CLKDEV_LOOKUP=y +CONFIG_HAVE_CLK_PREPARE=y +CONFIG_COMMON_CLK=y + +# +# Common Clock Framework +# +# CONFIG_COMMON_CLK_MAX9485 is not set +# CONFIG_COMMON_CLK_SI5351 is not set +# CONFIG_COMMON_CLK_SI544 is not set +# CONFIG_COMMON_CLK_CDCE706 is not set +# CONFIG_COMMON_CLK_CS2000_CP is not set +# CONFIG_HWSPINLOCK is not set + +# +# Clock Source drivers +# +CONFIG_CLKEVT_I8253=y +CONFIG_I8253_LOCK=y +CONFIG_CLKBLD_I8253=y +CONFIG_MAILBOX=y +CONFIG_PCC=y +# CONFIG_ALTERA_MBOX is not set +CONFIG_IOMMU_API=y +CONFIG_IOMMU_SUPPORT=y + +# +# Generic IOMMU Pagetable Support +# +# CONFIG_IOMMU_DEBUGFS is not set +# CONFIG_IOMMU_DEFAULT_PASSTHROUGH is not set +CONFIG_IOMMU_IOVA=y +CONFIG_AMD_IOMMU=y +CONFIG_AMD_IOMMU_V2=m +CONFIG_DMAR_TABLE=y +CONFIG_INTEL_IOMMU=y +CONFIG_INTEL_IOMMU_SVM=y +# CONFIG_INTEL_IOMMU_DEFAULT_ON is not set +CONFIG_INTEL_IOMMU_FLOPPY_WA=y +CONFIG_IRQ_REMAP=y + +# +# Remoteproc drivers +# +# CONFIG_REMOTEPROC is not set + +# +# Rpmsg drivers +# +# CONFIG_RPMSG_QCOM_GLINK_RPM is not set +# CONFIG_RPMSG_VIRTIO is not set +# CONFIG_SOUNDWIRE is not set + +# +# SOC (System On Chip) specific Drivers +# + +# +# Amlogic SoC drivers +# + +# +# Broadcom SoC drivers +# + +# +# NXP/Freescale QorIQ SoC drivers +# + +# +# i.MX SoC drivers +# + +# +# Qualcomm SoC drivers +# +# CONFIG_SOC_TI is not set + +# +# Xilinx SoC drivers +# +# CONFIG_XILINX_VCU is not set +CONFIG_PM_DEVFREQ=y + +# +# DEVFREQ Governors +# +CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND=m +CONFIG_DEVFREQ_GOV_PERFORMANCE=m +CONFIG_DEVFREQ_GOV_POWERSAVE=m +CONFIG_DEVFREQ_GOV_USERSPACE=m +CONFIG_DEVFREQ_GOV_PASSIVE=m + +# +# DEVFREQ Drivers +# +# CONFIG_PM_DEVFREQ_EVENT is not set +CONFIG_EXTCON=y + +# +# Extcon Device Drivers +# +# CONFIG_EXTCON_ADC_JACK is not set +# CONFIG_EXTCON_GPIO is not set +# CONFIG_EXTCON_INTEL_INT3496 is not set +# CONFIG_EXTCON_MAX3355 is not set +# CONFIG_EXTCON_RT8973A is not set +# CONFIG_EXTCON_SM5502 is not set +# CONFIG_EXTCON_USB_GPIO is not set +# CONFIG_MEMORY is not set +CONFIG_IIO=m +CONFIG_IIO_BUFFER=y +CONFIG_IIO_BUFFER_CB=m +# CONFIG_IIO_BUFFER_HW_CONSUMER is not set +CONFIG_IIO_KFIFO_BUF=m +# CONFIG_IIO_CONFIGFS is not set +CONFIG_IIO_TRIGGER=y +CONFIG_IIO_CONSUMERS_PER_TRIGGER=2 +# CONFIG_IIO_SW_DEVICE is not set +# CONFIG_IIO_SW_TRIGGER is not set + +# +# Accelerometers +# +# CONFIG_ADXL345_I2C is not set +# CONFIG_ADXL372_I2C is not set +# CONFIG_BMA180 is not set +# CONFIG_BMC150_ACCEL is not set +# CONFIG_DA280 is not set +# CONFIG_DA311 is not set +# CONFIG_DMARD09 is not set +# CONFIG_DMARD10 is not set +# CONFIG_HID_SENSOR_ACCEL_3D is not set +# CONFIG_IIO_CROS_EC_ACCEL_LEGACY is not set +# CONFIG_IIO_ST_ACCEL_3AXIS is not set +# CONFIG_KXSD9 is not set +# CONFIG_KXCJK1013 is not set +# CONFIG_MC3230 is not set +# CONFIG_MMA7455_I2C is not set +# CONFIG_MMA7660 is not set +# CONFIG_MMA8452 is not set +# CONFIG_MMA9551 is not set +# CONFIG_MMA9553 is not set +# CONFIG_MXC4005 is not set +# CONFIG_MXC6255 is not set +# CONFIG_STK8312 is not set +# CONFIG_STK8BA50 is not set + +# +# Analog to digital converters +# +# CONFIG_AD7291 is not set +# CONFIG_AD799X is not set +# CONFIG_HX711 is not set +# CONFIG_INA2XX_ADC is not set +# CONFIG_LTC2471 is not set +# CONFIG_LTC2485 is not set +# CONFIG_LTC2497 is not set +# CONFIG_MAX1363 is not set +# CONFIG_MAX9611 is not set +# CONFIG_MCP3422 is not set +# CONFIG_NAU7802 is not set +# CONFIG_TI_ADC081C is not set +# CONFIG_TI_ADS1015 is not set +# CONFIG_VIPERBOARD_ADC is not set + +# +# Analog Front Ends +# + +# +# Amplifiers +# + +# +# Chemical Sensors +# +# CONFIG_ATLAS_PH_SENSOR is not set +# CONFIG_BME680 is not set +# CONFIG_CCS811 is not set +# CONFIG_IAQCORE is not set +# CONFIG_VZ89X is not set + +# +# Hid Sensor IIO Common +# +CONFIG_HID_SENSOR_IIO_COMMON=m +CONFIG_HID_SENSOR_IIO_TRIGGER=m + +# +# SSP Sensor Common +# + +# +# Counters +# + +# +# Digital to analog converters +# +# CONFIG_AD5064 is not set +# CONFIG_AD5380 is not set +# CONFIG_AD5446 is not set +# CONFIG_AD5593R is not set +# CONFIG_AD5696_I2C is not set +# CONFIG_DS4424 is not set +# CONFIG_M62332 is not set +# CONFIG_MAX517 is not set +# CONFIG_MCP4725 is not set +# CONFIG_TI_DAC5571 is not set + +# +# IIO dummy driver +# + +# +# Frequency Synthesizers DDS/PLL +# + +# +# Clock Generator/Distribution +# + +# +# Phase-Locked Loop (PLL) frequency synthesizers +# + +# +# Digital gyroscope sensors +# +# CONFIG_BMG160 is not set +# CONFIG_HID_SENSOR_GYRO_3D is not set +# CONFIG_MPU3050_I2C is not set +# CONFIG_IIO_ST_GYRO_3AXIS is not set +# CONFIG_ITG3200 is not set + +# +# Health Sensors +# + +# +# Heart Rate Monitors +# +# CONFIG_AFE4404 is not set +# CONFIG_MAX30100 is not set +# CONFIG_MAX30102 is not set + +# +# Humidity sensors +# +# CONFIG_AM2315 is not set +# CONFIG_DHT11 is not set +# CONFIG_HDC100X is not set +# CONFIG_HID_SENSOR_HUMIDITY is not set +# CONFIG_HTS221 is not set +# CONFIG_HTU21 is not set +# CONFIG_SI7005 is not set +# CONFIG_SI7020 is not set + +# +# Inertial measurement units +# +# CONFIG_BMI160_I2C is not set +# CONFIG_KMX61 is not set +# CONFIG_INV_MPU6050_I2C is not set +# CONFIG_IIO_ST_LSM6DSX is not set + +# +# Light sensors +# +# CONFIG_ACPI_ALS is not set +# CONFIG_ADJD_S311 is not set +# CONFIG_AL3320A is not set +# CONFIG_APDS9300 is not set +# CONFIG_APDS9960 is not set +# CONFIG_BH1750 is not set +# CONFIG_BH1780 is not set +# CONFIG_CM32181 is not set +# CONFIG_CM3232 is not set +# CONFIG_CM3323 is not set +# CONFIG_CM36651 is not set +# CONFIG_GP2AP020A00F is not set +# CONFIG_SENSORS_ISL29018 is not set +# CONFIG_SENSORS_ISL29028 is not set +# CONFIG_ISL29125 is not set +# CONFIG_HID_SENSOR_ALS is not set +# CONFIG_HID_SENSOR_PROX is not set +# CONFIG_JSA1212 is not set +# CONFIG_RPR0521 is not set +# CONFIG_LTR501 is not set +# CONFIG_LV0104CS is not set +# CONFIG_MAX44000 is not set +# CONFIG_OPT3001 is not set +# CONFIG_PA12203001 is not set +# CONFIG_SI1133 is not set +# CONFIG_SI1145 is not set +# CONFIG_STK3310 is not set +# CONFIG_ST_UVIS25 is not set +# CONFIG_TCS3414 is not set +# CONFIG_TCS3472 is not set +# CONFIG_SENSORS_TSL2563 is not set +# CONFIG_TSL2583 is not set +# CONFIG_TSL2772 is not set +# CONFIG_TSL4531 is not set +# CONFIG_US5182D is not set +# CONFIG_VCNL4000 is not set +# CONFIG_VEML6070 is not set +# CONFIG_VL6180 is not set +# CONFIG_ZOPT2201 is not set + +# +# Magnetometer sensors +# +# CONFIG_AK8975 is not set +# CONFIG_AK09911 is not set +# CONFIG_BMC150_MAGN_I2C is not set +# CONFIG_MAG3110 is not set +# CONFIG_HID_SENSOR_MAGNETOMETER_3D is not set +# CONFIG_MMC35240 is not set +# CONFIG_IIO_ST_MAGN_3AXIS is not set +# CONFIG_SENSORS_HMC5843_I2C is not set + +# +# Multiplexers +# + +# +# Inclinometer sensors +# +# CONFIG_HID_SENSOR_INCLINOMETER_3D is not set +# CONFIG_HID_SENSOR_DEVICE_ROTATION is not set + +# +# Triggers - standalone +# +# CONFIG_IIO_INTERRUPT_TRIGGER is not set +# CONFIG_IIO_SYSFS_TRIGGER is not set + +# +# Digital potentiometers +# +# CONFIG_AD5272 is not set +# CONFIG_DS1803 is not set +# CONFIG_MCP4018 is not set +# CONFIG_MCP4531 is not set +# CONFIG_TPL0102 is not set + +# +# Digital potentiostats +# +# CONFIG_LMP91000 is not set + +# +# Pressure sensors +# +# CONFIG_ABP060MG is not set +# CONFIG_BMP280 is not set +# CONFIG_HID_SENSOR_PRESS is not set +# CONFIG_HP03 is not set +# CONFIG_MPL115_I2C is not set +# CONFIG_MPL3115 is not set +# CONFIG_MS5611 is not set +# CONFIG_MS5637 is not set +# CONFIG_IIO_ST_PRESS is not set +# CONFIG_T5403 is not set +# CONFIG_HP206C is not set +# CONFIG_ZPA2326 is not set + +# +# Lightning sensors +# + +# +# Proximity and distance sensors +# +# CONFIG_ISL29501 is not set +# CONFIG_LIDAR_LITE_V2 is not set +# CONFIG_RFD77402 is not set +# CONFIG_SRF04 is not set +# CONFIG_SX9500 is not set +# CONFIG_SRF08 is not set +# CONFIG_VL53L0X_I2C is not set + +# +# Resolver to digital converters +# + +# +# Temperature sensors +# +# CONFIG_HID_SENSOR_TEMP is not set +# CONFIG_MLX90614 is not set +# CONFIG_MLX90632 is not set +# CONFIG_TMP006 is not set +# CONFIG_TMP007 is not set +# CONFIG_TSYS01 is not set +# CONFIG_TSYS02D is not set +CONFIG_NTB=m +# CONFIG_NTB_AMD is not set +# CONFIG_NTB_IDT is not set +# CONFIG_NTB_INTEL is not set +# CONFIG_NTB_SWITCHTEC is not set +# CONFIG_NTB_PINGPONG is not set +# CONFIG_NTB_TOOL is not set +# CONFIG_NTB_PERF is not set +# CONFIG_NTB_TRANSPORT is not set +# CONFIG_VME_BUS is not set +# CONFIG_PWM is not set + +# +# IRQ chip support +# +CONFIG_ARM_GIC_MAX_NR=1 +# CONFIG_IPACK_BUS is not set +CONFIG_RESET_CONTROLLER=y +# CONFIG_RESET_TI_SYSCON is not set +CONFIG_FMC=m +CONFIG_FMC_FAKEDEV=m +CONFIG_FMC_TRIVIAL=m +CONFIG_FMC_WRITE_EEPROM=m +CONFIG_FMC_CHARDEV=m + +# +# PHY Subsystem +# +CONFIG_GENERIC_PHY=y +# CONFIG_BCM_KONA_USB2_PHY is not set +# CONFIG_PHY_PXA_28NM_HSIC is not set +# CONFIG_PHY_PXA_28NM_USB2 is not set +# CONFIG_PHY_CPCAP_USB is not set +CONFIG_POWERCAP=y +CONFIG_INTEL_RAPL=m +# CONFIG_IDLE_INJECT is not set +# CONFIG_MCB is not set + +# +# Performance monitor support +# +CONFIG_RAS=y +# CONFIG_RAS_CEC is not set +# CONFIG_THUNDERBOLT is not set + +# +# Android +# +# CONFIG_ANDROID is not set +# CONFIG_LIBNVDIMM is not set +CONFIG_DAX=m +# CONFIG_DEV_DAX is not set +CONFIG_NVMEM=y + +# +# HW tracing support +# +# CONFIG_STM is not set +# CONFIG_INTEL_TH is not set +# CONFIG_FPGA is not set +CONFIG_PM_OPP=y +# CONFIG_UNISYS_VISORBUS is not set +# CONFIG_SIOX is not set +# CONFIG_SLIMBUS is not set + +# +# File systems +# +CONFIG_DCACHE_WORD_ACCESS=y +CONFIG_FS_IOMAP=y +CONFIG_EXT2_FS=y +CONFIG_EXT2_FS_XATTR=y +CONFIG_EXT2_FS_POSIX_ACL=y +CONFIG_EXT2_FS_SECURITY=y +CONFIG_EXT3_FS=m +CONFIG_EXT3_FS_POSIX_ACL=y +CONFIG_EXT3_FS_SECURITY=y +CONFIG_EXT4_FS=m +CONFIG_EXT4_FS_POSIX_ACL=y +CONFIG_EXT4_FS_SECURITY=y +# CONFIG_EXT4_ENCRYPTION is not set +# CONFIG_EXT4_DEBUG is not set +CONFIG_JBD2=m +# CONFIG_JBD2_DEBUG is not set +CONFIG_FS_MBCACHE=y +CONFIG_REISERFS_FS=m +# CONFIG_REISERFS_CHECK is not set +CONFIG_REISERFS_PROC_INFO=y +CONFIG_REISERFS_FS_XATTR=y +CONFIG_REISERFS_FS_POSIX_ACL=y +CONFIG_REISERFS_FS_SECURITY=y +CONFIG_JFS_FS=m +CONFIG_JFS_POSIX_ACL=y +CONFIG_JFS_SECURITY=y +# CONFIG_JFS_DEBUG is not set +CONFIG_JFS_STATISTICS=y +CONFIG_XFS_FS=y +CONFIG_XFS_QUOTA=y +CONFIG_XFS_POSIX_ACL=y +CONFIG_XFS_RT=y +# CONFIG_XFS_ONLINE_SCRUB is not set +# CONFIG_XFS_WARN is not set +# CONFIG_XFS_DEBUG is not set +CONFIG_GFS2_FS=m +CONFIG_GFS2_FS_LOCKING_DLM=y +CONFIG_OCFS2_FS=m +CONFIG_OCFS2_FS_O2CB=m +CONFIG_OCFS2_FS_USERSPACE_CLUSTER=m +# CONFIG_OCFS2_FS_STATS is not set +# CONFIG_OCFS2_DEBUG_MASKLOG is not set +# CONFIG_OCFS2_DEBUG_FS is not set +CONFIG_BTRFS_FS=m +CONFIG_BTRFS_FS_POSIX_ACL=y +# CONFIG_BTRFS_FS_CHECK_INTEGRITY is not set +# CONFIG_BTRFS_FS_RUN_SANITY_TESTS is not set +# CONFIG_BTRFS_DEBUG is not set +# CONFIG_BTRFS_ASSERT is not set +# CONFIG_BTRFS_FS_REF_VERIFY is not set +CONFIG_NILFS2_FS=m +CONFIG_F2FS_FS=m +CONFIG_F2FS_STAT_FS=y +CONFIG_F2FS_FS_XATTR=y +CONFIG_F2FS_FS_POSIX_ACL=y +# CONFIG_F2FS_FS_SECURITY is not set +# CONFIG_F2FS_CHECK_FS is not set +# CONFIG_F2FS_FS_ENCRYPTION is not set +# CONFIG_F2FS_FAULT_INJECTION is not set +# CONFIG_FS_DAX is not set +CONFIG_FS_POSIX_ACL=y +CONFIG_EXPORTFS=y +# CONFIG_EXPORTFS_BLOCK_OPS is not set +CONFIG_FILE_LOCKING=y +CONFIG_MANDATORY_FILE_LOCKING=y +# CONFIG_FS_ENCRYPTION is not set +CONFIG_FSNOTIFY=y +CONFIG_DNOTIFY=y +CONFIG_INOTIFY_USER=y +CONFIG_FANOTIFY=y +# CONFIG_FANOTIFY_ACCESS_PERMISSIONS is not set +CONFIG_QUOTA=y +CONFIG_QUOTA_NETLINK_INTERFACE=y +CONFIG_PRINT_QUOTA_WARNING=y +# CONFIG_QUOTA_DEBUG is not set +CONFIG_QUOTA_TREE=y +CONFIG_QFMT_V1=m +CONFIG_QFMT_V2=y +CONFIG_QUOTACTL=y +CONFIG_QUOTACTL_COMPAT=y +CONFIG_AUTOFS4_FS=m +CONFIG_AUTOFS_FS=m +CONFIG_FUSE_FS=m +CONFIG_CUSE=m +CONFIG_OVERLAY_FS=m +# CONFIG_OVERLAY_FS_REDIRECT_DIR is not set +CONFIG_OVERLAY_FS_REDIRECT_ALWAYS_FOLLOW=y +# CONFIG_OVERLAY_FS_INDEX is not set +# CONFIG_OVERLAY_FS_XINO_AUTO is not set +# CONFIG_OVERLAY_FS_METACOPY is not set + +# +# Caches +# +CONFIG_FSCACHE=m +# CONFIG_FSCACHE_STATS is not set +# CONFIG_FSCACHE_HISTOGRAM is not set +# CONFIG_FSCACHE_DEBUG is not set +# CONFIG_FSCACHE_OBJECT_LIST is not set +CONFIG_CACHEFILES=m +# CONFIG_CACHEFILES_DEBUG is not set +# CONFIG_CACHEFILES_HISTOGRAM is not set + +# +# CD-ROM/DVD Filesystems +# +CONFIG_ISO9660_FS=m +CONFIG_JOLIET=y +CONFIG_ZISOFS=y +CONFIG_UDF_FS=m + +# +# DOS/FAT/NT Filesystems +# +CONFIG_FAT_FS=m +CONFIG_MSDOS_FS=m +CONFIG_VFAT_FS=m +CONFIG_FAT_DEFAULT_CODEPAGE=437 +CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" +# CONFIG_FAT_DEFAULT_UTF8 is not set +CONFIG_NTFS_FS=m +# CONFIG_NTFS_DEBUG is not set +# CONFIG_NTFS_RW is not set + +# +# Pseudo filesystems +# +CONFIG_PROC_FS=y +CONFIG_PROC_KCORE=y +CONFIG_PROC_VMCORE=y +# CONFIG_PROC_VMCORE_DEVICE_DUMP is not set +CONFIG_PROC_SYSCTL=y +CONFIG_PROC_PAGE_MONITOR=y +# CONFIG_PROC_CHILDREN is not set +CONFIG_KERNFS=y +CONFIG_SYSFS=y +CONFIG_TMPFS=y +CONFIG_TMPFS_POSIX_ACL=y +CONFIG_TMPFS_XATTR=y +CONFIG_HUGETLBFS=y +CONFIG_HUGETLB_PAGE=y +CONFIG_MEMFD_CREATE=y +CONFIG_ARCH_HAS_GIGANTIC_PAGE=y +CONFIG_CONFIGFS_FS=m +CONFIG_EFIVAR_FS=m +CONFIG_MISC_FILESYSTEMS=y +# CONFIG_ORANGEFS_FS is not set +CONFIG_ADFS_FS=m +# CONFIG_ADFS_FS_RW is not set +CONFIG_AFFS_FS=m +CONFIG_ECRYPT_FS=m +# CONFIG_ECRYPT_FS_MESSAGING is not set +CONFIG_HFS_FS=m +CONFIG_HFSPLUS_FS=m +CONFIG_BEFS_FS=m +# CONFIG_BEFS_DEBUG is not set +CONFIG_BFS_FS=m +CONFIG_EFS_FS=m +CONFIG_JFFS2_FS=m +CONFIG_JFFS2_FS_DEBUG=0 +CONFIG_JFFS2_FS_WRITEBUFFER=y +# CONFIG_JFFS2_FS_WBUF_VERIFY is not set +CONFIG_JFFS2_SUMMARY=y +CONFIG_JFFS2_FS_XATTR=y +CONFIG_JFFS2_FS_POSIX_ACL=y +CONFIG_JFFS2_FS_SECURITY=y +# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set +CONFIG_JFFS2_ZLIB=y +CONFIG_JFFS2_RTIME=y +CONFIG_UBIFS_FS=m +# CONFIG_UBIFS_FS_ADVANCED_COMPR is not set +CONFIG_UBIFS_FS_LZO=y +CONFIG_UBIFS_FS_ZLIB=y +# CONFIG_UBIFS_ATIME_SUPPORT is not set +CONFIG_UBIFS_FS_XATTR=y +# CONFIG_UBIFS_FS_ENCRYPTION is not set +CONFIG_UBIFS_FS_SECURITY=y +# CONFIG_UBIFS_FS_AUTHENTICATION is not set +CONFIG_CRAMFS=y +CONFIG_CRAMFS_BLOCKDEV=y +CONFIG_SQUASHFS=m +# CONFIG_SQUASHFS_FILE_CACHE is not set +CONFIG_SQUASHFS_FILE_DIRECT=y +# CONFIG_SQUASHFS_DECOMP_SINGLE is not set +CONFIG_SQUASHFS_DECOMP_MULTI=y +# CONFIG_SQUASHFS_DECOMP_MULTI_PERCPU is not set +CONFIG_SQUASHFS_XATTR=y +CONFIG_SQUASHFS_ZLIB=y +CONFIG_SQUASHFS_LZ4=y +CONFIG_SQUASHFS_LZO=y +CONFIG_SQUASHFS_XZ=y +# CONFIG_SQUASHFS_ZSTD is not set +# CONFIG_SQUASHFS_4K_DEVBLK_SIZE is not set +# CONFIG_SQUASHFS_EMBEDDED is not set +CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3 +# CONFIG_VXFS_FS is not set +CONFIG_MINIX_FS=m +# CONFIG_OMFS_FS is not set +# CONFIG_HPFS_FS is not set +# CONFIG_QNX4FS_FS is not set +# CONFIG_QNX6FS_FS is not set +CONFIG_ROMFS_FS=m +CONFIG_ROMFS_BACKED_BY_BLOCK=y +# CONFIG_ROMFS_BACKED_BY_MTD is not set +# CONFIG_ROMFS_BACKED_BY_BOTH is not set +CONFIG_ROMFS_ON_BLOCK=y +CONFIG_PSTORE=y +CONFIG_PSTORE_DEFLATE_COMPRESS=y +# CONFIG_PSTORE_LZO_COMPRESS is not set +# CONFIG_PSTORE_LZ4_COMPRESS is not set +# CONFIG_PSTORE_LZ4HC_COMPRESS is not set +# CONFIG_PSTORE_842_COMPRESS is not set +# CONFIG_PSTORE_ZSTD_COMPRESS is not set +CONFIG_PSTORE_COMPRESS=y +CONFIG_PSTORE_DEFLATE_COMPRESS_DEFAULT=y +CONFIG_PSTORE_COMPRESS_DEFAULT="deflate" +# CONFIG_PSTORE_CONSOLE is not set +# CONFIG_PSTORE_PMSG is not set +CONFIG_PSTORE_RAM=m +CONFIG_SYSV_FS=m +CONFIG_UFS_FS=m +# CONFIG_UFS_FS_WRITE is not set +# CONFIG_UFS_DEBUG is not set +# CONFIG_EXOFS_FS is not set +CONFIG_NETWORK_FILESYSTEMS=y +CONFIG_NFS_FS=m +CONFIG_NFS_V2=m +CONFIG_NFS_V3=m +CONFIG_NFS_V3_ACL=y +CONFIG_NFS_V4=m +# CONFIG_NFS_SWAP is not set +# CONFIG_NFS_V4_1 is not set +CONFIG_NFS_FSCACHE=y +# CONFIG_NFS_USE_LEGACY_DNS is not set +CONFIG_NFS_USE_KERNEL_DNS=y +CONFIG_NFSD=m +CONFIG_NFSD_V2_ACL=y +CONFIG_NFSD_V3=y +CONFIG_NFSD_V3_ACL=y +CONFIG_NFSD_V4=y +# CONFIG_NFSD_BLOCKLAYOUT is not set +# CONFIG_NFSD_SCSILAYOUT is not set +# CONFIG_NFSD_FLEXFILELAYOUT is not set +# CONFIG_NFSD_V4_SECURITY_LABEL is not set +# CONFIG_NFSD_FAULT_INJECTION is not set +CONFIG_GRACE_PERIOD=m +CONFIG_LOCKD=m +CONFIG_LOCKD_V4=y +CONFIG_NFS_ACL_SUPPORT=m +CONFIG_NFS_COMMON=y +CONFIG_SUNRPC=m +CONFIG_SUNRPC_GSS=m +CONFIG_RPCSEC_GSS_KRB5=m +# CONFIG_SUNRPC_DEBUG is not set +CONFIG_SUNRPC_XPRT_RDMA=m +CONFIG_CEPH_FS=m +CONFIG_CEPH_FSCACHE=y +# CONFIG_CEPH_FS_POSIX_ACL is not set +CONFIG_CIFS=m +CONFIG_CIFS_STATS2=y +CONFIG_CIFS_ALLOW_INSECURE_LEGACY=y +CONFIG_CIFS_WEAK_PW_HASH=y +CONFIG_CIFS_UPCALL=y +CONFIG_CIFS_XATTR=y +CONFIG_CIFS_POSIX=y +CONFIG_CIFS_ACL=y +# CONFIG_CIFS_DEBUG is not set +CONFIG_CIFS_DFS_UPCALL=y +# CONFIG_CIFS_SMB_DIRECT is not set +# CONFIG_CIFS_FSCACHE is not set +CONFIG_CODA_FS=m +CONFIG_AFS_FS=m +# CONFIG_AFS_DEBUG is not set +CONFIG_AFS_FSCACHE=y +# CONFIG_AFS_DEBUG_CURSOR is not set +CONFIG_9P_FS=m +CONFIG_9P_FSCACHE=y +CONFIG_9P_FS_POSIX_ACL=y +# CONFIG_9P_FS_SECURITY is not set +CONFIG_NLS=y +CONFIG_NLS_DEFAULT="utf8" +CONFIG_NLS_CODEPAGE_437=m +CONFIG_NLS_CODEPAGE_737=m +CONFIG_NLS_CODEPAGE_775=m +CONFIG_NLS_CODEPAGE_850=m +CONFIG_NLS_CODEPAGE_852=m +CONFIG_NLS_CODEPAGE_855=m +CONFIG_NLS_CODEPAGE_857=m +CONFIG_NLS_CODEPAGE_860=m +CONFIG_NLS_CODEPAGE_861=m +CONFIG_NLS_CODEPAGE_862=m +CONFIG_NLS_CODEPAGE_863=m +CONFIG_NLS_CODEPAGE_864=m +CONFIG_NLS_CODEPAGE_865=m +CONFIG_NLS_CODEPAGE_866=m +CONFIG_NLS_CODEPAGE_869=m +CONFIG_NLS_CODEPAGE_936=m +CONFIG_NLS_CODEPAGE_950=m +CONFIG_NLS_CODEPAGE_932=m +CONFIG_NLS_CODEPAGE_949=m +CONFIG_NLS_CODEPAGE_874=m +CONFIG_NLS_ISO8859_8=m +CONFIG_NLS_CODEPAGE_1250=m +CONFIG_NLS_CODEPAGE_1251=m +CONFIG_NLS_ASCII=m +CONFIG_NLS_ISO8859_1=m +CONFIG_NLS_ISO8859_2=m +CONFIG_NLS_ISO8859_3=m +CONFIG_NLS_ISO8859_4=m +CONFIG_NLS_ISO8859_5=m +CONFIG_NLS_ISO8859_6=m +CONFIG_NLS_ISO8859_7=m +CONFIG_NLS_ISO8859_9=m +CONFIG_NLS_ISO8859_13=m +CONFIG_NLS_ISO8859_14=m +CONFIG_NLS_ISO8859_15=m +CONFIG_NLS_KOI8_R=m +CONFIG_NLS_KOI8_U=m +CONFIG_NLS_MAC_ROMAN=m +CONFIG_NLS_MAC_CELTIC=m +CONFIG_NLS_MAC_CENTEURO=m +CONFIG_NLS_MAC_CROATIAN=m +CONFIG_NLS_MAC_CYRILLIC=m +CONFIG_NLS_MAC_GAELIC=m +CONFIG_NLS_MAC_GREEK=m +CONFIG_NLS_MAC_ICELAND=m +CONFIG_NLS_MAC_INUIT=m +CONFIG_NLS_MAC_ROMANIAN=m +CONFIG_NLS_MAC_TURKISH=m +CONFIG_NLS_UTF8=m +CONFIG_DLM=m +# CONFIG_DLM_DEBUG is not set + +# +# Security options +# +CONFIG_KEYS=y +CONFIG_KEYS_COMPAT=y +# CONFIG_PERSISTENT_KEYRINGS is not set +# CONFIG_BIG_KEYS is not set +CONFIG_TRUSTED_KEYS=m +CONFIG_ENCRYPTED_KEYS=m +# CONFIG_KEY_DH_OPERATIONS is not set +# CONFIG_SECURITY_DMESG_RESTRICT is not set +CONFIG_SECURITY=y +CONFIG_SECURITYFS=y +CONFIG_SECURITY_NETWORK=y +CONFIG_PAGE_TABLE_ISOLATION=y +# CONFIG_SECURITY_INFINIBAND is not set +CONFIG_SECURITY_NETWORK_XFRM=y +CONFIG_SECURITY_PATH=y +CONFIG_INTEL_TXT=y +CONFIG_HAVE_HARDENED_USERCOPY_ALLOCATOR=y +# CONFIG_HARDENED_USERCOPY is not set +# CONFIG_FORTIFY_SOURCE is not set +# CONFIG_STATIC_USERMODEHELPER is not set +# CONFIG_SECURITY_SELINUX is not set +# CONFIG_SECURITY_SMACK is not set +# CONFIG_SECURITY_TOMOYO is not set +# CONFIG_SECURITY_APPARMOR is not set +# CONFIG_SECURITY_LOADPIN is not set +# CONFIG_SECURITY_YAMA is not set +CONFIG_INTEGRITY=y +# CONFIG_INTEGRITY_SIGNATURE is not set +# CONFIG_INTEGRITY_AUDIT is not set +# CONFIG_IMA is not set +# CONFIG_EVM is not set +CONFIG_DEFAULT_SECURITY_DAC=y +CONFIG_DEFAULT_SECURITY="" +CONFIG_XOR_BLOCKS=m +CONFIG_ASYNC_CORE=m +CONFIG_ASYNC_MEMCPY=m +CONFIG_ASYNC_XOR=m +CONFIG_ASYNC_PQ=m +CONFIG_ASYNC_RAID6_RECOV=m +CONFIG_CRYPTO=y + +# +# Crypto core or helper +# +CONFIG_CRYPTO_ALGAPI=y +CONFIG_CRYPTO_ALGAPI2=y +CONFIG_CRYPTO_AEAD=m +CONFIG_CRYPTO_AEAD2=y +CONFIG_CRYPTO_BLKCIPHER=m +CONFIG_CRYPTO_BLKCIPHER2=y +CONFIG_CRYPTO_HASH=y +CONFIG_CRYPTO_HASH2=y +CONFIG_CRYPTO_RNG=m +CONFIG_CRYPTO_RNG2=y +CONFIG_CRYPTO_RNG_DEFAULT=m +CONFIG_CRYPTO_AKCIPHER2=y +CONFIG_CRYPTO_AKCIPHER=y +CONFIG_CRYPTO_KPP2=y +CONFIG_CRYPTO_KPP=m +CONFIG_CRYPTO_ACOMP2=y +CONFIG_CRYPTO_RSA=y +CONFIG_CRYPTO_DH=m +CONFIG_CRYPTO_ECDH=m +CONFIG_CRYPTO_MANAGER=y +CONFIG_CRYPTO_MANAGER2=y +CONFIG_CRYPTO_USER=m +CONFIG_CRYPTO_MANAGER_DISABLE_TESTS=y +CONFIG_CRYPTO_GF128MUL=m +CONFIG_CRYPTO_NULL=m +CONFIG_CRYPTO_NULL2=y +CONFIG_CRYPTO_PCRYPT=m +CONFIG_CRYPTO_WORKQUEUE=y +CONFIG_CRYPTO_CRYPTD=m +CONFIG_CRYPTO_AUTHENC=m +CONFIG_CRYPTO_TEST=m +CONFIG_CRYPTO_SIMD=m +CONFIG_CRYPTO_GLUE_HELPER_X86=m +CONFIG_CRYPTO_ENGINE=m + +# +# Authenticated Encryption with Associated Data +# +CONFIG_CRYPTO_CCM=m +CONFIG_CRYPTO_GCM=m +# CONFIG_CRYPTO_CHACHA20POLY1305 is not set +# CONFIG_CRYPTO_AEGIS128 is not set +# CONFIG_CRYPTO_AEGIS128L is not set +# CONFIG_CRYPTO_AEGIS256 is not set +# CONFIG_CRYPTO_AEGIS128_AESNI_SSE2 is not set +# CONFIG_CRYPTO_AEGIS128L_AESNI_SSE2 is not set +# CONFIG_CRYPTO_AEGIS256_AESNI_SSE2 is not set +# CONFIG_CRYPTO_MORUS640 is not set +# CONFIG_CRYPTO_MORUS640_SSE2 is not set +# CONFIG_CRYPTO_MORUS1280 is not set +# CONFIG_CRYPTO_MORUS1280_SSE2 is not set +# CONFIG_CRYPTO_MORUS1280_AVX2 is not set +CONFIG_CRYPTO_SEQIV=m +CONFIG_CRYPTO_ECHAINIV=m + +# +# Block modes +# +CONFIG_CRYPTO_CBC=m +# CONFIG_CRYPTO_CFB is not set +CONFIG_CRYPTO_CTR=m +CONFIG_CRYPTO_CTS=m +CONFIG_CRYPTO_ECB=m +CONFIG_CRYPTO_LRW=m +# CONFIG_CRYPTO_OFB is not set +CONFIG_CRYPTO_PCBC=m +CONFIG_CRYPTO_XTS=m +CONFIG_CRYPTO_KEYWRAP=m + +# +# Hash modes +# +CONFIG_CRYPTO_CMAC=m +CONFIG_CRYPTO_HMAC=y +CONFIG_CRYPTO_XCBC=m +CONFIG_CRYPTO_VMAC=m + +# +# Digest +# +CONFIG_CRYPTO_CRC32C=y +CONFIG_CRYPTO_CRC32C_INTEL=m +CONFIG_CRYPTO_CRC32=m +CONFIG_CRYPTO_CRC32_PCLMUL=m +CONFIG_CRYPTO_CRCT10DIF=y +CONFIG_CRYPTO_CRCT10DIF_PCLMUL=m +CONFIG_CRYPTO_GHASH=m +# CONFIG_CRYPTO_POLY1305 is not set +# CONFIG_CRYPTO_POLY1305_X86_64 is not set +CONFIG_CRYPTO_MD4=m +CONFIG_CRYPTO_MD5=y +CONFIG_CRYPTO_MICHAEL_MIC=m +CONFIG_CRYPTO_RMD128=m +CONFIG_CRYPTO_RMD160=m +CONFIG_CRYPTO_RMD256=m +CONFIG_CRYPTO_RMD320=m +CONFIG_CRYPTO_SHA1=m +CONFIG_CRYPTO_SHA1_SSSE3=m +CONFIG_CRYPTO_SHA256_SSSE3=m +CONFIG_CRYPTO_SHA512_SSSE3=m +CONFIG_CRYPTO_SHA256=y +CONFIG_CRYPTO_SHA512=m +# CONFIG_CRYPTO_SHA3 is not set +# CONFIG_CRYPTO_SM3 is not set +CONFIG_CRYPTO_TGR192=m +CONFIG_CRYPTO_WP512=m +CONFIG_CRYPTO_GHASH_CLMUL_NI_INTEL=m + +# +# Ciphers +# +CONFIG_CRYPTO_AES=y +# CONFIG_CRYPTO_AES_TI is not set +CONFIG_CRYPTO_AES_X86_64=m +CONFIG_CRYPTO_AES_NI_INTEL=m +CONFIG_CRYPTO_ANUBIS=m +CONFIG_CRYPTO_ARC4=m +CONFIG_CRYPTO_BLOWFISH=m +CONFIG_CRYPTO_BLOWFISH_COMMON=m +CONFIG_CRYPTO_BLOWFISH_X86_64=m +CONFIG_CRYPTO_CAMELLIA=m +CONFIG_CRYPTO_CAMELLIA_X86_64=m +CONFIG_CRYPTO_CAMELLIA_AESNI_AVX_X86_64=m +CONFIG_CRYPTO_CAMELLIA_AESNI_AVX2_X86_64=m +CONFIG_CRYPTO_CAST_COMMON=m +CONFIG_CRYPTO_CAST5=m +CONFIG_CRYPTO_CAST5_AVX_X86_64=m +CONFIG_CRYPTO_CAST6=m +CONFIG_CRYPTO_CAST6_AVX_X86_64=m +CONFIG_CRYPTO_DES=m +CONFIG_CRYPTO_DES3_EDE_X86_64=m +CONFIG_CRYPTO_FCRYPT=m +CONFIG_CRYPTO_KHAZAD=m +CONFIG_CRYPTO_SALSA20=m +# CONFIG_CRYPTO_CHACHA20 is not set +# CONFIG_CRYPTO_CHACHA20_X86_64 is not set +CONFIG_CRYPTO_SEED=m +CONFIG_CRYPTO_SERPENT=m +CONFIG_CRYPTO_SERPENT_SSE2_X86_64=m +CONFIG_CRYPTO_SERPENT_AVX_X86_64=m +CONFIG_CRYPTO_SERPENT_AVX2_X86_64=m +# CONFIG_CRYPTO_SM4 is not set +CONFIG_CRYPTO_TEA=m +CONFIG_CRYPTO_TWOFISH=m +CONFIG_CRYPTO_TWOFISH_COMMON=m +CONFIG_CRYPTO_TWOFISH_X86_64=m +CONFIG_CRYPTO_TWOFISH_X86_64_3WAY=m +CONFIG_CRYPTO_TWOFISH_AVX_X86_64=m + +# +# Compression +# +CONFIG_CRYPTO_DEFLATE=y +CONFIG_CRYPTO_LZO=y +# CONFIG_CRYPTO_842 is not set +CONFIG_CRYPTO_LZ4=m +CONFIG_CRYPTO_LZ4HC=m +# CONFIG_CRYPTO_ZSTD is not set + +# +# Random Number Generation +# +CONFIG_CRYPTO_ANSI_CPRNG=m +CONFIG_CRYPTO_DRBG_MENU=m +CONFIG_CRYPTO_DRBG_HMAC=y +# CONFIG_CRYPTO_DRBG_HASH is not set +# CONFIG_CRYPTO_DRBG_CTR is not set +CONFIG_CRYPTO_DRBG=m +CONFIG_CRYPTO_JITTERENTROPY=m +CONFIG_CRYPTO_USER_API=m +CONFIG_CRYPTO_USER_API_HASH=m +CONFIG_CRYPTO_USER_API_SKCIPHER=m +# CONFIG_CRYPTO_USER_API_RNG is not set +# CONFIG_CRYPTO_USER_API_AEAD is not set +CONFIG_CRYPTO_HASH_INFO=y +CONFIG_CRYPTO_HW=y +CONFIG_CRYPTO_DEV_PADLOCK=m +CONFIG_CRYPTO_DEV_PADLOCK_AES=m +CONFIG_CRYPTO_DEV_PADLOCK_SHA=m +CONFIG_CRYPTO_DEV_CCP=y +CONFIG_CRYPTO_DEV_CCP_DD=m +CONFIG_CRYPTO_DEV_SP_CCP=y +CONFIG_CRYPTO_DEV_CCP_CRYPTO=m +CONFIG_CRYPTO_DEV_SP_PSP=y +CONFIG_CRYPTO_DEV_QAT=m +CONFIG_CRYPTO_DEV_QAT_DH895xCC=m +# CONFIG_CRYPTO_DEV_QAT_C3XXX is not set +# CONFIG_CRYPTO_DEV_QAT_C62X is not set +# CONFIG_CRYPTO_DEV_QAT_DH895xCCVF is not set +# CONFIG_CRYPTO_DEV_QAT_C3XXXVF is not set +# CONFIG_CRYPTO_DEV_QAT_C62XVF is not set +# CONFIG_CRYPTO_DEV_NITROX_CNN55XX is not set +# CONFIG_CRYPTO_DEV_CHELSIO is not set +CONFIG_CRYPTO_DEV_VIRTIO=m +CONFIG_ASYMMETRIC_KEY_TYPE=y +CONFIG_ASYMMETRIC_PUBLIC_KEY_SUBTYPE=y +# CONFIG_ASYMMETRIC_TPM_KEY_SUBTYPE is not set +CONFIG_X509_CERTIFICATE_PARSER=y +# CONFIG_PKCS8_PRIVATE_KEY_PARSER is not set +CONFIG_PKCS7_MESSAGE_PARSER=y +# CONFIG_PKCS7_TEST_KEY is not set +# CONFIG_SIGNED_PE_FILE_VERIFICATION is not set + +# +# Certificates for signature checking +# +CONFIG_SYSTEM_TRUSTED_KEYRING=y +CONFIG_SYSTEM_TRUSTED_KEYS="" +# CONFIG_SYSTEM_EXTRA_CERTIFICATE is not set +# CONFIG_SECONDARY_TRUSTED_KEYRING is not set +# CONFIG_SYSTEM_BLACKLIST_KEYRING is not set + +# +# Library routines +# +CONFIG_RAID6_PQ=m +CONFIG_BITREVERSE=y +CONFIG_RATIONAL=y +CONFIG_GENERIC_STRNCPY_FROM_USER=y +CONFIG_GENERIC_STRNLEN_USER=y +CONFIG_GENERIC_NET_UTILS=y +CONFIG_GENERIC_FIND_FIRST_BIT=y +CONFIG_GENERIC_PCI_IOMAP=y +CONFIG_GENERIC_IOMAP=y +CONFIG_ARCH_USE_CMPXCHG_LOCKREF=y +CONFIG_ARCH_HAS_FAST_MULTIPLIER=y +CONFIG_CRC_CCITT=y +CONFIG_CRC16=y +CONFIG_CRC_T10DIF=y +CONFIG_CRC_ITU_T=m +CONFIG_CRC32=y +# CONFIG_CRC32_SELFTEST is not set +CONFIG_CRC32_SLICEBY8=y +# CONFIG_CRC32_SLICEBY4 is not set +# CONFIG_CRC32_SARWATE is not set +# CONFIG_CRC32_BIT is not set +CONFIG_CRC64=m +# CONFIG_CRC4 is not set +CONFIG_CRC7=m +CONFIG_LIBCRC32C=y +CONFIG_CRC8=m +CONFIG_XXHASH=m +# CONFIG_RANDOM32_SELFTEST is not set +CONFIG_ZLIB_INFLATE=y +CONFIG_ZLIB_DEFLATE=y +CONFIG_LZO_COMPRESS=y +CONFIG_LZO_DECOMPRESS=y +CONFIG_LZ4_COMPRESS=m +CONFIG_LZ4HC_COMPRESS=m +CONFIG_LZ4_DECOMPRESS=y +CONFIG_ZSTD_COMPRESS=m +CONFIG_ZSTD_DECOMPRESS=m +CONFIG_XZ_DEC=y +CONFIG_XZ_DEC_X86=y +CONFIG_XZ_DEC_POWERPC=y +CONFIG_XZ_DEC_IA64=y +CONFIG_XZ_DEC_ARM=y +CONFIG_XZ_DEC_ARMTHUMB=y +CONFIG_XZ_DEC_SPARC=y +CONFIG_XZ_DEC_BCJ=y +# CONFIG_XZ_DEC_TEST is not set +CONFIG_DECOMPRESS_GZIP=y +CONFIG_DECOMPRESS_BZIP2=y +CONFIG_DECOMPRESS_LZMA=y +CONFIG_DECOMPRESS_XZ=y +CONFIG_DECOMPRESS_LZO=y +CONFIG_DECOMPRESS_LZ4=y +CONFIG_GENERIC_ALLOCATOR=y +CONFIG_REED_SOLOMON=m +CONFIG_REED_SOLOMON_ENC8=y +CONFIG_REED_SOLOMON_DEC8=y +CONFIG_TEXTSEARCH=y +CONFIG_TEXTSEARCH_KMP=m +CONFIG_TEXTSEARCH_BM=m +CONFIG_TEXTSEARCH_FSM=m +CONFIG_BTREE=y +CONFIG_INTERVAL_TREE=y +CONFIG_XARRAY_MULTI=y +CONFIG_ASSOCIATIVE_ARRAY=y +CONFIG_HAS_IOMEM=y +CONFIG_HAS_IOPORT_MAP=y +CONFIG_HAS_DMA=y +CONFIG_NEED_SG_DMA_LENGTH=y +CONFIG_NEED_DMA_MAP_STATE=y +CONFIG_ARCH_DMA_ADDR_T_64BIT=y +CONFIG_DMA_DIRECT_OPS=y +CONFIG_DMA_VIRT_OPS=y +CONFIG_SWIOTLB=y +CONFIG_SGL_ALLOC=y +CONFIG_IOMMU_HELPER=y +CONFIG_CHECK_SIGNATURE=y +CONFIG_CPU_RMAP=y +CONFIG_DQL=y +CONFIG_GLOB=y +# CONFIG_GLOB_SELFTEST is not set +CONFIG_NLATTR=y +CONFIG_LRU_CACHE=m +CONFIG_CLZ_TAB=y +CONFIG_CORDIC=m +CONFIG_DDR=y +CONFIG_IRQ_POLL=y +CONFIG_MPILIB=y +CONFIG_OID_REGISTRY=y +CONFIG_UCS2_STRING=y +CONFIG_FONT_SUPPORT=y +# CONFIG_FONTS is not set +CONFIG_FONT_8x8=y +CONFIG_FONT_8x16=y +CONFIG_SG_POOL=y +CONFIG_ARCH_HAS_SG_CHAIN=y +CONFIG_ARCH_HAS_PMEM_API=y +CONFIG_ARCH_HAS_UACCESS_FLUSHCACHE=y +CONFIG_ARCH_HAS_UACCESS_MCSAFE=y +CONFIG_SBITMAP=y +# CONFIG_STRING_SELFTEST is not set + +# +# Kernel hacking +# + +# +# printk and dmesg options +# +# CONFIG_PRINTK_TIME is not set +CONFIG_CONSOLE_LOGLEVEL_DEFAULT=7 +CONFIG_CONSOLE_LOGLEVEL_QUIET=4 +CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4 +# CONFIG_BOOT_PRINTK_DELAY is not set +# CONFIG_DYNAMIC_DEBUG is not set + +# +# Compile-time checks and compiler options +# +# CONFIG_DEBUG_INFO is not set +# CONFIG_ENABLE_MUST_CHECK is not set +CONFIG_FRAME_WARN=2048 +# CONFIG_STRIP_ASM_SYMS is not set +# CONFIG_READABLE_ASM is not set +# CONFIG_UNUSED_SYMBOLS is not set +# CONFIG_PAGE_OWNER is not set +CONFIG_DEBUG_FS=y +# CONFIG_HEADERS_CHECK is not set +# CONFIG_DEBUG_SECTION_MISMATCH is not set +CONFIG_SECTION_MISMATCH_WARN_ONLY=y +CONFIG_FRAME_POINTER=y +CONFIG_STACK_VALIDATION=y +# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set +CONFIG_MAGIC_SYSRQ=y +CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE=0x1 +CONFIG_MAGIC_SYSRQ_SERIAL=y +CONFIG_DEBUG_KERNEL=y + +# +# Memory Debugging +# +# CONFIG_PAGE_EXTENSION is not set +# CONFIG_DEBUG_PAGEALLOC is not set +# CONFIG_PAGE_POISONING is not set +CONFIG_DEBUG_RODATA_TEST=y +# CONFIG_DEBUG_OBJECTS is not set +# CONFIG_SLUB_DEBUG_ON is not set +# CONFIG_SLUB_STATS is not set +CONFIG_HAVE_DEBUG_KMEMLEAK=y +# CONFIG_DEBUG_KMEMLEAK is not set +# CONFIG_DEBUG_STACK_USAGE is not set +# CONFIG_DEBUG_VM is not set +CONFIG_ARCH_HAS_DEBUG_VIRTUAL=y +# CONFIG_DEBUG_VIRTUAL is not set +CONFIG_DEBUG_MEMORY_INIT=y +# CONFIG_DEBUG_PER_CPU_MAPS is not set +CONFIG_HAVE_DEBUG_STACKOVERFLOW=y +# CONFIG_DEBUG_STACKOVERFLOW is not set +CONFIG_HAVE_ARCH_KASAN=y +# CONFIG_KASAN is not set +CONFIG_ARCH_HAS_KCOV=y +CONFIG_CC_HAS_SANCOV_TRACE_PC=y +# CONFIG_KCOV is not set +# CONFIG_DEBUG_SHIRQ is not set + +# +# Debug Lockups and Hangs +# +# CONFIG_SOFTLOCKUP_DETECTOR is not set +CONFIG_HARDLOCKUP_CHECK_TIMESTAMP=y +# CONFIG_HARDLOCKUP_DETECTOR is not set +# CONFIG_DETECT_HUNG_TASK is not set +# CONFIG_WQ_WATCHDOG is not set +# CONFIG_PANIC_ON_OOPS is not set +CONFIG_PANIC_ON_OOPS_VALUE=0 +CONFIG_PANIC_TIMEOUT=0 +# CONFIG_SCHED_DEBUG is not set +CONFIG_SCHED_INFO=y +# CONFIG_SCHEDSTATS is not set +# CONFIG_SCHED_STACK_END_CHECK is not set +# CONFIG_DEBUG_TIMEKEEPING is not set + +# +# Lock Debugging (spinlocks, mutexes, etc...) +# +CONFIG_LOCK_DEBUGGING_SUPPORT=y +# CONFIG_PROVE_LOCKING is not set +# CONFIG_LOCK_STAT is not set +# CONFIG_DEBUG_RT_MUTEXES is not set +# CONFIG_DEBUG_SPINLOCK is not set +# CONFIG_DEBUG_MUTEXES is not set +# CONFIG_DEBUG_WW_MUTEX_SLOWPATH is not set +# CONFIG_DEBUG_RWSEMS is not set +# CONFIG_DEBUG_LOCK_ALLOC is not set +# CONFIG_DEBUG_ATOMIC_SLEEP is not set +# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set +# CONFIG_LOCK_TORTURE_TEST is not set +# CONFIG_WW_MUTEX_SELFTEST is not set +# CONFIG_STACKTRACE is not set +# CONFIG_WARN_ALL_UNSEEDED_RANDOM is not set +# CONFIG_DEBUG_KOBJECT is not set +CONFIG_DEBUG_BUGVERBOSE=y +# CONFIG_DEBUG_LIST is not set +# CONFIG_DEBUG_PI_LIST is not set +# CONFIG_DEBUG_SG is not set +# CONFIG_DEBUG_NOTIFIERS is not set +# CONFIG_DEBUG_CREDENTIALS is not set + +# +# RCU Debugging +# +# CONFIG_RCU_PERF_TEST is not set +# CONFIG_RCU_TORTURE_TEST is not set +CONFIG_RCU_CPU_STALL_TIMEOUT=60 +# CONFIG_RCU_TRACE is not set +# CONFIG_RCU_EQS_DEBUG is not set +# CONFIG_DEBUG_WQ_FORCE_RR_CPU is not set +# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set +# CONFIG_CPU_HOTPLUG_STATE_CONTROL is not set +# CONFIG_NOTIFIER_ERROR_INJECTION is not set +# CONFIG_FAULT_INJECTION is not set +# CONFIG_LATENCYTOP is not set +CONFIG_USER_STACKTRACE_SUPPORT=y +CONFIG_HAVE_FUNCTION_TRACER=y +CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y +CONFIG_HAVE_DYNAMIC_FTRACE=y +CONFIG_HAVE_DYNAMIC_FTRACE_WITH_REGS=y +CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y +CONFIG_HAVE_SYSCALL_TRACEPOINTS=y +CONFIG_HAVE_FENTRY=y +CONFIG_HAVE_C_RECORDMCOUNT=y +CONFIG_TRACING_SUPPORT=y +# CONFIG_FTRACE is not set +# CONFIG_PROVIDE_OHCI1394_DMA_INIT is not set +# CONFIG_DMA_API_DEBUG is not set +# CONFIG_RUNTIME_TESTING_MENU is not set +CONFIG_MEMTEST=y +# CONFIG_BUG_ON_DATA_CORRUPTION is not set +# CONFIG_SAMPLES is not set +CONFIG_HAVE_ARCH_KGDB=y +# CONFIG_KGDB is not set +CONFIG_ARCH_HAS_UBSAN_SANITIZE_ALL=y +# CONFIG_UBSAN is not set +CONFIG_ARCH_HAS_DEVMEM_IS_ALLOWED=y +# CONFIG_STRICT_DEVMEM is not set +CONFIG_TRACE_IRQFLAGS_SUPPORT=y +CONFIG_X86_VERBOSE_BOOTUP=y +CONFIG_EARLY_PRINTK=y +# CONFIG_EARLY_PRINTK_DBGP is not set +# CONFIG_EARLY_PRINTK_EFI is not set +# CONFIG_EARLY_PRINTK_USB_XDBC is not set +# CONFIG_X86_PTDUMP is not set +# CONFIG_EFI_PGT_DUMP is not set +# CONFIG_DEBUG_WX is not set +CONFIG_DOUBLEFAULT=y +# CONFIG_DEBUG_TLBFLUSH is not set +# CONFIG_IOMMU_DEBUG is not set +CONFIG_HAVE_MMIOTRACE_SUPPORT=y +CONFIG_IO_DELAY_TYPE_0X80=0 +CONFIG_IO_DELAY_TYPE_0XED=1 +CONFIG_IO_DELAY_TYPE_UDELAY=2 +CONFIG_IO_DELAY_TYPE_NONE=3 +CONFIG_IO_DELAY_0X80=y +# CONFIG_IO_DELAY_0XED is not set +# CONFIG_IO_DELAY_UDELAY is not set +# CONFIG_IO_DELAY_NONE is not set +CONFIG_DEFAULT_IO_DELAY_TYPE=0 +# CONFIG_DEBUG_BOOT_PARAMS is not set +# CONFIG_CPA_DEBUG is not set +CONFIG_OPTIMIZE_INLINING=y +# CONFIG_DEBUG_ENTRY is not set +# CONFIG_DEBUG_NMI_SELFTEST is not set +# CONFIG_X86_DEBUG_FPU is not set +# CONFIG_PUNIT_ATOM_DEBUG is not set +# CONFIG_UNWINDER_ORC is not set +CONFIG_UNWINDER_FRAME_POINTER=y diff --git a/SOURCES/firmware-amd-ucode-2019.05.22.tar.gz b/SOURCES/firmware-amd-ucode-2019.05.22.tar.gz new file mode 100644 index 0000000..f22eb32 Binary files /dev/null and b/SOURCES/firmware-amd-ucode-2019.05.22.tar.gz differ diff --git a/SOURCES/firmware-radeon-1.00.tar.gz b/SOURCES/firmware-radeon-1.00.tar.gz new file mode 100644 index 0000000..128cb19 Binary files /dev/null and b/SOURCES/firmware-radeon-1.00.tar.gz differ diff --git a/SOURCES/firmware-realtek-1.00.tar.gz b/SOURCES/firmware-realtek-1.00.tar.gz new file mode 100644 index 0000000..6f1221a Binary files /dev/null and b/SOURCES/firmware-realtek-1.00.tar.gz differ diff --git a/SOURCES/locale-gen b/SOURCES/locale-gen new file mode 100644 index 0000000..ba78948 --- /dev/null +++ b/SOURCES/locale-gen @@ -0,0 +1,79 @@ +#!/bin/sh +set -o errexit # exit if error...insurance ;) +set -o nounset # exit if variable not initalized +set +h # disable hashall +umask 022 +LOCALEGEN=/etc/locale-gen.conf +LOCALES=/usr/share/i18n/locales +#----------------------------------------------------------------------------- +# Common support functions +function _die { + local _red="\\033[1;31m" + local _normal="\\033[0;39m" + [ -n "$*" ] && printf "${_red}$*${_normal}\n" + false + exit 1 +} +function _msg { + printf "%s\n" "${1}" + return +} +function _msg_line { + printf "%s" "${1}" + return +} +function _msg_failure { + local _red="\\033[1;31m" + local _normal="\\033[0;39m" + printf "${_red}%s${_normal}\n" "FAILURE" + exit 2 +} +function _msg_success { + local _green="\\033[1;32m" + local _normal="\\033[0;39m" + printf "${_green}%s${_normal}\n" "SUCCESS" + return +} +function _msg_log { + printf "\n%s\n\n" "${1}" >> ${_logfile} 2>&1 + return +} +function _end_run { + local _green="\\033[1;32m" + local _normal="\\033[0;39m" + printf "${_green}%s${_normal}\n" "Run Complete" + return +} +#----------------------------------------------------------------------------- +# Functions +function is_entry_ok { + if [ -n "${inputfile}" -a -n "${charmap}" -a -n "${outputpath}" ]; + then + true + else + _msg "error: Bad entry <${inputfile}>, <${charmap}>, <${outputpath}>" + false + fi +} +#----------------------------------------------------------------------------- +# Mainline +[ -f ${LOCALEGEN} -a -s ${LOCALEGEN} ] || exit 0; +# Remove all old locale dir and locale-archive +[ -d /usr/lib/locale ] || install -vdm 755 /usr/lib/locale +rm -rf /usr/lib/locale/* || true +_msg "Generating locales..." +while read inputfile charmap outputpath; do + case "${inputfile}" in + \#*) continue ;; + "") continue ;; + esac + is_entry_ok || continue + _msg_line " ${outputpath}: " + case "${outputpath}" in + C.UTF-8) localedef -c -i "${inputfile}" -f "${charmap}" -A /usr/share/locale/locale.alias "${outputpath}" 2> /dev/null || true ;; + ja_JP.SIJS) localedef -c -i "${inputfile}" -f "${charmap}" -A /usr/share/locale/locale.alias "${outputpath}" 2> /dev/null || true ;; + *) localedef -c -i "${inputfile}" -f "${charmap}" -A /usr/share/locale/locale.alias "${outputpath}" || true ;; + esac + _msg_success +done < "${LOCALEGEN}" +_end_run diff --git a/SOURCES/m4-1.4.18.tar.xz b/SOURCES/m4-1.4.18.tar.xz new file mode 100644 index 0000000..18f019e Binary files /dev/null and b/SOURCES/m4-1.4.18.tar.xz differ diff --git a/SOURCES/macros b/SOURCES/macros new file mode 100644 index 0000000..fffc997 --- /dev/null +++ b/SOURCES/macros @@ -0,0 +1,25 @@ +# +# System settings +# +%_cppflags -D_FORTIFY_SOURCE=2 +%_cflags -march=x86-64 -mtune=generic -O2 -pipe -fno-plt +%_cxxflags -march=x86-64 -mtune=generic -O2 -pipe -fno-plt +%_ldflags -Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now + +# filesystem +%_sysconfdir /etc +%_prefix /usr +%_lib /lib +%_lib64 /lib64 +%_libdir %{_prefix}/lib +%_libdir64 %{_prefix}/lib64 +%_docdir %{_prefix}/share/doc +%_var /var +%_localstatedir %{_var} +%_sharedstatedir %{_var}/lib +# rpm +%_topdir /usr/src/LFS-RPM +%_tmppath %{_var}/tmp +%_dbpath %{_var}/lib/rpm +%_unique_build_ids 0 +%_build_id_links none diff --git a/SPECS/XML-Parser.spec b/SPECS/XML-Parser.spec new file mode 100644 index 0000000..2e14255 --- /dev/null +++ b/SPECS/XML-Parser.spec @@ -0,0 +1,42 @@ +#TARBALL: http://cpan.metacpan.org/authors/id/T/TO/TODDR/XML-Parser-2.44.tar.gz +#MD5SUM: af4813fe3952362451201ced6fbce379;SOURCES/XML-Parser-2.44.tar.gz +#----------------------------------------------------------------------------- +Summary: The XML::Parser module is a Perl interface to James Clark's XML parser, Expat. +Name: XML-Parser +Version: 2.44 +Release: 1 +License: Non-GPL +URL: Any +Group: LFS/Base +Vendor: Elizabeth +Source0: http://cpan.metacpan.org/authors/id/T/TO/TODDR/%{name}-%{version}.tar.gz +Requires: filesystem +%description +The XML::Parser module is a Perl interface to James Clark's XML parser, Expat. +#----------------------------------------------------------------------------- +%prep +%setup -q -n %{NAME}-%{VERSION} +%build + perl Makefile.PL + make %{?_smp_mflags} +%install + make DESTDIR=%{buildroot} install +#----------------------------------------------------------------------------- +# Copy license/copying file + install -D -m644 README %{buildroot}/usr/share/licenses/%{name}/LICENSE +#----------------------------------------------------------------------------- +# Create file list + # rm %{buildroot}%{_infodir}/dir + find %{buildroot} -name '*.la' -delete + find "${RPM_BUILD_ROOT}" -not -type d -print > filelist.rpm + sed -i "s|^${RPM_BUILD_ROOT}||" filelist.rpm + sed -i '/man\/man/d' filelist.rpm + sed -i '/\/usr\/share\/info/d' filelist.rpm +#----------------------------------------------------------------------------- +%files -f filelist.rpm + %defattr(-,root,root) + %{_mandir}/man3/*.gz +#----------------------------------------------------------------------------- +%changelog +* Tue Jan 09 2018 baho-utot 2.44-1 +- Initial build. First version diff --git a/SPECS/acl.spec b/SPECS/acl.spec new file mode 100644 index 0000000..f272dcb --- /dev/null +++ b/SPECS/acl.spec @@ -0,0 +1,56 @@ +#TARBALL: http://download.savannah.gnu.org/releases/acl/acl-2.2.53.tar.gz +#MD5SUM: 007aabf1dbb550bcddde52a244cd1070;SOURCES/acl-2.2.53.tar.gz +#----------------------------------------------------------------------------- +Summary: The Acl package contains utilities to administer Access Control Lists +Name: acl +Version: 2.2.53 +Release: 1 +License: GPLv2 +URL: Any +Group: LFS/Base +Vendor: Elizabeth +Source0: http://download.savannah.gnu.org/releases/%{name}/%{name}-%{version}.tar.gz +Requires: filesystem +%description +The Acl package contains utilities to administer Access Control Lists, which are +used to define more fine-grained discretionary access rights for files and directories. +#----------------------------------------------------------------------------- +%prep +%setup -q -n %{NAME}-%{VERSION} +%build + ./configure \ + --prefix=%{_prefix} \ + --bindir=/bin \ + --disable-static \ + --libexecdir=%_libdir \ + --docdir=%{_docdir}/%{NAME}-%{VERSION} + make %{?_smp_mflags} +%install + make DESTDIR=%{buildroot} install + install -vdm 755 %{buildroot}/lib + install -vdm 755 %{buildroot}/usr/lib + mv -v %{buildroot}/usr/lib/libacl.so.* %{buildroot}/lib + ln -sfv ../../lib/$(readlink %{buildroot}/usr/lib/libacl.so) %{buildroot}/usr/lib/libacl.so +#----------------------------------------------------------------------------- +# Copy license/copying file + install -D -m644 doc/COPYING %{buildroot}/usr/share/licenses/%{name}/LICENSE +#----------------------------------------------------------------------------- +# Create file list +# rm %{buildroot}%{_infodir}/dir + find %{buildroot} -name '*.la' -delete + find "${RPM_BUILD_ROOT}" -not -type d -print > filelist.rpm + sed -i "s|^${RPM_BUILD_ROOT}||" filelist.rpm + sed -i '/man\/man/d' filelist.rpm + sed -i '/\/usr\/share\/info/d' filelist.rpm +#----------------------------------------------------------------------------- +%files -f filelist.rpm + %defattr(-,root,root) + %{_mandir}/man1/*.gz + %{_mandir}/man3/*.gz + %{_mandir}/man5/*.gz +#----------------------------------------------------------------------------- +%changelog +* Wed Apr 03 2019 baho-utot 2.2.53-1 +- update +* Tue Jan 09 2018 baho-utot 2.2.52-1 +- Initial build. First version diff --git a/SPECS/attr.spec b/SPECS/attr.spec new file mode 100644 index 0000000..54075bd --- /dev/null +++ b/SPECS/attr.spec @@ -0,0 +1,54 @@ +#TARBALL: http://download.savannah.gnu.org/releases/attr/attr-2.4.48.tar.gz +#MD5SUM: bc1e5cb5c96d99b24886f1f527d3bb3d;SOURCES/attr-2.4.48.tar.gz +#----------------------------------------------------------------------------- +Summary: The attr package contains utilities to administer the extended attributes on filesystem objects. +Name: attr +Version: 2.4.48 +Release: 1 +License: GPLv2 +URL: http://savannah.nongnu.org/projects/attr +Group: LFS/Base +Vendor: Elizabeth +Source0: http://download.savannah.gnu.org/releases/%{name}/%{name}-%{version}.tar.gz +Requires: filesystem +%description +The attr package contains utilities to administer the extended attributes on filesystem objects. +#----------------------------------------------------------------------------- +%prep +%setup -q -n %{NAME}-%{VERSION} +%build + ./configure \ + --prefix=%{_prefix} \ + --bindir=/bin \ + --disable-static \ + --sysconfdir=/etc \ + --docdir=%{_docdir}/%{NAME}-%{VERSION} + make %{?_smp_mflags} +%install + make DESTDIR=%{buildroot} install + install -vdm 755 %{buildroot}/lib + install -vdm 755 %{buildroot}/usr/lib + mv -v %{buildroot}/usr/lib/libattr.so.* %{buildroot}/lib + ln -sfv ../../lib/$(readlink %{buildroot}/usr/lib/libattr.so) %{buildroot}/usr/lib/libattr.so +#----------------------------------------------------------------------------- +# Copy license/copying file +# install -D -m644 doc/COPYINGLICENSE %{buildroot}/usr/share/licenses/%{name}/LICENSE +#----------------------------------------------------------------------------- +# Create file list +# rm %{buildroot}%{_infodir}/dir + find %{buildroot} -name '*.la' -delete + find "${RPM_BUILD_ROOT}" -not -type d -print > filelist.rpm + sed -i "s|^${RPM_BUILD_ROOT}||" filelist.rpm + sed -i '/man\/man/d' filelist.rpm + sed -i '/\/usr\/share\/info/d' filelist.rpm +#----------------------------------------------------------------------------- +%files -f filelist.rpm + %defattr(-,root,root) + %{_mandir}/man1/*.gz + %{_mandir}/man3/*.gz +#----------------------------------------------------------------------------- +%changelog +* Wed Apr 03 2018 baho-utot 2.4.48-1 +- update +* Tue Jan 09 2018 baho-utot 2.4.47-1 +- Initial build. First version diff --git a/SPECS/autoconf.spec b/SPECS/autoconf.spec new file mode 100644 index 0000000..8d73b35 --- /dev/null +++ b/SPECS/autoconf.spec @@ -0,0 +1,45 @@ +#TARBALL: http://ftp.gnu.org/gnu/autoconf/autoconf-2.69.tar.xz +#MD5SUM: 50f97f4159805e374639a73e2636f22e;SOURCES/autoconf-2.69.tar.xz +#----------------------------------------------------------------------------- +Summary: The Autoconf package contains programs for producing shell scripts that can automatically configure source code. +Name: autoconf +Version: 2.69 +Release: 1 +License: GPLv2 +URL: Any +Group: LFS/Base +Vendor: Elizabeth +Source0: http://ftp.gnu.org/gnu/autoconf/%{name}-%{version}.tar.xz +Requires: filesystem +%description +The Autoconf package contains programs for producing shell scripts that can automatically configure source code. +#----------------------------------------------------------------------------- +%prep +%setup -q -n %{NAME}-%{VERSION} +sed '361 s/{/\\{/' -i bin/autoscan.in +%build + ./configure \ + --prefix=%{_prefix} + make %{?_smp_mflags} +%install + make DESTDIR=%{buildroot} install +#----------------------------------------------------------------------------- +# Copy license/copying file + install -D -m644 COPYING %{buildroot}/usr/share/licenses/%{name}/LICENSE +#----------------------------------------------------------------------------- +# Create file list + rm %{buildroot}%{_infodir}/dir + find %{buildroot} -name '*.la' -delete + find "${RPM_BUILD_ROOT}" -not -type d -print > filelist.rpm + sed -i "s|^${RPM_BUILD_ROOT}||" filelist.rpm + sed -i '/man\/man/d' filelist.rpm + sed -i '/\/usr\/share\/info/d' filelist.rpm +#----------------------------------------------------------------------------- +%files -f filelist.rpm + %defattr(-,root,root) + %{_infodir}/*.gz + %{_mandir}/man1/*.gz +#----------------------------------------------------------------------------- +%changelog +* Tue Jan 09 2018 baho-utot 2.69-1 +- Initial build. First version diff --git a/SPECS/automake.spec b/SPECS/automake.spec new file mode 100644 index 0000000..2f3fe58 --- /dev/null +++ b/SPECS/automake.spec @@ -0,0 +1,47 @@ +#TARBALL: http://ftp.gnu.org/gnu/automake/automake-1.16.1.tar.xz +#MD5SUM: 53f38e7591fa57c3d2cee682be668e5b;SOURCES/automake-1.16.1.tar.xz +#----------------------------------------------------------------------------- +Summary: The Automake package contains programs for generating Makefiles for use with Autoconf +Name: automake +Version: 1.16.1 +Release: 1 +License: GPLv2 +URL: Any +Group: LFS/Base +Vendor: Elizabeth +Source0: http://ftp.gnu.org/gnu/automake/%{name}-%{version}.tar.xz +Requires: filesystem +%description +The Automake package contains programs for generating Makefiles for use with Autoconf +#----------------------------------------------------------------------------- +%prep +%setup -q -n %{NAME}-%{VERSION} +%build + ./configure \ + --prefix=%{_prefix} \ + --docdir=%{_docdir}/%{NAME}-%{VERSION} + make %{?_smp_mflags} +%install + make DESTDIR=%{buildroot} install +#----------------------------------------------------------------------------- +# Copy license/copying file + install -D -m644 COPYING %{buildroot}/usr/share/licenses/%{name}/LICENSE +#----------------------------------------------------------------------------- +# Create file list + rm %{buildroot}%{_infodir}/dir + find %{buildroot} -name '*.la' -delete + find "${RPM_BUILD_ROOT}" -not -type d -print > filelist.rpm + sed -i "s|^${RPM_BUILD_ROOT}||" filelist.rpm + sed -i '/man\/man/d' filelist.rpm + sed -i '/\/usr\/share\/info/d' filelist.rpm +#----------------------------------------------------------------------------- +%files -f filelist.rpm + %defattr(-,root,root) + %{_infodir}/*.gz + %{_mandir}/man1/*.gz +#----------------------------------------------------------------------------- +%changelog +* Fri Apr 05 2019 baho-utot 1.16.1-1 +- Update for LFS-8.4 +* Tue Jan 09 2018 baho-utot 1.15.1-1 +- Initial build. First version diff --git a/SPECS/base.spec b/SPECS/base.spec new file mode 100644 index 0000000..c29d406 --- /dev/null +++ b/SPECS/base.spec @@ -0,0 +1,111 @@ +%global debug_package %{nil} +#----------------------------------------------------------------------------- +Summary: Meta package for LFS Base installation +Name: base +Version: 8.4 +Release: 1 +License: None +URL: None +Group: LFS/Base +Vendor: Elizabeth +# +# LFS Chapter 6 +# +Requires: acl +Requires: attr +Requires: autoconf +Requires: automake +Requires: bash +Requires: bc +Requires: binutils +Requires: bison +Requires: bzip2 +Requires: check +Requires: coreutils +Requires: diffutils +Requires: e2fsprogs +Requires: eudev +Requires: expat +Requires: file +Requires: filesystem +Requires: findutils +Requires: flex +Requires: gawk +Requires: gcc +Requires: gdbm +Requires: gettext +Requires: glibc +Requires: gmp +Requires: gperf +Requires: grep +Requires: groff +Requires: grub +Requires: gzip +Requires: iana-etc +Requires: inetutils +Requires: intltool +Requires: iproute2 +Requires: kbd +Requires: kmod +Requires: less +Requires: lfs-bootscripts +Requires: libcap +Requires: libelf +Requires: libffi +Requires: libpipeline +Requires: libtool +Requires: linux +Requires: linux-api-headers +Requires: m4 +Requires: make +Requires: man-db +Requires: man-pages +Requires: meson +Requires: mpc +Requires: mpfr +Requires: ncurses +Requires: ninja +Requires: openssl +Requires: patch +Requires: perl +Requires: pkg-config +Requires: procps-ng +Requires: psmisc +Requires: python3 +Requires: readline +Requires: sed +Requires: shadow +Requires: sysklogd +Requires: sysvinit +Requires: tar +Requires: texinfo +Requires: tzdata +Requires: util-linux +Requires: vim +Requires: XML-Parser +Requires: xz +Requires: zlib +# ADDONS: +Requires: cpio +Requires: mkinitramfs +Requires: popt +Requires: python2 +Requires: rpm +Requires: wget +Requires: firmware-radeon +Requires: firmware-realtek +Requires: firmware-amd-ucode +%description +Summary: Meta package for LFS Base installation +#----------------------------------------------------------------------------- +%prep +%build +%install +%files +%defattr(-,lfs,lfs) +#----------------------------------------------------------------------------- +%changelog +* Mon Apr 29 2019 baho-utot 8.4-1 +- LFS-8.4 +* Mon Oct 01 2018 baho-utot 8.2-1 +- LFS-8.2 diff --git a/SPECS/bash.spec b/SPECS/bash.spec new file mode 100644 index 0000000..3f50b74 --- /dev/null +++ b/SPECS/bash.spec @@ -0,0 +1,52 @@ +#TARBALL: http://ftp.gnu.org/gnu/bash/bash-5.0.tar.gz +#MD5SUM: 2b44b47b905be16f45709648f671820b;SOURCES/bash-5.0.tar.gz +#----------------------------------------------------------------------------- +Summary: The Bash package contains the Bourne-Again SHell. +Name: bash +Version: 5.0 +Release: 1 +License: GPLv3 +URL: Any +Group: LFS/Base +Vendor: Elizabeth +Source0: http://ftp.gnu.org/gnu/%{name}/%{name}-%{version}.tar.gz +Requires: filesystem +%description +The Bash package contains the Bourne-Again SHell. +#----------------------------------------------------------------------------- +%prep +%setup -q -n %{NAME}-%{VERSION} +%build + ./configure \ + --prefix=%{_prefix} \ + --docdir=%{_docdir}/%{NAME}-%{VERSION} \ + --without-bash-malloc \ + --with-installed-readline + make %{?_smp_mflags} +%install + make DESTDIR=%{buildroot} install + install -vdm 755 %{buildroot}/bin + mv -vf %{buildroot}%{_bindir}/bash %{buildroot}/bin + ln -vs bash %{buildroot}/bin/sh +#----------------------------------------------------------------------------- +# Copy license/copying file + install -D -m644 COPYING %{buildroot}/usr/share/licenses/%{name}/LICENSE +#----------------------------------------------------------------------------- +# Create file list + rm %{buildroot}%{_infodir}/dir + find %{buildroot} -name '*.la' -delete + find "${RPM_BUILD_ROOT}" -not -type d -print > filelist.rpm + sed -i "s|^${RPM_BUILD_ROOT}||" filelist.rpm + sed -i '/man\/man/d' filelist.rpm + sed -i '/\/usr\/share\/info/d' filelist.rpm +#----------------------------------------------------------------------------- +%files -f filelist.rpm + %defattr(-,root,root) + %{_infodir}/*.gz + %{_mandir}/man1/*.gz +#----------------------------------------------------------------------------- +%changelog +* Fri Apr 05 2019 baho-utot 5.0-1 +- Update for LFS-8.4 +* Tue Jan 09 2018 baho-utot 4.4.18-1 +- Initial build. First version diff --git a/SPECS/bc.spec b/SPECS/bc.spec new file mode 100644 index 0000000..597e217 --- /dev/null +++ b/SPECS/bc.spec @@ -0,0 +1,53 @@ +#TARBALL: http://ftp.gnu.org/gnu/bc/bc-1.07.1.tar.gz +#MD5SUM: cda93857418655ea43590736fc3ca9fc;SOURCES/bc-1.07.1.tar.gz +#----------------------------------------------------------------------------- +Summary: The Bc package contains an arbitrary precision numeric processing language +Name: bc +Version: 1.07.1 +Release: 1 +License: GPLv3 +URL: http://www.gnu.org +Group: LFS/Base +Vendor: Elizabeth +Source0: http://ftp.gnu.org/gnu/%{name}/%{name}-%{version}.tar.gz +Requires: filesystem +%description +The Bc package contains an arbitrary precision numeric processing language +#----------------------------------------------------------------------------- +%prep +%setup -q -n %{NAME}-%{VERSION} +cat > bc/fix-libmath_h <<- EOF +#! /bin/bash +sed -e '1 s/^/{"/' -e 's/$/",/' -e '2,$ s/^/"/' -e '$ d' -i libmath.h +sed -e '$ s/$/0}/' -i libmath.h +EOF +sed -i -e '/flex/s/as_fn_error/: ;; # &/' configure +%build + ./configure \ + --prefix=%{_prefix} \ + --with-readline \ + --mandir=%{_mandir} \ + --infodir=%{_infodir} + make %{?_smp_mflags} +%install + make DESTDIR=%{buildroot} install +#----------------------------------------------------------------------------- +# Copy license/copying file + install -D -m644 COPYING %{buildroot}/usr/share/licenses/%{name}/LICENSE +#----------------------------------------------------------------------------- +# Create file list + rm %{buildroot}%{_infodir}/dir + find %{buildroot} -name '*.la' -delete + find "${RPM_BUILD_ROOT}" -not -type d -print > filelist.rpm + sed -i "s|^${RPM_BUILD_ROOT}||" filelist.rpm + sed -i '/man\/man/d' filelist.rpm + sed -i '/\/usr\/share\/info/d' filelist.rpm +#----------------------------------------------------------------------------- +%files -f filelist.rpm + %defattr(-,root,root) + %{_infodir}/*.gz + %{_mandir}/man1/*.gz +#----------------------------------------------------------------------------- +%changelog +* Tue Jan 09 2018 baho-utot 1.07.1-1 +- Initial build. First version diff --git a/SPECS/binutils.spec b/SPECS/binutils.spec new file mode 100644 index 0000000..357789a --- /dev/null +++ b/SPECS/binutils.spec @@ -0,0 +1,56 @@ +#TARBALL: http://ftp.gnu.org/gnu/binutils/binutils-2.32.tar.xz +#MD5SUM: 0d174cdaf85721c5723bf52355be41e6;SOURCES/binutils-2.32.tar.xz +#----------------------------------------------------------------------------- +Summary: The Binutils package contains a linker, an assembler, and other tools for handling object files +Name: binutils +Version: 2.32 +Release: 1 +License: GPLv3 +URL: http://ftp.gnu.org +Group: LFS/Base +Vendor: Elizabeth +Source0: http://ftp.gnu.org/gnu/%{name}/%{name}-%{version}.tar.xz +Requires: filesystem +%description +The Binutils package contains a linker, an assembler, and other tools for handling object files +#----------------------------------------------------------------------------- +%prep +%setup -q -n %{NAME}-%{VERSION} +%build + mkdir build + cd build + ../configure \ + --prefix=%{_prefix} \ + --enable-gold \ + --enable-ld=default \ + --enable-plugins \ + --enable-shared \ + --disable-werror \ + --enable-64-bit-bfd \ + --with-system-zlib + make %{?_smp_mflags} tooldir=/usr +%install + cd build + make DESTDIR=%{buildroot} tooldir=/usr install + cd - +#----------------------------------------------------------------------------- +# Copy license/copying file + install -D -m644 COPYING3 %{buildroot}/usr/share/licenses/%{name}/LICENSE +#----------------------------------------------------------------------------- +# Create file list + rm %{buildroot}%{_infodir}/dir + find %{buildroot} -name '*.la' -delete + find "${RPM_BUILD_ROOT}" -not -type d -print > filelist.rpm + sed -i "s|^${RPM_BUILD_ROOT}||" filelist.rpm + sed -i '/man\/man/d' filelist.rpm + sed -i '/\/usr\/share\/info/d' filelist.rpm +#----------------------------------------------------------------------------- +%files -f filelist.rpm + %defattr(-,root,root) + %{_infodir}/*.gz + %{_mandir}/man1/*.gz +#----------------------------------------------------------------------------- +%changelog +* Mon Mar 25 2019 baho-utot 2.32-1 +* Tue Jan 09 2018 baho-utot 2.30-1 +- Initial build. First version diff --git a/SPECS/bison.spec b/SPECS/bison.spec new file mode 100644 index 0000000..5ab7e46 --- /dev/null +++ b/SPECS/bison.spec @@ -0,0 +1,47 @@ +#TARBALL: http://ftp.gnu.org/gnu/bison/bison-3.3.2.tar.xz +#MD5SUM: c9b552dee234b2f6b66e56b27e5234c9;SOURCES/bison-3.3.2.tar.xz +#----------------------------------------------------------------------------- +Summary: The Bison package contains a parser generator. +Name: bison +Version: 3.3.2 +Release: 1 +License: Any +URL: Any +Group: LFS/Base +Vendor: Elizabeth +Source0: http://ftp.gnu.org/gnu/%{name}/%{name}-%{version}.tar.xz +Requires: filesystem +%description +The Bison package contains a parser generator. +#----------------------------------------------------------------------------- +%prep +%setup -q -n %{NAME}-%{VERSION} +%build + ./configure \ + --prefix=%{_prefix} \ + --docdir=%{_docdir}/%{name}-%{version} + make %{?_smp_mflags} +%install + make DESTDIR=%{buildroot} install +#----------------------------------------------------------------------------- +# Copy license/copying file +# install -D -m644 LICENSE %{buildroot}/usr/share/licenses/%{name}/LICENSE +#----------------------------------------------------------------------------- +# Create file list + rm %{buildroot}%{_infodir}/dir + find %{buildroot} -name '*.la' -delete + find "${RPM_BUILD_ROOT}" -not -type d -print > filelist.rpm + sed -i "s|^${RPM_BUILD_ROOT}||" filelist.rpm + sed -i '/man\/man/d' filelist.rpm + sed -i '/\/usr\/share\/info/d' filelist.rpm +#----------------------------------------------------------------------------- +%files -f filelist.rpm + %defattr(-,root,root) + %{_infodir}/*.gz + %{_mandir}/man1/*.gz +#----------------------------------------------------------------------------- +%changelog +* Fri Apr 05 2019 baho-utot 3.3.2-1 +- Update for LFS-8.4 +* Tue Jan 09 2018 baho-utot 3.0.4-1 +- Initial build. First version diff --git a/SPECS/bzip2.spec b/SPECS/bzip2.spec new file mode 100644 index 0000000..b3df742 --- /dev/null +++ b/SPECS/bzip2.spec @@ -0,0 +1,61 @@ +#TARBALL: http://anduin.linuxfromscratch.org/LFS/bzip2-1.0.6.tar.gz +#MD5SUM: 00b516f4704d4a7cb50a1d97e6e8e15b;SOURCES/bzip2-1.0.6.tar.gz +#TARBALL: http://www.linuxfromscratch.org/patches/lfs/8.2/bzip2-1.0.6-install_docs-1.patch +#MD5SUM: 6a5ac7e89b791aae556de0f745916f7f;SOURCES/bzip2-1.0.6-install_docs-1.patch +#----------------------------------------------------------------------------- +Summary: The Bzip2 package contains programs for compressing and decompressing files +Name: bzip2 +Version: 1.0.6 +Release: 1 +License: Other +URL: Any +Group: LFS/Base +Vendor: Elizabeth +Source0: http://www.%{name}.org/%{version}/%{name}-%{version}.tar.gz +Patch0: http://www.linuxfromscratch.org/patches/lfs/8.1/%{name}-%{version}-install_docs-1.patch +Requires: filesystem +%description +The Bzip2 package contains programs for compressing and decompressing files +Compressing text files with bzip2 yields a much better compression percentage +than with the traditional gzip. +#----------------------------------------------------------------------------- +%prep +%setup -q -n %{NAME}-%{VERSION} +%patch0 -p1 + sed -i 's@\(ln -s -f \)$(PREFIX)/bin/@\1@' Makefile + sed -i "s@(PREFIX)/man@(PREFIX)/share/man@g" Makefile +%build + make -f Makefile-libbz2_so + make clean + make +%install + make PREFIX=%{buildroot}/usr install + install -vdm 755 %{buildroot}/bin + install -vdm 755 %{buildroot}/lib + install -vdm 755 %{buildroot}%{_libdir} + install -vdm 755 %{buildroot}%{_bindir} + cp -v bzip2-shared %{buildroot}/bin/bzip2 + cp -av libbz2.so* %{buildroot}/lib + ln -sv ../../lib/libbz2.so.1.0 %{buildroot}%{_libdir}/libbz2.so + rm -v %{buildroot}%{_bindir}/{bunzip2,bzcat,bzip2} + ln -sv bzip2 %{buildroot}/bin/bunzip2 + ln -sv bzip2 %{buildroot}/bin/bzcat +#----------------------------------------------------------------------------- +# Copy license/copying file + install -D -m644 LICENSE %{buildroot}/usr/share/licenses/%{name}/LICENSE +#----------------------------------------------------------------------------- +# Create file list +# rm %{buildroot}%{_infodir}/dir + find %{buildroot} -name '*.la' -delete + find "${RPM_BUILD_ROOT}" -not -type d -print > filelist.rpm + sed -i "s|^${RPM_BUILD_ROOT}||" filelist.rpm + sed -i '/man\/man/d' filelist.rpm + sed -i '/\/usr\/share\/info/d' filelist.rpm +#----------------------------------------------------------------------------- +%files -f filelist.rpm + %defattr(-,root,root) + %{_mandir}/man1/*.gz +#----------------------------------------------------------------------------- +%changelog +* Tue Jan 09 2018 baho-utot 1.0.6-1 +- Initial build. First version diff --git a/SPECS/check.spec b/SPECS/check.spec new file mode 100644 index 0000000..4bd72e5 --- /dev/null +++ b/SPECS/check.spec @@ -0,0 +1,47 @@ +#TARBALL: https://github.com/libcheck/check/releases/download/0.12.0/check-0.12.0.tar.gz +#MD5SUM: 31b17c6075820a434119592941186f70;SOURCES/check-0.12.0.tar.gz +#----------------------------------------------------------------------------- +Summary: Check is a unit testing framework for C. +Name: check +Version: 0.12.0 +Release: 1 +License: GPLv2 +URL: Any +Group: LFS/Base +Vendor: Elizabeth +Source: %{name}-%{version}.tar.gz +Requires: filesystem +%description +Check is a unit testing framework for C. +#----------------------------------------------------------------------------- +%prep +%setup -q -n %{NAME}-%{VERSION} +%build + ./configure \ + --prefix=%{_prefix} + make %{?_smp_mflags} +%install + make DESTDIR=%{buildroot} install + sed -i '1 s/tools/usr/' ${RPM_BUILD_ROOT}/usr/bin/checkmk +# sed -i 's|/tools/bin/gawk|/usr/bin/gawk|' ${RPM_BUILD_ROOT}%%{_prefix}/bin/checkmk +#----------------------------------------------------------------------------- +# Copy license/copying file +# install -D -m644 LICENSE %{buildroot}/usr/share/licenses/%{name}/LICENSE + install -D -m644 COPYING.LESSER %{buildroot}/usr/share/licenses/%{name}/LICENSE +#----------------------------------------------------------------------------- +# Create file list + rm %{buildroot}%{_infodir}/dir + find %{buildroot} -name '*.la' -delete + find "${RPM_BUILD_ROOT}" -not -type d -print > filelist.rpm + sed -i "s|^${RPM_BUILD_ROOT}||" filelist.rpm + sed -i '/man\/man/d' filelist.rpm + sed -i '/\/usr\/share\/info/d' filelist.rpm +#----------------------------------------------------------------------------- +%files -f filelist.rpm + %defattr(-,root,root) + %{_infodir}/*.gz + %{_mandir}/man1/*.gz +#----------------------------------------------------------------------------- +%changelog +* Sat Jul 28 2018 baho-utot 0.12.0-1 +- Initial build. First version diff --git a/SPECS/coreutils.spec b/SPECS/coreutils.spec new file mode 100644 index 0000000..31583a2 --- /dev/null +++ b/SPECS/coreutils.spec @@ -0,0 +1,66 @@ +%global _default_patch_fuzz 2 +#TARBALL: http://ftp.gnu.org/gnu/coreutils/coreutils-8.30.tar.xz +#MD5SUM: ab06d68949758971fe744db66b572816;SOURCES/coreutils-8.30.tar.xz +#TARBALL: http://www.linuxfromscratch.org/patches/lfs/8.4/coreutils-8.30-i18n-1.patch +#MD5SUM: a9404fb575dfd5514f3c8f4120f9ca7d;SOURCES/coreutils-8.30-i18n-1.patch +#----------------------------------------------------------------------------- +Summary: The Coreutils package contains utilities for showing and setting the basic system characteristics. +Name: coreutils +Version: 8.30 +Release: 1 +License: GPLv3 +URL: Any +Group: LFS/Base +Vendor: Elizabeth +Source: %{name}-%{version}.tar.xz +Patch0: coreutils-8.30-i18n-1.patch +Requires: filesystem +%description +The Coreutils package contains utilities for showing and setting the basic system characteristics. +#----------------------------------------------------------------------------- +%prep +%setup -q -n %{NAME}-%{VERSION} +%patch0 -p1 +sed -i '/test.lock/s/^/#/' gnulib-tests/gnulib.mk +%build + autoreconf -fiv + FORCE_UNSAFE_CONFIGURE=1 \ + ./configure \ + --prefix=%{_prefix} \ + --enable-no-install-program=kill,uptime + FORCE_UNSAFE_CONFIGURE=1 make %{?_smp_mflags} +%install + make DESTDIR=%{buildroot} install + install -vdm 755 %{buildroot}/bin + install -vdm 755 %{buildroot}%{_sbindir} + install -vdm 755 %{buildroot}%{_mandir}/man8 + mv -v %{buildroot}%{_bindir}/{cat,chgrp,chmod,chown,cp,date,dd,df,echo} %{buildroot}/bin + mv -v %{buildroot}%{_bindir}/{false,ln,ls,mkdir,mknod,mv,pwd,rm} %{buildroot}/bin + mv -v %{buildroot}%{_bindir}/{rmdir,stty,sync,true,uname} %{buildroot}/bin + mv -v %{buildroot}%{_bindir}/chroot %{buildroot}%{_sbindir} + mv -v %{buildroot}%{_mandir}/man1/chroot.1 %{buildroot}%{_mandir}/man8/chroot.8 + sed -i s/\"1\"/\"8\"/1 %{buildroot}%{_mandir}/man8/chroot.8 + mv -v %{buildroot}%{_bindir}/{head,sleep,nice} %{buildroot}/bin +#----------------------------------------------------------------------------- +# Copy license/copying file + install -D -m644 COPYING %{buildroot}/usr/share/licenses/%{name}/LICENSE +#----------------------------------------------------------------------------- +# Create file list + rm %{buildroot}%{_infodir}/dir + find %{buildroot} -name '*.la' -delete + find "${RPM_BUILD_ROOT}" -not -type d -print > filelist.rpm + sed -i "s|^${RPM_BUILD_ROOT}||" filelist.rpm + sed -i '/man\/man/d' filelist.rpm + sed -i '/\/usr\/share\/info/d' filelist.rpm +#----------------------------------------------------------------------------- +%files -f filelist.rpm + %defattr(-,root,root) + %{_infodir}/*.gz + %{_mandir}/man1/*.gz + %{_mandir}/man8/*.gz +#----------------------------------------------------------------------------- +%changelog +* Sat Apr 06 2019 baho-utot 8.30-1 +- LFS-8.4 +* Tue Jan 09 2018 baho-utot 8.29-1 +- Initial build. First version diff --git a/SPECS/cpio.spec b/SPECS/cpio.spec new file mode 100644 index 0000000..defd3dc --- /dev/null +++ b/SPECS/cpio.spec @@ -0,0 +1,61 @@ +#TARBALL: https://ftp.gnu.org/gnu/cpio/cpio-2.12.tar.bz2 +#MD5SUM: 93eea9f07c0058c097891c73e4955456;SOURCES/cpio-2.12.tar.bz2 +#----------------------------------------------------------------------------- +Summary: The cpio package contains tools for archiving +Name: cpio +Version: 2.12 +Release: 1 +License: GPLv3 +URL: Any +Group: BLFS/System_Utilities +Vendor: Elizabeth +Source0: cpio/%{name}-%{version}.tar.bz2 +Requires: filesystem +%description +The cpio package contains tools for archiving +%prep +%setup -q -n %{NAME}-%{VERSION} +%build + ./configure \ + --prefix=%{_prefix} \ + --bindir=/bin \ + --enable-mt \ + --with-rmt=/usr/libexec/rmt + make %{?_smp_mflags} + makeinfo --html -o doc/html doc/cpio.texi + makeinfo --html --no-split -o doc/cpio.html doc/cpio.texi + makeinfo --plaintext -o doc/cpio.txt doc/cpio.texi +%install + make DESTDIR=%{buildroot} install +#----------------------------------------------------------------------------- +# Copy license/copying file +# install -D -m644 LICENSE %{buildroot}/usr/share/licenses/%{name}/LICENSE + install -D -m644 COPYING %{buildroot}/usr/share/licenses/%{name}/LICENSE +#----------------------------------------------------------------------------- +# Create file list + rm %{buildroot}%{_infodir}/dir + find %{buildroot} -name '*.la' -delete + find "${RPM_BUILD_ROOT}" -not -type d -print > filelist.rpm + sed -i "s|^${RPM_BUILD_ROOT}||" filelist.rpm + sed -i '/man\/man/d' filelist.rpm + sed -i '/\/usr\/share\/info/d' filelist.rpm +#----------------------------------------------------------------------------- +%files -f filelist.rpm + %defattr(-,root,root) + %{_infodir}/*.gz + %{_mandir}/man1/*.gz +#----------------------------------------------------------------------------- +%post + pushd /usr/share/info + rm -v dir + for f in *; do install-info $f dir 2>/dev/null; done + popd +%postun + pushd /usr/share/info + rm -v dir + for f in *; do install-info $f dir 2>/dev/null; done + popd +#----------------------------------------------------------------------------- +%changelog +* Wed Feb 14 2018 baho-utot cpio-2.12-1 +- Initial build. First version diff --git a/SPECS/diffutils.spec b/SPECS/diffutils.spec new file mode 100644 index 0000000..e681e96 --- /dev/null +++ b/SPECS/diffutils.spec @@ -0,0 +1,46 @@ +#TARBALL: http://ftp.gnu.org/gnu/diffutils/diffutils-3.7.tar.xz +#MD5SUM: 4824adc0e95dbbf11dfbdfaad6a1e461;SOURCES/diffutils-3.7.tar.xz +#----------------------------------------------------------------------------- +Summary: The Diffutils package contains programs that show the differences between files or directories. +Name: diffutils +Version: 3.7 +Release: 1 +License: GPLv3 +URL: Any +Group: LFS/Base +Vendor: Elizabeth +Source0: http://ftp.gnu.org/gnu/diffutils/%{name}-%{version}.tar.xz +Requires: filesystem +%description +The Diffutils package contains programs that show the differences between files or directories. +#----------------------------------------------------------------------------- +%prep +%setup -q -n %{NAME}-%{VERSION} +%build + ./configure \ + --prefix=%{_prefix} + make %{?_smp_mflags} +%install + make DESTDIR=%{buildroot} install +#----------------------------------------------------------------------------- +# Copy license/copying file + install -D -m644 COPYING %{buildroot}/usr/share/licenses/%{name}/LICENSE +#----------------------------------------------------------------------------- +# Create file list + rm %{buildroot}%{_infodir}/dir + find %{buildroot} -name '*.la' -delete + find "${RPM_BUILD_ROOT}" -not -type d -print > filelist.rpm + sed -i "s|^${RPM_BUILD_ROOT}||" filelist.rpm + sed -i '/man\/man/d' filelist.rpm + sed -i '/\/usr\/share\/info/d' filelist.rpm +#----------------------------------------------------------------------------- +%files -f filelist.rpm + %defattr(-,root,root) + %{_infodir}/*.gz + %{_mandir}/man1/*.gz +#----------------------------------------------------------------------------- +%changelog +* Sat Apr 06 2019 baho-utot 3.7-1 +- LFS-8.4 +* Tue Jan 09 2018 baho-utot 3.6-1 +- Initial build. First version diff --git a/SPECS/e2fsprogs.spec b/SPECS/e2fsprogs.spec new file mode 100644 index 0000000..0d0dbaa --- /dev/null +++ b/SPECS/e2fsprogs.spec @@ -0,0 +1,80 @@ +#TARBALL: https://downloads.sourceforge.net/project/e2fsprogs/e2fsprogs/v1.44.5/e2fsprogs-1.44.5.tar.gz +#MD5SUM: 8d78b11d04d26c0b2dd149529441fa80;SOURCES/e2fsprogs-1.44.5.tar.gz +#----------------------------------------------------------------------------- +Summary: The E2fsprogs package contains the utilities for handling the ext2 file system. +Name: e2fsprogs +Version: 1.44.5 +Release: 1 +License: GPLv2 +URL: Any +Group: LFS/Base +Vendor: Elizabeth +Source0: %{name}-%{version}.tar.gz +Requires: filesystem +%description +The E2fsprogs package contains the utilities for handling the ext2 file system. +It also supports the ext3 and ext4 journaling file systems. +#----------------------------------------------------------------------------- +%prep +%setup -q -n %{NAME}-%{VERSION} + mkdir build +%build + cd build + ../configure \ + --prefix=%{_prefix} \ + --bindir=/bin \ + --with-root-prefix="" \ + --enable-elf-shlibs \ + --disable-libblkid \ + --disable-libuuid \ + --disable-uuidd \ + --disable-fsck + make %{?_smp_mflags} +%install + cd build + make DESTDIR=%{buildroot} install + make DESTDIR=%{buildroot} install-libs + cd - + chmod -v u+w %{buildroot}%{_libdir}/{libcom_err,libe2p,libext2fs,libss}.a + gunzip -v %{buildroot}%{_infodir}/libext2fs.info.gz + install-info --dir-file=%{buildroot}%{_infodir}/dir %{buildroot}%{_infodir}/libext2fs.info + makeinfo -o doc/com_err.info lib/et/com_err.texinfo + install -v -m644 doc/com_err.info %{buildroot}%{_infodir} + install-info --dir-file=%{_infodir}/dir %{buildroot}%{_infodir}/com_err.info +#----------------------------------------------------------------------------- +# Copy license/copying file + install -D -m644 NOTICE %{buildroot}/usr/share/licenses/%{name}/LICENSE +#----------------------------------------------------------------------------- +# Create file list + rm %{buildroot}%{_infodir}/dir + find %{buildroot} -name '*.la' -delete + find "${RPM_BUILD_ROOT}" -not -type d -print > filelist.rpm + sed -i "s|^${RPM_BUILD_ROOT}||" filelist.rpm + sed -i '/man\/man/d' filelist.rpm + sed -i '/\/usr\/share\/info/d' filelist.rpm +#----------------------------------------------------------------------------- +%files -f filelist.rpm + %defattr(-,root,root) + %{_infodir}/*.gz + %{_mandir}/man1/*.gz + %{_mandir}/man3/*.gz + %{_mandir}/man5/*.gz + %{_mandir}/man8/*.gz +#----------------------------------------------------------------------------- +%post + pushd /usr/share/info + rm -v dir + for f in *; do install-info $f dir 2>/dev/null; done + popd +%postun + pushd /usr/share/info + rm -v dir + for f in *; do install-info $f dir 2>/dev/null; done + popd +#----------------------------------------------------------------------------- +%changelog +* Sat Apr 06 2019 baho-utot 1.44.5-1 +- LFS-8.4 +* Wed Jul 25 2018 baho-utot 1.43.9-1 +* Tue Jan 09 2018 baho-utot 1.43.5-1 +- Initial build. First version diff --git a/SPECS/eudev.spec b/SPECS/eudev.spec new file mode 100644 index 0000000..20311ba --- /dev/null +++ b/SPECS/eudev.spec @@ -0,0 +1,69 @@ +#TARBALL: https://dev.gentoo.org/~blueness/eudev/eudev-3.2.7.tar.gz +#MD5SUM: c75d99910c1791dd9430d26ab76059c0;SOURCES/eudev-3.2.7.tar.gz +#TARBALL: http://anduin.linuxfromscratch.org/LFS/udev-lfs-20171102.tar.bz2 +#MD5SUM: d92afb0c6e8e616792068ee4737b0d24 +#----------------------------------------------------------------------------- +Summary: The Eudev package contains programs for dynamic creation of device nodes. +Name: eudev +Version: 3.2.7 +Release: 1 +License: GPLv2 +URL: Any +Group: LFS/Base +Vendor: Elizabeth +Source0: %{name}-%{version}.tar.gz +Source1: udev-lfs-20171102.tar.bz2 +Requires: filesystem +%description +The Eudev package contains programs for dynamic creation of device nodes. +#----------------------------------------------------------------------------- +%prep +%setup -q -n %{NAME}-%{VERSION} +%setup -T -D -a 1 + cat > config.cache <<- "EOF" + HAVE_BLKID=1 + BLKID_LIBS="-lblkid" + BLKID_CFLAGS="-I/tools/include" + EOF +%build + ./configure \ + --prefix=%{_prefix} \ + --bindir=/sbin \ + --sbindir=/sbin \ + --libdir=%{_libdir} \ + --sysconfdir=/etc \ + --libexecdir=/lib \ + --with-rootprefix= \ + --with-rootlibdir=/lib \ + --enable-manpages \ + --disable-static \ + --config-cache + LIBRARY_PATH=/tools/lib make %{?_smp_mflags} +%install + make DESTDIR=%{buildroot} LD_LIBRARY_PATH=/tools/lib install + make -f udev-lfs-20171102/Makefile.lfs DESTDIR=%{buildroot} install +#----------------------------------------------------------------------------- +# Copy license/copying file + install -D -m644 COPYING %{buildroot}/usr/share/licenses/%{name}/LICENSE +#----------------------------------------------------------------------------- +# rm %{buildroot}%{_infodir}/dir + find %{buildroot} -name '*.la' -delete + find "${RPM_BUILD_ROOT}" -not -type d -print > filelist.rpm + sed -i "s|^${RPM_BUILD_ROOT}||" filelist.rpm + sed -i '/man\/man/d' filelist.rpm + sed -i '/\/usr\/share\/info/d' filelist.rpm +%post + LD_LIBRARY_PATH=/tools/lib udevadm hwdb --update +#----------------------------------------------------------------------------- +%files -f filelist.rpm + %defattr(-,root,root) +# %%{_infodir}/*.gz + %{_mandir}/man5/*.gz + %{_mandir}/man7/*.gz + %{_mandir}/man8/*.gz +#----------------------------------------------------------------------------- +%changelog +* Sat Apr 06 2019 baho-utot 3.2.7-1 +- LFS-8.4 +* Tue Jan 09 2018 baho-utot 3.2.5-1 +- Initial build. First version diff --git a/SPECS/expat.spec b/SPECS/expat.spec new file mode 100644 index 0000000..67916e9 --- /dev/null +++ b/SPECS/expat.spec @@ -0,0 +1,50 @@ +#TARBALL: https://prdownloads.sourceforge.net/expat/expat-2.2.6.tar.bz2 +#MD5SUM: ca047ae951b40020ac831c28859161b2;SOURCES/expat-2.2.6.tar.bz2 +#----------------------------------------------------------------------------- +Summary: The Expat package contains a stream oriented C library for parsing XML. +Name: expat +Version: 2.2.6 +Release: 1 +License: Other +URL: Any +Group: LFS/Base +Vendor: Elizabeth +Source0: http://prdownloads.sourceforge.net/expat/%{name}-%{version}.tar.bz2 +Requires: filesystem +%description +The Expat package contains a stream oriented C library for parsing XML. +#----------------------------------------------------------------------------- +%prep +%setup -q -n %{NAME}-%{VERSION} + sed -i 's|usr/bin/env |bin/|' run.sh.in +%build + ./configure \ + --prefix=%{_prefix} \ + --disable-static \ + --docdir=%{_docdir}/%{name}-%{version} + make %{?_smp_mflags} +%install + make DESTDIR=%{buildroot} install + install -v -dm755 %{buildroot}%{_docdir}/%{name}-%{version} + install -v -m644 doc/*.{html,png,css} %{buildroot}%{_docdir}/%{name}-%{version} +#----------------------------------------------------------------------------- +# Copy license/copying file + install -D -m644 COPYING %{buildroot}/usr/share/licenses/%{name}/LICENSE +#----------------------------------------------------------------------------- +# Create file list +# rm %{buildroot}%{_infodir}/dir + find %{buildroot} -name '*.la' -delete + find "${RPM_BUILD_ROOT}" -not -type d -print > filelist.rpm + sed -i "s|^${RPM_BUILD_ROOT}||" filelist.rpm + sed -i '/man\/man/d' filelist.rpm + sed -i '/\/usr\/share\/info/d' filelist.rpm +#----------------------------------------------------------------------------- +%files -f filelist.rpm + %defattr(-,root,root) + %{_mandir}/man1/*.gz +#----------------------------------------------------------------------------- +%changelog +* Fri Apr 05 2019 baho-utot 2.2.6-1 +- Update for LFS-8.4 +* Tue Jan 09 2018 baho-utot 2.2.5-1 +- Initial build. First version diff --git a/SPECS/file.spec b/SPECS/file.spec new file mode 100644 index 0000000..a1b157f --- /dev/null +++ b/SPECS/file.spec @@ -0,0 +1,46 @@ +#TARBALL: ftp://ftp.astron.com/pub/file/file-5.36.tar.gz +#MD5SUM: 9af0eb3f5db4ae00fffc37f7b861575c;SOURCES/file-5.36.tar.gz +#----------------------------------------------------------------------------- +Summary: The File package contains a utility for determining the type of a given file or files +Name: file +Version: 5.36 +Release: 1 +License: Other +URL: ftp://ftp.astron.com/pub +Group: LFS/Base +Vendor: Elizabeth +Source0: ftp://ftp.astron.com/pub/%{name}/%{name}-%{version}.tar.gz +Requires: filesystem +%description +The File package contains a utility for determining the type of a given file or files. +#----------------------------------------------------------------------------- +%prep +%setup -q -n %{NAME}-%{VERSION} +%build + ./configure --prefix=%{_prefix} + make %{?_smp_mflags} +%install + make DESTDIR=%{buildroot} install +#----------------------------------------------------------------------------- +# Copy license/copying file + install -D -m644 COPYING %{buildroot}/usr/share/licenses/%{name}/LICENSE +#----------------------------------------------------------------------------- +# Create file list +# rm %{buildroot}%{_infodir}/dir + find %{buildroot} -name '*.la' -delete + find "${RPM_BUILD_ROOT}" -not -type d -print > filelist.rpm + sed -i "s|^${RPM_BUILD_ROOT}||" filelist.rpm + sed -i '/man\/man/d' filelist.rpm + sed -i '/\/usr\/share\/info/d' filelist.rpm +#----------------------------------------------------------------------------- +%files -f filelist.rpm + %defattr(-,root,root) + %{_mandir}/man1/file.1.gz + %{_mandir}/man3/libmagic.3.gz + %{_mandir}/man4/magic.4.gz +#----------------------------------------------------------------------------- +%changelog +* Mon Mar 15 2019 baho-utot 5.36-1 +* Mon Mar 19 2018 baho-utot 5.32-1 +* Tue Jan 09 2018 baho-utot 5.31-1 +- Initial build. First version diff --git a/SPECS/filesystem.spec b/SPECS/filesystem.spec new file mode 100644 index 0000000..af7e268 --- /dev/null +++ b/SPECS/filesystem.spec @@ -0,0 +1,668 @@ +#TARBALL: +#MD5SUM: +#----------------------------------------------------------------------------- +Summary: Default file system +Name: filesystem +Version: 8.4 +Release: 1 +License: None +Group: LFS/Base +Vendor: Elizabeth +URL: http://www.linuxfromscratch.org +%description +The filesystem package is one of the basic packages that is installed +on a Linux system. Filesystem contains the basic directory +layout for a Linux operating system, including the correct permissions +for the directories. +#----------------------------------------------------------------------------- +%prep +%build +%install +#----------------------------------------------------------------------------- +# 6.5. Creating Directories +#----------------------------------------------------------------------------- +# root directories +install -vdm 755 %{buildroot}/{bin,boot,dev,etc,home,lib,lib64,media,mnt,opt,proc,root,run,sbin,srv,sys,tmp,usr,var} +# etc directories +install -vdm 755 %{buildroot}/etc/{ld.so.conf.d,opt,profile.d,skel,sysconfig} +# init script directories - this is for chkconfig +install -vdm 755 %{buildroot}/etc/rc.d/{init.d,rc0.d,rc1.d,rc2.d,rc3.d,rc4.d,rc5.d,rc6.d,rc7.d} +ln -vs rc7.d %{buildroot}/etc/rc.d/rcS.d +# lib directories +install -vdm 755 %{buildroot}/lib/firmware +# media directories +install -vdm 755 %{buildroot}/media/{floppy,cdrom} +# usr directories +install -vdm 755 %{buildroot}/usr/{,local/}{bin,include,lib,sbin,src} +install -vdm 755 %{buildroot}/usr/{,local/}share/{color,dict,doc,info,locale,man} +install -vdm 755 %{buildroot}/usr/{,local/}share/{misc,terminfo,zoneinfo} +install -vdm 755 %{buildroot}/usr/libexec +install -vdm 755 %{buildroot}/usr/{,local/}share/man/man{1..8} +# var directories +install -vdm 755 %{buildroot}/var/{log,mail,spool,tmp} +install -vdm 755 %{buildroot}/var/{opt,cache,lib/{color,misc,locate,hwclock},local} +# symlinks +ln -sv /run %{buildroot}/var/run +ln -sv /run/lock %{buildroot}/var/lock +ln -sv /proc/self/mounts %{buildroot}/etc/mtab +touch %{buildroot}/var/log/{btmp,lastlog,faillog,wtmp} +chgrp -v 13 %{buildroot}/var/log/lastlog +chmod -v 664 %{buildroot}/var/log/lastlog +chmod -v 600 %{buildroot}/var/log/btmp +#----------------------------------------------------------------------------- +# 6.2. Preparing Virtual Kernel File Systems +#----------------------------------------------------------------------------- +mknod -m 600 %{buildroot}/dev/console c 5 1 +mknod -m 666 %{buildroot}/dev/null c 1 3 +#----------------------------------------------------------------------------- +# 6.6. Creating Essential Files and Symlinks +#----------------------------------------------------------------------------- +cat > %{buildroot}/etc/passwd <<- EOF + root:x:0:0:root:/root:/bin/bash + bin:x:1:1:bin:/dev/null:/bin/false + daemon:x:6:6:Daemon User:/dev/null:/bin/false + messagebus:x:18:18:D-Bus Message Daemon User:/var/run/dbus:/bin/false + nobody:x:99:99:Unprivileged User:/dev/null:/bin/false +EOF +cat > %{buildroot}/etc/group <<- EOF + root:x:0: + bin:x:1:daemon + sys:x:2: + kmem:x:3: + tape:x:4: + tty:x:5: + daemon:x:6: + floppy:x:7: + disk:x:8: + lp:x:9: + dialout:x:10: + audio:x:11: + video:x:12: + utmp:x:13: + usb:x:14: + cdrom:x:15: + adm:x:16: + messagebus:x:18: + input:x:24: + mail:x:34: + kvm:x:61: + wheel:x:97: + nogroup:x:99: + users:x:999: +EOF +#----------------------------------------------------------------------------- +# 7.5.1. Creating Network Interface Configuration Files +#----------------------------------------------------------------------------- +cat > %{buildroot}/etc/sysconfig/ifconfig.eth0 <<- "EOF" + ONBOOT=yes + IFACE=enp7s0 + SERVICE=ipv4-static + IP=192.168.1.2 + GATEWAY=192.168.1.1 + PREFIX=24 + BROADCAST=192.168.1.255 +EOF +#----------------------------------------------------------------------------- +# 7.5.2. Creating the /etc/resolv.conf File +#----------------------------------------------------------------------------- +cat > %{buildroot}/etc/resolv.conf <<- "EOF" +# Begin /etc/resolv.conf + + domain example.org + nameserver + nameserver + +# End /etc/resolv.conf +EOF +#----------------------------------------------------------------------------- +# 7.5.3. Configuring the system hostname +#----------------------------------------------------------------------------- +echo "lfs.example.org" > %{buildroot}/etc/hostname +#----------------------------------------------------------------------------- +# 7.5.4. Customizing the /etc/hosts File +#----------------------------------------------------------------------------- +cat > %{buildroot}/etc/hosts <<- "EOF" +# Begin /etc/hosts + + 127.0.0.1 localhost + 192.168.1.2 lfs.example.org lfs + ::1 localhost ip6-localhost ip6-loopback + ff02::1 ip6-allnodes + ff02::2 ip6-allrouters + +# End /etc/hosts +EOF +#----------------------------------------------------------------------------- +# 7.6.2. Configuring Sysvinit +#----------------------------------------------------------------------------- +cat > %{buildroot}/etc/inittab <<- "EOF" +# Begin /etc/inittab + + id:3:initdefault: + + si::sysinit:/etc/rc.d/init.d/rc S + + l0:0:wait:/etc/rc.d/init.d/rc 0 + l1:S1:wait:/etc/rc.d/init.d/rc 1 + l2:2:wait:/etc/rc.d/init.d/rc 2 + l3:3:wait:/etc/rc.d/init.d/rc 3 + l4:4:wait:/etc/rc.d/init.d/rc 4 + l5:5:wait:/etc/rc.d/init.d/rc 5 + l6:6:wait:/etc/rc.d/init.d/rc 6 + + ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now + + su:S016:once:/sbin/sulogin + + 1:2345:respawn:/sbin/agetty --noclear tty1 9600 + 2:2345:respawn:/sbin/agetty tty2 9600 + 3:2345:respawn:/sbin/agetty tty3 9600 + 4:2345:respawn:/sbin/agetty tty4 9600 + 5:2345:respawn:/sbin/agetty tty5 9600 + 6:2345:respawn:/sbin/agetty tty6 9600 + +# End /etc/inittab +EOF +#----------------------------------------------------------------------------- +# 7.6.4. Configuring the System Clock +#----------------------------------------------------------------------------- +cat > %{buildroot}/etc/sysconfig/clock <<- "EOF" +# Begin /etc/sysconfig/clock + +# Change the value of the UTC variable below to a value of +# 0 (zero) if the hardware clock is not set to UTC time. + + UTC=1 + +# Set this to any options you might need to give to hwclock, +# such as machine hardware clock type for Alphas. + CLOCKPARAMS= + +# End /etc/sysconfig/clock +EOF +#----------------------------------------------------------------------------- +# 7.8. Creating the /etc/inputrc File +#----------------------------------------------------------------------------- +cat > %{buildroot}/etc/inputrc <<- "EOF" +# Begin /etc/inputrc +# Modified by Chris Lynn + +# Allow the command prompt to wrap to the next line + set horizontal-scroll-mode Off + +# Enable 8bit input + set meta-flag On + set input-meta On + +# Turns off 8th bit stripping + set convert-meta Off + +# Keep the 8th bit for display + set output-meta On + +# none, visible or audible + set bell-style none + +# All of the following map the escape sequence of the value +# contained in the 1st argument to the readline specific functions + "\eOd": backward-word + "\eOc": forward-word + +# for linux console + "\e[1~": beginning-of-line + "\e[4~": end-of-line + "\e[5~": beginning-of-history + "\e[6~": end-of-history + "\e[3~": delete-char + "\e[2~": quoted-insert + +# for xterm + "\eOH": beginning-of-line + "\eOF": end-of-line + +# for Konsole + "\e[H": beginning-of-line + "\e[F": end-of-line + +# End /etc/inputrc +EOF +#----------------------------------------------------------------------------- +# 7.9. Creating the /etc/shells File +#----------------------------------------------------------------------------- +cat > %{buildroot}/etc/shells <<- "EOF" +# Begin /etc/shells + + /bin/sh + /bin/bash + +# End /etc/shells +EOF +#----------------------------------------------------------------------------- +# 8.2. Creating the /etc/fstab File +#----------------------------------------------------------------------------- +cat > %{buildroot}/etc/fstab <<- "EOF" +# Begin /etc/fstab + +# hdparm -I /dev/sda | grep NCQ --> can use barrier +# file system mount-point type options dump fsck +# order +#/dev/sdxx / ext4 defaults,barrier,noatime,noacl,data=ordered 1 1 +#/dev/sdxx / ext4 defaults 1 1 +#/dev/sdxx /boot ext4 defaults 1 2 + /dev/ / ext4 defaults 1 1 + /dev/ swap swap pri=1 0 0 + proc /proc proc nosuid,noexec,nodev 0 0 + sysfs /sys sysfs nosuid,noexec,nodev 0 0 + devpts /dev/pts devpts gid=5,mode=620 0 0 + tmpfs /run tmpfs defaults 0 0 + devtmpfs /dev devtmpfs mode=0755,nosuid 0 0 +#tmpfs /tmp tmpfs defaults 0 0 + +# End /etc/fstab +EOF +#----------------------------------------------------------------------------- +# 8.3.2. Configuring Linux Module Load Order +#----------------------------------------------------------------------------- +install -v -m755 -d %{buildroot}/etc/modprobe.d +cat > %{buildroot}/etc/modprobe.d/usb.conf <<- "EOF" +# Begin /etc/modprobe.d/usb.conf + + install ohci_hcd /sbin/modprobe ehci_hcd ; /sbin/modprobe -i ohci_hcd ; true + install uhci_hcd /sbin/modprobe ehci_hcd ; /sbin/modprobe -i uhci_hcd ; true + +# End /etc/modprobe.d/usb.conf +EOF +#----------------------------------------------------------------------------- +# 9.1. The End +#----------------------------------------------------------------------------- +echo %{version} > %{buildroot}/etc/lfs-release +cat > %{buildroot}/etc/lsb-release <<- "EOF" + DISTRIB_ID="Linux From Scratch" + DISTRIB_RELEASE=%{version} + DISTRIB_CODENAME="Elizabeth" + DISTRIB_DESCRIPTION="Linux From Scratch" +EOF +#----------------------------------------------------------------------------- +# BLFS scripts - About System Users and Groups +#----------------------------------------------------------------------------- +cat > %{buildroot}/etc/profile <<- "EOF" +# Begin /etc/profile +# Written for Beyond Linux From Scratch +# by James Robertson +# modifications by Dagmar d'Surreal + +# System wide environment variables and startup programs. + +# System wide aliases and functions should go in /etc/bashrc. Personal +# environment variables and startup programs should go into +# ~/.bash_profile. Personal aliases and functions should go into +# ~/.bashrc. + +# Functions to help us manage paths. Second argument is the name of the +# path variable to be modified (default: PATH) + pathremove () { + local IFS=':' + local NEWPATH + local DIR + local PATHVARIABLE=${2:-PATH} + for DIR in ${!PATHVARIABLE} ; do + if [ "$DIR" != "$1" ] ; then + NEWPATH=${NEWPATH:+$NEWPATH:}$DIR + fi + done + export $PATHVARIABLE="$NEWPATH" + } + pathprepend () { + pathremove $1 $2 + local PATHVARIABLE=${2:-PATH} + export $PATHVARIABLE="$1${!PATHVARIABLE:+:${!PATHVARIABLE}}" + } + pathappend () { + pathremove $1 $2 + local PATHVARIABLE=${2:-PATH} + export $PATHVARIABLE="${!PATHVARIABLE:+${!PATHVARIABLE}:}$1" + } + export -f pathremove pathprepend pathappend +# Set the initial path + export PATH=/bin:/usr/bin + if [ $EUID -eq 0 ] ; then + pathappend /sbin:/usr/sbin + unset HISTFILE + fi +# Setup some environment variables. + export HISTSIZE=1000 + export HISTIGNORE="&:[bf]g:exit" +# Set some defaults for graphical systems + export XDG_DATA_DIRS=${XDG_DATA_DIRS:-/usr/share/} + export XDG_CONFIG_DIRS=${XDG_CONFIG_DIRS:-/etc/xdg/} + export XDG_RUNTIME_DIR=${XDG_RUNTIME_DIR:-/tmp/xdg-$USER} +# Setup a red prompt for root and a green one for users. + NORMAL="\[\e[0m\]" + RED="\[\e[1;31m\]" + GREEN="\[\e[1;32m\]" + if [[ $EUID == 0 ]] ; then + PS1="$RED\u [ $NORMAL\w$RED ]# $NORMAL" + else + PS1="$GREEN\u [ $NORMAL\w$GREEN ]\$ $NORMAL" + fi + for script in /etc/profile.d/*.sh ; do + if [ -r $script ] ; then + . $script + fi + done + unset script RED GREEN NORMAL +# End /etc/profile +EOF +cat > %{buildroot}/etc/profile.d/bash_completion.sh <<- "EOF" +# Begin /etc/profile.d/bash_completion.sh +# Import bash completion scripts + for script in /etc/bash_completion.d/*.sh ; do + if [ -r $script ] ; then + . $script + fi + done +# End /etc/profile.d/bash_completion.sh +EOF +cat > %{buildroot}/etc/profile.d/dircolors.sh <<- "EOF" +# Setup for /bin/ls and /bin/grep to support color, the alias is in /etc/bashrc. + if [ -f "/etc/dircolors" ] ; then + eval $(dircolors -b /etc/dircolors) + fi + if [ -f "$HOME/.dircolors" ] ; then + eval $(dircolors -b $HOME/.dircolors) + fi + alias ls='ls --color=auto' + alias grep='grep --color=auto' +EOF +cat > %{buildroot}/etc/profile.d/extrapaths.sh <<- "EOF" + if [ -d /usr/local/lib/pkgconfig ] ; then + pathappend /usr/local/lib/pkgconfig PKG_CONFIG_PATH + fi + if [ -d /usr/local/bin ]; then + pathprepend /usr/local/bin + fi + if [ -d /usr/local/sbin -a $EUID -eq 0 ]; then + pathprepend /usr/local/sbin + fi +# Set some defaults before other applications add to these paths. + pathappend /usr/share/man MANPATH + pathappend /usr/share/info INFOPATH +EOF +cat > %{buildroot}/etc/profile.d/readline.sh <<- "EOF" +# Setup the INPUTRC environment variable. + if [ -z "$INPUTRC" -a ! -f "$HOME/.inputrc" ] ; then + INPUTRC=/etc/inputrc + fi + export INPUTRC +EOF +cat > %{buildroot}/etc/profile.d/umask.sh <<- "EOF" +# By default, the umask should be set. + if [ "$(id -gn)" = "$(id -un)" -a $EUID -gt 99 ] ; then + umask 002 + else + umask 022 + fi +EOF +cat > %{buildroot}/etc/profile.d/i18n.sh <<- "EOF" +# Set up i18n variables +#export LANG=_.<@modifiers> +EOF +cat > %{buildroot}/etc/bashrc <<- "EOF" +# Begin /etc/bashrc +# Written for Beyond Linux From Scratch +# by James Robertson +# updated by Bruce Dubbs + +# System wide aliases and functions. + +# System wide environment variables and startup programs should go into +# /etc/profile. Personal environment variables and startup programs +# should go into ~/.bash_profile. Personal aliases and functions should +# go into ~/.bashrc + +# Provides colored /bin/ls and /bin/grep commands. Used in conjunction +# with code in /etc/profile. + alias ls='ls --color=auto' + alias grep='grep --color=auto' +# Provides prompt for non-login shells, specifically shells started +# in the X environment. [Review the LFS archive thread titled +# PS1 Environment Variable for a great case study behind this script +# addendum.] + NORMAL="\[\e[0m\]" + RED="\[\e[1;31m\]" + GREEN="\[\e[1;32m\]" + if [[ $EUID == 0 ]] ; then + PS1="$RED\u [ $NORMAL\w$RED ]# $NORMAL" + else + PS1="$GREEN\u [ $NORMAL\w$GREEN ]\$ $NORMAL" + fi + unset RED GREEN NORMAL +# End /etc/bashrc +EOF +cat > %{buildroot}/etc/vimrc <<- "EOF" + " Begin .vimrc + set columns=80 + set wrapmargin=8 + set ruler + " End .vimrc +EOF +cat > %{buildroot}/etc/skel/.vimrc <<- "EOF" + " Begin .vimrc + set columns=80 + set wrapmargin=8 + set ruler + " End .vimrc +EOF +cat > %{buildroot}/etc/skel/.bash_profile <<- "EOF" +# Begin ~/.bash_profile +# Written for Beyond Linux From Scratch +# by James Robertson +# updated by Bruce Dubbs + +# Personal environment variables and startup programs. + +# Personal aliases and functions should go in ~/.bashrc. System wide +# environment variables and startup programs are in /etc/profile. +# System wide aliases and functions are in /etc/bashrc. + if [ -f "$HOME/.bashrc" ] ; then + source $HOME/.bashrc + fi + if [ -d "$HOME/bin" ] ; then + pathprepend $HOME/bin + fi +# Having . in the PATH is dangerous +#if [ $EUID -gt 99 ]; then +# pathappend . +#fi +# End ~/.bash_profile +EOF +cat > %{buildroot}/etc/skel/.profile <<- "EOF" +# Begin ~/.profile +# Personal environment variables and startup programs. + + if [ -d "$HOME/bin" ] ; then + pathprepend $HOME/bin + fi + +# Set up user specific i18n variables +#export LANG=_.<@modifiers> + +# End ~/.profile +EOF +cat > %{buildroot}/etc/skel/.bashrc <<- "EOF" +# Begin ~/.bashrc +# Written for Beyond Linux From Scratch +# by James Robertson + +# Personal aliases and functions. + +# Personal environment variables and startup programs should go in +# ~/.bash_profile. System wide environment variables and startup +# programs are in /etc/profile. System wide aliases and functions are +# in /etc/bashrc. + if [ -f "/etc/bashrc" ] ; then + source /etc/bashrc + fi +# Set up user specific i18n variables +#export LANG=_.<@modifiers> +# End ~/.bashrc +EOF +cat > %{buildroot}/etc/skel/.bash_logout <<- "EOF" +# Begin ~/.bash_logout +# Written for Beyond Linux From Scratch +# by James Robertson + +# Personal items to perform on logout. + +# End ~/.bash_logout +EOF +#---------------------------------------------------------------------------- +%files + %defattr(-,root,root) + %attr(600,root,root) /var/log/btmp + %attr(664,root,utmp) /var/log/lastlog + %attr(-,root,root) /var/log/wtmp + %attr(750,root,root) /root + %attr(1777,root,root) /tmp + %attr(1777,root,root) /var/tmp +# Directories + %dir /home + %dir /mnt + %dir /boot + %dir /var + %dir /var/log + %dir /var/mail + %dir /var/local + %dir /var/spool + %dir /var/cache + %dir /var/lib + %dir /var/lib/locate + %dir /var/lib/hwclock + %dir /var/lib/misc + %dir /var/lib/color + %dir /var/opt + %dir /etc +# /etc init script directories + %dir /etc/rc.d + %dir /etc/rc.d/init.d + %dir /etc/rc.d/rc0.d + %dir /etc/rc.d/rc1.d + %dir /etc/rc.d/rc2.d + %dir /etc/rc.d/rc3.d + %dir /etc/rc.d/rc4.d + %dir /etc/rc.d/rc5.d + %dir /etc/rc.d/rc6.d + %dir /etc/rc.d/rc7.d + /etc/rc.d/rcS.d + %dir /etc/sysconfig + %dir /etc/ld.so.conf.d + %dir /etc/opt + %dir /etc/profile.d + %dir /lib64 + %dir /usr + %dir /usr/src + %dir /usr/local + %dir /usr/local/src + %dir /usr/local/bin + %dir /usr/local/sbin + %dir /usr/local/lib + %dir /usr/local/share + %dir /usr/local/share/misc + %dir /usr/local/share/terminfo + %dir /usr/local/share/doc + %dir /usr/local/share/zoneinfo + %dir /usr/local/share/man + %dir /usr/local/share/man/man3 + %dir /usr/local/share/man/man4 + %dir /usr/local/share/man/man7 + %dir /usr/local/share/man/man1 + %dir /usr/local/share/man/man6 + %dir /usr/local/share/man/man8 + %dir /usr/local/share/man/man5 + %dir /usr/local/share/man/man2 + %dir /usr/local/share/locale + %dir /usr/local/share/dict + %dir /usr/local/share/color + %dir /usr/local/share/info + %dir /usr/local/include + %dir /usr/bin + %dir /usr/sbin + %dir /usr/lib + %dir /usr/libexec + %dir /usr/share + %dir /usr/share/misc + %dir /usr/share/terminfo + %dir /usr/share/doc + %dir /usr/share/zoneinfo + %dir /usr/share/man + %dir /usr/share/man/man3 + %dir /usr/share/man/man4 + %dir /usr/share/man/man7 + %dir /usr/share/man/man1 + %dir /usr/share/man/man6 + %dir /usr/share/man/man8 + %dir /usr/share/man/man5 + %dir /usr/share/man/man2 + %dir /usr/share/locale + %dir /usr/share/dict + %dir /usr/share/color + %dir /usr/share/info + %dir /usr/include + %dir /bin + %dir /media + %dir /media/floppy + %dir /media/cdrom + %dir /sbin + %dir /srv + %dir /lib + %dir /lib/firmware + %dir /dev + %dir /opt + %dir /sys + %dir /proc + %dir /run +# Files + %config(noreplace) /etc/group + %config(noreplace) /etc/passwd + %config(noreplace) /etc/fstab + %config(noreplace) /etc/hostname + %config(noreplace) /etc/hosts + %config(noreplace) /etc/inittab + %config(noreplace) /etc/inputrc + %config(noreplace) /etc/lfs-release + %config(noreplace) /etc/lsb-release + %config(noreplace) /etc/modprobe.d/usb.conf + %config(noreplace) /etc/resolv.conf + %config(noreplace) /etc/shells + %config(noreplace) /etc/sysconfig/clock + %config(noreplace) /etc/sysconfig/ifconfig.eth0 + %config(noreplace) /etc/mtab + %config(noreplace) /var/log/faillog + %config(noreplace) /var/lock + %config(noreplace) /var/run +#----------------------------------------------------------------------------- +# BLFS scripts - About System Users and Groups +#----------------------------------------------------------------------------- + %config(noreplace) /etc/bashrc + %config(noreplace) /etc/profile + %config(noreplace) /etc/vimrc + %config(noreplace) /etc/profile.d/bash_completion.sh + %config(noreplace) /etc/profile.d/dircolors.sh + %config(noreplace) /etc/profile.d/extrapaths.sh + %config(noreplace) /etc/profile.d/i18n.sh + %config(noreplace) /etc/profile.d/readline.sh + %config(noreplace) /etc/profile.d/umask.sh + %config(noreplace) /etc/skel/.bash_logout + %config(noreplace) /etc/skel/.bash_profile + %config(noreplace) /etc/skel/.bashrc + %config(noreplace) /etc/skel/.profile + %config(noreplace) /etc/skel/.vimrc +#----------------------------------------------------------------------------- +%changelog +* Thu Mar 14 2019 baho-utot 8.4-1 +* Sun Oct 28 2018 baho-utot 8.2-1 +* Tue Dec 12 2017 baho-utot 8.1-1 +- Update to LFS-8.1 +* Tue Jun 17 2014 baho-utot 7.5-1 +* Fri Apr 19 2013 baho-utot 20130401-1 +- Upgrade version diff --git a/SPECS/findutils.spec b/SPECS/findutils.spec new file mode 100644 index 0000000..958ee6e --- /dev/null +++ b/SPECS/findutils.spec @@ -0,0 +1,57 @@ +#TARBALL: http://ftp.gnu.org/gnu/findutils/findutils-4.6.0.tar.gz +#MD5SUM: 9936aa8009438ce185bea2694a997fc1;SOURCES/findutils-4.6.0.tar.gz +#----------------------------------------------------------------------------- +Summary: The Findutils package contains programs to find files. +Name: findutils +Version: 4.6.0 +Release: 1 +License: Any +URL: Any +Group: LFS/Base +Vendor: Elizabeth +Source0: http://ftp.gnu.org/gnu/findutils/%{name}-%{version}.tar.gz +Requires: filesystem +%description +The Findutils package contains programs to find files. These programs +are provided to recursively search through a directory tree and to +create, maintain, and search a database (often faster than the recursive +find, but unreliable if the database has not been recently updated). +#----------------------------------------------------------------------------- +%prep +%setup -q -n %{NAME}-%{VERSION} +sed -i 's/test-lock..EXEEXT.//' tests/Makefile.in +sed -i 's/IO_ftrylockfile/IO_EOF_SEEN/' gl/lib/*.c +sed -i '/unistd/a #include ' gl/lib/mountlist.c +echo "#define _IO_IN_BACKUP 0x100" >> gl/lib/stdio-impl.h +%build + ./configure \ + --prefix=%{_prefix} \ + --localstatedir=%{_localstatedir}/lib/locate + make %{?_smp_mflags} +%install + make DESTDIR=%{buildroot} install + install -vdm 755 %{buildroot}/bin + mv -v %{buildroot}%{_bindir}/find %{buildroot}/bin + sed -i 's|find:=${BINDIR}|find:=/bin|' %{buildroot}%{_bindir}/updatedb +#----------------------------------------------------------------------------- +# Copy license/copying file + install -D -m644 COPYING %{buildroot}/usr/share/licenses/%{name}/LICENSE +#----------------------------------------------------------------------------- +# Create file list + rm %{buildroot}%{_infodir}/dir + find %{buildroot} -name '*.la' -delete + find "${RPM_BUILD_ROOT}" -not -type d -print > filelist.rpm + sed -i "s|^${RPM_BUILD_ROOT}||" filelist.rpm + sed -i '/man\/man/d' filelist.rpm + sed -i '/\/usr\/share\/info/d' filelist.rpm +#----------------------------------------------------------------------------- +%files -f filelist.rpm + %defattr(-,root,root) + %{_infodir}/*.gz + %{_mandir}/man1/*.gz + %{_mandir}/man5/*.gz + %dir %{_localstatedir}/lib/locate +#----------------------------------------------------------------------------- +%changelog +* Tue Jan 09 2018 baho-utot 4.6.0-1 +- Initial build. First version diff --git a/SPECS/firmware-amd-ucode.spec b/SPECS/firmware-amd-ucode.spec new file mode 100644 index 0000000..2482d91 --- /dev/null +++ b/SPECS/firmware-amd-ucode.spec @@ -0,0 +1,60 @@ +#MD5SUM: dd92e77d72097f89a7c28eeb121cd62e;SOURCES/firmware-amd-ucode-1.00.tar.gz +#----------------------------------------------------------------------------- +Summary: Firmware for amd processors +Name: firmware-amd-ucode +Version: 2019.05.22 +Release: 1 +License: Any +URL: Any +Group: LFS/Base +Vendor: Elizabeth +Source: %{name}-%{version}.tar.gz +Requires: filesystem +%description +Firmware for amd processors +#----------------------------------------------------------------------------- +%prep +%build + cd %{_builddir} + tar xf %{_sourcedir}/%{name}-%{version}.tar.gz + install -vdm 755 %{buildroot}/boot +# AMD family 21 - 15h + install -vdm 755 fam15h/kernel/x86/microcode + cp -var amd-ucode/microcode_amd_fam15h.bin fam15h/kernel/x86/microcode/AuthenticAMD.bin + pushd fam15h + find . | cpio -o -H newc > %{buildroot}/boot/microcode_amd_fam15h.img + popd +# AMD family 22 - 16h + install -vdm 755 fam16h/kernel/x86/microcode + cp -var amd-ucode/microcode_amd_fam16h.bin fam16h/kernel/x86/microcode/AuthenticAMD.bin + pushd fam16h + find . | cpio -o -H newc > %{buildroot}/boot/microcode_amd_fam16h.img + popd +# AMD family 23 - 17h + install -vdm 755 fam17h/kernel/x86/microcode + cp -var amd-ucode/microcode_amd_fam17h.bin fam17h/kernel/x86/microcode/AuthenticAMD.bin + pushd fam17h + find . | cpio -o -H newc > %{buildroot}/boot/microcode_amd_fam17h.img + popd +%install + ls %{buildroot}/boot +#----------------------------------------------------------------------------- +# Copy license/copying file +# install -D -m644 %{_builddir}/LICENSE.radeon %{buildroot}/usr/share/licenses/%{name}/LICENSE +#----------------------------------------------------------------------------- +# Create file list +# rm %{buildroot}%{_infodir}/dir +# find %{buildroot} -name '*.la' -delete + find "${RPM_BUILD_ROOT}" -not -type d -print > filelist.rpm + sed -i "s|^${RPM_BUILD_ROOT}||" filelist.rpm +# sed -i '/man\/man/d' filelist.rpm +# sed -i '/\/usr\/share\/info/d' filelist.rpm +#----------------------------------------------------------------------------- +%files -f filelist.rpm + %defattr(-,root,root) +# %%{_infodir}/*.gz +# %%{_mandir}/man1/*.gz +#----------------------------------------------------------------------------- +%changelog +* Sun Jul 29 2018 baho-utot 1.00-1 +- Initial build. First version diff --git a/SPECS/firmware-radeon.spec b/SPECS/firmware-radeon.spec new file mode 100644 index 0000000..0abc0ae --- /dev/null +++ b/SPECS/firmware-radeon.spec @@ -0,0 +1,42 @@ +#MD5SUM: 55e7c8cf8bca4fbb738be885266a2dc4;SOURCES/firmware-radeon-1.00.tar.gz +#----------------------------------------------------------------------------- +Summary: Firmware for radeon graphics cards +Name: firmware-radeon +Version: 1.00 +Release: 1 +License: Any +URL: Any +Group: LFS/Base +Vendor: Elizabeth +Source: %{name}-%{version}.tar.gz +Requires: filesystem +%description +Firmware for radeon graphics cards +#----------------------------------------------------------------------------- +%prep +%build + cd %{_builddir} + tar xzf %{_sourcedir}/%{name}-%{version}.tar.gz +%install + install -vdm 755 %{buildroot}/lib/firmware/radeon + cp -var %{_builddir}/radeon/* %{buildroot}/lib/firmware/radeon +#----------------------------------------------------------------------------- +# Copy license/copying file + install -D -m644 %{_builddir}/LICENSE.radeon %{buildroot}/usr/share/licenses/%{name}/LICENSE +#----------------------------------------------------------------------------- +# Create file list +# rm %{buildroot}%{_infodir}/dir +# find %{buildroot} -name '*.la' -delete + find "${RPM_BUILD_ROOT}" -not -type d -print > filelist.rpm + sed -i "s|^${RPM_BUILD_ROOT}||" filelist.rpm +# sed -i '/man\/man/d' filelist.rpm +# sed -i '/\/usr\/share\/info/d' filelist.rpm +#----------------------------------------------------------------------------- +%files -f filelist.rpm + %defattr(-,root,root) +# %%{_infodir}/*.gz +# %%{_mandir}/man1/*.gz +#----------------------------------------------------------------------------- +%changelog +* Sun Jul 29 2018 baho-utot 1.00-1 +- Initial build. First version diff --git a/SPECS/firmware-realtek.spec b/SPECS/firmware-realtek.spec new file mode 100644 index 0000000..6ffcadf --- /dev/null +++ b/SPECS/firmware-realtek.spec @@ -0,0 +1,42 @@ +#MD5SUM: ca0739ca20bd48a6bbfb31c1778e2469;SOURCES/firmware-realtek-1.00.tar.gz +#----------------------------------------------------------------------------- +Summary: Firmware for realtek network cards +Name: firmware-realtek +Version: 1.00 +Release: 1 +License: Any +URL: Any +Group: LFS/Base +Vendor: Elizabeth +Source: %{name}-%{version}.tar.gz +Requires: filesystem +%description +Firmware for realtek network cards +#----------------------------------------------------------------------------- +%prep +%build + cd %{_builddir} + tar xzf %{_sourcedir}/%{name}-%{version}.tar.gz +%install + install -vdm 755 %{buildroot}/lib/firmware/rtl_nic + cp -var %{_builddir}/rtl_nic/* %{buildroot}/lib/firmware/rtl_nic +#----------------------------------------------------------------------------- +# Copy license/copying file +# install -D -m644 %{_builddir}/LICENSE.realtek %{buildroot}/usr/share/licenses/%{name}/LICENSE +#----------------------------------------------------------------------------- +# Create file list +# rm %{buildroot}%{_infodir}/dir +# find %{buildroot} -name '*.la' -delete + find "${RPM_BUILD_ROOT}" -not -type d -print > filelist.rpm + sed -i "s|^${RPM_BUILD_ROOT}||" filelist.rpm +# sed -i '/man\/man/d' filelist.rpm +# sed -i '/\/usr\/share\/info/d' filelist.rpm +#----------------------------------------------------------------------------- +%files -f filelist.rpm + %defattr(-,root,root) +# %%{_infodir}/*.gz +# %%{_mandir}/man1/*.gz +#----------------------------------------------------------------------------- +%changelog +* Sun Jul 29 2018 baho-utot 1.00-1 +- Initial build. First version diff --git a/SPECS/flex.spec b/SPECS/flex.spec new file mode 100644 index 0000000..1f7d80b --- /dev/null +++ b/SPECS/flex.spec @@ -0,0 +1,48 @@ +#TARBALL: https://github.com/westes/flex/releases/download/v2.6.4/flex-2.6.4.tar.gz +#MD5SUM: 2882e3179748cc9f9c23ec593d6adc8d;SOURCES/flex-2.6.4.tar.gz +#----------------------------------------------------------------------------- +Summary: The Flex package contains a utility for generating programs that recognize patterns in text. +Name: flex +Version: 2.6.4 +Release: 1 +License: BSD +URL: Any +Group: LFS/Base +Vendor: Elizabeth +Source0: https://github.com/westes/flex/releases/download/v2.6.4/%{name}-%{version}.tar.gz +Requires: filesystem +%description +The Flex package contains a utility for generating programs that recognize patterns in text. +#----------------------------------------------------------------------------- +%prep +%setup -q -n %{NAME}-%{VERSION} + sed -i "/math.h/a #include " src/flexdef.h +%build + HELP2MAN=/tools/bin/true \ + ./configure \ + --prefix=%{_prefix} \ + --docdir=%{_docdir}/%{name}-%{version} + make %{?_smp_mflags} +%install + make DESTDIR=%{buildroot} install + ln -sv flex %{buildroot}%{_bindir}/lex +#----------------------------------------------------------------------------- +# Copy license/copying file + install -D -m644 COPYING %{buildroot}/usr/share/licenses/%{name}/LICENSE +#----------------------------------------------------------------------------- +# Create file list + rm %{buildroot}%{_infodir}/dir + find %{buildroot} -name '*.la' -delete + find "${RPM_BUILD_ROOT}" -not -type d -print > filelist.rpm + sed -i "s|^${RPM_BUILD_ROOT}||" filelist.rpm + sed -i '/man\/man/d' filelist.rpm + sed -i '/\/usr\/share\/info/d' filelist.rpm +#----------------------------------------------------------------------------- +%files -f filelist.rpm + %defattr(-,root,root) + %{_infodir}/*.gz + %{_mandir}/man1/*.gz +#----------------------------------------------------------------------------- +%changelog +* Tue Jan 09 2018 baho-utot 2.6.4-1 +- Initial build. First version diff --git a/SPECS/gawk.spec b/SPECS/gawk.spec new file mode 100644 index 0000000..cac0b4b --- /dev/null +++ b/SPECS/gawk.spec @@ -0,0 +1,49 @@ +#TARBALL: http://ftp.gnu.org/gnu/gawk/gawk-4.2.1.tar.xz +#MD5SUM: 95cf553f50ec9f386b5dfcd67f30180a;SOURCES/gawk-4.2.1.tar.xz +#----------------------------------------------------------------------------- +Summary: The Gawk package contains programs for manipulating text files. +Name: gawk +Version: 4.2.1 +Release: 1 +License: GPLv3 +URL: Any +Group: LFS/Base +Vendor: Elizabeth +Source0: http://ftp.gnu.org/gnu/gawk/%{name}-%{version}.tar.xz +Requires: filesystem +%description +The Gawk package contains programs for manipulating text files. +#----------------------------------------------------------------------------- +%prep +%setup -q -n %{NAME}-%{VERSION} + sed -i 's/extras//' Makefile.in +%build + ./configure --prefix=%{_prefix} + make %{?_smp_mflags} +%install + make DESTDIR=%{buildroot} install + install -vdm 755 %{buildroot}%{_docdir}/%{NAME}-%{VERSION} + cp -v doc/{awkforai.txt,*.{eps,pdf,jpg}} %{buildroot}%{_docdir}/%{NAME}-%{VERSION} +#----------------------------------------------------------------------------- +# Copy license/copying file + install -D -m644 COPYING %{buildroot}/usr/share/licenses/%{name}/LICENSE +#----------------------------------------------------------------------------- +# Create file list + rm %{buildroot}%{_infodir}/dir + find %{buildroot} -name '*.la' -delete + find "${RPM_BUILD_ROOT}" -not -type d -print > filelist.rpm + sed -i "s|^${RPM_BUILD_ROOT}||" filelist.rpm + sed -i '/man\/man/d' filelist.rpm + sed -i '/\/usr\/share\/info/d' filelist.rpm +#----------------------------------------------------------------------------- +%files -f filelist.rpm + %defattr(-,root,root) + %{_infodir}/*.gz + %{_mandir}/man1/*.gz + %{_mandir}/man3/*.gz +#----------------------------------------------------------------------------- +%changelog +* Sat Apr 06 2019 baho-utot 4.2.1-1 +- LFS-8.4 +* Tue Jan 09 2018 baho-utot 4.2.0-1 +- Initial build. First version diff --git a/SPECS/gcc.spec b/SPECS/gcc.spec new file mode 100644 index 0000000..8f18aa0 --- /dev/null +++ b/SPECS/gcc.spec @@ -0,0 +1,71 @@ +#TARBALL: +#MD5SUM: ;SOURCES/gcc-8.2.0.tar.xz +#----------------------------------------------------------------------------- +Summary: The GCC package contains the GNU compiler collection +Name: gcc +Version: 8.2.0 +Release: 1 +License: GPLv2 +URL: Any +Group: LFS/Base +Vendor: Elizabeth +Source0: http://ftp.gnu.org/gnu/%{name}/%{name}-%{version}/%{name}-%{version}.tar.xz +Provides: libgcc_s.so.1()(64bit) +Provides: libgcc_s.so.1(GCC_3.0)(64bit) +Provides: libgcc_s.so.1(GCC_3.3)(64bit) +Provides: libgcc_s.so.1(GCC_4.2.0)(64bit) +Requires: filesystem +%description +The GCC package contains the GNU compiler collection, which includes the C and C++ compilers. +#----------------------------------------------------------------------------- +%prep +%setup -q -n %{NAME}-%{VERSION} + sed -e '/m64=/s/lib64/lib/' -i.orig gcc/config/i386/t-linux64 + [ -h /usr/lib/gcc ] && rm -f /usr/lib/gcc + [ -d /usr/lib/gcc ] && rm -rf /usr/lib/gcc + mkdir build +%build + cd build + SED=sed \ + ../configure \ + --prefix=%{_prefix} \ + --enable-languages=c,c++ \ + --disable-multilib \ + --disable-bootstrap \ + --disable-libmpx \ + --with-system-zlib + make %{?_smp_mflags} +%install + cd build + make DESTDIR=%{buildroot} install + install -vdm 755 %{buildroot}/lib + ln -sv ..%{_bindir}/cpp %{buildroot}/lib + install -vdm 755 %{buildroot}%{_bindir} + ln -sv gcc %{buildroot}%{_bindir}/cc + install -vdm 755 %{buildroot}%{_libdir}/bfd-plugins + ln -sfv ../../libexec/gcc/$(gcc -dumpmachine)/%{version}/liblto_plugin.so %{buildroot}%{_libdir}/bfd-plugins/ + cd - + install -vdm 755 %{buildroot}/usr/share/gdb/auto-load/usr/lib + mv -v %{buildroot}/usr/lib/*gdb.py %{buildroot}/usr/share/gdb/auto-load/usr/lib +#----------------------------------------------------------------------------- +# Copy license/copying file + install -D -m644 COPYING %{buildroot}/usr/share/licenses/%{name}/LICENSE +#----------------------------------------------------------------------------- +# Create file list + rm %{buildroot}%{_infodir}/dir + find %{buildroot} -name '*.la' -delete + find "${RPM_BUILD_ROOT}" -not -type d -print > filelist.rpm + sed -i "s|^${RPM_BUILD_ROOT}||" filelist.rpm + sed -i '/man\/man/d' filelist.rpm + sed -i '/\/usr\/share\/info/d' filelist.rpm +#----------------------------------------------------------------------------- +%files -f filelist.rpm + %defattr(-,root,root) + %{_infodir}/*.gz + %{_mandir}/man1/*.gz + %{_mandir}/man7/*.gz +#----------------------------------------------------------------------------- +%changelog +* Tue Mar 26 2019 baho-utot 8.2.0-1 +* Tue Jan 09 2018 baho-utot 7.3.0-1 +- Initial build. First version diff --git a/SPECS/gdbm.spec b/SPECS/gdbm.spec new file mode 100644 index 0000000..fdae419 --- /dev/null +++ b/SPECS/gdbm.spec @@ -0,0 +1,52 @@ +#TARBALL: http://ftp.gnu.org/gnu/gdbm/gdbm-1.18.1.tar.gz +#MD5SUM: 988dc82182121c7570e0cb8b4fcd5415;SOURCES/gdbm-1.18.1.tar.gz +#----------------------------------------------------------------------------- +Summary: The GDBM package contains the GNU Database Manager +Name: gdbm +Version: 1.18.1 +Release: 1 +License: GPLv3 +URL: Any +Group: LFS/Base +Vendor: Elizabeth +Source0: http://ftp.gnu.org/gnu/gdbm/%{name}-%{version}.tar.gz +Requires: filesystem +%description +The GDBM package contains the GNU Database Manager. It is a library of database +functions that use extensible hashing and work similar to the standard UNIX dbm. +The library provides primitives for storing key/data pairs, searching and +retrieving the data by its key and deleting a key along with its data. +#----------------------------------------------------------------------------- +%prep +%setup -q -n %{NAME}-%{VERSION} +%build + ./configure \ + --prefix=%{_prefix} \ + --disable-static \ + --enable-libgdbm-compat + make %{?_smp_mflags} +%install + make DESTDIR=%{buildroot} install +#----------------------------------------------------------------------------- +# Copy license/copying file + install -D -m644 COPYING %{buildroot}/usr/share/licenses/%{name}/LICENSE +#----------------------------------------------------------------------------- +# Create file list + rm %{buildroot}%{_infodir}/dir + find %{buildroot} -name '*.la' -delete + find "${RPM_BUILD_ROOT}" -not -type d -print > filelist.rpm + sed -i "s|^${RPM_BUILD_ROOT}||" filelist.rpm + sed -i '/man\/man/d' filelist.rpm + sed -i '/\/usr\/share\/info/d' filelist.rpm +#----------------------------------------------------------------------------- +%files -f filelist.rpm + %defattr(-,root,root) + %{_infodir}/*.gz + %{_mandir}/man1/*.gz + %{_mandir}/man3/*.gz +#----------------------------------------------------------------------------- +%changelog +* Fri Apr 05 2019 baho-utot 1.18.1-1 +- Update for LFS-8.4 +* Tue Jan 09 2018 baho-utot 1.14.1-1 +- Initial build. First version diff --git a/SPECS/gettext.spec b/SPECS/gettext.spec new file mode 100644 index 0000000..cb7e08f --- /dev/null +++ b/SPECS/gettext.spec @@ -0,0 +1,53 @@ +#TARBALL: http://ftp.gnu.org/gnu/gettext/gettext-0.19.8.1.tar.xz +#MD5SUM: df3f5690eaa30fd228537b00cb7b7590;SOURCES/gettext-0.19.8.1.tar.xz +#----------------------------------------------------------------------------- +Summary: The Gettext package contains utilities for internationalization and localization. +Name: gettext +Version: 0.19.8.1 +Release: 1 +License: GPLv3 +URL: Any +Group: LFS/Base +Vendor: Elizabeth +Source0: http://ftp.gnu.org/gnu/gettext/%{name}-%{version}.tar.xz +Requires: filesystem +%description +The Gettext package contains utilities for internationalization and localization. +These allow programs to be compiled with NLS (Native Language Support), enabling +them to output messages in the user's native language. +#----------------------------------------------------------------------------- +%prep +%setup -q -n %{NAME}-%{VERSION} + sed -i '/^TESTS =/d' gettext-runtime/tests/Makefile.in + sed -i 's/test-lock..EXEEXT.//' gettext-tools/gnulib-tests/Makefile.in +%build + ./configure \ + --prefix=%{_prefix} \ + --disable-static \ + --docdir=/usr/share/doc/%{NAME}-%{VERSION} + make %{?_smp_mflags} +%install + make DESTDIR=%{buildroot} install + chmod -v 0755 %{buildroot}%{_libdir}/preloadable_libintl.so + rm -rf %{buildroot}%{_docdir}/%{NAME}-%{VERSION} +#----------------------------------------------------------------------------- +# Copy license/copying file + install -D -m644 COPYING %{buildroot}/usr/share/licenses/%{name}/LICENSE +#----------------------------------------------------------------------------- +# Create file list + rm %{buildroot}%{_infodir}/dir + find %{buildroot} -name '*.la' -delete + find "${RPM_BUILD_ROOT}" -not -type d -print > filelist.rpm + sed -i "s|^${RPM_BUILD_ROOT}||" filelist.rpm + sed -i '/man\/man/d' filelist.rpm + sed -i '/\/usr\/share\/info/d' filelist.rpm +#----------------------------------------------------------------------------- +%files -f filelist.rpm + %defattr(-,root,root) + %{_infodir}/*.gz + %{_mandir}/man1/*.gz + %{_mandir}/man3/*.gz +#----------------------------------------------------------------------------- +%changelog +* Tue Jan 09 2018 baho-utot 0.19.8.1-1 +- Initial build. First version diff --git a/SPECS/glibc.spec b/SPECS/glibc.spec new file mode 100644 index 0000000..b8a4b55 --- /dev/null +++ b/SPECS/glibc.spec @@ -0,0 +1,167 @@ +# %%global _default_patch_fuzz 2 +%define GCC_INCDIR GCC_INCDIR=/usr/lib/gcc/x86_64-pc-linux-gnu/8.2.0/include +#TARBALL: http://ftp.gnu.org/gnu/glibc/glibc-2.29.tar.xz +#MD5SUM: e6c279d5b2f0736f740216f152acf974;SOURCES/glibc-2.29.tar.xz +#TARBALL: http://www.linuxfromscratch.org/patches/lfs/8.4/glibc-2.29-fhs-1.patch +#MD5SUM: 9a5997c3452909b1769918c759eff8a2;SOURCES/glibc-2.29-fhs-1.patch +#----------------------------------------------------------------------------- +Summary: Main C library +Name: glibc +Version: 2.29 +Release: 1 +License: GPLv2 +URL: http://www.gnu.org/software/libc +Group: LFS/Base +Vendor: Elizabeth +Source0: http://ftp.gnu.org/gnu/glibc/%{name}-%{version}.tar.xz +Source1: locale-gen +Patch0: glibc-%{version}-fhs-1.patch +Requires: filesystem +%description +This library provides the basic routines for allocating memory, +searching directories, opening and closing files, reading and +writing files, string handling, pattern matching, arithmetic, +and so on. +#----------------------------------------------------------------------------- +%prep +%setup -q _T -b 0 -n %{NAME}-%{VERSION} +%patch0 -p1 + mkdir -v build +%build + cd build + CC='gcc -isystem %{GCC_INCDIR} -isystem /usr/include' \ + ../configure --prefix=%{_prefix} \ + --disable-werror \ + --enable-kernel=3.2 \ + --enable-stack-protector=strong \ + libc_cv_slibdir=/lib + make PARALLELMFLAGS=" %{_smp_mflags} " +# make %{_smp_mflags} +%install + cd build +# touch /etc/ld.so.conf - already installed by filesystem +# sed '/test-installation/s@$(PERL)@echo not running@' -i ../Makefile - not needed + make install_root=%{buildroot} install +# add symlinks + install -vdm 755 %{buildroot}/lib64 + ln -sfv ../lib/ld-linux-x86-64.so.2 %{buildroot}/lib64 + ln -sfv ../lib/ld-linux-x86-64.so.2 %{buildroot}/lib64/ld-lsb-x86-64.so.3 +# Create directories + install -vdm 755 %{buildroot}/etc + install -vdm 755 %{buildroot}/sbin +# Install the configuration file and runtime directory for nscd: + install -vDm 644 ../nscd/nscd.conf %{buildroot}/etc/nscd.conf + install -vdm 755 %{buildroot}/var/cache/nscd + cd - +#----------------------------------------------------------------------------- +# 6.9.2.1. Adding nsswitch.conf +#----------------------------------------------------------------------------- +cat > %{buildroot}/etc/nsswitch.conf <<- EOF +# Begin /etc/nsswitch.conf + passwd: files + group: files + shadow: files + + hosts: files dns + networks: files + + protocols: files + services: files + ethers: files + rpc: files + +# End /etc/nsswitch.conf +EOF +#----------------------------------------------------------------------------- +# 6.9.2.3. Configuring the Dynamic Loader +#----------------------------------------------------------------------------- +cat > %{buildroot}/etc/ld.so.conf <<- EOF +# Begin /etc/ld.so.conf + /usr/local/lib + /opt/lib +# Add an include directory + include /etc/ld.so.conf.d/*.conf +EOF +#----------------------------------------------------------------------------- +# Install locale generation script and config file +#----------------------------------------------------------------------------- +install -vdm 755 %{buildroot}/sbin +install -vdm 755 %{buildroot}/usr/lib/locale +cp %{_sourcedir}/locale-gen %{buildroot}/sbin/locale-gen +chmod 755 %{buildroot}/sbin/locale-gen +cat > %{buildroot}/etc/locale-gen.conf << EOF +# Configuration file for locale-gen +# +# lists of locales that are to be generated by the locale-gen command. +# +# Each line is of the form: +# +# # +# +# where is one of the locales given in /usr/share/i18n/locales +# and is one of the character sets listed in /usr/share/i18n/charmaps +# and is tyhe name of the resulting locale +# +# The locale-gen command will generate all the locales, +# placing them in /usr/lib/locale. +# +# A list of supported locales is included in this file. +# +# localedef -i POSIX -f UTF-8 C.UTF-8 2> /dev/null || true +# localedef [-f charmapfile] [-i inputfile] [--force] [--verbose] [--posix] [--quiet] outputpath +# +# Each line is of the form: +# +POSIX UTF-8 C.UTF-8 +cs_CZ UTF-8 cs_CZ.UTF-8 +de_DE ISO-8859-1 de_DE +de_DE@euro ISO-8859-15 de_DE@euro +de_DE UTF-8 de_DE.UTF-8 +el_GR ISO-8859-7 el_GR +en_GB UTF-8 en_GB.UTF-8 +en_HK ISO-8859-1 en_HK +en_PH ISO-8859-1 en_PH +en_US ISO-8859-1 en_US +en_US UTF-8 en_US.UTF-8 +es_MX ISO-8859-1 es_MX +fa_IR UTF-8 fa_IR +fr_FR ISO-8859-1 fr_FR +fr_FR@euro ISO-8859-15 fr_FR@euro +fr_FR UTF-8 fr_FR.UTF-8 +it_IT ISO-8859-1 it_IT +it_IT UTF-8 it_IT.UTF-8 +ja_JP EUC-JP ja_JP +ja_JP SHIFT_JIS ja_JP.SIJS +ja_JP UTF-8 ja_JP.UTF-8 +ru_RU KOI8-R ru_RU.KOI8-R +ru_RU UTF-8 ru_RU.UTF-8 +tr_TR UTF-8 tr_TR.UTF-8 +zh_CN GB18030 zh_CN.GB18030 +zh_HK BIG5-HKSCS zh_HK.BIG5-HKSCS +EOF +#----------------------------------------------------------------------------- +# Copy license/copying file + install -D -m644 LICENSES %{buildroot}/usr/share/licenses/%{name}/LICENSE +#----------------------------------------------------------------------------- +# Create file list + rm %{buildroot}%{_infodir}/dir + find %{buildroot} -name '*.la' -delete + find "${RPM_BUILD_ROOT}" -not -type d -print > filelist.rpm + sed -i "s|^${RPM_BUILD_ROOT}||" filelist.rpm + sed -i '/man\/man/d' filelist.rpm + sed -i '/\/usr\/share\/info/d' filelist.rpm +#----------------------------------------------------------------------------- +%files -f filelist.rpm + %defattr(-,root,root) + %{_infodir}/libc.* +#----------------------------------------------------------------------------- +%changelog +* Fri Mar 15 2019 baho-utot 2.29-1 +* Mon Mar 19 2018 baho-utot 2.27-1 +* Wed Dec 20 2017 baho-utot 2.26-1 +* Sat Mar 22 2014 baho-utot 2.19-1 +* Sun Sep 01 2013 baho-utot 2.18-2 +* Sat Aug 24 2013 baho-utot 2.18-1 +* Sun Mar 24 2013 baho-utot 2.17-1 +* Wed Jan 30 2013 baho-utot 2.16-1 +- Initial version diff --git a/SPECS/gmp.spec b/SPECS/gmp.spec new file mode 100644 index 0000000..0e0340b --- /dev/null +++ b/SPECS/gmp.spec @@ -0,0 +1,49 @@ +#TARBALL: http://ftp.gnu.org/gnu/gmp/gmp-6.1.2.tar.xz +#MD5SUM: f58fa8001d60c4c77595fbbb62b63c1d;SOURCES/gmp-6.1.2.tar.xz +#----------------------------------------------------------------------------- +Summary: The GMP package contains math libraries. +Name: gmp +Version: 6.1.2 +Release: 1 +License: GPLv3 +URL: Any +Group: LFS/Base +Vendor: Elizabeth +Source0: http://ftp.gnu.org/gnu/%{name}/%{name}-%{version}.tar.xz +Requires: filesystem +%description +The GMP package contains math libraries. These have useful functions for arbitrary precision arithmetic. +#----------------------------------------------------------------------------- +%prep +%setup -q -n %{NAME}-%{VERSION} + cp -v configfsf.guess config.guess + cp -v configfsf.sub config.sub +%build + ./configure --prefix=%{_prefix} \ + --enable-cxx \ + --disable-static \ + --docdir=%{_docdir}/%{NAME}-%{VERSION} + make %{?_smp_mflags} + make %{?_smp_mflags} html +%install + make DESTDIR=%{buildroot} install + make DESTDIR=%{buildroot} install-html +#----------------------------------------------------------------------------- +# Copy license/copying file + install -D -m644 COPYING %{buildroot}/usr/share/licenses/%{name}/LICENSE +#----------------------------------------------------------------------------- +# Create file list + rm %{buildroot}%{_infodir}/dir + find %{buildroot} -name '*.la' -delete + find "${RPM_BUILD_ROOT}" -not -type d -print > filelist.rpm + sed -i "s|^${RPM_BUILD_ROOT}||" filelist.rpm + sed -i '/man\/man/d' filelist.rpm + sed -i '/\/usr\/share\/info/d' filelist.rpm +#----------------------------------------------------------------------------- +%files -f filelist.rpm + %defattr(-,root,root) + %{_infodir}/*.gz +#----------------------------------------------------------------------------- +%changelog +* Tue Jan 09 2018 baho-utot 6.1.2-1 +- Initial build. First version diff --git a/SPECS/gperf.spec b/SPECS/gperf.spec new file mode 100644 index 0000000..df8f7b5 --- /dev/null +++ b/SPECS/gperf.spec @@ -0,0 +1,45 @@ +#TARBALL: http://ftp.gnu.org/gnu/gperf/gperf-3.1.tar.gz +#MD5SUM: 9e251c0a618ad0824b51117d5d9db87e;SOURCES/gperf-3.1.tar.gz +#----------------------------------------------------------------------------- +Summary: Gperf generates a perfect hash function from a key set. +Name: gperf +Version: 3.1 +Release: 1 +License: GPLv3 +URL: Any +Group: LFS/Base +Vendor: Elizabeth +Source0: http://ftp.gnu.org/gnu/gperf/%{name}-%{version}.tar.gz +Requires: filesystem +%description +Gperf generates a perfect hash function from a key set. +#----------------------------------------------------------------------------- +%prep +%setup -q -n %{NAME}-%{VERSION} +%build + ./configure \ + --prefix=%{_prefix} \ + --docdir=%{_docdir}/%{name}-%{version} + make %{?_smp_mflags} +%install + make DESTDIR=%{buildroot} install +#----------------------------------------------------------------------------- +# Copy license/copying file + install -D -m644 COPYING %{buildroot}/usr/share/licenses/%{name}/LICENSE +#----------------------------------------------------------------------------- +# Create file list +# rm %{buildroot}%{_infodir}/dir + find %{buildroot} -name '*.la' -delete + find "${RPM_BUILD_ROOT}" -not -type d -print > filelist.rpm + sed -i "s|^${RPM_BUILD_ROOT}||" filelist.rpm + sed -i '/man\/man/d' filelist.rpm + sed -i '/\/usr\/share\/info/d' filelist.rpm +#----------------------------------------------------------------------------- +%files -f filelist.rpm + %defattr(-,root,root) + %{_infodir}/*.gz + %{_mandir}/man1/*.gz +#----------------------------------------------------------------------------- +%changelog +* Tue Jan 09 2018 baho-utot 3.1-1 +- Initial build. First version diff --git a/SPECS/grep.spec b/SPECS/grep.spec new file mode 100644 index 0000000..a8c8af0 --- /dev/null +++ b/SPECS/grep.spec @@ -0,0 +1,48 @@ +#TARBALL: http://ftp.gnu.org/gnu/grep/grep-3.3.tar.xz +#MD5SUM: 05d0718a1b7cc706a4bdf8115363f1ed;SOURCES/grep-3.3.tar.xz +#----------------------------------------------------------------------------- +Summary: The Grep package contains programs for searching through files. +Name: grep +Version: 3.3 +Release: 1 +License: GPLv3 +URL: Any +Group: LFS/Base +Vendor: Elizabeth +Source0: http://ftp.gnu.org/gnu/%{name}/%{name}-%{version}.tar.xz +Requires: filesystem +%description +The Grep package contains programs for searching through files. +#----------------------------------------------------------------------------- +%prep +%setup -q -n %{NAME}-%{VERSION} +%build + ./configure \ + --prefix=%{_prefix} \ + --bindir=/bin + make %{?_smp_mflags} +%install + make DESTDIR=%{buildroot} install +#----------------------------------------------------------------------------- +# Copy license/copying file +# install -D -m644 COPYING %{buildroot}/usr/share/licenses/%{name}/LICENSE + install -D -m644 COPYING %{buildroot}/usr/share/licenses/%{name}/LICENSE +#----------------------------------------------------------------------------- +# Create file list + rm %{buildroot}%{_infodir}/dir + find %{buildroot} -name '*.la' -delete + find "${RPM_BUILD_ROOT}" -not -type d -print > filelist.rpm + sed -i "s|^${RPM_BUILD_ROOT}||" filelist.rpm + sed -i '/man\/man/d' filelist.rpm + sed -i '/\/usr\/share\/info/d' filelist.rpm +#----------------------------------------------------------------------------- +%files -f filelist.rpm + %defattr(-,root,root) + %{_infodir}/*.gz + %{_mandir}/man1/*.gz +#----------------------------------------------------------------------------- +%changelog +* Fri Apr 05 2019 baho-utot 3.3-1 +- Update for LFS-8.4 +* Tue Jan 09 2018 baho-utot 3.1-1 +- Initial build. First version diff --git a/SPECS/groff.spec b/SPECS/groff.spec new file mode 100644 index 0000000..74ecdb0 --- /dev/null +++ b/SPECS/groff.spec @@ -0,0 +1,51 @@ +#TARBALL: http://ftp.gnu.org/gnu/groff/groff-1.22.4.tar.gz +#MD5SUM: 08fb04335e2f5e73f23ea4c3adbf0c5f;SOURCES/groff-1.22.4.tar.gz +#----------------------------------------------------------------------------- +Summary: The Groff package contains programs for processing and formatting text. +Name: groff +Version: 1.22.4 +Release: 1 +License: GPLv3 +URL: Any +Group: LFS/Base +Vendor: Elizabeth +Source0: http://ftp.gnu.org/gnu/groff/%{name}-%{version}.tar.gz +#Provides: perl(main_subs.pl) +#Provides: perl(man.pl) +#Provides: perl(oop_fh.pl) +#Provides: perl(subs.pl) +Requires: filesystem +%description +The Groff package contains programs for processing and formatting text. +#----------------------------------------------------------------------------- +%prep +%setup -q -n %{NAME}-%{VERSION} +%build + PAGE=letter ./configure --prefix=%{_prefix} + make +%install + make DESTDIR=%{buildroot} install +#----------------------------------------------------------------------------- +# Copy license/copying file + install -D -m644 COPYING %{buildroot}/usr/share/licenses/%{name}/LICENSE +#----------------------------------------------------------------------------- +# Create file list + rm %{buildroot}%{_infodir}/dir + find %{buildroot} -name '*.la' -delete + find "${RPM_BUILD_ROOT}" -not -type d -print > filelist.rpm + sed -i "s|^${RPM_BUILD_ROOT}||" filelist.rpm + sed -i '/man\/man/d' filelist.rpm + sed -i '/\/usr\/share\/info/d' filelist.rpm +#----------------------------------------------------------------------------- +%files -f filelist.rpm + %defattr(-,root,root) + %{_infodir}/*.gz + %{_mandir}/man1/*.gz + %{_mandir}/man5/*.gz + %{_mandir}/man7/*.gz +#----------------------------------------------------------------------------- +%changelog +* Sat Apr 06 2019 baho-utot 1.22.4-1 +- LFS-8.4 +* Tue Jan 09 2018 baho-utot 1.22.3-1 +- Initial build. First version diff --git a/SPECS/grub.spec b/SPECS/grub.spec new file mode 100644 index 0000000..8e89843 --- /dev/null +++ b/SPECS/grub.spec @@ -0,0 +1,50 @@ +# %%define _optflags -march=x86-64 -mtune=generic -O2 -pipe +#TARBALL: http://ftp.gnu.org/gnu/grub/grub-2.02.tar.xz +#MD5SUM: 8a4a2a95aac551fb0fba860ceabfa1d3;SOURCES/grub-2.02.tar.xz +#----------------------------------------------------------------------------- +Summary: The GRUB package contains the GRand Unified Bootloader. +Name: grub +Version: 2.02 +Release: 1 +License: GPLv3 +URL: Any +Group: LFS/Base +Vendor: Elizabeth +Source0: http://ftp.gnu.org/gnu/grub/%{name}-%{version}.tar.xz +Requires: filesystem +%description +The GRUB package contains the GRand Unified Bootloader. +#----------------------------------------------------------------------------- +%prep +%setup -q -n %{NAME}-%{VERSION} +%build + ./configure \ + --prefix=%{_prefix} \ + --sbindir=/sbin \ + --sysconfdir=/etc \ + --disable-efiemu \ + --disable-werror + make %{?_smp_mflags} +%install + make DESTDIR=%{buildroot} install + install -vdm 755 %{buildroot}/usr/share/bash-completion/completions + mv -v %{buildroot}/etc/bash_completion.d/grub %{buildroot}/usr/share/bash-completion/completions +#----------------------------------------------------------------------------- +# Copy license/copying file + install -D -m644 COPYING %{buildroot}/usr/share/licenses/%{name}/LICENSE +#----------------------------------------------------------------------------- +# Create file list + rm %{buildroot}%{_infodir}/dir + find %{buildroot} -name '*.la' -delete + find "${RPM_BUILD_ROOT}" -not -type d -print > filelist.rpm + sed -i "s|^${RPM_BUILD_ROOT}||" filelist.rpm + sed -i '/man\/man/d' filelist.rpm + sed -i '/\/usr\/share\/info/d' filelist.rpm +#----------------------------------------------------------------------------- +%files -f filelist.rpm + %defattr(-,root,root) + %{_infodir}/*.gz +#----------------------------------------------------------------------------- +%changelog +* Tue Jan 09 2018 baho-utot 2.02-1 +- Initial build. First version diff --git a/SPECS/gzip.spec b/SPECS/gzip.spec new file mode 100644 index 0000000..08a4bf6 --- /dev/null +++ b/SPECS/gzip.spec @@ -0,0 +1,46 @@ +#TARBALL: http://ftp.gnu.org/gnu/gzip/gzip-1.10.tar.xz +#MD5SUM: 691b1221694c3394f1c537df4eee39d3;SOURCES/gzip-1.10.tar.xz +#----------------------------------------------------------------------------- +Summary: The Gzip package contains programs for compressing and decompressing files. +Name: gzip +Version: 1.10 +Release: 1 +License: GPLv3 +URL: Any +Group: LFS/Base +Vendor: Elizabeth +Source0: %{name}-%{version}.tar.xz +Requires: filesystem +%description +The Gzip package contains programs for compressing and decompressing files. +#----------------------------------------------------------------------------- +%prep +%setup -q -n %{NAME}-%{VERSION} + ./configure --prefix=%{_prefix} + make %{?_smp_mflags} +%install + make DESTDIR=%{buildroot} install + install -vdm 755 %{buildroot}/bin + mv -v %{buildroot}%{_bindir}/gzip %{buildroot}/bin +#----------------------------------------------------------------------------- +# Copy license/copying file + install -D -m644 COPYING %{buildroot}/usr/share/licenses/%{name}/LICENSE +#----------------------------------------------------------------------------- +# Create file list + rm %{buildroot}%{_infodir}/dir + find %{buildroot} -name '*.la' -delete + find "${RPM_BUILD_ROOT}" -not -type d -print > filelist.rpm + sed -i "s|^${RPM_BUILD_ROOT}||" filelist.rpm + sed -i '/man\/man/d' filelist.rpm + sed -i '/\/usr\/share\/info/d' filelist.rpm +#----------------------------------------------------------------------------- +%files -f filelist.rpm + %defattr(-,root,root) + %{_infodir}/*.gz + %{_mandir}/man1/*.gz +#----------------------------------------------------------------------------- +%changelog +* Sat Apr 06 2019 baho-utot 1.10-1 +- LFS-8.4 +* Tue Jan 09 2018 baho-utot 1.9-1 +- Initial build. First version diff --git a/SPECS/iana-etc.spec b/SPECS/iana-etc.spec new file mode 100644 index 0000000..e5c2732 --- /dev/null +++ b/SPECS/iana-etc.spec @@ -0,0 +1,40 @@ +#TARBALL: http://anduin.linuxfromscratch.org/LFS/iana-etc-2.30.tar.bz2 +#MD5SUM: 3ba3afb1d1b261383d247f46cb135ee8;SOURCES/iana-etc-2.30.tar.bz2 +#----------------------------------------------------------------------------- +Summary: The Iana-Etc package provides data for network services and protocols. +Name: iana-etc +Version: 2.30 +Release: 1 +License: OSLv3.0 +URL: Any +Group: LFS/Base +Vendor: Elizabeth +Source0: http://anduin.linuxfromscratch.org/LFS/%{name}-%{version}.tar.bz2 +Requires: filesystem +%description +The Iana-Etc package provides data for network services and protocols. +#----------------------------------------------------------------------------- +%prep +%setup -q -n %{NAME}-%{VERSION} +%build + make %{?_smp_mflags} +%install + make DESTDIR=%{buildroot} install +#----------------------------------------------------------------------------- +# Copy license/copying file + install -D -m644 COPYING %{buildroot}/usr/share/licenses/%{name}/LICENSE +#----------------------------------------------------------------------------- +# Create file list +# rm %{buildroot}%{_infodir}/dir + find %{buildroot} -name '*.la' -delete + find "${RPM_BUILD_ROOT}" -not -type d -print > filelist.rpm + sed -i "s|^${RPM_BUILD_ROOT}||" filelist.rpm + sed -i '/man\/man/d' filelist.rpm + sed -i '/\/usr\/share\/info/d' filelist.rpm +#----------------------------------------------------------------------------- +%files -f filelist.rpm + %defattr(-,root,root) +#----------------------------------------------------------------------------- +%changelog +* Tue Jan 09 2018 baho-utot 2.30-1 +- Initial build. First version diff --git a/SPECS/inetutils.spec b/SPECS/inetutils.spec new file mode 100644 index 0000000..25d2ec1 --- /dev/null +++ b/SPECS/inetutils.spec @@ -0,0 +1,56 @@ +#TARBALL: http://ftp.gnu.org/gnu/inetutils/inetutils-1.9.4.tar.xz +#MD5SUM: 87fef1fa3f603aef11c41dcc097af75e;SOURCES/inetutils-1.9.4.tar.xz +#----------------------------------------------------------------------------- +Summary: The Inetutils package contains programs for basic networking. +Name: inetutils +Version: 1.9.4 +Release: 1 +License: GPLv3 +URL: Any +Group: LFS/Base +Vendor: Elizabeth +Source0: http://ftp.gnu.org/gnu/inetutils/%{name}-%{version}.tar.xz +Requires: filesystem +%description +The Inetutils package contains programs for basic networking. +#----------------------------------------------------------------------------- +%prep +%setup -q -n %{NAME}-%{VERSION} +%build + ./configure \ + --prefix=%{_prefix} \ + --localstatedir=/var \ + --disable-logger \ + --disable-whois \ + --disable-rcp \ + --disable-rexec \ + --disable-rlogin \ + --disable-rsh \ + --disable-servers + make %{?_smp_mflags} +%install + make DESTDIR=%{buildroot} install + install -vdm 755 %{buildroot}/bin + mv -v %{buildroot}%{_bindir}/{hostname,ping,ping6,traceroute} %{buildroot}/bin + install -vdm 755 %{buildroot}/sbin + mv -v %{buildroot}%{_bindir}/ifconfig %{buildroot}/sbin +#----------------------------------------------------------------------------- +# Copy license/copying file + install -D -m644 COPYING %{buildroot}/usr/share/licenses/%{name}/LICENSE +#----------------------------------------------------------------------------- +# Create file list + rm %{buildroot}%{_infodir}/dir + find %{buildroot} -name '*.la' -delete + find "${RPM_BUILD_ROOT}" -not -type d -print > filelist.rpm + sed -i "s|^${RPM_BUILD_ROOT}||" filelist.rpm + sed -i '/man\/man/d' filelist.rpm + sed -i '/\/usr\/share\/info/d' filelist.rpm +#----------------------------------------------------------------------------- +%files -f filelist.rpm + %defattr(-,root,root) + %{_infodir}/*.gz + %{_mandir}/man1/*.gz +#----------------------------------------------------------------------------- +%changelog +* Tue Jan 09 2018 baho-utot 1.9.4-1 +- Initial build. First version diff --git a/SPECS/intltool.spec b/SPECS/intltool.spec new file mode 100644 index 0000000..ce22a3b --- /dev/null +++ b/SPECS/intltool.spec @@ -0,0 +1,45 @@ +#TARBALL: http://launchpad.net/intltool/trunk/0.51.0/+download/intltool-0.51.0.tar.gz +#MD5SUM: 12e517cac2b57a0121cda351570f1e63;SOURCES/intltool-0.51.0.tar.gz +#----------------------------------------------------------------------------- +Summary: The Intltool is an internationalization tool used for extracting translatable strings from source files. +Name: intltool +Version: 0.51.0 +Release: 1 +License: GPLv2 +URL: Any +Group: LFS/Base +Vendor: Elizabeth +Source0: http://launchpad.net/intltool/trunk/0.51.0/+download/%{name}-%{version}.tar.gz +Requires: filesystem +%description +The Intltool is an internationalization tool used for extracting translatable strings from source files. +#----------------------------------------------------------------------------- +%prep +%setup -q -n %{NAME}-%{VERSION} + sed -i 's:\\\${:\\\$\\{:' intltool-update.in +%build + ./configure \ + --prefix=%{_prefix} + make %{?_smp_mflags} +%install + make DESTDIR=%{buildroot} install + install -vDm 644 doc/I18N-HOWTO %{buildroot}%{_docdir}/%{name}-%{version}/I18N-HOWTO +#----------------------------------------------------------------------------- +# Copy license/copying file + install -D -m644 COPYING %{buildroot}/usr/share/licenses/%{name}/LICENSE +#----------------------------------------------------------------------------- +# Create file list +# rm %{buildroot}%{_infodir}/dir + find %{buildroot} -name '*.la' -delete + find "${RPM_BUILD_ROOT}" -not -type d -print > filelist.rpm + sed -i "s|^${RPM_BUILD_ROOT}||" filelist.rpm + sed -i '/man\/man/d' filelist.rpm + sed -i '/\/usr\/share\/info/d' filelist.rpm +#----------------------------------------------------------------------------- +%files -f filelist.rpm + %defattr(-,root,root) + %{_mandir}/man8/*.gz +#----------------------------------------------------------------------------- +%changelog +* Tue Jan 09 2018 baho-utot 0.51.0-1 +- Initial build. First version diff --git a/SPECS/iproute2.spec b/SPECS/iproute2.spec new file mode 100644 index 0000000..2aecf24 --- /dev/null +++ b/SPECS/iproute2.spec @@ -0,0 +1,48 @@ +#TARBALL: https://www.kernel.org/pub/linux/utils/net/iproute2/iproute2-4.20.0.tar.xz +#MD5SUM: f3dab4c812812bbb5873cb90f471bcbf;SOURCES/iproute2-4.20.0.tar.xz +#----------------------------------------------------------------------------- +Summary: The IPRoute2 package contains programs for basic and advanced IPV4-based networking. +Name: iproute2 +Version: 4.20.0 +Release: 1 +License: GPLv2 +URL: Any +Group: LFS/Base +Vendor: Elizabeth +Source0: https://www.kernel.org/pub/linux/utils/net/iproute2/%{NAME}-%{VERSION}.tar.xz +Requires: filesystem +%description +The IPRoute2 package contains programs for basic and advanced IPV4-based networking. +#----------------------------------------------------------------------------- +%prep +%setup -q -n %{NAME}-%{VERSION} + sed -i /ARPD/d Makefile + rm -fv man/man8/arpd.8 + sed -i 's/m_ipt.o//' tc/Makefile +%build + make %{?_smp_mflags} +%install + make DESTDIR=%{buildroot} DOCDIR=%{_docdir}/%{NAME}-%{VERSION} install +#----------------------------------------------------------------------------- +# Copy license/copying file + install -D -m644 COPYING %{buildroot}/usr/share/licenses/%{name}/LICENSE +#----------------------------------------------------------------------------- +# Create file list +# rm %{buildroot}%{_infodir}/dir + find %{buildroot} -name '*.la' -delete + find "${RPM_BUILD_ROOT}" -not -type d -print > filelist.rpm + sed -i "s|^${RPM_BUILD_ROOT}||" filelist.rpm + sed -i '/man\/man/d' filelist.rpm + sed -i '/\/usr\/share\/info/d' filelist.rpm +#----------------------------------------------------------------------------- +%files -f filelist.rpm + %defattr(-,root,root) + %{_mandir}/man3/*.gz + %{_mandir}/man7/*.gz + %{_mandir}/man8/*.gz +#----------------------------------------------------------------------------- +%changelog +* Sat Apr 06 2019 baho-utot 4.20.0-1 +- LFS-8.4 +* Tue Jan 09 2018 baho-utot 4.15.0-1 +- Initial build. First version diff --git a/SPECS/kbd.spec b/SPECS/kbd.spec new file mode 100644 index 0000000..dfaab98 --- /dev/null +++ b/SPECS/kbd.spec @@ -0,0 +1,56 @@ +#TARBALL: https://www.kernel.org/pub/linux/utils/kbd/kbd-2.0.4.tar.xz +#MD5SUM: c1635a5a83b63aca7f97a3eab39ebaa6;SOURCES/kbd-2.0.4.tar.xz +#TARBALL: http://www.linuxfromscratch.org/patches/lfs/8.2/kbd-2.0.4-backspace-1.patch +#MD5SUM: f75cca16a38da6caa7d52151f7136895;SOURCES/kbd-2.0.4-backspace-1.patch +#----------------------------------------------------------------------------- +Summary: The Kbd package contains key-table files, console fonts, and keyboard utilities. +Name: kbd +Version: 2.0.4 +Release: 1 +License: Other +URL: Any +Group: LFS/Base +Vendor: Elizabeth +Source0: https://www.kernel.org/pub/linux/utils/kbd/%{name}-%{version}.tar.xz +Patch0: kbd-2.0.4-backspace-1.patch +Requires: filesystem +%description +The Kbd package contains key-table files, console fonts, and keyboard utilities. +#----------------------------------------------------------------------------- +%prep +%setup -q -n %{NAME}-%{VERSION} +%patch0 -p1 + sed -i 's/\(RESIZECONS_PROGS=\)yes/\1no/g' configure + sed -i 's/resizecons.8 //' docs/man/man8/Makefile.in +%build + PKG_CONFIG_PATH=/tools/lib/pkgconfig \ + ./configure \ + --prefix=%{_prefix} \ + --disable-vlock + make %{?_smp_mflags} +%install + make DESTDIR=%{buildroot} install + install -vdm 755 %{buildroot}%{_docdir}/%{NAME}-%{VERSION} + cp -R -v docs/doc/* %{buildroot}%{_docdir}/%{NAME}-%{VERSION} +#----------------------------------------------------------------------------- +# Copy license/copying file + install -D -m644 COPYING %{buildroot}/usr/share/licenses/%{name}/LICENSE +#----------------------------------------------------------------------------- +# Create file list +# rm %{buildroot}%{_infodir}/dir + find %{buildroot} -name '*.la' -delete + find "${RPM_BUILD_ROOT}" -not -type d -print > filelist.rpm + sed -i "s|^${RPM_BUILD_ROOT}||" filelist.rpm + sed -i '/man\/man/d' filelist.rpm + sed -i '/\/usr\/share\/info/d' filelist.rpm +#----------------------------------------------------------------------------- +%files -f filelist.rpm + %defattr(-,root,root) +# %%{_infodir}/*.gz + %{_mandir}/man1/*.gz + %{_mandir}/man5/*.gz + %{_mandir}/man8/*.gz +#----------------------------------------------------------------------------- +%changelog +* Tue Jan 09 2018 baho-utot 2.0.4-1 +- Initial build. First version diff --git a/SPECS/kmod.spec b/SPECS/kmod.spec new file mode 100644 index 0000000..b8a11b3 --- /dev/null +++ b/SPECS/kmod.spec @@ -0,0 +1,57 @@ +#TARBALL: https://www.kernel.org/pub/linux/utils/kernel/kmod/kmod-26.tar.xz +#MD5SUM: 1129c243199bdd7db01b55a61aa19601;SOURCES/kmod-26.tar.xz +#----------------------------------------------------------------------------- +Summary: The Kmod package contains libraries and utilities for loading kernel modules +Name: kmod +Version: 26 +Release: 1 +License: GPLv2.1 +URL: Any +Group: LFS/Base +Vendor: Elizabeth +Source0: https://www.kernel.org/pub/linux/utils/kernel/kmod/%{name}-%{version}.tar.xz +Requires: filesystem +%description +The Kmod package contains libraries and utilities for loading kernel modules +#----------------------------------------------------------------------------- +%prep +%setup -q -n %{NAME}-%{VERSION} +%build + ./configure \ + --prefix=%{_prefix} \ + --bindir=/bin \ + --sysconfdir=/etc \ + --with-rootlibdir=/lib \ + --with-xz \ + --with-zlib + make %{?_smp_mflags} +%install + make DESTDIR=%{buildroot} install + install -vdm 755 %{buildroot}/bin + install -vdm 755 %{buildroot}/sbin + for target in depmod insmod lsmod modinfo modprobe rmmod; do + ln -sfv ../bin/kmod %{buildroot}/sbin/$target + done + ln -sfv kmod %{buildroot}/bin/lsmod +#----------------------------------------------------------------------------- +# Copy license/copying file + install -D -m644 COPYING %{buildroot}/usr/share/licenses/%{name}/LICENSE +#----------------------------------------------------------------------------- +# Create file list +# rm %{buildroot}%{_infodir}/dir + find %{buildroot} -name '*.la' -delete + find "${RPM_BUILD_ROOT}" -not -type d -print > filelist.rpm + sed -i "s|^${RPM_BUILD_ROOT}||" filelist.rpm + sed -i '/man\/man/d' filelist.rpm + sed -i '/\/usr\/share\/info/d' filelist.rpm +#----------------------------------------------------------------------------- +%files -f filelist.rpm + %defattr(-,root,root) + %{_mandir}/man5/*.gz + %{_mandir}/man8/*.gz +#----------------------------------------------------------------------------- +%changelog +* Fri Apr 05 2019 baho-utot 26-1 +- Update for LFS-8.4 +* Tue Jan 09 2018 baho-utot 25-1 +- Initial build. First version diff --git a/SPECS/less.spec b/SPECS/less.spec new file mode 100644 index 0000000..33edbcd --- /dev/null +++ b/SPECS/less.spec @@ -0,0 +1,44 @@ +#TARBALL: http://www.greenwoodsoftware.com/less/less-530.tar.gz +#MD5SUM: 6a39bccf420c946b0fd7ffc64961315b;SOURCES/less-530.tar.gz +#----------------------------------------------------------------------------- +Summary: The Less package contains a text file viewer. +Name: less +Version: 530 +Release: 1 +License: Other +URL: Any +Group: LFS/Base +Vendor: Elizabeth +Source0: http://www.greenwoodsoftware.com/less/%{name}-%{version}.tar.gz +Requires: filesystem +%description +The Less package contains a text file viewer. +#----------------------------------------------------------------------------- +%prep +%setup -q -n %{NAME}-%{VERSION} +%build + ./configure \ + --prefix=%{_prefix} \ + --sysconfdir=/etc + make %{?_smp_mflags} +%install + make DESTDIR=%{buildroot} install +#----------------------------------------------------------------------------- +# Copy license/copying file + install -D -m644 LICENSE %{buildroot}/usr/share/licenses/%{name}/LICENSE +#----------------------------------------------------------------------------- +# Create file list +# rm %{buildroot}%{_infodir}/dir + find %{buildroot} -name '*.la' -delete + find "${RPM_BUILD_ROOT}" -not -type d -print > filelist.rpm + sed -i "s|^${RPM_BUILD_ROOT}||" filelist.rpm + sed -i '/man\/man/d' filelist.rpm + sed -i '/\/usr\/share\/info/d' filelist.rpm +#----------------------------------------------------------------------------- +%files -f filelist.rpm + %defattr(-,root,root) + %{_mandir}/man1/*.gz +#----------------------------------------------------------------------------- +%changelog +* Tue Jan 09 2018 baho-utot 530-1 +- Initial build. First version diff --git a/SPECS/lfs-bootscripts.spec b/SPECS/lfs-bootscripts.spec new file mode 100644 index 0000000..056c363 --- /dev/null +++ b/SPECS/lfs-bootscripts.spec @@ -0,0 +1,43 @@ +#TARBALL: http://www.linuxfromscratch.org/lfs/downloads/8.4/lfs-bootscripts-20180820.tar.bz2 +#MD5SUM: e08811a18356eeef524b2ed333e8cb86;SOURCES/lfs-bootscripts-20180820.tar.bz2 +#----------------------------------------------------------------------------- +Summary: The LFS-Bootscripts package contains a set of scripts to start/stop the LFS system at bootup/shutdown. +Name: lfs-bootscripts +Version: 20180820 +Release: 1 +License: None +URL: http://www.linuxfromscratch.org +Group: LFS/Base +Vendor: Elizabeth +Source0: lfs-bootscripts-20180820.tar.bz2 +Requires: filesystem +%description +The LFS-Bootscripts package contains a set of scripts to start/stop the LFS system +at bootup/shutdown. The configuration files and procedures needed to customize the +boot process are described in the following sections. +#----------------------------------------------------------------------------- +%prep +%setup -q -n %{NAME}-%{VERSION} +%build +%install + make DESTDIR=%{buildroot} install +# rm %{buildroot}/etc/sysconfig/rc.site +#----------------------------------------------------------------------------- +# Create file list +# rm %{buildroot}%{_infodir}/dir + find %{buildroot} -name '*.la' -delete + find "${RPM_BUILD_ROOT}" -not -type d -print > filelist.rpm + sed -i "s|^${RPM_BUILD_ROOT}||" filelist.rpm + sed -i '/man\/man/d' filelist.rpm + sed -i '/\/usr\/share\/info/d' filelist.rpm +#----------------------------------------------------------------------------- +%files -f filelist.rpm + %defattr(-,root,root) +# %%{_infodir}/*.gz + %{_mandir}/man8/*.gz +#----------------------------------------------------------------------------- +%changelog +* Sun Apr 07 2019 baho-utot 20180820-1 +- LFS-8.4 +* Tue Jan 09 2018 baho-utot 20170626-1 +- Initial build. First version diff --git a/SPECS/libcap.spec b/SPECS/libcap.spec new file mode 100644 index 0000000..8b06fd0 --- /dev/null +++ b/SPECS/libcap.spec @@ -0,0 +1,52 @@ +#TARBALL: https://www.kernel.org/pub/linux/libs/security/linux-privs/libcap2/libcap-2.26.tar.xz +#MD5SUM: 968ac4d42a1a71754313527be2ab5df3;SOURCES/libcap-2.26.tar.xz +#----------------------------------------------------------------------------- +Summary: The Libcap package implements the user-space interfaces to the POSIX 1003.1e +Name: libcap +Version: 2.26 +Release: 1 +License: GPLv2 +URL: Any +Group: LFS/Base +Vendor: Elizabeth +Source0: %{name}-%{version}.tar.xz +Requires: filesystem +%description +The Libcap package implements the user-space interfaces to the POSIX 1003.1e +capabilities available in Linux kernels. These capabilities are a partitioning +of the all powerful root privilege into a set of distinct privileges. +#----------------------------------------------------------------------------- +%prep +%setup -q -n %{NAME}-%{VERSION} + sed -i '/install.*STALIBNAME/d' libcap/Makefile +%build + make %{?_smp_mflags} +%install + make DESTDIR=%{buildroot} RAISE_SETFCAP=no lib=lib prefix=%_prefix install + chmod -v 755 %{buildroot}%{_libdir}/libcap.so.2.26 + install -vdm 755 %{buildroot}/lib + mv -v %{buildroot}/usr/lib/libcap.so.* %{buildroot}/lib + ln -sfv ../../lib/$(readlink %{buildroot}/usr/lib/libcap.so) %{buildroot}/usr/lib/libcap.so +#----------------------------------------------------------------------------- +# Copy license/copying file + install -D -m644 License %{buildroot}/usr/share/licenses/%{name}/LICENSE +#----------------------------------------------------------------------------- +# Create file list +# rm %{buildroot}%{_infodir}/dir + find %{buildroot} -name '*.la' -delete + find "${RPM_BUILD_ROOT}" -not -type d -print > filelist.rpm + sed -i "s|^${RPM_BUILD_ROOT}||" filelist.rpm + sed -i '/man\/man/d' filelist.rpm + sed -i '/\/usr\/share\/info/d' filelist.rpm +#----------------------------------------------------------------------------- +%files -f filelist.rpm + %defattr(-,root,root) + %{_mandir}/man1/*.gz + %{_mandir}/man3/*.gz + %{_mandir}/man8/*.gz +#----------------------------------------------------------------------------- +%changelog +* Wed Apr 03 2019 baho-utot 2.26-1 +- Update +* Tue Jan 09 2018 baho-utot 2.25-1 +- Initial build. First version diff --git a/SPECS/libelf.spec b/SPECS/libelf.spec new file mode 100644 index 0000000..940186b --- /dev/null +++ b/SPECS/libelf.spec @@ -0,0 +1,47 @@ +#TARBALL: https://sourceware.org/ftp/elfutils/0.176/elfutils-0.176.tar.bz2 +#MD5SUM: 077e4f49320cad82bf17a997068b1db9;SOURCES/elfutils-0.176.tar.bz2 +#----------------------------------------------------------------------------- +Summary: The elfutils package contains a set of utilities and libraries for handling ELF files +Name: libelf +Version: 0.176 +Release: 1 +License: GPLv3 +URL: https://sourceware.org/ftp/elfutils +Group: LFS/BASE +Vendor: Elizabeth +Source0: elfutils-%{version}.tar.bz2 +Requires: filesystem +%description +The elfutils package contains a set of utilities and libraries for handling ELF +(Executable and Linkable Format) files. +#----------------------------------------------------------------------------- +%prep +%setup -q -n elfutils-%{version} +%build + ./configure \ + --prefix=%{_prefix} + make %{?_smp_mflags} +%install +# make DESTDIR=%{buildroot} install + make DESTDIR=%{buildroot} -C libelf install + install -vDm644 config/libelf.pc %{buildroot}%{_libdir}/pkgconfig/libelf.pc +#----------------------------------------------------------------------------- +# Copy license/copying file + install -D -m644 COPYING %{buildroot}/usr/share/licenses/%{name}/LICENSE +#----------------------------------------------------------------------------- +# Create file list +# rm %{buildroot}%{_infodir}/dir + find %{buildroot} -name '*.la' -delete + find "${RPM_BUILD_ROOT}" -not -type d -print > filelist.rpm + sed -i "s|^${RPM_BUILD_ROOT}||" filelist.rpm + sed -i '/man\/man/d' filelist.rpm + sed -i '/\/usr\/share\/info/d' filelist.rpm +#----------------------------------------------------------------------------- +%files -f filelist.rpm + %defattr(-,root,root) +#----------------------------------------------------------------------------- +%changelog +* Fri Apr 05 2019 baho-utot 0.176-1 +- Update for LFS-8.4 +* Mon Jan 01 2018 baho-utot 0.170-1 +- LFS-8.1 diff --git a/SPECS/libffi.spec b/SPECS/libffi.spec new file mode 100644 index 0000000..dc60564 --- /dev/null +++ b/SPECS/libffi.spec @@ -0,0 +1,48 @@ +#TARBALL: ftp://sourceware.org/pub/libffi/libffi-3.2.1.tar.gz +#MD5SUM: 83b89587607e3eb65c70d361f13bab43;SOURCES/libffi-3.2.1.tar.gz +#----------------------------------------------------------------------------- +Summary: The Libffi library provides a portable, high level programming interface to various calling conventions. +Name: libffi +Version: 3.2.1 +Release: 1 +License: GPLv2 +URL: Any +Group: LFS/Base +Vendor: Elizabeth +Source0: %{name}-%{version}.tar.gz +Requires: filesystem +%description +The Libffi library provides a portable, high level programming interface to various calling conventions. +This allows a programmer to call any function specified by a call interface description at run time. +#----------------------------------------------------------------------------- +%prep +%setup -q -n %{NAME}-%{VERSION} + sed -e '/^includesdir/ s/$(libdir).*$/$(includedir)/' -i include/Makefile.in + sed -e '/^includedir/ s/=.*$/=@includedir@/' -e 's/^Cflags: -I${includedir}/Cflags:/' -i libffi.pc.in +%build + ./configure \ + --prefix=%{_prefix} \ + --disable-static + make %{?_smp_mflags} +%install + make DESTDIR=%{buildroot} install +#----------------------------------------------------------------------------- +# Copy license/copying file + install -D -m644 LICENSE %{buildroot}/usr/share/licenses/%{name}/LICENSE +#----------------------------------------------------------------------------- +# Create file list + rm %{buildroot}%{_infodir}/dir + find %{buildroot} -name '*.la' -delete + find "${RPM_BUILD_ROOT}" -not -type d -print > filelist.rpm + sed -i "s|^${RPM_BUILD_ROOT}||" filelist.rpm + sed -i '/man\/man/d' filelist.rpm + sed -i '/\/usr\/share\/info/d' filelist.rpm +#----------------------------------------------------------------------------- +%files -f filelist.rpm + %defattr(-,root,root) + %{_infodir}/*.gz + %{_mandir}/man3/*.gz +#----------------------------------------------------------------------------- +%changelog +* Fri Jul 17 2018 baho-utot 3.2.1-1 +- Initial build. First version diff --git a/SPECS/libpipeline.spec b/SPECS/libpipeline.spec new file mode 100644 index 0000000..201f860 --- /dev/null +++ b/SPECS/libpipeline.spec @@ -0,0 +1,46 @@ +#TARBALL: http://download.savannah.gnu.org/releases/libpipeline/libpipeline-1.5.1.tar.gz +#MD5SUM: 4c8fe6cd85422baafd6e060f896c61bc;SOURCES/libpipeline-1.5.1.tar.gz +#----------------------------------------------------------------------------- +Summary: The Libpipeline package contains a library for manipulating pipelines of subprocesses in a flexible and convenient way. +Name: libpipeline +Version: 1.5.1 +Release: 1 +License: GPLv3 +URL: Any +Group: LFS/Base +Vendor: Elizabeth +Source0: %{name}-%{version}.tar.gz +Requires: filesystem +%description +The Libpipeline package contains a library for manipulating pipelines of subprocesses in a flexible and convenient way. +#----------------------------------------------------------------------------- +%prep +%setup -q -n %{NAME}-%{VERSION} +%build + PKG_CONFIG_PATH=/tools/lib/pkgconfig \ + ./configure --prefix=%{_prefix} + make %{?_smp_mflags} +%install + make DESTDIR=%{buildroot} install +#----------------------------------------------------------------------------- +# Copy license/copying file + install -D -m644 COPYING %{buildroot}/usr/share/licenses/%{name}/LICENSE +#----------------------------------------------------------------------------- +# Create file list +# rm %{buildroot}%{_infodir}/dir + find %{buildroot} -name '*.la' -delete + find "${RPM_BUILD_ROOT}" -not -type d -print > filelist.rpm + sed -i "s|^${RPM_BUILD_ROOT}||" filelist.rpm + sed -i '/man\/man/d' filelist.rpm + sed -i '/\/usr\/share\/info/d' filelist.rpm +#----------------------------------------------------------------------------- +%files -f filelist.rpm + %defattr(-,root,root) +# %%{_infodir}/*.gz + %{_mandir}/man3/*.gz +#----------------------------------------------------------------------------- +%changelog +* Sat Apr 06 2019 baho-utot 1.5.1-1 +- LFS-8.4 +* Tue Jan 09 2018 baho-utot 1.5.0-1 +- Initial build. First version diff --git a/SPECS/libtool.spec b/SPECS/libtool.spec new file mode 100644 index 0000000..7b21f15 --- /dev/null +++ b/SPECS/libtool.spec @@ -0,0 +1,45 @@ +#TARBALL: http://ftp.gnu.org/gnu/libtool/libtool-2.4.6.tar.xz +#MD5SUM: 1bfb9b923f2c1339b4d2ce1807064aa5;SOURCES/libtool-2.4.6.tar.xz +#----------------------------------------------------------------------------- +Summary: The Libtool package contains the GNU generic library support script +Name: libtool +Version: 2.4.6 +Release: 1 +License: GPLv2 +URL: Any +Group: LFS/Base +Vendor: Elizabeth +Source0: http://ftp.gnu.org/gnu/libtool/%{name}-%{version}.tar.xz +Requires: filesystem +%description +The Libtool package contains the GNU generic library support script. It wraps the +complexity of using shared libraries in a consistent, portable interface. +#----------------------------------------------------------------------------- +%prep +%setup -q -n %{NAME}-%{VERSION} +%build + ./configure \ + --prefix=%{_prefix} + make %{?_smp_mflags} +%install + make DESTDIR=%{buildroot} install +#----------------------------------------------------------------------------- +# Copy license/copying file + install -D -m644 COPYING %{buildroot}/usr/share/licenses/%{name}/LICENSE +#----------------------------------------------------------------------------- +# Create file list + rm %{buildroot}%{_infodir}/dir + find %{buildroot} -name '*.la' -delete + find "${RPM_BUILD_ROOT}" -not -type d -print > filelist.rpm + sed -i "s|^${RPM_BUILD_ROOT}||" filelist.rpm + sed -i '/man\/man/d' filelist.rpm + sed -i '/\/usr\/share\/info/d' filelist.rpm +#----------------------------------------------------------------------------- +%files -f filelist.rpm + %defattr(-,root,root) + %{_infodir}/*.gz + %{_mandir}/man1/*.gz +#----------------------------------------------------------------------------- +%changelog +* Tue Jan 09 2018 baho-utot 2.4.6-1 +- Initial build. First version diff --git a/SPECS/linux-api-headers.spec b/SPECS/linux-api-headers.spec new file mode 100644 index 0000000..8e578f4 --- /dev/null +++ b/SPECS/linux-api-headers.spec @@ -0,0 +1,59 @@ +#TARBALL: https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.20.12.tar.xz +#MD5SUM: edd3015435d60598b99cf6aaf223710e;SOURCES/linux-4.20.12.tar.xz +#----------------------------------------------------------------------------- +Summary: Linux API header files +Name: linux-api-headers +Version: 4.20.12 +Release: 1 +License: GPLv2 +URL: http://www.kernel.org/ +Group: LFS/Base +Vendor: Elizabeth +Source0: http://www.kernel.org/pub/linux/kernel/v4.x/linux-%{version}.tar.xz +Requires: filesystem +%description +The Linux API Headers expose the kernel's API for use by Glibc. +#----------------------------------------------------------------------------- +%prep +%setup -q -n linux-%{version} +%build + make mrproper +%install + cd %{_builddir}/linux-%{version} + make INSTALL_HDR_PATH=dest headers_install + find dest/include \( -name .install -o -name ..install.cmd \) -delete + install -vdm 755 %{buildroot}%{_includedir} + cp -rv dest/include/* %{buildroot}%{_includedir} +#----------------------------------------------------------------------------- +# Copy license/copying file + install -D -m644 COPYING %{buildroot}/usr/share/licenses/%{name}/LICENSE +#----------------------------------------------------------------------------- +# Create file list +# rm %{buildroot}%{_infodir}/dir + find %{buildroot} -name '*.la' -delete + find "${RPM_BUILD_ROOT}" -not -type d -print > filelist.rpm + sed -i "s|^${RPM_BUILD_ROOT}||" filelist.rpm + sed -i '/man\/man/d' filelist.rpm + sed -i '/\/usr\/share\/info/d' filelist.rpm +#----------------------------------------------------------------------------- +%files -f filelist.rpm + %defattr(-,root,root) +#----------------------------------------------------------------------------- +%changelog +* Fri Mar 15 2019 baho-utot 4.20.12-1 +* Thu Mar 15 2018 baho-utot 4.15.3-1 +* Wed Jan 31 2018 baho-utot 4.9.67-2 +* Tue Dec 19 2017 baho-utot 4.9.67-1 +- update to version 4.9.67 +* Sat Mar 22 2014 baho-utot 3.13.3-1 +* Sat Aug 31 2013 baho-utot 3.10.10-1 +* Sat Aug 24 2013 baho-utot 3.10.9-1 +* Thu Jun 27 2013 baho-utot 3.9.7-1 +* Wed May 15 2013 baho-utot 3.9.2-1 +* Sat May 11 2013 baho-utot 3.9.1-1 +* Fri May 10 2013 baho-utot 3.9-1 +* Mon Apr 1 2013 baho-utot 3.8.5-1 +* Sun Mar 24 2013 baho-utot 3.8.3-1 +* Sun Mar 24 2013 baho-utot 3.8.1-1 +* Wed Jan 30 2013 baho-utot 3.5.2-1 +- initial version diff --git a/SPECS/linux.spec b/SPECS/linux.spec new file mode 100644 index 0000000..a20aa4d --- /dev/null +++ b/SPECS/linux.spec @@ -0,0 +1,69 @@ +#TARBALL: https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.20.12.tar.xz +#MD5SUM: edd3015435d60598b99cf6aaf223710e;SOURCES/linux-4.20.12.tar.xz +#----------------------------------------------------------------------------- +Summary: The Linux package contains the Linux kernel. +Name: linux +Version: 4.20.12 +Release: 2 +License: GPLv2 +URL: https://www.kernel.org +Group: LFS/Base +Vendor: Elizabeth +Source0: https://www.kernel.org/pub/linux/kernel/v4.x/%{name}-%{version}.tar.xz +Source1: config-%{VERSION} +Requires: filesystem +Requires: mkinitramfs +%description +The Linux package contains the Linux kernel. +#----------------------------------------------------------------------------- +%prep +%setup -q -n %{NAME}-%{VERSION} +%build + make mrproper +# make defconfig +# make allmodconfig + cp %{_sourcedir}/config-%{VERSION} .config +# cp %%{_sourcedir}/config-4.15.3 .config +# make oldconfig + make olddefconfig + make %{?_smp_mflags} +%install + make DESTDIR=%{buildroot} INSTALL_MOD_PATH=%{buildroot} modules_install + install -vdm 755 %{buildroot}/boot + cp -v arch/x86/boot/bzImage %{buildroot}/boot/vmlinuz-%{version} + cp -v System.map %{buildroot}/boot/System.map-%{version} + cp -v .config %{buildroot}/boot/config-%{version} + install -d %{buildroot}%{_docdir}/%{NAME}-%{VERSION} + cp -r Documentation/* %{buildroot}%{_docdir}/%{NAME}-%{version} +#----------------------------------------------------------------------------- +# Copy license/copying file + install -D -m644 COPYING %{buildroot}/usr/share/licenses/%{name}-%{VERSION}/LICENSE +#----------------------------------------------------------------------------- +# Create file list +# rm %{buildroot}%{_infodir}/dir + find %{buildroot} -name '*.la' -delete + find "${RPM_BUILD_ROOT}" -not -type d -print > filelist.rpm + sed -i "s|^${RPM_BUILD_ROOT}||" filelist.rpm + sed -i '/man\/man/d' filelist.rpm + sed -i '/\/usr\/share\/info/d' filelist.rpm +#----------------------------------------------------------------------------- +%files -f filelist.rpm + %defattr(-,root,root) +# %%{_infodir}/*.gz +# %%{_mandir}/man1/*.gz +#----------------------------------------------------------------------------- +%post + pushd /boot + touch initrd.img-%{VERSION} + rm initrd.img-%{VERSION} + mkinitramfs %{VERSION} + popd +%postun + pushd /boot + touch initrd.img-%{VERSION} + rm initrd.img-%{VERSION} + popd +#----------------------------------------------------------------------------- +%changelog +* Tue Jan 09 2018 baho-utot 4.15.3-1 +- Initial build. First version diff --git a/SPECS/m4.spec b/SPECS/m4.spec new file mode 100644 index 0000000..ff6f929 --- /dev/null +++ b/SPECS/m4.spec @@ -0,0 +1,45 @@ +#TARBALL: http://ftp.gnu.org/gnu/m4/m4-1.4.18.tar.xz +#MD5SUM: 730bb15d96fffe47e148d1e09235af82;SOURCES/m4-1.4.18.tar.xz +#----------------------------------------------------------------------------- +Summary: The M4 package contains a macro processor +Name: m4 +Version: 1.4.18 +Release: 1 +License: GPLv3 +URL: http://www.gnu.org +Group: LFS/Base +Vendor: Elizabeth +Source0: http://ftp.gnu.org/gnu/%{name}/%{name}-%{version}.tar.xz +Requires: filesystem +%description +The M4 package contains a macro processor +#----------------------------------------------------------------------------- +%prep +%setup -q -n %{NAME}-%{VERSION} +sed -i 's/IO_ftrylockfile/IO_EOF_SEEN/' lib/*.c +echo "#define _IO_IN_BACKUP 0x100" >> lib/stdio-impl.h +%build + ./configure --prefix=%{_prefix} + make %{?_smp_mflags} +%install + make DESTDIR=%{buildroot} install +#----------------------------------------------------------------------------- +# Copy license/copying file + install -D -m644 README %{buildroot}/usr/share/licenses/%{name}/LICENSE +#----------------------------------------------------------------------------- +# Create file list + rm %{buildroot}%{_infodir}/dir + find %{buildroot} -name '*.la' -delete + find "${RPM_BUILD_ROOT}" -not -type d -print > filelist.rpm + sed -i "s|^${RPM_BUILD_ROOT}||" filelist.rpm + sed -i '/man\/man/d' filelist.rpm + sed -i '/\/usr\/share\/info/d' filelist.rpm +#----------------------------------------------------------------------------- +%files -f filelist.rpm + %defattr(-,root,root) + %{_infodir}/*.gz + %{_mandir}/man1/m4.1.gz +#----------------------------------------------------------------------------- +%changelog +* Tue Jan 09 2018 baho-utot 1.4.18-1 +- Initial build. First version diff --git a/SPECS/make.spec b/SPECS/make.spec new file mode 100644 index 0000000..55362e7 --- /dev/null +++ b/SPECS/make.spec @@ -0,0 +1,44 @@ +#TARBALL: http://ftp.gnu.org/gnu/make/make-4.2.1.tar.bz2 +#MD5SUM: 15b012617e7c44c0ed482721629577ac;SOURCES/make-4.2.1.tar.bz2 +#----------------------------------------------------------------------------- +Summary: The Make package contains a program for compiling packages. +Name: make +Version: 4.2.1 +Release: 1 +License: GPLv3 +URL: Any +Group: LFS/Base +Vendor: Elizabeth +Source0: http://ftp.gnu.org/gnu/make/%{name}-%{version}.tar.bz2 +Requires: filesystem +%description +The Make package contains a program for compiling packages. +#----------------------------------------------------------------------------- +%prep +%setup -q -n %{NAME}-%{VERSION} +sed -i '211,217 d; 219,229 d; 232 d' glob/glob.c +%build + ./configure --prefix=%{_prefix} + make %{?_smp_mflags} +%install + make DESTDIR=%{buildroot} install +#----------------------------------------------------------------------------- +# Copy license/copying file + install -D -m644 COPYING %{buildroot}/usr/share/licenses/%{name}/LICENSE +#----------------------------------------------------------------------------- +# Create file list + rm %{buildroot}%{_infodir}/dir + find %{buildroot} -name '*.la' -delete + find "${RPM_BUILD_ROOT}" -not -type d -print > filelist.rpm + sed -i "s|^${RPM_BUILD_ROOT}||" filelist.rpm + sed -i '/man\/man/d' filelist.rpm + sed -i '/\/usr\/share\/info/d' filelist.rpm +#----------------------------------------------------------------------------- +%files -f filelist.rpm + %defattr(-,root,root) + %{_infodir}/*.gz + %{_mandir}/man1/*.gz +#----------------------------------------------------------------------------- +%changelog +* Tue Jan 09 2018 baho-utot 4.2.1-1 +- Initial build. First version diff --git a/SPECS/man-db.spec b/SPECS/man-db.spec new file mode 100644 index 0000000..169c7a6 --- /dev/null +++ b/SPECS/man-db.spec @@ -0,0 +1,60 @@ +#TARBALL: http://download.savannah.gnu.org/releases/man-db/man-db-2.8.5.tar.xz +#MD5SUM: c5c6c3434be14a5527d43b5ad0f09a13;SOURCES/man-db-2.8.5.tar.xz +#----------------------------------------------------------------------------- +Summary: The Man-DB package contains programs for finding and viewing man pages. +Name: man-db +Version: 2.8.5 +Release: 1 +License: Other +URL: Any +Group: LFS/Base +Vendor: Elizabeth +Source0: man-db/%{name}-%{version}.tar.xz +Requires: filesystem +%description +The Man-DB package contains programs for finding and viewing man pages. +#----------------------------------------------------------------------------- +%prep +%setup -q -n %{NAME}-%{VERSION} +%build + ./configure \ + --prefix=%{_prefix} \ + --docdir=%{_docdir}/%{NAME}-%{VERSION} \ + --sysconfdir=/etc \ + --disable-setuid \ + --enable-cache-owner=bin \ + --with-browser=%{_bindir}/lynx \ + --with-vgrind=%{_bindir}/vgrind \ + --with-grap=%{_bindir}/grap \ + --with-systemdtmpfilesdir= \ + --with-systemdsystemunitdir= + make %{?_smp_mflags} +%install + make DESTDIR=%{buildroot} install +#----------------------------------------------------------------------------- +# Copy license/copying file + install -D -m644 README %{buildroot}/usr/share/licenses/%{name}/LICENSE +#----------------------------------------------------------------------------- +# rm %{buildroot}%{_infodir}/dir + find %{buildroot} -name '*.la' -delete + find "${RPM_BUILD_ROOT}" -not -type d -print > filelist.rpm + sed -i "s|^${RPM_BUILD_ROOT}||" filelist.rpm + sed -i '/man\/man/d' filelist.rpm + sed -i '/man\/es/d' filelist.rpm + sed -i '/man\/it/d' filelist.rpm + sed -i '/\/usr\/share\/info/d' filelist.rpm +#----------------------------------------------------------------------------- +%files -f filelist.rpm + %defattr(-,root,root) +# %%{_infodir}/*.gz + %{_mandir}/man1/*.gz + %{_mandir}/man5/*.gz + %{_mandir}/man8/*.gz + %{_mandir}/man8/*.gz + %{_mandir}/it/man1/*.gz + %{_mandir}/it/man5/*.gz + %{_mandir}/it/man8/*.gz +#----------------------------------------------------------------------------- +%changelog +* Tue Jan 09 2018 baho-utot 2.8.1-1 +- Initial build. First version diff --git a/SPECS/man-pages.spec b/SPECS/man-pages.spec new file mode 100644 index 0000000..48b1709 --- /dev/null +++ b/SPECS/man-pages.spec @@ -0,0 +1,56 @@ +#TARBALL: https://www.kernel.org/pub/linux/docs/man-pages/man-pages-4.16.tar.xz +#MD5SUM: ad9f1ff81276fe8d90d077484d6d4b5e;SOURCES/man-pages-4.16.tar.xz +#----------------------------------------------------------------------------- +Summary: Man pages +Name: man-pages +Version: 4.16 +Release: 1 +License: GPLv2 +URL: http://www.kernel.org/doc/man-pages +Group: LFS/Base +Vendor: Elizabeth +Source: http://www.kernel.org/pub/linux/docs/man-pages/%{name}-%{version}.tar.xz +Requires: filesystem +%description +The Man-pages package contains over 1,900 man pages. +#----------------------------------------------------------------------------- +%prep +%setup -q +%build +%install + make DESTDIR=%{buildroot} install +#----------------------------------------------------------------------------- +# Copy license/copying file + install -D -m644 man-pages-%{version}.Announce %{buildroot}/usr/share/licenses/%{name}/LICENSE +#----------------------------------------------------------------------------- +# Create file list +# rm %{buildroot}%{_infodir}/dir + find %{buildroot} -name '*.la' -delete + find "${RPM_BUILD_ROOT}" -not -type d -print > filelist.rpm + sed -i "s|^${RPM_BUILD_ROOT}||" filelist.rpm + sed -i '/man\/man/d' filelist.rpm + sed -i '/\/usr\/share\/info/d' filelist.rpm +#----------------------------------------------------------------------------- +%files + %defattr(-,root,root) + %{_mandir}/man1/*.gz + %{_mandir}/man2/*.gz + %{_mandir}/man3/*.gz + %{_mandir}/man4/*.gz + %{_mandir}/man5/*.gz + %{_mandir}/man6/*.gz + %{_mandir}/man7/*.gz + %{_mandir}/man8/*.gz + %{_datarootdir}/licenses/man-pages/LICENSE +#----------------------------------------------------------------------------- +%changelog +* Fri Mar 15 2019 baho-utot 4.16-1 +* Mon Mar 19 2018 baho-utot 4.15-1 +* Tue Dec 19 2017 baho-utot 4.12-1 +* Sat Mar 22 2014 baho-utot 3.59-1 +* Sat Aug 24 2013 baho-utot 3.53-1 +* Fri May 10 2013 baho-utot 3.51-1 +* Sun Mar 24 2013 baho-utot 3.50-1 +* Wed Jan 30 2013 baho-utot 3.42-1 + + diff --git a/SPECS/meson.spec b/SPECS/meson.spec new file mode 100644 index 0000000..542dcdf --- /dev/null +++ b/SPECS/meson.spec @@ -0,0 +1,45 @@ +#TARBALL: https://github.com/mesonbuild/meson/releases/download/0.49.2/meson-0.49.2.tar.gz +#MD5SUM: 0267b0871266056184c484792572c682;SOURCES/meson-0.49.2.tar.gz +#----------------------------------------------------------------------------- +Summary: Meson is an open source build system +Name: meson +Version: 0.49.2 +Release: 1 +License: Any +URL: Any +Group: LFS/Base +Vendor: Elizabeth +Source: %{name}-%{version}.tar.gz +Requires: filesystem +%description +Meson is an open source build system meant to be both extremely fast, and, even more importantly, as user friendly as possible. +#----------------------------------------------------------------------------- +%prep +%setup -q -n %{NAME}-%{VERSION} +%build + python3 setup.py build +%install + install -vdm 755 %{buildroot}/usr/lib/python3.7/site-packages/ + python3 setup.py install --root="%{buildroot}" --optimize=1 --skip-build +#----------------------------------------------------------------------------- +# Copy license/copying file +# install -D -m644 LICENSE %{buildroot}/usr/share/licenses/%{name}/LICENSE + install -D -m644 COPYING %{buildroot}/usr/share/licenses/%{name}/LICENSE +#----------------------------------------------------------------------------- +# Create file list +# rm %{buildroot}%{_infodir}/dir + find %{buildroot} -name '*.la' -delete + find "${RPM_BUILD_ROOT}" -not -type d -print > filelist.rpm + sed -i "s|^${RPM_BUILD_ROOT}||" filelist.rpm + sed -i '/man\/man/d' filelist.rpm + sed -i '/\/usr\/share\/info/d' filelist.rpm +#----------------------------------------------------------------------------- +%files -f filelist.rpm + %defattr(-,root,root) + %{_mandir}/man1/meson.1.gz +#----------------------------------------------------------------------------- +%changelog +* Sat Apr 06 2019 baho-utot 0.49.2-1 +- LFS-8.4 +* Wed Jul 25 2018 baho-utot 0.44.0-1 +- Initial build. First version diff --git a/SPECS/mkinitramfs.spec b/SPECS/mkinitramfs.spec new file mode 100644 index 0000000..714b0e7 --- /dev/null +++ b/SPECS/mkinitramfs.spec @@ -0,0 +1,321 @@ +#----------------------------------------------------------------------------- +Summary: mkinitramfs creates images for use as initial ramdisk (initrd) images. +Name: mkinitramfs +Version: 8.2 +Release: 1 +License: Any +URL: www.linuxfromscratch.org/blfs +Group: LFS/Base +Vendor: Elizabeth +#Source: %%{name}-%%{version} +Requires: filesystem +Requires: cpio +%description +The only purpose of an initramfs is to mount the root filesystem. +The initramfs is a complete set of directories that you would find on a normal +root filesystem. It is bundled into a single cpio archive and compressed +with one of several compression algorithms. + +At boot time, the boot loader loads the kernel and the initramfs image into +memory and starts the kernel. The kernel checks for the presence of the +initramfs and, if found, mounts it as / and runs /init. The init program is +typically a shell script. Note that the boot process takes longer, possibly +significantly longer, if an initramfs is used. + +For most distributions, kernel modules are the biggest reason to have an +initramfs. In a general distribution, there are many unknowns such as +file system types and disk layouts. In a way, this is the opposite of LFS +where the system capabilities and layout are known and a custom kernel is +normally built. In this situation, an initramfs is rarely needed. + +There are only four primary reasons to have an initramfs in the +LFS environment: loading the rootfs from a network, loading it from an +LVM logical volume, having an encrypted rootfs where a password is required, +or for the convenience of specifying the rootfs as a LABEL or UUID. +Anything else usually means that the kernel was not configured properly. +#----------------------------------------------------------------------------- +%prep +# rm -rf %{buildroot}/* +%build +%install +#----------------------------------------------------------------------------- + install -vdm 755 %{buildroot}/sbin + cat > %{buildroot}/sbin/mkinitramfs <<- "EOF" + #!/bin/bash + # This file based in part on the mkinitramfs script for the LFS LiveCD + # written by Alexander E. Patrakov and Jeremy Huntwork. + # set -o errexit # exit if error...insurance ;) + # set -o nounset # exit if variable not initalized + # set +h # disable hashall + copy() { + local file + if [ "$2" == "lib" ]; then + file=$(PATH=/lib:/usr/lib type -p $1) + else + file=$(type -p $1) + fi + if [ -n $file ] ; then + cp $file $WDIR/$2 + else + echo "Missing required file: $1 for directory $2" + rm -rf $WDIR + exit 1 + fi + } + if [ -z $1 ] ; then + INITRAMFS_FILE=initrd.img-no-kmods + else + KERNEL_VERSION=$1 + INITRAMFS_FILE=initrd.img-$KERNEL_VERSION + fi + if [ -n "$KERNEL_VERSION" ] && [ ! -d "/lib/modules/$1" ] ; then + echo "No modules directory named $1" + exit 1 + fi + printf "Creating $INITRAMFS_FILE... " + binfiles="sh cat cp dd killall ls mkdir mknod mount " + binfiles="$binfiles umount sed sleep ln rm uname" + binfiles="$binfiles readlink basename" + # + # Systemd installs udevadm in /bin. Other udev implementations have it in /sbin + if [ -x /bin/udevadm ] ; then binfiles="$binfiles udevadm"; fi + sbinfiles="modprobe blkid switch_root" + # + #Optional files and locations + for f in mdadm mdmon udevd udevadm; do + if [ -x /sbin/$f ] ; then sbinfiles="$sbinfiles $f"; fi + done + unsorted=$(mktemp /tmp/unsorted.XXXXXXXXXX) + DATADIR=/usr/share/mkinitramfs + INITIN=init.in + # + # Create a temporary working directory + WDIR=$(mktemp -d /tmp/initrd-work.XXXXXXXXXX) + # + # Create base directory structure + mkdir -p $WDIR/{bin,dev,lib/firmware,run,sbin,sys,proc,usr} + mkdir -p $WDIR/etc/{modprobe.d,udev/rules.d} + touch $WDIR/etc/modprobe.d/modprobe.conf + ln -s lib $WDIR/lib64 + ln -s ../bin $WDIR/usr/bin + # + # Create necessary device nodes + mknod -m 640 $WDIR/dev/console c 5 1 + mknod -m 664 $WDIR/dev/null c 1 3 + # + # Install the udev configuration files + if [ -f /etc/udev/udev.conf ]; then cp /etc/udev/udev.conf $WDIR/etc/udev/udev.conf; fi + for file in $(find /etc/udev/rules.d/ -type f) ; do + cp $file $WDIR/etc/udev/rules.d + done + # + # Install any firmware present + cp -a /lib/firmware $WDIR/lib + # + # Copy the RAID configuration file if present + if [ -f /etc/mdadm.conf ]; then cp /etc/mdadm.conf $WDIR/etc; fi + # + # Install the init file + install -m0755 $DATADIR/$INITIN $WDIR/init + if [ -n "$KERNEL_VERSION" ] ; then + if [ -x /bin/kmod ] ; then + binfiles="$binfiles kmod" + else + binfiles="$binfiles lsmod" + sbinfiles="$sbinfiles insmod" + fi + fi + # + # Install basic binaries + for f in $binfiles ; do + if [ -e /bin/$f ]; then d="/bin"; else d="/usr/bin"; fi + ldd $d/$f | sed "s/\t//" | cut -d " " -f1 >> $unsorted + copy $d/$f bin + done + # + # Add lvm if present + if [ -x /sbin/lvm ] ; then sbinfiles="$sbinfiles lvm dmsetup"; fi + for f in $sbinfiles ; do + ldd /sbin/$f | sed "s/\t//" | cut -d " " -f1 >> $unsorted + copy $f sbin + done + # + # Add udevd libraries if not in /sbin + if [ -x /lib/udev/udevd ] ; then + ldd /lib/udev/udevd | sed "s/\t//" | cut -d " " -f1 >> $unsorted + elif [ -x /lib/systemd/systemd-udevd ] ; then + ldd /lib/systemd/systemd-udevd | sed "s/\t//" | cut -d " " -f1 >> $unsorted + fi + # + # Add module symlinks if appropriate + if [ -n "$KERNEL_VERSION" ] && [ -x /bin/kmod ] ; then + ln -s kmod $WDIR/bin/lsmod + ln -s kmod $WDIR/bin/insmod + fi + # + # Add lvm symlinks if appropriate + # Also copy the lvm.conf file + if [ -x /sbin/lvm ] ; then + ln -s lvm $WDIR/sbin/lvchange + ln -s lvm $WDIR/sbin/lvrename + ln -s lvm $WDIR/sbin/lvextend + ln -s lvm $WDIR/sbin/lvcreate + ln -s lvm $WDIR/sbin/lvdisplay + ln -s lvm $WDIR/sbin/lvscan + ln -s lvm $WDIR/sbin/pvchange + ln -s lvm $WDIR/sbin/pvck + ln -s lvm $WDIR/sbin/pvcreate + ln -s lvm $WDIR/sbin/pvdisplay + ln -s lvm $WDIR/sbin/pvscan + ln -s lvm $WDIR/sbin/vgchange + ln -s lvm $WDIR/sbin/vgcreate + ln -s lvm $WDIR/sbin/vgscan + ln -s lvm $WDIR/sbin/vgrename + ln -s lvm $WDIR/sbin/vgck + # Conf file(s) + cp -a /etc/lvm $WDIR/etc + fi + # + # Install libraries + sort $unsorted | uniq | while read library ; do + if [ "$library" == "linux-vdso.so.1" ] || + [ "$library" == "linux-gate.so.1" ]; then + continue + fi + copy $library lib + done + if [ -d /lib/udev ]; then cp -a /lib/udev $WDIR/lib; fi + if [ -d /lib/systemd ]; then cp -a /lib/systemd $WDIR/lib; fi + # + # Install the kernel modules if requested + if [ -n "$KERNEL_VERSION" ]; then + find \ + /lib/modules/$KERNEL_VERSION/kernel/{crypto,fs,lib} \ + /lib/modules/$KERNEL_VERSION/kernel/drivers/{block,ata,md,firewire} \ + /lib/modules/$KERNEL_VERSION/kernel/drivers/{scsi,message,pcmcia,virtio} \ + /lib/modules/$KERNEL_VERSION/kernel/drivers/usb/{host,storage} \ + -type f 2> /dev/null | cpio --make-directories -p --quiet $WDIR + cp /lib/modules/$KERNEL_VERSION/modules.{builtin,order} $WDIR/lib/modules/$KERNEL_VERSION + depmod -b $WDIR $KERNEL_VERSION + fi + ( cd $WDIR ; find . | cpio -o -H newc --quiet | gzip -9 ) > $INITRAMFS_FILE + # + # Remove the temporary directory and file + rm -rf $WDIR $unsorted + printf "done.\n" + EOF + chmod 0755 %{buildroot}/sbin/mkinitramfs +#----------------------------------------------------------------------------- + install -vdm 755 %{buildroot}/usr/share/mkinitramfs + cat > %{buildroot}/usr/share/mkinitramfs/init.in <<- "EOF" + #!/bin/sh + PATH=/bin:/usr/bin:/sbin:/usr/sbin + export PATH + problem() { + printf "Encountered a problem!\n\nDropping you to a shell.\n\n" + sh + } + no_device() { + printf "The device %s, which is supposed to contain the\n" $1 + printf "root file system, does not exist.\n" + printf "Please fix this problem and exit this shell.\n\n" + } + no_mount() { + printf "Could not mount device %s\n" $1 + printf "Sleeping forever. Please reboot and fix the kernel command line.\n\n" + printf "Maybe the device is formatted with an unsupported file system?\n\n" + printf "Or maybe filesystem type autodetection went wrong, in which case\n" + printf "you should add the rootfstype=... parameter to the kernel command line.\n\n" + printf "Available partitions:\n" + } + do_mount_root() { + mkdir /.root + [ -n "$rootflags" ] && rootflags="$rootflags," + rootflags="$rootflags$ro" + case "$root" in + /dev/* ) device=$root ;; + UUID=* ) eval $root; device="/dev/disk/by-uuid/$UUID" ;; + LABEL=*) eval $root; device="/dev/disk/by-label/$LABEL" ;; + "" ) echo "No root device specified." ; problem ;; + esac + while [ ! -b "$device" ] ; do + no_device $device + problem + done + if ! mount -n -t "$rootfstype" -o "$rootflags" "$device" /.root ; then + no_mount $device + cat /proc/partitions + while true ; do sleep 10000 ; done + else + echo "Successfully mounted device $root" + fi + } + init=/sbin/init + root= + rootdelay= + rootfstype=auto + ro="ro" + rootflags= + device= + mount -n -t devtmpfs devtmpfs /dev + mount -n -t proc proc /proc + mount -n -t sysfs sysfs /sys + mount -n -t tmpfs tmpfs /run + read -r cmdline < /proc/cmdline + for param in $cmdline ; do + case $param in + init=* ) init=${param#init=} ;; + root=* ) root=${param#root=} ;; + rootdelay=* ) rootdelay=${param#rootdelay=} ;; + rootfstype=*) rootfstype=${param#rootfstype=} ;; + rootflags=* ) rootflags=${param#rootflags=} ;; + ro ) ro="ro" ;; + rw ) ro="rw" ;; + esac + done + # + # udevd location depends on version + if [ -x /sbin/udevd ]; then + UDEVD=/sbin/udevd + elif [ -x /lib/udev/udevd ]; then + UDEVD=/lib/udev/udevd + elif [ -x /lib/systemd/systemd-udevd ]; then + UDEVD=/lib/systemd/systemd-udevd + else + echo "Cannot find udevd nor systemd-udevd" + problem + fi + ${UDEVD} --daemon --resolve-names=never + udevadm trigger + udevadm settle + if [ -f /etc/mdadm.conf ]; then mdadm -As; fi + if [ -x /sbin/vgchange ]; then /sbin/vgchange -a y > /dev/null; fi + if [ -n "$rootdelay" ]; then sleep "$rootdelay"; fi + do_mount_root + killall -w ${UDEVD##*/} + exec switch_root /.root "$init" "$@" + EOF +#----------------------------------------------------------------------------- +# Copy license/copying file +# install -D -m644 LICENSE %{buildroot}/usr/share/licenses/%{name}/LICENSE +# install -D -m644 COPYING %{buildroot}/usr/share/licenses/%{name}/LICENSE +#----------------------------------------------------------------------------- +# Create file list +# rm %{buildroot}%{_infodir}/dir +# find %{buildroot} -name '*.la' -delete + find "${RPM_BUILD_ROOT}" -not -type d -print > filelist.rpm + sed -i "s|^${RPM_BUILD_ROOT}||" filelist.rpm +# sed -i '/man\/man/d' filelist.rpm +# sed -i '/\/usr\/share\/info/d' filelist.rpm +#----------------------------------------------------------------------------- +%files -f filelist.rpm + %defattr(-,root,root) +# %%{_infodir}/*.gz +# %%{_mandir}/man1/*.gz +#----------------------------------------------------------------------------- +%post +%postun +#----------------------------------------------------------------------------- +%changelog +* Sun Sep 09 2018 baho-utot 8.2-1 +- Initial build. First version diff --git a/SPECS/mpc.spec b/SPECS/mpc.spec new file mode 100644 index 0000000..863267f --- /dev/null +++ b/SPECS/mpc.spec @@ -0,0 +1,49 @@ +#TARBALL: https://ftp.gnu.org/gnu/mpc/mpc-1.1.0.tar.gz +#MD5SUM: 4125404e41e482ec68282a2e687f6c73;SOURCES/mpc-1.1.0.tar.gz +#----------------------------------------------------------------------------- +Summary: The MPC package contains a library for the arithmetic of complex numbers +Name: mpc +Version: 1.1.0 +Release: 1 +License: LGPLv3 +URL: Any +Group: LFS/Base +Vendor: Elizabeth +Source0: http://www.multiprecision.org/%{name}/download/%{name}-%{version}.tar.gz +Requires: filesystem +%description +The MPC package contains a library for the arithmetic of +complex numbers with arbitrarily high precision and correct +rounding of the result. +#----------------------------------------------------------------------------- +%prep +%setup -q -n %{NAME}-%{VERSION} +%build + ./configure \ + --prefix=%{_prefix} \ + --disable-static \ + --docdir=%{_docdir}/%{NAME}-%{VERSION} + make %{?_smp_mflags} + make %{?_smp_mflags} html +%install + make DESTDIR=%{buildroot} install + make DESTDIR=%{buildroot} install-html +#----------------------------------------------------------------------------- +# Copy license/copying file + install -D -m644 COPYING.LESSER %{buildroot}/usr/share/licenses/%{name}/LICENSE +#----------------------------------------------------------------------------- +# Create file list + rm %{buildroot}%{_infodir}/dir + find %{buildroot} -name '*.la' -delete + find "${RPM_BUILD_ROOT}" -not -type d -print > filelist.rpm + sed -i "s|^${RPM_BUILD_ROOT}||" filelist.rpm + sed -i '/man\/man/d' filelist.rpm + sed -i '/\/usr\/share\/info/d' filelist.rpm +#----------------------------------------------------------------------------- +%files -f filelist.rpm + %defattr(-,root,root) + %{_infodir}/*.gz +#----------------------------------------------------------------------------- +%changelog +* Tue Jan 09 2018 baho-utot 1.1.0-1 +- Initial build. First version diff --git a/SPECS/mpfr.spec b/SPECS/mpfr.spec new file mode 100644 index 0000000..2d83a3a --- /dev/null +++ b/SPECS/mpfr.spec @@ -0,0 +1,50 @@ +#TARBALL: http://www.mpfr.org/mpfr-4.0.1/mpfr-4.0.2.tar.xz +#MD5SUM: 320fbc4463d4c8cb1e566929d8adc4f8;SOURCES/mpfr-4.0.2.tar.xz +#----------------------------------------------------------------------------- +Summary: The MPFR package contains functions for multiple precision math. +Name: mpfr +Version: 4.0.2 +Release: 1 +License: GPLv3 +URL: Any +Group: LFS/Base +Vendor: Elizabeth +Source0: http://www.mpfr.org/%{name}-%{version}/%{name}-%{version}.tar.xz +Requires: filesystem +%description +The MPFR package contains functions for multiple precision math. +#----------------------------------------------------------------------------- +%prep +%setup -q -n %{NAME}-%{VERSION} +%build + ./configure \ + --prefix=%{_prefix} \ + --disable-static \ + --enable-thread-safe \ + --docdir=%{_docdir}/%NAME}-%{VERSION} + make %{?_smp_mflags} + make %{?_smp_mflags} html +%install + make DESTDIR=%{buildroot} install + make DESTDIR=%{buildroot} install-html +#----------------------------------------------------------------------------- +# Copy license/copying file + install -D -m644 COPYING %{buildroot}/usr/share/licenses/%{name}/LICENSE +#----------------------------------------------------------------------------- +# Create file list + rm %{buildroot}%{_infodir}/dir + find %{buildroot} -name '*.la' -delete + find "${RPM_BUILD_ROOT}" -not -type d -print > filelist.rpm + sed -i "s|^${RPM_BUILD_ROOT}||" filelist.rpm + sed -i '/man\/man/d' filelist.rpm + sed -i '/\/usr\/share\/info/d' filelist.rpm +#----------------------------------------------------------------------------- +%files -f filelist.rpm + %defattr(-,root,root) + %{_infodir}/*.gz +#----------------------------------------------------------------------------- +%changelog +* Tue Mar 26 2019 baho-utot 4.0.2-1 +- update to version 4.0.2 +* Tue Jan 09 2018 baho-utot 4.0.1-1 +- Initial build. First version diff --git a/SPECS/ncurses.spec b/SPECS/ncurses.spec new file mode 100644 index 0000000..8074608 --- /dev/null +++ b/SPECS/ncurses.spec @@ -0,0 +1,66 @@ +#TARBALL: http://ftp.gnu.org/gnu//ncurses/ncurses-6.1.tar.gz +#MD5SUM: 98c889aaf8d23910d2b92d65be2e737a;SOURCES/ncurses-6.1.tar.gz +#----------------------------------------------------------------------------- +Summary: The Ncurses package contains libraries for terminal-independent handling of character screens. +Name: ncurses +Version: 6.1 +Release: 1 +License: GPL +URL: Any +Group: LFS/Base +Vendor: Elizabeth +Source0: http://ftp.gnu.org/gnu//ncurses/%{name}-%{version}.tar.gz +Requires: filesystem +%description +The Ncurses package contains libraries for terminal-independent handling of character screens. +#----------------------------------------------------------------------------- +%prep +%setup -q -n %{NAME}-%{VERSION} + sed -i '/LIBTOOL_INSTALL/d' c++/Makefile.in +%build + ./configure \ + --prefix=%{_prefix} \ + --mandir=%{_mandir} \ + --with-shared \ + --without-debug \ + --without-normal \ + --enable-pc-files \ + --enable-widec + make %{?_smp_mflags} +%install + make DESTDIR=%{buildroot} install + install -vdm 755 %{buildroot}/lib + mv -v %{buildroot}%{_libdir}/libncursesw.so.6* %{buildroot}/lib + ln -sfv ../../lib/$(readlink %{buildroot}%{_libdir}/libncursesw.so) %{buildroot}%{_libdir}/libncursesw.so + for lib in ncurses form panel menu ; do + rm -vf %{buildroot}%{_libdir}/lib${lib}.so + echo "INPUT(-l${lib}w)" > %{buildroot}%{_libdir}/lib${lib}.so + ln -sfv ${lib}w.pc %{buildroot}%{_libdir}/pkgconfig/${lib}.pc + done + rm -vf %{buildroot}%{_libdir}/libcursesw.so + echo "INPUT(-lncursesw)" > %{buildroot}%{_libdir}/libcursesw.so + ln -sfv libncurses.so %{buildroot}%{_libdir}/libcurses.so + install -vdm 755 %{buildroot}%{_docdir}/%{NAME}-%{VERSION} + cp -v -R doc/* %{buildroot}%{_docdir}/%{NAME}-%{VERSION} +#----------------------------------------------------------------------------- +# Copy license/copying file + install -D -m644 COPYING %{buildroot}/usr/share/licenses/%{name}/LICENSE +#----------------------------------------------------------------------------- +# Create file list +# rm %{buildroot}%{_infodir}/dir + find %{buildroot} -name '*.la' -delete + find "${RPM_BUILD_ROOT}" -not -type d -print > filelist.rpm + sed -i "s|^${RPM_BUILD_ROOT}||" filelist.rpm + sed -i '/man\/man/d' filelist.rpm + sed -i '/\/usr\/share\/info/d' filelist.rpm +#----------------------------------------------------------------------------- +%files -f filelist.rpm + %defattr(-,root,root) + %{_mandir}/man1/*.gz + %{_mandir}/man3/*.gz + %{_mandir}/man5/*.gz + %{_mandir}/man7/*.gz +#----------------------------------------------------------------------------- +%changelog +* Tue Jan 09 2018 baho-utot 6.1-1 +- Initial build. First version diff --git a/SPECS/ninja.spec b/SPECS/ninja.spec new file mode 100644 index 0000000..a1a6ed2 --- /dev/null +++ b/SPECS/ninja.spec @@ -0,0 +1,45 @@ +#TARBALL: https://github.com/ninja-build/ninja/archive/v1.9.0/ninja-1.9.0.tar.gz +#MD5SUM: f340be768a76724b83e6daab69009902;SOURCES/ninja-1.9.0.tar.gz +#----------------------------------------------------------------------------- +Summary: Ninja is a small build system with a focus on speed. +Name: ninja +Version: 1.9.0 +Release: 1 +License: Any +URL: Any +Group: LFS/Base +Vendor: Elizabeth +Source: %{name}-%{version}.tar.gz +Requires: filesystem +%description +Ninja is a small build system with a focus on speed. +#----------------------------------------------------------------------------- +%prep +%setup -q -n %{NAME}-%{VERSION} +%build + python3 configure.py --bootstrap +%install + install -vdm 755 %{buildroot}/usr/bin/ + install -vDm644 ninja %{buildroot}/usr/bin/ + install -vDm644 misc/bash-completion %{buildroot}/usr/share/bash-completion/completions/ninja + install -vDm644 misc/zsh-completion %{buildroot}/usr/share/zsh/site-functions/_ninja +#----------------------------------------------------------------------------- +# Copy license/copying file +# install -D -m644 LICENSE %{buildroot}/usr/share/licenses/%{name}/LICENSE + install -D -m644 COPYING %{buildroot}/usr/share/licenses/%{name}/LICENSE +#----------------------------------------------------------------------------- +# Create file list +# rm %{buildroot}%{_infodir}/dir + find %{buildroot} -name '*.la' -delete + find "${RPM_BUILD_ROOT}" -not -type d -print > filelist.rpm + sed -i "s|^${RPM_BUILD_ROOT}||" filelist.rpm + sed -i '/man\/man/d' filelist.rpm + sed -i '/\/usr\/share\/info/d' filelist.rpm +#----------------------------------------------------------------------------- +%files -f filelist.rpm + %defattr(-,root,root) +%changelog +* Sat Apr 06 2019 baho-utot 1.9.0-1 +- LFS-8.4 +* Wed Jul 25 2018 baho-utot 1.8.2-1 +- Initial build. First version diff --git a/SPECS/openssl.spec b/SPECS/openssl.spec new file mode 100644 index 0000000..bb531f3 --- /dev/null +++ b/SPECS/openssl.spec @@ -0,0 +1,60 @@ +#TARBALL: https://openssl.org/source/openssl-1.1.1a.tar.gz +#MD5SUM: 963deb2272d6be7d4c2458afd2517b73;SOURCES/openssl-1.1.1a.tar.gz +%define __requires_exclude perl\\(WWW::Curl::Easy) +#----------------------------------------------------------------------------- +Summary: The OpenSSL package contains management tools and libraries relating to cryptography +Name: openssl +Version: 1.1.1a +Release: 1 +License: GPL +URL: https://openssl.org/source +Group: LFS/Base +Vendor: Elizabeth +Source0: https://openssl.org/source/%{name}-%{version}.tar.gz +Requires: filesystem +%description +The OpenSSL package contains management tools and libraries relating to cryptography. +These are useful for providing cryptographic functions to other packages, such as OpenSSH, +email applications and web browsers (for accessing HTTPS sites). +#----------------------------------------------------------------------------- +%prep +%setup -q -n %{name}-%{version} +%build + ./config \ + --prefix=%{_prefix} \ + --openssldir=/etc/ssl \ + --libdir=lib \ + shared \ + zlib-dynamic \ + enable-md2 + make %{?_smp_mflags} +%install + sed -i '/INSTALL_LIBS/s/libcrypto.a libssl.a//' Makefile + make DESTDIR=%{buildroot} MANSUFFIX=ssl install + mv -v %{buildroot}/usr/share/doc/openssl{,-1.1.0g} && + cp -vfr doc/* %{buildroot}/usr/share/doc/openssl-1.1.0g +#----------------------------------------------------------------------------- +# Copy license/copying file + install -D -m644 LICENSE %{buildroot}/usr/share/licenses/%{name}/LICENSE +#----------------------------------------------------------------------------- +# Create file list +# rm %{buildroot}%{_infodir}/dir + find %{buildroot} -name '*.la' -delete + find "${RPM_BUILD_ROOT}" -not -type d -print > filelist.rpm + sed -i "s|^${RPM_BUILD_ROOT}||" filelist.rpm + sed -i '/man\/man/d' filelist.rpm + sed -i '/\/usr\/share\/info/d' filelist.rpm +#----------------------------------------------------------------------------- +%files -f filelist.rpm + %defattr(-,root,root) + %{_mandir}/man1/*.gz + %{_mandir}/man3/*.gz + %{_mandir}/man5/*.gz + %{_mandir}/man7/*.gz +#----------------------------------------------------------------------------- +%changelog +* Sun Feb 03 2019 baho-utot 1.1.1a-1 +- LFS-8.4 +* Mon Jan 01 2018 baho-utot 1.1.0f-1 +* Fri Jul 17 2018 baho-utot 1.1.0g-1 +- LFS-8.1 diff --git a/SPECS/patch.spec b/SPECS/patch.spec new file mode 100644 index 0000000..34c5a9b --- /dev/null +++ b/SPECS/patch.spec @@ -0,0 +1,44 @@ +#TARBALL: http://ftp.gnu.org/gnu/patch/patch-2.7.6.tar.xz +#MD5SUM: 78ad9937e4caadcba1526ef1853730d5;SOURCES/patch-2.7.6.tar.xz +#----------------------------------------------------------------------------- +Summary: The Patch package contains a program for modifying or creating files. +Name: patch +Version: 2.7.6 +Release: 1 +License: GPLv3 +URL: Any +Group: LFS/Base +Vendor: Elizabeth +Source0: %{name}-%{version}.tar.xz +Requires: filesystem +%description +The Patch package contains a program for modifying or creating +files by applying a patch file typically created by the diff program. +#----------------------------------------------------------------------------- +%prep +%setup -q -n %{NAME}-%{VERSION} +%build + ./configure --prefix=%{_prefix} + make %{?_smp_mflags} +%install + make DESTDIR=%{buildroot} install +#----------------------------------------------------------------------------- +# Copy license/copying file + install -D -m644 COPYING %{buildroot}/usr/share/licenses/%{name}/LICENSE +#----------------------------------------------------------------------------- +# Create file list +# rm %{buildroot}%{_infodir}/dir + find %{buildroot} -name '*.la' -delete + find "${RPM_BUILD_ROOT}" -not -type d -print > filelist.rpm + sed -i "s|^${RPM_BUILD_ROOT}||" filelist.rpm + sed -i '/man\/man/d' filelist.rpm + sed -i '/\/usr\/share\/info/d' filelist.rpm +#----------------------------------------------------------------------------- +%files -f filelist.rpm + %defattr(-,root,root) +# %%{_infodir}/*.gz + %{_mandir}/man1/*.gz +#----------------------------------------------------------------------------- +%changelog +* Tue Jan 09 2018 baho-utot 2.7.6-1 +- Initial build. First version diff --git a/SPECS/perl.spec b/SPECS/perl.spec new file mode 100644 index 0000000..0119fb5 --- /dev/null +++ b/SPECS/perl.spec @@ -0,0 +1,68 @@ +#TARBALL: https://www.cpan.org/src/5.0/perl-5.28.1.tar.xz +#MD5SUM: fbb590c305f2f88578f448581b8cf9c4;SOURCES/perl-5.28.1.tar.xz +%define __requires_exclude perl\\((VMS|BSD::|Win32|Tk|Mac::|Your::Module::Here|unicore::Name|FCGI|Locale::Codes::.*(Code|Retired)) +#|^perl\\(\s\\) +# the following suppresses dependency checks on all modules in /usr/lib/perl5/5.28.1 directories +%define __requires_exclude_from %{_libdir}/perl5 +#----------------------------------------------------------------------------- +Summary: The Perl package contains the Practical Extraction and Report Language. +Name: perl +Version: 5.28.1 +Release: 1 +License: GPLv1 +URL: Any +Group: LFS/Base +Vendor: Elizabeth +Source0: http://www.cpan.org/src/5.0/%{name}-%{version}.tar.xz +Provides: perl = 1:5 +Provides: perl = 1:5.8.0 +Provides: perl = 0:5.008001 +Provides: perl = 0:5.009001 +Requires: filesystem +%description +The Perl package contains the Practical Extraction and Report Language. +#----------------------------------------------------------------------------- +%prep +%setup -q -n %{NAME}-%{VERSION} +%build + export BUILD_ZLIB=False + export BUILD_BZIP2=0 + sh Configure -des -Dprefix=/usr \ + -Dvendorprefix=/usr \ + -Dman1dir=%{_mandir}/man1 \ + -Dman3dir=%{_mandir}/man3 \ + -Dpager="${_sbindir}/less -isR" \ + -Duseshrplib \ + -Dusethreads +# -Doptimize="${CFLAGS}" \ +# -Dcccdlflags='-fPIC' \ +# -Dlddlflags="-shared ${LDFLAGS}" -Dldflags="${LDFLAGS}" +# ulimit -s unlimited;make %{?_smp_mflags} + make %{?_smp_mflags} +%install + make DESTDIR=%{buildroot} install +#----------------------------------------------------------------------------- +# Copy license/copying file + install -D -m644 Copying %{buildroot}/usr/share/licenses/%{name}/LICENSE +# rm -rf %{buildroot}%{_docdir} %{buildroot}%{_mandir} +#----------------------------------------------------------------------------- +# Create file list +# rm %{buildroot}%{_infodir}/dir + find %{buildroot} -name '*.la' -delete + find "${RPM_BUILD_ROOT}" -not -type d -print > filelist.rpm + sed -i "s|^${RPM_BUILD_ROOT}||" filelist.rpm + sed -i '/man\/man/d' filelist.rpm + sed -i '/\/usr\/share\/info/d' filelist.rpm +#----------------------------------------------------------------------------- +%files -f filelist.rpm + %defattr(-,root,root) + %{_mandir}/man1/*.gz + %{_mandir}/man3/*.gz +# %%{_bindir}/%%{NAME}%%{VERSION} +# %%{_libdir}/%%{NAME}5/%%{VERSION}/*.pm +#----------------------------------------------------------------------------- +%changelog +* Fri Apr 05 2019 baho-utot 5.28.1-1 +- Update for LFS-8.4 +* Tue Jan 09 2018 baho-utot 5.26.1-1 +- Initial build. First version diff --git a/SPECS/pkg-config.spec b/SPECS/pkg-config.spec new file mode 100644 index 0000000..cb1abef --- /dev/null +++ b/SPECS/pkg-config.spec @@ -0,0 +1,46 @@ +#TARBALL: https://pkg-config.freedesktop.org/releases/pkg-config-0.29.2.tar.gz +#MD5SUM: f6e931e319531b736fadc017f470e68a;SOURCES/pkg-config-0.29.2.tar.gz +#----------------------------------------------------------------------------- +Summary: pkg-config package contains a tool for passing the include and library paths +Name: pkg-config +Version: 0.29.2 +Release: 1 +License: GPLv2 +URL: Any +Group: LFS/Base +Vendor: Elizabeth +Source0: https://pkg-config.freedesktop.org/releases/%{name}-%{version}.tar.gz +Requires: filesystem +%description +The pkg-config package contains a tool for passing the include path and/or +library paths to build tools during the configure and make file execution. +#----------------------------------------------------------------------------- +%prep +%setup -q -n %{NAME}-%{VERSION} + ./configure \ + --prefix=%{_prefix} \ + --with-internal-glib \ + --disable-host-tool \ + --docdir=%{_docdir}/%{NAME}-%{VERSION} + make %{?_smp_mflags} +%install + make DESTDIR=%{buildroot} install +#----------------------------------------------------------------------------- +# Copy license/copying file + install -D -m644 COPYING %{buildroot}/usr/share/licenses/%{name}/LICENSE +#----------------------------------------------------------------------------- +# Create file list +# rm %{buildroot}%{_infodir}/dir + find %{buildroot} -name '*.la' -delete + find "${RPM_BUILD_ROOT}" -not -type d -print > filelist.rpm + sed -i "s|^${RPM_BUILD_ROOT}||" filelist.rpm + sed -i '/man\/man/d' filelist.rpm + sed -i '/\/usr\/share\/info/d' filelist.rpm +#----------------------------------------------------------------------------- +%files -f filelist.rpm + %defattr(-,root,root) + %{_mandir}/man1/*.gz +#----------------------------------------------------------------------------- +%changelog +* Tue Jan 09 2018 baho-utot 0.29.2-1 +- Initial build. First version diff --git a/SPECS/popt.spec b/SPECS/popt.spec new file mode 100644 index 0000000..34d2ca9 --- /dev/null +++ b/SPECS/popt.spec @@ -0,0 +1,41 @@ +#TARBALL: http://rpm5.org/files/popt/popt-1.16.tar.gz +#MD5SUM: 3743beefa3dd6247a73f8f7a32c14c33;SOURCES/popt-1.16.tar.gz +#----------------------------------------------------------------------------- +Summary: The popt package contains the popt libraries which are used by some programs parse command-line options. +Name: popt +Version: 1.16 +Release: 1 +License: GPL +URL: http://rpm5.org/files/popt +Group: BLFS/General_Libraries +Vendor: Elizabeth +Source0: http://rpm5.org/files/popt/%{name}-%{version}.tar.gz +Requires: filesystem +%description +The popt package contains the popt libraries which are used by some programs parse command-line options. +#----------------------------------------------------------------------------- +%prep +%setup -q -n %{name}-%{version} +%build + ./configure \ + --prefix=%{_prefix} \ + --disable-static + make %{?_smp_mflags} +%install + make DESTDIR=%{buildroot} install + # Copy license/copying file + install -D -m644 COPYING %{buildroot}/usr/share/licenses/%{name}/LICENSE + # Create file list + find %{buildroot} -name '*.la' -delete + find "${RPM_BUILD_ROOT}" -not -type d -print > filelist.rpm + sed -i "s|^${RPM_BUILD_ROOT}||" filelist.rpm + sed -i '/man\/man/d' filelist.rpm + sed -i '/\/usr\/share\/info/d' filelist.rpm +#----------------------------------------------------------------------------- +%files -f filelist.rpm + %defattr(-,root,root) + %{_mandir}/man3/*.gz +#----------------------------------------------------------------------------- +%changelog +* Mon Jan 01 2018 baho-utot 1.16-1 +- LFS-8.1 diff --git a/SPECS/procps-ng.spec b/SPECS/procps-ng.spec new file mode 100644 index 0000000..eeaa855 --- /dev/null +++ b/SPECS/procps-ng.spec @@ -0,0 +1,56 @@ +#TARBALL: http://sourceforge.net/projects/procps-ng/files/Production/procps-ng-3.3.15.tar.xz +#MD5SUM: 2b0717a7cb474b3d6dfdeedfbad2eccc;SOURCES/procps-ng-3.3.15.tar.xz +#----------------------------------------------------------------------------- +Summary: The Procps-ng package contains programs for monitoring processes. +Name: procps-ng +Version: 3.3.15 +Release: 1 +License: GPLv2 +URL: Any +Group: LFS/Base +Vendor: Elizabeth +Source0: %{name}-%{version}.tar.xz +Requires: filesystem +%description +The Procps-ng package contains programs for monitoring processes. +#----------------------------------------------------------------------------- +%prep +%setup -q -n %{NAME}-%{VERSION} +%build + ./configure \ + --prefix=%{_prefix} \ + --exec-prefix= \ + --libdir=%{_libdir} \ + --docdir=%{_docdir}/%{NAME}-%{VERSION} \ + --disable-static \ + --disable-kill + make %{?_smp_mflags} +%install + make DESTDIR=%{buildroot} install + install -vdm 755 %{buildroot}/lib + mv -v %{buildroot}%{_libdir}/libprocps.so.* %{buildroot}/lib + ln -sfv ../../lib/$(readlink %{buildroot}%{_libdir}/libprocps.so) %{buildroot}%{_libdir}/libprocps.so +#----------------------------------------------------------------------------- +# Copy license/copying file + install -D -m644 COPYING %{buildroot}/usr/share/licenses/%{name}/LICENSE +#----------------------------------------------------------------------------- +# Create file list +# rm %{buildroot}%{_infodir}/dir + find %{buildroot} -name '*.la' -delete + find "${RPM_BUILD_ROOT}" -not -type d -print > filelist.rpm + sed -i "s|^${RPM_BUILD_ROOT}||" filelist.rpm + sed -i '/man\/man/d' filelist.rpm + sed -i '/\/usr\/share\/info/d' filelist.rpm +#----------------------------------------------------------------------------- +%files -f filelist.rpm + %defattr(-,root,root) + %{_mandir}/man1/*.gz + %{_mandir}/man3/*.gz + %{_mandir}/man5/*.gz + %{_mandir}/man8/*.gz +#----------------------------------------------------------------------------- +%changelog +* Sat Apr 06 2019 baho-utot 3.3.15-1 +- LFS-8.4 +* Tue Jan 09 2018 baho-utot 3.3.12-1 +- Initial build. First version diff --git a/SPECS/psmisc.spec b/SPECS/psmisc.spec new file mode 100644 index 0000000..f6ec130 --- /dev/null +++ b/SPECS/psmisc.spec @@ -0,0 +1,48 @@ +#TARBALL: https://sourceforge.net/projects/psmisc/files/psmisc/psmisc-23.2.tar.xz +#MD5SUM: 0524258861f00be1a02d27d39d8e5e62;SOURCES/psmisc-23.2.tar.xz +#----------------------------------------------------------------------------- +Summary: The Psmisc package contains programs for displaying information about running processes. +Name: psmisc +Version: 23.2 +Release: 1 +License: GPLv2 +URL: Any +Group: LFS/Base +Vendor: Elizabeth +Source0: https://sourceforge.net/projects/psmisc/files/%{name}/%{name}-%{version}.tar.xz +Requires: filesystem +%description +The Psmisc package contains programs for displaying information about running processes. +#----------------------------------------------------------------------------- +%prep +%setup -q -n %{NAME}-%{VERSION} +%build + ./configure \ + --prefix=%{_prefix} + make %{?_smp_mflags} +%install + make DESTDIR=%{buildroot} install + install -vdm 755 %{buildroot}/bin + mv -v %{buildroot}%{_bindir}/fuser %{buildroot}/bin + mv -v %{buildroot}%{_bindir}/killall %{buildroot}/bin +#----------------------------------------------------------------------------- +# Copy license/copying file + install -D -m644 COPYING %{buildroot}/usr/share/licenses/%{name}/LICENSE +#----------------------------------------------------------------------------- +# Create file list +# rm %{buildroot}%{_infodir}/dir + find %{buildroot} -name '*.la' -delete + find "${RPM_BUILD_ROOT}" -not -type d -print > filelist.rpm + sed -i "s|^${RPM_BUILD_ROOT}||" filelist.rpm + sed -i '/man\/man/d' filelist.rpm + sed -i '/\/usr\/share\/info/d' filelist.rpm +#----------------------------------------------------------------------------- +%files -f filelist.rpm + %defattr(-,root,root) + %{_mandir}/man1/*.gz +#----------------------------------------------------------------------------- +%changelog +* Fri Apr 05 2019 baho-utot 23.2-1 +- Update for LFS-8.4 +* Tue Jan 09 2018 baho-utot 23.1-1 +- Initial build. First version diff --git a/SPECS/python2.spec b/SPECS/python2.spec new file mode 100644 index 0000000..7081395 --- /dev/null +++ b/SPECS/python2.spec @@ -0,0 +1,56 @@ +#TARBALL: https://www.python.org/ftp/python/2.7.15/Python-2.7.15.tar.xz +#MD5SUM: a80ae3cc478460b922242f43a1b4094d;SOURCES/Python-2.7.15.tar.xz +#----------------------------------------------------------------------------- +Summary: The Python 2 package contains the Python development environment. +Name: python2 +Version: 2.7.15 +Release: 1 +License: Any +URL: Any +Group: LFS/Base +Vendor: Elizabeth +Source0: Python-%{VERSION}.tar.xz +Requires: filesystem +%description +The Python 2 package contains the Python development environment. +This is useful for object-oriented programming, writing scripts, +prototyping large programs or developing entire applications. +#----------------------------------------------------------------------------- +%prep +cd %{_builddir} +%setup -q -n "Python-%{VERSION}" +# %%setup -q -T -D -a 1 -n Python-%{VERSION} +%build + ./configure --prefix=%{_prefix} \ + --enable-shared \ + --with-system-expat \ + --with-system-ffi \ + --with-ensurepip=yes \ + --enable-unicode=ucs4 + make %{?_smp_mflags} +%install + make DESTDIR=%{buildroot} install + chmod -v 755 %{buildroot}/usr/lib/libpython2.7.so.1.0 + rm %{buildroot}%{_libdir}/python2.7/cgi.py + rm '%{buildroot}/usr/lib/python2.7/site-packages/setuptools/command/launcher manifest.xml' + rm "%{buildroot}/usr/lib/python2.7/site-packages/setuptools/script (dev).tmpl" +#----------------------------------------------------------------------------- +# Copy license/copying file + install -D -m644 LICENSE %{buildroot}/usr/share/licenses/%{name}/LICENSE + rm %{buildroot}/usr/bin/2to3 +#----------------------------------------------------------------------------- +# Create file list +# rm %{buildroot}%{_infodir}/dir + find %{buildroot} -name '*.la' -delete + find "${RPM_BUILD_ROOT}" -not -type d -print > filelist.rpm + sed -i "s|^${RPM_BUILD_ROOT}||" filelist.rpm + sed -i '/man\/man/d' filelist.rpm + sed -i '/\/usr\/share\/info/d' filelist.rpm +#----------------------------------------------------------------------------- +%files -f filelist.rpm + %defattr(-,root,root) + %{_mandir}/man1/*.gz +#----------------------------------------------------------------------------- +%changelog +* Wed Sep 26 2018 baho-utot python2-2.7.14-1 +- Initial build. First version diff --git a/SPECS/python3.spec b/SPECS/python3.spec new file mode 100644 index 0000000..20e3377 --- /dev/null +++ b/SPECS/python3.spec @@ -0,0 +1,63 @@ +#TARBALL: https://www.python.org/ftp/python/3.7.2/Python-3.7.2.tar.xz +#MD5SUM: df6ec36011808205beda239c72f947cb;SOURCES/Python-3.7.2.tar.xz +#TARBALL: https://docs.python.org/ftp/python/doc/3.7.2/python-3.7.2-docs-html.tar.bz2 +#MD5SUM: 107ade7bb17efd104a22b2d457f4cb67;SOURCES/python-3.7.2-docs-html.tar.bz2 +#----------------------------------------------------------------------------- +Summary: The Python 3 package contains the Python development environment. +Name: python3 +Version: 3.7.2 +Release: 1 +License: Any +URL: Any +Group: LFS/Base +Vendor: Elizabeth +Source0: Python-%{VERSION}.tar.xz +Source1: python-%{VERSION}-docs-html.tar.bz2 +Requires: filesystem +%description +The Python 3 package contains the Python development environment. +This is useful for object-oriented programming, writing scripts, +prototyping large programs or developing entire applications. +#----------------------------------------------------------------------------- +%prep +cd %{_builddir} +%setup -q -n "Python-%{VERSION}" +%setup -q -T -D -a 1 -n Python-%{VERSION} +%build + ./configure \ + --prefix=%{_prefix} \ + --enable-shared \ + --with-system-expat \ + --with-system-ffi \ + --with-ensurepip=yes + make %{?_smp_mflags} +%install + make DESTDIR=%{buildroot} install + chmod -v 755 %{buildroot}/usr/lib/libpython3.7m.so + chmod -v 755 %{buildroot}/usr/lib/libpython3.so + install -v -dm755 %{buildroot}/usr/share/doc/python-%{version}/html + cp -var python-%{version}-docs-html/* %{buildroot}/usr/share/doc/python-%{version}/html + rm %{buildroot}%{_libdir}/python3.7/cgi.py + rm "%{buildroot}/usr/lib/python3.7/site-packages/setuptools/command/launcher manifest.xml" + rm "%{buildroot}/usr/lib/python3.7/site-packages/setuptools/script (dev).tmpl" +#----------------------------------------------------------------------------- +# Copy license/copying file + install -D -m644 LICENSE %{buildroot}/usr/share/licenses/%{name}/LICENSE +#----------------------------------------------------------------------------- +# Create file list +# rm %{buildroot}%{_infodir}/dir + find %{buildroot} -name '*.la' -delete + find "${RPM_BUILD_ROOT}" -not -type d -print > filelist.rpm + sed -i "s|^${RPM_BUILD_ROOT}||" filelist.rpm + sed -i '/man\/man/d' filelist.rpm + sed -i '/\/usr\/share\/info/d' filelist.rpm +#----------------------------------------------------------------------------- +%files -f filelist.rpm + %defattr(-,root,root) + %{_mandir}/man1/*.gz +#----------------------------------------------------------------------------- +%changelog +* Sat Apr 06 2019 baho-utot Python-3.7.2-1 +- LFS-8.4 +* Fri Jul 17 2018 baho-utot Python-3.6.4-1 +- Initial build. First version diff --git a/SPECS/readline.spec b/SPECS/readline.spec new file mode 100644 index 0000000..3530a0a --- /dev/null +++ b/SPECS/readline.spec @@ -0,0 +1,58 @@ +#TARBALL: http://ftp.gnu.org/gnu/readline/readline-8.0.tar.gz +#MD5SUM: 7e6c1f16aee3244a69aba6e438295ca3;SOURCES/readline-8.0.tar.gz +#----------------------------------------------------------------------------- +Summary: The Readline package is a set of libraries that offers command-line editing and history capabilities +Name: readline +Version: 8.0 +Release: 1 +License: GPLv3 +URL: http://ftp.gnu.org/gnu/readline/%{name}-%{version}.tar.gz +Group: LFS/Base +Vendor: Elizabeth +Source0: http://ftp.gnu.org/gnu/%{name}/%{name}-%{version}.tar.gz +Requires: filesystem +%description +The Readline package is a set of libraries that offers command-line editing and history capabilities +#----------------------------------------------------------------------------- +%prep +%setup -q -n %{NAME}-%{VERSION} + sed -i '/MV.*old/d' Makefile.in + sed -i '/{OLDSUFF}/c:' support/shlib-install +%build + ./configure \ + --prefix=%{_prefix} \ + --disable-static \ + --docdir=%{_mandir}/%{name}-%{version} + make %{?_smp_mflags} SHLIB_LIBS="-L/tools/lib -lncursesw" +%install + make DESTDIR=%{buildroot} SHLIB_LIBS="-L/tools/lib -lncurses" install + install -vdm 755 %{buildroot}/lib + install -vdm 755 %{buildroot}%{_libdir} + mv -v %{buildroot}%{_libdir}/lib{readline,history}.so.* %{buildroot}/lib + chmod -v u+w %{buildroot}/lib/lib{readline,history}.so.* + ln -sfv ../../lib/$(readlink %{buildroot}%{_libdir}/libreadline.so) %{buildroot}%{_libdir}/libreadline.so + ln -sfv ../../lib/$(readlink %{buildroot}%{_libdir}/libhistory.so ) %{buildroot}%{_libdir}/libhistory.so + # documentation + install -vdm 755 %{buildroot}%{_docdir}/readline-8.0 + install -v -m644 doc/*.{ps,pdf,html,dvi} %{buildroot}%{_docdir}/readline-8.0 + rm -rf %{buildroot}%{_infodir} +#----------------------------------------------------------------------------- +# Copy license/copying file + install -D -m644 COPYING %{buildroot}/usr/share/licenses/%{name}/LICENSE +#----------------------------------------------------------------------------- +# Create file list +# rm %{buildroot}%{_infodir}/dir + find %{buildroot} -name '*.la' -delete + find "${RPM_BUILD_ROOT}" -not -type d -print > filelist.rpm + sed -i "s|^${RPM_BUILD_ROOT}||" filelist.rpm + sed -i '/man\/man/d' filelist.rpm + sed -i '/\/usr\/share\/info/d' filelist.rpm +#----------------------------------------------------------------------------- +%files -f filelist.rpm + %defattr(-,root,root) + %{_mandir}/man3/*.gz +#----------------------------------------------------------------------------- +%changelog +* Mon Mar 25 2019 baho-utot 8.0-1 +* Tue Jan 09 2018 baho-utot 7.0-1 +- Initial build. First version diff --git a/SPECS/rpm.spec b/SPECS/rpm.spec new file mode 100644 index 0000000..3efc36b --- /dev/null +++ b/SPECS/rpm.spec @@ -0,0 +1,92 @@ +#TARBALL: http://ftp.rpm.org/releases/rpm-4.14.x/rpm-4.14.1.tar.bz2 +#TARBALL: http://download.oracle.com/berkeley-db/db-6.0.20.tar.gz +#MD5SUM: 1058b1a8e96b42b4fc31afc6719c8239;SOURCES/rpm-4.14.1.tar.bz2 +#MD5SUM: f73afcb308aefde7e6ece4caa87b22a9;SOURCES/db-6.0.20.tar.gz +#----------------------------------------------------------------------------- +Summary: Package manager +Name: rpm +Version: 4.14.1 +Release: 2 +License: GPLv2 +URL: http://rpm.org +Group: LFS/BASE +Vendor: Elizabeth +Source0: http://ftp.rpm.org/releases/rpm-4.14.x/%{name}-%{version}.tar.bz2 +Source1: http://download.oracle.com/berkeley-db/db-6.0.20.tar.gz +Source2: macros +Requires: filesystem +%description +Package manager +#----------------------------------------------------------------------------- +%prep +%setup -q -n %{name}-%{version} +%setup -q -T -D -a 1 -n %{name}-%{version} +sed -i 's/--srcdir=$db_dist/--srcdir=$db_dist --with-pic/' db3/configure +%build + ln -vs db-6.0.20 db + ./configure \ + --prefix=%{_prefix} \ + --program-prefix= \ + --sysconfdir=/etc \ + --with-crypto=openssl \ + --with-cap \ + --with-acl \ + --enable-python \ + --with-python=2.7 \ + --without-external-db \ + --without-archive \ + --without-lua \ + --disable-dependency-tracking \ + --disable-silent-rules \ + --disable-rpath \ + --with-python=2.7 +# --disable-plugins +# --with-archive build rpm2archive - requires libarchive +# --with-lua build with lua support +# --with-python= + make %{?_smp_mflags} +%install + make DESTDIR=%{buildroot} install + install -vdm 755 %{buildroot}/etc/rpm + install -vm 644 %{_sourcedir}/macros %{buildroot}/etc/rpm +#----------------------------------------------------------------------------- +# Copy license/copying file + install -D -m644 COPYING %{buildroot}%{_datarootdir}/licenses/%{name}-%{version}/COPYING + install -D -m644 INSTALL %{buildroot}%{_datarootdir}/licenses/%{name}-%{version}/INSTALL +#----------------------------------------------------------------------------- +# Create file list +# rm %{buildroot}%{_infodir}/dir + find %{buildroot} -name '*.la' -delete + find "${RPM_BUILD_ROOT}" -not -type d -print > filelist.rpm + sed -i "s|^${RPM_BUILD_ROOT}||" filelist.rpm + sed -i '/man\/man/d' filelist.rpm + sed -i '/\/usr\/share\/info/d' filelist.rpm + sed -i '/man\/fr/d' filelist.rpm + sed -i '/man\/pl/d' filelist.rpm + sed -i '/man\/sk/d' filelist.rpm + sed -i '/man\/ko/d' filelist.rpm + sed -i '/man\/ja/d' filelist.rpm + sed -i '/man\/ru/d' filelist.rpm +#----------------------------------------------------------------------------- +%files -f filelist.rpm + %defattr(-,root,root) + %{_mandir}/man1/*.gz + %{_mandir}/man8/*.gz + %{_mandir}/fr/man8/*.gz + %{_mandir}/ja/man8/*.gz + %{_mandir}/ko/man8/*.gz + %{_mandir}/pl/man1/*.gz + %{_mandir}/pl/man8/*.gz + %{_mandir}/ru/man8/*.gz + %{_mandir}/sk/man8/*.gz +#----------------------------------------------------------------------------- +%changelog +* Wed Sep 26 2018 baho-utot 4.14.1-2 +* Sat Jul 28 2018 baho-utot 4.14.1-1 +* Sat Mar 10 2018 baho-utot 4.14.0-4 +- Added acl and cap Removed plugins and disabled python +* Tue Feb 20 2018 baho-utot 4.14.0-3 +- Added python bindings for rpmlint +* Mon Jan 01 2018 baho-utot 4.14.0-1 +- LFS-8.1 +/ diff --git a/SPECS/rsync.spec b/SPECS/rsync.spec new file mode 100644 index 0000000..b79e1d5 --- /dev/null +++ b/SPECS/rsync.spec @@ -0,0 +1,48 @@ +#TARBALL: https://www.samba.org/ftp/rsync/src/rsync-3.1.3.tar.gz +#MD5SUM: 1581a588fde9d89f6bc6201e8129afaf;SOURCES/rsync-3.1.3.tar.gz +#----------------------------------------------------------------------------- +Summary: The rsync package contains the rsync utility. +Name: rsync +Version: 3.1.3 +Release: 1 +License: GPLv3 +URL: https://rsync.samba.org +Group: LFS/Base +Vendor: Elizabeth +#Requires: popt >= 1.16 +Source0: https://www.samba.org/ftp/rsync/src/rsync-%{version}.tar.gz +%description +The rsync package contains the rsync utility. +This is useful for synchronizing large file archives over a network. +#----------------------------------------------------------------------------- +%prep +%setup -q -n %{NAME}-%{VERSION} +%build + ./configure \ + --prefix=%{_prefix} \ + --without-included-zlib \ + --with-included-popt=no + make %{?_smp_mflags} +%install + make DESTDIR=%{buildroot} install +#----------------------------------------------------------------------------- +# Copy license/copying file +# install -D -m644 LICENSE %{buildroot}/usr/share/licenses/%{name}/LICENSE + install -D -m644 COPYING %{buildroot}/usr/share/licenses/%{name}/LICENSE +#----------------------------------------------------------------------------- +# Create file list +# rm %{buildroot}%{_infodir}/dir + find %{buildroot} -name '*.la' -delete + find "${RPM_BUILD_ROOT}" -not -type d -print > filelist.rpm + sed -i "s|^${RPM_BUILD_ROOT}||" filelist.rpm + sed -i '/man\/man/d' filelist.rpm + sed -i '/\/usr\/share\/info/d' filelist.rpm +#----------------------------------------------------------------------------- +%files -f filelist.rpm + %defattr(-,root,root) + %{_mandir}/man1/*.gz + %{_mandir}/man5/*.gz +#----------------------------------------------------------------------------- +%changelog +* Mon Feb 04 2019 baho-utot 3.1.3-1 +- Initial build. First version diff --git a/SPECS/sed.spec b/SPECS/sed.spec new file mode 100644 index 0000000..f87ac42 --- /dev/null +++ b/SPECS/sed.spec @@ -0,0 +1,52 @@ +#TARBALL: http://ftp.gnu.org/gnu/sed/sed-4.7.tar.xz +#MD5SUM: 777ddfd9d71dd06711fe91f0925e1573;SOURCES/sed-4.7.tar.xz +#----------------------------------------------------------------------------- +Summary: The Sed package contains a stream editor +Name: sed +Version: 4.7 +Release: 1 +License: GPLv3 +URL: Any +Group: LFS/Base +Vendor: Elizabeth +Source0: http://ftp.gnu.org/gnu/%{name}/%{name}-%{version}.tar.xz +Requires: filesystem +%description +The Sed package contains a stream editor +#----------------------------------------------------------------------------- +%prep +%setup -q -n %{NAME}-%{VERSION} + sed -i 's/usr/tools/' build-aux/help2man + sed -i 's/testsuite.panic-tests.sh//' Makefile.in +%build + ./configure \ + --prefix=%{_prefix} \ + --bindir=/bin + make %{?_smp_mflags} + make %{?_smp_mflags} html +%install + make DESTDIR=%{buildroot} install + install -d -m755 %{buildroot}%{_docdir}/%{NAME}-%{VERSION} + install -m644 doc/sed.html %{buildroot}%{_docdir}/%{NAME}-%{VERSION} + rm -rf %{buildroot}/%{_infodir} +#----------------------------------------------------------------------------- +# Copy license/copying file + install -D -m644 COPYING %{buildroot}/usr/share/licenses/%{name}/LICENSE +#----------------------------------------------------------------------------- +# Create file list +# rm %{buildroot}%{_infodir}/dir + find %{buildroot} -name '*.la' -delete + find "${RPM_BUILD_ROOT}" -not -type d -print > filelist.rpm + sed -i "s|^${RPM_BUILD_ROOT}||" filelist.rpm + sed -i '/man\/man/d' filelist.rpm + sed -i '/\/usr\/share\/info/d' filelist.rpm +#----------------------------------------------------------------------------- +%files -f filelist.rpm + %defattr(-,root,root) + %{_mandir}/man1/*.gz +#----------------------------------------------------------------------------- +%changelog +* Wed Apr 03 2019 baho-utot 4.7-1 +- Update +* Tue Jan 09 2018 baho-utot 4.4-1 +- Initial build. First version diff --git a/SPECS/shadow.spec b/SPECS/shadow.spec new file mode 100644 index 0000000..ab3c8ff --- /dev/null +++ b/SPECS/shadow.spec @@ -0,0 +1,73 @@ +#TARBALL: https://github.com/shadow-maint/shadow/releases/download/4.6/shadow-4.6.tar.xz +#MD5SUM: b491fecbf1232632c32ff8f1437fd60e;SOURCES/shadow-4.6.tar.xz +#----------------------------------------------------------------------------- +Summary: The Shadow package contains programs for handling passwords in a secure way. +Name: shadow +Version: 4.6 +Release: 1 +License: Artistic +Group: LFS/Base +Vendor: Elizabeth +Source0: https://github.com/shadow-maint/shadow/releases/download/4.5/%{name}-%{version}.tar.xz +Requires: filesystem +%description +The Shadow package contains programs for handling passwords in a secure way. +#----------------------------------------------------------------------------- +%prep +%setup -q -n %{NAME}-%{VERSION} + sed -i 's/groups$(EXEEXT) //' src/Makefile.in + find man -name Makefile.in -exec sed -i 's/groups\.1 / /' {} \; + find man -name Makefile.in -exec sed -i 's/getspnam\.3 / /' {} \; + find man -name Makefile.in -exec sed -i 's/passwd\.5 / /' {} \; + sed -i -e 's@#ENCRYPT_METHOD DES@ENCRYPT_METHOD SHA512@' \ + -e 's@/var/spool/mail@/var/mail@' etc/login.defs + sed -i 's/1000/999/' etc/useradd +%build + ./configure \ + --sysconfdir=/etc \ + --with-group-name-max-length=32 + make %{?_smp_mflags} +%install + make DESTDIR=%{buildroot} install + install -vdm 755 %{buildroot}/bin + mv -v %{buildroot}/usr/bin/passwd %{buildroot}/bin +#----------------------------------------------------------------------------- +# Copy license/copying file + install -D -m644 COPYING %{buildroot}/usr/share/licenses/%{name}/LICENSE +#----------------------------------------------------------------------------- +# Create file list + rm -rf %{buildroot}/%{_mandir}/cs + rm -rf %{buildroot}/%{_mandir}/da + rm -rf %{buildroot}/%{_mandir}/de + rm -rf %{buildroot}/%{_mandir}/fi + rm -rf %{buildroot}/%{_mandir}/fr + rm -rf %{buildroot}/%{_mandir}/hu + rm -rf %{buildroot}/%{_mandir}/id + rm -rf %{buildroot}/%{_mandir}/it + rm -rf %{buildroot}/%{_mandir}/ja + rm -rf %{buildroot}/%{_mandir}/ko + rm -rf %{buildroot}/%{_mandir}/pl + rm -rf %{buildroot}/%{_mandir}/pt_BR + rm -rf %{buildroot}/%{_mandir}/ru + rm -rf %{buildroot}/%{_mandir}/sv + rm -rf %{buildroot}/%{_mandir}/tr + rm -rf %{buildroot}/%{_mandir}/zh_CN + rm -rf %{buildroot}/%{_mandir}/zh_TW + find "${RPM_BUILD_ROOT}" -not -type d -print > filelist.rpm + sed -i "s|^${RPM_BUILD_ROOT}||" filelist.rpm + sed -i '/man/d' filelist.rpm +#----------------------------------------------------------------------------- +%files -f filelist.rpm + %defattr(-,root,root) + %{_mandir}/man1/*.gz + %{_mandir}/man3/*.gz + %{_mandir}/man5/*.gz + %{_mandir}/man8/*.gz +%post + pwconv + grpconv +#----------------------------------------------------------------------------- +%changelog +* Tue Mar 26 2019 baho-utot 4.6-1 +* Tue Jan 09 2018 baho-utot 4.5-1 +- Initial build. First version diff --git a/SPECS/sysklogd.spec b/SPECS/sysklogd.spec new file mode 100644 index 0000000..08e336c --- /dev/null +++ b/SPECS/sysklogd.spec @@ -0,0 +1,69 @@ +#TARBALL: http://www.infodrom.org/projects/sysklogd/download/sysklogd-1.5.1.tar.gz +#MD5SUM: c70599ab0d037fde724f7210c2c8d7f8;SOURCES/sysklogd-1.5.1.tar.gz +#----------------------------------------------------------------------------- +Summary: The Sysklogd package contains programs for logging system messages +Name: sysklogd +Version: 1.5.1 +Release: 1 +License: GPLv2 +URL: Any +Group: LFS/Base +Vendor: Elizabeth +Source0: http://www.infodrom.org/projects/sysklogd/download/%{name}-%{version}.tar.gz +Requires: filesystem +%description +The Sysklogd package contains programs for logging system messages, such as those +given by the kernel when unusual things happen. +#----------------------------------------------------------------------------- +%prep +%setup -q -n %{NAME}-%{VERSION} + sed -i '/Error loading kernel symbols/{n;n;d}' ksym_mod.c + sed -i 's/union wait/int/' syslogd.c +%build + make VERBOSE=1 +%install + install -vdm 755 %{buildroot}/etc + install -vdm 755 %{buildroot}%{_mandir}/man{5,8} + install -vdm 755 %{buildroot}%{_sbindir} + install -vdm 755 %{buildroot}%{_includedir}/%{NAME} + install -vdm 755 %{buildroot}/sbin + make install prefix=%{buildroot} \ + TOPDIR=%{buildroot} \ + MANDIR=%{buildroot}%{_mandir} \ + BINDIR=%{buildroot}/sbin \ + MAN_USER=`id -nu` MAN_GROUP=`id -ng` +#----------------------------------------------------------------------------- +cat > %{buildroot}/etc/syslog.conf <<- EOF +# Begin /etc/syslog.conf + + auth,authpriv.* -/var/log/auth.log + *.*;auth,authpriv.none -/var/log/sys.log + daemon.* -/var/log/daemon.log + kern.* -/var/log/kern.log + mail.* -/var/log/mail.log + user.* -/var/log/user.log + *.emerg * + +# End /etc/syslog.conf +EOF +#----------------------------------------------------------------------------- +# Copy license/copying file + install -D -m644 COPYING %{buildroot}/usr/share/licenses/%{name}/LICENSE +#----------------------------------------------------------------------------- +# Create file list +# rm %{buildroot}%{_infodir}/dir + find %{buildroot} -name '*.la' -delete + find "${RPM_BUILD_ROOT}" -not -type d -print > filelist.rpm + sed -i "s|^${RPM_BUILD_ROOT}||" filelist.rpm + sed -i '/man\/man/d' filelist.rpm + sed -i '/\/usr\/share\/info/d' filelist.rpm +#----------------------------------------------------------------------------- +%files -f filelist.rpm + %defattr(-,root,root) + %config(noreplace) /etc/syslog.conf + %{_mandir}/man5/*.gz + %{_mandir}/man8/*.gz +#----------------------------------------------------------------------------- +%changelog +* Tue Jan 09 2018 baho-utot 1.5.1-1 +- Initial build. First version diff --git a/SPECS/sysvinit.spec b/SPECS/sysvinit.spec new file mode 100644 index 0000000..3542e4e --- /dev/null +++ b/SPECS/sysvinit.spec @@ -0,0 +1,51 @@ +#TARBALL: http://download.savannah.gnu.org/releases/sysvinit/sysvinit-2.93.tar.xz +#MD5SUM: 041dbe36a5dd80b2108aff305bc10620;SOURCES/sysvinit-2.93.tar.xz +#TARBALL: http://www.linuxfromscratch.org/patches/lfs/8.4/sysvinit-2.93-consolidated-1.patch +#MD5SUM: aaa84675e717504d7d3da452c8c2eaf1;SOURCES/sysvinit-2.93-consolidated-1.patch +#----------------------------------------------------------------------------- +Summary: Controls the start up, running and shutdown of the system +Name: sysvinit +Version: 2.93 +Release: 1 +License: GPLv2 +URL: http://savannah.nongnu.org/projects/sysvinit +Group: LFS/Base +Vendor: Elizabeth +Source0: %{name}-%{version}.tar.xz +Patch: %{name}-%{version}-consolidated-1.patch +Requires: filesystem +%description +Contains programs for controlling the start up, running and +shutdown of the system +#----------------------------------------------------------------------------- +%prep +%setup -q -n %{NAME}-%{VERSION} +%patch -p1 +%build + make VERBOSE=1 %{?_smp_mflags} +%install + make ROOT=%{buildroot} install +#----------------------------------------------------------------------------- +# Copy license/copying file + install -D -m644 COPYRIGHT %{buildroot}/usr/share/licenses/%{name}/LICENSE + install -D -m644 COPYING %{buildroot}/usr/share/licenses/%{name}/ +#----------------------------------------------------------------------------- +# Create file list +# rm %{buildroot}%{_infodir}/dir + find %{buildroot} -name '*.la' -delete + find "${RPM_BUILD_ROOT}" -not -type d -print > filelist.rpm + sed -i "s|^${RPM_BUILD_ROOT}||" filelist.rpm + sed -i '/man\/man/d' filelist.rpm + sed -i '/\/usr\/share\/info/d' filelist.rpm +#----------------------------------------------------------------------------- +%files -f filelist.rpm + %defattr(-,root,root) +# %%{_infodir}/*.gz + %{_mandir}/man5/*.gz + %{_mandir}/man8/*.gz +#----------------------------------------------------------------------------- +%changelog +* Sat Apr 06 2019 baho-utot 2.93-1 +- LFS-8.4 +* Tue Jan 09 2018 baho-utot 2.88dsf-1 +- Initial build. First version diff --git a/SPECS/tar.spec b/SPECS/tar.spec new file mode 100644 index 0000000..ca7060f --- /dev/null +++ b/SPECS/tar.spec @@ -0,0 +1,52 @@ +#TARBALL: http://ftp.gnu.org/gnu/tar/tar-1.31.tar.xz +#MD5SUM: bc9a89da1185ceb2210de12552c43ce2;SOURCES/tar-1.31.tar.xz +#----------------------------------------------------------------------------- +Summary: The Tar package contains an archiving program. +Name: tar +Version: 1.31 +Release: 1 +License: GPLv3 +URL: Any +Group: LFS/Base +Vendor: Elizabeth +Source0: %{name}-%{version}.tar.xz +Requires: filesystem +%description +The Tar package contains an archiving program. +#----------------------------------------------------------------------------- +%prep +%setup -q -n %{NAME}-%{VERSION} +sed -i 's/abort.*/FALLTHROUGH;/' src/extract.c +%build + FORCE_UNSAFE_CONFIGURE=1 \ + ./configure \ + --prefix=%{_prefix} \ + --bindir=/bin + make %{?_smp_mflags} +%install + make DESTDIR=%{buildroot} install + make -C doc DESTDIR=%{buildroot} install-html docdir=%{_docdir}/%{NAME}-%{VERSION} +#----------------------------------------------------------------------------- +# Copy license/copying file + install -D -m644 COPYING %{buildroot}/usr/share/licenses/%{name}/LICENSE +#----------------------------------------------------------------------------- +# Create file list + rm %{buildroot}%{_infodir}/dir + find %{buildroot} -name '*.la' -delete + find "${RPM_BUILD_ROOT}" -not -type d -print > filelist.rpm + sed -i "s|^${RPM_BUILD_ROOT}||" filelist.rpm + sed -i '/man\/man/d' filelist.rpm + sed -i '/\/usr\/share\/info/d' filelist.rpm +#----------------------------------------------------------------------------- +%files -f filelist.rpm + %defattr(-,root,root) + %{_infodir}/*.gz + %{_mandir}/man1/*.gz + %{_mandir}/man8/*.gz + +#----------------------------------------------------------------------------- +%changelog +* Sat Apr 06 2019 baho-utot 1.31-1 +- LFS-8.4 +* Tue Jan 09 2018 baho-utot 1.30-1 +- Initial build. First version diff --git a/SPECS/texinfo.spec b/SPECS/texinfo.spec new file mode 100644 index 0000000..0cfb552 --- /dev/null +++ b/SPECS/texinfo.spec @@ -0,0 +1,53 @@ +#TARBALL: http://ftp.gnu.org/gnu/texinfo/texinfo-6.5.tar.xz +#MD5SUM: 3715197e62e0e07f85860b3d7aab55ed;SOURCES/texinfo-6.5.tar.xz +%define __requires_exclude perl\\(Locale::gettext_xs\\) +#----------------------------------------------------------------------------- +Summary: The Texinfo package contains programs for reading, writing, and converting info pages. +Name: texinfo +Version: 6.5 +Release: 1 +License: GPLv3 +URL: Any +Group: LFS/Base +Vendor: Elizabeth +Source0: http://ftp.gnu.org/gnu/texinfo/%{name}-%{version}.tar.xz +Requires: filesystem +%description +The Texinfo package contains programs for reading, writing, and converting info pages. +#----------------------------------------------------------------------------- +%prep +%setup -q -n %{NAME}-%{VERSION} +sed -i '5481,5485 s/({/(\\{/' tp/Texinfo/Parser.pm +%build + ./configure \ + --prefix=%{_prefix} \ + --disable-static + make %{?_smp_mflags} +%install + make DESTDIR=%{buildroot} install + make DESTDIR=%{buildroot} TEXMF=/usr/share/texmf install-tex +# Copy license/copying file + install -D -m644 COPYING %{buildroot}/usr/share/licenses/%{name}/LICENSE +#----------------------------------------------------------------------------- +# Create file list + rm %{buildroot}%{_infodir}/dir + find %{buildroot} -name '*.la' -delete + find "${RPM_BUILD_ROOT}" -not -type d -print > filelist.rpm + sed -i "s|^${RPM_BUILD_ROOT}||" filelist.rpm + sed -i '/man\/man/d' filelist.rpm + sed -i '/\/usr\/share\/info/d' filelist.rpm +#----------------------------------------------------------------------------- +%files -f filelist.rpm + %defattr(-,root,root) + %{_infodir}/*.gz + %{_mandir}/man1/*.gz + %{_mandir}/man5/*.gz +%post + pushd /usr/share/info + rm -v dir + for f in *; do install-info $f dir 2>/dev/null; done + popd +#----------------------------------------------------------------------------- +%changelog +* Tue Jan 09 2018 baho-utot 6.5-1 +- Initial build. First version diff --git a/SPECS/tzdata.spec b/SPECS/tzdata.spec new file mode 100644 index 0000000..b3b0c4c --- /dev/null +++ b/SPECS/tzdata.spec @@ -0,0 +1,64 @@ +%define blddir %{name}-%{version} +#TARBALL: https://www.iana.org/time-zones/repository/releases/tzdata2018i.tar.gz +#MD5SUM: b3f0a1a789480a036e58466cd0702477;SOURCES/tzdata2018i.tar.gz +#----------------------------------------------------------------------------- +Summary: Time zone data +Name: tzdata +Version: 2018i +Release: 1 +URL: http://www.iana.org/time-zones +License : public-domain +Group: LFS/Base +Vendor: Elizabeth +Source0: http://www.iana.org//time-zones/repository/releases/%{name}%{version}.tar.gz +Requires: filesystem +%description +Sources for time zone and daylight saving time data +#----------------------------------------------------------------------------- +%prep + rm -rf %{blddir} + install -vdm 755 %{blddir} + cd %{blddir} + tar xf %{SOURCE0} +%build + cd %{blddir} +%install + cd %{blddir} + ZONEINFO=%{buildroot}/usr/share/zoneinfo + install -vdm 755 $ZONEINFO/{posix,right} + for tz in etcetera southamerica northamerica europe africa antarctica \ + asia australasia backward pacificnew systemv; do + zic -L /dev/null -d $ZONEINFO -y "sh yearistype.sh" ${tz} + zic -L /dev/null -d $ZONEINFO/posix -y "sh yearistype.sh" ${tz} + zic -L leapseconds -d $ZONEINFO/right -y "sh yearistype.sh" ${tz} + done + cp -v zone.tab zone1970.tab iso3166.tab $ZONEINFO + zic -d $ZONEINFO -p America/New_York + install -vDm 555 %{buildroot}/usr/share/zoneinfo/America/New_York %{buildroot}/etc/localtime +#----------------------------------------------------------------------------- +# Copy license/copying file + install -D -m644 LICENSE %{buildroot}/usr/share/licenses/%{name}/LICENSE + cd - +#----------------------------------------------------------------------------- +# Create file list +# rm %{buildroot}%{_infodir}/dir + find %{buildroot} -name '*.la' -delete + find "${RPM_BUILD_ROOT}" -not -type d -print > filelist.rpm + sed -i "s|^${RPM_BUILD_ROOT}||" filelist.rpm + sed -i '/man\/man/d' filelist.rpm + sed -i '/\/usr\/share\/info/d' filelist.rpm +#----------------------------------------------------------------------------- +%files -f filelist.rpm + %defattr(-,root,root) +#----------------------------------------------------------------------------- +%changelog +* Fri Mar 15 2019 baho-utot 2018i-1 +* Mon Mar 19 2018 baho-utot 2018c-1 +* Wed Dec 20 2014 baho-utot 2017b-1 +- Update to LFS-8.1 +* Sat Mar 22 2014 baho-utot 2013i-1 +* Sat Aug 24 2013 baho-utot 2013d-1 +* Fri May 10 2013 baho-utot 2013c-1 +* Sun Mar 24 2013 baho-utot 2013b-1 +* Sun Mar 24 2013 baho-utot 2012j-1 +* Wed Jan 30 2013 baho-utot 2012e-1 diff --git a/SPECS/util-linux.spec b/SPECS/util-linux.spec new file mode 100644 index 0000000..e4c301b --- /dev/null +++ b/SPECS/util-linux.spec @@ -0,0 +1,63 @@ +#TARBALL: https://www.kernel.org/pub/linux/utils/util-linux/v2.33/util-linux-2.33.1.tar.xz +#MD5SUM: 6fcfea2043b5ac188fd3eed56aeb5d90;SOURCES/util-linux-2.33.1.tar.xz +#----------------------------------------------------------------------------- +Summary: The Util-linux package contains miscellaneous utility programs. +Name: util-linux +Version: 2.33.1 +Release: 1 +License: GPLv2 +URL: Any +Group: LFS/Base +Vendor: Elizabeth +Source0: %{name}-%{version}.tar.xz +Requires: filesystem +%description +The Util-linux package contains miscellaneous utility programs. +Among them are utilities for handling file systems, consoles, +partitions, and messages. +#----------------------------------------------------------------------------- +%prep +%setup -q -n %{NAME}-%{VERSION} +%build + ./configure \ + ADJTIME_PATH=/var/lib/hwclock/adjtime \ + --docdir=%{_docdir}/%{NAME}-%{VERSION} \ + --disable-chfn-chsh \ + --disable-login \ + --disable-nologin \ + --disable-su \ + --disable-setpriv \ + --disable-runuser \ + --disable-pylibmount \ + --disable-static \ + --without-python \ + --without-systemd \ + --without-systemdsystemunitdir + make %{?_smp_mflags} +%install + make DESTDIR=%{buildroot} install +#----------------------------------------------------------------------------- +# Copy license/copying file + install -D -m644 COPYING %{buildroot}/usr/share/licenses/%{name}/LICENSE +#----------------------------------------------------------------------------- + # Create file list +# rm %{buildroot}%{_infodir}/dir + find %{buildroot} -name '*.la' -delete + find "${RPM_BUILD_ROOT}" -not -type d -print > filelist.rpm + sed -i "s|^${RPM_BUILD_ROOT}||" filelist.rpm + sed -i '/man\/man/d' filelist.rpm + sed -i '/\/usr\/share\/info/d' filelist.rpm +#----------------------------------------------------------------------------- +%files -f filelist.rpm + %defattr(-,root,root) +# %%{_infodir}/*.gz + %{_mandir}/man1/*.gz + %{_mandir}/man3/*.gz + %{_mandir}/man5/*.gz + %{_mandir}/man8/*.gz +#----------------------------------------------------------------------------- +%changelog +* Sat Apr 06 2019 baho-utot 2.33.1-1 +- LFS-8.4 +* Tue Jan 09 2018 baho-utot 2.31.1-1 +- Initial build. First version diff --git a/SPECS/vim.spec b/SPECS/vim.spec new file mode 100644 index 0000000..ad5f4f2 --- /dev/null +++ b/SPECS/vim.spec @@ -0,0 +1,93 @@ +%global __requires_exclude perl\\(getopts.pl\\) +%define __requires_exclude_from /usr/share/vim +#TARBALL: ftp://ftp.vim.org/pub/vim/unix/vim-8.1.tar.bz2 +#MD5SUM: 1739a1df312305155285f0cfa6118294;SOURCES/vim-8.1.tar.bz2 +#----------------------------------------------------------------------------- +Summary: The Vim package contains a powerful text editor. +Name: vim +Version: 8.1 +Release: 1 +License: Charityware +URL: Any +Group: LFS/Base +Vendor: Elizabeth +Source0: %{name}-%{version}.tar.bz2 +Requires: filesystem +%description +The Vim package contains a powerful text editor. +#----------------------------------------------------------------------------- +%prep +%setup -q -n %{NAME}81 +echo '#define SYS_VIMRC_FILE "/etc/vimrc"' >> src/feature.h +%build + ./configure \ + --prefix=%{_prefix} \ + --localstatedir=/var/lib/vim \ + --with-x=no \ + --disable-gui + make %{?_smp_mflags} +%install + make DESTDIR=%{buildroot} install + install -vdm 755 %{buildroot}/usr/share/doc/ + ln -sv ../vim/vim81/doc %{buildroot}/usr/share/doc/vim-8.1 + install -vdm 755 %{buildroot}/etc/vimrc + cat > /etc/vimrc <<- "EOF" + " Begin /etc/vimrc + + set nocompatible + set backspace=2 + set mouse=r + syntax on + if (&term == "xterm") || (&term == "putty") + set background=dark + endif + + " End /etc/vimrc + EOF + rm -rf %{buildroot}/usr/share/info/dir +#----------------------------------------------------------------------------- +# Copy license/copying file + install -D -m644 README.txt %{buildroot}/usr/share/licenses/%{name}/LICENSE +#----------------------------------------------------------------------------- +# Create file list +# rm %{buildroot}%{_infodir}/dir + find %{buildroot} -name '*.la' -delete + find "${RPM_BUILD_ROOT}" -not -type d -print > filelist.rpm + sed -i "s|^${RPM_BUILD_ROOT}||" filelist.rpm + sed -i '/man\/man/d' filelist.rpm + sed -i '/man\/fr/d' filelist.rpm + sed -i '/man\/pl.ISO8859-2/d' filelist.rpm + sed -i '/man\/pl.UTF-8/d' filelist.rpm + sed -i '/man\/ru.UTF-8/d' filelist.rpm + sed -i '/man\/pl/d' filelist.rpm + sed -i '/man\/it.UTF-8/d' filelist.rpm + sed -i '/man\/ja/d' filelist.rpm + sed -i '/man\/it.ISO8859-1/d' filelist.rpm + sed -i '/man\/it/d' filelist.rpm + sed -i '/man\/fr.UTF-8/d' filelist.rpm + sed -i '/man\/ru.KOI8-R/d' filelist.rpm + sed -i '/man\/fr.ISO8859-1/d' filelist.rpm + sed -i '/\/usr\/share\/info/d' filelist.rpm +#----------------------------------------------------------------------------- +%files -f filelist.rpm + %defattr(-,root,root) +# %%{_infodir}/*.gz + %{_mandir}/man1/*.gz + %{_mandir}/fr.ISO8859-1/man1/*.gz + %{_mandir}/fr.UTF-8/man1/*.gz + %{_mandir}/fr/man1/*.gz + %{_mandir}/it.ISO8859-1/man1/*.gz + %{_mandir}/it.UTF-8/man1/*.gz + %{_mandir}/it/man1/*.gz + %{_mandir}/ja/man1/*.gz + %{_mandir}/pl.ISO8859-2/man1/*.gz + %{_mandir}/pl.UTF-8/man1/*.gz + %{_mandir}/pl/man1/*.gz + %{_mandir}/ru.KOI8-R/man1/*.gz + %{_mandir}/ru.UTF-8/man1/*.gz +#----------------------------------------------------------------------------- +%changelog +* Sat Apr 06 2019 baho-utot 8.1-1 +- LFS-8.4 +* Tue Jan 09 2018 baho-utot 8.0.586-1 +- Initial build. First version diff --git a/SPECS/wget.spec b/SPECS/wget.spec new file mode 100644 index 0000000..f6749d0 --- /dev/null +++ b/SPECS/wget.spec @@ -0,0 +1,59 @@ +#TARBALL: https://ftp.gnu.org/gnu/wget/wget-1.20.1.tar.gz +#MD5SUM: f6ebe9c7b375fc9832fb1b2028271fb7;SOURCES/wget-1.20.1.tar.gz +#----------------------------------------------------------------------------- +Summary: The Wget package contains a utility useful for non-interactive downloading of files from the Web. +Name: wget +Version: 1.20.1 +Release: 1 +License: Any +URL: Any +Group: LFS/Base +Vendor: Elizabeth +Source0: %{name}-%{version}.tar.gz +Requires: filesystem +%description +The Wget package contains a utility useful for non-interactive downloading of files from the Web. +#----------------------------------------------------------------------------- +%prep +%setup -q -n %{NAME}-%{VERSION} +%build + ./configure \ + --prefix=%{_prefix} \ + --sysconfdir=/etc \ + --with-ssl=openssl \ + --disable-rpath + make %{?_smp_mflags} +%install + make DESTDIR=%{buildroot} install +#----------------------------------------------------------------------------- +# Copy license/copying file + install -D -m644 COPYING %{buildroot}/usr/share/licenses/%{name}/LICENSE +#----------------------------------------------------------------------------- +# Create file list + rm %{buildroot}%{_infodir}/dir + find %{buildroot} -name '*.la' -delete + find "${RPM_BUILD_ROOT}" -not -type d -print > filelist.rpm + sed -i "s|^${RPM_BUILD_ROOT}||" filelist.rpm + sed -i '/man\/man/d' filelist.rpm + sed -i '/\/usr\/share\/info/d' filelist.rpm +#----------------------------------------------------------------------------- +%files -f filelist.rpm + %defattr(-,root,root) + %{_infodir}/*.gz + %{_mandir}/man1/*.gz +%post + pushd /usr/share/info + rm -v dir + for f in *; do install-info $f dir 2>/dev/null; done + popd +%postun + pushd /usr/share/info + rm -v dir + for f in *; do install-info $f dir 2>/dev/null; done + popd +#----------------------------------------------------------------------------- +%changelog +* Sun Apr 07 2019 baho-utot 1.20.1-1 +- BLFS-8.4 +* Tue Jan 09 2018 baho-utot 1.19.1-1 +- Initial build. First version diff --git a/SPECS/xz.spec b/SPECS/xz.spec new file mode 100644 index 0000000..d00a8ff --- /dev/null +++ b/SPECS/xz.spec @@ -0,0 +1,55 @@ +#TARBALL: http://tukaani.org/xz/xz-5.2.4.tar.xz +#MD5SUM: 003e4d0b1b1899fc6e3000b24feddf7c;SOURCES/xz-5.2.4.tar.xz +#----------------------------------------------------------------------------- +Summary: The Xz package contains programs for compressing and decompressing files +Name: xz +Version: 5.2.4 +Release: 1 +License: GPL +URL: Any +Group: LFS/Base +Vendor: Elizabeth +Source0: http://tukaani.org/xz/%{name}-%{version}.tar.xz +Requires: filesystem +%description +The Xz package contains programs for compressing and decompressing files. +It provides capabilities for the lzma and the newer xz compression formats. +Compressing text files with xz yields a better compression percentage than +with the traditional gzip or bzip2 commands. +#----------------------------------------------------------------------------- +%prep +%setup -q -n %{NAME}-%{VERSION} +%build + ./configure \ + --prefix=%{_prefix} \ + --disable-static \ + --docdir=%{_docdir}/%{NAME}-%{VERSION} + make %{?_smp_mflags} +%install + make DESTDIR=%{buildroot} install + install -vdm 755 %{buildroot}/bin + install -vdm 755 %{buildroot}/lib + mv -v %{buildroot}%{_bindir}/{lzma,unlzma,lzcat,xz,unxz,xzcat} %{buildroot}/bin + mv -v %{buildroot}%{_libdir}/liblzma.so.* %{buildroot}/lib + ln -svf ../../lib/$(readlink %{buildroot}%{_libdir}/liblzma.so) %{buildroot}%{_libdir}/liblzma.so +#----------------------------------------------------------------------------- +# Copy license/copying file + install -D -m644 COPYING %{buildroot}/usr/share/licenses/%{name}/LICENSE +#----------------------------------------------------------------------------- +# Create file list + # rm %{buildroot}%{_infodir}/dir + find %{buildroot} -name '*.la' -delete + find "${RPM_BUILD_ROOT}" -not -type d -print > filelist.rpm + sed -i "s|^${RPM_BUILD_ROOT}||" filelist.rpm + sed -i '/man\/man/d' filelist.rpm + sed -i '/\/usr\/share\/info/d' filelist.rpm +#----------------------------------------------------------------------------- +%files -f filelist.rpm + %defattr(-,root,root) + %{_mandir}/man1/*.gz +#----------------------------------------------------------------------------- +%changelog +* Fri Apr 05 2019 baho-utot 5.2.4-1 +- Update for LFS-8.4 +* Tue Jan 09 2018 baho-utot 5.2.3-1 +- Initial build. First version diff --git a/SPECS/zlib.spec b/SPECS/zlib.spec new file mode 100644 index 0000000..f47d9fe --- /dev/null +++ b/SPECS/zlib.spec @@ -0,0 +1,47 @@ +#TARBALL: http://zlib.net/zlib-1.2.11.tar.xz +#MD5SUM: 85adef240c5f370b308da8c938951a68;SOURCES/zlib-1.2.11.tar.xz +#----------------------------------------------------------------------------- +Summary: The Zlib package contains compression and decompression routines used by some programs. +Name: zlib +Version: 1.2.11 +Release: 1 +License: Other +URL: http://zlib.net +Group: LFS/Base +Vendor: Elizabeth +Source0: http://zlib.net/%{name}-%{version}.tar.xz +Provides: pkgconfig(zlib) +Requires: filesystem +%description +The Zlib package contains compression and decompression routines used by some programs. +#----------------------------------------------------------------------------- +%prep +%setup -q -n %{NAME}-%{VERSION} +%build + ./configure --prefix=%{_prefix} + make %{?_smp_mflags} +%install + make DESTDIR=%{buildroot} install + install -vdm 755 %{buildroot}/lib + install -vdm 755 %{buildroot}/usr/lib + mv -v %{buildroot}/usr/lib/libz.so.* %{buildroot}/lib + ln -sfv ../../lib/$(readlink %{buildroot}/usr/lib/libz.so) %{buildroot}/usr/lib/libz.so +#----------------------------------------------------------------------------- + # Copy license/copying file + install -vDm644 README %{buildroot}/usr/share/licenses/%{name}/LICENSE +#----------------------------------------------------------------------------- + # Create file list + # rm %{buildroot}%{_infodir}/dir + find %{buildroot} -name '*.la' -delete + find "${RPM_BUILD_ROOT}" -not -type d -print > filelist.rpm + sed -i "s|^${RPM_BUILD_ROOT}||" filelist.rpm + sed -i '/man\/man/d' filelist.rpm + sed -i '/\/usr\/share\/info/d' filelist.rpm +#----------------------------------------------------------------------------- +%files -f filelist.rpm + %defattr(-,root,root) + %_mandir/man3/zlib.3.gz +#----------------------------------------------------------------------------- +%changelog +* Tue Jan 09 2018 baho-utot 1.2.11-1 +- Initial build. First version diff --git a/TODO b/TODO new file mode 100644 index 0000000..0cddb9f --- /dev/null +++ b/TODO @@ -0,0 +1,38 @@ + +Read base.spec to get list of packages to install + +BASE.SPEC GENERATOR: + TODO for base.sh + Make a base.spec generator + list= $( ls rpm dir ) + for i in $list; do + case $i in + filespec*) ;; + *) LIST+="Requires: ${i} " ;; + esac + done + write header + write requires + write end + then build base package + +RPM PACKAGE INSTALLER: + fetch package name start with base ( sort unique ) + determine binary package name insert into name = ${REPOPATH}/package name-* to process + do until - process names, de dupe names + requirements = $( rpm -qp --requires ${RPMS}/${RPM_ARCH}/${RPM_BINARY}): > ${REQUIRES}/${RPM_NAME} 2>&1 || true + work string = $( rpm requirements ) + determine requires [ rpm -qp --requires ] if / then filespec add to rpm list + determine requires [ rpm -qp --requires ] else package add to rpm list + binary name = strip current name from list of package names + no more + LIST+="${REPOPATH}/${i##Requires:}* " + rpm -qp --requires ${RPMS}/${RPM_ARCH}/${RPM_BINARY} > ${REQUIRES}/${RPM_NAME} 2>&1 || true + # rpm -q --whatprovides [file name] + for i in ${LIST}; do + find requires + msg_line "installing: ${i} :" + rpm --upgrade --verbose --hash --noscripts --root ${ROOTPATH} --dbpath ${DBPATH} "${REPOPATH}/${i}-*" + msg_success + done diff --git a/base.sh b/base.sh new file mode 100755 index 0000000..d6fec92 --- /dev/null +++ b/base.sh @@ -0,0 +1,489 @@ +#!/bin/bash +#----------------------------------------------------------------------------- +# Title: ch6.sh +# Date: 2019-03-14 +# Version: 1.0 +# Author: baho-utot@columbus.rr.com +# Options: +#----------------------------------------------------------------------------- +# Copyright 2019 Baho Utot +#----------------------------------------------------------------------------- +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +#----------------------------------------------------------------------------- +# Dedicated to Elizabeth my cat of 20 years, Euthanasia on 2019-05-16 +#----------------------------------------------------------------------------- +set -o errexit # exit if error...insurance ;) +set -o nounset # exit if variable not initalized +set +h # disable hashall +#----------------------------------------------------------------------------- +# Master variables +PRGNAME=${0##*/} # script name minus the path +TOPDIR=${PWD} # parent directory +PARENT=/usr/src/LFS-RPM # rpm build directory +LOGS=LOGS # build logs directory +INFOS=INFO # rpm info log directory +SPECS=SPECS # rpm spec file directory +PROVIDES=PROVIDES # rpm provides log directory +REQUIRES=REQUIRES # rpm requires log directory +RPMS=RPMS # rpm binary package directory +LOGPATH=${TOPDIR}/LOGS # path to log directory +LC_ALL=POSIX +PATH=/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin +export LC_ALL PATH +#----------------------------------------------------------------------------- +# GLOBALS +RPM_NAME="" +RPM_VERSION="" +RPM_RELEASE="" +RPM_SPEC="" +RPM_INSTALLED="" +RPM_ARCH="" +RPM_BINARY="" +RPM_PACKAGE="" +RPM_EXISTS="" +RPM_TARBALLS="" +RPM_MD5SUMS="" +#----------------------------------------------------------------------------- +# Common support functions +function die { + local _red="\\033[1;31m" + local _normal="\\033[0;39m" + [ -n "$*" ] && printf "${_red}$*${_normal}\n" + false + exit 1 +} +function msg { + printf "%s\n" "${1}" + return +} +function msg_line { + printf "%s" "${1}" + return +} +function msg_failure { + local _red="\\033[1;31m" + local _normal="\\033[0;39m" + printf "${_red}%s${_normal}\n" "FAILURE" + exit 2 +} +function msg_success { + local _green="\\033[1;32m" + local _normal="\\033[0;39m" + printf "${_green}%s${_normal}\n" "SUCCESS" + return +} +function msg_log { + printf "\n%s\n\n" "${1}" >> ${_logfile} 2>&1 + return +} +function end_run { + local _green="\\033[1;32m" + local _normal="\\033[0;39m" + printf "${_green}%s${_normal}\n" "Run Complete" + return +} +#----------------------------------------------------------------------------- +# Functions +function _build { + local i="" + local _log="${LOGS}/${RPM_NAME}" + > ${_log} + > ${INFOS}/${RPM_NAME} + > ${PROVIDES}/${RPM_NAME} + > ${REQUIRES}/${RPM_NAME} + rm -rf BUILD BUILDROOT + msg_line "Building: ${RPM_NAME}: " + _md5sum + rpmbuild -ba ${RPM_SPEC} >> ${_log} 2>&1 && msg_success || msg_failure + _status + [ "F" == ${RPM_EXISTS} ] && die "ERROR: Binary Missing: ${RPM_BINARY}" + rpm -qilp ${RPMS}/${RPM_ARCH}/${RPM_BINARY} > ${INFOS}/${RPM_NAME} 2>&1 || true + rpm -qp --provides ${RPMS}/${RPM_ARCH}/${RPM_BINARY} > ${PROVIDES}/${RPM_NAME} 2>&1 || true + rpm -qp --requires ${RPMS}/${RPM_ARCH}/${RPM_BINARY} > ${REQUIRES}/${RPM_NAME} 2>&1 || true + return +} +function _params { + local i="" + RPM_NAME="" + RPM_VERSION="" + RPM_RELEASE="" + RPM_SPEC="" + RPM_INSTALLED="" + RPM_ARCH="" + RPM_BINARY="" + RPM_PACKAGE="" + RPM_EXISTS="" + RPM_TARBALLS="" + RPM_MD5SUMS="" + RPM_SPEC=${1} + RPM_ARCH=$(rpm --eval %_arch) + if [ -e ${RPM_SPEC} ]; then + while read i; do + i=$(echo ${i} | tr -d '[:cntrl:][:space:]') + case ${i} in + Name:*) RPM_NAME=${i##Name:} ;; + Version:*) RPM_VERSION=${i##Version:} ;; + Release:*) RPM_RELEASE=${i##Release:} ;; + ?TARBALL:*) RPM_TARBALLS+="${i##?TARBALL:} " ;; + ?MD5SUM:*) RPM_MD5SUMS+="${i##?MD5SUM:} " ;; + *) ;; + esac + done < ${RPM_SPEC} + # remove trailing whitespace + RPM_TARBALLS=${RPM_TARBALLS## } + RPM_MD5SUMS=${RPM_MD5SUMS## } + else + die "ERROR: ${RPM_SPEC}: does not exist" + fi + RPM_BINARY="${RPM_NAME}-${RPM_VERSION}-${RPM_RELEASE}.${RPM_ARCH}.rpm" + RPM_PACKAGE=${RPM_BINARY%.*} + _status + return +} +function _install { + local _log="${LOGS}/${RPM_NAME}" + _status + [ "F" == ${RPM_EXISTS} ] && die "ERROR: Binary Missing: ${RPM_BINARY}" + [ "T" == ${RPM_INSTALLED} ] && return + msg_line "Installing: ${RPM_BINARY}: " + rpm -Uvh --nodeps "${RPMS}/${RPM_ARCH}/${RPM_BINARY}" >> "${_log}" 2>&1 && msg_success || msg_failure + return +} +function _status { + [ -e "${RPMS}/${RPM_ARCH}/${RPM_BINARY}" ] && RPM_EXISTS="T" || RPM_EXISTS="F" + [ "${RPM_PACKAGE}" == "$(rpm -q "$RPM_PACKAGE")" ] && RPM_INSTALLED="T" || RPM_INSTALLED="F" + return +} +function _print { + msg "Status for ${RPM_BINARY}" + msg "Spec--------> ${RPM_SPEC}" + msg "Name--------> ${RPM_NAME}" + msg "Version-----> ${RPM_VERSION}" + msg "Release-----> ${RPM_RELEASE}" + msg "Arch--------> ${RPM_ARCH}" + msg "Package-----> ${RPM_PACKAGE}" + msg "Binary------> ${RPM_BINARY}" + msg "Exists------> ${RPM_EXISTS}" + msg "Installed---> ${RPM_INSTALLED}" + for i in ${RPM_TARBALLS}; do msg "Tarball-----> ${i}";done + for i in ${RPM_MD5SUMS}; do msg "MD5SUM------> ${i}";done + return +} +function _md5sum { + local i="" + [ -z "${RPM_TARBALLS}" ] && return + > SOURCES/"MD5SUM" + for i in ${RPM_MD5SUMS}; do printf "%s\n" "$(echo ${i} | tr ";" " ")" >> SOURCES/"MD5SUM";done + md5sum -c SOURCES/"MD5SUM" > /dev/null 2>&1 || die "Source checksum error: ${RPM_SPEC}" + return +} +function _symlinks { + msg_line "Installing Essential Files and Symlinks: " + _log="${LOGS}/symlinks" + > ${_log} + ln -vsf /tools/bin/{bash,cat,chmod,dd,echo,ln,mkdir,pwd,rm,stty,touch} /bin >> "${_log}" 2>&1 + ln -vsf /tools/bin/{env,install,perl,printf} /usr/bin >> "${_log}" 2>&1 + ln -vsf /tools/lib/libgcc_s.so{,.1} /usr/lib >> "${_log}" 2>&1 + ln -vsf /tools/lib/libstdc++.{a,so{,.6}} /usr/lib >> "${_log}" 2>&1 + install -vdm755 /usr/lib/pkgconfig >> "${_log}" 2>&1 + ln -vsf bash /bin/sh >> "${_log}" 2>&1 + msg_success + return +} +function _glibc { + ln -sf /tools/lib/gcc /usr/lib + ln -sf ../lib/ld-linux-x86-64.so.2 /lib64 + ln -sf ../lib/ld-linux-x86-64.so.2 /lib64/ld-lsb-x86-64.so.3 + rm -f /usr/include/limits.h + _build + _install + /sbin/locale-gen + return +} +function _adjust { + msg_line " Adjusting tool chain: " + _log="${LOGS}/adjust" + > "${_log}" + mv -v /tools/bin/{ld,ld-old} >> "${_log}" 2>&1 + mv -v /tools/$(uname -m)-pc-linux-gnu/bin/{ld,ld-old} >> "${_log}" 2>&1 + mv -v /tools/bin/{ld-new,ld} >> "${_log}" 2>&1 + ln -sv /tools/bin/ld /tools/$(uname -m)-pc-linux-gnu/bin/ld >> "${_log}" 2>&1 + gcc -dumpspecs | sed -e 's@/tools@@g' -e '/\*startfile_prefix_spec:/{n;s@.*@/usr/lib/ @}' -e '/\*cpp:/{n;s@$@ -isystem /usr/include@}' > `dirname $(gcc --print-libgcc-file-name)`/specs + touch ${_log} + _log="${LOGS}/adjust.test" + msg_line "Testing tool chain: " + > "${_log}" + echo 'int main(){}' > dummy.c + cc dummy.c -v -Wl,--verbose &> dummy.log + msg " " >> "${_log}" 2>&1 + msg "Test: [Requesting program interpreter: /lib64/ld-linux-x86-64.so.2]" >> "${_log}" 2>&1 + readelf -l a.out | grep ': /lib' >> "${_log}" 2>&1 + msg " " >> "${_log}" 2>&1 + msg "Test: /usr/lib/../lib/crt1.o succeeded" >> "${_log}" 2>&1 + msg "Test: /usr/lib/../lib/crti.o succeeded" >> "${_log}" 2>&1 + msg "Test: /usr/lib/../lib/crtn.o succeeded" >> "${_log}" 2>&1 + grep -o '/usr/lib.*/crt[1in].*succeeded' dummy.log >> "${_log}" 2>&1 + msg " " >> "${_log}" 2>&1 + msg "Test: #include <...> search starts here:" >> "${_log}" 2>&1 + msg "Test: /usr/include" >> "${_log}" 2>&1 + grep -B1 '^ /usr/include' dummy.log>> "${_log}" 2>&1 + msg " " >> "${_log}" 2>&1 + msg "Test: SEARCH_DIR("/usr/lib")" >> "${_log}" 2>&1 + msg "Test: SEARCH_DIR("/lib")" >> "${_log}" 2>&1 + grep 'SEARCH.*/usr/lib' dummy.log |sed 's|; |\n|g' >> "${_log}" 2>&1 + msg " " >> "${_log}" 2>&1 + msg "Test: attempt to open /lib/libc.so.6 succeeded" >> "${_log}" 2>&1 + grep "/lib.*/libc.so.6 " dummy.log >> "${_log}" 2>&1 + msg " " >> "${_log}" 2>&1 + msg "Test: found ld-linux-x86-64.so.2 at /lib/ld-linux-x86-64.so.2" >> "${_log}" 2>&1 + grep found dummy.log >> "${_log}" 2>&1 + msg " " >> "${_log}" 2>&1 + rm -v dummy.c a.out dummy.log >> "${_log}" 2>&1 + msg_success + touch ${_log} + return +} +function _bc { + ln -sf /tools/lib/libncursesw.so.6 /usr/lib/libncursesw.so.6 + ln -sf libncursesw.so.6 /usr/lib/libncurses.so + _build + _install + return +} +function _gcc { + _build + _install + _log="${LOGS}/gcc.test" + msg_line " Testing ${i}: " + _log="${LOGS}/gcc.test" + > "${_log}" + echo 'int main(){}' > dummy.c + cc dummy.c -v -Wl,--verbose &> dummy.log + msg " " >> "${_log}" 2>&1 + readelf -l a.out | grep ': /lib' >> "${_log}" 2>&1 + msg "Test:" >> "${_log}" 2>&1 + msg "[Requesting program interpreter: /lib64/ld-linux-x86-64.so.2]" >> "${_log}" 2>&1 + msg " " >> "${_log}" 2>&1 + grep -o '/usr/lib.*/crt[1in].*succeeded' dummy.log >> "${_log}" 2>&1 + msg "Test:" >> "${_log}" 2>&1 + msg "/usr/lib/gcc/x86_64-pc-linux-gnu/8.2.0/../../../../lib/crt1.o succeeded" >> "${_log}" 2>&1 + msg "/usr/lib/gcc/x86_64-pc-linux-gnu/8.2.0/../../../../lib/crti.o succeeded" >> "${_log}" 2>&1 + msg "/usr/lib/gcc/x86_64-pc-linux-gnu/8.2.0/../../../../lib/crtn.o succeeded" >> "${_log}" 2>&1 + msg " " >> "${_log}" 2>&1 + grep -B4 '^ /usr/include' dummy.log >> "${_log}" 2>&1 + msg "Test:" >> "${_log}" 2>&1 + msg "#include <...> search starts here:" >> "${_log}" 2>&1 + msg "/usr/lib/gcc/x86_64-pc-linux-gnu/8.2.0/include" >> "${_log}" 2>&1 + msg "/usr/local/include" >> "${_log}" 2>&1 + msg "/usr/lib/gcc/x86_64-pc-linux-gnu/8.2.0/include-fixed" >> "${_log}" 2>&1 + msg "/usr/include" >> "${_log}" 2>&1 + msg " " >> "${_log}" 2>&1 + grep 'SEARCH.*/usr/lib' dummy.log |sed 's|; |\n|g' >> "${_log}" 2>&1 + msg "Test:" >> "${_log}" 2>&1 + msg "SEARCH_DIR("/usr/x86_64-pc-linux-gnu/lib64")" >> "${_log}" 2>&1 + msg "SEARCH_DIR("/usr/local/lib64")" >> "${_log}" 2>&1 + msg "SEARCH_DIR("/lib64")" >> "${_log}" 2>&1 + msg "SEARCH_DIR("/usr/lib64")" >> "${_log}" 2>&1 + msg "SEARCH_DIR("/usr/x86_64-pc-linux-gnu/lib")" >> "${_log}" 2>&1 + msg "SEARCH_DIR("/usr/local/lib")" >> "${_log}" 2>&1 + msg "SEARCH_DIR("/lib")" >> "${_log}" 2>&1 + msg "SEARCH_DIR("/usr/lib");" >> "${_log}" 2>&1 + msg " " >> "${_log}" 2>&1 + grep "/lib.*/libc.so.6 " dummy.log >> "${_log}" 2>&1 + msg "Test:" >> "${_log}" 2>&1 + msg "attempt to open /lib/libc.so.6 succeeded" >> "${_log}" 2>&1 + msg " " >> "${_log}" 2>&1 + grep found dummy.log >> "${_log}" 2>&1 + msg "Test:" >> "${_log}" 2>&1 + msg "found ld-linux-x86-64.so.2 at /lib/ld-linux-x86-64.so.2" >> "${_log}" 2>&1 + msg " " >> "${_log}" 2>&1 + rm -v dummy.c a.out dummy.log >> "${_log}" 2>&1 + msg_success + return +} +#----------------------------------------------------------------------------- +# Main line +[ $(whoami) = "root" ] || die "Not running as user root, you should be!" +# Create directories if needed +[ -e "${LOGS}" ] || install -vdm 755 "${LOGS}" +[ -e "${INFOS}" ] || install -vdm 755 "${INFOS}" +[ -e "${PROVIDES}" ] || install -vdm 755 "${PROVIDES}" +[ -e "${REQUIRES}" ] || install -vdm 755 "${REQUIRES}" +[ -e "${RPMS}" ] || install -vdm 755 "${RPMS}" +LIST+="filesystem " # 6.5. Creating Directories +LIST+="symlinks " # 6.6. Creating Essential Files and Symlinks +LIST+="linux-api-headers " # 6.7. Linux-4.20.12 API Headers +LIST+="man-pages " # 6.8. Man-pages-4.16 +LIST+="glibc " # 6.9. Glibc-2.29 +LIST+="tzdata " # 6.9.2.2. Adding time zone data +LIST+="adjust " # 6.10. Adjusting the Toolchain +LIST+="zlib " # 6.11. Zlib-1.2.11 +LIST+="file " # 6.12. File-5.36 +LIST+="readline " # 6.13. Readline-8.0 +LIST+="m4 " # 6.14. M4-1.4.18 +LIST+="bc " # 6.15. Bc-1.07.1 +LIST+="binutils " # 6.16. Binutils-2.32 +LIST+="gmp " # 6.17. GMP-6.1.2 +LIST+="mpfr " # 6.18. MPFR-4.0.2 +LIST+="mpc " # 6.19. MPC-1.1.0 +LIST+="shadow " # 6.20. Shadow-4.6 +LIST+="gcc " # 6.21. GCC-8.2.0 +LIST+="bzip2 " # 6.22. Bzip2-1.0.6 +LIST+="pkg-config " # 6.23. Pkg-config-0.29.2 +LIST+="ncurses " # 6.24. Ncurses-6.1 +LIST+="attr " # 6.25. Attr-2.4.48 +LIST+="acl " # 6.26. Acl-2.2.53 +LIST+="libcap " # 6.27. Libcap-2.26 +LIST+="sed " # 6.28. Sed-4.7 +LIST+="psmisc " # 6.29. Psmisc-23.2 +LIST+="iana-etc " # 6.30. Iana-Etc-2.30 +LIST+="bison " # 6.31. Bison-3.3.2 +LIST+="flex " # 6.32. Flex-2.6.4 +LIST+="grep " # 6.33. Grep-3.3 +LIST+="bash " # 6.34. Bash-5.0 +LIST+="libtool " # 6.35. Libtool-2.4.6 +LIST+="gdbm " # 6.36. GDBM-1.18.1 +LIST+="gperf " # 6.37. Gperf-3.1 +LIST+="expat " # 6.38. Expat-2.2.6 +LIST+="inetutils " # 6.39. Inetutils-1.9.4 +LIST+="perl " # 6.40. Perl-5.28.1 +LIST+="XML-Parser " # 6.41. XML::Parser-2.44 +LIST+="intltool " # 6.42. Intltool-0.51.0 +LIST+="autoconf " # 6.43. Autoconf-2.69 +LIST+="automake " # 6.44. Automake-1.16.1 +LIST+="xz " # 6.45. Xz-5.2.4 +LIST+="kmod " # 6.46. Kmod-26 +LIST+="gettext " # 6.47. Gettext-0.19.8.1 +LIST+="libelf " # 6.48. Libelf from Elfutils-0.176 +LIST+="libffi " # 6.49. Libffi-3.2.1 +LIST+="openssl " # 6.50. OpenSSL-1.1.1a +LIST+="python3 " # 6.51. Python-3.7.2 +LIST+="ninja " # 6.52. Ninja-1.9.0 +LIST+="meson " # 6.53. Meson-0.49.2 +LIST+="coreutils " # 6.54. Coreutils-8.30 +LIST+="check " # 6.55. Check-0.12.0 +LIST+="diffutils " # 6.56. Diffutils-3.7 +LIST+="gawk " # 6.57. Gawk-4.2.1 +LIST+="findutils " # 6.58. Findutils-4.6.0 +LIST+="groff " # 6.59. Groff-1.22.4 +LIST+="grub " # 6.60. GRUB-2.02 +LIST+="less " # 6.61. Less-530 +LIST+="gzip " # 6.62. Gzip-1.10 +LIST+="iproute2 " # 6.63. IPRoute2-4.20.0 +LIST+="kbd " # 6.64. Kbd-2.0.4 +LIST+="libpipeline " # 6.65. Libpipeline-1.5.1 +LIST+="make " # 6.66. Make-4.2.1 +LIST+="patch " # 6.67. Patch-2.7.6 +LIST+="man-db " # 6.68. Man-DB-2.8.5 +LIST+="tar " # 6.69. Tar-1.31 +LIST+="texinfo " # 6.70. Texinfo-6.5 +LIST+="vim " # 6.71. Vim-8.1 +LIST+="procps-ng " # 6.72. Procps-ng-3.3.15 +LIST+="util-linux " # 6.73. Util-linux-2.33.1 +LIST+="e2fsprogs " # 6.74. E2fsprogs-1.44.5 +LIST+="sysklogd " # 6.75. Sysklogd-1.5.1 +LIST+="sysvinit " # 6.76. Sysvinit-2.93 +LIST+="eudev " # 6.77. Eudev-3.2.7 +# Chapter 7 +LIST+="lfs-bootscripts " # lfs-bootscripts +LIST+="cpio " # cpio +LIST+="mkinitramfs " # mkinitramfs +LIST+="linux " # 8.3. Linux-4.20.12 +# ADDONS +LIST+="popt " # popt +LIST+="python2 " # python2 +LIST+="rpm " # rpm +LIST+="wget " # wget +LIST+="firmware-radeon " # firmware-radeon +LIST+="firmware-realtek " # firmware-realtek +LIST+="firmware-amd-ucode " # firmware-amd-ucode +LIST+="base " # lfs base packages meta package +for i in ${LIST};do + case ${i} in + symlinks) _log="${LOGS}/symlinks" + if [ -e ${_log} ]; then + msg "Skipping: Installing Essential Files and Symlinks" + else + _symlinks + fi + ;; + glibc) _params "${SPECS}/${i}.spec" + if [ "T" = "${RPM_EXISTS}" ]; then + msg "Skipping: ${i}" + else + _glibc + fi + ;; + adjust) _log="${LOGS}/adjust" + if [ -e ${_log} ]; then + msg "Skipping: Adjusting tool chain" + else + _adjust + fi + ;; + bc) _params "${SPECS}/${i}.spec" + if [ "T" = "${RPM_EXISTS}" ]; then + msg "Skipping: ${i}" + else + _bc + fi + ;; + gcc) _params "${SPECS}/${i}.spec" + if [ "T" = "${RPM_EXISTS}" ]; then + msg "Skipping: ${i}" + else + _gcc + fi + ;; + util-linux) _params "${SPECS}/${i}.spec" + if [ "T" = "${RPM_EXISTS}" ]; then + msg "Skipping: ${i}" + else + [ -e /usr/include/blkid ] && rm -rf /usr/include/blkid + [ -e /usr/include/libmount ] && rm -rf /usr/include/libmount + [ -e /usr/include/uuid ] && rm -rf /usr/include/uuid + _build + _install + fi + ;; + *) _params "${SPECS}/${i}.spec" + if [ "T" = "${RPM_EXISTS}" ]; then + msg "Skipping: ${i}" + else + _build + _install + fi + ;; + esac +done +# update ld cache, generate locales and set user/group files +unset LIST +LIST+="/sbin/ldconfig " +LIST+="/sbin/locale-gen " +LIST+="/usr/sbin/pwconv " +LIST+="/usr/sbin/grpconv " +for i in ${LIST}; do msg_line "${i}: ";eval " ${i}";msg_success;done +# Configure +unset LIST +LIST+="/etc/sysconfig/clock " +LIST+="/etc/passwd " +LIST+="/etc/hosts " +LIST+="/etc/hostname " +LIST+="/etc/fstab " +LIST+="/etc/sysconfig/ifconfig.eth0 " +LIST+="/etc/resolv.conf " +LIST+="/etc/lsb-release " +LIST+="/etc/sysconfig/rc.site " +for i in ${LIST}; do vim "${i}";done +end_run diff --git a/cleanup.sh b/cleanup.sh new file mode 100755 index 0000000..6ecb848 --- /dev/null +++ b/cleanup.sh @@ -0,0 +1,87 @@ +#!/bin/bash +#----------------------------------------------------------------------------- +# Title: cleanup.sh +# Date: 2019-05-22 +# Version: 1.0 +# Author: baho-utot@columbus.rr.com +# Options: +#----------------------------------------------------------------------------- +# Copyright 2019 Baho Utot +#----------------------------------------------------------------------------- +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +#----------------------------------------------------------------------------- +# Dedicated to Elizabeth my cat of 20 years, Euthanasia on 2019-05-16 +#----------------------------------------------------------------------------- +# This script removes changes made to the host system and +# also removes the build tool chain chapter 5 packages as they are no +# longer needed. It will also unmount the /mnt/lfs filesystem +#----------------------------------------------------------------------------- +set -o errexit # exit if error...insurance ;) +set -o nounset # exit if variable not initalized +set +h # disable hashall +#----------------------------------------------------------------------------- +PRGNAME=${0##*/} # script name minus the path +LFS=/mnt/lfs # build area +TOOLCHAIN="${LFS}/tools" # tool chain directory +LINK=/tools # tool chain symlink +USER=lfs # build user +#----------------------------------------------------------------------------- +function die() { + local _red="\\033[1;31m" + local _normal="\\033[0;39m" + [ -n "$*" ] && printf "${_red}$*${_normal}\n" + exit 1 +} +function msg { + printf "%s\n" "${1}" + return +} +function msg_line { + printf "%s" "${1}" + return +} +function msg_failure { + local _red="\\033[1;31m" + local _normal="\\033[0;39m" + printf "${_red}%s${_normal}\n" "FAILURE" + exit 2 +} +function msg_success { + local _green="\\033[1;32m" + local _normal="\\033[0;39m" + printf "${_green}%s${_normal}\n" "SUCCESS" + return +} +function msg_log { + printf "\n%s\n\n" "${1}" >> ${_logfile} 2>&1 + return +} +function end_run { + local _green="\\033[1;32m" + local _normal="\\033[0;39m" + printf "${_green}%s${_normal}\n" "Run Complete" + return +} +#----------------------------------------------------------------------------- +msg_line "Checking to see if running as root: " + [ "$EUID" -ne 0 ] && die "You need be running as root for this script" +msg_success +msg_line "Remove chapter 5 tool chain: " + [ -d "${TOOLCHAIN}" ] && rm -rf "${TOOLCHAIN}" + [ -h "${LINK}" ] && rm ${LINK} +msg_success +msg_line "Removing lfs user: " + getent passwd ${USER} > /dev/null 2>&1 && userdel -r ${USER} > /dev/null 2>&1 +msg_success +end_run diff --git a/installer.sh b/installer.sh new file mode 100755 index 0000000..90f5ff5 --- /dev/null +++ b/installer.sh @@ -0,0 +1,143 @@ +#!/bin/bash +#----------------------------------------------------------------------------- +# Title: installer.sh +# Date: 2018-09-09 +# Version: 1.0 +# Author: baho-utot@columbus.rr.com +# Options: +#----------------------------------------------------------------------------- +# Copyright 2019 Baho Utot +#----------------------------------------------------------------------------- +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +#----------------------------------------------------------------------------- +# This script installs LFS base rpms to a partition mounted at /mnt +# the partition should be a new/clean partition as it will be overwritten +#----------------------------------------------------------------------------- +# Dedicated to Elizabeth my cat of 20 years, Euthanasia on 2019-05-16 +#----------------------------------------------------------------------------- +set -o errexit # exit if error...insurance ;) +set -o nounset # exit if variable not initalized +set +h # disable hashall +#----------------------------------------------------------------------------- +PRGNAME=${0##*/} # script name minus the path +REPOPATH="RPMS/x86_64" # path to the binary rpms +ROOTPATH="/mnt" # path to install filesystem +BASE="SPECS/base.spec" # filespec SPECS/base.spec +DBPATH="/var/lib/rpm" # path to the rpm database rel to ROOTPATH +LIST="" # list of packages to install +#----------------------------------------------------------------------------- +function _die() { + local _red="\\033[1;31m" + local _normal="\\033[0;39m" + [ -n "$*" ] && printf "${_red}$*${_normal}\n" + exit 1 +} +function _msg { + printf "%s\n" "${1}" + return +} +function _msg_line { + printf "%s" "${1}" + return +} +function _msg_failure { + local _red="\\033[1;31m" + local _normal="\\033[0;39m" + printf "${_red}%s${_normal}\n" "FAILURE" + exit 2 +} +function _msg_success { + local _green="\\033[1;32m" + local _normal="\\033[0;39m" + printf "${_green}%s${_normal}\n" "SUCCESS" + return +} +function _msg_log { + printf "\n%s\n\n" "${1}" >> ${_logfile} 2>&1 + return +} +function _end_run { + local _green="\\033[1;32m" + local _normal="\\033[0;39m" + printf "${_green}%s${_normal}\n" "Run Complete" + return +} +#----------------------------------------------------------------------------- +_msg "" +_msg "${PRGNAME}:" +[ ${EUID} -eq 0 ] || _die +if [ ! /usr/bin/mountpoint ${ROOTPATH} > /dev/null 2>&1 ]; then _die "Hey ${ROOTPATH} is not mounted"; fi +_msg "Variable: PRGNAME: ${PRGNAME}" +_msg "Variable: REPOPATH: ${REPOPATH}" +_msg "Variable: ROOTPATH: ${ROOTPATH}" +_msg "Variable: BASE: ${BASE}" +_msg "Variable: DBPATH: ${DBPATH}" +install -vdm 755 "${ROOTPATH}${DBPATH}" +rpmdb --verbose --initdb --dbpath="${ROOTPATH}${DBPATH}" +# This reads all the rpm binary packages from SPECS/base.spec +while read i; do + i=$(echo ${i} | tr -d '[:cntrl:][:space:]') + case ${i} in + Requires:*) + j="${i##Requires:}" + case ${j} in + base*) ;; + filesystem*) ;; + *) LIST+="${j} " ;; + esac + ;; + *) ;; + esac +done < "${BASE}" +LIST="filesystem ${LIST} " +LIST+="base" +for i in ${LIST}; do + j=$(echo ${REPOPATH}/${i}* | cut -d ' ' -f 1) + rpm --upgrade --verbose --hash --nodeps --noscripts --root ${ROOTPATH} --dbpath ${DBPATH} ${j} +done +# update ld cache, generate locales and set user/group files +# does not update texinfo files/ GNU help +cat > ${ROOTPATH}/tmp/script.sh <<- EOF + /sbin/ldconfig + /sbin/locale-gen + /usr/sbin/pwconv + /usr/sbin/grpconv + pushd /usr/share/info + rm -v dir + for f in *; do + install-info ${f} dir 2>/dev/null + done + popd + pushd /boot + /usr/bin/touch initrd.img-4.20.12 + /bin/rm initrd.img-4.20.12 + /sbin/mkinitramfs 4.20.12 + /usr/bin/vim /etc/sysconfig/clock + /usr/bin/vim /etc/passwd + /usr/bin/vim /etc/hosts + /usr/bin/vim /etc/hostname + /usr/bin/vim /etc/fstab + /usr/bin/vim /etc/sysconfig/ifconfig.eth0 + /usr/bin/vim /etc/resolv.conf + /usr/bin/vim /etc/lsb-release + /usr/bin/vim /etc/sysconfig/rc.site +EOF +chmod +x ${ROOTPATH}/tmp/script.sh +chroot ${ROOTPATH} /usr/bin/env -i \ + HOME=/root \ + TERM="${TERM}" \ + PS1='(intsaller) \u:\w:\$' \ + PATH=/bin:/usr/bin:/sbin:/usr/sbin \ + /bin/bash --login -c 'cd /tmp;./script.sh' +_end_run diff --git a/lfs.sh b/lfs.sh new file mode 100755 index 0000000..833a799 --- /dev/null +++ b/lfs.sh @@ -0,0 +1,124 @@ +#!/bin/bash +#----------------------------------------------------------------------------- +# Title: lfs.sh +# Date: 2019-05-22 +# Version: 1.0 +# Author: baho-utot@columbus.rr.com +# Options: +#----------------------------------------------------------------------------- +# Copyright 2019 Baho Utot +#----------------------------------------------------------------------------- +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +#----------------------------------------------------------------------------- +# Dedicated to Elizabeth my cat of 20 years, Euthanasia on 2019-05-16 +#----------------------------------------------------------------------------- +set -o errexit # exit if error...insurance ;) +set -o nounset # exit if variable not initalized +set +h # disable hashall +#----------------------------------------------------------------------------- +# Master variables +PRGNAME=${0##*/} # script name minus the path +TOPDIR=${PWD} # parent directory +PARENT=/usr/src/LFS-RPM # rpm build directory +USER=lfs # build user +LFS=/mnt/lfs # build area +#----------------------------------------------------------------------------- +# Common support functions +function die { + local _red="\\033[1;31m" + local _normal="\\033[0;39m" + [ -n "$*" ] && printf "${_red}$*${_normal}\n" + false + exit 1 +} +function msg { + printf "%s\n" "${1}" + return +} +function msg_line { + printf "%s" "${1}" + return +} +function msg_failure { + local _red="\\033[1;31m" + local _normal="\\033[0;39m" + printf "${_red}%s${_normal}\n" "FAILURE" + exit 2 +} +function msg_success { + local _green="\\033[1;32m" + local _normal="\\033[0;39m" + printf "${_green}%s${_normal}\n" "SUCCESS" + return +} +function msg_log { + printf "\n%s\n\n" "${1}" >> ${_logfile} 2>&1 + return +} +function end_run { + local _green="\\033[1;32m" + local _normal="\\033[0;39m" + printf "${_green}%s${_normal}\n" "Run Complete" + return +} +#----------------------------------------------------------------------------- +# sanity check +[ -v LFS ] || die "LFS environment variable missing/not set" +[ -d ${LFS}/${PARENT} ] || die "${LFS}${PARENT} directory missing" +cd ${LFS}${PARENT} +su --login ${USER} <<- "EOF" + source ~/.bashrc + cd /mnt/lfs/usr/src/LFS-RPM + ./tools.sh +EOF +msg_line " Unmounting Virtual Kernel File Systems: " + mountpoint -q ${LFS}/run && umount ${LFS}/run + mountpoint -q ${LFS}/sys && umount ${LFS}/sys + mountpoint -q ${LFS}/proc && umount ${LFS}/proc + mountpoint -q ${LFS}/dev/pts && umount ${LFS}/dev/pts + mountpoint -q ${LFS}/dev && umount ${LFS}/dev +msg_success +msg_line " Changing file ownership: " + chown -R 0:0 ${LFS} +msg_success +msg_line " Preparing Virtual Kernel File Systems: " + [ -d ${LFS}/dev ] || mkdir -p ${LFS}/dev + [ -d ${LFS}/proc ] || mkdir -p ${LFS}/proc + [ -d ${LFS}/sys ] || mkdir -p ${LFS}/sys + [ -d ${LFS}/run ] || mkdir -p ${LFS}/run + [ -e ${LFS}/dev/console ] || mknod -m 600 ${LFS}/dev/console c 5 1 + [ -e ${LFS}/dev/null ] || mknod -m 666 ${LFS}/dev/null c 1 3 +msg_success +msg_line " Mounting Virtual Kernel File Systems: " + mountpoint -q ${LFS}/dev || mount --bind /dev ${LFS}/dev + mountpoint -q ${LFS}/dev/pts || mount -t devpts devpts ${LFS}/dev/pts -o gid=5,mode=620 + mountpoint -q ${LFS}/proc || mount -t proc proc ${LFS}/proc + mountpoint -q ${LFS}/sys || mount -t sysfs sysfs ${LFS}/sys + mountpoint -q ${LFS}/run || mount -t tmpfs tmpfs ${LFS}/run + [ -h ${LFS}/dev/shm ] && mkdir -p ${LFS}/$(readlink ${LFS}/dev/shm) +msg_success +chroot "$LFS" /tools/bin/env -i \ + HOME=/root \ + TERM="$TERM" \ + PS1='(lfs chroot) \u:\w\$ ' \ + PATH=/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin \ + /tools/bin/bash --login +h -c "cd ${PARENT};./base.sh" +msg_line " Unmounting Virtual Kernel File Systems: " + mountpoint -q ${LFS}/run && umount ${LFS}/run + mountpoint -q ${LFS}/sys && umount ${LFS}/sys + mountpoint -q ${LFS}/proc && umount ${LFS}/proc + mountpoint -q ${LFS}/dev/pts && umount ${LFS}/dev/pts + mountpoint -q ${LFS}/dev && umount ${LFS}/dev +msg_success +end_run diff --git a/setup.sh b/setup.sh new file mode 100755 index 0000000..015d791 --- /dev/null +++ b/setup.sh @@ -0,0 +1,192 @@ +#!/bin/bash +#----------------------------------------------------------------------------- +# Title: setup.sh +# Date: 2019-02-15 +# Version: 1.1 +# Author: baho-utot@columbus.rr.com +# Options: +#----------------------------------------------------------------------------- +# Copyright 2019 Baho Utot +#----------------------------------------------------------------------------- +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +#----------------------------------------------------------------------------- +# Dedicated to Elizabeth my cat of 20 years, Euthanasia on 2019-05-16 +#----------------------------------------------------------------------------- +set -o errexit # exit if error...insurance ;) +set -o nounset # exit if variable not initalized +set +h # disable hashall +#----------------------------------------------------------------------------- +# Common variables +PRGNAME=${0##*/} # Script name minus the path +TOPDIR=${PWD} # This directory +LFS=/mnt/lfs # Where LFS will be installed to +PARENT=/usr/src/LFS-RPM # Where build system wil live +SWAP_FILE_SIZE=1024 # Size of swap file in MB +#----------------------------------------------------------------------------- +# Common support functions +function die { + local _red="\\033[1;31m" + local _normal="\\033[0;39m" + [ -n "$*" ] && printf "${_red}$*${_normal}\n" + false + exit 1 +} +function msg { + printf "%s\n" "${1}" + return +} +function msg_line { + printf "%s" "${1}" + return +} +function msg_failure { + local _red="\\033[1;31m" + local _normal="\\033[0;39m" + printf "${_red}%s${_normal}\n" "FAILURE" + exit 2 +} +function msg_success { + local _green="\\033[1;32m" + local _normal="\\033[0;39m" + printf "${_green}%s${_normal}\n" "SUCCESS" + return +} +function msg_log { + printf "\n%s\n\n" "${1}" >> ${_logfile} 2>&1 + return +} +function end_run { + local _green="\\033[1;32m" + local _normal="\\033[0;39m" + printf "${_green}%s${_normal}\n" "Run Complete - ${PRGNAME}" + return +} +#----------------------------------------------------------------------------- +# Local functions +function _sanity { + local size="" + msg_line " Checking to see if running as root: " + [ "$EUID" -ne 0 ] && die "You need be running as root for this script" + msg_success + msg_line " Checking if LFS variable is set: " + [ -v LFS ] || die "LFS environment variable missing/not set" + msg_success + msg_line " Checking if ${LFS} is mounted: " + mountpoint -q ${LFS} || die "${LFS} is not mounted" + msg_success + # check for swap space and add some in there is no swap + size=$(free | grep 'Swap:' | tr -d ' ' | cut -d ':' -f2) + case ${size} in + "000") + msg " Creating swap file: ${LFS}/swapfile: " + dd if=/dev/zero of=${LFS}/swapfile status=progress bs=1M count=${SWAP_FILE_SIZE} + chmod 600 ${LFS}/swapfile + mkswap ${LFS}/swapfile + swapon -v ${LFS}/swapfile + msg_success ;; + *) ;; + esac + return +} +function _chapter_3 { +# 3. Packages and Patches +# Introduction +# All Packages +# Needed Patches + local i="" + local list="" + if [ ${PWD} != ${LFS}${PARENT} ]; then + msg_line " Install build system: " + [ -d ${LFS}/${PARENT} ] || install -dm 755 ${LFS}${PARENT} + cp -ar ${TOPDIR}/BOOK ${LFS}${PARENT} + cp -ar ${TOPDIR}/SOURCES ${LFS}${PARENT} + cp -ar ${TOPDIR}/SPECS ${LFS}${PARENT} + cp -a ${TOPDIR}/README ${LFS}${PARENT} + cp -a ${TOPDIR}/*.sh ${LFS}${PARENT} + chmod +x ${LFS}${PARENT}/*.sh + msg_success + fi + # Create download list + while IFS= read -r i; do + list+="${i} " + done < "${TOPDIR}/BOOK/wget-list" + list+="http://rpm5.org/files/popt/popt-1.16.tar.gz " + list+="https://www.python.org/ftp/python/2.7.15/Python-2.7.15.tar.xz " + list+="http://ftp.rpm.org/releases/rpm-4.14.x/rpm-4.14.1.tar.bz2 " + list+="http://download.oracle.com/berkeley-db/db-6.0.20.tar.gz " + list+="https://ftp.gnu.org/gnu/cpio/cpio-2.12.tar.bz2 " + list+="https://ftp.gnu.org/gnu/wget/wget-1.20.1.tar.gz " + for i in ${list}; do + msg_line " Fetching: ${i}: " + wget --quiet --no-clobber --no-check-certificate --continue --directory-prefix=${LFS}${PARENT}/SOURCES ${i} || die "${PRGNAME}: Error: ${i}: Fetching tarball" + msg_success + done + # Create md5sum list + while read i;do + pushd ${LFS}${PARENT}/SOURCES > /dev/null 2>&1 + printf "%s\n" "${i}" > md5sums + msg_line " Verifying: ${i#*' '}: " + md5sum --status -c md5sums && msg_success || msg_failure + popd > /dev/null 2>&1 + done < "${TOPDIR}/BOOK/md5sums" + return +} +function _chapter_4 { +# 4. Final Preparations +# Introduction +# Creating the $LFS/tools Directory +# Adding the LFS User +# Setting Up the Environment +# About SBUs +# About the Test Suites + local target="" + # Creating the $LFS/tools Directory + msg_line " Checking for ${LFS}/tools directory: " + [ -d ${LFS}/tools ] || install -dm 755 ${LFS}/tools + msg_success + msg_line " Checking for /tools symlink: " + [ -h /tools ] || ln -s ${LFS}/tools / + msg_success + msg_line " Creating lfs user: " + getent group lfs > /dev/null 2>&1 || groupadd lfs > /dev/null 2>&1 + getent passwd lfs > /dev/null 2>&1 || useradd -c 'LFS user' -g lfs -m -k /dev/null -s /bin/bash lfs > /dev/null 2>&1 + getent passwd lfs > /dev/null 2>&1 && passwd --delete lfs > /dev/null 2>&1 + msg_success + msg_line " Setting Up the Environment: " + [ -d /home/lfs ] || install -dm 755 /home/lfs + cat > /home/lfs/.bash_profile <<- EOF + exec env -i HOME=/home/lfs TERM=${TERM} PS1='\u:\w\$ ' /bin/bash + EOF + cat > /home/lfs/.bashrc <<- EOF + set +h + umask 022 + LFS=/mnt/lfs + LC_ALL=POSIX + LFS_TGT=$(uname -m)-lfs-${OSTYPE} + PATH=/tools/bin:/bin:/usr/bin + export LFS LC_ALL LFS_TGT PATH + EOF + chown -R lfs:lfs /home/lfs || die "${PRGNAME}: ${FUNCNAME}: FAILURE" + chown -R lfs:lfs ${LFS} || die "${PRGNAME}: ${FUNCNAME}: FAILURE" + msg_success + return +} +#----------------------------------------------------------------------------- +# Main line +LIST="" +LIST+="_sanity " # Sanity checks +LIST+="_chapter_3 " # Chapter 3 Packages and Patches +LIST+="_chapter_4 " # Chapter 4 Final Preparations +for i in ${LIST};do ${i};done +end_run diff --git a/tools.sh b/tools.sh new file mode 100755 index 0000000..b37e699 --- /dev/null +++ b/tools.sh @@ -0,0 +1,1345 @@ +#!/bin/bash +#----------------------------------------------------------------------------- +# Title: tools.sh +# Date: 2019-02-16 +# Version: 1.1 +# Author: baho-utot@columbus.rr.com +# Options: +#----------------------------------------------------------------------------- +# Copyright 2019 Baho Utot +#----------------------------------------------------------------------------- +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +#----------------------------------------------------------------------------- +# Dedicated to Elizabeth my cat of 20 years, Euthanasia on 2019-05-16 +#----------------------------------------------------------------------------- +set -o errexit # exit if error...insurance ;) +set -o nounset # exit if variable not initalized +set +h # disable hashall +#----------------------------------------------------------------------------- +# Common variables +PRGNAME=${0##*/} # script name minus the path +TOPDIR=${PWD} # this directory +PARENT=/usr/src/LFS-RPM # build system master directory +MKFLAGS="-j 1" # Number of cpu to use in building pkgs default = 1 +#----------------------------------------------------------------------------- +# Common support functions +function die { + local _red="\\033[1;31m" + local _normal="\\033[0;39m" + [ -n "$*" ] && printf "${_red}$*${_normal}\n" + false + exit 1 +} +function msg { + printf "%s\n" "${1}" + return +} +function msg_line { + printf "%s" "${1}" + return +} +function msg_failure { + local _red="\\033[1;31m" + local _normal="\\033[0;39m" + printf "${_red}%s${_normal}\n" "FAILURE" + exit 2 +} +function msg_success { + local _green="\\033[1;32m" + local _normal="\\033[0;39m" + printf "${_green}%s${_normal}\n" "SUCCESS" + return +} +function msg_log { + printf "\n%s\n\n" "${1}" >> ${_logfile} 2>&1 + return +} +function end_run { + local _green="\\033[1;32m" + local _normal="\\033[0;39m" + printf "${_green}%s${_normal}\n" "Run Complete - ${PRGNAME}" + return +} +#----------------------------------------------------------------------------- +# Local functions +function _sanity { + [ $(whoami) = "lfs" ] || die "Not running as user lfs, you should be!" + [ -v LFS ] || die "LFS environment variable missing/not set" + [ "/tools/bin:/bin:/usr/bin" = "${PATH}" ] || die "PATH environment variable missing/not corrrect" + [ -v LFS_TGT ] || die "LFS_TGT environment variable missing/not set" + [ "${HOSTTYPE}-lfs-${OSTYPE}" = "${LFS_TGT}" ] || die "LFS_TGT environment variable incorrect" + [ -d ${LFS} ] || die "${LFS} directory missing" + [ -d ${LFS}/tools ] || die "${LFS}/tools directory missing" + [ -h /tools ] || die "tools root symlink missing" + [ $(stat -c %U ${LFS}/tools) = "lfs" ] || die "The tools directory not owned by user lfs" + [ ${TOPDIR} = ${LFS}${PARENT} ] || die "Not in the correct build directory" + [ -d "${TOPDIR}/LOGS" ] || install -dm 755 "${TOPDIR}/LOGS" + [ -d "${TOPDIR}/BUILD" ] || install -dm 755 "${TOPDIR}/BUILD" + return +} +function do_strip { + msg_line "Stripping file: " + strip --strip-debug /tools/lib/* > /dev/null 2&>1 || true + /usr/bin/strip --strip-unneeded /tools/{,s}bin/* > /dev/null 2&>1 || true + rm -rf /tools/{,share}/{info,man,doc} + find /tools/{lib,libexec} -name \*.la -delete + msg_success + return +} +function set-mkflags { + msg_line "Setting MKFLAGS: " + MKFLAGS="-j 1" # default + MKFLAGS="-j $(getconf _NPROCESSORS_ONLN || true)" # how many processors on this host + [ '-j' == "${MKFLAGS}" ] && MKFLAGS="-j 2" # set two cpu's default + printf "%s" "${FUNCNAME}: MKFLAGS: ${MKFLAGS}: " + msg_success + return +} +function unpack { + # $1 = source package name + local tarball=${TOPDIR}/SOURCES/${1} + msg_line " Unpacking: ${1}: " + [ -e ${tarball} ] || die " File not found: FAILURE" + tar xf ${tarball} && msg_success || msg_failure + return 0 +} +function clean-build-directory { + msg_line "Cleaning BUILD directory: " + rm -rf ${TOPDIR}/BUILD/* + rm -rf ${TOPDIR}/BUILDROOT/* + msg_success + return +} +#----------------------------------------------------------------------------- +# Package functions +function Binutils-Pass-1 { + # 5.4. Binutils-2.32 - Pass 1 + local pkg=binutils-2.32.tar.xz + local pkg_dir=${pkg%%.tar*} + local logfile="${TOPDIR}/LOGS/tools-${FUNCNAME}.log" + [ -e ${logfile}.complete ] && { msg "Skipping: ${FUNCNAME}";return 0; } || msg "Building: ${FUNCNAME}" + > ${logfile} + pushd ${TOPDIR}/BUILD >> /dev/null 2>&1 + unpack "${pkg}" + pushd ${pkg_dir} >> /dev/null 2>&1 + mkdir build + pushd build >> /dev/null 2>&1 + msg_line " Configure: " + ../configure --prefix=/tools \ + --with-sysroot=${LFS} \ + --with-lib-path=/tools/lib \ + --target=${LFS_TGT} \ + --disable-nls \ + --disable-werror >> ${logfile} 2>&1 + msg_success + msg_line " Make: " + make ${MKFLAGS} >> ${logfile} 2>&1 + msg_success + msg_line " Install: " + install -vdm 755 /tools/lib >> ${logfile} 2>&1 + [ "x86_64" = ${HOSTTYPE} ] && ln -sv lib /tools/lib64 >> ${logfile} 2>&1 + make install >> ${logfile} 2>&1 + msg_success + popd > /dev/null 2>&1 + popd > /dev/null 2>&1 + popd > /dev/null 2>&1 + clean-build-directory + mv ${logfile} ${logfile}.complete + return +} +function GCC-Pass-1 { + # 5.5. GCC-8.2.0 - Pass 1 + local pkg=gcc-8.2.0.tar.xz + local pkg_dir=${pkg%%.tar*} + local logfile="${TOPDIR}/LOGS/tools-${FUNCNAME}.log" + [ -e ${logfile}.complete ] && { msg "Skipping: ${FUNCNAME}";return 0; } || msg "Building: ${FUNCNAME}" + > ${logfile} + pushd ${TOPDIR}/BUILD >> /dev/null 2>&1 + unpack "${pkg}" + pushd ${pkg_dir} >> /dev/null 2>&1 + for file in gcc/config/{linux,i386/linux{,64}}.h; do + cp -u $file{,.orig} + sed -e 's@/lib\(64\)\?\(32\)\?/ld@/tools&@g' -e 's@/usr@/tools@g' $file.orig > $file + cat >> ${file} <<- EOF + + #undef STANDARD_STARTFILE_PREFIX_1 + #undef STANDARD_STARTFILE_PREFIX_2 + #define STANDARD_STARTFILE_PREFIX_1 "/tools/lib/" + #define STANDARD_STARTFILE_PREFIX_2 "" + EOF + touch $file.orig + done + case ${HOSTTYPE} in + x86_64) sed -e '/m64=/s/lib64/lib/' -i.orig gcc/config/i386/t-linux64 + ;; + esac + unpack mpfr-4.0.2.tar.xz + unpack gmp-6.1.2.tar.xz + unpack mpc-1.1.0.tar.gz + mv -v mpfr-4.0.2 mpfr >> ${logfile} 2>&1 + mv -v gmp-6.1.2 gmp >> ${logfile} 2>&1 + mv -v mpc-1.1.0 mpc >> ${logfile} 2>&1 + mkdir build + pushd build >> /dev/null 2>&1 + msg_line " Configure: " + ../configure \ + --target=${LFS_TGT} \ + --prefix=/tools \ + --with-glibc-version=2.11 \ + --with-sysroot=${LFS} \ + --with-newlib \ + --without-headers \ + --with-local-prefix=/tools \ + --with-native-system-header-dir=/tools/include \ + --disable-nls \ + --disable-shared \ + --disable-multilib \ + --disable-decimal-float \ + --disable-threads \ + --disable-libatomic \ + --disable-libgomp \ + --disable-libmpx \ + --disable-libquadmath \ + --disable-libssp \ + --disable-libvtv \ + --disable-libstdcxx \ + --enable-languages=c,c++ >> ${logfile} 2>&1 + msg_success + msg_line " Make: " + make ${MKFLAGS} >> ${logfile} 2>&1 + msg_success + msg_line " Install: " + make install >> ${logfile} 2>&1 + msg_success + popd > /dev/null 2>&1 + popd > /dev/null 2>&1 + popd > /dev/null 2>&1 + clean-build-directory + mv ${logfile} ${logfile}.complete + return +} +function Linux-API-Headers { + # Linux-4.20.7 API Headers + local pkg=linux-4.20.12.tar.xz + local pkg_dir=${pkg%%.tar*} + local logfile="${TOPDIR}/LOGS/tools-${FUNCNAME}.log" + [ -e ${logfile}.complete ] && { msg "Skipping: ${FUNCNAME}";return 0; } || msg "Building: ${FUNCNAME}" + > ${logfile} + pushd ${TOPDIR}/BUILD >> /dev/null 2>&1 + unpack "${pkg}" + pushd ${pkg_dir} >> /dev/null 2>&1 + msg_line " Make: " + make mrproper >> ${logfile} 2>&1 + msg_success + msg_line " Install: " + make INSTALL_HDR_PATH=dest headers_install >> ${logfile} 2>&1 + cp -rv dest/include/* /tools/include >> ${logfile} 2>&1 + msg_success + popd > /dev/null 2>&1 + popd > /dev/null 2>&1 + clean-build-directory + mv ${logfile} ${logfile}.complete + return +} +function Glibc { + # Glibc-2.29 + local pkg=glibc-2.29.tar.xz + local pkg_dir=${pkg%%.tar*} + local logfile="${TOPDIR}/LOGS/tools-${FUNCNAME}.log" + [ -e ${logfile}.complete ] && { msg "Skipping: ${FUNCNAME}";return 0; } || msg "Building: ${FUNCNAME}" + > ${logfile} + pushd ${TOPDIR}/BUILD >> /dev/null 2>&1 + unpack "${pkg}" + pushd ${pkg_dir} >> /dev/null 2>&1 + mkdir build + pushd build >> /dev/null 2>&1 + msg_line " Configure: " + ../configure \ + --prefix=/tools \ + --host=${LFS_TGT} \ + --build=$(../scripts/config.guess) \ + --enable-kernel=3.2 \ + --with-headers=/tools/include >> ${logfile} 2>&1 + msg_success + msg_line " Make: " + make ${MKFLAGS} >> ${logfile} 2>&1 + msg_success + msg_line " Install: " + make install >> ${logfile} 2>&1 + msg_success + popd > /dev/null 2>&1 + popd > /dev/null 2>&1 + popd > /dev/null 2>&1 + clean-build-directory + mv ${logfile} ${logfile}.complete + msg_line " Testing glibc: " + echo 'int main(){}' > dummy.c + ${LFS_TGT}-gcc dummy.c >> ${logfile}.test 2>&1 + echo "Test: [Requesting program interpreter: /tools/lib64/ld-linux-x86-64.so.2]" >> ${logfile}.test 2>&1 + readelf -l a.out | grep ': /tools' >> ${logfile}.test 2>&1 + rm dummy.c a.out + msg_success + return +} +function Libstdc { + # Libstdc++ from GCC-8.2.0 + local pkg=gcc-8.2.0.tar.xz + local pkg_dir=${pkg%%.tar*} + local logfile="${TOPDIR}/LOGS/tools-${FUNCNAME}.log" + [ -e ${logfile}.complete ] && { msg "Skipping: ${FUNCNAME}";return 0; } || msg "Building: ${FUNCNAME}" + > ${logfile} + pushd ${TOPDIR}/BUILD >> /dev/null 2>&1 + unpack "${pkg}" + pushd ${pkg_dir} >> /dev/null 2>&1 + mkdir build + pushd build >> /dev/null 2>&1 + msg_line " Configure: " + ../libstdc++-v3/configure \ + --host=${LFS_TGT} \ + --prefix=/tools \ + --disable-multilib \ + --disable-nls \ + --disable-libstdcxx-threads \ + --disable-libstdcxx-pch \ + --with-gxx-include-dir=/tools/${LFS_TGT}/include/c++/8.2.0 >> ${logfile} 2>&1 + msg_success + msg_line " Make: " + make ${MKFLAGS} >> ${logfile} 2>&1 + msg_success + msg_line " Install: " + make install >> ${logfile} 2>&1 + msg_success + popd > /dev/null 2>&1 + popd > /dev/null 2>&1 + popd > /dev/null 2>&1 + clean-build-directory + mv ${logfile} ${logfile}.complete + return +} +function Binutils-Pass-2 { + # Binutils-2.32 - Pass 2 + local pkg=binutils-2.32.tar.xz + local pkg_dir=${pkg%%.tar*} + local logfile="${TOPDIR}/LOGS/tools-${FUNCNAME}.log" + [ -e ${logfile}.complete ] && { msg "Skipping: ${FUNCNAME}";return 0; } || msg "Building: ${FUNCNAME}" + > ${logfile} + pushd ${TOPDIR}/BUILD >> /dev/null 2>&1 + unpack "${pkg}" + pushd ${pkg_dir} >> /dev/null 2>&1 + mkdir build + pushd build >> /dev/null 2>&1 + msg_line " Configure: " + CC=${LFS_TGT}-gcc \ + AR=${LFS_TGT}-ar \ + RANLIB=${LFS_TGT}-ranlib \ + ../configure \ + --prefix=/tools \ + --disable-nls \ + --disable-werror \ + --with-lib-path=/tools/lib \ + --with-sysroot >> ${logfile} 2>&1 + msg_success + msg_line " Make: " + make ${MKFLAGS} >> ${logfile} 2>&1 + msg_success + msg_line " Install: " + make install >> ${logfile} 2>&1 + msg_success + msg_line " Prepare the linker for Re-adjusting: " + make -C ld clean >> ${logfile} 2>&1 + make -C ld LIB_PATH=/usr/lib:/lib >> ${logfile} 2>&1 + cp -v ld/ld-new /tools/bin >> ${logfile} 2>&1 + msg_success + popd > /dev/null 2>&1 + popd > /dev/null 2>&1 + popd > /dev/null 2>&1 + clean-build-directory + mv ${logfile} ${logfile}.complete + return +} +function GCC-Pass-2 { + # GCC-8.2.0 - Pass 2 + local pkg=gcc-8.2.0.tar.xz + local pkg_dir=${pkg%%.tar*} + local logfile="${TOPDIR}/LOGS/tools-${FUNCNAME}.log" + [ -e ${logfile}.complete ] && { msg "Skipping: ${FUNCNAME}";return 0; } || msg "Building: ${FUNCNAME}" + > ${logfile} + pushd ${TOPDIR}/BUILD >> /dev/null 2>&1 + unpack "${pkg}" + pushd ${pkg_dir} >> /dev/null 2>&1 + cat gcc/limitx.h gcc/glimits.h gcc/limity.h > `dirname $(${LFS_TGT}-gcc -print-libgcc-file-name)`/include-fixed/limits.h + for file in gcc/config/{linux,i386/linux{,64}}.h; do + cp -u $file{,.orig} >> ${logfile} 2>&1 + sed -e 's@/lib\(64\)\?\(32\)\?/ld@/tools&@g' -e 's@/usr@/tools@g' $file.orig > $file + cat >> ${file} <<- EOF + + #undef STANDARD_STARTFILE_PREFIX_1 + #undef STANDARD_STARTFILE_PREFIX_2 + #define STANDARD_STARTFILE_PREFIX_1 "/tools/lib/" + #define STANDARD_STARTFILE_PREFIX_2 "" + EOF + touch $file.orig + done + case ${HOSTTYPE} in + x86_64) sed -e '/m64=/s/lib64/lib/' -i.orig gcc/config/i386/t-linux64 + ;; + esac + unpack mpfr-4.0.2.tar.xz + unpack gmp-6.1.2.tar.xz + unpack mpc-1.1.0.tar.gz + mv -v mpfr-4.0.2 mpfr >> ${logfile} 2>&1 + mv -v gmp-6.1.2 gmp >> ${logfile} 2>&1 + mv -v mpc-1.1.0 mpc >> ${logfile} 2>&1 + mkdir build + pushd build >> /dev/null 2>&1 + msg_line " Configure: " + CC=${LFS_TGT}-gcc \ + CXX=${LFS_TGT}-g++ \ + AR=${LFS_TGT}-ar \ + RANLIB=${LFS_TGT}-ranlib \ + ../configure \ + --prefix=/tools \ + --with-local-prefix=/tools \ + --with-native-system-header-dir=/tools/include \ + --enable-languages=c,c++ \ + --disable-libstdcxx-pch \ + --disable-multilib \ + --disable-bootstrap \ + --disable-libgomp >> ${logfile} 2>&1 + msg_success + msg_line " Make: " + make ${MKFLAGS} >> ${logfile} 2>&1 + msg_success + msg_line " Install: " + make install >> ${logfile} 2>&1 + ln -sv gcc /tools/bin/cc >> ${logfile} 2>&1 + msg_success + popd > /dev/null 2>&1 + popd > /dev/null 2>&1 + popd > /dev/null 2>&1 + clean-build-directory + mv ${logfile} ${logfile}.complete + msg_line "Testing gcc pass-2: " + echo 'int main(){}' > dummy.c + cc dummy.c >> ${logfile}.test 2>&1 + echo "Test: [Requesting program interpreter: /tools/lib64/ld-linux-x86-64.so.2]" >> ${logfile}.test 2>&1 + readelf -l a.out | grep ': /tools' >> ${logfile}.test 2>&1 + rm dummy.c a.out + msg_success + return +} +function Tcl { + # Tcl-8.6.9 + local pkg=tcl8.6.9-src.tar.gz + local pkg_dir=${pkg%%-src*} + local logfile="${TOPDIR}/LOGS/tools-${FUNCNAME}.log" + [ -e ${logfile}.complete ] && { msg "Skipping: ${FUNCNAME}";return 0; } || msg "Building: ${FUNCNAME}" + > ${logfile} + pushd ${TOPDIR}/BUILD >> /dev/null 2>&1 + unpack "${pkg}" + pushd ${pkg_dir} >> /dev/null 2>&1 + cd unix + msg_line " Configure: " + ./configure --prefix=/tools >> ${logfile} 2>&1 + msg_success + msg_line " Make: " + make ${MKFLAGS} >> ${logfile} 2>&1 + msg_success + msg_line " Install: " + make install >> ${logfile} 2>&1 + chmod -v u+w /tools/lib/libtcl8.6.so >> ${logfile} 2>&1 + make install-private-headers >> ${logfile} 2>&1 + ln -sv tclsh8.6 /tools/bin/tclsh >> ${logfile} 2>&1 + msg_success + cd - + popd > /dev/null 2>&1 + popd > /dev/null 2>&1 + clean-build-directory + mv ${logfile} ${logfile}.complete + return +} +function Expect { + # Expect-5.45.4 + local pkg=expect5.45.4.tar.gz + local pkg_dir=${pkg%%.tar*} + local logfile="${TOPDIR}/LOGS/tools-${FUNCNAME}.log" + [ -e ${logfile}.complete ] && { msg "Skipping: ${FUNCNAME}";return 0; } || msg "Building: ${FUNCNAME}" + > ${logfile} + pushd ${TOPDIR}/BUILD >> /dev/null 2>&1 + unpack "${pkg}" + pushd ${pkg_dir} >> /dev/null 2>&1 + msg_line " Configure: " + cp -v configure{,.orig} >> ${logfile} 2>&1 + sed 's:/usr/local/bin:/bin:' configure.orig > configure + ./configure \ + --prefix=/tools \ + --with-tcl=/tools/lib \ + --with-tclinclude=/tools/include>> ${logfile} 2>&1 + msg_success + msg_line " Make: " + make ${MKFLAGS} >> ${logfile} 2>&1 + msg_success + msg_line " Install: " + make SCRIPTS="" install >> ${logfile} 2>&1 + msg_success + popd > /dev/null 2>&1 + popd > /dev/null 2>&1 + clean-build-directory + mv ${logfile} ${logfile}.complete + return +} +function DejaGNU { + # DejaGNU-1.6.2 + local pkg=dejagnu-1.6.2.tar.gz + local pkg_dir=${pkg%%.tar*} + local logfile="${TOPDIR}/LOGS/tools-${FUNCNAME}.log" + [ -e ${logfile}.complete ] && { msg "Skipping: ${FUNCNAME}";return 0; } || msg "Building: ${FUNCNAME}" + > ${logfile} + pushd ${TOPDIR}/BUILD >> /dev/null 2>&1 + unpack "${pkg}" + pushd ${pkg_dir} >> /dev/null 2>&1 + msg_line " Configure: " + ./configure --prefix=/tools >> ${logfile} 2>&1 + msg_success + msg_line " Install: " + make install >> ${logfile} 2>&1 + msg_success + popd > /dev/null 2>&1 + popd > /dev/null 2>&1 + clean-build-directory + mv ${logfile} ${logfile}.complete + return +} +# M4-1.4.18 +function M4 { + # M4-1.4.18 + local pkg=m4-1.4.18.tar.xz + local pkg_dir=${pkg%%.tar*} + local logfile="${TOPDIR}/LOGS/tools-${FUNCNAME}.log" + [ -e ${logfile}.complete ] && { msg "Skipping: ${FUNCNAME}";return 0; } || msg "Building: ${FUNCNAME}" + > ${logfile} + pushd ${TOPDIR}/BUILD >> /dev/null 2>&1 + unpack "${pkg}" + pushd ${pkg_dir} >> /dev/null 2>&1 + msg_line " Configure: " + sed -i 's/IO_ftrylockfile/IO_EOF_SEEN/' lib/*.c >> ${logfile} 2>&1 + echo "#define _IO_IN_BACKUP 0x100" >> lib/stdio-impl.h + ./configure --prefix=/tools >> ${logfile} 2>&1 + msg_success + msg_line " Make: " + make ${MKFLAGS} >> ${logfile} 2>&1 + msg_success + msg_line " Install: " + make install >> ${logfile} 2>&1 + msg_success + popd > /dev/null 2>&1 + popd > /dev/null 2>&1 + clean-build-directory + mv ${logfile} ${logfile}.complete + return +} +function Ncurses { + # Ncurses-6.1 + local pkg=ncurses-6.1.tar.gz + local pkg_dir=${pkg%%.tar*} + local logfile="${TOPDIR}/LOGS/tools-${FUNCNAME}.log" + [ -e ${logfile}.complete ] && { msg "Skipping: ${FUNCNAME}";return 0; } || msg "Building: ${FUNCNAME}" + > ${logfile} + pushd ${TOPDIR}/BUILD >> /dev/null 2>&1 + unpack "${pkg}" + pushd ${pkg_dir} >> /dev/null 2>&1 + msg_line " Configure: " + sed -i s/mawk// configure >> ${logfile} 2>&1 + ./configure \ + --prefix=/tools \ + --with-shared \ + --without-debug \ + --without-ada \ + --enable-widec \ + --enable-overwrite >> ${logfile} 2>&1 + msg_success + msg_line " Make: " + make ${MKFLAGS} >> ${logfile} 2>&1 + msg_success + msg_line " Install: " + make install >> ${logfile} 2>&1 + ln -s libncursesw.so /tools/lib/libncurses.so >> ${logfile} 2>&1 + msg_success + popd > /dev/null 2>&1 + popd > /dev/null 2>&1 + clean-build-directory + mv ${logfile} ${logfile}.complete + return +} +function Bash { + # Bash-5.0 + local pkg=bash-5.0.tar.gz + local pkg_dir=${pkg%%.tar*} + local logfile="${TOPDIR}/LOGS/tools-${FUNCNAME}.log" + [ -e ${logfile}.complete ] && { msg "Skipping: ${FUNCNAME}";return 0; } || msg "Building: ${FUNCNAME}" + > ${logfile} + pushd ${TOPDIR}/BUILD >> /dev/null 2>&1 + unpack "${pkg}" + pushd ${pkg_dir} >> /dev/null 2>&1 + msg_line " Configure: " + ./configure --prefix=/tools --without-bash-malloc >> ${logfile} 2>&1 + msg_success + msg_line " Make: " + make ${MKFLAGS} >> ${logfile} 2>&1 + msg_success + msg_line " Install: " + make install >> ${logfile} 2>&1 + ln -sv bash /tools/bin/sh >> ${logfile} 2>&1 + msg_success + popd > /dev/null 2>&1 + popd > /dev/null 2>&1 + clean-build-directory + mv ${logfile} ${logfile}.complete + return +} +function Bison { + # Bison-3.3.2 + local pkg=bison-3.3.2.tar.xz + local pkg_dir=${pkg%%.tar*} + local logfile="${TOPDIR}/LOGS/tools-${FUNCNAME}.log" + [ -e ${logfile}.complete ] && { msg "Skipping: ${FUNCNAME}";return 0; } || msg "Building: ${FUNCNAME}" + > ${logfile} + pushd ${TOPDIR}/BUILD >> /dev/null 2>&1 + unpack "${pkg}" + pushd ${pkg_dir} >> /dev/null 2>&1 + msg_line " Configure: " + ./configure --prefix=/tools >> ${logfile} 2>&1 + msg_success + msg_line " Make: " + make ${MKFLAGS} >> ${logfile} 2>&1 + msg_success + msg_line " Install: " + make install >> ${logfile} 2>&1 + msg_success + popd > /dev/null 2>&1 + popd > /dev/null 2>&1 + clean-build-directory + mv ${logfile} ${logfile}.complete + return +} +function Bzip { + # Bzip2-1.0.6 + local pkg=bzip2-1.0.6.tar.gz + local pkg_dir=${pkg%%.tar*} + local logfile="${TOPDIR}/LOGS/tools-${FUNCNAME}.log" + local OPTFLAGS=" -march=x86-64 -mtune=generic -O2 -pipe -fPIC " + [ -e ${logfile}.complete ] && { msg "Skipping: ${FUNCNAME}";return 0; } || msg "Building: ${FUNCNAME}" + > ${logfile} + pushd ${TOPDIR}/BUILD >> /dev/null 2>&1 + unpack "${pkg}" + pushd ${pkg_dir} >> /dev/null 2>&1 + msg_line " Configure: " + sed -i "s|-O2|${OPTFLAGS}|g" Makefile + sed -i "s|-O2|${OPTFLAGS}|g" Makefile-libbz2_so + msg_success + msg_line " Make: " + make ${MKFLAGS} >> ${logfile} 2>&1 + msg_success + msg_line " Install: " + make PREFIX=/tools install >> ${logfile} 2>&1 + msg_success + popd > /dev/null 2>&1 + popd > /dev/null 2>&1 + clean-build-directory + mv ${logfile} ${logfile}.complete + return +} +function Coreutils { + # Coreutils-8.30 + local pkg=coreutils-8.30.tar.xz + local pkg_dir=${pkg%%.tar*} + local logfile="${TOPDIR}/LOGS/tools-${FUNCNAME}.log" + [ -e ${logfile}.complete ] && { msg "Skipping: ${FUNCNAME}";return 0; } || msg "Building: ${FUNCNAME}" + > ${logfile} + pushd ${TOPDIR}/BUILD >> /dev/null 2>&1 + unpack "${pkg}" + pushd ${pkg_dir} >> /dev/null 2>&1 + msg_line " Configure: " + ./configure --prefix=/tools --enable-install-program=hostname >> ${logfile} 2>&1 + msg_success + msg_line " Make: " + make ${MKFLAGS} >> ${logfile} 2>&1 + msg_success + msg_line " Install: " + make install >> ${logfile} 2>&1 + msg_success + popd > /dev/null 2>&1 + popd > /dev/null 2>&1 + clean-build-directory + mv ${logfile} ${logfile}.complete + return +} +function Diffutils { + # Diffutils-3.7 + local pkg=diffutils-3.7.tar.xz + local pkg_dir=${pkg%%.tar*} + local logfile="${TOPDIR}/LOGS/tools-${FUNCNAME}.log" + [ -e ${logfile}.complete ] && { msg "Skipping: ${FUNCNAME}";return 0; } || msg "Building: ${FUNCNAME}" + > ${logfile} + pushd ${TOPDIR}/BUILD >> /dev/null 2>&1 + unpack "${pkg}" + pushd ${pkg_dir} >> /dev/null 2>&1 + msg_line " Configure: " + ./configure --prefix=/tools >> ${logfile} 2>&1 + msg_success + msg_line " Make: " + make ${MKFLAGS} >> ${logfile} 2>&1 + msg_success + msg_line " Install: " + make install >> ${logfile} 2>&1 + msg_success + popd > /dev/null 2>&1 + popd > /dev/null 2>&1 + clean-build-directory + mv ${logfile} ${logfile}.complete + return +} +function File { + # File-5.35 + local pkg=file-5.36.tar.gz + local pkg_dir=${pkg%%.tar*} + local logfile="${TOPDIR}/LOGS/tools-${FUNCNAME}.log" + [ -e ${logfile}.complete ] && { msg "Skipping: ${FUNCNAME}";return 0; } || msg "Building: ${FUNCNAME}" + > ${logfile} + pushd ${TOPDIR}/BUILD >> /dev/null 2>&1 + unpack "${pkg}" + pushd ${pkg_dir} >> /dev/null 2>&1 + msg_line " Configure: " + ./configure --prefix=/tools >> ${logfile} 2>&1 + msg_success + msg_line " Make: " + make ${MKFLAGS} >> ${logfile} 2>&1 + msg_success + msg_line " Install: " + make install >> ${logfile} 2>&1 + msg_success + popd > /dev/null 2>&1 + popd > /dev/null 2>&1 + clean-build-directory + mv ${logfile} ${logfile}.complete + return +} +function Findutils { + # Findutils-4.6.0 + local pkg=findutils-4.6.0.tar.gz + local pkg_dir=${pkg%%.tar*} + local logfile="${TOPDIR}/LOGS/tools-${FUNCNAME}.log" + [ -e ${logfile}.complete ] && { msg "Skipping: ${FUNCNAME}";return 0; } || msg "Building: ${FUNCNAME}" + > ${logfile} + pushd ${TOPDIR}/BUILD >> /dev/null 2>&1 + unpack "${pkg}" + pushd ${pkg_dir} >> /dev/null 2>&1 + sed -i 's/IO_ftrylockfile/IO_EOF_SEEN/' gl/lib/*.c + sed -i '/unistd/a #include ' gl/lib/mountlist.c + echo "#define _IO_IN_BACKUP 0x100" >> gl/lib/stdio-impl.h + msg_line " Configure: " + ./configure --prefix=/tools >> ${logfile} 2>&1 + msg_success + msg_line " Make: " + make ${MKFLAGS} >> ${logfile} 2>&1 + msg_success + msg_line " Install: " + make install >> ${logfile} 2>&1 + msg_success + popd > /dev/null 2>&1 + popd > /dev/null 2>&1 + clean-build-directory + mv ${logfile} ${logfile}.complete + return +} +function Gawk { + # Gawk-4.2.1 + local pkg=gawk-4.2.1.tar.xz + local pkg_dir=${pkg%%.tar*} + local logfile="${TOPDIR}/LOGS/tools-${FUNCNAME}.log" + [ -e ${logfile}.complete ] && { msg "Skipping: ${FUNCNAME}";return 0; } || msg "Building: ${FUNCNAME}" + > ${logfile} + pushd ${TOPDIR}/BUILD >> /dev/null 2>&1 + unpack "${pkg}" + pushd ${pkg_dir} >> /dev/null 2>&1 + msg_line " Configure: " + ./configure --prefix=/tools >> ${logfile} 2>&1 + msg_success + msg_line " Make: " + make ${MKFLAGS} >> ${logfile} 2>&1 + msg_success + msg_line " Install: " + make install >> ${logfile} 2>&1 + msg_success + popd > /dev/null 2>&1 + popd > /dev/null 2>&1 + clean-build-directory + mv ${logfile} ${logfile}.complete + return +} +function Gettext { + # Gettext-0.19.8.1 + local pkg=gettext-0.19.8.1.tar.xz + local pkg_dir=${pkg%%.tar*} + local logfile="${TOPDIR}/LOGS/tools-${FUNCNAME}.log" + [ -e ${logfile}.complete ] && { msg "Skipping: ${FUNCNAME}";return 0; } || msg "Building: ${FUNCNAME}" + > ${logfile} + pushd ${TOPDIR}/BUILD >> /dev/null 2>&1 + unpack "${pkg}" + pushd ${pkg_dir} >> /dev/null 2>&1 + cd gettext-tools > /dev/null 2>&1 + msg_line " Configure: " + EMACS="no" ./configure --prefix=/tools --disable-shared >> ${logfile} 2>&1 + msg_success + msg_line " Make: " + make ${MKFLAGS} -C gnulib-lib >> ${logfile} 2>&1 + make ${MKFLAGS} -C intl pluralx.c >> ${logfile} 2>&1 + make ${MKFLAGS} -C src msgfmt >> ${logfile} 2>&1 + make ${MKFLAGS} -C src msgmerge >> ${logfile} 2>&1 + make ${MKFLAGS} -C src xgettext >> ${logfile} 2>&1 + msg_success + msg_line " Install: " + cp -v src/{msgfmt,msgmerge,xgettext} /tools/bin >> ${logfile} 2>&1 + msg_success + cd - > /dev/null 2>&1 + popd > /dev/null 2>&1 + popd > /dev/null 2>&1 + clean-build-directory + mv ${logfile} ${logfile}.complete + return +} +function Grep { + # Grep-3.3 + local pkg=grep-3.3.tar.xz + local pkg_dir=${pkg%%.tar*} + local logfile="${TOPDIR}/LOGS/tools-${FUNCNAME}.log" + [ -e ${logfile}.complete ] && { msg "Skipping: ${FUNCNAME}";return 0; } || msg "Building: ${FUNCNAME}" + > ${logfile} + pushd ${TOPDIR}/BUILD >> /dev/null 2>&1 + unpack "${pkg}" + pushd ${pkg_dir} >> /dev/null 2>&1 + msg_line " Configure: " + ./configure --prefix=/tools >> ${logfile} 2>&1 + msg_success + msg_line " Make: " + make ${MKFLAGS} >> ${logfile} 2>&1 + msg_success + msg_line " Install: " + make install >> ${logfile} 2>&1 + msg_success + popd > /dev/null 2>&1 + popd > /dev/null 2>&1 + clean-build-directory + mv ${logfile} ${logfile}.complete + return +} +function Gzip { + # Gzip-1.10 + local pkg=gzip-1.10.tar.xz + local pkg_dir=${pkg%%.tar*} + local logfile="${TOPDIR}/LOGS/tools-${FUNCNAME}.log" + [ -e ${logfile}.complete ] && { msg "Skipping: ${FUNCNAME}";return 0; } || msg "Building: ${FUNCNAME}" + > ${logfile} + pushd ${TOPDIR}/BUILD >> /dev/null 2>&1 + unpack "${pkg}" + pushd ${pkg_dir} >> /dev/null 2>&1 + msg_line " Configure: " + ./configure --prefix=/tools >> ${logfile} 2>&1 + msg_success + msg_line " Make: " + make ${MKFLAGS} >> ${logfile} 2>&1 + msg_success + msg_line " Install: " + make install >> ${logfile} 2>&1 + msg_success + popd > /dev/null 2>&1 + popd > /dev/null 2>&1 + clean-build-directory + mv ${logfile} ${logfile}.complete + return +} +function Make { + # Make-4.2.1 + local pkg=make-4.2.1.tar.bz2 + local pkg_dir=${pkg%%.tar*} + local logfile="${TOPDIR}/LOGS/tools-${FUNCNAME}.log" + [ -e ${logfile}.complete ] && { msg "Skipping: ${FUNCNAME}";return 0; } || msg "Building: ${FUNCNAME}" + > ${logfile} + pushd ${TOPDIR}/BUILD >> /dev/null 2>&1 + unpack "${pkg}" + pushd ${pkg_dir} >> /dev/null 2>&1 + msg_line " Configure: " + sed -i '211,217 d; 219,229 d; 232 d' glob/glob.c + ./configure --prefix=/tools --without-guile >> ${logfile} 2>&1 + msg_success + msg_line " Make: " + make ${MKFLAGS} >> ${logfile} 2>&1 + msg_success + msg_line " Install: " + make install >> ${logfile} 2>&1 + msg_success + popd > /dev/null 2>&1 + popd > /dev/null 2>&1 + clean-build-directory + mv ${logfile} ${logfile}.complete + return +} +function Patch { + # Patch-2.7.6 + local pkg=patch-2.7.6.tar.xz + local pkg_dir=${pkg%%.tar*} + local logfile="${TOPDIR}/LOGS/tools-${FUNCNAME}.log" + [ -e ${logfile}.complete ] && { msg "Skipping: ${FUNCNAME}";return 0; } || msg "Building: ${FUNCNAME}" + > ${logfile} + pushd ${TOPDIR}/BUILD >> /dev/null 2>&1 + unpack "${pkg}" + pushd ${pkg_dir} >> /dev/null 2>&1 + msg_line " Configure: " + ./configure --prefix=/tools >> ${logfile} 2>&1 + msg_success + msg_line " Make: " + make ${MKFLAGS} >> ${logfile} 2>&1 + msg_success + msg_line " Install: " + make install >> ${logfile} 2>&1 + msg_success + popd > /dev/null 2>&1 + popd > /dev/null 2>&1 + clean-build-directory + mv ${logfile} ${logfile}.complete + return +} +function Perl { + # Perl-5.28.1 + local pkg=perl-5.28.1.tar.xz +# local pkg=perl-5.26.1.tar.xz + local pkg_dir=${pkg%%.tar*} + local logfile="${TOPDIR}/LOGS/tools-${FUNCNAME}.log" + [ -e ${logfile}.complete ] && { msg "Skipping: ${FUNCNAME}";return 0; } || msg "Building: ${FUNCNAME}" + > ${logfile} + pushd ${TOPDIR}/BUILD >> /dev/null 2>&1 + unpack "${pkg}" + pushd ${pkg_dir} >> /dev/null 2>&1 + msg_line " Configure: " + sh Configure -des -Dprefix=/tools -Dlibs=-lm -Uloclibpth -Ulocincpth >> ${logfile} 2>&1 + msg_success + msg_line " Make: " + # ulimit -s unlimited + make ${MKFLAGS} >> ${logfile} 2>&1 + msg_success + msg_line " Install: " + cp -v perl cpan/podlators/scripts/pod2man /tools/bin >> ${logfile} 2>&1 + mkdir -pv /tools/lib/perl5/5.28.1 >> ${logfile} 2>&1 + cp -Rv lib/* /tools/lib/perl5/5.28.1 >> ${logfile} 2>&1 + msg_success + popd > /dev/null 2>&1 + popd > /dev/null 2>&1 + clean-build-directory + mv ${logfile} ${logfile}.complete + return +} +function Python { + # Python-3.7.2 + local pkg=Python-3.7.2.tar.xz + local pkg_dir=${pkg%%.tar*} + local logfile="${TOPDIR}/LOGS/tools-${FUNCNAME}.log" + [ -e ${logfile}.complete ] && { msg "Skipping: ${FUNCNAME}";return 0; } || msg "Building: ${FUNCNAME}" + > ${logfile} + pushd ${TOPDIR}/BUILD >> /dev/null 2>&1 + unpack "${pkg}" + pushd ${pkg_dir} >> /dev/null 2>&1 + msg_line " Configure: " + sed -i '/def add_multiarch_paths/a \ return' setup.py + ./configure --prefix=/tools --without-ensurepip >> ${logfile} 2>&1 + msg_success + msg_line " Make: " + make ${MKFLAGS} >> ${logfile} 2>&1 + msg_success + msg_line " Install: " + make install >> ${logfile} 2>&1 + msg_success + popd > /dev/null 2>&1 + popd > /dev/null 2>&1 + clean-build-directory + mv ${logfile} ${logfile}.complete + return +} +function Sed { + # Sed-4.7 + local pkg=sed-4.7.tar.xz + local pkg_dir=${pkg%%.tar*} + local logfile="${TOPDIR}/LOGS/tools-${FUNCNAME}.log" + [ -e ${logfile}.complete ] && { msg "Skipping: ${FUNCNAME}";return 0; } || msg "Building: ${FUNCNAME}" + > ${logfile} + pushd ${TOPDIR}/BUILD >> /dev/null 2>&1 + unpack "${pkg}" + pushd ${pkg_dir} >> /dev/null 2>&1 + msg_line " Configure: " + ./configure --prefix=/tools >> ${logfile} 2>&1 + msg_success + msg_line " Make: " + make ${MKFLAGS} >> ${logfile} 2>&1 + msg_success + msg_line " Install: " + make install >> ${logfile} 2>&1 + msg_success + popd > /dev/null 2>&1 + popd > /dev/null 2>&1 + clean-build-directory + mv ${logfile} ${logfile}.complete + return +} +function Tar { + # Tar-1.31 + local pkg=tar-1.31.tar.xz + local pkg_dir=${pkg%%.tar*} + local logfile="${TOPDIR}/LOGS/tools-${FUNCNAME}.log" + [ -e ${logfile}.complete ] && { msg "Skipping: ${FUNCNAME}";return 0; } || msg "Building: ${FUNCNAME}" + > ${logfile} + pushd ${TOPDIR}/BUILD >> /dev/null 2>&1 + unpack "${pkg}" + pushd ${pkg_dir} >> /dev/null 2>&1 + msg_line " Configure: " + ./configure --prefix=/tools >> ${logfile} 2>&1 + msg_success + msg_line " Make: " + make ${MKFLAGS} >> ${logfile} 2>&1 + msg_success + msg_line " Install: " + make install >> ${logfile} 2>&1 + msg_success + popd > /dev/null 2>&1 + popd > /dev/null 2>&1 + clean-build-directory + mv ${logfile} ${logfile}.complete + return +} +function Texinfo { + # Texinfo-6.5 + local pkg=texinfo-6.5.tar.xz + local pkg_dir=${pkg%%.tar*} + local logfile="${TOPDIR}/LOGS/tools-${FUNCNAME}.log" + [ -e ${logfile}.complete ] && { msg "Skipping: ${FUNCNAME}";return 0; } || msg "Building: ${FUNCNAME}" + > ${logfile} + pushd ${TOPDIR}/BUILD >> /dev/null 2>&1 + unpack "${pkg}" + pushd ${pkg_dir} >> /dev/null 2>&1 + msg_line " Configure: " + ./configure --prefix=/tools >> ${logfile} 2>&1 + msg_success + msg_line " Make: " + make ${MKFLAGS} >> ${logfile} 2>&1 + msg_success + msg_line " Install: " + make install >> ${logfile} 2>&1 + msg_success + popd > /dev/null 2>&1 + popd > /dev/null 2>&1 + clean-build-directory + mv ${logfile} ${logfile}.complete + return +} +function Xz { + # Xz-5.2.4 + local pkg=xz-5.2.4.tar.xz + local pkg_dir=${pkg%%.tar*} + local logfile="${TOPDIR}/LOGS/tools-${FUNCNAME}.log" + [ -e ${logfile}.complete ] && { msg "Skipping: ${FUNCNAME}";return 0; } || msg "Building: ${FUNCNAME}" + > ${logfile} + pushd ${TOPDIR}/BUILD >> /dev/null 2>&1 + unpack "${pkg}" + pushd ${pkg_dir} >> /dev/null 2>&1 + msg_line " Configure: " + ./configure --prefix=/tools >> ${logfile} 2>&1 + msg_success + msg_line " Make: " + make ${MKFLAGS} >> ${logfile} 2>&1 + msg_success + msg_line " Install: " + make install >> ${logfile} 2>&1 + msg_success + popd > /dev/null 2>&1 + popd > /dev/null 2>&1 + clean-build-directory + mv ${logfile} ${logfile}.complete + return +} +# RPM STUFF +function Zlib { + local pkg=zlib-1.2.11.tar.xz + local pkg_dir=${pkg%%.tar*} + local logfile="${TOPDIR}/LOGS/tools-${FUNCNAME}.log" + local OPTFLAGS="-march=x86-64 -mtune=generic -O2 -pipe -fPIC" + [ -e ${logfile}.complete ] && { msg "Skipping: ${FUNCNAME}";return 0; } || msg "Building: ${FUNCNAME}" + > ${logfile} + install -dm 755 ${TOPDIR}/BUILDROOT + pushd ${TOPDIR}/BUILD >> /dev/null 2>&1 + unpack "${pkg}" + pushd ${pkg_dir} >> /dev/null 2>&1 + msg_line " Configure: " + CFLAGS=${OPTFLAGS} \ + CXXFLAGS=${OPTFLAGS} \ + ./configure \ + --prefix=/tools \ + --static >> ${logfile} 2>&1 + msg_success + msg_line " Make: " + make ${MKFLAGS} >> ${logfile} 2>&1 + msg_success + msg_line " Install: " + make DESTDIR=${TOPDIR}/BUILDROOT install >> ${logfile} 2>&1 + rm -rf ${TOPDIR}/BUILDROOT/tools/share + cp -ar ${TOPDIR}/BUILDROOT/tools/* /tools + msg_success + popd > /dev/null 2>&1 + popd > /dev/null 2>&1 + clean-build-directory + mv ${logfile} ${logfile}.complete + return +} +function Popt { + local pkg=popt-1.16.tar.gz + local pkg_dir=${pkg%%.tar*} + local logfile="${TOPDIR}/LOGS/tools-${FUNCNAME}.log" + [ -e ${logfile}.complete ] && { msg "Skipping: ${FUNCNAME}";return 0; } || msg "Building: ${FUNCNAME}" + > ${logfile} + pushd ${TOPDIR}/BUILD >> /dev/null 2>&1 + unpack "${pkg}" + pushd ${pkg_dir} >> /dev/null 2>&1 + msg_line " Configure: " + ./configure \ + --prefix=/tools \ + --disable-shared \ + --enable-static >> ${logfile} 2>&1 + msg_success + msg_line " Make: " + make ${MKFLAGS} >> ${logfile} 2>&1 + msg_success + msg_line " Install: " + make DESTDIR=${TOPDIR}/BUILDROOT install >> ${logfile} 2>&1 + rm -rf ${TOPDIR}/BUILDROOT/tools/lib/libpopt.la + rm -rf ${TOPDIR}/BUILDROOT/tools/share + cp -ar ${TOPDIR}/BUILDROOT/tools/* /tools + msg_success + popd > /dev/null 2>&1 + popd > /dev/null 2>&1 + clean-build-directory + mv ${logfile} ${logfile}.complete + return +} +function Openssl { + local pkg=openssl-1.1.1a.tar.gz + local pkg_dir=${pkg%%.tar*} + local logfile="${TOPDIR}/LOGS/tools-${FUNCNAME}.log" + [ -e ${logfile}.complete ] && { msg "Skipping: ${FUNCNAME}";return 0; } || msg "Building: ${FUNCNAME}" + > ${logfile} + pushd ${TOPDIR}/BUILD >> /dev/null 2>&1 + unpack "${pkg}" + pushd ${pkg_dir} >> /dev/null 2>&1 + msg_line " Configure: " + ./config \ + --prefix=/tools \ + --openssldir=/tools/etc/ssl \ + no-shared \ + no-zlib \ + enable-md2 >> ${logfile} 2>&1 + msg_success + msg_line " Make: " + make ${MKFLAGS} >> ${logfile} 2>&1 + msg_success + msg_line " Install: " + make DESTDIR=${TOPDIR}/BUILDROOT install >> ${logfile} 2>&1 + rm -rf ${TOPDIR}/BUILDROOT/tools/share + cp -a ${TOPDIR}/BUILDROOT/tools/bin/* /tools/bin/ + cp -ar ${TOPDIR}/BUILDROOT/tools/etc/* /tools/etc/ + cp -ar ${TOPDIR}/BUILDROOT/tools/include/* /tools/include/ + cp -ar ${TOPDIR}/BUILDROOT/tools/lib64/* /tools/lib/ + msg_success + popd > /dev/null 2>&1 + popd > /dev/null 2>&1 + clean-build-directory + mv ${logfile} ${logfile}.complete + return +} +function Libelf { + local pkg=elfutils-0.176.tar.bz2 + local pkg_dir=${pkg%%.tar*} + local logfile="${TOPDIR}/LOGS/tools-${FUNCNAME}.log" + [ -e ${logfile}.complete ] && { msg "Skipping: ${FUNCNAME}";return 0; } || msg "Building: ${FUNCNAME}" + > ${logfile} + install -dm 755 ${TOPDIR}/BUILDROOT + pushd ${TOPDIR}/BUILD >> /dev/null 2>&1 + unpack "${pkg}" + pushd ${pkg_dir} >> /dev/null 2>&1 + msg_line " Configure: " + ./configure \ + --prefix=/tools \ + --program-prefix="eu-" \ + --disable-shared \ + --enable-static >> ${logfile} 2>&1 + msg_success + msg_line " Make: " + make ${MKFLAGS} >> ${logfile} 2>&1 + msg_success + msg_line " Install: " + make DESTDIR=${TOPDIR}/BUILDROOT -C libelf install >> ${logfile} 2>&1 + install -Dm644 config/libelf.pc ${TOPDIR}/BUILDROOT/tools/lib/pkgconfig/libelf.pc + cp -ar ${TOPDIR}/BUILDROOT/tools/* /tools + msg_success + popd > /dev/null 2>&1 + popd > /dev/null 2>&1 + clean-build-directory + mv ${logfile} ${logfile}.complete + return +} +function Rpm { + local pkg=rpm-4.14.1.tar.bz2 + local pkg_dir=${pkg%%.tar*} + local logfile="${TOPDIR}/LOGS/tools-${FUNCNAME}.log" + [ -e ${logfile}.complete ] && { msg "Skipping: ${FUNCNAME}";return 0; } || msg "Building: ${FUNCNAME}" + > ${logfile} + pushd ${TOPDIR}/BUILD >> /dev/null 2>&1 + unpack "${pkg}" + pushd ${pkg_dir} >> /dev/null 2>&1 + unpack db-6.0.20.tar.gz + msg_line " Configure: " + sed -i 's/--srcdir=$db_dist/--srcdir=$db_dist --with-pic/' db3/configure + ln -vs db-6.0.20 db >> ${logfile} 2>&1 + ./configure \ + --prefix=/tools \ + --program-prefix= \ + --sysconfdir=/tools/etc \ + --disable-dependency-tracking \ + --disable-shared \ + --disable-silent-rules \ + --without-archive \ + --without-lua \ + --without-plugins \ + --with-crypto=openssl \ + --enable-static \ + --enable-zstd=no \ + --enable-lmdb=no \ + --disable-rpath \ + --without-external-db >> ${logfile} 2>&1 + msg_success + msg_line " Make: " + make ${MKFLAGS} >> ${logfile} 2>&1 + msg_success + msg_line " Install: " + make DESTDIR=${TOPDIR}/BUILDROOT install >> ${logfile} 2>&1 + rm -rf ${TOPDIR}/BUILDROOT/tools/share + rm -rf ${TOPDIR}/BUILDROOT/tools/lib/*.la + rm -rf ${TOPDIR}/BUILDROOT/tools/lib/rpm-plugins/*.la + cp -ar ${TOPDIR}/BUILDROOT/tools/* /tools + msg_success + popd > /dev/null 2>&1 + popd > /dev/null 2>&1 + # This is for rpm and rpmbuild + [ -d ${LFS}/tmp ] || install -vdm 755 ${LFS}/tmp + [ -d ${LFS}/bin ] || install -vdm 755 ${LFS}/bin + [ -d ${LFS}/usr/bin ] || install -vdm 755 ${LFS}/usr/bin + [ -h ${LFS}/bin/sh ] || ln -sf /tools/bin/bash ${LFS}/bin/sh + [ -h ${LFS}/bin/bash ] || ln -sf /tools/bin/bash ${LFS}/bin + [ -h ${LFS}//usr/bin/getconf ] || ln -sf /tools/bin/getconf ${LFS}/usr/bin + [ -d ${LFS}/tools/etc/rpm ] || install -vdm 755 ${LFS}/tools/etc/rpm + cp SOURCES/macros ${LFS}/tools/etc/rpm/macros + clean-build-directory + mv ${logfile} ${logfile}.complete + return +} +function Remove_files { + msg_line "Removing unnecessary files: " + # /tools/bin + rm -f /mnt/lfs/tools/bin/c_rehash + rm -f /mnt/lfs/tools/bin/gendiff + rm -f /mnt/lfs/tools/bin/openssl + # /tools/lib/pkgconfig + rm -f /mnt/lfs/tools/lib/pkgconfig/libcrypto.pc + rm -f /mnt/lfs/tools/lib/pkgconfig/libelf.pc + rm -f /mnt/lfs/tools/lib/pkgconfig/libssl.pc + rm -f /mnt/lfs/tools/lib/pkgconfig/openssl.pc + rm -f /mnt/lfs/tools/lib/pkgconfig/popt.pc + rm -f /mnt/lfs/tools/lib/pkgconfig/rpm.pc + rm -f /mnt/lfs/tools/lib/pkgconfig/zlib.pc + # /tools/etc/ssl + rm -fr /mnt/lfs/tools/etc/ssl + # /tools/include + rm -fr /mnt/lfs/tools/include/elfutils + rm -f /mnt/lfs/tools/include/gelf.h + rm -f /mnt/lfs/tools/include/libelf.h + rm -f /mnt/lfs/tools/include/nlist.h + rm -fr /mnt/lfs/tools/include/openssl + rm -f /mnt/lfs/tools/include/popt.h + rm -fr /mnt/lfs/tools/include/rpm + rm -f /mnt/lfs/tools/include/zconf.h + rm -f /mnt/lfs/tools/include/zlib.h + # /tools/lib + rm -fr /mnt/lfs/tools/lib/engines-1.1 + rm -f /mnt/lfs/tools/lib/libcrypto.a + rm -f /mnt/lfs/tools/lib/libssl.a + rm -rf /mnt/lfs/tools/lib/libz.a + rm -f /mnt/lfs/tools/lib/libelf.a + rm -f /mnt/lfs/tools/lib/libpopt.a + rm -f /mnt/lfs/tools/lib/librpm.a + rm -f /mnt/lfs/tools/lib/librpmbuild.a + rm -f /mnt/lfs/tools/lib/librpmio.a + rm -f /mnt/lfs/tools/lib/librpmsign.a + find /tools/{lib,libexec} -name \*.la -delete + msg_success + return +} +#----------------------------------------------------------------------------- +# Mainline +LIST="" +LIST+="_sanity set-mkflags clean-build-directory " +LIST+="Binutils-Pass-1 " +LIST+="GCC-Pass-1 " +LIST+="Linux-API-Headers " +LIST+="Glibc " +LIST+="Libstdc " +LIST+="Binutils-Pass-2 " +LIST+="GCC-Pass-2 " +LIST+="Tcl " +LIST+="Expect " +LIST+="DejaGNU " +LIST+="M4 " +LIST+="Ncurses " +LIST+="Bash " +LIST+="Bison " +LIST+="Bzip " +LIST+="Coreutils " +LIST+="Diffutils " +LIST+="File " +LIST+="Findutils " +LIST+="Gawk " +LIST+="Gettext " +LIST+="Grep " +LIST+="Gzip " +LIST+="Make " +LIST+="Patch " +LIST+="Perl " +LIST+="Python " +LIST+="Sed " +LIST+="Tar " +LIST+="Texinfo " +LIST+="Xz " +# rpm stuff +LIST+="Zlib " +LIST+="Popt " +LIST+="Openssl " +LIST+="Libelf " +LIST+="Rpm " +LIST+="Remove_files " +for i in ${LIST};do ${i};done +end_run diff --git a/version-check.sh b/version-check.sh new file mode 100755 index 0000000..aa44ea2 --- /dev/null +++ b/version-check.sh @@ -0,0 +1,55 @@ +#!/bin/bash +# Simple script to list version numbers of critical development tools +export LC_ALL=C +bash --version | head -n1 | cut -d" " -f2-4 +MYSH=$(readlink -f /bin/sh) +echo "/bin/sh -> $MYSH" +echo $MYSH | grep -q bash || echo "ERROR: /bin/sh does not point to bash" +unset MYSH + +echo -n "Binutils: "; ld --version | head -n1 | cut -d" " -f3- +bison --version | head -n1 + +if [ -h /usr/bin/yacc ]; then + echo "/usr/bin/yacc -> `readlink -f /usr/bin/yacc`"; +elif [ -x /usr/bin/yacc ]; then + echo yacc is `/usr/bin/yacc --version | head -n1` +else + echo "yacc not found" +fi + +bzip2 --version 2>&1 < /dev/null | head -n1 | cut -d" " -f1,6- +echo -n "Coreutils: "; chown --version | head -n1 | cut -d")" -f2 +diff --version | head -n1 +find --version | head -n1 +gawk --version | head -n1 + +if [ -h /usr/bin/awk ]; then + echo "/usr/bin/awk -> `readlink -f /usr/bin/awk`"; +elif [ -x /usr/bin/awk ]; then + echo awk is `/usr/bin/awk --version | head -n1` +else + echo "awk not found" +fi + +gcc --version | head -n1 +g++ --version | head -n1 +ldd --version | head -n1 | cut -d" " -f2- # glibc version +grep --version | head -n1 +gzip --version | head -n1 +cat /proc/version +m4 --version | head -n1 +make --version | head -n1 +patch --version | head -n1 +echo Perl `perl -V:version` +python3 --version +sed --version | head -n1 +tar --version | head -n1 +makeinfo --version | head -n1 # texinfo version +xz --version | head -n1 + +echo 'int main(){}' > dummy.c && g++ -o dummy dummy.c +if [ -x dummy ] + then echo "g++ compilation OK"; + else echo "g++ compilation failed"; fi +rm -f dummy.c dummy