[7152faa] | 1 | <?xml version="1.0" encoding="UTF-8"?>
|
---|
[b06ca36] | 2 | <!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
|
---|
| 3 | "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
|
---|
[673b0d8] | 4 | <!ENTITY % general-entities SYSTEM "../general.ent">
|
---|
| 5 | %general-entities;
|
---|
| 6 | ]>
|
---|
[b0ed1af] | 7 |
|
---|
[afcfd74] | 8 | <sect1 id="ch-materials-introduction">
|
---|
[b0ed1af] | 9 | <?dbhtml filename="introduction.html"?>
|
---|
| 10 |
|
---|
| 11 | <title>Introduction</title>
|
---|
| 12 |
|
---|
[9ff39e28] | 13 | <para>This chapter includes a list of packages that need to be downloaded in
|
---|
| 14 | order to build a basic Linux system. The listed version numbers correspond to
|
---|
| 15 | versions of the software that are known to work, and this book is based on
|
---|
[b6a67d37] | 16 | their use. We highly recommend against using different versions, because the build
|
---|
[b0a6b0c] | 17 | commands for one version may not work with a different version, unless the
|
---|
[b6a67d37] | 18 | different version is specified by an LFS erratum or security advisory.
|
---|
[b0a6b0c] | 19 | The newest package versions may also have problems that require
|
---|
| 20 | work-arounds. These work-arounds will be developed and stabilized in the
|
---|
| 21 | development version of the book.</para>
|
---|
[b0ed1af] | 22 |
|
---|
[188fba7] | 23 | <para>For some packages, the release tarball and the (Git or SVN)
|
---|
[b6a67d37] | 24 | repository snapshot tarball for that release may be published with
|
---|
| 25 | similar file names. A release tarball contains generated files (for
|
---|
| 26 | example, a <command>configure</command> script generated by
|
---|
[188fba7] | 27 | <command>autoconf</command>), in addition to the contents of the
|
---|
| 28 | corresponding repository snapshot. The book uses release tarballs
|
---|
| 29 | whenever possible. Using a repository snapshot instead of a release
|
---|
| 30 | tarball specified by the book will cause problems.</para>
|
---|
| 31 |
|
---|
[b0ed1af] | 32 | <para>Download locations may not always be accessible. If a download
|
---|
| 33 | location has changed since this book was published, Google (<ulink
|
---|
[fb66c4c] | 34 | url="https://www.google.com/"/>) provides a useful search engine for
|
---|
[b0ed1af] | 35 | most packages. If this search is unsuccessful, try one of the
|
---|
[fbedef5] | 36 | alternative means of downloading at <ulink
|
---|
| 37 | url="&lfs-root;lfs/mirrors.html#files"/>. </para>
|
---|
[b0ed1af] | 38 |
|
---|
| 39 | <para>Downloaded packages and patches will need to be stored somewhere
|
---|
| 40 | that is conveniently available throughout the entire build. A working
|
---|
| 41 | directory is also required to unpack the sources and build them.
|
---|
| 42 | <filename class="directory">$LFS/sources</filename> can be used both
|
---|
| 43 | as the place to store the tarballs and patches and as a working
|
---|
| 44 | directory. By using this directory, the required elements will be
|
---|
| 45 | located on the LFS partition and will be available during all stages
|
---|
| 46 | of the building process.</para>
|
---|
| 47 |
|
---|
[9ff39e28] | 48 | <para>To create this directory, execute the following command, as user
|
---|
| 49 | <systemitem class="username">root</systemitem>, before starting the download
|
---|
| 50 | session:</para>
|
---|
[673b0d8] | 51 |
|
---|
[5998892] | 52 | <screen role="nodump"><userinput>mkdir -v $LFS/sources</userinput></screen>
|
---|
[673b0d8] | 53 |
|
---|
[b0ed1af] | 54 | <para>Make this directory writable and sticky. <quote>Sticky</quote>
|
---|
| 55 | means that even if multiple users have write permission on a
|
---|
| 56 | directory, only the owner of a file can delete the file within a
|
---|
| 57 | sticky directory. The following command will enable the write and
|
---|
| 58 | sticky modes:</para>
|
---|
[673b0d8] | 59 |
|
---|
[5998892] | 60 | <screen role="nodump"><userinput>chmod -v a+wt $LFS/sources</userinput></screen>
|
---|
[673b0d8] | 61 |
|
---|
[83e41da] | 62 | <para>There are several ways to obtain all the necessary packages and patches
|
---|
[83a01db] | 63 | to build LFS:</para>
|
---|
| 64 |
|
---|
| 65 | <itemizedlist>
|
---|
| 66 | <listitem>
|
---|
[5e0c67d] | 67 | <para>The files can be downloaded individually as described in the
|
---|
[83a01db] | 68 | next two sections.</para>
|
---|
| 69 | </listitem>
|
---|
| 70 | <listitem>
|
---|
[5e0c67d] | 71 | <para>For stable versions of the book, a tarball of all the needed files
|
---|
[b6a67d37] | 72 | can be downloaded from one of the mirror sites listed at
|
---|
[61707b1] | 73 | <ulink url="https://www.linuxfromscratch.org/mirrors.html#files"/>.</para>
|
---|
[83a01db] | 74 | </listitem>
|
---|
| 75 | <listitem>
|
---|
| 76 | <para>The files can be downloaded using <command>wget</command> and
|
---|
| 77 | a wget-list as described below.</para>
|
---|
| 78 | </listitem>
|
---|
| 79 | </itemizedlist>
|
---|
| 80 |
|
---|
| 81 | <para>To download all of the packages and patches by using
|
---|
[ca22630] | 82 | <ulink url="../&wget-list;">&wget-list;</ulink>
|
---|
| 83 | as an input to the <command>wget</command> command, use:</para>
|
---|
[74296e2] | 84 |
|
---|
[ca22630] | 85 | <screen role="nodump"><userinput>wget --input-file=&wget-list; --continue --directory-prefix=$LFS/sources</userinput></screen>
|
---|
| 86 | <!--
|
---|
[a5165eb] | 87 | <note><para>
|
---|
| 88 | The <filename>wget-list</filename> file mentioned above retrieves all
|
---|
| 89 | packages for both the sysV and systemd versions of LFS. There are a total
|
---|
[b861051] | 90 | of five additional small packages not needed for the current book. The
|
---|
[a5165eb] | 91 | <filename>md5sums</filename> file mentioned below is specific to the
|
---|
| 92 | current book.
|
---|
| 93 | </para></note>
|
---|
[ca22630] | 94 | -->
|
---|
[2ca8941] | 95 | <para>Additionally, starting with LFS-7.0, there is a separate file,
|
---|
[fba870f] | 96 | <ulink url="../md5sums">md5sums</ulink>, which can be used to verify that all
|
---|
[2ca8941] | 97 | the correct packages are available before proceeding. Place that file in
|
---|
[74296e2] | 98 | <filename class="directory">$LFS/sources</filename> and run:</para>
|
---|
| 99 |
|
---|
[0844c14] | 100 | <screen role="nodump"><userinput>pushd $LFS/sources
|
---|
[83a01db] | 101 | md5sum -c md5sums
|
---|
[2ca8941] | 102 | popd</userinput></screen>
|
---|
[d1e71b1] | 103 |
|
---|
[5e0c67d] | 104 | <para>This check can be used after retrieving the needed files with any of the
|
---|
[83a01db] | 105 | methods listed above.</para>
|
---|
| 106 |
|
---|
[9b2dedc] | 107 | <para>If the packages and patches are downloaded as a non-&root; user,
|
---|
| 108 | these files will be owned by the user. The file system records the
|
---|
| 109 | owner by its UID, and the UID of a normal user in the host distro is
|
---|
| 110 | not assigned in LFS. So the files will be left owned by an unnamed UID
|
---|
| 111 | in the final LFS system. If you won't assign the same UID for your user
|
---|
| 112 | in the LFS system, change the owners of these files to &root; now to
|
---|
| 113 | avoid this issue:</para>
|
---|
| 114 |
|
---|
| 115 | <screen role="nodump"><userinput>chown root:root $LFS/sources/*</userinput></screen>
|
---|
| 116 |
|
---|
[673b0d8] | 117 | </sect1>
|
---|