From 5a6834585c43296c2207f5f251d3d5c237c7c8d2 Mon Sep 17 00:00:00 2001 From: Sn4il Date: Wed, 6 Mar 2024 10:25:41 +0300 Subject: Update LFS mirror --- index.html | 2 +- lfs-12.0-sysv/LFS-BOOK.html | 57628 -------------------- lfs-12.0-sysv/LFS-BOOK.pdf | Bin 2821998 -> 0 bytes lfs-12.0-sysv/appendices/acknowledgments.html | 621 - lfs-12.0-sysv/appendices/acronymlist.html | 1087 - lfs-12.0-sysv/appendices/creat-comm.html | 579 - lfs-12.0-sysv/appendices/dependencies.html | 4086 -- lfs-12.0-sysv/appendices/licenses.html | 88 - lfs-12.0-sysv/appendices/mit.html | 106 - lfs-12.0-sysv/chapter01/askforhelp.html | 264 - lfs-12.0-sysv/chapter01/changelog.html | 1051 - lfs-12.0-sysv/chapter01/chapter01.html | 101 - lfs-12.0-sysv/chapter01/how.html | 182 - lfs-12.0-sysv/chapter01/resources.html | 148 - lfs-12.0-sysv/chapter01/whatsnew.html | 370 - lfs-12.0-sysv/chapter02/aboutlfs.html | 156 - lfs-12.0-sysv/chapter02/chapter02.html | 110 - lfs-12.0-sysv/chapter02/creatingfilesystem.html | 167 - lfs-12.0-sysv/chapter02/creatingpartition.html | 342 - lfs-12.0-sysv/chapter02/hostreqs.html | 379 - lfs-12.0-sysv/chapter02/introduction.html | 87 - lfs-12.0-sysv/chapter02/mounting.html | 170 - lfs-12.0-sysv/chapter02/stages.html | 194 - lfs-12.0-sysv/chapter03/chapter03.html | 97 - lfs-12.0-sysv/chapter03/introduction.html | 198 - lfs-12.0-sysv/chapter03/packages.html | 1736 - lfs-12.0-sysv/chapter03/patches.html | 224 - lfs-12.0-sysv/chapter04/aboutsbus.html | 153 - lfs-12.0-sysv/chapter04/abouttestsuites.html | 132 - lfs-12.0-sysv/chapter04/addinguser.html | 209 - lfs-12.0-sysv/chapter04/chapter04.html | 108 - lfs-12.0-sysv/chapter04/creatingminlayout.html | 142 - lfs-12.0-sysv/chapter04/introduction.html | 92 - lfs-12.0-sysv/chapter04/settingenvironment.html | 345 - lfs-12.0-sysv/chapter05/binutils-pass1.html | 243 - lfs-12.0-sysv/chapter05/chapter05.html | 110 - lfs-12.0-sysv/chapter05/gcc-libstdc++.html | 214 - lfs-12.0-sysv/chapter05/gcc-pass1.html | 334 - lfs-12.0-sysv/chapter05/glibc.html | 361 - lfs-12.0-sysv/chapter05/introduction.html | 94 - lfs-12.0-sysv/chapter05/linux-headers.html | 315 - lfs-12.0-sysv/chapter06/bash.html | 151 - lfs-12.0-sysv/chapter06/binutils-pass2.html | 179 - lfs-12.0-sysv/chapter06/chapter06.html | 145 - lfs-12.0-sysv/chapter06/coreutils.html | 169 - lfs-12.0-sysv/chapter06/diffutils.html | 126 - lfs-12.0-sysv/chapter06/file.html | 167 - lfs-12.0-sysv/chapter06/findutils.html | 131 - lfs-12.0-sysv/chapter06/gawk.html | 130 - lfs-12.0-sysv/chapter06/gcc-pass2.html | 272 - lfs-12.0-sysv/chapter06/grep.html | 122 - lfs-12.0-sysv/chapter06/gzip.html | 120 - lfs-12.0-sysv/chapter06/introduction.html | 103 - lfs-12.0-sysv/chapter06/m4.html | 124 - lfs-12.0-sysv/chapter06/make.html | 143 - lfs-12.0-sysv/chapter06/ncurses.html | 286 - lfs-12.0-sysv/chapter06/patch.html | 125 - lfs-12.0-sysv/chapter06/sed.html | 122 - lfs-12.0-sysv/chapter06/tar.html | 125 - lfs-12.0-sysv/chapter06/xz.html | 138 - lfs-12.0-sysv/chapter07/Python.html | 190 - lfs-12.0-sysv/chapter07/bison.html | 140 - lfs-12.0-sysv/chapter07/changingowner.html | 119 - lfs-12.0-sysv/chapter07/chapter07.html | 134 - lfs-12.0-sysv/chapter07/chroot.html | 155 - lfs-12.0-sysv/chapter07/cleanup.html | 285 - lfs-12.0-sysv/chapter07/createfiles.html | 244 - lfs-12.0-sysv/chapter07/creatingdirs.html | 172 - lfs-12.0-sysv/chapter07/gettext.html | 153 - lfs-12.0-sysv/chapter07/introduction.html | 115 - lfs-12.0-sysv/chapter07/kernfs.html | 168 - lfs-12.0-sysv/chapter07/perl.html | 150 - lfs-12.0-sysv/chapter07/texinfo.html | 126 - lfs-12.0-sysv/chapter07/util-linux.html | 215 - lfs-12.0-sysv/chapter08/Python.html | 394 - lfs-12.0-sysv/chapter08/aboutdebug.html | 136 - lfs-12.0-sysv/chapter08/acl.html | 215 - lfs-12.0-sysv/chapter08/attr.html | 214 - lfs-12.0-sysv/chapter08/autoconf.html | 310 - lfs-12.0-sysv/chapter08/automake.html | 231 - lfs-12.0-sysv/chapter08/bash.html | 265 - lfs-12.0-sysv/chapter08/bc.html | 214 - lfs-12.0-sysv/chapter08/binutils.html | 656 - lfs-12.0-sysv/chapter08/bison.html | 203 - lfs-12.0-sysv/chapter08/bzip2.html | 394 - lfs-12.0-sysv/chapter08/chapter08.html | 337 - lfs-12.0-sysv/chapter08/check.html | 180 - lfs-12.0-sysv/chapter08/cleanup.html | 119 - lfs-12.0-sysv/chapter08/coreutils.html | 1792 - lfs-12.0-sysv/chapter08/dejagnu.html | 184 - lfs-12.0-sysv/chapter08/diffutils.html | 201 - lfs-12.0-sysv/chapter08/e2fsprogs.html | 775 - lfs-12.0-sysv/chapter08/expat.html | 187 - lfs-12.0-sysv/chapter08/expect.html | 256 - lfs-12.0-sysv/chapter08/file.html | 180 - lfs-12.0-sysv/chapter08/findutils.html | 238 - lfs-12.0-sysv/chapter08/flex.html | 230 - lfs-12.0-sysv/chapter08/flit-core.html | 186 - lfs-12.0-sysv/chapter08/gawk.html | 244 - lfs-12.0-sysv/chapter08/gcc.html | 911 - lfs-12.0-sysv/chapter08/gdbm.html | 243 - lfs-12.0-sysv/chapter08/gettext.html | 594 - lfs-12.0-sysv/chapter08/glibc.html | 1229 - lfs-12.0-sysv/chapter08/gmp.html | 268 - lfs-12.0-sysv/chapter08/gperf.html | 163 - lfs-12.0-sysv/chapter08/grep.html | 195 - lfs-12.0-sysv/chapter08/groff.html | 897 - lfs-12.0-sysv/chapter08/grub.html | 602 - lfs-12.0-sysv/chapter08/gzip.html | 365 - lfs-12.0-sysv/chapter08/iana-etc.html | 163 - lfs-12.0-sysv/chapter08/inetutils.html | 363 - lfs-12.0-sysv/chapter08/intltool.html | 245 - lfs-12.0-sysv/chapter08/introduction.html | 174 - lfs-12.0-sysv/chapter08/iproute2.html | 436 - lfs-12.0-sysv/chapter08/jinja2.html | 129 - lfs-12.0-sysv/chapter08/kbd.html | 586 - lfs-12.0-sysv/chapter08/kmod.html | 315 - lfs-12.0-sysv/chapter08/less.html | 209 - lfs-12.0-sysv/chapter08/libcap.html | 259 - lfs-12.0-sysv/chapter08/libelf.html | 169 - lfs-12.0-sysv/chapter08/libffi.html | 211 - lfs-12.0-sysv/chapter08/libpipeline.html | 158 - lfs-12.0-sysv/chapter08/libtool.html | 223 - lfs-12.0-sysv/chapter08/libxcrypt.html | 225 - lfs-12.0-sysv/chapter08/m4.html | 168 - lfs-12.0-sysv/chapter08/make.html | 161 - lfs-12.0-sysv/chapter08/man-db.html | 765 - lfs-12.0-sysv/chapter08/man-pages.html | 156 - lfs-12.0-sysv/chapter08/markupsafe.html | 128 - lfs-12.0-sysv/chapter08/meson.html | 192 - lfs-12.0-sysv/chapter08/mpc.html | 164 - lfs-12.0-sysv/chapter08/mpfr.html | 183 - lfs-12.0-sysv/chapter08/ncurses.html | 554 - lfs-12.0-sysv/chapter08/ninja.html | 206 - lfs-12.0-sysv/chapter08/openssl.html | 300 - lfs-12.0-sysv/chapter08/patch.html | 165 - lfs-12.0-sysv/chapter08/perl.html | 725 - lfs-12.0-sysv/chapter08/pkgconf.html | 204 - lfs-12.0-sysv/chapter08/pkgmgt.html | 528 - lfs-12.0-sysv/chapter08/procps-ng.html | 412 - lfs-12.0-sysv/chapter08/psmisc.html | 248 - lfs-12.0-sysv/chapter08/readline.html | 238 - lfs-12.0-sysv/chapter08/sed.html | 163 - lfs-12.0-sysv/chapter08/shadow.html | 945 - lfs-12.0-sysv/chapter08/stripping.html | 223 - lfs-12.0-sysv/chapter08/sysklogd.html | 208 - lfs-12.0-sysv/chapter08/sysvinit.html | 313 - lfs-12.0-sysv/chapter08/tar.html | 209 - lfs-12.0-sysv/chapter08/tcl.html | 271 - lfs-12.0-sysv/chapter08/texinfo.html | 334 - lfs-12.0-sysv/chapter08/udev.html | 366 - lfs-12.0-sysv/chapter08/util-linux.html | 1928 - lfs-12.0-sysv/chapter08/vim.html | 448 - lfs-12.0-sysv/chapter08/wheel.html | 158 - lfs-12.0-sysv/chapter08/xml-parser.html | 159 - lfs-12.0-sysv/chapter08/xz.html | 531 - lfs-12.0-sysv/chapter08/zlib.html | 162 - lfs-12.0-sysv/chapter08/zstd.html | 224 - lfs-12.0-sysv/chapter09/bootscripts.html | 513 - lfs-12.0-sysv/chapter09/chapter09.html | 116 - lfs-12.0-sysv/chapter09/etcshells.html | 111 - lfs-12.0-sysv/chapter09/inputrc.html | 156 - lfs-12.0-sysv/chapter09/introduction.html | 182 - lfs-12.0-sysv/chapter09/network.html | 333 - lfs-12.0-sysv/chapter09/profile.html | 275 - lfs-12.0-sysv/chapter09/symlinks.html | 412 - lfs-12.0-sysv/chapter09/udev.html | 489 - lfs-12.0-sysv/chapter09/usage.html | 999 - lfs-12.0-sysv/chapter10/chapter10.html | 101 - lfs-12.0-sysv/chapter10/fstab.html | 191 - lfs-12.0-sysv/chapter10/grub.html | 354 - lfs-12.0-sysv/chapter10/introduction.html | 87 - lfs-12.0-sysv/chapter10/kernel.html | 752 - lfs-12.0-sysv/chapter11/afterlfs.html | 332 - lfs-12.0-sysv/chapter11/chapter11.html | 101 - lfs-12.0-sysv/chapter11/getcounted.html | 89 - lfs-12.0-sysv/chapter11/reboot.html | 217 - lfs-12.0-sysv/chapter11/theend.html | 125 - lfs-12.0-sysv/chapter11/whatnow.html | 171 - lfs-12.0-sysv/images/caution.png | Bin 1250 -> 0 bytes lfs-12.0-sysv/images/chevron-bottom.png | Bin 213 -> 0 bytes lfs-12.0-sysv/images/chevron-left.png | Bin 211 -> 0 bytes lfs-12.0-sysv/images/chevron-right.png | Bin 191 -> 0 bytes lfs-12.0-sysv/images/chevron-top.png | Bin 204 -> 0 bytes lfs-12.0-sysv/images/grid-three-up.png | Bin 146 -> 0 bytes lfs-12.0-sysv/images/important.png | Bin 722 -> 0 bytes lfs-12.0-sysv/images/menu.png | Bin 158 -> 0 bytes lfs-12.0-sysv/images/note.png | Bin 229 -> 0 bytes lfs-12.0-sysv/images/tip.png | Bin 449 -> 0 bytes lfs-12.0-sysv/images/tux.png | Bin 11026 -> 0 bytes lfs-12.0-sysv/images/warning.png | Bin 1241 -> 0 bytes lfs-12.0-sysv/index.html | 916 - lfs-12.0-sysv/legalnotice.html | 44 - lfs-12.0-sysv/longindex.html | 5717 -- lfs-12.0-sysv/md5sums | 93 - lfs-12.0-sysv/part1.html | 103 - lfs-12.0-sysv/part2.html | 158 - lfs-12.0-sysv/part3.html | 240 - lfs-12.0-sysv/part4.html | 422 - lfs-12.0-sysv/part5.html | 200 - lfs-12.0-sysv/partintro/generalinstructions.html | 264 - lfs-12.0-sysv/partintro/introduction.html | 113 - lfs-12.0-sysv/partintro/partintro.html | 102 - lfs-12.0-sysv/partintro/toolchaintechnotes.html | 743 - lfs-12.0-sysv/prologue/architecture.html | 126 - lfs-12.0-sysv/prologue/audience.html | 129 - lfs-12.0-sysv/prologue/errata.html | 102 - lfs-12.0-sysv/prologue/foreword.html | 154 - lfs-12.0-sysv/prologue/organization.html | 134 - lfs-12.0-sysv/prologue/package-choices.html | 856 - lfs-12.0-sysv/prologue/preface.html | 93 - lfs-12.0-sysv/prologue/prerequisites.html | 132 - lfs-12.0-sysv/prologue/standards.html | 376 - lfs-12.0-sysv/prologue/typography.html | 190 - lfs-12.0-sysv/scripts/apds01.html | 313 - lfs-12.0-sysv/scripts/apds02.html | 892 - lfs-12.0-sysv/scripts/apds03.html | 186 - lfs-12.0-sysv/scripts/apds04.html | 163 - lfs-12.0-sysv/scripts/apds05.html | 158 - lfs-12.0-sysv/scripts/apds06.html | 144 - lfs-12.0-sysv/scripts/apds07.html | 144 - lfs-12.0-sysv/scripts/apds08.html | 230 - lfs-12.0-sysv/scripts/apds09.html | 164 - lfs-12.0-sysv/scripts/apds10.html | 155 - lfs-12.0-sysv/scripts/apds11.html | 203 - lfs-12.0-sysv/scripts/apds12.html | 188 - lfs-12.0-sysv/scripts/apds13.html | 151 - lfs-12.0-sysv/scripts/apds14.html | 136 - lfs-12.0-sysv/scripts/apds15.html | 160 - lfs-12.0-sysv/scripts/apds16.html | 171 - lfs-12.0-sysv/scripts/apds17.html | 151 - lfs-12.0-sysv/scripts/apds18.html | 129 - lfs-12.0-sysv/scripts/apds19.html | 124 - lfs-12.0-sysv/scripts/apds20.html | 150 - lfs-12.0-sysv/scripts/apds21.html | 100 - lfs-12.0-sysv/scripts/apds22.html | 114 - lfs-12.0-sysv/scripts/apds23.html | 100 - lfs-12.0-sysv/scripts/apds24.html | 229 - lfs-12.0-sysv/scripts/apds25.html | 179 - lfs-12.0-sysv/scripts/apds26.html | 161 - lfs-12.0-sysv/scripts/apds27.html | 180 - lfs-12.0-sysv/scripts/apes01.html | 90 - lfs-12.0-sysv/scripts/scripts.html | 91 - lfs-12.0-sysv/scripts/udev-rules.html | 85 - lfs-12.0-sysv/stylesheets/lfs-print.css | 14 - lfs-12.0-sysv/stylesheets/lfs.css | 639 - lfs-12.0-sysv/wget-list | 94 - lfs-12.0-sysv/wget-list-sysv | 93 - lfs-12.1-sysv/LFS-BOOK.html | 59294 +++++++++++++++++++++ lfs-12.1-sysv/LFS-BOOK.pdf | Bin 0 -> 2954195 bytes lfs-12.1-sysv/appendices/acknowledgments.html | 621 + lfs-12.1-sysv/appendices/acronymlist.html | 1087 + lfs-12.1-sysv/appendices/creat-comm.html | 579 + lfs-12.1-sysv/appendices/dependencies.html | 4239 ++ lfs-12.1-sysv/appendices/licenses.html | 88 + lfs-12.1-sysv/appendices/mit.html | 106 + lfs-12.1-sysv/chapter01/askforhelp.html | 263 + lfs-12.1-sysv/chapter01/changelog.html | 1242 + lfs-12.1-sysv/chapter01/chapter01.html | 101 + lfs-12.1-sysv/chapter01/how.html | 182 + lfs-12.1-sysv/chapter01/resources.html | 148 + lfs-12.1-sysv/chapter01/whatsnew.html | 356 + lfs-12.1-sysv/chapter02/aboutlfs.html | 156 + lfs-12.1-sysv/chapter02/chapter02.html | 110 + lfs-12.1-sysv/chapter02/creatingfilesystem.html | 167 + lfs-12.1-sysv/chapter02/creatingpartition.html | 343 + lfs-12.1-sysv/chapter02/hostreqs.html | 392 + lfs-12.1-sysv/chapter02/introduction.html | 87 + lfs-12.1-sysv/chapter02/mounting.html | 171 + lfs-12.1-sysv/chapter02/stages.html | 195 + lfs-12.1-sysv/chapter03/chapter03.html | 97 + lfs-12.1-sysv/chapter03/introduction.html | 198 + lfs-12.1-sysv/chapter03/packages.html | 1754 + lfs-12.1-sysv/chapter03/patches.html | 209 + lfs-12.1-sysv/chapter04/aboutsbus.html | 137 + lfs-12.1-sysv/chapter04/abouttestsuites.html | 132 + lfs-12.1-sysv/chapter04/addinguser.html | 209 + lfs-12.1-sysv/chapter04/chapter04.html | 108 + lfs-12.1-sysv/chapter04/creatingminlayout.html | 142 + lfs-12.1-sysv/chapter04/introduction.html | 92 + lfs-12.1-sysv/chapter04/settingenvironment.html | 404 + lfs-12.1-sysv/chapter05/binutils-pass1.html | 265 + lfs-12.1-sysv/chapter05/chapter05.html | 110 + lfs-12.1-sysv/chapter05/gcc-libstdc++.html | 214 + lfs-12.1-sysv/chapter05/gcc-pass1.html | 332 + lfs-12.1-sysv/chapter05/glibc.html | 374 + lfs-12.1-sysv/chapter05/introduction.html | 94 + lfs-12.1-sysv/chapter05/linux-headers.html | 315 + lfs-12.1-sysv/chapter06/bash.html | 153 + lfs-12.1-sysv/chapter06/binutils-pass2.html | 182 + lfs-12.1-sysv/chapter06/chapter06.html | 145 + lfs-12.1-sysv/chapter06/coreutils.html | 157 + lfs-12.1-sysv/chapter06/diffutils.html | 126 + lfs-12.1-sysv/chapter06/file.html | 167 + lfs-12.1-sysv/chapter06/findutils.html | 131 + lfs-12.1-sysv/chapter06/gawk.html | 130 + lfs-12.1-sysv/chapter06/gcc-pass2.html | 273 + lfs-12.1-sysv/chapter06/grep.html | 122 + lfs-12.1-sysv/chapter06/gzip.html | 120 + lfs-12.1-sysv/chapter06/introduction.html | 103 + lfs-12.1-sysv/chapter06/m4.html | 126 + lfs-12.1-sysv/chapter06/make.html | 143 + lfs-12.1-sysv/chapter06/ncurses.html | 309 + lfs-12.1-sysv/chapter06/patch.html | 125 + lfs-12.1-sysv/chapter06/sed.html | 122 + lfs-12.1-sysv/chapter06/tar.html | 125 + lfs-12.1-sysv/chapter06/xz.html | 138 + lfs-12.1-sysv/chapter07/Python.html | 186 + lfs-12.1-sysv/chapter07/bison.html | 142 + lfs-12.1-sysv/chapter07/changingowner.html | 119 + lfs-12.1-sysv/chapter07/chapter07.html | 134 + lfs-12.1-sysv/chapter07/chroot.html | 170 + lfs-12.1-sysv/chapter07/cleanup.html | 285 + lfs-12.1-sysv/chapter07/createfiles.html | 261 + lfs-12.1-sysv/chapter07/creatingdirs.html | 172 + lfs-12.1-sysv/chapter07/gettext.html | 153 + lfs-12.1-sysv/chapter07/introduction.html | 115 + lfs-12.1-sysv/chapter07/kernfs.html | 207 + lfs-12.1-sysv/chapter07/perl.html | 186 + lfs-12.1-sysv/chapter07/texinfo.html | 125 + lfs-12.1-sysv/chapter07/util-linux.html | 213 + lfs-12.1-sysv/chapter08/Python.html | 384 + lfs-12.1-sysv/chapter08/aboutdebug.html | 136 + lfs-12.1-sysv/chapter08/acl.html | 215 + lfs-12.1-sysv/chapter08/attr.html | 214 + lfs-12.1-sysv/chapter08/autoconf.html | 289 + lfs-12.1-sysv/chapter08/automake.html | 237 + lfs-12.1-sysv/chapter08/bash.html | 270 + lfs-12.1-sysv/chapter08/bc.html | 214 + lfs-12.1-sysv/chapter08/binutils.html | 642 + lfs-12.1-sysv/chapter08/bison.html | 205 + lfs-12.1-sysv/chapter08/bzip2.html | 394 + lfs-12.1-sysv/chapter08/chapter08.html | 340 + lfs-12.1-sysv/chapter08/check.html | 180 + lfs-12.1-sysv/chapter08/cleanup.html | 119 + lfs-12.1-sysv/chapter08/coreutils.html | 1796 + lfs-12.1-sysv/chapter08/dejagnu.html | 184 + lfs-12.1-sysv/chapter08/diffutils.html | 201 + lfs-12.1-sysv/chapter08/e2fsprogs.html | 775 + lfs-12.1-sysv/chapter08/expat.html | 187 + lfs-12.1-sysv/chapter08/expect.html | 253 + lfs-12.1-sysv/chapter08/file.html | 180 + lfs-12.1-sysv/chapter08/findutils.html | 238 + lfs-12.1-sysv/chapter08/flex.html | 230 + lfs-12.1-sysv/chapter08/flit-core.html | 196 + lfs-12.1-sysv/chapter08/gawk.html | 248 + lfs-12.1-sysv/chapter08/gcc.html | 908 + lfs-12.1-sysv/chapter08/gdbm.html | 243 + lfs-12.1-sysv/chapter08/gettext.html | 594 + lfs-12.1-sysv/chapter08/glibc.html | 1314 + lfs-12.1-sysv/chapter08/gmp.html | 268 + lfs-12.1-sysv/chapter08/gperf.html | 163 + lfs-12.1-sysv/chapter08/grep.html | 195 + lfs-12.1-sysv/chapter08/groff.html | 897 + lfs-12.1-sysv/chapter08/grub.html | 598 + lfs-12.1-sysv/chapter08/gzip.html | 365 + lfs-12.1-sysv/chapter08/iana-etc.html | 163 + lfs-12.1-sysv/chapter08/inetutils.html | 363 + lfs-12.1-sysv/chapter08/intltool.html | 245 + lfs-12.1-sysv/chapter08/introduction.html | 174 + lfs-12.1-sysv/chapter08/iproute2.html | 432 + lfs-12.1-sysv/chapter08/jinja2.html | 128 + lfs-12.1-sysv/chapter08/kbd.html | 586 + lfs-12.1-sysv/chapter08/kmod.html | 315 + lfs-12.1-sysv/chapter08/less.html | 209 + lfs-12.1-sysv/chapter08/libcap.html | 258 + lfs-12.1-sysv/chapter08/libelf.html | 169 + lfs-12.1-sysv/chapter08/libffi.html | 210 + lfs-12.1-sysv/chapter08/libpipeline.html | 158 + lfs-12.1-sysv/chapter08/libtool.html | 211 + lfs-12.1-sysv/chapter08/libxcrypt.html | 225 + lfs-12.1-sysv/chapter08/m4.html | 168 + lfs-12.1-sysv/chapter08/make.html | 161 + lfs-12.1-sysv/chapter08/man-db.html | 761 + lfs-12.1-sysv/chapter08/man-pages.html | 156 + lfs-12.1-sysv/chapter08/markupsafe.html | 128 + lfs-12.1-sysv/chapter08/meson.html | 192 + lfs-12.1-sysv/chapter08/mpc.html | 164 + lfs-12.1-sysv/chapter08/mpfr.html | 175 + lfs-12.1-sysv/chapter08/ncurses.html | 548 + lfs-12.1-sysv/chapter08/ninja.html | 208 + lfs-12.1-sysv/chapter08/openssl.html | 287 + lfs-12.1-sysv/chapter08/patch.html | 165 + lfs-12.1-sysv/chapter08/perl.html | 692 + lfs-12.1-sysv/chapter08/pkgconf.html | 208 + lfs-12.1-sysv/chapter08/pkgmgt.html | 539 + lfs-12.1-sysv/chapter08/procps-ng.html | 421 + lfs-12.1-sysv/chapter08/psmisc.html | 249 + lfs-12.1-sysv/chapter08/readline.html | 238 + lfs-12.1-sysv/chapter08/sed.html | 165 + lfs-12.1-sysv/chapter08/setuptools.html | 128 + lfs-12.1-sysv/chapter08/shadow.html | 942 + lfs-12.1-sysv/chapter08/stripping.html | 224 + lfs-12.1-sysv/chapter08/sysklogd.html | 208 + lfs-12.1-sysv/chapter08/sysvinit.html | 313 + lfs-12.1-sysv/chapter08/tar.html | 194 + lfs-12.1-sysv/chapter08/tcl.html | 271 + lfs-12.1-sysv/chapter08/texinfo.html | 334 + lfs-12.1-sysv/chapter08/udev.html | 406 + lfs-12.1-sysv/chapter08/util-linux.html | 1930 + lfs-12.1-sysv/chapter08/vim.html | 449 + lfs-12.1-sysv/chapter08/wheel.html | 160 + lfs-12.1-sysv/chapter08/xml-parser.html | 159 + lfs-12.1-sysv/chapter08/xz.html | 531 + lfs-12.1-sysv/chapter08/zlib.html | 162 + lfs-12.1-sysv/chapter08/zstd.html | 224 + lfs-12.1-sysv/chapter09/bootscripts.html | 513 + lfs-12.1-sysv/chapter09/chapter09.html | 115 + lfs-12.1-sysv/chapter09/etcshells.html | 111 + lfs-12.1-sysv/chapter09/inputrc.html | 156 + lfs-12.1-sysv/chapter09/introduction.html | 182 + lfs-12.1-sysv/chapter09/locale.html | 256 + lfs-12.1-sysv/chapter09/network.html | 342 + lfs-12.1-sysv/chapter09/symlinks.html | 430 + lfs-12.1-sysv/chapter09/udev.html | 490 + lfs-12.1-sysv/chapter09/usage.html | 1081 + lfs-12.1-sysv/chapter10/chapter10.html | 101 + lfs-12.1-sysv/chapter10/fstab.html | 191 + lfs-12.1-sysv/chapter10/grub.html | 354 + lfs-12.1-sysv/chapter10/introduction.html | 87 + lfs-12.1-sysv/chapter10/kernel.html | 756 + lfs-12.1-sysv/chapter11/afterlfs.html | 347 + lfs-12.1-sysv/chapter11/chapter11.html | 100 + lfs-12.1-sysv/chapter11/getcounted.html | 89 + lfs-12.1-sysv/chapter11/reboot.html | 217 + lfs-12.1-sysv/chapter11/theend.html | 126 + lfs-12.1-sysv/chapter11/whatnow.html | 171 + lfs-12.1-sysv/images/caution.png | Bin 0 -> 1250 bytes lfs-12.1-sysv/images/chevron-bottom.png | Bin 0 -> 213 bytes lfs-12.1-sysv/images/chevron-left.png | Bin 0 -> 211 bytes lfs-12.1-sysv/images/chevron-right.png | Bin 0 -> 191 bytes lfs-12.1-sysv/images/chevron-top.png | Bin 0 -> 204 bytes lfs-12.1-sysv/images/grid-three-up.png | Bin 0 -> 146 bytes lfs-12.1-sysv/images/important.png | Bin 0 -> 722 bytes lfs-12.1-sysv/images/menu.png | Bin 0 -> 158 bytes lfs-12.1-sysv/images/note.png | Bin 0 -> 229 bytes lfs-12.1-sysv/images/tip.png | Bin 0 -> 449 bytes lfs-12.1-sysv/images/tux.png | Bin 0 -> 11026 bytes lfs-12.1-sysv/images/warning.png | Bin 0 -> 1241 bytes lfs-12.1-sysv/index.html | 919 + lfs-12.1-sysv/legalnotice.html | 44 + lfs-12.1-sysv/longindex.html | 5713 ++ lfs-12.1-sysv/md5sums | 93 + lfs-12.1-sysv/part1.html | 103 + lfs-12.1-sysv/part2.html | 158 + lfs-12.1-sysv/part3.html | 240 + lfs-12.1-sysv/part4.html | 425 + lfs-12.1-sysv/part5.html | 200 + lfs-12.1-sysv/partintro/generalinstructions.html | 282 + lfs-12.1-sysv/partintro/introduction.html | 112 + lfs-12.1-sysv/partintro/partintro.html | 102 + lfs-12.1-sysv/partintro/toolchaintechnotes.html | 743 + lfs-12.1-sysv/prologue/architecture.html | 126 + lfs-12.1-sysv/prologue/audience.html | 129 + lfs-12.1-sysv/prologue/errata.html | 102 + lfs-12.1-sysv/prologue/foreword.html | 154 + lfs-12.1-sysv/prologue/organization.html | 134 + lfs-12.1-sysv/prologue/package-choices.html | 856 + lfs-12.1-sysv/prologue/preface.html | 93 + lfs-12.1-sysv/prologue/prerequisites.html | 131 + lfs-12.1-sysv/prologue/standards.html | 377 + lfs-12.1-sysv/prologue/typography.html | 197 + lfs-12.1-sysv/scripts/apds01.html | 313 + lfs-12.1-sysv/scripts/apds02.html | 892 + lfs-12.1-sysv/scripts/apds03.html | 186 + lfs-12.1-sysv/scripts/apds04.html | 163 + lfs-12.1-sysv/scripts/apds05.html | 158 + lfs-12.1-sysv/scripts/apds06.html | 144 + lfs-12.1-sysv/scripts/apds07.html | 144 + lfs-12.1-sysv/scripts/apds08.html | 230 + lfs-12.1-sysv/scripts/apds09.html | 164 + lfs-12.1-sysv/scripts/apds10.html | 155 + lfs-12.1-sysv/scripts/apds11.html | 203 + lfs-12.1-sysv/scripts/apds12.html | 188 + lfs-12.1-sysv/scripts/apds13.html | 151 + lfs-12.1-sysv/scripts/apds14.html | 136 + lfs-12.1-sysv/scripts/apds15.html | 160 + lfs-12.1-sysv/scripts/apds16.html | 171 + lfs-12.1-sysv/scripts/apds17.html | 151 + lfs-12.1-sysv/scripts/apds18.html | 129 + lfs-12.1-sysv/scripts/apds19.html | 124 + lfs-12.1-sysv/scripts/apds20.html | 150 + lfs-12.1-sysv/scripts/apds21.html | 100 + lfs-12.1-sysv/scripts/apds22.html | 114 + lfs-12.1-sysv/scripts/apds23.html | 100 + lfs-12.1-sysv/scripts/apds24.html | 229 + lfs-12.1-sysv/scripts/apds25.html | 179 + lfs-12.1-sysv/scripts/apds26.html | 161 + lfs-12.1-sysv/scripts/apds27.html | 180 + lfs-12.1-sysv/scripts/apes01.html | 90 + lfs-12.1-sysv/scripts/scripts.html | 91 + lfs-12.1-sysv/scripts/udev-rules.html | 85 + lfs-12.1-sysv/stylesheets/lfs-print.css | 14 + lfs-12.1-sysv/stylesheets/lfs.css | 663 + lfs-12.1-sysv/wget-list | 95 + lfs-12.1-sysv/wget-list-sysv | 93 + 496 files changed, 134411 insertions(+), 131874 deletions(-) delete mode 100755 lfs-12.0-sysv/LFS-BOOK.html delete mode 100755 lfs-12.0-sysv/LFS-BOOK.pdf delete mode 100644 lfs-12.0-sysv/appendices/acknowledgments.html delete mode 100644 lfs-12.0-sysv/appendices/acronymlist.html delete mode 100644 lfs-12.0-sysv/appendices/creat-comm.html delete mode 100644 lfs-12.0-sysv/appendices/dependencies.html delete mode 100644 lfs-12.0-sysv/appendices/licenses.html delete mode 100644 lfs-12.0-sysv/appendices/mit.html delete mode 100644 lfs-12.0-sysv/chapter01/askforhelp.html delete mode 100644 lfs-12.0-sysv/chapter01/changelog.html delete mode 100644 lfs-12.0-sysv/chapter01/chapter01.html delete mode 100644 lfs-12.0-sysv/chapter01/how.html delete mode 100644 lfs-12.0-sysv/chapter01/resources.html delete mode 100644 lfs-12.0-sysv/chapter01/whatsnew.html delete mode 100644 lfs-12.0-sysv/chapter02/aboutlfs.html delete mode 100644 lfs-12.0-sysv/chapter02/chapter02.html delete mode 100644 lfs-12.0-sysv/chapter02/creatingfilesystem.html delete mode 100644 lfs-12.0-sysv/chapter02/creatingpartition.html delete mode 100644 lfs-12.0-sysv/chapter02/hostreqs.html delete mode 100644 lfs-12.0-sysv/chapter02/introduction.html delete mode 100644 lfs-12.0-sysv/chapter02/mounting.html delete mode 100644 lfs-12.0-sysv/chapter02/stages.html delete mode 100644 lfs-12.0-sysv/chapter03/chapter03.html delete mode 100644 lfs-12.0-sysv/chapter03/introduction.html delete mode 100644 lfs-12.0-sysv/chapter03/packages.html delete mode 100644 lfs-12.0-sysv/chapter03/patches.html delete mode 100644 lfs-12.0-sysv/chapter04/aboutsbus.html delete mode 100644 lfs-12.0-sysv/chapter04/abouttestsuites.html delete mode 100644 lfs-12.0-sysv/chapter04/addinguser.html delete mode 100644 lfs-12.0-sysv/chapter04/chapter04.html delete mode 100644 lfs-12.0-sysv/chapter04/creatingminlayout.html delete mode 100644 lfs-12.0-sysv/chapter04/introduction.html delete mode 100644 lfs-12.0-sysv/chapter04/settingenvironment.html delete mode 100644 lfs-12.0-sysv/chapter05/binutils-pass1.html delete mode 100644 lfs-12.0-sysv/chapter05/chapter05.html delete mode 100644 lfs-12.0-sysv/chapter05/gcc-libstdc++.html delete mode 100644 lfs-12.0-sysv/chapter05/gcc-pass1.html delete mode 100644 lfs-12.0-sysv/chapter05/glibc.html delete mode 100644 lfs-12.0-sysv/chapter05/introduction.html delete mode 100644 lfs-12.0-sysv/chapter05/linux-headers.html delete mode 100644 lfs-12.0-sysv/chapter06/bash.html delete mode 100644 lfs-12.0-sysv/chapter06/binutils-pass2.html delete mode 100644 lfs-12.0-sysv/chapter06/chapter06.html delete mode 100644 lfs-12.0-sysv/chapter06/coreutils.html delete mode 100755 lfs-12.0-sysv/chapter06/diffutils.html delete mode 100644 lfs-12.0-sysv/chapter06/file.html delete mode 100644 lfs-12.0-sysv/chapter06/findutils.html delete mode 100644 lfs-12.0-sysv/chapter06/gawk.html delete mode 100644 lfs-12.0-sysv/chapter06/gcc-pass2.html delete mode 100755 lfs-12.0-sysv/chapter06/grep.html delete mode 100644 lfs-12.0-sysv/chapter06/gzip.html delete mode 100644 lfs-12.0-sysv/chapter06/introduction.html delete mode 100644 lfs-12.0-sysv/chapter06/m4.html delete mode 100644 lfs-12.0-sysv/chapter06/make.html delete mode 100644 lfs-12.0-sysv/chapter06/ncurses.html delete mode 100644 lfs-12.0-sysv/chapter06/patch.html delete mode 100755 lfs-12.0-sysv/chapter06/sed.html delete mode 100644 lfs-12.0-sysv/chapter06/tar.html delete mode 100644 lfs-12.0-sysv/chapter06/xz.html delete mode 100644 lfs-12.0-sysv/chapter07/Python.html delete mode 100644 lfs-12.0-sysv/chapter07/bison.html delete mode 100644 lfs-12.0-sysv/chapter07/changingowner.html delete mode 100644 lfs-12.0-sysv/chapter07/chapter07.html delete mode 100644 lfs-12.0-sysv/chapter07/chroot.html delete mode 100644 lfs-12.0-sysv/chapter07/cleanup.html delete mode 100644 lfs-12.0-sysv/chapter07/createfiles.html delete mode 100644 lfs-12.0-sysv/chapter07/creatingdirs.html delete mode 100644 lfs-12.0-sysv/chapter07/gettext.html delete mode 100644 lfs-12.0-sysv/chapter07/introduction.html delete mode 100644 lfs-12.0-sysv/chapter07/kernfs.html delete mode 100644 lfs-12.0-sysv/chapter07/perl.html delete mode 100644 lfs-12.0-sysv/chapter07/texinfo.html delete mode 100644 lfs-12.0-sysv/chapter07/util-linux.html delete mode 100644 lfs-12.0-sysv/chapter08/Python.html delete mode 100644 lfs-12.0-sysv/chapter08/aboutdebug.html delete mode 100644 lfs-12.0-sysv/chapter08/acl.html delete mode 100644 lfs-12.0-sysv/chapter08/attr.html delete mode 100644 lfs-12.0-sysv/chapter08/autoconf.html delete mode 100644 lfs-12.0-sysv/chapter08/automake.html delete mode 100644 lfs-12.0-sysv/chapter08/bash.html delete mode 100644 lfs-12.0-sysv/chapter08/bc.html delete mode 100644 lfs-12.0-sysv/chapter08/binutils.html delete mode 100644 lfs-12.0-sysv/chapter08/bison.html delete mode 100644 lfs-12.0-sysv/chapter08/bzip2.html delete mode 100644 lfs-12.0-sysv/chapter08/chapter08.html delete mode 100644 lfs-12.0-sysv/chapter08/check.html delete mode 100644 lfs-12.0-sysv/chapter08/cleanup.html delete mode 100644 lfs-12.0-sysv/chapter08/coreutils.html delete mode 100644 lfs-12.0-sysv/chapter08/dejagnu.html delete mode 100644 lfs-12.0-sysv/chapter08/diffutils.html delete mode 100644 lfs-12.0-sysv/chapter08/e2fsprogs.html delete mode 100644 lfs-12.0-sysv/chapter08/expat.html delete mode 100644 lfs-12.0-sysv/chapter08/expect.html delete mode 100644 lfs-12.0-sysv/chapter08/file.html delete mode 100644 lfs-12.0-sysv/chapter08/findutils.html delete mode 100644 lfs-12.0-sysv/chapter08/flex.html delete mode 100644 lfs-12.0-sysv/chapter08/flit-core.html delete mode 100644 lfs-12.0-sysv/chapter08/gawk.html delete mode 100644 lfs-12.0-sysv/chapter08/gcc.html delete mode 100644 lfs-12.0-sysv/chapter08/gdbm.html delete mode 100644 lfs-12.0-sysv/chapter08/gettext.html delete mode 100644 lfs-12.0-sysv/chapter08/glibc.html delete mode 100644 lfs-12.0-sysv/chapter08/gmp.html delete mode 100644 lfs-12.0-sysv/chapter08/gperf.html delete mode 100644 lfs-12.0-sysv/chapter08/grep.html delete mode 100644 lfs-12.0-sysv/chapter08/groff.html delete mode 100644 lfs-12.0-sysv/chapter08/grub.html delete mode 100644 lfs-12.0-sysv/chapter08/gzip.html delete mode 100644 lfs-12.0-sysv/chapter08/iana-etc.html delete mode 100644 lfs-12.0-sysv/chapter08/inetutils.html delete mode 100644 lfs-12.0-sysv/chapter08/intltool.html delete mode 100644 lfs-12.0-sysv/chapter08/introduction.html delete mode 100644 lfs-12.0-sysv/chapter08/iproute2.html delete mode 100644 lfs-12.0-sysv/chapter08/jinja2.html delete mode 100644 lfs-12.0-sysv/chapter08/kbd.html delete mode 100644 lfs-12.0-sysv/chapter08/kmod.html delete mode 100644 lfs-12.0-sysv/chapter08/less.html delete mode 100644 lfs-12.0-sysv/chapter08/libcap.html delete mode 100644 lfs-12.0-sysv/chapter08/libelf.html delete mode 100644 lfs-12.0-sysv/chapter08/libffi.html delete mode 100644 lfs-12.0-sysv/chapter08/libpipeline.html delete mode 100644 lfs-12.0-sysv/chapter08/libtool.html delete mode 100644 lfs-12.0-sysv/chapter08/libxcrypt.html delete mode 100644 lfs-12.0-sysv/chapter08/m4.html delete mode 100644 lfs-12.0-sysv/chapter08/make.html delete mode 100644 lfs-12.0-sysv/chapter08/man-db.html delete mode 100644 lfs-12.0-sysv/chapter08/man-pages.html delete mode 100644 lfs-12.0-sysv/chapter08/markupsafe.html delete mode 100644 lfs-12.0-sysv/chapter08/meson.html delete mode 100644 lfs-12.0-sysv/chapter08/mpc.html delete mode 100644 lfs-12.0-sysv/chapter08/mpfr.html delete mode 100644 lfs-12.0-sysv/chapter08/ncurses.html delete mode 100644 lfs-12.0-sysv/chapter08/ninja.html delete mode 100644 lfs-12.0-sysv/chapter08/openssl.html delete mode 100644 lfs-12.0-sysv/chapter08/patch.html delete mode 100644 lfs-12.0-sysv/chapter08/perl.html delete mode 100644 lfs-12.0-sysv/chapter08/pkgconf.html delete mode 100644 lfs-12.0-sysv/chapter08/pkgmgt.html delete mode 100644 lfs-12.0-sysv/chapter08/procps-ng.html delete mode 100644 lfs-12.0-sysv/chapter08/psmisc.html delete mode 100644 lfs-12.0-sysv/chapter08/readline.html delete mode 100644 lfs-12.0-sysv/chapter08/sed.html delete mode 100644 lfs-12.0-sysv/chapter08/shadow.html delete mode 100644 lfs-12.0-sysv/chapter08/stripping.html delete mode 100644 lfs-12.0-sysv/chapter08/sysklogd.html delete mode 100644 lfs-12.0-sysv/chapter08/sysvinit.html delete mode 100644 lfs-12.0-sysv/chapter08/tar.html delete mode 100644 lfs-12.0-sysv/chapter08/tcl.html delete mode 100644 lfs-12.0-sysv/chapter08/texinfo.html delete mode 100644 lfs-12.0-sysv/chapter08/udev.html delete mode 100644 lfs-12.0-sysv/chapter08/util-linux.html delete mode 100644 lfs-12.0-sysv/chapter08/vim.html delete mode 100644 lfs-12.0-sysv/chapter08/wheel.html delete mode 100644 lfs-12.0-sysv/chapter08/xml-parser.html delete mode 100644 lfs-12.0-sysv/chapter08/xz.html delete mode 100644 lfs-12.0-sysv/chapter08/zlib.html delete mode 100644 lfs-12.0-sysv/chapter08/zstd.html delete mode 100644 lfs-12.0-sysv/chapter09/bootscripts.html delete mode 100644 lfs-12.0-sysv/chapter09/chapter09.html delete mode 100644 lfs-12.0-sysv/chapter09/etcshells.html delete mode 100644 lfs-12.0-sysv/chapter09/inputrc.html delete mode 100644 lfs-12.0-sysv/chapter09/introduction.html delete mode 100644 lfs-12.0-sysv/chapter09/network.html delete mode 100644 lfs-12.0-sysv/chapter09/profile.html delete mode 100644 lfs-12.0-sysv/chapter09/symlinks.html delete mode 100644 lfs-12.0-sysv/chapter09/udev.html delete mode 100644 lfs-12.0-sysv/chapter09/usage.html delete mode 100644 lfs-12.0-sysv/chapter10/chapter10.html delete mode 100644 lfs-12.0-sysv/chapter10/fstab.html delete mode 100644 lfs-12.0-sysv/chapter10/grub.html delete mode 100644 lfs-12.0-sysv/chapter10/introduction.html delete mode 100644 lfs-12.0-sysv/chapter10/kernel.html delete mode 100644 lfs-12.0-sysv/chapter11/afterlfs.html delete mode 100644 lfs-12.0-sysv/chapter11/chapter11.html delete mode 100644 lfs-12.0-sysv/chapter11/getcounted.html delete mode 100644 lfs-12.0-sysv/chapter11/reboot.html delete mode 100644 lfs-12.0-sysv/chapter11/theend.html delete mode 100644 lfs-12.0-sysv/chapter11/whatnow.html delete mode 100644 lfs-12.0-sysv/images/caution.png delete mode 100644 lfs-12.0-sysv/images/chevron-bottom.png delete mode 100644 lfs-12.0-sysv/images/chevron-left.png delete mode 100644 lfs-12.0-sysv/images/chevron-right.png delete mode 100644 lfs-12.0-sysv/images/chevron-top.png delete mode 100644 lfs-12.0-sysv/images/grid-three-up.png delete mode 100644 lfs-12.0-sysv/images/important.png delete mode 100644 lfs-12.0-sysv/images/menu.png delete mode 100644 lfs-12.0-sysv/images/note.png delete mode 100644 lfs-12.0-sysv/images/tip.png delete mode 100644 lfs-12.0-sysv/images/tux.png delete mode 100644 lfs-12.0-sysv/images/warning.png delete mode 100644 lfs-12.0-sysv/index.html delete mode 100644 lfs-12.0-sysv/legalnotice.html delete mode 100644 lfs-12.0-sysv/longindex.html delete mode 100644 lfs-12.0-sysv/md5sums delete mode 100644 lfs-12.0-sysv/part1.html delete mode 100644 lfs-12.0-sysv/part2.html delete mode 100644 lfs-12.0-sysv/part3.html delete mode 100644 lfs-12.0-sysv/part4.html delete mode 100644 lfs-12.0-sysv/part5.html delete mode 100644 lfs-12.0-sysv/partintro/generalinstructions.html delete mode 100644 lfs-12.0-sysv/partintro/introduction.html delete mode 100644 lfs-12.0-sysv/partintro/partintro.html delete mode 100644 lfs-12.0-sysv/partintro/toolchaintechnotes.html delete mode 100644 lfs-12.0-sysv/prologue/architecture.html delete mode 100644 lfs-12.0-sysv/prologue/audience.html delete mode 100644 lfs-12.0-sysv/prologue/errata.html delete mode 100644 lfs-12.0-sysv/prologue/foreword.html delete mode 100644 lfs-12.0-sysv/prologue/organization.html delete mode 100644 lfs-12.0-sysv/prologue/package-choices.html delete mode 100644 lfs-12.0-sysv/prologue/preface.html delete mode 100644 lfs-12.0-sysv/prologue/prerequisites.html delete mode 100644 lfs-12.0-sysv/prologue/standards.html delete mode 100644 lfs-12.0-sysv/prologue/typography.html delete mode 100644 lfs-12.0-sysv/scripts/apds01.html delete mode 100644 lfs-12.0-sysv/scripts/apds02.html delete mode 100644 lfs-12.0-sysv/scripts/apds03.html delete mode 100644 lfs-12.0-sysv/scripts/apds04.html delete mode 100644 lfs-12.0-sysv/scripts/apds05.html delete mode 100644 lfs-12.0-sysv/scripts/apds06.html delete mode 100644 lfs-12.0-sysv/scripts/apds07.html delete mode 100644 lfs-12.0-sysv/scripts/apds08.html delete mode 100644 lfs-12.0-sysv/scripts/apds09.html delete mode 100644 lfs-12.0-sysv/scripts/apds10.html delete mode 100644 lfs-12.0-sysv/scripts/apds11.html delete mode 100644 lfs-12.0-sysv/scripts/apds12.html delete mode 100644 lfs-12.0-sysv/scripts/apds13.html delete mode 100644 lfs-12.0-sysv/scripts/apds14.html delete mode 100644 lfs-12.0-sysv/scripts/apds15.html delete mode 100644 lfs-12.0-sysv/scripts/apds16.html delete mode 100644 lfs-12.0-sysv/scripts/apds17.html delete mode 100644 lfs-12.0-sysv/scripts/apds18.html delete mode 100644 lfs-12.0-sysv/scripts/apds19.html delete mode 100644 lfs-12.0-sysv/scripts/apds20.html delete mode 100644 lfs-12.0-sysv/scripts/apds21.html delete mode 100644 lfs-12.0-sysv/scripts/apds22.html delete mode 100644 lfs-12.0-sysv/scripts/apds23.html delete mode 100644 lfs-12.0-sysv/scripts/apds24.html delete mode 100644 lfs-12.0-sysv/scripts/apds25.html delete mode 100644 lfs-12.0-sysv/scripts/apds26.html delete mode 100644 lfs-12.0-sysv/scripts/apds27.html delete mode 100644 lfs-12.0-sysv/scripts/apes01.html delete mode 100644 lfs-12.0-sysv/scripts/scripts.html delete mode 100644 lfs-12.0-sysv/scripts/udev-rules.html delete mode 100644 lfs-12.0-sysv/stylesheets/lfs-print.css delete mode 100644 lfs-12.0-sysv/stylesheets/lfs.css delete mode 100644 lfs-12.0-sysv/wget-list delete mode 100644 lfs-12.0-sysv/wget-list-sysv create mode 100644 lfs-12.1-sysv/LFS-BOOK.html create mode 100644 lfs-12.1-sysv/LFS-BOOK.pdf create mode 100644 lfs-12.1-sysv/appendices/acknowledgments.html create mode 100644 lfs-12.1-sysv/appendices/acronymlist.html create mode 100644 lfs-12.1-sysv/appendices/creat-comm.html create mode 100644 lfs-12.1-sysv/appendices/dependencies.html create mode 100644 lfs-12.1-sysv/appendices/licenses.html create mode 100644 lfs-12.1-sysv/appendices/mit.html create mode 100644 lfs-12.1-sysv/chapter01/askforhelp.html create mode 100644 lfs-12.1-sysv/chapter01/changelog.html create mode 100644 lfs-12.1-sysv/chapter01/chapter01.html create mode 100644 lfs-12.1-sysv/chapter01/how.html create mode 100644 lfs-12.1-sysv/chapter01/resources.html create mode 100644 lfs-12.1-sysv/chapter01/whatsnew.html create mode 100644 lfs-12.1-sysv/chapter02/aboutlfs.html create mode 100644 lfs-12.1-sysv/chapter02/chapter02.html create mode 100644 lfs-12.1-sysv/chapter02/creatingfilesystem.html create mode 100644 lfs-12.1-sysv/chapter02/creatingpartition.html create mode 100644 lfs-12.1-sysv/chapter02/hostreqs.html create mode 100644 lfs-12.1-sysv/chapter02/introduction.html create mode 100644 lfs-12.1-sysv/chapter02/mounting.html create mode 100644 lfs-12.1-sysv/chapter02/stages.html create mode 100644 lfs-12.1-sysv/chapter03/chapter03.html create mode 100644 lfs-12.1-sysv/chapter03/introduction.html create mode 100644 lfs-12.1-sysv/chapter03/packages.html create mode 100644 lfs-12.1-sysv/chapter03/patches.html create mode 100644 lfs-12.1-sysv/chapter04/aboutsbus.html create mode 100644 lfs-12.1-sysv/chapter04/abouttestsuites.html create mode 100644 lfs-12.1-sysv/chapter04/addinguser.html create mode 100644 lfs-12.1-sysv/chapter04/chapter04.html create mode 100644 lfs-12.1-sysv/chapter04/creatingminlayout.html create mode 100644 lfs-12.1-sysv/chapter04/introduction.html create mode 100644 lfs-12.1-sysv/chapter04/settingenvironment.html create mode 100644 lfs-12.1-sysv/chapter05/binutils-pass1.html create mode 100644 lfs-12.1-sysv/chapter05/chapter05.html create mode 100644 lfs-12.1-sysv/chapter05/gcc-libstdc++.html create mode 100644 lfs-12.1-sysv/chapter05/gcc-pass1.html create mode 100644 lfs-12.1-sysv/chapter05/glibc.html create mode 100644 lfs-12.1-sysv/chapter05/introduction.html create mode 100644 lfs-12.1-sysv/chapter05/linux-headers.html create mode 100644 lfs-12.1-sysv/chapter06/bash.html create mode 100644 lfs-12.1-sysv/chapter06/binutils-pass2.html create mode 100644 lfs-12.1-sysv/chapter06/chapter06.html create mode 100644 lfs-12.1-sysv/chapter06/coreutils.html create mode 100644 lfs-12.1-sysv/chapter06/diffutils.html create mode 100644 lfs-12.1-sysv/chapter06/file.html create mode 100644 lfs-12.1-sysv/chapter06/findutils.html create mode 100644 lfs-12.1-sysv/chapter06/gawk.html create mode 100644 lfs-12.1-sysv/chapter06/gcc-pass2.html create mode 100644 lfs-12.1-sysv/chapter06/grep.html create mode 100644 lfs-12.1-sysv/chapter06/gzip.html create mode 100644 lfs-12.1-sysv/chapter06/introduction.html create mode 100644 lfs-12.1-sysv/chapter06/m4.html create mode 100644 lfs-12.1-sysv/chapter06/make.html create mode 100644 lfs-12.1-sysv/chapter06/ncurses.html create mode 100644 lfs-12.1-sysv/chapter06/patch.html create mode 100644 lfs-12.1-sysv/chapter06/sed.html create mode 100644 lfs-12.1-sysv/chapter06/tar.html create mode 100644 lfs-12.1-sysv/chapter06/xz.html create mode 100644 lfs-12.1-sysv/chapter07/Python.html create mode 100644 lfs-12.1-sysv/chapter07/bison.html create mode 100644 lfs-12.1-sysv/chapter07/changingowner.html create mode 100644 lfs-12.1-sysv/chapter07/chapter07.html create mode 100644 lfs-12.1-sysv/chapter07/chroot.html create mode 100644 lfs-12.1-sysv/chapter07/cleanup.html create mode 100644 lfs-12.1-sysv/chapter07/createfiles.html create mode 100644 lfs-12.1-sysv/chapter07/creatingdirs.html create mode 100644 lfs-12.1-sysv/chapter07/gettext.html create mode 100644 lfs-12.1-sysv/chapter07/introduction.html create mode 100644 lfs-12.1-sysv/chapter07/kernfs.html create mode 100644 lfs-12.1-sysv/chapter07/perl.html create mode 100644 lfs-12.1-sysv/chapter07/texinfo.html create mode 100644 lfs-12.1-sysv/chapter07/util-linux.html create mode 100644 lfs-12.1-sysv/chapter08/Python.html create mode 100644 lfs-12.1-sysv/chapter08/aboutdebug.html create mode 100644 lfs-12.1-sysv/chapter08/acl.html create mode 100644 lfs-12.1-sysv/chapter08/attr.html create mode 100644 lfs-12.1-sysv/chapter08/autoconf.html create mode 100644 lfs-12.1-sysv/chapter08/automake.html create mode 100644 lfs-12.1-sysv/chapter08/bash.html create mode 100644 lfs-12.1-sysv/chapter08/bc.html create mode 100644 lfs-12.1-sysv/chapter08/binutils.html create mode 100644 lfs-12.1-sysv/chapter08/bison.html create mode 100644 lfs-12.1-sysv/chapter08/bzip2.html create mode 100644 lfs-12.1-sysv/chapter08/chapter08.html create mode 100644 lfs-12.1-sysv/chapter08/check.html create mode 100644 lfs-12.1-sysv/chapter08/cleanup.html create mode 100644 lfs-12.1-sysv/chapter08/coreutils.html create mode 100644 lfs-12.1-sysv/chapter08/dejagnu.html create mode 100644 lfs-12.1-sysv/chapter08/diffutils.html create mode 100644 lfs-12.1-sysv/chapter08/e2fsprogs.html create mode 100644 lfs-12.1-sysv/chapter08/expat.html create mode 100644 lfs-12.1-sysv/chapter08/expect.html create mode 100644 lfs-12.1-sysv/chapter08/file.html create mode 100644 lfs-12.1-sysv/chapter08/findutils.html create mode 100644 lfs-12.1-sysv/chapter08/flex.html create mode 100644 lfs-12.1-sysv/chapter08/flit-core.html create mode 100644 lfs-12.1-sysv/chapter08/gawk.html create mode 100644 lfs-12.1-sysv/chapter08/gcc.html create mode 100644 lfs-12.1-sysv/chapter08/gdbm.html create mode 100644 lfs-12.1-sysv/chapter08/gettext.html create mode 100644 lfs-12.1-sysv/chapter08/glibc.html create mode 100644 lfs-12.1-sysv/chapter08/gmp.html create mode 100644 lfs-12.1-sysv/chapter08/gperf.html create mode 100644 lfs-12.1-sysv/chapter08/grep.html create mode 100644 lfs-12.1-sysv/chapter08/groff.html create mode 100644 lfs-12.1-sysv/chapter08/grub.html create mode 100644 lfs-12.1-sysv/chapter08/gzip.html create mode 100644 lfs-12.1-sysv/chapter08/iana-etc.html create mode 100644 lfs-12.1-sysv/chapter08/inetutils.html create mode 100644 lfs-12.1-sysv/chapter08/intltool.html create mode 100644 lfs-12.1-sysv/chapter08/introduction.html create mode 100644 lfs-12.1-sysv/chapter08/iproute2.html create mode 100644 lfs-12.1-sysv/chapter08/jinja2.html create mode 100644 lfs-12.1-sysv/chapter08/kbd.html create mode 100644 lfs-12.1-sysv/chapter08/kmod.html create mode 100644 lfs-12.1-sysv/chapter08/less.html create mode 100644 lfs-12.1-sysv/chapter08/libcap.html create mode 100644 lfs-12.1-sysv/chapter08/libelf.html create mode 100644 lfs-12.1-sysv/chapter08/libffi.html create mode 100644 lfs-12.1-sysv/chapter08/libpipeline.html create mode 100644 lfs-12.1-sysv/chapter08/libtool.html create mode 100644 lfs-12.1-sysv/chapter08/libxcrypt.html create mode 100644 lfs-12.1-sysv/chapter08/m4.html create mode 100644 lfs-12.1-sysv/chapter08/make.html create mode 100644 lfs-12.1-sysv/chapter08/man-db.html create mode 100644 lfs-12.1-sysv/chapter08/man-pages.html create mode 100644 lfs-12.1-sysv/chapter08/markupsafe.html create mode 100644 lfs-12.1-sysv/chapter08/meson.html create mode 100644 lfs-12.1-sysv/chapter08/mpc.html create mode 100644 lfs-12.1-sysv/chapter08/mpfr.html create mode 100644 lfs-12.1-sysv/chapter08/ncurses.html create mode 100644 lfs-12.1-sysv/chapter08/ninja.html create mode 100644 lfs-12.1-sysv/chapter08/openssl.html create mode 100644 lfs-12.1-sysv/chapter08/patch.html create mode 100644 lfs-12.1-sysv/chapter08/perl.html create mode 100644 lfs-12.1-sysv/chapter08/pkgconf.html create mode 100644 lfs-12.1-sysv/chapter08/pkgmgt.html create mode 100644 lfs-12.1-sysv/chapter08/procps-ng.html create mode 100644 lfs-12.1-sysv/chapter08/psmisc.html create mode 100644 lfs-12.1-sysv/chapter08/readline.html create mode 100644 lfs-12.1-sysv/chapter08/sed.html create mode 100644 lfs-12.1-sysv/chapter08/setuptools.html create mode 100644 lfs-12.1-sysv/chapter08/shadow.html create mode 100644 lfs-12.1-sysv/chapter08/stripping.html create mode 100644 lfs-12.1-sysv/chapter08/sysklogd.html create mode 100644 lfs-12.1-sysv/chapter08/sysvinit.html create mode 100644 lfs-12.1-sysv/chapter08/tar.html create mode 100644 lfs-12.1-sysv/chapter08/tcl.html create mode 100644 lfs-12.1-sysv/chapter08/texinfo.html create mode 100644 lfs-12.1-sysv/chapter08/udev.html create mode 100644 lfs-12.1-sysv/chapter08/util-linux.html create mode 100644 lfs-12.1-sysv/chapter08/vim.html create mode 100644 lfs-12.1-sysv/chapter08/wheel.html create mode 100644 lfs-12.1-sysv/chapter08/xml-parser.html create mode 100644 lfs-12.1-sysv/chapter08/xz.html create mode 100644 lfs-12.1-sysv/chapter08/zlib.html create mode 100644 lfs-12.1-sysv/chapter08/zstd.html create mode 100644 lfs-12.1-sysv/chapter09/bootscripts.html create mode 100644 lfs-12.1-sysv/chapter09/chapter09.html create mode 100644 lfs-12.1-sysv/chapter09/etcshells.html create mode 100644 lfs-12.1-sysv/chapter09/inputrc.html create mode 100644 lfs-12.1-sysv/chapter09/introduction.html create mode 100644 lfs-12.1-sysv/chapter09/locale.html create mode 100644 lfs-12.1-sysv/chapter09/network.html create mode 100644 lfs-12.1-sysv/chapter09/symlinks.html create mode 100644 lfs-12.1-sysv/chapter09/udev.html create mode 100644 lfs-12.1-sysv/chapter09/usage.html create mode 100644 lfs-12.1-sysv/chapter10/chapter10.html create mode 100644 lfs-12.1-sysv/chapter10/fstab.html create mode 100644 lfs-12.1-sysv/chapter10/grub.html create mode 100644 lfs-12.1-sysv/chapter10/introduction.html create mode 100644 lfs-12.1-sysv/chapter10/kernel.html create mode 100644 lfs-12.1-sysv/chapter11/afterlfs.html create mode 100644 lfs-12.1-sysv/chapter11/chapter11.html create mode 100644 lfs-12.1-sysv/chapter11/getcounted.html create mode 100644 lfs-12.1-sysv/chapter11/reboot.html create mode 100644 lfs-12.1-sysv/chapter11/theend.html create mode 100644 lfs-12.1-sysv/chapter11/whatnow.html create mode 100644 lfs-12.1-sysv/images/caution.png create mode 100644 lfs-12.1-sysv/images/chevron-bottom.png create mode 100644 lfs-12.1-sysv/images/chevron-left.png create mode 100644 lfs-12.1-sysv/images/chevron-right.png create mode 100644 lfs-12.1-sysv/images/chevron-top.png create mode 100644 lfs-12.1-sysv/images/grid-three-up.png create mode 100644 lfs-12.1-sysv/images/important.png create mode 100644 lfs-12.1-sysv/images/menu.png create mode 100644 lfs-12.1-sysv/images/note.png create mode 100644 lfs-12.1-sysv/images/tip.png create mode 100644 lfs-12.1-sysv/images/tux.png create mode 100644 lfs-12.1-sysv/images/warning.png create mode 100644 lfs-12.1-sysv/index.html create mode 100644 lfs-12.1-sysv/legalnotice.html create mode 100644 lfs-12.1-sysv/longindex.html create mode 100644 lfs-12.1-sysv/md5sums create mode 100644 lfs-12.1-sysv/part1.html create mode 100644 lfs-12.1-sysv/part2.html create mode 100644 lfs-12.1-sysv/part3.html create mode 100644 lfs-12.1-sysv/part4.html create mode 100644 lfs-12.1-sysv/part5.html create mode 100644 lfs-12.1-sysv/partintro/generalinstructions.html create mode 100644 lfs-12.1-sysv/partintro/introduction.html create mode 100644 lfs-12.1-sysv/partintro/partintro.html create mode 100644 lfs-12.1-sysv/partintro/toolchaintechnotes.html create mode 100644 lfs-12.1-sysv/prologue/architecture.html create mode 100644 lfs-12.1-sysv/prologue/audience.html create mode 100644 lfs-12.1-sysv/prologue/errata.html create mode 100644 lfs-12.1-sysv/prologue/foreword.html create mode 100644 lfs-12.1-sysv/prologue/organization.html create mode 100644 lfs-12.1-sysv/prologue/package-choices.html create mode 100644 lfs-12.1-sysv/prologue/preface.html create mode 100644 lfs-12.1-sysv/prologue/prerequisites.html create mode 100644 lfs-12.1-sysv/prologue/standards.html create mode 100644 lfs-12.1-sysv/prologue/typography.html create mode 100644 lfs-12.1-sysv/scripts/apds01.html create mode 100644 lfs-12.1-sysv/scripts/apds02.html create mode 100644 lfs-12.1-sysv/scripts/apds03.html create mode 100644 lfs-12.1-sysv/scripts/apds04.html create mode 100644 lfs-12.1-sysv/scripts/apds05.html create mode 100644 lfs-12.1-sysv/scripts/apds06.html create mode 100644 lfs-12.1-sysv/scripts/apds07.html create mode 100644 lfs-12.1-sysv/scripts/apds08.html create mode 100644 lfs-12.1-sysv/scripts/apds09.html create mode 100644 lfs-12.1-sysv/scripts/apds10.html create mode 100644 lfs-12.1-sysv/scripts/apds11.html create mode 100644 lfs-12.1-sysv/scripts/apds12.html create mode 100644 lfs-12.1-sysv/scripts/apds13.html create mode 100644 lfs-12.1-sysv/scripts/apds14.html create mode 100644 lfs-12.1-sysv/scripts/apds15.html create mode 100644 lfs-12.1-sysv/scripts/apds16.html create mode 100644 lfs-12.1-sysv/scripts/apds17.html create mode 100644 lfs-12.1-sysv/scripts/apds18.html create mode 100644 lfs-12.1-sysv/scripts/apds19.html create mode 100644 lfs-12.1-sysv/scripts/apds20.html create mode 100644 lfs-12.1-sysv/scripts/apds21.html create mode 100644 lfs-12.1-sysv/scripts/apds22.html create mode 100644 lfs-12.1-sysv/scripts/apds23.html create mode 100644 lfs-12.1-sysv/scripts/apds24.html create mode 100644 lfs-12.1-sysv/scripts/apds25.html create mode 100644 lfs-12.1-sysv/scripts/apds26.html create mode 100644 lfs-12.1-sysv/scripts/apds27.html create mode 100644 lfs-12.1-sysv/scripts/apes01.html create mode 100644 lfs-12.1-sysv/scripts/scripts.html create mode 100644 lfs-12.1-sysv/scripts/udev-rules.html create mode 100644 lfs-12.1-sysv/stylesheets/lfs-print.css create mode 100644 lfs-12.1-sysv/stylesheets/lfs.css create mode 100644 lfs-12.1-sysv/wget-list create mode 100644 lfs-12.1-sysv/wget-list-sysv diff --git a/index.html b/index.html index e13c3ed..e50bc9b 100644 --- a/index.html +++ b/index.html @@ -37,7 +37,7 @@

Просто чтоб было — зеркало русского перевода Linux From Scratch:
- Версия 12.0 без SystemD + Версия 12.1 без SystemD

diff --git a/lfs-12.0-sysv/LFS-BOOK.html b/lfs-12.0-sysv/LFS-BOOK.html deleted file mode 100755 index e8d88e8..0000000 --- a/lfs-12.0-sysv/LFS-BOOK.html +++ /dev/null @@ -1,57628 +0,0 @@ - - - - - Линукс с нуля - - - - - -
-
-
-
-

- Линукс с нуля -

-
-
-

- Версия 12.0 -

-
-
-

- Дата публикации 2 сентября 2023 -

-
-
-
-
-

- Создатель: Gerard - Beekmans -

-
-
-

- Главный редактор: Bruce - Dubbs -

-
-
-

- Автор перевода: Владимир - Перцев -

-
-
-
-
- -
-
-
- -

- Все права защищены. -

-

- Эта книга распространяется на условиях Лицензия - Creative Commons. -

-

- Инструкции для компьютера могут быть извлечены из книги на - условиях Лицензия MIT. -

-

- Linux® является - зарегистрированным товарным знаком Линуса Торвальдса. -

-
-
-
-
-
-
-

- Содержание -

- -
-
-
-
-
-

- Предисловие -

-
-
-
-
-
-
-
-

- Предисловие -

-
-
-
-

- Мой путь к изучению и лучшему пониманию Linux начался еще в 1998 - году. Я только что установил свой первый дистрибутив Linux и - быстро увлекся его концепцией и философией. -

-

- У задачи может быть несколько вариантов решения. То же самое - можно сказать и о дистрибутивах Linux. Многие из них существовали - годами. Некоторые всё еще существуют, некоторые превратились во - что-то иное, а некоторые остались только в наших воспоминаниях. - Все они выполняют задачи по-разному, чтобы удовлетворить - потребности своей целевой аудитории. И я понял - раз существует - так много всевозможных способов добиться поставленной цели, мне - больше не нужно ограничивать себя какой-то одной реализацией. До - появления Linux мы просто мирились с проблемами в других - операционных системах, поскольку у нас не было выбора. Что есть, - то есть, нравилось нам это или нет. С Linux появился выбор. Если - вам что-то не понравилось, вы можете изменить это, к тому же, это - всецело поощряется. -

-

- Я попробовал разные дистрибутивы, но так и не смог ни на одном - остановиться. Oни были отличными системами сами по себе. Это - больше не было вопросом правильно или неправильно. Это стало - делом личного вкуса. При всём разнообразии выбора не было ни - одного дистрибутива, который был для меня идеален. Поэтому я - решил создать свою собственную Linux-систему, которая бы - полностью соответствовала моим личным предпочтениям. -

-

- Чтобы создать свою собственную систему, я решил скомпилировать - всё из исходного кода вместо использования предварительно - скомпилированных пакетов. Эта «идеальная» Linux-система должна была иметь - сильные стороны других систем без их недостатков. Сначала эта - мысль казалась пугающей. Но я придерживался идеи, что такая - система должна быть создана. -

-

- Разобравшись с такими проблемами, как циклические зависимости и - ошибки во время компиляции, я, наконец, создал собственную - систему Linux. Она была полностью работоспособна и вполне - пригодна для использования, как и любая другая Linux-система того - времени. Но это было мое собственное творение. Было очень приятно - собрать такую систему самому. Единственное, что было бы лучше, - это создавать каждую часть программного обеспечения - самостоятельно. Это было следующее, к чему я стремился -

-

- Когда я поделился своими идеями и опытом с другими членами - сообщества Linux, стал очевиден явный интерес к ним. Вскоре стало - понятно, что такие специально созданные Linux-системы служат не - только для удовлетворения специфических потребностей - пользователей, но и являются идеальной возможностью для обучения - программистов и системных администраторов, чтобы улучшить их - (существующие) навыки работы с Linux. Так родился проект - Linux From Scratch. -

-

- Книга Linux From Scratch является ядром этого проекта. В ней - содержится информация и инструкции, необходимые для разработки и - создания собственной системы. Хотя эта книга представляет шаблон, - который позволит создать правильно работающую систему, вы можете - изменить инструкции по своему усмотрению, что отчасти является - важной частью этого проекта. Вы всё контролируете; мы просто - протягиваем руку помощи, чтобы вы начали свой собственный путь. -

-

- Я искренне надеюсь, что вы прекрасно проведете время, работая над - своей собственной системой Linux From Scratch, и оцените ее - многочисленные преимущества. -

-
-

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

-
-
-
-
-
-
-

- Аудитория, на которую рассчитана - эта книга -

-
-
-
-

- Есть много причин, по которым вы хотели бы прочитать эту книгу. - Один из вопросов, который задают многие люди, звучит так: - «Зачем тратить время на - сборку Linux-системы вручную с нуля, если можно просто загрузить - и установить существующую?» -

-

- Одной из важных целей существования этого проекта является помощь - в изучении того, как работает система Linux изнутри. Создание - системы LFS помогает продемонстрировать, что заставляет работать - Linux, как все работает вместе и зависит друг от друга. Одна из - лучших вещей, которую может дать этот учебный опыт, — это - возможность настроить систему Linux в соответствии с вашими - уникальными потребностями. -

-

- Другое ключевое преимущество - LFS предоставляет более глубокий - контроль, не полагаясь на чью-либо реализацию Linux. С LFS вы - находитесь в кресле водителя, и Вы управляете каждым аспектом системы. -

-

- LFS позволяет создавать очень компактные системы Linux. При - установке обычных дистрибутивов вам часто приходится - устанавливать очень много программ, которые, вероятно, никогда не - используются. Эти программы тратят ресурсы впустую. Вы можете - возразить, что с сегодняшними жесткими дисками и процессорами - такие ресурсы не имеют значения. Иногда, однако, вы все еще - ограничены размером. Подумайте о загрузочных компакт-дисках, - USB-накопителях и встраиваемых системах. Это области, в которых - LFS может быть полезным. -

-

- Ещё одним преимуществом собственной сборки Linux является - безопасность. При компиляции каждого компонента системы из - исходных кодов вы можете всё проверить и применить необходимые - патчи. Больше не нужно ждать, когда кто-то другой скомпилирует - пакет с требуемыми исправлениями. Если вы не изучите патч и не - примените его самостоятельно, нет гарантий, что новый пакет будет - собран корректно и устранит проблему. -

-

- Цель Linux From Scratch — создать законченную и пригодную для - использования систему базового уровня. Если вы не хотите - создавать свою собственную систему Linux с нуля, вы, тем не - менее, можете извлечь пользу из информации, содержащейся в этой - книге. -

-

- Есть много других веских причин для создания собственной системы - LFS. В конце концов, образование, безусловно, является самой - важной из них. Продолжая работать с LFS, вы откроете для себя - силу, которую действительно приносят информация и знания. -

-
-
-
-
-
-

- Целевые архитектуры LFS -

-
-
-
-

- Основными целевыми архитектурами LFS являются процессоры - AMD/Intel x86 (32-разрядные) и x86_64 (64-разрядные). Однако, - известно, что инструкции, приведенные в этой книге, с некоторыми - изменениями работают с процессорами Power PC и ARM. Для создания - системы, использующей один из этих процессоров, основным - предварительным условием, в дополнение к описанным на следующей - странице, является существующая система Linux, например, - собранная ранее LFS, Ubuntu, Red Hat/Fedora, SuSE или другой - дистрибутив, ориентированный на имеющуюся у вас архитектуру. - Также обратите внимание, что 32-разрядный дистрибутив можно - установить и использовать в качестве хост-системы на 64-разрядном - компьютере AMD/Intel. -

-

- При сборке LFS выигрыш от сборки на 64-битной системе по - сравнению с 32-битной системой минимален. Например, в тестовой - сборке LFS-9.1 в системе на базе процессора Core i7-4790 с - использованием 4 ядер были получены следующие статистические - данные: -

-
Архитектура     Время сборки    Размер сборки
-x86             239.9 минут     3.6 ГБ
-x64             233.2 минут     4.4 ГБ
-

- Как видите, на том же оборудовании 64-битная сборка всего на 3% - быстрее и на 22% больше, чем 32-битная. Если вы планируете - использовать LFS в качестве LAMP-сервера или брандмауэра, - 32-разрядной сборки может быть достаточно. С другой стороны, для - сборки и/или запуска некоторых пакетов в BLFS теперь требуется - более 4 ГБ ОЗУ, поэтому, если вы планируете использовать LFS в - качестве настольной ОС, авторы LFS рекомендуют собирать 64-битную - систему. -

-

- По умолчанию 64-разрядная сборка LFS, считается «чистой» 64-разрядной - системой. То есть она поддерживает только 64-разрядные - исполняемые файлы. Сборка «multilib» системы требует компиляции многих - программ дважды - один раз для 32-битной и один раз для - 64-битной. Напрямую в книге данная опция не поддерживается, - потому что это будет только мешать образовательной цели этой - книги, предлагающей инструкции, необходимые для сборки базовой - системы. Некоторые редакторы LFS/BLFS поддерживают ответвление - LFS для multilib, которое доступно по адресу https://www.linuxfromscratch.org/~thomas/multilib/index.html. - Но это более продвинутая тема. -

-
-
-
-
-
-

- Предпосылки -

-
-
-
-

- Создание системы LFS — непростая задача. Это требует - определенного уровня знаний системного администрирования Unix для - решения проблем и правильного выполнения перечисленных команд. В - частности, как абсолютный минимум, Вы должны уметь пользоваться - командной оболочкой для копирования или перемещения файлов и - каталогов, просмотра содержимого каталогов и файлов и изменения - текущего каталога. Также ожидается, что у вас есть достаточные - знания об использовании и установке программного обеспечения в - Linux. -

-

- Поскольку книга LFS предполагает наличие хотя бы этого базового уровня навыков, - различные форумы поддержки LFS вряд ли смогут предоставить вам - большую помощь в этих вопросах. Вы обнаружите, что ваши вопросы, - касающиеся таких базовых знаний, скорее всего, останутся без - ответа (или вас просто направят к списку основных материалов для - предварительного ознакомления). -

-

- Перед созданием системы LFS мы настоятельно рекомендуем прочитать - следующие статьи: -

-
-
    -
  • -

    - HOWTO по сборке программного обеспечения https://tldp.org/HOWTO/Software-Building-HOWTO.html -

    -

    - Это исчерпывающее руководство по сборке и установке - «универсальных» программ Unix под - Linux. Несмотря на то что руководство написано достаточно - давно, оно по-прежнему дает хороший обзор основных методов, - применяемых для сборки и установки программного - обеспечения. -

    -
  • -
  • -

    - Руководство для начинающих по установке из исходников - - https://moi.vonos.net/linux/beginners-installing-from-source/ -

    -

    - В этом руководстве содержится хороший обзор основных - навыков и методов, необходимых для сборки программ из - исходного кода -

    -
  • -
-
-
-
-
-
-
-

- LFS и стандарты -

-
-
-
-

- Структура LFS максимально соответствует стандартам Linux. - Первичными стандартами являются: -

-
-
    -
  • -

    - POSIX.1-2008. -

    -
  • -
  • -

    - - Filesystem Hierarchy Standard (FHS) Version 3.0 -

    -
  • -
  • -

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

    -

    - LSB имеет четыре отдельных стандарта: Core, Desktop, - Runtime Languages и Imaging. Некоторые части спецификаций - Core и Desktop зависят от архитектуры. Есть также две - области не являющиеся обязательными: Gtk3 и Graphics. LFS - старается соответствовать стандартам LSB, для архитектур - IA32 (32-bit x86) или AMD64 (x86_64), рассмотренным в - предыдущем разделе. -

    -
    -

    - Примечание -

    -

    - Многие не согласны с требованиями LSB. Основные цели - стандартов - быть уверенным в том, что проприетарное ПО - будет правильно установлено и сможет корректно работать - на совместимой системе. Поскольку в LFS установка - программ идёт из исходных кодов, у пользователя имеется - полный контроль над тем, какие пакеты ему необходимы, вы - можете не устанавливать некоторые пакеты, определяемые в - LSB. -

    -
    -
  • -
-
-

- Создать законченную систему, которая пройдет сертификационные - тесты LSB "с нуля" возможно, но этого нельзя сделать без - установки множества дополнительных пакетов, которые выходят за - рамки этой книги. Однако, инструкции по их установке можно найти - в книге BLFS. -

-
-

- Пакеты LFS, которые необходимы для - удовлетворения требований LSB -

- - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

- 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: -

-
-

- Нет -

-
-

- LSB - Runtime Languages: -

-
-

- Perl, Python -

-
-

- LSB - Imaging: -

-
-

- Нет -

-
-

- LSB Gtk3 - и LSB Graphics (Необязательные): -

-
-

- Нет -

-
-
-
-

- Пакеты, поставляемые BLFS, необходимые для - удовлетворения требований LSB -

- - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

- LSB - Core: -

-
-

- At, Batch (часть At), Cpio, Ed, Fcrontab, LSB-Tools, - NSPR, NSS, PAM, Pax, Sendmail (или Postfix, или 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: -

-
-

- Libxml2, Libxslt -

-
-

- LSB - Imaging: -

-
-

- CUPS, Cups-filters, Ghostscript, SANE -

-
-

- LSB Gtk3 - и LSB Graphics (Необязательные): -

-
-

- GTK3+ -

-
-
-
-

- Пакеты, не поставляемые LFS или BLFS, - необходимые для удовлетворения требований LSB -

- - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

- LSB - Core: -

-
-

- Нет -

-
-

- LSB - Desktop: -

-
-

- Qt4 (но предоставляется Qt5) -

-
-

- LSB - Runtime Languages: -

-
-

- Нет -

-
-

- LSB - Imaging: -

-
-

- Нет -

-
-

- LSB Gtk3 - и LSB Graphics (Необязательные): -

-
-

- Нет -

-
-
-
-
-
-
-
-

- Информация о пакетах, используемых в - этой книге -

-
-
-
-

- Целью LFS является создание законченной и пригодной для - использования базовой системы, которая содержит все пакеты, - необходимые для самовоспроизведения, состоящую при этом из - относительно небольшого набора программ, с помощью которых можно - расширять систему. Это не означает, что LFS является самой - маленькой из возможных систем. В систему включено несколько - важных пакетов, которые не являются обязательными. Приведенный - ниже список объясняет почему в книгу включен тот или иной пакет. -

-
-
    -
  • -

    - Acl -

    -

    - Access Control List или ACL — список управления доступом, - который определяет, кто или что может получать доступ к - объекту (программе, процессу или файлу), и какие именно - операции разрешено или запрещено выполнять субъекту - (пользователю, группе пользователей).Данный пакет содержит - утилиты для администрирования списков управления доступом, - которые используются для определения дискреционных прав - доступа к файлам и каталогам. -

    -
  • -
  • -

    - Attr -

    -

    - Этот пакет содержит программы для управления расширенными - атрибутами объектов файловой системы. -

    -
  • -
  • -

    - Autoconf -

    -

    - Этот пакет содержит программы для создания сценариев - оболочки, которые могут выполнять автоматическую настройку - исходного кода из шаблона разработчика. Он часто необходим - для повторной компиляции пакета после обновления процедур - сборки. -

    -
  • -
  • -

    - Automake -

    -

    - Этот пакет содержит программы для создания Make-файлов из - шаблона. Он также необходим для повторной компиляции пакета - после обновления процедур сборки. -

    -
  • -
  • -

    - Bash -

    -

    - Этот пакет удовлетворяет требования LSB по предоставлению - интерфейса Bourne Shell для системы. Он был выбран среди - других пакетов оболочки из-за его повсеместного - использования и широких возможностей. -

    -
  • -
  • -

    - Bc -

    -

    - Этот пакет предоставляет язык числовой обработки - произвольной точности. Он необходимым для сборки ядра Linux -

    -
  • -
  • -

    - Binutils -

    -

    - Этот пакет содержит компоновщик, ассемблер и другие - инструменты для работы с объектными файлами. Программы в - этом пакете необходимы для компиляции большинства пакетов в - системе LFS. -

    -
  • -
  • -

    - Bison -

    -

    - Этот пакет содержит GNU-версию yacc (Yet Another Compiler - Compiler), необходимого для сборки некоторых пакетов в LFS. -

    -
  • -
  • -

    - Bzip2 -

    -

    - Этот пакет содержит программы для сжатия и распаковки - файлов. Требуется для распаковки множества пакетов LFS. -

    -
  • -
  • -

    - Check -

    -

    - Этот пакет содержит тестовую обвязку для других программ. -

    -
  • -
  • -

    - Coreutils -

    -

    - Этот пакет содержит ряд программ для просмотра файлов и - каталогов, и управления ими. Эти программы необходимы для - управления файлами через командную строку и для сборки - каждого пакета в LFS. -

    -
  • -
  • -

    - DejaGNU -

    -

    - Этот пакет предоставляет фреймворк для тестирования других - программ. -

    -
  • -
  • -

    - Diffutils -

    -

    - Этот пакет содержит программы, которые показывают различия - между файлами или каталогами. Их можно использовать для - создания патчей, а также они применяются во многих - процедурах сборки -

    -
  • -
  • -

    - E2fsprogs -

    -

    - Этот пакет содержит утилиты для работы с файловыми - системами ext2, ext3 и ext4. Это наиболее распространенные - и тщательно протестированные файловые системы, - поддерживаемые Linux -

    -
  • -
  • -

    - Expat -

    -

    - Этот пакет содержит небольшую библиотеку разбора XML. Она - требуется модулем Perl XML::Parser. -

    -
  • -
  • -

    - Expect -

    -

    - Этот пакет содержит инструменты для автоматизации и - тестирования, и является расширением к скриптовому языку - Tcl, для многих интерактивных приложений. Он обычно - используется для тестирования других пакетов. -

    -
  • -
  • -

    - File -

    -

    - Этот пакет содержит утилиту для определения типа файла или - файлов. Некоторым пакетам она нужна в сценариях сборки. -

    -
  • -
  • -

    - Findutils -

    -

    - Этот пакет предоставляет программы для поиска файлов. Он - используется во многих сценариях сборки пакетов. -

    -
  • -
  • -

    - Flex -

    -

    - Этот пакет содержит утилиту для генерации программ, - распознающих шаблоны в тексте. Это версия GNU программы lex - (лексический анализатор). Пакет необходим для сборки - некоторых пакетов LFS. -

    -
  • -
  • -

    - Gawk -

    -

    - Этот пакет содержит программы для работы с текстовыми - файлами. Это GNU версия awk (Aho-Weinberg-Kernighan). Он - используется во многих сценариях сборки пакетов. -

    -
  • -
  • -

    - GCC -

    -

    - Это коллекция компиляторов Gnu. Он содержит компиляторы C и - C++, а также несколько других компиляторов, поддержка - которых не предусмотрена в LFS. -

    -
  • -
  • -

    - GDBM -

    -

    - Этот пакет содержит библиотеку GNU Database Manager. Он - используется пакетом Man-DB -

    -
  • -
  • -

    - Gettext -

    -

    - Этот пакет содержит утилиты и библиотеки для - интернационализации и локализации многочисленных пакетов. -

    -
  • -
  • -

    - Glibc -

    -

    - Этот пакет содержит основную библиотеку C. Программы Linux - не будут работать без неё. -

    -
  • -
  • -

    - GMP -

    -

    - Этот пакет содержит математические библиотеки, - предоставляющие полезные функции для вычислений с плавающей - точкой. Требуется для сборки GCC. -

    -
  • -
  • -

    - Gperf -

    -

    - Этот пакет содержит программу, которая генерирует идеальную - хеш-функцию из набора ключей. Требуется для пакета - Udev . -

    -
  • -
  • -

    - Grep -

    -

    - Этот пакет содержит программы для поиска по файлам. Пакет - используется в скриптах сборки большинства пакетов. -

    -
  • -
  • -

    - Groff -

    -

    - Этот пакет содержит программы для обработки и - форматирования текста. Одной из важнейших функций этих - программ является форматирование man страниц. -

    -
  • -
  • -

    - GRUB -

    -

    - Это загрузчик операционной системы (GRand Unified - Bootloader). Самый гибкий из нескольких доступных - загрузчиков. -

    -
  • -
  • -

    - Gzip -

    -

    - Этот пакет содержит программы для сжатия и распаковки - файлов. Он необходим для распаковки множества пакетов в - LFS. -

    -
  • -
  • -

    - Iana-etc -

    -

    - Этот пакет предоставляет данные для сетевых служб и - протоколов. Он необходим для обеспечения правильных сетевых - возможностей. -

    -
  • -
  • -

    - Inetutils -

    -

    - Этот пакет содержит программы для базового сетевого - администрирования. -

    -
  • -
  • -

    - Intltool -

    -

    - Этот пакет содержит инструменты для извлечения переводимых - строк из исходных файлов. -

    -
  • -
  • -

    - IProute2 -

    -

    - Этот пакет содержит программы для базовой и расширенной - работы в сетях IPv4 и IPv6. Он был выбран среди других - распространенных пакетов сетевых инструментов (net-tools) - из-за его поддержки IPv6. -

    -
  • -
  • -

    - Kbd -

    -

    - Этот пакет содержит таблицы раскладок, утилиты управления - клавиатурой для неамериканских клавиатур, кроме этого, с - ним поставляется большой набор консольных шрифтов. -

    -
  • -
  • -

    - Kmod -

    -

    - Этот пакет содержит программы, необходимые для - администрирования модулей ядра Linux. -

    -
  • -
  • -

    - Less -

    -

    - Этот пакет содержит очень хороший просмотрщик текстовых - файлов, который позволяет использовать прокрутку верх/вниз - при просмотре. Многие пакеты используют его для - постраничного вывода. -

    -
  • -
  • -

    - Libcap -

    -

    - Этот пакет реализует интерфейсы пользовательского - пространства для возможностей POSIX 1003.1e, доступных в - ядре Linux. -

    -
  • -
  • -

    - Libelf -

    -

    - Проект elfutils предоставляет библиотеки и инструменты для - файлов ELF и данных DWARF. Большинство утилит в этом пакете - доступны в других пакетах, но эта библиотека необходима для - сборки ядра Linux с использованием стандартной (и наиболее - эффективной) конфигурации. -

    -
  • -
  • -

    - Libffi -

    -

    - Этот пакет реализует переносимый программный интерфейс - высокого уровня для различных соглашений о вызовах. - Некоторые программы могут не знать во время компиляции, - какие аргументы должны быть переданы в функцию. Например, - интерпретатору во время выполнения может быть сообщено о - количестве и типах аргументов, используемых для вызова - данной функции. Libffi можно использовать как мост от - интерпретатора к скомпилированному коду. -

    -
  • -
  • -

    - Libpipeline -

    -

    - Пакет Libpipeline содержит библиотеку для гибкого и - удобного управления конвейерами подпроцессов. Она требуется - для Man-DB. -

    -
  • -
  • -

    - Libtool -

    -

    - Этот пакет содержит сценарий поддержки универсальной - библиотеки GNU. Он объединяет сложность использования общих - библиотек в согласованный переносимый интерфейс. Библиотека - необходима наборам тестов в других пакетах LFS. -

    -
  • -
  • -

    - Libxcrypt -

    -

    - Этот пакет предоставляет библиотеку libcrypt, необходимую различным пакетам - (в частности, Shadow) для хеширования паролей. Он заменяет - устаревшую реализацию libcrypt в Glibc. -

    -
  • -
  • -

    - Linux Kernel -

    -

    - Этот пакет является ядром операционной системой. -

    -
  • -
  • -

    - M4 -

    -

    - Этот пакет содержит текстовый макропроцессор, полезный в - качестве инструмента сборки для других программ. -

    -
  • -
  • -

    - Make -

    -

    - Этот пакет содержит программу для управления сборкой - пакетов. При сборке она необходима почти для каждого пакета - в LFS. -

    -
  • -
  • -

    - Man-DB -

    -

    - Этот пакет содержит программы для поиска и просмотра - справочных страниц. Он был выбран вместо пакета - man из-за превосходных - возможностей интернационализации. Содержит man. -

    -
  • -
  • -

    - Man-pages -

    -

    - Этот пакет представляет собой содержимое основных - справочных страниц Linux. -

    -
  • -
  • -

    - Meson -

    -

    - Этот пакет предоставляет программный инструмент для - автоматизации создания программного обеспечения. Основная - цель Meson — свести к минимуму количество времени, которое - разработчики программного обеспечения должны тратить на - настройку своей системы сборки. Требуется для сборки - Systemd, а также многих пакетов BLFS. -

    -
  • -
  • -

    - MPC -

    -

    - Этот пакет содержит функции для арифметики комплексных - чисел. Необходим GCC. -

    -
  • -
  • -

    - MPFR -

    -

    - Этот пакет содержит функции для арифметики с произвольной - точностью. Необходим GCC. -

    -
  • -
  • -

    - Ninja -

    -

    - Этот пакет предоставляет небольшую систему сборки, - ориентированную на скорость. Он предназначен для того, - чтобы его входные файлы генерировались системой сборки - более высокого уровня, и для максимально быстрого запуска - сборок. Необходим для Meson. -

    -
  • -
  • -

    - Ncurses -

    -

    - Этот пакет содержит библиотеки для независимой от терминала - обработки символьных экранов. Он часто используется для - управления курсором в меню. Необходим ряду пакетов в LFS. -

    -
  • -
  • -

    - Openssl -

    -

    - Этот пакет содержит инструменты управления и библиотеки, - относящиеся к криптографии. Они предоставляют - криптографические функций другим пакетам, включая ядро - Linux. -

    -
  • -
  • -

    - Patch -

    -

    - Этот пакет содержит программу для изменения или создания - файлов путем применения файла patch, обычно создаваемого - программой diff. Он - необходим процедуре сборки для некоторых пакетов LFS. -

    -
  • -
  • -

    - Perl -

    -

    - Этот пакет является интерпретатором языка PERL. Он - необходим для установки и тестирования некоторых пакетов - LFS. -

    -
  • -
  • -

    - Pkgconf -

    -

    - Этот пакет содержит программу, которая помогает настраивать - флаги компилятора и компоновщика для библиотек разработки. - Программа может быть использована в качестве замены - pkg-config, - который необходим системе сборки многих пакетов. Он - поддерживается более активно и развивается немного быстрее, - чем оригинальный пакет Pkg-config. -

    -
  • -
  • -

    - Procps-NG -

    -

    - Этот пакет содержит программы для мониторинга процессов. - Набор полезен для системного администрирования, а также - используются загрузочными сценариями LFS. -

    -
  • -
  • -

    - Psmisc -

    -

    - Этот пакет содержит программы для отображения информации о - запущенных процессах. Этот набор программ полезен для - системного администрирования. -

    -
  • -
  • -

    - Python 3 -

    -

    - Этот пакет предоставляет интерпретируемый язык - программирования, философия которого делает упор на - удобочитаемость кода. -

    -
  • -
  • -

    - Readline -

    -

    - Этот пакет представляет собой набор библиотек, предлагающих - возможности редактирования командной строки и средства для - работы с историей команд. Используется командным - интерпретатором Bash. -

    -
  • -
  • -

    - Sed -

    -

    - Этот пакет позволяет редактировать текст, не открывая его в - текстовом редакторе. Он необходим сценариям настройки - многих пакетов LFS. -

    -
  • -
  • -

    - Shadow -

    -

    - Этот пакет содержит программы для безопасной обработки - паролей. -

    -
  • -
  • -

    - Sysklogd -

    -

    - Этот пакет содержит программы для регистрации системных - сообщений, которые генерируются ядром или процессами демона - при возникновении необычных событий. -

    -
  • -
  • -

    - Sysvinit -

    -

    - Этот пакет содержит систему инициализации init, родительской элемент всех - остальных процессов в работающей системе Linux. -

    -
  • -
  • -

    - Udev -

    -

    - Этот пакет представляет собой диспетчер устройств. Он - контролирует разрешения, имена и символические ссылки - устройств в каталоге /dev, когда устройства добавляются или - удаляются из системы. -

    -
  • -
  • -

    - Tar -

    -

    - Этот пакет предоставляет возможность архивирования и - извлечения практически всех пакетов, используемых в LFS. -

    -
  • -
  • -

    - Tcl -

    -

    - Этот пакет содержит командный язык инструментов, - используется во многих наборах тестов. -

    -
  • -
  • -

    - Texinfo -

    -

    - Этот пакет предоставляет программы для чтения, записи и - преобразования информационных страниц. Используется в - процедурах установки многих пакетов LFS. -

    -
  • -
  • -

    - Util-linux -

    -

    - Этот пакет содержит различные служебные программы. Среди - них утилиты для работы с файловыми системами, консолями, - разделами и сообщениями. -

    -
  • -
  • -

    - Vim -

    -

    - Этот пакет содержит редактор. Его выбрали из-за - совместимости с классическим редактором vi и огромного - количества возможностей. Редактор является очень личным - выбором для каждого пользователя. По желанию можно заменить - любым другим редактором. -

    -
  • -
  • -

    - Wheel -

    -

    - Этот пакет содержит модуль Python, который представляет - собой эталонную реализацию механизма упаковки Python. -

    -
  • -
  • -

    - XML::Parser -

    -

    - Этот пакет представляет собой модуль Perl, который - взаимодействует с Expat. -

    -
  • -
  • -

    - XZ Utils -

    -

    - Этот пакет содержит программы для сжатия и распаковки - файлов. Он обеспечивает высокое сжатие и используется для - распаковки пакетов в формате XZ или LZMA. -

    -
  • -
  • -

    - Zlib -

    -

    - Этот пакет содержит процедуры сжатия и распаковки, - используемые некоторыми программами. -

    -
  • -
  • -

    - Zstd -

    -

    - Этот пакет содержит процедуры сжатия и распаковки, - используемые некоторыми программами. Он обеспечивает - высокие коэффициенты сжатия и очень широкий диапазон - компромиссов между сжатием и скоростью. -

    -
  • -
-
-
-
-
-
-
-

- Оформление -

-
-
-
-

- Чтобы облегчить понимание, в этой книге используются условные - обозначения. Этот раздел содержит примеры оформления, - используемые в Linux From Scratch. -

-
./configure --prefix=/usr
-

- Такое оформление предназначено для ввода именно так, как - показано, если иное не сказано в тексте рядом. Это оформление - также используется в разделах пояснений, чтобы указать, на какую - команду ссылается. -

-

- В некоторых случаях логическая строка расширяется до двух или - более физических строк с обратной косой чертой в конце строки. -

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

- Обратите внимание, что за обратной косой чертой должен следовать - перевод строки. Другие символы, такие как пробелы или символы - табуляции, приведут к неправильным результатам. -

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

- Такое оформление (текст фиксированной ширины) показывает вывод на - экран, как правило, в результате выполнения команд. Этот формат - также используется для отображения имен файлов, таких как - /etc/ld.so.conf. -

-
-

- Примечание -

-

- Пожалуйста, настройте свой браузер для отображения текста - фиксированной ширины с хорошим моноширинным шрифтом, с помощью - которого вы сможете четко различать символы Il1 или O0. -

-
-

- Акцент -

-

- Эта форма текста используется в книге для нескольких целей. Его - основная цель — подчеркнуть важные моменты. -

-

- https://mirror.linuxfromscratch.ru/ -

-

- Этот формат используется для гиперссылок как внутри сообщества - LFS, так и на внешние ресурсы. Может включать справочную - информацию, места загрузки и веб-сайты. -

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

- Этот формат используется при создании файлов конфигурации. Первая - команда указывает системе создать файл $LFS/etc/group из всего, что введено далее, - пока не встретится последовательность End Of File (EOF). Поэтому - весь этот раздел обычно печатается как есть. -

-

- <ЗАМЕНЯЕМЫЙ - ТЕКСТ> -

-

- Этот формат используется для текста, который не должен быть - напечатан так, как отображается, или для операций копирования и - вставки. -

-

- [НЕОБЯЗАТЕЛЬНЫЙ ТЕКСТ] -

-

- Этот формат используется для текста, который является - необязательным. -

-

- passwd(5) -

-

- Этот формат используется для ссылки на определенную страницу - руководства (man). Число в скобках указывает на конкретный раздел - внутри руководств. Например, у passwd есть две справочные - страницы. В соответствии с инструкциями по установке LFS эти две - справочные страницы будут расположены в /usr/share/man/man1/passwd.1 и /usr/share/man/man5/passwd.5. Когда в книге - используется passwd(5), имеется в - виду конкретно /usr/share/man/man5/passwd.5. man passwd напечатает первую - найденную справочную страницу, совпадающую с «passwd», которая будет - /usr/share/man/man1/passwd.1. В - этом примере вам нужно будет запустить man 5 passwd, чтобы прочитать - указанную страницу. Обратите внимание, что большинство справочных - страниц не имеют повторяющихся страниц в разных разделах. Поэтому - обычно достаточно man <имя - программы>. -

-
-
-
-
-
-

- Структура -

-
-
-
-

- Эта книга разделена на несколько частей. -

-
-

- Часть I - Введение -

-

- Эта часть содержит важные замечания о том, как выполнить - установку LFS. Также здесь представлена метаинформация о книге -

-
-
-

- Часть II - Подготовка к сборке -

-

- Часть II описывает, как подготовиться к процессу сборки — - создать разделы, загрузить пакеты и выполнить компиляцию - временных инструментов. -

-
-
-

- Часть III - Создание кросс-тулчейна LFS и временных - инструментов -

-

- Часть III содержит инструкции по созданию инструментов, - необходимых для создания конечной системы LFS. -

-
-
-

- Часть IV - Сборка системы LFS -

-

- Часть IV проводит читателя через сборку системы LFS—компиляцию - и установку всех пакетов один за другим, настройку сценариев - загрузки и установку ядра. Полученная в результате система - Linux является основой, на которой можно собрать другое - программное обеспечение для расширения системы по желанию. В - конце этой книги есть простой в использовании справочник со - списком всех программ, библиотек и важных файлов, которые были - установлены. -

-
-
-

- Часть V - Приложения -

-

- Часть V содержит информацию о самой книге, включая акронимы и - термины, благодарности, зависимости пакетов, список загрузочных - сценариев LFS, лицензии на распространение книги и - исчерпывающий указатель пакетов, программ, библиотек и - сценариев. -

-
-
-
-
-
-
-

- Ошибки и рекомендации по - безопасности -

-
-
-
-

- Программное обеспечение, используемое для создания системы LFS, - постоянно обновляется и совершенствуется. Предупреждения - безопасности и исправления ошибок могут появиться после выхода - книги LFS. Чтобы проверить, нуждаются ли пакеты или инструкции в - этом выпуске LFS в каких-либо изменениях для устранения - уязвимостей в системе безопасности или исправления других ошибок, - посетите https://mirror.linuxfromscratch.ru/lfs/errata/12.0/, - прежде чем приступить к сборке. Вы должны внести требуемые - изменения и применить их к соответствующему разделу книги по мере - сборки системы LFS. -

-

- Кроме того, редакторы Linux From Scratch ведут список уязвимостей - безопасности, обнаруженных после выхода книги. Чтобы проверить - наличие каких-либо известных уязвимостей безопасности, посетите - https://mirror.linuxfromscratch.ru/lfs/advisories/, - прежде чем продолжить сборку. И, если вы будете использовать - систему LFS в качестве реальной настольной или серверной системы, - вам следует обращаться к рекомендациям и устранять любые - уязвимости в системе безопасности, даже когда система LFS - полностью собрана. -

-
-
-
-
-
-
-

- Часть I. Введение -

-
-
-
-
-
-
-
-

- Глава 1. Введение -

-
-
-
-
-
-
-
-

- 1.1. Как собрать систему LFS -

-
-
-
-

- Система LFS будет собрана с использованием уже установленного - дистрибутива Linux (например, Debian, OpenMandriva, Fedora или - openSUSE). Существующая система Linux (хост) будет - использоваться в качестве отправной точки для предоставления - необходимых программ, включая компилятор, компоновщик и - оболочку, для создания новой системы. Выберите опцию - «разработка» во время установки - дистрибутива, чтобы получить доступ к этим инструментам. -

-
-

- Примечание -

-

- Существует множество способов установки дистрибутива Linux, и - значения по умолчанию обычно не оптимальны для сборки системы - LFS. Предложения по настройке дистрибутива смотрите: - - https://mirror.linuxfromscratch.ru/hints/downloads/files/partitioning-for-lfs.txt. -

-
-

- В качестве альтернативы установке отдельного дистрибутива на - свой компьютер вы можете использовать LiveCD другого - дистрибутива. -

-

- Глава 2 этой книги - содержит информацию, о том, как создать новые разделы Linux и - файловую систему, где будет скомпилирована и установлена новая - система LFS. Глава 3 содержит - информацию, о том, какие пакеты и исправления необходимо - загрузить для сборки системы LFS и как их хранить на файловой - системе. Глава 4 - освещает вопросы настройки рабочего окружения. Пожалуйста, - внимательно прочитайте Глава 4, так - как в ней объясняется несколько важных моментов, о которых вам - необходимо знать, прежде чем вы начнёте работать со следующими - главами. -

-

- Глава 5 содержит - информацию об установке первоначального набора инструментов - (binutils, gcc и glibc) с использованием методов - кросс-компиляции для изоляции новых инструментов от - хост-системы. -

-

- Глава 6 - рассказывает, как выполнить кросс-компиляцию базовых утилит с - использованием только что собранного временного набора - инструментов. -

-

- В - Глава 7 будет осуществлен переход в среду chroot, где мы будет - использовать новые инструменты для сборки остальных - инструментов, необходимых для создания конечной системы. -

-

- Эта попытка изолировать новую систему от основного дистрибутива - поначалу может показаться чрезмерной. Полное техническое - обоснование того, почему это сделано именно так, приведено в - разделе Технические - примечания по сборочным инструментам. -

-

- В - Глава 8 будет собрана полноценная система LFS. Еще - одно преимущество среды chroot заключается в том, что она - позволяет вам продолжать использовать хост-систему во время - сборки LFS. Ожидая завершения компиляции пакетов, вы можете - продолжать пользоваться своим компьютером в обычном режиме. -

-

- Чтобы завершить установку, в Глава 9 происходит - настройка базовой конфигурации системы, в Глава 10 - настраиваются ядро и загрузчик. Глава 11 содержит информацию о - том как расширить возможности системы LFS. После выполнения - шагов, описанных в этой главе, компьютер будет готов к загрузке - в новую систему LFS. -

-

- Здесь описан процесс сборки системы в двух словах. Подробная - информация о каждом шаге обсуждается в следующих главах и - описаниях пакетов. Элементы, которые кажутся сложными сейчас, - будут разъяснены позже, и все встанет на свои места, по мере - прочтения книги. -

-
-
-
-
-
-

- 1.2. Что нового с момента - последнего релиза -

-
-
-
-
-

- Внимание -

-

- В процессе разработки LFS инструкции в книге часто - изменяются, чтобы адаптироваться к обновлению пакета или - использовать преимущества новых функций из обновленных - пакетов. Смешение инструкций разных версий книги LFS может - привести к незначительным поломкам. Такого рода проблемы - обычно являются результатом повторного использования - некоторых скриптов, созданных для предыдущей версии LFS. - Такое повторное использование настоятельно не рекомендуется. - Если вы по какой-либо причине повторно используете скрипты из - предыдущей версии LFS, вам нужно быть очень осторожным при - обновлении скриптов, чтобы они соответствовали текущей версии - книги LFS. -

-
-

- В книге LFS 12.0 для GCC установлен параметр --disable-fixincludes. Этот - параметр конфигурации, недавно добавлен в GCC 13.1, чтобы - предотвратить «исправление» системных заголовков. Такое - «исправление» не требуется для современной - системы Linux и может вызвать проблемы, если пакет будет - обновлен после установки GCC. -

-

- Ниже приведен список пакетов, обновленных с момента предыдущего - выпуска книги. -

-
-

- Обновлены: -

-
    -
  • -

    - Bc 6.6.0 -

    -
  • -
  • -

    - Binutils-2.41 -

    -
  • -
  • -

    - Coreutils-9.3 -

    -
  • -
  • -

    - Diffutils-3.10 -

    -
  • -
  • -

    - File-5.45 -

    -
  • -
  • -

    - Flit-core-3.9.0 -

    -
  • -
  • -

    - Gawk-5.2.2 -

    -
  • -
  • -

    - GCC-13.2.0 -

    -
  • -
  • -

    - Gettext-0.22 -

    -
  • -
  • -

    - Glibc-2.38 -

    -
  • -
  • -

    - GMP-6.3.0 -

    -
  • -
  • -

    - Grep-3.11 -

    -
  • -
  • -

    - Groff-1.23.0 -

    -
  • -
  • -

    - IANA-Etc-20230810 -

    -
  • -
  • -

    - IPRoute2-6.4.0 -

    -
  • -
  • -

    - Kbd-2.6.1 -

    -
  • -
  • -

    - Less-643 -

    -
  • -
  • -

    - Libcap-2.69 -

    -
  • -
  • -

    - Libelf-0.189 (из elfutils) -

    -
  • -
  • -

    - Linux-6.4.12 -

    -
  • -
  • -

    - Make-4.4.1 -

    -
  • -
  • -

    - Man-pages-6.05.01 -

    -
  • -
  • -

    - Meson-1.2.1 -

    -
  • -
  • -

    - Openssl-3.1.2 -

    -
  • -
  • -

    - Pkgconf-2.0.1 -

    -
  • -
  • -

    - Perl-5.38.0 -

    -
  • -
  • -

    - Procps-ng-4.0.3 -

    -
  • -
  • -

    - Python-3.11.4 -

    -
  • -
  • -

    - Sysklogd-1.5.1 -

    -
  • -
  • -

    - Systemd-254 -

    -
  • -
  • -

    - Tar-1.35 -

    -
  • -
  • -

    - Texinfo-7.0.3 -

    -
  • -
  • -

    - Tzdata-2023c -

    -
  • -
  • -

    - Util-Linux-2.39.1 -

    -
  • -
  • -

    - Vim-9.0.1677 -

    -
  • -
  • -

    - wheel-0.41.1 -

    -
  • -
  • -

    - XZ-Utils-5.4.4 -

    -
  • -
  • -

    - Zstd-1.5.5 -

    -
  • -
-
-
-

- Добавлены: -

-
    -
  • -

    - Udev-254 (из systemd) -

    -
  • -
  • -

    - Jinja2-3.1.2 -

    -
  • -
  • -

    - MarkupSafe-2.1.3 -

    -
  • -
  • -

    - Libxcrypt-4.4.36 -

    -
  • -
  • -

    - Pkgconf-2.0.1 -

    -
  • -
  • -

    - Flit-core-3.9.0 -

    -
  • -
  • -

    - glibc-2.38-memalign_fix-1.patch -

    -
  • -
-
-
-

- Удалены: -

-
    -
  • -

    - eudev-3.2.12 -

    -
  • -
  • -

    - Pkg-config-0.29.2 -

    -
  • -
-
-
-
-
-
-
-

- 1.3. Журнал изменений -

-
-
-
-

- Это версия 12.0 книги Linux From Scratch от 2 сентября 2023. - Если этой книге больше шести месяцев, возможно, уже доступна - более новая, улучшенная версия. Чтобы узнать это, проверьте - одно из зеркал https://mirror.linuxfromscratch.ru/mirrors.html. -

-

- Ниже приведен список изменений, внесенных с момента предыдущего - выпуска книги. -

-
-

- Список изменений: -

-
    -
  • -

    - 2023-08-25 -

    -
    -
      -
    • -

      - [bdubbs] - Update to linux-6.4.12. Fixes - #5320. -

      -
    • -
    -
    -
  • -
  • -

    - 2023-08-18 -

    -
    -
      -
    • -

      - [bdubbs] - Update to udev-lfs-20230818. -

      -
    • -
    -
    -
  • -
  • -

    - 2023-08-15 -

    -
    -
      -
    • -

      - [bdubbs] - Add a patch to fix a performance - regression in glibc's posix_memalign() function. - Fixes - #5315. -

      -
    • -
    • -

      - [bdubbs] - Update to less-643. Fixes - #5317. -

      -
    • -
    • -

      - [bdubbs] - Update to meson-1.2.1. Fixes - #5314. -

      -
    • -
    • -

      - [bdubbs] - Update to linux-6.4.10. Fixes - #5313. -

      -
    • -
    • -

      - [bdubbs] - Update to iana-etc-20230810. Addresses - - #5006. -

      -
    • -
    • -

      - [rahul] - Update to pkgconf-2.0.1. Fixes - #5316. -

      -
    • -
    -
    -
  • -
  • -

    - 2023-08-07 -

    -
    -
      -
    • -

      - [bdubbs] - Update to xz-5.4.4. Fixes - #5307. -

      -
    • -
    • -

      - [bdubbs] - Update to wheel-0.41.1 (Python Module). - Fixes - #5311. -

      -
    • -
    • -

      - [bdubbs] - Update to man-pages-6.05.01. Fixes - - #5306. -

      -
    • -
    • -

      - [bdubbs] - Update to linux-6.4.8. Fixes - #5309. -

      -
    • -
    • -

      - [bdubbs] - Update to iana-etc-20230804. Addresses - - #5006. -

      -
    • -
    • -

      - [rahul] - Update to pkgconf-2.0.0. Fixes - #5310. -

      -
    • -
    -
    -
  • -
  • -

    - 2023-08-01 -

    -
    -
      -
    • -

      - [bdubbs] - Update to vim-9.0.1677. Addresses - - #4500. -

      -
    • -
    • -

      - [bdubbs] - Update to openssl-3.1.2. Fixes - #5305. -

      -
    • -
    • -

      - [bdubbs] - Update to man-pages-6.05. Fixes - - #5303. -

      -
    • -
    • -

      - [bdubbs] - Update to binutils-2.41. Fixes - #5300. -

      -
    • -
    • -

      - [bdubbs] - Update to gmp-6.3.0. Fixes - #5301. -

      -
    • -
    • -

      - [bdubbs] - Update to glibc-2.38. Fixes - #5302. -

      -
    • -
    -
    -
  • -
  • -

    - 2023-07-28 -

    -
    -
      -
    • -

      - [bdubbs] - Update udev-lfs tarball to remove - obsolete cdrom rules and references to ISDN - devices. Fixes - #5291. -

      -
    • -
    • -

      - [bdubbs] - Update to wheel-0.41.0 (Python Module). - Fixes - #5290. -

      -
    • -
    • -

      - [bdubbs] - Update to tar-1.35. Fixes - #5287. -

      -
    • -
    • -

      - [bdubbs] - Update to udev - from systemd-254. Fixes - #5293. -

      -
    • -
    • -

      - [bdubbs] - Update to meson-1.2.0. Fixes - #5286. -

      -
    • -
    • -

      - [bdubbs] - Update to linux-6.4.7. Fixes - #5288. -

      -
    • -
    • -

      - [bdubbs] - Update to gcc-13.2.0. Fixes - #5292. -

      -
    • -
    • -

      - [bdubbs] - Update to file-5.45. Fixes - #5294. -

      -
    • -
    -
    -
  • -
  • -

    - 2023-07-28 -

    -
    -
      -
    • -

      - [xry111] - Enable cgroup-based memory pressure - information in kernel, and add the cgroup file - system into /etc/fstab and the mountvirtfs - bootscript. This is a preparation for udev from - systemd-254. Addresses - #5293. -

      -
    • -
    -
    -
  • -
  • -

    - 2023-07-22 -

    -
    -
      -
    • -

      - [xry111] - Make the mountvirtfs bootscript create - essential symlinks in /dev. Fixes - #5289. -

      -
    • -
    -
    -
  • -
  • -

    - 2023-07-15 -

    -
    -
      -
    • -

      - [xry111] - Replace eudev-3.2.12 with udev from - systemd-253. Fixes - #5085. -

      -
    • -
    • -

      - [bdubbs] - Update to iana-etc-20230629. Addresses - - #5006. -

      -
    • -
    • -

      - [bdubbs] - Update to linux-6.4.3. Fixes - #5284. -

      -
    • -
    • -

      - [bdubbs] - Update to libxcrypt-4.4.36. Fixes - - #5283. -

      -
    • -
    • -

      - [bdubbs] - Update to groff-1.23.0. Fixes - #5282. -

      -
    • -
    • -

      - [bdubbs] - Update to perl-5.38.0. Fixes - #5281. -

      -
    • -
    -
    -
  • -
  • -

    - 2023-07-02 -

    -
    -
      -
    • -

      - [xry111] - Add libxcrypt-4.4.35. Fixes - #5280. -

      -
    • -
    • -

      - [xry111] - Update to iproute2-6.4.0. Fixes - - #5277. -

      -
    • -
    • -

      - [xry111] - Update to linux-6.4.1. Fixes - #5276. -

      -
    • -
    -
    -
  • -
  • -

    - 2023-07-01 -

    -
    -
      -
    • -

      - [bdubbs] - Update to iana-etc-20230615. Addresses - - #5006. -

      -
    • -
    • -

      - [bdubbs] - Update to vim-9.0.1671. Addresses - - #4500. -

      -
    • -
    • -

      - [bdubbs] - Update to util-linux-2.39.1. Addresses - - #5278. -

      -
    • -
    • -

      - [bdubbs] - Update to linux-6.3.10. Addresses - - #5276. -

      -
    • -
    • -

      - [rahul] - Update to kbd-2.6.1. Fixes - #5279. -

      -
    • -
    • -

      - [bdubbs] - Update to gettext-0.22. Fixes - #5275. -

      -
    • -
    -
    -
  • -
  • -

    - 2023-06-17 -

    -
    -
      -
    • -

      - [xry111] - Update to linux-6.3.8. Fixes - #5272. -

      -
    • -
    • -

      - [xry111] - Update to kbd-2.6.0. Fixes - #5273. -

      -
    • -
    • -

      - [rahul] - Changed from pkg-config to pkgconf-1.9.5. - Fixes - #5274. -

      -
    • -
    -
    -
  • -
  • -

    - 2023-06-09 -

    -
    -
      -
    • -

      - [bdubbs] - Update to linux-6.3.6. Fixes - #5269. -

      -
    • -
    • -

      - [bdubbs] - Update to Python-3.11.4. Fixes - #5271. -

      -
    • -
    -
    -
  • -
  • -

    - 2023-06-03 -

    -
    -
      -
    • -

      - [bdubbs] - Update to iana-etc-20230524. Addresses - - #5006. -

      -
    • -
    • -

      - [bdubbs] - Update to linux-6.3.5. Fixes - #5264. -

      -
    • -
    • -

      - [bdubbs] - Update to openssl-3.1.1. Fixes - #5267. -

      -
    • -
    • -

      - [bdubbs] - Update to meson-1.1.1. Fixes - #5266. -

      -
    • -
    • -

      - [bdubbs] - Update to diffutils-3.10. Fixes - - #5262. -

      -
    • -
    • -

      - [bdubbs] - Update to bc-6.6.0. Fixes - #5263. -

      -
    • -
    -
    -
  • -
  • -

    - 2023-05-25 -

    -
    -
      -
    • -

      - [ken] - Remove unneeded group sgx from eudev rules. - Fixes - #5265. -

      -
    • -
    -
    -
  • -
  • -

    - 2023-05-18 -

    -
    -
      -
    • -

      - [bdubbs] - Update to util-linux-2.39. Fixes - - #5259. -

      -
    • -
    • -

      - [bdubbs] - Update to linux-6.3.3. Fixes - #5261. -

      -
    • -
    • -

      - [bdubbs] - Update to libcap-2.69. Fixes - #5258. -

      -
    • -
    • -

      - [bdubbs] - Update to grep-3.11. Fixes - #5256. -

      -
    • -
    • -

      - [bdubbs] - Update to flit_core-3.9.0. Fixes - - #5257. -

      -
    • -
    • -

      - [bdubbs] - Update to eudev-3.2.12. Fixes - #5260. -

      -
    • -
    -
    -
  • -
  • -

    - 2023-05-13 -

    -
    -
      -
    • -

      - [xry111] - Update to less-633. Fixes - #5251. -

      -
    • -
    • -

      - [xry111] - Update to linux-6.3.2. Fixes - #5255. -

      -
    • -
    • -

      - [xry111] - Update to xz-5.4.3. Fixes - #5252. -

      -
    • -
    • -

      - [xry111] - Update to gawk-5.2.2. Fixes - #5253. -

      -
    • -
    • -

      - [xry111] - Fix systemd runtime issue exploited by - GCC 13. Fixes - #5254. -

      -
    • -
    -
    -
  • -
  • -

    - 2023-05-01 -

    -
    -
      -
    • -

      - [bdubbs] - Update to vim-9.0.1503. Addresses - - #4500. -

      -
    • -
    • -

      - [bdubbs] - Update to iana-etc-20230418. Addresses - - #5006. -

      -
    • -
    • -

      - [bdubbs] - Update to sysvinit-3.07. Fixes - #5250. -

      -
    • -
    • -

      - [bdubbs] - Update to iproute2-6.3.0. Fixes - - #5248. -

      -
    • -
    • -

      - [bdubbs] - Update to gcc-13.1.0. Fixes - #5247. -

      -
    • -
    • -

      - [bdubbs] - Update to perl-5.36.1. Fixes - #5246. -

      -
    • -
    • -

      - [bdubbs] - Update to linux-6.3.1. Fixes - #5245. -

      -
    • -
    • -

      - [bdubbs] - Update to coreutils-9.3. Fixes - #5244. -

      -
    • -
    -
    -
  • -
  • -

    - 2023-04-15 -

    -
    -
      -
    • -

      - [bdubbs] - Update to vim-9.0.1452. Addresses - - #4500. -

      -
    • -
    • -

      - [bdubbs] - Update to iana-etc-20230405. Addresses - - #5006. -

      -
    • -
    • -

      - [bdubbs] - Update to zstd-1.5.5. Fixes - #5239. -

      -
    • -
    • -

      - [bdubbs] - Update to Python-3.11.3. Fixes - #5240. -

      -
    • -
    • -

      - [bdubbs] - Update to meson-1.1.0. Fixes - #5242. -

      -
    • -
    • -

      - [bdubbs] - Update to man-pages-6.04. Fixes - - #5238. -

      -
    • -
    • -

      - [bdubbs] - Update to linux-6.2.11. Fixes - #5241. -

      -
    • -
    -
    -
  • -
  • -

    - 2023-03-31 -

    -
    -
      -
    • -

      - [xry111] - Update to linux-6.2.9 (security fix). - Fixes - #5230. -

      -
    • -
    • -

      - [xry111] - Update to grep-3.10. Fixes - #5234. -

      -
    • -
    • -

      - [xry111] - Update to wheel-0.40.0. Fixes - #5229. -

      -
    • -
    • -

      - [xry111] - Update to bc-6.5.0. Fixes - #5228. -

      -
    • -
    • -

      - [xry111] - Update to texinfo-7.0.3. Fixes - #5235. -

      -
    • -
    • -

      - [xry111] - Update to coreutils-9.2. Fixes - #5232. -

      -
    • -
    • -

      - [xry111] - Update to libcap-2.68. Fixes - #5236. -

      -
    • -
    • -

      - [xry111] - Update to tzdata-2023c. Fixes - #5237. -

      -
    • -
    • -

      - [xry111] - Update to xz-5.4.2. Fixes - #5233. -

      -
    • -
    • -

      - [xry111] - Update to openssl-3.1.0. Fixes - #5227. -

      -
    • -
    • -

      - [xry111] - Add flit-core-3.8.0. -

      -
    • -
    -
    -
  • -
  • -

    - 2023-03-15 -

    -
    -
      -
    • -

      - [bdubbs] - Update to bc-6.4.0. Fixes - #5217. -

      -
    • -
    • -

      - [bdubbs] - Update to grep-3.9. Fixes - #5225. -

      -
    • -
    • -

      - [bdubbs] - Update to linux-6.2.6. Fixes - #5226. -

      -
    • -
    • -

      - [bdubbs] - Update to iana-etc-20230306. Addresses - - #5006. -

      -
    • -
    -
    -
  • -
  • -

    - 2023-03-04 -

    -
    -
      -
    • -

      - [xry111] - Update to bc-6.3.1. Fixes - #5217. -

      -
    • -
    • -

      - [xry111] - Update to linux-6.2.2 (security fixes). - Fixes - #5218. -

      -
    • -
    • -

      - [xry111] - Update to procps-ng-4.0.3. Fixes - - #5220. -

      -
    • -
    • -

      - [xry111] - Update to iproute2-6.2.0. Fixes - - #5221. -

      -
    • -
    • -

      - [xry111] - Update to meson-1.0.1. Fixes - #5222. -

      -
    • -
    • -

      - [xry111] - Update to make-4.4.1. Fixes - #5223. -

      -
    • -
    • -

      - [xry111] - Update to libelf-0.189. Fixes - #5224. -

      -
    • -
    • -

      - [bdubbs] - Change to a better host requirements - script in Chapter 2. -

      -
    • -
    -
    -
  • -
  • -

    - 2023-03-01 -

    -
    -
      -
    • -

      - [bdubbs] - LFS-11.3 released. -

      -
    • -
    -
    -
  • -
-
-
-
-
-
-
-

- 1.4. Ресурсы -

-
-
-
-
-

- 1.4.1. Часто - задаваемые вопросы -

-

- Если во время создания системы LFS вы столкнетесь с - какими-либо ошибками, у вас возникнут какие-либо вопросы или - вам кажется, что в книге допущена опечатка, пожалуйста, для - начала ознакомьтесь со списком часто задаваемых вопросов - (FAQ), расположенным по адресу https://mirror.linuxfromscratch.ru/faq/. -

-
-
-

- 1.4.2. Списки рассылки -

-

- На сервере linuxfromscratch.org размещен ряд списков - рассылки, используемых для разработки проекта LFS. Эти списки - включают, среди прочего, основные списки разработки и - поддержки. Если вы не можете найти ответ на странице часто - задаваемых вопросов, следующим шагом будет поиск решения в - списках рассылки по адресу https://mirror.linuxfromscratch.ru/search.html. -

-

- Для получения информации о списках рассылки, способах - подписки, архивах и дополнительной информации посетите - https://mirror.linuxfromscratch.ru/mail.html. -

-
-
-

- 1.4.3. IRC -

-

- Некоторые члены сообщества LFS предлагают помощь в Internet - Relay Chat (IRC). Прежде чем воспользоваться этим способом, - убедитесь, что на ваш вопрос еще нет ответа в разделе часто - задаваемых вопросов LFS или в архивах списков рассылки. Вы - можете найти нас в irc.libera.chat. Канал поддержки - называется #lfs-support. -

-
-
-

- 1.4.4. - Зеркала проекта -

-

- Проект LFS имеет несколько зеркал по всему миру, чтобы - сделать доступ к веб-сайту и загрузку необходимых пакетов - более удобными. Пожалуйста, посетите веб-сайт LFS по адресу - https://mirror.linuxfromscratch.ru/mirrors.html - для получения списка текущих зеркал. -

-
-
-

- 1.4.5. Контактная информация -

-

- Пожалуйста, направляйте все свои вопросы и комментарии в один - из списков рассылки LFS (см. выше). -

-
-
-
-
-
-
-

- 1.5. Помощь -

-
-
-
-
-

- Примечание -

-

- Если вы столкнулись с проблемой при сборки одного пакета с - помощью инструкцией из LFS, мы настоятельно не рекомендуем - публиковать проблему непосредственно в канале поддержки - разработчиков пакета до обсуждения через канал поддержки LFS, - указанный в Раздел 1.4, «Ресурсы». Часто это - неэффективно, потому что разработчики редко знакомы с - процедурой сборки LFS. Даже если вы действительно столкнулись - с проблемой в пакете, сообщество LFS все равно может помочь - выделить информацию, необходимую специалистам по поддержке - пакета, и составить соответствующий отчет. -

-

- Если вам нужно задать вопрос напрямую через канал поддержки - пакета, вы должны, по крайней мере, понимать, что многие - проекты имеют каналы поддержки, отделенные от системы - отслеживания ошибок. Отчеты об «ошибках» при - отправке вопросов считаются недействительными и могут - раздражать разработчиков этих проектов. -

-
-

- Если при работе с этой книгой у вас возникнут проблемы или - вопросы, посетите страницу часто задаваемых вопросов по адресу - https://mirror.linuxfromscratch.ru/faq/#generalfaq. - Часто там уже есть ответы на большинство вопросов. Если на этой - странице нет ответа на ваш вопрос, попробуйте самостоятельно - найти источник проблемы. Следующий документ даст вам некоторые - рекомендации по устранению неполадок: - https://mirror.linuxfromscratch.ru/hints/downloads/files/errors.txt. -

-

- Если вы не можете найти решение своей проблемы в разделе часто - задаваемых вопросов, выполните поиск в списках рассылки по - адресу https://mirror.linuxfromscratch.ru/search.html. -

-

- У нас также есть замечательное сообщество LFS, которое готово - предложить помощь через списки рассылки и IRC (см. Раздел 1.4, «Ресурсы» этой книги). Мы - получаем много вопросов в службу поддержки каждый день, и на - многие из них можно легко ответить, зайдя в раздел часто - задаваемых вопросов и предварительно выполнив поиск в списках - рассылки. Чтобы мы могли оказать помощь, вам необходимо сначала - провести самостоятельное исследование. Это позволяет нам - сосредоточиться на более сложных вопросах в поддержке. Если - ваши поиски не привели к решению проблемы, включите всю - необходимую информацию (упомянутую ниже) в свой запрос о - помощи. -

-
-

- 1.5.1. Что следует упомянуть -

-

- Помимо краткого объяснения возникшей проблемы, в любой запрос - о помощи необходимо включить следующую важную информацию: -

-
-
    -
  • -

    - Используемая версия книги (в данном случае 12.0) -

    -
  • -
  • -

    - Информацию о дистрибутиве и его версия, используемые - для сборки LFS -

    -
  • -
  • -

    - Вывод сценария Системные требования к хостовой - машине -

    -
  • -
  • -

    - Пакет или раздел где возникла проблема -

    -
  • -
  • -

    - Точное сообщение об ошибке или четкое описание проблемы -

    -
  • -
  • -

    - Обратите внимание, отклонялись ли вы от книги -

    -
  • -
-
-
-

- Примечание -

-

- Отклонение от этой книги не означает, что мы не поможем - вам. В конце концов, LFS зависит от личных предпочтений. - Заблаговременное информирование о любых изменениях в - процессе сборки помогает нам оценить и определить возможные - причины вашей проблемы -

-
-
-
-

- 1.5.2. Проблемы со скриптом configure -

-

- Если что-то пойдет не так во время выполнения скрипта - configure, - просмотрите файл config.log. - Этот файл может содержать ошибки, обнаруженные во время - настройки, которые не были выведены на экран. Включите - соответствующие - строки, если вам нужно обратиться за помощью. -

-
-
-

- 1.5.3. Проблемы компиляции -

-

- Как вывод на экран, так и содержимое различных файлов полезны - для определения причины проблем компиляции. Вывод экрана из - скрипта configure и запуска - make может быть - полезен. Необязательно включать весь вывод целиком, но - обязательно включите всю необходимую информацию. Ниже - приведен пример информации, которая должна быть включена в - экранный вывод 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
-

- В этом случае многие люди просто включили бы только нижнюю - часть: -

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

- Этой информации недостаточно, чтобы правильно диагностировать - проблему, потому что она только указывает на то, что что-то - пошло не так, а не на то, что пошло не так. Весь раздел, как - в приведенном выше примере, должен быть сохранен, так как он - включает в себя выполненную команду и все связанные с ней - сообщения об ошибках. -

-

- Отличная статья о том, как обращаться за помощью в Интернете, - доступна по адресу http://catb.org/~esr/faqs/smart-questions.html. - Прочтите этот документ и следуйте советам, чтобы повысить - вероятность получения помощи в которой вы нуждаетесь. -

-
-
-
-
-
-
-
-
-

- Часть II. Подготовка к сборке -

-
-
-
-
-
-
-
-

- Глава 2. Подготовка - хост-системы -

-
-
-
-
-
-
-
-

- 2.1. Введение -

-
-
-
-

- В этой главе проверяются и при необходимости устанавливаются - основные инструменты, необходимые для построения LFS. Затем - подготавливается раздел, в котором будет размещаться система - LFS. Мы создадим сам раздел, создадим на нем файловую систему и - смонтируем его. -

-
-
-
-
-
-

- 2.2. Требования к - хост-системе -

-
-
-
-
-

- 2.2.1. Аппаратное обеспечение -

-

- Редакторы LFS рекомендуют, чтобы процессор имел не менее - четырех ядер и не менее 8 ГБ памяти. Старые системы, не - отвечающие этим требованиям, будут по-прежнему работать, но - время сборки пакетов будет значительно больше, чем указано в - документации. -

-
-
-

- 2.2.2. Программное обеспечение -

-

- Ваша хост-система должна иметь следующее программное - обеспечение с указанными минимальными версиями. Это не должно - быть проблемой для большинства современных дистрибутивов - Linux. Также обратите внимание на то, что многие дистрибутивы - помещают заголовочные файлы в отдельные пакеты, как правило в - формате «<package-name>-devel» или - «<package-name>-dev». Обязательно - установите эти пакеты, если ваш дистрибутив их предоставляет. -

-

- Более ранние версии перечисленных ниже пакетов могут - работать, но это не проверялось. -

-
-
    -
  • -

    - Bash-3.2 - (/bin/sh должен быть символической или жесткой ссылкой - на bash) -

    -
  • -
  • -

    - Binutils-2.13.1 - (Версия выше 2.41 не рекомендуется, так как она не - тестировалась) -

    -
  • -
  • -

    - Bison-2.7 - (/usr/bin/yacc должен быть ссылкой на bison или - небольшой скрипт, запускающий bison) -

    -
  • -
  • -

    - Coreutils-7.0 -

    -
  • -
  • -

    - Diffutils-2.8.1 -

    -
  • -
  • -

    - Findutils-4.2.31 -

    -
  • -
  • -

    - Gawk-4.0.1 - (/usr/bin/awk должен быть ссылкой на gawk) -

    -
  • -
  • -

    - GCC-5.1, - включая компилятор C++, g++ (версии выше - 11.2.0 не рекомендуются, поскольку они не - тестировались). Также должны присутствовать стандартные - библиотеки C и C++ (с заголовочными файлами), чтобы - компилятор C++ мог осуществлять сборку программ. -

    -
  • -
  • -

    - Grep-2.5.1a -

    -
  • -
  • -

    - Gzip-1.3.12 -

    -
  • -
  • -

    - Linux - Kernel-4.14 -

    -

    - Причиной, по которой указаны минимальные требования к - версии ядра, является то, что мы указываем эту версию - при сборке glibc в - Глава 5 и - - Глава 8. Так как более старые ядра не - поддерживаются, скомпилированный пакет glibc немного меньше и быстрее. По - состоянию на июнь 2023 г. 4.14 является самой старой - версией ядра, поддерживаемой разработчиками ядра. -

    -

    - Если версия ядра хоста более ранняя, чем 4.14, вам - необходимо обновить ядро на более современную версию. - Есть два способа сделать это. Во-первых, посмотрите, - предоставляет ли ваш дистрибутив Linux пакет ядра 4.14 - или более позднюю версию. Если это так, установите его. - Если ваш дистрибутив не предлагает приемлемый пакет - ядра или вы предпочитаете не устанавливать его, вы - можете скомпилировать ядро самостоятельно. Инструкции - по компиляции ядра и настройке загрузчика (при условии, - что хост использует GRUB) находятся в Глава 10. -

    -

    - Для сборки LFS необходимо, чтобы ядро хоста - поддерживало псевдотерминал UNIX 98 (PTY). Обычно он - включен на всех настольных или серверных дистрибутивах, - поставляющих Linux 4.14 или более новое ядро. Если вы - собираете собственное хоста, убедитесь, что для - параметра CONFIG_UNIX98_PTYS установлено значение - y в конфигурационном файле - ядра. -

    -
  • -
  • -

    - 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-5.0 -

    -
  • -
  • -

    - Xz-5.0.0 -

    -
  • -
-
-
-

- Важно -

-

- Обратите внимание, что упомянутые выше символические ссылки - необходимы для создания системы LFS с использованием - инструкций, содержащихся в этой книге. Симлинки, - указывающие на другое программное обеспечение (например, - dash, mawk и т. д.), могут работать, но не тестируются и не - поддерживаются командой разработчиков LFS, и могут - потребовать либо отклонения от инструкций, либо - дополнительных исправлений для некоторых пакетов. -

-
-

- -

-

- Чтобы узнать, есть ли в вашей хост-системе все необходимые - пакеты и возможность компилировать программы, выполните - следующий скрипт: -

-
cat > version-check.sh << "EOF"
-#!/bin/bash
-# A script to list version numbers of critical development tools
-
-# If you have tools installed in other directories, adjust PATH here AND
-# in ~lfs/.bashrc (section 4.4) as well.
-
-LC_ALL=C 
-PATH=/usr/bin:/bin
-
-bail() { echo "FATAL: $1"; exit 1; }
-grep --version > /dev/null 2> /dev/null || bail "grep does not work"
-sed '' /dev/null || bail "sed does not work"
-sort   /dev/null || bail "sort does not work"
-
-ver_check()
-{
-   if ! type -p $2 &>/dev/null
-   then 
-     echo "ERROR: Cannot find $2 ($1)"; return 1; 
-   fi
-   v=$($2 --version 2>&1 | grep -E -o '[0-9]+\.[0-9\.]+[a-z]*' | head -n1)
-   if printf '%s\n' $3 $v | sort --version-sort --check &>/dev/null
-   then 
-     printf "OK:    %-9s %-6s >= $3\n" "$1" "$v"; return 0;
-   else 
-     printf "ERROR: %-9s is TOO OLD ($3 or later required)\n" "$1"; 
-     return 1; 
-   fi
-}
-
-ver_kernel()
-{
-   kver=$(uname -r | grep -E -o '^[0-9\.]+')
-   if printf '%s\n' $1 $kver | sort --version-sort --check &>/dev/null
-   then 
-     printf "OK:    Linux Kernel $kver >= $1\n"; return 0;
-   else 
-     printf "ERROR: Linux Kernel ($kver) is TOO OLD ($1 or later required)\n" "$kver"; 
-     return 1; 
-   fi
-}
-
-# Coreutils first because-sort needs Coreutils >= 7.0
-ver_check Coreutils      sort     7.0 || bail "--version-sort unsupported"
-ver_check Bash           bash     3.2
-ver_check Binutils       ld       2.13.1
-ver_check Bison          bison    2.7
-ver_check Diffutils      diff     2.8.1
-ver_check Findutils      find     4.2.31
-ver_check Gawk           gawk     4.0.1
-ver_check GCC            gcc      5.1
-ver_check "GCC (C++)"    g++      5.1
-ver_check Grep           grep     2.5.1a
-ver_check Gzip           gzip     1.3.12
-ver_check M4             m4       1.4.10
-ver_check Make           make     4.0
-ver_check Patch          patch    2.5.4
-ver_check Perl           perl     5.8.8
-ver_check Python         python3  3.4
-ver_check Sed            sed      4.1.5
-ver_check Tar            tar      1.22
-ver_check Texinfo        texi2any 5.0
-ver_check Xz             xz       5.0.0
-ver_kernel 4.14
-
-if mount | grep -q 'devpts on /dev/pts' && [ -e /dev/ptmx ]
-then echo "OK:    Linux Kernel supports UNIX 98 PTY";
-else echo "ERROR: Linux Kernel does NOT support UNIX 98 PTY"; fi
-
-alias_check() {
-   if $1 --version 2>&1 | grep -qi $2
-   then printf "OK:    %-4s is $2\n" "$1";
-   else printf "ERROR: %-4s is NOT $2\n" "$1"; fi
-}
-echo "Aliases:"
-alias_check awk GNU
-alias_check yacc Bison
-alias_check sh Bash
-
-echo "Compiler check:"
-if printf "int main(){}" | g++ -x c++ -
-then echo "OK:    g++ works";
-else echo "ERROR: g++ does NOT work"; fi
-rm -f a.out
-EOF
-
-bash version-check.sh
-
-
-
-
-
-
-

- 2.3. Этапы сборки - системы LFS -

-
-
-
-

- LFS разработан для сборки за один сеанс. То есть инструкция - предполагает, что система не будет выключаться в процессе. Это - не означает, что система должна быть собрана за один присест. - Для возобновления сборки в точке предыдущей остановки (после - перезагрузки/выключения), необходимо выполнить некоторые - процедуры повторно. -

-
-

- 2.3.1. Главы 1–4 -

-

- Эти главы выполняются на хост-системе. После перезагрузки - обратите внимание на следующее: -

-
-
    -
  • -

    - Процедуры, выполняемые пользователем root после Раздела 2.4, должны - иметь переменную среды LFS, установленную ДЛЯ ПОЛЬЗОВАТЕЛЯ ROOT. -

    -
  • -
-
-
-
-

- 2.3.2. Главы 5–6 -

-
-
    -
  • -

    - Раздел /mnt/lfs должен быть смонтирован. -

    -
  • -
  • -

    - Эти две главы должны быть выполнены из-под - пользователя lfs. Перед - выполнением любой задачи в этих главах необходимо - выполнить команду su - - lfs. В противном случае вы рискуете - установить пакеты на хост и сделать его непригодным для - использования. -

    -
  • -
  • -

    - Выполнение процедур из Общие инструкции по - компиляции имеет решающее значение. Если есть - какие-либо сомнения по поводу установки пакета, - убедитесь, что все ранее распакованные tar-архивы - удалены, затем повторно извлеките файлы и выполните все - инструкции, приведенные в этом разделе. -

    -
  • -
-
-
-
-

- 2.3.3. Главы 7–10 -

-
-
    -
  • -

    - Раздел /mnt/lfs должен быть смонтирован. -

    -
  • -
  • -

    - Некоторые операции, такие как «Смена - владельца» или «Вход в среду - Chroot», должны быть выполнены от имени - пользователя root с - переменной окружения $LFS, установленной для - пользователя root. -

    -
  • -
  • -

    - При входе в chroot переменная среды LFS должна быть - установлена для пользователя root. Переменная LFS не - используется после входа в среду chroot. -

    -
  • -
  • -

    - Виртуальные файловые системы должны быть смонтированы. - Это можно сделать до или после входа в chroot, - переключившись на виртуальный терминал хоста и от имени - пользователя root - выполнив команды, описанные в Раздел 7.3.1, - «Монтирование и заполнение /dev» и Раздел 7.3.2, - «Монтирование виртуальных файловых систем ядра». -

    -
  • -
-
-
-
-
-
-
-
-

- 2.4. - Создание нового раздела -

-
-
-
-

- Как и большинство других операционных систем, LFS обычно - устанавливается на выделенный раздел. Рекомендуемый подход к - построению системы LFS состоит в том, чтобы использовать - доступный пустой раздел или, если у вас достаточно - неразмеченного пространства, использовать его -

-

- Минимальная система требует раздел размером около 10 гигабайт - (ГБ). Этого достаточно для хранения всех архивов с исходным - кодом и компиляции пакетов. Однако, если система LFS - предназначена для использования в качестве основной системы - Linux, вероятно, будет установлено дополнительное программное - обеспечение, для которого потребуется дополнительное - пространство. Раздел размером 30 ГБ является разумным размером - для расширения. Сама система LFS не займет столько места. - Большая часть этого требования заключается в предоставлении - достаточного временного хранилища, а также в добавлении - дополнительных возможностей после сборки LFS. Кроме того, для - компиляции пакетов может потребоваться много места на диске, - которое будет освобождено после установки пакета. -

-

- Поскольку для компиляции не всегда достаточно оперативной - памяти (ОЗУ), рекомендуется использовать небольшой раздел диска - в качестве раздела подкачки. Он - используется ядром для хранения редко используемых данных и - оставляет больше памяти для активных процессов. Раздел подкачки для системы LFS может - совпадать с разделом, используемым хост-системой, и в этом - случае нет необходимости создавать еще один. -

-

- Запустите программу создания разделов диска, такую как - cfdisk или - fdisk, с - параметром командной строки, указав имя жесткого диска, на - котором будет создан новый раздел, например, /dev/sda для основного диска. Создайте раздел - Linux и раздел подкачки, если - это необходимо. Пожалуйста, обратитесь к справке по - cfdisk(8) или fdisk(8), если вы еще не знаете, как - пользоваться этими программами. -

-
-

- Примечание -

-

- Для опытных пользователей возможны и другие схемы разбиения. - Система LFS может располагаться на программном - RAID-массиве или логическом томе - LVM. Однако для некоторых опций требуется - initramfs, что является сложной темой. Эти методы - разбиения не рекомендуются начинающим пользователям LFS. -

-
-

- Запомните обозначение созданного раздела (например, - sda5). В этой книге он будет - называться разделом LFS. Также запомните обозначение - раздела подкачки. Эти имена - понадобятся позже для файла /etc/fstab. -

-
-

- 2.4.1. Другие вопросы по созданию разделов -

-

- Рекомендации по созданию разделов системы часто публикуются в - списках рассылки LFS. Это очень субъективная тема. По - умолчанию для большинства дистрибутивов используется весь - диск, за исключением небольшого раздела подкачки. Это не - оптимально для LFS по нескольким причинам. Это снижает - гибкость, затрудняет совместное использование данных между - несколькими дистрибутивами или сборками LFS, делает резервное - копирование более трудоемким и может тратить дисковое - пространство из-за неэффективно распределенной файловой - системы. -

-
-
-
-
-

- 2.4.1.1. Корневой раздел -

-
-
-
-

- Корневой раздел LFS (не путать с каталогом /root) размером в 20 гигабайт является - хорошим компромиссом для большинства систем. Он - обеспечивает достаточно места для построения LFS и большей - части BLFS, но достаточно мал, чтобы можно было легко - создать несколько разделов для экспериментов. -

-
-
-
-
-
-

- 2.4.1.2. Раздел подкачки -

-
-
-
-

- Большинство дистрибутивов автоматически создают раздел - подкачки. Обычно рекомендуемый размер раздела подкачки - примерно в два раза превышает объем физической памяти, - однако это требуется редко. Если дисковое пространство - ограничено, установите размер раздела подкачки в два - гигабайта и контролируйте его объемом. -

-

- Если вы хотите использовать режим гибернации - (suspend-to-disk) Linux, которая записывает содержимое ОЗУ - в раздел подкачки перед выключением машины. Установите - размер раздела подкачки не меньше объема установленной - оперативной памяти. -

-

- Использование файла подкачки - это не очень хорошо. Для - механических жестких дисков вы можете определить, что - система использует раздел подкачки, просто слыша активность - диска и наблюдая, как система реагирует на команды. Для - SSD-накопителя вы не сможете услышать, что используется - раздел подкачки, но сможете оценить, сколько места на - разделе подкачки занято, используя команды top или free. По возможности - следует избегать использования SSD-накопителя для раздела - подкачки. Первой реакцией на активность раздела подкачки - должна быть проверка на необоснованное применение - какой-либо команды, например, попытка редактирования - пятигигабайтного файла. Если использование раздела подкачки - становится обычным явлением, лучшее решение — приобретение - большего объема оперативной памяти для вашей системы. -

-
-
-
-
-
-

- 2.4.1.3. Раздел GRUB -

-
-
-
-

- Если загрузочный - диск размечен с помощью таблицы разделов GUID - (GPT), необходимо создать небольшой раздел, обычно размером - 1 МБ, если он еще не существует. Этот раздел не - форматируется, но должен быть доступен для использования - GRUB во время установки загрузчика. Обычно он помечен как - 'BIOS Boot' при использовании fdisk или имеет код - EF02 при - использовании gdisk. -

-
-

- Примечание -

-

- Раздел Grub Bios должен находиться на диске, который BIOS - использует для загрузки системы. Это не обязательно тот - же диск, на котором расположен корневой раздел LFS. Диски - в системе могут использовать разные типы таблиц разделов. - Наличие раздела Grub Bios зависит только от типа таблицы - разделов на загрузочном диске. -

-
-
-
-
-
-
-

- 2.4.1.4. Разделы, используемые - для удобства -

-
-
-
-

- Есть несколько других разделов, которые не являются - обязательными, но их следует учитывать при разработке схемы - диска. Следующий список не является исчерпывающим, а - представлен в качестве справочного руководства. -

-
-
    -
  • -

    - /boot – Настоятельно рекомендуется. Используйте этот - раздел для хранения ядер и другой загрузочной - информации. Чтобы свести к минимуму возможные - проблемы с загрузкой дисков большого размера, - сделайте этот раздел первым физическим разделом на - первом диске. Размер раздела в 200 мегабайт вполне - достаточен. -

    -
  • -
  • -

    - /boot/efi – Системный раздел EFI, используемый для - загрузки системы с помощью UEFI. Подробнее читайте на - - странице BLFS. -

    -
  • -
  • -

    - /home – Настоятельно рекомендуется. Предоставьте - общий доступ к своему домашнему каталогу и - пользовательским настройкам нескольким дистрибутивам - или сборкам LFS. Размер, как правило, довольно - большой и зависит от доступного места на диске. -

    -
  • -
  • -

    - /usr – в LFS, /bin, - /lib, и /sbin являются символическими - ссылками на их аналоги в /usr. Таким образом /usr содержит все двоичные файлы, - необходимые для работы системы. Для LFS отдельный - раздел /usr не - требуется. Если он вам необходим, вы должны сделать - раздел достаточно большим, чтобы поместить туда все - программы и библиотеки в системе. В этой - конфигурации, корневой раздел может быть очень - маленьким (возможно, всего один гигабайт), поэтому он - подходит для тонкого клиента или бездисковой рабочей - станции (где /usr - монтируется с удаленного сервера). Однако вы должны - знать, что для загрузки системы с отдельного раздела - /usr потребуется - initramfs (не включенный в LFS). -

    -
  • -
  • -

    - /opt – Этот каталог наиболее полезен для BLFS, в него - можно установить некоторые большие пакеты, такие как - KDE или Texlive, без использования иерархии /usr. Для - /opt достаточно размера от 5 до 10 гигабайт. -

    -
  • -
  • -

    - /tmp – Отдельный раздел /tmp используется редко, он - полезен при настройке тонкого клиента. Обычно, его - размер не должен превышать пару гигабайт. Если у вас - достаточно оперативной памяти, вы можете смонтировать - /tmp как tmpfs, чтобы - ускорить доступ к временным файлам. -

    -
  • -
  • -

    - /usr/src – Этот раздел очень удобен для хранения - исходников BLFS и совместного использования их в - сборках LFS. Его также можно использовать в качестве - места для сборки пакетов BLFS. Размера в 30-50 - гигабайт вполне достаточно. -

    -
  • -
-
-

- Любой отдельный раздел, который вы хотите автоматически - монтировать при загрузке, должен быть указан в файле - /etc/fstab. Подробности о - том, как указать разделы, будут обсуждаться в Раздел 10.2, - «Создание файла /etc/fstab». -

-
-
-
-
-
-
-
-

- 2.5. - Создание файловой системы на разделе -

-
-
-
-

- Раздел - это всего лишь диапазон секторов на диске, указанный в - таблице разделов. Прежде чем операционная система сможет - использовать раздел для хранения каких-либо файлов, он должен - быть отформатирован, чтобы содержать файловую систему, обычно - состоящую из метки, блоков каталогов, блоков данных и схемы - индексации для поиска конкретного файла по запросу. Файловая - система также помогает операционной системе отслеживать - свободное пространство на разделе, резервировать необходимые - секторы при создании нового файла или расширении существующего - и повторно использует свободные сегменты данных, полученные в - результате удаления файлов. Она также может обеспечивать - поддержку избыточности данных и восстановления после ошибок. -

-

- LFS может использовать любую файловую систему, распознаваемую - ядром Linux, но наиболее распространенными типами являются ext3 - и ext4. Выбор правильной файловой системы может быть сложным; - это зависит от характеристик файлов и размера раздела. - Например: -

-
-
-
- ext2 -
-
-

- подходит для небольших разделов, которые редко - обновляются, например /boot. -

-
-
- ext3 -
-
-

- это обновленная файловая система ext2, которая включает в - себя журнал, помогающий восстановить состояние раздела в - случае некорректного завершения работы. Обычно - используется в качестве файловой системы общего - назначения. -

-
-
- ext4 -
-
-

- является последней версией файловых систем семейства ext. - Она предоставляет несколько новых возможностей, включая - временные метки с точностью до наносекунды, создание и - использование очень больших файлов (16 ТБ) и повышение - скорости работы. -

-
-
-
-

- Другие файловые системы, включая FAT32, NTFS, ReiserFS, JFS и - XFS, полезны для конкретных задач. Более подробную информацию - об этих файловых системах и многих других можно найти по адресу - https://en.wikipedia.org/wiki/Comparison_of_file_systems. -

-

- LFS предполагает, что корневая файловая система (/) имеет тип - ext4. Чтобы создать файловую систему ext4 на разделе LFS, выполните следующую - команду: -

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

- Замените <xxx> - именем раздела LFS -

-

- Если вы используете существующий раздел подкачки, нет необходимости его - форматировать. Если был создан новый раздел подкачки, его нужно будет - инициализировать с помощью этой команды: -

-
mkswap /dev/<yyy>
-

- Замените <yyy> - именем раздела подкачки. -

-
-
-
-
-
-

- 2.6. Установка - переменной $LFS -

-
-
-
-

- В этой книге переменная окружения LFS будет использоваться несколько раз. Вы - должны убедиться, что эта переменная всегда определена в - процессе сборки LFS. Она должна быть установлена на каталог, в - котором вы будете создавать свою систему LFS — мы, для примера, - будем использовать /mnt/lfs, но - вы можете выбрать любой другой. Если вы собираете LFS на - отдельном разделе, этот каталог будет точкой монтирования для - раздела. Выберите расположение каталога и установите переменную - с помощью следующей команды: -

-
export LFS=/mnt/lfs
-

- Установка этой переменной полезна тем, что такие команды, как - mkdir -v - $LFS/tools, можно вводить буквально. Оболочка - автоматически заменит «$LFS» на «/mnt/lfs» (или любое - другое значение переменной) при обработке команды. -

-
-

- Внимание -

-

- Не забывайте проверять, что переменная LFS установлена, всякий раз, когда вы - покидаете и снова входите в текущую рабочую среду (например, - когда выполняете su для root или другого пользователя). - Убедитесь, что переменная LFS - настроена правильно: -

-
echo $LFS
-

- Убедитесь, что в выходных данных указан путь к местоположению - сборки вашей системы LFS, то есть /mnt/lfs, если вы следовали примеру. Если - вывод неверен, используйте команду, указанную ранее, чтобы - установить $LFS в правильное - значение каталога LFS. -

-
-
-

- Примечание -

-

- Один из способов гарантировать, что переменная LFS всегда установлена, — отредактировать файл - .bash_profile как в вашем - личном домашнем каталоге, так и в /root/.bash_profile и добавить приведенную - выше команду экспорта. Кроме того, оболочка, указанная в - файле /etc/passwd для всех - пользователей, которым нужна переменная LFS, должна быть bash, чтобы гарантировать, - что файл /root/.bash_profile - используется как часть процесса входа в систему. -

-

- Еще один способ, который используется для входа в - хост-систему. При входе в систему через диспетчер - графического дисплея пользовательский .bash_profile не используется при запуске - виртуального терминала. В этом случае добавьте команду - экспорта в файл .bashrc для - своего пользователя и root. - Кроме того, некоторые дистрибутивы используют тест "if" и не - запускают оставшиеся инструкции .bashrc для не интерактивного вызова bash. - Обязательно разместите команду экспорта перед тестом для не - интерактивного использования. -

-
-
-
-
-
-
-

- 2.7. Монтирование - нового раздела -

-
-
-
-

- Теперь, когда файловая система создана, раздел должен быть - смонтирован, чтобы хост-система могла получить доступ к нему. В - книге предполагается, что файловая система монтируется в - каталог, указанный в переменной LFS, - описанной в предыдущем разделе. -

-

- Строго говоря, нельзя «смонтировать раздел». Монтируется - файловая система на этом - разделе. Но так как один раздел не может содержать несколько - файловых систем, люди часто говорят о разделе и связанной с ним - файловой системе так, как если бы они были одним и тем же. -

-

- Создайте точку монтирования и смонтируйте файловую систему LFS - с помощью этих команд: -

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

- Замените <xxx> - на имя раздела LFS. -

-

- Если вы используете несколько разделов для LFS (например, один - для /, а другой для /home), смонтируйте их вот так: -

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

- Замените <xxx> - и <yyy> - соответствующими именами разделов. -

-

- Убедитесь, что этот новый раздел не смонтирован со слишком - строгими разрешениями (такими как параметры nosuid или nodev). - Запустите команду mount без каких-либо - параметров, чтобы увидеть, какие параметры установлены для - смонтированного раздела LFS. Если установлены nosuid и/или nodev, - раздел должен быть размонтирован и смонтирован повторно. -

-
-

- Предупреждение -

-

- Приведенные выше инструкции предполагают, что вы не будете - перезагружать компьютер в процессе сборки LFS. Если вы - выключите свою систему, вам придется либо перемонтировать - раздел LFS каждый раз, когда вы перезапускаете процесс - сборки, либо изменить файл /etc/fstab вашей хост-системы, чтобы он - автоматически монтировал его при загрузке. Например, вы - можете добавить эту строку в свой /etc/fstab: -

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

- Если вы используете дополнительные разделы, обязательно - добавьте их. -

-
-

- Если вы используете раздел - подкачки, убедитесь, что он включен с помощью команды - swapon: -

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

- Замените <zzz> - именем раздела подкачки. -

-

- Теперь, когда новый раздел LFS готов к работе, пришло время - загрузить пакеты. -

-
-
-
-
-
-
-

- Глава 3. Пакеты и - патчи -

-
-
-
-
-
-
-
-

- 3.1. Введение -

-
-
-
-

- Эта глава содержит список пакетов, которые необходимо загрузить - для сборки базовой системы Linux. Перечисленные версии - программного обеспечения, соответствуют версиям, которые, - проверены и работают, книга основана на их использовании. Мы - настоятельно рекомендуем не использовать другие версии пакетов, - потому что команды сборки для одной версии могут не работать с - другой, если только другая версия не указана в сообщениях об - ошибках LFS или рекомендациях по безопасности. В новейших - версиях пакетов также могут быть проблемы, требующие обходных - путей. Эти обходные пути будут стабилизированы в - разрабатываемой версии книги. -

-

- Для некоторых пакетов архив релиза и архив снимка репозитория - (Git или SVN) для этого выпуска могут быть опубликованы с - одинаковыми именами файлов. Релиз содержит сгенерированные - файлы (например, скрипт configure, сгенерированный - пакетом autoconf) - в дополнение к содержимому соответствующего моментального - снимка репозитория. В книге везде, где это возможно, - используются релизные архивы. Использование моментального - снимка вместо tar-архива, указанного в книге, может вызвать - проблемы. -

-

- Источники загрузки могут быть недоступны. Если источник - изменился с момента публикации этой книги, Google (https://www.google.com/) - предоставляет удобную поисковую систему для поиска большинства - пакетов. Если поиск не увенчался успехом, попробуйте один из - альтернативных способов загрузки, расположенных по адресу - https://mirror.linuxfromscratch.ru/lfs/mirrors.html#files. -

-

- Загруженные пакеты и патчи необходимо где-нибудь хранить, чтобы - они были доступны на протяжении всей сборки. Рабочий каталог - также необходим для распаковки исходников и их сборки. - $LFS/sources можно использовать и - как место для хранения архивов и патчей, и как рабочий каталог. - При использовании этого каталога необходимые элементы будут - расположены в разделе LFS и будут доступны на всех этапах - процесса сборки. -

-

- Чтобы создать этот каталог, выполните следующую команду от - имени пользователя root перед - началом загрузки: -

-
mkdir -v $LFS/sources
-

- Сделайте этот каталог доступным для записи и установите липкий - бит. «Липкий - бит» означает, что даже если несколько - пользователей имеют право на запись в каталог, только владелец - файла может удалить файл в таком каталоге. Следующая команда - активирует режимы записи и липкий бит: -

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

- Есть несколько способов получить все необходимые пакеты и патчи - для сборки LFS: -

-
-
    -
  • -

    - Файлы можно загрузить по отдельности, как описано в - следующих двух разделах. -

    -
  • -
  • -

    - Для стабильных версий книги архив со всеми необходимыми - файлами можно загрузить с одного из зеркал LFS, - перечисленных на странице https://mirror.linuxfromscratch.ru/mirrors.html#files. -

    -
  • -
  • -

    - Файлы можно загрузить с помощью wget и wget-list. -

    -
  • -
-
-

- Чтобы загрузить все пакеты и патчи, используя wget-list-sysv в качестве входных - данных для команды wget, наберите команду: -

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

- Начиная с LFS-7.0, существует отдельный файл md5sums, который можно использовать для - проверки всех пакетов. Поместите этот файл в $LFS/sources и выполните: -

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

- Эту проверку можно использовать после загрузки файлов любым из - перечисленных выше способов. -

-

- Если пакеты и исправления загружаются от имени пользователя, - без привилегий root, то файлы - будут принадлежать этому пользователю. Файловая система - записывает владельца по его UID, а UID обычного пользователя в - хост-дистрибутиве не будет присвоен в LFS. Таким образом, файлы - останутся принадлежащими безымянному UID в конечной системе - LFS. Если вы не назначили тот же UID для своего пользователя в - системе LFS, измените владельца этих файлов на root сейчас, чтобы избежать этой проблемы: -

-
chown root:root $LFS/sources/*
-
-
-
-
-
-

- 3.2. Все пакеты -

-
-
-
-
-

- Примечание -

-

- Ознакомьтесь с рекомендациями - по безопасности перед загрузкой пакетов, чтобы узнать, - следует ли использовать более новую версию пакета, чтобы - избежать проблем безопасности. -

-

- При выходе новых версий, старые версии пакетов могут быть - удалены, особенно, если они содержали уязвимости. Если одна - или несколько ссылок ниже недоступны, сначала ознакомьтесь с - рекомендациями по безопасности, чтобы понять следует ли - использовать более новую версию (с исправленной уязвимостью). - Если нет, попробуйте скачать удаленный пакет с зеркала. Хотя - старый релиз можно скачать с зеркала (даже если он был удален - из-за уязвимости), для сборки системы не рекомендуется - использовать версию, которая уязвима. -

-
-

- Загрузите или иным образом получите следующие пакеты: -

-
-
-
-
- Acl (2.3.1) - 348 - KB: -
-
-

- Домашняя страница: https://savannah.nongnu.org/projects/acl -

-

- Ссылка на загрузку: - https://download.savannah.gnu.org/releases/acl/acl-2.3.1.tar.xz -

-

- Контрольная сумма MD5: 95ce715fe09acca7c12d3306d0f076b2 -

-
-
- Attr (2.5.1) - 456 - KB: -
-
-

- Домашняя страница: https://savannah.nongnu.org/projects/attr -

-

- Ссылка на загрузку: - https://download.savannah.gnu.org/releases/attr/attr-2.5.1.tar.gz -

-

- Контрольная сумма MD5: ac1c5a7a084f0f83b8cace34211f64d8 -

-
-
- Autoconf (2.71) - 1,263 KB: -
-
-

- Домашняя страница: https://www.gnu.org/software/autoconf/ -

-

- Ссылка на загрузку: - https://ftp.gnu.org/gnu/autoconf/autoconf-2.71.tar.xz -

-

- Контрольная сумма MD5: 12cfa1687ffa2606337efe1a64416106 -

-
-
- Automake (1.16.5) - 1,565 KB: -
-
-

- Домашняя страница: https://www.gnu.org/software/automake/ -

-

- Ссылка на загрузку: - https://ftp.gnu.org/gnu/automake/automake-1.16.5.tar.xz -

-

- Контрольная сумма MD5: 4017e96f89fca45ca946f1c5db6be714 -

-
-
- Bash (5.2.15) - 10,695 KB: -
-
-

- Домашняя страница: https://www.gnu.org/software/bash/ -

-

- Ссылка на загрузку: https://ftp.gnu.org/gnu/bash/bash-5.2.15.tar.gz -

-

- Контрольная сумма MD5: 4281bb43497f3905a308430a8d6a30a5 -

-
-
- Bc (6.6.0) - 455 - KB: -
-
-

- Домашняя страница: https://git.gavinhoward.com/gavin/bc -

-

- Ссылка на загрузку: - https://github.com/gavinhoward/bc/releases/download/6.6.0/bc-6.6.0.tar.xz -

-

- Контрольная сумма MD5: a148cbaaf8ff813b7289a00539e74a5f -

-
-
- Binutils (2.41) - 26,139 KB: -
-
-

- Домашняя страница: https://www.gnu.org/software/binutils/ -

-

- Ссылка на загрузку: - https://sourceware.org/pub/binutils/releases/binutils-2.41.tar.xz -

-

- Контрольная сумма MD5: 256d7e0ad998e423030c84483a7c1e30 -

-
-
- Bison (3.8.2) - 2,752 KB: -
-
-

- Домашняя страница: https://www.gnu.org/software/bison/ -

-

- Ссылка на загрузку: https://ftp.gnu.org/gnu/bison/bison-3.8.2.tar.xz -

-

- Контрольная сумма MD5: c28f119f405a2304ff0a7ccdcc629713 -

-
-
- Bzip2 (1.0.8) - 792 KB: -
-
-

- Ссылка на загрузку: - https://www.sourceware.org/pub/bzip2/bzip2-1.0.8.tar.gz -

-

- Контрольная сумма MD5: 67e051268d0c475ea773822f7500d0e5 -

-
-
- Check (0.15.2) - 760 KB: -
-
-

- Домашняя страница: https://libcheck.github.io/check -

-

- Ссылка на загрузку: - https://github.com/libcheck/check/releases/download/0.15.2/check-0.15.2.tar.gz -

-

- Контрольная сумма MD5: 50fcafcecde5a380415b12e9c574e0b2 -

-
-
- Coreutils (9.3) - 5,673 KB: -
-
-

- Домашняя страница: https://www.gnu.org/software/coreutils/ -

-

- Ссылка на загрузку: - https://ftp.gnu.org/gnu/coreutils/coreutils-9.3.tar.xz -

-

- Контрольная сумма MD5: 040b4b7acaf89499834bfc79609af29f -

-
-
- DejaGNU (1.6.3) - 608 KB: -
-
-

- Домашняя страница: https://www.gnu.org/software/dejagnu/ -

-

- Ссылка на загрузку: https://ftp.gnu.org/gnu/dejagnu/dejagnu-1.6.3.tar.gz -

-

- Контрольная сумма MD5: 68c5208c58236eba447d7d6d1326b821 -

-
-
- Diffutils (3.10) - 1,587 KB: -
-
-

- Домашняя страница: https://www.gnu.org/software/diffutils/ -

-

- Ссылка на загрузку: - https://ftp.gnu.org/gnu/diffutils/diffutils-3.10.tar.xz -

-

- Контрольная сумма MD5: 2745c50f6f4e395e7b7d52f902d075bf -

-
-
- E2fsprogs (1.47.0) - 9,412 KB: -
-
-

- Домашняя страница: http://e2fsprogs.sourceforge.net/ -

-

- Ссылка на загрузку: - https://downloads.sourceforge.net/project/e2fsprogs/e2fsprogs/v1.47.0/e2fsprogs-1.47.0.tar.gz -

-

- Контрольная сумма MD5: 6b4f18a33873623041857b4963641ee9 -

-
-
- Elfutils (0.189) - 8,936 KB: -
-
-

- Домашняя страница: https://sourceware.org/elfutils/ -

-

- Ссылка на загрузку: - https://sourceware.org/ftp/elfutils/0.189/elfutils-0.189.tar.bz2 -

-

- Контрольная сумма MD5: 5cfaa711a90cb670406cd495aeaa6030 -

-
-
- Expat (2.5.0) - 450 KB: -
-
-

- Домашняя страница: https://libexpat.github.io/ -

-

- Ссылка на загрузку: - https://prdownloads.sourceforge.net/expat/expat-2.5.0.tar.xz -

-

- Контрольная сумма MD5: ac6677b6d1b95d209ab697ce8b688704 -

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

- Домашняя страница: https://core.tcl.tk/expect/ -

-

- Ссылка на загрузку: - https://prdownloads.sourceforge.net/expect/expect5.45.4.tar.gz -

-

- Контрольная сумма MD5: 00fce8de158422f5ccd2666512329bd2 -

-
-
- File (5.45) - 1,218 KB: -
-
-

- Домашняя страница: https://www.darwinsys.com/file/ -

-

- Ссылка на загрузку: https://astron.com/pub/file/file-5.45.tar.gz -

-

- Контрольная сумма MD5: 26b2a96d4e3a8938827a1e572afd527a -

-
-
- Findutils (4.9.0) - 1,999 KB: -
-
-

- Домашняя страница: https://www.gnu.org/software/findutils/ -

-

- Ссылка на загрузку: - https://ftp.gnu.org/gnu/findutils/findutils-4.9.0.tar.xz -

-

- Контрольная сумма MD5: 4a4a547e888a944b2f3af31d789a1137 -

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

- Домашняя страница: https://github.com/westes/flex -

-

- Ссылка на загрузку: - https://github.com/westes/flex/releases/download/v2.6.4/flex-2.6.4.tar.gz -

-

- Контрольная сумма MD5: 2882e3179748cc9f9c23ec593d6adc8d -

-
-
- Flit-core (3.9.0) - 41 KB: -
-
-

- Домашняя страница: https://pypi.org/project/flit-core/ -

-

- Ссылка на загрузку: - https://pypi.org/packages/source/f/flit-core/flit_core-3.9.0.tar.gz -

-

- Контрольная сумма MD5: 3bc52f1952b9a78361114147da63c35b -

-
-
- Gawk (5.2.2) - 3,324 KB: -
-
-

- Домашняя страница: https://www.gnu.org/software/gawk/ -

-

- Ссылка на загрузку: https://ftp.gnu.org/gnu/gawk/gawk-5.2.2.tar.xz -

-

- Контрольная сумма MD5: d63b4de2c722cbd9b8cc8e6f14d78a1e -

-
-
- GCC (13.2.0) - 85,800 KB: -
-
-

- Домашняя страница: https://gcc.gnu.org/ -

-

- Ссылка на загрузку: - https://ftp.gnu.org/gnu/gcc/gcc-13.2.0/gcc-13.2.0.tar.xz -

-

- Контрольная сумма MD5: e0e48554cc6e4f261d55ddee9ab69075 -

-

- Контрольная сумма SHA256: -

-
-
- GDBM (1.23) - 1,092 KB: -
-
-

- Домашняя страница: https://www.gnu.org/software/gdbm/ -

-

- Ссылка на загрузку: https://ftp.gnu.org/gnu/gdbm/gdbm-1.23.tar.gz -

-

- Контрольная сумма MD5: 8551961e36bf8c70b7500d255d3658ec -

-
-
- Gettext (0.22) - 9,775 KB: -
-
-

- Домашняя страница: https://www.gnu.org/software/gettext/ -

-

- Ссылка на загрузку: https://ftp.gnu.org/gnu/gettext/gettext-0.22.tar.xz -

-

- Контрольная сумма MD5: db2f3daf34fd5b85ab1a56f9033e42d1 -

-
-
- Glibc (2.38) - 18,471 KB: -
-
-

- Домашняя страница: https://www.gnu.org/software/libc/ -

-

- Ссылка на загрузку: https://ftp.gnu.org/gnu/glibc/glibc-2.38.tar.xz -

-

- Контрольная сумма MD5: 778cce0ea6bf7f84ca8caacf4a01f45b -

-
-

- Примечание -

-

- Разработчики Glibc поддерживают - Git ветку содержащую исправления, которые - заслуживают внимания для Glibc-2.38 но, к сожалению, - выпущенные после релиза Glibc-2.38. Редакторы LFS - публикуют рекомендации по безопасности, если в ветку - добавлено какое-либо исправление безопасности, но для - других недавно добавленных патчей не будет - предпринято никаких действий. Вы можете - самостоятельно просмотреть патчи и включить некоторые - из них, если посчитаете их важными. -

-
-
-
- GMP (6.3.0) - 2,046 KB: -
-
-

- Домашняя страница: https://www.gnu.org/software/gmp/ -

-

- Ссылка на загрузку: https://ftp.gnu.org/gnu/gmp/gmp-6.3.0.tar.xz -

-

- Контрольная сумма MD5: 956dc04e864001a9c22429f761f2c283 -

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

- Домашняя страница: https://www.gnu.org/software/gperf/ -

-

- Ссылка на загрузку: https://ftp.gnu.org/gnu/gperf/gperf-3.1.tar.gz -

-

- Контрольная сумма MD5: 9e251c0a618ad0824b51117d5d9db87e -

-
-
- Grep (3.11) - 1,664 KB: -
-
-

- Домашняя страница: https://www.gnu.org/software/grep/ -

-

- Ссылка на загрузку: https://ftp.gnu.org/gnu/grep/grep-3.11.tar.xz -

-

- Контрольная сумма MD5: 7c9bbd74492131245f7cdb291fa142c0 -

-
-
- Groff (1.23.0) - 7,259 KB: -
-
-

- Домашняя страница: https://www.gnu.org/software/groff/ -

-

- Ссылка на загрузку: https://ftp.gnu.org/gnu/groff/groff-1.23.0.tar.gz -

-

- Контрольная сумма MD5: 5e4f40315a22bb8a158748e7d5094c7d -

-
-
- GRUB (2.06) - 6,428 KB: -
-
-

- Домашняя страница: https://www.gnu.org/software/grub/ -

-

- Ссылка на загрузку: https://ftp.gnu.org/gnu/grub/grub-2.06.tar.xz -

-

- Контрольная сумма MD5: cf0fd928b1e5479c8108ee52cb114363 -

-
-
- Gzip (1.12) - 807 - KB: -
-
-

- Домашняя страница: https://www.gnu.org/software/gzip/ -

-

- Ссылка на загрузку: https://ftp.gnu.org/gnu/gzip/gzip-1.12.tar.xz -

-

- Контрольная сумма MD5: 9608e4ac5f061b2a6479dc44e917a5db -

-
-
- Iana-Etc (20230810) - 588 KB: -
-
-

- Домашняя страница: https://www.iana.org/protocols -

-

- Ссылка на загрузку: - https://github.com/Mic92/iana-etc/releases/download/20230810/iana-etc-20230810.tar.gz -

-

- Контрольная сумма MD5: 0502bd41cc0bf1c1c3cd8651058b9650 -

-
-
- Inetutils (2.4) - 1,522 KB: -
-
-

- Домашняя страница: https://www.gnu.org/software/inetutils/ -

-

- Ссылка на загрузку: - https://ftp.gnu.org/gnu/inetutils/inetutils-2.4.tar.xz -

-

- Контрольная сумма MD5: 319d65bb5a6f1847c4810651f3b4ba74 -

-

- Контрольная сумма SHA256: -

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

- Домашняя страница: https://freedesktop.org/wiki/Software/intltool -

-

- Ссылка на загрузку: - https://launchpad.net/intltool/trunk/0.51.0/+download/intltool-0.51.0.tar.gz -

-

- Контрольная сумма MD5: 12e517cac2b57a0121cda351570f1e63 -

-
-
- IPRoute2 (6.4.0) - 904 KB: -
-
-

- Домашняя страница: https://www.kernel.org/pub/linux/utils/net/iproute2/ -

-

- Ссылка на загрузку: - https://www.kernel.org/pub/linux/utils/net/iproute2/iproute2-6.4.0.tar.xz -

-

- Контрольная сумма MD5: 90ce0eb84a8f1e2b14ffa77e8eb3f5ed -

-
-
- Jinja2 (3.1.2) - 262 KB: -
-
-

- Домашняя страница: https://jinja.palletsprojects.com/en/3.0.x/ -

-

- Ссылка на загрузку: - https://pypi.org/packages/source/J/Jinja2/Jinja2-3.1.2.tar.gz -

-

- Контрольная сумма MD5: d31148abd89c1df1cdb077a55db27d02 -

-
-
- Kbd (2.6.1) - 1,554 KB: -
-
-

- Домашняя страница: https://kbd-project.org/ -

-

- Ссылка на загрузку: - https://www.kernel.org/pub/linux/utils/kbd/kbd-2.6.1.tar.xz -

-

- Контрольная сумма MD5: 986241b5d94c6bd4ed2f6d2a5ab4320b -

-
-
- Kmod (30) - 555 - KB: -
-
-

- Ссылка на загрузку: - https://www.kernel.org/pub/linux/utils/kernel/kmod/kmod-30.tar.xz -

-

- Контрольная сумма MD5: 85202f0740a75eb52f2163c776f9b564 -

-
-
- Less (643) - 579 - KB: -
-
-

- Домашняя страница: https://www.greenwoodsoftware.com/less/ -

-

- Ссылка на загрузку: - https://www.greenwoodsoftware.com/less/less-643.tar.gz -

-

- Контрольная сумма MD5: cf05e2546a3729492b944b4874dd43dd -

-
-
- LFS-Bootscripts (20230728) - - 33 KB: -
-
-

- Ссылка на загрузку: - https://mirror.linuxfromscratch.ru/lfs/downloads/12.0/lfs-bootscripts-20230728.tar.xz -

-

- Контрольная сумма MD5: 740e56f1f2448766b672c53ae3abb5c2 -

-
-
- Libcap (2.69) - 185 KB: -
-
-

- Домашняя страница: https://sites.google.com/site/fullycapable/ -

-

- Ссылка на загрузку: - https://www.kernel.org/pub/linux/libs/security/linux-privs/libcap2/libcap-2.69.tar.xz -

-

- Контрольная сумма MD5: 4667bacb837f9ac4adb4a1a0266f4b65 -

-
-
- Libffi (3.4.4) - 1,331 KB: -
-
-

- Домашняя страница: https://sourceware.org/libffi/ -

-

- Ссылка на загрузку: - https://github.com/libffi/libffi/releases/download/v3.4.4/libffi-3.4.4.tar.gz -

-

- Контрольная сумма MD5: 0da1a5ed7786ac12dcbaf0d499d8a049 -

-
-
- Libpipeline (1.5.7) - 956 KB: -
-
-

- Домашняя страница: https://libpipeline.nongnu.org/ -

-

- Ссылка на загрузку: - https://download.savannah.gnu.org/releases/libpipeline/libpipeline-1.5.7.tar.gz -

-

- Контрольная сумма MD5: 1a48b5771b9f6c790fb4efdb1ac71342 -

-
-
- Libtool (2.4.7) - 996 KB: -
-
-

- Домашняя страница: https://www.gnu.org/software/libtool/ -

-

- Ссылка на загрузку: https://ftp.gnu.org/gnu/libtool/libtool-2.4.7.tar.xz -

-

- Контрольная сумма MD5: 2fc0b6ddcd66a89ed6e45db28fa44232 -

-
-
- Libxcrypt (4.4.36) - 610 KB: -
-
-

- Домашняя страница: https://github.com/besser82/libxcrypt/ -

-

- Ссылка на загрузку: - https://github.com/besser82/libxcrypt/releases/download/v4.4.36/libxcrypt-4.4.36.tar.xz -

-

- Контрольная сумма MD5: b84cd4104e08c975063ec6c4d0372446 -

-
-
- Linux (6.4.12) - 134,616 KB: -
-
-

- Домашняя страница: https://www.kernel.org/ -

-

- Ссылка на загрузку: - https://www.kernel.org/pub/linux/kernel/v6.x/linux-6.4.12.tar.xz -

-

- Контрольная сумма MD5: 24570ba0ef9dd592bd640a1a41686fac -

-
-

- Примечание -

-

- Ядро Linux обновляется достаточно часто из-за - обнаружения уязвимостей в системе безопасности. Можно - использовать последнюю стабильную версию ядра, если - на странице с ошибками и рекомендациями по - безопасности не указано иное. -

-

- Для пользователей, у которых ограниченный или - тарифицируемый выход в интернет, и которые хотят - обновить ядро Linux, можно скачать базовую версию - ядра, а затем применить к ней патчи, которые могут - быть загружены отдельно. Это может сэкономить немного - времени или стоимость при обновлению до следующих - версий. -

-
-
-
- M4 (1.4.19) - 1,617 KB: -
-
-

- Домашняя страница: https://www.gnu.org/software/m4/ -

-

- Ссылка на загрузку: https://ftp.gnu.org/gnu/m4/m4-1.4.19.tar.xz -

-

- Контрольная сумма MD5: 0d90823e1426f1da2fd872df0311298d -

-
-
- Make (4.4.1) - 2,300 KB: -
-
-

- Домашняя страница: https://www.gnu.org/software/make/ -

-

- Ссылка на загрузку: https://ftp.gnu.org/gnu/make/make-4.4.1.tar.gz -

-

- Контрольная сумма MD5: c8469a3713cbbe04d955d4ae4be23eeb -

-
-
- Man-DB (2.11.2) - 1,908 KB: -
-
-

- Домашняя страница: https://www.nongnu.org/man-db/ -

-

- Ссылка на загрузку: - https://download.savannah.gnu.org/releases/man-db/man-db-2.11.2.tar.xz -

-

- Контрольная сумма MD5: a7d59fb2df6158c44f8f7009dcc6d875 -

-
-
- Man-pages (6.05.01) - 2,144 KB: -
-
-

- Домашняя страница: https://www.kernel.org/doc/man-pages/ -

-

- Ссылка на загрузку: - https://www.kernel.org/pub/linux/docs/man-pages/man-pages-6.05.01.tar.xz -

-

- Контрольная сумма MD5: de4563b797cf9b1e0b0d73628b35e442 -

-
-
- MarkupSafe (2.1.3) - 19 KB: -
-
-

- Домашняя страница: https://palletsprojects.com/p/markupsafe/ -

-

- Ссылка на загрузку: - https://pypi.org/packages/source/M/MarkupSafe/MarkupSafe-2.1.3.tar.gz -

-

- Контрольная сумма MD5: ca33f119bd0551ce15837f58bb180214 -

-
-
- Meson (1.2.1) - 2,131 KB: -
-
-

- Домашняя страница: https://mesonbuild.com -

-

- Ссылка на загрузку: - https://github.com/mesonbuild/meson/releases/download/1.2.1/meson-1.2.1.tar.gz -

-

- Контрольная сумма MD5: e3cc846536189aacd7d01858a45ca9af -

-
-
- MPC (1.3.1) - 756 - KB: -
-
-

- Домашняя страница: https://www.multiprecision.org/ -

-

- Ссылка на загрузку: https://ftp.gnu.org/gnu/mpc/mpc-1.3.1.tar.gz -

-

- Контрольная сумма MD5: 5c9bc658c9fd0f940e8e3e0f09530c62 -

-
-
- MPFR (4.2.0) - 1,443 KB: -
-
-

- Домашняя страница: https://www.mpfr.org/ -

-

- Ссылка на загрузку: https://ftp.gnu.org/gnu/mpfr/mpfr-4.2.0.tar.xz -

-

- Контрольная сумма MD5: a25091f337f25830c16d2054d74b5af7 -

-
-
- Ncurses (6.4) - 3,528 KB: -
-
-

- Домашняя страница: https://www.gnu.org/software/ncurses/ -

-

- Ссылка на загрузку: - https://invisible-mirror.net/archives/ncurses/ncurses-6.4.tar.gz -

-

- Контрольная сумма MD5: 5a62487b5d4ac6b132fe2bf9f8fad29b -

-
-
- Ninja (1.11.1) - 225 KB: -
-
-

- Домашняя страница: https://ninja-build.org/ -

-

- Ссылка на загрузку: - https://github.com/ninja-build/ninja/archive/v1.11.1/ninja-1.11.1.tar.gz -

-

- Контрольная сумма MD5: 32151c08211d7ca3c1d832064f6939b0 -

-
-
- OpenSSL (3.1.2) - 15,196 KB: -
-
-

- Домашняя страница: https://www.openssl.org/ -

-

- Ссылка на загрузку: https://www.openssl.org/source/openssl-3.1.2.tar.gz -

-

- Контрольная сумма MD5: 1d7861f969505e67b8677e205afd9ff4 -

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

- Домашняя страница: https://savannah.gnu.org/projects/patch/ -

-

- Ссылка на загрузку: https://ftp.gnu.org/gnu/patch/patch-2.7.6.tar.xz -

-

- Контрольная сумма MD5: 78ad9937e4caadcba1526ef1853730d5 -

-
-
- Perl (5.38.0) - 13,248 KB: -
-
-

- Домашняя страница: https://www.perl.org/ -

-

- Ссылка на загрузку: https://www.cpan.org/src/5.0/perl-5.38.0.tar.xz -

-

- Контрольная сумма MD5: e1c8aaec897dd386c741f97eef9f2e87 -

-
-
- Pkgconf (2.0.1) - 304 KB: -
-
-

- Домашняя страница: http://pkgconf.org/ -

-

- Ссылка на загрузку: - https://distfiles.ariadne.space/pkgconf/pkgconf-2.0.1.tar.xz -

-

- Контрольная сумма MD5: efc1318f368bb592aba6ebb18d9ff254 -

-
-
- Procps (4.0.3) - 1,268 KB: -
-
-

- Домашняя страница: https://sourceforge.net/projects/procps-ng -

-

- Ссылка на загрузку: - https://sourceforge.net/projects/procps-ng/files/Production/procps-ng-4.0.3.tar.xz -

-

- Контрольная сумма MD5: 22b287bcd758831cbaf3356cd3054fe7 -

-
-
- Psmisc (23.6) - 415 KB: -
-
-

- Домашняя страница: https://gitlab.com/psmisc/psmisc -

-

- Ссылка на загрузку: - https://sourceforge.net/projects/psmisc/files/psmisc/psmisc-23.6.tar.xz -

-

- Контрольная сумма MD5: ed3206da1184ce9e82d607dc56c52633 -

-
-
- Python (3.11.4) - 19,488 KB: -
-
-

- Домашняя страница: https://www.python.org/ -

-

- Ссылка на загрузку: - https://www.python.org/ftp/python/3.11.4/Python-3.11.4.tar.xz -

-

- Контрольная сумма MD5: fb7f7eae520285788449d569e45b6718 -

-
-
- Python Documentation (3.11.4) - - 7,649 KB: -
-
-

- Ссылка на загрузку: - https://www.python.org/ftp/python/doc/3.11.4/python-3.11.4-docs-html.tar.bz2 -

-

- Контрольная сумма MD5: cdce7b1189bcf52947f3b434ab04d7e2 -

-
-
- Readline (8.2) - 2,973 KB: -
-
-

- Домашняя страница: https://tiswww.case.edu/php/chet/readline/rltop.html -

-

- Ссылка на загрузку: https://ftp.gnu.org/gnu/readline/readline-8.2.tar.gz -

-

- Контрольная сумма MD5: 4aa1b31be779e6b84f9a96cb66bc50f6 -

-
-
- Sed (4.9) - 1,365 - KB: -
-
-

- Домашняя страница: https://www.gnu.org/software/sed/ -

-

- Ссылка на загрузку: https://ftp.gnu.org/gnu/sed/sed-4.9.tar.xz -

-

- Контрольная сумма MD5: 6aac9b2dbafcd5b7a67a8a9bcb8036c3 -

-
-
- Shadow (4.13) - 1,722 KB: -
-
-

- Домашняя страница: https://shadow-maint.github.io/shadow/ -

-

- Ссылка на загрузку: - https://github.com/shadow-maint/shadow/releases/download/4.13/shadow-4.13.tar.xz -

-

- Контрольная сумма MD5: b1ab01b5462ddcf43588374d57bec123 -

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

- Домашняя страница: https://www.infodrom.org/projects/sysklogd/ -

-

- Ссылка на загрузку: - https://www.infodrom.org/projects/sysklogd/download/sysklogd-1.5.1.tar.gz -

-

- Контрольная сумма MD5: c70599ab0d037fde724f7210c2c8d7f8 -

-
-
- Systemd (254) - 13,985 KB: -
-
-

- Домашняя страница: https://www.freedesktop.org/wiki/Software/systemd/ -

-

- Ссылка на загрузку: - https://github.com/systemd/systemd/archive/v254/systemd-254.tar.gz -

-

- Контрольная сумма MD5: 0d266e5361dc72097b6c18cfde1c0001 -

-
-
- Systemd Man Pages(254) - 626 KB: -
-
-

- Домашняя страница: https://www.freedesktop.org/wiki/Software/systemd/ -

-

- Ссылка на загрузку: - https://anduin.linuxfromscratch.org/LFS/systemd-man-pages-254.tar.xz -

-

- Контрольная сумма MD5: fc32faeac581e1890ca27fcea3858410 -

-
-

- Примечание -

-

- Команда Linux From Scratch генерирует собственный - архив справочных страниц, используя исходный код - systemd. Это делается для того, чтобы избежать - ненужных зависимостей. -

-
-
-
- Sysvinit (3.07) - 258 KB: -
-
-

- Домашняя страница: https://savannah.nongnu.org/projects/sysvinit -

-

- Ссылка на загрузку: - https://github.com/slicer69/sysvinit/releases/download/3.07/sysvinit-3.07.tar.xz -

-

- Контрольная сумма MD5: 190398c660af29c97d892126d2a95e28 -

-
-
- Tar (1.35) - 2,263 - KB: -
-
-

- Домашняя страница: https://www.gnu.org/software/tar/ -

-

- Ссылка на загрузку: https://ftp.gnu.org/gnu/tar/tar-1.35.tar.xz -

-

- Контрольная сумма MD5: a2d8042658cfd8ea939e6d911eaf4152 -

-
-
- Tcl (8.6.13) - 10,581 KB: -
-
-

- Домашняя страница: http://tcl.sourceforge.net/ -

-

- Ссылка на загрузку: - https://downloads.sourceforge.net/tcl/tcl8.6.13-src.tar.gz -

-

- Контрольная сумма MD5: 0e4358aade2f5db8a8b6f2f6d9481ec2 -

-
-
- Tcl Documentation (8.6.13) - - 1,165 KB: -
-
-

- Ссылка на загрузку: - https://downloads.sourceforge.net/tcl/tcl8.6.13-html.tar.gz -

-

- Контрольная сумма MD5: 4452f2f6d557f5598cca17b786d6eb68 -

-
-
- Texinfo (7.0.3) - 4,776 KB: -
-
-

- Домашняя страница: https://www.gnu.org/software/texinfo/ -

-

- Ссылка на загрузку: https://ftp.gnu.org/gnu/texinfo/texinfo-7.0.3.tar.xz -

-

- Контрольная сумма MD5: 37bf94fd255729a14d4ea3dda119f81a -

-
-
- Time Zone Data (2023c) - 436 KB: -
-
-

- Домашняя страница: https://www.iana.org/time-zones -

-

- Ссылка на загрузку: - https://www.iana.org/time-zones/repository/releases/tzdata2023c.tar.gz -

-

- Контрольная сумма MD5: 5aa672bf129b44dd915f8232de38e49a -

-
-
- Udev-lfs Tarball (udev-lfs-20230818) - - 10 KB: -
-
-

- Ссылка на загрузку: - https://anduin.linuxfromscratch.org/LFS/udev-lfs-20230818.tar.xz -

-

- Контрольная сумма MD5: acd4360d8a5c3ef320b9db88d275dae6 -

-
-
- Util-linux (2.39.1) - 8,156 KB: -
-
-

- Домашняя страница: - https://git.kernel.org/pub/scm/utils/util-linux/util-linux.git/ -

-

- Ссылка на загрузку: - https://www.kernel.org/pub/linux/utils/util-linux/v2.39/util-linux-2.39.1.tar.xz -

-

- Контрольная сумма MD5: c542cd7c0726254e4b3006a9b428201a -

-
-
- Vim (9.0.1677) - 16,670 KB: -
-
-

- Домашняя страница: https://www.vim.org -

-

- Ссылка на загрузку: - https://anduin.linuxfromscratch.org/LFS/vim-9.0.1677.tar.gz -

-

- Контрольная сумма MD5: 65e6b09ef0628a2d8eba79f1d1d5a564 -

-
-

- Примечание -

-

- Версия vim меняется ежедневно. Чтобы получить - последнюю версию, перейдите на https://github.com/vim/vim/tags. -

-
-
-
- Wheel (0.41.1) - 96 KB: -
-
-

- Домашняя страница: https://pypi.org/project/wheel/ -

-

- Ссылка на загрузку: - https://pypi.org/packages/source/w/wheel/wheel-0.41.1.tar.gz -

-

- Контрольная сумма MD5: 181cb3f4d8ed340c904a0e1c416d341d -

-
-
- XML::Parser (2.46) - 249 KB: -
-
-

- Домашняя страница: https://github.com/chorny/XML-Parser -

-

- Ссылка на загрузку: - https://cpan.metacpan.org/authors/id/T/TO/TODDR/XML-Parser-2.46.tar.gz -

-

- Контрольная сумма MD5: 80bb18a8e6240fcf7ec2f7b57601c170 -

-
-
- Xz Utils (5.4.4) - 1,623 KB: -
-
-

- Домашняя страница: https://tukaani.org/xz -

-

- Ссылка на загрузку: https://tukaani.org/xz/xz-5.4.4.tar.xz -

-

- Контрольная сумма MD5: d83d6f64a64f88759e312b8a38c3add6 -

-
-
- Zlib (1.2.13) - 1267 KB: -
-
-

- Домашняя страница: https://www.zlib.net/ -

-

- Ссылка на загрузку: - https://anduin.linuxfromscratch.org/LFS/zlib-1.2.13.tar.xz -

-

- Контрольная сумма MD5: 7d9fc1d78ae2fa3e84fe98b77d006c63 -

-
-
- Zstd (1.5.5) - 2,314 KB: -
-
-

- Домашняя страница: https://facebook.github.io/zstd/ -

-

- Ссылка на загрузку: - https://github.com/facebook/zstd/releases/download/v1.5.5/zstd-1.5.5.tar.gz -

-

- Контрольная сумма MD5: 63251602329a106220e0a5ad26ba656f -

-
-
-
-
-

- Общий размер пакетов: примерно 493 MB -

-
-
-
-
-
-

- 3.3. Необходимые патчи -

-
-
-
-

- В дополнение к пакетам требуется несколько патчей. Эти патчи - исправляют ошибки в пакетах, которые должны быть исправлены - сопровождающим. Патчи также вносят небольшие изменения, - облегчающие работу с пакетами. Для создания системы LFS - потребуются следующие исправления: -

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

- Ссылка на загрузку: - https://mirror.linuxfromscratch.ru/patches/lfs/12.0/bzip2-1.0.8-install_docs-1.patch -

-

- Контрольная сумма MD5: 6a5ac7e89b791aae556de0f745916f7f -

-
-
- Coreutils Internationalization Fixes - Patch - 166 KB: -
-
-

- Ссылка на загрузку: - https://mirror.linuxfromscratch.ru/patches/lfs/12.0/coreutils-9.3-i18n-1.patch -

-

- Контрольная сумма MD5: 3c6340b3ddd62f4acdf8d3caa6fad6b0 -

-
-
- Glibc Memalign Patch - 20 KB: -
-
-

- Ссылка на загрузку: - https://mirror.linuxfromscratch.ru/patches/lfs/12.0/glibc-2.38-memalign_fix-1.patch -

-

- Контрольная сумма MD5: 2c3552bded42a83ad6a7087c5fbf3857 -

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

- Ссылка на загрузку: - https://mirror.linuxfromscratch.ru/patches/lfs/12.0/glibc-2.38-fhs-1.patch -

-

- Контрольная сумма MD5: 9a5997c3452909b1769918c759eff8a2 -

-
-
- GRUB Upstream Fixes Patch - - 8 KB: -
-
-

- Ссылка на загрузку: - https://mirror.linuxfromscratch.ru/patches/lfs/12.0/grub-2.06-upstream_fixes-1.patch -

-

- Контрольная сумма MD5: da388905710bb4cbfbc7bd7346ff9174 -

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

- Ссылка на загрузку: - https://mirror.linuxfromscratch.ru/patches/lfs/12.0/kbd-2.6.1-backspace-1.patch -

-

- Контрольная сумма MD5: f75cca16a38da6caa7d52151f7136895 -

-
-
- Readline Upstream Fix Patch - - 1.3 KB: -
-
-

- Ссылка на загрузку: - https://mirror.linuxfromscratch.ru/patches/lfs/12.0/readline-8.2-upstream_fix-1.patch -

-

- Контрольная сумма MD5: dd1764b84cfca6b677f44978218a75da -

-
-
- Sysvinit Consolidated Patch - - 2.5 KB: -
-
-

- Ссылка на загрузку: - https://mirror.linuxfromscratch.ru/patches/lfs/12.0/sysvinit-3.07-consolidated-1.patch -

-

- Контрольная сумма MD5: 17ffccbb8e18c39e8cedc32046f3a475 -

-
-
-
-
-

- Общий размер этих патчей: примерно 214.2 KB -

-

- Помимо указанных выше обязательных исправлений, существует ряд - необязательных патчей, созданных сообществом LFS. Эти - необязательные исправления решают незначительные проблемы или - включают функции, которые не включены по умолчанию. Не - стесняйтесь просматривать базу данных исправлений, - расположенную по адресу https://mirror.linuxfromscratch.ru/patches/downloads/, - и применять патчи, необходимые вашей системе. -

-
-
-
-
-
-
-

- Глава 4. Заключительный - этап подготовки -

-
-
-
-
-
-
-
-

- 4.1. Введение -

-
-
-
-

- В этой главе мы выполним несколько дополнительных настроек для - подготовки к сборке временной системы. Мы создадим несколько - каталогов в $LFS (в котором - установим временные инструменты), добавим непривилегированного - пользователя и настроим окружение для этого пользователя. Кроме - этого, будут даны пояснения по стандартной единице времени - сборки, или «SBU», которую мы используем для измерения - времени необходимого для сборки пакетов LFS, и предоставим - некоторую информацию о наборах тестов. -

-
-
-
-
-
-

- 4.2. Создание - ограниченной иерархии папок в файловой системе LFS -

-
-
-
-

- В этом разделе мы начинаем заполнять файловую систему LFS - элементами, которые будут основой конечной системы Linux. - Первым шагом является создание ограниченной иерархии каталогов, - чтобы программы, скомпилированные в Глава 6 - (а также glibc и libstdc++ в Глава 5), могли быть - установлены в их конечном расположении. Это необходимо для - того, чтобы эти временные программы были перезаписаны при - сборке окончательных версий в - Глава 8. -

-

- Создайте необходимую иерархию каталогов, выполнив следующую - команду от имени root: -

-
mkdir -pv $LFS/{etc,var} $LFS/usr/{bin,lib,sbin}
-
-for i in bin lib sbin; do
-  ln -sv usr/$i $LFS/$i
-done
-
-case $(uname -m) in
-  x86_64) mkdir -pv $LFS/lib64 ;;
-esac
-

- Программы в Глава 6 - будут скомпилированы с помощью кросс-компилятора (более - подробная информация приведена в разделе Технические - примечания по сборочным инструментам). Чтобы отделить - кросс-компилятор от других программ, он будет установлен в - специальный каталог. Создайте этот каталог с помощью следующей - команды: -

-
mkdir -pv $LFS/tools
-
-

- Примечание -

-

- Редакторы LFS намеренно решили не использовать каталог - /usr/lib64. В процессе сборки - предпринимается ряд шагов, чтобы убедиться, что набор - инструментов не будет его использовать. Если по какой-либо - причине этот каталог появится (это может произойти, если вы - допустили ошибку, следуя инструкциям, или потому что вы - установили бинарный пакет, создавший его после сборки LFS), - это может привести к поломке вашей системы. Вы должны быть - уверены, что этого каталога не существует. -

-
-
-
-
-
-
-

- 4.3. Создание - пользователя LFS -

-
-
-
-

- При входе в систему под учетной записью root допущение одной ошибки может привести - к повреждению или разрушению системы. Поэтому пакеты в - следующих двух главах собираются из-под учетной записи - непривилегированного пользователя. Вы можете использовать свое - собственное имя пользователя, но чтобы упростить настройку - рабочей среды, создайте нового пользователя с именем - lfs, который является членом - одноименной группы и выполняйте команды из-под этой учетной - записи в процессе установки. От имени пользователя root выполните следующие команды, чтобы - добавить нового пользователя: -

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

- Значение параметров командной строки: -

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

- Устанавливает bash оболочкой по - умолчанию для пользователя lfs. -

-
-
- -g - lfs -
-
-

- Эта опция добавляет пользователя lfs в группу lfs. -

-
-
- -m -
-
-

- Создает домашний каталог для пользователя lfs. -

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

- Этот параметр предотвращает возможное копирование файлов - из предустановленного набора каталогов (по умолчанию - /etc/skel) путем изменения - местоположения ввода на специальное null-устройство. -

-
-
- lfs -
-
-

- Это имя нового пользователя. -

-
-
-
-

- Если вы хотите войти в систему как lfs или переключиться на lfs из учетной записи непривилегированного - пользователя (в отличие от переключения на пользователя - lfs при входе в систему как - root, для которого не требуется - пароль пользователя lfs), вам - необходимо установить пароль для lfs. Выполните следующую команду от имени - пользователя root, чтобы - установить пароль: -

-
passwd lfs
-

- Предоставьте пользователю lfs - полный доступ ко всем каталогам в папке $LFS, назначив lfs владельцем: -

-
chown -v lfs $LFS/{usr{,/*},lib,var,etc,bin,sbin,tools}
-case $(uname -m) in
-  x86_64) chown -v lfs $LFS/lib64 ;;
-esac
-
-

- Примечание -

-

- В некоторых хост-системах следующая команда не выполняется - должным образом и приостанавливает вход пользователя - lfs в фоновом режиме. Если - подсказка "lfs:~$" не появляется сразу, ввод команды - fg устранит - проблему. -

-
-

- Затем запустите оболочку, работающую от имени пользователя - lfs. Это можно сделать, войдя в - систему как lfs на виртуальной - консоли или с помощью следующей команды замены/переключения - пользователя: -

-
su - lfs
-

- Аргумент «-» передает - значение команде su для запуска оболочки входа - в систему, а не обычной оболочки. Разница между этими двумя - типами оболочек подробно описана в bash(1) и info - bash. -

-
-
-
-
-
-

- 4.4. Настройка - окружения -

-
-
-
-

- Настроим хорошо работающее окружение, создав два новых файла - запуска для оболочки bash. Войдя в систему как - пользователь lfs, введите - следующую команду, чтобы создать новый .bash_profile: -

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

- При входе в систему под учетной записью пользователя - lfs или при переключении на - lfs, используя команду - su с опцией - «-», начальная - оболочка представляет собой оболочку login, которая читает данные из - /etc/profile хоста (который, - вероятно, содержит некоторые настройки и переменные среды), а - затем .bash_profile. Команда - exec env - -i.../bin/bash в файле .bash_profile заменяет запущенную оболочку - новой, не содержащей переменные среды, за исключением - переменных HOME, TERM, и PS1. Это - гарантирует, что никакие нежелательные и потенциально опасные - переменные среды из хост-системы не попадут в среду сборки. -

-

- Новый экземпляр оболочки представляет собой non-login оболочку, которая не - считывает и не выполняет содержимое файлов /etc/profile и .bash_profile, а вместо этого выполняет - чтение из файла .bashrc. Создайте - файл .bashrc: -

-
cat > ~/.bashrc << "EOF"
-set +h
-umask 022
-LFS=/mnt/lfs
-LC_ALL=POSIX
-LFS_TGT=$(uname -m)-lfs-linux-gnu
-PATH=/usr/bin
-if [ ! -L /bin ]; then PATH=/bin:$PATH; fi
-PATH=$LFS/tools/bin:$PATH
-CONFIG_SITE=$LFS/usr/share/config.site
-export LFS LC_ALL LFS_TGT PATH CONFIG_SITE
-EOF
-
-

- Значение настроек в .bashrc -

-
-
- set - +h -
-
-

- Команда set - +h отключает хэш-функцию bash. Хеширование - является полезной функцией —bash использует - хеш-таблицу для запоминания полного пути к исполняемому - файлу, чтобы избежать многократного поиска одного и того - же исполняемого файла в переменной окружения PATH. Однако новые инструменты требуется - использовать сразу же после их установки. Отключение - хэш-функции, заставляет оболочку искать переменную - окружения PATH, всякий раз, - когда программу необходимо запустить. Таким образом, - оболочка найдет вновь скомпилированные инструменты в - $LFS/tools/bin, как только - они станут доступны, не запоминая предыдущую версию той - же программы, предоставленную хост-дистрибутивом, в - /usr/bin или /bin. -

-
-
- umask - 022 -
-
-

- Установка значения пользовательской маски создания файлов - (umask) 022 гарантирует, что вновь созданные файлы и - каталоги доступны для записи только их владельцу, но - будут доступны для чтения и выполнения остальным - пользователям (при условии, что системный вызов - open(2) использует режим по - умолчанию, новые файлы получат разрешения 644, а каталоги - 755). -

-
-
- LFS=/mnt/lfs -
-
-

- Переменная окружения LFS - должна указывать на выбранную точку монтирования. -

-
-
- LC_ALL=POSIX -
-
-

- Переменная LC_ALL управляет - локализацией определенных программ, и формирует сообщения - в соответствии с локализацией указанной страны. Установка - в LC_ALL значения «POSIX» или - «C» - (они эквивалентны) гарантирует, что все будет работать - должным образом в среде кросс-компиляции. -

-
-
- LFS_TGT=$(uname - -m)-lfs-linux-gnu -
-
-

- Переменная LFS_TGT - устанавливает нестандартное, но совместимое описание - компьютера для использования при создании - кросс-компилятора и компоновщика, а также при - кросс-компиляции временного набора инструментов. - Дополнительная информация об этом представлена в - Технические - примечания по сборочным инструментам. -

-
-
- PATH=/usr/bin -
-
-

- Многие современные дистрибутивы Linux объединили - /bin и /usr/bin. В этом случае стандартной - переменной PATH необходимо - установить значение /usr/bin/ для окружения из Глава 6. - Когда это не так, следующая строка добавит /bin к пути. -

-
-
- if [ ! -L - /bin ]; then PATH=/bin:$PATH; fi -
-
-

- Если /bin не является - символической ссылкой, то его необходимо добавить в - переменную PATH. -

-
-
- PATH=$LFS/tools/bin:$PATH -
-
-

- Поместив $LFS/tools/bin - перед стандартным PATH, - кросс-компилятор, установленный в начале Глава 5, будет - обнаружен оболочкой сразу после его установки. Это, в - сочетании с отключением хеширования, ограничивает риск - использования компилятора хоста вместо кросс-компилятора. -

-
-
- CONFIG_SITE=$LFS/usr/share/config.site -
-
-

- В Глава 5 и - Глава 6, - если эта переменная не задана, сценарии configure могут - попытаться загрузить элементы конфигурации, специфичные - для некоторых дистрибутивов, из /usr/share/config.site в хост-системе. - Переопределите её, чтобы предотвратить потенциальное - влияние хоста. -

-
-
- export - ... -
-
-

- Приведенные выше команды установили некоторые переменные, - чтобы сделать их видимыми в любых вложенных оболочках, мы - экспортируем их. -

-
-
-
-
-

- Важно -

-

- Некоторые коммерческие дистрибутивы добавляют - недокументированный экземпляр /etc/bash.bashrc для инициализации - bash. Этот файл - потенциально может изменить среду пользователя lfs таким образом, что это может повлиять - на сборку важных пакетов LFS. Чтобы убедиться, что - пользовательская среда lfs - чиста, проверьте наличие файла /etc/bash.bashrc и, если он есть, - переименуйте его. От пользователя root, запустите: -

-
[ ! -e /etc/bash.bashrc ] || mv -v /etc/bash.bashrc /etc/bash.bashrc.NOUSE
-

- Когда пользователь lfs больше - не нужен (в начале - Глава 7 ) вы можете безопасно восстановить - /etc/bash.bashrc (по желанию). -

-

- Обратите внимание, что пакет LFS Bash, который мы создадим в - Раздел 8.35, «Bash-5.2.15», не - настроен на загрузку или выполнение /etc/bash.bashrc, поэтому этот файл - бесполезен в готовой системе LFS. -

-
-

- Наконец, чтобы убедиться, что среда полностью подготовлена для - сборки временных инструментов, перечитайте только что созданный - профиль пользователя: -

-
source ~/.bash_profile
-
-
-
-
-
-

- 4.5. О SBU (Стандартная - единица времени сборки) -

-
-
-
-

- Многие люди хотели бы знать заранее, сколько примерно времени - потребуется для компиляции и установки каждого пакета. - Поскольку Linux From Scratch может быть собран на различных - системах, невозможно дать точную оценку времени. Сборка самого - большого пакета (gcc) займет около 5 минут на быстрых системах, - но может занять несколько дней на более медленных компьютерах! - Вместо фактического времени в книге используется показатель - "стандартная единица времени сборки" (SBU). -

-

- Показатель SBU рассчитывается следующим образом. Первым - пакетом, который нужно скомпилировать, является binutils в - Глава 5. Время, - необходимое для компиляции этого пакета с использованием одного - ядра, будет называться стандартной единицей времени сборки или - SBU. Время компиляции остальных пакетов будет рассчитано - относительно этого времени. -

-

- Например, рассмотрим пакет, время компиляции которого - составляет 4,5 SBU. Это означает, что если вашей системе - потребовалось 10 минут для компиляции и сборки первого прохода - binutils, то для сборки этого пакета потребуется примерно 45 минут. К счастью, в - большинстве случаев, время сборки меньше, чем у binutils. -

-

- В целом, величина SBU не совсем точна, поскольку она зависит от - многих факторов, включая версию GCC хост-системы. Она приведены - здесь, чтобы дать оценку того, сколько времени может - потребоваться для сборки пакета, но в некоторых случаях цифры - могут отличаться на десятки минут. -

-
-

- Примечание -

-

- Для многих современных систем с несколькими процессорами (или - ядрами) время компиляции пакета можно сократить, выполнив - «параллельную - сборку», либо установив переменную среды, либо - сообщив программе make, сколько ядер - задействовать для сборки. Например, процессор Intel i5-6500 - может поддерживать четыре одновременных потока: -

-
export MAKEFLAGS='-j4'
-

- или просто собирать с флагом: -

-
make -j4
-

- Когда используется несколько ядер, единицы измерения SBU - будут различаться еще больше, чем обычно. В некоторых случаях - make просто завершится ошибкой. Анализ выходных данных - процесса сборки также будет более сложным, поскольку строки - разных потоков будут чередоваться. Если вы столкнулись с - проблемой на этапе сборки, вернитесь к сборке на одном ядре, - чтобы проанализировать сообщения об ошибках. -

-

- Представленные здесь значения времени основаны на замерах при - использовании четырех ядер (-j4). Время, указанное в главе 8, - также включает время выполнения регрессионных тестов для - пакета, если не указано иное. -

-
-
-
-
-
-
-

- 4.6. О наборах - тестов -

-
-
-
-

- Большинство пакетов предоставляют набор тестов. Запуск набора - тестов для только что собранного пакета — хорошая идея, потому - что он может обеспечить «проверку работоспособности», указывающую, - что все скомпилировано правильно. Набор тестов, который - проходит свой набор проверок, обычно доказывает, что пакет - работает так, как задумал разработчик. Однако это не - гарантирует, что пакет полностью без ошибок. -

-

- Некоторые наборы тестов более важны, чем другие. Например, - наборы тестов для основных инструментов — GCC, binutils и glibc - — имеют первостепенное значение из-за их центральной роли в - правильно функционирующей системе. Выполнение наборов тестов - для GCC и glibc может занять очень много времени, особенно на - медленном оборудовании, но их выполнение настоятельно - рекомендуется. -

-
-

- Примечание -

-

- Запуск наборов тестов, описанных в Глава 5 и Глава 6, - не имеет смысла, поскольку программы компилируются с помощью - кросс-компилятора, они, вероятно, не могут работать на хосте - сборки. -

-
-

- Распространенной проблемой при запуске наборов тестов для - binutils и GCC является нехватка псевдотерминалов (PTY). Это - может привести к большому количеству неудачных тестов. Причин - может быть несколько, но наиболее вероятная причина заключается - в том, что в хост-системе неправильно настроена файловая - система devpts. Этот вопрос - более подробно обсуждается на странице https://mirror.linuxfromscratch.ru/lfs/faq.html#no-ptys. -

-

- Иногда наборы тестов не работают, по причинам, о которых знают - разработчики и которые они считают некритичными. Просмотрите - журналы, расположенные по адресу https://mirror.linuxfromscratch.ru/lfs/build-logs/12.0/, - чтобы проверить, ожидаются ли сбои. Этот сайт актуален для всех - наборов тестов, описанных в книге. -

-
-
-
-
-
-
-
-

- Часть III. Сборка - кросс-компилятора и набора временных инструментов -

-
-
-
-
-
-
-
-

- Важный предварительный - материал -

-
-
-
-
-
-
-
-

- Введение -

-
-
-
-

- Эта часть разделена на три этапа: во-первых, сборка - кросс-компилятора и связанных с ним библиотек; во-вторых, - использование этого набора инструментов для сборки нескольких - утилит таким образом, чтобы изолировать их от основного - дистрибутива; в-третьих, вход в среду chroot (что ещё больше - улучшает изоляцию от хоста), и сборка оставшихся инструментов, - необходимых для создания конечной системы. -

-
-

- Важно -

-

- Именно здесь начинается настоящая работа по сборке новой - системы. Требуется очень тщательно следить за тем, чтобы - инструкции выполнялись точно так, как они приведены в книге. - Вы должны попытаться понять, что они делают, и каким бы ни - было ваше желание скорее закончить сборку, вам следует - воздержаться от слепого набора команд. Читайте документацию, - если вы что-то не понимаете. Кроме того, следите за - результатом выполнения команд, отправляя лог в файл с помощью - утилиты tee. - Это упрощает отладку, если что-то пойдет не так. -

-
-

- Следующий раздел представляет собой техническое введение в - процесс сборки, а следующий за ним, содержит очень важные общие инструкции - по компиляции. -

-
-
-
-
-
-

- Технические - примечания по сборочным инструментам -

-
-
-
-

- В этом разделе объясняются причины и некоторые технические - детали, лежащие в основе сборки пакетов. Не обязательно сразу - понимать все, что содержится в этом разделе. Большая часть этой - информации станет более понятной после выполнения фактической - сборки. Возвращайтесь и перечитывайте этот раздел в любое время - по ходу сборки. -

-

- Основная задача Глава 5 и - Глава 6 - состоит в том, чтобы создать временную область, содержащую - заведомо исправный набор инструментов, которые можно - изолировать от хост-системы. Использовании команды chroot в последующих главах, - обеспечит чистую и безотказную сборку целевой системы LFS. - Процесс сборки разработан таким образом, чтобы свести к - минимуму риски для новых читателей и в то же время обеспечить - наибольшую образовательную ценность. -

-

- Сборка инструментария основана на процессе кросс-компиляции. Кросс-компиляция - обычно используется для сборки компилятора и его инструментов - для машины, отличной от той, которая используется для сборки. - Строго говоря, это не требуется для LFS, так как машина, на - которой будет работать новая система, та же, что и используемая - для сборки. Но у кросс-компиляции есть большое преимущество, - заключающееся в том, что все, что подвергается - кросс-компиляции, не будет зависеть от окружения хоста. -

-
-

- О - кросс-компиляции -

-
-

- Примечание -

-

- Книга LFS не является руководством и не содержит общего - руководства по созданию кросс (или собственного) тулчейна. - Не используйте команды из книги для кросс-тулчейна, который - планируете использовать для каких-либо других целей, кроме - создания LFS, если у вас нет полного понимания, что вы - делаете. -

-
-

- Кросс-компиляция включает в себя некоторые концепции, которые - сами по себе заслуживают отдельного раздела. Хотя этот раздел - можно пропустить при первом чтении, возвращение к нему позже - будет полезно для полного понимания процесса. -

-

- Давайте определим некоторые термины, используемые в этом - контексте. -

-
-
-
- сборщик -
-
-

- это машина, на которой мы собираем программы. Обратите - внимание, что этот компьютер упоминается как - «хост» в других разделах. -

-
-
- хост -
-
-

- это машина/система, на которой будут выполняться - встроенные программы. Обратите внимание, что - используемое здесь значение слова «хост» - отличается от того, которое применяется в других - разделах. -

-
-
- цель -
-
-

- используется только для компиляторов. Это машина, для - которой компилятор создает код. Он может отличаться как - от «сборщика», так и от «хоста». -

-
-
-
-

- В качестве примера представим следующий сценарий (иногда - называемый «канадским - крестом»): у нас есть компилятор на медленной - машине, назовем ее машиной A и компилятор ccA. У нас также - есть быстрая машина (B), но без компилятора, и мы хотим - создать код для другой медленной машины (C). Чтобы собрать - компилятор для машины C, у нас будет три этапа: -

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- Этап - - Сборщик - - Хост - - Цель - - Действие -
- 1 - - A - - A - - B - - Сборка кросс-компилятора cc1 с использованием ccA на - машине A -
- 2 - - A - - B - - C - - Сборка кросс-компилятора cc2 с использованием cc1 на - машине A -
- 3 - - B - - C - - C - - Сборка компилятора ccC с использованием cc2 на машине - B -
-
-

- Затем все другие программы, необходимые для машины C, могут - быть скомпилированы с помощью cc2 на быстрой машине B. - Обратите внимание, что до тех пор, пока B не может запускать - программы, собранные для C, нет способа протестировать - программы, пока не будет запущена сама машина C. Например, - чтобы запустить набор тестов на ccC мы можем добавить - четвертый этап: -

-
- - - - - - - - - - - - - - - - - - - - - - - - - - -
- Этап - - Сборщик - - Хост - - Цель - - Действие -
- 4 - - C - - C - - C - - Пересобрать и протестировать ccC, используя ccC на - машине C -
-
-

- В приведенном выше примере только cc1 и cc2 являются - кросс-компиляторами, то есть они создают код для машины, - отличной от той, на которой они выполняются. Компиляторы ccA - и ccC создают код для машины, на которой они выполняются. - Такие компиляторы называются нативными компиляторами. -

-
-
-

- Реализация - кросс-компиляции для LFS -

-
-

- Примечание -

-

- Все кросс-компилируемые пакеты в этой книге используют - систему сборки на основе autoconf. Система сборки на основе - autoconf принимает типы систем вида cpu-vendor-kernel-os, - называемые системным триплетом. Поскольку поле vendor часто - не содержит значения, autoconf позволяет вам опустить его. -

-

- Проницательный читатель может задаться вопросом, почему - название «триплет» применяется к имени из - четырех компонентов. Поле kernel и поле os ранее - применялись как единый элемент: «system». Такая - форма с тремя полями все еще актуальна для некоторых - систем, например, x86_64-unknown-freebsd. Но две системы - могут использовать одно и то же ядро и все же быть слишком - разными, чтобы использовать одинаковый триплет для их - описания. Например, Android, работающий на мобильном - телефоне полностью отличается от Ubuntu, работающей на - ARM64 сервере, хотя они оба работают на одном и том же типе - процессора (ARM64) и с одним ядром (Linux). -

-

- Без слоя эмуляции вы не сможете запустить исполняемый файл - c сервера на мобильном телефоне и наоборот. Итак, поле - «system» было разделено на поля kernel - и os, чтобы однозначно их интерпретировать. В нашем примере - Android обозначается как aarch64-unknown-linux-android, а Ubuntu - aarch64-unknown-linux-gnu. -

-

- Слово «триплет» сохранилось в лексиконе. - Простой способ определить триплет вашей машины — запустить - скрипт config.guess, который - входит в исходный код многих пакетов. Распакуйте исходники - binutils и запустите скрипт: ./config.guess, обратите - внимание на вывод. Например, для 32-разрядного процессора - Intel вывод будет i686-pc-linux-gnu. В 64-битной - системе это будет x86_64-pc-linux-gnu. В - большинстве систем Linux используют еще более простую - команду gcc - -dumpmachine, которая предоставит вам - аналогичную информацию. -

-

- Вы также должны знать имя динамического компоновщика - платформы, часто называемого динамическим загрузчиком (не - путать со стандартным компоновщиком ld, который является - частью binutils). Динамический компоновщик, предоставляемый - glibc, находит и загружает общие библиотеки, необходимые - программе, подготавливает программу к запуску, а затем - запускает ее. Имя динамического компоновщика для - 32-разрядной машины Intel — ld-linux.so.2, а для 64-разрядных систем - — ld-linux-x86-64.so.2. - Надежный способ определить имя динамического компоновщика — - проверить случайный двоичный файл из хост-системы, выполнив - следующую команду: readelf - -l <имя исполняемого файла> | grep - interpreter и зафиксировать результат. - Официальный источник, охватывающий все платформы, находится - в файле shlib-versions в - корне дерева исходного кода glibc. -

-
-

- Чтобы сымитировать кросс-компиляцию в LFS, имя триплета хоста - немного подкорректировали, изменив поле "vendor" в переменной - LFS_TGT таким образом, чтобы оно - указывало "lfs". Мы также используем параметр --with-sysroot при сборке - кросс-компоновщика и кросс-компилятора, чтобы сообщить им, - где найти необходимые файлы хоста. Это гарантирует, что ни - одна из программ, входящих в Глава 6, - не сможет ссылаться на библиотеки на машине сборки. Для - корректной работы, обязательны всего два этапа, еще один - рекомендуется для тестирования: -

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- Этап - - Сборщик - - Хост - - Цель - - Действие -
- 1 - - ПК - - ПК - - LFS - - Сборка кросс-компилятора cc1 с использованием cc-pc - на ПК -
- 2 - - ПК - - LFS - - LFS - - Сборка компилятора cc-lfs с использованием cc1 на ПК -
- 3 - - LFS - - LFS - - LFS - - Пересборка и тестирование cc-lfs, используя cc-lfs в - lfs -
-
-

- В приведенной выше таблице «ПК» означает, что команды выполняются - на компьютере с использованием уже установленного - дистрибутива. «В - lfs» означает, что команды выполняются в - chroot-окружении. -

-

- Это еще не конец истории. Язык С - это не просто компилятор; - также он определяет стандартную библиотеку. В этой книге - используется библиотека GNU C под названием glibc (есть - альтернативный вариант - "musl"). Эта библиотека должна быть - скомпилирована для машины lfs, то есть с использованием - кросс-компилятора cc1. Но сам компилятор использует - внутреннюю библиотеку, реализующую сложные инструкции, - недоступные в наборе инструкций ассемблера. Эта внутренняя - библиотека называется libgcc, и для полноценной работы ее - необходимо связать с библиотекой glibc! Кроме того, - стандартная библиотека для C++ (libstdc++) также должна быть - связана с glibc. Решение этой проблемы курицы и яйца состоит - в том, чтобы сначала собрать деградированную libgcc на основе - cc1, в которой отсутствуют некоторые функциональные - возможности, такие как потоки и обработка исключений, затем - собрать glibc с использованием этого деградированного - компилятора (сама glibc не деградирована), а затем собрать - libstdc++. В этой последней библиотеке будет не хватать - некоторых функциональных возможностей libgcc. -

-

- Выводом из предыдущего абзаца является то, что cc1 не может - собрать полнофункциональную libstdc++ с деградированной - libgcc, но это единственный компилятор, доступный для сборки - библиотек C/C++ на этапе 2. Есть две причины, по которым мы - не используем сразу компилятор cc-lfs, собранный на этапе 2, - для сборки этих библиотек. -

-
-
    -
  • -

    - Вообще говоря, cc-lfs не может работать на ПК - (хост-системе). Хотя триплеты для ПК и LFS совместимы - друг с другом, исполняемый файл для lfs должен зависеть - от glibc-2.38; хост-дистрибутив может использовать либо - другую реализацию libc (например, musl), либо - предыдущий выпуск glibc (например, glibc-2.13). -

    -
  • -
  • -

    - Даже если cc-lfs может работать на ПК, его - использование на ПК сопряжено с риском привязки к - библиотекам ПК, так как cc-lfs является родным - компилятором. -

    -
  • -
-
-

- Поэтому, когда мы собираем gcc этап 2, мы даем указание - системе сборки пересобрать libgcc и libstdc++ с помощью cc1, - но мы связываем libstdc++ с новой пересобранной libgcc вместо - старой, деградированной. Это делает пересобранную библиотеку - libstdc++ полностью функциональной. -

-

- В - Глава 8 (или «этап 3») собраны все пакеты, - необходимые для системы LFS. Даже если пакет уже был - установлен в системе LFS в предыдущей главе, мы все равно - пересобираем пакет. Основная причина пересборки этих пакетов - состоит в том, чтобы сделать их стабильными: если мы - переустанавливаем пакет LFS в готовой системе LFS, содержимое - пакета должно совпадать с содержимым того же пакета при - первой установке в - Глава 8. Временные пакеты, установленные в Глава 6 - или - Глава 7 не могут удовлетворять этому требованию, - потому что некоторые из них собраны без необязательных - зависимостей и autoconf не может выполнить некоторые проверки - функций в Глава 6 - из-за кросс-компиляции, в результате чего во временных - пакетах отсутствуют дополнительные функции или используются - не оптимальные процедуры кода. Кроме того, второстепенной - причиной для пересборки пакетов является выполнение тестов. -

-
-
-

- Другие детали - процесса -

-

- Кросс-компилятор будет установлен в отдельный каталог - $LFS/tools, так как он не будет - частью конечной системы. -

-

- Сначала устанавливается Binutils, потому что во время - выполнения команды configure gcc и glibc - выполняются различные тесты функций на ассемблере и - компоновщике, чтобы определить, какие программные функции - следует включить или отключить. Это важнее, чем может - показаться на первый взгляд. Неправильно настроенный gcc или - glibc может привести к незначительной поломке сборочных - инструментов, где последствия такой поломки могут проявиться - ближе к концу сборки всего дистрибутива. Сбой тестов обычно - выявляет эту ошибку до того, как будет выполнено много - дополнительной работы. -

-

- Binutils устанавливает свой ассемблер и компоновщик в двух - местах: $LFS/tools/bin и - $LFS/tools/$LFS_TGT/bin. - Инструменты в одном месте жестко связаны с другими. Важным - аспектом компоновщика является порядок поиска в библиотеке. - Подробную информацию можно получить от ld, передав ей флаг - --verbose. Например, - $LFS_TGT-ld --verbose | grep - SEARCH покажет текущие пути поиска и их - порядок. Он показывает, какие файлы связаны с помощью - ld, путем - компиляции фиктивной программы и передачи параметра - --verbose - компоновщику. Например, $LFS_TGT-gcc dummy.c -Wl,--verbose - 2>&1 | grep succeeded покажет все - файлы, успешно открытые во время компоновки. -

-

- Следующий устанавливаемый пакет — gcc. Пример того, что можно - увидеть во время запуска configure: -

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

- Это важно по причинам, упомянутым выше. Также здесь - демонстрируется, что сценарий настройки gcc не просматривает - значения переменной PATH, чтобы найти, какие инструменты - использовать. Однако во время фактической работы самого - gcc не - обязательно используются одни и те же пути поиска. Чтобы - узнать, какой стандартный компоновщик будет использовать - gcc, запустите: - $LFS_TGT-gcc - -print-prog-name=ld. -

-

- Подробную информацию можно получить из gcc, передав ему параметр - -v при компиляции - фиктивной программы. Например, gcc -v dummy.c покажет - подробную информацию об этапах препроцессора, компиляции и - сборки, включая указанные в gcc пути поиска и их - порядок. -

-

- Далее устанавливаются очищенные заголовочные файлы Linux API. - Они позволяют стандартной библиотеке C (Glibc) - взаимодействовать с функциями, предоставляемыми ядром Linux. -

-

- Следующий устанавливаемый пакет — glibc. Наиболее важными при - сборке glibc являются компилятор, бинарные инструменты и - заголовочные файлы ядра. С компилятором, как правило, не - бывает проблем, поскольку glibc всегда будет использовать - компилятор, указанный в параметре --host, переданный скрипту - configure; например, в нашем случае компилятором будет - $LFS_TGT-gcc. С - бинарными инструментами и заголовки ядра может быть немного - сложнее. Поэтому мы не рискуем и используем доступные - параметры конфигурации, чтобы обеспечить правильный выбор. - После запуска configure проверьте - содержимое файла config.make в - каталоге сборки на наличие всех - важных деталей. Обратите внимание на использование опции - CC="$LFS_TGT-gcc" (с - переменной $LFS_TGT) для - управления используемыми бинарными инструментами и - использование флагов -nostdinc и -isystem для управления - включаемым путем поиска компилятора. Эти пункты подчеркивают - важный аспект пакета glibc — он очень самодостаточен с точки - зрения своего механизма сборки и, как правило, не полагается - на значения по умолчанию. -

-

- Как было сказано выше, затем компилируется стандартная - библиотека C++, а затем в Глава 6 - все остальные программы, которым необходимо разрешить - проблему циклических зависимостей во время сборки. На этапе - установки всех этих пакетов используется переменная DESTDIR, - для принудительной установки в файловую систему LFS. -

-

- В конце Глава 6 - устанавливается собственный компилятор lfs. Сначала - собирается binutils с той же переменной DESTDIR, что и другие программы, затем - повторно собирается gcc, без сборки некоторых некритических - библиотек. Из-за какой-то странной логики в сценарии - настройки GCC CC_FOR_TARGET - заканчивается как cc, когда хост совпадает с - целью, но отличается от системы сборки. Поэтому значение - CC_FOR_TARGET=$LFS_TGT-gcc явно - указывается в параметрах конфигурации. -

-

- После входа в среду chroot в - Глава 7 первой задачей является установка libstdc++. - Затем выполняется установка временных программ, необходимых - для правильной работы тулчейна. С этого момента основной - набор инструментов является самодостаточным и автономным. В - - Глава 8 собираются, тестируются и устанавливаются - окончательные версии всех пакетов, необходимых для - полнофункциональной системы. -

-
-
-
-
-
-
-

- Общие инструкции - по компиляции -

-
-
-
-

- При сборке пакетов в инструкциях делается несколько допущений: -

-
-
    -
  • -

    - На некоторые пакеты необходимо наложить патчи перед - компиляцией, метод используется тогда, когда исправление - необходимо для решения проблем сборки. Патчи часто - требуются как в этой, так и в следующих главах, но - иногда, когда один и тот же пакет собирается более одного - раза, патч требуется не сразу. Поэтому не беспокойтесь, - если инструкции для скачанного патча отсутствуют. - Предупреждающие сообщения о смещении (offset) или - размытии (fuzz) - также могут появляться при применении патча. Не обращайте - внимания на эти предупреждения, патч все равно успешно - применен. -

    -
  • -
  • -

    - Во время компиляции большинства пакетов на экране будут - отображаться предупреждения. Это нормально, и их можно - смело игнорировать. Предупреждения появляются, например, - когда используется устаревший, недопустимый синтаксис C - или C++. Стандарты C меняются довольно часто, и некоторые - пакеты все еще используют более старый стандарт. Это не - является серьезной проблемой, но вызывает появление - предупреждений. -

    -
  • -
  • -

    - Проверьте в последний раз, что переменная среды - LFS настроена правильно: -

    -
    echo $LFS
    -

    - Убедитесь, что в выводе указан путь к точке монтирования - раздела LFS, то есть /mnt/lfs, как в примере из этой книги. -

    -
  • -
  • -

    - Наконец, необходимо подчеркнуть два важных момента: -

    -
    -

    - Важно -

    -

    - Инструкции по сборке предполагают, что все Требования к - хост-системе, включая символические ссылки, - установлены правильно: -

    -
    -
      -
    • -

      - bash это - используемая оболочка. -

      -
    • -
    • -

      - sh - это символическая ссылка на bash. -

      -
    • -
    • -

      - /usr/bin/awk - это символическая ссылка на gawk. -

      -
    • -
    • -

      - /usr/bin/yacc - это символическая ссылка на bison или - небольшой скрипт, который выполняет bison -

      -
    • -
    -
    -
    -
    -

    - Важно -

    -

    - Вот краткое описание процесса сборки: -

    -
    -
      -
    1. -

      - Поместите все исходники и патчи в каталог, - который будет доступен из среды chroot, например, - /mnt/lfs/sources/. -

      -
    2. -
    3. -

      - Перейдите в каталог /mnt/lfs/sources/. -

      -
    4. -
    5. -

      - Для каждого пакета: -

      -
      -
        -
      1. -

        - С помощью программы tar - извлеките пакет для сборки. В Глава 5 - и - Глава 6 убедитесь, что при - извлечении пакета вы залогинены под - пользователем lfs. -

        -

        - Не используйте никаких методов, кроме - команды tar, для - извлечения исходного кода. Примечательно, - что использование команды cp -R для - копирования дерева исходного кода в другое - место может привести к уничтожению ссылок и - меток времени в дереве исходного кода и - привести к сбою сборки. -

        -
      2. -
      3. -

        - Перейдите в каталог, созданный при - извлечении пакета. -

        -
      4. -
      5. -

        - Следуйте инструкциям по сборке пакета. -

        -
      6. -
      7. -

        - Вернитесь в исходный каталог, когда сборка - будет завершена. -

        -
      8. -
      9. -

        - Удалите извлеченный каталог, если не - указано иное. -

        -
      10. -
      -
      -
    6. -
    -
    -
    -
  • -
-
-
-
-
-
-
-
-

- Глава 5. Сборка - кросс-тулчейна -

-
-
-
-
-
-
-
-

- 5.1. Введение -

-
-
-
-

- В этой главе дано описание, как создать кросс-компилятор и - связанные с ним инструменты. Несмотря на то, что на данном - этапе кросс-компиляция имитируется, принципы его работы те же, - что и для настоящего кросс-тулчейна. -

-

- Программы, скомпилированные в этой главе, будут установлены в - каталог $LFS/tools, чтобы они - были отделены от файлов, установленных в следующих главах. - Библиотеки, же, устанавливаются на свое постоянное место, - поскольку они относятся к системе, которую мы хотим создать. -

-
-
-
-
-
-

- 5.2. Binutils-2.41 - - Проход 1 -

-
-
-
-
-

- Пакет Binutils содержит компоновщик, ассемблер и другие - инструменты для работы с объектными файлами. -

-
-
-
- Приблизительное время - сборки: 1 SBU -
-
- Требуемое дисковое - пространство: 647 - MB -
-
-
-
-
-

- 5.2.1. Установка кросс-пакета Binutils -

-
-

- Примечание -

-

- Вернитесь назад и перечитайте примечания в разделе - Общие инструкции по - компиляции. Понимание информации, помеченной как - важная, может впоследствии избавить вас от многих проблем. -

-
-

- Очень важно, чтобы Binutils был скомпилированным первым, - потому что и Glibc, и GCC выполняют различные тесты на - доступных компоновщике и ассемблере, чтобы определить, какие - из их функций следует включить. -

-

- В документации пакета Binutils рекомендуется выполнять сборку - в отдельном каталоге, создадим его: -

-
mkdir -v build
-cd       build
-
-

- Примечание -

-

- Для того, чтобы значения SBU, перечисленные в остальной - части книги, были вам полезны, измерьте время, необходимое - для сборки этого пакета, начиная с настройки и заканчивая - установкой. Чтобы добиться этого, оберните команды сборки - командой time: time { ../configure ... && make - && make install; }. -

-
-

- Теперь подготовьте Binutils к компиляции: -

-
../configure --prefix=$LFS/tools \
-             --with-sysroot=$LFS \
-             --target=$LFS_TGT   \
-             --disable-nls       \
-             --enable-gprofng=no \
-             --disable-werror
-
-

- Значение параметров настройки: -

-
-
- --prefix=$LFS/tools -
-
-

- Указывает сценарию configure подготовить к установке - пакет Binutils в каталог $LFS/tools. -

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

- Для кросс-компляции указывает системе сборки искать в - $LFS библиотеки целевой системы, если необходимо. -

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

- Поскольку название машины в значении переменной - LFS_TGT может отличаться от - значения, которое возвращает сценарий config.guess, этот - аргумент укажет сценарию configure как - настроить систему сборки пакета Binutils для создания - кросс-компоновщика. -

-
-
- --disable-nls -
-
-

- Этот параметр отключает интернационализацию, так как - i18n не требуется для временных инструментов. -

-
-
- --enable-gprofng=no -
-
-

- Этот параметр отключает сборку gprofng, который не - нужен для временного инструментария. -

-
-
- --disable-werror -
-
-

- Этот параметр предотвращает остановку сборки в случае - появления предупреждений от компилятора хоста. -

-
-
-
-

- Скомпилируйте пакет: -

-
make
-

- Установите пакет: -

-
make install
-
-
-

- Подробная информация об этом пакете находится в Раздел 8.18.2, - «Содержимое пакета Binutils.» -

-
-
-
-
-
-
-

- 5.3. GCC-13.2.0 - Проход 1 -

-
-
-
-
-

- Пакет GCC содержит коллекцию компиляторов GNU, которая - включает компиляторы C и C++. -

-
-
-
- Приблизительное время - сборки: 3.5 SBU -
-
- Требуемое дисковое - пространство: 4.2 - GB -
-
-
-
-
-

- 5.3.1. Установка кросс-пакета GCC -

-

- Для GCC требуются пакеты GMP, MPFR и MPC. Поскольку эти - пакеты могут отсутствовать в дистрибутиве вашего хоста, они - будут собраны с помощью GCC. Распакуйте каждый пакет в - исходный каталог GCC и переименуйте получившиеся каталоги, - чтобы процедуры сборки GCC использовали их автоматически: -

-
-

- Примечание -

-

- В этой главе часто возникают недоразумения, хотя - применяются те же процедуры, что и в любой другой главе, - следуйте инструкции которую получили ранее (Инструкции по сборке пакетов). - Сначала распакуйте пакет gcc-13.2.0 из архива, а затем - перейдите в созданный каталог. Только после этого следует - приступить к приведенным ниже инструкциям. -

-
-
tar -xf ../mpfr-4.2.0.tar.xz
-mv -v mpfr-4.2.0 mpfr
-tar -xf ../gmp-6.3.0.tar.xz
-mv -v gmp-6.3.0 gmp
-tar -xf ../mpc-1.3.1.tar.gz
-mv -v mpc-1.3.1 mpc
-

- На хостах x86_64 установите имя каталога по умолчанию для - 64-битных библиотек на «lib»: -

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

- В документации к GCC рекомендуется собирать GCC в отдельном - каталоге: -

-
mkdir -v build
-cd       build
-

- Подготовьте GCC к компиляции: -

-
../configure                  \
-    --target=$LFS_TGT         \
-    --prefix=$LFS/tools       \
-    --with-glibc-version=2.38 \
-    --with-sysroot=$LFS       \
-    --with-newlib             \
-    --without-headers         \
-    --enable-default-pie      \
-    --enable-default-ssp      \
-    --disable-nls             \
-    --disable-shared          \
-    --disable-multilib        \
-    --disable-threads         \
-    --disable-libatomic       \
-    --disable-libgomp         \
-    --disable-libquadmath     \
-    --disable-libssp          \
-    --disable-libvtv          \
-    --disable-libstdcxx       \
-    --enable-languages=c,c++
-
-

- Значение параметров настройки: -

-
-
- --with-glibc-version=2.38 -
-
-

- Этот параметр указывает версию Glibc, которая будет - использоваться на целевой системе. Он не имеет - отношения к libc хост-дистрибутива, потому что все, - скомпилированное в этом разделе, будет выполняться в - среде chroot, которая изолирована от libc - хост-дистрибутива. -

-
-
- --with-newlib -
-
-

- Поскольку работающая библиотека C еще недоступна, это - гарантирует, что константа inhibit_libc будет - определена при сборке libgcc. Это предотвращает - компиляцию любого кода, требующего поддержки libc. -

-
-
- --without-headers -
-
-

- При создании полного кросс-компилятора GCC требует - наличия стандартных заголовков, совместимых с целевой - системой. Для наших целей эти заголовки не понадобятся. - Этот параметр предотвращает их поиск GCC. -

-
-
- --enable-default-pie и - --enable-default-ssp -
-
-

- Эти параметры позволяют GCC по умолчанию компилировать - программы с некоторые функциями усиливающими - безопасность (более подробная информация о них - приведена в примечание о PIE и SSP в Главе 8). - На данном этапе это не является строго обязательным, - поскольку компилятор будет создавать только временные - исполняемые файлы. Но лучше, чтобы временные пакеты - были максимально приближены к тем, что будут в готовой - системе LFS. -

-
-
- --disable-shared -
-
-

- Этот параметр заставляет GCC статически связывать свои - внутренние библиотеки. Он необходим потому что общие - библиотеки требуют Glibc, который еще не установлен в - целевой системе. -

-
-
- --disable-multilib -
-
-

- Для платформы x86_64, LFS пока не поддерживает - конфигурацию multilib. Этот аргумент ни как не - повлияет, если установка выполняется на платформе x86. -

-
-
- --disable-threads, --disable-libatomic, - --disable-libgomp, --disable-libquadmath, - --disable-libssp, --disable-libvtv, - --disable-libstdcxx -
-
-

- Эти аргументы отключают поддержку расширений для работы - с многопоточностью, libatomic, libgomp, libquadmath, - libssp, libvtv и стандартной библиотеки C++ - соответственно. Эти функции могут не скомпилироваться - при сборке кросс-компилятора и не нужны для задач - кросс-компиляции временной libc -

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

- Этот параметр обеспечивает сборку только компиляторов C - и C++. Это единственные языки, которые нужны сейчас. -

-
-
-
-

- Скомпилируйте GCC, выполнив: -

-
make
-

- Установите пакет: -

-
make install
-

- Во время сборки GCC установил пару внутренних системных - заголовочных файлов. Обычно один из файлов limits.h, включает соответствующие - системные ограничения limits.h, - в данном случае $LFS/usr/include/limits.h. Однако во время - сборки GCC $LFS/usr/include/limits.h не существует, - поэтому только что установленный внутренний заголовочный файл - является частичным, автономным файлом и не включает - расширенные функции системного файла. Этого достаточно для - сборки Glibc, но полный внутренний заголовочный файл - понадобится позже. Создайте полную версию внутреннего - заголовочного файла с помощью команды, идентичной той, что - система сборки GCC использует в обычных обстоятельствах: -

-
-

- Примечание -

-

- В приведенной ниже команде показан пример подстановки - вложенных команд, используя два метода: обратные кавычки и - конструкцию $(). Его можно - было бы переписать, используя один и тот же метод для обеих - замен, но сделано так, чтобы продемонстрировать, как их - можно использовать одновременно. В целом метод $() предпочтительнее. -

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

- Подробная информация об этом пакете находится в Раздел 8.27.2, - «Содержимое пакета GCC.» -

-
-
-
-
-
-
-

- 5.4. Заголовочные - файлы Linux-6.4.12 API -

-
-
-
-
-

- Заголовочные файлы Linux API (в linux-6.4.12.tar.xz) - предоставляют API ядра для использования Glibc. -

-
-
-
- Приблизительное время - сборки: менее 0.1 - SBU -
-
- Требуемое дисковое - пространство: 1.5 - GB -
-
-
-
-
-

- 5.4.1. Установка заголовочных файлов -

-

- Ядро Linux должно предоставлять интерфейс прикладного - программирования (API) для использования системной - библиотекой C (Glibc в LFS). Это делается путем установки - заголовочных файлов C, которые поставляются в архиве с - исходным кодом ядра Linux. -

-

- Убедитесь, что в пакете нет устаревших файлов: -

-
make mrproper
-

- Теперь извлеките видимые пользователю заголовочные файлы ядра - из исходного кода. Рекомендуемый способ make «headers_install» - использовать нельзя, так как для этого требуется rsync, который может быть недоступен. - Заголовочные файлы сначала помещаются в /usr, а затем копируются в нужное место. -

-
make headers
-find usr/include -type f ! -name '*.h' -delete
-cp -rv usr/include $LFS/usr
-
-
-

- 5.4.2. Содержимое заголовочных - файлов Linux API -

-
-
-
- Установленные заголовочные - файлы:: /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 -
-
- Созданные каталоги:: - /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 -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

- /usr/include/asm/*.h -

-
-

- Заголовочные файлы Linux API ASM -

-
-

- /usr/include/asm-generic/*.h -

-
-

- Заголовочные файлы Linux API ASM Generic -

-
-

- /usr/include/drm/*.h -

-
-

- Заголовочные файлы Linux API DRM -

-
-

- /usr/include/linux/*.h -

-
-

- Заголовочные файлы Linux API Linux -

-
-

- /usr/include/misc/*.h -

-
-

- Заголовочные файлы Linux API Miscellaneous -

-
-

- /usr/include/mtd/*.h -

-
-

- Заголовочные файлы API MTD -

-
-

- /usr/include/rdma/*.h -

-
-

- Заголовочные файлы Linux API RDMA -

-
-

- /usr/include/scsi/*.h -

-
-

- Заголовочные файлы Linux API SCSI -

-
-

- /usr/include/sound/*.h -

-
-

- Заголовочные файлы Linux API Sound -

-
-

- /usr/include/video/*.h -

-
-

- Заголовочные файлы Linux API Video -

-
-

- /usr/include/xen/*.h -

-
-

- Заголовочные файлы Linux API Xen -

-
-
-
-
-
-
-
-
-

- 5.5. Glibc-2.38 -

-
-
-
-
-

- Пакет Glibc содержит основную библиотеку C. Эта библиотека - предоставляет основные процедуры для выделения памяти, поиска - в каталогах, открытия и закрытия файлов, чтения и записи - файлов, обработки строк, сопоставления с образцом, арифметики - и так далее -

-
-
-
- Приблизительное время - сборки: 1.6 SBU -
-
- Требуемое дисковое - пространство: 858 - MB -
-
-
-
-
-

- 5.5.1. Установка пакета Glibc -

-

- Во-первых, создайте символическую ссылку для соответствия - требованиям LSB. Кроме того, для совместимости с x86_64 - создайте символическую ссылку, необходимую для правильной - работы загрузчика динамической библиотеки: -

-
case $(uname -m) in
-    i?86)   ln -sfv ld-linux.so.2 $LFS/lib/ld-lsb.so.3
-    ;;
-    x86_64) ln -sfv ../lib/ld-linux-x86-64.so.2 $LFS/lib64
-            ln -sfv ../lib/ld-linux-x86-64.so.2 $LFS/lib64/ld-lsb-x86-64.so.3
-    ;;
-esac
-
-

- Примечание -

-

- Приведенная выше команда верна. Команда ln имеет несколько - вариантов синтаксиса, поэтому обязательно ознакомьтесь с - info coreutils - ln и ln(1), - прежде чем сообщать об ошибке. -

-
-

- Некоторые программы, использующие Glibc, применяют - несовместимый с FHS каталог /var/db для хранения своих данных времени - выполнения. Установите следующий патч, чтобы такие программы - хранили свои данные в местах, совместимых с FHS: -

-
patch -Np1 -i ../glibc-2.38-fhs-1.patch
-

- В документации к Glibc рекомендуется собирать Glibc в - отдельном каталоге: -

-
mkdir -v build
-cd       build
-

- Убедитесь, что утилиты ldconfig and sln установлены в - /usr/sbin: -

-
echo "rootsbindir=/usr/sbin" > configparms
-

- Затем подготовьте Glibc к компиляции: -

-
../configure                             \
-      --prefix=/usr                      \
-      --host=$LFS_TGT                    \
-      --build=$(../scripts/config.guess) \
-      --enable-kernel=4.14               \
-      --with-headers=$LFS/usr/include    \
-      libc_cv_slibdir=/usr/lib
-
-

- Значение параметров настройки: -

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

- Комбинация этих опций указывает на то, что система - сборки Glibc настраивается на кросс-компиляцию с - использованием кросс-компоновщика и кросс-компилятора в - $LFS/tools. -

-
-
- --enable-kernel=4.14 -
-
-

- Этот параметр позволяет Glibc выполнять компиляцию - библиотеки с поддержкой ядра 4.14 и более поздних - версий. Поддержка более старых ядер не включена. -

-
-
- --with-headers=$LFS/usr/include -
-
-

- Этот аргумент позволяет скомпилировать библиотеку с - заголовочными файлами, недавно установленными в - каталоге $LFS/usr/include, таким образом, пакету будет - известно, какие функции есть у ядра, чтобы - оптимизировать себя. -

-
-
- libc_cv_slibdir=/usr/lib -
-
-

- Этот аргумент гарантирует, что библиотека будет - установлена в /usr/lib вместо стандартного /lib64 на - 64-битных машинах. -

-
-
-
-

- На этом этапе может появиться следующее предупреждение: -

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

- Отсутствующая или несовместимая программа msgfmt, как правило, - безвредна. msgfmt является частью - пакета Gettext, который должен предоставлять - хост-дистрибутив. -

-
-

- Примечание -

-

- Поступали сообщения о том, что этот пакет может не - компилироваться при "параллельной сборке". Если это - произойдет, повторно запустите команду make с параметром - "-j1". -

-
-

- Скомпилируйте пакет: -

-
make
-

- Установите пакет: -

-
-

- Предупреждение -

-

- Если переменная LFS настроена - неправильно, и, несмотря на рекомендации, вы выполняете - сборку от имени пользователя root, следующая команда установит - только что собранный Glibc в вашу хост-систему, что, скорее - всего, сделает её непригодной для использования. Поэтому - дважды проверьте, правильность настройки среды и что вы - вошли в систему не под учетной записью root, прежде чем запускать следующую - команду. -

-
-
make DESTDIR=$LFS install
-
-

- Значение опции make - install: -

-
-
- DESTDIR=$LFS -
-
-

- Переменная make DESTDIR - используется почти всеми пакетами для определения места - установки пакета. Если она не задана, по умолчанию для - установки используется корневой каталог (/). Здесь мы указываем, что пакет - должен быть установлен в $LFS, который станет корневым - каталогом в Раздел 7.4, - «Вход в окружение Chroot». -

-
-
-
-

- Исправьте жестко запрограммированный путь к исполняемому - загрузчику в ldd: -

-
sed '/RTLDLIST=/s@/usr@@g' -i $LFS/usr/bin/ldd
-
-

- Внимание -

-

- На этом этапе необходимо остановиться и убедиться, что - основные функции (компиляция и компоновка) нового - кросс-тулчейна работают должным образом. Чтобы выполнить - проверку работоспособности, выполните следующие команды: -

-
echo 'int main(){}' | $LFS_TGT-gcc -xc -
-readelf -l a.out | grep ld-linux
-

- Если все работает правильно, ошибок быть не должно, и вывод - последней команды будет иметь вид: -

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

- Обратите внимание, что для 32-разрядных машин имя - интерпретатора будет /lib/ld-linux.so.2. -

-

- Если выходные данные отображаются не так, как указано выше, - или их вообще нет, значит, что-то сделано неправильно. - Разберитесь с проблемой и повторите шаги выше, чтобы - исправить ее. Эта проблема должна быть решена, прежде чем - вы продолжите. -

-

- Как только все будет хорошо, удалите тестовый файл: -

-
rm -v a.out
-
-
-

- Примечание -

-

- Сборка пакетов в следующей главе послужит дополнительной - проверкой правильности сборки временного кросс-тулчейна. - Если какой-либо пакет, особенно Binutils или GCC, не - удается собрать, это указывает на то, что что-то пошло не - так с установленными ранее Binutils, GCC, или Glibc. -

-
-
-
-

- Подробная информация об этом пакете находится в Раздел 8.5.3, - «Содержимое пакета Glibc.» -

-
-
-
-
-
-
-

- 5.6. Libstdc++ из - GCC-13.2.0 -

-
-
-
-
-

- Libstdc++ — это стандартная библиотека C++. Она нужна для - компиляции кода C++ (часть GCC написана на C++), когда мы - собирали GCC-Проход 1, нам пришлось - отложить её установку, потому что она зависит от библиотеки - Glibc, которой еще не было в целевом каталоге. -

-
-
-
- Приблизительное время - сборки: 0.2 SBU -
-
- Требуемое дисковое - пространство: 1.1 - GB -
-
-
-
-
-

- 5.6.1. Установка библиотеки Libstdc++ -

-
-

- Примечание -

-

- Libstdc++ является частью - исходников GCC. Сначала вы должны распаковать архив GCC и - перейти в каталог gcc-13.2.0. -

-
-

- Создайте отдельный каталог сборки для libstdc++ и перейдите в - него: -

-
mkdir -v build
-cd       build
-

- Подготовьте libstdc++ к компиляции: -

-
../libstdc++-v3/configure           \
-    --host=$LFS_TGT                 \
-    --build=$(../config.guess)      \
-    --prefix=/usr                   \
-    --disable-multilib              \
-    --disable-nls                   \
-    --disable-libstdcxx-pch         \
-    --with-gxx-include-dir=/tools/$LFS_TGT/include/c++/13.2.0
-
-

- Значение параметров настройки: -

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

- Указывает, что кросс-компилятор, который мы только что - создали, должен использоваться вместо того, который - находится в /usr/bin. -

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

- Этот аргумент предотвращает установку предварительно - скомпилированных include-файлов, которые на данном - этапе не нужны. -

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

- Указывает каталог установки для include-файлов. - Поскольку libstdc++ является стандартной библиотекой - C++ для LFS, этот каталог должен соответствовать - местоположению, в котором компилятор C++ ($LFS_TGT-g++) будет - искать стандартные включаемые файлы C++. При обычной - сборке эта информация автоматически передается в - Libstdc++ при выполнении configure из каталога - верхнего уровня. В нашем случае эта информация должна - быть указана явно. Компилятор C++ добавит путь sysroot - $LFS (указанный при - сборке GCC Проход 1) к пути поиска include-файлов, - поэтому фактически он будет искать в $LFS/tools/$LFS_TGT/include/c++/13.2.0. - Комбинация переменной DESTDIR (в приведенной - ниже команде make - install) и этого аргумента обеспечивает - установку заголовочных файлов туда. -

-
-
-
-

- Скомпилируйте Libstdc++, выполнив: -

-
make
-

- Установите библиотеку: -

-
make DESTDIR=$LFS install
-

- Удалите архивные файлы libtool, поскольку они потенциально - опасны при кросс-компиляции: -

-
rm -v $LFS/usr/lib/lib{stdc++,stdc++fs,supc++}.la
-
-
-

- Подробная информация об этом пакете приведена в Раздел 8.27.2, - «Содержимое пакета GCC.» -

-
-
-
-
-
-
-
-

- Глава 6. - Кросс-Компиляция временных инструментов -

-
-
-
-
-
-
-
-

- 6.1. Введение -

-
-
-
-

- В этой главе рассказывается, как выполнить кросс-компиляцию - базовых утилит с использованием только что собранного - кросс-тулчейна. Эти утилиты установлены в свое конечное - местоположение, но пока не могут быть использованы. Выполняемые - инструкции по-прежнему зависят от инструментария хоста. Тем не - менее, установленные библиотеки используются при компоновке. -

-

- Использование утилит станет возможным в следующей главе после - входа в среду «chroot». Все пакеты из этой главы, должны - быть собраны до того, как мы это сделаем. Поэтому пока наша - система зависима от хост-системы. -

-

- Еще раз напомним, что неправильная настройка LFS вместе со сборкой от root может сделать ваш компьютер - непригодным для использования. Всю эту главу нужно выполнить от - имени пользователя lfs, в его - рабочем окружении, как описано в Раздел 4.4, «Настройка - окружения». -

-
-
-
-
-
-

- 6.2. M4-1.4.19 -

-
-
-
-
-

- Пакет M4 содержит макропроцессор. -

-
-
-
- Приблизительное время - сборки: 0.1 SBU -
-
- Требуемое дисковое - пространство: 31 MB -
-
-
-
-
-

- 6.2.1. Установка пакета M4 -

-

- Подготовьте пакет M4 к компиляции: -

-
./configure --prefix=/usr   \
-            --host=$LFS_TGT \
-            --build=$(build-aux/config.guess)
-

- Скомпилируйте пакет: -

-
make
-

- Установите пакет: -

-
make DESTDIR=$LFS install
-
-
-

- Подробная информация об этом пакете находится в Раздел 8.12.2, - «Содержимое пакета M4.» -

-
-
-
-
-
-
-

- 6.3. Ncurses-6.4 -

-
-
-
-
-

- Пакет Ncurses содержит библиотеки для независимой от - терминала обработки ввода/вывода -

-
-
-
- Приблизительное время - сборки: 0.3 SBU -
-
- Требуемое дисковое - пространство: 51 MB -
-
-
-
-
-

- 6.3.1. Установка пакета Ncurses -

-

- Во-первых, убедитесь, что gawk найден первым во время - настройки: -

-
sed -i s/mawk// configure
-

- Затем выполните следующие команды, чтобы собрать программу - «tic» - на хосте сборки: -

-
mkdir build
-pushd build
-  ../configure
-  make -C include
-  make -C progs tic
-popd
-

- Подготовьте Ncurses к компиляции: -

-
./configure --prefix=/usr                \
-            --host=$LFS_TGT              \
-            --build=$(./config.guess)    \
-            --mandir=/usr/share/man      \
-            --with-manpage-format=normal \
-            --with-shared                \
-            --without-normal             \
-            --with-cxx-shared            \
-            --without-debug              \
-            --without-ada                \
-            --disable-stripping          \
-            --enable-widec
-
-

- Значение новых параметров настройки: -

-
-
- --with-manpage-format=normal -
-
-

- Этот аргумент предотвращает установку Ncurses сжатых - страниц руководства, это может произойти, если сам - дистрибутив хоста содержит сжатые страницы руководства. -

-
-
- --with-shared -
-
-

- Этот аргумент позволяет Ncurses собирать и - устанавливать разделяемые библиотеки C. -

-
-
- --without-normal -
-
-

- Этот аргумент предотвращает сборку и установку - статических библиотек C. -

-
-
- --without-debug -
-
-

- Этот аргумент предотвращает сборку и установку - отладочных библиотек. -

-
-
- --with-cxx-shared -
-
-

- Это аргумент позволяет Ncurses собирать и устанавливать - общие привязки C++. А также предотвращает сборку и - установку статических привязок C++. -

-
-
- --without-ada -
-
-

- Этот аргумент гарантирует, что Ncurses будет собран без - поддержки компилятора Ada, который может присутствовать - на хосте, но будет недоступен, как только мы войдем в - среду chroot. -

-
-
- --disable-stripping -
-
-

- Этот аргумент не позволяет системе сборки использовать - программу strip с хоста. - Использование инструментов хоста в кросс-компилируемой - программе может привести к сбою. -

-
-
- --enable-widec -
-
-

- Этот аргумент указывает, что необходимо скомпилировать - библиотеки расширенных символов (такие как, - libncursesw.so.6.4) - вместо обычных (таких как, libncurses.so.6.4). Эти библиотеки - расширенных символов можно использовать как в - многобайтовой, так и традиционной 8-битной локали, в то - время как обычные библиотеки корректно работают только - в 8-битных локалях. Библиотеки расширенных символов и - обычные совместимы на уровне исходного кода, но не - совместимы в двоичном. -

-
-
-
-

- Скомпилируйте пакет: -

-
make
-

- Установите пакет: -

-
make DESTDIR=$LFS TIC_PATH=$(pwd)/build/progs/tic install
-echo "INPUT(-lncursesw)" > $LFS/usr/lib/libncurses.so
-
-

- Значение параметров установки: -

-
-
- TIC_PATH=$(pwd)/build/progs/tic -
-
-

- Нам нужно передать путь до только что собранной - программы tic, которая работает - на сборочной машине, чтобы база данных терминала была - создана без ошибок. -

-
-
- echo - "INPUT(-lncursesw)" > - $LFS/usr/lib/libncurses.so -
-
-

- Библиотека libncurses.so - необходима для нескольких пакетов, которые мы скоро - соберем. Мы создадим небольшой скрипт компоновщика, как - это делается поясняется в - Глава 8. -

-
-
-
-
-
-

- Подробная информация об этом пакете находится в Раздел 8.29.2, - «Содержимое пакета Ncurses.» -

-
-
-
-
-
-
-

- 6.4. Bash-5.2.15 -

-
-
-
-
-

- Пакет Bash содержит Bourne-Again Shell. -

-
-
-
- Приблизительное время - сборки: 0.2 SBU -
-
- Требуемое дисковое - пространство: 67 MB -
-
-
-
-
-

- 6.4.1. Установка пакета Bash -

-

- Подготовьте Bash к компиляции: -

-
./configure --prefix=/usr                      \
-            --build=$(sh support/config.guess) \
-            --host=$LFS_TGT                    \
-            --without-bash-malloc
-
-

- Значение параметров настройки: -

-
-
- --without-bash-malloc -
-
-

- Этот параметр отключает использование функции - распределения памяти (malloc) Bash, которая, как известно, - вызывает ошибки сегментации. Если опция отключена, Bash - будет использовать функции malloc из Glibc, которые более - стабильны. -

-
-
-
-

- Скомпилируйте пакет: -

-
make
-

- Установите пакет: -

-
make DESTDIR=$LFS install
-

- Создайте символическую ссылку для программ, которые - используют sh - как оболочку: -

-
ln -sv bash $LFS/bin/sh
-
-
-

- Подробная информация об этом пакете находится в Раздел 8.35.2, - «Содержимое пакета Bash.» -

-
-
-
-
-
-
-

- 6.5. Coreutils-9.3 -

-
-
-
-
-

- Пакет Coreutils содержит основные утилиты, необходимые каждой - операционной системе. -

-
-
-
- Приблизительное время - сборки: 0.3 SBU -
-
- Требуемое дисковое - пространство: 168 - MB -
-
-
-
-
-

- 6.5.1. Установка пакета Coreutils -

-

- Подготовьте Coreutils к компиляции: -

-
./configure --prefix=/usr                     \
-            --host=$LFS_TGT                   \
-            --build=$(build-aux/config.guess) \
-            --enable-install-program=hostname \
-            --enable-no-install-program=kill,uptime \
-            gl_cv_macro_MB_CUR_MAX_good=y
-
-

- Значение параметров настройки: -

-
-
- --enable-install-program=hostname -
-
-

- Этот параметр позволяет создать и установить двоичный - файл hostname – по - умолчанию он отключен, но требуется для набора тестов - Perl. -

-
-
- gl_cv_macro_MB_CUR_MAX_good=y -
-
-

- Этот параметр необходим, чтобы обойти проблему с копией - gnulib, поставляемой пакетом, которая нарушит - кросс-компиляцию. -

-
-
-
-

- Скомпилируйте пакет: -

-
make
-

- Установите пакет: -

-
make DESTDIR=$LFS install
-

- Переместите программы в их конечное местоположение. Хотя во - временной среде в этом нет необходимости, мы должны это - сделать, потому что некоторые программы жестко прописывают - местоположение исполняемых файлов: -

-
mv -v $LFS/usr/bin/chroot              $LFS/usr/sbin
-mkdir -pv $LFS/usr/share/man/man8
-mv -v $LFS/usr/share/man/man1/chroot.1 $LFS/usr/share/man/man8/chroot.8
-sed -i 's/"1"/"8"/'                    $LFS/usr/share/man/man8/chroot.8
-
-
-

- Подробная информация об этом пакете находится в Раздел 8.56.2, - «Содержимое пакета Coreutils.» -

-
-
-
-
-
-
-

- 6.6. Diffutils-3.10 -

-
-
-
-
-

- Пакет Diffutils содержит программы, которые показывают - различия между файлами или каталогами. -

-
-
-
- Приблизительное время - сборки: 0.1 SBU -
-
- Требуемое дисковое - пространство: 29 MB -
-
-
-
-
-

- 6.6.1. Установка пакета Diffutils -

-

- Подготовьте Diffutils для компиляции: -

-
./configure --prefix=/usr   \
-            --host=$LFS_TGT \
-            --build=$(./build-aux/config.guess)
-

- Скомпилируйте пакет: -

-
make
-

- Установите пакет: -

-
make DESTDIR=$LFS install
-
-
-

- Подробная информация об этом пакете находится в Раздел 8.58.2, - «Содержимое пакета Diffutils.» -

-
-
-
-
-
-
-

- 6.7. File-5.45 -

-
-
-
-
-

- Пакет File содержит утилиту для определения типа указанного - файла или файлов -

-
-
-
- Приблизительное время - сборки: 0.1 SBU -
-
- Требуемое дисковое - пространство: 37 MB -
-
-
-
-
-

- 6.7.1. Установка пакета File -

-

- Команда file на - хосте сборки должна быть той же версии, что и собираемая, - чтобы создать файл подписи. Выполните следующие команды, - чтобы создать временную копию команды file. -

-
mkdir build
-pushd build
-  ../configure --disable-bzlib      \
-               --disable-libseccomp \
-               --disable-xzlib      \
-               --disable-zlib
-  make
-popd
-
-

- Значение новой опции настройки: -

-
-
- --disable-* -
-
-

- Сценарий конфигурации пытается использовать некоторые - пакеты из основного дистрибутива, если существуют - соответствующие файлы библиотек. Это может привести к - сбою компиляции, если файлы библиотек существует, но - отсутствуют соответствующие заголовочные файлы. Эти - параметры предотвращают использование ненужных - возможностей хоста. -

-
-
-
-

- Подготовьте файл для компиляции: -

-
./configure --prefix=/usr --host=$LFS_TGT --build=$(./config.guess)
-

- Скомпилируйте пакет: -

-
make FILE_COMPILE=$(pwd)/build/src/file
-

- Установите пакет: -

-
make DESTDIR=$LFS install
-

- Удалите архивный файл libtool, поскольку он потенциально - опасен при кросс-компиляции: -

-
rm -v $LFS/usr/lib/libmagic.la
-
-
-

- Подробная информация об этом пакете находится в Раздел 8.10.2, - «Содержимое пакета File.» -

-
-
-
-
-
-
-

- 6.8. Findutils-4.9.0 -

-
-
-
-
-

- Пакет Findutils содержит программы для поиска файлов. Эти - программы предназначены для поиска по всем файлам в дереве - каталогов, а также для создания, обслуживания и поиска в базе - данных (часто быстрее, чем рекурсивный поиск, но ненадежно, - если база данных давно не обновлялась).Findutils также - предоставляет программу xargs, которую можно - использовать для запуска указанной команды для каждого файла, - выбранного при поиске. -

-
-
-
- Приблизительное время - сборки: 0.1 SBU -
-
- Требуемое дисковое - пространство: 42 MB -
-
-
-
-
-

- 6.8.1. Установка пакета Findutils -

-

- Подготовьте Findutils к компиляции: -

-
./configure --prefix=/usr                   \
-            --localstatedir=/var/lib/locate \
-            --host=$LFS_TGT                 \
-            --build=$(build-aux/config.guess)
-

- Скомпилируйте пакет: -

-
make
-

- Установите пакет: -

-
make DESTDIR=$LFS install
-
-
-

- Подробная информация об этом пакете находится в Раздел 8.60.2, - «Содержимое пакета Findutils.» -

-
-
-
-
-
-
-

- 6.9. Gawk-5.2.2 -

-
-
-
-
-

- Пакет Gawk содержит программы для работы с текстовыми - файлами. -

-
-
-
- Приблизительное время - сборки: 0.1 SBU -
-
- Требуемое дисковое - пространство: 48 MB -
-
-
-
-
-

- 6.9.1. Установка пакета Gawk -

-

- Во-первых, убедитесь, что некоторые ненужные файлы не будут - установлены: -

-
sed -i 's/extras//' Makefile.in
-

- Подготовьте Gawk к компиляции: -

-
./configure --prefix=/usr   \
-            --host=$LFS_TGT \
-            --build=$(build-aux/config.guess)
-

- Скомпилируйте пакет: -

-
make
-

- Установите пакет: -

-
make DESTDIR=$LFS install
-
-
-

- Подробная информация об этом пакете находится в Раздел 8.59.2, - «Содержимое пакета Gawk.» -

-
-
-
-
-
-
-

- 6.10. Grep-3.11 -

-
-
-
-
-

- Пакет Grep содержит программы для поиска по содержимому - файлов. -

-
-
-
- Приблизительное время - сборки: 0.1 SBU -
-
- Требуемое дисковое - пространство: 27 MB -
-
-
-
-
-

- 6.10.1. Установка пакета Grep -

-

- Подготовьте Grep к компиляции: -

-
./configure --prefix=/usr   \
-            --host=$LFS_TGT \
-            --build=$(./build-aux/config.guess)
-

- Скомпилируйте пакет: -

-
make
-

- Установите пакет: -

-
make DESTDIR=$LFS install
-
-
-

- Подробная информация об этом пакете находится в Раздел 8.34.2, - «Содержимое пакета Grep.» -

-
-
-
-
-
-
-

- 6.11. Gzip-1.12 -

-
-
-
-
-

- Пакет Gzip содержит программы для сжатия и распаковки файлов. -

-
-
-
- Приблизительное время - сборки: 0.1 SBU -
-
- Требуемое дисковое - пространство: 11 MB -
-
-
-
-
-

- 6.11.1. Установка пакета Gzip -

-

- Подготовьте Gzip к компиляции: -

-
./configure --prefix=/usr --host=$LFS_TGT
-

- Скомпилируйте пакет: -

-
make
-

- Установите пакет: -

-
make DESTDIR=$LFS install
-
-
-

- Подробная информация об этом пакете находится в Раздел 8.63.2, - «Содержимое пакета Gzip.» -

-
-
-
-
-
-
-

- 6.12. Make-4.4.1 -

-
-
-
-
-

- Пакет Make содержит программу, управляющую генерацией - исполняемых и других файлов, из исходного кода. -

-
-
-
- Приблизительное время - сборки: менее 0.1 - SBU -
-
- Требуемое дисковое - пространство: 15 MB -
-
-
-
-
-

- 6.12.1. Установка пакета Make -

-

- Подготовьте Make к компиляции: -

-
./configure --prefix=/usr   \
-            --without-guile \
-            --host=$LFS_TGT \
-            --build=$(build-aux/config.guess)
-
-

- Значение новой опции настройки: -

-
-
- --without-guile -
-
-

- Несмотря на то, что мы выполняем кросс-компиляцию, - configure пытается использовать guile с узла сборки, - если он его находит. Это приводит к сбою компиляции, - этот аргумент предотвращает его использование. -

-
-
-
-

- Скомпилируйте пакет: -

-
make
-

- Установите пакет: -

-
make DESTDIR=$LFS install
-
-
-

- Подробная информация об этом пакете находится в Раздел 8.67.2, - «Содержимое пакета Make.» -

-
-
-
-
-
-
-

- 6.13. Patch-2.7.6 -

-
-
-
-
-

- Пакет Patch содержит программу для изменения или создания - файлов путём наложение «патча», обычно, создаваемого программой - diff. -

-
-
-
- Приблизительное время - сборки: 0.1 SBU -
-
- Требуемое дисковое - пространство: 12 MB -
-
-
-
-
-

- 6.13.1. Установка пакета Patch -

-

- Подготовьте Patch к компиляции: -

-
./configure --prefix=/usr   \
-            --host=$LFS_TGT \
-            --build=$(build-aux/config.guess)
-

- Скомпилируйте пакет: -

-
make
-

- Установите пакет: -

-
make DESTDIR=$LFS install
-
-
-

- Подробная информация об этом пакете находится в Раздел 8.68.2, - «Содержимое пакета Patch.» -

-
-
-
-
-
-
-

- 6.14. Sed-4.9 -

-
-
-
-
-

- Пакет Sed содержит потоковый редактор текста -

-
-
-
- Приблизительное время - сборки: 0.1 SBU -
-
- Требуемое дисковое - пространство: 21 MB -
-
-
-
-
-

- 6.14.1. Установка пакета Sed -

-

- Подготовьте Sed к компиляции: -

-
./configure --prefix=/usr   \
-            --host=$LFS_TGT \
-            --build=$(./build-aux/config.guess)
-

- Скомпилируйте пакет: -

-
make
-

- Установите пакет: -

-
make DESTDIR=$LFS install
-
-
-

- Подробная информация об этом пакете находится в Раздел 8.30.2, - «Содержимое пакета Sed.» -

-
-
-
-
-
-
-

- 6.15. Tar-1.35 -

-
-
-
-
-

- Пакет Tar предоставляет возможность создавать tar архивы, а - также производить с ними различные манипуляции. Tar может - распаковать предварительно созданный архив, добавить или - обновить файлы в нём, вернуть список файлов в архиве. -

-
-
-
- Приблизительное время - сборки: 0.1 SBU -
-
- Требуемое дисковое - пространство: 42 MB -
-
-
-
-
-

- 6.15.1. Установка пакета Tar -

-

- Подготовьте Tar к компиляции: -

-
./configure --prefix=/usr                     \
-            --host=$LFS_TGT                   \
-            --build=$(build-aux/config.guess)
-

- Скомпилируйте пакет: -

-
make
-

- Установите пакет: -

-
make DESTDIR=$LFS install
-
-
-

- Подробная информация об этом пакете находится в Раздел 8.69.2, - «Содержимое пакета Tar.» -

-
-
-
-
-
-
-

- 6.16. Xz-5.4.4 -

-
-
-
-
-

- Пакет Xz содержит программы для сжатия и распаковки файлов. - Он предоставляет возможности для lzma и более новых форматов - сжатия xz. Сжатие текстовых файлов с помощью xz дает лучший процент - сжатия, чем с традиционные gzip или bzip2. -

-
-
-
- Приблизительное время - сборки: 0.1 SBU -
-
- Требуемое дисковое - пространство: 22 MB -
-
-
-
-
-

- 6.16.1. Установка пакета Xz -

-

- Подготовьте Xz к компиляции: -

-
./configure --prefix=/usr                     \
-            --host=$LFS_TGT                   \
-            --build=$(build-aux/config.guess) \
-            --disable-static                  \
-            --docdir=/usr/share/doc/xz-5.4.4
-

- Скомпилируйте пакет: -

-
make
-

- Установите пакет: -

-
make DESTDIR=$LFS install
-

- Удалите архивный файл libtool, поскольку он потенциально - опасен при кросс-компиляции: -

-
rm -v $LFS/usr/lib/liblzma.la
-
-
-

- Подробная информация об этом пакете находится в Раздел 8.8.2, «Содержимое - пакета Xz.» -

-
-
-
-
-
-
-

- 6.17. Binutils-2.41 - - Проход 2 -

-
-
-
-
-

- Пакет Binutils содержит компоновщик, ассемблер и другие - инструменты для работы с объектными файлами. -

-
-
-
- Приблизительное время - сборки: 0.5 SBU -
-
- Требуемое дисковое - пространство: 523 - MB -
-
-
-
-
-

- 6.17.1. Установка пакета Binutils -

-

- Binutils поставляет устаревшую версию libtool в архиве. В нем - отсутствует поддержка sysroot, поэтому созданные двоичные - файлы будут ошибочно связаны с библиотеками из основного - дистрибутива. Решение этой проблемы: -

-
sed '6009s/$add_dir//' -i ltmain.sh
-

- Создайте отдельный каталог для сборки: -

-
mkdir -v build
-cd       build
-

- Подготовьте Binutils к компиляции: -

-
../configure                   \
-    --prefix=/usr              \
-    --build=$(../config.guess) \
-    --host=$LFS_TGT            \
-    --disable-nls              \
-    --enable-shared            \
-    --enable-gprofng=no        \
-    --disable-werror           \
-    --enable-64-bit-bfd
-
-

- Значение новых параметров настройки: -

-
-
- --enable-shared -
-
-

- Собирает libbfd как - разделяемую библиотеку -

-
-
- --enable-64-bit-bfd -
-
-

- Включает 64-разрядную поддержку (на хостах с меньшим - размером слова). В 64-разрядных системах это может и не - понадобиться, но вреда от этого не будет -

-
-
-
-

- Скомпилируйте пакет: -

-
make
-

- Установите пакет: -

-
make DESTDIR=$LFS install
-

- Удалите архивные файлы libtool, поскольку они потенциально - опасны при кросс-компиляции, также удалите ненужные - статические библиотеки -

-
rm -v $LFS/usr/lib/lib{bfd,ctf,ctf-nobfd,opcodes,sframe}.{a,la}
-
-
-

- Подробная информация об этом пакете находится в Раздел 8.18.2, - «Содержимое пакета Binutils.» -

-
-
-
-
-
-
-

- 6.18. GCC-13.2.0 - Проход - 2 -

-
-
-
-
-

- Пакет GCC содержит коллекцию компиляторов GNU, которая - включает компиляторы C и C++. -

-
-
-
- Приблизительное время - сборки: 4.3 SBU -
-
- Требуемое дисковое - пространство: 4.8 - GB -
-
-
-
-
-

- 6.18.1. Установка пакета GCC -

-

- Как и при первой сборке GCC, требуются пакеты GMP, MPFR и - MPC. Распакуйте архивы и переименуйте каталоги: -

-
tar -xf ../mpfr-4.2.0.tar.xz
-mv -v mpfr-4.2.0 mpfr
-tar -xf ../gmp-6.3.0.tar.xz
-mv -v gmp-6.3.0 gmp
-tar -xf ../mpc-1.3.1.tar.gz
-mv -v mpc-1.3.1 mpc
-

- При сборке на x86_64 измените имя каталога по умолчанию для - 64-разрядных библиотек на «lib».: -

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

- Переопределите правила сборки заголовочных файлов libgcc и - libstdc++, чтобы разрешить создание этих библиотек с - поддержкой потоков POSIX: -

-
sed '/thread_header =/s/@.*@/gthr-posix.h/' \
-    -i libgcc/Makefile.in libstdc++-v3/include/Makefile.in
-

- Снова создайте отдельный каталог сборки: -

-
mkdir -v build
-cd       build
-

- Перед началом сборки GCC не забудьте отключить все переменные - среды, которые переопределяют флаги оптимизации по умолчанию. -

-

- Теперь подготовьте GCC к компиляции: -

-
../configure                                       \
-    --build=$(../config.guess)                     \
-    --host=$LFS_TGT                                \
-    --target=$LFS_TGT                              \
-    LDFLAGS_FOR_TARGET=-L$PWD/$LFS_TGT/libgcc      \
-    --prefix=/usr                                  \
-    --with-build-sysroot=$LFS                      \
-    --enable-default-pie                           \
-    --enable-default-ssp                           \
-    --disable-nls                                  \
-    --disable-multilib                             \
-    --disable-libatomic                            \
-    --disable-libgomp                              \
-    --disable-libquadmath                          \
-    --disable-libsanitizer                         \
-    --disable-libssp                               \
-    --disable-libvtv                               \
-    --enable-languages=c,c++
-
-

- Значение новых параметров настройки: -

-
-
- --with-build-sysroot=$LFS -
-
-

- Обычно, использование --host гарантирует, что - для сборки GCC используется кросс-компилятор, и этот - компилятор знает, что он должен искать заголовочные - файлы и библиотеки в $LFS. Но сборочная система GCC - использует другие инструменты, которые не знают об этом - местоположении. Этот параметр необходим для того, чтобы - они могли найти нужные файлы в $LFS, а не на хосте. -

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

- Поскольку мы выполняем кросс-компиляцию GCC, невозможно - создать целевые библиотеки (libgcc и libstdc++) с ранее скомпилированными - двоичными файлами GCC, потому что эти двоичные файлы не - будут работать на хост-дистрибутиве. Система сборки GCC - по умолчанию попытается использовать компиляторы C и - C++ хоста в качестве обходного пути. Сейчас не - поддерживается создание целевых библиотек GCC с помощью - другой версии GCC, поэтому использование компиляторов - хоста может привести к сбою сборки. Этот параметр - гарантирует сборку библиотек с помощью GCC собранного - на первом проходе. -

-
-
- LDFLAGS_FOR_TARGET=... -
-
-

- Разрешить libstdc++ - использовать общую библиотеку libgcc, собранную на этом этапе, - вместо статической версии, собранной в GCC Проход 1. - Это необходимо для поддержки обработки исключений C++ -

-
-
- --disable-libsanitizer -
-
-

- Отключает библиотеки среды выполнения GCC sanitizer. - Они не нужны для временного набора инструментов. Этот - параметр необходим для сборки GCC без установки - libcrypt для целевого - объекта. В GCC-Проход 1 это - решалось с помощью параметра --disable-libstdcxx, но - теперь мы должны передать его явно. -

-
-
-
-

- Скомпилируйте пакет: -

-
make
-

- Установите пакет: -

-
make DESTDIR=$LFS install
-

- В качестве завершающего штриха создайте символическую ссылку - на утилиту. Многие программы и скрипты используют - cc вместо - gcc, чтобы - сделать программы более универсальными и, следовательно, для - совместимости со всеми типами UNIX-систем, где компилятор GNU - C не всегда установлен. Наличие cc оставляет системному - администратору право самостоятельно решать, какой компилятор - C устанавливать: -

-
ln -sv gcc $LFS/usr/bin/cc
-
-
-

- Подробная информация об этом пакете находится в Раздел 8.27.2, - «Содержимое пакета GCC.» -

-
-
-
-
-
-
-
-

- Глава 7. Вход в - окружение Chroot и создание дополнительных временных - инструментов -

-
-
-
-
-
-
-
-

- 7.1. Введение -

-
-
-
-

- В этой главе рассказывается, как собрать последние недостающие - части временной системы: инструменты, необходимые для сборки - различных пакетов. Теперь, когда все циклические зависимости - устранены, для сборки можно использовать среду «chroot», полностью - изолированную от операционной системы хоста (за исключением - работающего ядра). -

-

- Для правильной работы изолированной среды необходимо установить - связь с работающим ядром. Это делается с помощью так называемых - виртуальных файловых систем - ядра, которые будут смонтированы перед входом в - среду chroot. Вы можете проверить, смонтированы ли они, - выполнив команду findmnt. -

-

- До Раздел 7.4, «Вход в - окружение Chroot» команды должны выполняться от имени - root с установленной переменной - LFS. После входа в chroot все - команды выполняются от имени root, к счастью, без доступа к операционной - системе компьютера, на котором вы собираете LFS. В любом случае - будьте осторожны, так как неверными командами легко разрушить - всю систему LFS. -

-
-
-
-
-
-

- 7.2. Смена владельца -

-
-
-
-
-

- Примечание -

-

- Команды, приведенные в оставшейся части книги, должны - выполняться от имени пользователя root, а не lfs. Дважды проверьте, что переменная - $LFS установлена в переменных - окружения пользователя root. -

-
-

- В настоящее время вся иерархия каталогов в $LFS принадлежит пользователю lfs, существующему только на хост-системе. - Если права на файлы и каталоги внутри $LFS оставить как есть, то они будут - принадлежать ID пользователя без существующей учетной записи. - Это опасно, так как созданная позже учетная запись, может - получить такой же ID пользователя и стать владельцем всех - файлов в $LFS, тем самым делая - эти файлы уязвимыми для возможных злонамеренных манипуляций. -

-

- Для решения проблемы измените владельца каталогов $LFS/* на пользователя root выполнив следующую команду: -

-
chown -R root:root $LFS/{usr,lib,var,etc,bin,sbin,tools}
-case $(uname -m) in
-  x86_64) chown -R root:root $LFS/lib64 ;;
-esac
-
-
-
-
-
-

- 7.3. Подготовка виртуальных - файловых систем ядра -

-
-
-
-

- Приложения, работающие в пользовательском пространстве, - используют различные файловые системы, созданные ядром, для - взаимодействия с самим ядром. Эти файловые системы являются - виртуальными: для них не используется дисковое пространство. - Содержимое файловых систем находится в памяти. Эти файловые - системы должны быть смонтированы в дереве каталогов $LFS, чтобы - приложения могли найти их в среде chroot. -

-

- Начните с создания каталогов, в которые будут смонтированы эти - виртуальные файловые системы: -

-
mkdir -pv $LFS/{dev,proc,sys,run}
-
-

- 7.3.1. Монтирование и заполнение - /dev -

-

- Во время обычной загрузки ядро автоматически монтирует - файловую систему devtmpfs в - каталог /dev; ядро создает узлы - устройств в этой виртуальной файловой системе в процессе - загрузки или при первом обнаружении устройства, или доступе к - нему. Демон udev может изменять владельца или разрешения - узлов устройств, созданных ядром, или создавать новые узлы - устройств или символические ссылки, чтобы облегчить работу - разработчиков дистрибутива или системных администраторов. - (Подробности смотрите в Раздел 9.3.2.2, - «Создание узла устройства».) Если ядро хоста поддерживает - devtmpfs, мы можем просто - смонтировать devtmpfs в - $LFS/dev и положиться на ядро - для его заполнения. -

-

- Но в некоторых ядрах хоста отсутствует поддержка devtmpfs, эти хост-дистрибутивы - используют разные методы для создания содержимого - /dev. Таким образом, - единственный независимый от хоста способ заполнить каталог - $LFS/dev - это привязка к - каталогу /dev хост-системы. - Связное монтирование - это особый тип монтирования, который - делает дерево каталога или файл видимым в каком-либо другом - месте. Для этого используйте следующую команду: -

-
mount -v --bind /dev $LFS/dev
-
-
-

- 7.3.2. Монтирование виртуальных - файловых систем ядра -

-

- Теперь смонтируйте оставшиеся виртуальные файловые системы: -

-
mount -v --bind /dev/pts $LFS/dev/pts
-mount -vt proc proc $LFS/proc
-mount -vt sysfs sysfs $LFS/sys
-mount -vt tmpfs tmpfs $LFS/run
-

- В некоторых хост-системах /dev/shm является символической ссылкой на - /run/shm. /run tmpfs был - смонтирован выше, поэтому нужно создать только каталог. -

-

- В других хост-системах /dev/shm - является точкой монтирования для tmpfs. В этом случае - монтирование /dev приведет только к созданию /dev/shm как - каталога в среде chroot. В этой ситуации мы должны явно - смонтировать tmpfs: -

-
if [ -h $LFS/dev/shm ]; then
-  mkdir -pv $LFS/$(readlink $LFS/dev/shm)
-else
-  mount -t tmpfs -o nosuid,nodev tmpfs $LFS/dev/shm
-fi
-
-
-
-
-
-
-

- 7.4. Вход в окружение Chroot -

-
-
-
-

- Теперь, когда все пакеты, необходимые для сборки остальных - инструментов установлены в системе, пришло время войти в - окружение chroot и завершить установку временных инструментов. - Эта среда также будет использоваться для установки конечной - системы. От имени пользователя root выполните следующую команду для входа - в chroot, в которой на данный момент нет ничего, кроме - временных инструментов: -

-
chroot "$LFS" /usr/bin/env -i   \
-    HOME=/root                  \
-    TERM="$TERM"                \
-    PS1='(lfs chroot) \u:\w\$ ' \
-    PATH=/usr/bin:/usr/sbin     \
-    /bin/bash --login
-

- Параметр -i команды - env, очистит все - переменные в среде chroot. После этого переменные HOME, TERM, - PS1 и PATH будут установлены заново. Конструкция - TERM=$TERM установит - переменную TERM внутри chroot в то же значение, что и вне - chroot. Эта переменная необходима для корректной работы таких - программ как vim - и less. Если - понадобятся другие переменные окружения, такие как CFLAGS или CXXFLAGS, - то это подходящее место для их установки. -

-

- С этого момента больше нет необходимости использовать - переменную LFS, поскольку вся работа - будет ограничена файловой системой LFS; команда chroot запускает оболочку - Bash с корневым каталогом (/), - установленным в $LFS. -

-

- Обратите внимание, что каталог /tools/bin не указан в переменной окружения - PATH. Это означает, что - кросс-тулчейн больше не будет использоваться. -

-

- Обратите внимание, что в командной строке bash будет указано - I have no name!. Это - нормально, поскольку файл /etc/passwd еще не создан. -

-
-

- Примечание -

-

- Важно, чтобы все команды в оставшейся части этой главы и - следующих главах выполнялись из среды chroot. Если вы - покидаете эту среду по какой-либо причине (например, при - перезагрузке), убедитесь, что файловые системы виртуального - ядра смонтированы, как описано в Раздел 7.3.1, - «Монтирование и заполнение /dev» и Раздел 7.3.2, - «Монтирование виртуальных файловых систем ядра», а затем - войдите в среду chroot для продолжения установки. -

-
-
-
-
-
-
-

- 7.5. Создание каталогов -

-
-
-
-

- Пришло время создать полную структуру каталогов в файловой - системе LFS. -

-
-

- Примечание -

-

- Некоторые из каталогов, упомянутых в этом разделе, возможно, - уже были созданы ранее с помощью явных инструкций или при - установке некоторых пакетов. Они повторяются ниже для полноты - картины. -

-
-

- Создайте несколько каталогов, которые не входили в ограниченный - набор, используемый в предыдущих главах, выполнив следующую - команду: -

-
mkdir -pv /{boot,home,mnt,opt,srv}
-

- Создайте необходимые подкаталоги, выполнив следующие команды: -

-
mkdir -pv /etc/{opt,sysconfig}
-mkdir -pv /lib/firmware
-mkdir -pv /media/{floppy,cdrom}
-mkdir -pv /usr/{,local/}{include,src}
-mkdir -pv /usr/local/{bin,lib,sbin}
-mkdir -pv /usr/{,local/}share/{color,dict,doc,info,locale,man}
-mkdir -pv /usr/{,local/}share/{misc,terminfo,zoneinfo}
-mkdir -pv /usr/{,local/}share/man/man{1..8}
-mkdir -pv /var/{cache,local,log,mail,opt,spool}
-mkdir -pv /var/lib/{color,misc,locate}
-
-ln -sfv /run /var/run
-ln -sfv /run/lock /var/lock
-
-install -dv -m 0750 /root
-install -dv -m 1777 /tmp /var/tmp
-

- По умолчанию каталоги создаются с правами 755, но это - нежелательно делать для всех каталогов. В приведенных выше - командах вносятся два изменения — одно в домашний каталог - пользователя root, а другое в - каталоги для временных файлов. -

-

- Первое изменение гарантирует, что никто не сможет войти в - каталог /root — точно так же, как - обычный пользователь сделал бы это со своим собственным - домашним каталогом. Второе изменение гарантирует, что любой - пользователь может писать в каталоги /tmp и /var/tmp, но не может удалять из них файлы - другого пользователя. Последнее запрещено так называемым - «sticky bit (липким - битом)», старшим битом (1) в битовой маске 1777 -

-
-

- 7.5.1. Примечание о соответствии требованиям FHS -

-

- Это дерево каталогов основано на стандарте иерархии файловой - системы (FHS) (доступен по адресу https://refspecs.linuxfoundation.org/fhs.shtml). - FHS также указывает, что наличие некоторых каталогов - необязательно, например, /usr/local/games и /usr/share/games. В LFS мы создаем только - те каталоги, которые действительно необходимы. Однако, не - стесняйтесь создавать дополнительные каталоги, если хотите. -

-
-

- Предупреждение -

-

- FHS не требует наличия каталога /usr/lib64, и редакторы LFS решили его не - использовать. Чтобы инструкции в LFS и BLFS работали - корректно, крайне важно, чтобы этот каталог не существовал. - Время от времени вам следует проверять, что он не - существует, потому что его легко создать непреднамеренно, и - это, вероятно, приведет к поломке вашей системы. -

-
-
-
-
-
-
-
-

- 7.6. Создание основных - файлов и символических ссылок -

-
-
-
-

- Исторически сложилось, что Linux хранит список примонтированных - файловых систем в файле /etc/mtab. Современные ядра хранят этот - список внутри себя и предоставляют его пользователю через - файловую систему /proc. Чтобы - удовлетворять требованиям утилит, которые ожидают наличия - /etc/mtab, создайте следующую - символическую ссылку: -

-
ln -sv /proc/self/mounts /etc/mtab
-

- Создайте файл /etc/hosts, на - который будут ссылаться некоторые наборы тестов, а также один - из файлов конфигурации Perl: -

-
cat > /etc/hosts << EOF
-127.0.0.1  localhost $(hostname)
-::1        localhost
-EOF
-

- Чтобы пользователь root мог - войти в систему и распознавался системой, в файлах /etc/passwd и /etc/group должны быть соответствующие - записи. -

-

- Создайте файл /etc/passwd - выполнив следующую команду: -

-
cat > /etc/passwd << "EOF"
-root:x:0:0:root:/root:/bin/bash
-bin:x:1:1:bin:/dev/null:/usr/bin/false
-daemon:x:6:6:Daemon User:/dev/null:/usr/bin/false
-messagebus:x:18:18:D-Bus Message Daemon User:/run/dbus:/usr/bin/false
-uuidd:x:80:80:UUID Generation Daemon User:/dev/null:/usr/bin/false
-nobody:x:65534:65534:Unprivileged User:/dev/null:/usr/bin/false
-EOF
-

- Пароль пользователя root будет - задан позднее. -

-

- Создайте файл /etc/group, - выполнив следующую команду: -

-
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:
-uuidd:x:80:
-wheel:x:97:
-users:x:999:
-nogroup:x:65534:
-EOF
-

- Созданные группы не являются частью какого-либо стандарта — это - группы, определяемые частично требованиями конфигурации Udev в - главе 9, а частично общими соглашениями, используемыми в ряде - существующих дистрибутивов Linux. Кроме того, некоторые наборы - тестов зависят от конкретных пользователей или групп. - Спецификация LSB (доступна по адресу https://refspecs.linuxfoundation.org/lsb.shtml) - рекомендует, чтобы, помимо группы root с идентификатор (GID) 0 присутствовала - группа bin с GID 1. GID 5 - широко используется для группы tty, число 5 также используется в - /etc/fstab для файловой системы - devpts. Все остальные имена - групп и GID могут свободно выбираться системным - администратором, так как хорошо написанные программы не зависят - от номеров GID, а чаще используют название группы. -

-

- Идентификатор 65534 используется ядром для NFS и отдельных - пользовательских пространств имен для несопоставленных - пользователей и групп (они существуют на сервере NFS или - родительском пространстве имен пользователя, но «не существует» на - локальном компьютере или в отдельном пространстве имен). Мы - присваиваем nobody и - nogroup для того, чтобы - избежать несопоставленных идентификаторов. Другие дистрибутивы - могут обрабатывать этот идентификатор по-разному, поэтому любая - переносимая программа не должна зависеть от этого присвоения. -

-

- Для некоторых тестов в - Глава 8 требуется обычный пользователь. Добавим такого - пользователя здесь и удалим эту учетную запись в конце главы. -

-
echo "tester:x:101:101::/home/tester:/bin/bash" >> /etc/passwd
-echo "tester:x:101:" >> /etc/group
-install -o tester -d /home/tester
-

- Чтобы удалить приглашение «I have no name!», запустите новую - оболочку. Поскольку файлы /etc/passwd и /etc/group были созданы, разрешение имен - пользователей и групп теперь будет работать: -

-
exec /usr/bin/bash --login
-

- Программы login, - agetty, - init (и другие) - используют ряд журналов для записи такой информации, как кто и - когда входил в систему. Однако эти программы не будут - записывать данные в журналы, если они еще не существуют. - Инициализируйте журналы и предоставьте им соответствующие - разрешения: -

-
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
-

- В файл /var/log/wtmp записываются - все входы и выходы из системы. В файл /var/log/lastlog записывается время - последнего входа каждого пользователя в систему. В файл - /var/log/faillog записываются - неудачные попытки входа в систему. В файл /var/log/btmp записываются неудачные попытки - входа в систему. -

-
-

- Примечание -

-

- В файле /run/utmp записываются - пользователи, которые в данный момент вошли в систему. Он - создаётся динамически, в процессе выполнения сценариев - загрузки. -

-
-
-
-
-
-
-

- 7.7. Gettext-0.22 -

-
-
-
-
-

- Пакет Gettext содержит утилиты для интернационализации и - локализации. Они позволяют компилировать программы с - поддержкой NLS (Native Language Support), позволяя им - выводить сообщения на родном языке пользователя. -

-
-
-
- Приблизительное время - сборки: 1.1 SBU -
-
- Требуемое дисковое - пространство: 306 - MB -
-
-
-
-
-

- 7.7.1. Установка пакета Gettext -

-

- Для временного набора инструментов нам нужно установить - только три программы из пакета Gettext. -

-

- Подготовьте Gettext к компиляции: -

-
./configure --disable-shared
-
-

- Значение параметров настройки: -

-
-
- --disable-shared -
-
-

- В настоящее время нам не нужно устанавливать какие-либо - общие библиотеки Gettext, поэтому нет необходимости их - собирать. -

-
-
-
-

- Скомпилируйте пакет: -

-
make
-

- Установите программы msgfmt, msgmerge, и xgettext programs: -

-
cp -v gettext-tools/src/{msgfmt,msgmerge,xgettext} /usr/bin
-
-
-

- Подробная информация об этом пакете находится в Раздел 8.32.2, - «Содержимое пакета Gettext.» -

-
-
-
-
-
-
-

- 7.8. Bison-3.8.2 -

-
-
-
-
-

- Пакет Bison содержит генератор синтаксического анализа. -

-
-
-
- Приблизительное время - сборки: 0.2 SBU -
-
- Требуемое дисковое - пространство: 57 MB -
-
-
-
-
-

- 7.8.1. Установка пакета Bison -

-

- Подготовьте Bison к компиляции: -

-
./configure --prefix=/usr \
-            --docdir=/usr/share/doc/bison-3.8.2
-
-

- Значение нового параметра конфигурации: -

-
-
- --docdir=/usr/share/doc/bison-3.8.2 -
-
-

- Этот параметр указывает системе сборки установить - документацию к bison в каталог с версией пакета. -

-
-
-
-

- Скомпилируйте пакет: -

-
make
-

- Установите пакет: -

-
make install
-
-
-

- Подробная информация об этом пакете находится в Раздел 8.33.2, - «Содержимое пакета Bison.» -

-
-
-
-
-
-
-

- 7.9. Perl-5.38.0 -

-
-
-
-
-

- Пакет Perl содержит практический язык для извлечения данных и - составления отчётов (Practical Extraction and Report - Language). -

-
-
-
- Приблизительное время - сборки: 0.6 SBU -
-
- Требуемое дисковое - пространство: 280 - MB -
-
-
-
-
-

- 7.9.1. Установка пакета Perl -

-

- Подготовьте Perl к компиляции: -

-
sh Configure -des                                        \
-             -Dprefix=/usr                               \
-             -Dvendorprefix=/usr                         \
-             -Duseshrplib                                \
-             -Dprivlib=/usr/lib/perl5/5.38/core_perl     \
-             -Darchlib=/usr/lib/perl5/5.38/core_perl     \
-             -Dsitelib=/usr/lib/perl5/5.38/site_perl     \
-             -Dsitearch=/usr/lib/perl5/5.38/site_perl    \
-             -Dvendorlib=/usr/lib/perl5/5.38/vendor_perl \
-             -Dvendorarch=/usr/lib/perl5/5.38/vendor_perl
-
-

- Значение новых опций Configure: -

-
-
- -des -
-
-

- Это комбинация из трех параметров: -d использует - значения по умолчанию для всех элементов; -e - обеспечивает выполнение всех задач; -s отключает - несущественные выходные данные. -

-
-
-
-

- Скомпилируйте пакет: -

-
make
-

- Установите пакет: -

-
make install
-
-
-

- Подробная информация об этом пакете находится в Раздел 8.42.2, - «Содержимое пакета Perl.» -

-
-
-
-
-
-
-

- 7.10. Python-3.11.4 -

-
-
-
-
-

- Пакет Python 3 содержит среду разработчика Python. Его можно - использовать для объектно-ориентированного программирования, - написания скриптов, прототипирования больших программ и - разработка целых приложений. Python — это интерпретируемый - язык программирования. -

-
-
-
- Приблизительное время - сборки: 0.4 SBU -
-
- Требуемое дисковое - пространство: 533 - MB -
-
-
-
-
-

- 7.10.1. Установка пакета Python -

-
-

- Примечание -

-

- Есть два пакета, имена которых начинаются с «python». Нужный - архив это Python-3.11.4.tar.xz (обратите внимание - на заглавную первую букву). -

-
-

- Подготовка Python к компиляции: -

-
./configure --prefix=/usr   \
-            --enable-shared \
-            --without-ensurepip
-
-

- Значение параметров настройки: -

-
-
- --enable-shared -
-
-

- Этот параметр отключает установку статичных библиотек. -

-
-
- --without-ensurepip -
-
-

- Этот параметр отключает установщик пакетов Python, - который на данном этапе не нужен. -

-
-
-
-

- Скомпилируйте пакет: -

-
make
-
-

- Примечание -

-

- Некоторые модули Python 3 не могут быть собраны сейчас, - потому что зависимости еще не установлены. Система сборки - пытается их собрать, в результате компиляция некоторых - файлов завершится ошибкой, и может показаться, что - сообщение компилятора указывает на «фатальную - ошибку». Сообщение следует проигнорировать. - Просто убедитесь, что команда make верхнего уровня не - завершилась ошибкой. Дополнительные модули сейчас не нужны, - и они будут собраны в - Глава 8. -

-
-

- Установите пакет: -

-
make install
-
-
-

- Подробная информация об этом пакете находится в Раздел 8.51.2, - «Содержимое пакета Python 3.» -

-
-
-
-
-
-
-

- 7.11. Texinfo-7.0.3 -

-
-
-
-
-

- Пакет Texinfo содержит программы для чтения, записи и - преобразования информационных страниц. -

-
-
-
- Приблизительное время - сборки: 0.1 SBU -
-
- Требуемое дисковое - пространство: 116 - MB -
-
-
-
-
-

- 7.11.1. Установка пакета Texinfo -

-

- Подготовьте Texinfo к компиляции: -

-
./configure --prefix=/usr
-

- Скомпилируйте пакет: -

-
make
-

- Установите пакет: -

-
make install
-
-
-

- Подробная информация об этом пакете находится в Раздел 8.70.2, - «Содержимое пакета Texinfo.» -

-
-
-
-
-
-
-

- 7.12. Util-linux-2.39.1 -

-
-
-
-
-

- Пакет Util-linux содержит различные служебные программы. - Среди них утилиты для работы с файловыми системами, - консолями, разделами и сообщениями. -

-
-
-
- Приблизительное время - сборки: 0.2 SBU -
-
- Требуемое дисковое - пространство: 169 - MB -
-
-
-
-
-

- 7.12.1. Установка пакета Util-linux -

-

- FHS рекомендует использовать каталог /var/lib/hwclock вместо каталога - /etc в качестве местоположения - для файла adjtime. Создайте - этот каталог: -

-
mkdir -pv /var/lib/hwclock
-

- Подготовьте Util-linux к компиляции: -

-
./configure ADJTIME_PATH=/var/lib/hwclock/adjtime    \
-            --libdir=/usr/lib    \
-            --runstatedir=/run   \
-            --docdir=/usr/share/doc/util-linux-2.39.1 \
-            --disable-chfn-chsh  \
-            --disable-login      \
-            --disable-nologin    \
-            --disable-su         \
-            --disable-setpriv    \
-            --disable-runuser    \
-            --disable-pylibmount \
-            --disable-static     \
-            --without-python
-
-

- Значение параметров настройки: -

-
-
- ADJTIME_PATH=/var/lib/hwclock/adjtime -
-
-

- Этот параметр устанавливает расположение файла для - записи информации об аппаратных часах в соответствии с - FHS. Он не обязателен для временного инструментария, но - предотвращает создание файла в другом месте, где файл - не будет перезаписан или удален при финальной сборке - пакета util-linux. -

-
-
- --libdir=/usr/lib -
-
-

- Этот параметр гарантирует, что символические ссылки - .so, будут указывать на - файл общей библиотеки в том же каталоге (/usr/lib). -

-
-
- --disable-* -
-
-

- Этот параметр предотвращают появление предупреждений о - сборке компонентов, для которых требуются пакеты, - отсутствующие или еще не установленные в LFS. -

-
-
- --without-python -
-
-

- Этот параметр отключает использование Python. Это позволяет избежать - попыток создания ненужных привязок. -

-
-
- --runstatedir=/run -
-
-

- Этот параметр устанавливает расположение сокета, - используемого uuidd и libuuid. -

-
-
-
-

- Скомпилируйте пакет: -

-
make
-

- Установите пакет: -

-
make install
-
-
-

- Подробная информация об этом пакете находится в Раздел 8.77.2, - «Содержимое пакета Util-linux.» -

-
-
-
-
-
-
-

- 7.13. Очистка и сохранение - временной системы -

-
-
-
-
-

- 7.13.1. Очистка -

-

- Во-первых, удалите установленную документацию, чтобы - предотвратить ее попадание в конечную систему и сэкономить - около 35 МБ места: -

-
rm -rf /usr/share/{info,man,doc}/*
-

- Во-вторых, в современных системах Linux файлы .la библиотеки - libtool полезны только для libltdl. Никакие библиотеки в LFS - не загружаются с помощью libltdl. Известно, что некоторые - файлы .la могут привести к сбою во время сборки пакетов BLFS. - Удалите эти файлы сейчас: -

-
find /usr/{lib,libexec} -name \*.la -delete
-

- Сейчас размер системы составляет около 3 ГБ, однако каталог - /tools больше не понадобится. Удалите его, чтобы освободить - около 1 ГБ дискового пространства: -

-
rm -rf /tools
-
-
-

- 7.13.2. Резервное копирование -

-

- На данный момент основные программы и библиотеки собраны, и - ваша система LFS находится в хорошем состоянии. Можно создать - резервную копию вашей системы для последующего повторного - использования. В случае фатальных сбоев в следующих главах - часто оказывается, что удалить все и начать заново (более - осторожно) — лучший вариант восстановления. К сожалению, все - временные файлы также будут удалены. Чтобы не тратить лишнее - время на повторную сборку того, что было успешно собрано, - полезно создать резервную копию текущей системы LFS. -

-
-

- Примечание -

-

- Все остальные шаги в этом разделе являются необязательными. - Тем не менее, как только вы начнете устанавливать пакеты в - - Глава 8, временные файлы будут перезаписаны. - Поэтому рекомендуется создание резервной копии текущей - системы, как описано ниже. -

-
-

- Следующие шаги выполняются вне среды chroot. Это означает, - что прежде чем продолжить вы должны покинуть среду chroot. - Причиной этого является то, что необходимо получить доступ к - расположению файловой системы за пределами среды chroot для - хранения/чтения архива резервных копий, который не должен - размещаться в иерархии $LFS. -

-

- Если вы решили сделать резервную копию, покиньте среду - chroot: -

-
exit
-
-

- Важно -

-

- Все следующие инструкции выполняются пользователем - root в вашей хост-системе. - Будьте особенно внимательны к командам, которые вы - собираетесь запускать, поскольку ошибки, допущенные здесь, - могут изменить вашу хост-систему. Имейте в виду, что - переменная окружения LFS по - умолчанию установлена для пользователя lfs, но может не быть установлена для - root. -

-

- Всякий раз, когда команды должны выполняться от - root, убедитесь, что вы - установили переменную LFS. -

-

- Это обсуждалось в Раздел 2.6, - «Установка переменной $LFS». -

-
-

- Перед созданием резервной копии размонтируйте виртуальные - файловые системы: -

-
mountpoint -q $LFS/dev/shm && umount $LFS/dev/shm
-umount $LFS/dev/pts
-umount $LFS/{sys,proc,run,dev}
-

- Убедитесь, что у вас есть как минимум 1 ГБ свободного места - на диске (исходные tar-архивы будут включены в архив - резервных копий) в файловой системе, содержащей каталог, в - котором вы создаете архив резервных копий. -

-

- Обратите внимание, что в приведенных ниже инструкциях указан - домашний каталог пользователя root хост-системы, который обычно - находится в корневой файловой системе. Замените $HOME каталогом на ваш выбор, если вы не - хотите, чтобы резервная копия хранилась в домашнем каталоге - пользователя root. -

-

- Создайте архив резервной копии, выполнив следующую команду: -

-
-

- Примечание -

-

- Поскольку архив резервной копии сжимается, процесс занимает - довольно много времени (более 10 минут) даже на достаточно - быстрой системе. -

-
-
cd $LFS
-tar -cJpf $HOME/lfs-temp-tools-12.0.tar.xz .
-
-

- Примечание -

-

- Если вы переходите к главе 8, не забудьте повторно войти в - среду chroot, как описано в разделе «Важно» ниже. -

-
-
-
-

- 7.13.3. Восстановление -

-

- В случае, если были допущены какие-либо ошибки и вам нужно - начать все сначала, вы можете использовать эту резервную - копию для восстановления системы и сэкономить время на - восстановление. Поскольку исходники находятся в папке - $LFS, они также включены в - архив резервной копии, поэтому их не нужно загружать - повторно. Убедившись, что переменная $LFS настроена правильно, вы можете - восстановить резервную копию, выполнив следующие команды: -

-
-

- Предупреждение -

-

- Следующие команды чрезвычайно опасны. Если вы запустите - команду rm -rf - ./* от имени пользователя root и не перейдете в каталог $LFS или - переменная окружения LFS не - будет установлена для пользователя root, это уничтожит всю вашу - хост-систему. ВЫ ПРЕДУПРЕЖДЕНЫ. -

-
-
cd $LFS
-rm -rf ./*
-tar -xpf $HOME/lfs-temp-tools-12.0.tar.xz
-

- Еще раз проверьте, правильно ли настроено окружение, и - продолжайте сборку остальной части системы. -

-
-

- Важно -

-

- Если вы покинули среду chroot, чтобы создать резервную - копию или перезапустить сборку с помощью восстановления, не - забудьте проверить, что виртуальные файловые системы все - еще смонтированы (findmnt | - grep $LFS). Если они не смонтированы, - перемонтируйте их сейчас, как описано в Раздел 7.3, - «Подготовка виртуальных файловых систем ядра», и - повторно войдите в среду chroot (см. Раздел 7.4, «Вход в - окружение Chroot»), прежде чем продолжить. -

-
-
-
-
-
-
-
-
-
-

- Часть IV. Сборка системы LFS -

-
-
-
-
-
-
-
-

- Глава 8. Установка - базового системного программного обеспечения -

-
-
-
-
-
-
-
-

- 8.1. Введение -

-
-
-
-

- В этой главе мы приступаем к сборке конечной системы LFS. -

-

- Установка программного обеспечения проста. Хотя во многих - случаях инструкции по установке можно было бы сделать короче и - универсальнее, мы решили предоставить полные инструкции для - каждого пакета, чтобы свести к минимуму вероятность ошибок. - Ключом к пониманию того, что заставляет систему Linux работать, - является знание того, для чего используется каждый пакет и - зачем он вам (или системе) может понадобиться. -

-

- Мы не рекомендуем использовать оптимизации. С ними программа - может работать немного быстрее, но также они могут вызвать - сложности при компиляции и проблемы при запуске программы. Если - пакет не компилируется при использовании оптимизации, - попробуйте скомпилировать его без оптимизации и посмотрите, - решает ли это проблему. Даже если пакет компилируется при - использовании оптимизации, существует риск, что он может быть - скомпилирован неправильно из-за сложных взаимодействий между - кодом и инструментами сборки. Также обратите внимание, что - параметры -march и -mtune, не тестировались со значениями - отличными от указанных в книге. Это может вызвать проблемы с - пакетами набора инструментов (Binutils, GCC и Glibc). Небольшие - потенциальные плюсы, достигаемые за счет оптимизации, часто - перевешиваются рисками. Тем кто собирает LFS впервые - рекомендуется делать это без пользовательских оптимизаций. -

-

- С другой стороны, мы сохраняем оптимизацию включенной в - конфигурации пакетов по умолчанию. Кроме того, иногда мы явно - включаем оптимизированную конфигурацию, предоставляемую - пакетом, но не включенную по умолчанию. Сопровождающие пакета - уже протестировали эти конфигурации и считают их безопасными, - поэтому маловероятно, что они сломают сборку. Как правило, - конфигурация по умолчанию уже включает параметры -O2 или -O3, - поэтому результирующая система по-прежнему будет работать очень - быстро без какой-либо пользовательской оптимизации и в то же - время будет стабильной. -

-

- Перед инструкцией по установке на каждой странице представлена - информация о пакете, включая краткое описание того, что он - содержит, примерное время, необходимое для сборки, и сколько - места на диске требуется в процессе сборки. После инструкции по - установке идет список программ и библиотек (вместе с кратким - описанием), которые устанавливает пакет. -

-
-

- Примечание -

-

- Для всех пакетов в - Глава 8 значения SBU и требуемое дисковое - пространство указано с учетом тестов. Значения SBU были - рассчитаны с использованием четырех ядер ЦП (-j4) для всех - операций, если не указано иное. -

-
-
-

- 8.1.1. О библиотеках -

-

- Как правило, редакторы LFS не рекомендуют собирать и - устанавливать статические библиотеки. Большинство статических - библиотек устарели в современной системе Linux. Кроме того, - линковка статической библиотеки с программой может быть - вредна. Если для устранения проблемы безопасности требуется - обновление библиотеки, все программы, использующие - статическую библиотеку, необходимо будет повторно - перелинковать с новой библиотекой. Поскольку использование - статических библиотек не всегда очевидно, соответствующие - программы (и процедуры, необходимые для линковки) могут быть - даже неизвестны. -

-

- В инструкциях этой главы мы удаляем или отключаем установку - большинства статических библиотек. Обычно это делается путем - передачи параметра --disable-static при выполнении configure. Иногда - необходимо использовать альтернативные методы. В некоторых - случаях, в частности в пакетах Glibc и GCC, использование - статических библиотек остается важным элементом процесса - сборки пакетов. -

-

- Более подробное обсуждение библиотек смотрите - Библиотеки: статические или общие? в книге BLFS. -

-
-
-
-
-
-
-

- 8.2. Управление пакетами -

-
-
-
-

- Управление пакетами — часто cпрашиваемое дополнение к книге - LFS. Менеджер пакетов позволяет отслеживать установку файлов, - упрощая удаление и обновление пакетов. Хороший менеджер пакетов - также будет обрабатывать конфигурационные файлы, чтобы - сохранить пользовательские настройки при переустановке или - обновлении пакета. Прежде чем вы начнете задаваться вопросом, - НЕТ—в этом разделе не будет ни говориться, ни рекомендоваться - какой-либо конкретный менеджер пакетов. Что он действительно - предоставляет, так это обзор наиболее популярных методов и - того, как они работают. Идеальным менеджером пакетов для вас - может быть один из этих методов или комбинация двух и более - методов. В этом разделе кратко упоминаются проблемы, которые - могут возникнуть при обновлении пакетов. -

-

- Некоторые причины, по которым менеджер пакетов не упоминается в - LFS или BLFS представлены ниже: -

-
-
    -
  • -

    - Рассмотрение управления пакетами отвлекает внимание от - целей этих книг—обучения тому, как строится система - Linux. -

    -
  • -
  • -

    - Существует множество решений для управления пакетами, - каждое из которых имеет свои сильные и слабые стороны. - Трудно найти такое, которое удовлетворит всех. -

    -
  • -
-
-

- Есть несколько советов, написанных на тему управления пакетами. - Посетите проект Советы - возможно вы найдете решение, которое соответствует вашим - потребностям. -

-
-

- 8.2.1. Проблемы с обновлением -

-

- Менеджер пакетов упрощает обновление до более новых версий - после их выпуска. Как правило, инструкции в книгах LFS и BLFS - можно использовать для обновления до более новых версий. Вот - некоторые моменты, о которых следует помнить при обновлении - пакетов, особенно в работающей системе. -

-
-
    -
  • -

    - Если нужно обновить ядро Linux (например, с 5.10.17 до - 5.10.18 или 5.11.1), дополнительно пересобирать ничего - не нужно. Система продолжит нормально работать - благодаря четко определенной границе между ядром и - пользовательским пространством. В частности, заголовки - Linux API не нужно (и не следует, см. следующий пункт) - обновлять вместе с ядром. Вам просто нужно - перезагрузить систему, чтобы использовать обновленное - ядро. -

    -
  • -
  • -

    - Если необходимо обновить заголовочные файлы Linux API - или Glibc до более новой версии (например, с Glibc-2.31 - до Glibc-2.32), безопаснее заново собрать LFS. Хотя вы - можете - пересобрать все пакеты с их зависимостями, мы не - рекомендуем этого делать. -

    -
  • -
  • -

    - Если пакет, содержащий общую библиотеку, обновляется и - имя библиотеки изменилось, то любые пакеты, динамически - связанные с библиотекой, необходимо перекомпилировать, - чтобы связать с более новой библиотекой. (Обратите - внимание, что между версией пакета и именем библиотеки - нет никакой связи.) Например, рассмотрим пакет - foo-1.2.3, который устанавливает общую библиотеку с - именем libfoo.so.1. - Предположим, вы обновили пакет до более новой версии - foo-1.2.4, которая устанавливает общую библиотеку с - именем libfoo.so.2, все - пакеты, которые динамически связаны с libfoo.so.1, должны быть - перекомпилированы для связи с libfoo.so.2, чтобы использовать новую - версию библиотеки. Вы не должны удалять старые - библиотеки, пока все зависимые пакеты не будут - перекомпилированы. -

    -
  • -
  • -

    - Если пакет (прямо или косвенно) связан как со старым, - так и с новым именем общей библиотеки (например, пакет - ссылается как на libfoo.so.2, так и на libbar.so.1, в то время как последний - ссылается на libfoo.so.3), пакет может работать - неправильно, поскольку разные версии общей библиотеки - содержат несовместимые определения для некоторых имен - символов. Это может быть вызвано перекомпиляцией - некоторых, но не всех, пакетов, связанных со старой - общей библиотекой, после обновления пакета, - предоставляющего общую библиотеку. Чтобы избежать этой - проблемы, пользователям необходимо как можно скорее - пересобрать каждый пакет, связанный с общей - библиотекой, с обновленной версией (например, с - libfoo.so.2 на libfoo.so.3). -

    -
  • -
  • -

    - Если пакет, содержащий общую библиотеку, обновляется, а - имя библиотеки не меняется, но уменьшается номер версии - файла - библиотеки (например, библиотека по-прежнему называется - libfoo.so.1, но имя файла - библиотеки изменилось с libfoo.so.1.25 на libfoo.so.1.24), следует удалить файл - библиотеки ранее установленной версии (в данном случае - libfoo.so.1.25). В - противном случае, команда ldconfig (запущенная - самостоятельно с помощью командной строки или при - установке какого-либо пакета) приведёт к сбросу - символической ссылки libfoo.so.1, которая будет указывать - на старый файл библиотеки, потому что кажется, что она - имеет «более - новую» версию, поскольку её номер версии - больше. Такая ситуация может произойти, если вам нужно - понизить версию пакета или авторы изменили схему - управления версиями файлов библиотеки. -

    -
  • -
  • -

    - Если пакет, содержащий общую библиотеку, обновляется, а - имя библиотеки не меняется, но устраняется серьезная - проблема (особенно уязвимость в системе безопасности), - необходимо перезапустить все работающие программы, - связанные с общей библиотекой. Следующая команда, - запущенная от имени пользователя root после завершения обновления, - выведет список программ, которые использует старые - версии этих библиотек (замените libfoo именем - библиотеки): -

    -
    grep -l 'libfoo.*deleted' /proc/*/maps | tr -cd 0-9\\n | xargs -r ps u
    -

    - Если для доступа к системе используется OpenSSH и он связан с обновленной - библиотекой, вам необходимо перезапустить службу - sshd, - затем выйти из системы, снова войти в систему и - повторно выполнить предыдущую команду, чтобы убедиться, - что удаленные библиотеки более не используются. -

    -
  • -
  • -

    - Если исполняемая программа или библиотека перезаписаны, - процессы, использующие код или данные из них, могут - завершиться сбоем. Правильный способ обновить программу - или общую библиотеку, не вызывая сбоя процесса, - это - сначала удалить его, а затем установить новую версию. - Команда install, - предоставляемая Coreutils, уже реализовала это, и - большинство пакетов используют ее для установки - двоичных файлов и библиотек. Это означает, что большую - часть времени вас не будет беспокоить эта проблема. - Однако процесс установки некоторых пакетов (в - частности, Mozilla JS в BLFS) просто перезаписывает - файл, если он существует, и вызывает сбой. Поэтому - безопаснее сохранить свою работу и закрыть ненужные - запущенные программы перед обновлением пакета. -

    -
  • -
-
-
-
-

- 8.2.2. Методы управления пакетами -

-

- Ниже приведены некоторые распространенные методы управления - пакетами. Прежде чем принять решение о менеджере пакетов, - проведите исследование различных методов, особенно недостатки - каждой конкретной схемы. -

-
-
-
-
-

- 8.2.2.1. Всё у меня в голове! -

-
-
-
-

- Да, это метод управления пакетами. Некоторым людям не нужен - менеджер пакетов, потому что они хорошо знакомы с пакетами - и знают, какие файлы устанавливаются каждым пакетом. - Некоторым пользователям также не требуется какое-либо - управление пакетами, поскольку они планируют пересобирать - всю систему при каждом изменении пакета. -

-
-
-
-
-
-

- 8.2.2.2. Установка в отдельные - каталоги -

-
-
-
-

- Это упрощенный метод управления пакетами, для которого не - требуется специальная программа для управления. Каждый - пакет устанавливается в отдельный каталог. Например, пакет - foo-1.1 устанавливается в /usr/pkg/foo-1.1, а символическая ссылка - создается из /usr/pkg/foo в - /usr/pkg/foo-1.1. Когда - появляется новая версия foo-1.2, она устанавливается в - /usr/pkg/foo-1.2 и предыдущая - символическая ссылка заменяется символической ссылкой на - новую версию. -

-

- Переменные окружения, такие как PATH, LD_LIBRARY_PATH, MANPATH, INFOPATH - и CPPFLAGS необходимо расширить, - включив каталог /usr/pkg/foo. - Для большого количества пакетов, такая схема становится - неуправляемой. -

-
-
-
-
-
-

- 8.2.2.3. Управление пакетами с - использованием символических ссылок -

-
-
-
-

- Это разновидность предыдущей техники.Каждый пакет - устанавливается аналогично, но вместо создания - символической ссылки на общее имя пакета, каждому файлу - создаётся символическая ссылка в иерархии каталогов - /usr. Это исключает - необходимость модификации значений переменных окружения. - Хотя такие ссылки могут быть созданы пользователем, многие - менеджеры пакетов используют именной такой подход. Наиболее - популярные из них - Stow, Epkg, Graft и Depot. -

-

- Установку нужно сымитировать, чтобы пакет думал, что он - установлен в /usr, хотя на - самом деле он установлен в иерархии /usr/pkg. Установка таким способом обычно - является нетривиальной задачей. Например, предположим, что - вы устанавливаете пакет libfoo-1.1. Следующие инструкции - могут привести к неправильной установке пакета: -

-
./configure --prefix=/usr/pkg/libfoo/1.1
-make
-make install
-

- Установка будет выполнена, но зависимые пакеты не смогут - ссылаться на libfoo. Если вы скомпилируете пакет, который - ссылается на libfoo, вы заметите, что он связан с - /usr/pkg/libfoo/1.1/lib/libfoo.so.1 - вместо /usr/lib/libfoo.so.1, - как вы ожидаете. Правильный подход заключается в - использовании переменной DESTDIR - для управления установкой. Этот подход работает следующим - образом: -

-
./configure --prefix=/usr
-make
-make DESTDIR=/usr/pkg/libfoo/1.1 install
-

- Большинство пакетов поддерживают этот подход, но есть и - такие, которые этого не делают. Для несовместимых пакетов - вам может потребоваться либо установить пакет вручную, либо - вы можете установить проблемные пакеты в /opt. -

-
-
-
-
-
-

- 8.2.2.4. На основе временной - метки -

-
-
-
-

- В этом методе файлу присваивается временная метка перед - установкой пакета. После установки простое использование - команды find - с соответствующими параметрами может создать журнал всех - файлов, установленных после создания файла с временной - метки. Менеджером пакетов, использующим этот подход, - является install-log. -

-

- Хотя преимущество этой схемы в том, что она проста, у нее - есть два недостатка. Если во время установки, файлы - устанавливаются с отметкой времени, отличной от текущего - времени, эти файлы не будут отслеживаться менеджером - пакетов. Кроме того, эта схема может использоваться только - при установке пакетов по одному. Журналы ненадежны, если - два пакета устанавливаются одновременно на двух разных - консолях. -

-
-
-
-
-
-

- 8.2.2.5. Отслеживание сценариев - установки -

-
-
-
-

- При таком подходе, записываются команды, выполняемые - сценариями установки. Есть два метода, которые можно - использовать: -

-

- Переменная среды LD_PRELOAD - может быть установлена так, чтобы она указывала на - библиотеку, которую нужно предварительно загрузить перед - установкой. Во время установки эта библиотека отслеживает - устанавливаемые пакеты, присоединяясь к различным - исполняемым файлам, таким как cp, install, mv, и отслеживая - системные вызовы, изменяющие файловую систему. Чтобы этот - подход работал, все исполняемые файлы должны быть - динамически связаны без битов suid или sgid. - Предварительная загрузка библиотеки может вызвать некоторые - нежелательные побочные эффекты во время установки. Поэтому - рекомендуется выполнить некоторые тесты, чтобы убедиться, - что менеджер пакетов ничего не сломает и что он - регистрирует все соответствующие файлы. -

-

- Другой метод заключается в использовании strace, который - регистрирует все системные вызовы, сделанные во время - выполнения сценариев установки. -

-
-
-
-
-
-

- 8.2.2.6. Создание архивов пакетов -

-
-
-
-

- В этой схеме установка пакета имитируется в отдельном - дереве, как описано ранее в разделе управление пакетами с - использованием символических ссылок. После установки из - установленных файлов создается архив пакета. Затем этот - архив используется для установки пакета на локальный - компьютер или даже на другие компьютеры. -

-

- Этот подход используется большинством менеджеров пакетов, - имеющихся в коммерческих дистрибутивах. Примерами - менеджеров пакетов, которые следуют этому подходу, являются - RPM (который, кстати, требуется согласно спецификации - Linux - Standard Base Specification), pkg-utils, apt Debian и - система Portage Gentoo. Описание того, как использовать - этот стиль управления пакетами для систем LFS, находится по - адресу - https://mirror.linuxfromscratch.ru/hints/downloads/files/fakeroot.txt. -

-

- Создание файлов пакетов, содержащих информацию о - зависимостях, является сложной задачей и выходит за рамки - LFS. -

-

- Slackware использует систему на основе tar для архивов пакетов. - Эта система намеренно не обрабатывает зависимости пакетов, - как это делают более сложные менеджеры пакетов. Подробнее - об управлении пакетами Slackware см. https://www.slackbook.org/html/package-management.html. -

-
-
-
-
-
-

- 8.2.2.7. Пользовательское - управление пакетами -

-
-
-
-

- Эта схема, уникальная для LFS, была разработана Маттиасом - Бенкманом и доступна в проекте - Hints. В этой схеме каждый пакет устанавливается - отдельным пользователем в стандартные папки. Файлы, - принадлежащие пакету, легко идентифицируются путем проверки - идентификатора пользователя. Особенности и недостатки этого - подхода слишком сложны, чтобы описывать их в этом разделе. - Для получения более подробной информации, пожалуйста, - ознакомьтесь с советами по адресу - https://mirror.linuxfromscratch.ru/hints/downloads/files/more_control_and_pkg_man.txt. -

-
-
-
-

- 8.2.3. Развертывание LFS на нескольких системах -

-

- Одним из преимуществ системы LFS является отсутствие файлов, - зависящих от положения файлов на диске. Клонировать сборку - LFS на другой компьютер с той же архитектурой, что и у - базовой системы, так же просто, как использовать tar для архивации раздела - LFS, содержащем корневой каталог (около 900 МБ в несжатом - виде для базовой сборки LFS), скопировать этот файл по сети - или с помощью CD / USB носителя в новую систему и распаковать - его. После этого необходимо изменить несколько - конфигурационных файлов. Файлы, которые, возможно, - потребуется изменить представлены в списке ниже: /etc/hosts, /etc/fstab, /etc/passwd, /etc/group, /etc/shadow, - /etc/ld.so.conf, /etc/sysconfig/rc.site, /etc/sysconfig/network, и /etc/sysconfig/ifconfig.eth0. -

-

- Возможно, потребуется собрать собственное ядро для новой - системы в зависимости от различий в системном оборудовании и - исходной конфигурации ядра. -

-
-

- Примечание -

-

- Поступали некоторые сообщения о проблемах при копировании - между похожими, но не идентичными архитектурами. Например, - набор инструкций для Intel не идентичен набору инструкций - для процессора AMD, и более поздние версии некоторых - процессоров могут содержать инструкции, недоступные в более - ранних версиях. -

-
-

- Наконец, новую систему необходимо сделать загрузочной так, - как это описано в Раздел 10.4, - «Использование GRUB для настройки процесса загрузки». -

-
-
-
-
-
-
-

- 8.3. Man-pages-6.05.01 -

-
-
-
-
-

- Пакет Man-pages содержит более 2400 справочных руководств. -

-
-
-
- Приблизительное время - сборки: менее 0.1 - SBU -
-
- Требуемое дисковое - пространство: 33 MB -
-
-
-
-
-

- 8.3.1. Установка пакета Man-pages -

-

- Удалите две справочные страницы для функций хэширования - паролей. Libxcrypt - предоставит улучшенную версию этих справочных страниц: -

-
rm -v man3/crypt*
-

- Установите пакет Man-pages выполнив команду: -

-
make prefix=/usr install
-
-
-

- 8.3.2. - Содержимое пакета Man-pages -

-
-
-
- Установленные файлы: - различные справочные - страницы -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - -
-

- man - pages -

-
-

- Описывают функции языка программирования C, важные - файлы устройств и важные файлы конфигурации. -

-
-
-
-
-
-
-
-
-

- 8.4. Iana-Etc-20230810 -

-
-
-
-
-

- Пакет Iana-Etc предоставляет данные для сетевых служб и - протоколов. -

-
-
-
- Приблизительное время - сборки: менее 0.1 - SBU -
-
- Требуемое дисковое - пространство: 4.8 - MB -
-
-
-
-
-

- 8.4.1. Установка пакета Iana-Etc -

-

- Для этого пакета необходимо лишь скопировать нужные файлы: -

-
cp services protocols /etc
-
-
-

- 8.4.2. - Содержимое пакета Iana-Etc -

-
-
-
- Установленные файлы: - /etc/protocols и - /etc/services -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - - - - - -
-

- /etc/protocols -

-
-

- Описывает различные интернет-протоколы DARPA, - которые доступны из подсистемы TCP/IP -

-
-

- /etc/services -

-
-

- Обеспечивает сопоставление понятных текстовых имен - для интернет-сервисов с назначенными им номерами - портов и типами протоколов. -

-
-
-
-
-
-
-
-
-

- 8.5. Glibc-2.38 -

-
-
-
-
-

- Пакет Glibc содержит основную библиотеку C. Эта библиотека - предоставляет основные процедуры для выделения памяти, поиска - в каталогах, открытия и закрытия файлов, чтения и записи - файлов, обработки строк, сопоставления с образцом, арифметики - и так далее -

-
-
-
- Приблизительное время - сборки: 11 SBU -
-
- Требуемое дисковое - пространство: 3.0 - GB -
-
-
-
-
-

- 8.5.1. Установка пакета Glibc -

-

- Некоторые программы Glibc используют не совместимый с FHS - каталог /var/db для хранения - своих данных во время выполнения. Примените следующий патч, - чтобы эти программы хранили свои данные в каталогах, - совместимых с FHS: -

-
patch -Np1 -i ../glibc-2.38-fhs-1.patch
-

- Теперь исправьте регрессию, из-за которой функция - posix_memalign() в некоторых условиях работала очень - медленно: -

-
patch -Np1 -i ../glibc-2.38-memalign_fix-1.patch
-

- Документация Glibc рекомендует выполнять компиляцию в - отдельном каталоге: -

-
mkdir -v build
-cd       build
-

- Убедитесь, что утилиты ldconfig и sln будут установлены в - /usr/sbin: -

-
echo "rootsbindir=/usr/sbin" > configparms
-

- Подготовьте Glibc к компиляции: -

-
../configure --prefix=/usr                            \
-             --disable-werror                         \
-             --enable-kernel=4.14                     \
-             --enable-stack-protector=strong          \
-             --with-headers=/usr/include              \
-             libc_cv_slibdir=/usr/lib
-
-

- Значение параметров настройки: -

-
-
- --disable-werror -
-
-

- Отключает параметр -Werror, передаваемый GCC. Это - необходимо для запуска набора тестов. -

-
-
- --enable-kernel=4.14 -
-
-

- Этот параметр сообщает системе сборки, что Glibc может - использоваться с ядрами старше 4.14. Это значение - используется для создание обходных путей на случай, - если системный вызов, представленный в более поздней - версии, нельзя будет использовать. -

-
-
- --enable-stack-protector=strong -
-
-

- Этот параметр повышает безопасность системы за счет - добавления дополнительного кода для проверки - переполнения буфера. -

-
-
- --with-headers=/usr/include -
-
-

- Сообщает системе сборки местоположение заголовочных - файлов API ядра -

-
-
- libc_cv_slibdir=/usr/lib -
-
-

- Эта переменная устанавливает правильную библиотеку для - всей системы. Мы не хотим, чтобы использовалась lib64 -

-
-
-
-

- Скомпилируйте пакет: -

-
make
-
-

- Важно -

-

- В этом разделе набор тестов для Glibc считается критически - важным. Ни в коем случае не пропускайте его. -

-
-

- Как правило, несколько тестов не проходят. Ошибки - тестирования, перечисленные ниже, можно игнорировать. -

-
make check
-

- Вы можете увидеть, что ряд тестов завершились неудачей. Набор - тестов Glibc в некоторой степени зависит от хост-системы. - Несколько ошибок из более чем 5000 тестов можно игнорировать. - Список наиболее распространенных проблем последних версий - LFS: -

-
-
    -
  • -

    - Известно, что io/tst-lchmod не работает в - среде chroot LFS. -

    -
  • -
  • -

    - Известно что тест stdlib/tst-arc4random-thread - завершается неудачей, если ядро хоста относительно - старое. -

    -
  • -
  • -

    - Некоторые тесты, например, nss/tst-nss-files-hosts-multi - не работают на относительно медленных системах из-за - внутреннего тайм-аута. -

    -
  • -
  • -

    - Кроме того, некоторые тесты могут завершиться неудачно - при использовании относительно старой модели процессора - или версии ядра хоста. -

    -
  • -
-
-

- На этапе установки Glibc будет жаловаться на отсутствие файла - /etc/ld.so.conf, хотя это - безобидное сообщение, предотвратить его появление можно с - помощью команды: -

-
touch /etc/ld.so.conf
-

- Исправьте Makefile, чтобы пропустить устаревшую проверку - работоспособности, которая завершается неудачей в современной - конфигурации Glibc: -

-
sed '/test-installation/s@$(PERL)@echo not running@' -i ../Makefile
-

- Установите пакет: -

-
make install
-

- Исправьте жестко заданный путь к исполняемому загрузчику в - скрипте ldd: -

-
sed '/RTLDLIST=/s@/usr@@g' -i /usr/bin/ldd
-

- Установите файл настроек и создайте рабочий каталог - nscd: -

-
cp -v ../nscd/nscd.conf /etc/nscd.conf
-mkdir -pv /var/cache/nscd
-

- Затем установите локали, которые дадут возможность системе - отвечать на разных языках. Ни одна из локалей не требуется - системе, но если некоторые из них отсутствуют, то наборы - тестов ряда пакетов будут пропускать важные тестовые - сценарии. -

-

- Отдельные локали можно установить с помощью программы - localedef. - Например, вторая команда localedef приведенная ниже, - объединяет определение независимой от набора символов локали - /usr/share/i18n/locales/cs_CZ с - набором символов /usr/share/i18n/charmaps/UTF-8.gz и - добавляет результат в файл /usr/lib/locale/locale-archive. Следующие - инструкции установят минимальный набор локалей, необходимый - для оптимального охвата тестов -

-
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 ISO-8859-1 en_GB
-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_ES -f ISO-8859-15 es_ES@euro
-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 is_IS -f ISO-8859-1 is_IS
-localedef -i is_IS -f UTF-8 is_IS.UTF-8
-localedef -i it_IT -f ISO-8859-1 it_IT
-localedef -i it_IT -f ISO-8859-15 it_IT@euro
-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.SJIS 2> /dev/null || true
-localedef -i ja_JP -f UTF-8 ja_JP.UTF-8
-localedef -i nl_NL@euro -f ISO-8859-15 nl_NL@euro
-localedef -i ru_RU -f KOI8-R ru_RU.KOI8-R
-localedef -i ru_RU -f UTF-8 ru_RU.UTF-8
-localedef -i se_NO -f UTF-8 se_NO.UTF-8
-localedef -i ta_IN -f UTF-8 ta_IN.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
-localedef -i zh_TW -f UTF-8 zh_TW.UTF-8
-

- Кроме того, установите локаль для вашей страны, языка и - набора символов. -

-

- В качестве альтернативы, установите сразу все локали - перечисленные в файле glibc-2.38/localedata/SUPPORTED (он - включает все локали из списка выше и многие другие), выполнив - команду: -

-
make localedata/install-locales
-

- Затем используйте команду localedef для создания и - установки локалей, не перечисленных в файле glibc-2.38/localedata/SUPPORTED, когда они - вам понадобятся. Например, для некоторых тестов в этой главе - потребуются следующие две локали: -

-
localedef -i POSIX -f UTF-8 C.UTF-8 2> /dev/null || true
-localedef -i ja_JP -f SHIFT_JIS ja_JP.SJIS 2> /dev/null || true
-
-

- Примечание -

-

- Glibc теперь использует libidn2 для разрешения - интернационализированных доменных имен. Если такая функция - необходима, то инструкцию по установке libidn2 можно найти - на странице - BLFS libidn2. -

-
-
-
-

- 8.5.2. Настройка - Glibc -

-
-
-
-
-

- 8.5.2.1. Добавление nsswitch.conf -

-
-
-
-

- Необходимо создать файл /etc/nsswitch.conf, потому что - настроенный по умолчанию Glibc плохо работает в сетевой - среде. -

-

- Создайте новый фай /etc/nsswitch.conf, выполнив следующие - действия: -

-
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
-
-
-
-
-
-

- 8.5.2.2. Добавление данных о - часовом поясе -

-
-
-
-

- Установите и настройте часовой пояс следующим образом: -

-
tar -xf ../../tzdata2023c.tar.gz
-
-ZONEINFO=/usr/share/zoneinfo
-mkdir -pv $ZONEINFO/{posix,right}
-
-for tz in etcetera southamerica northamerica europe africa antarctica  \
-          asia australasia backward; 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
-
-

- Значение команд zic: -

-
-
- zic -L - /dev/null ... -
-
-

- Создаёт часовые пояса posix без секунд координации. - Обычно их помещают как в zoneinfo так и в zoneinfo/posix. Часовые пояса POSIX - должны быть прописаны в zoneinfo, иначе различные тесты - будут сообщать об ошибках. На встраиваемых системах с - небольшим диском, где часовые пояса никогда не будут - обновляться, можно сэкономить примерно 1.9 MB не - используя каталог posix, однако некоторые приложения - или наборы тестов могут вызывать сбои. -

-
-
- zic -L - leapseconds ... -
-
-

- Создаёт правильные часовые пояса с секундами - координации. На встраиваемых системах с небольшим - диском, где часовые пояса никогда не будут - обновляться, а правильность времени неважна, можно - выиграть примерно 1.9 MB, исключив каталог - right. -

-
-
- zic ... - -p ... -
-
-

- Создаёт файл posixrules. Используется New York, - потому что POSIX требует соответствия правил летнего - времени с правилами США. -

-
-
-
-

- Один из способов определить местный часовой пояс — - запустить следующий скрипт: -

-
tzselect
-

- После нескольких вопросов о местоположении скрипт выдаст - наименование часового пояса (например America/Edmonton). В файле - /usr/share/zoneinfo - перечислены и другие возможные часовые пояса, такие как - Canada/Eastern или - EST5EDT, которые не - распознаются скриптом, но могут быть использованы. -

-

- Создайте файл /etc/localtime - выполнив: -

-
ln -sfv /usr/share/zoneinfo/<xxx> /etc/localtime
-

- Замените <xxx> на имя - выбранного часового пояса (например, Europe/Moscow). -

-
-
-
-
-
-

- 8.5.2.3. Настройка динамического - загрузчика -

-
-
-
-

- По умолчанию, динамический загрузчик (/lib/ld-linux.so.2) ищет в каталоге - /usr/lib, нужные для работы - программ библиотеки. Однако, если библиотеки находятся в - другом каталоге, то его необходимо указать в файле - /etc/ld.so.conf, чтобы - динамический загрузчик мог их найти. Два каталога - - /usr/local/lib и /opt/lib часто используются для - дополнительных библиотек, поэтому добавьте их в пути поиска - для динамического загрузчика. -

-

- Создайте новый файл /etc/ld.so.conf выполнив: -

-
cat > /etc/ld.so.conf << "EOF"
-# Begin /etc/ld.so.conf
-/usr/local/lib
-/opt/lib
-
-EOF
-

- Динамический загрузчик может выполнить поиск в каталоге и - включить содержимое найденных там файлов. Обычно такие - файлы состоят из одной строки и содержат путь к библиотеке. - Чтобы добавить эту возможность, выполните следующие - команды: -

-
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
-
-
-
-

- 8.5.3. - Содержимое пакета Glibc -

-
-
-
- Установленные - программы: gencat, - getconf, getent, iconv, iconvconfig, ldconfig, ldd, - lddlibc4, ld.so (symlink to ld-linux-x86-64.so.2 or - ld-linux.so.2), locale, localedef, makedb, mtrace, nscd, - pcprofiledump, pldd, sln, sotruss, sprof, tzselect, - xtrace, zdump и zic -
-
- Установленные - библиотеки: ld-linux-x86-64.so.2, ld-linux.so.2, - libBrokenLocale.{a,so}, libanl.{a,so}, libc.{a,so}, - libc_nonshared.a, libc_malloc_debug.so, libdl.{a,so.2}, - libg.a, libm.{a,so}, libmcheck.a, libmemusage.so, - libmvec.{a,so}, libnsl.so.1, libnss_compat.so, - libnss_dns.so, libnss_files.so, libnss_hesiod.so, - libpcprofile.so, libpthread.{a,so.0}, libresolv.{a,so}, - librt.{a,so.1}, libthread_db.so и libutil.{a,so.1} -
-
- Созданные каталоги: - /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/sys, /usr/lib/audit, - /usr/lib/gconv, /usr/lib/locale, /usr/libexec/getconf, - /usr/share/i18n, /usr/share/zoneinfo, /var/cache/nscd и - /var/lib/nss_db -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

- gencat -

-
-

- Создает каталоги сообщений -

-
-

- getconf -

-
-

- Отображает настройки системы для специфичных - переменных файловой системы -

-
-

- getent -

-
-

- Получает записи из административной базы данных -

-
-

- iconv -

-
-

- Выполняет преобразование набора символов -

-
-

- iconvconfig -

-
-

- Создает быстрозагружаемые файлы настроек модуля - iconv -

-
-

- ldconfig -

-
-

- Настраивает привязки времени выполнения - динамического компоновщика -

-
-

- ldd -

-
-

- Сообщает, какие общие библиотеки требуются каждой - программе или общей библиотеке -

-
-

- lddlibc4 -

-
-

- Помогает ldd работать с - объектными файлами. Он не существует на более новых - архитектурах, таких как x86_64 -

-
-

- locale -

-
-

- Выводит различную информацию о текущей локали -

-
-

- localedef -

-
-

- Компилирует спецификации локали -

-
-

- makedb -

-
-

- Создает простую базу данных на основе текстового - ввода -

-
-

- mtrace -

-
-

- Читает и интерпретирует файл трассировки памяти; - отображает сводку в удобочитаемом формате -

-
-

- nscd -

-
-

- Демон, который обеспечивает кеширование наиболее - распространенных запросов к службе имен -

-
-

- pcprofiledump -

-
-

- Создает дамп информации, генерируемой при - профилировании ПК -

-
-

- pldd -

-
-

- Перечисляет динамические общие объекты, - используемые запущенными процессами. -

-
-

- sln -

-
-

- Статически скомпонованная программа ln -

-
-

- sotruss -

-
-

- Отслеживает вызовы процедур общей библиотеки - указанной команды -

-
-

- sprof -

-
-

- Читает и отображает данные профилирования общих - объектов. -

-
-

- tzselect -

-
-

- Запрашивает у пользователя информацию о текущем - местоположении системы и выводит описание - соответствующего часового пояса. -

-
-

- xtrace -

-
-

- Отслеживает выполнение программы, отображая - выполняемую в данный момент функцию -

-
-

- zdump -

-
-

- Выдает дамп часового пояса -

-
-

- zic -

-
-

- Компилятор часовых поясов -

-
-

- ld-*.so -

-
-

- Вспомогательная программа для исполняемых файлов - общей библиотеки -

-
-

- libBrokenLocale -

-
-

- Используется внутри Glibc как грубый хак для - запуска сломанных программ (например, некоторые - приложения Motif). Прочитайте комментарии в - glibc-2.38/locale/broken_cur_max.c - для получения дополнительной информации -

-
-

- libanl -

-
-

- Библиотека-заглушка, не содержащая функций. Ранее - это была библиотека асинхронного поиска имен, - функции которой теперь находятся в libc -

-
-

- libc -

-
-

- Основная библиотека C -

-
-

- libc_malloc_debug -

-
-

- Включает проверку выделения памяти при - предварительной загрузке -

-
-

- libdl -

-
-

- Библиотека-заглушка, не содержащая функций. Ранее - была библиотекой интерфейса динамической - компоновки, функции которой теперь находятся в - libc -

-
-

- libg -

-
-

- Библиотека-заглушка без функций. Раньше была - библиотекой среды выполнения для g++ -

-
-

- libm -

-
-

- Математическая библиотека -

-
-

- libmvec -

-
-

- Библиотека векторных математических вычислений, - подключаемая по мере необходимости при - использовании libm -

-
-

- libmcheck -

-
-

- Включает проверку выделения памяти при подключении - к -

-
-

- libmemusage -

-
-

- Используется memusage для - сбора информации об использовании памяти программой -

-
-

- libnsl -

-
-

- Библиотека сетевых служб, которая в настоящее время - устарела -

-
-

- libnss_* -

-
-

- Модули Name Service Switch, содержащие функции для - разрешения имен хостов, имен пользователей, имен - групп, псевдонимов, служб, протоколов и т. д. - Загружаются libc в - соответствии с конфигурацией в /etc/nsswitch.conf -

-
-

- libpcprofile -

-
-

- Содержит функции профилирования, используемые для - отслеживания времени, потраченного процессором в - конкретных строках исходного кода -

-
-

- libpthread -

-
-

- Библиотека-заглушка, не содержащая функций. Ранее - содержала функции, обеспечивающие большинство - интерфейсов, заданных POSIX.1c Threads Extensions - (расширения реализации потоков) и интерфейсы - семафоров, указанных в POSIX.1b Real-time Extension - (расширения реального времени), теперь эти функции - находятся в libc -

-
-

- libresolv -

-
-

- Содержит функции создания, пересылки и - интерпретации пакетов, используемых на серверах - доменных имен в сети интернет -

-
-

- librt -

-
-

- Содержит функции, реализующие большую часть - интерфейсов, определяемых в POSIX.1b Real-time - Extension (расширения реального времени) -

-
-

- libthread_db -

-
-

- Содержит функции, полезные для сборки отладчиков - для многопоточных программ -

-
-

- libutil -

-
-

- Библиотека-заглушка, не содержащая функций. Ранее - содержал код для «стандартных» функций, - используемых во многих утилитах Unix. Эти функции - теперь находятся в libc -

-
-
-
-
-
-
-
-
-

- 8.6. Zlib-1.2.13 -

-
-
-
-
-

- Пакет Zlib содержит подпрограммы сжатия и распаковки, - используемые некоторыми программами. -

-
-
-
- Приблизительное время - сборки: менее 0.1 - SBU -
-
- Требуемое дисковое - пространство: 6.2 - MB -
-
-
-
-
-

- 8.6.1. Установка пакета Zlib -

-

- Подготовьте Zlib к компиляции: -

-
./configure --prefix=/usr
-

- Скомпилируйте пакет: -

-
make
-

- Чтобы протестировать пакет, выполните: -

-
make check
-

- Установите пакет: -

-
make install
-

- Удалите бесполезную статическую библиотеку: -

-
rm -fv /usr/lib/libz.a
-
-
-

- 8.6.2. - Содержимое пакета Zlib -

-
-
-
- Установленные - библиотеки: libz.so -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - -
-

- libz -

-
-

- Содержит функции сжатия и распаковки, используемые - некоторыми программами. -

-
-
-
-
-
-
-
-
-

- 8.7. Bzip2-1.0.8 -

-
-
-
-
-

- Пакет Bzip2 содержит программы для сжатия и распаковки - файлов. Сжатие текстовых файлов с помощью bzip2 даёт больший процент - сжатия, чем традиционный gzip. -

-
-
-
- Приблизительное время - сборки: менее 0.1 - SBU -
-
- Требуемое дисковое - пространство: 7.2 - MB -
-
-
-
-
-

- 8.7.1. Установка пакета Bzip2 -

-

- Примените патч, который установит документацию для этого - пакета: -

-
patch -Np1 -i ../bzip2-1.0.8-install_docs-1.patch
-

- Следующая команда гарантирует установку символических ссылок - с относительным путём: -

-
sed -i 's@\(ln -s -f \)$(PREFIX)/bin/@\1@' Makefile
-

- Убедитесь, что справочные страницы установлены в правильном - месте: -

-
sed -i "s@(PREFIX)/man@(PREFIX)/share/man@g" Makefile
-

- Подготовьте Bzip2 к компиляции: -

-
make -f Makefile-libbz2_so
-make clean
-
-

- Значение параметра make: -

-
-
- -f - Makefile-libbz2_so -
-
-

- Этот параметр позволяет выполнить сборку, с - использованием другого Makefile, в данном случае - Makefile-libbz2_so, - который создает динамическую библиотеку libbz2.so и связывает с ней Bzip2. -

-
-
-
-

- Скомпилируйте и протестируйте пакет: -

-
make
-

- Установите пакет: -

-
make PREFIX=/usr install
-

- Установите библиотеку: -

-
cp -av libbz2.so.* /usr/lib
-ln -sv libbz2.so.1.0.8 /usr/lib/libbz2.so
-

- Установите общий бинарный файл bzip2 в каталог - /usr/bin, и замените две копии - bzip2 - символическими ссылками: -

-
cp -v bzip2-shared /usr/bin/bzip2
-for i in /usr/bin/{bzcat,bunzip2}; do
-  ln -sfv bzip2 $i
-done
-

- Удалите ненужную статическую библиотеку: -

-
rm -fv /usr/lib/libbz2.a
-
-
-

- 8.7.2. - Содержимое пакета Bzip2 -

-
-
-
- Установленные - программы: bunzip2 (ссылка - на bzip2), bzcat (ссылка на bzip2), bzcmp (ссылка на - bzdiff), bzdiff, bzegrep (ссылка на bzgrep), bzfgrep - (ссылка на bzgrep), bzgrep, bzip2, bzip2recover, bzless - (ссылка на bzmore) и bzmore -
-
- Установленные - библиотеки: libbz2.so -
-
- Созданные каталоги: - /usr/share/doc/bzip2-1.0.8 -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

- bunzip2 -

-
-

- Распаковывает bzip-файлы -

-
-

- bzcat -

-
-

- Распаковывает в поток стандартного вывода -

-
-

- bzcmp -

-
-

- Запускает программу cmp для bzip - файлов -

-
-

- bzdiff -

-
-

- Запускает программу diff для bzip - файлов -

-
-

- bzegrep -

-
-

- Запускает программу egrep для bzip - файлов -

-
-

- bzfgrep -

-
-

- Запускает программу fgrep для bzip - файлов -

-
-

- bzgrep -

-
-

- Запускает программу grep для bzip - файлов -

-
-

- bzip2 -

-
-

- Сжимает файлы, используя алгоритм сжатия текста с - блочной сортировкой Барроуза — Уилера и кодирование - Хафмана; степень сжатия лучше, чем у более - традиционных архиваторов, использующих алгоритмы - «Lempel-Ziv», например - gzip -

-
-

- bzip2recover -

-
-

- Пытается восстанавливать данные из поврежденных - архивов -

-
-

- bzless -

-
-

- Запускает программу less для bzip - файлов -

-
-

- bzmore -

-
-

- Запускает программу more для bzip - файлов -

-
-

- libbz2 -

-
-

- Библиотека, реализующая сжатие данных без потерь с - использованием алгоритма Барроуза-Уилера. -

-
-
-
-
-
-
-
-
-

- 8.8. Xz-5.4.4 -

-
-
-
-
-

- Пакет Xz содержит программы для сжатия и распаковки файлов. - Он предоставляет возможности для lzma и более новых форматов - сжатия xz. Сжатие текстовых файлов с помощью xz дает лучший процент - сжатия, чем с традиционные gzip или bzip2. -

-
-
-
- Приблизительное время - сборки: 0.1 SBU -
-
- Требуемое дисковое - пространство: 24 MB -
-
-
-
-
-

- 8.8.1. Установка пакета Xz -

-

- Подготовьте Xz к компиляции: -

-
./configure --prefix=/usr    \
-            --disable-static \
-            --docdir=/usr/share/doc/xz-5.4.4
-

- Скомпилируйте пакет: -

-
make
-

- Чтобы протестировать пакет, выполните: -

-
make check
-

- Установите пакет: -

-
make install
-
-
-

- 8.8.2. Содержимое - пакета Xz -

-
-
-
- Установленные - программы: lzcat (ссылка - на xz), lzcmp (ссылка на xzdiff), lzdiff (ссылка на - xzdiff), lzegrep (ссылка на xzgrep), lzfgrep (ссылка на - xzgrep), lzgrep (ссылка на xzgrep), lzless (ссылка на - xzless), lzma (ссылка на xz), lzmadec, lzmainfo, lzmore - (ссылка на xzmore), unlzma (ссылка на xz), unxz (ссылка - на xz), xz, xzcat (ссылка на xz), xzcmp (ссылка на - xzdiff), xzdec, xzdiff, xzegrep (ссылка на xzgrep), - xzfgrep (ссылка на xzgrep), xzgrep, xzless и - xzmore -
-
- Установленные - библиотеки: liblzma.so -
-
- Созданные каталоги: - /usr/include/lzma и - /usr/share/doc/xz-5.4.4 -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

- lzcat -

-
-

- Распаковывает в стандартный поток вывода -

-
-

- lzcmp -

-
-

- Запускает cmp для файлов - сжатых LZMA -

-
-

- lzdiff -

-
-

- Запускает diff для файлов - сжатых LZMA -

-
-

- lzegrep -

-
-

- Запускает egrep для файлов - сжатых LZMA -

-
-

- lzfgrep -

-
-

- Запускает fgrep для файлов - сжатых LZMA -

-
-

- lzgrep -

-
-

- Запускает grep для файлов - сжатых LZMA -

-
-

- lzless -

-
-

- Запускает less для файлов - сжатых LZMA -

-
-

- lzma -

-
-

- Сжимает или распаковывает файлы в формате LZMA -

-
-

- lzmadec -

-
-

- Небольшой и быстрый декодер для файлов сжатых LZMA. -

-
-

- lzmainfo -

-
-

- Показывает информацию, хранящуюся в заголовке - сжатого файла LZMA -

-
-

- lzmore -

-
-

- Запускает more для файлов - сжатых LZMA -

-
-

- unlzma -

-
-

- Распаковывает файлы в формате LZMA -

-
-

- unxz -

-
-

- Распаковывает файлы в формате XZ -

-
-

- xz -

-
-

- Сжимает или распаковывает файлы в формате XZ. -

-
-

- xzcat -

-
-

- Распаковывает в стандартный поток вывода -

-
-

- xzcmp -

-
-

- Запускает cmp для сжатых XZ - файлов -

-
-

- xzdec -

-
-

- Небольшой и быстрый декодер для файлов сжатых XZ -

-
-

- xzdiff -

-
-

- Запускает diff для сжатых - XZ файлов -

-
-

- xzegrep -

-
-

- Запускает egrep для сжатых - XZ файлов -

-
-

- xzfgrep -

-
-

- Запускает fgrep для сжатых - XZ файлов -

-
-

- xzgrep -

-
-

- Запускает grep для сжатых - XZ файлов -

-
-

- xzless -

-
-

- Запускает less для сжатых - XZ файлов -

-
-

- xzmore -

-
-

- Запускает more для сжатых - XZ файлов -

-
-

- liblzma -

-
-

- Библиотека, реализующая сжатие данных без потерь с - блочной сортировкой с использованием алгоритма - Lempel-Ziv-Markov -

-
-
-
-
-
-
-
-
-

- 8.9. Zstd-1.5.5 -

-
-
-
-
-

- Zstandard — это алгоритм сжатия в реальном времени, - обеспечивающий высокую степень сжатия. Он предлагает очень - широкий диапазон компромиссов между сжатием и скоростью при - поддержке очень быстрого декодера. -

-
-
-
- Приблизительное время - сборки: 0.4 SBU -
-
- Требуемое дисковое - пространство: 77 MB -
-
-
-
-
-

- 8.9.1. Установка пакета Zstd -

-

- Скомпилируйте пакет: -

-
make prefix=/usr
-
-

- Примечание -

-

- В выходных данных теста есть несколько мест, выводящих - сообщение 'failed'. Они ожидаемы, и только 'FAIL' является - фактическим сбоем теста. Сбоев при тестировании быть не - должно. -

-
-

- Чтобы протестировать пакет, выполните: -

-
make check
-

- Установите пакет: -

-
make prefix=/usr install
-

- Удалите статическую библиотеку: -

-
rm -v /usr/lib/libzstd.a
-
-
-

- 8.9.2. - Содержимое пакета Zstd -

-
-
-
- Установленные - программы: zstd, zstdcat - (ссылка на zstd), zstdgrep, zstdless, zstdmt (ссылка на - zstd) и unzstd (ссылка на zstd) -
-
- Установленные - библиотеки: libzstd.so -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - - - - - - - - - - - - - -
-

- zstd -

-
-

- Сжимает или распаковывает файлы в формате ZSTD -

-
-

- zstdgrep -

-
-

- Запускает grep на сжатых - ZSTD файлах -

-
-

- zstdless -

-
-

- Запускает less на сжатых - ZSTD файлах -

-
-

- libzstd -

-
-

- Библиотека, реализующая сжатие данных без потерь, с - использованием алгоритма ZSTD -

-
-
-
-
-
-
-
-
-

- 8.10. File-5.45 -

-
-
-
-
-

- Пакет File содержит утилиту для определения типа указанного - файла или файлов -

-
-
-
- Приблизительное время - сборки: менее 0.1 - SBU -
-
- Требуемое дисковое - пространство: 17 MB -
-
-
-
-
-

- 8.10.1. Установка пакета File -

-

- Подготовьте File к компиляции: -

-
./configure --prefix=/usr
-

- Скомпилируйте пакет: -

-
make
-

- Чтобы протестировать пакет, выполните: -

-
make check
-

- Установите пакет: -

-
make install
-
-
-

- 8.10.2. - Содержимое пакета File -

-
-
-
- Установленные - программы: file -
-
- Установленные - библиотеки: libmagic.so -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - - - - - -
-

- file -

-
-

- Пытается классифицировать каждый указанный файл; он - делает это, выполняя серию тестов—тесты файловой - системы, тесты магических чисел и языковые тесты. -

-
-

- libmagic -

-
-

- Содержит функции распознавания магических чисел - используемые программой file -

-
-
-
-
-
-
-
-
-

- 8.11. Readline-8.2 -

-
-
-
-
-

- Пакет Readline представляет собой набор библиотек, - предлагающих возможности редактирования прямо в командной - строке и просмотра истории команд. -

-
-
-
- Приблизительное время - сборки: менее 0.1 - SBU -
-
- Требуемое дисковое - пространство: 16 MB -
-
-
-
-
-

- 8.11.1. Установка пакета Readline -

-

- Переустановка пакета Readline приводит к перемещению старых - библиотек в <libraryname>.old. Обычно это не вызывает - проблем, но в некоторых случаях могут возникать ошибки - линковки с ldconfig. Этого можно - избежать, выполнив следующие две команды sed: -

-
sed -i '/MV.*old/d' Makefile.in
-sed -i '/{OLDSUFF}/c:' support/shlib-install
-

- Теперь устраните проблему, выявленную разработчиками: -

-
patch -Np1 -i ../readline-8.2-upstream_fix-1.patch
-

- Подготовьте Readline к компиляции: -

-
./configure --prefix=/usr    \
-            --disable-static \
-            --with-curses    \
-            --docdir=/usr/share/doc/readline-8.2
-
-

- Значение нового параметра configure: -

-
-
- --with-curses -
-
-

- Этот параметр сообщает Readline, что он может найти - функции библиотеки termcap в библиотеке curses, а не в - отдельной библиотеке termcap. Это позволит - сгенерировать корректный файл readline.pc. -

-
-
-
-

- Скомпилируйте пакет: -

-
make SHLIB_LIBS="-lncursesw"
-
-

- Значение параметра make: -

-
-
- SHLIB_LIBS="-lncursesw" -
-
-

- Этот параметр принудительно линкует Readline с - библиотекой libncursesw. -

-
-
-
-

- С этим пакетом не поставляется набор тестов. -

-

- Установите пакет: -

-
make SHLIB_LIBS="-lncursesw" install
-

- По желанию установите документацию: -

-
install -v -m644 doc/*.{ps,pdf,html,dvi} /usr/share/doc/readline-8.2
-
-
-

- 8.11.2. Содержимое пакета Readline -

-
-
-
- Установленные - библиотеки: libhistory.so - и libreadline.so -
-
- Созданные каталоги: - /usr/include/readline и - /usr/share/doc/readline-8.2 -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - - - - - -
-

- libhistory -

-
-

- Обеспечивает согласованный пользовательский - интерфейс для вызова строк из истории -

-
-

- libreadline -

-
-

- Предоставляет набор команд для управления текстом, - введенным в интерактивном сеансе программы. -

-
-
-
-
-
-
-
-
-

- 8.12. M4-1.4.19 -

-
-
-
-
-

- Пакет M4 содержит макропроцессор. -

-
-
-
- Приблизительное время - сборки: 0.3 SBU -
-
- Требуемое дисковое - пространство: 49 MB -
-
-
-
-
-

- 8.12.1. Установка пакета M4 -

-

- Подготовьте M4 к компиляции: -

-
./configure --prefix=/usr
-

- Скомпилируйте пакет: -

-
make
-

- Чтобы протестировать пакет, выполните: -

-
make check
-

- Установите пакет: -

-
make install
-
-
-

- 8.12.2. Содержимое - пакета M4 -

-
-
-
- Установленные - программы: m4 -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - -
-

- m4 -

-
-

- Копирует указанные файлы, одновременно расширяя - содержащиеся в них макросы. Эти макросы являются - либо встроенными, либо определяемыми пользователем - и могут принимать любое количество аргументов. - Помимо выполнения макросов, m4 имеет - встроенные функции для включения указанных файлов, - выполнения команд Unix, выполнения целочисленной - арифметики, манипулирования текстом, рекурсии и - т.д. Программа m4 может - использоваться либо как интерфейс к компилятору, - либо как самостоятельный макропроцессор -

-
-
-
-
-
-
-
-
-

- 8.13. Bc-6.6.0 -

-
-
-
-
-

- Пакет Bc содержит язык для обработки чисел произвольной - точности. -

-
-
-
- Приблизительное время - сборки: менее 0.1 - SBU -
-
- Требуемое дисковое - пространство: 7.7 - MB -
-
-
-
-
-

- 8.13.1. Установка пакета Bc -

-

- Подготовьте Bc к компиляции: -

-
CC=gcc ./configure --prefix=/usr -G -O3 -r
-
-

- Значение параметров настройки: -

-
-
- CC=gcc -
-
-

- Этот параметр определяет используемый компилятор -

-
-
- -G -
-
-

- Пропускает часть тестов, которые не будут работать, - пока не будет установлена программа bc. -

-
-
- -O3 -
-
-

- Указывает используемый уровень оптимизации. -

-
-
- -r -
-
-

- Включает использование Readline для улучшения функции - редактирования строк в bc. -

-
-
-
-

- Скомпилируйте пакет: -

-
make
-

- Чтобы протестировать bc, запустите: -

-
make test
-

- Установите пакет: -

-
make install
-
-
-

- 8.13.2. Содержимое - пакета Bc -

-
-
-
- Установленные - программы: bc и dc -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - - - - - -
-

- bc -

-
-

- Калькулятор командной строки -

-
-

- dc -

-
-

- Калькулятор командной строки с обратной польской - нотацией -

-
-
-
-
-
-
-
-
-

- 8.14. Flex-2.6.4 -

-
-
-
-
-

- Пакет Flex содержит инструмент для генерации программ, - распознающих заданные шаблоны в тексте -

-
-
-
- Приблизительное время - сборки: 0.1 SBU -
-
- Требуемое дисковое - пространство: 33 MB -
-
-
-
-
-

- 8.14.1. Установка пакета Flex -

-

- Подготовьте Flex к компиляции: -

-
./configure --prefix=/usr \
-            --docdir=/usr/share/doc/flex-2.6.4 \
-            --disable-static
-

- Скомпилируйте пакет: -

-
make
-

- Для тестирования пакета (около 0,5 SBU) выполните: -

-
make check
-

- Установите пакет: -

-
make install
-

- Некоторые программы пока не знают о flex и пытаются запустить - его предшественника - lex. Чтобы обеспечить их - работоспособность, создайте символическую ссылку lex, которая запускает - flex в режиме эмуляции - lex, а также - создайте символическую ссылку на справочную страницу - lex: -

-
ln -sv flex   /usr/bin/lex
-ln -sv flex.1 /usr/share/man/man1/lex.1
-
-
-

- 8.14.2. - Содержимое пакета Flex -

-
-
-
- Установленные - программы: flex, flex++ - (ссылка на flex), и lex (ссылка на flex) -
-
- Установленные - библиотеки: libfl.so -
-
- Созданные каталоги: - /usr/share/doc/flex-2.6.4 -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - - - - - - - - - - - - - -
-

- flex -

-
-

- Инструмент для создания программ, распознающих - текст по шаблону; это позволяет гибко указывать - правила поиска паттернов, устраняя необходимость - разработки специализированной программы. -

-
-

- flex++ -

-
-

- Расширение flex используется для генерации кода и - классов C++. Является символической ссылкой на - flex -

-
-

- lex -

-
-

- Символическая ссылка, запускает flex в режиме - эмуляции lex -

-
-

- libfl -

-
-

- Библиотека flex -

-
-
-
-
-
-
-
-
-

- 8.15. Tcl-8.6.13 -

-
-
-
-
-

- Пакет Tcl содержит Tool - Command Language, надежный скриптовый язык общего назначения. - Пакет Expect написан на - языке Tcl (произносится как - "тикл"). -

-
-
-
- Приблизительное время - сборки: 2.7 SBU -
-
- Требуемое дисковое - пространство: 89 MB -
-
-
-
-
-

- 8.15.1. Установка пакета Tcl -

-

- Этот пакет и следующие два (Expect и DejaGNU) устанавливаются - для поддержки возможности тестирования Binutils, GCC и других - пакетов. Установка трех пакетов для целей тестирования может - показаться избыточной, но вы будете чувствовать себя - увереннее, когда знаете, что наиболее важные инструменты - работают правильно. -

-

- Подготовьте Tcl к компиляции: -

-
SRCDIR=$(pwd)
-cd unix
-./configure --prefix=/usr           \
-            --mandir=/usr/share/man
-

- Соберите пакет: -

-
make
-
-sed -e "s|$SRCDIR/unix|/usr/lib|" \
-    -e "s|$SRCDIR|/usr/include|"  \
-    -i tclConfig.sh
-
-sed -e "s|$SRCDIR/unix/pkgs/tdbc1.1.5|/usr/lib/tdbc1.1.5|" \
-    -e "s|$SRCDIR/pkgs/tdbc1.1.5/generic|/usr/include|"    \
-    -e "s|$SRCDIR/pkgs/tdbc1.1.5/library|/usr/lib/tcl8.6|" \
-    -e "s|$SRCDIR/pkgs/tdbc1.1.5|/usr/include|"            \
-    -i pkgs/tdbc1.1.5/tdbcConfig.sh
-
-sed -e "s|$SRCDIR/unix/pkgs/itcl4.2.3|/usr/lib/itcl4.2.3|" \
-    -e "s|$SRCDIR/pkgs/itcl4.2.3/generic|/usr/include|"    \
-    -e "s|$SRCDIR/pkgs/itcl4.2.3|/usr/include|"            \
-    -i pkgs/itcl4.2.3/itclConfig.sh
-
-unset SRCDIR
-

- Различные инструкции «sed» после команды «make» удаляют - ссылки на каталог сборки из файлов конфигурации и заменяют их - на созданные каталоги. Это необязательно для остальной части - LFS, но может понадобиться в случае, когда пакет, собранный - позже, использует Tcl. -

-

- Чтобы протестировать пакет, выполните: -

-
make test
-

- Установите пакет: -

-
make install
-

- Сделайте установленную библиотеку доступной для записи, чтобы - позже можно было удалить отладочные символы: -

-
chmod -v u+w /usr/lib/libtcl8.6.so
-

- >Установите заголовочные файлы Tcl. Они потребуются для - следующего пакета - Expect. -

-
make install-private-headers
-

- Теперь создайте необходимую символическую ссылку: -

-
ln -sfv tclsh8.6 /usr/bin/tclsh
-

- Переименуйте справочную страницу, которая конфликтует со - справочной страницей Perl: -

-
mv /usr/share/man/man3/{Thread,Tcl_Thread}.3
-

- При необходимости установите документацию, выполнив следующие - команды: -

-
cd ..
-tar -xf ../tcl8.6.13-html.tar.gz --strip-components=1
-mkdir -v -p /usr/share/doc/tcl-8.6.13
-cp -v -r  ./html/* /usr/share/doc/tcl-8.6.13
-
-
-

- 8.15.2. - Содержимое пакета Tcl -

-
-
-
- Установленные - программы: tclsh (ссылка - на tclsh8.6) и tclsh8.6 -
-
- Установленные - библиотеки: libtcl8.6.so и - libtclstub8.6.a -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - - - - - - - - - - - - - -
-

- tclsh8.6 -

-
-

- Командная оболочка Tcl -

-
-

- tclsh -

-
-

- Ссылка на tclsh8.6 -

-
-

- libtcl8.6.so -

-
-

- Библиотека Tcl -

-
-

- libtclstub8.6.a -

-
-

- Библиотека-заглушка Tcl -

-
-
-
-
-
-
-
-
-

- 8.16. Expect-5.45.4 -

-
-
-
-
-

- Пакет Expect содержит - инструменты для автоматизации работы интерактивных - приложений, таких как telnet, ftp, passwd, fsck, rlogin и tip, с помощью скриптовых - диалогов и макросов. Кроме того Expect полезен для тестирования - перечисленных выше приложений, а также для решения сложных - задач взаимодействия с другими средствами. Фреймворк - DejaGnu написан на языке - Expect. -

-
-
-
- Приблизительное время - сборки: 0.2 SBU -
-
- Требуемое дисковое - пространство: 3.9 - MB -
-
-
-
-
-

- 8.16.1. Установка пакета Expect -

-

- Подготовьте Expect к компиляции: -

-
./configure --prefix=/usr           \
-            --with-tcl=/usr/lib     \
-            --enable-shared         \
-            --mandir=/usr/share/man \
-            --with-tclinclude=/usr/include
-
-

- Значение параметров настройки: -

-
-
- --with-tcl=/usr/lib -
-
-

- Этот параметр необходим для указания configure где - находится скрипт tclConfig.sh. -

-
-
- --with-tclinclude=/usr/include -
-
-

- Этот параметр явно указывает Expect, где искать - внутренние заголовки Tcl. -

-
-
-
-

- Соберите пакет: -

-
make
-
-

- Важно -

-

- Набор тестов для Expect считается критически важным. Не - пропускайте его ни при каких обстоятельствах. -

-
-

- Чтобы протестировать пакет, выполните: -

-
make test
-

- Если какой-либо тест завершается неудачей с сообщением - «The system has no more ptys. Ask your system - administrator to create more», это - означает, что вы неправильно смонтировали файловую систему - devpts. Вам необходимо выйти - из среды chroot, ещё раз прочитать Раздел 7.3, - «Подготовка виртуальных файловых систем ядра» и - убедиться, что файловая система devpts (и другие файловые системы - виртуального ядра) смонтированы правильно. Затем повторно - войдите в среду chroot, следуя инструкции Раздел 7.4, «Вход в - окружение Chroot». Эту проблему необходимо решить, прежде - чем вы продолжите. -

-

- Установите пакет: -

-
make install
-ln -svf expect5.45.4/libexpect5.45.4.so /usr/lib
-
-
-

- 8.16.2. - Содержимое пакета Expect -

-
-
-
- Установленные - программы: expect -
-
- Установленные - библиотеки: libexpect5.45.4.so -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - - - - - -
-

- expect -

-
-

- Взаимодействует с другими интерактивными - программами в соответствии со сценарием -

-
-

- libexpect-5.45.4.so -

-
-

- Содержит функции, которые позволяют использовать - Expect в качестве расширения Tcl или - непосредственно из C или C++ (без Tcl). -

-
-
-
-
-
-
-
-
-

- 8.17. DejaGNU-1.6.3 -

-
-
-
-
-

- Пакет DejaGnu содержит - фреймворк для запуска наборов тестов на инструментах GNU. Он - написан на expect, который в свою - очередь использует Tcl - (командный язык инструментов). -

-
-
-
- Приблизительное время - сборки: менее 0.1 - SBU -
-
- Требуемое дисковое - пространство: 6.9 - MB -
-
-
-
-
-

- 8.17.1. Установка пакета DejaGNU -

-

- Разработчики рекомендуют собирать DejaGNU в отдельном - каталоге: -

-
mkdir -v build
-cd       build
-

- Подготовьте DejaGNU к компиляции: -

-
../configure --prefix=/usr
-makeinfo --html --no-split -o doc/dejagnu.html ../doc/dejagnu.texi
-makeinfo --plaintext       -o doc/dejagnu.txt  ../doc/dejagnu.texi
-

- Соберите и установите пакет: -

-
make install
-install -v -dm755  /usr/share/doc/dejagnu-1.6.3
-install -v -m644   doc/dejagnu.{html,txt} /usr/share/doc/dejagnu-1.6.3
-

- Чтобы протестировать пакет, выполните: -

-
make check
-
-
-

- 8.17.2. - Содержимое пакета DejaGNU -

-
-
-
- Установленные - программы: dejagnu и - runtest -
-
-
-
-

- Short Descriptions -

- - - - - - - - - - - - - - - -
-

- dejagnu -

-
-

- Вспомогательная программа запуска команд DejaGNU -

-
-

- runtest -

-
-

- Скрипт-обертка, который находит соответствующую - оболочку expect, и - запускает DejaGnu -

-
-
-
-
-
-
-
-
-

- 8.18. Binutils-2.41 -

-
-
-
-
-

- Пакет Binutils содержит компоновщик, ассемблер и другие - инструменты для работы с объектными файлами. -

-
-
-
- Приблизительное время - сборки: 2.2 SBU -
-
- Требуемое дисковое - пространство: 2.7 - GB -
-
-
-
-
-

- 8.18.1. Установка пакета Binutils -

-

- Документация Binutils рекомендует выполнять компиляцию в - отдельном каталоге: -

-
mkdir -v build
-cd       build
-

- Подготовьте Binutils к компиляции: -

-
../configure --prefix=/usr       \
-             --sysconfdir=/etc   \
-             --enable-gold       \
-             --enable-ld=default \
-             --enable-plugins    \
-             --enable-shared     \
-             --disable-werror    \
-             --enable-64-bit-bfd \
-             --with-system-zlib
-
-

- Значение параметров настройки: -

-
-
- --enable-gold -
-
-

- Собирает компоновщик gold и устанавливает его как - ld.gold (вместе с компоновщиком по умолчанию). -

-
-
- --enable-ld=default -
-
-

- Собирает оригинальный компоновщик bfd и устанавливает - его как ld (компоновщик по умолчанию) и как ld.bfd -

-
-
- --enable-plugins -
-
-

- Включает поддержку плагинов для компоновщика. -

-
-
- --enable-64-bit-bfd -
-
-

- Включает 64-разрядную поддержку (на хостах с - ограниченным размерам слов). Может не понадобится в - 64-разрядных системах, но вреда от этого не будет. -

-
-
- --with-system-zlib -
-
-

- Использовать установленную библиотеку zlib вместо - сборки собственной. -

-
-
-
-

- Скомпилируйте пакет: -

-
make tooldir=/usr
-
-

- Значение параметра make: -

-
-
- tooldir=/usr -
-
-

- Обычно для tooldir (каталога, в котором будут - расположены исполняемые файлы) установлено значение - $(exec_prefix)/$(target_alias). - Например, машины x86_64 преобразуют это значение в - /usr/x86_64-unknown-linux-gnu. - Поскольку это пользовательская система, то целевой - каталог в /usr не - требуется. Параметр $(exec_prefix)/$(target_alias) - использовался, если бы система применялась для - кросс-компиляции (например, при компиляции пакета на - компьютере Intel, который генерирует код, который может - быть выполнен на компьютерах PowerPC). -

-
-
-
-
-

- Важно -

-

- Набор тестов для Binutils в этом разделе считается - критически важным. Ни в коем случае не пропускайте его. -

-
-

- Выполните тестирование: -

-
make -k check
-

- Чтобы получить список неудачных тестов, запустите: -

-
grep '^FAIL:' $(find -name '*.log')
-

- Двенадцать тестов завершаются неудачно в наборе тестов gold, - когда GCC собирается с параметрами --enable-default-pie и --enable-default-ssp. -

-

- Также известно, что завершаются неудачно три теста в пакете - gprofng. -

-

- Установите пакет: -

-
make tooldir=/usr install
-

- Удалите бесполезные статические библиотеки: -

-
rm -fv /usr/lib/lib{bfd,ctf,ctf-nobfd,gprofng,opcodes,sframe}.a
-
-
-

- 8.18.2. Содержимое пакета Binutils -

-
-
-
- Установленные - программы: addr2line, ar, - as, c++filt, dwp, elfedit, gprof, gprofng, ld, ld.bfd, - ld.gold, nm, objcopy, objdump, ranlib, readelf, size, - strings и strip -
-
- Установленные - библиотеки: libbfd.so, - libctf.so, libctf-nobfd.so, libgprofng.so, libopcodes.so - и libsframe.so -
-
- Созданные каталоги: - /usr/lib/ldscripts -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

- addr2line -

-
-

- Переводит адреса программ в имена файлов и номера - строк; учитывая адрес и имя исполняемого файла, - использует отладочную информацию в исполняемом - файле, для определения файла исходного кода и - номера строки, ассоциированной с адресом -

-
-

- ar -

-
-

- Создаёт, изменяет и распаковывает архивы -

-
-

- as -

-
-

- Ассемблер, который собирает результат работы - gcc в - объектные файлы -

-
-

- c++filt -

-
-

- Используется компоновщиком для исправления символов - C++ и Java и предотвращения конфликтов - перегруженных функций. -

-
-

- dwp -

-
-

- Утилита для упаковки DWARF -

-
-

- elfedit -

-
-

- Обновляет ELF заголовки в ELF файлах -

-
-

- gprof -

-
-

- Отображает в графическом виде информацию о - профилировании -

-
-

- gprofng -

-
-

- Собирает и анализирует данные о производительности -

-
-

- ld -

-
-

- Компоновщик, который объединяет несколько объектных - и архивных файлов в один файл, перемещая их данные - и связывая символическими ссылками -

-
-

- ld.gold -

-
-

- Урезанная версия ld, которая поддерживает только - формат объектных файлов elf -

-
-

- ld.bfd -

-
-

- Жесткая ссылка на ld -

-
-

- nm -

-
-

- Выводит список символов, используемых в данном - объектном файле -

-
-

- objcopy -

-
-

- Преобразует один тип объектного файла в другой -

-
-

- objdump -

-
-

- Отображает информацию о данном объектном файле; - можно указать параметры, определяющие, какая - конкретно информация будет отображаться. - Отображаемая информация полезна для программистов, - которые работают над инструментами, используемыми - при компиляции -

-
-

- ranlib -

-
-

- Создает индекс содержимого архива и сохраняет его в - архиве; в индексе перечислены все символы, - определенные в перемещаемых объектных файлах, - содержащихся в архиве -

-
-

- readelf -

-
-

- Отображает информацию о двоичных файлах типа ELF -

-
-

- size -

-
-

- Отображает размеры секций и общий размер указанных - объектных файлов -

-
-

- strings -

-
-

- Выводит для каждого указанного файла - последовательности печатаемых символов, которые - имеют по крайней мере указанную длину (по умолчанию - четыре); для объектных файлов по умолчанию - печатаются только строки из секций инициализации и - загрузки, в то время как для других файлов он - сканирует весь файл. -

-
-

- strip -

-
-

- Удаляет символы из объектных файлов -

-
-

- libbfd -

-
-

- Библиотека дескрипторов двоичных файлов -

-
-

- libctf -

-
-

- Библиотека отладки формата Compat ANSI-C Type -

-
-

- libctf-nobfd -

-
-

- Вариант libctf, не использующий функциональность - libbfd. -

-
-

- libgprofng -

-
-

- Библиотека, содержащая большинство подпрограмм, - используемых gprofng -

-
-

- libopcodes -

-
-

- Библиотека для работы с опкодами—«читаемыми» версиями - инструкций для процессора. Используется для сборки - таких утилит как objdump -

-
-

- libsframe -

-
-

- Библиотека для поддержки обратной - онлайн-трассировки с использованием простого - декодера разделов .sframe. -

-
-
-
-
-
-
-
-
-

- 8.19. GMP-6.3.0 -

-
-
-
-
-

- Пакет GMP содержит математические библиотеки. Они содержат - полезные функции для арифметики с произвольной точностью. -

-
-
-
- Приблизительное время - сборки: 0.3 SBU -
-
- Требуемое дисковое - пространство: 54 MB -
-
-
-
-
-

- 8.19.1. Установка пакета GMP -

-
-

- Примечание -

-

- Если вы выполняете сборку для 32-разрядной архитектуры x86, - но ваш процессор, способен выполнять 64-разрядный код, - и вы указали в - переменных окружения CFLAGS, - скрипт configure попытается выполнить настройку для - 64-разрядной системы и завершится ошибкой. Чтобы избежать - этого, необходимо вызвать команду configure с приведенным - ниже параметром -

-
ABI=32 ./configure ...
-
-
-

- Примечание -

-

- Настройки GMP по умолчанию собирают библиотеки, - оптимизированные для процессора хоста. Если требуются - библиотеки, подходящие для процессоров с меньшей - производительностью, чем у процессора хоста, можно собрать - общие библиотеки, добавив параметр --host=none-linux-gnu в команде - configure. -

-
-

- Подготовьте GMP к компиляции: -

-
./configure --prefix=/usr    \
-            --enable-cxx     \
-            --disable-static \
-            --docdir=/usr/share/doc/gmp-6.3.0
-
-

- Значение новых параметров настройки: -

-
-
- --enable-cxx -
-
-

- Этот параметр включает поддержку C++ -

-
-
- --docdir=/usr/share/doc/gmp-6.3.0 -
-
-

- Эта переменная указывает местоположение для - документации. -

-
-
-
-

- Скомпилируйте пакет и сгенерируйте HTML-документацию: -

-
make
-make html
-
-

- Важно -

-

- Набор тестов для GMP в этом разделе считается критически - важным. Ни в коем случае не пропускайте его. -

-
-

- Проверьте результаты: -

-
make check 2>&1 | tee gmp-check-log
-
-

- Внимание -

-

- Код в GMP сильно оптимизирован для процессора, на котором - он собран. Иногда код, определяющий процессор, неверно - определяет возможности системы, и в тестах или других - приложениях, использующих библиотеки gmp, возникают ошибки - с сообщением "Illegal instruction". В этом случае gmp - следует переконфигурировать с параметром --host=none-linux-gnu и пересобрать. -

-
-

- Убедитесь, что все 199 тестов в наборе тестов пройдены. - Проверьте результат, выполнив следующую команду: -

-
awk '/# PASS:/{total+=$3} ; END{print total}' gmp-check-log
-

- Установите пакет и его документацию: -

-
make install
-make install-html
-
-
-

- 8.19.2. - Содержимое пакета GMP -

-
-
-
- Установленные - библиотеки: libgmp.so и - libgmpxx.so -
-
- Созданные каталоги: - /usr/share/doc/gmp-6.3.0 -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - - - - - -
-

- libgmp -

-
-

- Содержит точные математические функции -

-
-

- libgmpxx -

-
-

- Содержит точные математические функции C++ -

-
-
-
-
-
-
-
-
-

- 8.20. MPFR-4.2.0 -

-
-
-
-
-

- Пакет MPFR содержит функции для двоичных вычислений с - плавающей запятой произвольной точности. -

-
-
-
- Приблизительное время - сборки: 0.2 SBU -
-
- Требуемое дисковое - пространство: 43 MB -
-
-
-
-
-

- 8.20.1. Установка пакета MPFR -

-

- Исправьте тестовый пример, приводящий к ошибке в старых - версиях Glibc: -

-
sed -e 's/+01,234,567/+1,234,567 /' \
-    -e 's/13.10Pd/13Pd/'            \
-    -i tests/tsprintf.c
-

- Подготовьте MPFR к компиляции: -

-
./configure --prefix=/usr        \
-            --disable-static     \
-            --enable-thread-safe \
-            --docdir=/usr/share/doc/mpfr-4.2.0
-

- Скомпилируйте пакет и сгенерируйте HTML-документацию: -

-
make
-make html
-
-

- Важно -

-

- Набор тестов для MPFR в этом разделе считается критически - важным. Ни в коем случае не пропускайте его. -

-
-

- Выполните тестирование и убедитесь, что все 197 тестов - пройдены: -

-
make check
-

- Установите пакет и документацию к нему: -

-
make install
-make install-html
-
-
-

- 8.20.2. - Содержимое пакета MPFR -

-
-
-
- Установленные - библиотеки: libmpfr.so -
-
- Созданные каталоги: - /usr/share/doc/mpfr-4.2.0 -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - -
-

- libmpfr -

-
-

- Содержит математические функции с произвольной - точностью -

-
-
-
-
-
-
-
-
-

- 8.21. MPC-1.3.1 -

-
-
-
-
-

- Пакет MPC содержит библиотеку для арифметики комплексных - чисел с высокой точностью и правильным округлением - результата. -

-
-
-
- Приблизительное время - сборки: 0.1 SBU -
-
- Требуемое дисковое - пространство: 22 MB -
-
-
-
-
-

- 8.21.1. Установка пакета MPC -

-

- Подготовьте MPC к компиляции: -

-
./configure --prefix=/usr    \
-            --disable-static \
-            --docdir=/usr/share/doc/mpc-1.3.1
-

- Скомпилируйте пакет и сгенерируйте HTML-документацию: -

-
make
-make html
-

- Чтобы протестировать пакет, выполните: -

-
make check
-

- Установите пакет и документацию к нему: -

-
make install
-make install-html
-
-
-

- 8.21.2. - Содержимое пакета MPC -

-
-
-
- Установленные - библиотеки: libmpc.so -
-
- Созданные каталоги: - /usr/share/doc/mpc-1.3.1 -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - -
-

- libmpc -

-
-

- Содержит сложные математические функции -

-
-
-
-
-
-
-
-
-

- 8.22. Attr-2.5.1 -

-
-
-
-
-

- Пакет Attr содержит утилиты для управления расширенными - атрибутами объектов файловой системы. -

-
-
-
- Приблизительное время - сборки: менее 0.1 - SBU -
-
- Требуемое дисковое - пространство: 4.1 - MB -
-
-
-
-
-

- 8.22.1. Установка пакета Attr -

-

- Подготовьте Attr к компиляции: -

-
./configure --prefix=/usr     \
-            --disable-static  \
-            --sysconfdir=/etc \
-            --docdir=/usr/share/doc/attr-2.5.1
-

- Скомпилируйте пакет: -

-
make
-

- Тесты необходимо запускать в файловой системе, которая - поддерживает расширенные атрибуты, например, ext2, ext3 или - ext4. Чтобы протестировать пакет, выполните: -

-
make check
-

- Установите пакет: -

-
make install
-
-
-

- 8.22.2. - Содержимое пакета Attr -

-
-
-
- Установленные - программы: attr, getfattr, - и setfattr -
-
- Установленные - библиотеки: libattr.so -
-
- Созданные каталоги: - /usr/include/attr и - /usr/share/doc/attr-2.5.1 -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - - - - - - - - - - - - - -
-

- attr -

-
-

- Расширяет атрибуты объектов файловой системы -

-
-

- getfattr -

-
-

- Получает расширенные атрибуты объектов файловой - системы -

-
-

- setfattr -

-
-

- Устанавливает расширенные атрибуты объектов - файловой системы -

-
-

- libattr -

-
-

- Содержит библиотечные функции для управления - расширенными атрибутами. -

-
-
-
-
-
-
-
-
-

- 8.23. Acl-2.3.1 -

-
-
-
-
-

- Пакет Acl содержит утилиты для администрирования списков - контроля доступа, которые используются для определения - расширенных дискреционных прав доступа к файлам и каталогам. -

-
-
-
- Приблизительное время - сборки: менее 0.1 - SBU -
-
- Требуемое дисковое - пространство: 6.1 - MB -
-
-
-
-
-

- 8.23.1. Установка пакета Acl -

-

- Подготовьте Acl к компиляции: -

-
./configure --prefix=/usr         \
-            --disable-static      \
-            --docdir=/usr/share/doc/acl-2.3.1
-

- Скомпилируйте пакет: -

-
make
-

- Тесты Acl необходимо запускать в файловой системе, - поддерживающей списки контроля доступа, после сборки пакета - Coreutils с использованием - библиотек Acl. По желанию вернитесь к этому пакету и - запустите make - check после того, как будет собран пакет - Coreutils. -

-

- Установите пакет: -

-
make install
-
-
-

- 8.23.2. - Содержимое пакета Acl -

-
-
-
- Установленные - программы: chacl, getfacl, - и setfacl -
-
- Установленные - библиотеки: libacl.so -
-
- Созданные каталоги: - /usr/include/acl и - /usr/share/doc/acl-2.3.1 -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - - - - - - - - - - - - - -
-

- chacl -

-
-

- Изменяет список контроля доступа файла или каталога -

-
-

- getfacl -

-
-

- Получает списки контроля доступа файла -

-
-

- setfacl -

-
-

- Устанавливает списки контроля доступа к файлам -

-
-

- libacl -

-
-

- Содержит библиотечные функции для управления - списками контроля доступа. -

-
-
-
-
-
-
-
-
-

- 8.24. Libcap-2.69 -

-
-
-
-
-

- Пакет Libcap реализует интерфейсы пользовательского - пространства для возможностей POSIX 1003.1e, доступных в - ядрах Linux. Эти возможности разделяют полномочия - суперпользователя root на набор отдельных привилегий. -

-
-
-
- Приблизительное время - сборки: менее 0.1 - SBU -
-
- Требуемое дисковое - пространство: 2.9 - MB -
-
-
-
-
-

- 8.24.1. Установка пакета Libcap -

-

- Запретите установку статических библиотек: -

-
sed -i '/install -m.*STA/d' libcap/Makefile
-

- Скомпилируйте пакет: -

-
make prefix=/usr lib=lib
-
-

- Значение опции make: -

-
-
- lib=lib -
-
-

- Этот параметр устанавливает библиотеки в каталог - /usr/lib, а не - /usr/lib64 на x86_64. На - x86 это никак не влияет. -

-
-
-
-

- Чтобы протестировать пакет, выполните: -

-
make test
-

- Установите пакет: -

-
make prefix=/usr lib=lib install
-
-
-

- 8.24.2. - Содержимое пакета Libcap -

-
-
-
- Установленные - программы: capsh, getcap, - getpcaps и setcap -
-
- Установленные - библиотеки: libcap.so и - libpsx.so -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

- capsh -

-
-

- Обёртка к оболочке для исследования и ограничения - поддержки возможностей Linux -

-
-

- getcap -

-
-

- Проверяет возможности файлов -

-
-

- getpcaps -

-
-

- Отображает возможности запрашиваемого процесса - (процессов) -

-
-

- setcap -

-
-

- Устанавливает возможности файлов -

-
-

- libcap -

-
-

- Содержит функции для управления возможностями POSIX - 1003.1e. -

-
-

- libpsx -

-
-

- Содержит функции для поддержки семантики POSIX для - системных вызовов, связанных с библиотекой pthread -

-
-
-
-
-
-
-
-
-

- 8.25. Libxcrypt-4.4.36 -

-
-
-
-
-

- Пакет Libxcrypt содержит современную библиотеку для - одностороннего хэширования паролей. -

-
-
-
- Приблизительное время - сборки: 0.1 SBU -
-
- Требуемое дисковое - пространство: 15 MB -
-
-
-
-
-

- 8.25.1. Установка пакета Libxcrypt -

-

- Подготовьте Libxcrypt к компиляции: -

-
./configure --prefix=/usr                \
-            --enable-hashes=strong,glibc \
-            --enable-obsolete-api=no     \
-            --disable-static             \
-            --disable-failure-tokens
-
-

- Значение новых параметров настройки: -

-
-
- --enable-hashes=strong,glibc -
-
-

- Создает хэши, используя надежные алгоритмы хэширования, - рекомендуемые для безопасности, и алгоритмы - хэширования, предоставляемые традиционной библиотекой - Glibc libcrypt для - совместимости. -

-
-
- --enable-obsolete-api=no -
-
-

- Отключает устаревшие функции API. Они не нужны для - современной системы Linux, собранной из исходного кода. -

-
-
- --disable-failure-tokens -
-
-

- Отключает признак токена сбоя. Он необходим для - совместимости с традиционными хэш-библиотеками - некоторых платформ, но система Linux, основанная на - Glibc, в нем не нуждается. -

-
-
-
-

- Скомпилируйте пакет: -

-
make
-

- Чтобы протестировать пакет, выполните: -

-
make check
-

- Установите пакет: -

-
make install
-
-

- Примечание -

-

- С помощью приведенных выше инструкций были отключены - устаревшие функции API, поскольку ни один пакет, - установленный путем компиляции из исходных кодов, не будет - связываться с ними во время выполнения. Однако известные - двоичные приложения, которые используют эти функции, - требуют ABI версии 1. Если вам необходим этот функционал - для какого-либо приложения, предоставляемого только в - бинарном виде, или для совместимости с LSB, соберите пакет - заново с помощью следующих команд: -

-
make distclean
-./configure --prefix=/usr                \
-            --enable-hashes=strong,glibc \
-            --enable-obsolete-api=glibc  \
-            --disable-static             \
-            --disable-failure-tokens
-make
-cp -av .libs/libcrypt.so.1* /usr/lib
-
-
-
-

- 8.25.2. Содержимое пакета Libxcrypt -

-
-
-
- Установленные - библиотеки: libcrypt.so -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - -
-

- libcrypt -

-
-

- Содержит функции для хэширования паролей -

-
-
-
-
-
-
-
-
-

- 8.26. Shadow-4.13 -

-
-
-
-
-

- Пакет Shadow содержит программы для безопасной обработки - паролей. -

-
-
-
- Приблизительное время - сборки: 0.1 SBU -
-
- Требуемое дисковое - пространство: 46 MB -
-
-
-
-
-

- 8.26.1. Установка пакета Shadow -

-
-

- Примечание -

-

- Если вы хотите принудительно использовать надежные пароли, - обратитесь к инструкции - https://mirror.linuxfromscratch.ru/blfs/view/12.0/postlfs/cracklib.html - для установки CrackLib перед сборкой. Затем добавьте - параметр --with-libcrack в приведенную - ниже команду configure. -

-
-

- Отключите установку groups и ее справочных - страниц, так как Coreutils предоставляет версию лучше. Кроме - того, запретите установку страниц руководств, так как они - были установлены в Раздел 8.3, - «Man-pages-6.05.01»: -

-
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 / /'   {} \;
-

- Вместо используемого по - умолчанию метода crypt, используйте более - безопасный метод шифрования паролей YESCRYPT, который также позволяет - использовать пароли длиннее 8 символов. Также необходимо - изменить устаревшее местоположение для почтовых ящиков - пользователей /var/spool/mail, - которое Shadow использует по умолчанию, на используемое в - настоящее время /var/mail. И - удалите /bin и /sbin из PATH, - поскольку они являются просто символическими ссылками на их - аналоги в /usr. -

-
-

- Примечание -

-

- Если вы по какой-либо причине хотите включить /bin и/или /sbin в PATH, - измените PATH в файле - .bashrc после сборки LFS. -

-
-
sed -e 's:#ENCRYPT_METHOD DES:ENCRYPT_METHOD YESCRYPT:' \
-    -e 's:/var/spool/mail:/var/mail:'                 \
-    -e '/PATH=/{s@/sbin:@@;s@/bin:@@}'                \
-    -i etc/login.defs
-
-

- Примечание -

-

- Если вы решили собрать Shadow с поддержкой Cracklib, - выполните эту команду: -

-
sed -i 's:DICTPATH.*:DICTPATH\t/lib/cracklib/pw_dict:' etc/login.defs
-
-

- Подготовьте Shadow к компиляции: -

-
touch /usr/bin/passwd
-./configure --sysconfdir=/etc \
-            --disable-static  \
-            --with-{b,yes}crypt \
-            --with-group-name-max-length=32
-
-

- Значение новых параметров конфигурации: -

-
-
- touch - /usr/bin/passwd -
-
-

- Файл /usr/bin/passwd - должен существовать, потому что его местоположение - жестко задано в некоторых программах; если он не - существует, скрипт установки создаст его не в том - месте. -

-
-
- --with-{b,yes}crypt -
-
-

- Оболочка расширяет это значение до двух параметров: - --with-bcrypt и - --with-yescrypt. Они - позволяют Shadow использовать алгоритмы Bcrypt и - Yescrypt, реализованные в Libxcrypt, для хеширования - паролей. Эти алгоритмы более безопасны (в частности, - гораздо более устойчивы к атакам с использованием - графических процессоров), чем традиционные алгоритмы - SHA. -

-
-
- --with-group-name-max-length=32 -
-
-

- Максимально допустимая длина имени пользователя - составляет 32 символа. Сделайте такую же длину для - названия группы. -

-
-
-
-

- Скомпилируйте пакет: -

-
make
-

- С этим пакетом не поставляется набор тестов. -

-

- Установите пакет: -

-
make exec_prefix=/usr install
-make -C man install-man
-
-
-

- 8.26.2. Настройка - Shadow -

-

- Этот пакет содержит утилиты для добавления, изменения и - удаления пользователей и групп; установки и изменения их - паролей; и выполнения других задач администрирования. Полное - объяснение того, что означает password shadowing, см. в файле - doc/HOWTO в дереве распакованных исходных текстов. При - использовании Shadow имейте в виду, что программы, которым - необходимо проверять пароли (дисплейные менеджеры, - FTP-программы, демоны pop3 и т.д.), должны быть совместимы с - Shadow. То есть они должны уметь работать с теневыми - паролями. -

-

- Чтобы включить поддержку теневых паролей, выполните следующую - команду:: -

-
pwconv
-

- Чтобы включить использование теневых паролей для групп, - запустите: -

-
grpconv
-

- Конфигурация Shadow по умолчанию для утилиты useradd имеет несколько - особенностей, требующих пояснения. Во-первых, по умолчанию - утилита useradd - создает пользователя и группу с тем же названием, что и имя - пользователя. По умолчанию, идентификатора пользователя (UID) - и идентификатора группы (GID) начинаются с 1000. Это - означает, что если вы не передадите дополнительные параметры - в useradd, - каждый пользователь будет членом уникальной группы в системе. - Если такое поведение нежелательно, вам нужно передать один из - параметров -g или - -N в useradd или изменить - настройку USERGROUPS_ENAB в файле - /etc/login.defs. Смотрите - справочную страницу useradd(8) - для получения дополнительной информации. -

-

- Во-вторых, чтобы изменить параметры по умолчанию, необходимо - создать файл /etc/default/useradd и настроить его в - соответствии с вашими потребностями. Создайте его: -

-
mkdir -p /etc/default
-useradd -D --gid 999
-
-

- Пояснения к параметрам /etc/default/useradd -

-
-
- GROUP=999 -
-
-

- Этот параметр задает начальный номер группы, - используемых в файле /etc/group. Значение 999 берется из - приведенного выше параметра --gid. Вы можете - установить любое значение. Обратите внимание, что - useradd - никогда не будет повторно использовать UID или GID. - Если номер, указанный в этом параметре, уже - используется будет выбран следующий доступный номер. - Также обратите внимание, что если в вашей системе нет - группы с идентификатором, равным этому номеру, при - первом использовании useradd без параметра - -g — вы - получите следующее сообщение об ошибке: useradd: unknown GID 999, даже - если учетная запись была создана правильно. Поэтому мы - создали группу users с - этим идентификатором в Раздел 7.6, - «Создание основных файлов и символических ссылок». -

-
-
- CREATE_MAIL_SPOOL=yes -
-
-

- Этот параметр заставит утилиту useradd создавать - файл почтового ящика для каждого нового пользователя. - useradd - сделает этот файл принадлежащим группе mail с правами доступа 0660. Если - вы предпочитаете, не создавать эти файлы, выполните - следующую команду: -

-
sed -i '/MAIL/s/yes/no/' /etc/default/useradd
-
-
-
-
-
-

- 8.26.3. Установка пароля пользователя root -

-

- Придумайте пароль для root и установите командой: -

-
passwd root
-
-
-

- 8.26.4. - Содержимое пакета Shadow -

-
-
-
- Установленные - программы: chage, chfn, - chgpasswd, chpasswd, chsh, expiry, faillog, getsubids, - gpasswd, groupadd, groupdel, groupmems, groupmod, grpck, - grpconv, grpunconv, lastlog, login, logoutd, newgidmap, - newgrp, newuidmap, newusers, nologin, passwd, pwck, - pwconv, pwunconv, sg (ссылка на newgrp), su, useradd, - userdel, usermod, vigr (ссылка на vipw) и vipw -
-
- Установленные - библиотеки: libsubid.so -
-
- Созданные каталоги: - /etc/default и - /usr/include/shadow -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

- chage -

-
-

- Используется для изменения максимального количества - дней между обязательными сменами пароля -

-
-

- chfn -

-
-

- Используется для изменения полного имени - пользователя и другой информации -

-
-

- chgpasswd -

-
-

- Используется для обновления паролей групп в - пакетном режиме. -

-
-

- chpasswd -

-
-

- Используется для обновления паролей пользователей в - пакетном режиме. -

-
-

- chsh -

-
-

- Используется для изменения оболочки входа для - пользователя. -

-
-

- expiry -

-
-

- Проверяет и применяет текущую политику истечения - срока действия пароля -

-
-

- faillog -

-
-

- Используется для проверки журнала неудачных попыток - входа в систему, для установки максимального - количества неудачных попыток до блокировки учетной - записи и для сброса счетчика неудачных попыток. -

-
-

- getsubids -

-
-

- Используется для перечисления подчиненных - диапазонов идентификаторов для пользователя -

-
-

- gpasswd -

-
-

- Используется для добавления и удаления - пользователей и администраторов в группы. -

-
-

- groupadd -

-
-

- Создает группу с указанным именем -

-
-

- groupdel -

-
-

- Удаляет группу с указанным именем -

-
-

- groupmems -

-
-

- Позволяет пользователю управлять своим собственным - списком членов группы без привилегий - суперпользователя -

-
-

- groupmod -

-
-

- Используется для изменения имени группы или GID -

-
-

- grpck -

-
-

- Проверяет целостность файлов групп /etc/group и /etc/gshadow -

-
-

- grpconv -

-
-

- Создает или изменяет файл теневых групп, используя - для этого обычный файл групп -

-
-

- grpunconv -

-
-

- Обновляет /etc/group - из /etc/gshadow, а - затем удаляет последний -

-
-

- lastlog -

-
-

- Сообщает о самом последнем входе в систему всех - пользователей или данного пользователя -

-
-

- login -

-
-

- Используется системой для того, чтобы пользователь - мог войти в систему -

-
-

- logoutd -

-
-

- Это демон, используемый для обеспечения соблюдения - ограничений на время входа в систему и порты -

-
-

- newgidmap -

-
-

- Используется для сопоставления gid пространства - имен пользователя -

-
-

- newgrp -

-
-

- Используется для изменения GID во время сеанса - входа в систему -

-
-

- newuidmap -

-
-

- Используется для сопоставления uid пространства - имен пользователя -

-
-

- newusers -

-
-

- Используется для создания или изменения - последовательности учетных записей -

-
-

- nologin -

-
-

- Отображает сообщение о том, что учетная запись - недоступна; она предназначена для использования в - качестве оболочки по умолчанию для отключенных - учетных записей -

-
-

- passwd -

-
-

- Используется для изменения пароля для учетной - записи пользователя или группы. -

-
-

- pwck -

-
-

- Проверяет целостность файлов паролей /etc/passwd и /etc/shadow -

-
-

- pwconv -

-
-

- Создает или изменяет файл теневых паролей, - используя для этого обычный файл паролей -

-
-

- pwunconv -

-
-

- Обновляет /etc/passwd - из /etc/shadow а - затем удаляет последний -

-
-

- sg -

-
-

- Выполняет указанную команду в случае, если у - пользователя идентификатор группы GID совпадает с - идентификатором указанной группы -

-
-

- su -

-
-

- Запускает оболочку с заменой идентификаторов - пользователя и группы -

-
-

- useradd -

-
-

- Создает нового пользователя с указанным именем, - либо изменяет информацию, задаваемую по умолчанию - для нового пользователя -

-
-

- userdel -

-
-

- Удаляет учетную запись указанного пользователя -

-
-

- usermod -

-
-

- Используется для изменения имени пользователя, - идентификатора пользователя (UID), оболочки, - группы, домашнего каталога и т.д. -

-
-

- vigr -

-
-

- Редактирует файлы /etc/group или /etc/gshadow -

-
-

- vipw -

-
-

- Редактирует файлы /etc/passwd или /etc/shadow -

-
-

- libsubid -

-
-

- библиотека для обработки подчиненных диапазонов - идентификаторов пользователей и групп -

-
-
-
-
-
-
-
-
-

- 8.27. GCC-13.2.0 -

-
-
-
-
-

- Пакет GCC содержит коллекцию компиляторов GNU, которая - включает компиляторы C и C++. -

-
-
-
- Приблизительное время - сборки: 42 SBU (с - тестами) -
-
- Требуемое дисковое - пространство: 5.5 - GB -
-
-
-
-
-

- 8.27.1. Установка пакета GCC -

-

- При сборке на x86_64 измените имя каталога по умолчанию для - 64-битных библиотек на «lib»: -

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

- Документация GCC рекомендует собирать GCC в отдельном - каталоге: -

-
mkdir -v build
-cd       build
-

- Подготовьте GCC к компиляции: -

-
../configure --prefix=/usr            \
-             LD=ld                    \
-             --enable-languages=c,c++ \
-             --enable-default-pie     \
-             --enable-default-ssp     \
-             --disable-multilib       \
-             --disable-bootstrap      \
-             --disable-fixincludes    \
-             --with-system-zlib
-

- GCC поддерживает семь различных языков программирования, но - предварительные условия для большинства из них еще не - выполнены. См. страницу - BLFS Book GCC для получения инструкций о том, как собрать - все языки, поддерживаемые GCC -

-
-

- Значение новых параметров настройки: -

-
-
- LD=ld -
-
-

- Этот параметр указывает скрипту configure использовать - ld, установленный программой Binutils, собранной ранее - в этой главе, а не кросс версию, которая использовалась - бы в противном случае. -

-
-
- --disable-fixincludes -
-
-

- По умолчанию во время установки GCC некоторые системные - заголовки будут «исправлены» для использования с - GCC. Это не обязательно для современной системы Linux и - потенциально опасно, если пакет будет переустановлен - после установки GCC. Этот параметр не позволяет GCC - «исправлять» заголовки. -

-
-
- --with-system-zlib -
-
-

- Этот параметр указывает GCC ссылаться на установленную - в системе копию библиотеки Zlib, а не на собственную - внутреннюю копию. -

-
-
-
-
-

- Примечание -

-

- PIE (позиционно-независимые исполняемые файлы) — это - двоичные программы, которые можно загружать в любое место - памяти. Без PIE функция безопасности под названием ASLR - (рандомизация размещения адресного пространства) может - применяться к общим библиотекам, но не к самим исполняемым - файлам. Включение PIE позволяет использовать ASLR для - исполняемых файлов в дополнение к общим библиотекам и - смягчает некоторые атаки, основанные на фиксированных - адресах конфиденциального кода или данных в исполняемых - файлах. -

-

- SSP (Stack Smashing Protection - защита от разрушения - стека) — это метод, гарантирующий, что стек параметров не - будет поврежден. Повреждение стека может, например, - изменить адрес возврата подпрограммы, тем самым передав - управление какому-то опасному коду (существующему в - программе или общих библиотеках или каким-то образом - внедренному злоумышленником). -

-
-

- Скомпилируйте пакет: -

-
make
-
-

- Важно -

-

- В этом разделе набор тестов для GCC считается важным, но - занимает много времени. Начинающим сборщикам не - рекомендуется пропускать его. Время выполнения тестов можно - значительно сократить, добавив -jx в приведенную ниже - команду make -k - check, где x - количество ядер процессора в - вашей системе. -

-
-

- Известно, что один набор тестов GCC переполняет стек по - умолчанию, поэтому увеличьте размер стека перед запуском - тестов: -

-
ulimit -s 32768
-

- Выполните тестирование под непривилегированным пользователем, - но не останавливайтесь на ошибках: -

-
chown -Rv tester .
-su tester -c "PATH=$PATH make -k check"
-

- Чтобы получить сводку результатов набора тестов, выполните: -

-
../contrib/test_summary
-

- Чтобы отфильтровать только итоговую сводку, передайте вывод - через pipe grep -A7 - Summ. -

-

- Результаты можно сравнить с результатами, размещенными на - https://mirror.linuxfromscratch.ru/lfs/build-logs/12.0/ - и https://gcc.gnu.org/ml/gcc-testresults/. -

-

- Известно, что два теста с именами copy.cc и pr56837.c завершаются ошибкой. Кроме того, - известно, что несколько тестов в каталоге vect завершаются неудачно, если - оборудование не поддерживает AVX. -

-

- Известно, что в Glibc-2.38, тесты анализатора с именами - data-model-4.c и conftest-1.c завершаются неудачно. - Известно, что в тестах asan, несколько тестов в asan_test.C завершаются неудачно. Известно, - что тест с именем interception-malloc-test-1.C завершился - ошибкой. -

-

- Не всегда удается избежать неожиданных сбоев. Разработчики - GCC обычно знают об этих проблемах, но еще не решили их. Если - результаты теста не сильно отличаются от результатов по - указанному выше URL-адресу, можно продолжать. -

-

- Установите пакет: -

-
make install
-

- Каталог сборки GCC теперь принадлежит пользователю - tester, и владелец каталога - заголовочных файлов (и его содержимого) указан неверно. - Измените владельца на пользователя и группу root: -

-
chown -v -R root:root \
-    /usr/lib/gcc/$(gcc -dumpmachine)/13.2.0/include{,-fixed}
-

- Создайте символическую ссылку, требуемую - FHS по "историческим" причинам. -

-
ln -svr /usr/bin/cpp /usr/lib
-

- Многие пакеты используют имя cc для вызова компилятора - языка Си. Мы уже создали cc как символическую ссылку - в GCC-Проход 2, теперь - создайте символическую ссылку на его справочную страницу: -

-
ln -sv gcc.1 /usr/share/man/man1/cc.1
-

- Добавьте символическую ссылку совместимости, чтобы включить - сборку программ с оптимизацией времени компоновки (LTO): -

-
ln -sfv ../../libexec/gcc/$(gcc -dumpmachine)/13.2.0/liblto_plugin.so \
-        /usr/lib/bfd-plugins/
-

- Теперь, когда наш окончательный набор инструментов готов, - важно еще раз убедиться, что компиляция и компоновка будут - работать так, как ожидалось. Мы сделаем это, выполнив - проверку работоспособности: -

-
echo 'int main(){}' > dummy.c
-cc dummy.c -v -Wl,--verbose &> dummy.log
-readelf -l a.out | grep ': /lib'
-

- Ошибок быть не должно, и вывод последней команды будет (с - учетом платформо-зависимых различий в имени динамического - компоновщика): -

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

- Теперь убедитесь, что мы настроили использование правильных - стартовых файлов: -

-
grep -E -o '/usr/lib.*/S?crt[1in].*succeeded' dummy.log
-

- Вывод последней команды должен быть: -

-
/usr/lib/gcc/x86_64-pc-linux-gnu/13.2.0/../../../../lib/Scrt1.o succeeded
-/usr/lib/gcc/x86_64-pc-linux-gnu/13.2.0/../../../../lib/crti.o succeeded
-/usr/lib/gcc/x86_64-pc-linux-gnu/13.2.0/../../../../lib/crtn.o succeeded
-

- В зависимости от архитектуры вашего компьютера вышеуказанные - параметры могут незначительно отличаться. Разница будет - заключаться в имени каталога после /usr/lib/gcc. Здесь важно обратить внимание - на то, что gcc - нашел все три файла crt*.o в - каталоге /usr/lib. -

-

- Убедитесь, что компилятор ищет правильные заголовочные файлы: -

-
grep -B4 '^ /usr/include' dummy.log
-

- Эта команда должна вернуть следующий вывод: -

-
#include <...> search starts here:
- /usr/lib/gcc/x86_64-pc-linux-gnu/13.2.0/include
- /usr/local/include
- /usr/lib/gcc/x86_64-pc-linux-gnu/13.2.0/include-fixed
- /usr/include
-

- Опять же, имя каталога может отличаться от указанного выше, в - зависимости от архитектуры вашей системы. -

-

- Затем убедитесь, что новый компоновщик использует правильные - пути поиска: -

-
grep 'SEARCH.*/usr/lib' dummy.log |sed 's|; |\n|g'
-

- Ссылки на пути, содержащие компоненты с '-linux-gnu', следует - игнорировать, но в противном случае вывод последней команды - должен быть таким: -

-
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");
-

- 32-разрядная система может использовать несколько других - каталогов. Например, вот вывод с компьютера i686: -

-
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");
-

- Затем убедитесь, что мы используем правильную libc: -

-
grep "/lib.*/libc.so.6 " dummy.log
-

- Вывод последней команды должен быть: -

-
attempt to open /usr/lib/libc.so.6 succeeded
-

- Убедитесь, что GCC использует правильный динамический - компоновщик: -

-
grep found dummy.log
-

- Вывод последней команды должен быть (с учетом различий в - имени динамического компоновщика, зависящих от платформы): -

-
found ld-linux-x86-64.so.2 at /usr/lib/ld-linux-x86-64.so.2
-

- Если вывод выглядит не так, как показано выше, или вообще не - получен, значит, где-то серьезная ошибка. Изучите и повторите - шаги, чтобы выяснить, в чем проблема, и исправьте ее. Любые - проблемы должны быть решены, прежде чем вы продолжите - процесс. -

-

- Как только все заработает правильно, удалите тестовые файлы: -

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

- Наконец, переместите файл: -

-
mkdir -pv /usr/share/gdb/auto-load/usr/lib
-mv -v /usr/lib/*gdb.py /usr/share/gdb/auto-load/usr/lib
-
-
-

- 8.27.2. - Содержимое пакета GCC -

-
-
-
- Установленные - программы: c++, cc (link - to gcc), cpp, g++, gcc, gcc-ar, gcc-nm, gcc-ranlib, gcov, - gcov-dump, gcov-tool, и lto-dump -
-
- Установленные - библиотеки: libasan.{a,so}, libatomic.{a,so}, libcc1.so, - libgcc.a, libgcc_eh.a, libgcc_s.so, libgcov.a, - libgomp.{a,so}, libhwasan.{a,so}, libitm.{a,so}, - liblsan.{a,so}, liblto_plugin.so, libquadmath.{a,so}, - libssp.{a,so}, libssp_nonshared.a, libstdc++.{a,so}, - libstdc++exp.a, libstdc++fs.a, libsupc++.a, - libtsan.{a,so} и libubsan.{a,so} -
-
- Созданные каталоги: - /usr/include/c++, /usr/lib/gcc, - /usr/libexec/gcc и /usr/share/gcc-13.2.0 -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

- c++ -

-
-

- Компилятор С++ -

-
-

- cc -

-
-

- Компилятор C -

-
-

- cpp -

-
-

- Препроцессор C; он используется компилятором для - расширения инструкций #include, #define и подобные - директивы в исходных файлах -

-
-

- g++ -

-
-

- Компилятор C++ -

-
-

- gcc -

-
-

- Компилятор C -

-
-

- gcc-ar -

-
-

- Обертка над ar, добавляющая - плагин в командную строку. Эта программа - используется только для добавления "оптимизации - времени компоновки" и бесполезна с параметрами - сборки по умолчанию. -

-
-

- gcc-nm -

-
-

- Обертка над nm, добавляющая - плагин в командную строку. Эта программа - используется только для добавления "оптимизации - времени компоновки" и бесполезна с параметрами - сборки по умолчанию. -

-
-

- gcc-ranlib -

-
-

- Обертка над ranlib, - добавляющая плагин в командную строку. Эта - программа используется только для добавления - "оптимизации времени компоновки" и бесполезна с - параметрами сборки по умолчанию. -

-
-

- gcov -

-
-

- Инструмент тестирования; он используется для - анализа программ, чтобы определить, где оптимизация - будет иметь наибольший эффект. -

-
-

- gcov-dump -

-
-

- Автономный инструмент для дампа профилей gcda and - gcno -

-
-

- gcov-tool -

-
-

- Автономный инструмент обработки профиля gcda -

-
-

- lto-dump -

-
-

- Инструмент для создания дампа объектных файлов, - созданных GCC с включенным LTO. -

-
-

- libasan -

-
-

- Библиотека времени выполнения Address Sanitizer -

-
-

- libatomic -

-
-

- Встроенная библиотека времени выполнения GCC atomic -

-
-

- libcc1 -

-
-

- Библиотека предварительной обработки C -

-
-

- libgcc -

-
-

- Содержит средства поддержки времени исполнения для - gcc -

-
-

- libgcov -

-
-

- Эта библиотека компонуется с программой, когда в - GCC включено профилирование -

-
-

- libgomp -

-
-

- GNU реализация интерфейса OpenMP API - мультиплатформенного параллельного программирования - для языков C/C++ и Fortran с общим доступом к - памяти -

-
-

- libhwasan -

-
-

- Библиотека времени выполнения Hardware-Assisted - Address Sanitizer (аппаратной очистки адресов) -

-
-

- libitm -

-
-

- Библиотека транзакционной памяти GNU -

-
-

- liblsan -

-
-

- Библиотека времени выполнения Leak Sanitizer - (средств защиты от утечек) -

-
-

- liblto_plugin -

-
-

- Плагин GCC LTO позволяет Binutils обрабатывать - объектные файлы, созданные GCC с включенным LTO. -

-
-

- libquadmath -

-
-

- API математической библиотеки GCC Quad Precision -

-
-

- libssp -

-
-

- Содержит подпрограммы, поддерживающие - функциональность защиты стека GCC. Обычно они не - используются, потому что Glibc также предоставляет - эти подпрограммы. -

-
-

- libstdc++ -

-
-

- Стандартная библиотека C++ -

-
-

- libstdc++exp -

-
-

- Экспериментальная библиотека контрактов C++ -

-
-

- libstdc++fs -

-
-

- Библиотека файловой системы ISO/IEC TS 18822:2015 -

-
-

- libsupc++ -

-
-

- Предоставляет вспомогательные процедуры для языка - программирования C++ -

-
-

- libtsan -

-
-

- Библиотека времени выполнения Thread Sanitizer - (средств очистки потоков) -

-
-

- libubsan -

-
-

- Библиотека времени выполнения Undefined Behavior - Sanitizer (средств очистки неопределенного - поведения) -

-
-
-
-
-
-
-
-
-

- 8.28. Pkgconf-2.0.1 -

-
-
-
-
-

- Пакет pkgconf является преемником pkg-config и содержит - инструмент, который позволяет передавать пути установки или - пути к библиотекам для инструментов сборки на этапе настройки - (configure) и сборки(make) пакетов. -

-
-
-
- Приблизительное время - сборки: менее 0.1 - SBU -
-
- Требуемое дисковое - пространство: 4.6 - MB -
-
-
-
-
-

- 8.28.1. Установка пакета Pkgconf -

-

- Подготовьте Pkgconf к компиляции: -

-
./configure --prefix=/usr              \
-            --disable-static           \
-            --docdir=/usr/share/doc/pkgconf-2.0.1
-

- Скомпилируйте пакет: -

-
make
-

- Установите пакет: -

-
make install
-

- Для обеспечения совместимости с исходным Pkg-config, создайте - две символические ссылки: -

-
ln -sv pkgconf   /usr/bin/pkg-config
-ln -sv pkgconf.1 /usr/share/man/man1/pkg-config.1
-
-
-

- 8.28.2. - Содержимое пакета Pkgconf -

-
-
-
- Установленные - программы: pkgconf, - pkg-config (ссылка на pkgconf) и bomtool -
-
- Установленные - библиотеки: libpkgconf.so -
-
- Созданные каталоги: - /usr/share/doc/pkgconf-2.0.1 -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - - - - - - - - - -
-

- pkgconf -

-
-

- Возвращает метаданные указанной библиотеки или - пакета -

-
-

- bomtool -

-
-

- Генерирует спецификацию программного обеспечения из - файлов pkg-config с расширением .pc -

-
-

- libpkgconf -

-
-

- Содержит большую часть функций pkgconf, позволяя - другим инструментам, таким как IDE и компиляторы, - использовать его фреймворки -

-
-
-
-
-
-
-
-
-

- 8.29. Ncurses-6.4 -

-
-
-
-
-

- Пакет Ncurses содержит библиотеки для независимой от - терминала обработки ввода/вывода -

-
-
-
- Приблизительное время - сборки: 0.2 SBU -
-
- Требуемое дисковое - пространство: 45 MB -
-
-
-
-
-

- 8.29.1. Установка пакета Ncurses -

-

- Подготовьте Ncurses к компиляции: -

-
./configure --prefix=/usr           \
-            --mandir=/usr/share/man \
-            --with-shared           \
-            --without-debug         \
-            --without-normal        \
-            --with-cxx-shared       \
-            --enable-pc-files       \
-            --enable-widec          \
-            --with-pkg-config-libdir=/usr/lib/pkgconfig
-
-

- Значение новых параметров настройки: -

-
-
- --with-shared -
-
-

- Этот параметр позволяет Ncurses собирать и - устанавливать общие библиотеки C. -

-
-
- --without-normal -
-
-

- Этот параметр отключает сборку и установку большинства - статических библиотек C. -

-
-
- --without-debug -
-
-

- Этот параметр предотвращает сборку и установку - отладочных библиотек. -

-
-
- --with-cxx-shared -
-
-

- Это аргумент позволяет Ncurses собирать и устанавливать - общие привязки C++. А также предотвращает сборку и - установку статических привязок C++. -

-
-
- --enable-pc-files -
-
-

- Этот параметр генерирует и устанавливает файлы .pc для - pkg-config. -

-
-
- --enable-widec -
-
-

- Этот параметр указывает, что при сборке пакета вместо - обычных библиотек (например, libncurses.so.6.4) будут - использоваться библиотеки с расширенным набором - символов (например, libncursesw.so.6.4). Библиотеки с - расширенным набором символов могут использоваться как с - многобайтовыми локалями, так и с традиционными - 8-битовыми локалями, тогда как обычные библиотеки - работают только с 8-битовыми локалями. Библиотеки с - расширенным набором символов и обычные библиотеки - совместимы на уровне исходного кода, но не совместимыми - на уровне двоичного. -

-
-
-
-

- Скомпилируйте пакет: -

-
make
-

- У этого пакета есть набор тестов, но его можно запустить - только после того, как пакет будет установлен. Тесты - находятся в каталоге test/. - Дополнительные сведения см. в файле README в этом каталоге. -

-

- Установка этого пакета приведет к перезаписи libncursesw.so.6.4. Это может привести к - сбою процесса оболочки, который использует код и данные из - файла библиотеки. Установите пакет с помощью DESTDIR и правильно замените файл библиотеки - с помощью команды install. -

-
make DESTDIR=$PWD/dest install
-install -vm755 dest/usr/lib/libncursesw.so.6.4 /usr/lib
-rm -v  dest/usr/lib/libncursesw.so.6.4
-cp -av dest/* /
-

- Многие приложения ожидают, что компоновщик сможет найти - библиотеки Ncurses, не поддерживающие расширенный набор - символов. Свяжите такие приложения с библиотеками - расширенного набора символов с помощью символических ссылок и - скриптов компоновщика: -

-
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
-

- Убедитесь, что старые приложения, которым нужна -lcurses для сборки, собираются правильно: -

-
rm -vf                     /usr/lib/libcursesw.so
-echo "INPUT(-lncursesw)" > /usr/lib/libcursesw.so
-ln -sfv libncurses.so      /usr/lib/libcurses.so
-

- По желанию установите документацию Ncurses: -

-
cp -v -R doc -T /usr/share/doc/ncurses-6.4
-
-

- Примечание -

-

- С помощью приведенных выше инструкций не создаются - библиотеки Ncurses, не использующие расширенный набор - символов, поскольку ни один пакет, установленный путем - компиляции из исходного кода, не будет связан с ними во - время выполнения. Тем не менее, известно что некоторые - бинарные приложения, которые связаны с библиотекой Ncurses - и не поддерживающие расширенный набор символов, требуют - наличия версии 5. Если вам необходимо иметь такие - библиотеки из-за какого-либо приложения, имеющегося только - в бинарном виде, или для обеспечения совместимости с LSB, - соберите пакет с помощью следующих команд: -

-
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
-
-
-
-

- 8.29.2. - Содержимое пакета Ncurses -

-
-
-
- Установленные - программы: captoinfo - (ссылка на tic), clear, infocmp, infotocap (ссылка на - tic), ncursesw6-config, reset (ссылка на tset), tabs, - tic, toe, tput, и tset -
-
- Установленные - библиотеки: libcursesw.so - (символическая ссылка и скрипт компоновщика на - libncursesw.so), libformw.so, libmenuw.so, - libncursesw.so, libncurses++w.so, libpanelw.so, и их - аналоги без "w" в именах библиотек. -
-
- Созданные каталоги: - /usr/share/tabset, - /usr/share/terminfo, и /usr/share/doc/ncurses-6.4 -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

- captoinfo -

-
-

- Преобразует описание termcap в описание terminfo -

-
-

- clear -

-
-

- Очищает экран, если это возможно -

-
-

- infocmp -

-
-

- Сравнивает или показывает описания terminfo -

-
-

- infotocap -

-
-

- Преобразует описание terminfo в описание termcap -

-
-

- ncursesw6-config -

-
-

- Предоставляет информацию о конфигурации пакету - ncurses -

-
-

- reset -

-
-

- Повторно инициализирует терминал со значениями по - умолчанию -

-
-

- tabs -

-
-

- Очищает и устанавливает размеры табуляции в - терминале -

-
-

- tic -

-
-

- Компилятор описания terminfo, преобразует файл - terminfo из исходного формата в двоичный, который - необходим для подпрограмм библиотеки ncurses [Файл - terminfo содержит информацию о возможностях - конкретного терминала.] -

-
-

- toe -

-
-

- Выводит список всех доступных типов терминалов, для - каждого из которых указывается его имя и приводится - описание -

-
-

- tput -

-
-

- Позволяет использовать в командной оболочке - настройки, относящиеся к особенностям конкретного - терминала; может также использоваться для сброса - или инициализации терминала, либо для вывода - полного имени терминала -

-
-

- tset -

-
-

- Может использоваться для инициализации терминалов -

-
-

- libcursesw -

-
-

- Ссылка на libncursesw -

-
-

- libncursesw -

-
-

- Содержит функции, отображающие различными способами - текст на экране терминала. Хорошим примером - использования этих функций является меню, - отображаемое командой make menuconfig - при настройке ядра -

-
-

- libncurses++w -

-
-

- Содержит функции связывания C++ с другими - библиотеками в пакете -

-
-

- libformw -

-
-

- Содержит функции, реализующие формы -

-
-

- libmenuw -

-
-

- Содержит функции, реализующие меню -

-
-

- libpanelw -

-
-

- Содержит функции, реализующие панели -

-
-
-
-
-
-
-
-
-

- 8.30. Sed-4.9 -

-
-
-
-
-

- Пакет Sed содержит потоковый редактор текста -

-
-
-
- Приблизительное время - сборки: 0.3 SBU -
-
- Требуемое дисковое - пространство: 30 MB -
-
-
-
-
-

- 8.30.1. Установка пакета Sed -

-

- Подготовьте Sed к компиляции: -

-
./configure --prefix=/usr
-

- Скомпилируйте пакет и сгенерируйте HTML-документацию: -

-
make
-make html
-

- Чтобы протестировать пакет, выполните: -

-
chown -Rv tester .
-su tester -c "PATH=$PATH make check"
-

- Установите пакет и документацию к нему: -

-
make install
-install -d -m755           /usr/share/doc/sed-4.9
-install -m644 doc/sed.html /usr/share/doc/sed-4.9
-
-
-

- 8.30.2. - Содержимое пакета Sed -

-
-
-
- Установленные - программы: sed -
-
- Созданные каталоги: - /usr/share/doc/sed-4.9 -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - -
-

- sed -

-
-

- Фильтрует и преобразует текстовые файлы за один - проход -

-
-
-
-
-
-
-
-
-

- 8.31. Psmisc-23.6 -

-
-
-
-
-

- Пакет Psmisc содержит программы для отображения информации о - запущенных процессах. -

-
-
-
- Приблизительное время - сборки: менее 0.1 - SBU -
-
- Требуемое дисковое - пространство: 6.6 - MB -
-
-
-
-
-

- 8.31.1. Установка пакета Psmisc -

-

- Подготовьте Psmisc к компиляции: -

-
./configure --prefix=/usr
-

- Скомпилируйте пакет: -

-
make
-

- Чтобы протестировать пакет, выполните: -

-
make check
-

- Установите пакет: -

-
make install
-
-
-

- 8.31.2. - Содержимое пакета Psmisc -

-
-
-
- Установленные - программы: fuser, killall, - peekfd, prtstat, pslog, pstree и pstree.x11 (ссылка на - pstree) -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

- fuser -

-
-

- Сообщает идентификаторы процессов (PID), которые - используют данные файлы или файловые системы. -

-
-

- killall -

-
-

- Уничтожает процессы по имени; посылает сигнал всем - процессам, выполняющим любую из заданных команд -

-
-

- peekfd -

-
-

- Просмотривает файловые дескрипторы запущенного - процесса с учетом его PID -

-
-

- prtstat -

-
-

- Выводит информацию о процессе -

-
-

- pslog -

-
-

- Сообщает текущий путь к журналам процесса -

-
-

- pstree -

-
-

- Отображает запущенные процессы в виде дерева -

-
-

- pstree.x11 -

-
-

- То же, что и pstree, за - исключением того, что он ожидает подтверждения - перед выходом. -

-
-
-
-
-
-
-
-
-

- 8.32. Gettext-0.22 -

-
-
-
-
-

- Пакет Gettext содержит утилиты для интернационализации и - локализации. Они позволяют компилировать программы с - поддержкой NLS (Native Language Support), позволяя им - выводить сообщения на родном языке пользователя. -

-
-
-
- Приблизительное время - сборки: 1.4 SBU -
-
- Требуемое дисковое - пространство: 250 - MB -
-
-
-
-
-

- 8.32.1. Установка пакета Gettext -

-

- Подготовьте Gettext для компиляции: -

-
./configure --prefix=/usr    \
-            --disable-static \
-            --docdir=/usr/share/doc/gettext-0.22
-

- Скомпилируйте пакет: -

-
make
-

- Чтобы протестировать пакет (это занимает много времени, около - 3 SBU), выполните: -

-
make check
-

- Установите пакет: -

-
make install
-chmod -v 0755 /usr/lib/preloadable_libintl.so
-
-
-

- 8.32.2. - Содержимое пакета Gettext -

-
-
-
- Установленные - программы: autopoint, - envsubst, gettext, gettext.sh, gettextize, msgattrib, - msgcat, msgcmp, msgcomm, msgconv, msgen, msgexec, - msgfilter, msgfmt, msggrep, msginit, msgmerge, msgunfmt, - msguniq, ngettext, recode-sr-latin, и xgettext -
-
- Установленные - библиотеки: libasprintf.so, libgettextlib.so, - libgettextpo.so, libgettextsrc.so, libtextstyle.so и - preloadable_libintl.so -
-
- Созданные каталоги: - /usr/lib/gettext, - /usr/share/doc/gettext-0.22, /usr/share/gettext и - /usr/share/gettext-0.22 -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

- autopoint -

-
-

- Копирует файлы стандартной инфраструктуры Gettext в - пакет с исходным кодом -

-
-

- envsubst -

-
-

- Подставляет переменные окружения в строки, - используемые командной оболочкой -

-
-

- gettext -

-
-

- Переводит сообщение с естественного языка на язык - пользователя, осуществляя для этого поиск уже - сделанного перевода в каталоге сообщений -

-
-

- gettext.sh -

-
-

- В основном служит библиотекой функций оболочки для - gettext. -

-
-

- gettextize -

-
-

- Копирует все стандартные файлы Gettext в указанный - каталог верхнего уровня пакета, чтобы начать его - интернационализацию. -

-
-

- msgattrib -

-
-

- Фильтрует сообщения каталога переводов в - соответствии с их атрибутами и управляет атрибутами -

-
-

- msgcat -

-
-

- Объединяет указанные файлы .po -

-
-

- msgcmp -

-
-

- Сравнивает два файла .po, чтобы проверить, что оба - содержат один и тот же набор строк msgid -

-
-

- msgcomm -

-
-

- Находит сообщения, которые являются общими для - указанных файлов .po -

-
-

- msgconv -

-
-

- Преобразует каталог переводов в другую кодировку - символов -

-
-

- msgen -

-
-

- Создает каталог переводов на английский язык -

-
-

- msgexec -

-
-

- Применяет команду ко всем переводам каталога - переводов -

-
-

- msgfilter -

-
-

- Применяет фильтр ко всем переводам каталога - переводов -

-
-

- msgfmt -

-
-

- Генерирует каталог двоичных сообщений из каталога - переводов -

-
-

- msggrep -

-
-

- Извлекает все сообщения каталога переводов, которые - соответствуют заданному шаблону или принадлежат - нескольким указанным исходным файлам -

-
-

- msginit -

-
-

- Создает новый файл .po, инициализируя метаинформацию - значениями из среды пользователя. -

-
-

- msgmerge -

-
-

- Объединяет два необработанных перевода в один файл -

-
-

- msgunfmt -

-
-

- Декомпилирует каталог двоичных сообщений в - необработанный текст перевода -

-
-

- msguniq -

-
-

- Объединяет дублирующиеся переводы в каталоге - переводов -

-
-

- ngettext -

-
-

- Отображает перевод текстового сообщения на родной - язык, грамматическая форма которого зависит от - числа. -

-
-

- recode-sr-latin -

-
-

- Перекодирует сербский текст с кириллицы на - латиницу. -

-
-

- xgettext -

-
-

- Извлекает переводимые строки сообщений из заданных - исходных файлов для создания первого шаблона - перевода. -

-
-

- libasprintf -

-
-

- Определяет класс autosprintf, который - делает подпрограммы вывода в формате C пригодными - для использования в программах на C++ для - использования со строками <string> и - потоками <iostream> -

-
-

- libgettextlib -

-
-

- Содержит общие подпрограммы, используемые - различными программами Gettext; они не - предназначены для общего использования -

-
-

- libgettextpo -

-
-

- Используется для написания специализированных - программ, обрабатывающих файлы .po; эта библиотека используется, - когда стандартных приложений, поставляемых с - Gettext (таких как msgcomm, - msgcmp, - msgattrib, и - msgen), - недостаточно. -

-
-

- libgettextsrc -

-
-

- Предоставляет общие подпрограммы, используемые - различными программами Gettext; они не - предназначены для общего использования -

-
-

- libtextstyle -

-
-

- Библиотека стилей текста -

-
-

- preloadable_libintl -

-
-

- Библиотека, предназначенная для использования - LD_PRELOAD, которая помогает libintl записывать в журнал - непереведённые сообщения -

-
-
-
-
-
-
-
-
-

- 8.33. Bison-3.8.2 -

-
-
-
-
-

- Пакет Bison содержит генератор синтаксического анализа. -

-
-
-
- Приблизительное время - сборки: 2.2 SBU -
-
- Требуемое дисковое - пространство: 62 MB -
-
-
-
-
-

- 8.33.1. Установка пакета Bison -

-

- Подготовьте Bison к компиляции: -

-
./configure --prefix=/usr --docdir=/usr/share/doc/bison-3.8.2
-

- Скомпилируйте пакет: -

-
make
-

- Для тестирования пакета (около 5,5 SBU), выполните: -

-
make check
-

- Установите пакет: -

-
make install
-
-
-

- 8.33.2. - Содержимое пакета Bison -

-
-
-
- Установленные - программы: bison и - yacc -
-
- Установленные - библиотеки: liby.a -
-
- Созданные каталоги: - /usr/share/bison -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - - - - - - - - - -
-

- bison -

-
-

- Генерирует из набора правил программу для анализа - структуры текстовых файлов; Bison является заменой - Yacc (Yet Another Compiler Compiler) -

-
-

- yacc -

-
-

- Обертка для bison, - предназначенная для программ, которые до сих пор - вызывают yacc вместо - bison; он - вызывает bison с - параметром -y -

-
-

- liby -

-
-

- Библиотека Yacc, содержащая реализации - Yacc-совместимых функций yyerror и main; обычно эта библиотека не - очень нужна, но требуется POSIX -

-
-
-
-
-
-
-
-
-

- 8.34. Grep-3.11 -

-
-
-
-
-

- Пакет Grep содержит программы для поиска по содержимому - файлов. -

-
-
-
- Приблизительное время - сборки: 0.4 SBU -
-
- Требуемое дисковое - пространство: 39 MB -
-
-
-
-
-

- 8.34.1. Установка пакета Grep -

-

- Во-первых, удалите предупреждение об использовании egrep и - fgrep, которое приводит к сбою тестов некоторых пакетов: -

-
sed -i "s/echo/#echo/" src/egrep.sh
-

- Подготовьте Grep к компиляции: -

-
./configure --prefix=/usr
-

- Скомпилируйте пакет: -

-
make
-

- Чтобы протестировать пакет, выполните: -

-
make check
-

- Установите пакет: -

-
make install
-
-
-

- 8.34.2. - Содержимое пакета Grep -

-
-
-
- Установленные - программы: egrep, fgrep, и - grep -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - - - - - - - - - -
-

- egrep -

-
-

- Выводит строки, соответствующие расширенному - регулярному выражению. Команда устарела, вместо неё - используйте grep - -E -

-
-

- fgrep -

-
-

- Выводит строки, соответствующие списку - фиксированных строк. Команда устарела, вместо неё - используйте grep - -F -

-
-

- grep -

-
-

- Выводит строки, соответствующие простому - регулярному выражению -

-
-
-
-
-
-
-
-
-

- 8.35. Bash-5.2.15 -

-
-
-
-
-

- Пакет Bash содержит Bourne-Again Shell. -

-
-
-
- Приблизительное время - сборки: 1.1 SBU -
-
- Требуемое дисковое - пространство: 52 MB -
-
-
-
-
-

- 8.35.1. Установка пакета Bash -

-

- Подготовьте Bash к компиляции: -

-
./configure --prefix=/usr             \
-            --without-bash-malloc     \
-            --with-installed-readline \
-            --docdir=/usr/share/doc/bash-5.2.15
-
-

- Значение нового параметра настройки: -

-
-
- --with-installed-readline -
-
-

- Этот параметр указывает Bash использовать библиотеку - readline, которая уже - установлена в системе, а не собственную версию - readline. -

-
-
-
-

- Скомпилируйте пакет: -

-
make
-

- Перейдите к разделу «Установка пакета», если не планируете - запускать тесты. -

-

- Перед запуском тестов, убедитесь, что пользователь - tester может писать в каталог - с исходниками: -

-
chown -Rv tester .
-

- Набор тестов пакета предназначен для запуска пользователем - без полномочий root, которому принадлежит терминал, - подключенный к стандартному вводу. Чтобы удовлетворить это - требование, создайте новый псевдотерминал с помощью - Expect и запустите тесты от - имени пользователя tester: -

-
su -s /usr/bin/expect tester << EOF
-set timeout -1
-spawn make tests
-expect eof
-lassign [wait] _ _ _ value
-exit $value
-EOF
-

- Набор тестов использует diff для определения - разницы между выводом тестового сценария и ожидаемым - результатом. Любой вывод diff (с префиксом - < и >) указывает на сбой теста, если - нет сообщение о том, что различия можно проигнорировать. - Известно, что один тест с именем run-builtins не работает на некоторых - хост-дистрибутивах, указывая на различия в первой строке - выходных данных. -

-

- Установите пакет: -

-
make install
-

- Запустите только что скомпилированную программу bash (заменив ту, которая - выполняется в данный момент): -

-
exec /usr/bin/bash --login
-
-
-

- 8.35.2. - Содержимое пакета Bash -

-
-
-
- Установленные - программы: bash, bashbug и - sh (ссылка на bash) -
-
- Созданные каталоги: - /usr/include/bash, /usr/lib/bash, - and /usr/share/doc/bash-5.2.15 -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - - - - - - - - - -
-

- bash -

-
-

- Широко распространенный командный интерпретатор. - Выполняет различные дополнения и подстановки в - переданной командной строке перед её выполнением, - что делает этот интерпретатор мощным инструментом -

-
-

- bashbug -

-
-

- Скрипт, помогающий пользователю составлять и - отправлять по почте отчеты об ошибках bash -

-
-

- sh -

-
-

- Симлинк на программу bash; при вызове - sh, - bash - пытается максимально точно имитировать поведение - sh, - при этом также соответствуя стандарту POSIX. -

-
-
-
-
-
-
-
-
-

- 8.36. Libtool-2.4.7 -

-
-
-
-
-

- Пакет Libtool содержит сценарий поддержки универсальной - библиотеки GNU. Это упрощает использование общих библиотек - благодаря согласованному переносимому интерфейсу. -

-
-
-
- Приблизительное время - сборки: 1.3 SBU -
-
- Требуемое дисковое - пространство: 45 MB -
-
-
-
-
-

- 8.36.1. Установка пакета Libtool -

-

- Подготовьте Libtool к компиляции: -

-
./configure --prefix=/usr
-

- Скомпилируйте пакет: -

-
make
-

- Чтобы протестировать пакет, выполните: -

-
make -k check
-
-

- Примечание -

-

- Время тестирования Libtool может быть значительно сокращено - в системе с несколькими ядрами. Для этого добавьте - TESTSUITEFLAGS=-j<N> - к строке выше. Например, использование -j4 может сократить - время тестирования более чем на 60 процентов. -

-
-

- Известно, что пять тестов в среде сборки LFS завершаются - неудачно из-за циклической зависимости, но эти тесты проходят - успешно, если запустить их повторно после установки automake. - Кроме того, в grep-3.8 два теста вызовут предупреждение для - регулярных выражений, несовместимых с POSIX и завершатся с - ошибкой. -

-

- Установите пакет: -

-
make install
-

- Удалите ненужную статическую библиотеку: -

-
rm -fv /usr/lib/libltdl.a
-
-
-

- 8.36.2. - Содержимое пакета Libtool -

-
-
-
- Установленные - программы: libtool и - libtoolize -
-
- Установленные - библиотеки: libltdl.so -
-
- Созданные каталоги: - /usr/include/libltdl и - /usr/share/libtool -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - - - - - - - - - -
-

- libtool -

-
-

- Обеспечивает общие услуги поддержки при сборке - библиотек -

-
-

- libtoolize -

-
-

- Предоставляет стандартный способ добавления - поддержки libtool в пакет -

-
-

- libltdl -

-
-

- Скрывает различные проблемы, связанные с открытием - динамически загружаемых библиотек -

-
-
-
-
-
-
-
-
-

- 8.37. GDBM-1.23 -

-
-
-
-
-

- Пакет GDBM содержит менеджер баз данных GNU. Это библиотека - функций базы данных, использующая расширяемое хеширование и - работающая аналогично стандартной СУБД UNIX. Библиотека - предоставляет примитивы для хранения пар ключ/значение, - поиска и извлечения данных по его ключу и удаления ключа - вместе с его данными. -

-
-
-
- Приблизительное время - сборки: менее 0.1 - SBU -
-
- Требуемое дисковое - пространство: 13 MB -
-
-
-
-
-

- 8.37.1. Установка пакета GDBM -

-

- Подготовьте GDBM к компиляции: -

-
./configure --prefix=/usr    \
-            --disable-static \
-            --enable-libgdbm-compat
-
-

- Значение параметра configure: -

-
-
- --enable-libgdbm-compat -
-
-

- Этот параметр включает сборку библиотеки совместимости - libgdbm. Некоторым пакетам за пределами LFS могут - потребоваться более старые подпрограммы DBM, которые он - предоставляет. -

-
-
-
-

- Скомпилируйте пакет: -

-
make
-

- Чтобы протестировать пакет, выполните: -

-
make check
-

- Установите пакет: -

-
make install
-
-
-

- 8.37.2. - Содержимое пакета GDBM -

-
-
-
- Установленные - программы: gdbm_dump, - gdbm_load, и gdbmtool -
-
- Установленные - библиотеки: libgdbm.so и - libgdbm_compat.so -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

- gdbm_dump -

-
-

- Сохраняет дамп базы данных GDBM в файл -

-
-

- gdbm_load -

-
-

- Восстанавливает базу данных GDBM из дампа. -

-
-

- gdbmtool -

-
-

- Проверяет и изменяет базу данных GDBM -

-
-

- libgdbm -

-
-

- Содержит функции для управления хэшированной базой - данных -

-
-

- libgdbm_compat -

-
-

- Библиотека совместимости, содержащая более старые - функции DBM -

-
-
-
-
-
-
-
-
-

- 8.38. Gperf-3.1 -

-
-
-
-
-

- Gperf генерирует идеальную хэш-функцию из набора ключей. -

-
-
-
- Приблизительное время - сборки: менее 0.1 - SBU -
-
- Требуемое дисковое - пространство: 6.1 - MB -
-
-
-
-
-

- 8.38.1. Установка пакета Gperf -

-

- Подготовьте Gperf к компиляции: -

-
./configure --prefix=/usr --docdir=/usr/share/doc/gperf-3.1
-

- Скомпилируйте пакет: -

-
make
-

- Известно, что тесты завершаются ошибкой при одновременном - выполнении нескольких тестов (параметр -j больше 1). Для - выполнения тестов, запустите следующую команду: -

-
make -j1 check
-

- Установите пакет: -

-
make install
-
-
-

- 8.38.2. - Содержимое пакета Gperf -

-
-
-
- Установленные - программы: gperf -
-
- Созданные каталоги: - /usr/share/doc/gperf-3.1 -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - -
-

- gperf -

-
-

- Генерирует идеальный хэш из набора ключей -

-
-
-
-
-
-
-
-
-

- 8.39. Expat-2.5.0 -

-
-
-
-
-

- Пакет Expat содержит потоковую библиотеку C для - синтаксического анализа XML -

-
-
-
- Приблизительное время - сборки: 0.1 SBU -
-
- Требуемое дисковое - пространство: 12 MB -
-
-
-
-
-

- 8.39.1. Установка пакета Expat -

-

- Подготовьте Expat к компиляции: -

-
./configure --prefix=/usr    \
-            --disable-static \
-            --docdir=/usr/share/doc/expat-2.5.0
-

- Скомпилируйте пакет: -

-
make
-

- Чтобы протестировать пакет, выполните: -

-
make check
-

- Установите пакет: -

-
make install
-

- По желанию установите документацию: -

-
install -v -m644 doc/*.{html,css} /usr/share/doc/expat-2.5.0
-
-
-

- 8.39.2. - Содержимое пакета Expat -

-
-
-
- Установленные - программы: xmlwf -
-
- Установленные - библиотеки: libexpat.so -
-
- Созданные каталоги: - /usr/share/doc/expat-2.5.0 -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - - - - - -
-

- xmlwf -

-
-

- Утилита проверки правильности формирования XML - документов -

-
-

- libexpat -

-
-

- Содержит функции API для синтаксического анализа - XML -

-
-
-
-
-
-
-
-
-

- 8.40. Inetutils-2.4 -

-
-
-
-
-

- Пакет Inetutils содержит базовые программы для работы с - сетью. -

-
-
-
- Приблизительное время - сборки: 0.2 SBU -
-
- Требуемое дисковое - пространство: 31 MB -
-
-
-
-
-

- 8.40.1. Установка пакета Inetutils -

-

- Подготовьте Inetutils к компиляции: -

-
./configure --prefix=/usr        \
-            --bindir=/usr/bin    \
-            --localstatedir=/var \
-            --disable-logger     \
-            --disable-whois      \
-            --disable-rcp        \
-            --disable-rexec      \
-            --disable-rlogin     \
-            --disable-rsh        \
-            --disable-servers
-
-

- Значение параметров настройки: -

-
-
- --disable-logger -
-
-

- Параметр запрещает установку программы logger, используемой - скриптами для отправки сообщений системной службе - логирования (System Log Daemon). Не устанавливайте её, - т.к. Util-linux устанавливает более свежую версию. -

-
-
- --disable-whois -
-
-

- Этот параметр отключает сборку whois-клиента - Inetutils, который устарел. Инструкции для сборки более - нового клиента whois находятся в - книге BLFS. -

-
-
- --disable-r* -
-
-

- Отключает установку устаревших программ, которые не - должны использоваться по соображениям безопасности. - Функционал этих программы можно получить установкой - пакета openssh из - книги BLFS. -

-
-
- --disable-servers -
-
-

- Отключает установку различных сетевых серверов, - входящих в состав пакета Inetutils. Эти серверы - считаются неподходящими для базовой системы LFS. - Некоторые из них небезопасны по своей природе и - считаются надежными только в доверенных сетях. Обратите - внимание, что для многих из них доступны более - качественные замены. -

-
-
-
-

- Скомпилируйте пакет: -

-
make
-

- Чтобы протестировать пакет, выполните:: -

-
make check
-

- Установите пакет: -

-
make install
-

- Переместите программу в правильное место: -

-
mv -v /usr/{,s}bin/ifconfig
-
-
-

- 8.40.2. Содержимое пакета Inetutils -

-
-
-
- Установленные - программы: dnsdomainname, - ftp, ifconfig, hostname, ping, ping6, talk, telnet, tftp - и traceroute -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

- dnsdomainname -

-
-

- Показывает системное DNS имя -

-
-

- ftp -

-
-

- Программа для передачи файлов по протоколу FTP -

-
-

- hostname -

-
-

- Сообщает или задает имя хоста -

-
-

- ifconfig -

-
-

- Управляет сетевыми интерфейсами -

-
-

- ping -

-
-

- Отправляет пакеты эхо-запросов и сообщает, сколько - времени занимают ответы -

-
-

- ping6 -

-
-

- Версия ping для сетей - IPv6 -

-
-

- talk -

-
-

- Используется для общения с другими пользователями -

-
-

- telnet -

-
-

- Интерфейс к протоколу TELNET -

-
-

- tftp -

-
-

- Программа для передачи файлов по протоколу TFTP - (Trivial File Transfer Protocol — простой протокол - передачи файлов) -

-
-

- traceroute -

-
-

- Отслеживает маршрут, по которому проходят ваши - пакеты от хоста на которым вы работаете, к другому - узлу сети, показывая все промежуточные переходы - (шлюзы) на этом пути. -

-
-
-
-
-
-
-
-
-

- 8.41. Less-643 -

-
-
-
-
-

- Пакет Less содержит средство просмотра текстовых файлов -

-
-
-
- Приблизительное время - сборки: менее 0.1 - SBU -
-
- Требуемое дисковое - пространство: 12 MB -
-
-
-
-
-

- 8.41.1. Установка пакета Less -

-

- Подготовьте Less к компиляции: -

-
./configure --prefix=/usr --sysconfdir=/etc
-
-

- Значение параметров настройки: -

-
-
- --sysconfdir=/etc -
-
-

- Этот параметр указывает программам, созданным пакетом, - искать файлы конфигурации в /etc. -

-
-
-
-

- Скомпилируйте пакет: -

-
make
-

- Чтобы протестировать пакет, выполните: -

-
make check
-

- Установите пакет: -

-
make install
-
-
-

- 8.41.2. - Содержимое пакета Less -

-
-
-
- Установленные - программы: less, lessecho - и lesskey -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - - - - - - - - - -
-

- less -

-
-

- Просмотрщик файлов; отображает содержимое данного - файла, позволяя пользователю прокручивать файл, - искать строки и переходить к меткам -

-
-

- lessecho -

-
-

- Требуется для расширения метасимволов, таких как - * и - ?, в именах - файлов в системах Unix -

-
-

- lesskey -

-
-

- Используется для привязки клавиш в программе - less -

-
-
-
-
-
-
-
-
-

- 8.42. Perl-5.38.0 -

-
-
-
-
-

- Пакет Perl содержит практический язык для извлечения данных и - составления отчётов (Practical Extraction and Report - Language). -

-
-
-
- Приблизительное время - сборки: 7.1 SBU -
-
- Требуемое дисковое - пространство: 239 - MB -
-
-
-
-
-

- 8.42.1. Установка пакета Perl -

-

- Эта версия Perl собирает модули Compress::Raw::Zlib и - Compress::Raw::BZip2. По умолчанию Perl будет использовать - внутреннюю копию исходников для сборки. Выполните следующую - команду, чтобы Perl использовал библиотеки, установленные в - системе: -

-
export BUILD_ZLIB=False
-export BUILD_BZIP2=0
-

- Чтобы иметь полный контроль над настройкой Perl, вы можете - удалить параметры «-des» из следующей команды и вручную - выбрать способ сборки этого пакета. В качестве альтернативы, - используйте команду точно так, как указано ниже, чтобы - использовать значения по умолчанию, которые Perl определяет - автоматически: -

-
sh Configure -des                                         \
-             -Dprefix=/usr                                \
-             -Dvendorprefix=/usr                          \
-             -Dprivlib=/usr/lib/perl5/5.38/core_perl      \
-             -Darchlib=/usr/lib/perl5/5.38/core_perl      \
-             -Dsitelib=/usr/lib/perl5/5.38/site_perl      \
-             -Dsitearch=/usr/lib/perl5/5.38/site_perl     \
-             -Dvendorlib=/usr/lib/perl5/5.38/vendor_perl  \
-             -Dvendorarch=/usr/lib/perl5/5.38/vendor_perl \
-             -Dman1dir=/usr/share/man/man1                \
-             -Dman3dir=/usr/share/man/man3                \
-             -Dpager="/usr/bin/less -isR"                 \
-             -Duseshrplib                                 \
-             -Dusethreads
-
-

- Значение параметров configure: -

-
-
- -Dvendorprefix=/usr -
-
-

- Параметр гарантирует, что perl знает, как - указать пакетам, где они должны устанавливать свои - модули Perl. -

-
-
- -Dpager="/usr/bin/less - -isR" -
-
-

- Параметр указывает использовать less вместо - more. -

-
-
- -Dman1dir=/usr/share/man/man1 - -Dman3dir=/usr/share/man/man3 -
-
-

- Так как Groff еще не установлен, Configure не будет - создавать man-страницы для Perl. Эти параметры - переопределяют это поведение. -

-
-
- -Duseshrplib -
-
-

- Собрать общую библиотеку libperl, необходимую некоторым - модулям Perl. -

-
-
- -Dusethreads -
-
-

- Собрать Perl с поддержкой потоков. -

-
-
- -Dprivlib,-Darchlib,-Dsitelib,... -
-
-

- Эти настройки определяют, где Perl ищет установленные - модули. Редакторы LFS решили поместить их в структуру - каталогов, основанную на MAJOR.MINOR версии Perl - (5.38), что позволяет обновлять Perl до более новых - версий (5.38.0) без необходимости переустанавливать все - модули. -

-
-
-
-

- Скомпилируйте пакет: -

-
make
-

- Чтобы протестировать пакет (примерно 11 SBU), выполните: -

-
make test
-

- Установка пакета и очистка: -

-
make install
-unset BUILD_ZLIB BUILD_BZIP2
-
-
-

- 8.42.2. - Содержимое пакета Perl -

-
-
-
- Установленные - программы: corelist, cpan, - enc2xs, encguess, h2ph, h2xs, instmodsh, json_pp, - libnetcfg, perl, perl5.38.0 (жесткая ссылка на perl), - perlbug, perldoc, perlivp, perlthanks (жесткая ссылка на - perlbug), piconv, pl2pm, pod2html, pod2man, pod2text, - pod2usage, podchecker, podselect, prove, ptar, ptardiff, - ptargrep, shasum, splain, xsubpp и zipdetails -
-
- Установленные - библиотеки: Список слишком - большой для перечисления -
-
- Созданные каталоги: - /usr/lib/perl5 -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

- corelist -

-
-

- Интерфейс командной строки для Module::CoreList -

-
-

- cpan -

-
-

- Позволяет получать из командной строки доступ к - архиву документации и программ Perl (Comprehensive - Perl Archive Network - CPAN) -

-
-

- enc2xs -

-
-

- Собирает расширение Perl для модуля Encode либо с - использование таблицы символов Unicode, либо с - использованием файлов кодирования Tcl -

-
-

- encguess -

-
-

- Определяет тип кодировки одного или нескольких - файлов -

-
-

- h2ph -

-
-

- Конвертирует заголовочные файлы Си .h в заголовочные файлы Perl - .ph -

-
-

- h2xs -

-
-

- Конвертирует заголовочные файлы Си .h в расширения Perl -

-
-

- instmodsh -

-
-

- Сценарий оболочки для проверки установленных - модулей Perl; он может создать архив из - установленного модуля. -

-
-

- json_pp -

-
-

- Преобразует данные между определенными входными и - выходными форматами -

-
-

- libnetcfg -

-
-

- Может использоваться для настройки Perl-модуля - libnet -

-
-

- perl -

-
-

- Объединяет лучшие возможности C, sed, awk и - sh в - одном языке -

-
-

- perl5.38.0 -

-
-

- Жесткая ссылка на perl -

-
-

- perlbug -

-
-

- Используется для создания отчетов об ошибках в Perl - или модулях, которые поставляются с ним, и отправки - их по почте -

-
-

- perldoc -

-
-

- Отображает часть документации в формате pod, - которая встроена в дерево установки Perl или в - сценарий Perl -

-
-

- perlivp -

-
-

- Процедура проверки установки Perl; ее можно - использовать для проверки правильности установки - Perl и его библиотек -

-
-

- perlthanks -

-
-

- Используется для создания сообщения-благодарности, - отсылаемого разработчикам Perl -

-
-

- piconv -

-
-

- Perl версия конвертера iconv, - используемого для кодирования символов -

-
-

- pl2pm -

-
-

- Инструмент для грубого конвертирования файлов - .pl Perl4 в модули - .pm Perl5 -

-
-

- pod2html -

-
-

- Преобразует файлы из формата pod в формат HTML -

-
-

- pod2man -

-
-

- Преобразует данные pod в форматированный входной - поток для *roff -

-
-

- pod2text -

-
-

- Преобразует данные pod в форматированный текст - ASCII -

-
-

- pod2usage -

-
-

- Печатает в файл сообщения usage из встроенных - документов pod -

-
-

- podchecker -

-
-

- Проверяет синтаксис файлов документации формата pod -

-
-

- podselect -

-
-

- Отображает выбранные разделы документации pod -

-
-

- prove -

-
-

- Инструмент командной строки для выполнения тестов с - помощью модуля Test::Harness -

-
-

- ptar -

-
-

- Программа, похожая на tar, написанная - на Perl -

-
-

- ptardiff -

-
-

- Программа на Perl для сравнения распакованного и - нераспакованного архивов -

-
-

- ptargrep -

-
-

- Программа на Perl для текстового поиска по шаблону - внутри tar-архива -

-
-

- shasum -

-
-

- Печатает или проверяет контрольные суммы SHA -

-
-

- splain -

-
-

- Включает подробные предупреждения для диагностики в - Perl -

-
-

- xsubpp -

-
-

- Преобразует код Perl XS в код C -

-
-

- zipdetails -

-
-

- Отображает сведения о внутренней структуре - Zip-файла -

-
-
-
-
-
-
-
-
-

- 8.43. XML::Parser-2.46 -

-
-
-
-
-

- Модуль XML::Parser представляет собой Perl-интерфейс к - XML-парсеру Джеймса Кларка Expat. -

-
-
-
- Приблизительное время - сборки: менее 0.1 - SBU -
-
- Требуемое дисковое - пространство: 2.3 - MB -
-
-
-
-
-

- 8.43.1. Установка пакета XML::Parser -

-

- Подготовьте XML::Parser к компиляции: -

-
perl Makefile.PL
-

- Скомпилируйте пакет: -

-
make
-

- Чтобы протестировать пакет, выполните: -

-
make test
-

- Установите пакет: -

-
make install
-
-
-

- 8.43.2. Содержимое XML::Parser -

-
-
-
- Установленный модуль: - Expat.so -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - -
-

- Expat -

-
-

- предоставляет Perl интерфейс для Expat -

-
-
-
-
-
-
-
-
-

- 8.44. Intltool-0.51.0 -

-
-
-
-
-

- Intltool — это инструмент интернационализации, используемый - для извлечения переводимых строк из исходных файлов. -

-
-
-
- Приблизительное время - сборки: менее 0.1 - SBU -
-
- Требуемое дисковое - пространство: 1.5 - MB -
-
-
-
-
-

- 8.44.1. Установка пакета Intltool -

-

- Сначала исправьте предупреждение, вызываемое perl-5.22 и - более поздними версиями: -

-
sed -i 's:\\\${:\\\$\\{:' intltool-update.in
-
-

- Примечание -

-

- Приведенное выше регулярное выражение выглядит необычно - из-за множества слэшей. Что оно делает, так это добавляет - обратную косую черту перед правой фигурной скобкой в - последовательности '\${' в результате чего получается - '\$\{'. -

-
-

- Подготовьте Intltool к компиляции: -

-
./configure --prefix=/usr
-

- Скомпилируйте пакет: -

-
make
-

- Чтобы протестировать пакет, выполните: -

-
make check
-

- Установите пакет: -

-
make install
-install -v -Dm644 doc/I18N-HOWTO /usr/share/doc/intltool-0.51.0/I18N-HOWTO
-
-
-

- 8.44.2. Содержимое пакета Intltool -

-
-
-
- Установленные - программы: intltool-extract, intltool-merge, - intltool-prepare, intltool-update и intltoolize -
-
- Созданные каталоги: - /usr/share/doc/intltool-0.51.0 и - /usr/share/intltool -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

- intltoolize -

-
-

- Подготавливает пакет для использования intltool -

-
-

- intltool-extract -

-
-

- Генерирует заголовочные файлы, которые могут быть - прочитаны с помощью gettext -

-
-

- intltool-merge -

-
-

- Объединяет переведенные строки в файлы различных - типов -

-
-

- intltool-prepare -

-
-

- Обновляет файлы pot и объединяет их с файлами - перевода -

-
-

- intltool-update -

-
-

- Обновляет файлы шаблонов po и объединяет их с - переводами -

-
-
-
-
-
-
-
-
-

- 8.45. Autoconf-2.71 -

-
-
-
-
-

- Пакет Autoconf содержит программы для создания сценариев - оболочки, которые могут автоматически настраивать исходный - код. -

-
-
-
- Приблизительное время - сборки: менее 0.1 SBU - (около 6.0 SBU с тестами) -
-
- Требуемое дисковое - пространство: 24 MB -
-
-
-
-
-

- 8.45.1. Установка пакета Autoconf -

-

- Во-первых, исправьте несколько проблем с тестами, - обнаруженными в bash-5.2 и более поздних версиях: -

-
sed -e 's/SECONDS|/&SHLVL|/'               \
-    -e '/BASH_ARGV=/a\        /^SHLVL=/ d' \
-    -i.orig tests/local.at
-

- Подготовьте Autoconf к компиляции: -

-
./configure --prefix=/usr
-

- Скомпилируйте пакет: -

-
make
-

- Чтобы протестировать пакет, выполните: -

-
make check
-
-

- Примечание -

-

- Время тестирования autoconf можно значительно сократить на - многоядерных системах. Для этого добавьте TESTSUITEFLAGS=-j<N> - к строке выше. Использование аргумента -j4 может сократить - время тестирования более чем на 60 процентов. -

-
-

- Установите пакет: -

-
make install
-
-
-

- 8.45.2. Содержимое пакета Autoconf -

-
-
-
- Установленные - программы: autoconf, - autoheader, autom4te, autoreconf, autoscan, autoupdate, и - ifnames -
-
- Созданные каталоги: - /usr/share/autoconf -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

- autoconf -

-
-

- Генерирует сценарии оболочки, которые автоматически - настраивают пакеты исходного кода программного - обеспечения для адаптации ко многим типам - Unix-подобных систем; создаваемые сценарии - независимы—для их запуска не требуется программа - autoconf. -

-
-

- autoheader -

-
-

- Инструмент для создания файлов шаблонов операторов - C #define - для использования в configure -

-
-

- autom4te -

-
-

- Обертка для макропроцессора M4 -

-
-

- autoreconf -

-
-

- Автоматически запускает autoconf, - autoheader, - aclocal, - automake, - gettextize и - libtoolize в - правильном порядке, чтобы сэкономить время, при - внесении изменений в файлы шаблонов autoconf и - automake. -

-
-

- autoscan -

-
-

- Помогает создать файл configure.in для пакета - программного обеспечения; проверяет исходные файлы - в дереве каталогов, ищет в них распространенные - проблемы с переносимостью и создает файл - configure.scan, - который является предварительным для configure.in. -

-
-

- autoupdate -

-
-

- Изменяет файл configure.in, вызывающий макросы - autoconf по их - старым именам для использования текущих имен - макросов -

-
-

- ifnames -

-
-

- Помогает при написании файла configure.in для пакета; выводит - идентификаторы, которые использует пакет в условных - выражениях препроцессора C. (Если пакет уже был - настроен для некоторой переносимости, эта программа - может помочь определить, что нужно проверить - сценарию configure. Он - также может заполнить пробелы в файле configure.in, сгенерированном - командой autoscan.) -

-
-
-
-
-
-
-
-
-

- 8.46. Automake-1.16.5 -

-
-
-
-
-

- Пакет Automake содержит программы генерации Makefile для - использования с Autoconf. -

-
-
-
- Приблизительное время - сборки: менее 0.1 SBU - (около 7.0 SBU с тестами) -
-
- Требуемое дисковое - пространство: 114 - MB -
-
-
-
-
-

- 8.46.1. Установка пакета Automake -

-

- Подготовьте Automake к компиляции: -

-
./configure --prefix=/usr --docdir=/usr/share/doc/automake-1.16.5
-

- Скомпилируйте пакет: -

-
make
-

- Использование опции make -j4 ускоряет тесты даже в системах с - одним процессором из-за внутренних задержек в отдельных - тестах. Чтобы протестировать пакет, выполните: -

-
make -j4 check
-

- Известно, что тест t/subobj.sh не проходит. -

-

- Установите пакет: -

-
make install
-
-
-

- 8.46.2. Содержимое пакета Automake -

-
-
-
- Установленные - программы: aclocal, - aclocal-1.16 (жестко связан с aclocal), automake, и - automake-1.16 (жестко связан с automake) -
-
- Созданные каталоги: - /usr/share/aclocal-1.16, - /usr/share/automake-1.16, и - /usr/share/doc/automake-1.16.5 -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - - - - - - - - - - - - - -
-

- aclocal -

-
-

- Генерирует файлы aclocal.m4 на основе содержимого - файла configure.in -

-
-

- aclocal-1.16 -

-
-

- Жесткая ссылка на aclocal -

-
-

- automake -

-
-

- Инструмент для автоматического создания - Makefile.in из файлов - Makefile.am [Чтобы - создать все файлы Makefile.in запустите эту - программу в каталоге верхнего уровня. Сканируя файл - configure.in, он - автоматически находит все подходящие файлы - Makefile.am и создает - соответствующий Makefile.in.] -

-
-

- automake-1.16 -

-
-

- Жесткая ссылка на automake -

-
-
-
-
-
-
-
-
-

- 8.47. OpenSSL-3.1.2 -

-
-
-
-
-

- Пакет OpenSSL содержит инструменты управления и библиотеки, - относящиеся к криптографии. Они полезны для предоставления - криптографических функций другим пакетам, таким как OpenSSH, - приложениям электронной почты и веб-браузерам (для доступа к - сайтам по HTTPS). -

-
-
-
- Приблизительное время - сборки: 3.0 SBU -
-
- Требуемое дисковое - пространство: 587 - MB -
-
-
-
-
-

- 8.47.1. Установка пакета OpenSSL -

-

- Подготовьте OpenSSL к компиляции: -

-
./config --prefix=/usr         \
-         --openssldir=/etc/ssl \
-         --libdir=lib          \
-         shared                \
-         zlib-dynamic
-

- Скомпилируйте пакет: -

-
make
-

- Чтобы протестировать пакет, выполните: -

-
make test
-

- Известно, что один тест, 30-test_afalg.t, завершится ошибкой, - если в ядре хоста не включен параметр CONFIG_CRYPTO_USER_API_SKCIPHER или - отсутствуют какие-либо опции, обеспечивающих реализацию AES с - CBC (например, комбинация CONFIG_CRYPTO_AES и CONFIG_CRYPTO_CBC или CONFIG_CRYPTO_AES_NI_INTEL, если процессор - поддерживает AES-NI). В случае неудачи его можно смело - игнорировать. -

-

- Установите пакет: -

-
sed -i '/INSTALL_LIBS/s/libcrypto.a libssl.a//' Makefile
-make MANSUFFIX=ssl install
-

- Добавьте версию к имени каталога документации, чтобы - структура соответствовала другим пакетам: -

-
mv -v /usr/share/doc/openssl /usr/share/doc/openssl-3.1.2
-

- По желанию, установите дополнительную документацию: -

-
cp -vfr doc/* /usr/share/doc/openssl-3.1.2
-
-

- Примечание -

-

- Вы должны обновить OpenSSL, когда будет выпущена новая - версия, исправляющая уязвимости. Начиная с OpenSSL 3.0.0, - схема управления версиями OpenSSL следует формату - MAJOR.MINOR.PATCH. Совместимость API/ABI гарантируется для - одной и той же ОСНОВНОЙ (MAJOR) версии. Поскольку LFS - устанавливает только общие библиотеки, нет необходимости - перекомпилировать пакеты, которые ссылаются на libcrypto.so или libssl.so, при - обновлении до версии с тем же ОСНОВНЫМ номером - версии. -

-

- Если установлен OpenSSH, - это будет исключением из общего правила, указанного выше. - Он содержит чрезмерно ограничительную проверку версии - OpenSSL, поэтому и SSH-клиент, и SSH-сервер откажутся - запускаться, если OpenSSL обновлен с прежним номером MAJOR - версии, но с другим номером MINOR версии. После такого - обновления вам необходимо пересобрать OpenSSH. Если OpenSSH используется для доступа к - системе, вам необходимо пересобрать и переустановить его - после обновления OpenSSL до новой MINOR версии перед - выходом из системы, иначе вы не сможете больше войти в - систему через SSH. -

-

- Все запущенные программы, связанные с этими библиотеками, - после обновления необходимо остановить и перезапустить. Для - получения более подробной информации ознакомьтесь с - соответствующей записью в Раздел 8.2.1, - «Проблемы с обновлением». -

-
-
-
-

- 8.47.2. - Содержимое пакета OpenSSL -

-
-
-
- Установленные - программы: c_rehash и - openssl -
-
- Установленные - библиотеки: libcrypto.so и - libssl.so -
-
- Созданные каталоги: - /etc/ssl, /usr/include/openssl, - /usr/lib/engines и /usr/share/doc/openssl-3.1.2 -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - - - - - - - - - - - - - -
-

- c_rehash -

-
-

- это Perl скрипт, - который сканирует все файлы в каталоге и добавляет - символические ссылки к их хеш-значениям. - Использование c_rehash - считается устаревшим и должно быть заменено - командой openssl - rehash -

-
-

- openssl -

-
-

- это инструмент командной строки для использования - различных криптографических функций библиотеки - OpenSSL из - оболочки. Его можно использовать для различных - функций, которые задокументированы в man 1 openssl -

-
-

- libcrypto.so -

-
-

- реализует широкий спектр криптографических - алгоритмов, используемых в различных - интернет-стандартах. Услуги, предоставляемые этой - библиотекой, используют OpenSSL-реализацию SSL, TLS и - S/MIME, а также для реализации OpenSSH, OpenPGP и других - криптографических стандартов. -

-
-

- libssl.so -

-
-

- реализует протокол безопасности транспортного - уровня (TLS v1). Он предоставляет богатый API, - документацию по которому можно найти, выполнив - команду: man 7 - ssl -

-
-
-
-
-
-
-
-
-

- 8.48. Kmod-30 -

-
-
-
-
-

- Пакет Kmod содержит библиотеки и утилиты для загрузки модулей - ядра. -

-
-
-
- Приблизительное время - сборки: менее 0.1 - SBU -
-
- Требуемое дисковое - пространство: 12 MB -
-
-
-
-
-

- 8.48.1. Установка пакета Kmod -

-

- Подготовьте Kmod к компиляции: -

-
./configure --prefix=/usr          \
-            --sysconfdir=/etc      \
-            --with-openssl         \
-            --with-xz              \
-            --with-zstd            \
-            --with-zlib
-
-

- Значение параметров настройки: -

-
-
- --with-openssl -
-
-

- Этот параметр позволяет Kmod обрабатывать сигнатуры - PKCS7 для модулей ядра. -

-
-
- --with-xz, --with-zlib, и --with-zstd -
-
-

- Эти параметры позволяют Kmod обрабатывать сжатые модули - ядра. -

-
-
-
-

- Скомпилируйте пакет: -

-
make
-

- Набору тестов этого пакета необходимы необработанные - заголовочные файлы ядра (а не «очищенные», - установленных ранее), это выходит за рамки LFS. -

-

- Установите пакет и создайте символические ссылки для - совместимости с Module-Init-Tools (пакетом, который ранее - обрабатывал модули ядра Linux): -

-
make install
-
-for target in depmod insmod modinfo modprobe rmmod; do
-  ln -sfv ../bin/kmod /usr/sbin/$target
-done
-
-ln -sfv kmod /usr/bin/lsmod
-
-
-

- 8.48.2. - Содержимое пакета Kmod -

-
-
-
- Установленные - программы: depmod (ссылка - на kmod), insmod (ссылка на kmod), kmod, lsmod (ссылка на - kmod), modinfo (ссылка на kmod), modprobe (ссылка на - kmod) и rmmod (ссылка на kmod) -
-
- Установленные - библиотеки: libkmod.so -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

- depmod -

-
-

- Создает файл зависимостей на основе символов - найденных в существующем наборе модулей; этот файл - используется программой modprobe для - автоматической загрузки необходимых модулей -

-
-

- insmod -

-
-

- Устанавливает загружаемый модуль в работающее ядро -

-
-

- kmod -

-
-

- Загружает и выгружает модули ядра -

-
-

- lsmod -

-
-

- Список загруженных в данный момент модулей -

-
-

- modinfo -

-
-

- Проверяет объектный файл, связанный с модулем ядра, - и отображает всю информацию, которую он смог - собрать. -

-
-

- modprobe -

-
-

- Использует файл зависимостей, созданный - depmod, - для автоматической загрузки соответствующих модулей -

-
-

- rmmod -

-
-

- Выгружает модули из работающего ядра -

-
-

- libkmod -

-
-

- Библиотека используемая другими программами для - загрузки и выгрузки модулей ядра -

-
-
-
-
-
-
-
-
-

- 8.49. Libelf из - Elfutils-0.189 -

-
-
-
-
-

- Libelf — это библиотека для обработки файлов ELF (Executable - and Linkable Format - формат исполняемых и связываемых - файлов). -

-
-
-
- Приблизительное время - сборки: 0.3 SBU -
-
- Требуемое дисковое - пространство: 122 - MB -
-
-
-
-
-

- 8.49.1. Установка пакета Libelf -

-

- Libelf является частью пакета elfutils-0.189. Используйте - elfutils-0.189.tar.bz2 в качестве исходного архива. -

-

- Подготовьте Libelf к компиляции: -

-
./configure --prefix=/usr                \
-            --disable-debuginfod         \
-            --enable-libdebuginfod=dummy
-

- Скомпилируйте пакет: -

-
make
-

- Чтобы протестировать пакет, выполните: -

-
make check
-

- Установите только Libelf: -

-
make -C libelf install
-install -vm644 config/libelf.pc /usr/lib/pkgconfig
-rm /usr/lib/libelf.a
-
-
-

- 8.49.2. Содержимое пакета Libelf -

-
-
-
- Установленные - библиотеки: libelf.so -
-
- Созданные каталоги: - /usr/include/elfutils -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - -
-

- libelf.so -

-
-

- Содержит функции API для обработки объектных файлов - ELF -

-
-
-
-
-
-
-
-
-

- 8.50. Libffi-3.4.4 -

-
-
-
-
-

- Библиотека Libffi предоставляет переносимый высокоуровневый - программный интерфейс для различных соглашений о вызовах. Это - позволяет программисту вызывать любую функцию, указанную в - описании интерфейса вызова во время выполнения. -

-

- FFI расшифровывается как интерфейс внешних функций. FFI - позволяет программе, написанной на одном языке, вызывать - программу, написанную на другом языке. В частности, Libffi - может обеспечить связь между интерпретатором, таким как Perl - или Python, и подпрограммами общей библиотеки, написанными на - C или C++. -

-
-
-
- Приблизительное время - сборки: 1.8 SBU -
-
- Требуемое дисковое - пространство: 11 MB -
-
-
-
-
-

- 8.50.1. Установка пакета Libffi -

-
-

- Примечание -

-

- Как и GMP, Libffi собирается с учетом оптимизаций, - специфичных для используемого процессора. При сборке для - другой системы измените значение параметра --with-gcc-arch= в следующей - команде на имя архитектуры, полностью реализованной - процессором в этой системе. Если этого не сделать, все - приложения, ссылающиеся на libffi, будут вызывать ошибку - «Illegal Operation - - недопустимая операция». -

-
-

- Подготовьте Libffi к компиляции: -

-
./configure --prefix=/usr          \
-            --disable-static       \
-            --with-gcc-arch=native
-
-

- Значение параметров configure: -

-
-
- --with-gcc-arch=native -
-
-

- Убедитесь, что GCC оптимизируется для текущей системы. - Если значение не указано, то архитектура системы - угадывается и сгенерированный код может быть - неправильным. Если сгенерированный код будет скопирован - из родной системы в менее мощную, используйте - архитектуру менее мощной системы в качестве параметра. - Дополнительные сведения об альтернативных типах систем - смотрите в - описании параметров x86 в руководстве GCC. -

-
-
-
-

- Скомпилируйте пакет: -

-
make
-

- Чтобы протестировать пакет, выполните: -

-
make check
-

- Установите пакет: -

-
make install
-
-
-

- 8.50.2. - Содержимое пакета Libffi -

-
-
-
- Установленные - библиотеки: libffi.so -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - -
-

- libffi -

-
-

- Содержит внешний интерфейс для API-функций -

-
-
-
-
-
-
-
-
-

- 8.51. Python-3.11.4 -

-
-
-
-
-

- Пакет Python 3 содержит среду разработчика Python. Его можно - использовать для объектно-ориентированного программирования, - написания скриптов, прототипирования больших программ и - разработка целых приложений. Python — это интерпретируемый - язык программирования. -

-
-
-
- Приблизительное время - сборки: 1.9 SBU -
-
- Требуемое дисковое - пространство: 370 - MB -
-
-
-
-
-

- 8.51.1. Установка пакета Python 3 -

-

- Подготовьте Python к компиляции: -

-
./configure --prefix=/usr        \
-            --enable-shared      \
-            --with-system-expat  \
-            --with-system-ffi    \
-            --enable-optimizations
-
-

- Значение параметров настройки: -

-
-
- --with-system-expat -
-
-

- Этот параметр выполняет линковку с системной версией - Expat. -

-
-
- --with-system-ffi -
-
-

- Этот параметр выполняет линковку с системной версией - libffi.so. -

-
-
- --enable-optimizations -
-
-

- Этот параметр позволяет выполнить обширные, но - отнимающие много времени, действия по оптимизации. - Интерпретатор собирается дважды; тесты, выполненные при - первой сборке, используются для улучшения финальной - версии. -

-
-
-
-

- Скомпилируйте пакет: -

-
make
-

- Запускать тесты на этом этапе не рекомендуется. Известно, что - тесты зависают на неопределенный срок в неполной среде LFS. - При желании тесты можно запустить повторно в конце этой главы - или при переустановке Python 3 в BLFS. Чтобы запустить тесты, - выполните команду make - test. -

-

- Установите пакет: -

-
make install
-

- В некоторых местах книги, мы используем команду pip3 для установки программ - и модулей Python 3 от имени пользователя root. Это противоречит рекомендации - разработчиков Python: устанавливать пакеты в виртуальную - среду или домашний каталог обычного пользователя (путем - запуска pip3 от - имени этого пользователя). Поэтому всякий раз при - использовании pip3 от имени пользователя - root появляется многострочное - предупреждение. -

-

- Основная причина этой рекомендации — избежать конфликта с - системным менеджером пакетов (например, dpkg), но в LFS нет - общесистемного менеджера пакетов, так что это не проблема. - Кроме того, pip3 будет пытаться - проверять наличие новой версии при каждом запуске. Поскольку - разрешение доменных имен в среде chroot LFS еще не настроено, - он не сможет проверить наличие новой версии и выдаст - предупреждение. -

-

- Как только мы загрузим систему LFS и настроим сетевое - подключение, pip3 выдаст предупреждение, - сообщающее пользователю о необходимости обновить его с - помощью предварительно собранного whl-файла в PyPI (всякий - раз, когда будет доступна новая версия). Но LFS считает - pip3 частью - Python3, поэтому его не следует обновлять отдельно. Кроме - того, обновление из whl-файла не соответствует цели проекта — - собрать систему Linux из исходного кода, поэтому - предупреждение о новой версии pip3 следует игнорировать. - По желанию, вы можете отключить все предупреждение, создав - следующий файл конфигурации: -

-
cat > /etc/pip.conf << EOF
-[global]
-root-user-action = ignore
-disable-pip-version-check = true
-EOF
-
-
-

- Важно -

-

- В LFS и BLFS мы собираем и устанавливаем модули Python с - помощью команды pip3. Убедитесь, что - команда pip3 - install в обеих книгах запускаются от имени - пользователя root (если - только она не для виртуальной среды Python). Запуск - pip3 install - от имени пользователя без полномочий root может показаться нормальным, но - это приведет к тому, что установленный модуль будет - недоступен для других пользователей. -

-

- Команда pip3 - install по умолчанию не приведёт к - автоматической переустановке уже установленного модуля. - Чтобы использовать команду pip3 install для - обновления модуля (например, с meson-0.61.3 до - meson-0.62.0), добавьте параметр --upgrade в командную строку. - Если по какой-то причине необходимо понизить версию модуля - или переустановить ту же версию, используйте параметр - --force-reinstall - --no-deps. -

-
-

- По желанию установите предварительно отформатированную - документацию: -

-
install -v -dm755 /usr/share/doc/python-3.11.4/html
-
-tar --strip-components=1  \
-    --no-same-owner       \
-    --no-same-permissions \
-    -C /usr/share/doc/python-3.11.4/html \
-    -xvf ../python-3.11.4-docs-html.tar.bz2
-
-

- Значение команд установки документации: -

-
-
- --no-same-owner и --no-same-permissions -
-
-

- Проверяет, что установленные файлы имеют корректные - права и владельца файлов. Использование tar без этих параметров приведет к - установке файлов с правами пользователя создавшего - пакет. -

-
-
-
-
-
-

- 8.51.2. - Содержимое пакета Python 3 -

-
-
-
- Установленные - программы: 2to3, idle3, - pip3, pydoc3, python3 и python3-config -
-
- Установленные - библиотеки: libpython3.11.so и libpython3.so -
-
- Созданные каталоги: - /usr/include/python3.11, - /usr/lib/python3 и /usr/share/doc/python-3.11.4 -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

- 2to3 -

-
-

- программа на Python, которая читает файлы - написанные на Python - 2.x, применяет к ним серию изменений и - переводит их в валидный код Python 3.x. -

-
-

- idle3 -

-
-

- скрипт-обертка, который открывает графический - редактор с поддержкой Python. Для запуска этого - скрипта, перед установкой Python необходимо - установить Tk, - чтобы модуль Tkinter Python был собран. -

-
-

- pip3 -

-
-

- Установщик пакетов для Python. Вы можете - использовать pip для установки пакетов из каталога - PyPI (Python Package Index) и других источников. -

-
-

- pydoc3 -

-
-

- инструмент документации Python -

-
-

- python3 -

-
-

- это интерпретатор для Python, интерпретируемый, - интерактивный, объектно-ориентированный язык - программирования -

-
-
-
-
-
-
-
-
-

- 8.52. Flit-Core-3.9.0 -

-
-
-
-
-

- Flit-core — это часть Flit, предназначенная для сборки - дистрибутива (инструмента для упаковки простых модулей - Python). -

-
-
-
- Приблизительное время - сборки: менее 0.1 - SBU -
-
- Требуемое дисковое - пространство: 1.7 - MB -
-
-
-
-
-

- 8.52.1. Установка пакета Flit-Core -

-

- Соберите пакет: -

-
pip3 wheel -w dist --no-build-isolation --no-deps $PWD
-

- Установите пакет: -

-
pip3 install --no-index --no-user --find-links dist flit_core
-
-

- Значение параметров конфигурации и команд - pip3: -

-
-
- wheel -
-
-

- Эта команда создает архив wheel для этого пакета. -

-
-
- -w - dist -
-
-

- Указывает pip поместить созданный архив в каталог - dist. -

-
-
- install -
-
-

- Эта команда устанавливает пакет. -

-
-
- --no-build-isolation, - --no-deps и - --no-index -
-
-

- Эти параметры предотвращают получение файлов из - онлайн-репозитория пакетов (PyPI). Если пакеты - установлены в правильном порядке, то нет необходимости - загружать какие-либо файлы; эти параметры усиливают - безопасность в случае ошибки пользователя. -

-
-
- --find-links dist -
-
-

- Указывает pip искать архивы wheel в каталоге - dist. -

-
-
-
-
-
-

- 8.52.2. Содержимое пакета Flit-Core -

-
-
-
- Созданные каталоги: - /usr/lib/python3.11/site-packages/flit_core и - /usr/lib/python3.11/site-packages/flit_core-3.9.0.dist-info -
-
-
-
-
-
-
-
-
-

- 8.53. Wheel-0.41.1 -

-
-
-
-
-

- Wheel — это библиотека Python, которая является эталонной - реализацией стандарта упаковки программ на языке Python. -

-
-
-
- Приблизительное время - сборки: менее 0.1 - SBU -
-
- Требуемое дисковое - пространство: 1.5 - MB -
-
-
-
-
-

- 8.53.1. Установка пакета Wheel -

-

- Скомпилируйте Wheel с помощью следующей команды: -

-
pip3 wheel -w dist --no-build-isolation --no-deps $PWD
-

- Установите Wheel: -

-
pip3 install --no-index --find-links=dist wheel
-
-
-

- 8.53.2. - Содержимое пакета Wheel -

-
-
-
- Установленные - программы: wheel -
-
- Созданные каталоги: - /usr/lib/python3.11/site-packages/wheel и - /usr/lib/python3.11/site-packages/wheel-0.41.1.dist-info -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - -
-

- wheel -

-
-

- это утилита для распаковки, упаковки или - преобразования wheel-архивов -

-
-
-
-
-
-
-
-
-

- 8.54. Ninja-1.11.1 -

-
-
-
-
-

- Ninja - небольшая система сборки ориентированная на скорость. -

-
-
-
- Приблизительное время - сборки: 0.3 SBU -
-
- Требуемое дисковое - пространство: 75 MB -
-
-
-
-
-

- 8.54.1. Установка пакета Ninja -

-

- При запуске ninja обычно использует - максимальное количество процессов параллельно. По умолчанию - это количество ядер в системе плюс два. В некоторых случаях - это может привести к перегреву процессора или нехватке памяти - в системе. Когда ninja вызывается из - командной строки, передача параметра -jN ограничит количество - параллельных процессов. Некоторые пакеты встраивают - выполнение ninja и параметр -j не - передается. -

-

- Использование приведенной ниже необязательной процедуры позволяет - пользователю ограничить количество параллельных процессов с - помощью переменной окружения NINJAJOBS. Пример, настройки: -

-
export NINJAJOBS=4
-

- ограничит ninja - четырьмя параллельными процессами. -

-

- По желанию, добавьте возможность использовать переменную - окружения NINJAJOBS, выполнив следующую команду: -

-
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
-

- Соберите Ninja с помощью команды: -

-
python3 configure.py --bootstrap
-
-

- Значение параметров сборки: -

-
-
- --bootstrap -
-
-

- Этот параметр перестраивает Ninja под текущую систему. -

-
-
-
-

- Чтобы протестировать пакет, выполните: -

-
./ninja ninja_test
-./ninja_test --gtest_filter=-SubprocessTest.SetWithLots
-

- Установите пакет: -

-
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
-
-
-

- 8.54.2. - Содержимое пакета Ninja -

-
-
-
- Установленные - программы: ninja -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - -
-

- ninja -

-
-

- это система сборки Ninja -

-
-
-
-
-
-
-
-
-

- 8.55. Meson-1.2.1 -

-
-
-
-
-

- Meson — это система сборки с открытым исходным кодом, - разработанная таким образом, чтобы быть очень быстрой и - максимально удобной для пользователя. -

-
-
-
- Приблизительное время - сборки: менее 0.1 - SBU -
-
- Требуемое дисковое - пространство: 42 MB -
-
-
-
-
-

- 8.55.1. Установка пакета Meson -

-

- Скомпилируйте Meson с помощью следующей команды: -

-
pip3 wheel -w dist --no-build-isolation --no-deps $PWD
-

- Для набора тестов требуются некоторые пакеты, выходящие за - рамки LFS. -

-

- Установите пакет: -

-
pip3 install --no-index --find-links dist meson
-install -vDm644 data/shell-completions/bash/meson /usr/share/bash-completion/completions/meson
-install -vDm644 data/shell-completions/zsh/_meson /usr/share/zsh/site-functions/_meson
-
-

- Значение параметров установки: -

-
-
- -w - dist -
-
-

- Помещает собранный wheels в каталог dist. -

-
-
- --find-links dist -
-
-

- Устанавливает wheels из каталога dist. -

-
-
-
-
-
-

- 8.55.2. - Содержимое пакета Meson -

-
-
-
- Установленные - программы: meson -
-
- Созданные каталоги: - /usr/lib/python3.11/site-packages/meson-1.2.1.dist-info - и /usr/lib/python3.11/site-packages/mesonbuild -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - -
-

- meson -

-
-

- Высокопроизводительная система сборки -

-
-
-
-
-
-
-
-
-

- 8.56. Coreutils-9.3 -

-
-
-
-
-

- Пакет Coreutils содержит основные утилиты, необходимые каждой - операционной системе. -

-
-
-
- Приблизительное время - сборки: 0.9 SBU -
-
- Требуемое дисковое - пространство: 165 - MB -
-
-
-
-
-

- 8.56.1. Установка пакета Coreutils -

-

- Стандарт POSIX требует, чтобы программы пакета Coreutils - правильно распознавали символы даже в случае, если - используются многобайтовые локали. Следующий патч исправляет - несоответствие этому требованию, а также другие ошибки, - касающиеся интернационализации: -

-
patch -Np1 -i ../coreutils-9.3-i18n-1.patch
-
-

- Примечание -

-

- В этом патче было обнаружено много ошибок. Сообщая о новых - ошибках разработчикам Coreutils, сначала проверьте, - воспроизводятся ли эти ошибки без этого исправления. -

-
-

- Теперь подготовьте Coreutils к компиляции: -

-
autoreconf -fiv
-FORCE_UNSAFE_CONFIGURE=1 ./configure \
-            --prefix=/usr            \
-            --enable-no-install-program=kill,uptime
-
-

- Значение параметров настройки: -

-
-
- autoreconf -
-
-

- Патч для интернационализации изменил систему сборки - пакета, поэтому файлы конфигурации необходимо - сгенерировать заново. -

-
-
- FORCE_UNSAFE_CONFIGURE=1 -
-
-

- Эта переменная среды позволяет собрать пакет от имени - пользователя root. -

-
-
- --enable-no-install-program=kill,uptime -
-
-

- Назначение этого параметра — запретить Coreutils - устанавливать программы, которые будут установлены - другими пакетами. -

-
-
-
-

- Скомпилируйте пакет: -

-
make
-

- Если вы не планируете запускать набор тестов, перейдите к - разделу «Установка - пакета». -

-

- Теперь набор тестов готов к запуску. Сначала запустите тесты, - предназначенные для запуска от имени пользователя - root: -

-
make NON_ROOT_USERNAME=tester check-root
-

- Мы собираемся выполнить остальные тесты от имени пользователя - tester. Некоторые тесты - требуют, чтобы пользователь был членом более чем одной - группы. Чтобы эти тесты не были пропущены, добавьте временную - группу и включите в неё пользователя tester: -

-
groupadd -g 102 dummy -U tester
-

- Исправьте некоторые разрешения, чтобы пользователь без - полномочий root мог - компилировать и запускать тесты: -

-
chown -Rv tester . 
-

- Теперь запустите тесты: -

-
su tester -c "PATH=$PATH make RUN_EXPENSIVE_TESTS=yes check"
-

- Тест test-getlogin может завершиться ошибкой в среде chroot - LFS. -

-

- Удалить временную группу: -

-
groupdel dummy
-

- Установите пакет: -

-
make install
-

- Переместите программы туда, где они должны быть в - соответствие со спецификациями FHS: -

-
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"/' /usr/share/man/man8/chroot.8
-
-
-

- 8.56.2. Содержимое пакета Coreutils -

-
-
-
- Установленные - программы: [, b2sum, - base32, base64, basename, basenc, 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 и yes -
-
- Установленные - библиотеки: libstdbuf.so - (in /usr/libexec/coreutils) -
-
- Созданные каталоги: - /usr/libexec/coreutils -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

- [ -

-
-

- Это команда /usr/bin/[, которая является синонимом - команды test -

-
-

- base32 -

-
-

- Кодирует и декодирует данные в соответствии со - спецификацией base32 (RFC 4648) -

-
-

- base64 -

-
-

- Кодирует и декодирует данные в соответствии со - спецификацией base64 (RFC 4648) -

-
-

- b2sum -

-
-

- Выводит или проверяет контрольные суммы BLAKE2 - (512-битные) -

-
-

- basename -

-
-

- Удаляет любой путь и заданный суффикс из имени - файла -

-
-

- basenc -

-
-

- Кодирует или декодирует данные с использованием - различных алгоритмов -

-
-

- cat -

-
-

- Присоединяет файлы к стандартному выходному потоку -

-
-

- chcon -

-
-

- Изменяет контекст безопасности для файлов и - каталогов -

-
-

- chgrp -

-
-

- Изменяет владельцев группы для файлов и директорий -

-
-

- chmod -

-
-

- Изменяет разрешения каждого файла на заданный - режим; режим может быть либо символьным - представлением вносимых изменений, либо - восьмеричным числом, представляющим новые - разрешения. -

-
-

- chown -

-
-

- Изменяет принадлежность файлов и директорий - пользователю и/или группе -

-
-

- chroot -

-
-

- Запускает команду с указанным каталогом в качестве - корневого каталога / -

-
-

- cksum -

-
-

- Выводит контрольную сумму Cyclic Redundancy Check - (CRC) и количество байтов для каждого указанного - файла. -

-
-

- comm -

-
-

- Сравнивает два отсортированных файла, выводя в три - столбца уникальные и общие строки. -

-
-

- cp -

-
-

- Копирует файлы -

-
-

- csplit -

-
-

- Разбивает заданный файл на несколько новых файлов, - разделяя их в соответствии с заданными шаблонами - или номерами строк и выводя количество байтов для - каждого нового файла. -

-
-

- cut -

-
-

- Выдает участки строк, выбирая части в соответствии - с заданными полями или позициями -

-
-

- date -

-
-

- Отображает текущее дату и время в заданном формате - или устанавливает системные дату и время -

-
-

- dd -

-
-

- Копирует файл, используя заданный размер блока и - количество, при необходимости выполняя - преобразования на нем. -

-
-

- df -

-
-

- Сообщает объем доступного (и используемого) - дискового пространства во всех смонтированных - файловых системах или только в файловых системах, - содержащих выбранные файлы. -

-
-

- dir -

-
-

- Выводит содержимое заданного каталога (так же, как - команда ls) -

-
-

- dircolors -

-
-

- Выводит команды для установки переменной среды - LS_COLOR для изменения - цветовой схемы, используемой ls. -

-
-

- dirname -

-
-

- Извлекает часть(части) каталога из - заданного(заданных) имени(имён) -

-
-

- du -

-
-

- Сообщает объем дискового пространства, - используемого текущим каталогом, каждым из заданных - каталогов (включая все подкаталоги) или каждым из - заданных файлов. -

-
-

- echo -

-
-

- Отображает указанные строки -

-
-

- env -

-
-

- Запускает команду в модифицированной среде - окружения -

-
-

- expand -

-
-

- Конвертирует символы табуляции в пробелы -

-
-

- expr -

-
-

- Вычисляет выражения -

-
-

- factor -

-
-

- Выводит простые множители указанных целых чисел -

-
-

- false -

-
-

- Ничего не делает, указывает на неудачу; всегда - завершается с кодом состояния, указывающим на сбой -

-
-

- fmt -

-
-

- Форматирует абзацы в указанных файлах -

-
-

- fold -

-
-

- Выполняет перенос строк в указанных файлах -

-
-

- groups -

-
-

- Сообщает о принадлежности пользователя к группам -

-
-

- head -

-
-

- Выводит первые десять строк (или заданное - количество строк) каждого заданного файла. -

-
-

- hostid -

-
-

- Выводит числовой идентификатор хоста (в - шестнадцатеричном формате) -

-
-

- id -

-
-

- Выводит действующий идентификатор пользователя, - идентификатор группы и принадлежность к группам для - текущего или для указанного пользователя -

-
-

- install -

-
-

- Копирует файлы, одновременно устанавливая для них - права доступа, и, если возможно, устанавливая для - них владельца и группу -

-
-

- join -

-
-

- Объединяет строки, которые имеют идентичные - объединяемые поля в двух различных файлах -

-
-

- link -

-
-

- Создает жесткую ссылку (с указанным именем) на файл -

-
-

- ln -

-
-

- Создает жесткие или мягкие (символические) ссылки - между файлами -

-
-

- logname -

-
-

- Сообщает имя входа текущего пользователя -

-
-

- ls -

-
-

- Выводит список содержимого для каждого заданного - каталога -

-
-

- md5sum -

-
-

- Выводит или проверяет контрольные суммы Message - Digest 5 (MD5) -

-
-

- mkdir -

-
-

- Создает директории с указанными именами -

-
-

- mkfifo -

-
-

- Создает "именованный канал" "первым пришел — первым - ушел" (FIFO), в нотации UNIX с заданными именами -

-
-

- mknod -

-
-

- Создает узлы устройств с заданными именами; узел - устройства представляет собой специальный - символьный файл, специальный файл блока или FIFO. -

-
-

- mktemp -

-
-

- Создает временные файлы безопасным способом; - используется в скриптах -

-
-

- mv -

-
-

- Перемещает или переименовывает файлы или каталоги -

-
-

- nice -

-
-

- Запускает программу с измененным приоритетом - исполнения -

-
-

- nl -

-
-

- Нумерует строки в указанных файлах -

-
-

- nohup -

-
-

- Запускает команду, невосприимчивую к зависаниям, а - ее вывод перенаправляется в файл журнала -

-
-

- nproc -

-
-

- Выводит количество дочерних процессов, доступных - для процесса. -

-
-

- numfmt -

-
-

- Преобразует числа в или из удобочитаемых строк -

-
-

- od -

-
-

- Вывод дампа файла в восьмеричном и других форматах -

-
-

- paste -

-
-

- Объединяет указанные файлы, последовательно - соединяя соответствующие строки рядом друг с - другом, разделенные символами табуляции. -

-
-

- pathchk -

-
-

- Проверяет, являются ли имена файлов допустимыми или - переносимыми -

-
-

- pinky -

-
-

- Легковесный клиент типа finger; выдает некоторую - информацию о заданных пользователях -

-
-

- pr -

-
-

- Разбивает файлы для печати на страницы и столбцы -

-
-

- printenv -

-
-

- Выдает значения переменных окружения -

-
-

- printf -

-
-

- Выводит аргументы в соответствии с заданным - форматом, подобно функции C printf. -

-
-

- ptx -

-
-

- Создает перестановочный индекс по содержимому - указанных файлов с каждым ключевым словом в своем - контексте -

-
-

- pwd -

-
-

- Сообщает имя текущего рабочего каталога -

-
-

- readlink -

-
-

- Выдает значение указанной символической ссылки -

-
-

- realpath -

-
-

- Возвращает приведенное к обычному виду полное имя - файла -

-
-

- rm -

-
-

- Удаляет файлы или каталоги -

-
-

- rmdir -

-
-

- Удаляет каталоги, если они пусты -

-
-

- runcon -

-
-

- Запускает команду с указанным контекстом - безопасности -

-
-

- seq -

-
-

- Выдает последовательность чисел из указанного - диапазона с указанным значением приращения -

-
-

- sha1sum -

-
-

- Выводит или проверяет контрольные суммы 160-битного - алгоритма безопасного хеширования 1 (SHA1) -

-
-

- sha224sum -

-
-

- Выводит или проверяет контрольные суммы 224-битного - алгоритма безопасного хеширования -

-
-

- sha256sum -

-
-

- Выводит или проверяет контрольные суммы 256-битного - алгоритма безопасного хеширования -

-
-

- sha384sum -

-
-

- Выводит или проверяет контрольные суммы 384-битного - алгоритма безопасного хеширования -

-
-

- sha512sum -

-
-

- Выводит или проверяет контрольные суммы 512-битного - алгоритма безопасного хеширования -

-
-

- shred -

-
-

- Многократно перезаписывает заданные файлы сложными - шаблонами, что затрудняет восстановление данных. -

-
-

- shuf -

-
-

- Перемешивает строки текста -

-
-

- sleep -

-
-

- Делает паузу на заданный промежуток времени -

-
-

- sort -

-
-

- Сортирует строки в указанных файлах -

-
-

- split -

-
-

- Разбивает заданный файл на несколько частей в - соответствии с указанным размером или количеством - строк -

-
-

- stat -

-
-

- Отображает статус файла или файловой системы -

-
-

- stdbuf -

-
-

- Запускает команды с измененными операциями - буферизации для своих стандартных потоков. -

-
-

- stty -

-
-

- Устанавливает или сообщает настройки терминала -

-
-

- sum -

-
-

- Выводит контрольную сумму и количество блоков для - каждого заданного файла -

-
-

- sync -

-
-

- Сбрасывает буферы файловой системы; он - принудительно записывает измененные блоки на диск и - обновляет суперблок -

-
-

- tac -

-
-

- Конкатенация содержимого указанных файлов в - обратном порядке -

-
-

- tail -

-
-

- Выводит последние десять строк (или заданное - количество строк) каждого указанного файла -

-
-

- tee -

-
-

- Считывает данные со стандартного потока ввода, - записывает как в стандартный вывод, так и в - указанные файлы -

-
-

- test -

-
-

- Сравнивает значения и проверяет типы файловs -

-
-

- timeout -

-
-

- Запускает команду с ограничением по времени -

-
-

- touch -

-
-

- Изменяет временные метки файлов, устанавливая время - доступа и модификации данных файлов на текущее - время; несуществующие файлы создаются с нулевой - длиной -

-
-

- tr -

-
-

- Переводит, сжимает и удаляет заданные символы из - стандартного потока -

-
-

- true -

-
-

- Ничего не делает, указывает на успешное выполнение - операции; он всегда завершается с кодом состояния, - указывающим на успех -

-
-

- truncate -

-
-

- Сжимает или расширяет файл до указанного размера -

-
-

- tsort -

-
-

- Выполняет топологическую сортировку; записывает - полностью упорядоченный список в соответствии с - частичным упорядочением в данном файле -

-
-

- tty -

-
-

- Сообщает имя файла терминала, подключенного к - стандартному вводу. -

-
-

- uname -

-
-

- Сообщает системную информацию -

-
-

- unexpand -

-
-

- Преобразует пробелы в табуляции -

-
-

- uniq -

-
-

- Удаляет все повторяющиеся копии уже имеющихся - строк, кроме одной -

-
-

- unlink -

-
-

- Удаляет указанный файл -

-
-

- users -

-
-

- Сообщает имена пользователей, вошедших в систему в - данный момент -

-
-

- vdir -

-
-

- То же, что ls - -l -

-
-

- wc -

-
-

- Сообщает количество строк, слов и байт для каждого - заданного файла, а также общее количество строк, - если указано более одного файла -

-
-

- who -

-
-

- Сообщает, кто вошел в систему -

-
-

- whoami -

-
-

- Сообщает имя пользователя, соответствующее - идентификатору текущего пользователя -

-
-

- yes -

-
-

- Повторно выводит «y» или указанную строку, до - тех пор, пока команда не будет завершена с помощью - kill -

-
-

- libstdbuf -

-
-

- Библиотека, используемая командой stdbuf -

-
-
-
-
-
-
-
-
-

- 8.57. Check-0.15.2 -

-
-
-
-
-

- Check - это фреймворк модульного тестирования для языка C. -

-
-
-
- Приблизительное время - сборки: 0.1 SBU (около 1.6 - SBU с тестами) -
-
- Требуемое дисковое - пространство: 12 MB -
-
-
-
-
-

- 8.57.1. Установка пакета Check -

-

- Подготовить Check к компиляции: -

-
./configure --prefix=/usr --disable-static
-

- Соберите пакет: -

-
make
-

- Когда компиляция будет завершена, запустите набор тестов: -

-
make check
-

- Установите пакет: -

-
make docdir=/usr/share/doc/check-0.15.2 install
-
-
-

- 8.57.2. - Содержимое пакета Check -

-
-
-
- Установленные - программы: checkmk -
-
- Установленные - библиотеки: libcheck.so -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - - - - - -
-

- checkmk -

-
-

- Сценарий Awk для генерации unit-тестов C, для - использования с платформой модульного тестирования - Check. -

-
-

- libcheck.so -

-
-

- Содержит функции, позволяющие вызывать Check из - программы тестирования. -

-
-
-
-
-
-
-
-
-

- 8.58. Diffutils-3.10 -

-
-
-
-
-

- Пакет Diffutils содержит программы, которые показывают - различия между файлами или каталогами. -

-
-
-
- Приблизительное время - сборки: 0.3 SBU -
-
- Требуемое дисковое - пространство: 36 MB -
-
-
-
-
-

- 8.58.1. Установка пакета Diffutils -

-

- Подготовьте Diffutils к компиляции: -

-
./configure --prefix=/usr
-

- Скомпилируйте пакет: -

-
make
-

- Чтобы протестровать пакет, выполните: -

-
make check
-

- Установите пакет: -

-
make install
-
-
-

- 8.58.2. Содержимое пакета Diffutils -

-
-
-
- Установленные - программы: cmp, diff, - diff3, и sdiff -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - - - - - - - - - - - - - -
-

- cmp -

-
-

- Сравнивает побайтно два файла и сообщает о любых - различиях -

-
-

- diff -

-
-

- Сравнивает два файла или каталога и сообщает, какие - строки отличаются -

-
-

- diff3 -

-
-

- Сравнивает три файла построчно -

-
-

- sdiff -

-
-

- Объединяет два файла и интерактивно выводит - результат -

-
-
-
-
-
-
-
-
-

- 8.59. Gawk-5.2.2 -

-
-
-
-
-

- Пакет Gawk содержит программы для работы с текстовыми - файлами. -

-
-
-
- Приблизительное время - сборки: 0.1 SBU -
-
- Требуемое дисковое - пространство: 46 MB -
-
-
-
-
-

- 8.59.1. Установка пакета Gawk -

-

- Во-первых, отредактируйте Makefile, чтобы некоторые ненужные - файлы не были установлены -

-
sed -i 's/extras//' Makefile.in
-

- Подготовьте Gawk к компиляции: -

-
./configure --prefix=/usr
-

- Скомпилируйте пакет: -

-
make
-

- Чтобы протестировать пакет, выполните: -

-
chown -Rv tester .
-su tester -c "PATH=$PATH make check"
-

- Установите пакет: -

-
make LN='ln -f' install
-
-

- Значение переопределенной переменной make: -

-
-
- LN='ln - -f' -
-
-

- Эта переменная гарантирует, что предыдущая жесткая - ссылка, установленная в Раздел 6.9, «Gawk-5.2.2», - будет обновлена здесь. -

-
-
-
-

- В процессе установки уже создан awk в виде символической - ссылки на gawk, - создайте также символическую ссылку на справочную страницу: -

-
ln -sv gawk.1 /usr/share/man/man1/awk.1
-

- По желанию, установите документацию: -

-
mkdir -pv                                   /usr/share/doc/gawk-5.2.2
-cp    -v doc/{awkforai.txt,*.{eps,pdf,jpg}} /usr/share/doc/gawk-5.2.2
-
-
-

- 8.59.2. - Содержимое пакета Gawk -

-
-
-
- Установленные - программы: awk (ссылка на - gawk), gawk и gawk-5.2.2 -
-
- Установленные - библиотеки: filefuncs.so, - fnmatch.so, fork.so, inplace.so, intdiv.so, ordchr.so, - readdir.so, readfile.so, revoutput.so, revtwoway.so, - rwarray.so и time.so (все в /usr/lib/gawk) -
-
- Созданные каталоги: - /usr/lib/gawk, /usr/libexec/awk, - /usr/share/awk и /usr/share/doc/gawk-5.2.2 -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - - - - - - - - - -
-

- awk -

-
-

- Ссылка на gawk -

-
-

- gawk -

-
-

- Программа для работы с текстовыми файлами; это GNU - реализация awk -

-
-

- gawk-5.2.2 -

-
-

- Жесткая ссылка на gawk -

-
-
-
-
-
-
-
-
-

- 8.60. Findutils-4.9.0 -

-
-
-
-
-

- Пакет Findutils содержит программы для поиска файлов. Эти - программы предназначены для поиска по всем файлам в дереве - каталогов, а также для создания, обслуживания и поиска в базе - данных (часто быстрее, чем рекурсивный поиск, но ненадежно, - если база данных давно не обновлялась).Findutils также - предоставляет программу xargs, которую можно - использовать для запуска указанной команды для каждого файла, - выбранного при поиске. -

-
-
-
- Приблизительное время - сборки: 0.4 SBU -
-
- Требуемое дисковое - пространство: 51 MB -
-
-
-
-
-

- 8.60.1. Установка пакета Findutils -

-

- Подготовьте Findutils к компиляции: -

-
./configure --prefix=/usr --localstatedir=/var/lib/locate
-
-

- Значение параметров настройки: -

-
-
- --localstatedir -
-
-

- Этот параметр перемещает базу данных команды - locate в - /var/lib/locate, что - соответствует расположению, совместимому со стандартом - FHS. -

-
-
-
-

- Скомпилируйте пакет: -

-
make
-

- Чтобы протестировать пакет, выполните: -

-
chown -Rv tester .
-su tester -c "PATH=$PATH make check"
-

- Установите пакет: -

-
make install
-
-
-

- 8.60.2. Содержимое пакета Findutils -

-
-
-
- Installed programs: - Установленные программы -
-
- Созданные каталоги: - /var/lib/locate -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - - - - - - - - - - - - - -
-

- find -

-
-

- Выполняет поиск в заданных каталогах файлов, - соответствующих критериям -

-
-

- locate -

-
-

- Выполняет поиск по базе данных имен файлов и - сообщает об именах, которые содержат заданную - строку или соответствуют заданному шаблону. -

-
-

- updatedb -

-
-

- Обновляет базу данных locate; сканирует - всю файловую систему (включая другие файловые - системы, которые в настоящее время смонтированы, - если не указано иное) и записывает найденные имена - файлов в базу данных -

-
-

- xargs -

-
-

- Может использоваться для применения заданной - команды к списку файлов -

-
-
-
-
-
-
-
-
-

- 8.61. Groff-1.23.0 -

-
-
-
-
-

- Пакет Groff содержит программы для обработки и форматирования - текста и изображений. -

-
-
-
- Приблизительное время - сборки: 0.2 SBU -
-
- Требуемое дисковое - пространство: 107 - MB -
-
-
-
-
-

- 8.61.1. Установка пакета Groff -

-

- Groff ожидает, что переменная окружения PAGE будет содержать размер бумаги по - умолчанию. Для пользователей из США подходит PAGE=letter. Для других стран - больше подойдет PAGE=A4. Хотя формат бумаги по - умолчанию настраивается во время компиляции, его можно - переопределить позже, записав «A4» или - «letter» в файл /etc/papersize. -

-

- Подготовьте Groff к компиляции: -

-
PAGE=<paper_size> ./configure --prefix=/usr
-

- Соберите пакет: -

-
make
-

- Чтобы протестировать пакет, выполните: -

-
make check
-

- Установите пакет: -

-
make install
-
-
-

- 8.61.2. - Содержимое пакета Groff -

-
-
-
- Установленные - программы: 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 и - troff -
-
- Созданные каталоги: - /usr/lib/groff и - /usr/share/doc/groff-1.23.0, /usr/share/groff -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

- addftinfo -

-
-

- Читает файл шрифта troff и добавляет некоторую - дополнительную информацию о метрике шрифта, - используемую системой groff. -

-
-

- afmtodit -

-
-

- Создаёт файл шрифта для использования с - groff - и grops -

-
-

- chem -

-
-

- Препроцессор Groff для создания диаграмм химических - структур -

-
-

- eqn -

-
-

- Компилирует описания уравнений, имеющихся внутри - входных файлов troff, которые понятны troff -

-
-

- eqn2graph -

-
-

- Преобразует a troff EQN (уравнение) во фрагмент - изображения -

-
-

- gdiffmk -

-
-

- Отображает различия между файлами groff/nroff/troff -

-
-

- glilypond -

-
-

- Преобразует ноты, записанные на языке lilypond в - язык groff -

-
-

- gperl -

-
-

- Препроцессор для groff, позволяющий вставлять код - perl в файлы groff -

-
-

- gpinyin -

-
-

- Препроцессор groff, позволяющий вставлять Pinyin - (запись звуков китайского языка с помощью - латинского алфавита) в файлы groff. -

-
-

- grap2graph -

-
-

- Преобразует диаграммы grap во фрагмент растрового - изображения (grap - это старый язык - программирования Unix для создания диаграмм) -

-
-

- grn -

-
-

- Препроцессор groff для файлов - gremlin -

-
-

- grodvi -

-
-

- Драйвер для groff, создающий - выходные файлы в формате TeX dvi -

-
-

- groff -

-
-

- Внешний интерфейс к системе форматирования - документов groff; обычно он запускает программу - troff - и постпроцессор, соответствующий выбранному - устройству -

-
-

- groffer -

-
-

- Отображает файлы groff и справочные страницы на - терминалах X и tty -

-
-

- grog -

-
-

- Читает файлы и пытается определить, какие из - параметров groff - -e, -man, -me, -mm, -ms, -p, -s, - или -t требуются для - печати файлов, и указывает команду groff с этими - параметрами -

-
-

- grolbp -

-
-

- Драйвер groff для - принтеров Canon CAPSL (лазерные принтеры серий - LBP-4 и LBP-8) -

-
-

- grolj4 -

-
-

- Драйвер для groff который - выводит результат в формате PCL5, подходящем для - принтера HP LaserJet 4 -

-
-

- gropdf -

-
-

- Переводит выходные данные GNU troff в формат - PDF -

-
-

- grops -

-
-

- Переводит выходные данные GNU troff в формат - PostScript -

-
-

- grotty -

-
-

- Переводит вывод GNU troff в форму, - подходящую для устройств, подобных пишущим - машинкам. -

-
-

- hpftodit -

-
-

- Создает файл шрифта для использования с - groff - -Tlj4 из файла метрик шрифта для HP -

-
-

- indxbib -

-
-

- Создает инвертированный индекс для - библиографических баз данных для указанного файла, - используемый с refer, - lookbib, и - lkbib -

-
-

- lkbib -

-
-

- Выполняет поиск в библиографических базах данных - ссылок, содержащих указанные ключи, и сообщает о - любых найденных ссылках -

-
-

- lookbib -

-
-

- Выводит приглашение при наличии стандартной ошибки - (если устройство стандартного ввода не является - терминалом), читает из устройства стандартного - ввода строку, в которой находится набор ключевых - слов, ищет в библиографической базе данных для - указанного файла ссылки, содержащие эти ключевые - слова, выводит все ссылки, найденные в стандартном - выводе и повторяет этот процесс до тех пор, пока не - завершится входной поток -

-
-

- mmroff -

-
-

- Простой препроцессор для groff -

-
-

- neqn -

-
-

- Форматирует уравнения для их вывода в формате - American Standard Code for Information Interchange - (ASCII) -

-
-

- nroff -

-
-

- Скрипт, который эмулирует команду nroff с помощью - groff -

-
-

- pdfmom -

-
-

- Это обертка над groff которая упрощает создание - PDF-документов из файлов, отформатированных с - помощью макросов mom. -

-
-

- pdfroff -

-
-

- Создает pdf-документы с помощью groff -

-
-

- pfbtops -

-
-

- Преобразует шрифт PostScript в формате .pfb в формат ASCII -

-
-

- pic -

-
-

- Компилирует описания изображений, вставленных во - входные файлы troff или TeX, в команды, понятные - TeX или troff -

-
-

- pic2graph -

-
-

- Преобразует диаграмму PIC во фрагмент изображения -

-
-

- post-grohtml -

-
-

- Переводит выходной поток GNU troff в HTML -

-
-

- preconv -

-
-

- Преобразует кодировку входных файлов в формат, - понимаемый GNU troff -

-
-

- pre-grohtml -

-
-

- Переводит выходной поток GNU troff в HTML -

-
-

- refer -

-
-

- Копирует содержимое файла в стандартный вывод, - кроме тех символов, которые расположены между - .[ и - .] и - интерпретируются как цитаты, и кроме строк между - .R1 и - .R2, которые - интерпретируются как команды, указывающие как - цитаты должны быть обработаны -

-
-

- roff2dvi -

-
-

- Преобразует файлы roff в формат DVI -

-
-

- roff2html -

-
-

- Преобразует файлы roff в формат HTML -

-
-

- roff2pdf -

-
-

- Преобразует файлы roff в формат PDF -

-
-

- roff2ps -

-
-

- Преобразует файлы roff в файлы ps -

-
-

- roff2text -

-
-

- Преобразует файлы roff в текстовые файлы -

-
-

- roff2x -

-
-

- Преобразует файлы roff в другие форматы -

-
-

- soelim -

-
-

- Читает файлы и заменяет строки вида .so file содержимым - указанного файла file -

-
-

- tbl -

-
-

- Компилирует описания таблиц, вставленные во входные - файлы troff, в команды, понимаемые troff -

-
-

- tfmtodit -

-
-

- Создает файл шрифта для использования с - groff - -Tdvi -

-
-

- troff -

-
-

- Полностью совместим с Unix troff; его - следует вызывать с помощью команды groff, которая - также будет запускать препроцессоры и - постпроцессоры в соответствующем порядке и с - соответствующими параметрами -

-
-
-
-
-
-
-
-
-

- 8.62. GRUB-2.06 -

-
-
-
-
-

- Пакет GRUB содержит загрузчик операционной системы от проекта - GNU (GRand Unified Bootloader). -

-
-
-
- Приблизительное время - сборки: 0.3 SBU -
-
- Требуемое дисковое - пространство: 161 - MB -
-
-
-
-
-

- 8.62.1. Установка пакета GRUB -

-
-

- Примечание -

-

- Если ваша система поддерживает UEFI и вы хотите загрузить - LFS с UEFI, вы можете пропустить установку этого пакета в - LFS и установить GRUB с поддержкой UEFI (и его - зависимости), следуя инструкции - из BLFS. -

-
-
-

- Предупреждение -

-

- Сбросьте переменные окружения, которые могут повлиять на - сборку: -

-
unset {C,CPP,CXX,LD}FLAGS
-

- Не пытайтесь «настраивать» этот пакет с помощью - пользовательских флагов компиляции. Этот пакет является - загрузчиком. Низкоуровневые операции в исходном коде могут - быть нарушены из-за агрессивной оптимизации. -

-
-

- Устранена проблема, приводившая к сбою grub-install, когда раздел - /boot (или корневой раздел, - если /boot не является - отдельным разделом) создается e2fsprogs-1.47.0 или более - поздней версии: -

-
patch -Np1 -i ../grub-2.06-upstream_fixes-1.patch
-

- Подготовьте GRUB к компиляции: -

-
./configure --prefix=/usr          \
-            --sysconfdir=/etc      \
-            --disable-efiemu       \
-            --disable-werror
-
-

- Значение новых параметров настройки: -

-
-
- --disable-werror -
-
-

- Этот параметр позволяет завершить сборку с - предупреждениями, появившимися в более поздних версиях - Flex. -

-
-
- --disable-efiemu -
-
-

- Этот параметр запрещает установку компонента, отключает - функции и некоторые программы тестирования, которые не - нужны для LFS. -

-
-
-
-

- Скомпилируйте пакет: -

-
make
-

- Запуск набора тестов не рекомендуется. Большинство тестов - зависят от пакетов, недоступных в ограниченной среде LFS. - Если вы все равно хотите запустить тесты, выполните - make check. -

-

- Установите пакет: -

-
make install
-mv -v /etc/bash_completion.d/grub /usr/share/bash-completion/completions
-

- Создание загружаемой системы LFS с помощью GRUB будет - обсуждаться в Раздел 10.4, - «Использование GRUB для настройки процесса загрузки». -

-
-
-

- 8.62.2. - Содержимое пакета GRUB -

-
-
-
- Установленные - программы: 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 и - grub-syslinux2cfg -
-
- Созданные каталоги: - /usr/lib/grub, /etc/grub.d, - /usr/share/grub и /boot/grub (при первом запуске - grub-install) -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

- grub-bios-setup -

-
-

- Вспомогательная программа для grub-install -

-
-

- grub-editenv -

-
-

- Инструмент для редактирования блока окружения - (environment block) -

-
-

- grub-file -

-
-

- Проверяет, относится ли данный файл к указанному - типу -

-
-

- grub-fstest -

-
-

- Инструмент для отладки драйвера файловой системы -

-
-

- grub-glue-efi -

-
-

- Объединяет 32-разрядные и 64-разрядные бинарные - файлы в один файл (для компьютеров Apple) -

-
-

- grub-install -

-
-

- Устанавливает GRUB на ваш диск -

-
-

- grub-kbdcomp -

-
-

- Скрипт, который преобразует макет xkb в макет, - распознаваемый GRUB -

-
-

- grub-macbless -

-
-

- Это аналог bless в стиле Mac для файловых систем - HFS или HFS+ (команда bless характерна - для компьютеров Apple; она делает устройство - загрузочным) -

-
-

- grub-menulst2cfg -

-
-

- Преобразует GRUB Legacy menu.lst в grub.cfg для использования с GRUB - 2 -

-
-

- grub-mkconfig -

-
-

- Генерирует файл grub.cfg -

-
-

- grub-mkimage -

-
-

- Создаёт загрузочный образ GRUB -

-
-

- grub-mklayout -

-
-

- Создаёт файл раскладки клавиатуры GRUB -

-
-

- grub-mknetdir -

-
-

- Подготавливает сетевой загрузочный каталог GRUB -

-
-

- grub-mkpasswd-pbkdf2 -

-
-

- Генерирует зашифрованный пароль PBKDF2 для - использования в меню загрузки -

-
-

- grub-mkrelpath -

-
-

- Создает имена системных путей относительно корня -

-
-

- grub-mkrescue -

-
-

- Создает загрузочный образ GRUB, подходящий для - дискеты, CDROM/DVD или USB-накопителя -

-
-

- grub-mkstandalone -

-
-

- Генерирует автономный образ -

-
-

- grub-ofpathname -

-
-

- Вспомогательная программа, которая выводит путь к - устройству GRUB -

-
-

- grub-probe -

-
-

- Проверяет информацию об устройстве для заданного - пути или устройства -

-
-

- grub-reboot -

-
-

- Устанавливает пункт меню в GRUB для загрузки по - умолчанию, только для следующей - загрузки(однократно) -

-
-

- grub-render-label -

-
-

- Отображает .disk_label для компьютеров Apple Mac -

-
-

- grub-script-check -

-
-

- Проверяет скрипт настройки GRUB на наличие - синтаксических ошибок -

-
-

- grub-set-default -

-
-

- Устанавливает для GRUB загрузочную запись по - умолчанию -

-
-

- grub-sparc64-setup -

-
-

- Вспомогательная программа для grub-setup -

-
-

- grub-syslinux2cfg -

-
-

- Преобразует файл конфигурации syslinux в формат - grub.cfg -

-
-
-
-
-
-
-
-
-

- 8.63. Gzip-1.12 -

-
-
-
-
-

- Пакет Gzip содержит программы для сжатия и распаковки файлов. -

-
-
-
- Приблизительное время - сборки: 0.3 SBU -
-
- Требуемое дисковое - пространство: 21 MB -
-
-
-
-
-

- 8.63.1. Установка пакета Gzip -

-

- Подготовьте Gzip к компиляции: -

-
./configure --prefix=/usr
-

- Скомпилируйте пакет: -

-
make
-

- Чтобы протестировать пакет, выполните: -

-
make check
-

- Установите пакет: -

-
make install
-
-
-

- 8.63.2. - Содержимое пакета Gzip -

-
-
-
- Установленные - программы: gunzip, gzexe, - gzip, uncompress (жесткая ссылка на gunzip), zcat, zcmp, - zdiff, zegrep, zfgrep, zforce, zgrep, zless, zmore и - znew -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

- gunzip -

-
-

- Распаковывает gzip-файлы -

-
-

- gzexe -

-
-

- Создает самораспаковывающиеся исполняемые файлы -

-
-

- gzip -

-
-

- Сжимает файлы, используя алгоритм Lempel-Ziv - (LZ77). -

-
-

- uncompress -

-
-

- Распаковывает сжатые файлы -

-
-

- zcat -

-
-

- Распаковывает указанные сжатые файлы в стандартный - поток вывода -

-
-

- zcmp -

-
-

- Запускает cmp для - архивированных файлов -

-
-

- zdiff -

-
-

- Запускает diff для - архивированных файлов -

-
-

- zegrep -

-
-

- Запускает egrep для - архивированных файлов -

-
-

- zfgrep -

-
-

- Запускает fgrep для - архивированных файлов -

-
-

- zforce -

-
-

- Принудительно устанавливает расширение .gz всем сжатым файлам, чтобы - gzip - не сжимал их снова; это может быть полезно, когда - имена файлов были обрезаны во время передачи файла -

-
-

- zgrep -

-
-

- Запускает grep для - архивированных файлов -

-
-

- zless -

-
-

- Запускает less для - архивированных файлов -

-
-

- zmore -

-
-

- Запускает more для - архивированных файлов -

-
-

- znew -

-
-

- Повторно сжимает файлы из формата compress в формат - gzip - — из .Z в - .gz -

-
-
-
-
-
-
-
-
-

- 8.64. IPRoute2-6.4.0 -

-
-
-
-
-

- Пакет IPRoute2 содержит набор программ для базового и - расширенного администрирования сетей IPv4. -

-
-
-
- Приблизительное время - сборки: 0.1 SBU -
-
- Требуемое дисковое - пространство: 17 MB -
-
-
-
-
-

- 8.64.1. Установка пакета IPRoute2 -

-

- Программа arpd, - входящая в этот пакет, не будет собрана, поскольку зависит от - Berkeley DB, которая не установлена в LFS. Однако каталог и - справочная страница для arpd все равно будут - установлены. Предотвратить это можно, выполнив приведенные - ниже команды. (Если вам нужна arpd, инструкции по - компиляции Berkeley DB можно найти в книге BLFS по адресу - - https://mirror.linuxfromscratch.ru/blfs/view/12.0/server/db.html.) -

-
sed -i /ARPD/d Makefile
-rm -fv man/man8/arpd.8
-

- Скомпилируйте пакет: -

-
make NETNS_RUN_DIR=/run/netns
-

- Этот пакет не содержит рабочего набора тестов. -

-

- Установите пакет: -

-
make SBINDIR=/usr/sbin install
-

- По желанию, установите документацию: -

-
mkdir -pv             /usr/share/doc/iproute2-6.4.0
-cp -v COPYING README* /usr/share/doc/iproute2-6.4.0
-
-
-

- 8.64.2. Содержимое пакета IPRoute2 -

-
-
-
- Установленные - программы: bridge, ctstat - (ссылка на lnstat), genl, ifstat, ip, lnstat, nstat, - routel, rtacct, rtmon, rtpr, rtstat (ссылка на lnstat), - ss и tc -
-
- Созданные каталоги: - /etc/iproute2, /usr/lib/tc и - /usr/share/doc/iproute2-6.4.0 -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

- bridge -

-
-

- Настраивает сетевые мосты -

-
-

- ctstat -

-
-

- Утилита состояния подключения -

-
-

- genl -

-
-

- Универсальный интерфейс утилиты netlink -

-
-

- ifstat -

-
-

- Показывает статистику интерфейса, включая - количество переданных и полученных пакетов по - интерфейсам. -

-
-

- ip -

-
-

- Основной исполняемый файл. Он имеет несколько - различных функций, в том числе эти: -

-

- ip link <device> - позволяет пользователям просматривать состояние - устройств и вносить изменения -

-

- ip - addr позволяет пользователям - просматривать адреса и их свойства, добавлять новые - адреса и удалять старые -

-

- ip - neighbor позволяет пользователям - просматривать связи с соседями и их свойства, - добавлять новые записи и удалять старые -

-

- ip - rule позволяет пользователям - просматривать политики маршрутизации и изменять их -

-

- ip - route позволяет пользователям - просматривать таблицу маршрутизации и изменять - правила таблицы маршрутизации -

-

- ip - tunnel позволяет пользователям - просматривать IP-туннели и их свойства, а также - изменять их -

-

- ip - maddr позволяет пользователям - просматривать multicast адреса и их свойства и - изменять их -

-

- ip - mroute позволяет пользователям - устанавливать, изменять или удалять multicast - маршрутизацию. -

-

- ip - monitor позволяет пользователям - постоянно отслеживать состояние устройств, адресов - и маршрутов -

-
-

- lnstat -

-
-

- Предоставляет сетевую статистику Linux; это - обобщенная и более полнофункциональная замена - старой программы rtstat -

-
-

- nstat -

-
-

- Отображает сетевую статистику -

-
-

- routel -

-
-

- Компонент ip - route для просмотра таблиц - маршрутизации -

-
-

- rtacct -

-
-

- Отображает содержимое /proc/net/rt_acct -

-
-

- rtmon -

-
-

- Мониторит изменения таблицы маршрутизации -

-
-

- rtpr -

-
-

- Преобразует вывод ip - -o в удобочитаемую форму -

-
-

- rtstat -

-
-

- Утилита состояния маршрута -

-
-

- ss -

-
-

- Аналогично команде netstat - показывает активные соединения -

-
-

- tc -

-
-

- Управление трафиком для реализаций качества - обслуживания (QoS) и класса обслуживания (CoS) -

-

- tc - qdisc позволяет пользователям - настроить дисциплину обработки очередей -

-

- tc - class позволяет пользователям - настраивать классы, на основе планирования - дисциплины обработки очередей -

-

- tc - filter позволяет пользователям - настроить фильтрацию пакетов QOS/COS -

-

- tc - monitor может использоваться для - просмотра изменений, внесенных в управление - трафиком в ядре -

-
-
-
-
-
-
-
-
-

- 8.65. Kbd-2.6.1 -

-
-
-
-
-

- Пакет Kbd содержит файлы таблиц клавиш, консольные шрифты и - утилиты клавиатуры. -

-
-
-
- Приблизительное время - сборки: 0.1 SBU -
-
- Требуемое дисковое - пространство: 35 MB -
-
-
-
-
-

- 8.65.1. Установка пакета Kbd -

-

- Поведение клавиш backspace и delete не согласуется между - раскладками в пакете Kbd. Следующий патч исправляет эту - проблему для раскладок i386: -

-
patch -Np1 -i ../kbd-2.6.1-backspace-1.patch
-

- После исправления клавиша backspace генерирует символ с кодом - 127, а клавиша delete генерирует хорошо известную - escape-последовательность. -

-

- Удалите ненужную программу resizecons (она требуется - несуществующей svgalib для предоставления файлов видеорежима - — для нормального использования setfont, который правильно - определяет размеры консоли) вместе с ее справочной страницей. -

-
sed -i '/RESIZECONS_PROGS=/s/yes/no/' configure
-sed -i 's/resizecons.8 //' docs/man/man8/Makefile.in
-

- Подготовьте Kbd для компиляции: -

-
./configure --prefix=/usr --disable-vlock
-
-

- Значение параметра configure: -

-
-
- --disable-vlock -
-
-

- Этот параметр предотвращает сборку утилиты vlock, - поскольку для неё требуется библиотека PAM, которая - недоступна в среде chroot. -

-
-
-
-

- Скомпилируйте пакет: -

-
make
-

- Чтобы протестировать пакет, выполните: -

-
make check
-

- Установите пакет: -

-
make install
-
-

- Примечание -

-

- Для некоторых языков (например белорусского) пакет Kbd не - предоставляет подходящую раскладку, штатная раскладка - «by» - предполагает кодировку ISO-8859-5, а обычно используется - раскладка CP1251. Пользователи таких языков должны отдельно - загрузить рабочую раскладку. -

-
-

- По желанию, установите документацию:: -

-
cp -R -v docs/doc -T /usr/share/doc/kbd-2.6.1
-
-
-

- 8.65.2. - Содержимое пакета Kbd -

-
-
-
- Установленные - программы: chvt, - deallocvt, dumpkeys, fgconsole, getkeycodes, kbdinfo, - kbd_mode, kbdrate, loadkeys, loadunimap, mapscrn, openvt, - psfaddtable (ссылка на psfxtable), psfgettable (ссылка на - psfxtable), psfstriptable (ссылка на psfxtable), - psfxtable, setfont, setkeycodes, setleds, setmetamode, - setvtrgb, showconsolefont, showkey, unicode_start и - unicode_stop -
-
- Созданные каталоги: - /usr/share/consolefonts, - /usr/share/consoletrans, /usr/share/keymaps, - /usr/share/doc/kbd-2.6.1 и /usr/share/unimaps -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

- chvt -

-
-

- Изменяет используемый виртуальный терминал -

-
-

- deallocvt -

-
-

- Освобождает неиспользуемые виртуальные терминалы -

-
-

- dumpkeys -

-
-

- Создает дамп таблиц перевода клавиатуры -

-
-

- fgconsole -

-
-

- Выводит номер активного виртуального терминала -

-
-

- getkeycodes -

-
-

- Выводит таблицу ядра соответствия сканкода и кода - клавиши -

-
-

- kbdinfo -

-
-

- Получает информацию о состоянии консоли -

-
-

- kbd_mode -

-
-

- Выводит или устанавливает режим клавиатуры -

-
-

- kbdrate -

-
-

- Устанавливает частоту повторных нажатий клавиш и - задержки клавиатуры -

-
-

- loadkeys -

-
-

- Загружает таблицу преобразования клавиатуры -

-
-

- loadunimap -

-
-

- Загружает таблицу ядра отображения символов юникода -

-
-

- mapscrn -

-
-

- Устаревшая программа, которая использовалась для - загрузки определяемой пользователем таблицы - соответствия выводимых символов в драйвер консоли; - теперь эту функцию выполняет setfont -

-
-

- openvt -

-
-

- Запускает программу на новом виртуальном терминале - (VT) -

-
-

- psfaddtable -

-
-

- Добавляет таблицу символов Unicode в консольный - шрифт. -

-
-

- psfgettable -

-
-

- Извлекает встроенную таблицу символов Unicode из - консольного шрифта. -

-
-

- psfstriptable -

-
-

- Удаляет встроенную таблицу символов Unicode из - консольного шрифта. -

-
-

- psfxtable -

-
-

- Обрабатывает таблицы символов Unicode для - консольных шрифтов. -

-
-

- setfont -

-
-

- Изменяет шрифты Enhanced Graphic Adapter (EGA) и - Video Graphics Array (VGA), используемые в консоли -

-
-

- setkeycodes -

-
-

- Загружает таблицу соответствия сканкодов ядра и - кодов клавиш; это удобно, если на клавиатуре есть - нестандартные клавиши -

-
-

- setleds -

-
-

- Устанавливает значения флагов клавиатуры и - индикаторов (обычно - светодиоды) -

-
-

- setmetamode -

-
-

- Определяет обработку метаклавиши на клавиатуре - (обычно, это клавиша Win) -

-
-

- setvtrgb -

-
-

- Устанавливает цветовую схему консоли для всех - виртуальных терминалов -

-
-

- showconsolefont -

-
-

- Показывает текущий шрифт экрана консоли EGA/VGA -

-
-

- showkey -

-
-

- Показывает сканкоды, код клавиши и код ASCII для - клавиш, нажатых на клавиатуре -

-
-

- unicode_start -

-
-

- Переводит клавиатуру и консоль в режим UNICODE. [Не - используйте эту программу, если вы не используете - файл раскладки для кодировки ISO-8859-1. Для других - кодировок эта утилита выдает неправильные - результаты]. -

-
-

- unicode_stop -

-
-

- Возвращает клавиатуру и консоль из режима UNICODE -

-
-
-
-
-
-
-
-
-

- 8.66. Libpipeline-1.5.7 -

-
-
-
-
-

- Пакет Libpipeline содержит библиотеку для гибкого и удобного - управления подпроцессами. -

-
-
-
- Приблизительное время - сборки: 0.1 SBU -
-
- Требуемое дисковое - пространство: 10 MB -
-
-
-
-
-

- 8.66.1. Установка пакета Libpipeline -

-

- Подготовьте Libpipeline к компиляции: -

-
./configure --prefix=/usr
-

- Скомпилируйте пакет: -

-
make
-

- Чтобы протестировать пакет, выполните: -

-
make check
-

- Установите пакет: -

-
make install
-
-
-

- 8.66.2. Содержимое пакета - Libpipeline -

-
-
-
- Установленные - библиотеки: libpipeline.so -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - -
-

- libpipeline -

-
-

- Эта библиотека используется для безопасного - построения конвейеров между подпроцессами. -

-
-
-
-
-
-
-
-
-

- 8.67. Make-4.4.1 -

-
-
-
-
-

- Пакет Make содержит программу, управляющую генерацией - исполняемых и других файлов, из исходного кода. -

-
-
-
- Приблизительное время - сборки: 0.5 SBU -
-
- Требуемое дисковое - пространство: 13 MB -
-
-
-
-
-

- 8.67.1. Установка пакета Make -

-

- Подготовьте Make к компиляции: -

-
./configure --prefix=/usr
-

- Скомпилируйте пакет: -

-
make
-

- Чтобы протестировать пакет, выполните: -

-
chown -Rv tester .
-su tester -c "PATH=$PATH make check"
-

- Установите пакет: -

-
make install
-
-
-

- 8.67.2. - Содержимое пакета Make -

-
-
-
- Установленные - программы: make -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - -
-

- make -

-
-

- Автоматически определяет, какие части пакета - необходимо (пере)компилировать и запускает - соответствующие команды. -

-
-
-
-
-
-
-
-
-

- 8.68. Patch-2.7.6 -

-
-
-
-
-

- Пакет Patch содержит программу для изменения или создания - файлов путём наложение «патча», обычно, создаваемого программой - diff. -

-
-
-
- Приблизительное время - сборки: 0.1 SBU -
-
- Требуемое дисковое - пространство: 12 MB -
-
-
-
-
-

- 8.68.1. Установка пакета Patch -

-

- Подготовьте Patch к компиляции: -

-
./configure --prefix=/usr
-

- Скомпилируйте пакет: -

-
make
-

- Чтобы протестировать пакет, выполните: -

-
make check
-

- Установите пакет: -

-
make install
-
-
-

- 8.68.2. - Содержимое пакета Patch -

-
-
-
- Установленные - программы: patch -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - -
-

- patch -

-
-

- Изменяет файлы в соответствии с файлом исправления - (патч обычно представляет собой список отличий, - создаваемый с помощью программы diff. Применяя их - к исходным файлам, patch создает - исправленные версии.) -

-
-
-
-
-
-
-
-
-

- 8.69. Tar-1.35 -

-
-
-
-
-

- Пакет Tar предоставляет возможность создавать tar архивы, а - также производить с ними различные манипуляции. Tar может - распаковать предварительно созданный архив, добавить или - обновить файлы в нём, вернуть список файлов в архиве. -

-
-
-
- Приблизительное время - сборки: 1.7 SBU -
-
- Требуемое дисковое - пространство: 43 MB -
-
-
-
-
-

- 8.69.1. Установка пакета Tar -

-

- Подготовьте Tar к компиляции: -

-
FORCE_UNSAFE_CONFIGURE=1  \
-./configure --prefix=/usr
-
-

- Значение параметра configure: -

-
-
- FORCE_UNSAFE_CONFIGURE=1 -
-
-

- Этот параметр принудительно запускает тест для - mknod от имени - пользователя root. - Обычно считается опасным запускать этот тест от имени - пользователя root, но, - поскольку он выполняется в системе, которая была - собрана лишь частично, его переопределение допустимо. -

-
-
-
-

- Скомпилируйте пакет: -

-
make
-

- Чтобы протестировать пакет, выполните: -

-
make check
-
-

- Примечание -

-

- Время тестирования Tar можно значительно сократить в - системе с несколькими ядрами. Для этого добавьте - TESTSUITEFLAGS=-j<N> - к строке выше. Например, использование -j4 может сократить - время тестирования более чем на 70 процентов. -

-
-

- Известно, что один тест, capabilities: binary store/restore, - завершается ошибкой при запуске, потому что в LFS отсутствует - selinux, он будет пропущен, если ядро хоста не поддерживает - расширенные атрибуты или метки безопасности файловой системы, - используемой для сборки LFS. -

-

- Установите пакет: -

-
make install
-make -C doc install-html docdir=/usr/share/doc/tar-1.35
-
-
-

- 8.69.2. - Содержимое пакета Tar -

-
-
-
- Установленные - программы: tar -
-
- Созданные каталоги: - /usr/share/doc/tar-1.35 -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - -
-

- tar -

-
-

- Создает архивы, извлекает файлы и отображает - содержимое архивов, также известных как Тарболл. -

-
-
-
-
-
-
-
-
-

- 8.70. Texinfo-7.0.3 -

-
-
-
-
-

- Пакет Texinfo содержит программы для чтения, записи и - преобразования информационных страниц. -

-
-
-
- Приблизительное время - сборки: 0.3 SBU -
-
- Требуемое дисковое - пространство: 128 - MB -
-
-
-
-
-

- 8.70.1. Установка пакета Texinfo -

-

- Подготовьте Texinfo к компиляции: -

-
./configure --prefix=/usr
-

- Скомпилируйте пакет: -

-
make
-

- Чтобы протестировать пакет, выполните: -

-
make check
-

- Установите пакет: -

-
make install
-

- По желанию установите компоненты, входящие в пакет TeX:: -

-
make TEXMF=/usr/share/texmf install-tex
-
-

- Значение параметра make: -

-
-
- TEXMF=/usr/share/texmf -
-
-

- Переменная makefile TEXMF - содержит расположение корня дерева TeX, это - понадобится, если, например, пакет TeX планируется - установить позже. -

-
-
-
-

- Система документации использует простой текстовый файл для - хранения списка пунктов меню. Файл находится в /usr/share/info/dir. К сожалению, из-за - случайных проблем в Makefile различных пакетов он иногда - может не синхронизироваться с информационными страницами, - установленными в системе. Если когда-либо потребуется - пересоздать файл /usr/share/info/dir, следующие - необязательные команды решают эту задачу: -

-
pushd /usr/share/info
-  rm -v dir
-  for f in *
-    do install-info $f dir 2>/dev/null
-  done
-popd
-
-
-

- 8.70.2. - Содержимое пакета Texinfo -

-
-
-
- Установленные - программы: info, - install-info, makeinfo (ссылка на texi2any), pdftexi2dvi, - pod2texi, texi2any, texi2dvi, texi2pdf, и texindex -
-
- Установленные - библиотеки: MiscXS.so, - Parsetexi.so и XSParagraph.so (все в - /usr/lib/texinfo) -
-
- Созданные каталоги: - /usr/share/texinfo и - /usr/lib/texinfo -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

- info -

-
-

- Используется для чтения информационных страниц, - которые похожи на справочные страницы, но гораздо - подробнее описывают применение всех доступных - параметров командной строки [Например, сравните - man - bison и info bison.] -

-
-

- install-info -

-
-

- Используется для установки информационных страниц; - он обновляет записи в индексном файле команды - info -

-
-

- makeinfo -

-
-

- Переводит исходные документы Texinfo в - информационные страницы, обычный текст или HTML. -

-
-

- pdftexi2dvi -

-
-

- Используется для форматирования документа Texinfo в - файл Portable Document Format (PDF). -

-
-

- pod2texi -

-
-

- Преобразует Pod в формат Texinfo -

-
-

- texi2any -

-
-

- Переводит исходную документацию Texinfo в различные - другие форматы. -

-
-

- texi2dvi -

-
-

- Используется для форматирования документа Texinfo в - независимый от устройства файл, который можно - распечатать -

-
-

- texi2pdf -

-
-

- Используется для форматирования данного документа - Texinfo в файл Portable Document Format (PDF). -

-
-

- texindex -

-
-

- Используется для сортировки индексных файлов - Texinfo. -

-
-
-
-
-
-
-
-
-

- 8.71. Vim-9.0.1677 -

-
-
-
-
-

- Пакет Vim содержит мощный текстовый редактор. -

-
-
-
- Приблизительное время - сборки: 2.3 SBU -
-
- Требуемое дисковое - пространство: 229 - MB -
-
-
-
-

- Альтернативы Vim -

-

- .Если вы предпочитаете другой текстовый редактор, например, - Emacs, Joe или Nano, обратитесь к - https://mirror.linuxfromscratch.ru/blfs/view/12.0/postlfs/editors.html - за рекомендациями по установке. -

-
-
-
-

- 8.71.1. Установка пакета Vim -

-

- Во-первых, измените расположение файла конфигурации - vimrc на /etc: -

-
echo '#define SYS_VIMRC_FILE "/etc/vimrc"' >> src/feature.h
-

- Подготовьте Vim к компиляции: -

-
./configure --prefix=/usr
-

- Скомпилируйте пакет: -

-
make
-

- Чтобы подготовить тесты, убедитесь, что пользователь - tester может писать в - исходное дерево: -

-
chown -Rv tester .
-

- Теперь запустите тесты от имени пользователя tester: -

-
su tester -c "LANG=en_US.UTF-8 make -j1 test" &> vim-test.log
-

- Набор тестов выводит на экран много двоичных данных. Это - может вызвать проблемы с настройками текущего терминала. - Чтобы этого избежать, перенаправьте вывод в файл журнала, как - показано выше. Тест пройден успешно, если в файле журнала по - завершении есть надпись "ALL DONE". -

-

- Установите пакет: -

-
make install
-

- Многие пользователи рефлекторно набирают vi вместо vim. Чтобы разрешить - выполнение vim, - когда пользователи вводят vi, создайте символическую - ссылку как для двоичного файла, так и для справочной - страницы: -

-
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
-

- По умолчанию документация Vim установливается в каталог - /usr/share/vim. Следующая - символическая ссылка позволяет получить доступ к документации - через каталог /usr/share/doc/vim-9.0.1677, что - согласуется с расположением документации остальных пакетов: -

-
ln -sv ../vim/vim90/doc /usr/share/doc/vim-9.0.1677
-

- Если в LFS будет установлена система X Window, может - потребоваться перекомпилировать Vim после установки X. Vim - поставляется с графической версией редактора, для которой - требуется установка X и некоторых дополнительных библиотек. - Для получения дополнительной информации об этом процессе - обратитесь к документации по Vim и странице установки Vim в - книге BLFS по адресу - https://mirror.linuxfromscratch.ru/blfs/view/12.0/postlfs/vim.html. -

-
-
-

- 8.71.2. Настройка Vim -

-

- По умолчанию vim работает в режиме, - несовместимом с vi. Это может показаться необычным для - пользователей, которые в прошлом использовали другие - редакторы. Параметр «nocompatible» включен ниже, чтобы - подчеркнуть тот факт, что используется новое поведение. - Настройка также напоминает тем, кто хотел бы перейти в режим - «compatible», что параметр должен быть - первым в файле конфигурации. Это необходимо, потому что - изменяются другие параметры, и переопределения происходят - после этой настройки. Создайте файл конфигурации vim по умолчанию, выполнив - следующие действия: -

-
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
-

- Параметр set - nocompatible заставляет vim вести себя более - правильно (по умолчанию), чем vi-совместимый способ. Удалите - «no», - чтобы сохранить старое поведение vi. Параметр set backspace=2 позволяет - удалять символы через перенос строки, автоматические отступы - и начало вставки. Параметр syntax - on включает подсветку синтаксиса vim. Параметр - set mouse= позволяет - правильно вставлять текст с помощью мыши при работе в chroot - или через удаленное соединение. Наконец, оператор - if с параметром - set background=dark - корректирует предположение vim о цвете фона некоторых - эмуляторов терминала. Это придает подсветке лучшую цветовую - схему для использования на черном фоне этих программ. -

-

- Документацию по другим доступным параметрам можно получить, - выполнив следующую команду: -

-
vim -c ':options'
-
-

- Примечание -

-

- По умолчанию vim устанавливает файлы проверки орфографии - только для английского языка. Для установки файлов проверки - орфографии других языков, скопируйте файлы .spl и, при необходимости, .sug для вашего языка и кодировки - символов из runtime/spell, - сохраните их в /usr/share/vim/vim90/spell/. -

-

- Чтобы использовать эти файлы проверки орфографии, - необходимо указать параметры для vim в файле /etc/vimrc, пример: -

-
set spelllang=en,ru
-set spell
-

- Дополнительные сведения смотрите в файле runtime/spell/README.txt. -

-
-
-
-

- 8.71.3. - Содержимое пакета Vim -

-
-
-
- Установленные - программы: ex (ссылка на - vim), rview (ссылка на vim), rvim (ссылка на vim), vi - (ссылка на vim), view (ссылка на vim), vim, vimdiff - (ссылка на vim), vimtutor и xxd -
-
- Созданные каталоги: - /usr/share/vim -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

- ex -

-
-

- Запускает vim в режиме ex -

-
-

- rview -

-
-

- Это ограниченная версия view; никакие - команды оболочки не могут быть запущены, и - view - не может быть приостановлен -

-
-

- rvim -

-
-

- Это ограниченная версия vim; никакие - команды оболочки не могут быть запущены, и - vim - не может быть приостановлен -

-
-

- vi -

-
-

- Ссылка на vim -

-
-

- view -

-
-

- Запускает vim в режиме - только для чтения -

-
-

- vim -

-
-

- Сам редактор -

-
-

- vimdiff -

-
-

- Редактирует две или три версии файла с помощью - vim и - показывает различия -

-
-

- vimtutor -

-
-

- Обучает основным горячим клавишам и командам - vim -

-
-

- xxd -

-
-

- Создает шестнадцатеричный дамп данного файла; он - также может выполнять обратную операцию, поэтому - его можно использовать для бинарных патчей -

-
-
-
-
-
-
-
-
-

- 8.72. MarkupSafe-2.1.3 -

-
-
-
-
-

- MarkupSafe — это модуль Python, реализующий безопасное - использование строк в языках разметки XML/HTML/XHTML -

-
-
-
- Приблизительное время - сборки: менее 0.1 - SBU -
-
- Требуемое дисковое - пространство: 548 - KB -
-
-
-
-
-

- 8.72.1. Установка пакета MarkupSafe -

-

- Скомпилируйте MarkupSafe с помощью следующей команды: -

-
pip3 wheel -w dist --no-build-isolation --no-deps $PWD
-

- С этим пакетом не поставляется тестов. -

-

- Установите пакет: -

-
pip3 install --no-index --no-user --find-links dist Markupsafe
-
-
-

- 8.72.2. Содержимое пакета - MarkupSafe -

-
-
-
- Созданные каталоги: - /usr/lib/python3.11/site-packages/MarkupSafe-2.1.3.dist-info -
-
-
-
-
-
-
-
-
-

- 8.73. Jinja2-3.1.2 -

-
-
-
-
-

- Jinja2 - это модуль Python, который реализует простой язык - шаблонов pythonic -

-
-
-
- Приблизительное время - сборки: менее 0.1 - SBU -
-
- Требуемое дисковое - пространство: 3.4 - MB -
-
-
-
-
-

- 8.73.1. Установка пакета Jinja2 -

-

- Соберите пакет: -

-
pip3 wheel -w dist --no-build-isolation --no-deps $PWD
-

- Установите пакет: -

-
pip3 install --no-index --no-user --find-links dist Jinja2
-
-
-

- 8.73.2. - Содержимое пакета Jinja2 -

-
-
-
- Созданные каталоги: - /usr/lib/python3.11/site-packages/Jinja2-3.1.2.dist-info -
-
-
-
-
-
-
-
-
-

- 8.74. Udev из Systemd-254 -

-
-
-
-
-

- Пакет Udev содержит программы для динамического создания - узлов устройств. -

-
-
-
- Приблизительное время - сборки: 0.2 SBU -
-
- Требуемое дисковое - пространство: 138 - MB -
-
-
-
-
-

- 8.74.1. Установка пакета Udev -

-

- Udev является частью пакета systemd-254. Используйте файл - systemd-254.tar.xz в качестве исходного архива. -

-

- Удалите две ненужные группы render и sgx, из правил udev по умолчанию: -

-
sed -i -e 's/GROUP="render"/GROUP="video"/' \
-       -e 's/GROUP="sgx", //' rules.d/50-udev-default.rules.in
-

- Удалите одно правило udev, требующее полной установки - Systemd: -

-
sed '/systemd-sysctl/s/^/#/' -i rules.d/99-systemd.rules.in
-

- Подготовьте Udev к компиляции: -

-
mkdir -p build
-cd       build
-
-meson setup \
-      --prefix=/usr                 \
-      --buildtype=release           \
-      -Dmode=release                \
-      -Ddev-kvm-mode=0660           \
-      -Dlink-udev-shared=false      \
-      ..
-
-

- Значение параметров meson: -

-
-
- --buildtype=release -
-
-

- Этот параметр переопределяет тип сборки по умолчанию - («debug»), который создает - неоптимизированные двоичные файлы. -

-
-
- -Dmode=release -
-
-

- Отключает некоторые функции, которые разработчики - считают экспериментальными. -

-
-
- -Ddev-kvm-mode=0660 -
-
-

- По умолчанию правило udev разрешает всем пользователям - доступ к /dev/kvm. - Редакторы LFS считают это опасным. Данная опция - переопределяет разрешение по умолчанию. -

-
-
- -Dlink-udev-shared=false -
-
-

- Эта опция запрещает udev связываться с внутренней общей - библиотекой systemd libsystemd-shared. Эта библиотека - предназначена для совместного использования многими - компонентами Systemd, и ее использование избыточно, - когда установлен только udev -

-
-
-
-

- Соберите только компоненты, необходимые для udev: -

-
ninja udevadm systemd-hwdb \
-      $(grep -o -E "^build (src/libudev|src/udev|rules.d|hwdb.d)[^:]*" \
-        build.ninja | awk '{ print $2 }')                              \
-      $(realpath libudev.so --relative-to .)
-

- Удалите один файл правил udev, требующий полной установки - Systemd: -

-
rm rules.d/90-vconsole.rules
-

- Установите пакет: -

-
install -vm755 -d {/usr/lib,/etc}/udev/{hwdb,rules}.d
-install -vm755 -d /usr/{lib,share}/pkgconfig
-install -vm755 udevadm                     /usr/bin/
-install -vm755 systemd-hwdb                /usr/bin/udev-hwdb
-ln      -svfn  ../bin/udevadm              /usr/sbin/udevd
-cp      -av    libudev.so{,*[0-9]}         /usr/lib/
-install -vm644 ../src/libudev/libudev.h    /usr/include/
-install -vm644 src/libudev/*.pc            /usr/lib/pkgconfig/
-install -vm644 src/udev/*.pc               /usr/share/pkgconfig/
-install -vm644 ../src/udev/udev.conf       /etc/udev/
-install -vm644 rules.d/* ../rules.d/{*.rules,README} /usr/lib/udev/rules.d/
-install -vm644 hwdb.d/*  ../hwdb.d/{*.hwdb,README}   /usr/lib/udev/hwdb.d/
-install -vm755 $(find src/udev -type f | grep -F -v ".") /usr/lib/udev
-

- Установите некоторые пользовательские правила и файлы - поддержки, полезные в среде LFS: -

-
tar -xvf ../../udev-lfs-20230818.tar.xz
-make -f udev-lfs-20230818/Makefile.lfs install
-

- Установите справочные страницы: -

-
tar -xf ../../systemd-man-pages-254.tar.xz                            \
-    --no-same-owner --strip-components=1                              \
-    -C /usr/share/man --wildcards '*/udev*' '*/libudev*'              \
-                                  '*/systemd-'{hwdb,udevd.service}.8
-sed 's/systemd\(\\\?-\)/udev\1/' /usr/share/man/man8/systemd-hwdb.8   \
-                               > /usr/share/man/man8/udev-hwdb.8
-sed 's|lib.*udevd|sbin/udevd|'                                        \
-    /usr/share/man/man8/systemd-udevd.service.8                       \
-  > /usr/share/man/man8/udevd.8
-rm  /usr/share/man/man8/systemd-*.8
-
-
-

- 8.74.2. Настройка Udev -

-

- Информация об аппаратных устройствах хранится в каталогах - /etc/udev/hwdb.d и /usr/lib/udev/hwdb.d. Udev необходимо, чтобы эта информация - была скомпилирована в двоичную базу данных /etc/udev/hwdb.bin. Создайте исходную базу - данных: -

-
udev-hwdb update
-

- Эту команду необходимо запускать каждый раз при обновлении - информации об оборудовании. -

-
-
-

- 8.74.3. - Содержимое пакета Udev -

-
-
-
- Установленные - программы: udevadm, udevd - (символическая ссылка на udevadm) и udev-hwdb -
-
- Установленные - библиотеки: libudev.so -
-
- Созданные каталоги: - /etc/udev и /usr/lib/udev -
-
-
-
-

- Short Descriptions -

- - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

- udevadm -

-
-

- Универсальный инструмент администрирования udev: - управляет демоном udevd, предоставляет информацию - из базы данных Udev, отслеживает uevents, ожидает - завершения uevents, проверяет конфигурацию Udev и - запускает uevents для данного устройства -

-
-

- udevd -

-
-

- Демон, который прослушивает uevents в сокете - netlink, создает устройства и запускает настроенные - внешние программы в ответ на эти uevents -

-
-

- udev-hwdb -

-
-

- Обновляет или запрашивает базу данных оборудования -

-
-

- libudev -

-
-

- Библиотека для получения информации об устройствах - udev -

-
-

- /etc/udev -

-
-

- Содержит файлы конфигурации Udev, разрешения для - устройств и правила именования устройств -

-
-
-
-
-
-
-
-
-

- 8.75. Man-DB-2.11.2 -

-
-
-
-
-

- Пакет Man-DB содержит программы для поиска и просмотра - справочных страниц. -

-
-
-
- Приблизительное время - сборки: 0.2 SBU -
-
- Требуемое дисковое - пространство: 40 MB -
-
-
-
-
-

- 8.75.1. Установка пакета Man-DB -

-

- Подготовьте Man-DB к компиляции: -

-
./configure --prefix=/usr                         \
-            --docdir=/usr/share/doc/man-db-2.11.2 \
-            --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=
-
-

- Значение параметров настройки: -

-
-
- --disable-setuid -
-
-

- Отключает установку setuid пользователю man при сборке программы - man. -

-
-
- --enable-cache-owner=bin -
-
-

- Изменяет владельца файлов общесистемного кэша на - пользователя bin. -

-
-
- --with-... -
-
-

- Эти три аргумента используются для настройки программ - по умолчанию. lynx текстовый - веб-браузер (см. инструкции по установке в книге BLFS), - vgrind - преобразует исходные коды программ во входные данные - Groff, grap удобен для - набора графов в документах Groff. Программы - vgrind и - grap - обычно не нужны для просмотра справочных страниц. Они - не входят в состав книг LFS или BLFS, но вы можете - установить их самостоятельно после сборки LFS. -

-
-
- --with-systemd... -
-
-

- Эти параметры предотвращают установку ненужных - каталогов и файлов systemd. -

-
-
-
-

- Скомпилируйте пакет: -

-
make
-

- Чтобы протестировать пакет, выполните: -

-
make check
-

- Известно, что один тест с именем man1/lexgrog.1 завершился неудачно. -

-

- Установите пакет: -

-
make install
-
-
-

- 8.75.2. Не англоязычные страницы руководств в LFS -

-

- В следующей таблице приведены наборы символов, в которых - могут быть закодированы страницы руководств пакета Man-DB, - устанавливаемые в директории /usr/share/man/<ll>. Кроме этого, - Man-DB правильно определяет, имеют ли справочные страницы, - установленные в этом каталоге, кодировку UTF-8. -

-
- -

- Таблица 8.1. Допустимые кодировки старых 8-битных - страниц руководств -

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- Язык (код) - - Кодировка - - Язык (код) - - Кодировка -
- Датский (da) - - ISO-8859-1 - - Хорватский (hr) - - ISO-8859-2 -
- Немецкий (de) - - ISO-8859-1 - - Венгерский (hu) - - ISO-8859-2 -
- Английский (en) - - ISO-8859-1 - - Японский (ja) - - EUC-JP -
- Испанский (es) - - ISO-8859-1 - - Корейский (ko) - - EUC-KR -
- Эстонский (et) - - ISO-8859-1 - - Литовский (lt) - - ISO-8859-13 -
- Финский (fi) - - ISO-8859-1 - - Латышский (lv) - - ISO-8859-13 -
- Французский (fr) - - ISO-8859-1 - - Македонский (mk) - - ISO-8859-5 -
- Ирландский (ga) - - ISO-8859-1 - - Польский (pl) - - ISO-8859-2 -
- Галисийский (gl) - - ISO-8859-1 - - Румынский (ro) - - ISO-8859-2 -
- Индонезийский (id) - - ISO-8859-1 - - Русский (ru) - - KOI8-R -
- Исландский (is) - - ISO-8859-1 - - Словацкий (sk) - - ISO-8859-2 -
- Итальянский (it) - - ISO-8859-1 - - Словенский (sl) - - ISO-8859-2 -
- Норвежский букмол (nb) - - ISO-8859-1 - - Сербский латинский (sr@latin) - - ISO-8859-2 -
- Голландский (nl) - - ISO-8859-1 - - Сербский (sr) - - ISO-8859-5 -
- Норвежский нюнорск (nn) - - ISO-8859-1 - - Турецкий (tr) - - ISO-8859-9 -
- Норвежский (no) - - ISO-8859-1 - - Украинский (uk) - - KOI8-U -
- Португальский (pt) - - ISO-8859-1 - - Вьетнамский (vi) - - TCVN5712-1 -
- Шведский (sv) - - ISO-8859-1 - - Упрощенный китайский (zh_CN) - - GBK -
- Белорусский (be) - - CP1251 - - Упрощенный китайский, Сингапур (zh_SG) - - GBK -
- Болгарский (bg) - - CP1251 - - Традиционный китайский, Гонконг (zh_HK) - - BIG5HKSCS -
- Чешский (cs) - - ISO-8859-2 - - Традиционный китайский (zh_TW) - - BIG5 -
- Греческий (el) - - ISO-8859-7 - -   - -   -
-
-

-
-

- Примечание -

-

- Страницы руководств на языках, которые не указаны в списке, - не поддерживаются. -

-
-
-
-

- 8.75.3. - Содержимое пакета Man-DB -

-
-
-
- Установленные - программы: accessdb, - apropos (ссылка на whatis), catman, lexgrog, man, - man-recode, mandb, manpath, и whatis -
-
- Установленные - библиотеки: libman.so и - libmandb.so (обе в /usr/lib/man-db) -
-
- Созданные каталоги: - /usr/lib/man-db, - /usr/libexec/man-db и /usr/share/doc/man-db-2.11.2 -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

- accessdb -

-
-

- Выводит содержимое базы данных whatis в - удобочитаемой форме. -

-
-

- apropos -

-
-

- Выполняет поиск в базе данных whatis и - отображает краткое описание системных команд, - содержащих заданную строку -

-
-

- catman -

-
-

- Создает или обновляет предварительно - отформатированные страницы руководств -

-
-

- lexgrog -

-
-

- Отображает однострочную сводную информацию о данной - странице руководства -

-
-

- man -

-
-

- Форматирует и отображает запрошенную страницу - руководства -

-
-

- man-recode -

-
-

- Преобразует страницы руководства в другую кодировку -

-
-

- mandb -

-
-

- Создает или обновляет базу данных whatis -

-
-

- manpath -

-
-

- Отображает содержимое переменной $MANPATH или (если - переменная $MANPATH не установлена) соответствующий - путь поиска, определяемый в настройках man.conf и в - пользовательском окружении -

-
-

- whatis -

-
-

- Выполняет поиск в базе данных whatis и - отображает краткие описания системных команд, в - которых в описании ключей указано искомое слово -

-
-

- libman -

-
-

- Включает поддержку man во время - выполнения -

-
-

- libmandb -

-
-

- Включает поддержку man во время - выполнения -

-
-
-
-
-
-
-
-
-

- 8.76. Procps-ng-4.0.3 -

-
-
-
-
-

- Пакет Procps-ng содержит программы для мониторинга процессов. -

-
-
-
- Приблизительное время - сборки: 0.1 SBU -
-
- Требуемое дисковое - пространство: 25 MB -
-
-
-
-
-

- 8.76.1. Установка пакета Procps-ng -

-

- Подготовьте Procps-ng к компиляции: -

-
./configure --prefix=/usr                           \
-            --docdir=/usr/share/doc/procps-ng-4.0.3 \
-            --disable-static                        \
-            --disable-kill
-
-

- Значение параметра configure: -

-
-
- --disable-kill -
-
-

- Этот параметр отключает сборку команды kill; она будет - установлена из пакета Util-linux. -

-
-
-
-

- Скомпилируйте пакет: -

-
make
-

- Чтобы запустить набор тестов, выполните: -

-
make check
-

- Установите пакет: -

-
make install
-
-
-

- 8.76.2. - Содержимое пакета Procps-ng -

-
-
-
- Установленные - программы: free, pgrep, - pidof, pkill, pmap, ps, pwdx, slabtop, sysctl, tload, - top, uptime, vmstat, w и watch -
-
- Установленные - библиотеки: libproc-2.so -
-
- Созданные каталоги: - /usr/include/procps и - /usr/share/doc/procps-ng-4.0.3 -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

- free -

-
-

- Сообщает объем свободной и используемой памяти (как - физической, так и файла подкачки) в системе. -

-
-

- pgrep -

-
-

- Выполняет поиск процессов на основе их имени и - других атрибутов -

-
-

- pidof -

-
-

- Сообщает PIDы указанных программ -

-
-

- pkill -

-
-

- Отправка сигналов процессам на основе их имени и - других атрибутов -

-
-

- pmap -

-
-

- Команда выводит детальную информацию об - использование оперативной памяти процессами -

-
-

- ps -

-
-

- Список запущенных процессов -

-
-

- pwdx -

-
-

- Сообщает текущий рабочий каталог процесса -

-
-

- slabtop -

-
-

- Отображает подробную информацию о кэш-памяти ядра в - режиме реального времени. -

-
-

- sysctl -

-
-

- Изменяет параметры ядра во время выполнения -

-
-

- tload -

-
-

- Выводит график текущей средней загрузки системы -

-
-

- top -

-
-

- Отображает список процессов, наиболее интенсивно - использующих ЦП; обеспечивает просмотр активности - процессора в режиме реального времени -

-
-

- uptime -

-
-

- Сообщает сколько времени работает система, сколько - пользователей вошли в систему и средние значения - загрузки системы. -

-
-

- vmstat -

-
-

- Сообщает статистику виртуальной памяти, содержащую - информацию о процессах, памяти, подкачке, блочном - вводе/выводе (IO), прерываниях и активности ЦП. -

-
-

- w -

-
-

- Показывает, какие пользователи в настоящее время - вошли в систему и с какого момента -

-
-

- watch -

-
-

- Выполняет заданную команду повторно, отображая - первый экран, заполненный ее выводом; это позволяет - пользователю наблюдать за изменениями с течением - времени -

-
-

- libproc-2 -

-
-

- Содержит функции, используемые большинством - программ в этом пакете. -

-
-
-
-
-
-
-
-
-

- 8.77. Util-linux-2.39.1 -

-
-
-
-
-

- Пакет Util-linux содержит различные служебные программы. - Среди них утилиты для работы с файловыми системами, - консолями, разделами и сообщениями. -

-
-
-
- Приблизительное время - сборки: 0.5 SBU -
-
- Требуемое дисковое - пространство: 310 - MB -
-
-
-
-
-

- 8.77.1. Установка пакета Util-linux -

-

- Сначала отключите проблемные тесты: -

-
sed -i '/test_mkfds/s/^/#/' tests/helpers/Makemodule.am
-

- Подготовьте Util-linux к компиляции: -

-
./configure ADJTIME_PATH=/var/lib/hwclock/adjtime   \
-            --bindir=/usr/bin    \
-            --libdir=/usr/lib    \
-            --runstatedir=/run   \
-            --sbindir=/usr/sbin  \
-            --disable-chfn-chsh  \
-            --disable-login      \
-            --disable-nologin    \
-            --disable-su         \
-            --disable-setpriv    \
-            --disable-runuser    \
-            --disable-pylibmount \
-            --disable-static     \
-            --without-python     \
-            --without-systemd    \
-            --without-systemdsystemunitdir \
-            --docdir=/usr/share/doc/util-linux-2.39.1
-

- Параметры --disable и --without предотвращают появление - предупреждений о сборке компонентов, для которых требуются - пакеты, отсутствующие в LFS, или которые несовместимы с - программами, установленными другими пакетами. -

-

- Скомпилируйте пакет: -

-
make
-

- По желанию запустите набор тестов от имени пользователя без - полномочий root: -

-
-

- Предупреждение -

-

- Запуск набора тестов от имени пользователя root может повредить вашу систему. - Чтобы запустить тесты, опция CONFIG_SCSI_DEBUG для ядра - должна быть доступна в текущей работающей системе и должна - быть собрана как модуль. Включение её в ядро будет - прерывать загрузку. Для полного охвата тестами в систему - необходимо установить другие пакеты из BLFS. По желанию, - этот тест можно запустить после загрузки в готовую систему - LFS: -

-
bash tests/run.sh --srcdir=$PWD --builddir=$PWD
-
-
chown -Rv tester .
-su tester -c "make -k check"
-

- Тесты с жесткими - ссылками завершатся неудачей, если в ядре хоста - не включена опция CONFIG_CRYPTO_USER_API_HASH или не включено - никаких опций, обеспечивающих реализацию SHA256 (например, - CONFIG_CRYPTO_SHA256 или - CONFIG_CRYPTO_SHA256_SSSE3, если - процессор поддерживает инструкции SSE3). Кроме того, - известно, что два подтеста из misc: mbsencode и один подтест - из script: replay не проходят. -

-

- Установите пакет: -

-
make install
-
-
-

- 8.77.2. Содержимое пакета Util-linux -

-
-
-
- Установленные - программы: addpart, - agetty, blkdiscard, blkid, blkzone, blockdev, cal, - cfdisk, chcpu, chmem, choom, chrt, col, colcrt, colrm, - column, ctrlaltdel, delpart, dmesg, eject, fallocate, - fdisk, fincore, findfs, findmnt, flock, fsck, - fsck.cramfs, fsck.minix, fsfreeze, fstrim, getopt, - hardlink, hexdump, hwclock, i386 (ссылка на setarch), - ionice, ipcmk, ipcrm, ipcs, irqtop, isosize, kill, last, - lastb (ссылка на last), ldattach, linux32 (link to - setarch), linux64 (ссылка на setarch), logger, look, - losetup, lsblk, lscpu, lsipc, lsirq, lsfd, lslocks, - lslogins, lsmem, lsns, mcookie, mesg, mkfs, mkfs.bfs, - mkfs.cramfs, mkfs.minix, mkswap, more, mount, mountpoint, - namei, nsenter, partx, pivot_root, prlimit, readprofile, - rename, renice, resizepart, rev, rfkill, rtcwake, script, - scriptlive, scriptreplay, setarch, setsid, setterm, - sfdisk, sulogin, swaplabel, swapoff, swapon, switch_root, - taskset, uclampset, ul, umount, uname26 (ссылка на - setarch), unshare, utmpdump, uuidd, uuidgen, uuidparse, - wall, wdctl, whereis, wipefs, x86_64 (ссылка на setarch) - и zramctl -
-
- Установленные - библиотеки: libblkid.so, - libfdisk.so, libmount.so, libsmartcols.so и - libuuid.so -
-
- Созданные каталоги: - /usr/include/blkid, - /usr/include/libfdisk, /usr/include/libmount, - /usr/include/libsmartcols, /usr/include/uuid, - /usr/share/doc/util-linux-2.39.1 и - /var/lib/hwclock -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

- addpart -

-
-

- Сообщает ядру Linux о новых разделах -

-
-

- agetty -

-
-

- Открывает порт tty, запрашивает имя для входа, а - затем вызывает программу login -

-
-

- blkdiscard -

-
-

- Очищает сектора на устройстве -

-
-

- blkid -

-
-

- Утилита командной строки для вывода атрибутов - блочного устройства -

-
-

- blkzone -

-
-

- Используется для управления зонированными блочными - системами хранения -

-
-

- blockdev -

-
-

- Позволяет пользователям вызывать ioctl блочного - устройства из командной строки -

-
-

- cal -

-
-

- Отображает простой календарь -

-
-

- cfdisk -

-
-

- Управляет таблицей разделов данного устройства -

-
-

- chcpu -

-
-

- Изменяет состояние процессоров -

-
-

- chmem -

-
-

- Настраивает память -

-
-

- choom -

-
-

- Отображает и регулирует оценки OOM-killer, - используемые для определения того, какой процесс - следует завершить первым, когда в Linux - заканчивается память -

-
-

- chrt -

-
-

- Манипулирует атрибутами процесса в режиме реального - времени -

-
-

- col -

-
-

- Фильтрует обратные переносы строк из входного - потока -

-
-

- colcrt -

-
-

- Фильтрует данные, выдаваемые командой nroff на - терминалы, у которых отсутствует ряд возможностей, - например, отображение перечеркнутых символов или - верхних и нижних индексов -

-
-

- colrm -

-
-

- Фильтрует вывод указанных столбцов -

-
-

- column -

-
-

- Форматирует заданный файл в несколько столбцов -

-
-

- ctrlaltdel -

-
-

- Устанавливает для комбинации символов Ctrl+Alt+Del - жесткую или мягкую перезагрузку -

-
-

- delpart -

-
-

- Запрашивает у ядра Linux удаление раздела -

-
-

- dmesg -

-
-

- Выводит загрузочные сообщения ядра -

-
-

- eject -

-
-

- Извлекает съемный носитель -

-
-

- fallocate -

-
-

- Предварительное выделение места под файл -

-
-

- fdisk -

-
-

- Манипулирует таблицей разделов указанного - устройства -

-
-

- fincore -

-
-

- Подчитывает сколько страниц приложение хранит в - памяти ядра -

-
-

- findfs -

-
-

- Находит файловую систему по метке или - универсальному уникальному идентификатору (UUID) -

-
-

- findmnt -

-
-

- Представляет собой интерфейс командной строки к - библиотеке libmount для работы с файлами mountinfo, - fstab и mtab -

-
-

- flock -

-
-

- Осуществляет блокировку файла, а затем выполняет - команду, не снимая блокировку -

-
-

- fsck -

-
-

- Используется для проверки и, при необходимости, - восстановления файловых систем -

-
-

- fsck.cramfs -

-
-

- Выполняет проверку целостности файловой системы - Cramfs на данном устройстве -

-
-

- fsck.minix -

-
-

- Выполняет проверку целостности файловой системы - Minix на данном устройстве -

-
-

- fsfreeze -

-
-

- Очень простая программа-обертка для выполнение - операций с драйвером ядра FIFREEZE/FITHAW ioctl -

-
-

- fstrim -

-
-

- Освобождает неиспользованные блоки смонтированной - файловой системы -

-
-

- getopt -

-
-

- Разбирает параметры указанной командной строки -

-
-

- hardlink -

-
-

- Объединяет дубликаты файлов путем создания жестких - ссылок -

-
-

- hexdump -

-
-

- Создает дамп указанного файла в шестнадцатеричном, - десятичном, восьмеричном или ascii-формате -

-
-

- hwclock -

-
-

- Читает или устанавливает значение аппаратных часов - системы, называемых также часами реального времени - (RTC- Real-Time Clock) или часами БИОС (BIOS - - Basic Input-Output System) -

-
-

- i386 -

-
-

- Символьная ссылка на setarch -

-
-

- ionice -

-
-

- Читает или устанавливает класс и приоритет - обработки ввода/вывода для программ -

-
-

- ipcmk -

-
-

- Создает различные ресурсы межпроцессного - взаимодействия (IPC) -

-
-

- ipcrm -

-
-

- Удаляет указанный ресурс межпроцессного - взаимодействия (IPC) -

-
-

- ipcs -

-
-

- Предоставляет информацию о состоянии IPC -

-
-

- irqtop -

-
-

- Отображает информацию о счетчике прерываний ядра в - стиле top(1) -

-
-

- isosize -

-
-

- Сообщает о размере файловой системы iso9660 -

-
-

- kill -

-
-

- Посылает сигналы процессам -

-
-

- last -

-
-

- Показывает, какие пользователи в последний раз - входили (и выходили), выполняя поиск в файле - /var/log/wtmp; кроме - этого показывает информацию о загрузке системы, - завершение работы и изменениях уровня выполнения -

-
-

- lastb -

-
-

- Показывает неудачные попытки входа в систему, - зарегистрированные в /var/log/btmp -

-
-

- ldattach -

-
-

- Назначает устройству последовательного доступа - алгоритм, определяющий дисциплину обслуживания - этого устройства -

-
-

- linux32 -

-
-

- Символическая ссылка на setarch -

-
-

- linux64 -

-
-

- Символическая ссылка на setarch -

-
-

- logger -

-
-

- Добавляет указанное сообщение в системный журнал -

-
-

- look -

-
-

- Отображает строки, начинающиеся с указанной - последовательности символов -

-
-

- losetup -

-
-

- Настраивает и управляет устройствами типа loop -

-
-

- lsblk -

-
-

- Выводит информацию обо всех или выбранных блочных - устройствах в древовидном формате -

-
-

- lscpu -

-
-

- Выводит информацию об архитектуре процессора -

-
-

- lsfd -

-
-

- Отображает информацию об открытых файлах; заменяет - lsof -

-
-

- lsipc -

-
-

- Выводит информацию об объектах IPC, которые в - настоящее время используются в системе -

-
-

- lsirq -

-
-

- Отображает информацию о счетчике прерываний ядра -

-
-

- lslocks -

-
-

- Отображает список всех заблокированных в настоящее - время файлов в системе -

-
-

- lslogins -

-
-

- Выводит информацию о пользователях, группах и - системных учетных записях -

-
-

- lsmem -

-
-

- Отображает диапазоны доступной памяти с указанием - их оперативного статуса -

-
-

- lsns -

-
-

- Отображает список пространств имен -

-
-

- mcookie -

-
-

- Генерирует для xauth магические - куки (128-битные случайные числа в - шестнадцатеричном формате) -

-
-

- mesg -

-
-

- Определяет, могут ли другие пользователи отправлять - сообщения на терминал текущего пользователя -

-
-

- mkfs -

-
-

- Создает файловую систему на устройстве (обычно это - раздел жесткого диска) -

-
-

- mkfs.bfs -

-
-

- Создает файловую систему Santa Cruz Operations - (SCO) bfs -

-
-

- mkfs.cramfs -

-
-

- Создает файловую систему cramfs -

-
-

- mkfs.minix -

-
-

- Создает файловую систему Minix -

-
-

- mkswap -

-
-

- Инициализирует данное устройство или файл для - использования в качестве области подкачки -

-
-

- more -

-
-

- Фильтр постраничного вывода текста -

-
-

- mount -

-
-

- Подключение файловой системы, находящейся на - заданном устройстве, к указанному каталогу в дереве - файловой системы -

-
-

- mountpoint -

-
-

- Проверяет, является ли каталог точкой монтирования -

-
-

- namei -

-
-

- Разделяет на составляющие путь к файлу или - каталогу, показывая информацию о типе каждого - элемента -

-
-

- nsenter -

-
-

- Запускает программу в пространстве имен других - процессов -

-
-

- partx -

-
-

- Сообщает ядру информацию о наличии и количестве - разделов, находящихся на диске -

-
-

- pivot_root -

-
-

- Делает данную файловую систему новой корневой - файловой системой текущего процесса -

-
-

- prlimit -

-
-

- Получает и устанавливает ограничения использования - ресурсов процесса -

-
-

- readprofile -

-
-

- Читает информацию о профилировании ядра -

-
-

- rename -

-
-

- Переименовывает заданные файлы, заменяя одну строку - другой -

-
-

- renice -

-
-

- Изменяет приоритет запущенных процессов -

-
-

- resizepart -

-
-

- Запрашивает у ядра Linux изменение размера раздела -

-
-

- rev -

-
-

- Меняет в указанном файле порядок строк на обратный -

-
-

- rfkill -

-
-

- Bнструмент командной строки для управления - беспроводными устройствами -

-
-

- rtcwake -

-
-

- Используется для перехода системы в спящий режим до - указанного времени пробуждения -

-
-

- script -

-
-

- Создает скрипт терминальной сессии -

-
-

- scriptlive -

-
-

- Перезапускает скрипт терминальной сессии, используя - информацию о времени -

-
-

- scriptreplay -

-
-

- Воспроизводит скрипт в соответствие с указанным - временем запуска -

-
-

- setarch -

-
-

- В окружении, используемом новой программой, - изменяет информацию об архитектуре и устанавливает - флаги персонализации -

-
-

- setsid -

-
-

- Запускает указанную программу в новом сеансе -

-
-

- setterm -

-
-

- Устанавливает атрибуты терминала -

-
-

- sfdisk -

-
-

- Управляет таблицей разделов диска -

-
-

- sulogin -

-
-

- Позволяет пользователю root входить в систему; обычно - он вызывается init, когда - система переходит в однопользовательский режим -

-
-

- swaplabel -

-
-

- Изменяет UUID и метку раздела подкачки -

-
-

- swapoff -

-
-

- Отключает устройства и файлы подкачки -

-
-

- swapon -

-
-

- Включает устройства и файлы, применяемые для - раздела подкачки, а также выводит список устройств - и файлов, используемых в данный момент -

-
-

- switch_root -

-
-

- Переключается на другую файловую систему и - устанавливает её в качестве корневой -

-
-

- taskset -

-
-

- Устанавливает привязку процессора к процессу -

-
-

- uclampset -

-
-

- Управляет атрибутами ограничения использования - системы или процесса -

-
-

- ul -

-
-

- Фильтр для преобразования символов подчеркивания в - escape-последовательности -

-
-

- umount -

-
-

- Размонтирует файловую систему из дерева ФС -

-
-

- uname26 -

-
-

- Символическая ссылка на setarch -

-
-

- unshare -

-
-

- Позволяет процессу (или потоку) отделить части - своего контекста выполнения, которые используются - совместно с другими процессами (или потоками) -

-
-

- utmpdump -

-
-

- Отображает содержимое указанного файла входа в - систему в удобном для пользователя формате -

-
-

- uuidd -

-
-

- Демон, используемый библиотекой UUID для создания - безопасных и гарантированно уникальных - идентификаторов UUID -

-
-

- uuidgen -

-
-

- Создает новые идентификаторы (UUID). Каждый новый - UUID - это случайная последовательность, которая, - будет с очень высокой вероятностью (примерно 3,4 х - 10 в 38 степени вариантов) уникальной среди всех - идентификаторов, созданных как на локальной машине, - так и на любых других системах, в прошлом и будущем -

-
-

- uuidparse -

-
-

- Утилита для анализа уникальных идентификаторов -

-
-

- wall -

-
-

- Отображает содержимое файла или, по умолчанию, его - вывод на терминалах всех пользователей, вошедших в - систему в данный момент -

-
-

- wdctl -

-
-

- Показывает статус аппаратного сторожевого таймера -

-
-

- whereis -

-
-

- Сообщает местоположение двоичного файла, исходного - кода и справочной страницы для указанной команды -

-
-

- wipefs -

-
-

- Стирает с устройства сигнатуру файловой системы -

-
-

- x86_64 -

-
-

- Символическая ссылка на setarch -

-
-

- zramctl -

-
-

- Программа для настройки и управления устройствами - zram (сжатый RAM-диск) -

-
-

- libblkid -

-
-

- Содержит подпрограммы для идентификации устройства - и извлечения токена -

-
-

- libfdisk -

-
-

- Содержит подпрограммы для управления таблицами - разделов -

-
-

- libmount -

-
-

- Содержит подпрограммы для монтирования и - размонтирования блочных устройств -

-
-

- libsmartcols -

-
-

- Содержит подпрограммы для более удобного вывода на - экран информации в табличном виде -

-
-

- libuuid -

-
-

- Содержит подпрограммы для генерации уникальных - идентификаторов для объектов, которые могут быть - доступны за пределами локальной системы -

-
-
-
-
-
-
-
-
-

- 8.78. E2fsprogs-1.47.0 -

-
-
-
-
-

- Пакет E2fsprogs содержит утилиты для работы с файловой - системой ext2. Также он - поддерживает журналируемые файловые системы ext3 и ext4. -

-
-
-
- Приблизительное время - сборки: 2.4 SBU на жестком - диске, 0.6 SBU на SSD диске -
-
- Требуемое дисковое - пространство: 95 MB -
-
-
-
-
-

- 8.78.1. Установка пакета E2fsprogs -

-

- В документации к E2fsprogs рекомендуется выполнять сборку в - подкаталоге папки с исходниками: -

-
mkdir -v build
-cd       build
-

- Подготовьте E2fsprogs к компиляции: -

-
../configure --prefix=/usr           \
-             --sysconfdir=/etc       \
-             --enable-elf-shlibs     \
-             --disable-libblkid      \
-             --disable-libuuid       \
-             --disable-uuidd         \
-             --disable-fsck
-
-

- Значение параметров настройки: -

-
-
- --enable-elf-shlibs -
-
-

- Параметр создает общие библиотеки, которые используют - некоторые программы в этом пакете. -

-
-
- --disable-* -
-
-

- Эти параметры предотвращают сборку и установку - библиотек libuuid и - libblkid, демона - uuidd, и обертку для - fsck, - поскольку util-linux устанавливает более свежие версии. -

-
-
-
-

- Скомпилируйте пакет: -

-
make
-

- Чтобы запустить тесты, выполните: -

-
make check
-

- Известно, что один тест, с именем m_assume_storage_prezeroed, завершается - ошибкой. -

-

- Установите пакет: -

-
make install
-

- Удалите ненужные статические библиотеки: -

-
rm -fv /usr/lib/{libcom_err,libe2p,libext2fs,libss}.a
-

- Этот пакет устанавливает сжатый файл .info но не обновляет общесистемный файл - dir. Разархивируйте этот файл, - а затем обновите системный файл dir, используя следующие команды: -

-
gunzip -v /usr/share/info/libext2fs.info.gz
-install-info --dir-file=/usr/share/info/dir /usr/share/info/libext2fs.info
-

- По желанию, создайте и установите дополнительную - документацию, выполнив следующие команды: -

-
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
-
-
-

- 8.78.2. - Настройка E2fsprogs -

-

- Файл /etc/mke2fs.conf содержит - значения по умолчанию для различных параметров командной - строки mke2fs. - Вы можете отредактировать файл, чтобы значения по умолчанию - соответствовали вашим потребностям. Например, некоторые - утилиты (не в LFS или BLFS) не могут распознать файловую - систему ext4 с включенным - параметром metadata_csum_seed. - Если вам нужна - такая утилита, вы можете удалить параметр из списка по - умолчанию для ext4 с помощью - команды: -

-
sed 's/metadata_csum_seed,//' -i /etc/mke2fs.conf
-

- Подробности читайте в справочной странице mke2fs.conf(5). -

-
-
-

- 8.78.3. Содержимое пакета E2fsprogs -

-
-
-
- Установленные - программы: badblocks, - chattr, compile_et, debugfs, dumpe2fs, e2freefrag, - e2fsck, e2image, e2label, e2mmpstatus, e2scrub, - e2scrub_all, e2undo, e4crypt, e4defrag, filefrag, - fsck.ext2, fsck.ext3, fsck.ext4, logsave, lsattr, - mk_cmds, mke2fs, mkfs.ext2, mkfs.ext3, mkfs.ext4, - mklost+found, resize2fs и tune2fs -
-
- Установленные - библиотеки: libcom_err.so, - libe2p.so, libext2fs.so, и libss.so -
-
- Созданные каталоги: - /usr/include/e2p, /usr/include/et, - /usr/include/ext2fs, /usr/include/ss, /usr/lib/e2fsprogs, - /usr/share/et и /usr/share/ss -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

- badblocks -

-
-

- Выполняет поиск поврежденных блоков на устройстве - (обычно на разделе диска) -

-
-

- chattr -

-
-

- Изменяет атрибуты файлов в файловых системах - ext{234} -

-
-

- compile_et -

-
-

- Компилятор таблицы ошибок; конвертирует таблицу - имен кодов ошибок и сообщений в файл исходного кода - на языке С с тем, чтобы ее можно было использовать - с библиотекой com_err -

-
-

- debugfs -

-
-

- Отладчик файловой системы; его можно использовать - для проверки и изменения состояния файловых систем - ext{234} -

-
-

- dumpe2fs -

-
-

- Выводит информацию о суперблоке и группе блоков для - файловой системы, присутствующей на указанном - устройстве. -

-
-

- e2freefrag -

-
-

- Сообщает информацию о фрагментации свободного - пространства -

-
-

- e2fsck -

-
-

- Используется для проверки и, при необходимости, - восстановления файловых систем ext{234} -

-
-

- e2image -

-
-

- Используется для сохранения важных данных файловых - систем ext{234} в - файл -

-
-

- e2label -

-
-

- Отображает или изменяет метку файловой системы в - файловой системе ext{234} на данном устройстве. -

-
-

- e2mmpstatus -

-
-

- Проверяет состояние MMP (Multiple Mount Protection - - защита от множественного монтирования) файловой - системы ext4 -

-
-

- e2scrub -

-
-

- Проверяет содержимое смонтированной файловой - системы ext{234} -

-
-

- e2scrub_all -

-
-

- Проверяет все смонтированные файловые системы - ext{234} на наличие - ошибок -

-
-

- e2undo -

-
-

- Воспроизводит журнал отмены (undo_log) для файловой - системы ext{234}, - обнаруженной на устройстве. [Это можно использовать - для отмены неудачной операции программой - E2fsprogs.] -

-
-

- e4crypt -

-
-

- Утилита шифрования файловой системы Ext4 -

-
-

- e4defrag -

-
-

- Онлайн дефрагментатор для файловой системы - ext4 -

-
-

- filefrag -

-
-

- Сообщает о том, насколько сильно может быть - фрагментирован конкретный файл -

-
-

- fsck.ext2 -

-
-

- По умолчанию проверяет файловые системы - ext2 и является - жесткой ссылкой на e2fsck -

-
-

- fsck.ext3 -

-
-

- По умолчанию проверяет файловые системы - ext3 и является - жесткой ссылкой на e2fsck -

-
-

- fsck.ext4 -

-
-

- По умолчанию проверяет файловые системы - ext4 и является - жесткой ссылкой на e2fsck -

-
-

- logsave -

-
-

- Сохраняет вывод команды в файл журнала -

-
-

- lsattr -

-
-

- Перечисляет атрибуты файлов во второй расширенной - файловой системе. -

-
-

- mk_cmds -

-
-

- Преобразует таблицу имен команд и справочных - сообщений в исходный файл C, подходящий для - использования с библиотекой подсистемы libss -

-
-

- mke2fs -

-
-

- Создает файловую систему ext{234} на указанном - устройстве -

-
-

- mkfs.ext2 -

-
-

- По умолчанию создает файловую систему ext2 и является жесткой ссылкой - на mke2fs -

-
-

- mkfs.ext3 -

-
-

- По умолчанию создает файловую систему ext3 и является жесткой ссылкой - на mke2fs -

-
-

- mkfs.ext4 -

-
-

- По умолчанию создает файловую систему ext4 и является жесткой ссылкой - на mke2fs -

-
-

- mklost+found -

-
-

- Используется для создания каталога lost+found в файловой системе - ext{234}; - предварительно выделяет дисковые блоки для этого - каталога, чтобы облегчить задачу e2fsck -

-
-

- resize2fs -

-
-

- Может использоваться для увеличения или уменьшения - файловой системы ext{234} -

-
-

- tune2fs -

-
-

- Позволяет настроить параметры для файловой системы - ext{234} -

-
-

- libcom_err -

-
-

- Стандартная процедура отображения ошибок -

-
-

- libe2p -

-
-

- Используется dumpe2fs, - chattr, и - lsattr -

-
-

- libext2fs -

-
-

- Содержит подпрограммы, позволяющие программам - пользовательского уровня управлять файловой - системой ext{234} -

-
-

- libss -

-
-

- Используется debugfs -

-
-
-
-
-
-
-
-
-

- 8.79. Sysklogd-1.5.1 -

-
-
-
-
-

- Пакет Sysklogd содержит программы для логирования системных - сообщений, таких как сообщения ядра, когда происходят - различные события. -

-
-
-
- Приблизительное время - сборки: менее 0.1 - SBU -
-
- Требуемое дисковое - пространство: 680 - KB -
-
-
-
-
-

- 8.79.1. Установка пакета Sysklogd -

-

- Во-первых, устраните проблему, которая при некоторых условиях - вызывает в klogd ошибку сегментирования и исправьте - устаревшую программную конструкцию: -

-
sed -i '/Error loading kernel symbols/{n;n;d}' ksym_mod.c
-sed -i 's/union wait/int/' syslogd.c
-

- Скомпилируйте пакет: -

-
make
-

- Этот пакет не содержит набора тестов. -

-

- Установите пакет: -

-
make BINDIR=/sbin install
-
-
-

- 8.79.2. - Настройка Sysklogd -

-

- Создайте новый файл /etc/syslog.conf, выполнив следующую - команду: -

-
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
-
-
-

- 8.79.3. Содержимое пакета Sysklogd -

-
-
-
- Установленные - программы: klogd и - syslogd -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - - - - - -
-

- klogd -

-
-

- Системный демон для перехвата и регистрации - сообщений ядра -

-
-

- syslogd -

-
-

- Регистрирует сообщения системных программ для - записи в лог [Каждое регистрируемое сообщение - содержит как минимум время события, имя хоста, а - также имя программы, но это зависит от настроек - службы логирования.] -

-
-
-
-
-
-
-
-
-

- 8.80. Sysvinit-3.07 -

-
-
-
-
-

- Пакет Sysvinit содержит программы для управления загрузкой, - выполнением и выключением системы. -

-
-
-
- Приблизительное время - сборки: менее 0.1 - SBU -
-
- Требуемое дисковое - пространство: 4.5 - MB -
-
-
-
-
-

- 8.80.1. Установка пакета Sysvinit -

-

- Сначала примените патч, который удаляет несколько программ, - установленных другими пакетами и исправляет предупреждение - компилятора: -

-
patch -Np1 -i ../sysvinit-3.07-consolidated-1.patch
-

- Скомпилируйте пакет: -

-
make
-

- С этим пакетом не поставляется набор тестов. -

-

- Установите пакет: -

-
make install
-
-
-

- 8.80.2. Содержимое пакета Sysvinit -

-
-
-
- Установленные - программы: bootlogd, - fstab-decode, halt, init, killall5, poweroff (ссылка на - halt), reboot (ссылка на halt), runlevel, shutdown и - telinit (ссылка на init) -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

- bootlogd -

-
-

- Логирует сообщения при загрузке системы -

-
-

- fstab-decode -

-
-

- Запускает команду с аргументами, заданными в fstab -

-
-

- halt -

-
-

- Обычно вызывает команду shutdown с - параметром -h, за исключением - случаев, когда уровень запуска уже равен 0, тогда - он посылает ядру сигнал на остановку системы; Кроме - этого отмечает в файле /var/log/wtmp, что система - завершает работу -

-
-

- init -

-
-

- Первый процесс, который запускается после - инициализации оборудования; init берет на себя - процесс загрузки и запускает все процессы, которые - указанны в его файле конфигурации -

-
-

- killall5 -

-
-

- Посылает сигнал всем процессам, за исключением - процессов в его собственном сеансе; он не завершит - свою родительскую оболочку -

-
-

- poweroff -

-
-

- Посылает ядру команду остановить систему и - выключить компьютер (смотрите команду halt) -

-
-

- reboot -

-
-

- Посылает ядру команду перезагрузить систему - (смотрите команду halt) -

-
-

- runlevel -

-
-

- Сообщает о предыдущем и текущем уровнях выполнения - так, как это указано в последней записи в файле - /run/utmp -

-
-

- shutdown -

-
-

- Безопасно останавливает систему, отправляя сигналы - всем процессам и оповещая всех пользователей, - находящихся в системе -

-
-

- telinit -

-
-

- Сообщает init на какой - уровень выполнения перейти -

-
-
-
-
-
-
-
-
-

- 8.81. Об отладочных - символах -

-
-
-
-

- Большинство программ и библиотек по умолчанию компилируются с - отладочными символами (gcc с параметром -g). Это означает, что при - отладке программы или библиотеки, которые были скомпилированы с - использованием отладочной информации, отладчик может - предоставить не только адреса памяти, но и имена подпрограмм и - переменных. -

-

- Включение отладочных символов значительно увеличивает размер - программы или библиотеки. Ниже приведена информация по объему - пространства, занимаемого отладочными символами: -

-
-
    -
  • -

    - Двоичный файл bash с отладочными - символами: 1200 KB -

    -
  • -
  • -

    - Двоичный файл bash без отладочных - символов: 480 KB (на 60% меньше) -

    -
  • -
  • -

    - Файлы Glibc и GCC (/lib и - /usr/lib) с отладочными - символами: 87 MB -

    -
  • -
  • -

    - Файлы Glibc и GCC без отладочных символов: 16 MB (на 82% - меньше) -

    -
  • -
-
-

- Размеры могут варьироваться в зависимости от используемого - компилятора и библиотеки Си, но программа, в которой были - удалены отладочные символы, обычно примерно на 50-80% меньше, - чем ее аналог с ними. Поскольку большинство пользователей - никогда не будут использовать отладчик в своем программном - обеспечении, удаление отладочных символов может освободить - много места на диске. В следующем разделе показано, как удалить - все отладочные символы из программ и библиотек. -

-
-
-
-
-
-

- 8.82. Удаление отладочных - символов -

-
-
-
-

- Этот раздел является необязательным. Если предполагаемый - пользователь не является программистом и не планирует выполнять - какую-либо отладку системного программного обеспечения, размер - системы можно уменьшить примерно на 2 ГБ, удалив отладочные - символы и некоторые ненужные записи таблицы символов из - двоичных файлов и библиотек. Это не вызывает никаких неудобств - для обычного пользователя Linux. -

-

- Большинство людей, использующих приведенные ниже команды, не - испытывают никаких трудностей. Однако легко допустить опечатку - и сделать новую систему непригодной для использования. Поэтому - перед выполнением команды strip рекомендуется сделать - резервную копию системы LFS. -

-

- Команда strip с - параметром --strip-unneeded удаляет все - отладочные символы из двоичного файла или библиотеки. Кроме - этого, она удаляет все записи таблицы символов, ненужные - компоновщику (для статических библиотек) или динамическому - компоновщику (для динамически подключаемых двоичных файлов и - общих библиотек). -

-

- Отладочные символы для выбранных библиотек сохраняются в - отдельных файлах. Эта отладочная информация необходима при - выполнении регрессионных тестов, с помощью - valgrind или - gdb в BLFS. -

-

- Обратите внимание, что команда strip перезапишет двоичный - файл или библиотеку, которую она обрабатывает. Это может - привести к сбою процессов, использующих код или данные из - файла. Если это затронет сам процесс, выполняющий strip, удаляемый двоичный - файл или библиотека могут быть уничтожены; это может сделать - систему полностью непригодной для использования. Чтобы избежать - этого, мы скопируем некоторые библиотеки и двоичные файлы в - /tmp, очистим их и переустановим - с помощью команды install. Прочтите статью - Раздел 8.2.1, «Проблемы с - обновлением», чтобы понять, почему следует использовать - команду install - здесь. -

-
-

- Примечание -

-

- Имя загрузчика ELF — ld-linux-x86-64.so.2 в 64-битных - системах. и ld-linux.so.2 в 32-битных системах. Конструкция - ниже выбирает правильное имя для текущей архитектуры, - исключая всё, что заканчивается на «g», если - приведенные ниже команды уже были выполнены. -

-
-
-

- Важно -

-

- Если есть какой-либо пакет, версия которого отличается от - версии, указанной в книге (либо в соответствии с - рекомендациями по безопасности, либо в соответствии с личными - предпочтениями), может потребоваться обновить имя файла - библиотеки в save_usrlib или - online_usrlib. В противном случае система может стать - полностью непригодной для использования. -

-
-
save_usrlib="$(cd /usr/lib; ls ld-linux*[^g])
-             libc.so.6
-             libthread_db.so.1
-             libquadmath.so.0.0.0
-             libstdc++.so.6.0.32
-             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
-    cp $LIB /tmp/$LIB
-    strip --strip-unneeded /tmp/$LIB
-    objcopy --add-gnu-debuglink=$LIB.dbg /tmp/$LIB
-    install -vm755 /tmp/$LIB /usr/lib
-    rm /tmp/$LIB
-done
-
-online_usrbin="bash find strip"
-online_usrlib="libbfd-2.41.so
-               libsframe.so.1.0.0
-               libhistory.so.8.2
-               libncursesw.so.6.4
-               libm.so.6
-               libreadline.so.8.2
-               libz.so.1.2.13
-               $(cd /usr/lib; find libnss*.so* -type f)"
-
-for BIN in $online_usrbin; do
-    cp /usr/bin/$BIN /tmp/$BIN
-    strip --strip-unneeded /tmp/$BIN
-    install -vm755 /tmp/$BIN /usr/bin
-    rm /tmp/$BIN
-done
-
-for LIB in $online_usrlib; do
-    cp /usr/lib/$LIB /tmp/$LIB
-    strip --strip-unneeded /tmp/$LIB
-    install -vm755 /tmp/$LIB /usr/lib
-    rm /tmp/$LIB
-done
-
-for i in $(find /usr/lib -type f -name \*.so* ! -name \*dbg) \
-         $(find /usr/lib -type f -name \*.a)                 \
-         $(find /usr/{bin,sbin,libexec} -type f); do
-    case "$online_usrbin $online_usrlib $save_usrlib" in
-        *$(basename $i)* )
-            ;;
-        * ) strip --strip-unneeded $i
-            ;;
-    esac
-done
-
-unset BIN LIB save_usrlib online_usrbin online_usrlib
-
-

- Большое количество файлов будет помечено как ошибочные, потому - что формат файла не распознан. Эти предупреждения можно смело - игнорировать. Они указывают на то, что файлы являются - скриптами, а не двоичными файлами. -

-
-
-
-
-
-

- 8.83. Очистка -

-
-
-
-

- Наконец, удалите некоторые лишние файлы, оставшиеся после - запуска тестов: -

-
rm -rf /tmp/*
-

- Также в каталогах /usr/lib и /usr/libexec также есть несколько - файлов с расширением .la. Это файлы «архива libtool». Как - было сказано ранее, в современной системе Linux файлы .la - libtool необходимы только для libltdl. Предполагается, что - libltdl не будет загружать библиотеки в LFS, кроме этого - известно, что некоторые файлы .la могут нарушить сборку пакетов - BLFS. Удалите эти файлы сейчас: -

-
find /usr/lib /usr/libexec -name \*.la -delete
-

- Дополнительные сведения об архивных файлах libtool см. в - разделе BLFS - "О файлах архива Libtool (.la)". -

-

- Компилятор, собранный в Глава 6 - и - Глава 7 все еще установлен, но больше не нужен. - Удалите его с помощью команды: -

-
find /usr -depth -name $(uname -m)-lfs-linux-gnu\* | xargs rm -rf
-

- Наконец, удалите временную учетную запись пользователя - 'tester', созданную в начале предыдущей главы. -

-
userdel -r tester
-
-
-
-
-
-
-

- Глава 9. Системные настройки -

-
-
-
-
-
-
-
-

- 9.1. Введение -

-
-
-
-

- Загрузка системы Linux включает в себя несколько задач. Процесс - должен монтировать как виртуальные, так и реальные файловые - системы, инициализировать устройства, активировать файл - подкачки, проверять целостность файловых систем, монтировать - любые разделы или файл подкачки, устанавливать системные часы, - запускать сеть, запускать требуемые системой службы и выполнять - любые другие необходимые пользователю задачи. Этот процесс - должен быть организован таким образом, чтобы задачи выполнялись - в правильном порядке, но в то же время как можно быстрее. -

-
-

- 9.1.1. System V -

-

- System V это классический процесс загрузки, который - использовался в Unix и Unix-подобных системах, таких как - Linux с 1983 года. Он состоит из небольшой программы - init, которая - настраивает базовые программы, такие как login (через getty) и - запускает скрипт. Этот скрипт, обычно именуемый rc управляет выполнением - дополнительных сценариев, необходимых для инициализации - системы. -

-

- Программа init - управляется файлом /etc/inittab - и разделена по уровням выполнения, которые могут быть выбраны - пользователем. В LFS используются следующие уровни: -

-
-

- 0 — выключение
- 1 — Однопользовательский режим
- 2 — Определяемый пользователем
- 3 — Полный многопользовательский режим
- - 4 — Определяемый пользователем
- 5 — Полный многопользовательский режим с дисплей-менеджером
- - 6 — перезагрузка -

-
-

- Уровень выполнения по умолчанию равен 3 или 5. -

-

- Преимущества -

-
-
    -
  • -

    - Устоявшаяся, хорошо отлаженная система. -

    -
  • -
  • -

    - Легко настраивается. -

    -
  • -
-
-

- Недостатки -

-
-
    -
  • -

    - Может загружаться медленнее. Загрузка базовой системы - LFS в среднем занимает 8-12 секунд, при этом время - загрузки измеряется от первого сообщения ядра до - запроса на вход в систему. Подключение к сети обычно - устанавливается примерно через 2 секунды после запроса - на вход в систему. -

    -
  • -
  • -

    - Последовательная обработка задач загрузки. Это связано - с предыдущим пунктом. Задержка в работе любого - процесса, например, проверка файловой системы, приведет - к задержке всего процесса загрузки. -

    -
  • -
  • -

    - Напрямую не поддерживает дополнительные функции, такие - как контрольные группы (cgroups) и диспетчер системных - ресурсов для каждого пользователя. -

    -
  • -
  • -

    - Добавление init-скриптов требует ручных однотипных - действий. -

    -
  • -
-
-
-
-
-
-
-
-

- 9.2. - LFS-Bootscripts-20230728 -

-
-
-
-
-

- Пакет LFS-Bootscripts содержит набор скриптов для - запуска/остановки системы LFS при загрузке/завершении работы. - Файлы конфигурации и процедуры, необходимые для настройки - /процесса загрузки, описаны в следующих разделах. -

-
-
-
- Приблизительное время - сборки: менее 0.1 - SBU -
-
- Требуемое дисковое - пространство: 244 - KB -
-
-
-
-
-

- 9.2.1. Установка пакета LFS-Bootscripts -

-

- Установите пакет: -

-
make install
-
-
-

- 9.2.2. Содержимое пакета - LFS-Bootscripts -

-
-
-
- Установленные скрипты: - checkfs, cleanfs, console, - functions, halt, ifdown, ifup, localnet, modules, - mountfs, mountvirtfs, network, rc, reboot, sendsignals, - setclock, ipv4-static, swap, sysctl, sysklogd, template, - udev и udev_retry -
-
- Созданные каталоги: - /etc/rc.d, /etc/init.d - (символическая ссылка), /etc/sysconfig, /lib/services, - /lib/lsb (символическая ссылка) -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

- checkfs -

-
-

- Проверяет целостность файловых систем перед их - монтированием (за исключением журналируемых и - сетевых файловых систем) -

-
-

- cleanfs -

-
-

- Удаляет файлы, которые не должны сохраняться между - перезагрузками, например, те, которые находятся в - директориях /run/ и - /var/lock/; скрипт - пересоздает /run/utmp - и удаляет файлы, которые, возможно, существуют - /etc/nologin, - /fastboot, и - /forcefsck -

-
-

- console -

-
-

- Загружает правильную таблицу раскладок для - требуемой раскладки клавиатуры; он также - устанавливает экранный шрифт -

-
-

- functions -

-
-

- Содержит общие функции, такие как проверка ошибок и - состояния, которые используются несколькими - загрузочными скриптами -

-
-

- halt -

-
-

- Останавливает работу системы -

-
-

- ifdown -

-
-

- Останавливает сетевое устройство -

-
-

- ifup -

-
-

- Инициализирует сетевое устройство -

-
-

- localnet -

-
-

- Настраивает имя хоста системы и локальное - устройство loopback -

-
-

- modules -

-
-

- Загружает модули ядра из списка, который находится - в файле /etc/sysconfig/modules, используя - указанные там же аргументы -

-
-

- mountfs -

-
-

- Монтирует все файловые системы, кроме тех, которые - помечены как noauto или сетевых - файловых систем -

-
-

- mountvirtfs -

-
-

- Монтирует виртуальные файловые системы, такие как - proc -

-
-

- network -

-
-

- Выполняет настройку сетевых интерфейсов, например, - сетевых карт, и настаивает шлюз по-умолчанию (где - это применимо) -

-
-

- rc -

-
-

- Основной сценарий управления; он отвечает за запуск - всех остальных загрузочных скриптов один за другим, - в последовательности, определяемой именами - символических ссылок на другие скрипты. -

-
-

- reboot -

-
-

- Перезагружает систему -

-
-

- sendsignals -

-
-

- Обеспечивает завершение каждого процесса перед - перезагрузкой или остановкой системы. -

-
-

- setclock -

-
-

- Сбрасывает системные часы на местное время, если - аппаратные часы не установлены на всемирное - координированное время (UTC). -

-
-

- ipv4-static -

-
-

- Предоставляет функциональные возможности, - необходимые для назначения статического адреса - сетевому интерфейсу. -

-
-

- swap -

-
-

- Включает и отключает файлы и разделы, используемые - для подкачки. -

-
-

- sysctl -

-
-

- Загружает в работающее ядро значения системных - настроек из файла /etc/sysctl.conf, если этот файл - существует -

-
-

- sysklogd -

-
-

- Запускает и останавливает демоны журналирования - сообщений, выдаваемых системой и ядром. -

-
-

- template -

-
-

- Шаблон для создания пользовательских загрузочных - скриптов для других демонов -

-
-

- udev -

-
-

- Подготавливает каталог /dev и запускает демон udev -

-
-

- udev_retry -

-
-

- Повторяет неудачные попытки запуска udev uevents и - копирует сгенерированные файлы правил из - /run/udev в - /etc/udev/rules.d - если требуется. -

-
-
-
-
-
-
-
-
-

- 9.3. Взаимодействие с - устройствами и модулями -

-
-
-
-

- В - Глава 8, мы установили демон udev во время сборки - udev . Прежде чем мы углубимся в - детали того, как работает udev, необходимо кратко рассказать о - предыдущих методах взаимодействия с устройствами. -

-

- Системы Linux традиционно использовали метод статического - создания устройств, при котором огромное количество узлов - устройств(иногда буквально тысячи узлов) создавалось в - /dev, независимо от того, - существовали ли соответствующие аппаратные устройства на самом - деле. Обычно это делалось с помощью скрипта MAKEDEV, который содержал ряд - вызовов команды mknod с соответствующими - основными и второстепенными номерами устройств, для всех - возможных вариантов, которые только могут существовать в мире. -

-

- Используя метод udev, узлы устройств создаются только для тех - устройств, которые обнаружены ядром. Эти узлы устройств - создаются каждый раз при загрузке системы; они хранятся в - файловой системе devtmpfs - (виртуальная файловая система, которая полностью находится в - оперативной памяти). Узлы не занимают много места в памяти и их - общий размер незначителен. -

-
-

- 9.3.1. История -

-

- В феврале 2000 года, новая файловая система devfs была принята в ветку ядра 2.3.46 и - была доступна на протяжении выпуска стабильных релизов ветки - 2.4. Хотя она и присутствовала в ядре, такой способ - динамического создания устройств никогда не получал поддержки - от разработчиков ядра. -

-

- Основная проблема с подходом, принятым devfs была связана с обработкой - обнаружения, создания и назначения имен устройствам. Проблема - связанная с именованием узлов была самой важной. Общепринято, - что если имена устройств можно настраивать, политика - именования устройств должна выбираться системными - администраторами, а не навязываться разработчиками. Файловая - система devfs также страдала - от состояния гонки, присущего её архитектуре; оно не могло - быть исправлено без существенной переработки ядра. - devfs долгое время была - помечена как устаревшая и, наконец, была удалена из ядра в - июне 2006 года. -

-

- При разработке нестабильной ветки ядра 2.5, позднее, - выпущенной как стабильный релиз 2.6, появилась новая - виртуальная файловая система sysfs. Задача этой файловой системы - заключалась в предоставление информации о конфигурации - оборудования системы процессам пользовательского - пространства. С помощью этого представления, видимого в - пользовательском пространстве, стало возможным разработать - замену пользовательского пространства для devfs. -

-
-
-

- 9.3.2. Реализация Udev -

-
-
-
-
-

- 9.3.2.1. Sysfs -

-
-
-
-

- Краткое описание файловой системы sysfs было представлено выше. Можно - задаться вопросом, как sysfs получает информацию об - устройствах в системе, и о том, какие номера устройств - должны использоваться для них. Драйверы, скомпилированные в - ядро, регистрируют свои объекты в sysfs (внутри devtmpfs), по мере обнаружения ядром. - Для драйверов, которые скомпилированы в виде модулей, - регистрация происходит при его загрузке. После монтирования - файловой системы sysfs (в - каталог /sys), данные, - зарегистрированные драйверами, в sysfs, станут доступны для - пользовательского пространства и udevd для обработки - (включая модификацию узлов устройств). -

-
-
-
-
-
-

- 9.3.2.2. - Создание узла устройства -

-
-
-
-

- Файлы устройств создаются ядром в файловой системе - devtmpfs. Любой драйвер, - которому необходимо зарегистрировать узел устройства, будет - использовать для этого devtmpfs (через системный драйвер - ядра). Когда экземпляр devtmpfs монтируется в каталог - /dev, узел устройства будет - доступен в пользовательском пространстве с фиксированным - именем, разрешениями и владельцем. -

-

- Через некоторое время, ядро отправит uevent в udevd. На основе правил, - которые указанны в файлах в каталогах /etc/udev/rules.d, /lib/udev/rules.d, и /run/udev/rules.d, udevd создаст - дополнительные символические ссылки на узлы устройств, или - сменит разрешения, владельца или группу, или изменит запись - (имя) во внутренней базе данных udevd для этого объекта. -

-

- Правила в этих трёх каталогах пронумерованы и используются - совместно. Если udevd не может найти - правило для устройства, он оставит права доступа и - владельца на devtmpfs, - которые были установлены изначально. -

-
-
-
-
-
-

- 9.3.2.3. Загрузка модуля -

-
-
-
-

- Драйверы устройств, скомпилированные в виде модулей ядра - могут содержать встроенные псевдонимы. Псевдонимы можно - увидеть просмотрев вывод программы modinfo, обычно они - связаны со специфичными для шины идентификаторами - устройств, которые поддерживается модулем. Например, - драйвер snd-fm801 - подерживает PCI устройства с идентификатором поставщика - 0x1319 и идентификатором устройства 0x0801, и имеет - псевдоним «pci:v00001319d00000801sv*sd*bc04sc01i*». - Для большинства устройств, драйвер шины экспортирует - псевдонимы драйвера, которые будет обрабатывать устройство - через sysfs. Например, файл - /sys/bus/pci/devices/0000:00:0d.0/modalias - может содержать строку «pci:v00001319d00000801sv00001319sd00001319bc04sc01i00». - Правила по умолчанию, которые предоставлены Udev, заставят - udevd вызвать - /sbin/modprobe с - содержимым, которое находится в значении переменной - окружения MODALIAS uevent - (которое должно совпадать с содержимым файла modalias в sysfs), тем самым загружая все - модули, чьи псевдонимы совпадают в строке после расширения - подстановочных знаков -

-

- В указанном примере, это означает, что в дополнение к - snd-fm801 будет - загружен устаревший (и нежелательный) драйвер forte, если он будет доступен. - Ниже приведены способы, как можно предотвратить загрузку - нежелательных драйверов. -

-

- Само ядро также способно загружать модули для сетевых - протоколов, файловых систем и поддержки NLS по запросу. -

-
-
-
-
-
-

- 9.3.2.4. Работа с устройствами с - горячей заменой или динамическими устройствами -

-
-
-
-

- При подключении устройства, например, MP3-плеер, к - универсальной последовательной шине (USB), ядро распознает, - что устройство подключено, и генерирует событие uevent. - Затем это событие обрабатывается udevd, как было описано - выше. -

-
-
-
-

- 9.3.3. Проблемы с загрузкой модулей и созданием устройств -

-

- Существует несколько возможных проблем, связанных с - автоматическим созданием узлов устройств. -

-
-
-
-
-

- 9.3.3.1. Модуль ядра не - загружается автоматически -

-
-
-
-

- Udev загрузит модуль только в том случае, если у него есть - псевдоним, специфичный для шины, и драйвер шины правильно - экспортирует необходимые псевдонимы в sysfs. В других случаях следует - организовать загрузку модуля иными способами. Известно, - что, начиная с версии Linux-6.4.12, udev, выполняет - загрузку правильно написанных драйверов для INPUT, IDE, - PCI, USB, SCSI, SERIO, и FireWire устройств. -

-

- Чтобы определить, имеет ли требуемый драйвер устройства - необходимую поддержку Udev, запустите modinfo с именем модуля в - качестве аргумента. Далее, попробуйте найти каталог - устройства в /sys/bus и - проверьте, есть ли там файл modalias. -

-

- Если файл modalias существует - в sysfs, то драйвер, - который поддерживает устройство, может обращаться к нему - напрямую, но не имеет псевдонима, это ошибка в драйвере. - Загрузите драйвер без помощи Udev и ожидайте, что проблема - будет исправлена позднее. -

-

- Если же в каталоге /sys/bus - нет файла modalias, это - означает, что разработчики ядра еще не добавили поддержку - modalias к этому типу шины. В - Linux-6.4.12 это относится к шиной ISA. Ожидайте, что эта - проблема будет исправлена в более поздних версиях ядра. -

-

- Udev не предназначен для загрузки драйверов «обёрток», таких - как snd-pcm-ossи не - аппаратных драйверов, например, loop. -

-
-
-
-
-
-

- 9.3.3.2. Модуль ядра не - загружается автоматически и Udev не предназначен для - его загрузки -

-
-
-
-

- Если модуль «обёртка» только расширяет - функциональность, предоставляемую каким-либо другим модулем - (например модуль snd-pcm-oss расширяет - функциональность модуля snd-pcm, давая возможность - звуковым картам быть доступными для OSS приложений), - настройте modprobe для загрузки - оболочки после того, как Udev загрузит обернутый модуль. - Для этого добавьте строку «softdep» в файл, который находится в - каталоге /etc/modprobe.d/<filename>.conf. - Например: -

-
softdep snd-pcm post: snd-pcm-oss
-

- Обратите внимание, что команда «softdep» - разрешает добавлять pre: - зависимости, или одновременно pre: и post: - зависимости. Обратитесь к документации modprobe.d(5) для изучения синтаксиса и - возможностей «softdep». -

-

- Если рассматриваемый модуль не является обёрткой, и полезен - сам по себе, настройте загрузочный скрипт modules, чтобы он - инициализировался при загрузке системы. Для этого добавьте - имя модуля в файл /etc/sysconfig/modules в отдельной - строке. Этот способ сработает и для модулей-обёрток,но не - является оптимальным. -

-
-
-
-
-
-

- 9.3.3.3. Udev загружает какой-то - нежелательный модуль -

-
-
-
-

- Либо не создавайте модуль, либо занесите его в черный - список в файле /etc/modprobe.d/blacklist.conf, как это - сделано с модулем forte в примере ниже: -

-
blacklist forte
-

- Модули, занесенные в черный список, можно загрузить вручную - с помощью явной команды modprobe. -

-
-
-
-
-
-

- 9.3.3.4. Udev неправильно - создает устройство или делает неправильную - символическую ссылку -

-
-
-
-

- Это обычно происходит, если правило неожиданно совпадает с - другим устройством. Например, плохо написанное поставщиком - оборудования правило может соответствовать как диску - SCSI(искомое устройство), так и универсальному устройству - SCSI (неправильно). Найдите ошибочное правило и исправьте - его с помощью команды udevadm - info. -

-
-
-
-
-
-

- 9.3.3.5. Правило Udev работает - ненадежно -

-
-
-
-

- Это может быть проявлением предыдущей проблемы. В ином - случае, если правило использует атрибуты файловой системы - sysfs, то это может быть - проблемой синхронизации ядра, которая будет исправлена в - более поздних версиях ядра. Но вы можете обойти проблему, - создав правило, которое ожидает используемый атрибут - sysfs и добавляет его к - файлу правил /etc/udev/rules.d/10-wait_for_sysfs.rules - (создайте его, если файл не существует). Пожалуйста, - сообщите в списке рассылки разработчиков LFS, если это - решение вам поможет. -

-
-
-
-
-
-

- 9.3.3.6. Udev не создаёт - устройство -

-
-
-
-

- Во-первых, убедитесь, что драйвер встроен в ядро или уже - загружен как модуль, и, что udev не создает устройство с - неправильным именем. -

-

- Если драйвер ядра не экспортирует свои данные в - sysfs, udev не хватает - информации, необходимой для создания узла устройства. Это, - вероятнее всего, произойдет со сторонними драйверами, - которых нет в дереве исходного кода ядра. Создайте - статический узел в каталоге /usr/lib/udev/devices с соответствующими - старшим/младшим номерами (смотрите файл devices.txt в - документации к ядру или документации, предоставленной - сторонним поставщиком драйвера). Статический узел будет - скопирован в /dev с помощью - udev. -

-
-
-
-
-
-

- 9.3.3.7. Порядок присвоения имен - устройствам меняется случайным образом после - перезагрузки -

-
-
-
-

- Это связано с тем, что udev обрабатывает события uevents и - загружает модули параллельно, а значит в непредсказуемом - порядке. Это никогда не будет «исправлено». Вы - не должны полагаться на то что имена устройств ядра - стабильны. Вместо этого создайте свои собственные правила, - которые делают символические ссылки со стабильными именами - на основе некоторых неизменяемых атрибутов устройства, - таких как серийный номер или вывод различных утилит *_id, - установленных Udev. Смотрите Раздел 9.4, «Управление - устройствами» и Раздел 9.5, «Настройка сети» - для примера. -

-
-
-
-

- 9.3.4. Полезная информация -

-

- Дополнительную документацию можно получить на следующих - сайтах: -

-
- -
-
-
-
-
-
-
-

- 9.4. Управление - устройствами -

-
-
-
-
-

- 9.4.1. Сетевые устройства -

-

- Udev по умолчанию присваивает имена сетевым устройствам в - соответствии с данными прошивки, BIOS'а или физическими - характеристиками, такими как шина, слот или MAC-адрес. Целью - такого соглашения об именовании является обеспечение того, - чтобы сетевые устройства именовались последовательно, а не - основывались на времени обнаружения сетевой карты.Например, в - более старых версиях Linux—на компьютере с двумя сетевыми - картами производства Intel и Realtek, сетевая карта - производства Intel могла стать eth0, а карта Realtek — eth1. - Иногда после перезагрузки карты именовались наоборот. -

-

- В новой схеме именования, типичными именами сетевых устройств - являются enp5s0 или wlp3s0. Если такие имена для вас - нежелательны, то может быть реализована традиционная схема - именования или своя собственная. -

-
-
-
-
-

- 9.4.1.1. Отключение постоянного - присвоения имен в параметрах загрузки ядра -

-
-
-
-

- Традиционная схема именования - eth0, eth1, и так далее, - может быть включена путем добавления параметра - net.ifnames=0 в командную - строку ядра. Это решение подходит для систем, которые имеют - только одно сетевое устройство каждого типа. Часто в - ноутбуках несколько сетевых устройств с именами eth0 и - wlan0; в таких ноутбуках также может использоваться этот - метод. Командная строка указывается в файле конфигурации - GRUB. Подробности смотрите на странице Раздел 10.4.4, - «Создание файла конфигурации GRUB». -

-
-
-
-
-
-

- 9.4.1.2. Создание - пользовательских правил Udev -

-
-
-
-

- Схему именования можно настроить, создав пользовательские - правила udev. В состав книги включен скрипт, который - генерирует начальные правила. Чтобы их сгенерировать, - выполните команду: -

-
bash /usr/lib/udev/init-net-rules.sh
-

- Теперь, проверьте файл /etc/udev/rules.d/70-persistent-net.rules, - чтобы узнать какое имя с каким сетевым устройством - сопоставлено: -

-
cat /etc/udev/rules.d/70-persistent-net.rules
-
-

- Примечание -

-

- В некоторых случаях, например, когда MAC-адреса были - назначены сетевой карте вручную или в виртуальной среде, - такой как Qemu или Xen, возможно, файл сетевых правил не - будет сгенерирован, поскольку адреса назначаются не - последовательно. В таких случаях, этот способ не - применим. -

-
-

- Файл начинается с блока комментариев, далее следуют две - строки для каждой сетевой карты (NIC). Первая строка - представляет собой описание с комментариями и содержит - аппаратные идентификаторы (например, поставщика PCI и - идентификаторы устройств, если это PCI-карта), а также - информацию о драйвере (если его удалось обнаружить). Ни - идентификатор оборудования, ни драйвер не используются для - определения того, какое имя присвоить интерфейсу; эта - информация предназначена только для справки. Вторая строка - - это правило udev, которое соответствует этому сетевому - адаптеру и фактически присваивает ему имя. -

-

- Все правила udev состоят из нескольких ключевых слов, - разделенных запятыми и необязательными пробелами. Ниже - приведены ключевые слова и пояснения по каждому из них: -

-
-
    -
  • -

    - SUBSYSTEM=="net" - - указывает Udev игнорировать устройства, которые не - являются сетевыми картами. -

    -
  • -
  • -

    - ACTION=="add" - - указывает Udev игнорировать правила для событий, - отличных от добавления (события "удалить" и - "изменить" также происходят, но не требуют - переименования сетевых интерфейсов). -

    -
  • -
  • -

    - DRIVERS=="?*" - - существует для того, чтобы Udev проигнорировал - подинтерфейсы VLAN или моста (потому что эти - подинтерфейсы не имеют драйверов). Эти подинтерфейсы - пропускаются, потому что назначенные им имена будут - конфликтовать с именами их родительских устройств. -

    -
  • -
  • -

    - ATTR{address} - - значением этого ключевого слова является MAC-адрес - сетевой карты. -

    -
  • -
  • -

    - ATTR{type}=="1" - этот - ключ гарантирует выполнение правила соответствующего - только основному интерфейсу, при использовании - определенных беспроводных драйверов, которые создают - несколько виртуальных интерфейсов. Дополнительные - интерфейсы пропускаются по той же причине, что и - подинтерфейсы VLAN и мост, в ином случае произошел бы - конфликт имен. -

    -
  • -
  • -

    - NAME - значением этого - ключевого слова является имя, которое udev присвоит - этому интерфейсу. -

    -
  • -
-
-

- Значение NAME является очень - важным. Прежде чем продолжить, убедитесь, что вы знаете, - какое имя назначено каждой из сетевых карт и обязательно - используйте это значение NAME - при создании файлов конфигурации сети. -

-
-
-
-

- 9.4.2. Символические ссылки CD-ROM -

-

- Некоторое программное обеспечение, которое вы, возможно, - захотите установить позже (например, различные медиаплееры) - ожидают, что устройства /dev/cdrom или /dev/dvd и символические ссылки на CD-ROM - или DVD-ROM устройства должны существовать. Кроме того, может - быть удобно использовать эти символические ссылки в - /etc/fstab. Udev поставляется с - файлом сценария, который будет генерировать правила для - создания этих символических ссылок, в зависимости от - возможностей каждого устройства, но вам нужно решить, какой - из двух режимов работы вы хотите использовать. -

-

- Во-первых, скрипт может работать в режиме «by-path» - (используется по умолчанию для USB и FireWire устройств), где - создаваемые им правила зависят от физического пути к CD или - DVD устройству. Во-вторых, он может работать в режиме - «by-id» - (по умолчанию для устройств IDE и SCSI), где создаваемые им - правила зависят от строк идентификации, хранящихся в самом - устройстве CD или DVD. Путь определяется сценарием Udev - path_id, а - идентификационные строки считываются с оборудования командами - ata_id или - scsi_id, в - зависимости от того, какой тип устройства у вас есть. -

-

- У каждого подхода есть свои преимущества; правильный подход к - использованию будет зависеть от того, какие изменения - устройств могут произойти. Если вы ожидаете, что физический - путь к устройству (порты и/или слоты, в который оно - подключено), изменится, например, потому, что вы планируете - переместить диск в другой порт IDE или другой разъем USB, то - вы должны использовать режим «by-id». С другой - стороны, если вы ожидаете, что идентификация устройства - изменится, например, потому, что оно может выйти из строя, и - вы замените его другим устройством с теми же характеристиками - и подключите к тем же разъемам, тогда вы должны использовать - режим «by-path». -

-

- Если с вашим устройством возможен любой из вариантов, - выберите тот, который по вашему мнению случается чаще. -

-
-

- Важно -

-

- Внешние устройства (например, привод компакт-дисков, - подключенный через USB) не следует подключать методом - «by-path», потому что каждый раз, - когда устройство подключено в новый внешний порт, изменится - его физический путь. Все внешние устройства подвержены этой - проблеме, если при написании правил Udev применять режим - распознавания по их физическому пути. К тому же, эта - проблема не ограничивается CD и DVD-приводами. -

-
-

- Если вы хотите увидеть значения, которые будут использовать - скрипты udev, то для требуемого устройства CD-ROM найдите - соответствующий каталог в /sys - (например, это может быть /sys/block/hdd) и выполните команду, - аналогичную следующей: -

-
udevadm test /sys/block/hdd
-

- Обратите внимание на строки, содержащие вывод различных - идентификаторов *_id. Режим «by-id» будет использовать значение - ID_SERIAL если оно существует и не пустое, иначе будет - использована комбинация ID_MODEL и ID_REVISION. Режим - «by-path» будет использовать значение - ID_PATH. -

-

- Если режим по умолчанию не подходит для вашей ситуации, то в - файл /etc/udev/rules.d/83-cdrom-symlinks.rules - можно внести следующие изменения (где mode является одним из - значений «by-id» или «by-path»): -

-
sed -e 's/"write_cd_rules"/"write_cd_rules mode"/' \
-    -i /etc/udev/rules.d/83-cdrom-symlinks.rules
-

- Обратите внимание, что на данный момент, нет необходимости - создавать файлы правил или символические ссылки, так как вы - смонтировали каталог /dev хоста - в систему LFS, и мы предполагаем, что символические ссылки - уже существуют. Правила и символические ссылки будут - создаваться при первой загрузке LFS системы. -

-

- Однако, если у вас есть несколько устройств CD-ROM, то - символические ссылки, сгенерированные в это время, могут - указывать на другие устройства, и иметь различия от хост - системы, потому что устройства не будут обнаружены в - предсказуемом порядке. Назначения, созданные при первой - загрузке системы LFS, будут правильными, проблема возникнет - только в том случае, если символические ссылки в обеих - системах указывают на одно и то же устройство. Если - потребуется, проверьте (и, возможно, отредактируйте) - сгенерированные правила в файле /etc/udev/rules.d/70-persistent-cd.rules - после загрузки, чтобы убедиться, что назначенные - символические ссылки соответствуют тому, что вам нужно. -

-
-
-

- 9.4.3. Работа с дубликатами устройств -

-

- Как поясняется в Раздел 9.3, - «Взаимодействие с устройствами и модулями», порядок - отображения устройства с одинаковой функциональностью в - /dev является, как правило, - случайным. Например, если у вас есть веб камера и TV тюнер, - иногда /dev/video0 ссылается на - камеру, а /dev/video1 ссылается - на TV тюнер, а иногда, например, после перезагрузки системы, - порядок поменяется на противоположный. Для всех классов - оборудования, за исключением звуковых и сетевых карт, это - можно исправить, написав правила udev для создания постоянных - символических ссылок. Случай с сетевыми картами описан - отдельно в Раздел 9.5, «Настройка сети», - инструкции по настройке звуковых карт можно найти в - BLFS. -

-

- Для каждого из ваших устройств, которые могут иметь такую - проблему (даже если проблема не существует в текущем - дистрибутиве Linux ), найдите соответствующий каталог в - /sys/class или /sys/block. Для видеоустройств это может - быть /sys/class/video4linux/videoX. Определите - атрибуты, которые однозначно идентифицируют устройство - (обычно это идентификаторы поставщика и продукта и/или - серийные номера): -

-
udevadm info -a -p /sys/class/video4linux/video0
-

- Затем напишите правила, которые создают символические ссылки, - например: -

-
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
-

- В результате устройства /dev/video0 и /dev/video1 по-прежнему случайным образом - ссылаются на TV тюнер и веб-камеру (и, следовательно, никогда - не должны использоваться напрямую), но есть символические - ссылки /dev/tvtuner и /dev/webcam, которые всегда указывают - на правильное устройство. -

-
-
-
-
-
-
-

- 9.5. Настройка сети -

-
-
-
-
-

- 9.5.1. Создание файлов конфигурации сетевого интерфейса -

-

- Файлы в каталоге /etc/sysconfig/ обычно определяют, какие - интерфейсы запускаются и выключаются сетевым скриптом. Этот - каталог должен содержать файл для каждого настраиваемого - интерфейса, например ifconfig.xyz, где «xyz» описывает - сетевую карту. Имя интерфейса (например, eth0) обычно - является подходящим. Каждый файл содержит атрибуты одного - интерфейса, такие как его IP-адреса, маски подсетей и так - далее. Имя файла должно быть ifconfig. -

-
-

- Примечание -

-

- Если процедура именования из предыдущего раздела не - использовалась, udev будет назначать имена интерфейсов - сетевых карт на основе физических характеристик системы, - например, enp2s1. Если вы не знаете имя вашего интерфейса, - вы всегда можете запустить ip - link или ls - /sys/class/net после загрузки системы. -

-

- Имена интерфейсов зависят от реализации и конфигурации - демона udev, работающего в системе. Демон udev для LFS - (установленный в Раздел 8.74, «Udev - из Systemd-254») не запустится, пока система LFS не - будет загружена. Таким образом, имена интерфейсов в системе - LFS не всегда можно определить, запустив эти команды в - хост-дистрибутиве, даже в среде - chroot. -

-
-

- Следующая команда создает пример конфигурационного файла для - устройства eth0 со - статическим IP-адресом: -

-
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
-

- Значения, выделенные курсивом, должны быть изменены в каждом - файле, чтобы правильно настроить интерфейсы. -

-

- Если переменной ONBOOT присвоено - значение «yes», сценарий загрузки сети System V - вызовет сетевую карту (NIC) в процессе загрузки системы. Если - задано значение, отличное от «yes» сетевой - адаптер будет проигнорирован сетевым скриптом и не будет - запущен автоматически. Интерфейсы можно запускать или - останавливать вручную с помощью команд ifup и ifdown. -

-

- Переменная IFACE определяет имя - сетевого интерфейса, например, eth0. Она необходима для всех - файлов конфигураций сетевых устройств. Расширение файла - должно соответствовать этому значению. -

-

- Переменная SERVICE определяет - метод получения IP-адреса. Пакет LFS-Bootscripts имеет - модульный формат назначения IP, а создание дополнительных - файлов в каталоге /lib/services/ позволит использовать другие - методы назначения IP. Переменная обычно используется для - протокола DHCP (Dynamic Host Configuration Protocol), который - рассматривается в книге BLFS -

-

- Переменная GATEWAY должна - содержать IP-адрес шлюза по умолчанию, если таковой имеется. - Если нет, то закомментируйте эту строку. -

-

- Переменная PREFIX указывает - количество бит, используемых в подсети. Каждый сегмент - IP-адреса состоит из 8 бит. Если маска подсети равна - 255.255.255.0, то для указания номера сети используются - первые три сегмента (24 бита). Если сетевая маска - 255.255.255.240, подсеть использует первые 28 бит. Префиксы - длиннее 24 бит обычно используются DSL и кабельными - интернет-провайдерами (ISP). В этом примере (PREFIX=24) маска - сети — 255.255.255.0. Измените переменную PREFIX в соответствии c конфигурацией вашей - сети. Если этот параметр не указан, то ПРЕФИКС по умолчанию - равен 24. -

-

- Для получения дополнительной информации смотрите справочную - страницу ifup. -

-
-
-

- 9.5.2. Создание - файла /etc/resolv.conf -

-

- Системе потребуются дополнительные настройки службы доменных - имен (DNS) для преобразования имен сети Интернет в IP-адреса - и наоборот. Это достигается путем указания IP-адреса - DNS-сервера, доступного от провайдера или администратора - сети, в /etc/resolv.conf. - Создайте файл, выполнив следующие действия: -

-
cat > /etc/resolv.conf << "EOF"
-# Begin /etc/resolv.conf
-
-domain <Ваше доменное имя>
-nameserver <IP-адрес вашего основного DNS-сервера>
-nameserver <IP-адрес вашего дополнительного DNS-сервера>
-
-# End /etc/resolv.conf
-EOF
-

- Оператор domain может быть - опущен или заменён оператором search. Смотрите справочную страницу - resolv.conf для получения подробной информации. -

-

- Замените <IP-адрес вашего - основного DNS-сервера> адресом наиболее - подходящего DNS сервера. DNS серверов, может быть указано - более одной записи (дополнительные серверы необходимы для - возможности резервного переключения). Если вам нужен только - один DNS-сервер, удалите вторую строку nameserver из файла. DNS-сервер - также может выступать шлюзом в локальной сети. -

-
-

- Примечание -

-

- Адреса общедоступных DNS серверов Google - 8.8.8.8 и - 8.8.4.4. -

-
-
-
-

- 9.5.3. Настройка имени хоста -

-

- В процессе загрузки файл /etc/hostname используется для настройки - имени хоста системы. -

-

- Создайте файл /etc/hostname и - внесите имя хоста, выполнив команду: -

-
echo "<lfs>" > /etc/hostname
-

- <lfs> - замените на имя вашего компьютера. Не вносите сюда полное - доменное имя(FQDN). Эта информация помещается в файл - /etc/hosts. -

-
-
-

- 9.5.4. - Настройка файла /etc/hosts -

-

- Укажите IP-адрес, полное доменное имя (FQDN) и возможные - псевдонимы для использования в файле /etc/hosts. Синтаксис строки: -

-
IP_address myhost.example.org aliases
-

- Если компьютер не должен быть виден в Интернете (т. е. нет - зарегистрированного домена и действительного блока - назначенных IP-адресов—у большинства пользователей этого - нет), убедитесь, что IP-адрес находится в диапазоне - внутренних сетевых IP-адресов. Допустимые диапазоны: -

-
Диапазон адресов локальной сети      Стандартный префикс
-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 может быть любым числом в диапазоне 16-31. y может быть - любым числом в диапазоне 0-255. -

-

- Правильный IP адрес может быть 192.168.1.1. Правильный FQDN - для этого IP адреса может быть lfs.example.org. -

-

- Даже если сетевая карта не используется, всё равно требуется - указание полного доменного имени. Это необходимо для - правильной работы некоторых программ. -

-

- Создайте файл /etc/hosts, - выполнив команду: -

-
cat > /etc/hosts << "EOF"
-# Begin /etc/hosts
-
-127.0.0.1 localhost.localdomain 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
-

- Значения <192.168.1.1>, - <FQDN>, и - <HOSTNAME> - должны быть изменены в соответствии с предпочтениями - пользователя или требованиями сети (если имеется IP-адрес - выданный сетевым/системным администратором и машина - подключена к существующей сети). Необязательные параметры - могут быть опущены. -

-
-
-
-
-
-
-

- 9.6. Настройка и - использование загрузочных скриптов System V -

-
-
-
-
-

- 9.6.1. Как работают загрузочные скрипты System V? -

-

- В этой версии LFS используется специальное средство загрузки - под названием SysVinit, основанное на наборе уровней - выполнения (run-levels). Процедура загрузки - может сильно отличаться от одной системы к другой; и тот - факт, что в конкретном дистрибутиве Linux все работало - должным образом, не гарантирует, что оно будут работать так - же в LFS. LFS работает по-своему, но соблюдает общепринятые - стандарты. -

-

- Существует альтернативная система загрузки, которая - называется systemd. Мы не будем - обсуждать этот вариант загрузки здесь. Для получения - подробного описания, посетите - https://www.linux.com/training-tutorials/understanding-and-using-systemd/. -

-

- SysVinit (в дальнейшем именуемый «init») использует - схему уровней выполнения. Существует семь уровней выполнения, - пронумерованных от 0 до 6. (На самом деле уровней больше, но - они предназначены для особых случаев и обычно не - используются. Подробности смотрите в руководстве init(8)). Каждый из них соответствует - действиям, которые компьютер должен выполнить при запуске и - выключении. Уровень выполнения по умолчанию — 3. Ниже - приведено описание различных уровней в том виде, в каком они - реализованы в LFS: -

-
-

- 0: выключение компьютера
- 1: однопользовательский режим
- 2: зарезервировано для настройки, в остальном аналогично 3
- - 3: многопользовательский режим с поддержкой сети
- - 4: зарезервировано для настройки, в остальном аналогично 3
- - 5: то же, что и 4, обычно используется для входа в систему с графическим интерфейсом (например, 
- - gdm от GNOME или lxdm от LXDE)
- - 6: перезагрузка компьютера -

-
-
-

- Примечание -

-

- Раньше, много лет назад, уровень выполнения 2 обозначался - как "многопользовательский режим без поддержки сети", - тогда, несколько пользователей могли подключаться к системе - через последовательные порты. В сегодняшних условиях это не - имеет смысла, и мы обозначаем этот уровень как - "зарезервировано". -

-
-
-
-

- 9.6.2. - Настройка Sysvinit -

-

- Во время инициализации ядра первой запускаемой программой - (если она не переопределена в командной строке) является - init. Эта - программа считывает файл инициализации /etc/inittab. Создайте этот файл: -

-
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:S06:once:/sbin/sulogin
-s1:1:respawn:/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
-

- Пояснения по содержимому этого файла инициализации находится - на справочной странице inittab. Для LFS основной командой - является rc. В - приведенном выше файле инициализации, rc будет выполнять все - сценарии, начинающиеся с символа S в каталоге /etc/rc.d/rcS.d, за которыми следуют все - скрипты, начинающиеся с S в каталоге /etc/rc.d/rc?.d, где знак вопроса задается - значением initdefault. -

-

- Для удобства, скрипт rc считывает библиотеку - функций из /lib/lsb/init-functions. Эта библиотека - также читает необязательный файл конфигурации /etc/sysconfig/rc.site. В этот файл можно - поместить любой из параметров конфигурации системы, описанных - в последующих разделах, что позволяет объединить все - параметры системы в одном файле. -

-

- Для удобства отладки скрипт functions также записывает весь - вывод в /run/var/bootlog. - Поскольку каталог /run является - tmpfs, этот файл не сохраняется при загрузке; однако его - содержимое добавляется в файл /var/log/boot.log по окончании процесса - загрузки. -

-
-
-
-
-

- 9.6.2.1. Изменение уровней - выполнения -

-
-
-
-

- Изменить уровень выполнения можно с помощью команды - init <runlevel>, - где <runlevel> - это - целевой уровнем выполнения. Например, чтобы перезагрузить - компьютер, пользователь должен выполнить команду - init 6, - которая является псевдонимом для команды reboot. Аналогично, init - 0 является псевдонимом для команды halt. -

-

- В каталоге /etc/rc.d есть ещё - несколько каталогов, которые выглядят как rc?.d (где ? - номер уровня выполнения), - все они содержат ряд символических ссылок. Некоторые ссылки - начинаются с K, - другие начинаются с S, и все они содержат две цифры - после начальной буквы. K означает остановить (убить) - службу, а S означает запустить службу. Числа определяют - порядок выполнения сценариев от 00 до 99—чем меньше число, - тем раньше запускается скрипт. Когда init переключается на - другой уровень выполнения, соответствующие службы либо - запускаются, либо останавливаются, в зависимости от - выбранного уровня выполнения. -

-

- Реальные скрипты находятся в каталоге /etc/rc.d/init.d. Они выполняют - фактическую работу, и символические ссылки указывают на - них. Ссылки К и S указывают на один и тот же скрипт в - /etc/rc.d/init.d. Это связано - с тем, что скрипты могут вызываться с разными параметрами, - такими как start, - stop, restart, reload, и status. Когда встречается - ссылка K, соответствующий скрипт запускается с аргументом - stop. Когда - встречается S-ссылка, соответствующий скрипт запускается с - аргументом start. -

-

- Ниже приведено описание к аргументам скриптов: -

-
-
-
- start -
-
-

- Служба запущена. -

-
-
- stop -
-
-

- Служба остановлена. -

-
-
- restart -
-
-

- Служба остановлена и снова запущена. -

-
-
- reload -
-
-

- Конфигурация сервиса обновлена. Используется после - изменения файла конфигурации службы, когда перезапуск - не требуется. -

-
-
- status -
-
-

- Сообщает, запущена ли служба и с какими ИД процессов. -

-
-
-
-

- Не стесняйтесь изменять работу процесса загрузки (в конце - концов, это ваша собственная система LFS). Приведенные - здесь файлы являются примером того, как это можно сделать. -

-
-
-
-

- 9.6.3. Загрузочные скрипты Udev -

-

- Инит-скрипт /etc/rc.d/init.d/udev запускает - udevd, который - инициализирует все устройства "холодного подключения", - которые уже были созданы ядром, и ожидает выполнения всех - правил. Скрипт также отключает обработчик uevent по умолчанию - /sbin/hotplug. Это сделано - потому, что ядру больше не нужно обращаться к внешнему - бинарному файлу. Вместо этого udevd будет прослушивать - сокет netlink на предмет событий, которые вызывает ядро. -

-

- Инит-скрипт /etc/rc.d/init.d/udev_retry - решает задачу повторного запуска событий для подсистем, - правила которых могут зависеть от файловых систем, которые не - монтируются до запуска скрипта mountfs (в частности, его - вызывают /usr и /var). Этот скрипт запускается после - скрипта mountfs, поэтому эти - правила (при повторном запуске) должны сработать во второй - раз. Он настраивается в файле /etc/sysconfig/udev_retry; любые слова в - этом файле, кроме комментариев, являются именами подсистем, - которые запускаются при повторной попытке. Чтобы найти - подсистему устройства, используйте udevadm info --attribute-walk - <device>, где <device> - это - абсолютный путь в /dev или /sys, такой как /dev/sr0 или - /sys/class/rtc. -

-

- Для получения информации о загрузке модуля ядра и udev - смотрите Раздел 9.3.2.3, «Загрузка - модуля». -

-
-
-

- 9.6.4. - Настройка системного времени -

-

- Скрипт setclock - считывает время с аппаратных часов, также известных как часы - BIOS или CMOS (Complementary Metal Oxide Semiconductor). Если - на аппаратных часах установлено время UTC (всемирное - скоординированное время), этот скрипт преобразует полученное - значение в локальное время, используя файл /etc/localtime (который сообщает программе - hwclock, в - какой временной зоне находится пользователь). Невозможно - определить, установленное на аппаратных часах время UTC или - же локальное, поэтому необходимо указать его вручную. -

-

- Скрипт setclock - запускается системой udev - при загрузке, когда ядро определяет возможности аппаратного - обеспечения. Также его можно запустить вручную с параметром - stop, чтобы сохранить системное время в аппаратные часы CMOS. -

-

- Если Вы не можете вспомнить, установлено на аппаратных часах - UTC или локальное время, запустите команду hwclock --localtime --show. - Она отобразит текущее время в соответствии с аппаратными - часами. Если оно совпадает с тем, что показывают ваши - настенные/наручные часы, значит на часах CMOS установлено - локальное время. Если вывод hwclock не совпадает с - локальным временем, скорее всего, это UTC. Проверьте это, - добавив или вычитая нужное количество часов для вашего - часового пояса ко времени, отображаемому hwclock. Например, если ваш - часовой пояс это MSK, также известный как GMT +0300, то нужно - вычесть три часа из локального времени. -

-

- Измените значение переменной UTC - ниже на 0 (ноль), - если на аппаратных часах установлено НЕ UTC. -

-

- Создайте новый файл /etc/sysconfig/clock выполнив: -

-
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
-

- Хороший совет, объясняющий, как обращаться с временем в LFS, - доступен по адресу - https://mirror.linuxfromscratch.ru/hints/downloads/files/time.txt. - Там объясняются такие вопросы, как часовые пояса, UTC и - переменная окружения TZ. -

-
-

- Примечание -

-

- Параметры CLOCKPARAMS и UTC также могут быть указаны в - файле /etc/sysconfig/rc.site. -

-
-
-
-

- 9.6.5. - Настройка консоли Linux -

-

- Эта секция описывает настройку скрипта console, который - устанавливает раскладку клавиатуры, шрифт консоли и уровень - подробности информации, выводимой ядром на консоль. Если Вы - не планируете использовать символы, не соответствующие - стандарту ASCII (например, знак копирайта, символы фунта и - евро), и собираетесь печатать только в английской раскладке, - то можете пропустить большую часть секции. Без файла - конфигурации (или эквивалентных настроек в rc.site), скрипт console не будет ничего - делать. -

-

- Скрипт console - считывает конфигурацию из файла /etc/sysconfig/console. Решите для себя, - какую раскладку клавиатуры и какой шрифт намерены - использовать. В этом также могут помочь различные HOWTO для - конкретных языков; смотрите https://tldp.org/HOWTO/HOWTO-INDEX/other-lang.html. - Если вы все еще сомневаетесь, посмотрите в каталогах - /usr/share/keymaps и - /usr/share/consolefonts - допустимые раскладки и экранные шрифты. Прочтите справочные - страницы loadkeys(1) и - setfont(8), чтобы определить - правильные аргументы для этих программ. -

-

- Файл /etc/sysconfig/console - должен содержать строки вида: ПЕРЕМЕННАЯ="значение". - Допустимы следующие переменные: -

-
-
-
- LOGLEVEL -
-
-

- Эта переменная задает уровень подробности сообщений, - посылаемых ядром на системную консоль. Значение этой - переменной передается в качестве аргумента утилите - dmesg -n. - Допустимы уровни от "1" (нет сообщений) до "8". По - умолчанию "7". -

-
-
- KEYMAP -
-
-

- Эта переменная указывает аргументы для программы - loadkeys, - обычно это имя загружаемой раскладки, например, - «it». Если эта переменная не - установлена, загрузочный скрипт не будет запускать - программу loadkeys, и будет использоваться раскладка по - умолчанию. Обратите внимание, что некоторые раскладки - имеют несколько версий с одним и тем же именем (cz и - его варианты в qwerty/ и qwertz/, es в olpc/ и qwerty/ - и trf в fgGIod/ и qwerty/). В этих случаях также - следует указать родительский каталог (например, - qwerty/es), чтобы обеспечить загрузку правильной - раскладки. -

-
-
- KEYMAP_CORRECTIONS -
-
-

- Эта (крайне редко используемая) переменная задает - аргументы для второго вызова программы loadkeys. Она - полезна, если стандартная раскладка вас не совсем - устраивает и необходимо внести небольшую корректировку. - Например, чтобы добавить символ евро в раскладку, - которая его не содержит, присвойте этой переменной - значение «euro2». -

-
-
- FONT -
-
-

- Эта переменная определяет аргументы для программы - setfont. - Обычно она включает в себя имя шрифта «-m» и имя - загружаемой таблицы символов. Например, чтобы загрузить - шрифт «lat1-16» вместе с таблицей - символов «8859-1» (подходит для США), - установите эту переменную в «lat1-16 -m - 8859-1». В режиме UTF-8 ядро использует - таблицу символов для преобразования 8-битных кодов - клавиш в UTF-8, поэтому аргумент параметра "-m" должен - быть установлен на кодировку соответствующих кодов - клавиш в раскладке. -

-
-
- UNICODE -
-
-

- Присвойте этой переменной значение «1», - «yes» или «true», чтобы - переключить консоль в режим UTF-8. Это полезно при - использовании локали, основанной на UTF-8, и не - рекомендуется в иных случаях. -

-
-
- LEGACY_CHARSET -
-
-

- Для многих раскладок клавиатуры в пакете Kbd не - существует готового Unicode-варианта. Скрипт - console - будет на лету конвертировать имеющуюся раскладку в - UTF-8, если присвоить этой переменной имя доступной - не-UTF-8 раскладки. -

-
-
-
-

- Несколько примеров: -

-
-
    -
  • -

    - Для не-Unicode настройки необходимы только переменные - KEYMAP и FONT. Например, для польских пользователей - может подойти такой вариант: -

    -
    cat > /etc/sysconfig/console << "EOF"
    -# Begin /etc/sysconfig/console
    -
    -KEYMAP="pl2"
    -FONT="lat2a-16 -m 8859-2"
    -
    -# End /etc/sysconfig/console
    -EOF
    -
  • -
  • -

    - Как упоминалось выше, иногда бывает необходимо - подкорректировать раскладку. Следующий пример добавляет - символ евро к немецкой раскладке: -

    -
    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
    -
  • -
  • -

    - Ниже приведен пример с поддержкой Unicode для - болгарского языка, где существует стандартная раскладка - UTF-8: -

    -
    cat > /etc/sysconfig/console << "EOF"
    -# Begin /etc/sysconfig/console
    -
    -UNICODE="1"
    -KEYMAP="bg_bds-utf8"
    -FONT="LatArCyrHeb-16"
    -
    -# End /etc/sysconfig/console
    -EOF
    -
  • -
  • -

    - Из-за использования 512-символьного шрифта - LatArCyrHeb-16 в предыдущем примере, яркие цвета больше - не доступны в консоли Linux, если используется - фреймбуфер. Если Вы хотите использовать яркие цвета без - фреймбуфера и можете обходиться без символов, не - относящихся к вашему языку, тогда можно использовать - специфичный для вашего языка 256-символьный шрифт, как - показано ниже: -

    -
    cat > /etc/sysconfig/console << "EOF"
    -# Begin /etc/sysconfig/console
    -
    -UNICODE="1"
    -KEYMAP="bg_bds-utf8"
    -FONT="cyr-sun16"
    -
    -# End /etc/sysconfig/console
    -EOF
    -
  • -
  • -

    - Следующий пример демонстрирует автоматическое - преобразование раскладки из ISO-8859-15 в UTF-8 и - включает "мертвые" клавиши в режиме Unicode: -

    -
    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
    -
  • -
  • -

    - Некоторые раскладки включают в себя "мертвые" клавиши - (то есть клавиши, нажатие которых само по себе не - приводит к появлению на экране символа, но которые - влияют на символ, генерируемый следующей клавишей) или - определяют слияние символов (например: «нажмите Ctrl+. A E чтобы - получить Æ» в раскладке по умолчанию). - Linux-6.4.12 правильно интерпретирует "мертвые" клавиши - и слияния, только когда исходные символы имеют 8-битные - коды. Эта особенность не влияет на раскладки для - европейских языков, поскольку в них "сливаются" два - ASCII-символа или добавляются подчеркивания к - неподчеркнутым ASCII-символам. Однако, в режиме UTF-8 - могут быть проблемы, например, для греческого языка, - когда необходимо подчеркнуть символ «alpha». - Решением в этой ситуации будет отказ от использования - UTF-8 или установка графической системы X Window, не - имеющих подобных ограничений. -

    -
  • -
  • -

    - Для китайского, японского, корейского и некоторых - других языков невозможно настроить консоль Linux так, - чтобы она отображала все необходимые символы. - Пользователи, которым требуются эти языки, должны - установить систему X Window, шрифты, покрывающие - необходимый диапазон символов, и правильный метод ввода - (например, SCIM поддерживает большое число - разнообразных языков). -

    -
  • -
-
-
-

- Примечание -

-

- Файл /etc/sysconfig/console - управляет только локализацией текстовой консоли Linux. Он - никак не влияет на настройки раскладки клавиатуры и шрифтов - в системе X Window, в сессиях SSH или на последовательном - терминале. В этих ситуациях ограничения, описанные в двух - расположенных выше абзацах, не применяются. -

-
-
-
-

- 9.6.6. Создание файлов при - загрузке -

-

- Иногда необходимо создавать файлы во время загрузки. - Например, часто требуется каталог /tmp/.ICE-unix . Это можно сделать, создав - запись в скрипте /etc/sysconfig/createfiles. Формат этого - файла описан в комментариях файла конфигурации по умолчанию. -

-
-
-

- 9.6.7. Настройка скрипта Sysklogd -

-

- Скрипт sysklogd вызывает - программу syslogd как часть - инициализации System V. Параметр -m 0 отключает периодическую - (по умолчанию - каждые 20 минут) запись временных меток в - файлы журналов, производимую syslogd. Если Вам - необходимо включить периодическую запись временных меток, - отредактируйте файл /etc/sysconfig/rc.site и присвойте - переменной SYSKLOGD_PARMS требуемое значение. Например, чтобы - сбросить все параметры, присвойте переменной пустое значение: -

-
SYSKLOGD_PARMS=
-

- Дополнительные параметры смотрите в man syslogd. -

-
-
-

- 9.6.8. Файл - rc.site -

-

- Необязательный файл /etc/sysconfig/rc.site содержит настройки, - автоматически применяемые всеми загрузочными скриптами. Этот - файл может содержать парамеры, обычно указываемые в файлах - hostname, console и clock из каталога /etc/sysconfig/. Если значение одной и той - же переменной присваивается, как в одном из этих файлов, так - и в rc.site, приоритет имеет - значение из специализированного файла. -

-

- rc.site также содержит - параметры, которые могут настраивать другие аспекты процесса - загрузки. Установка переменной IPROMPT позволит выборочно - запускать загрузочные скрипты. Другие параметры описаны в - комментариях к файлу. Версия файла по умолчанию выглядит - следующим образом: -

-
# 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@lists.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 set 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=
-
-
-
-
-
-
-

- 9.6.8.1. Настройка скриптов - загрузки и завершения работы -

-
-
-
-

- Загрузочные скрипты LFS загружают и завершают работу - системы довольно эффективно, но есть несколько настроек, - которые вы можете внести в файл rc.site, чтобы еще больше - повысить скорость и настроить сообщения в соответствии с - вашими предпочтениями. Чтобы сделать это, измените - настройки в приведенном выше файле /etc/sysconfig/rc.site. -

-
-
    -
  • -

    - Во время работы загрузочного скрипта udev происходит вызов udev settle, для - завершения которого требуется некоторое время. Это - время может и не потребоваться в зависимости от - конфигурации устройств в системе. Если у вас имеются - только простые разделы и одна сетевая карта, процессу - загрузки, вероятно, не нужно будет ждать завершения - работы этой команды. Чтобы пропустить её, установите - переменную OMIT_UDEV_SETTLE=y. -

    -
  • -
  • -

    - Скрипт загрузки udev_retry также по умолчанию - запускает udev - settle. Команда необходима только - тогда, когда каталог /var смонтирован в отдельный - раздел. Это связано с тем, что часам нужен доступ к - файлу /var/lib/hwclock/adjtime. Для - других настроек также может потребоваться дождаться - завершения udev, но в большинстве случаев в этом нет - необходимости. Пропустите команду, установив - переменную OMIT_UDEV_RETRY_SETTLE=y. -

    -
  • -
  • -

    - По умолчанию проверка файловой системы выполняется в - "тихом" режиме. Это может показаться задержкой во - время процесса загрузки. Чтобы включить вывод - fsck, - установите переменную VERBOSE_FSCK=y. -

    -
  • -
  • -

    - При перезагрузке вы, возможно, захотите полностью - пропустить проверку файловой системы, fsck. Чтобы сделать - это, либо создайте файл /fastboot, либо перезагрузите - систему командой /sbin/shutdown -f -r - now. С другой стороны, вы можете - принудительно проверить все файловые системы, создав - /forcefsck или запустив - shutdown с - параметром -F - вместо -f. -

    -

    - Установка переменной FASTBOOT=y отключит fsck во время - процесса загрузки до тех пор, пока она не будет - удалена. Это не рекомендуется делать на постоянной - основе. -

    -
  • -
  • -

    - Обычно все файлы в каталоге /tmp удаляются во время загрузки. В - зависимости от количества имеющихся файлов или - каталогов это может привести к заметной задержке в - процессе загрузки. Чтобы пропустить удаление этих - файлов, установите переменную SKIPTMPCLEAN=y. -

    -
  • -
  • -

    - Во время завершения работы, init отправляет - сигнал TERM каждой запущенной программе (например, - agetty), ожидает установленное время (по умолчанию 3 - секунды), затем посылает каждому процессу сигнал - завершения(KILL) и снова ждёт. Этот процесс - повторяется в сценарии sendsignals для - любых процессов, которые не завершаются их - собственными скриптами. Задержка для init может быть - установлена путем передачи параметра. Например, чтобы - устранить задержку в init, передайте - параметр -t0 при выключении или перезагрузке - (например, /sbin/shutdown -t0 -r - now). Задержку для скрипта - sendsignals можно - пропустить, установив параметр KILLDELAY=0. -

    -
  • -
-
-
-
-
-
-
-
-
-

- 9.7. Файлы запуска оболочки - Bash -

-
-
-
-

- Программа оболочки /bin/bash (далее именуемая - как «оболочка») использует начальный набор - файлов, чтобы помочь создать среду для запуска. Каждый файл - имеет определенное назначение и может по-разному влиять на вход - в систему и интерактивное окружение. Файлы в каталоге - /etc содержат глобальные - настройки. Если в домашнем каталоге существуют эквивалентные - файлы, они могут переопределить глобальные настройки. -

-

- Интерактивная оболочка входа запускается после успешного входа - с использованием /bin/login, прочитав файл - /etc/passwd. Интерактивная - оболочка без входа в систему запускается из командной строки - (например, [prompt]$/bin/bash). Неинтерактивная - оболочка обычно присутствует когда выполняется скрипт оболочки. - Он неинтерактивен, поскольку обрабатывает скрипт и не ожидает - ввода пользователем между командами. -

-

- Для получения дополнительной информации смотрите разделы - Загрузочные файлы Bash и - Интерактивные оболочки - главы Возможности Bash - на информационных страницах Bash (info bash). -

-

- Файлы /etc/profile и ~/.bash_profile считываются при вызове - оболочки как интерактивной оболочки входа в систему. -

-

- По умолчанию в файле /etc/profile - задаются некоторые переменные окружения, необходимые для - поддержки вашего языка. Правильная их установка влияет на: -

-
-
    -
  • -

    - Выходные данные программ переводятся на ваш родной язык -

    -
  • -
  • -

    - Правильную интерпретацию символов в буквы, цифры и другие - классы. Это необходимо для того, чтобы bash правильно принимал - символы, отличные от ASCII, в командной строке с - неанглийской локалью -

    -
  • -
  • -

    - Правильный порядок сортировки по алфавиту для страны -

    -
  • -
  • -

    - Подходящий формат бумаги по умолчанию -

    -
  • -
  • -

    - Правильное форматирование денежных значений, значений - времени и дат -

    -
  • -
-
-

- Замените <ll> - двухбуквенным кодом нужного языка (например, «en») и <CC> двухбуквенным кодом - соответствующей страны (например, «GB»). <charmap> следует - заменить на таблицу символов для выбранной вами локали. Также - могут присутствовать необязательные модификаторы, такие как - «@euro». -

-

- Список всех языковых стандартов, поддерживаемых Glibc, можно - получить, выполнив следующую команду: -

-
locale -a
-

- Таблицы символов могут иметь несколько синонимов, например, - «ISO-8859-1» также упоминается как - «iso8859-1» и «iso88591». Некоторые - приложения не могут корректно обрабатывать различные синонимы - (например, требуют чтобы «UTF-8» записывалось как «UTF-8», а не - «utf8»), - поэтому безопаснее всего в большинстве случаев выбирать - каноническое имя для конкретной локали. Чтобы определить - каноническое имя, запустите следующую команду, где <locale name> - это - вывод, выдаваемый командой locale - -a для желаемой локали (в нашем примере - «en_GB.iso88591»). -

-
LC_ALL=<locale name> locale charmap
-

- Для локали «en_GB.iso88591» указанная выше команда - напечатает: -

-
ISO-8859-1
-

- Окончательная настройка локали будет выглядеть так: - «en_GB.ISO-8859-1». Важно, чтобы локаль, - найденная с помощью приведенной выше методики, была проверена - перед её добавлением в файлы запуска Bash: -

-
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
-

- Приведенные выше команды должны вывести название языка, - кодировку символов, используемую в локали, местную валюту и - телефонный код страны. Если какая-либо из команд завершается с - сообщением об ошибке, похожим на указанное ниже, это означает, - что ваша локаль либо не была установлена в Раздел 8.5, «Glibc-2.38», либо не - поддерживается стандартной установкой Glibc -

-
locale: Cannot set LC_* to default locale: No such file or directory
-

- Если это произойдет, вам следует либо установить желаемую - локаль с помощью команды localedef, либо рассмотреть - возможность выбора другой локали. Дальнейшие инструкции не - предполагают таких сообщений об ошибках от Glibc. -

-

- Другие пакеты также могут работать некорректно (но не - обязательно будут отображать какие-либо сообщения об ошибках), - если название локали не соответствует их ожиданиям. В таких - случаях может оказаться полезной информация о том, как другие - дистрибутивы Linux поддерживают вашу локаль. -

-

- Как только будут определены правильные настройки локали, - создайте файл /etc/profile: -

-
cat > /etc/profile << "EOF"
-# Begin /etc/profile
-
-export LANG=<ll>_<CC>.<charmap><@modifiers>
-
-# End /etc/profile
-EOF
-

- Локаль «C» (используемая по умолчанию) и - «en_US.utf8» (рекомендуемая для - англоязычных пользователей в Соединенных Штатах) это разные - локали. «C» использует 7-битный набор символов - US-ASCII и обрабатывает байты с установленным старшим битом как - недопустимые символы. Вот почему, например, команда - ls заменяет их - вопросительными знаками в этой локали. Кроме того, попытка - отправить письмо с такими символами из Mutt или Pine приводит к - отправке сообщений не соответствующих RFC (кодировка в - исходящей почте указана как «unknown 8-bit»). Таким образом, вы можете - использовать локаль «C», только в том случае, если уверены, - что вам никогда не понадобятся 8-битные символы. -

-

- Некоторые программы не поддерживают локали на основе UTF-8. - Ведется работа по документированию и, по возможности, - устранению таких проблем. Некоторые подробности смотрите по - ссылке: - https://mirror.linuxfromscratch.ru/blfs/view/12.0/introduction/locale-issues.html. -

-
-
-
-
-
-

- 9.8. Создание файла - /etc/inputrc -

-
-
-
-

- Файл inputrc это конфигурационный - файл библиотеки readline, который предоставляет возможности - редактирования, когда пользователь вводит строку с терминала. - Он работает путем преобразования ввода с клавиатуры в - определенные действия. Readline используется bash и - большинством других оболочек, а также многими другими - приложениями. -

-

- Большинство людей не нуждаются в специальных настройках, - поэтому приведенная ниже команда создает глобальный - /etc/inputrc, используемый всеми, - кто входит в систему. Если позже вы решите, что вам нужно - переопределить значения по умолчанию для одного из - пользователей, вы можете создать файл .inputrc в домашнем каталоге пользователя и - указать в нём измененные настройки. -

-

- Дополнительные сведения о редактировании файла inputrc см. в разделе info bash в секции - Readline Init File. - Также хорошим источником информации является info readline. -

-

- Ниже приведен общий глобальный inputrc с комментариями, объясняющими, что - делают различные параметры. Обратите внимание, что комментарии - не могут находиться в той же строке, что и команды. Создайте - файл с помощью следующей команды: -

-
cat > /etc/inputrc << "EOF"
-# Begin /etc/inputrc
-# Modified by Chris Lynn <roryo@roryo.dynup.net>
-
-# Разрешить перенос приглашения оболочки на следующую строку
-set horizontal-scroll-mode Off
-
-# Разрешить 8-битный ввод
-set meta-flag On
-set input-meta On
-
-# Отключить обрезание восьмого бита в вводимых символах
-set convert-meta Off
-
-# Выводить на экран все восемь бит
-set output-meta On
-
-# Звуковой сигнал - none, visible или audible, соответственно никакого, видимый или слышимый
-set bell-style none
-
-# Нижеследующие команды привязывают escape-последовательности (первый аргумент)
-# к специфичным для Readline функциям (второй аргумент)
-"\eOd": backward-word
-"\eOc": forward-word
-
-# для консоли linux
-"\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
-
-# для xterm
-"\eOH": beginning-of-line
-"\eOF": end-of-line
-
-# для Konsole
-"\e[H": beginning-of-line
-"\e[F": end-of-line
-
-# End /etc/inputrc
-EOF
-
-
-
-
-
-

- 9.9. Создание файла - /etc/shells -

-
-
-
-

- Файл shells содержит список - оболочек входа в систему. Приложения используют этот файл для - определения корректности оболочки. Для каждой оболочки должна - присутствовать одна строка, состоящая из пути к файлу оболочки - относительно корня структуры каталогов (/). -

-

- Например, chsh - обращается к этому файлу, чтобы определить, может ли - непривилегированный пользователь изменить оболочку входа для - своей учетной записи. Если имя команды не указано в списке, - пользователю будет отказано в возможности изменять оболочки. -

-

- Это обязательное условие для таких приложений, как GDM, которые не заполняют список - пользователей, если ему не удаётся найти /etc/shells, или демонов FTP, которые - традиционно запрещают доступ пользователям с оболочками, не - включенными в этот файл. -

-
cat > /etc/shells << "EOF"
-# Begin /etc/shells
-
-/bin/sh
-/bin/bash
-
-# End /etc/shells
-EOF
-
-
-
-
-
-
-

- Глава 10. Делаем систему LFS - загрузочной -

-
-
-
-
-
-
-
-

- 10.1. Введение -

-
-
-
-

- Пришло время сделать систему LFS загрузочной. В этой главе - обсуждается создание файла /etc/fstab, сборка ядра для новой системы и - установка загрузчика GRUB, чтобы система LFS могла быть выбрана - для загрузки при запуске. -

-
-
-
-
-
-

- 10.2. Создание файла - /etc/fstab -

-
-
-
-

- Файл /etc/fstab используется - некоторыми программами для определения того, какие файловые - системы должны монтироваться по умолчанию, в каком порядке и - какие из них должны быть проверены (на наличие ошибок - целостности) перед монтированием. Создайте новую таблицу - файловых систем следующим образом: -

-
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
-tmpfs          /dev/shm     tmpfs    nosuid,nodev        0     0
-cgroup2        /sys/fs/cgroup cgroup2  nosuid,noexec,nodev 0     0
-
-# End /etc/fstab
-EOF
-

- Замените <xxx>, - <yyy>, и - <fff> - подходящими для системы значениями, например, sda2, sda5, и - ext4. Для получения подробной - информации о параметрах в этом файле, смотрите man 5 fstab. -

-

- Файловым системам операционных систем MS DOS и Windows (таким - как vfat, ntfs, smbfs, cifs, iso9660, udf) требуется - специальная опция utf8, чтобы не-ASCII символы в именах файлов - интерпретировались правильно. Для локалей, отличных от UTF-8, - значение iocharset должно быть - таким же, как набор символов локали и настроено так, чтобы ядро - понимало его. Это будет работать, если соответствующее - определение набора символов (находится в разделе File systems - -> Native Language Support при настройке ядра) было - скомпилировано в ядро или собрано как модуль. Однако, если - набор символов локали — UTF-8, параметр iocharset=utf8 сделает файловую систему - чувствительной к регистру. Чтобы исправить это, используйте - специальную опцию utf8 вместо - iocharset=utf8 для локалей UTF-8. - Параметр «codepage» также необходим для файловых - систем vfat и smbfs. Он должен быть установлен на номер кодовой - страницы, используемый в MS-DOS в вашей стране. Например, для - монтирования флешек пользователь локали ru_RU.KOI8-R должен - установить следующие значения в группе параметров строки - монтирования в /etc/fstab: -

-
noauto,user,quiet,showexec,codepage=866,iocharset=koi8r
-

- Соответствующий фрагмент параметров для пользователей - ru_RU.UTF-8 выглядит следующим образом: -

-
noauto,user,quiet,showexec,codepage=866,utf8
-

- Обратите внимание, что iocharset - используется по умолчанию для iso8859-1 (которая сохраняет файловую систему - нечувствительной к регистру), а параметр utf8 указывает ядру, что нужно преобразовать - имена файлов с использованием UTF-8, чтобы их можно было - интерпретировать в локали UTF-8. -

-

- Также возможно указать значения кодовой страницы по умолчанию и - iocharset для некоторых файловых систем во время настройки - ядра. Соответствующие параметры называются «Default NLS Option» - (CONFIG_NLS_DEFAULT), «Default Remote NLS - Option» (CONFIG_SMB_NLS_DEFAULT), «Default codepage for - FAT» (CONFIG_FAT_DEFAULT_CODEPAGE) и «Default iocharset for - FAT» (CONFIG_FAT_DEFAULT_IOCHARSET). Нет возможности - указать эти параметры для файловой системы ntfs во время - компиляции ядра. -

-

- Для некоторых типов жестких дисков можно сделать файловую - систему ext3 более устойчивой к сбоям питания. Чтобы сделать - это, добавьте параметр barrier=1 к - соответствующей записи в /etc/fstab. Чтобы проверить, поддерживает ли - диск эту опцию, запустите - hdparm на соответствуюшем разделе. Например, если: -

-
hdparm -I /dev/sda | grep NCQ
-

- возвращает непустой вывод, опция поддерживается. -

-

- Примечание: разделы на основе управления логическими томами - (LVM) не могут использовать параметр barrier. -

-
-
-
-
-
-

- 10.3. Linux-6.4.12 -

-
-
-
-
-

- Этот пакет содержит ядро Linux. -

-
-
-
- Приблизительное время - сборки: 1.5 - 130.0 SBU - (обычно около 12 SBU) -
-
- Требуемое дисковое - пространство: 1200 - 8800 - MB (обычно около 1700 MB) -
-
-
-
-
-

- 10.3.1. Установка ядра -

-

- Сборка ядра состоит из нескольких этапов—настройка, - компиляция и установка. Ознакомьтесь с файлом README в дереве исходных текстов, чтобы - узнать об альтернативных способах настройки ядра. -

-
-

- Важно -

-

- Сборка ядра Linux в первый раз — одна из самых сложных - задач в LFS. Правильный выбор параметров зависит от - конкретного оборудования для целевой системы и ваших - потребностей. Для ядра доступно почти 12 000 элементов - конфигурации, хотя для большинства компьютеров требуется - только около трети из них. Редакторы LFS рекомендуют - пользователям, не знакомым с этим процессом, внимательно - следовать описанным ниже процедурам. Главная цель сейчас - состоит в том, чтобы довести первоначальную систему до - состояния, когда вы сможете войти в систему из командной - строки при последующей перезагрузке в Раздел 11.3, - «Перезагрузка системы». Вопросы оптимизация и - кастомизация второстепенны. -

-

- Для получения общей информации о конфигурации ядра смотрите - - https://mirror.linuxfromscratch.ru/hints/downloads/files/kernel-configuration.txt. - Дополнительную информацию о настройке и сборке ядра можно - найти по адресу https://anduin.linuxfromscratch.org/LFS/kernel-nutshell/. - Эти ссылки немного устарели, но все же дают разумное - представление о процессе. -

-

- Если ничего не помогает, вы можете обратиться за помощью в - список рассылки lfs-support. - Обратите внимание, что подписка необходима для того, чтобы - рассылка не содержала спама. -

-
-

- Подготовьте пакет к компиляции, выполнив следующую команду: -

-
make mrproper
-

- Выполнение этой команды гарантирует, что дерево исходников - будет абсолютно чистым. Разработчики ядра рекомендуют - запускать эту команду перед каждой компиляцией. Не следует - полагаться на то, что дерево исходных текстов ядра будет - чистым после распаковки. -

-

- Существует несколько способов настройки параметров ядра. - Обычно это делается с помощью псевдографического интерфейса, - например так: -

-
make menuconfig
-
-

- Значения необязательных переменных окружения - make: -

-
-
- LANG=<переменная_LANG_хоста> - LC_ALL= -
-
-

- Устанавливает значение локали на то, которое - используется на хосте. Это может понадобиться для - правильного отображения интерфейса menuconfig с помощью - ncurses в текстовой консоли Linux с UTF-8. -

-

- Если это необходимо, обязательно замените значение - <переменной_LANG> - на значение переменной $LANG - вашего хоста. В качестве альтернативы вы можете - использовать значения переменных $LC_ALL или $LC_CTYPE. -

-
-
- make - menuconfig -
-
-

- Эта команда запускает интерфейс на основе ncurses. Для - использования других (графических) интерфейсов, - выполните make - help. -

-
-
-
-
-

- Примечание -

-

- Хорошей отправной точкой для настройки ядра, может стать - запуск команды make - defconfig. В результате её выполнения будет - создана базовая конфигурация с учётом архитектуры системы. -

-

- Обязательно включите/отключите/настройте следующие - параметры, иначе система может работать некорректно или - вообще не загружаться: -

-
General setup --->
-  [ ] Compile the kernel with warnings as errors                        [WERROR]
-  CPU/Task time and stats accounting --->
-    [*] Pressure stall information tracking                                [PSI]
-    [ ]   Require boot parameter to enable pressure stall information tracking
-                                                     ...  [PSI_DEFAULT_DISABLED]
-  < > Enable kernel headers through /sys/kernel/kheaders.tar.xz      [IKHEADERS]
-  [*] Control Group support --->                                       [CGROUPS]
-    [*] Memory controller                                                [MEMCG]
-  [ ] Configure standard kernel features (expert users) --->            [EXPERT]
-
-Processor type and features --->
-  [*] Build a relocatable kernel                                   [RELOCATABLE]
-  [*]   Randomize the address of the kernel image (KASLR)       [RANDOMIZE_BASE]
-
-General architecture-dependent options --->
-  [*] Stack Protector buffer overflow detection                 [STACKPROTECTOR]
-  [*]   Strong Stack Protector                           [STACKPROTECTOR_STRONG]
-
-Device Drivers --->
-  Generic Driver Options --->
-    [ ] Support for uevent helper                                [UEVENT_HELPER]
-    [*] Maintain a devtmpfs filesystem to mount at /dev               [DEVTMPFS]
-    [*]   Automount devtmpfs at /dev, after the kernel mounted the rootfs
-                                                           ...  [DEVTMPFS_MOUNT]
-  Graphics support --->
-    Frame buffer Devices --->
-      <*> Support for frame buffer devices --->                             [FB]
-    Console display driver support --->
-      [*] Framebuffer Console support                      [FRAMEBUFFER_CONSOLE]
-

- Включите некоторые дополнительные функции, если вы - собираете 64-битную систему. Если вы используете - menuconfig, включите их в следующем порядке: сначала - CONFIG_PCI_MSI, - затем CONFIG_IRQ_REMAP, и, наконец, - CONFIG_X86_X2APIC, - потому что параметр отображается только после выбора его - зависимости. -

-
Processor type and features --->
-  [*] Support x2apic                                                [X86_X2APIC]
-
-Device Drivers --->
-  [*] PCI support --->                                                     [PCI]
-    [*] Message Signaled Interrupts (MSI and MSI-X)                    [PCI_MSI]
-  [*] IOMMU Hardware Support --->                                [IOMMU_SUPPORT]
-    [*] Support for Interrupt Remapping                              [IRQ_REMAP]
-

- Если вы создаете 32-разрядную систему, работающую на - оборудовании с объемом оперативной памяти более 4 ГБ, - измените конфигурацию таким образом, чтобы ядро могло - использовать до 64 ГБ оперативной памяти: -

-
Processor type and features --->
-  High Memory Support --->
-    (X) 64GB                                                        [HIGHMEM64G]
-

- Если раздел для системы LFS находится на NVME SSD (то есть - узлом устройства для раздела является /dev/nvme*, а не /dev/sd*), включите параметр NVME - support, иначе система LFS не будет загружается: -

-
Device Drivers --->
-  NVME Support --->
-    <*> NVM Express block device                                  [BLK_DEV_NVME]
-
-

- Есть несколько других параметров, которые могут понадобиться - в зависимости от особенностей системы. Для получения списка - необходимых опций для пакетов BLFS смотрите - Список опций ядра BLFS. -

-
-

- Примечание -

-

- Если ваша хост поддерживает UEFI и вы хотите загрузить LFS - с помощью него, вам необходимо настроить некоторые - параметры ядра, следуя инструкции - на странице BLFS, даже если - вы будете использовать загрузчик UEFI из основного - дистрибутива. -

-
-
-

- Пояснения для выбранных выше параметров - ядра: -

-
-
- Randomize - the address of the kernel image - (KASLR) -
-
-

- Включите ASLR для образа ядра, чтобы уменьшить - вероятность некоторых атак, основанных на фиксированных - адресах конфиденциальных данных или кода в ядре. -

-
-
- Compile - the kernel with warnings as errors -
-
-

- Включение этого параметра может привести к сбою сборки, - если компилятор и/или конфигурация отличается от - конфигурации ядра разработчиков. -

-
-
- Enable - kernel headers through - /sys/kernel/kheaders.tar.xz -
-
-

- Для сборки ядра с этим параметром необходим пакет - cpio. - cpio не - устанавливается в LFS. -

-
-
- Configure - standard kernel features (expert - users) -
-
-

- Эта опция приведет к отображению некоторых параметров в - интерфейсе конфигурации, но изменение этих параметров - может быть опасным. Не используйте её, если вы не - знаете, что делаете. -

-
-
- Strong - Stack Protector -
-
-

- Включите SSP для ядра. Мы включили его для всего - пользовательского пространства с помощью --enable-default-ssp, - настроив GCC, но ядро не использует настройки GCC по - умолчанию для SSP. Мы включаем это явно здесь. -

-
-
- Support - for uevent helper -
-
-

- Включение этого параметра может вызвать сбои при - управление устройствами через Udev. -

-
-
- Maintain a - devtmpfs -
-
-

- С помощью этого параметра узлы устройств создаются - автоматически и заполняются самим ядром, даже без - запуска Udev. Udev будет работать поверх, управляя - разрешениями и добавляя необходимые символические - ссылки. Этот элемент конфигурации необходим всем - пользователям Udev. -

-
-
- Automount - devtmpfs at /dev -
-
-

- Этот параметр позволит смонтировать представление ядра - устройств в /dev при переключении на корневую файловую - систему непосредственно перед запуском init. -

-
-
- Framebuffer Console - support -
-
-

- Это параметр необходим для отображения консоли Linux на - устройстве с фреймбуфером. Чтобы ядро могло печатать - отладочные сообщения на ранней стадии загрузки, его не - следует собирать как модуль (если только не будет - использоваться initramfs). И, если CONFIG_DRM (Direct Rendering Manager - - Диспетчер прямого рендеринга) включен, скорее всего, - также должен быть включен CONFIG_DRM_FBDEV_EMULATION (включить - устаревшую поддержку fbdev для вашего modesetting - драйвера). -

-
-
- Support - x2apic -
-
-

- Поддержка запуска 64-разрядного контроллера прерываний - для x86 процессоров в режиме x2APIC. x2APIC может быть - включен в BIOS на системах x86 и у ядра собранного без - этой опции будет kernel panic при загрузке. Эта опция - не окажет никакого эффекта, но и не причиняет вреда, - если x2APIC отключен в BIOS. -

-
-
-
-

- В качестве альтернативы, в некоторых ситуациях может быть - уместно использование команды make oldconfig. Смотрите - файл README для получения - дополнительной информации. -

-

- По желанию, вы можете пропустить настройку ядра, скопировав - конфигурационный файл ядра .config, из хост системы(если он доступен) - в каталог куда было распаковано ядро linux-6.4.12. Однако, мы не рекомендуем - этот вариант. Намного лучше изучить все параметры меню и - создать конфигурацию ядра с нуля. -

-

- Скомпилируйте образ ядра и модули: -

-
make
-

- При использовании модулей, могут потребоваться файлы - конфигурации, которые расположены в каталоге /etc/modprobe.d. Информация о модулях и - конфигурации ядра находится в Раздел 9.3, - «Взаимодействие с устройствами и модулями» и в - документации к ядру linux-6.4.12/Documentation. Кроме этого, - стоит ознакомиться с руководством modprobe.d(5). -

-

- Если поддержка модулей не была отключена в параметрах ядра, - установите модули с помощью: -

-
make modules_install
-

- После окончания компиляции, необходимо выполнить еще - несколько шагов для завершения установки ядра. Некоторые - файлы должны быть скопированы в каталог /boot. -

-
-

- Внимание -

-

- Если вы решили использовать отдельный /boot раздел для системы LFS (возможно, - общий раздел /boot с - хост-дистрибутивом), скопированные ниже файлы должны быть - помещены туда. Самый простой способ сделать это — сначала - создать запись для /boot в - /etc/fstab (подробности - читайте в предыдущем разделе), затем выполните следующую - команду от имени пользователя root в среде chroot: -

-
mount /boot
-

- Путь к узлу устройства в команде опущен, поскольку - mount может - прочитать его из /etc/fstab. -

-
-

- Путь к образу ядра может различаться в зависимости от - используемой платформы. Имя файла, может быть произвольным, - но начинаться должно с vmlinuz для обеспечения - совместимости с автоматической настройкой процесса загрузки, - описанного в следующем разделе. Следующая команда - предполагает архитектуру x86: -

-
cp -iv arch/x86/boot/bzImage /boot/vmlinuz-6.4.12-lfs-12.0
-

- System.map - это символьный - файл для ядра. Он содержит точки входа каждой функции в API - ядра, а также адреса структур данных для запущенного ядро. Он - используется в качестве ресурса при исследовании проблем с - ядром. Выполните следующую команду для установки файла: -

-
cp -iv System.map /boot/System.map-6.4.12
-

- Файл конфигурации ядра .config - создается на шаге make - menuconfig и содержит все параметры ядра, - которое было скомпилировано только что. Рекомендуется - сохранить этот файл на будущее: -

-
cp -iv .config /boot/config-6.4.12
-

- Установите документацию ядра: -

-
cp -r Documentation -T /usr/share/doc/linux-6.4.12
-

- Важно отметить, что файлы в каталоге исходных кодов ядра не - принадлежат пользователю root. Всякий раз, когда пакет - распаковывается от пользователя root (как это и выполнялось внутри - среды chroot), файлы имеют те идентификаторы пользователя и - группы, которые были присвоены при распаковке. Обычно это не - вызывает проблем для других устанавливаемых пакетов, так как - каталог с исходными кодами удаляется после установки пакета. - Однако исходный код ядра Linux часто сохраняется в течение - длительного времени. Из-за этого существует вероятность того, - что идентификатор пользователя, используемый при распаковке, - будет назначен другому пользователю. В таком случае, этот - пользователь будет иметь доступ на запись в этот каталог. -

-
-

- Примечание -

-

- В ряде случаев требуется обновить конфигурацию ядра для - пакетов, которые будут установлены позже в BLFS. В отличии - от других пакетов, нет необходимости удалять дерево - исходного кода ядра после установки только что собранного - ядра. -

-

- Если вы планируете оставить каталог с исходным кодом ядра, - выполните команду chown -R - 0:0 в каталоге linux-6.4.12, чтобы все файлы - принадлежали пользователю root. -

-
-
-

- Предупреждение -

-

- В некоторой документации по ядру рекомендуется создать - символическую ссылку /usr/src/linux указывающую на каталог с - исходниками ядра. Эта рекомендация относится к ядрам до - версии 2.6 и не - должна выполняться в системе LFS, так как это - может вызвать проблемы с пакетами, которые вы, возможно, - захотите собрать, когда ваша базовая система LFS будет - готова. -

-
-
-

- Предупреждение -

-

- Заголовочные файлы в системном каталоге include (/usr/include) всегда используются те, которые - применялись при компиляции Glibc, то есть подготовленные - заголовочные файлы, установленные в Раздел 5.4, - «Заголовочные файлы Linux-6.4.12 API». Поэтому их - никогда не следует - заменять на чистые заголовочные файлы ядра или любые другие - подготовленные заголовочные файлы. -

-
-
-
-

- 10.3.2. - Настройка порядка загрузки модулей Linux -

-

- В большинстве случаев модули Linux загружаются автоматически, - но иногда требуется определенный порядок. Программа, которая - загружает модули, modprobe или insmod, использует файл - /etc/modprobe.d/usb.conf как - раз для этой цели. Этот файл должен быть заполнен таким - образом, что если USB-драйверы (ehci_hcd, ohci_hcd и - uhci_hcd) были собраны в виде модулей, то они будут загружены - в правильном порядке; ehci_hcd должен быть загружен до - ohci_hcd и uhci_hcd для того, чтобы избежать предупреждений - во время загрузки. -

-

- Создайте новый файл /etc/modprobe.d/usb.conf, выполнив - следующую команду: -

-
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
-
-
-

- 10.3.3. - Содержимое пакета Linux -

-
-
-
- Установленные файлы: - config-6.4.12, - vmlinuz-6.4.12-lfs-12.0, и System.map-6.4.12 -
-
- Созданные каталоги: - /lib/modules, - /usr/share/doc/linux-6.4.12 -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - - - - - - - - - -
-

- config-6.4.12 -

-
-

- Содержит в себе все параметры конфигурации ядра -

-
-

- vmlinuz-6.4.12-lfs-12.0 -

-
-

- Ядро системы Linux. При включении компьютера ядро — - это первая загружаемая часть операционной системы. - Оно обнаруживает и инициализирует все компоненты - аппаратного обеспечения компьютера, делает их - доступными в виде дерева каталогов с файлами для - доступа к ним программ и превращает один процессор - в мультизадачную машину, способную выполнять - множество программ как будто одновременно. -

-
-

- System.map-6.4.12 -

-
-

- Список адресов и символов; файл содержит точки - входа и адреса всех функций и структур данных в - ядре -

-
-
-
-
-
-
-
-
-

- 10.4. Использование GRUB для - настройки процесса загрузки -

-
-
-
-
-

- Примечание -

-

- Если ваша система поддерживает UEFI и вы хотите загрузить LFS - с помощью UEFI, вам следует пропустить инструкции на этой - странице, но все равно изучить синтаксис grub.cfg и способ указания раздела в файле - с этой страницы, а также настроить GRUB с поддержкой UEFI - используя инструкции, приведенные на - странице BLFS. -

-
-
-

- 10.4.1. Введение -

-
-

- Предупреждение -

-

- При неправильной настройке GRUB ваша система перестанет - загружаться без вспомогательно загрузочного CD-ROM или - USB-накопителя. Для загрузки системы LFS этот раздел - необязателен. Вы можете просто использовать существующий - загрузчик, например Grub-Legacy, GRUB2 или LILO. -

-
-

- Убедитесь, что аварийный загрузочный диск готов к - «спасению» компьютера, если он - перестанет загружаться. Если у вас еще нет загрузочного - диска, вы можете создать его. Для этого необходимо перейти в - раздел BLFS и установить программу xorriso из пакета - libisoburn. -

-
cd /tmp
-grub-mkrescue --output=grub-img.iso
-xorriso -as cdrecord -v dev=/dev/cdrw blank=as_needed grub-img.iso
-
-
-

- 10.4.2. Соглашения об именовании GRUB -

-

- GRUB использует собственную структуру именования дисков и - разделов в виде (hdn,m), где n — номер жесткого диска, а - m — номер раздела. - Номера жестких дисков начинаются с нуля, а номера разделов - начинаются с единицы для обычных разделов (с пяти для - расширенных разделов). Обратите внимание, что это отличается - от более ранних версий, где оба номера начинались с нуля. - Например, раздел sda1 это - (hd0,1) в GRUB, а - sdb3 (hd1,3). В отличие от Linux, GRUB - не считает приводы CD-ROM жесткими дисками. Например, если - используемый CD-привода определяется как hdb, а второй жесткий диск как hdc, этот второй жесткий диск все равно - будет (hd1). -

-
-
-

- 10.4.3. Настройка -

-

- GRUB записывает данные на первый физический сектор жесткого - диска. Эта область не является частью какой-либо файловой - системы. Программа в загрузочном разделе имеет доступ к - модулям GRUB расположенным по умолчанию в /boot/grub/. -

-

- Расположение загрузочного раздела - это выбор пользователя, - который влияет на конфигурацию. Одна из рекомендаций - заключается в том, чтобы иметь отдельный небольшой раздел - (примерно 200 МБ) исключительно для загрузочной информации. В - этом случае каждая сборка, будь то LFS или другой - дистрибутив, может обращаться к тем же загрузочным файлам, а - доступ может быть получен из любой загруженной системы. Если - вы решите так сделать, вам необходимо примонтировать - отдельный раздел, переместить все файлы из текущего каталога - /boot (например, ядро Linux, - которое вы создали на предыдущем этапе) в новый раздел. Затем - нужно отмонтировать раздел и примонтировать его заново в - каталог /boot. Когда вы это - сделаете, обязательно обновите данные в файле /etc/fstab. -

-

- Оставить /boot на текущем - разделе LFS это тоже рабочее решение, но его настройка для - загрузки нескольких систем сложнее. -

-

- Используя информацию выше, определите соответствующие точки - монтирования для корневого раздела (или загрузочного раздела, - если используется отдельный). В следующем примере - предполагается, что корневым (или отдельным загрузочным) - разделом является sda2. -

-

- Установите файлы GRUB в каталог /boot/grub и настройте загрузочный сектор: -

-
-

- Предупреждение -

-

- Следующая команда перезапишет текущий загрузчик. Не - выполняйте эту команду, если это не нужно, например, если - вы используете сторонний менеджер загрузки для управления - главной загрузочной записью (MBR). -

-
-
grub-install /dev/sda
-
-

- Примечание -

-

- Если система была загружена с использованием UEFI, - grub-install - попытается установить файлы для x86_64-efi, но эти файлы не были - установлены в - Глава 8. Если это так, добавьте --target i386-pc к приведенной выше - команде. -

-
-
-
-

- 10.4.4. Создание файла - конфигурации GRUB -

-

- Создайте файл /boot/grub/grub.cfg: -

-
cat > /boot/grub/grub.cfg << "EOF"
-# Begin /boot/grub/grub.cfg
-set default=0
-set timeout=5
-
-insmod part_gpt
-insmod ext2
-set root=(hd0,2)
-
-menuentry "GNU/Linux, Linux 6.4.12-lfs-12.0" {
-        linux   /boot/vmlinuz-6.4.12-lfs-12.0 root=/dev/sda2 ro
-}
-EOF
-

- Команды insmod - загружают модули GRUB с - именами part_gpt и ext2. Несмотря на название, ext2 фактически поддерживаются файловые - системы ext2, ext3 и ext4. Команда grub-install встроила - некоторые модули в основной образ GRUB (установленный в MBR или раздел - GRUB BIOS) для доступа к другим модулям (в /boot/grub/i386-pc), поэтому в стандартной - конфигурации эти два модуля уже встроены и эти две команды - insmod ничего - не будут делать. В любом случае, от них нет никакого вреда, - но они могут понадобиться в некоторых редких конфигурациях. -

-
-

- Примечание -

-

- С точки зрения GRUB, файлы - ядра относятся к используемому разделу. Если вы - используется отдельный раздел /boot, удалите /boot из - приведенной выше строки linux. Вам также потребуется - изменить строку set - root так, чтобы она указывала на загрузочный - раздел. -

-
-
-

- Примечание -

-

- Наименование раздела для GRUB может измениться, если вы - добавили или удалили некоторые диски (это могут быть как - съемные диски, так и USB-устройства). Изменение может - привести к сбою загрузки, потому что grub.cfg ссылается на «старые» - указатели. Чтобы не столкнуться с этой проблемой, - необходимо использовать UUID раздела и файловой системы - вместо указателя GRUB для указания устройства. Запустите - команду lsblk -o - UUID,PARTUUID,PATH,MOUNTPOINT, чтобы - посмотреть UUID ваших файловых систем (в столбце - UUID) и разделов (в столбце - PARTUUID). Затем замените - set root=(hdx,y) на - search --set=root --fs-uuid - <UUID файловой системы, в - которой установлено ядро>, и замените - root=/dev/sda2 на root=PARTUUID=<UUID раздела, в котором собрана - LFS>. -

-

- Обратите внимание, что UUID раздела и UUID файловой системы - на этом разделе это совершенно разные вещи. Некоторые - онлайн-ресурсы могут предлагать вам использовать - root=UUID=<UUID файловой - системы> вместо root=PARTUUID=<UUID - раздела>, но для этого требуется - initramfs, которая не рассматривается в LFS. -

-

- Имя узла устройства для раздела в /dev также может измениться (хотя это - менее вероятно, чем изменение указателя GRUB). Вы можете - заменить пути к узлам устройств, таким как /dev/sda1 на PARTUUID=<UUID - раздела>, в /etc/fstab, чтобы избежать потенциального - сбоя загрузки в случае, если имя узла устройства - изменилось. -

-
-

- GRUB - чрезвычайно мощная программа, предоставляющая огромное - количество вариантов загрузки с самых разных устройств, - работающих систем и типов разделов. Существует также - множество опций настройки, таких как графические - экраны-заставки, воспроизведение звука, ввод с помощью мыши и - т. д., детали этих опций выходят за рамки этой инструкции. -

-
-

- Внимание -

-

- Существует команда grub-mkconfig, которая может - автоматически записывать файл конфигурации. Она использует - набор скриптов из каталога /etc/grub.d/ и уничтожит любые - сделанные вами настройки. Эти скрипты предназначены в - первую очередь для обычных дистрибутивов и не рекомендуются - для LFS. Если вы устанавливаете коммерческий дистрибутив - Linux, есть вероятность, что эта программа будет запущена. - Обязательно создайте резервную копию файла grub.cfg. -

-
-
-
-
-
-
-
-
-

- Глава 11. Заключение -

-
-
-
-
-
-
-
-

- 11.1. Заключение -

-
-
-
-

- Отлично! Новая система LFS установлена! Желаем успехов в работе - с вашей новой, блестящей, самостоятельно собранной Linux - системой. -

-

- Может быть хорошей идеей создать файл /etc/lfs-release. Имея этот файл, вам (и нам, - если вам в какой-то момент понадобится обратиться за помощью) - будет проще узнать, какая версия LFS установлена в системе. - Создайте этот файл, выполнив следующую команду: -

-
echo 12.0 > /etc/lfs-release
-

- Следующие два файла, содержащие описание установленной системы, - могут использоваться пакетами, устанавливаемыми позже, либо в - бинарном виде, либо путем их сборки. -

-

- Первый показывает статус вашей новой системы по отношению к - стандарту LSB. Чтобы создать этот файл, выполните: -

-
cat > /etc/lsb-release << "EOF"
-DISTRIB_ID="Linux From Scratch"
-DISTRIB_RELEASE="12.0"
-DISTRIB_CODENAME="<your name here>"
-DISTRIB_DESCRIPTION="Linux From Scratch"
-EOF
-

- Второй содержит примерно ту же информацию и используется - systemd и некоторыми графическими средами рабочего стола. Чтобы - создать этот файл, выполните: -

-
cat > /etc/os-release << "EOF"
-NAME="Linux From Scratch"
-VERSION="12.0"
-ID=lfs
-PRETTY_NAME="Linux From Scratch 12.0"
-VERSION_CODENAME="<your name here>"
-EOF
-

- Обязательно настройте значения 'DISTRIB_CODENAME' и - 'VERSION_CODENAME', чтобы сделать название вашей новой системы - уникальным. -

-
-
-
-
-
-

- 11.2. Вступите в ряды - пользователей LFS -

-
-
-
-

- Теперь, когда вы закончили изучение книги LFS, хотите добавить - себя в список пользователей LFS? Перейдите по ссылке https://www.linuxfromscratch.org/cgi-bin/lfscounter.php - и зарегистрируйтесь. Введите ваше имя и версию LFS, которую вы - использовали. -

-

- Давайте выполним перезагрузку в систему LFS. -

-
-
-
-
-
-

- 11.3. Перезагрузка системы -

-
-
-
-

- Теперь, когда все программное обеспечение установлено, пришло - время перезагрузить ваш компьютер. Однако есть несколько вещей, - которые нужно проверить. Вот некоторые предложения: -

-
-
    -
  • -

    - Установить - прошивки, если они необходимы для правильной работы - вашего оборудования. -

    -
  • -
  • -

    - Убедитесь, что установлен пароль для пользователя - root. -

    -
  • -
  • -

    - На данном этапе также уместно ознакомиться со следующими - конфигурационными файлами. -

    -
    -
      -
    • -

      - /etc/bashrc -

      -
    • -
    • -

      - /etc/dircolors -

      -
    • -
    • -

      - /etc/fstab -

      -
    • -
    • -

      - /etc/hosts -

      -
    • -
    • -

      - /etc/inputrc -

      -
    • -
    • -

      - /etc/profile -

      -
    • -
    • -

      - /etc/resolv.conf -

      -
    • -
    • -

      - /etc/vimrc -

      -
    • -
    • -

      - /root/.bash_profile -

      -
    • -
    • -

      - /root/.bashrc -

      -
    • -
    • -

      - /etc/sysconfig/ifconfig.eth0 -

      -
    • -
    -
    -
  • -
-
-

- Теперь, после всего, давайте перейдём к первой загрузке нашей - новой системы LFS. Для начала, выйдем из chroot-окружения: -

-
logout
-

- Затем размонтируйте виртуальные файловые системы: -

-
umount -v $LFS/dev/pts
-mountpoint -q $LFS/dev/shm && umount $LFS/dev/shm
-umount -v $LFS/dev
-umount -v $LFS/run
-umount -v $LFS/proc
-umount -v $LFS/sys
-

- Если было создано несколько разделов, размонтируйте их перед - размонтированием основного, вот так: -

-
umount -v $LFS/home
-umount -v $LFS/usr
-

- Размонтируйте саму файловую систему LFS: -

-
umount -v $LFS
-

- Теперь, выполните перезагрузку системы. -

-

- Предполагается, что загрузчик GRUB был настроен ранее, поэтому - пункт меню LFS 12.0 - будет загружен автоматически. -

-

- После завершения перезагрузки, система LFS будет готова к - использованию. Вы увидите простую подсказку «login: ». На этом - этапе вы можете перейти к книге - BLFS, где вы установите дополнительное программное - обеспечение в соответствии с вашими потребностями. -

-

- Если перезагрузка завершилась неудачей, самое время устранить - эти неполадки. Советы по решению проблем с начальной загрузкой, - смотрите на странице https://www.linuxfromscratch.org/lfs/troubleshooting.html. -

-
-
-
-
-
-

- 11.4. Дополнительные - ресурсы -

-
-
-
-

- Благодарим за прочтение книги LFS. Мы надеемся, что эта книга - была полезна и вы узнали больше о процессе создания системы с - нуля. -

-

- Теперь, когда система LFS установлена, вы можете задаться - вопросом «Что - дальше?» Чтобы ответить на этот вопрос, мы - составили для вас список ресурсов. -

-
-
    -
  • -

    - Обслуживание -

    -

    - Для всего программного обеспечения регулярно появляются - сообщения об ошибках и уведомления безопасности. - Поскольку система LFS компилируется из исходного кода, вы - должны быть в курсе таких отчетов. Существует несколько - онлайн-ресурсов, которые отслеживают такие отчеты, - некоторые из них приведены ниже: -

    -
    - -
    -
  • -
  • -

    - Советы LFS -

    -

    - Советы LFS представляют собой коллекцию обучающих - материалов, собранную добровольцами сообщества LFS. - Советы доступны по адресу - https://mirror.linuxfromscratch.ru/hints/downloads/files/. -

    -
  • -
  • -

    - Списки рассылки -

    -

    - Существует несколько списков рассылки LFS, на которые вы - можете подписаться, если нуждаетесь в помощи, хотите быть - в курсе последних событий, хотите внести свой вклад в - проект и многое другое. Посетите Глава 1 - Списки - рассылки для получения дополнительной информации. -

    -
  • -
  • -

    - Проект документации по Linux (TLDP) -

    -

    - Целью проекта TLDP является сотрудничество по всем - вопросам связанным с документацией по Linux. TLDP - содержит большую коллекцию инструкций, руководств и - справочных страниц. Она расположена по адресу https://tldp.org/. -

    -
  • -
-
-
-
-
-
-
-

- 11.5. Начало работы после сборки LFS -

-
-
-
-
-

- 11.5.1. Что делать дальше? -

-

- Теперь, когда LFS собрана и у вас есть загружаемая система, - необходимо решить, что же делать дальше? Следующий шаг - - определиться, как использовать систему. Как правило, следует - учитывать две широкие категории: рабочая станция или сервер. - Действительно, эти категории не являются взаимоисключающими. - Приложения, необходимые для каждой категории, можно - объединить в одну систему, но пока давайте рассмотрим их по - отдельности. -

-

- Сервер — более простая категория. Как правило, это - веб-сервер, такой как - Apache, и сервер баз данных, например, - MariaDB. Однако возможны и другие варианты. К этой же - категории относятся операционные системы для встраиваемых - устройств. -

-

- Рабочая станция же, гораздо сложнее. Обычно для нее требуется - среда рабочего стола, например, - LXDE, - XFCE, - KDE, или - Gnome основанные на базовом - графическом окружении и набор графических приложений, - таких как - веб-браузер Firefox, - почтовый клиент Thunderbird, или - пакет офисных приложений LibreOffice. Для этих приложений - требуется множество (может быть несколько сотен, в - зависимости от ваших потребностей) пакетов вспомогательных - приложений и библиотек. -

-

- В дополнение к вышесказанному, существует набор приложений - для управления системой. Все эти приложения есть в - справочнике BLFS, но не все пакеты необходимы в каждом - конкретном окружении. Например - клиент dhcpcd, обычно не требуется на серверах или - - управление параметрами беспроводных сетей - полезно - только для ноутбуков и других портативных систем. -

-
-
-

- 11.5.2. Работа в базовой среде LFS -

-

- Когда вы впервые загружаетесь в LFS, у вас есть все - необходимые инструменты для сборки дополнительных пакетов. К - сожалению, набор программ пользовательского окружения - довольно скудный. Есть несколько способов исправить это: -

-
-
-
-
-

- 11.5.2.1. Работа с хоста LFS в - chroot -

-
-
-
-

- Этот метод обеспечивает полноценную графическую среду, в - которой доступен полнофункциональный браузер и возможности - копирования/вставки. Также он позволяет использовать - приложения хоста, такие как wget, для загрузки исходных - текстов пакетов в каталог, доступный при работе в среде - chroot. -

-

- Чтобы правильно собрать пакеты в chroot, вам необходимо не - забыть смонтировать виртуальные файловые системы, если они - еще не смонтированы. Один из способов сделать это — создать - скрипт в ХОСТОВОЙ системе: -

-
cat > ~/mount-virt.sh << "EOF"
-#!/bin/bash
-
-function mountbind
-{
-   if ! mountpoint $LFS/$1 >/dev/null; then
-     $SUDO mount --bind /$1 $LFS/$1
-     echo $LFS/$1 mounted
-   else
-     echo $LFS/$1 already mounted
-   fi
-}
-
-function mounttype
-{
-   if ! mountpoint $LFS/$1 >/dev/null; then
-     $SUDO mount -t $2 $3 $4 $5 $LFS/$1
-     echo $LFS/$1 mounted
-   else
-     echo $LFS/$1 already mounted
-   fi
-}
-
-if [ $EUID -ne 0 ]; then
-  SUDO=sudo
-else
-  SUDO=""
-fi
-
-if [ x$LFS == x ]; then
-  echo "LFS not set"
-  exit 1
-fi
-
-mountbind dev
-mounttype dev/pts devpts devpts -o gid=5,mode=620
-mounttype proc    proc   proc
-mounttype sys     sysfs  sysfs
-mounttype run     tmpfs  run
-if [ -h $LFS/dev/shm ]; then
-  mkdir -pv $LFS/$(readlink $LFS/dev/shm)
-else
-  mounttype dev/shm tmpfs tmpfs -o nosuid,nodev
-fi 
-
-#mountbind usr/src
-#mountbind boot
-#mountbind home
-EOF
-

- Обратите внимание, что последние три команды в скрипте - закомментированы. Они пригодятся, если эти каталоги - монтируются как отдельные разделы в хост-системе и будут - монтироваться при загрузке завершенной системы LFS/BLFS. -

-

- Скрипт можно запустить с помощью bash ~/mount-virt.sh либо - от имени обычного пользователя (рекомендуется), либо от - имени root. При запуске от - имени обычного пользователя в хост-системе требуется sudo. -

-

- Еще одна проблема, на которую указывает скрипт, заключается - в том, где хранить загруженные файлы пакетов. Это - местоположение является произвольным. Оно может находиться - в домашнем каталоге обычного пользователя, таком как - ~/sources, или в глобальном каталоге /usr/src. Наша - рекомендация - не смешивать источники BLFS и источники LFS - в (из среды chroot) /sources. В любом случае, пакеты должны - быть доступны внутри среды chroot. -

-

- Последняя удобная функция, представленная здесь, - предназначена для упрощения процесса входа в среду chroot. - Это можно сделать с помощью псевдонима, помещенного в - пользовательский файл ~/.bashrc в хост-системе: -

-
alias lfs='sudo /usr/sbin/chroot /mnt/lfs /usr/bin/env -i HOME=/root TERM="$TERM" PS1="\u:\w\\\\$ "
-PATH=/bin:/usr/bin:/sbin:/usr/sbin /bin/bash --login'
-

- Этот псевдоним немного сложен для восприятия из-за кавычек - и слэшей. Всё это должно быть в одной строке. Вышеуказанная - команда была разделена на две части для презентационных - целей. -

-
-
-
-
-
-

- 11.5.2.2. Работа удаленно по ssh -

-
-
-
-

- Этот метод также предоставляет полноценную графическую - среду, но сначала требует установки - sshd и - wget в системе LFS, обычно в chroot. Кроме этого - потребуется второй компьютер. Преимущество этого метода в - том, что он прост, поскольку не требует сложной среды - chroot. Он также использует собранное вами ядро LFS для - всех дополнительных пакетов и по-прежнему предоставляет - полную систему для установки пакетов. -

-
-
-
-
-
-

- 11.5.2.3. Работа из командной - строки LFS -

-
-
-
-

- Этот метот требует установки - libtasn1, - p11-kit, - make-ca, - wget, - gpm и - links (или - lynx) в chroot, а затем перезагрузки в новую систему - LFS. На данный момент система по умолчанию имеет шесть - виртуальных консолей. Переключать консоли так же просто, - как использовать комбинации клавиш Alt+Fx , где Fx это клавиши от - F1 до - F6. Комбинации - Alt+ и Alt+ также переключают - консоль. -

-

- На этом этапе вы можете войти в две разные виртуальные - консоли и запустить браузер links или lynx в одной консоли - и bash в другой. GPM позволяет копировать команды из - браузера с помощью левой кнопки мыши, переключать консоли и - вставлять их в другую консоль. -

-
-

- Примечание -

-

- Вместо примечания: переключение виртуальных консолей - также может быть выполнено из экземпляра X Window с - помощью комбинации клавиш Ctrl+Alt+Fx ,но операция - копирования мышью не работает между графическим - интерфейсом и виртуальной консолью. Вы можете вернуться к - дисплею X Window с помощью комбинации Ctrl+Alt+Fx ,где Fx обычно F1, но может быть - F7. -

-
-
-
-
-
-
-
-
-
-
-

- Часть V. Приложения -

-
-
-
-
-
-
-
-

- Приложение A. Сокращения и условные - обозначения -

-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

- ABI -

-
-

- Application Binary Interface - Двоичный (бинарный) - интерфейс приложений -

-
-

- ALFS -

-
-

- Automated Linux From Scratch - Проект автоматической - сборки системы LFS -

-
-

- API -

-
-

- Application Programming Interface - Программный - интерфейс приложения -

-
-

- ASCII -

-
-

- American Standard Code for Information Interchange — - Американский стандартный код для обмена информацией -

-
-

- BIOS -

-
-

- Basic Input/Output System - Базовая система - ввода/вывода -

-
-

- BLFS -

-
-

- Beyond Linux From Scratch - Проект, расширяющий - возможности 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 - Коллекция компиляторов GNU -

-
-

- 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 - Совместный проект семейства - операционных систем, основанных на Linux (то есть - дистрибутивов Linux), при организации Linux Foundation, - целью которого является стандартизация их внутренней - структуры. LSB опирается на существующие спецификации, - такие как POSIX, Single UNIX Specification, и другие - открытые стандарты, при этом расширяя и дополняя их. -

-
-

- MB -

-
-

- Megabytes - Мегабайты -

-
-

- MBR -

-
-

- Master Boot Record - Главная загрузочная запись -

-
-

- MD5 -

-
-

- Message Digest 5 - 128-битный алгоритм хеширования -

-
-

- NIC -

-
-

- Network Interface Card - Сетевой адаптер -

-
-

- NLS -

-
-

- Native Language Support - Поддержка естественного языка -

-
-

- NNTP -

-
-

- Network News Transport Protocol - Сетевой транспортный - протокол новостных групп -

-
-

- NPTL -

-
-

- Native POSIX Threading Library - Библиотека потоков - POSIX -

-
-

- OSS -

-
-

- Open Sound System - Унифицированный драйвер для - звуковых карт и других звуковых устройств -

-
-

- PCH -

-
-

- Pre-Compiled Headers - Предварительно скомпилированные - заголовки -

-
-

- PCRE -

-
-

- Perl Compatible Regular Expression - Регулярные - выражения, совместимые с Perl -

-
-

- 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 - Проект документации - Linux -

-
-

- 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 - Виртуальный терминал -

-
-
-
-
-
-
-
-

- Приложение B. Благодарности -

-
-
-
-

- Мы хотели бы поблагодарить следующих людей и организации за их - вклад в проект Linux From Scratch. -

-
-
    -
  • -

    - Gerard Beekmans - <gerard AT linuxfromscratch D0T org> – Основатель проекта - LFS -

    -
  • -
  • -

    - Bruce Dubbs - <bdubbs AT linuxfromscratch D0T org> – Главный редактор LFS -

    -
  • -
  • -

    - Jim - Gifford <jim AT linuxfromscratch D0T org> – Второй - руководитель проекта CLFS -

    -
  • -
  • -

    - Pierre Labastie - <pierre AT linuxfromscratch D0T org> – Редактор BLFS и - руководитель ALFS -

    -
  • -
  • -

    - DJ - Lucas <dj AT linuxfromscratch D0T org> – Редактор - проектов LFS и BLFS -

    -
  • -
  • -

    - Ken - Moffat <ken AT linuxfromscratch D0T org> – Редактор BLFS -

    -
  • -
  • -

    - Бесчисленное множество других людей из различных списков - рассылки проектов LFS и BLFS, которые помогали в создании - этой книги, присылая свои предложения, проверяя книгу и - отправляя отчеты об ошибках, инструкции и собственный опыт - установки различных пакетов. -

    -
  • -
-
-

- Переводчики -

-
-
    -
  • -

    - Manuel - Canales Esparcia <macana AT macana-es D0T com> – Перевод - проекта LFS на испанский язык -

    -
  • -
  • -

    - Johan Lenglet - <johan AT linuxfromscratch D0T org> – Перевод проекта LFS на - французский язык до 2008 г. -

    -
  • -
  • -

    - Jean-Philippe - Mengual <jmengual AT linuxfromscratch D0T org> – Перевод - проекта LFS на французский язык 2008-2016 гг -

    -
  • -
  • -

    - Julien Lepiller - <jlepiller AT linuxfromscratch D0T org> – Перевод проекта - LFS на французский язык с 2017-по настоящее время -

    -
  • -
  • -

    - Anderson Lizardo - <lizardo AT linuxfromscratch D0T org> – Перевод проекта LFS - на португальский язык до 2022 г. -

    -
  • -
  • -

    - Jamenson - Espindula <jafesp AT gmail D0T com> – Перевод проекта - LFS на португальский язык 2022-по настоящее время -

    -
  • -
  • -

    - Thomas - Reitelbach <tr AT erdfunkstelle D0T de> – Перевод - проекта LFS на немецкий язык -

    -
  • -
  • -

    - Anton Maisak - <info AT linuxfromscratch D0T ru> – Перевод проекта LFS на - русский язык 2018-2020 гг -

    -
  • -
  • -

    - Elena Shevcova - <info AT linuxfromscratch D0T ru> – Перевод проекта LFS на - русский язык 2018-2020 гг -

    -
  • -
  • -

    - Vladimir Pertsev - <info AT linuxfromscratch D0T ru> – Перевод проекта LFS на - русский язык 2022-по настоящее время -

    -
  • -
-
-

- Зеркала проекта -

-

- Североамериканские зеркала -

-
-
    -
  • -

    - Scott - Kveton <scott AT osuosl D0T org> – зеркало - lfs.oregonstate.edu -

    -
  • -
  • -

    - William - Astle <lost AT l-w D0T net> – зеркало - ca.linuxfromscratch.org -

    -
  • -
  • -

    - Eujon Sellers - <jpolen@rackspace.com> – зеркало lfs.introspeed.com -

    -
  • -
  • -

    - Justin - Knierim <tim@idge.net> – зеркало lfs-matrix.net -

    -
  • -
-
-

- Южноамериканские зеркала -

-
-
    -
  • -

    - Manuel Canales - Esparcia <manuel AT linuxfromscratch D0T org> – зеркало - lfsmirror.lfs-es.info -

    -
  • -
  • -

    - Luis - Falcon <Luis Falcon> – зеркало torredehanoi.org -

    -
  • -
-
-

- Европейские зеркала -

-
-
    -
  • -

    - Guido - Passet <guido AT primerelay D0T net> – зеркало - nl.linuxfromscratch.org -

    -
  • -
  • -

    - Bastiaan - Jacques <baafie AT planet D0T nl> – зеркало - lfs.pagefault.net -

    -
  • -
  • -

    - Sven - Cranshoff <sven D0T cranshoff AT lineo D0T be> – зеркало - lfs.lineo.be -

    -
  • -
  • -

    - Scarlet Belgium – зеркало lfs.scarlet.be -

    -
  • -
  • -

    - Sebastian - Faulborn <info AT aliensoft D0T org> – зеркало - lfs.aliensoft.org -

    -
  • -
  • -

    - Stuart - Fox <stuart AT dontuse D0T ms> – зеркало lfs.dontuse.ms -

    -
  • -
  • -

    - Ralf - Uhlemann <admin AT realhost D0T de> – зеркало - lfs.oss-mirror.org -

    -
  • -
  • -

    - Antonin Sprinzl - <Antonin D0T Sprinzl AT tuwien D0T ac D0T at> – зеркало - at.linuxfromscratch.org -

    -
  • -
  • -

    - Fredrik Danerklint - <fredan-lfs AT fredan D0T org> – зеркало - se.linuxfromscratch.org -

    -
  • -
  • -

    - Franck - <franck AT linuxpourtous D0T com> – зеркало - lfs.linuxpourtous.com -

    -
  • -
  • -

    - Philippe - Baque <baque AT cict D0T fr> – зеркало lfs.cict.fr -

    -
  • -
  • -

    - Benjamin - Heil <kontakt AT wankoo D0T org> – зеркало - lfs.wankoo.org -

    -
  • -
  • -

    - Vladimir Pertsev - <info AT linuxfromscratch D0T ru> – зеркало - mirror.linuxfromscratch.ru -

    -
  • -
-
-

- Азиатские зеркала -

-
-
    -
  • -

    - Satit - Phermsawang <satit AT wbac D0T ac D0T th> – зеркало - lfs.phayoune.org -

    -
  • -
  • -

    - Shizunet - Co.,Ltd. <info AT shizu-net D0T jp> – зеркало - lfs.mirror.shizu-net.jp -

    -
  • -
-
-

- Австралийские зеркала -

-
-
    -
  • -

    - Jason - Andrade <jason AT dstc D0T edu D0T au> – зеркало - au.linuxfromscratch.org -

    -
  • -
-
-

- Бывшие участники проекта -

-
-
    -
  • -

    - Christine - Barczak <theladyskye AT linuxfromscratch D0T org> – - Редактор книги LFS -

    -
  • -
  • -

    - Archaic <archaic@linuxfromscratch.org> – Технический - писатель/редактор LFS, руководитель проекта HLFS, редактор - BLFS, Сопровождающий проекта Советы и патчи -

    -
  • -
  • -

    - Matthew Burgess - <matthew AT linuxfromscratch D0T org> – Руководитель проекта - LFS, технический писатель/редактор LFS -

    -
  • -
  • -

    - Nathan Coulson - <nathan AT linuxfromscratch D0T org> – Сопровождающий - LFS-Bootscripts -

    -
  • -
  • -

    - Timothy Bauscher -

    -
  • -
  • -

    - Robert Briggs -

    -
  • -
  • -

    - Ian Chilton -

    -
  • -
  • -

    - Jeroen Coumans - <jeroen AT linuxfromscratch D0T org> – Разработчик - веб-сайта, сопровождающий FAQ -

    -
  • -
  • -

    - Manuel Canales - Esparcia <manuel AT linuxfromscratch D0T org> – - Сопровождающий XML и XSL проектов LFS/BLFS/HLFS -

    -
  • -
  • -

    - Alex Groenewoud – Технический писатель LFS -

    -
  • -
  • -

    - Marc Heerdink -

    -
  • -
  • -

    - Jeremy Huntwork - <jhuntwork AT linuxfromscratch D0T org> – Технический - писатель LFS, сопровождающий LFS LiveCD -

    -
  • -
  • -

    - Bryan Kadzban - <bryan AT linuxfromscratch D0T org> – Технический писатель - LFS -

    -
  • -
  • -

    - Mark Hymers -

    -
  • -
  • -

    - Seth W. Klein – Сопровождающий FAQ -

    -
  • -
  • -

    - Nicholas Leippe - <nicholas AT linuxfromscratch D0T org> – Сопровождающий Wiki -

    -
  • -
  • -

    - Anderson Lizardo - <lizardo AT linuxfromscratch D0T org> – Сопровождающий - движка сайта -

    -
  • -
  • -

    - Randy McMurchy - <randy AT linuxfromscratch D0T org> – Руководитель проекта - BLFS, редактор LFS -

    -
  • -
  • -

    - Dan Nicholson - <dnicholson AT linuxfromscratch D0T org> – Редактор LFS и - BLFS -

    -
  • -
  • -

    - Alexander E. - Patrakov <alexander AT linuxfromscratch D0T org> – - Технический писатель LFS, редактор интернационализации LFS, - сопровождающий LFS Live CD -

    -
  • -
  • -

    - Simon Perreault -

    -
  • -
  • -

    - Scot Mc Pherson - <scot AT linuxfromscratch D0T org> – Сопровождающий шлюза - NNTP для проекта LFS -

    -
  • -
  • -

    - Douglas R. Reno - <renodr AT linuxfromscratch D0T org> – Редактор Systemd -

    -
  • -
  • -

    - Ryan Oliver - <ryan AT linuxfromscratch D0T org> – Один из руководителей - проекта CLFS -

    -
  • -
  • -

    - Greg - Schafer <gschafer AT zip D0T com D0T au> – Технический - писатель проекта LFS и архитектор методов сборки пакетов - следующего поколения, предназначенных для 64-битной - архитектуры -

    -
  • -
  • -

    - Jesse Tie-Ten-Quee – Технический писатель LFS -

    -
  • -
  • -

    - James Robertson - <jwrober AT linuxfromscratch D0T org> – Сопровождающий - Bugzilla -

    -
  • -
  • -

    - Tushar Teredesai - <tushar AT linuxfromscratch D0T org> – Редактор книги BLFS, - руководитель проекта Советы и Патчи -

    -
  • -
  • -

    - Jeremy Utley - <jeremy AT linuxfromscratch D0T org> – Технический писатель - проекта LFS, сопровождающий Bugzilla, сопровождающий - LFS-Bootscripts -

    -
  • -
  • -

    - Zack - Winkles <zwinkles AT gmail D0T com> – Технический - писатель проекта LFS -

    -
  • -
-
-
-
-
-
-
-

- Приложение C. Зависимости -

-
-
-
-

- Каждый пакет в системе LFS для правильной сборки и установки - может ссылаться на один или несколько других пакетов. Некоторые - пакеты могут иметь циклические зависимости, то есть первый пакет - зависит от второго, который в свою очередь, зависит от первого. - Именно по этой причине, указанный порядок сборки пакетов в LFS - очень важен. Цель этой страницы - документировать зависимости - каждого пакета, собранного в LFS -

-

- Для каждого собираемого пакета существует три, а иногда и до пяти - типов зависимостей, перечисленных ниже. В первом списке - перечислены другие пакеты, которые должны быть доступны для - компиляции и установки рассматриваемого пакета. Во втором - перечислены пакеты, которые должны быть доступны, когда - какие-либо программы или библиотеки из пакета используются во - время выполнения. В третьем списке перечислены пакеты, которые в - дополнение к пакетам из первого списка должны быть доступны для - запуска наборов тестов. Четвертый список зависимостей — это - пакеты, которые требуют, чтобы некий пакет был собран и - установлен по определенному пути, прежде чем они будут собраны и - установлены. В большинстве случаев это связано с тем, что такие - пакеты жестко кодируют пути к двоичным файлам в своих сценариях. - Если сборка выполняется не в том порядке, это может привести к - тому, что пути /tools/bin/[binary] будут размещены внутри - скриптов, установленных в готовой системе, что крайне - нежелательно. -

-

- Последний список зависимостей - это необязательные пакеты, - которые не рассматриваются в LFS, но могут быть полезны - пользователю. Эти пакеты могут иметь дополнительные как - обязательные, так и необязательные зависимости. Такие зависимости - - рекомендуется разрешать после завершения сборки всей системы - LFS. В некоторых случаях, повторная установка некоторых таких - пакетов рассматривается в BLFS. -

-

- Acl -

-
- -
-
- Установка зависит от: - Attr, Bash, Binutils, Coreutils, GCC, - Gettext, Grep, M4, Make, Perl, Sed и Texinfo -
-
-
-
- -
-
- Требуется во время - выполнения: Attr и - Glibc -
-
-
-
- -
-
- Набор тестов зависит от: - Automake, Diffutils, Findutils и - Libtool -
-
-
-
- -
-
- Должен быть установлен до: - Coreutils, Sed, Tar и Vim -
-
-
-
- -
-
- Необязательные зависимости: - Нет -
-
-
-

- Attr -

-
- -
-
- Установка зависит от: - Bash, Binutils, Coreutils, GCC, - Gettext, Glibc, Grep, M4, Make, Perl, Sed и Texinfo -
-
-
-
- -
-
- Требуется во время - выполнения: Glibc -
-
-
-
- -
-
- Набор тестов зависит от: - Automake, Diffutils, Findutils и - Libtool -
-
-
-
- -
-
- Должен быть установлен до: - Acl и Libcap -
-
-
-
- -
-
- Необязательные зависимости: - Нет -
-
-
-

- Autoconf -

-
- -
-
- Установка зависит от: - Bash, Coreutils, Grep, M4, Make, Perl, - Sed и Texinfo -
-
-
-
- -
-
- Требуется во время - выполнения: Bash, Coreutils, - Grep, M4, Make, Sed и Texinfo -
-
-
-
- -
-
- Набор тестов зависит от: - Automake, Diffutils, Findutils, GCC и - Libtool -
-
-
-
- -
-
- Должен быть установлен до: - Automake и Coreutils -
-
-
-
- -
-
- Необязательные зависимости: - - Emacs -
-
-
-

- Automake -

-
- -
-
- Установка зависит от: - Autoconf, Bash, Coreutils, Gettext, - Grep, M4, Make, Perl, Sed, и Texinfo -
-
-
-
- -
-
- Требуется во время - выполнения: Bash, Coreutils, - Grep, M4, Sed и Texinfo -
-
-
-
- -
-
- Набор тестов зависит от: - Binutils, Bison, Bzip2, DejaGNU, - Diffutils, Expect, Findutils, Flex, GCC, Gettext, Gzip, - Libtool и Tar -
-
-
-
- -
-
- Должен быть установлен до: - Coreutils -
-
-
-
- -
-
- Необязательные зависимости: - Нет -
-
-
-

- Bash -

-
- -
-
- Установка зависит от: - Bash, Binutils, Bison, Coreutils, - Diffutils, Gawk, GCC, Glibc, Grep, Make, Ncurses, Patch, - Readline, Sed и Texinfo -
-
-
-
- -
-
- Требуется во время - выполнения: Glibc, Ncurses и - Readline -
-
-
-
- -
-
- Набор тестов зависит от: - Expect и Shadow -
-
-
-
- -
-
- Должен быть установлен до: - Нет -
-
-
-
- -
-
- Необязательные зависимости: - - Xorg -
-
-
-

- Bc -

-
- -
-
- Установка зависит от: - Bash, Binutils, Coreutils, GCC, Glibc, - Grep, Make и Readline -
-
-
-
- -
-
- Требуется во время - выполнения: Glibc, Ncurses и - Readline -
-
-
-
- -
-
- Набор тестов зависит от: - Gawk -
-
-
-
- -
-
- Должен быть установлен до: - Linux -
-
-
-
- -
-
- Необязательные зависимости: - Нет -
-
-
-

- Binutils -

-
- -
-
- Установка зависит от: - Bash, Binutils, Coreutils, Diffutils, - File, Flex, Gawk, GCC, Glibc, Grep, Make, Perl, Sed, Texinfo - и Zlib -
-
-
-
- -
-
- Требуется во время - выполнения: Glibc и - Zlib -
-
-
-
- -
-
- Набор тестов зависит от: - DejaGNU и Expect -
-
-
-
- -
-
- Должен быть установлен до: - Нет -
-
-
-
- -
-
- Необязательные зависимости: - Elfutils и - Jansson -
-
-
-

- Bison -

-
- -
-
- Установка зависит от: - Bash, Binutils, Coreutils, GCC, - Gettext, Glibc, Grep, M4, Make, Perl и Sed -
-
-
-
- -
-
- Требуется во время - выполнения: Glibc -
-
-
-
- -
-
- Набор тестов зависит от: - Diffutils, Findutils и Flex -
-
-
-
- -
-
- Должен быть установлен до: - Kbd и Tar -
-
-
-
- -
-
- Необязательные зависимости: - - Doxygen -
-
-
-

- Bzip2 -

-
- -
-
- Установка зависит от: - Bash, Binutils, Coreutils, Diffutils, - GCC, Glibc, Make и Patch -
-
-
-
- -
-
- Требуется во время - выполнения: Glibc -
-
-
-
- -
-
- Набор тестов зависит от: - Нет -
-
-
-
- -
-
- Должен быть установлен до: - File и Libelf -
-
-
-
- -
-
- Необязательные зависимости: - Нет -
-
-
-

- Check -

-
- -
-
- Установка зависит от: - Gawk, GCC, Grep, Make, Sed и - Texinfo -
-
-
-
- -
-
- Требуется во время - выполнения: Bash и Gawk -
-
-
-
- -
-
- Набор тестов зависит от: - Нет -
-
-
-
- -
-
- Должен быть установлен до: - Нет -
-
-
-
- -
-
- Необязательные зависимости: - libsubunit -
-
-
-

- Coreutils -

-
- -
-
- Установка зависит от: - Autoconf, Automake, Bash, Binutils, - Coreutils, GCC, Gettext, Glibc, GMP, Grep, Libcap, Make, - OpenSSL, Patch, Perl, Sed и Texinfo -
-
-
-
- -
-
- Требуется во время - выполнения: Glibc -
-
-
-
- -
-
- Набор тестов зависит от: - Diffutils, E2fsprogs, Findutils, Shadow - и Util-linux -
-
-
-
- -
-
- Должен быть установлен до: - Bash, Diffutils, Findutils, Man-DB и - Udev -
-
-
-
- -
-
- Необязательные зависимости: - Expect.pm и IO::Tty -
-
-
-

- DejaGNU -

-
- -
-
- Установка зависит от: - Bash, Coreutils, Diffutils, Expect, - GCC, Grep, Make, Sed и Texinfo -
-
-
-
- -
-
- Требуется во время - выполнения: Expect и - Bash -
-
-
-
- -
-
- Набор тестов зависит от: - Нет -
-
-
-
- -
-
- Должен быть установлен до: - Нет -
-
-
-
- -
-
- Необязательные зависимости: - Нет -
-
-
-

- Diffutils -

-
- -
-
- Установка зависит от: - Bash, Binutils, Coreutils, Gawk, GCC, - Gettext, Glibc, Grep, Make, Sed и Texinfo -
-
-
-
- -
-
- Требуется во время - выполнения: Glibc -
-
-
-
- -
-
- Набор тестов зависит от: - Perl -
-
-
-
- -
-
- Должен быть установлен до: - Нет -
-
-
-
- -
-
- Необязательные зависимости: - Нет -
-
-
-

- E2fsprogs -

-
- -
-
- Установка зависит от: - Bash, Binutils, Coreutils, Diffutils, - Gawk, GCC, Glibc, Grep, Gzip, Make, Pkgconf, Sed, Texinfo и - Util-linux -
-
-
-
- -
-
- Требуется во время - выполнения: Glibc и - Util-linux -
-
-
-
- -
-
- Набор тестов зависит от: - Procps-ng и Psmisc -
-
-
-
- -
-
- Должен быть установлен до: - Нет -
-
-
-
- -
-
- Необязательные зависимости: - Нет -
-
-
-

- Expat -

-
- -
-
- Установка зависит от: - Bash, Binutils, Coreutils, Gawk, GCC, - Glibc, Grep, Make и Sed -
-
-
-
- -
-
- Требуется во время - выполнения: Glibc -
-
-
-
- -
-
- Набор тестов зависит от: - Нет -
-
-
-
- -
-
- Должен быть установлен до: - Python и XML::Parser -
-
-
-
- -
-
- Необязательные зависимости: - Нет -
-
-
-

- Expect -

-
- -
-
- Установка зависит от: - Bash, Binutils, Coreutils, Diffutils, - GCC, Glibc, Grep, Make, Patch, Sed и Tcl -
-
-
-
- -
-
- Требуется во время - выполнения: Glibc и Tcl -
-
-
-
- -
-
- Набор тестов зависит от: - Нет -
-
-
-
- -
-
- Должен быть установлен до: - Нет -
-
-
-
- -
-
- Необязательные зависимости: - - Tk -
-
-
-

- File -

-
- -
-
- Установка зависит от: - Bash, Binutils, Bzip2, Coreutils, - Diffutils, Gawk, GCC, Glibc, Grep, Make, Sed, Xz и - Zlib -
-
-
-
- -
-
- Требуется во время - выполнения: Glibc, Bzip2, Xz и - Zlib -
-
-
-
- -
-
- Набор тестов зависит от: - Нет -
-
-
-
- -
-
- Должен быть установлен до: - Нет -
-
-
-
- -
-
- Необязательные зависимости: - - libseccomp -
-
-
-

- Findutils -

-
- -
-
- Установка зависит от: - Bash, Binutils, Coreutils, GCC, - Gettext, Glibc, Grep, Make, Sed, и Texinfo -
-
-
-
- -
-
- Требуется во время - выполнения: Bash и - Glibc -
-
-
-
- -
-
- Набор тестов зависит от: - DejaGNU, Diffutils и Expect -
-
-
-
- -
-
- Должен быть установлен до: - Нет -
-
-
-
- -
-
- Необязательные зависимости: - Нет -
-
-
-

- Flex -

-
- -
-
- Установка зависит от: - Bash, Binutils, Coreutils, GCC, - Gettext, Glibc, Grep, M4, Make, Patch, Sed и Texinfo -
-
-
-
- -
-
- Требуется во время - выполнения: Bash, Glibc и - M4 -
-
-
-
- -
-
- Набор тестов зависит от: - Bison и Gawk -
-
-
-
- -
-
- Должен быть установлен до: - Binutils, IProute2, Kbd, Kmod и - Man-DB -
-
-
-
- -
-
- Необязательные зависимости: - Нет -
-
-
-

- Flit-Core -

-
- -
-
- Установка зависит от: - Python -
-
-
-
- -
-
- Требуется во время - выполнения: Python -
-
-
-
- -
-
- Набор тестов зависит от: - Набор тестов недоступен -
-
-
-
- -
-
- Должен быть установлен до: - Wheel -
-
-
-
- -
-
- Необязательные зависимости: - - pytest и testpath -
-
-
-

- Gawk -

-
- -
-
- Установка зависит от: - Bash, Binutils, Coreutils, GCC, - Gettext, Glibc, GMP, Grep, Make, MPFR, Patch, Readline, Sed и - Texinfo -
-
-
-
- -
-
- Требуется во время - выполнения: Bash, Glibc и - Mpfr -
-
-
-
- -
-
- Набор тестов зависит от: - Diffutils -
-
-
-
- -
-
- Должен быть установлен до: - Нет -
-
-
-
- -
-
- Необязательные зависимости: - - libsigsegv -
-
-
-

- GCC -

-
- -
-
- Установка зависит от: - Bash, Binutils, Coreutils, Diffutils, - Findutils, Gawk, GCC, Gettext, Glibc, GMP, Grep, Libxcrypt, - M4, Make, MPC, MPFR, Patch, Perl, Sed, Tar, Texinfo и - Zstd -
-
-
-
- -
-
- Требуется во время - выполнения: Bash, Binutils, - Glibc, Mpc и Python -
-
-
-
- -
-
- Набор тестов зависит от: - DejaGNU, Expect и Shadow -
-
-
-
- -
-
- Должен быть установлен до: - Нет -
-
-
-
- -
-
- Необязательные зависимости: - GDC, GNAT, и ISL -
-
-
-

- GDBM -

-
- -
-
- Установка зависит от: - Bash, Binutils, Coreutils, Diffutils, - GCC, Grep, Make и Sed -
-
-
-
- -
-
- Требуется во время - выполнения: Bash, Glibc и - Readline -
-
-
-
- -
-
- Набор тестов зависит от: - Нет -
-
-
-
- -
-
- Должен быть установлен до: - Нет -
-
-
-
- -
-
- Необязательные зависимости: - Нет -
-
-
-

- Gettext -

-
- -
-
- Установка зависит от: - Bash, Binutils, Coreutils, Gawk, GCC, - Glibc, Grep, Make, Ncurses, Sed и Texinfo -
-
-
-
- -
-
- Требуется во время - выполнения: Acl, Bash, Gcc и - Glibc -
-
-
-
- -
-
- Набор тестов зависит от: - Diffutils, Perl и Tcl -
-
-
-
- -
-
- Должен быть установлен до: - Automake и Bison -
-
-
-
- -
-
- Необязательные зависимости: - Нет -
-
-
-

- Glibc -

-
- -
-
- Установка зависит от: - Bash, Binutils, Bison, Coreutils, - Diffutils, Gawk, GCC, Gettext, Grep, Gzip, Linux API Headers, - Make, Perl, Python, Sed и Texinfo -
-
-
-
- -
-
- Требуется во время - выполнения: Нет -
-
-
-
- -
-
- Набор тестов зависит от: - File -
-
-
-
- -
-
- Должен быть установлен до: - Нет -
-
-
-
- -
-
- Необязательные зависимости: - Нет -
-
-
-

- GMP -

-
- -
-
- Установка зависит от: - Bash, Binutils, Coreutils, Diffutils, - Gawk, GCC, Glibc, Grep, M4, Make, Sed и Texinfo -
-
-
-
- -
-
- Требуется во время - выполнения: GCC и Glibc -
-
-
-
- -
-
- Набор тестов зависит от: - Нет -
-
-
-
- -
-
- Должен быть установлен до: - MPFR и GCC -
-
-
-
- -
-
- Необязательные зависимости: - Нет -
-
-
-

- Gperf -

-
- -
-
- Установка зависит от: - Bash, Binutils, Coreutils, GCC, Glibc и - Make -
-
-
-
- -
-
- Требуется во время - выполнения: GCC и Glibc -
-
-
-
- -
-
- Набор тестов зависит от: - Diffutils и Expect -
-
-
-
- -
-
- Должен быть установлен до: - Нет -
-
-
-
- -
-
- Необязательные зависимости: - Нет -
-
-
-

- Grep -

-
- -
-
- Установка зависит от: - Bash, Binutils, Coreutils, Diffutils, - GCC, Gettext, Glibc, Grep, Make, Patch, Sed и Texinfo -
-
-
-
- -
-
- Требуется во время - выполнения: Glibc -
-
-
-
- -
-
- Набор тестов зависит от: - Gawk -
-
-
-
- -
-
- Должен быть установлен до: - Man-DB -
-
-
-
- -
-
- Необязательные зависимости: - - PCRE2 и - libsigsegv -
-
-
-

- Groff -

-
- -
-
- Установка зависит от: - Bash, Binutils, Bison, Coreutils, Gawk, - GCC, Glibc, Grep, Make, Patch, Sed и Texinfo -
-
-
-
- -
-
- Требуется во время - выполнения: GCC, Glibc и - Perl -
-
-
-
- -
-
- Набор тестов зависит от: - Набор тестов недоступен -
-
-
-
- -
-
- Должен быть установлен до: - Man-DB и Perl -
-
-
-
- -
-
- Необязательные зависимости: - - ghostscript и - Uchardet -
-
-
-

- GRUB -

-
- -
-
- Установка зависит от: - Bash, Binutils, Bison, Coreutils, - Diffutils, GCC, Gettext, Glibc, Grep, Make, Ncurses, Sed, - Texinfo и Xz -
-
-
-
- -
-
- Требуется во время - выполнения: Bash, GCC, - Gettext, Glibc, Xz и Sed. -
-
-
-
- -
-
- Набор тестов зависит от: - Нет -
-
-
-
- -
-
- Должен быть установлен до: - Нет -
-
-
-
- -
-
- Необязательные зависимости: - Нет -
-
-
-

- Gzip -

-
- -
-
- Установка зависит от: - Bash, Binutils, Coreutils, GCC, Glibc, - Grep, Make, Sed и Texinfo -
-
-
-
- -
-
- Требуется во время - выполнения: Bash и - Glibc -
-
-
-
- -
-
- Набор тестов зависит от: - Diffutils и Less -
-
-
-
- -
-
- Должен быть установлен до: - Man-DB -
-
-
-
- -
-
- Необязательные зависимости: - Нет -
-
-
-

- Iana-Etc -

-
- -
-
- Установка зависит от: - Coreutils -
-
-
-
- -
-
- Требуется во время - выполнения: Нет -
-
-
-
- -
-
- Набор тестов зависит от: - Набор тестов недоступен -
-
-
-
- -
-
- Должен быть установлен до: - Perl -
-
-
-
- -
-
- Необязательные зависимости: - Нет -
-
-
-

- Inetutils -

-
- -
-
- Установка зависит от: - Bash, Binutils, Coreutils, GCC, Glibc, - Grep, Make, Ncurses, Patch, Sed, Texinfo и Zlib -
-
-
-
- -
-
- Требуется во время - выполнения: GCC, Glibc, - Ncurses и Readline -
-
-
-
- -
-
- Набор тестов зависит от: - Нет -
-
-
-
- -
-
- Должен быть установлен до: - Tar -
-
-
-
- -
-
- Необязательные зависимости: - Нет -
-
-
-

- Intltool -

-
- -
-
- Установка зависит от: - Bash, Gawk, Glibc, Make, Perl, Sed и - XML::Parser -
-
-
-
- -
-
- Требуется во время - выполнения: Autoconf, - Automake, Bash, Glibc, Grep, Perl и Sed -
-
-
-
- -
-
- Набор тестов зависит от: - Perl -
-
-
-
- -
-
- Должен быть установлен до: - Нет -
-
-
-
- -
-
- Необязательные зависимости: - Нет -
-
-
-

- IProute2 -

-
- -
-
- Установка зависит от: - Bash, Bison, Coreutils, Flex, GCC, - Glibc, Make, Libcap, Libelf, Linux API Headers и Zlib -
-
-
-
- -
-
- Требуется во время - выполнения: Bash, Coreutils, - Glibc, Libcap, Libelf и Zlib -
-
-
-
- -
-
- Набор тестов зависит от: - Набор тестов недоступен -
-
-
-
- -
-
- Должен быть установлен до: - Нет -
-
-
-
- -
-
- Необязательные зависимости: - - Berkeley DB, - iptables, libbpf, - libmnl и - libtirpc -
-
-
-

- Kbd -

-
- -
-
- Установка зависит от: - Bash, Binutils, Bison, Check, - Coreutils, Flex, GCC, Gettext, Glibc, Gzip, Make, Patch и - Sed -
-
-
-
- -
-
- Требуется во время - выполнения: Bash, Coreutils и - Glibc -
-
-
-
- -
-
- Набор тестов зависит от: - Нет -
-
-
-
- -
-
- Должен быть установлен до: - Нет -
-
-
-
- -
-
- Необязательные зависимости: - Нет -
-
-
-

- Kmod -

-
- -
-
- Установка зависит от: - Bash, Binutils, Bison, Coreutils, Flex, - GCC, Gettext, Glibc, Gzip, Make, OpenSSL, Pkg-config, Sed, Xz - и Zlib -
-
-
-
- -
-
- Требуется во время - выполнения: Glibc, Xz и - Zlib -
-
-
-
- -
-
- Набор тестов зависит от: - Набор тестов недоступен -
-
-
-
- -
-
- Должен быть установлен до: - Udev -
-
-
-
- -
-
- Необязательные зависимости: - Нет -
-
-
-

- Less -

-
- -
-
- Установка зависит от: - Bash, Binutils, Coreutils, Diffutils, - GCC, Glibc, Grep, Make, Ncurses и Sed -
-
-
-
- -
-
- Требуется во время - выполнения: Glibc и - Ncurses -
-
-
-
- -
-
- Набор тестов зависит от: - Набор тестов недоступен -
-
-
-
- -
-
- Должен быть установлен до: - Gzip -
-
-
-
- -
-
- Необязательные зависимости: - - PCRE2 или - PCRE -
-
-
-

- Libcap -

-
- -
-
- Установка зависит от: - Attr, Bash, Binutils, Coreutils, GCC, - Glibc, Perl, Make и Sed -
-
-
-
- -
-
- Требуется во время - выполнения: Glibc -
-
-
-
- -
-
- Набор тестов зависит от: - Нет -
-
-
-
- -
-
- Должен быть установлен до: - IProute2 и Shadow -
-
-
-
- -
-
- Необязательные зависимости: - - Linux-PAM -
-
-
-

- Libelf -

-
- -
-
- Установка зависит от: - Bash, Binutils, Bzip2, Coreutils, GCC, - Glibc, Make, Xz, Zlib и Zstd -
-
-
-
- -
-
- Требуется во время - выполнения: Bzip2, Glibc, Xz, - Zlib и Zstd -
-
-
-
- -
-
- Набор тестов зависит от: - Нет -
-
-
-
- -
-
- Должен быть установлен до: - IProute2 и Linux -
-
-
-
- -
-
- Необязательные зависимости: - Нет -
-
-
-

- Libffi -

-
- -
-
- Установка зависит от: - Bash, Binutils, Coreutils, GCC, Glibc, - Make и Sed -
-
-
-
- -
-
- Требуется во время - выполнения: Glibc -
-
-
-
- -
-
- Набор тестов зависит от: - DejaGnu -
-
-
-
- -
-
- Должен быть установлен до: - Python -
-
-
-
- -
-
- Необязательные зависимости: - Нет -
-
-
-

- Libpipeline -

-
- -
-
- Установка зависит от: - Bash, Binutils, Coreutils, Diffutils, - Gawk, GCC, Glibc, Grep, Make, Sed и Texinfo -
-
-
-
- -
-
- Требуется во время - выполнения: Glibc -
-
-
-
- -
-
- Набор тестов зависит от: - Check и Pkgconf -
-
-
-
- -
-
- Должен быть установлен до: - Man-DB -
-
-
-
- -
-
- Необязательные зависимости: - Нет -
-
-
-

- Libtool -

-
- -
-
- Установка зависит от: - Bash, Binutils, Coreutils, Diffutils, - Gawk, GCC, Glibc, Grep, Make, Sed и Texinfo -
-
-
-
- -
-
- Требуется во время - выполнения: Autoconf, - Automake, Bash, Binutils, Coreutils, File, GCC, Glibc, Grep, - Make и Sed -
-
-
-
- -
-
- Набор тестов зависит от: - Autoconf, Automake и Findutils -
-
-
-
- -
-
- Должен быть установлен до: - Нет -
-
-
-
- -
-
- Необязательные зависимости: - Нет -
-
-
-

- Libxcrypt -

-
- -
-
- Установка зависит от: - Bash, Binutils, Coreutils, Diffutils, - Gawk, GCC, Glibc, Grep, Make, Perl и Sed -
-
-
-
- -
-
- Требуется во время - выполнения: Glibc -
-
-
-
- -
-
- Набор тестов зависит от: - Нет -
-
-
-
- -
-
- Должен быть установлен до: - GCC, Perl, Python, Shadow и - Udev -
-
-
-
- -
-
- Необязательные зависимости: - Нет -
-
-
-

- Linux -

-
- -
-
- Установка зависит от: - Bash, Bc, Binutils, Coreutils, - Diffutils, Findutils, GCC, Glibc, Grep, Gzip, Kmod, Libelf, - Make, Ncurses, OpenSSL, Perl и Sed -
-
-
-
- -
-
- Требуется во время - выполнения: Нет -
-
-
-
- -
-
- Набор тестов зависит от: - Набор тестов недоступен -
-
-
-
- -
-
- Должен быть установлен до: - Нет -
-
-
-
- -
-
- Необязательные зависимости: - - cpio и - LLVM (с Clang) -
-
-
-

- Linux API Headers -

-
- -
-
- Установка зависит от: - Bash, Binutils, Coreutils, Findutils, - GCC, Glibc, Grep, Gzip, Make, Perl и Sed -
-
-
-
- -
-
- Требуется во время - выполнения: Нет -
-
-
-
- -
-
- Набор тестов зависит от: - Набор тестов недоступен -
-
-
-
- -
-
- Должен быть установлен до: - Нет -
-
-
-
- -
-
- Необязательные зависимости: - Нет -
-
-
-

- M4 -

-
- -
-
- Установка зависит от: - Bash, Binutils, Coreutils, GCC, Glibc, - Grep, Make, Sed и Texinfo -
-
-
-
- -
-
- Требуется во время - выполнения: Bash и - Glibc -
-
-
-
- -
-
- Набор тестов зависит от: - Diffutils -
-
-
-
- -
-
- Должен быть установлен до: - Autoconf и Bison -
-
-
-
- -
-
- Необязательные зависимости: - - libsigsegv -
-
-
-

- Make -

-
- -
-
- Установка зависит от: - Bash, Binutils, Coreutils, GCC, - Gettext, Glibc, Grep, Make, Sed, и Texinfo -
-
-
-
- -
-
- Требуется во время - выполнения: Glibc -
-
-
-
- -
-
- Набор тестов зависит от: - Perl и Procps-ng -
-
-
-
- -
-
- Должен быть установлен до: - Нет -
-
-
-
- -
-
- Необязательные зависимости: - - Guile -
-
-
-

- Man-DB -

-
- -
-
- Установка зависит от: - Bash, Binutils, Bzip2, Coreutils, Flex, - GCC, GDBM, Gettext, Glibc, Grep, Groff, Gzip, Less, - Libpipeline, Make, Pkgconf, Sed, и Xz -
-
-
-
- -
-
- Требуется во время - выполнения: Bash, GDBM, Groff, - Glibc, Gzip, Less, Libpipeline и Zlib -
-
-
-
- -
-
- Набор тестов зависит от: - Util-linux -
-
-
-
- -
-
- Должен быть установлен до: - Нет -
-
-
-
- -
-
- Необязательные зависимости: - - libseccomp и po4a -
-
-
-

- Man-Pages -

-
- -
-
- Установка зависит от: - Bash, Coreutils и Make -
-
-
-
- -
-
- Требуется во время - выполнения: Нет -
-
-
-
- -
-
- Набор тестов зависит от: - Набор тестов недоступен -
-
-
-
- -
-
- Должен быть установлен до: - Нет -
-
-
-
- -
-
- Необязательные зависимости: - Нет -
-
-
-

- Meson -

-
- -
-
- Установка зависит от: - Ninja и Python -
-
-
-
- -
-
- Требуется во время - выполнения: Python -
-
-
-
- -
-
- Набор тестов зависит от: - Набор тестов недоступен -
-
-
-
- -
-
- Должен быть установлен до: - Udev -
-
-
-
- -
-
- Необязательные зависимости: - Нет -
-
-
-

- MPC -

-
- -
-
- Установка зависит от: - Bash, Binutils, Coreutils, Diffutils, - Gawk, GCC, Glibc, Grep, GMP, Make, MPFR, Sed и Texinfo -
-
-
-
- -
-
- Требуется во время - выполнения: Glibc, GMP и - MPFR -
-
-
-
- -
-
- Набор тестов зависит от: - Нет -
-
-
-
- -
-
- Должен быть установлен до: - GCC -
-
-
-
- -
-
- Необязательные зависимости: - Нет -
-
-
-

- MPFR -

-
- -
-
- Установка зависит от: - Bash, Binutils, Coreutils, Diffutils, - Gawk, GCC, Glibc, Grep, GMP, Make, Sed и Texinfo -
-
-
-
- -
-
- Требуется во время - выполнения: Glibc и GMP -
-
-
-
- -
-
- Набор тестов зависит от: - Нет -
-
-
-
- -
-
- Должен быть установлен до: - Gawk и GCC -
-
-
-
- -
-
- Необязательные зависимости: - Нет -
-
-
-

- Ncurses -

-
- -
-
- Установка зависит от: - Bash, Binutils, Coreutils, Diffutils, - Gawk, GCC, Glibc, Grep, Make, Patch и Sed -
-
-
-
- -
-
- Требуется во время - выполнения: Glibc -
-
-
-
- -
-
- Набор тестов зависит от: - Набор тестов недоступен -
-
-
-
- -
-
- Должен быть установлен до: - Bash, GRUB, Inetutils, Less, Procps-ng, - Psmisc, Readline, Texinfo, Util-linux и Vim -
-
-
-
- -
-
- Необязательные зависимости: - Нет -
-
-
-

- Ninja -

-
- -
-
- Установка зависит от: - Binutils, Coreutils, GCC и - Python -
-
-
-
- -
-
- Требуется во время - выполнения: GCC и Glibc -
-
-
-
- -
-
- Набор тестов зависит от: - Нет -
-
-
-
- -
-
- Должен быть установлен до: - Meson -
-
-
-
- -
-
- Необязательные зависимости: - - Asciidoc, - Doxygen, - Emacs и re2c -
-
-
-

- OpenSSL -

-
- -
-
- Установка зависит от: - Binutils, Coreutils, GCC, Make и - Perl -
-
-
-
- -
-
- Требуется во время - выполнения: Glibc и - Perl -
-
-
-
- -
-
- Набор тестов зависит от: - Нет -
-
-
-
- -
-
- Должен быть установлен до: - Coreutils, Kmod, Linux и Udev -
-
-
-
- -
-
- Необязательные зависимости: - Нет -
-
-
-

- Patch -

-
- -
-
- Установка зависит от: - Bash, Binutils, Coreutils, GCC, Glibc, - Grep, Make и Sed -
-
-
-
- -
-
- Требуется во время - выполнения: Glibc -
-
-
-
- -
-
- Набор тестов зависит от: - Diffutils -
-
-
-
- -
-
- Должен быть установлен до: - Нет -
-
-
-
- -
-
- Необязательные зависимости: - - Ed -
-
-
-

- Perl -

-
- -
-
- Установка зависит от: - Bash, Binutils, Coreutils, Gawk, GCC, - GDBM, Glibc, Grep, Groff, Libxcrypt, Make, Sed и Zlib -
-
-
-
- -
-
- Требуется во время - выполнения: GDBM, Glibc и - Libxcrypt -
-
-
-
- -
-
- Набор тестов зависит от: - Iana-Etc, Less и Procps-ng -
-
-
-
- -
-
- Должен быть установлен до: - Autoconf -
-
-
-
- -
-
- Необязательные зависимости: - - Berkeley DB -
-
-
-

- Pkgconf -

-
- -
-
- Установка зависит от: - Bash, Binutils, Coreutils, Gawk, GCC, - Glibc, Grep, Make, и Sed -
-
-
-
- -
-
- Требуется во время - выполнения: Glibc -
-
-
-
- -
-
- Набор тестов зависит от: - Нет -
-
-
-
- -
-
- Должен быть установлен до: - E2fsprogs, IProute2, Kmod, Man-DB, - Procps-ng, Python, Udev и - Util-linux -
-
-
-
- -
-
- Необязательные зависимости: - Нет -
-
-
-

- Procps-ng -

-
- -
-
- Установка зависит от: - Bash, Binutils, Coreutils, GCC, Glibc, - Make, Ncurses, и Pkgconf -
-
-
-
- -
-
- Требуется во время - выполнения: Glibc -
-
-
-
- -
-
- Набор тестов зависит от: - DejaGNU -
-
-
-
- -
-
- Должен быть установлен до: - Нет -
-
-
-
- -
-
- Необязательные зависимости: - - elogind -
-
-
-

- Psmisc -

-
- -
-
- Установка зависит от: - Bash, Binutils, Coreutils, GCC, - Gettext, Glibc, Grep, Make, Ncurses и Sed -
-
-
-
- -
-
- Требуется во время - выполнения: Glibc и - Ncurses -
-
-
-
- -
-
- Набор тестов зависит от: - Набор тестов недоступен -
-
-
-
- -
-
- Должен быть установлен до: - Нет -
-
-
-
- -
-
- Необязательные зависимости: - Нет -
-
-
-

- Python -

-
- -
-
- Установка зависит от: - Bash, Binutils, Coreutils, Expat, GCC, - Gdbm, Gettext, Glibc, Grep, Libffi, Libxcrypt, Make, Ncurses, - OpenSSL, Pkgconf, Sed и Util-linux -
-
-
-
- -
-
- Требуется во время - выполнения: Bzip2, Expat, - Gdbm, Glibc, Libffi, Libxcrypt, Ncurses, OpenSSL и - Zlib -
-
-
-
- -
-
- Набор тестов зависит от: - GDB и Valgrind -
-
-
-
- -
-
- Должен быть установлен до: - Ninja -
-
-
-
- -
-
- Необязательные зависимости: - - Berkeley DB, - libnsl, - SQLite и - Tk -
-
-
-

- Readline -

-
- -
-
- Установка зависит от: - Bash, Binutils, Coreutils, Gawk, GCC, - Glibc, Grep, Make, Ncurses, Patch, Sed и Texinfo -
-
-
-
- -
-
- Требуется во время - выполнения: Glibc и - Ncurses -
-
-
-
- -
-
- Набор тестов зависит от: - Набор тестов недоступен -
-
-
-
- -
-
- Должен быть установлен до: - Bash, Bc и Gawk -
-
-
-
- -
-
- Необязательные зависимости: - Нет -
-
-
-

- Sed -

-
- -
-
- Установка зависит от: - Bash, Binutils, Coreutils, GCC, - Gettext, Glibc, Grep, Make, Sed, и Texinfo -
-
-
-
- -
-
- Требуется во время - выполнения: Acl, Attr и - Glibc -
-
-
-
- -
-
- Набор тестов зависит от: - Diffutils и Gawk -
-
-
-
- -
-
- Должен быть установлен до: - E2fsprogs, File, Libtool и - Shadow -
-
-
-
- -
-
- Необязательные зависимости: - Нет -
-
-
-

- Shadow -

-
- -
-
- Установка зависит от: - Acl, Attr, Bash, Binutils, Coreutils, - Diffutils, Findutils, Gawk, GCC, Gettext, Glibc, Grep, - Libcap, Libxcrypt, Make и Sed -
-
-
-
- -
-
- Требуется во время - выполнения: Glibc и - Libxcrypt -
-
-
-
- -
-
- Набор тестов зависит от: - Набор тестов недоступен -
-
-
-
- -
-
- Должен быть установлен до: - Coreutils -
-
-
-
- -
-
- Необязательные зависимости: - - CrackLib и - Linux-PAM -
-
-
-

- Sysklogd -

-
- -
-
- Установка зависит от: - Binutils, Coreutils, GCC, Glibc, Make и - Patch -
-
-
-
- -
-
- Требуется во время - выполнения: Glibc -
-
-
-
- -
-
- Набор тестов зависит от: - Набор тестов недоступен -
-
-
-
- -
-
- Должен быть установлен до: - Нет -
-
-
-
- -
-
- Необязательные зависимости: - Нет -
-
-
-

- Sysvinit -

-
- -
-
- Установка зависит от: - Binutils, Coreutils, GCC, Glibc, Make и - Sed -
-
-
-
- -
-
- Требуется во время - выполнения: Glibc -
-
-
-
- -
-
- Набор тестов зависит от: - Набор тестов недоступен -
-
-
-
- -
-
- Должен быть установлен до: - Нет -
-
-
-
- -
-
- Необязательные зависимости: - Нет -
-
-
-

- Tar -

-
- -
-
- Установка зависит от: - Acl, Attr, Bash, Binutils, Bison, - Coreutils, GCC, Gettext, Glibc, Grep, Inetutils, Make, Sed и - Texinfo -
-
-
-
- -
-
- Требуется во время - выполнения: Acl, Attr, Bzip2, - Glibc, Gzip и Xz -
-
-
-
- -
-
- Набор тестов зависит от: - Autoconf, Diffutils, Findutils, Gawk и - Gzip -
-
-
-
- -
-
- Должен быть установлен до: - Нет -
-
-
-
- -
-
- Необязательные зависимости: - Нет -
-
-
-

- Tcl -

-
- -
-
- Установка зависит от: - Bash, Binutils, Coreutils, Diffutils, - GCC, Glibc, Grep, Make и Sed -
-
-
-
- -
-
- Требуется во время - выполнения: Glibc и - Zlib -
-
-
-
- -
-
- Набор тестов зависит от: - Нет -
-
-
-
- -
-
- Должен быть установлен до: - Нет -
-
-
-
- -
-
- Необязательные зависимости: - Нет -
-
-
-

- Texinfo -

-
- -
-
- Установка зависит от: - Bash, Binutils, Coreutils, GCC, - Gettext, Glibc, Grep, Make, Ncurses, Patch и Sed -
-
-
-
- -
-
- Требуется во время - выполнения: Glibc и - Ncurses -
-
-
-
- -
-
- Набор тестов зависит от: - Нет -
-
-
-
- -
-
- Должен быть установлен до: - Нет -
-
-
-
- -
-
- Необязательные зависимости: - Нет -
-
-
-

- Udev -

-
- -
-
- Установка зависит от: - Acl, Bash, Binutils, Coreutils, - Diffutils, Gawk, GCC, Glibc, Gperf, Grep, Jinja2, Libcap, - Libxcrypt, Meson, OpenSSL, Pkgconf, Sed, Util-linux и - Zstd -
-
-
-
- -
-
- Требуется во время - выполнения: Acl, Glibc, - Libcap, OpenSSL и Util-linux -
-
-
-
- -
-
- Набор тестов зависит от: - Нет -
-
-
-
- -
-
- Должен быть установлен до: - Util-linux -
-
-
-
- -
-
- Необязательные зависимости: - Нет -
-
-
-

- Util-linux -

-
- -
-
- Установка зависит от: - Bash, Binutils, Coreutils, Diffutils, - File, Findutils, Gawk, GCC, Gettext, Glibc, Grep, Make, - Ncurses, Pkgconf, Sed, Udev и - Zlib -
-
-
-
- -
-
- Требуется во время - выполнения: Glibc, Ncurses, - Readline, Udev и Zlib -
-
-
-
- -
-
- Набор тестов зависит от: - Нет -
-
-
-
- -
-
- Должен быть установлен до: - Нет -
-
-
-
- -
-
- Необязательные зависимости: - Libcap-NG, - libeconf, - libuser, libutempter, - - Linux-PAM, - smartmontools и - slang -
-
-
-

- Vim -

-
- -
-
- Установка зависит от: - Acl, Attr, Bash, Binutils, Coreutils, - Diffutils, GCC, Glibc, Grep, Make, Ncurses и Sed -
-
-
-
- -
-
- Требуется во время - выполнения: Acl, Attr, Glibc, - Python, Ncurses и Tcl -
-
-
-
- -
-
- Набор тестов зависит от: - Нет -
-
-
-
- -
-
- Должен быть установлен до: - Нет -
-
-
-
- -
-
- Необязательные зависимости: - - Xorg, - GTK+2, LessTif, - Ruby и - GPM -
-
-
-

- wheel -

-
- -
-
- Установка зависит от: - Python и Flit-core -
-
-
-
- -
-
- Требуется во время - выполнения: Python -
-
-
-
- -
-
- Набор тестов зависит от: - Набор тестов недоступен -
-
-
-
- -
-
- Должен быть установлен до: - Нет -
-
-
-
- -
-
- Необязательные зависимости: - Нет -
-
-
-

- XML::Parser -

-
- -
-
- Установка зависит от: - Bash, Binutils, Coreutils, Expat, GCC, - Glibc, Make и Perl -
-
-
-
- -
-
- Требуется во время - выполнения: Expat, Glibc и - Perl -
-
-
-
- -
-
- Набор тестов зависит от: - Perl -
-
-
-
- -
-
- Должен быть установлен до: - Intltool -
-
-
-
- -
-
- Необязательные зависимости: - Нет -
-
-
-

- Xz -

-
- -
-
- Установка зависит от: - Bash, Binutils, Coreutils, Diffutils, - GCC, Glibc и Make -
-
-
-
- -
-
- Требуется во время - выполнения: Glibc -
-
-
-
- -
-
- Набор тестов зависит от: - Нет -
-
-
-
- -
-
- Должен быть установлен до: - File, GRUB, Kmod, Libelf, Man-DB и - Udev -
-
-
-
- -
-
- Необязательные зависимости: - Нет -
-
-
-

- Zlib -

-
- -
-
- Установка зависит от: - Bash, Binutils, Coreutils, GCC, Glibc, - Make и Sed -
-
-
-
- -
-
- Требуется во время - выполнения: Glibc -
-
-
-
- -
-
- Набор тестов зависит от: - Нет -
-
-
-
- -
-
- Должен быть установлен до: - File, Kmod, Libelf, Perl и - Util-linux -
-
-
-
- -
-
- Необязательные зависимости: - Нет -
-
-
-

- Zstd -

-
- -
-
- Установка зависит от: - Binutils, Coreutils, GCC, Glibc, Gzip, - Make, Xz и Zlib -
-
-
-
- -
-
- Требуется во время - выполнения: Glibc -
-
-
-
- -
-
- Набор тестов зависит от: - Нет -
-
-
-
- -
-
- Должен быть установлен до: - GCC, Libelf и Udev -
-
-
-
- -
-
- Необязательные зависимости: - LZ4 -
-
-
-
-
-
-
-
-

- Приложение D. Скрипты загрузки и - настройки системы-20230728 -

-
-
-
-

- Скрипты в приложении перечислены с указанием каталога, в котором - они обычно находятся. Порядок такой: /etc/rc.d/init.d, /etc/sysconfig, /etc/sysconfig/network-devices, и /etc/sysconfig/network-devices/services. В - каждом разделе файлы перечислены в том порядке, в котором они - обычно вызываются. -

-
-
-
-
-

- D.1. /etc/rc.d/init.d/rc -

-
-
-
-

- Скрипт rc это первый скрипт, - вызываемый системой инициализации init и инициирующий процесс загрузки. -

-
#!/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
-# Updates     : Bruce Dubbs - bdubbs AT linuxfromscratch D0T org
-#             : Pierre Labastie - pierre AT linuxfromscratch D0T org
-#
-# Version     : LFS 7.0
-#
-# Notes       : Updates March 24th, 2022: new semantics of S/K files
-#               - Instead of testing that S scripts were K scripts in the
-#                 previous runlevel, test that they were not S scripts
-#               - Instead of testing that K scripts were S scripts in the
-#                 previous runlevel, test that they were not K scripts
-#               - S scripts in runlevel 0 or 6 are now run with
-#                "script start" (was "script stop" previously).
-########################################################################
-
-. /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@lists.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 /run/interactive ] && source /run/interactive
-
-# Stop all services marked as K, except if marked as K in the previous
-# runlevel: it is the responsibility of the script to not try to kill
-# a non running service
-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]}
-      [ -e /etc/rc.d/rc${previous}.d/K[0-9][0-9]$suffix ] && continue
-
-      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 services marked as S in this runlevel, except if marked as
-# S in the previous runlevel
-# it is the responsibility of the script to not try to start an already running
-# service
-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]}
-      [ -e /etc/rc.d/rc${previous}.d/S[0-9][0-9]$suffix ] && continue
-   fi
-
-   check_script_status
-   if [ "${SCRIPT_STAT}" == "1" ]; then
-      SCRIPT_STAT="0"
-      continue
-   fi
-
-   run ${i} start
-
-   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\"" > /run/interactive
-else
-    rm -f /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) responsibility
-        # 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) responsibility
-    # 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.
-
-            progname=${program##*/}
-
-            if [[ -e "/run/${progname}.pid" ]]; then
-                pidfile="/run/${progname}.pid"
-                rm -f "${pidfile}"
-            fi
-
-            # 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 "/run/${progname}.pid" ]; then
-                rm -f "/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 "/run/${progname}.pid" ]; then
-            pidfile="/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 "/run/${base}.pid" ]; then
-         /bin/echo -e "${WARNING}${1} is not running but" \
-            "/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 failure 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} ]                                            #
-#                                                                              #
-# 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 of -{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 : Ensure proc, sysfs, run, and dev are mounted
-#
-# Authors     : Gerard Beekmans - gerard AT linuxfromscratch D0T org
-#               DJ Lucas - dj AT linuxfromscratch D0T org
-# Update      : Bruce Dubbs - bdubbs AT linuxfromscratch D0T org
-#               Xi Ruoyao - xry111@xry111.site
-#
-# Version     : LFS 12.0
-#
-########################################################################
-
-### BEGIN INIT INFO
-# Provides:            mountvirtfs
-# Required-Start:      $first
-# Should-Start:
-# Required-Stop:
-# Should-Stop:
-# Default-Start:       S
-# Default-Stop:
-# Short-Description:   Mounts various special fs needed at start
-# Description:         Mounts /sys and /proc virtual (kernel) filesystems.
-#                      Mounts /run (tmpfs) and /dev (devtmpfs).
-#                      This is done only if they are not already mounted.
-#                      with the kernel config proposed in the book, dev
-#                      should be automatically mounted by the kernel.
-# 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 
-      chmod 1777 /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
-
-      mkdir -p /dev/shm
-      log_info_msg2 " ${INFO}/dev/shm"
-      mount -o nosuid,nodev /dev/shm || failed=1
-
-      mkdir -p /sys/fs/cgroup
-      log_info_msg2 " ${INFO}/sys/fs/cgroup"
-      mount -o nosuid,noexec,nodev /sys/fs/cgroup || failed=1
-
-      (exit ${failed})
-      evaluate_retval
-      if [ "${failed}" = 1 ]; then
-         exit 1
-      fi
-
-      log_info_msg "Create symlinks in /dev targeting /proc: ${INFO}/dev/stdin"
-      ln -sf /proc/self/fd/0 /dev/stdin  || failed=1
-
-      log_info_msg2 " ${INFO}/dev/stdout"
-      ln -sf /proc/self/fd/1 /dev/stdout || failed=1
-
-      log_info_msg2 " ${INFO}/dev/stderr"
-      ln -sf /proc/self/fd/2 /dev/stderr || failed=1
-
-      log_info_msg2 " ${INFO}/dev/fd"
-      ln -sf /proc/self/fd   /dev/fd     || failed=1
-
-      if [ -e /proc/kcore ]; then
-         log_info_msg2 " ${INFO}/dev/core"
-         ln -sf /proc/kcore  /dev/core   || failed=1
-      fi
-
-      (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
-# 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
-      grep -E -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
-#               Xi Ruoyao - xry111@xry111.site
-#
-# Version     : LFS 12.0
-#
-########################################################################
-
-### BEGIN INIT INFO
-# Provides:            udev $time
-# Required-Start:      localnet
-# 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
-      SYSTEMD_LOG_TARGET=kmsg /sbin/udevd --daemon
-
-      # Now traverse /sys in order to "coldplug" devices that have
-      # already been discovered
-      /bin/udevadm trigger --action=add    --type=subsystems
-      /bin/udevadm trigger --action=add    --type=devices
-      /bin/udevadm trigger --action=change --type=devices
-
-      # Now wait for udevd to process the uevents we triggered
-      if ! is_true "$OMIT_UDEV_SETTLE"; then
-         /bin/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:         $local_fs
-# Default-Start:       S
-# Default-Stop:        0 6
-# Short-Description:   Activates and deactivates swap partitions.
-# Description:         Activates and deactivates 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
-### 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
-# Should-Start:
-# Required-Stop:
-# Should-Stop:
-# Default-Start:       S
-# Default-Stop:
-# Short-Description:   Checks local filesystems before mounting.
-# Description:         Checks local filesystems 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:        modules
-# Required-Stop:       localnet
-# 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..."
-      failed=0
-      mount --all --test-opts no_netdev >/dev/null || failed=1
-      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 devices 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
-      if [ -r /etc/mdadm.conf ]; then
-         log_info_msg "Mark arrays as clean..."
-         mdadm --wait-clean --scan
-         evaluate_retval
-      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 cleanfs
-# 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..."
-
-      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
-            /bin/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
-         /bin/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 /run, /var/lock, and
-#                      optionally, /tmp.  cleanfs also creates /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
-
-      > /run/utmp
-
-      if grep -q '^utmp:' /etc/group ; then
-         chmod 664 /run/utmp
-         chgrp utmp /run/utmp
-      fi
-
-      (exit ${failed})
-      evaluate_retval
-
-      if grep -E -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:      $local_fs
-# Should-Start:        udev_retry
-# 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
-
-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:      mountvirtfs
-# Should-Start:        modules
-# 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:        console
-# 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:      $first localnet
-# Should-Start:
-# Required-Stop:       $local_fs
-# Should-Stop:         sendsignals
-# Default-Start:       2 3 4 5
-# Default-Stop:        0 1 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
-
-. /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 localnet swap
-# Should-Start:        $syslog firewalld iptables nftables
-# Required-Stop:       $local_fs localnet swap
-# Should-Stop:         $syslog firewalld iptables nftables
-# Default-Start:       2 3 4 5
-# Default-Stop:        0 1 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)
-      # if the default route exists, network is already configured
-      if ip route | grep -q "^default"; then return 0; fi
-      # 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
-
-         # See if interface exists
-         if [ ! -e /sys/class/net/$interface ]; then continue; fi
-
-         # Is interface UP?
-         ip link show $interface 2>/dev/null | grep -q "state UP"
-         if [ $? -ne 0 ];  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)
-      omit=$(pidof mdmon)
-      [ -n "$omit" ] && omit="-o $omit"
-
-      log_info_msg "Sending all processes the TERM signal..."
-      killall5 -15 $omit
-      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 $omit
-      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
-# Updates     : Bruce Dubbs - bdubbs AT linuxfromscratch D0T org
-#             : Pierre Labastie - pierre AT linuxfromscratch D0T org
-#
-# Version     : LFS 7.0
-#
-# Notes       : Update March 24th, 2022: change "stop" to "start".
-#               Add the $last facility to Required-start
-#
-########################################################################
-
-### BEGIN INIT INFO
-# Provides:            reboot
-# Required-Start:      $last
-# 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
-   start)
-      log_info_msg "Restarting system..."
-      reboot -d -f -i
-      ;;
-
-   *)
-      echo "Usage: ${0} {start}"
-      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
-#             : Pierre Labastie - pierre AT linuxfromscratch D0T org
-#
-# Version     : LFS 7.0
-#
-# Notes       : Update March 24th, 2022: change "stop" to "start".
-#               Add the $last facility to Required-start
-#
-########################################################################
-
-### BEGIN INIT INFO
-# Provides:            halt
-# Required-Start:      $last
-# 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
-   start)
-      halt -d -f -i -p
-      ;;
-
-   *)
-      echo "Usage: {start}"
-      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..."
-    # if it is possible to use start_daemon
-      start_daemon fully_qualified_path
-    # if it is not possible to use start_daemon
-    # (command to start the daemon is not simple enough)
-      if ! pidofproc daemon_name_as_reported_by_ps >/dev/null; then
-         command_to_start_the_service
-      fi
-      evaluate_retval
-      ;;
-
-   stop)
-      log_info_msg "Stopping..."
-    # if it is possible to use killproc
-      killproc fully_qualified_path
-    # if it is not possible to use killproc
-    # (the daemon shouldn't be stopped by killing it)
-      if pidofproc daemon_name_as_reported_by_ps >/dev/null; then
-         command_to_stop_the_service
-      fi
-      evaluate_retval
-      ;;
-
-   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 device
-#                       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
-#               DJ Lucas - dj 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()
-{
-  log_info_msg "Bringing up the ${1} interface..."
-
-  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 "Interface ${IFACE} doesn't exist."
-     exit 1
-  fi
-
-  evaluate_retval
-}
-
-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
-
-if [ ! -r "${file}" ]; then
-   log_failure_msg "Unable to bring up ${1} interface! ${file} is missing or cannot be accessed."
-   exit 1
-fi
-
-.  $file
-
-if [ "$IFACE" = "" ]; then
-   log_failure_msg "Unable to bring up ${1} interface! ${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
-   exit 0
-fi
-
-# Bring up the interface
-if [ "$VIRTINT" != "yes" ]; then
-   up ${IFACE}
-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
-
-# Set link up virtual interfaces
-if [ "${VIRTINT}" == "yes" ]; then
-   up ${IFACE}
-fi
-
-# Bring up any additional interface components
-for I in $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_warning_msg "Gateway already setup; skipping."
-   else
-      log_info_msg "Adding default gateway ${GATEWAY} to the ${IFACE} interface..."
-      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
-         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
-
-
-
-
-
-
-
-

- Приложение E. Правила настройки Udev -

-
-
-
-

- Правила в этом приложении перечислены для удобства. Установка - обычно выполняются с помощью инструкций приведенных в Раздел 8.74, «Udev из - Systemd-254». -

-
-
-
-
-

- 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"
-
-
-
-
-
-
-
-
-

- Приложение F. Лицензии LFS -

-
-
-
-

- Настоящая книга распространяется на условиях лицензии Creative - Commons Attribution-NonCommercial-ShareAlike 2.0 License. -

-

- Инструкции, предназначенные для использования на компьютере, - могут использоваться отдельно от книги на условиях лицензии MIT. -

-
-
-
-
-

- F.1. Лицензия Creative Commons -

-
-
-
-

- Creative Commons Legal Code -

-

- Attribution-NonCommercial-ShareAlike 2.0 -

-
-

- Важно -

-

- 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. -
-
-
-

- Важно -

-

- 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. Лицензия MIT -

-
-
-
-

- Copyright © 1999-2023 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. -

-
-
-
-
-
-
-
-

- Предметный указатель -

-
-
-
-
-

- Пакеты -

- -

- Программы -

- -

- Библиотеки -

- -

- Скрипты -

- -

- Разное -

- -
-
-
- - diff --git a/lfs-12.0-sysv/LFS-BOOK.pdf b/lfs-12.0-sysv/LFS-BOOK.pdf deleted file mode 100755 index d0e49fd..0000000 Binary files a/lfs-12.0-sysv/LFS-BOOK.pdf and /dev/null differ diff --git a/lfs-12.0-sysv/appendices/acknowledgments.html b/lfs-12.0-sysv/appendices/acknowledgments.html deleted file mode 100644 index 9acfcc0..0000000 --- a/lfs-12.0-sysv/appendices/acknowledgments.html +++ /dev/null @@ -1,621 +0,0 @@ - - - - - - Приложение B. Благодарности - - - - - - - - -
-

- B. Благодарности -

-

- Мы хотели бы поблагодарить следующих людей и организации за их вклад - в проект Linux From Scratch. -

-
-
    -
  • -

    - Gerard Beekmans - <gerard AT linuxfromscratch D0T org> – Основатель проекта LFS -

    -
  • -
  • -

    - Bruce Dubbs - <bdubbs AT linuxfromscratch D0T org> – Главный редактор LFS -

    -
  • -
  • -

    - Jim - Gifford <jim AT linuxfromscratch D0T org> – Второй - руководитель проекта CLFS -

    -
  • -
  • -

    - Pierre Labastie - <pierre AT linuxfromscratch D0T org> – Редактор BLFS и - руководитель ALFS -

    -
  • -
  • -

    - DJ - Lucas <dj AT linuxfromscratch D0T org> – Редактор проектов - LFS и BLFS -

    -
  • -
  • -

    - Ken - Moffat <ken AT linuxfromscratch D0T org> – Редактор BLFS -

    -
  • -
  • -

    - Бесчисленное множество других людей из различных списков - рассылки проектов LFS и BLFS, которые помогали в создании этой - книги, присылая свои предложения, проверяя книгу и отправляя - отчеты об ошибках, инструкции и собственный опыт установки - различных пакетов. -

    -
  • -
-
-

- Переводчики -

-
-
    -
  • -

    - Manuel - Canales Esparcia <macana AT macana-es D0T com> – Перевод - проекта LFS на испанский язык -

    -
  • -
  • -

    - Johan - Lenglet <johan AT linuxfromscratch D0T org> – Перевод - проекта LFS на французский язык до 2008 г. -

    -
  • -
  • -

    - Jean-Philippe - Mengual <jmengual AT linuxfromscratch D0T org> – Перевод - проекта LFS на французский язык 2008-2016 гг -

    -
  • -
  • -

    - Julien Lepiller - <jlepiller AT linuxfromscratch D0T org> – Перевод проекта LFS на - французский язык с 2017-по настоящее время -

    -
  • -
  • -

    - Anderson Lizardo - <lizardo AT linuxfromscratch D0T org> – Перевод проекта LFS на - португальский язык до 2022 г. -

    -
  • -
  • -

    - Jamenson - Espindula <jafesp AT gmail D0T com> – Перевод проекта LFS на - португальский язык 2022-по настоящее время -

    -
  • -
  • -

    - Thomas - Reitelbach <tr AT erdfunkstelle D0T de> – Перевод проекта - LFS на немецкий язык -

    -
  • -
  • -

    - Anton Maisak - <info AT linuxfromscratch D0T ru> – Перевод проекта LFS на - русский язык 2018-2020 гг -

    -
  • -
  • -

    - Elena Shevcova - <info AT linuxfromscratch D0T ru> – Перевод проекта LFS на - русский язык 2018-2020 гг -

    -
  • -
  • -

    - Vladimir Pertsev - <info AT linuxfromscratch D0T ru> – Перевод проекта LFS на - русский язык 2022-по настоящее время -

    -
  • -
-
-

- Зеркала проекта -

-

- Североамериканские зеркала -

-
-
    -
  • -

    - Scott - Kveton <scott AT osuosl D0T org> – зеркало - lfs.oregonstate.edu -

    -
  • -
  • -

    - William Astle - <lost AT l-w D0T net> – зеркало ca.linuxfromscratch.org -

    -
  • -
  • -

    - Eujon - Sellers <jpolen@rackspace.com> – зеркало - lfs.introspeed.com -

    -
  • -
  • -

    - Justin - Knierim <tim@idge.net> – зеркало lfs-matrix.net -

    -
  • -
-
-

- Южноамериканские зеркала -

-
-
    -
  • -

    - Manuel Canales - Esparcia <manuel AT linuxfromscratch D0T org> – зеркало - lfsmirror.lfs-es.info -

    -
  • -
  • -

    - Luis - Falcon <Luis Falcon> – зеркало torredehanoi.org -

    -
  • -
-
-

- Европейские зеркала -

-
-
    -
  • -

    - Guido - Passet <guido AT primerelay D0T net> – зеркало - nl.linuxfromscratch.org -

    -
  • -
  • -

    - Bastiaan - Jacques <baafie AT planet D0T nl> – зеркало - lfs.pagefault.net -

    -
  • -
  • -

    - Sven - Cranshoff <sven D0T cranshoff AT lineo D0T be> – зеркало - lfs.lineo.be -

    -
  • -
  • -

    - Scarlet Belgium – зеркало lfs.scarlet.be -

    -
  • -
  • -

    - Sebastian - Faulborn <info AT aliensoft D0T org> – зеркало - lfs.aliensoft.org -

    -
  • -
  • -

    - Stuart Fox - <stuart AT dontuse D0T ms> – зеркало lfs.dontuse.ms -

    -
  • -
  • -

    - Ralf - Uhlemann <admin AT realhost D0T de> – зеркало - lfs.oss-mirror.org -

    -
  • -
  • -

    - Antonin Sprinzl - <Antonin D0T Sprinzl AT tuwien D0T ac D0T at> – зеркало - at.linuxfromscratch.org -

    -
  • -
  • -

    - Fredrik - Danerklint <fredan-lfs AT fredan D0T org> – зеркало - se.linuxfromscratch.org -

    -
  • -
  • -

    - Franck - <franck AT linuxpourtous D0T com> – зеркало - lfs.linuxpourtous.com -

    -
  • -
  • -

    - Philippe Baque - <baque AT cict D0T fr> – зеркало lfs.cict.fr -

    -
  • -
  • -

    - Benjamin - Heil <kontakt AT wankoo D0T org> – зеркало lfs.wankoo.org -

    -
  • -
  • -

    - Vladimir Pertsev - <info AT linuxfromscratch D0T ru> – зеркало - mirror.linuxfromscratch.ru -

    -
  • -
-
-

- Азиатские зеркала -

-
-
    -
  • -

    - Satit - Phermsawang <satit AT wbac D0T ac D0T th> – зеркало - lfs.phayoune.org -

    -
  • -
  • -

    - Shizunet - Co.,Ltd. <info AT shizu-net D0T jp> – зеркало - lfs.mirror.shizu-net.jp -

    -
  • -
-
-

- Австралийские зеркала -

-
-
    -
  • -

    - Jason - Andrade <jason AT dstc D0T edu D0T au> – зеркало - au.linuxfromscratch.org -

    -
  • -
-
-

- Бывшие участники проекта -

-
-
    -
  • -

    - Christine Barczak - <theladyskye AT linuxfromscratch D0T org> – Редактор книги LFS -

    -
  • -
  • -

    - Archaic <archaic@linuxfromscratch.org> – Технический - писатель/редактор LFS, руководитель проекта HLFS, редактор - BLFS, Сопровождающий проекта Советы и патчи -

    -
  • -
  • -

    - Matthew Burgess - <matthew AT linuxfromscratch D0T org> – Руководитель проекта - LFS, технический писатель/редактор LFS -

    -
  • -
  • -

    - Nathan Coulson - <nathan AT linuxfromscratch D0T org> – Сопровождающий - LFS-Bootscripts -

    -
  • -
  • -

    - Timothy Bauscher -

    -
  • -
  • -

    - Robert Briggs -

    -
  • -
  • -

    - Ian Chilton -

    -
  • -
  • -

    - Jeroen Coumans - <jeroen AT linuxfromscratch D0T org> – Разработчик веб-сайта, - сопровождающий FAQ -

    -
  • -
  • -

    - Manuel Canales - Esparcia <manuel AT linuxfromscratch D0T org> – - Сопровождающий XML и XSL проектов LFS/BLFS/HLFS -

    -
  • -
  • -

    - Alex Groenewoud – Технический писатель LFS -

    -
  • -
  • -

    - Marc Heerdink -

    -
  • -
  • -

    - Jeremy Huntwork - <jhuntwork AT linuxfromscratch D0T org> – Технический писатель - LFS, сопровождающий LFS LiveCD -

    -
  • -
  • -

    - Bryan - Kadzban <bryan AT linuxfromscratch D0T org> – Технический - писатель LFS -

    -
  • -
  • -

    - Mark Hymers -

    -
  • -
  • -

    - Seth W. Klein – Сопровождающий FAQ -

    -
  • -
  • -

    - Nicholas Leippe - <nicholas AT linuxfromscratch D0T org> – Сопровождающий Wiki -

    -
  • -
  • -

    - Anderson Lizardo - <lizardo AT linuxfromscratch D0T org> – Сопровождающий движка - сайта -

    -
  • -
  • -

    - Randy - McMurchy <randy AT linuxfromscratch D0T org> – Руководитель - проекта BLFS, редактор LFS -

    -
  • -
  • -

    - Dan Nicholson - <dnicholson AT linuxfromscratch D0T org> – Редактор LFS и BLFS -

    -
  • -
  • -

    - Alexander E. - Patrakov <alexander AT linuxfromscratch D0T org> – - Технический писатель LFS, редактор интернационализации LFS, - сопровождающий LFS Live CD -

    -
  • -
  • -

    - Simon Perreault -

    -
  • -
  • -

    - Scot - Mc Pherson <scot AT linuxfromscratch D0T org> – - Сопровождающий шлюза NNTP для проекта LFS -

    -
  • -
  • -

    - Douglas R. Reno - <renodr AT linuxfromscratch D0T org> – Редактор Systemd -

    -
  • -
  • -

    - Ryan - Oliver <ryan AT linuxfromscratch D0T org> – Один из - руководителей проекта CLFS -

    -
  • -
  • -

    - Greg - Schafer <gschafer AT zip D0T com D0T au> – Технический писатель - проекта LFS и архитектор методов сборки пакетов следующего - поколения, предназначенных для 64-битной архитектуры -

    -
  • -
  • -

    - Jesse Tie-Ten-Quee – Технический писатель LFS -

    -
  • -
  • -

    - James Robertson - <jwrober AT linuxfromscratch D0T org> – Сопровождающий Bugzilla -

    -
  • -
  • -

    - Tushar Teredesai - <tushar AT linuxfromscratch D0T org> – Редактор книги BLFS, - руководитель проекта Советы и Патчи -

    -
  • -
  • -

    - Jeremy Utley - <jeremy AT linuxfromscratch D0T org> – Технический писатель - проекта LFS, сопровождающий Bugzilla, сопровождающий - LFS-Bootscripts -

    -
  • -
  • -

    - Zack - Winkles <zwinkles AT gmail D0T com> – Технический писатель - проекта LFS -

    -
  • -
-
-
- - - diff --git a/lfs-12.0-sysv/appendices/acronymlist.html b/lfs-12.0-sysv/appendices/acronymlist.html deleted file mode 100644 index 9054518..0000000 --- a/lfs-12.0-sysv/appendices/acronymlist.html +++ /dev/null @@ -1,1087 +0,0 @@ - - - - - - Приложение A. Сокращения и условные обозначения - - - - - - - - -
-

- A. Сокращения и условные - обозначения -

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

- ABI -

-
-

- Application Binary Interface - Двоичный (бинарный) - интерфейс приложений -

-
-

- ALFS -

-
-

- Automated Linux From Scratch - Проект автоматической сборки - системы LFS -

-
-

- API -

-
-

- Application Programming Interface - Программный интерфейс - приложения -

-
-

- ASCII -

-
-

- American Standard Code for Information Interchange — - Американский стандартный код для обмена информацией -

-
-

- BIOS -

-
-

- Basic Input/Output System - Базовая система ввода/вывода -

-
-

- BLFS -

-
-

- Beyond Linux From Scratch - Проект, расширяющий возможности - 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 - Коллекция компиляторов GNU -

-
-

- 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 - Совместный проект семейства - операционных систем, основанных на Linux (то есть - дистрибутивов Linux), при организации Linux Foundation, - целью которого является стандартизация их внутренней - структуры. LSB опирается на существующие спецификации, - такие как POSIX, Single UNIX Specification, и другие - открытые стандарты, при этом расширяя и дополняя их. -

-
-

- MB -

-
-

- Megabytes - Мегабайты -

-
-

- MBR -

-
-

- Master Boot Record - Главная загрузочная запись -

-
-

- MD5 -

-
-

- Message Digest 5 - 128-битный алгоритм хеширования -

-
-

- NIC -

-
-

- Network Interface Card - Сетевой адаптер -

-
-

- NLS -

-
-

- Native Language Support - Поддержка естественного языка -

-
-

- NNTP -

-
-

- Network News Transport Protocol - Сетевой транспортный - протокол новостных групп -

-
-

- NPTL -

-
-

- Native POSIX Threading Library - Библиотека потоков POSIX -

-
-

- OSS -

-
-

- Open Sound System - Унифицированный драйвер для звуковых - карт и других звуковых устройств -

-
-

- PCH -

-
-

- Pre-Compiled Headers - Предварительно скомпилированные - заголовки -

-
-

- PCRE -

-
-

- Perl Compatible Regular Expression - Регулярные выражения, - совместимые с Perl -

-
-

- 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 - Проект документации Linux -

-
-

- 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 - Виртуальный терминал -

-
-
-
- - - diff --git a/lfs-12.0-sysv/appendices/creat-comm.html b/lfs-12.0-sysv/appendices/creat-comm.html deleted file mode 100644 index 84a86b7..0000000 --- a/lfs-12.0-sysv/appendices/creat-comm.html +++ /dev/null @@ -1,579 +0,0 @@ - - - - - - F.1. Лицензия Creative Commons - - - - - - - - -
-

- F.1. Лицензия Creative Commons -

-

- Creative Commons Legal Code -

-

- Attribution-NonCommercial-ShareAlike 2.0 -

-
- [Важно] -

- Важно -

-

- 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. -
-
-
- [Важно] -

- Важно -

-

- 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/. -

-
-
- - - diff --git a/lfs-12.0-sysv/appendices/dependencies.html b/lfs-12.0-sysv/appendices/dependencies.html deleted file mode 100644 index 0eeb92c..0000000 --- a/lfs-12.0-sysv/appendices/dependencies.html +++ /dev/null @@ -1,4086 +0,0 @@ - - - - - - Приложение C. Зависимости - - - - - - - - -
-

- C. Зависимости -

-

- Каждый пакет в системе LFS для правильной сборки и установки может - ссылаться на один или несколько других пакетов. Некоторые пакеты - могут иметь циклические зависимости, то есть первый пакет зависит от - второго, который в свою очередь, зависит от первого. Именно по этой - причине, указанный порядок сборки пакетов в LFS очень важен. Цель - этой страницы - документировать зависимости каждого пакета, - собранного в LFS -

-

- Для каждого собираемого пакета существует три, а иногда и до пяти - типов зависимостей, перечисленных ниже. В первом списке перечислены - другие пакеты, которые должны быть доступны для компиляции и - установки рассматриваемого пакета. Во втором перечислены пакеты, - которые должны быть доступны, когда какие-либо программы или - библиотеки из пакета используются во время выполнения. В третьем - списке перечислены пакеты, которые в дополнение к пакетам из первого - списка должны быть доступны для запуска наборов тестов. Четвертый - список зависимостей — это пакеты, которые требуют, чтобы некий пакет - был собран и установлен по определенному пути, прежде чем они будут - собраны и установлены. В большинстве случаев это связано с тем, что - такие пакеты жестко кодируют пути к двоичным файлам в своих - сценариях. Если сборка выполняется не в том порядке, это может - привести к тому, что пути /tools/bin/[binary] будут размещены внутри - скриптов, установленных в готовой системе, что крайне нежелательно. -

-

- Последний список зависимостей - это необязательные пакеты, которые не - рассматриваются в LFS, но могут быть полезны пользователю. Эти пакеты - могут иметь дополнительные как обязательные, так и необязательные - зависимости. Такие зависимости - рекомендуется разрешать после - завершения сборки всей системы LFS. В некоторых случаях, повторная - установка некоторых таких пакетов рассматривается в BLFS. -

-

- Acl -

-
- -
-
- Установка зависит от: - Attr, Bash, Binutils, Coreutils, GCC, - Gettext, Grep, M4, Make, Perl, Sed и Texinfo -
-
-
-
- -
-
- Требуется во время выполнения: - Attr и Glibc -
-
-
-
- -
-
- Набор тестов зависит от: - Automake, Diffutils, Findutils и - Libtool -
-
-
-
- -
-
- Должен быть установлен до: - Coreutils, Sed, Tar и Vim -
-
-
-
- -
-
- Необязательные зависимости: - Нет -
-
-
-

- Attr -

-
- -
-
- Установка зависит от: - Bash, Binutils, Coreutils, GCC, Gettext, - Glibc, Grep, M4, Make, Perl, Sed и Texinfo -
-
-
-
- -
-
- Требуется во время выполнения: - Glibc -
-
-
-
- -
-
- Набор тестов зависит от: - Automake, Diffutils, Findutils и - Libtool -
-
-
-
- -
-
- Должен быть установлен до: - Acl и Libcap -
-
-
-
- -
-
- Необязательные зависимости: - Нет -
-
-
-

- Autoconf -

-
- -
-
- Установка зависит от: - Bash, Coreutils, Grep, M4, Make, Perl, Sed - и Texinfo -
-
-
-
- -
-
- Требуется во время выполнения: - Bash, Coreutils, Grep, M4, Make, Sed и - Texinfo -
-
-
-
- -
-
- Набор тестов зависит от: - Automake, Diffutils, Findutils, GCC и - Libtool -
-
-
-
- -
-
- Должен быть установлен до: - Automake и Coreutils -
-
-
-
- -
-
- Необязательные зависимости: - - Emacs -
-
-
-

- Automake -

-
- -
-
- Установка зависит от: - Autoconf, Bash, Coreutils, Gettext, Grep, - M4, Make, Perl, Sed, и Texinfo -
-
-
-
- -
-
- Требуется во время выполнения: - Bash, Coreutils, Grep, M4, Sed и - Texinfo -
-
-
-
- -
-
- Набор тестов зависит от: - Binutils, Bison, Bzip2, DejaGNU, Diffutils, - Expect, Findutils, Flex, GCC, Gettext, Gzip, Libtool и Tar -
-
-
-
- -
-
- Должен быть установлен до: - Coreutils -
-
-
-
- -
-
- Необязательные зависимости: - Нет -
-
-
-

- Bash -

-
- -
-
- Установка зависит от: - Bash, Binutils, Bison, Coreutils, - Diffutils, Gawk, GCC, Glibc, Grep, Make, Ncurses, Patch, - Readline, Sed и Texinfo -
-
-
-
- -
-
- Требуется во время выполнения: - Glibc, Ncurses и Readline -
-
-
-
- -
-
- Набор тестов зависит от: - Expect и Shadow -
-
-
-
- -
-
- Должен быть установлен до: - Нет -
-
-
-
- -
-
- Необязательные зависимости: - - Xorg -
-
-
-

- Bc -

-
- -
-
- Установка зависит от: - Bash, Binutils, Coreutils, GCC, Glibc, - Grep, Make и Readline -
-
-
-
- -
-
- Требуется во время выполнения: - Glibc, Ncurses и Readline -
-
-
-
- -
-
- Набор тестов зависит от: - Gawk -
-
-
-
- -
-
- Должен быть установлен до: - Linux -
-
-
-
- -
-
- Необязательные зависимости: - Нет -
-
-
-

- Binutils -

-
- -
-
- Установка зависит от: - Bash, Binutils, Coreutils, Diffutils, File, - Flex, Gawk, GCC, Glibc, Grep, Make, Perl, Sed, Texinfo и - Zlib -
-
-
-
- -
-
- Требуется во время выполнения: - Glibc и Zlib -
-
-
-
- -
-
- Набор тестов зависит от: - DejaGNU и Expect -
-
-
-
- -
-
- Должен быть установлен до: - Нет -
-
-
-
- -
-
- Необязательные зависимости: - Elfutils и - Jansson -
-
-
-

- Bison -

-
- -
-
- Установка зависит от: - Bash, Binutils, Coreutils, GCC, Gettext, - Glibc, Grep, M4, Make, Perl и Sed -
-
-
-
- -
-
- Требуется во время выполнения: - Glibc -
-
-
-
- -
-
- Набор тестов зависит от: - Diffutils, Findutils и Flex -
-
-
-
- -
-
- Должен быть установлен до: - Kbd и Tar -
-
-
-
- -
-
- Необязательные зависимости: - - Doxygen -
-
-
-

- Bzip2 -

-
- -
-
- Установка зависит от: - Bash, Binutils, Coreutils, Diffutils, GCC, - Glibc, Make и Patch -
-
-
-
- -
-
- Требуется во время выполнения: - Glibc -
-
-
-
- -
-
- Набор тестов зависит от: - Нет -
-
-
-
- -
-
- Должен быть установлен до: - File и Libelf -
-
-
-
- -
-
- Необязательные зависимости: - Нет -
-
-
-

- Check -

-
- -
-
- Установка зависит от: - Gawk, GCC, Grep, Make, Sed и Texinfo -
-
-
-
- -
-
- Требуется во время выполнения: - Bash и Gawk -
-
-
-
- -
-
- Набор тестов зависит от: - Нет -
-
-
-
- -
-
- Должен быть установлен до: - Нет -
-
-
-
- -
-
- Необязательные зависимости: - libsubunit -
-
-
-

- Coreutils -

-
- -
-
- Установка зависит от: - Autoconf, Automake, Bash, Binutils, - Coreutils, GCC, Gettext, Glibc, GMP, Grep, Libcap, Make, OpenSSL, - Patch, Perl, Sed и Texinfo -
-
-
-
- -
-
- Требуется во время выполнения: - Glibc -
-
-
-
- -
-
- Набор тестов зависит от: - Diffutils, E2fsprogs, Findutils, Shadow и - Util-linux -
-
-
-
- -
-
- Должен быть установлен до: - Bash, Diffutils, Findutils, Man-DB и - Udev -
-
-
-
- -
-
- Необязательные зависимости: - Expect.pm и IO::Tty -
-
-
-

- DejaGNU -

-
- -
-
- Установка зависит от: - Bash, Coreutils, Diffutils, Expect, GCC, - Grep, Make, Sed и Texinfo -
-
-
-
- -
-
- Требуется во время выполнения: - Expect и Bash -
-
-
-
- -
-
- Набор тестов зависит от: - Нет -
-
-
-
- -
-
- Должен быть установлен до: - Нет -
-
-
-
- -
-
- Необязательные зависимости: - Нет -
-
-
-

- Diffutils -

-
- -
-
- Установка зависит от: - Bash, Binutils, Coreutils, Gawk, GCC, - Gettext, Glibc, Grep, Make, Sed и Texinfo -
-
-
-
- -
-
- Требуется во время выполнения: - Glibc -
-
-
-
- -
-
- Набор тестов зависит от: - Perl -
-
-
-
- -
-
- Должен быть установлен до: - Нет -
-
-
-
- -
-
- Необязательные зависимости: - Нет -
-
-
-

- E2fsprogs -

-
- -
-
- Установка зависит от: - Bash, Binutils, Coreutils, Diffutils, Gawk, - GCC, Glibc, Grep, Gzip, Make, Pkgconf, Sed, Texinfo и - Util-linux -
-
-
-
- -
-
- Требуется во время выполнения: - Glibc и Util-linux -
-
-
-
- -
-
- Набор тестов зависит от: - Procps-ng и Psmisc -
-
-
-
- -
-
- Должен быть установлен до: - Нет -
-
-
-
- -
-
- Необязательные зависимости: - Нет -
-
-
-

- Expat -

-
- -
-
- Установка зависит от: - Bash, Binutils, Coreutils, Gawk, GCC, - Glibc, Grep, Make и Sed -
-
-
-
- -
-
- Требуется во время выполнения: - Glibc -
-
-
-
- -
-
- Набор тестов зависит от: - Нет -
-
-
-
- -
-
- Должен быть установлен до: - Python и XML::Parser -
-
-
-
- -
-
- Необязательные зависимости: - Нет -
-
-
-

- Expect -

-
- -
-
- Установка зависит от: - Bash, Binutils, Coreutils, Diffutils, GCC, - Glibc, Grep, Make, Patch, Sed и Tcl -
-
-
-
- -
-
- Требуется во время выполнения: - Glibc и Tcl -
-
-
-
- -
-
- Набор тестов зависит от: - Нет -
-
-
-
- -
-
- Должен быть установлен до: - Нет -
-
-
-
- -
-
- Необязательные зависимости: - - Tk -
-
-
-

- File -

-
- -
-
- Установка зависит от: - Bash, Binutils, Bzip2, Coreutils, - Diffutils, Gawk, GCC, Glibc, Grep, Make, Sed, Xz и Zlib -
-
-
-
- -
-
- Требуется во время выполнения: - Glibc, Bzip2, Xz и Zlib -
-
-
-
- -
-
- Набор тестов зависит от: - Нет -
-
-
-
- -
-
- Должен быть установлен до: - Нет -
-
-
-
- -
-
- Необязательные зависимости: - - libseccomp -
-
-
-

- Findutils -

-
- -
-
- Установка зависит от: - Bash, Binutils, Coreutils, GCC, Gettext, - Glibc, Grep, Make, Sed, и Texinfo -
-
-
-
- -
-
- Требуется во время выполнения: - Bash и Glibc -
-
-
-
- -
-
- Набор тестов зависит от: - DejaGNU, Diffutils и Expect -
-
-
-
- -
-
- Должен быть установлен до: - Нет -
-
-
-
- -
-
- Необязательные зависимости: - Нет -
-
-
-

- Flex -

-
- -
-
- Установка зависит от: - Bash, Binutils, Coreutils, GCC, Gettext, - Glibc, Grep, M4, Make, Patch, Sed и Texinfo -
-
-
-
- -
-
- Требуется во время выполнения: - Bash, Glibc и M4 -
-
-
-
- -
-
- Набор тестов зависит от: - Bison и Gawk -
-
-
-
- -
-
- Должен быть установлен до: - Binutils, IProute2, Kbd, Kmod и - Man-DB -
-
-
-
- -
-
- Необязательные зависимости: - Нет -
-
-
-

- Flit-Core -

-
- -
-
- Установка зависит от: - Python -
-
-
-
- -
-
- Требуется во время выполнения: - Python -
-
-
-
- -
-
- Набор тестов зависит от: - Набор тестов недоступен -
-
-
-
- -
-
- Должен быть установлен до: - Wheel -
-
-
-
- -
-
- Необязательные зависимости: - - pytest и testpath -
-
-
-

- Gawk -

-
- -
-
- Установка зависит от: - Bash, Binutils, Coreutils, GCC, Gettext, - Glibc, GMP, Grep, Make, MPFR, Patch, Readline, Sed и - Texinfo -
-
-
-
- -
-
- Требуется во время выполнения: - Bash, Glibc и Mpfr -
-
-
-
- -
-
- Набор тестов зависит от: - Diffutils -
-
-
-
- -
-
- Должен быть установлен до: - Нет -
-
-
-
- -
-
- Необязательные зависимости: - - libsigsegv -
-
-
-

- GCC -

-
- -
-
- Установка зависит от: - Bash, Binutils, Coreutils, Diffutils, - Findutils, Gawk, GCC, Gettext, Glibc, GMP, Grep, Libxcrypt, M4, - Make, MPC, MPFR, Patch, Perl, Sed, Tar, Texinfo и Zstd -
-
-
-
- -
-
- Требуется во время выполнения: - Bash, Binutils, Glibc, Mpc и Python -
-
-
-
- -
-
- Набор тестов зависит от: - DejaGNU, Expect и Shadow -
-
-
-
- -
-
- Должен быть установлен до: - Нет -
-
-
-
- -
-
- Необязательные зависимости: - GDC, GNAT, и ISL -
-
-
-

- GDBM -

-
- -
-
- Установка зависит от: - Bash, Binutils, Coreutils, Diffutils, GCC, - Grep, Make и Sed -
-
-
-
- -
-
- Требуется во время выполнения: - Bash, Glibc и Readline -
-
-
-
- -
-
- Набор тестов зависит от: - Нет -
-
-
-
- -
-
- Должен быть установлен до: - Нет -
-
-
-
- -
-
- Необязательные зависимости: - Нет -
-
-
-

- Gettext -

-
- -
-
- Установка зависит от: - Bash, Binutils, Coreutils, Gawk, GCC, - Glibc, Grep, Make, Ncurses, Sed и Texinfo -
-
-
-
- -
-
- Требуется во время выполнения: - Acl, Bash, Gcc и Glibc -
-
-
-
- -
-
- Набор тестов зависит от: - Diffutils, Perl и Tcl -
-
-
-
- -
-
- Должен быть установлен до: - Automake и Bison -
-
-
-
- -
-
- Необязательные зависимости: - Нет -
-
-
-

- Glibc -

-
- -
-
- Установка зависит от: - Bash, Binutils, Bison, Coreutils, - Diffutils, Gawk, GCC, Gettext, Grep, Gzip, Linux API Headers, - Make, Perl, Python, Sed и Texinfo -
-
-
-
- -
-
- Требуется во время выполнения: - Нет -
-
-
-
- -
-
- Набор тестов зависит от: - File -
-
-
-
- -
-
- Должен быть установлен до: - Нет -
-
-
-
- -
-
- Необязательные зависимости: - Нет -
-
-
-

- GMP -

-
- -
-
- Установка зависит от: - Bash, Binutils, Coreutils, Diffutils, Gawk, - GCC, Glibc, Grep, M4, Make, Sed и Texinfo -
-
-
-
- -
-
- Требуется во время выполнения: - GCC и Glibc -
-
-
-
- -
-
- Набор тестов зависит от: - Нет -
-
-
-
- -
-
- Должен быть установлен до: - MPFR и GCC -
-
-
-
- -
-
- Необязательные зависимости: - Нет -
-
-
-

- Gperf -

-
- -
-
- Установка зависит от: - Bash, Binutils, Coreutils, GCC, Glibc и - Make -
-
-
-
- -
-
- Требуется во время выполнения: - GCC и Glibc -
-
-
-
- -
-
- Набор тестов зависит от: - Diffutils и Expect -
-
-
-
- -
-
- Должен быть установлен до: - Нет -
-
-
-
- -
-
- Необязательные зависимости: - Нет -
-
-
-

- Grep -

-
- -
-
- Установка зависит от: - Bash, Binutils, Coreutils, Diffutils, GCC, - Gettext, Glibc, Grep, Make, Patch, Sed и Texinfo -
-
-
-
- -
-
- Требуется во время выполнения: - Glibc -
-
-
-
- -
-
- Набор тестов зависит от: - Gawk -
-
-
-
- -
-
- Должен быть установлен до: - Man-DB -
-
-
-
- -
-
- Необязательные зависимости: - - PCRE2 и - libsigsegv -
-
-
-

- Groff -

-
- -
-
- Установка зависит от: - Bash, Binutils, Bison, Coreutils, Gawk, - GCC, Glibc, Grep, Make, Patch, Sed и Texinfo -
-
-
-
- -
-
- Требуется во время выполнения: - GCC, Glibc и Perl -
-
-
-
- -
-
- Набор тестов зависит от: - Набор тестов недоступен -
-
-
-
- -
-
- Должен быть установлен до: - Man-DB и Perl -
-
-
-
- -
-
- Необязательные зависимости: - ghostscript - и - Uchardet -
-
-
-

- GRUB -

-
- -
-
- Установка зависит от: - Bash, Binutils, Bison, Coreutils, - Diffutils, GCC, Gettext, Glibc, Grep, Make, Ncurses, Sed, Texinfo - и Xz -
-
-
-
- -
-
- Требуется во время выполнения: - Bash, GCC, Gettext, Glibc, Xz и Sed. -
-
-
-
- -
-
- Набор тестов зависит от: - Нет -
-
-
-
- -
-
- Должен быть установлен до: - Нет -
-
-
-
- -
-
- Необязательные зависимости: - Нет -
-
-
-

- Gzip -

-
- -
-
- Установка зависит от: - Bash, Binutils, Coreutils, GCC, Glibc, - Grep, Make, Sed и Texinfo -
-
-
-
- -
-
- Требуется во время выполнения: - Bash и Glibc -
-
-
-
- -
-
- Набор тестов зависит от: - Diffutils и Less -
-
-
-
- -
-
- Должен быть установлен до: - Man-DB -
-
-
-
- -
-
- Необязательные зависимости: - Нет -
-
-
-

- Iana-Etc -

-
- -
-
- Установка зависит от: - Coreutils -
-
-
-
- -
-
- Требуется во время выполнения: - Нет -
-
-
-
- -
-
- Набор тестов зависит от: - Набор тестов недоступен -
-
-
-
- -
-
- Должен быть установлен до: - Perl -
-
-
-
- -
-
- Необязательные зависимости: - Нет -
-
-
-

- Inetutils -

-
- -
-
- Установка зависит от: - Bash, Binutils, Coreutils, GCC, Glibc, - Grep, Make, Ncurses, Patch, Sed, Texinfo и Zlib -
-
-
-
- -
-
- Требуется во время выполнения: - GCC, Glibc, Ncurses и Readline -
-
-
-
- -
-
- Набор тестов зависит от: - Нет -
-
-
-
- -
-
- Должен быть установлен до: - Tar -
-
-
-
- -
-
- Необязательные зависимости: - Нет -
-
-
-

- Intltool -

-
- -
-
- Установка зависит от: - Bash, Gawk, Glibc, Make, Perl, Sed и - XML::Parser -
-
-
-
- -
-
- Требуется во время выполнения: - Autoconf, Automake, Bash, Glibc, Grep, Perl - и Sed -
-
-
-
- -
-
- Набор тестов зависит от: - Perl -
-
-
-
- -
-
- Должен быть установлен до: - Нет -
-
-
-
- -
-
- Необязательные зависимости: - Нет -
-
-
-

- IProute2 -

-
- -
-
- Установка зависит от: - Bash, Bison, Coreutils, Flex, GCC, Glibc, - Make, Libcap, Libelf, Linux API Headers и Zlib -
-
-
-
- -
-
- Требуется во время выполнения: - Bash, Coreutils, Glibc, Libcap, Libelf и - Zlib -
-
-
-
- -
-
- Набор тестов зависит от: - Набор тестов недоступен -
-
-
-
- -
-
- Должен быть установлен до: - Нет -
-
-
-
- -
-
- Необязательные зависимости: - - Berkeley DB, - iptables, libbpf, - libmnl и - libtirpc -
-
-
-

- Kbd -

-
- -
-
- Установка зависит от: - Bash, Binutils, Bison, Check, Coreutils, - Flex, GCC, Gettext, Glibc, Gzip, Make, Patch и Sed -
-
-
-
- -
-
- Требуется во время выполнения: - Bash, Coreutils и Glibc -
-
-
-
- -
-
- Набор тестов зависит от: - Нет -
-
-
-
- -
-
- Должен быть установлен до: - Нет -
-
-
-
- -
-
- Необязательные зависимости: - Нет -
-
-
-

- Kmod -

-
- -
-
- Установка зависит от: - Bash, Binutils, Bison, Coreutils, Flex, - GCC, Gettext, Glibc, Gzip, Make, OpenSSL, Pkg-config, Sed, Xz и - Zlib -
-
-
-
- -
-
- Требуется во время выполнения: - Glibc, Xz и Zlib -
-
-
-
- -
-
- Набор тестов зависит от: - Набор тестов недоступен -
-
-
-
- -
-
- Должен быть установлен до: - Udev -
-
-
-
- -
-
- Необязательные зависимости: - Нет -
-
-
-

- Less -

-
- -
-
- Установка зависит от: - Bash, Binutils, Coreutils, Diffutils, GCC, - Glibc, Grep, Make, Ncurses и Sed -
-
-
-
- -
-
- Требуется во время выполнения: - Glibc и Ncurses -
-
-
-
- -
-
- Набор тестов зависит от: - Набор тестов недоступен -
-
-
-
- -
-
- Должен быть установлен до: - Gzip -
-
-
-
- -
-
- Необязательные зависимости: - - PCRE2 или - PCRE -
-
-
-

- Libcap -

-
- -
-
- Установка зависит от: - Attr, Bash, Binutils, Coreutils, GCC, - Glibc, Perl, Make и Sed -
-
-
-
- -
-
- Требуется во время выполнения: - Glibc -
-
-
-
- -
-
- Набор тестов зависит от: - Нет -
-
-
-
- -
-
- Должен быть установлен до: - IProute2 и Shadow -
-
-
-
- -
-
- Необязательные зависимости: - - Linux-PAM -
-
-
-

- Libelf -

-
- -
-
- Установка зависит от: - Bash, Binutils, Bzip2, Coreutils, GCC, - Glibc, Make, Xz, Zlib и Zstd -
-
-
-
- -
-
- Требуется во время выполнения: - Bzip2, Glibc, Xz, Zlib и Zstd -
-
-
-
- -
-
- Набор тестов зависит от: - Нет -
-
-
-
- -
-
- Должен быть установлен до: - IProute2 и Linux -
-
-
-
- -
-
- Необязательные зависимости: - Нет -
-
-
-

- Libffi -

-
- -
-
- Установка зависит от: - Bash, Binutils, Coreutils, GCC, Glibc, Make - и Sed -
-
-
-
- -
-
- Требуется во время выполнения: - Glibc -
-
-
-
- -
-
- Набор тестов зависит от: - DejaGnu -
-
-
-
- -
-
- Должен быть установлен до: - Python -
-
-
-
- -
-
- Необязательные зависимости: - Нет -
-
-
-

- Libpipeline -

-
- -
-
- Установка зависит от: - Bash, Binutils, Coreutils, Diffutils, Gawk, - GCC, Glibc, Grep, Make, Sed и Texinfo -
-
-
-
- -
-
- Требуется во время выполнения: - Glibc -
-
-
-
- -
-
- Набор тестов зависит от: - Check и Pkgconf -
-
-
-
- -
-
- Должен быть установлен до: - Man-DB -
-
-
-
- -
-
- Необязательные зависимости: - Нет -
-
-
-

- Libtool -

-
- -
-
- Установка зависит от: - Bash, Binutils, Coreutils, Diffutils, Gawk, - GCC, Glibc, Grep, Make, Sed и Texinfo -
-
-
-
- -
-
- Требуется во время выполнения: - Autoconf, Automake, Bash, Binutils, - Coreutils, File, GCC, Glibc, Grep, Make и Sed -
-
-
-
- -
-
- Набор тестов зависит от: - Autoconf, Automake и Findutils -
-
-
-
- -
-
- Должен быть установлен до: - Нет -
-
-
-
- -
-
- Необязательные зависимости: - Нет -
-
-
-

- Libxcrypt -

-
- -
-
- Установка зависит от: - Bash, Binutils, Coreutils, Diffutils, Gawk, - GCC, Glibc, Grep, Make, Perl и Sed -
-
-
-
- -
-
- Требуется во время выполнения: - Glibc -
-
-
-
- -
-
- Набор тестов зависит от: - Нет -
-
-
-
- -
-
- Должен быть установлен до: - GCC, Perl, Python, Shadow и Udev -
-
-
-
- -
-
- Необязательные зависимости: - Нет -
-
-
-

- Linux -

-
- -
-
- Установка зависит от: - Bash, Bc, Binutils, Coreutils, Diffutils, - Findutils, GCC, Glibc, Grep, Gzip, Kmod, Libelf, Make, Ncurses, - OpenSSL, Perl и Sed -
-
-
-
- -
-
- Требуется во время выполнения: - Нет -
-
-
-
- -
-
- Набор тестов зависит от: - Набор тестов недоступен -
-
-
-
- -
-
- Должен быть установлен до: - Нет -
-
-
-
- -
-
- Необязательные зависимости: - - cpio и - LLVM (с Clang) -
-
-
-

- Linux - API Headers -

-
- -
-
- Установка зависит от: - Bash, Binutils, Coreutils, Findutils, GCC, - Glibc, Grep, Gzip, Make, Perl и Sed -
-
-
-
- -
-
- Требуется во время выполнения: - Нет -
-
-
-
- -
-
- Набор тестов зависит от: - Набор тестов недоступен -
-
-
-
- -
-
- Должен быть установлен до: - Нет -
-
-
-
- -
-
- Необязательные зависимости: - Нет -
-
-
-

- M4 -

-
- -
-
- Установка зависит от: - Bash, Binutils, Coreutils, GCC, Glibc, - Grep, Make, Sed и Texinfo -
-
-
-
- -
-
- Требуется во время выполнения: - Bash и Glibc -
-
-
-
- -
-
- Набор тестов зависит от: - Diffutils -
-
-
-
- -
-
- Должен быть установлен до: - Autoconf и Bison -
-
-
-
- -
-
- Необязательные зависимости: - - libsigsegv -
-
-
-

- Make -

-
- -
-
- Установка зависит от: - Bash, Binutils, Coreutils, GCC, Gettext, - Glibc, Grep, Make, Sed, и Texinfo -
-
-
-
- -
-
- Требуется во время выполнения: - Glibc -
-
-
-
- -
-
- Набор тестов зависит от: - Perl и Procps-ng -
-
-
-
- -
-
- Должен быть установлен до: - Нет -
-
-
-
- -
-
- Необязательные зависимости: - - Guile -
-
-
-

- Man-DB -

-
- -
-
- Установка зависит от: - Bash, Binutils, Bzip2, Coreutils, Flex, - GCC, GDBM, Gettext, Glibc, Grep, Groff, Gzip, Less, Libpipeline, - Make, Pkgconf, Sed, и Xz -
-
-
-
- -
-
- Требуется во время выполнения: - Bash, GDBM, Groff, Glibc, Gzip, Less, - Libpipeline и Zlib -
-
-
-
- -
-
- Набор тестов зависит от: - Util-linux -
-
-
-
- -
-
- Должен быть установлен до: - Нет -
-
-
-
- -
-
- Необязательные зависимости: - - libseccomp и po4a -
-
-
-

- Man-Pages -

-
- -
-
- Установка зависит от: - Bash, Coreutils и Make -
-
-
-
- -
-
- Требуется во время выполнения: - Нет -
-
-
-
- -
-
- Набор тестов зависит от: - Набор тестов недоступен -
-
-
-
- -
-
- Должен быть установлен до: - Нет -
-
-
-
- -
-
- Необязательные зависимости: - Нет -
-
-
-

- Meson -

-
- -
-
- Установка зависит от: - Ninja и Python -
-
-
-
- -
-
- Требуется во время выполнения: - Python -
-
-
-
- -
-
- Набор тестов зависит от: - Набор тестов недоступен -
-
-
-
- -
-
- Должен быть установлен до: - Udev -
-
-
-
- -
-
- Необязательные зависимости: - Нет -
-
-
-

- MPC -

-
- -
-
- Установка зависит от: - Bash, Binutils, Coreutils, Diffutils, Gawk, - GCC, Glibc, Grep, GMP, Make, MPFR, Sed и Texinfo -
-
-
-
- -
-
- Требуется во время выполнения: - Glibc, GMP и MPFR -
-
-
-
- -
-
- Набор тестов зависит от: - Нет -
-
-
-
- -
-
- Должен быть установлен до: - GCC -
-
-
-
- -
-
- Необязательные зависимости: - Нет -
-
-
-

- MPFR -

-
- -
-
- Установка зависит от: - Bash, Binutils, Coreutils, Diffutils, Gawk, - GCC, Glibc, Grep, GMP, Make, Sed и Texinfo -
-
-
-
- -
-
- Требуется во время выполнения: - Glibc и GMP -
-
-
-
- -
-
- Набор тестов зависит от: - Нет -
-
-
-
- -
-
- Должен быть установлен до: - Gawk и GCC -
-
-
-
- -
-
- Необязательные зависимости: - Нет -
-
-
-

- Ncurses -

-
- -
-
- Установка зависит от: - Bash, Binutils, Coreutils, Diffutils, Gawk, - GCC, Glibc, Grep, Make, Patch и Sed -
-
-
-
- -
-
- Требуется во время выполнения: - Glibc -
-
-
-
- -
-
- Набор тестов зависит от: - Набор тестов недоступен -
-
-
-
- -
-
- Должен быть установлен до: - Bash, GRUB, Inetutils, Less, Procps-ng, - Psmisc, Readline, Texinfo, Util-linux и Vim -
-
-
-
- -
-
- Необязательные зависимости: - Нет -
-
-
-

- Ninja -

-
- -
-
- Установка зависит от: - Binutils, Coreutils, GCC и Python -
-
-
-
- -
-
- Требуется во время выполнения: - GCC и Glibc -
-
-
-
- -
-
- Набор тестов зависит от: - Нет -
-
-
-
- -
-
- Должен быть установлен до: - Meson -
-
-
-
- -
-
- Необязательные зависимости: - - Asciidoc, - Doxygen, - Emacs и re2c -
-
-
-

- OpenSSL -

-
- -
-
- Установка зависит от: - Binutils, Coreutils, GCC, Make и - Perl -
-
-
-
- -
-
- Требуется во время выполнения: - Glibc и Perl -
-
-
-
- -
-
- Набор тестов зависит от: - Нет -
-
-
-
- -
-
- Должен быть установлен до: - Coreutils, Kmod, Linux и Udev -
-
-
-
- -
-
- Необязательные зависимости: - Нет -
-
-
-

- Patch -

-
- -
-
- Установка зависит от: - Bash, Binutils, Coreutils, GCC, Glibc, - Grep, Make и Sed -
-
-
-
- -
-
- Требуется во время выполнения: - Glibc -
-
-
-
- -
-
- Набор тестов зависит от: - Diffutils -
-
-
-
- -
-
- Должен быть установлен до: - Нет -
-
-
-
- -
-
- Необязательные зависимости: - - Ed -
-
-
-

- Perl -

-
- -
-
- Установка зависит от: - Bash, Binutils, Coreutils, Gawk, GCC, GDBM, - Glibc, Grep, Groff, Libxcrypt, Make, Sed и Zlib -
-
-
-
- -
-
- Требуется во время выполнения: - GDBM, Glibc и Libxcrypt -
-
-
-
- -
-
- Набор тестов зависит от: - Iana-Etc, Less и Procps-ng -
-
-
-
- -
-
- Должен быть установлен до: - Autoconf -
-
-
-
- -
-
- Необязательные зависимости: - - Berkeley DB -
-
-
-

- Pkgconf -

-
- -
-
- Установка зависит от: - Bash, Binutils, Coreutils, Gawk, GCC, - Glibc, Grep, Make, и Sed -
-
-
-
- -
-
- Требуется во время выполнения: - Glibc -
-
-
-
- -
-
- Набор тестов зависит от: - Нет -
-
-
-
- -
-
- Должен быть установлен до: - E2fsprogs, IProute2, Kmod, Man-DB, - Procps-ng, Python, Udev и - Util-linux -
-
-
-
- -
-
- Необязательные зависимости: - Нет -
-
-
-

- Procps-ng -

-
- -
-
- Установка зависит от: - Bash, Binutils, Coreutils, GCC, Glibc, - Make, Ncurses, и Pkgconf -
-
-
-
- -
-
- Требуется во время выполнения: - Glibc -
-
-
-
- -
-
- Набор тестов зависит от: - DejaGNU -
-
-
-
- -
-
- Должен быть установлен до: - Нет -
-
-
-
- -
-
- Необязательные зависимости: - - elogind -
-
-
-

- Psmisc -

-
- -
-
- Установка зависит от: - Bash, Binutils, Coreutils, GCC, Gettext, - Glibc, Grep, Make, Ncurses и Sed -
-
-
-
- -
-
- Требуется во время выполнения: - Glibc и Ncurses -
-
-
-
- -
-
- Набор тестов зависит от: - Набор тестов недоступен -
-
-
-
- -
-
- Должен быть установлен до: - Нет -
-
-
-
- -
-
- Необязательные зависимости: - Нет -
-
-
-

- Python -

-
- -
-
- Установка зависит от: - Bash, Binutils, Coreutils, Expat, GCC, - Gdbm, Gettext, Glibc, Grep, Libffi, Libxcrypt, Make, Ncurses, - OpenSSL, Pkgconf, Sed и Util-linux -
-
-
-
- -
-
- Требуется во время выполнения: - Bzip2, Expat, Gdbm, Glibc, Libffi, - Libxcrypt, Ncurses, OpenSSL и Zlib -
-
-
-
- -
-
- Набор тестов зависит от: - GDB и Valgrind -
-
-
-
- -
-
- Должен быть установлен до: - Ninja -
-
-
-
- -
-
- Необязательные зависимости: - - Berkeley DB, - libnsl, - SQLite и - Tk -
-
-
-

- Readline -

-
- -
-
- Установка зависит от: - Bash, Binutils, Coreutils, Gawk, GCC, - Glibc, Grep, Make, Ncurses, Patch, Sed и Texinfo -
-
-
-
- -
-
- Требуется во время выполнения: - Glibc и Ncurses -
-
-
-
- -
-
- Набор тестов зависит от: - Набор тестов недоступен -
-
-
-
- -
-
- Должен быть установлен до: - Bash, Bc и Gawk -
-
-
-
- -
-
- Необязательные зависимости: - Нет -
-
-
-

- Sed -

-
- -
-
- Установка зависит от: - Bash, Binutils, Coreutils, GCC, Gettext, - Glibc, Grep, Make, Sed, и Texinfo -
-
-
-
- -
-
- Требуется во время выполнения: - Acl, Attr и Glibc -
-
-
-
- -
-
- Набор тестов зависит от: - Diffutils и Gawk -
-
-
-
- -
-
- Должен быть установлен до: - E2fsprogs, File, Libtool и Shadow -
-
-
-
- -
-
- Необязательные зависимости: - Нет -
-
-
-

- Shadow -

-
- -
-
- Установка зависит от: - Acl, Attr, Bash, Binutils, Coreutils, - Diffutils, Findutils, Gawk, GCC, Gettext, Glibc, Grep, Libcap, - Libxcrypt, Make и Sed -
-
-
-
- -
-
- Требуется во время выполнения: - Glibc и Libxcrypt -
-
-
-
- -
-
- Набор тестов зависит от: - Набор тестов недоступен -
-
-
-
- -
-
- Должен быть установлен до: - Coreutils -
-
-
-
- -
-
- Необязательные зависимости: - - CrackLib и - Linux-PAM -
-
-
-

- Sysklogd -

-
- -
-
- Установка зависит от: - Binutils, Coreutils, GCC, Glibc, Make и - Patch -
-
-
-
- -
-
- Требуется во время выполнения: - Glibc -
-
-
-
- -
-
- Набор тестов зависит от: - Набор тестов недоступен -
-
-
-
- -
-
- Должен быть установлен до: - Нет -
-
-
-
- -
-
- Необязательные зависимости: - Нет -
-
-
-

- Sysvinit -

-
- -
-
- Установка зависит от: - Binutils, Coreutils, GCC, Glibc, Make и - Sed -
-
-
-
- -
-
- Требуется во время выполнения: - Glibc -
-
-
-
- -
-
- Набор тестов зависит от: - Набор тестов недоступен -
-
-
-
- -
-
- Должен быть установлен до: - Нет -
-
-
-
- -
-
- Необязательные зависимости: - Нет -
-
-
-

- Tar -

-
- -
-
- Установка зависит от: - Acl, Attr, Bash, Binutils, Bison, - Coreutils, GCC, Gettext, Glibc, Grep, Inetutils, Make, Sed и - Texinfo -
-
-
-
- -
-
- Требуется во время выполнения: - Acl, Attr, Bzip2, Glibc, Gzip и Xz -
-
-
-
- -
-
- Набор тестов зависит от: - Autoconf, Diffutils, Findutils, Gawk и - Gzip -
-
-
-
- -
-
- Должен быть установлен до: - Нет -
-
-
-
- -
-
- Необязательные зависимости: - Нет -
-
-
-

- Tcl -

-
- -
-
- Установка зависит от: - Bash, Binutils, Coreutils, Diffutils, GCC, - Glibc, Grep, Make и Sed -
-
-
-
- -
-
- Требуется во время выполнения: - Glibc и Zlib -
-
-
-
- -
-
- Набор тестов зависит от: - Нет -
-
-
-
- -
-
- Должен быть установлен до: - Нет -
-
-
-
- -
-
- Необязательные зависимости: - Нет -
-
-
-

- Texinfo -

-
- -
-
- Установка зависит от: - Bash, Binutils, Coreutils, GCC, Gettext, - Glibc, Grep, Make, Ncurses, Patch и Sed -
-
-
-
- -
-
- Требуется во время выполнения: - Glibc и Ncurses -
-
-
-
- -
-
- Набор тестов зависит от: - Нет -
-
-
-
- -
-
- Должен быть установлен до: - Нет -
-
-
-
- -
-
- Необязательные зависимости: - Нет -
-
-
-

- Udev -

-
- -
-
- Установка зависит от: - Acl, Bash, Binutils, Coreutils, Diffutils, - Gawk, GCC, Glibc, Gperf, Grep, Jinja2, Libcap, Libxcrypt, Meson, - OpenSSL, Pkgconf, Sed, Util-linux и Zstd -
-
-
-
- -
-
- Требуется во время выполнения: - Acl, Glibc, Libcap, OpenSSL и - Util-linux -
-
-
-
- -
-
- Набор тестов зависит от: - Нет -
-
-
-
- -
-
- Должен быть установлен до: - Util-linux -
-
-
-
- -
-
- Необязательные зависимости: - Нет -
-
-
-

- Util-linux -

-
- -
-
- Установка зависит от: - Bash, Binutils, Coreutils, Diffutils, File, - Findutils, Gawk, GCC, Gettext, Glibc, Grep, Make, Ncurses, - Pkgconf, Sed, Udev и Zlib -
-
-
-
- -
-
- Требуется во время выполнения: - Glibc, Ncurses, Readline, Udev и Zlib -
-
-
-
- -
-
- Набор тестов зависит от: - Нет -
-
-
-
- -
-
- Должен быть установлен до: - Нет -
-
-
-
- -
-
- Необязательные зависимости: - Libcap-NG, - libeconf, libuser, libutempter, - - Linux-PAM, - smartmontools и - slang -
-
-
-

- Vim -

-
- -
-
- Установка зависит от: - Acl, Attr, Bash, Binutils, Coreutils, - Diffutils, GCC, Glibc, Grep, Make, Ncurses и Sed -
-
-
-
- -
-
- Требуется во время выполнения: - Acl, Attr, Glibc, Python, Ncurses и - Tcl -
-
-
-
- -
-
- Набор тестов зависит от: - Нет -
-
-
-
- -
-
- Должен быть установлен до: - Нет -
-
-
-
- -
-
- Необязательные зависимости: - - Xorg, GTK+2, - LessTif, - Ruby и - GPM -
-
-
-

- wheel -

-
- -
-
- Установка зависит от: - Python и Flit-core -
-
-
-
- -
-
- Требуется во время выполнения: - Python -
-
-
-
- -
-
- Набор тестов зависит от: - Набор тестов недоступен -
-
-
-
- -
-
- Должен быть установлен до: - Нет -
-
-
-
- -
-
- Необязательные зависимости: - Нет -
-
-
-

- XML::Parser -

-
- -
-
- Установка зависит от: - Bash, Binutils, Coreutils, Expat, GCC, - Glibc, Make и Perl -
-
-
-
- -
-
- Требуется во время выполнения: - Expat, Glibc и Perl -
-
-
-
- -
-
- Набор тестов зависит от: - Perl -
-
-
-
- -
-
- Должен быть установлен до: - Intltool -
-
-
-
- -
-
- Необязательные зависимости: - Нет -
-
-
-

- Xz -

-
- -
-
- Установка зависит от: - Bash, Binutils, Coreutils, Diffutils, GCC, - Glibc и Make -
-
-
-
- -
-
- Требуется во время выполнения: - Glibc -
-
-
-
- -
-
- Набор тестов зависит от: - Нет -
-
-
-
- -
-
- Должен быть установлен до: - File, GRUB, Kmod, Libelf, Man-DB и - Udev -
-
-
-
- -
-
- Необязательные зависимости: - Нет -
-
-
-

- Zlib -

-
- -
-
- Установка зависит от: - Bash, Binutils, Coreutils, GCC, Glibc, Make - и Sed -
-
-
-
- -
-
- Требуется во время выполнения: - Glibc -
-
-
-
- -
-
- Набор тестов зависит от: - Нет -
-
-
-
- -
-
- Должен быть установлен до: - File, Kmod, Libelf, Perl и - Util-linux -
-
-
-
- -
-
- Необязательные зависимости: - Нет -
-
-
-

- Zstd -

-
- -
-
- Установка зависит от: - Binutils, Coreutils, GCC, Glibc, Gzip, - Make, Xz и Zlib -
-
-
-
- -
-
- Требуется во время выполнения: - Glibc -
-
-
-
- -
-
- Набор тестов зависит от: - Нет -
-
-
-
- -
-
- Должен быть установлен до: - GCC, Libelf и Udev -
-
-
-
- -
-
- Необязательные зависимости: - LZ4 -
-
-
-
- - - diff --git a/lfs-12.0-sysv/appendices/licenses.html b/lfs-12.0-sysv/appendices/licenses.html deleted file mode 100644 index 7fe65f2..0000000 --- a/lfs-12.0-sysv/appendices/licenses.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - - - Приложение F. Лицензии LFS - - - - - - - - -
-

- F. Лицензии LFS -

-

- Настоящая книга распространяется на условиях лицензии Creative - Commons Attribution-NonCommercial-ShareAlike 2.0 License. -

-

- Инструкции, предназначенные для использования на компьютере, могут - использоваться отдельно от книги на условиях лицензии MIT. -

-
- - - diff --git a/lfs-12.0-sysv/appendices/mit.html b/lfs-12.0-sysv/appendices/mit.html deleted file mode 100644 index 589e990..0000000 --- a/lfs-12.0-sysv/appendices/mit.html +++ /dev/null @@ -1,106 +0,0 @@ - - - - - - F.2. Лицензия MIT - - - - - - - - -
-

- F.2. Лицензия MIT -

-

- Copyright © 1999-2023 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. -

-
- - - diff --git a/lfs-12.0-sysv/chapter01/askforhelp.html b/lfs-12.0-sysv/chapter01/askforhelp.html deleted file mode 100644 index b145350..0000000 --- a/lfs-12.0-sysv/chapter01/askforhelp.html +++ /dev/null @@ -1,264 +0,0 @@ - - - - - - 1.5. Помощь - - - - - - - - -
-

- 1.5. - Помощь -

-
- [Примечание] -

- Примечание -

-

- Если вы столкнулись с проблемой при сборки одного пакета с помощью - инструкцией из LFS, мы настоятельно не рекомендуем публиковать - проблему непосредственно в канале поддержки разработчиков пакета до - обсуждения через канал поддержки LFS, указанный в Раздел 1.4, - «Ресурсы». Часто это неэффективно, потому что разработчики - редко знакомы с процедурой сборки LFS. Даже если вы действительно - столкнулись с проблемой в пакете, сообщество LFS все равно может - помочь выделить информацию, необходимую специалистам по поддержке - пакета, и составить соответствующий отчет. -

-

- Если вам нужно задать вопрос напрямую через канал поддержки пакета, - вы должны, по крайней мере, понимать, что многие проекты имеют - каналы поддержки, отделенные от системы отслеживания ошибок. Отчеты - об «ошибках» - при отправке вопросов считаются недействительными и могут - раздражать разработчиков этих проектов. -

-
-

- Если при работе с этой книгой у вас возникнут проблемы или вопросы, - посетите страницу часто задаваемых вопросов по адресу https://mirror.linuxfromscratch.ru/faq/#generalfaq. - Часто там уже есть ответы на большинство вопросов. Если на этой - странице нет ответа на ваш вопрос, попробуйте самостоятельно найти - источник проблемы. Следующий документ даст вам некоторые рекомендации - по устранению неполадок: - https://mirror.linuxfromscratch.ru/hints/downloads/files/errors.txt. -

-

- Если вы не можете найти решение своей проблемы в разделе часто - задаваемых вопросов, выполните поиск в списках рассылки по адресу - https://mirror.linuxfromscratch.ru/search.html. -

-

- У нас также есть замечательное сообщество LFS, которое готово - предложить помощь через списки рассылки и IRC (см. Раздел 1.4, - «Ресурсы» этой книги). Мы получаем много вопросов в службу - поддержки каждый день, и на многие из них можно легко ответить, зайдя - в раздел часто задаваемых вопросов и предварительно выполнив поиск в - списках рассылки. Чтобы мы могли оказать помощь, вам необходимо - сначала провести самостоятельное исследование. Это позволяет нам - сосредоточиться на более сложных вопросах в поддержке. Если ваши - поиски не привели к решению проблемы, включите всю необходимую - информацию (упомянутую ниже) в свой запрос о помощи. -

-
-

- 1.5.1. Что следует упомянуть -

-

- Помимо краткого объяснения возникшей проблемы, в любой запрос о - помощи необходимо включить следующую важную информацию: -

-
-
    -
  • -

    - Используемая версия книги (в данном случае 12.0) -

    -
  • -
  • -

    - Информацию о дистрибутиве и его версия, используемые для - сборки LFS -

    -
  • -
  • -

    - Вывод сценария Системные - требования к хостовой машине -

    -
  • -
  • -

    - Пакет или раздел где возникла проблема -

    -
  • -
  • -

    - Точное сообщение об ошибке или четкое описание проблемы -

    -
  • -
  • -

    - Обратите внимание, отклонялись ли вы от книги -

    -
  • -
-
-
- [Примечание] -

- Примечание -

-

- Отклонение от этой книги не означает, что мы не поможем вам. В - конце концов, LFS зависит от личных предпочтений. - Заблаговременное информирование о любых изменениях в процессе - сборки помогает нам оценить и определить возможные причины вашей - проблемы -

-
-
-
-

- 1.5.2. Проблемы со скриптом configure -

-

- Если что-то пойдет не так во время выполнения скрипта configure, просмотрите файл - config.log. Этот файл может содержать - ошибки, обнаруженные во время настройки, которые не были выведены - на экран. Включите соответствующие строки, если вам нужно - обратиться за помощью. -

-
-
-

- 1.5.3. Проблемы компиляции -

-

- Как вывод на экран, так и содержимое различных файлов полезны для - определения причины проблем компиляции. Вывод экрана из скрипта - configure и запуска - make может быть - полезен. Необязательно включать весь вывод целиком, но обязательно - включите всю необходимую информацию. Ниже приведен пример - информации, которая должна быть включена в экранный вывод - 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
-

- В этом случае многие люди просто включили бы только нижнюю часть: -

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

- Этой информации недостаточно, чтобы правильно диагностировать - проблему, потому что она только указывает на то, что что-то пошло - не так, а не на то, что - пошло не так. Весь раздел, как в приведенном выше примере, должен - быть сохранен, так как он включает в себя выполненную команду и все - связанные с ней сообщения об ошибках. -

-

- Отличная статья о том, как обращаться за помощью в Интернете, - доступна по адресу http://catb.org/~esr/faqs/smart-questions.html. - Прочтите этот документ и следуйте советам, чтобы повысить - вероятность получения помощи в которой вы нуждаетесь. -

-
-
- - - diff --git a/lfs-12.0-sysv/chapter01/changelog.html b/lfs-12.0-sysv/chapter01/changelog.html deleted file mode 100644 index 3ccae48..0000000 --- a/lfs-12.0-sysv/chapter01/changelog.html +++ /dev/null @@ -1,1051 +0,0 @@ - - - - - - 1.3. Журнал изменений - - - - - - - - -
-

- 1.3. Журнал - изменений -

-

- Это версия 12.0 книги Linux From Scratch от 2 сентября 2023. Если - этой книге больше шести месяцев, возможно, уже доступна более новая, - улучшенная версия. Чтобы узнать это, проверьте одно из зеркал - https://mirror.linuxfromscratch.ru/mirrors.html. -

-

- Ниже приведен список изменений, внесенных с момента предыдущего - выпуска книги. -

-
-

- Список изменений: -

-
    -
  • -

    - 2023-08-25 -

    -
    -
      -
    • -

      - [bdubbs] - Update to linux-6.4.12. Fixes #5320. -

      -
    • -
    -
    -
  • -
  • -

    - 2023-08-18 -

    -
    -
      -
    • -

      - [bdubbs] - Update to udev-lfs-20230818. -

      -
    • -
    -
    -
  • -
  • -

    - 2023-08-15 -

    -
    -
      -
    • -

      - [bdubbs] - Add a patch to fix a performance regression in - glibc's posix_memalign() function. Fixes #5315. -

      -
    • -
    • -

      - [bdubbs] - Update to less-643. Fixes #5317. -

      -
    • -
    • -

      - [bdubbs] - Update to meson-1.2.1. Fixes #5314. -

      -
    • -
    • -

      - [bdubbs] - Update to linux-6.4.10. Fixes #5313. -

      -
    • -
    • -

      - [bdubbs] - Update to iana-etc-20230810. Addresses - #5006. -

      -
    • -
    • -

      - [rahul] - Update to pkgconf-2.0.1. Fixes #5316. -

      -
    • -
    -
    -
  • -
  • -

    - 2023-08-07 -

    -
    -
      -
    • -

      - [bdubbs] - Update to xz-5.4.4. Fixes #5307. -

      -
    • -
    • -

      - [bdubbs] - Update to wheel-0.41.1 (Python Module). Fixes - #5311. -

      -
    • -
    • -

      - [bdubbs] - Update to man-pages-6.05.01. Fixes #5306. -

      -
    • -
    • -

      - [bdubbs] - Update to linux-6.4.8. Fixes #5309. -

      -
    • -
    • -

      - [bdubbs] - Update to iana-etc-20230804. Addresses - #5006. -

      -
    • -
    • -

      - [rahul] - Update to pkgconf-2.0.0. Fixes #5310. -

      -
    • -
    -
    -
  • -
  • -

    - 2023-08-01 -

    -
    -
      -
    • -

      - [bdubbs] - Update to vim-9.0.1677. Addresses #4500. -

      -
    • -
    • -

      - [bdubbs] - Update to openssl-3.1.2. Fixes #5305. -

      -
    • -
    • -

      - [bdubbs] - Update to man-pages-6.05. Fixes #5303. -

      -
    • -
    • -

      - [bdubbs] - Update to binutils-2.41. Fixes #5300. -

      -
    • -
    • -

      - [bdubbs] - Update to gmp-6.3.0. Fixes #5301. -

      -
    • -
    • -

      - [bdubbs] - Update to glibc-2.38. Fixes #5302. -

      -
    • -
    -
    -
  • -
  • -

    - 2023-07-28 -

    -
    -
      -
    • -

      - [bdubbs] - Update udev-lfs tarball to remove obsolete - cdrom rules and references to ISDN devices. Fixes - #5291. -

      -
    • -
    • -

      - [bdubbs] - Update to wheel-0.41.0 (Python Module). Fixes - #5290. -

      -
    • -
    • -

      - [bdubbs] - Update to tar-1.35. Fixes #5287. -

      -
    • -
    • -

      - [bdubbs] - Update to udev - from systemd-254. Fixes #5293. -

      -
    • -
    • -

      - [bdubbs] - Update to meson-1.2.0. Fixes #5286. -

      -
    • -
    • -

      - [bdubbs] - Update to linux-6.4.7. Fixes #5288. -

      -
    • -
    • -

      - [bdubbs] - Update to gcc-13.2.0. Fixes #5292. -

      -
    • -
    • -

      - [bdubbs] - Update to file-5.45. Fixes #5294. -

      -
    • -
    -
    -
  • -
  • -

    - 2023-07-28 -

    -
    -
      -
    • -

      - [xry111] - Enable cgroup-based memory pressure - information in kernel, and add the cgroup file system - into /etc/fstab and the mountvirtfs bootscript. This is a - preparation for udev from systemd-254. Addresses - #5293. -

      -
    • -
    -
    -
  • -
  • -

    - 2023-07-22 -

    -
    -
      -
    • -

      - [xry111] - Make the mountvirtfs bootscript create - essential symlinks in /dev. Fixes #5289. -

      -
    • -
    -
    -
  • -
  • -

    - 2023-07-15 -

    -
    -
      -
    • -

      - [xry111] - Replace eudev-3.2.12 with udev from - systemd-253. Fixes #5085. -

      -
    • -
    • -

      - [bdubbs] - Update to iana-etc-20230629. Addresses - #5006. -

      -
    • -
    • -

      - [bdubbs] - Update to linux-6.4.3. Fixes #5284. -

      -
    • -
    • -

      - [bdubbs] - Update to libxcrypt-4.4.36. Fixes #5283. -

      -
    • -
    • -

      - [bdubbs] - Update to groff-1.23.0. Fixes #5282. -

      -
    • -
    • -

      - [bdubbs] - Update to perl-5.38.0. Fixes #5281. -

      -
    • -
    -
    -
  • -
  • -

    - 2023-07-02 -

    -
    -
      -
    • -

      - [xry111] - Add libxcrypt-4.4.35. Fixes #5280. -

      -
    • -
    • -

      - [xry111] - Update to iproute2-6.4.0. Fixes #5277. -

      -
    • -
    • -

      - [xry111] - Update to linux-6.4.1. Fixes #5276. -

      -
    • -
    -
    -
  • -
  • -

    - 2023-07-01 -

    -
    -
      -
    • -

      - [bdubbs] - Update to iana-etc-20230615. Addresses - #5006. -

      -
    • -
    • -

      - [bdubbs] - Update to vim-9.0.1671. Addresses #4500. -

      -
    • -
    • -

      - [bdubbs] - Update to util-linux-2.39.1. Addresses - #5278. -

      -
    • -
    • -

      - [bdubbs] - Update to linux-6.3.10. Addresses #5276. -

      -
    • -
    • -

      - [rahul] - Update to kbd-2.6.1. Fixes #5279. -

      -
    • -
    • -

      - [bdubbs] - Update to gettext-0.22. Fixes #5275. -

      -
    • -
    -
    -
  • -
  • -

    - 2023-06-17 -

    -
    -
      -
    • -

      - [xry111] - Update to linux-6.3.8. Fixes #5272. -

      -
    • -
    • -

      - [xry111] - Update to kbd-2.6.0. Fixes #5273. -

      -
    • -
    • -

      - [rahul] - Changed from pkg-config to pkgconf-1.9.5. Fixes - #5274. -

      -
    • -
    -
    -
  • -
  • -

    - 2023-06-09 -

    -
    -
      -
    • -

      - [bdubbs] - Update to linux-6.3.6. Fixes #5269. -

      -
    • -
    • -

      - [bdubbs] - Update to Python-3.11.4. Fixes #5271. -

      -
    • -
    -
    -
  • -
  • -

    - 2023-06-03 -

    -
    -
      -
    • -

      - [bdubbs] - Update to iana-etc-20230524. Addresses - #5006. -

      -
    • -
    • -

      - [bdubbs] - Update to linux-6.3.5. Fixes #5264. -

      -
    • -
    • -

      - [bdubbs] - Update to openssl-3.1.1. Fixes #5267. -

      -
    • -
    • -

      - [bdubbs] - Update to meson-1.1.1. Fixes #5266. -

      -
    • -
    • -

      - [bdubbs] - Update to diffutils-3.10. Fixes #5262. -

      -
    • -
    • -

      - [bdubbs] - Update to bc-6.6.0. Fixes #5263. -

      -
    • -
    -
    -
  • -
  • -

    - 2023-05-25 -

    -
    -
      -
    • -

      - [ken] - Remove unneeded group sgx from eudev rules. Fixes - #5265. -

      -
    • -
    -
    -
  • -
  • -

    - 2023-05-18 -

    -
    -
      -
    • -

      - [bdubbs] - Update to util-linux-2.39. Fixes #5259. -

      -
    • -
    • -

      - [bdubbs] - Update to linux-6.3.3. Fixes #5261. -

      -
    • -
    • -

      - [bdubbs] - Update to libcap-2.69. Fixes #5258. -

      -
    • -
    • -

      - [bdubbs] - Update to grep-3.11. Fixes #5256. -

      -
    • -
    • -

      - [bdubbs] - Update to flit_core-3.9.0. Fixes #5257. -

      -
    • -
    • -

      - [bdubbs] - Update to eudev-3.2.12. Fixes #5260. -

      -
    • -
    -
    -
  • -
  • -

    - 2023-05-13 -

    -
    -
      -
    • -

      - [xry111] - Update to less-633. Fixes #5251. -

      -
    • -
    • -

      - [xry111] - Update to linux-6.3.2. Fixes #5255. -

      -
    • -
    • -

      - [xry111] - Update to xz-5.4.3. Fixes #5252. -

      -
    • -
    • -

      - [xry111] - Update to gawk-5.2.2. Fixes #5253. -

      -
    • -
    • -

      - [xry111] - Fix systemd runtime issue exploited by GCC 13. - Fixes #5254. -

      -
    • -
    -
    -
  • -
  • -

    - 2023-05-01 -

    -
    -
      -
    • -

      - [bdubbs] - Update to vim-9.0.1503. Addresses #4500. -

      -
    • -
    • -

      - [bdubbs] - Update to iana-etc-20230418. Addresses - #5006. -

      -
    • -
    • -

      - [bdubbs] - Update to sysvinit-3.07. Fixes #5250. -

      -
    • -
    • -

      - [bdubbs] - Update to iproute2-6.3.0. Fixes #5248. -

      -
    • -
    • -

      - [bdubbs] - Update to gcc-13.1.0. Fixes #5247. -

      -
    • -
    • -

      - [bdubbs] - Update to perl-5.36.1. Fixes #5246. -

      -
    • -
    • -

      - [bdubbs] - Update to linux-6.3.1. Fixes #5245. -

      -
    • -
    • -

      - [bdubbs] - Update to coreutils-9.3. Fixes #5244. -

      -
    • -
    -
    -
  • -
  • -

    - 2023-04-15 -

    -
    -
      -
    • -

      - [bdubbs] - Update to vim-9.0.1452. Addresses #4500. -

      -
    • -
    • -

      - [bdubbs] - Update to iana-etc-20230405. Addresses - #5006. -

      -
    • -
    • -

      - [bdubbs] - Update to zstd-1.5.5. Fixes #5239. -

      -
    • -
    • -

      - [bdubbs] - Update to Python-3.11.3. Fixes #5240. -

      -
    • -
    • -

      - [bdubbs] - Update to meson-1.1.0. Fixes #5242. -

      -
    • -
    • -

      - [bdubbs] - Update to man-pages-6.04. Fixes #5238. -

      -
    • -
    • -

      - [bdubbs] - Update to linux-6.2.11. Fixes #5241. -

      -
    • -
    -
    -
  • -
  • -

    - 2023-03-31 -

    -
    -
      -
    • -

      - [xry111] - Update to linux-6.2.9 (security fix). Fixes - #5230. -

      -
    • -
    • -

      - [xry111] - Update to grep-3.10. Fixes #5234. -

      -
    • -
    • -

      - [xry111] - Update to wheel-0.40.0. Fixes #5229. -

      -
    • -
    • -

      - [xry111] - Update to bc-6.5.0. Fixes #5228. -

      -
    • -
    • -

      - [xry111] - Update to texinfo-7.0.3. Fixes #5235. -

      -
    • -
    • -

      - [xry111] - Update to coreutils-9.2. Fixes #5232. -

      -
    • -
    • -

      - [xry111] - Update to libcap-2.68. Fixes #5236. -

      -
    • -
    • -

      - [xry111] - Update to tzdata-2023c. Fixes #5237. -

      -
    • -
    • -

      - [xry111] - Update to xz-5.4.2. Fixes #5233. -

      -
    • -
    • -

      - [xry111] - Update to openssl-3.1.0. Fixes #5227. -

      -
    • -
    • -

      - [xry111] - Add flit-core-3.8.0. -

      -
    • -
    -
    -
  • -
  • -

    - 2023-03-15 -

    -
    -
      -
    • -

      - [bdubbs] - Update to bc-6.4.0. Fixes #5217. -

      -
    • -
    • -

      - [bdubbs] - Update to grep-3.9. Fixes #5225. -

      -
    • -
    • -

      - [bdubbs] - Update to linux-6.2.6. Fixes #5226. -

      -
    • -
    • -

      - [bdubbs] - Update to iana-etc-20230306. Addresses - #5006. -

      -
    • -
    -
    -
  • -
  • -

    - 2023-03-04 -

    -
    -
      -
    • -

      - [xry111] - Update to bc-6.3.1. Fixes #5217. -

      -
    • -
    • -

      - [xry111] - Update to linux-6.2.2 (security fixes). Fixes - #5218. -

      -
    • -
    • -

      - [xry111] - Update to procps-ng-4.0.3. Fixes #5220. -

      -
    • -
    • -

      - [xry111] - Update to iproute2-6.2.0. Fixes #5221. -

      -
    • -
    • -

      - [xry111] - Update to meson-1.0.1. Fixes #5222. -

      -
    • -
    • -

      - [xry111] - Update to make-4.4.1. Fixes #5223. -

      -
    • -
    • -

      - [xry111] - Update to libelf-0.189. Fixes #5224. -

      -
    • -
    • -

      - [bdubbs] - Change to a better host requirements script in - Chapter 2. -

      -
    • -
    -
    -
  • -
  • -

    - 2023-03-01 -

    -
    -
      -
    • -

      - [bdubbs] - LFS-11.3 released. -

      -
    • -
    -
    -
  • -
-
-
- - - diff --git a/lfs-12.0-sysv/chapter01/chapter01.html b/lfs-12.0-sysv/chapter01/chapter01.html deleted file mode 100644 index dc4afd4..0000000 --- a/lfs-12.0-sysv/chapter01/chapter01.html +++ /dev/null @@ -1,101 +0,0 @@ - - - - - - Глава 1. Введение - - - - - - - - -
-

- 1. Введение -

- -
- - - diff --git a/lfs-12.0-sysv/chapter01/how.html b/lfs-12.0-sysv/chapter01/how.html deleted file mode 100644 index 7db69b1..0000000 --- a/lfs-12.0-sysv/chapter01/how.html +++ /dev/null @@ -1,182 +0,0 @@ - - - - - - 1.1. Как собрать систему LFS - - - - - - - - -
-

- 1.1. Как собрать систему - LFS -

-

- Система LFS будет собрана с использованием уже установленного - дистрибутива Linux (например, Debian, OpenMandriva, Fedora или - openSUSE). Существующая система Linux (хост) будет использоваться в - качестве отправной точки для предоставления необходимых программ, - включая компилятор, компоновщик и оболочку, для создания новой - системы. Выберите опцию «разработка» во время установки дистрибутива, - чтобы получить доступ к этим инструментам. -

-
- [Примечание] -

- Примечание -

-

- Существует множество способов установки дистрибутива Linux, и - значения по умолчанию обычно не оптимальны для сборки системы LFS. - Предложения по настройке дистрибутива смотрите: - https://mirror.linuxfromscratch.ru/hints/downloads/files/partitioning-for-lfs.txt. -

-
-

- В качестве альтернативы установке отдельного дистрибутива на свой - компьютер вы можете использовать LiveCD другого дистрибутива. -

-

- Глава 2 этой книги - содержит информацию, о том, как создать новые разделы Linux и - файловую систему, где будет скомпилирована и установлена новая - система LFS. Глава 3 содержит информацию, - о том, какие пакеты и исправления необходимо загрузить для сборки - системы LFS и как их хранить на файловой системе. Глава 4 освещает - вопросы настройки рабочего окружения. Пожалуйста, внимательно - прочитайте Глава 4, так как в - ней объясняется несколько важных моментов, о которых вам необходимо - знать, прежде чем вы начнёте работать со следующими главами. -

-

- Глава 5 содержит информацию - об установке первоначального набора инструментов (binutils, gcc и - glibc) с использованием методов кросс-компиляции для изоляции новых - инструментов от хост-системы. -

-

- Глава 6 - рассказывает, как выполнить кросс-компиляцию базовых утилит с - использованием только что собранного временного набора инструментов. -

-

- В - Глава 7 будет осуществлен переход в среду chroot, где мы будет использовать - новые инструменты для сборки остальных инструментов, необходимых для - создания конечной системы. -

-

- Эта попытка изолировать новую систему от основного дистрибутива - поначалу может показаться чрезмерной. Полное техническое обоснование - того, почему это сделано именно так, приведено в разделе Технические - примечания по сборочным инструментам. -

-

- В Глава 8 - будет собрана полноценная система LFS. Еще одно преимущество среды - chroot заключается в том, что она позволяет вам продолжать - использовать хост-систему во время сборки LFS. Ожидая завершения - компиляции пакетов, вы можете продолжать пользоваться своим - компьютером в обычном режиме. -

-

- Чтобы завершить установку, в Глава 9 происходит настройка - базовой конфигурации системы, в Глава 10 - настраиваются ядро и загрузчик. Глава 11 содержит информацию о том - как расширить возможности системы LFS. После выполнения шагов, - описанных в этой главе, компьютер будет готов к загрузке в новую - систему LFS. -

-

- Здесь описан процесс сборки системы в двух словах. Подробная - информация о каждом шаге обсуждается в следующих главах и описаниях - пакетов. Элементы, которые кажутся сложными сейчас, будут разъяснены - позже, и все встанет на свои места, по мере прочтения книги. -

-
- - - diff --git a/lfs-12.0-sysv/chapter01/resources.html b/lfs-12.0-sysv/chapter01/resources.html deleted file mode 100644 index 27a7705..0000000 --- a/lfs-12.0-sysv/chapter01/resources.html +++ /dev/null @@ -1,148 +0,0 @@ - - - - - - 1.4. Ресурсы - - - - - - - - -
-

- 1.4. Ресурсы -

-
-

- 1.4.1. Часто - задаваемые вопросы -

-

- Если во время создания системы LFS вы столкнетесь с какими-либо - ошибками, у вас возникнут какие-либо вопросы или вам кажется, что в - книге допущена опечатка, пожалуйста, для начала ознакомьтесь со - списком часто задаваемых вопросов (FAQ), расположенным по адресу - https://mirror.linuxfromscratch.ru/faq/. -

-
-
-

- 1.4.2. - Списки рассылки -

-

- На сервере linuxfromscratch.org - размещен ряд списков рассылки, используемых для разработки проекта - LFS. Эти списки включают, среди прочего, основные списки разработки - и поддержки. Если вы не можете найти ответ на странице часто - задаваемых вопросов, следующим шагом будет поиск решения в списках - рассылки по адресу https://mirror.linuxfromscratch.ru/search.html. -

-

- Для получения информации о списках рассылки, способах подписки, - архивах и дополнительной информации посетите https://mirror.linuxfromscratch.ru/mail.html. -

-
-
-

- 1.4.3. IRC -

-

- Некоторые члены сообщества LFS предлагают помощь в Internet Relay - Chat (IRC). Прежде чем воспользоваться этим способом, убедитесь, - что на ваш вопрос еще нет ответа в разделе часто задаваемых - вопросов LFS или в архивах списков рассылки. Вы можете найти нас в - irc.libera.chat. Канал поддержки - называется #lfs-support. -

-
-
-

- 1.4.4. Зеркала - проекта -

-

- Проект LFS имеет несколько зеркал по всему миру, чтобы сделать - доступ к веб-сайту и загрузку необходимых пакетов более удобными. - Пожалуйста, посетите веб-сайт LFS по адресу https://mirror.linuxfromscratch.ru/mirrors.html - для получения списка текущих зеркал. -

-
-
-

- 1.4.5. - Контактная информация -

-

- Пожалуйста, направляйте все свои вопросы и комментарии в один из - списков рассылки LFS (см. выше). -

-
-
- - - diff --git a/lfs-12.0-sysv/chapter01/whatsnew.html b/lfs-12.0-sysv/chapter01/whatsnew.html deleted file mode 100644 index 92b40a6..0000000 --- a/lfs-12.0-sysv/chapter01/whatsnew.html +++ /dev/null @@ -1,370 +0,0 @@ - - - - - - 1.2. Что нового с момента последнего релиза - - - - - - - - -
-

- 1.2. Что - нового с момента последнего релиза -

-
- [Внимание] -

- Внимание -

-

- В процессе разработки LFS инструкции в книге часто изменяются, - чтобы адаптироваться к обновлению пакета или использовать - преимущества новых функций из обновленных пакетов. Смешение - инструкций разных версий книги LFS может привести к незначительным - поломкам. Такого рода проблемы обычно являются результатом - повторного использования некоторых скриптов, созданных для - предыдущей версии LFS. Такое повторное использование настоятельно - не рекомендуется. Если вы по какой-либо причине повторно - используете скрипты из предыдущей версии LFS, вам нужно быть очень - осторожным при обновлении скриптов, чтобы они соответствовали - текущей версии книги LFS. -

-
-

- В книге LFS 12.0 для GCC установлен параметр --disable-fixincludes. Этот параметр - конфигурации, недавно добавлен в GCC 13.1, чтобы предотвратить - «исправление» - системных заголовков. Такое «исправление» не требуется для современной - системы Linux и может вызвать проблемы, если пакет будет обновлен - после установки GCC. -

-

- Ниже приведен список пакетов, обновленных с момента предыдущего - выпуска книги. -

-
-

- Обновлены: -

-
    -
  • -

    - Bc 6.6.0 -

    -
  • -
  • -

    - Binutils-2.41 -

    -
  • -
  • -

    - Coreutils-9.3 -

    -
  • -
  • -

    - Diffutils-3.10 -

    -
  • -
  • -

    - File-5.45 -

    -
  • -
  • -

    - Flit-core-3.9.0 -

    -
  • -
  • -

    - Gawk-5.2.2 -

    -
  • -
  • -

    - GCC-13.2.0 -

    -
  • -
  • -

    - Gettext-0.22 -

    -
  • -
  • -

    - Glibc-2.38 -

    -
  • -
  • -

    - GMP-6.3.0 -

    -
  • -
  • -

    - Grep-3.11 -

    -
  • -
  • -

    - Groff-1.23.0 -

    -
  • -
  • -

    - IANA-Etc-20230810 -

    -
  • -
  • -

    - IPRoute2-6.4.0 -

    -
  • -
  • -

    - Kbd-2.6.1 -

    -
  • -
  • -

    - Less-643 -

    -
  • -
  • -

    - Libcap-2.69 -

    -
  • -
  • -

    - Libelf-0.189 (из elfutils) -

    -
  • -
  • -

    - Linux-6.4.12 -

    -
  • -
  • -

    - Make-4.4.1 -

    -
  • -
  • -

    - Man-pages-6.05.01 -

    -
  • -
  • -

    - Meson-1.2.1 -

    -
  • -
  • -

    - Openssl-3.1.2 -

    -
  • -
  • -

    - Pkgconf-2.0.1 -

    -
  • -
  • -

    - Perl-5.38.0 -

    -
  • -
  • -

    - Procps-ng-4.0.3 -

    -
  • -
  • -

    - Python-3.11.4 -

    -
  • -
  • -

    - Sysklogd-1.5.1 -

    -
  • -
  • -

    - Systemd-254 -

    -
  • -
  • -

    - Tar-1.35 -

    -
  • -
  • -

    - Texinfo-7.0.3 -

    -
  • -
  • -

    - Tzdata-2023c -

    -
  • -
  • -

    - Util-Linux-2.39.1 -

    -
  • -
  • -

    - Vim-9.0.1677 -

    -
  • -
  • -

    - wheel-0.41.1 -

    -
  • -
  • -

    - XZ-Utils-5.4.4 -

    -
  • -
  • -

    - Zstd-1.5.5 -

    -
  • -
-
-
-

- Добавлены: -

-
    -
  • -

    - Udev-254 (из systemd) -

    -
  • -
  • -

    - Jinja2-3.1.2 -

    -
  • -
  • -

    - MarkupSafe-2.1.3 -

    -
  • -
  • -

    - Libxcrypt-4.4.36 -

    -
  • -
  • -

    - Pkgconf-2.0.1 -

    -
  • -
  • -

    - Flit-core-3.9.0 -

    -
  • -
  • -

    - glibc-2.38-memalign_fix-1.patch -

    -
  • -
-
-
-

- Удалены: -

-
    -
  • -

    - eudev-3.2.12 -

    -
  • -
  • -

    - Pkg-config-0.29.2 -

    -
  • -
-
-
- - - diff --git a/lfs-12.0-sysv/chapter02/aboutlfs.html b/lfs-12.0-sysv/chapter02/aboutlfs.html deleted file mode 100644 index 250fc16..0000000 --- a/lfs-12.0-sysv/chapter02/aboutlfs.html +++ /dev/null @@ -1,156 +0,0 @@ - - - - - - 2.6. Установка переменной $LFS - - - - - - - - -
-

- 2.6. Установка переменной $LFS -

-

- В этой книге переменная окружения LFS - будет использоваться несколько раз. Вы должны убедиться, что эта - переменная всегда определена в процессе сборки LFS. Она должна быть - установлена на каталог, в котором вы будете создавать свою систему - LFS — мы, для примера, будем использовать /mnt/lfs, но вы можете выбрать любой другой. Если - вы собираете LFS на отдельном разделе, этот каталог будет точкой - монтирования для раздела. Выберите расположение каталога и установите - переменную с помощью следующей команды: -

-
export LFS=/mnt/lfs
-

- Установка этой переменной полезна тем, что такие команды, как - mkdir -v $LFS/tools, - можно вводить буквально. Оболочка автоматически заменит «$LFS» на «/mnt/lfs» (или любое - другое значение переменной) при обработке команды. -

-
- [Внимание] -

- Внимание -

-

- Не забывайте проверять, что переменная LFS установлена, всякий раз, когда вы покидаете и - снова входите в текущую рабочую среду (например, когда выполняете - su для root или другого пользователя). Убедитесь, что - переменная LFS настроена правильно: -

-
echo $LFS
-

- Убедитесь, что в выходных данных указан путь к местоположению - сборки вашей системы LFS, то есть /mnt/lfs, если вы следовали примеру. Если вывод - неверен, используйте команду, указанную ранее, чтобы установить - $LFS в правильное значение каталога LFS. -

-
-
- [Примечание] -

- Примечание -

-

- Один из способов гарантировать, что переменная LFS всегда установлена, — отредактировать файл - .bash_profile как в вашем личном - домашнем каталоге, так и в /root/.bash_profile и добавить приведенную выше - команду экспорта. Кроме того, оболочка, указанная в файле - /etc/passwd для всех пользователей, - которым нужна переменная LFS, должна - быть bash, чтобы гарантировать, что файл /root/.bash_profile используется как часть - процесса входа в систему. -

-

- Еще один способ, который используется для входа в хост-систему. При - входе в систему через диспетчер графического дисплея - пользовательский .bash_profile не - используется при запуске виртуального терминала. В этом случае - добавьте команду экспорта в файл .bashrc для своего пользователя и root. Кроме того, некоторые дистрибутивы - используют тест "if" и не запускают оставшиеся инструкции - .bashrc для не интерактивного вызова - bash. Обязательно разместите команду экспорта перед тестом для не - интерактивного использования. -

-
-
- - - diff --git a/lfs-12.0-sysv/chapter02/chapter02.html b/lfs-12.0-sysv/chapter02/chapter02.html deleted file mode 100644 index 9b9a820..0000000 --- a/lfs-12.0-sysv/chapter02/chapter02.html +++ /dev/null @@ -1,110 +0,0 @@ - - - - - - Глава 2. Подготовка хост-системы - - - - - - - - -
-

- 2. - Подготовка хост-системы -

- -
- - - diff --git a/lfs-12.0-sysv/chapter02/creatingfilesystem.html b/lfs-12.0-sysv/chapter02/creatingfilesystem.html deleted file mode 100644 index d1e0241..0000000 --- a/lfs-12.0-sysv/chapter02/creatingfilesystem.html +++ /dev/null @@ -1,167 +0,0 @@ - - - - - - 2.5. Создание файловой системы на разделе - - - - - - - - -
-

- 2.5. Создание файловой - системы на разделе -

-

- Раздел - это всего лишь диапазон секторов на диске, указанный в - таблице разделов. Прежде чем операционная система сможет использовать - раздел для хранения каких-либо файлов, он должен быть отформатирован, - чтобы содержать файловую систему, обычно состоящую из метки, блоков - каталогов, блоков данных и схемы индексации для поиска конкретного - файла по запросу. Файловая система также помогает операционной - системе отслеживать свободное пространство на разделе, резервировать - необходимые секторы при создании нового файла или расширении - существующего и повторно использует свободные сегменты данных, - полученные в результате удаления файлов. Она также может обеспечивать - поддержку избыточности данных и восстановления после ошибок. -

-

- LFS может использовать любую файловую систему, распознаваемую ядром - Linux, но наиболее распространенными типами являются ext3 и ext4. - Выбор правильной файловой системы может быть сложным; это зависит от - характеристик файлов и размера раздела. Например: -

-
-
-
- ext2 -
-
-

- подходит для небольших разделов, которые редко обновляются, - например /boot. -

-
-
- ext3 -
-
-

- это обновленная файловая система ext2, которая включает в себя - журнал, помогающий восстановить состояние раздела в случае - некорректного завершения работы. Обычно используется в качестве - файловой системы общего назначения. -

-
-
- ext4 -
-
-

- является последней версией файловых систем семейства ext. Она - предоставляет несколько новых возможностей, включая временные - метки с точностью до наносекунды, создание и использование - очень больших файлов (16 ТБ) и повышение скорости работы. -

-
-
-
-

- Другие файловые системы, включая FAT32, NTFS, ReiserFS, JFS и XFS, - полезны для конкретных задач. Более подробную информацию об этих - файловых системах и многих других можно найти по адресу https://en.wikipedia.org/wiki/Comparison_of_file_systems. -

-

- LFS предполагает, что корневая файловая система (/) имеет тип ext4. - Чтобы создать файловую систему ext4 - на разделе LFS, выполните следующую команду: -

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

- Замените <xxx> именем - раздела LFS -

-

- Если вы используете существующий раздел - подкачки, нет необходимости его форматировать. Если был создан - новый раздел подкачки, его нужно - будет инициализировать с помощью этой команды: -

-
mkswap /dev/<yyy>
-

- Замените <yyy> именем - раздела подкачки. -

-
- - - diff --git a/lfs-12.0-sysv/chapter02/creatingpartition.html b/lfs-12.0-sysv/chapter02/creatingpartition.html deleted file mode 100644 index 8176de6..0000000 --- a/lfs-12.0-sysv/chapter02/creatingpartition.html +++ /dev/null @@ -1,342 +0,0 @@ - - - - - - 2.4. Создание нового раздела - - - - - - - - -
-

- 2.4. Создание нового раздела -

-

- Как и большинство других операционных систем, LFS обычно - устанавливается на выделенный раздел. Рекомендуемый подход к - построению системы LFS состоит в том, чтобы использовать доступный - пустой раздел или, если у вас достаточно неразмеченного пространства, - использовать его -

-

- Минимальная система требует раздел размером около 10 гигабайт (ГБ). - Этого достаточно для хранения всех архивов с исходным кодом и - компиляции пакетов. Однако, если система LFS предназначена для - использования в качестве основной системы Linux, вероятно, будет - установлено дополнительное программное обеспечение, для которого - потребуется дополнительное пространство. Раздел размером 30 ГБ - является разумным размером для расширения. Сама система LFS не займет - столько места. Большая часть этого требования заключается в - предоставлении достаточного временного хранилища, а также в - добавлении дополнительных возможностей после сборки LFS. Кроме того, - для компиляции пакетов может потребоваться много места на диске, - которое будет освобождено после установки пакета. -

-

- Поскольку для компиляции не всегда достаточно оперативной памяти - (ОЗУ), рекомендуется использовать небольшой раздел диска в качестве - раздела подкачки. Он используется - ядром для хранения редко используемых данных и оставляет больше - памяти для активных процессов. Раздел - подкачки для системы LFS может совпадать с разделом, - используемым хост-системой, и в этом случае нет необходимости - создавать еще один. -

-

- Запустите программу создания разделов диска, такую как cfdisk или fdisk, с параметром командной - строки, указав имя жесткого диска, на котором будет создан новый - раздел, например, /dev/sda для - основного диска. Создайте раздел Linux и раздел подкачки, если это необходимо. Пожалуйста, - обратитесь к справке по cfdisk(8) или - fdisk(8), если вы еще не знаете, как - пользоваться этими программами. -

-
- [Примечание] -

- Примечание -

-

- Для опытных пользователей возможны и другие схемы разбиения. - Система LFS может располагаться на программном - RAID-массиве или логическом томе - LVM. Однако для некоторых опций требуется - initramfs, что является сложной темой. Эти методы разбиения не - рекомендуются начинающим пользователям LFS. -

-
-

- Запомните обозначение созданного раздела (например, sda5). В этой книге он будет называться разделом - LFS. Также запомните обозначение раздела - подкачки. Эти имена понадобятся позже для файла /etc/fstab. -

-
-

- 2.4.1. Другие вопросы по созданию разделов -

-

- Рекомендации по созданию разделов системы часто публикуются в - списках рассылки LFS. Это очень субъективная тема. По умолчанию для - большинства дистрибутивов используется весь диск, за исключением - небольшого раздела подкачки. Это не оптимально для LFS по - нескольким причинам. Это снижает гибкость, затрудняет совместное - использование данных между несколькими дистрибутивами или сборками - LFS, делает резервное копирование более трудоемким и может тратить - дисковое пространство из-за неэффективно распределенной файловой - системы. -

-
-

- 2.4.1.1. Корневой раздел -

-

- Корневой раздел LFS (не путать с каталогом /root) размером в 20 гигабайт является хорошим - компромиссом для большинства систем. Он обеспечивает достаточно - места для построения LFS и большей части BLFS, но достаточно мал, - чтобы можно было легко создать несколько разделов для - экспериментов. -

-
-
-

- 2.4.1.2. Раздел подкачки -

-

- Большинство дистрибутивов автоматически создают раздел подкачки. - Обычно рекомендуемый размер раздела подкачки примерно в два раза - превышает объем физической памяти, однако это требуется редко. - Если дисковое пространство ограничено, установите размер раздела - подкачки в два гигабайта и контролируйте его объемом. -

-

- Если вы хотите использовать режим гибернации (suspend-to-disk) - Linux, которая записывает содержимое ОЗУ в раздел подкачки перед - выключением машины. Установите размер раздела подкачки не меньше - объема установленной оперативной памяти. -

-

- Использование файла подкачки - это не очень хорошо. Для - механических жестких дисков вы можете определить, что система - использует раздел подкачки, просто слыша активность диска и - наблюдая, как система реагирует на команды. Для SSD-накопителя вы - не сможете услышать, что используется раздел подкачки, но сможете - оценить, сколько места на разделе подкачки занято, используя - команды top или - free. По - возможности следует избегать использования SSD-накопителя для - раздела подкачки. Первой реакцией на активность раздела подкачки - должна быть проверка на необоснованное применение какой-либо - команды, например, попытка редактирования пятигигабайтного файла. - Если использование раздела подкачки становится обычным явлением, - лучшее решение — приобретение большего объема оперативной памяти - для вашей системы. -

-
-
-

- 2.4.1.3. Раздел GRUB -

-

- Если загрузочный диск - размечен с помощью таблицы разделов GUID (GPT), необходимо - создать небольшой раздел, обычно размером 1 МБ, если он еще не - существует. Этот раздел не форматируется, но должен быть доступен - для использования GRUB во время установки загрузчика. Обычно он - помечен как 'BIOS Boot' при использовании fdisk или имеет код - EF02 при использовании - gdisk. -

-
- [Примечание] -

- Примечание -

-

- Раздел Grub Bios должен находиться на диске, который BIOS - использует для загрузки системы. Это не обязательно тот же - диск, на котором расположен корневой раздел LFS. Диски в - системе могут использовать разные типы таблиц разделов. Наличие - раздела Grub Bios зависит только от типа таблицы разделов на - загрузочном диске. -

-
-
-
-

- 2.4.1.4. Разделы, используемые для удобства -

-

- Есть несколько других разделов, которые не являются - обязательными, но их следует учитывать при разработке схемы - диска. Следующий список не является исчерпывающим, а представлен - в качестве справочного руководства. -

-
-
    -
  • -

    - /boot – Настоятельно рекомендуется. Используйте этот раздел - для хранения ядер и другой загрузочной информации. Чтобы - свести к минимуму возможные проблемы с загрузкой дисков - большого размера, сделайте этот раздел первым физическим - разделом на первом диске. Размер раздела в 200 мегабайт - вполне достаточен. -

    -
  • -
  • -

    - /boot/efi – Системный раздел EFI, используемый для загрузки - системы с помощью UEFI. Подробнее читайте на - странице BLFS. -

    -
  • -
  • -

    - /home – Настоятельно рекомендуется. Предоставьте общий - доступ к своему домашнему каталогу и пользовательским - настройкам нескольким дистрибутивам или сборкам LFS. - Размер, как правило, довольно большой и зависит от - доступного места на диске. -

    -
  • -
  • -

    - /usr – в LFS, /bin, - /lib, и /sbin являются символическими ссылками на - их аналоги в /usr. Таким - образом /usr содержит все - двоичные файлы, необходимые для работы системы. Для LFS - отдельный раздел /usr не - требуется. Если он вам необходим, вы должны сделать раздел - достаточно большим, чтобы поместить туда все программы и - библиотеки в системе. В этой конфигурации, корневой раздел - может быть очень маленьким (возможно, всего один гигабайт), - поэтому он подходит для тонкого клиента или бездисковой - рабочей станции (где /usr - монтируется с удаленного сервера). Однако вы должны знать, - что для загрузки системы с отдельного раздела /usr потребуется initramfs (не включенный - в LFS). -

    -
  • -
  • -

    - /opt – Этот каталог наиболее полезен для BLFS, в него можно - установить некоторые большие пакеты, такие как KDE или - Texlive, без использования иерархии /usr. Для /opt - достаточно размера от 5 до 10 гигабайт. -

    -
  • -
  • -

    - /tmp – Отдельный раздел /tmp используется редко, он полезен - при настройке тонкого клиента. Обычно, его размер не должен - превышать пару гигабайт. Если у вас достаточно оперативной - памяти, вы можете смонтировать /tmp как tmpfs, чтобы ускорить доступ к - временным файлам. -

    -
  • -
  • -

    - /usr/src – Этот раздел очень удобен для хранения исходников - BLFS и совместного использования их в сборках LFS. Его - также можно использовать в качестве места для сборки - пакетов BLFS. Размера в 30-50 гигабайт вполне достаточно. -

    -
  • -
-
-

- Любой отдельный раздел, который вы хотите автоматически - монтировать при загрузке, должен быть указан в файле /etc/fstab. Подробности о том, как указать - разделы, будут обсуждаться в Раздел 10.2, «Создание - файла /etc/fstab». -

-
-
-
- - - diff --git a/lfs-12.0-sysv/chapter02/hostreqs.html b/lfs-12.0-sysv/chapter02/hostreqs.html deleted file mode 100644 index a99a5e5..0000000 --- a/lfs-12.0-sysv/chapter02/hostreqs.html +++ /dev/null @@ -1,379 +0,0 @@ - - - - - - 2.2. Требования к хост-системе - - - - - - - - -
-

- 2.2. Требования к хост-системе -

-
-

- 2.2.1. Аппаратное обеспечение -

-

- Редакторы LFS рекомендуют, чтобы процессор имел не менее четырех - ядер и не менее 8 ГБ памяти. Старые системы, не отвечающие этим - требованиям, будут по-прежнему работать, но время сборки пакетов - будет значительно больше, чем указано в документации. -

-
-
-

- 2.2.2. Программное обеспечение -

-

- Ваша хост-система должна иметь следующее программное обеспечение с - указанными минимальными версиями. Это не должно быть проблемой для - большинства современных дистрибутивов Linux. Также обратите - внимание на то, что многие дистрибутивы помещают заголовочные файлы - в отдельные пакеты, как правило в формате «<package-name>-devel» или «<package-name>-dev». Обязательно - установите эти пакеты, если ваш дистрибутив их предоставляет. -

-

- Более ранние версии перечисленных ниже пакетов могут работать, но - это не проверялось. -

-
-
    -
  • -

    - Bash-3.2 - (/bin/sh должен быть символической или жесткой ссылкой на - bash) -

    -
  • -
  • -

    - Binutils-2.13.1 - (Версия выше 2.41 не рекомендуется, так как она не - тестировалась) -

    -
  • -
  • -

    - Bison-2.7 - (/usr/bin/yacc должен быть ссылкой на bison или небольшой - скрипт, запускающий bison) -

    -
  • -
  • -

    - Coreutils-7.0 -

    -
  • -
  • -

    - Diffutils-2.8.1 -

    -
  • -
  • -

    - Findutils-4.2.31 -

    -
  • -
  • -

    - Gawk-4.0.1 - (/usr/bin/awk должен быть ссылкой на gawk) -

    -
  • -
  • -

    - GCC-5.1, включая - компилятор C++, g++ (версии выше 11.2.0 не - рекомендуются, поскольку они не тестировались). Также должны - присутствовать стандартные библиотеки C и C++ (с - заголовочными файлами), чтобы компилятор C++ мог осуществлять - сборку программ. -

    -
  • -
  • -

    - Grep-2.5.1a -

    -
  • -
  • -

    - Gzip-1.3.12 -

    -
  • -
  • -

    - Linux - Kernel-4.14 -

    -

    - Причиной, по которой указаны минимальные требования к версии - ядра, является то, что мы указываем эту версию при сборке - glibc в Глава 5 и - Глава 8. Так как более старые ядра не - поддерживаются, скомпилированный пакет glibc немного меньше и быстрее. По - состоянию на июнь 2023 г. 4.14 является самой старой версией - ядра, поддерживаемой разработчиками ядра. -

    -

    - Если версия ядра хоста более ранняя, чем 4.14, вам необходимо - обновить ядро на более современную версию. Есть два способа - сделать это. Во-первых, посмотрите, предоставляет ли ваш - дистрибутив Linux пакет ядра 4.14 или более позднюю версию. - Если это так, установите его. Если ваш дистрибутив не - предлагает приемлемый пакет ядра или вы предпочитаете не - устанавливать его, вы можете скомпилировать ядро - самостоятельно. Инструкции по компиляции ядра и настройке - загрузчика (при условии, что хост использует GRUB) находятся - в Глава 10. -

    -

    - Для сборки LFS необходимо, чтобы ядро хоста поддерживало - псевдотерминал UNIX 98 (PTY). Обычно он включен на всех - настольных или серверных дистрибутивах, поставляющих Linux - 4.14 или более новое ядро. Если вы собираете собственное - хоста, убедитесь, что для параметра CONFIG_UNIX98_PTYS установлено значение - y в конфигурационном файле ядра. -

    -
  • -
  • -

    - 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-5.0 -

    -
  • -
  • -

    - Xz-5.0.0 -

    -
  • -
-
-
- [Важно] -

- Важно -

-

- Обратите внимание, что упомянутые выше символические ссылки - необходимы для создания системы LFS с использованием инструкций, - содержащихся в этой книге. Симлинки, указывающие на другое - программное обеспечение (например, dash, mawk и т. д.), могут - работать, но не тестируются и не поддерживаются командой - разработчиков LFS, и могут потребовать либо отклонения от - инструкций, либо дополнительных исправлений для некоторых - пакетов. -

-
-

- -

-

- Чтобы узнать, есть ли в вашей хост-системе все необходимые пакеты и - возможность компилировать программы, выполните следующий скрипт: -

-
cat > version-check.sh << "EOF"
-#!/bin/bash
-# A script to list version numbers of critical development tools
-
-# If you have tools installed in other directories, adjust PATH here AND
-# in ~lfs/.bashrc (section 4.4) as well.
-
-LC_ALL=C 
-PATH=/usr/bin:/bin
-
-bail() { echo "FATAL: $1"; exit 1; }
-grep --version > /dev/null 2> /dev/null || bail "grep does not work"
-sed '' /dev/null || bail "sed does not work"
-sort   /dev/null || bail "sort does not work"
-
-ver_check()
-{
-   if ! type -p $2 &>/dev/null
-   then 
-     echo "ERROR: Cannot find $2 ($1)"; return 1; 
-   fi
-   v=$($2 --version 2>&1 | grep -E -o '[0-9]+\.[0-9\.]+[a-z]*' | head -n1)
-   if printf '%s\n' $3 $v | sort --version-sort --check &>/dev/null
-   then 
-     printf "OK:    %-9s %-6s >= $3\n" "$1" "$v"; return 0;
-   else 
-     printf "ERROR: %-9s is TOO OLD ($3 or later required)\n" "$1"; 
-     return 1; 
-   fi
-}
-
-ver_kernel()
-{
-   kver=$(uname -r | grep -E -o '^[0-9\.]+')
-   if printf '%s\n' $1 $kver | sort --version-sort --check &>/dev/null
-   then 
-     printf "OK:    Linux Kernel $kver >= $1\n"; return 0;
-   else 
-     printf "ERROR: Linux Kernel ($kver) is TOO OLD ($1 or later required)\n" "$kver"; 
-     return 1; 
-   fi
-}
-
-# Coreutils first because-sort needs Coreutils >= 7.0
-ver_check Coreutils      sort     7.0 || bail "--version-sort unsupported"
-ver_check Bash           bash     3.2
-ver_check Binutils       ld       2.13.1
-ver_check Bison          bison    2.7
-ver_check Diffutils      diff     2.8.1
-ver_check Findutils      find     4.2.31
-ver_check Gawk           gawk     4.0.1
-ver_check GCC            gcc      5.1
-ver_check "GCC (C++)"    g++      5.1
-ver_check Grep           grep     2.5.1a
-ver_check Gzip           gzip     1.3.12
-ver_check M4             m4       1.4.10
-ver_check Make           make     4.0
-ver_check Patch          patch    2.5.4
-ver_check Perl           perl     5.8.8
-ver_check Python         python3  3.4
-ver_check Sed            sed      4.1.5
-ver_check Tar            tar      1.22
-ver_check Texinfo        texi2any 5.0
-ver_check Xz             xz       5.0.0
-ver_kernel 4.14
-
-if mount | grep -q 'devpts on /dev/pts' && [ -e /dev/ptmx ]
-then echo "OK:    Linux Kernel supports UNIX 98 PTY";
-else echo "ERROR: Linux Kernel does NOT support UNIX 98 PTY"; fi
-
-alias_check() {
-   if $1 --version 2>&1 | grep -qi $2
-   then printf "OK:    %-4s is $2\n" "$1";
-   else printf "ERROR: %-4s is NOT $2\n" "$1"; fi
-}
-echo "Aliases:"
-alias_check awk GNU
-alias_check yacc Bison
-alias_check sh Bash
-
-echo "Compiler check:"
-if printf "int main(){}" | g++ -x c++ -
-then echo "OK:    g++ works";
-else echo "ERROR: g++ does NOT work"; fi
-rm -f a.out
-EOF
-
-bash version-check.sh
-
-
- - - diff --git a/lfs-12.0-sysv/chapter02/introduction.html b/lfs-12.0-sysv/chapter02/introduction.html deleted file mode 100644 index 7b798e8..0000000 --- a/lfs-12.0-sysv/chapter02/introduction.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - 2.1. Введение - - - - - - - - -
-

- 2.1. Введение -

-

- В этой главе проверяются и при необходимости устанавливаются основные - инструменты, необходимые для построения LFS. Затем подготавливается - раздел, в котором будет размещаться система LFS. Мы создадим сам - раздел, создадим на нем файловую систему и смонтируем его. -

-
- - - diff --git a/lfs-12.0-sysv/chapter02/mounting.html b/lfs-12.0-sysv/chapter02/mounting.html deleted file mode 100644 index 5be70b2..0000000 --- a/lfs-12.0-sysv/chapter02/mounting.html +++ /dev/null @@ -1,170 +0,0 @@ - - - - - - 2.7. Монтирование нового раздела - - - - - - - - -
-

- 2.7. Монтирование нового раздела -

-

- Теперь, когда файловая система создана, раздел должен быть - смонтирован, чтобы хост-система могла получить доступ к нему. В книге - предполагается, что файловая система монтируется в каталог, указанный - в переменной LFS, описанной в предыдущем - разделе. -

-

- Строго говоря, нельзя «смонтировать раздел». Монтируется файловая система на этом разделе. Но так - как один раздел не может содержать несколько файловых систем, люди - часто говорят о разделе и связанной с ним файловой системе так, как - если бы они были одним и тем же. -

-

- Создайте точку монтирования и смонтируйте файловую систему LFS с - помощью этих команд: -

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

- Замените <xxx> на имя - раздела LFS. -

-

- Если вы используете несколько разделов для LFS (например, один для - /, а другой для /home), смонтируйте их вот так: -

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

- Замените <xxx> и - <yyy> - соответствующими именами разделов. -

-

- Убедитесь, что этот новый раздел не смонтирован со слишком строгими - разрешениями (такими как параметры nosuid - или nodev). Запустите команду - mount без каких-либо - параметров, чтобы увидеть, какие параметры установлены для - смонтированного раздела LFS. Если установлены nosuid и/или nodev, - раздел должен быть размонтирован и смонтирован повторно. -

-
- [Предупреждение] -

- Предупреждение -

-

- Приведенные выше инструкции предполагают, что вы не будете - перезагружать компьютер в процессе сборки LFS. Если вы выключите - свою систему, вам придется либо перемонтировать раздел LFS каждый - раз, когда вы перезапускаете процесс сборки, либо изменить файл - /etc/fstab вашей хост-системы, чтобы - он автоматически монтировал его при загрузке. Например, вы можете - добавить эту строку в свой /etc/fstab: -

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

- Если вы используете дополнительные разделы, обязательно добавьте - их. -

-
-

- Если вы используете раздел подкачки, - убедитесь, что он включен с помощью команды swapon: -

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

- Замените <zzz> именем - раздела подкачки. -

-

- Теперь, когда новый раздел LFS готов к работе, пришло время загрузить - пакеты. -

-
- - - diff --git a/lfs-12.0-sysv/chapter02/stages.html b/lfs-12.0-sysv/chapter02/stages.html deleted file mode 100644 index 631b9c8..0000000 --- a/lfs-12.0-sysv/chapter02/stages.html +++ /dev/null @@ -1,194 +0,0 @@ - - - - - - 2.3. Этапы сборки системы LFS - - - - - - - - -
-

- 2.3. - Этапы сборки системы LFS -

-

- LFS разработан для сборки за один сеанс. То есть инструкция - предполагает, что система не будет выключаться в процессе. Это не - означает, что система должна быть собрана за один присест. Для - возобновления сборки в точке предыдущей остановки (после - перезагрузки/выключения), необходимо выполнить некоторые процедуры - повторно. -

-
-

- 2.3.1. Главы 1–4 -

-

- Эти главы выполняются на хост-системе. После перезагрузки обратите - внимание на следующее: -

-
-
    -
  • -

    - Процедуры, выполняемые пользователем root после Раздела 2.4, должны иметь - переменную среды LFS, установленную ДЛЯ ПОЛЬЗОВАТЕЛЯ ROOT. -

    -
  • -
-
-
-
-

- 2.3.2. Главы 5–6 -

-
-
    -
  • -

    - Раздел /mnt/lfs должен быть смонтирован. -

    -
  • -
  • -

    - Эти две главы должны - быть выполнены из-под пользователя lfs. Перед выполнением любой задачи в - этих главах необходимо выполнить команду su - lfs. В противном - случае вы рискуете установить пакеты на хост и сделать его - непригодным для использования. -

    -
  • -
  • -

    - Выполнение процедур из Общие инструкции по - компиляции имеет решающее значение. Если есть какие-либо - сомнения по поводу установки пакета, убедитесь, что все ранее - распакованные tar-архивы удалены, затем повторно извлеките - файлы и выполните все инструкции, приведенные в этом разделе. -

    -
  • -
-
-
-
-

- 2.3.3. Главы 7–10 -

-
-
    -
  • -

    - Раздел /mnt/lfs должен быть смонтирован. -

    -
  • -
  • -

    - Некоторые операции, такие как «Смена владельца» - или «Вход в среду - Chroot», должны быть выполнены от имени - пользователя root с - переменной окружения $LFS, установленной для пользователя - root. -

    -
  • -
  • -

    - При входе в chroot переменная среды LFS должна быть - установлена для пользователя root. Переменная LFS не используется - после входа в среду chroot. -

    -
  • -
  • -

    - Виртуальные файловые системы должны быть смонтированы. Это - можно сделать до или после входа в chroot, переключившись на - виртуальный терминал хоста и от имени пользователя - root выполнив команды, - описанные в Раздел 7.3.1, - «Монтирование и заполнение /dev» и Раздел 7.3.2, - «Монтирование виртуальных файловых систем ядра». -

    -
  • -
-
-
-
- - - diff --git a/lfs-12.0-sysv/chapter03/chapter03.html b/lfs-12.0-sysv/chapter03/chapter03.html deleted file mode 100644 index 455c9fc..0000000 --- a/lfs-12.0-sysv/chapter03/chapter03.html +++ /dev/null @@ -1,97 +0,0 @@ - - - - - - Глава 3. Пакеты и патчи - - - - - - - - -
-

- 3. Пакеты и патчи -

-
-

- Содержание -

- -
-
- - - diff --git a/lfs-12.0-sysv/chapter03/introduction.html b/lfs-12.0-sysv/chapter03/introduction.html deleted file mode 100644 index e11fc06..0000000 --- a/lfs-12.0-sysv/chapter03/introduction.html +++ /dev/null @@ -1,198 +0,0 @@ - - - - - - 3.1. Введение - - - - - - - - -
-

- 3.1. Введение -

-

- Эта глава содержит список пакетов, которые необходимо загрузить для - сборки базовой системы Linux. Перечисленные версии программного - обеспечения, соответствуют версиям, которые, проверены и работают, - книга основана на их использовании. Мы настоятельно рекомендуем не - использовать другие версии пакетов, потому что команды сборки для - одной версии могут не работать с другой, если только другая версия не - указана в сообщениях об ошибках LFS или рекомендациях по - безопасности. В новейших версиях пакетов также могут быть проблемы, - требующие обходных путей. Эти обходные пути будут стабилизированы в - разрабатываемой версии книги. -

-

- Для некоторых пакетов архив релиза и архив снимка репозитория (Git - или SVN) для этого выпуска могут быть опубликованы с одинаковыми - именами файлов. Релиз содержит сгенерированные файлы (например, - скрипт configure, - сгенерированный пакетом autoconf) в дополнение к - содержимому соответствующего моментального снимка репозитория. В - книге везде, где это возможно, используются релизные архивы. - Использование моментального снимка вместо tar-архива, указанного в - книге, может вызвать проблемы. -

-

- Источники загрузки могут быть недоступны. Если источник изменился с - момента публикации этой книги, Google (https://www.google.com/) предоставляет - удобную поисковую систему для поиска большинства пакетов. Если поиск - не увенчался успехом, попробуйте один из альтернативных способов - загрузки, расположенных по адресу https://mirror.linuxfromscratch.ru/lfs/mirrors.html#files. -

-

- Загруженные пакеты и патчи необходимо где-нибудь хранить, чтобы они - были доступны на протяжении всей сборки. Рабочий каталог также - необходим для распаковки исходников и их сборки. $LFS/sources можно использовать и как место для - хранения архивов и патчей, и как рабочий каталог. При использовании - этого каталога необходимые элементы будут расположены в разделе LFS и - будут доступны на всех этапах процесса сборки. -

-

- Чтобы создать этот каталог, выполните следующую команду от имени - пользователя root перед началом - загрузки: -

-
mkdir -v $LFS/sources
-

- Сделайте этот каталог доступным для записи и установите липкий бит. - «Липкий бит» - означает, что даже если несколько пользователей имеют право на запись - в каталог, только владелец файла может удалить файл в таком каталоге. - Следующая команда активирует режимы записи и липкий бит: -

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

- Есть несколько способов получить все необходимые пакеты и патчи для - сборки LFS: -

-
-
    -
  • -

    - Файлы можно загрузить по отдельности, как описано в следующих - двух разделах. -

    -
  • -
  • -

    - Для стабильных версий книги архив со всеми необходимыми файлами - можно загрузить с одного из зеркал LFS, перечисленных на - странице https://mirror.linuxfromscratch.ru/mirrors.html#files. -

    -
  • -
  • -

    - Файлы можно загрузить с помощью wget и wget-list. -

    -
  • -
-
-

- Чтобы загрузить все пакеты и патчи, используя wget-list-sysv в качестве входных данных для - команды wget, наберите команду: -

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

- Начиная с LFS-7.0, существует отдельный файл md5sums, который можно использовать для проверки - всех пакетов. Поместите этот файл в $LFS/sources и выполните: -

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

- Эту проверку можно использовать после загрузки файлов любым из - перечисленных выше способов. -

-

- Если пакеты и исправления загружаются от имени пользователя, без - привилегий root, то файлы будут - принадлежать этому пользователю. Файловая система записывает - владельца по его UID, а UID обычного пользователя в хост-дистрибутиве - не будет присвоен в LFS. Таким образом, файлы останутся - принадлежащими безымянному UID в конечной системе LFS. Если вы не - назначили тот же UID для своего пользователя в системе LFS, измените - владельца этих файлов на root сейчас, - чтобы избежать этой проблемы: -

-
chown root:root $LFS/sources/*
-
- - - diff --git a/lfs-12.0-sysv/chapter03/packages.html b/lfs-12.0-sysv/chapter03/packages.html deleted file mode 100644 index 476e9f2..0000000 --- a/lfs-12.0-sysv/chapter03/packages.html +++ /dev/null @@ -1,1736 +0,0 @@ - - - - - - 3.2. Все пакеты - - - - - - - - -
-

- 3.2. - Все пакеты -

-
- [Примечание] -

- Примечание -

-

- Ознакомьтесь с рекомендациями - по безопасности перед загрузкой пакетов, чтобы узнать, следует - ли использовать более новую версию пакета, чтобы избежать проблем - безопасности. -

-

- При выходе новых версий, старые версии пакетов могут быть удалены, - особенно, если они содержали уязвимости. Если одна или несколько - ссылок ниже недоступны, сначала ознакомьтесь с рекомендациями по - безопасности, чтобы понять следует ли использовать более новую - версию (с исправленной уязвимостью). Если нет, попробуйте скачать - удаленный пакет с зеркала. Хотя старый релиз можно скачать с - зеркала (даже если он был удален из-за уязвимости), для сборки - системы не рекомендуется использовать версию, которая уязвима. -

-
-

- Загрузите или иным образом получите следующие пакеты: -

-
-
-
-
- Acl (2.3.1) - 348 - KB: -
-
-

- Домашняя страница: https://savannah.nongnu.org/projects/acl -

-

- Ссылка на загрузку: - https://download.savannah.gnu.org/releases/acl/acl-2.3.1.tar.xz -

-

- Контрольная сумма MD5: 95ce715fe09acca7c12d3306d0f076b2 -

-
-
- Attr (2.5.1) - 456 - KB: -
-
-

- Домашняя страница: https://savannah.nongnu.org/projects/attr -

-

- Ссылка на загрузку: - https://download.savannah.gnu.org/releases/attr/attr-2.5.1.tar.gz -

-

- Контрольная сумма MD5: ac1c5a7a084f0f83b8cace34211f64d8 -

-
-
- Autoconf (2.71) - 1,263 - KB: -
-
-

- Домашняя страница: https://www.gnu.org/software/autoconf/ -

-

- Ссылка на загрузку: https://ftp.gnu.org/gnu/autoconf/autoconf-2.71.tar.xz -

-

- Контрольная сумма MD5: 12cfa1687ffa2606337efe1a64416106 -

-
-
- Automake (1.16.5) - 1,565 KB: -
-
-

- Домашняя страница: https://www.gnu.org/software/automake/ -

-

- Ссылка на загрузку: https://ftp.gnu.org/gnu/automake/automake-1.16.5.tar.xz -

-

- Контрольная сумма MD5: 4017e96f89fca45ca946f1c5db6be714 -

-
-
- Bash (5.2.15) - 10,695 - KB: -
-
-

- Домашняя страница: https://www.gnu.org/software/bash/ -

-

- Ссылка на загрузку: https://ftp.gnu.org/gnu/bash/bash-5.2.15.tar.gz -

-

- Контрольная сумма MD5: 4281bb43497f3905a308430a8d6a30a5 -

-
-
- Bc (6.6.0) - 455 - KB: -
-
-

- Домашняя страница: https://git.gavinhoward.com/gavin/bc -

-

- Ссылка на загрузку: - https://github.com/gavinhoward/bc/releases/download/6.6.0/bc-6.6.0.tar.xz -

-

- Контрольная сумма MD5: a148cbaaf8ff813b7289a00539e74a5f -

-
-
- Binutils (2.41) - 26,139 - KB: -
-
-

- Домашняя страница: https://www.gnu.org/software/binutils/ -

-

- Ссылка на загрузку: - https://sourceware.org/pub/binutils/releases/binutils-2.41.tar.xz -

-

- Контрольная сумма MD5: 256d7e0ad998e423030c84483a7c1e30 -

-
-
- Bison (3.8.2) - 2,752 - KB: -
-
-

- Домашняя страница: https://www.gnu.org/software/bison/ -

-

- Ссылка на загрузку: https://ftp.gnu.org/gnu/bison/bison-3.8.2.tar.xz -

-

- Контрольная сумма MD5: c28f119f405a2304ff0a7ccdcc629713 -

-
-
- Bzip2 (1.0.8) - 792 - KB: -
-
-

- Ссылка на загрузку: https://www.sourceware.org/pub/bzip2/bzip2-1.0.8.tar.gz -

-

- Контрольная сумма MD5: 67e051268d0c475ea773822f7500d0e5 -

-
-
- Check (0.15.2) - 760 - KB: -
-
-

- Домашняя страница: https://libcheck.github.io/check -

-

- Ссылка на загрузку: - https://github.com/libcheck/check/releases/download/0.15.2/check-0.15.2.tar.gz -

-

- Контрольная сумма MD5: 50fcafcecde5a380415b12e9c574e0b2 -

-
-
- Coreutils (9.3) - 5,673 - KB: -
-
-

- Домашняя страница: https://www.gnu.org/software/coreutils/ -

-

- Ссылка на загрузку: https://ftp.gnu.org/gnu/coreutils/coreutils-9.3.tar.xz -

-

- Контрольная сумма MD5: 040b4b7acaf89499834bfc79609af29f -

-
-
- DejaGNU (1.6.3) - 608 - KB: -
-
-

- Домашняя страница: https://www.gnu.org/software/dejagnu/ -

-

- Ссылка на загрузку: https://ftp.gnu.org/gnu/dejagnu/dejagnu-1.6.3.tar.gz -

-

- Контрольная сумма MD5: 68c5208c58236eba447d7d6d1326b821 -

-
-
- Diffutils (3.10) - 1,587 - KB: -
-
-

- Домашняя страница: https://www.gnu.org/software/diffutils/ -

-

- Ссылка на загрузку: https://ftp.gnu.org/gnu/diffutils/diffutils-3.10.tar.xz -

-

- Контрольная сумма MD5: 2745c50f6f4e395e7b7d52f902d075bf -

-
-
- E2fsprogs (1.47.0) - 9,412 KB: -
-
-

- Домашняя страница: http://e2fsprogs.sourceforge.net/ -

-

- Ссылка на загрузку: - https://downloads.sourceforge.net/project/e2fsprogs/e2fsprogs/v1.47.0/e2fsprogs-1.47.0.tar.gz -

-

- Контрольная сумма MD5: 6b4f18a33873623041857b4963641ee9 -

-
-
- Elfutils (0.189) - 8,936 - KB: -
-
-

- Домашняя страница: https://sourceware.org/elfutils/ -

-

- Ссылка на загрузку: - https://sourceware.org/ftp/elfutils/0.189/elfutils-0.189.tar.bz2 -

-

- Контрольная сумма MD5: 5cfaa711a90cb670406cd495aeaa6030 -

-
-
- Expat (2.5.0) - 450 - KB: -
-
-

- Домашняя страница: https://libexpat.github.io/ -

-

- Ссылка на загрузку: - https://prdownloads.sourceforge.net/expat/expat-2.5.0.tar.xz -

-

- Контрольная сумма MD5: ac6677b6d1b95d209ab697ce8b688704 -

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

- Домашняя страница: https://core.tcl.tk/expect/ -

-

- Ссылка на загрузку: - https://prdownloads.sourceforge.net/expect/expect5.45.4.tar.gz -

-

- Контрольная сумма MD5: 00fce8de158422f5ccd2666512329bd2 -

-
-
- File (5.45) - 1,218 - KB: -
-
-

- Домашняя страница: https://www.darwinsys.com/file/ -

-

- Ссылка на загрузку: https://astron.com/pub/file/file-5.45.tar.gz -

-

- Контрольная сумма MD5: 26b2a96d4e3a8938827a1e572afd527a -

-
-
- Findutils (4.9.0) - 1,999 KB: -
-
-

- Домашняя страница: https://www.gnu.org/software/findutils/ -

-

- Ссылка на загрузку: https://ftp.gnu.org/gnu/findutils/findutils-4.9.0.tar.xz -

-

- Контрольная сумма MD5: 4a4a547e888a944b2f3af31d789a1137 -

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

- Домашняя страница: https://github.com/westes/flex -

-

- Ссылка на загрузку: - https://github.com/westes/flex/releases/download/v2.6.4/flex-2.6.4.tar.gz -

-

- Контрольная сумма MD5: 2882e3179748cc9f9c23ec593d6adc8d -

-
-
- Flit-core (3.9.0) - 41 - KB: -
-
-

- Домашняя страница: https://pypi.org/project/flit-core/ -

-

- Ссылка на загрузку: - https://pypi.org/packages/source/f/flit-core/flit_core-3.9.0.tar.gz -

-

- Контрольная сумма MD5: 3bc52f1952b9a78361114147da63c35b -

-
-
- Gawk (5.2.2) - 3,324 - KB: -
-
-

- Домашняя страница: https://www.gnu.org/software/gawk/ -

-

- Ссылка на загрузку: https://ftp.gnu.org/gnu/gawk/gawk-5.2.2.tar.xz -

-

- Контрольная сумма MD5: d63b4de2c722cbd9b8cc8e6f14d78a1e -

-
-
- GCC (13.2.0) - 85,800 - KB: -
-
-

- Домашняя страница: https://gcc.gnu.org/ -

-

- Ссылка на загрузку: https://ftp.gnu.org/gnu/gcc/gcc-13.2.0/gcc-13.2.0.tar.xz -

-

- Контрольная сумма MD5: e0e48554cc6e4f261d55ddee9ab69075 -

-

- Контрольная сумма SHA256: -

-
-
- GDBM (1.23) - 1,092 - KB: -
-
-

- Домашняя страница: https://www.gnu.org/software/gdbm/ -

-

- Ссылка на загрузку: https://ftp.gnu.org/gnu/gdbm/gdbm-1.23.tar.gz -

-

- Контрольная сумма MD5: 8551961e36bf8c70b7500d255d3658ec -

-
-
- Gettext (0.22) - 9,775 - KB: -
-
-

- Домашняя страница: https://www.gnu.org/software/gettext/ -

-

- Ссылка на загрузку: https://ftp.gnu.org/gnu/gettext/gettext-0.22.tar.xz -

-

- Контрольная сумма MD5: db2f3daf34fd5b85ab1a56f9033e42d1 -

-
-
- Glibc (2.38) - 18,471 - KB: -
-
-

- Домашняя страница: https://www.gnu.org/software/libc/ -

-

- Ссылка на загрузку: https://ftp.gnu.org/gnu/glibc/glibc-2.38.tar.xz -

-

- Контрольная сумма MD5: 778cce0ea6bf7f84ca8caacf4a01f45b -

-
- [Примечание] -

- Примечание -

-

- Разработчики Glibc поддерживают - Git ветку содержащую исправления, которые заслуживают - внимания для Glibc-2.38 но, к сожалению, выпущенные после - релиза Glibc-2.38. Редакторы LFS публикуют рекомендации по - безопасности, если в ветку добавлено какое-либо исправление - безопасности, но для других недавно добавленных патчей не - будет предпринято никаких действий. Вы можете - самостоятельно просмотреть патчи и включить некоторые из - них, если посчитаете их важными. -

-
-
-
- GMP (6.3.0) - 2,046 - KB: -
-
-

- Домашняя страница: https://www.gnu.org/software/gmp/ -

-

- Ссылка на загрузку: https://ftp.gnu.org/gnu/gmp/gmp-6.3.0.tar.xz -

-

- Контрольная сумма MD5: 956dc04e864001a9c22429f761f2c283 -

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

- Домашняя страница: https://www.gnu.org/software/gperf/ -

-

- Ссылка на загрузку: https://ftp.gnu.org/gnu/gperf/gperf-3.1.tar.gz -

-

- Контрольная сумма MD5: 9e251c0a618ad0824b51117d5d9db87e -

-
-
- Grep (3.11) - 1,664 - KB: -
-
-

- Домашняя страница: https://www.gnu.org/software/grep/ -

-

- Ссылка на загрузку: https://ftp.gnu.org/gnu/grep/grep-3.11.tar.xz -

-

- Контрольная сумма MD5: 7c9bbd74492131245f7cdb291fa142c0 -

-
-
- Groff (1.23.0) - 7,259 - KB: -
-
-

- Домашняя страница: https://www.gnu.org/software/groff/ -

-

- Ссылка на загрузку: https://ftp.gnu.org/gnu/groff/groff-1.23.0.tar.gz -

-

- Контрольная сумма MD5: 5e4f40315a22bb8a158748e7d5094c7d -

-
-
- GRUB (2.06) - 6,428 - KB: -
-
-

- Домашняя страница: https://www.gnu.org/software/grub/ -

-

- Ссылка на загрузку: https://ftp.gnu.org/gnu/grub/grub-2.06.tar.xz -

-

- Контрольная сумма MD5: cf0fd928b1e5479c8108ee52cb114363 -

-
-
- Gzip (1.12) - 807 - KB: -
-
-

- Домашняя страница: https://www.gnu.org/software/gzip/ -

-

- Ссылка на загрузку: https://ftp.gnu.org/gnu/gzip/gzip-1.12.tar.xz -

-

- Контрольная сумма MD5: 9608e4ac5f061b2a6479dc44e917a5db -

-
-
- Iana-Etc (20230810) - 588 KB: -
-
-

- Домашняя страница: https://www.iana.org/protocols -

-

- Ссылка на загрузку: - https://github.com/Mic92/iana-etc/releases/download/20230810/iana-etc-20230810.tar.gz -

-

- Контрольная сумма MD5: 0502bd41cc0bf1c1c3cd8651058b9650 -

-
-
- Inetutils (2.4) - 1,522 - KB: -
-
-

- Домашняя страница: https://www.gnu.org/software/inetutils/ -

-

- Ссылка на загрузку: https://ftp.gnu.org/gnu/inetutils/inetutils-2.4.tar.xz -

-

- Контрольная сумма MD5: 319d65bb5a6f1847c4810651f3b4ba74 -

-

- Контрольная сумма SHA256: -

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

- Домашняя страница: https://freedesktop.org/wiki/Software/intltool -

-

- Ссылка на загрузку: - https://launchpad.net/intltool/trunk/0.51.0/+download/intltool-0.51.0.tar.gz -

-

- Контрольная сумма MD5: 12e517cac2b57a0121cda351570f1e63 -

-
-
- IPRoute2 (6.4.0) - 904 - KB: -
-
-

- Домашняя страница: https://www.kernel.org/pub/linux/utils/net/iproute2/ -

-

- Ссылка на загрузку: - https://www.kernel.org/pub/linux/utils/net/iproute2/iproute2-6.4.0.tar.xz -

-

- Контрольная сумма MD5: 90ce0eb84a8f1e2b14ffa77e8eb3f5ed -

-
-
- Jinja2 (3.1.2) - 262 - KB: -
-
-

- Домашняя страница: https://jinja.palletsprojects.com/en/3.0.x/ -

-

- Ссылка на загрузку: - https://pypi.org/packages/source/J/Jinja2/Jinja2-3.1.2.tar.gz -

-

- Контрольная сумма MD5: d31148abd89c1df1cdb077a55db27d02 -

-
-
- Kbd (2.6.1) - 1,554 - KB: -
-
-

- Домашняя страница: https://kbd-project.org/ -

-

- Ссылка на загрузку: - https://www.kernel.org/pub/linux/utils/kbd/kbd-2.6.1.tar.xz -

-

- Контрольная сумма MD5: 986241b5d94c6bd4ed2f6d2a5ab4320b -

-
-
- Kmod (30) - 555 - KB: -
-
-

- Ссылка на загрузку: - https://www.kernel.org/pub/linux/utils/kernel/kmod/kmod-30.tar.xz -

-

- Контрольная сумма MD5: 85202f0740a75eb52f2163c776f9b564 -

-
-
- Less (643) - 579 - KB: -
-
-

- Домашняя страница: https://www.greenwoodsoftware.com/less/ -

-

- Ссылка на загрузку: https://www.greenwoodsoftware.com/less/less-643.tar.gz -

-

- Контрольная сумма MD5: cf05e2546a3729492b944b4874dd43dd -

-
-
- LFS-Bootscripts (20230728) - 33 KB: -
-
-

- Ссылка на загрузку: - https://mirror.linuxfromscratch.ru/lfs/downloads/12.0/lfs-bootscripts-20230728.tar.xz -

-

- Контрольная сумма MD5: fea080e8be5d0c18095c81bdb9128f5b -

-
-
- Libcap (2.69) - 185 - KB: -
-
-

- Домашняя страница: https://sites.google.com/site/fullycapable/ -

-

- Ссылка на загрузку: - https://www.kernel.org/pub/linux/libs/security/linux-privs/libcap2/libcap-2.69.tar.xz -

-

- Контрольная сумма MD5: 4667bacb837f9ac4adb4a1a0266f4b65 -

-
-
- Libffi (3.4.4) - 1,331 - KB: -
-
-

- Домашняя страница: https://sourceware.org/libffi/ -

-

- Ссылка на загрузку: - https://github.com/libffi/libffi/releases/download/v3.4.4/libffi-3.4.4.tar.gz -

-

- Контрольная сумма MD5: 0da1a5ed7786ac12dcbaf0d499d8a049 -

-
-
- Libpipeline (1.5.7) - 956 KB: -
-
-

- Домашняя страница: https://libpipeline.nongnu.org/ -

-

- Ссылка на загрузку: - https://download.savannah.gnu.org/releases/libpipeline/libpipeline-1.5.7.tar.gz -

-

- Контрольная сумма MD5: 1a48b5771b9f6c790fb4efdb1ac71342 -

-
-
- Libtool (2.4.7) - 996 - KB: -
-
-

- Домашняя страница: https://www.gnu.org/software/libtool/ -

-

- Ссылка на загрузку: https://ftp.gnu.org/gnu/libtool/libtool-2.4.7.tar.xz -

-

- Контрольная сумма MD5: 2fc0b6ddcd66a89ed6e45db28fa44232 -

-
-
- Libxcrypt (4.4.36) - 610 - KB: -
-
-

- Домашняя страница: https://github.com/besser82/libxcrypt/ -

-

- Ссылка на загрузку: - https://github.com/besser82/libxcrypt/releases/download/v4.4.36/libxcrypt-4.4.36.tar.xz -

-

- Контрольная сумма MD5: b84cd4104e08c975063ec6c4d0372446 -

-
-
- Linux (6.4.12) - 134,616 - KB: -
-
-

- Домашняя страница: https://www.kernel.org/ -

-

- Ссылка на загрузку: - https://www.kernel.org/pub/linux/kernel/v6.x/linux-6.4.12.tar.xz -

-

- Контрольная сумма MD5: 24570ba0ef9dd592bd640a1a41686fac -

-
- [Примечание] -

- Примечание -

-

- Ядро Linux обновляется достаточно часто из-за обнаружения - уязвимостей в системе безопасности. Можно использовать - последнюю стабильную версию ядра, если на странице с - ошибками и рекомендациями по безопасности не указано иное. -

-

- Для пользователей, у которых ограниченный или - тарифицируемый выход в интернет, и которые хотят обновить - ядро Linux, можно скачать базовую версию ядра, а затем - применить к ней патчи, которые могут быть загружены - отдельно. Это может сэкономить немного времени или - стоимость при обновлению до следующих версий. -

-
-
-
- M4 (1.4.19) - 1,617 - KB: -
-
-

- Домашняя страница: https://www.gnu.org/software/m4/ -

-

- Ссылка на загрузку: https://ftp.gnu.org/gnu/m4/m4-1.4.19.tar.xz -

-

- Контрольная сумма MD5: 0d90823e1426f1da2fd872df0311298d -

-
-
- Make (4.4.1) - 2,300 - KB: -
-
-

- Домашняя страница: https://www.gnu.org/software/make/ -

-

- Ссылка на загрузку: https://ftp.gnu.org/gnu/make/make-4.4.1.tar.gz -

-

- Контрольная сумма MD5: c8469a3713cbbe04d955d4ae4be23eeb -

-
-
- Man-DB (2.11.2) - 1,908 - KB: -
-
-

- Домашняя страница: https://www.nongnu.org/man-db/ -

-

- Ссылка на загрузку: - https://download.savannah.gnu.org/releases/man-db/man-db-2.11.2.tar.xz -

-

- Контрольная сумма MD5: a7d59fb2df6158c44f8f7009dcc6d875 -

-
-
- Man-pages (6.05.01) - 2,144 KB: -
-
-

- Домашняя страница: https://www.kernel.org/doc/man-pages/ -

-

- Ссылка на загрузку: - https://www.kernel.org/pub/linux/docs/man-pages/man-pages-6.05.01.tar.xz -

-

- Контрольная сумма MD5: de4563b797cf9b1e0b0d73628b35e442 -

-
-
- MarkupSafe (2.1.3) - 19 - KB: -
-
-

- Домашняя страница: https://palletsprojects.com/p/markupsafe/ -

-

- Ссылка на загрузку: - https://pypi.org/packages/source/M/MarkupSafe/MarkupSafe-2.1.3.tar.gz -

-

- Контрольная сумма MD5: ca33f119bd0551ce15837f58bb180214 -

-
-
- Meson (1.2.1) - 2,131 - KB: -
-
-

- Домашняя страница: https://mesonbuild.com -

-

- Ссылка на загрузку: - https://github.com/mesonbuild/meson/releases/download/1.2.1/meson-1.2.1.tar.gz -

-

- Контрольная сумма MD5: e3cc846536189aacd7d01858a45ca9af -

-
-
- MPC (1.3.1) - 756 - KB: -
-
-

- Домашняя страница: https://www.multiprecision.org/ -

-

- Ссылка на загрузку: https://ftp.gnu.org/gnu/mpc/mpc-1.3.1.tar.gz -

-

- Контрольная сумма MD5: 5c9bc658c9fd0f940e8e3e0f09530c62 -

-
-
- MPFR (4.2.0) - 1,443 - KB: -
-
-

- Домашняя страница: https://www.mpfr.org/ -

-

- Ссылка на загрузку: https://ftp.gnu.org/gnu/mpfr/mpfr-4.2.0.tar.xz -

-

- Контрольная сумма MD5: a25091f337f25830c16d2054d74b5af7 -

-
-
- Ncurses (6.4) - 3,528 - KB: -
-
-

- Домашняя страница: https://www.gnu.org/software/ncurses/ -

-

- Ссылка на загрузку: - https://invisible-mirror.net/archives/ncurses/ncurses-6.4.tar.gz -

-

- Контрольная сумма MD5: 5a62487b5d4ac6b132fe2bf9f8fad29b -

-
-
- Ninja (1.11.1) - 225 - KB: -
-
-

- Домашняя страница: https://ninja-build.org/ -

-

- Ссылка на загрузку: - https://github.com/ninja-build/ninja/archive/v1.11.1/ninja-1.11.1.tar.gz -

-

- Контрольная сумма MD5: 32151c08211d7ca3c1d832064f6939b0 -

-
-
- OpenSSL (3.1.2) - 15,196 - KB: -
-
-

- Домашняя страница: https://www.openssl.org/ -

-

- Ссылка на загрузку: https://www.openssl.org/source/openssl-3.1.2.tar.gz -

-

- Контрольная сумма MD5: 1d7861f969505e67b8677e205afd9ff4 -

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

- Домашняя страница: https://savannah.gnu.org/projects/patch/ -

-

- Ссылка на загрузку: https://ftp.gnu.org/gnu/patch/patch-2.7.6.tar.xz -

-

- Контрольная сумма MD5: 78ad9937e4caadcba1526ef1853730d5 -

-
-
- Perl (5.38.0) - 13,248 - KB: -
-
-

- Домашняя страница: https://www.perl.org/ -

-

- Ссылка на загрузку: https://www.cpan.org/src/5.0/perl-5.38.0.tar.xz -

-

- Контрольная сумма MD5: e1c8aaec897dd386c741f97eef9f2e87 -

-
-
- Pkgconf (2.0.1) - 304 - KB: -
-
-

- Домашняя страница: http://pkgconf.org/ -

-

- Ссылка на загрузку: - https://distfiles.ariadne.space/pkgconf/pkgconf-2.0.1.tar.xz -

-

- Контрольная сумма MD5: efc1318f368bb592aba6ebb18d9ff254 -

-
-
- Procps (4.0.3) - 1,268 - KB: -
-
-

- Домашняя страница: https://sourceforge.net/projects/procps-ng -

-

- Ссылка на загрузку: - https://sourceforge.net/projects/procps-ng/files/Production/procps-ng-4.0.3.tar.xz -

-

- Контрольная сумма MD5: 22b287bcd758831cbaf3356cd3054fe7 -

-
-
- Psmisc (23.6) - 415 - KB: -
-
-

- Домашняя страница: https://gitlab.com/psmisc/psmisc -

-

- Ссылка на загрузку: - https://sourceforge.net/projects/psmisc/files/psmisc/psmisc-23.6.tar.xz -

-

- Контрольная сумма MD5: ed3206da1184ce9e82d607dc56c52633 -

-
-
- Python (3.11.4) - 19,488 - KB: -
-
-

- Домашняя страница: https://www.python.org/ -

-

- Ссылка на загрузку: - https://www.python.org/ftp/python/3.11.4/Python-3.11.4.tar.xz -

-

- Контрольная сумма MD5: fb7f7eae520285788449d569e45b6718 -

-
-
- Python Documentation (3.11.4) - 7,649 KB: -
-
-

- Ссылка на загрузку: - https://www.python.org/ftp/python/doc/3.11.4/python-3.11.4-docs-html.tar.bz2 -

-

- Контрольная сумма MD5: cdce7b1189bcf52947f3b434ab04d7e2 -

-
-
- Readline (8.2) - 2,973 - KB: -
-
-

- Домашняя страница: https://tiswww.case.edu/php/chet/readline/rltop.html -

-

- Ссылка на загрузку: https://ftp.gnu.org/gnu/readline/readline-8.2.tar.gz -

-

- Контрольная сумма MD5: 4aa1b31be779e6b84f9a96cb66bc50f6 -

-
-
- Sed (4.9) - 1,365 - KB: -
-
-

- Домашняя страница: https://www.gnu.org/software/sed/ -

-

- Ссылка на загрузку: https://ftp.gnu.org/gnu/sed/sed-4.9.tar.xz -

-

- Контрольная сумма MD5: 6aac9b2dbafcd5b7a67a8a9bcb8036c3 -

-
-
- Shadow (4.13) - 1,722 - KB: -
-
-

- Домашняя страница: https://shadow-maint.github.io/shadow/ -

-

- Ссылка на загрузку: - https://github.com/shadow-maint/shadow/releases/download/4.13/shadow-4.13.tar.xz -

-

- Контрольная сумма MD5: b1ab01b5462ddcf43588374d57bec123 -

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

- Домашняя страница: https://www.infodrom.org/projects/sysklogd/ -

-

- Ссылка на загрузку: - https://www.infodrom.org/projects/sysklogd/download/sysklogd-1.5.1.tar.gz -

-

- Контрольная сумма MD5: c70599ab0d037fde724f7210c2c8d7f8 -

-
-
- Systemd (254) - 13,985 - KB: -
-
-

- Домашняя страница: https://www.freedesktop.org/wiki/Software/systemd/ -

-

- Ссылка на загрузку: - https://github.com/systemd/systemd/archive/v254/systemd-254.tar.gz -

-

- Контрольная сумма MD5: 0d266e5361dc72097b6c18cfde1c0001 -

-
-
- Systemd Man Pages(254) - 626 KB: -
-
-

- Домашняя страница: https://www.freedesktop.org/wiki/Software/systemd/ -

-

- Ссылка на загрузку: - https://anduin.linuxfromscratch.org/LFS/systemd-man-pages-254.tar.xz -

-

- Контрольная сумма MD5: fc32faeac581e1890ca27fcea3858410 -

-
- [Примечание] -

- Примечание -

-

- Команда Linux From Scratch генерирует собственный архив - справочных страниц, используя исходный код systemd. Это - делается для того, чтобы избежать ненужных зависимостей. -

-
-
-
- Sysvinit (3.07) - 258 - KB: -
-
-

- Домашняя страница: https://savannah.nongnu.org/projects/sysvinit -

-

- Ссылка на загрузку: - https://github.com/slicer69/sysvinit/releases/download/3.07/sysvinit-3.07.tar.xz -

-

- Контрольная сумма MD5: 190398c660af29c97d892126d2a95e28 -

-
-
- Tar (1.35) - 2,263 - KB: -
-
-

- Домашняя страница: https://www.gnu.org/software/tar/ -

-

- Ссылка на загрузку: https://ftp.gnu.org/gnu/tar/tar-1.35.tar.xz -

-

- Контрольная сумма MD5: a2d8042658cfd8ea939e6d911eaf4152 -

-
-
- Tcl (8.6.13) - 10,581 - KB: -
-
-

- Домашняя страница: http://tcl.sourceforge.net/ -

-

- Ссылка на загрузку: https://downloads.sourceforge.net/tcl/tcl8.6.13-src.tar.gz -

-

- Контрольная сумма MD5: 0e4358aade2f5db8a8b6f2f6d9481ec2 -

-
-
- Tcl Documentation (8.6.13) - 1,165 KB: -
-
-

- Ссылка на загрузку: - https://downloads.sourceforge.net/tcl/tcl8.6.13-html.tar.gz -

-

- Контрольная сумма MD5: 4452f2f6d557f5598cca17b786d6eb68 -

-
-
- Texinfo (7.0.3) - 4,776 - KB: -
-
-

- Домашняя страница: https://www.gnu.org/software/texinfo/ -

-

- Ссылка на загрузку: https://ftp.gnu.org/gnu/texinfo/texinfo-7.0.3.tar.xz -

-

- Контрольная сумма MD5: 37bf94fd255729a14d4ea3dda119f81a -

-
-
- Time Zone Data (2023c) - 436 KB: -
-
-

- Домашняя страница: https://www.iana.org/time-zones -

-

- Ссылка на загрузку: - https://www.iana.org/time-zones/repository/releases/tzdata2023c.tar.gz -

-

- Контрольная сумма MD5: 5aa672bf129b44dd915f8232de38e49a -

-
-
- Udev-lfs Tarball (udev-lfs-20230818) - - 10 KB: -
-
-

- Ссылка на загрузку: - https://anduin.linuxfromscratch.org/LFS/udev-lfs-20230818.tar.xz -

-

- Контрольная сумма MD5: acd4360d8a5c3ef320b9db88d275dae6 -

-
-
- Util-linux (2.39.1) - 8,156 KB: -
-
-

- Домашняя страница: - https://git.kernel.org/pub/scm/utils/util-linux/util-linux.git/ -

-

- Ссылка на загрузку: - https://www.kernel.org/pub/linux/utils/util-linux/v2.39/util-linux-2.39.1.tar.xz -

-

- Контрольная сумма MD5: c542cd7c0726254e4b3006a9b428201a -

-
-
- Vim (9.0.1677) - 16,670 - KB: -
-
-

- Домашняя страница: https://www.vim.org -

-

- Ссылка на загрузку: - https://anduin.linuxfromscratch.org/LFS/vim-9.0.1677.tar.gz -

-

- Контрольная сумма MD5: 65e6b09ef0628a2d8eba79f1d1d5a564 -

-
- [Примечание] -

- Примечание -

-

- Версия vim меняется ежедневно. Чтобы получить последнюю - версию, перейдите на https://github.com/vim/vim/tags. -

-
-
-
- Wheel (0.41.1) - 96 - KB: -
-
-

- Домашняя страница: https://pypi.org/project/wheel/ -

-

- Ссылка на загрузку: - https://pypi.org/packages/source/w/wheel/wheel-0.41.1.tar.gz -

-

- Контрольная сумма MD5: 181cb3f4d8ed340c904a0e1c416d341d -

-
-
- XML::Parser (2.46) - 249 - KB: -
-
-

- Домашняя страница: https://github.com/chorny/XML-Parser -

-

- Ссылка на загрузку: - https://cpan.metacpan.org/authors/id/T/TO/TODDR/XML-Parser-2.46.tar.gz -

-

- Контрольная сумма MD5: 80bb18a8e6240fcf7ec2f7b57601c170 -

-
-
- Xz Utils (5.4.4) - 1,623 - KB: -
-
-

- Домашняя страница: https://tukaani.org/xz -

-

- Ссылка на загрузку: https://tukaani.org/xz/xz-5.4.4.tar.xz -

-

- Контрольная сумма MD5: d83d6f64a64f88759e312b8a38c3add6 -

-
-
- Zlib (1.2.13) - 1267 - KB: -
-
-

- Домашняя страница: https://www.zlib.net/ -

-

- Ссылка на загрузку: https://anduin.linuxfromscratch.org/LFS/zlib-1.2.13.tar.xz -

-

- Контрольная сумма MD5: 7d9fc1d78ae2fa3e84fe98b77d006c63 -

-
-
- Zstd (1.5.5) - 2,314 - KB: -
-
-

- Домашняя страница: https://facebook.github.io/zstd/ -

-

- Ссылка на загрузку: - https://github.com/facebook/zstd/releases/download/v1.5.5/zstd-1.5.5.tar.gz -

-

- Контрольная сумма MD5: 63251602329a106220e0a5ad26ba656f -

-
-
-
-
-

- Общий размер пакетов: примерно 493 MB -

-
- - - diff --git a/lfs-12.0-sysv/chapter03/patches.html b/lfs-12.0-sysv/chapter03/patches.html deleted file mode 100644 index 3c93294..0000000 --- a/lfs-12.0-sysv/chapter03/patches.html +++ /dev/null @@ -1,224 +0,0 @@ - - - - - - 3.3. Необходимые патчи - - - - - - - - -
-

- 3.3. - Необходимые патчи -

-

- В дополнение к пакетам требуется несколько патчей. Эти патчи - исправляют ошибки в пакетах, которые должны быть исправлены - сопровождающим. Патчи также вносят небольшие изменения, облегчающие - работу с пакетами. Для создания системы LFS потребуются следующие - исправления: -

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

- Ссылка на загрузку: - https://mirror.linuxfromscratch.ru/patches/lfs/12.0/bzip2-1.0.8-install_docs-1.patch -

-

- Контрольная сумма MD5: 6a5ac7e89b791aae556de0f745916f7f -

-
-
- Coreutils Internationalization Fixes Patch - - 166 KB: -
-
-

- Ссылка на загрузку: - https://mirror.linuxfromscratch.ru/patches/lfs/12.0/coreutils-9.3-i18n-1.patch -

-

- Контрольная сумма MD5: 3c6340b3ddd62f4acdf8d3caa6fad6b0 -

-
-
- Glibc Memalign Patch - 20 KB: -
-
-

- Ссылка на загрузку: - https://mirror.linuxfromscratch.ru/patches/lfs/12.0/glibc-2.38-memalign_fix-1.patch -

-

- Контрольная сумма MD5: 2c3552bded42a83ad6a7087c5fbf3857 -

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

- Ссылка на загрузку: - https://mirror.linuxfromscratch.ru/patches/lfs/12.0/glibc-2.38-fhs-1.patch -

-

- Контрольная сумма MD5: 9a5997c3452909b1769918c759eff8a2 -

-
-
- GRUB Upstream Fixes Patch - 8 KB: -
-
-

- Ссылка на загрузку: - https://mirror.linuxfromscratch.ru/patches/lfs/12.0/grub-2.06-upstream_fixes-1.patch -

-

- Контрольная сумма MD5: da388905710bb4cbfbc7bd7346ff9174 -

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

- Ссылка на загрузку: - https://mirror.linuxfromscratch.ru/patches/lfs/12.0/kbd-2.6.1-backspace-1.patch -

-

- Контрольная сумма MD5: f75cca16a38da6caa7d52151f7136895 -

-
-
- Readline Upstream Fix Patch - 1.3 KB: -
-
-

- Ссылка на загрузку: - https://mirror.linuxfromscratch.ru/patches/lfs/12.0/readline-8.2-upstream_fix-1.patch -

-

- Контрольная сумма MD5: dd1764b84cfca6b677f44978218a75da -

-
-
- Sysvinit Consolidated Patch - 2.5 KB: -
-
-

- Ссылка на загрузку: - https://mirror.linuxfromscratch.ru/patches/lfs/12.0/sysvinit-3.07-consolidated-1.patch -

-

- Контрольная сумма MD5: 17ffccbb8e18c39e8cedc32046f3a475 -

-
-
-
-
-

- Общий размер этих патчей: примерно 214.2 KB -

-

- Помимо указанных выше обязательных исправлений, существует ряд - необязательных патчей, созданных сообществом LFS. Эти необязательные - исправления решают незначительные проблемы или включают функции, - которые не включены по умолчанию. Не стесняйтесь просматривать базу - данных исправлений, расположенную по адресу https://mirror.linuxfromscratch.ru/patches/downloads/, - и применять патчи, необходимые вашей системе. -

-
- - - diff --git a/lfs-12.0-sysv/chapter04/aboutsbus.html b/lfs-12.0-sysv/chapter04/aboutsbus.html deleted file mode 100644 index 5864f71..0000000 --- a/lfs-12.0-sysv/chapter04/aboutsbus.html +++ /dev/null @@ -1,153 +0,0 @@ - - - - - - 4.5. О SBU (Стандартная единица времени сборки) - - - - - - - - -
-

- 4.5. О SBU - (Стандартная единица времени сборки) -

-

- Многие люди хотели бы знать заранее, сколько примерно времени - потребуется для компиляции и установки каждого пакета. Поскольку - Linux From Scratch может быть собран на различных системах, - невозможно дать точную оценку времени. Сборка самого большого пакета - (gcc) займет около 5 минут на быстрых системах, но может занять - несколько дней на более медленных компьютерах! Вместо фактического - времени в книге используется показатель "стандартная единица времени - сборки" (SBU). -

-

- Показатель SBU рассчитывается следующим образом. Первым пакетом, - который нужно скомпилировать, является binutils в Глава 5. Время, необходимое - для компиляции этого пакета с использованием одного ядра, будет - называться стандартной единицей времени сборки или SBU. Время - компиляции остальных пакетов будет рассчитано относительно этого - времени. -

-

- Например, рассмотрим пакет, время компиляции которого составляет 4,5 - SBU. Это означает, что если вашей системе потребовалось 10 минут для - компиляции и сборки первого прохода binutils, то для сборки этого - пакета потребуется примерно 45 - минут. К счастью, в большинстве случаев, время сборки меньше, чем у - binutils. -

-

- В целом, величина SBU не совсем точна, поскольку она зависит от - многих факторов, включая версию GCC хост-системы. Она приведены - здесь, чтобы дать оценку того, сколько времени может потребоваться - для сборки пакета, но в некоторых случаях цифры могут отличаться на - десятки минут. -

-
- [Примечание] -

- Примечание -

-

- Для многих современных систем с несколькими процессорами (или - ядрами) время компиляции пакета можно сократить, выполнив - «параллельную - сборку», либо установив переменную среды, либо - сообщив программе make, сколько ядер задействовать - для сборки. Например, процессор Intel i5-6500 может поддерживать - четыре одновременных потока: -

-
export MAKEFLAGS='-j4'
-

- или просто собирать с флагом: -

-
make -j4
-

- Когда используется несколько ядер, единицы измерения SBU будут - различаться еще больше, чем обычно. В некоторых случаях make просто - завершится ошибкой. Анализ выходных данных процесса сборки также - будет более сложным, поскольку строки разных потоков будут - чередоваться. Если вы столкнулись с проблемой на этапе сборки, - вернитесь к сборке на одном ядре, чтобы проанализировать сообщения - об ошибках. -

-

- Представленные здесь значения времени основаны на замерах при - использовании четырех ядер (-j4). Время, указанное в главе 8, также - включает время выполнения регрессионных тестов для пакета, если не - указано иное. -

-
-
- - - diff --git a/lfs-12.0-sysv/chapter04/abouttestsuites.html b/lfs-12.0-sysv/chapter04/abouttestsuites.html deleted file mode 100644 index 38fef94..0000000 --- a/lfs-12.0-sysv/chapter04/abouttestsuites.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - 4.6. О наборах тестов - - - - - - - - -
-

- 4.6. О наборах тестов -

-

- Большинство пакетов предоставляют набор тестов. Запуск набора тестов - для только что собранного пакета — хорошая идея, потому что он может - обеспечить «проверку - работоспособности», указывающую, что все скомпилировано - правильно. Набор тестов, который проходит свой набор проверок, обычно - доказывает, что пакет работает так, как задумал разработчик. Однако - это не гарантирует, что пакет полностью без ошибок. -

-

- Некоторые наборы тестов более важны, чем другие. Например, наборы - тестов для основных инструментов — GCC, binutils и glibc — имеют - первостепенное значение из-за их центральной роли в правильно - функционирующей системе. Выполнение наборов тестов для GCC и glibc - может занять очень много времени, особенно на медленном оборудовании, - но их выполнение настоятельно рекомендуется. -

-
- [Примечание] -

- Примечание -

-

- Запуск наборов тестов, описанных в Глава 5 и Глава 6, - не имеет смысла, поскольку программы компилируются с помощью - кросс-компилятора, они, вероятно, не могут работать на хосте - сборки. -

-
-

- Распространенной проблемой при запуске наборов тестов для binutils и - GCC является нехватка псевдотерминалов (PTY). Это может привести к - большому количеству неудачных тестов. Причин может быть несколько, но - наиболее вероятная причина заключается в том, что в хост-системе - неправильно настроена файловая система devpts. Этот вопрос более подробно обсуждается на - странице https://mirror.linuxfromscratch.ru/lfs/faq.html#no-ptys. -

-

- Иногда наборы тестов не работают, по причинам, о которых знают - разработчики и которые они считают некритичными. Просмотрите журналы, - расположенные по адресу https://mirror.linuxfromscratch.ru/lfs/build-logs/12.0/, - чтобы проверить, ожидаются ли сбои. Этот сайт актуален для всех - наборов тестов, описанных в книге. -

-
- - - diff --git a/lfs-12.0-sysv/chapter04/addinguser.html b/lfs-12.0-sysv/chapter04/addinguser.html deleted file mode 100644 index 6603f55..0000000 --- a/lfs-12.0-sysv/chapter04/addinguser.html +++ /dev/null @@ -1,209 +0,0 @@ - - - - - - 4.3. Создание пользователя LFS - - - - - - - - -
-

- 4.3. - Создание пользователя LFS -

-

- При входе в систему под учетной записью root допущение одной ошибки может привести к - повреждению или разрушению системы. Поэтому пакеты в следующих двух - главах собираются из-под учетной записи непривилегированного - пользователя. Вы можете использовать свое собственное имя - пользователя, но чтобы упростить настройку рабочей среды, создайте - нового пользователя с именем lfs, - который является членом одноименной группы и выполняйте команды - из-под этой учетной записи в процессе установки. От имени - пользователя root выполните следующие - команды, чтобы добавить нового пользователя: -

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

- Значение параметров командной строки: -

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

- Устанавливает bash оболочкой по умолчанию - для пользователя lfs. -

-
-
- -g - lfs -
-
-

- Эта опция добавляет пользователя lfs в группу lfs. -

-
-
- -m -
-
-

- Создает домашний каталог для пользователя lfs. -

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

- Этот параметр предотвращает возможное копирование файлов из - предустановленного набора каталогов (по умолчанию /etc/skel) путем изменения местоположения - ввода на специальное null-устройство. -

-
-
- lfs -
-
-

- Это имя нового пользователя. -

-
-
-
-

- Если вы хотите войти в систему как lfs или переключиться на lfs из учетной записи непривилегированного - пользователя (в отличие от переключения на пользователя lfs при входе в систему как root, для которого не требуется пароль - пользователя lfs), вам необходимо - установить пароль для lfs. Выполните - следующую команду от имени пользователя root, чтобы установить пароль: -

-
passwd lfs
-

- Предоставьте пользователю lfs полный - доступ ко всем каталогам в папке $LFS, - назначив lfs владельцем: -

-
chown -v lfs $LFS/{usr{,/*},lib,var,etc,bin,sbin,tools}
-case $(uname -m) in
-  x86_64) chown -v lfs $LFS/lib64 ;;
-esac
-
- [Примечание] -

- Примечание -

-

- В некоторых хост-системах следующая команда не выполняется должным - образом и приостанавливает вход пользователя lfs в фоновом режиме. Если подсказка "lfs:~$" - не появляется сразу, ввод команды fg устранит проблему. -

-
-

- Затем запустите оболочку, работающую от имени пользователя - lfs. Это можно сделать, войдя в - систему как lfs на виртуальной - консоли или с помощью следующей команды замены/переключения - пользователя: -

-
su - lfs
-

- Аргумент «-» передает значение - команде su для запуска - оболочки входа в систему, а не обычной оболочки. Разница между этими - двумя типами оболочек подробно описана в bash(1) и info - bash. -

-
- - - diff --git a/lfs-12.0-sysv/chapter04/chapter04.html b/lfs-12.0-sysv/chapter04/chapter04.html deleted file mode 100644 index 4695232..0000000 --- a/lfs-12.0-sysv/chapter04/chapter04.html +++ /dev/null @@ -1,108 +0,0 @@ - - - - - - Глава 4. Заключительный этап подготовки - - - - - - - - -
-

- 4. - Заключительный этап подготовки -

- -
- - - diff --git a/lfs-12.0-sysv/chapter04/creatingminlayout.html b/lfs-12.0-sysv/chapter04/creatingminlayout.html deleted file mode 100644 index 58fb99b..0000000 --- a/lfs-12.0-sysv/chapter04/creatingminlayout.html +++ /dev/null @@ -1,142 +0,0 @@ - - - - - - 4.2. Создание ограниченной иерархии папок в файловой системе LFS - - - - - - - - -
-

- 4.2. Создание ограниченной иерархии - папок в файловой системе LFS -

-

- В этом разделе мы начинаем заполнять файловую систему LFS элементами, - которые будут основой конечной системы Linux. Первым шагом является - создание ограниченной иерархии каталогов, чтобы программы, - скомпилированные в Глава 6 - (а также glibc и libstdc++ в Глава 5), могли быть - установлены в их конечном расположении. Это необходимо для того, - чтобы эти временные программы были перезаписаны при сборке - окончательных версий в Глава 8. -

-

- Создайте необходимую иерархию каталогов, выполнив следующую команду - от имени root: -

-
mkdir -pv $LFS/{etc,var} $LFS/usr/{bin,lib,sbin}
-
-for i in bin lib sbin; do
-  ln -sv usr/$i $LFS/$i
-done
-
-case $(uname -m) in
-  x86_64) mkdir -pv $LFS/lib64 ;;
-esac
-

- Программы в Глава 6 - будут скомпилированы с помощью кросс-компилятора (более подробная - информация приведена в разделе Технические - примечания по сборочным инструментам). Чтобы отделить - кросс-компилятор от других программ, он будет установлен в - специальный каталог. Создайте этот каталог с помощью следующей - команды: -

-
mkdir -pv $LFS/tools
-
- [Примечание] -

- Примечание -

-

- Редакторы LFS намеренно решили не использовать каталог /usr/lib64. В процессе сборки предпринимается ряд - шагов, чтобы убедиться, что набор инструментов не будет его - использовать. Если по какой-либо причине этот каталог появится (это - может произойти, если вы допустили ошибку, следуя инструкциям, или - потому что вы установили бинарный пакет, создавший его после сборки - LFS), это может привести к поломке вашей системы. Вы должны быть - уверены, что этого каталога не существует. -

-
-
- - - diff --git a/lfs-12.0-sysv/chapter04/introduction.html b/lfs-12.0-sysv/chapter04/introduction.html deleted file mode 100644 index f160809..0000000 --- a/lfs-12.0-sysv/chapter04/introduction.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - 4.1. Введение - - - - - - - - -
-

- 4.1. - Введение -

-

- В этой главе мы выполним несколько дополнительных настроек для - подготовки к сборке временной системы. Мы создадим несколько - каталогов в $LFS (в котором установим - временные инструменты), добавим непривилегированного пользователя и - настроим окружение для этого пользователя. Кроме этого, будут даны - пояснения по стандартной единице времени сборки, или «SBU», которую мы - используем для измерения времени необходимого для сборки пакетов LFS, - и предоставим некоторую информацию о наборах тестов. -

-
- - - diff --git a/lfs-12.0-sysv/chapter04/settingenvironment.html b/lfs-12.0-sysv/chapter04/settingenvironment.html deleted file mode 100644 index 669006b..0000000 --- a/lfs-12.0-sysv/chapter04/settingenvironment.html +++ /dev/null @@ -1,345 +0,0 @@ - - - - - - 4.4. Настройка окружения - - - - - - - - -
-

- 4.4. Настройка окружения -

-

- Настроим хорошо работающее окружение, создав два новых файла запуска - для оболочки bash. - Войдя в систему как пользователь lfs, - введите следующую команду, чтобы создать новый .bash_profile: -

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

- При входе в систему под учетной записью пользователя lfs или при переключении на lfs, используя команду su с опцией «-», начальная оболочка - представляет собой оболочку login, которая читает данные из - /etc/profile хоста (который, вероятно, - содержит некоторые настройки и переменные среды), а затем - .bash_profile. Команда exec env -i.../bin/bash в файле - .bash_profile заменяет запущенную - оболочку новой, не содержащей переменные среды, за исключением - переменных HOME, TERM, и PS1. Это - гарантирует, что никакие нежелательные и потенциально опасные - переменные среды из хост-системы не попадут в среду сборки. -

-

- Новый экземпляр оболочки представляет собой non-login оболочку, которая не считывает и - не выполняет содержимое файлов /etc/profile и .bash_profile, а вместо этого выполняет чтение из - файла .bashrc. Создайте файл - .bashrc: -

-
cat > ~/.bashrc << "EOF"
-set +h
-umask 022
-LFS=/mnt/lfs
-LC_ALL=POSIX
-LFS_TGT=$(uname -m)-lfs-linux-gnu
-PATH=/usr/bin
-if [ ! -L /bin ]; then PATH=/bin:$PATH; fi
-PATH=$LFS/tools/bin:$PATH
-CONFIG_SITE=$LFS/usr/share/config.site
-export LFS LC_ALL LFS_TGT PATH CONFIG_SITE
-EOF
-
-

- Значение настроек в .bashrc -

-
-
- set - +h -
-
-

- Команда set +h - отключает хэш-функцию bash. Хеширование является - полезной функцией —bash использует хеш-таблицу - для запоминания полного пути к исполняемому файлу, чтобы - избежать многократного поиска одного и того же исполняемого - файла в переменной окружения PATH. - Однако новые инструменты требуется использовать сразу же после - их установки. Отключение хэш-функции, заставляет оболочку - искать переменную окружения PATH, - всякий раз, когда программу необходимо запустить. Таким - образом, оболочка найдет вновь скомпилированные инструменты в - $LFS/tools/bin, как только они - станут доступны, не запоминая предыдущую версию той же - программы, предоставленную хост-дистрибутивом, в /usr/bin или /bin. -

-
-
- umask - 022 -
-
-

- Установка значения пользовательской маски создания файлов - (umask) 022 гарантирует, что вновь созданные файлы и каталоги - доступны для записи только их владельцу, но будут доступны для - чтения и выполнения остальным пользователям (при условии, что - системный вызов open(2) - использует режим по умолчанию, новые файлы получат разрешения - 644, а каталоги 755). -

-
-
- LFS=/mnt/lfs -
-
-

- Переменная окружения LFS должна - указывать на выбранную точку монтирования. -

-
-
- LC_ALL=POSIX -
-
-

- Переменная LC_ALL управляет - локализацией определенных программ, и формирует сообщения в - соответствии с локализацией указанной страны. Установка в - LC_ALL значения «POSIX» или - «C» (они - эквивалентны) гарантирует, что все будет работать должным - образом в среде кросс-компиляции. -

-
-
- LFS_TGT=$(uname - -m)-lfs-linux-gnu -
-
-

- Переменная LFS_TGT устанавливает - нестандартное, но совместимое описание компьютера для - использования при создании кросс-компилятора и компоновщика, а - также при кросс-компиляции временного набора инструментов. - Дополнительная информация об этом представлена в Технические - примечания по сборочным инструментам. -

-
-
- PATH=/usr/bin -
-
-

- Многие современные дистрибутивы Linux объединили /bin и /usr/bin. В этом случае стандартной - переменной PATH необходимо - установить значение /usr/bin/ для - окружения из Глава 6. - Когда это не так, следующая строка добавит /bin к пути. -

-
-
- if [ ! -L /bin ]; - then PATH=/bin:$PATH; fi -
-
-

- Если /bin не является - символической ссылкой, то его необходимо добавить в переменную - PATH. -

-
-
- PATH=$LFS/tools/bin:$PATH -
-
-

- Поместив $LFS/tools/bin перед - стандартным PATH, кросс-компилятор, - установленный в начале Глава 5, будет - обнаружен оболочкой сразу после его установки. Это, в сочетании - с отключением хеширования, ограничивает риск использования - компилятора хоста вместо кросс-компилятора. -

-
-
- CONFIG_SITE=$LFS/usr/share/config.site -
-
-

- В Глава 5 и Глава 6, - если эта переменная не задана, сценарии configure могут попытаться - загрузить элементы конфигурации, специфичные для некоторых - дистрибутивов, из /usr/share/config.site в хост-системе. - Переопределите её, чтобы предотвратить потенциальное влияние - хоста. -

-
-
- export - ... -
-
-

- Приведенные выше команды установили некоторые переменные, чтобы - сделать их видимыми в любых вложенных оболочках, мы - экспортируем их. -

-
-
-
-
- [Важно] -

- Важно -

-

- Некоторые коммерческие дистрибутивы добавляют недокументированный - экземпляр /etc/bash.bashrc для - инициализации bash. - Этот файл потенциально может изменить среду пользователя - lfs таким образом, что это может - повлиять на сборку важных пакетов LFS. Чтобы убедиться, что - пользовательская среда lfs чиста, - проверьте наличие файла /etc/bash.bashrc и, если он есть, переименуйте - его. От пользователя root, - запустите: -

-
[ ! -e /etc/bash.bashrc ] || mv -v /etc/bash.bashrc /etc/bash.bashrc.NOUSE
-

- Когда пользователь lfs больше не - нужен (в начале - Глава 7 ) вы можете безопасно восстановить /etc/bash.bashrc (по желанию). -

-

- Обратите внимание, что пакет LFS Bash, который мы создадим в - Раздел 8.35, «Bash-5.2.15», не - настроен на загрузку или выполнение /etc/bash.bashrc, поэтому этот файл бесполезен в - готовой системе LFS. -

-
-

- Наконец, чтобы убедиться, что среда полностью подготовлена для сборки - временных инструментов, перечитайте только что созданный профиль - пользователя: -

-
source ~/.bash_profile
-
- - - diff --git a/lfs-12.0-sysv/chapter05/binutils-pass1.html b/lfs-12.0-sysv/chapter05/binutils-pass1.html deleted file mode 100644 index 05ba68a..0000000 --- a/lfs-12.0-sysv/chapter05/binutils-pass1.html +++ /dev/null @@ -1,243 +0,0 @@ - - - - - - 5.2. Binutils-2.41 - Проход 1 - - - - - - - - -
-

- 5.2. Binutils-2.41 - Проход 1 -

-
-

- Пакет Binutils содержит компоновщик, ассемблер и другие инструменты - для работы с объектными файлами. -

-
-
-
- Приблизительное время сборки: - 1 SBU -
-
- Требуемое дисковое - пространство: 647 MB -
-
-
-
-
-

- 5.2.1. Установка кросс-пакета Binutils -

-
- [Примечание] -

- Примечание -

-

- Вернитесь назад и перечитайте примечания в разделе Общие инструкции по - компиляции. Понимание информации, помеченной как важная, - может впоследствии избавить вас от многих проблем. -

-
-

- Очень важно, чтобы Binutils был скомпилированным первым, потому что - и Glibc, и GCC выполняют различные тесты на доступных компоновщике - и ассемблере, чтобы определить, какие из их функций следует - включить. -

-

- В документации пакета Binutils рекомендуется выполнять сборку в - отдельном каталоге, создадим его: -

-
mkdir -v build
-cd       build
-
- [Примечание] -

- Примечание -

-

- Для того, чтобы значения SBU, перечисленные в остальной части - книги, были вам полезны, измерьте время, необходимое для сборки - этого пакета, начиная с настройки и заканчивая установкой. Чтобы - добиться этого, оберните команды сборки командой time: time { ../configure ... && make - && make install; }. -

-
-

- Теперь подготовьте Binutils к компиляции: -

-
../configure --prefix=$LFS/tools \
-             --with-sysroot=$LFS \
-             --target=$LFS_TGT   \
-             --disable-nls       \
-             --enable-gprofng=no \
-             --disable-werror
-
-

- Значение параметров настройки: -

-
-
- --prefix=$LFS/tools -
-
-

- Указывает сценарию configure подготовить к установке пакет - Binutils в каталог $LFS/tools. -

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

- Для кросс-компляции указывает системе сборки искать в $LFS - библиотеки целевой системы, если необходимо. -

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

- Поскольку название машины в значении переменной LFS_TGT может отличаться от значения, которое - возвращает сценарий config.guess, этот аргумент - укажет сценарию configure как настроить - систему сборки пакета Binutils для создания - кросс-компоновщика. -

-
-
- --disable-nls -
-
-

- Этот параметр отключает интернационализацию, так как i18n не - требуется для временных инструментов. -

-
-
- --enable-gprofng=no -
-
-

- Этот параметр отключает сборку gprofng, который не нужен для - временного инструментария. -

-
-
- --disable-werror -
-
-

- Этот параметр предотвращает остановку сборки в случае - появления предупреждений от компилятора хоста. -

-
-
-
-

- Скомпилируйте пакет: -

-
make
-

- Установите пакет: -

-
make install
-
-
-

- Подробная информация об этом пакете находится в Раздел 8.18.2, - «Содержимое пакета Binutils.» -

-
-
- - - diff --git a/lfs-12.0-sysv/chapter05/chapter05.html b/lfs-12.0-sysv/chapter05/chapter05.html deleted file mode 100644 index 65f7c25..0000000 --- a/lfs-12.0-sysv/chapter05/chapter05.html +++ /dev/null @@ -1,110 +0,0 @@ - - - - - - Глава 5. Сборка кросс-тулчейна - - - - - - - - -
-

- 5. Сборка - кросс-тулчейна -

- -
- - - diff --git a/lfs-12.0-sysv/chapter05/gcc-libstdc++.html b/lfs-12.0-sysv/chapter05/gcc-libstdc++.html deleted file mode 100644 index aa90e3d..0000000 --- a/lfs-12.0-sysv/chapter05/gcc-libstdc++.html +++ /dev/null @@ -1,214 +0,0 @@ - - - - - - 5.6. Libstdc++ из GCC-13.2.0 - - - - - - - - -
-

- 5.6. - Libstdc++ из GCC-13.2.0 -

-
-

- Libstdc++ — это стандартная библиотека C++. Она нужна для - компиляции кода C++ (часть GCC написана на C++), когда мы собирали - GCC-Проход 1, нам пришлось - отложить её установку, потому что она зависит от библиотеки Glibc, - которой еще не было в целевом каталоге. -

-
-
-
- Приблизительное время сборки: - 0.2 SBU -
-
- Требуемое дисковое - пространство: 1.1 GB -
-
-
-
-
-

- 5.6.1. Установка библиотеки Libstdc++ -

-
- [Примечание] -

- Примечание -

-

- Libstdc++ является частью - исходников GCC. Сначала вы должны распаковать архив GCC и перейти - в каталог gcc-13.2.0. -

-
-

- Создайте отдельный каталог сборки для libstdc++ и перейдите в него: -

-
mkdir -v build
-cd       build
-

- Подготовьте libstdc++ к компиляции: -

-
../libstdc++-v3/configure           \
-    --host=$LFS_TGT                 \
-    --build=$(../config.guess)      \
-    --prefix=/usr                   \
-    --disable-multilib              \
-    --disable-nls                   \
-    --disable-libstdcxx-pch         \
-    --with-gxx-include-dir=/tools/$LFS_TGT/include/c++/13.2.0
-
-

- Значение параметров настройки: -

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

- Указывает, что кросс-компилятор, который мы только что - создали, должен использоваться вместо того, который находится - в /usr/bin. -

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

- Этот аргумент предотвращает установку предварительно - скомпилированных include-файлов, которые на данном этапе не - нужны. -

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

- Указывает каталог установки для include-файлов. Поскольку - libstdc++ является стандартной библиотекой C++ для LFS, этот - каталог должен соответствовать местоположению, в котором - компилятор C++ ($LFS_TGT-g++) будет искать - стандартные включаемые файлы C++. При обычной сборке эта - информация автоматически передается в Libstdc++ при - выполнении configure из каталога - верхнего уровня. В нашем случае эта информация должна быть - указана явно. Компилятор C++ добавит путь sysroot - $LFS (указанный при сборке GCC - Проход 1) к пути поиска include-файлов, поэтому фактически он - будет искать в $LFS/tools/$LFS_TGT/include/c++/13.2.0. - Комбинация переменной DESTDIR (в приведенной ниже - команде make - install) и этого аргумента обеспечивает - установку заголовочных файлов туда. -

-
-
-
-

- Скомпилируйте Libstdc++, выполнив: -

-
make
-

- Установите библиотеку: -

-
make DESTDIR=$LFS install
-

- Удалите архивные файлы libtool, поскольку они потенциально опасны - при кросс-компиляции: -

-
rm -v $LFS/usr/lib/lib{stdc++,stdc++fs,supc++}.la
-
-
-

- Подробная информация об этом пакете приведена в Раздел 8.27.2, «Содержимое - пакета GCC.» -

-
-
- - - diff --git a/lfs-12.0-sysv/chapter05/gcc-pass1.html b/lfs-12.0-sysv/chapter05/gcc-pass1.html deleted file mode 100644 index 004a062..0000000 --- a/lfs-12.0-sysv/chapter05/gcc-pass1.html +++ /dev/null @@ -1,334 +0,0 @@ - - - - - - 5.3. GCC-13.2.0 - Проход 1 - - - - - - - - -
-

- 5.3. - GCC-13.2.0 - Проход 1 -

-
-

- Пакет GCC содержит коллекцию компиляторов GNU, которая включает - компиляторы C и C++. -

-
-
-
- Приблизительное время сборки: - 3.5 SBU -
-
- Требуемое дисковое - пространство: 4.2 GB -
-
-
-
-
-

- 5.3.1. Установка кросс-пакета GCC -

-

- Для GCC требуются пакеты GMP, MPFR и MPC. Поскольку эти пакеты - могут отсутствовать в дистрибутиве вашего хоста, они будут собраны - с помощью GCC. Распакуйте каждый пакет в исходный каталог GCC и - переименуйте получившиеся каталоги, чтобы процедуры сборки GCC - использовали их автоматически: -

-
- [Примечание] -

- Примечание -

-

- В этой главе часто возникают недоразумения, хотя применяются те - же процедуры, что и в любой другой главе, следуйте инструкции - которую получили ранее (Инструкции по - сборке пакетов). Сначала распакуйте пакет gcc-13.2.0 из - архива, а затем перейдите в созданный каталог. Только после этого - следует приступить к приведенным ниже инструкциям. -

-
-
tar -xf ../mpfr-4.2.0.tar.xz
-mv -v mpfr-4.2.0 mpfr
-tar -xf ../gmp-6.3.0.tar.xz
-mv -v gmp-6.3.0 gmp
-tar -xf ../mpc-1.3.1.tar.gz
-mv -v mpc-1.3.1 mpc
-

- На хостах x86_64 установите имя каталога по умолчанию для 64-битных - библиотек на «lib»: -

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

- В документации к GCC рекомендуется собирать GCC в отдельном - каталоге: -

-
mkdir -v build
-cd       build
-

- Подготовьте GCC к компиляции: -

-
../configure                  \
-    --target=$LFS_TGT         \
-    --prefix=$LFS/tools       \
-    --with-glibc-version=2.38 \
-    --with-sysroot=$LFS       \
-    --with-newlib             \
-    --without-headers         \
-    --enable-default-pie      \
-    --enable-default-ssp      \
-    --disable-nls             \
-    --disable-shared          \
-    --disable-multilib        \
-    --disable-threads         \
-    --disable-libatomic       \
-    --disable-libgomp         \
-    --disable-libquadmath     \
-    --disable-libssp          \
-    --disable-libvtv          \
-    --disable-libstdcxx       \
-    --enable-languages=c,c++
-
-

- Значение параметров настройки: -

-
-
- --with-glibc-version=2.38 -
-
-

- Этот параметр указывает версию Glibc, которая будет - использоваться на целевой системе. Он не имеет отношения к - libc хост-дистрибутива, потому что все, скомпилированное в - этом разделе, будет выполняться в среде chroot, которая - изолирована от libc хост-дистрибутива. -

-
-
- --with-newlib -
-
-

- Поскольку работающая библиотека C еще недоступна, это - гарантирует, что константа inhibit_libc будет определена при - сборке libgcc. Это предотвращает компиляцию любого кода, - требующего поддержки libc. -

-
-
- --without-headers -
-
-

- При создании полного кросс-компилятора GCC требует наличия - стандартных заголовков, совместимых с целевой системой. Для - наших целей эти заголовки не понадобятся. Этот параметр - предотвращает их поиск GCC. -

-
-
- --enable-default-pie и - --enable-default-ssp -
-
-

- Эти параметры позволяют GCC по умолчанию компилировать - программы с некоторые функциями усиливающими безопасность - (более подробная информация о них приведена в примечание о PIE и - SSP в Главе 8). На данном этапе это не является строго - обязательным, поскольку компилятор будет создавать только - временные исполняемые файлы. Но лучше, чтобы временные пакеты - были максимально приближены к тем, что будут в готовой - системе LFS. -

-
-
- --disable-shared -
-
-

- Этот параметр заставляет GCC статически связывать свои - внутренние библиотеки. Он необходим потому что общие - библиотеки требуют Glibc, который еще не установлен в целевой - системе. -

-
-
- --disable-multilib -
-
-

- Для платформы x86_64, LFS пока не поддерживает конфигурацию - multilib. Этот аргумент ни как не повлияет, если установка - выполняется на платформе x86. -

-
-
- --disable-threads, --disable-libatomic, - --disable-libgomp, --disable-libquadmath, --disable-libssp, - --disable-libvtv, --disable-libstdcxx -
-
-

- Эти аргументы отключают поддержку расширений для работы с - многопоточностью, libatomic, libgomp, libquadmath, libssp, - libvtv и стандартной библиотеки C++ соответственно. Эти - функции могут не скомпилироваться при сборке - кросс-компилятора и не нужны для задач кросс-компиляции - временной libc -

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

- Этот параметр обеспечивает сборку только компиляторов C и - C++. Это единственные языки, которые нужны сейчас. -

-
-
-
-

- Скомпилируйте GCC, выполнив: -

-
make
-

- Установите пакет: -

-
make install
-

- Во время сборки GCC установил пару внутренних системных - заголовочных файлов. Обычно один из файлов limits.h, включает соответствующие системные - ограничения limits.h, в данном случае - $LFS/usr/include/limits.h. Однако во - время сборки GCC $LFS/usr/include/limits.h не существует, поэтому - только что установленный внутренний заголовочный файл является - частичным, автономным файлом и не включает расширенные функции - системного файла. Этого достаточно для сборки Glibc, но полный - внутренний заголовочный файл понадобится позже. Создайте полную - версию внутреннего заголовочного файла с помощью команды, - идентичной той, что система сборки GCC использует в обычных - обстоятельствах: -

-
- [Примечание] -

- Примечание -

-

- В приведенной ниже команде показан пример подстановки вложенных - команд, используя два метода: обратные кавычки и конструкцию - $(). Его можно было бы переписать, - используя один и тот же метод для обеих замен, но сделано так, - чтобы продемонстрировать, как их можно использовать одновременно. - В целом метод $() предпочтительнее. -

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

- Подробная информация об этом пакете находится в Раздел 8.27.2, «Содержимое - пакета GCC.» -

-
-
- - - diff --git a/lfs-12.0-sysv/chapter05/glibc.html b/lfs-12.0-sysv/chapter05/glibc.html deleted file mode 100644 index fbfc139..0000000 --- a/lfs-12.0-sysv/chapter05/glibc.html +++ /dev/null @@ -1,361 +0,0 @@ - - - - - - 5.5. Glibc-2.38 - - - - - - - - -
-

- 5.5. Glibc-2.38 -

-
-

- Пакет Glibc содержит основную библиотеку C. Эта библиотека - предоставляет основные процедуры для выделения памяти, поиска в - каталогах, открытия и закрытия файлов, чтения и записи файлов, - обработки строк, сопоставления с образцом, арифметики и так далее -

-
-
-
- Приблизительное время сборки: - 1.6 SBU -
-
- Требуемое дисковое - пространство: 858 MB -
-
-
-
-
-

- 5.5.1. Установка пакета Glibc -

-

- Во-первых, создайте символическую ссылку для соответствия - требованиям LSB. Кроме того, для совместимости с x86_64 создайте - символическую ссылку, необходимую для правильной работы загрузчика - динамической библиотеки: -

-
case $(uname -m) in
-    i?86)   ln -sfv ld-linux.so.2 $LFS/lib/ld-lsb.so.3
-    ;;
-    x86_64) ln -sfv ../lib/ld-linux-x86-64.so.2 $LFS/lib64
-            ln -sfv ../lib/ld-linux-x86-64.so.2 $LFS/lib64/ld-lsb-x86-64.so.3
-    ;;
-esac
-
- [Примечание] -

- Примечание -

-

- Приведенная выше команда верна. Команда ln имеет несколько вариантов - синтаксиса, поэтому обязательно ознакомьтесь с info coreutils ln и - ln(1), прежде чем сообщать об - ошибке. -

-
-

- Некоторые программы, использующие Glibc, применяют несовместимый с - FHS каталог /var/db для хранения - своих данных времени выполнения. Установите следующий патч, чтобы - такие программы хранили свои данные в местах, совместимых с FHS: -

-
patch -Np1 -i ../glibc-2.38-fhs-1.patch
-

- В документации к Glibc рекомендуется собирать Glibc в отдельном - каталоге: -

-
mkdir -v build
-cd       build
-

- Убедитесь, что утилиты ldconfig and sln установлены в /usr/sbin: -

-
echo "rootsbindir=/usr/sbin" > configparms
-

- Затем подготовьте Glibc к компиляции: -

-
../configure                             \
-      --prefix=/usr                      \
-      --host=$LFS_TGT                    \
-      --build=$(../scripts/config.guess) \
-      --enable-kernel=4.14               \
-      --with-headers=$LFS/usr/include    \
-      libc_cv_slibdir=/usr/lib
-
-

- Значение параметров настройки: -

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

- Комбинация этих опций указывает на то, что система сборки - Glibc настраивается на кросс-компиляцию с использованием - кросс-компоновщика и кросс-компилятора в $LFS/tools. -

-
-
- --enable-kernel=4.14 -
-
-

- Этот параметр позволяет Glibc выполнять компиляцию библиотеки - с поддержкой ядра 4.14 и более поздних версий. Поддержка - более старых ядер не включена. -

-
-
- --with-headers=$LFS/usr/include -
-
-

- Этот аргумент позволяет скомпилировать библиотеку с - заголовочными файлами, недавно установленными в каталоге - $LFS/usr/include, таким образом, пакету будет известно, какие - функции есть у ядра, чтобы оптимизировать себя. -

-
-
- libc_cv_slibdir=/usr/lib -
-
-

- Этот аргумент гарантирует, что библиотека будет установлена в - /usr/lib вместо стандартного /lib64 на 64-битных машинах. -

-
-
-
-

- На этом этапе может появиться следующее предупреждение: -

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

- Отсутствующая или несовместимая программа msgfmt, как правило, безвредна. - msgfmt является - частью пакета Gettext, который должен предоставлять - хост-дистрибутив. -

-
- [Примечание] -

- Примечание -

-

- Поступали сообщения о том, что этот пакет может не - компилироваться при "параллельной сборке". Если это произойдет, - повторно запустите команду make с параметром "-j1". -

-
-

- Скомпилируйте пакет: -

-
make
-

- Установите пакет: -

-
- [Предупреждение] -

- Предупреждение -

-

- Если переменная LFS настроена - неправильно, и, несмотря на рекомендации, вы выполняете сборку от - имени пользователя root, - следующая команда установит только что собранный Glibc в вашу - хост-систему, что, скорее всего, сделает её непригодной для - использования. Поэтому дважды проверьте, правильность настройки - среды и что вы вошли в систему не под учетной записью - root, прежде чем запускать - следующую команду. -

-
-
make DESTDIR=$LFS install
-
-

- Значение опции make - install: -

-
-
- DESTDIR=$LFS -
-
-

- Переменная make DESTDIR - используется почти всеми пакетами для определения места - установки пакета. Если она не задана, по умолчанию для - установки используется корневой каталог (/). Здесь мы указываем, что пакет должен - быть установлен в $LFS, который станет корневым каталогом в - Раздел 7.4, «Вход в - окружение Chroot». -

-
-
-
-

- Исправьте жестко запрограммированный путь к исполняемому загрузчику - в ldd: -

-
sed '/RTLDLIST=/s@/usr@@g' -i $LFS/usr/bin/ldd
-
- [Внимание] -

- Внимание -

-

- На этом этапе необходимо остановиться и убедиться, что основные - функции (компиляция и компоновка) нового кросс-тулчейна работают - должным образом. Чтобы выполнить проверку работоспособности, - выполните следующие команды: -

-
echo 'int main(){}' | $LFS_TGT-gcc -xc -
-readelf -l a.out | grep ld-linux
-

- Если все работает правильно, ошибок быть не должно, и вывод - последней команды будет иметь вид: -

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

- Обратите внимание, что для 32-разрядных машин имя интерпретатора - будет /lib/ld-linux.so.2. -

-

- Если выходные данные отображаются не так, как указано выше, или - их вообще нет, значит, что-то сделано неправильно. Разберитесь с - проблемой и повторите шаги выше, чтобы исправить ее. Эта проблема - должна быть решена, прежде чем вы продолжите. -

-

- Как только все будет хорошо, удалите тестовый файл: -

-
rm -v a.out
-
-
- [Примечание] -

- Примечание -

-

- Сборка пакетов в следующей главе послужит дополнительной - проверкой правильности сборки временного кросс-тулчейна. Если - какой-либо пакет, особенно Binutils или GCC, не удается собрать, - это указывает на то, что что-то пошло не так с установленными - ранее Binutils, GCC, или Glibc. -

-
-
-
-

- Подробная информация об этом пакете находится в Раздел 8.5.3, «Содержимое - пакета Glibc.» -

-
-
- - - diff --git a/lfs-12.0-sysv/chapter05/introduction.html b/lfs-12.0-sysv/chapter05/introduction.html deleted file mode 100644 index 0d0f4d8..0000000 --- a/lfs-12.0-sysv/chapter05/introduction.html +++ /dev/null @@ -1,94 +0,0 @@ - - - - - - 5.1. Введение - - - - - - - - -
-

- 5.1. - Введение -

-

- В этой главе дано описание, как создать кросс-компилятор и связанные - с ним инструменты. Несмотря на то, что на данном этапе - кросс-компиляция имитируется, принципы его работы те же, что и для - настоящего кросс-тулчейна. -

-

- Программы, скомпилированные в этой главе, будут установлены в каталог - $LFS/tools, чтобы они были отделены от - файлов, установленных в следующих главах. Библиотеки, же, - устанавливаются на свое постоянное место, поскольку они относятся к - системе, которую мы хотим создать. -

-
- - - diff --git a/lfs-12.0-sysv/chapter05/linux-headers.html b/lfs-12.0-sysv/chapter05/linux-headers.html deleted file mode 100644 index dd00222..0000000 --- a/lfs-12.0-sysv/chapter05/linux-headers.html +++ /dev/null @@ -1,315 +0,0 @@ - - - - - - 5.4. Заголовочные файлы Linux-6.4.12 API - - - - - - - - -
-

- 5.4. - Заголовочные файлы Linux-6.4.12 API -

-
-

- Заголовочные файлы Linux API (в linux-6.4.12.tar.xz) предоставляют - API ядра для использования Glibc. -

-
-
-
- Приблизительное время сборки: - менее 0.1 SBU -
-
- Требуемое дисковое - пространство: 1.5 GB -
-
-
-
-
-

- 5.4.1. Установка заголовочных файлов -

-

- Ядро Linux должно предоставлять интерфейс прикладного - программирования (API) для использования системной библиотекой C - (Glibc в LFS). Это делается путем установки заголовочных файлов C, - которые поставляются в архиве с исходным кодом ядра Linux. -

-

- Убедитесь, что в пакете нет устаревших файлов: -

-
make mrproper
-

- Теперь извлеките видимые пользователю заголовочные файлы ядра из - исходного кода. Рекомендуемый способ make «headers_install» - использовать нельзя, так как для этого требуется rsync, который может быть недоступен. - Заголовочные файлы сначала помещаются в /usr, а затем копируются в нужное место. -

-
make headers
-find usr/include -type f ! -name '*.h' -delete
-cp -rv usr/include $LFS/usr
-
-
-

- 5.4.2. Содержимое заголовочных файлов - Linux API -

-
-
-
- Установленные заголовочные - файлы:: /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 -
-
- Созданные каталоги:: - /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 -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

- /usr/include/asm/*.h -

-
-

- Заголовочные файлы Linux API ASM -

-
-

- /usr/include/asm-generic/*.h -

-
-

- Заголовочные файлы Linux API ASM Generic -

-
-

- /usr/include/drm/*.h -

-
-

- Заголовочные файлы Linux API DRM -

-
-

- /usr/include/linux/*.h -

-
-

- Заголовочные файлы Linux API Linux -

-
-

- /usr/include/misc/*.h -

-
-

- Заголовочные файлы Linux API Miscellaneous -

-
-

- /usr/include/mtd/*.h -

-
-

- Заголовочные файлы API MTD -

-
-

- /usr/include/rdma/*.h -

-
-

- Заголовочные файлы Linux API RDMA -

-
-

- /usr/include/scsi/*.h -

-
-

- Заголовочные файлы Linux API SCSI -

-
-

- /usr/include/sound/*.h -

-
-

- Заголовочные файлы Linux API Sound -

-
-

- /usr/include/video/*.h -

-
-

- Заголовочные файлы Linux API Video -

-
-

- /usr/include/xen/*.h -

-
-

- Заголовочные файлы Linux API Xen -

-
-
-
-
- - - diff --git a/lfs-12.0-sysv/chapter06/bash.html b/lfs-12.0-sysv/chapter06/bash.html deleted file mode 100644 index 50d3466..0000000 --- a/lfs-12.0-sysv/chapter06/bash.html +++ /dev/null @@ -1,151 +0,0 @@ - - - - - - 6.4. Bash-5.2.15 - - - - - - - - -
-

- 6.4. Bash-5.2.15 -

-
-

- Пакет Bash содержит Bourne-Again Shell. -

-
-
-
- Приблизительное время сборки: - 0.2 SBU -
-
- Требуемое дисковое - пространство: 67 MB -
-
-
-
-
-

- 6.4.1. Установка пакета Bash -

-

- Подготовьте Bash к компиляции: -

-
./configure --prefix=/usr                      \
-            --build=$(sh support/config.guess) \
-            --host=$LFS_TGT                    \
-            --without-bash-malloc
-
-

- Значение параметров настройки: -

-
-
- --without-bash-malloc -
-
-

- Этот параметр отключает использование функции распределения - памяти (malloc) Bash, которая, - как известно, вызывает ошибки сегментации. Если опция - отключена, Bash будет использовать функции malloc из Glibc, которые более стабильны. -

-
-
-
-

- Скомпилируйте пакет: -

-
make
-

- Установите пакет: -

-
make DESTDIR=$LFS install
-

- Создайте символическую ссылку для программ, которые используют - sh как оболочку: -

-
ln -sv bash $LFS/bin/sh
-
-
-

- Подробная информация об этом пакете находится в Раздел 8.35.2, «Содержимое - пакета Bash.» -

-
-
- - - diff --git a/lfs-12.0-sysv/chapter06/binutils-pass2.html b/lfs-12.0-sysv/chapter06/binutils-pass2.html deleted file mode 100644 index a29b05b..0000000 --- a/lfs-12.0-sysv/chapter06/binutils-pass2.html +++ /dev/null @@ -1,179 +0,0 @@ - - - - - - 6.17. Binutils-2.41 - Проход 2 - - - - - - - - -
-

- 6.17. Binutils-2.41 - Проход 2 -

-
-

- Пакет Binutils содержит компоновщик, ассемблер и другие инструменты - для работы с объектными файлами. -

-
-
-
- Приблизительное время сборки: - 0.5 SBU -
-
- Требуемое дисковое - пространство: 523 MB -
-
-
-
-
-

- 6.17.1. Установка пакета Binutils -

-

- Binutils поставляет устаревшую версию libtool в архиве. В нем - отсутствует поддержка sysroot, поэтому созданные двоичные файлы - будут ошибочно связаны с библиотеками из основного дистрибутива. - Решение этой проблемы: -

-
sed '6009s/$add_dir//' -i ltmain.sh
-

- Создайте отдельный каталог для сборки: -

-
mkdir -v build
-cd       build
-

- Подготовьте Binutils к компиляции: -

-
../configure                   \
-    --prefix=/usr              \
-    --build=$(../config.guess) \
-    --host=$LFS_TGT            \
-    --disable-nls              \
-    --enable-shared            \
-    --enable-gprofng=no        \
-    --disable-werror           \
-    --enable-64-bit-bfd
-
-

- Значение новых параметров настройки: -

-
-
- --enable-shared -
-
-

- Собирает libbfd как разделяемую - библиотеку -

-
-
- --enable-64-bit-bfd -
-
-

- Включает 64-разрядную поддержку (на хостах с меньшим размером - слова). В 64-разрядных системах это может и не понадобиться, - но вреда от этого не будет -

-
-
-
-

- Скомпилируйте пакет: -

-
make
-

- Установите пакет: -

-
make DESTDIR=$LFS install
-

- Удалите архивные файлы libtool, поскольку они потенциально опасны - при кросс-компиляции, также удалите ненужные статические библиотеки -

-
rm -v $LFS/usr/lib/lib{bfd,ctf,ctf-nobfd,opcodes,sframe}.{a,la}
-
-
-

- Подробная информация об этом пакете находится в Раздел 8.18.2, - «Содержимое пакета Binutils.» -

-
-
- - - diff --git a/lfs-12.0-sysv/chapter06/chapter06.html b/lfs-12.0-sysv/chapter06/chapter06.html deleted file mode 100644 index bd2647b..0000000 --- a/lfs-12.0-sysv/chapter06/chapter06.html +++ /dev/null @@ -1,145 +0,0 @@ - - - - - - Глава 6. Кросс-Компиляция временных инструментов - - - - - - - - -
-

- 6. - Кросс-Компиляция временных инструментов -

-
-

- Содержание -

- -
-
- - - diff --git a/lfs-12.0-sysv/chapter06/coreutils.html b/lfs-12.0-sysv/chapter06/coreutils.html deleted file mode 100644 index cbad2d1..0000000 --- a/lfs-12.0-sysv/chapter06/coreutils.html +++ /dev/null @@ -1,169 +0,0 @@ - - - - - - 6.5. Coreutils-9.3 - - - - - - - - -
-

- 6.5. - Coreutils-9.3 -

-
-

- Пакет Coreutils содержит основные утилиты, необходимые каждой - операционной системе. -

-
-
-
- Приблизительное время сборки: - 0.3 SBU -
-
- Требуемое дисковое - пространство: 168 MB -
-
-
-
-
-

- 6.5.1. Установка пакета Coreutils -

-

- Подготовьте Coreutils к компиляции: -

-
./configure --prefix=/usr                     \
-            --host=$LFS_TGT                   \
-            --build=$(build-aux/config.guess) \
-            --enable-install-program=hostname \
-            --enable-no-install-program=kill,uptime \
-            gl_cv_macro_MB_CUR_MAX_good=y
-
-

- Значение параметров настройки: -

-
-
- --enable-install-program=hostname -
-
-

- Этот параметр позволяет создать и установить двоичный файл - hostname – по - умолчанию он отключен, но требуется для набора тестов Perl. -

-
-
- gl_cv_macro_MB_CUR_MAX_good=y -
-
-

- Этот параметр необходим, чтобы обойти проблему с копией - gnulib, поставляемой пакетом, которая нарушит - кросс-компиляцию. -

-
-
-
-

- Скомпилируйте пакет: -

-
make
-

- Установите пакет: -

-
make DESTDIR=$LFS install
-

- Переместите программы в их конечное местоположение. Хотя во - временной среде в этом нет необходимости, мы должны это сделать, - потому что некоторые программы жестко прописывают местоположение - исполняемых файлов: -

-
mv -v $LFS/usr/bin/chroot              $LFS/usr/sbin
-mkdir -pv $LFS/usr/share/man/man8
-mv -v $LFS/usr/share/man/man1/chroot.1 $LFS/usr/share/man/man8/chroot.8
-sed -i 's/"1"/"8"/'                    $LFS/usr/share/man/man8/chroot.8
-
-
-

- Подробная информация об этом пакете находится в Раздел 8.56.2, - «Содержимое пакета Coreutils.» -

-
-
- - - diff --git a/lfs-12.0-sysv/chapter06/diffutils.html b/lfs-12.0-sysv/chapter06/diffutils.html deleted file mode 100755 index c7e55ed..0000000 --- a/lfs-12.0-sysv/chapter06/diffutils.html +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - 6.6. Diffutils-3.10 - - - - - - - - -
-

- 6.6. - Diffutils-3.10 -

-
-

- Пакет Diffutils содержит программы, которые показывают различия - между файлами или каталогами. -

-
-
-
- Приблизительное время сборки: - 0.1 SBU -
-
- Требуемое дисковое - пространство: 29 MB -
-
-
-
-
-

- 6.6.1. Установка пакета Diffutils -

-

- Подготовьте Diffutils для компиляции: -

-
./configure --prefix=/usr   \
-            --host=$LFS_TGT \
-            --build=$(./build-aux/config.guess)
-

- Скомпилируйте пакет: -

-
make
-

- Установите пакет: -

-
make DESTDIR=$LFS install
-
-
-

- Подробная информация об этом пакете находится в Раздел 8.58.2, - «Содержимое пакета Diffutils.» -

-
-
- - - diff --git a/lfs-12.0-sysv/chapter06/file.html b/lfs-12.0-sysv/chapter06/file.html deleted file mode 100644 index 5d99e6b..0000000 --- a/lfs-12.0-sysv/chapter06/file.html +++ /dev/null @@ -1,167 +0,0 @@ - - - - - - 6.7. File-5.45 - - - - - - - - -
-

- 6.7. File-5.45 -

-
-

- Пакет File содержит утилиту для определения типа указанного файла - или файлов -

-
-
-
- Приблизительное время сборки: - 0.1 SBU -
-
- Требуемое дисковое - пространство: 37 MB -
-
-
-
-
-

- 6.7.1. Установка пакета File -

-

- Команда file на хосте - сборки должна быть той же версии, что и собираемая, чтобы создать - файл подписи. Выполните следующие команды, чтобы создать временную - копию команды file. -

-
mkdir build
-pushd build
-  ../configure --disable-bzlib      \
-               --disable-libseccomp \
-               --disable-xzlib      \
-               --disable-zlib
-  make
-popd
-
-

- Значение новой опции настройки: -

-
-
- --disable-* -
-
-

- Сценарий конфигурации пытается использовать некоторые пакеты - из основного дистрибутива, если существуют соответствующие - файлы библиотек. Это может привести к сбою компиляции, если - файлы библиотек существует, но отсутствуют соответствующие - заголовочные файлы. Эти параметры предотвращают использование - ненужных возможностей хоста. -

-
-
-
-

- Подготовьте файл для компиляции: -

-
./configure --prefix=/usr --host=$LFS_TGT --build=$(./config.guess)
-

- Скомпилируйте пакет: -

-
make FILE_COMPILE=$(pwd)/build/src/file
-

- Установите пакет: -

-
make DESTDIR=$LFS install
-

- Удалите архивный файл libtool, поскольку он потенциально опасен при - кросс-компиляции: -

-
rm -v $LFS/usr/lib/libmagic.la
-
-
-

- Подробная информация об этом пакете находится в Раздел 8.10.2, «Содержимое - пакета File.» -

-
-
- - - diff --git a/lfs-12.0-sysv/chapter06/findutils.html b/lfs-12.0-sysv/chapter06/findutils.html deleted file mode 100644 index 1dc804a..0000000 --- a/lfs-12.0-sysv/chapter06/findutils.html +++ /dev/null @@ -1,131 +0,0 @@ - - - - - - 6.8. Findutils-4.9.0 - - - - - - - - -
-

- 6.8. - Findutils-4.9.0 -

-
-

- Пакет Findutils содержит программы для поиска файлов. Эти программы - предназначены для поиска по всем файлам в дереве каталогов, а также - для создания, обслуживания и поиска в базе данных (часто быстрее, - чем рекурсивный поиск, но ненадежно, если база данных давно не - обновлялась).Findutils также предоставляет программу xargs, которую можно использовать - для запуска указанной команды для каждого файла, выбранного при - поиске. -

-
-
-
- Приблизительное время сборки: - 0.1 SBU -
-
- Требуемое дисковое - пространство: 42 MB -
-
-
-
-
-

- 6.8.1. Установка пакета Findutils -

-

- Подготовьте Findutils к компиляции: -

-
./configure --prefix=/usr                   \
-            --localstatedir=/var/lib/locate \
-            --host=$LFS_TGT                 \
-            --build=$(build-aux/config.guess)
-

- Скомпилируйте пакет: -

-
make
-

- Установите пакет: -

-
make DESTDIR=$LFS install
-
-
-

- Подробная информация об этом пакете находится в Раздел 8.60.2, - «Содержимое пакета Findutils.» -

-
-
- - - diff --git a/lfs-12.0-sysv/chapter06/gawk.html b/lfs-12.0-sysv/chapter06/gawk.html deleted file mode 100644 index fd5a8fa..0000000 --- a/lfs-12.0-sysv/chapter06/gawk.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - 6.9. Gawk-5.2.2 - - - - - - - - -
-

- 6.9. Gawk-5.2.2 -

-
-

- Пакет Gawk содержит программы для работы с текстовыми файлами. -

-
-
-
- Приблизительное время сборки: - 0.1 SBU -
-
- Требуемое дисковое - пространство: 48 MB -
-
-
-
-
-

- 6.9.1. Установка пакета Gawk -

-

- Во-первых, убедитесь, что некоторые ненужные файлы не будут - установлены: -

-
sed -i 's/extras//' Makefile.in
-

- Подготовьте Gawk к компиляции: -

-
./configure --prefix=/usr   \
-            --host=$LFS_TGT \
-            --build=$(build-aux/config.guess)
-

- Скомпилируйте пакет: -

-
make
-

- Установите пакет: -

-
make DESTDIR=$LFS install
-
-
-

- Подробная информация об этом пакете находится в Раздел 8.59.2, «Содержимое - пакета Gawk.» -

-
-
- - - diff --git a/lfs-12.0-sysv/chapter06/gcc-pass2.html b/lfs-12.0-sysv/chapter06/gcc-pass2.html deleted file mode 100644 index b1bb837..0000000 --- a/lfs-12.0-sysv/chapter06/gcc-pass2.html +++ /dev/null @@ -1,272 +0,0 @@ - - - - - - 6.18. GCC-13.2.0 - Проход 2 - - - - - - - - -
-

- 6.18. - GCC-13.2.0 - Проход 2 -

-
-

- Пакет GCC содержит коллекцию компиляторов GNU, которая включает - компиляторы C и C++. -

-
-
-
- Приблизительное время сборки: - 4.3 SBU -
-
- Требуемое дисковое - пространство: 4.8 GB -
-
-
-
-
-

- 6.18.1. Установка пакета GCC -

-

- Как и при первой сборке GCC, требуются пакеты GMP, MPFR и MPC. - Распакуйте архивы и переименуйте каталоги: -

-
tar -xf ../mpfr-4.2.0.tar.xz
-mv -v mpfr-4.2.0 mpfr
-tar -xf ../gmp-6.3.0.tar.xz
-mv -v gmp-6.3.0 gmp
-tar -xf ../mpc-1.3.1.tar.gz
-mv -v mpc-1.3.1 mpc
-

- При сборке на x86_64 измените имя каталога по умолчанию для - 64-разрядных библиотек на «lib».: -

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

- Переопределите правила сборки заголовочных файлов libgcc и - libstdc++, чтобы разрешить создание этих библиотек с поддержкой - потоков POSIX: -

-
sed '/thread_header =/s/@.*@/gthr-posix.h/' \
-    -i libgcc/Makefile.in libstdc++-v3/include/Makefile.in
-

- Снова создайте отдельный каталог сборки: -

-
mkdir -v build
-cd       build
-

- Перед началом сборки GCC не забудьте отключить все переменные - среды, которые переопределяют флаги оптимизации по умолчанию. -

-

- Теперь подготовьте GCC к компиляции: -

-
../configure                                       \
-    --build=$(../config.guess)                     \
-    --host=$LFS_TGT                                \
-    --target=$LFS_TGT                              \
-    LDFLAGS_FOR_TARGET=-L$PWD/$LFS_TGT/libgcc      \
-    --prefix=/usr                                  \
-    --with-build-sysroot=$LFS                      \
-    --enable-default-pie                           \
-    --enable-default-ssp                           \
-    --disable-nls                                  \
-    --disable-multilib                             \
-    --disable-libatomic                            \
-    --disable-libgomp                              \
-    --disable-libquadmath                          \
-    --disable-libsanitizer                         \
-    --disable-libssp                               \
-    --disable-libvtv                               \
-    --enable-languages=c,c++
-
-

- Значение новых параметров настройки: -

-
-
- --with-build-sysroot=$LFS -
-
-

- Обычно, использование --host гарантирует, что для - сборки GCC используется кросс-компилятор, и этот компилятор - знает, что он должен искать заголовочные файлы и библиотеки в - $LFS. Но сборочная система GCC - использует другие инструменты, которые не знают об этом - местоположении. Этот параметр необходим для того, чтобы они - могли найти нужные файлы в $LFS, а не на хосте. -

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

- Поскольку мы выполняем кросс-компиляцию GCC, невозможно - создать целевые библиотеки (libgcc и libstdc++) с ранее скомпилированными - двоичными файлами GCC, потому что эти двоичные файлы не будут - работать на хост-дистрибутиве. Система сборки GCC по - умолчанию попытается использовать компиляторы C и C++ хоста в - качестве обходного пути. Сейчас не поддерживается создание - целевых библиотек GCC с помощью другой версии GCC, поэтому - использование компиляторов хоста может привести к сбою - сборки. Этот параметр гарантирует сборку библиотек с помощью - GCC собранного на первом проходе. -

-
-
- LDFLAGS_FOR_TARGET=... -
-
-

- Разрешить libstdc++ - использовать общую библиотеку libgcc, собранную на этом этапе, вместо - статической версии, собранной в GCC Проход 1. Это необходимо - для поддержки обработки исключений C++ -

-
-
- --disable-libsanitizer -
-
-

- Отключает библиотеки среды выполнения GCC sanitizer. Они не - нужны для временного набора инструментов. Этот параметр - необходим для сборки GCC без установки libcrypt для целевого объекта. В - GCC-Проход 1 это решалось с - помощью параметра --disable-libstdcxx, но теперь - мы должны передать его явно. -

-
-
-
-

- Скомпилируйте пакет: -

-
make
-

- Установите пакет: -

-
make DESTDIR=$LFS install
-

- В качестве завершающего штриха создайте символическую ссылку на - утилиту. Многие программы и скрипты используют cc вместо gcc, чтобы сделать программы - более универсальными и, следовательно, для совместимости со всеми - типами UNIX-систем, где компилятор GNU C не всегда установлен. - Наличие cc оставляет - системному администратору право самостоятельно решать, какой - компилятор C устанавливать: -

-
ln -sv gcc $LFS/usr/bin/cc
-
-
-

- Подробная информация об этом пакете находится в Раздел 8.27.2, «Содержимое - пакета GCC.» -

-
-
- - - diff --git a/lfs-12.0-sysv/chapter06/grep.html b/lfs-12.0-sysv/chapter06/grep.html deleted file mode 100755 index f7a0819..0000000 --- a/lfs-12.0-sysv/chapter06/grep.html +++ /dev/null @@ -1,122 +0,0 @@ - - - - - - 6.10. Grep-3.11 - - - - - - - - -
-

- 6.10. Grep-3.11 -

-
-

- Пакет Grep содержит программы для поиска по содержимому файлов. -

-
-
-
- Приблизительное время сборки: - 0.1 SBU -
-
- Требуемое дисковое - пространство: 27 MB -
-
-
-
-
-

- 6.10.1. Установка пакета Grep -

-

- Подготовьте Grep к компиляции: -

-
./configure --prefix=/usr   \
-            --host=$LFS_TGT \
-            --build=$(./build-aux/config.guess)
-

- Скомпилируйте пакет: -

-
make
-

- Установите пакет: -

-
make DESTDIR=$LFS install
-
-
-

- Подробная информация об этом пакете находится в Раздел 8.34.2, «Содержимое - пакета Grep.» -

-
-
- - - diff --git a/lfs-12.0-sysv/chapter06/gzip.html b/lfs-12.0-sysv/chapter06/gzip.html deleted file mode 100644 index 87d4902..0000000 --- a/lfs-12.0-sysv/chapter06/gzip.html +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - 6.11. Gzip-1.12 - - - - - - - - -
-

- 6.11. Gzip-1.12 -

-
-

- Пакет Gzip содержит программы для сжатия и распаковки файлов. -

-
-
-
- Приблизительное время сборки: - 0.1 SBU -
-
- Требуемое дисковое - пространство: 11 MB -
-
-
-
-
-

- 6.11.1. Установка пакета Gzip -

-

- Подготовьте Gzip к компиляции: -

-
./configure --prefix=/usr --host=$LFS_TGT
-

- Скомпилируйте пакет: -

-
make
-

- Установите пакет: -

-
make DESTDIR=$LFS install
-
-
-

- Подробная информация об этом пакете находится в Раздел 8.63.2, «Содержимое - пакета Gzip.» -

-
-
- - - diff --git a/lfs-12.0-sysv/chapter06/introduction.html b/lfs-12.0-sysv/chapter06/introduction.html deleted file mode 100644 index 4e2d60c..0000000 --- a/lfs-12.0-sysv/chapter06/introduction.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - 6.1. Введение - - - - - - - - -
-

- 6.1. Введение -

-

- В этой главе рассказывается, как выполнить кросс-компиляцию базовых - утилит с использованием только что собранного кросс-тулчейна. Эти - утилиты установлены в свое конечное местоположение, но пока не могут - быть использованы. Выполняемые инструкции по-прежнему зависят от - инструментария хоста. Тем не менее, установленные библиотеки - используются при компоновке. -

-

- Использование утилит станет возможным в следующей главе после входа в - среду «chroot». - Все пакеты из этой главы, должны быть собраны до того, как мы это - сделаем. Поэтому пока наша система зависима от хост-системы. -

-

- Еще раз напомним, что неправильная настройка LFS вместе со сборкой от root может сделать ваш компьютер непригодным для - использования. Всю эту главу нужно выполнить от имени пользователя - lfs, в его рабочем окружении, как - описано в Раздел 4.4, «Настройка - окружения». -

-
- - - diff --git a/lfs-12.0-sysv/chapter06/m4.html b/lfs-12.0-sysv/chapter06/m4.html deleted file mode 100644 index 05d219d..0000000 --- a/lfs-12.0-sysv/chapter06/m4.html +++ /dev/null @@ -1,124 +0,0 @@ - - - - - - 6.2. M4-1.4.19 - - - - - - - - -
-

- 6.2. M4-1.4.19 -

-
-

- Пакет M4 содержит макропроцессор. -

-
-
-
- Приблизительное время сборки: - 0.1 SBU -
-
- Требуемое дисковое - пространство: 31 MB -
-
-
-
-
-

- 6.2.1. Установка пакета M4 -

-

- Подготовьте пакет M4 к компиляции: -

-
./configure --prefix=/usr   \
-            --host=$LFS_TGT \
-            --build=$(build-aux/config.guess)
-

- Скомпилируйте пакет: -

-
make
-

- Установите пакет: -

-
make DESTDIR=$LFS install
-
-
-

- Подробная информация об этом пакете находится в Раздел 8.12.2, «Содержимое - пакета M4.» -

-
-
- - - diff --git a/lfs-12.0-sysv/chapter06/make.html b/lfs-12.0-sysv/chapter06/make.html deleted file mode 100644 index 990ee29..0000000 --- a/lfs-12.0-sysv/chapter06/make.html +++ /dev/null @@ -1,143 +0,0 @@ - - - - - - 6.12. Make-4.4.1 - - - - - - - - -
-

- 6.12. Make-4.4.1 -

-
-

- Пакет Make содержит программу, управляющую генерацией исполняемых и - других файлов, из исходного кода. -

-
-
-
- Приблизительное время сборки: - менее 0.1 SBU -
-
- Требуемое дисковое - пространство: 15 MB -
-
-
-
-
-

- 6.12.1. Установка пакета Make -

-

- Подготовьте Make к компиляции: -

-
./configure --prefix=/usr   \
-            --without-guile \
-            --host=$LFS_TGT \
-            --build=$(build-aux/config.guess)
-
-

- Значение новой опции настройки: -

-
-
- --without-guile -
-
-

- Несмотря на то, что мы выполняем кросс-компиляцию, configure - пытается использовать guile с узла сборки, если он его - находит. Это приводит к сбою компиляции, этот аргумент - предотвращает его использование. -

-
-
-
-

- Скомпилируйте пакет: -

-
make
-

- Установите пакет: -

-
make DESTDIR=$LFS install
-
-
-

- Подробная информация об этом пакете находится в Раздел 8.67.2, «Содержимое - пакета Make.» -

-
-
- - - diff --git a/lfs-12.0-sysv/chapter06/ncurses.html b/lfs-12.0-sysv/chapter06/ncurses.html deleted file mode 100644 index c67ad11..0000000 --- a/lfs-12.0-sysv/chapter06/ncurses.html +++ /dev/null @@ -1,286 +0,0 @@ - - - - - - 6.3. Ncurses-6.4 - - - - - - - - -
-

- 6.3. Ncurses-6.4 -

-
-

- Пакет Ncurses содержит библиотеки для независимой от терминала - обработки ввода/вывода -

-
-
-
- Приблизительное время сборки: - 0.3 SBU -
-
- Требуемое дисковое - пространство: 51 MB -
-
-
-
-
-

- 6.3.1. Установка пакета Ncurses -

-

- Во-первых, убедитесь, что gawk найден первым во время - настройки: -

-
sed -i s/mawk// configure
-

- Затем выполните следующие команды, чтобы собрать программу - «tic» на - хосте сборки: -

-
mkdir build
-pushd build
-  ../configure
-  make -C include
-  make -C progs tic
-popd
-

- Подготовьте Ncurses к компиляции: -

-
./configure --prefix=/usr                \
-            --host=$LFS_TGT              \
-            --build=$(./config.guess)    \
-            --mandir=/usr/share/man      \
-            --with-manpage-format=normal \
-            --with-shared                \
-            --without-normal             \
-            --with-cxx-shared            \
-            --without-debug              \
-            --without-ada                \
-            --disable-stripping          \
-            --enable-widec
-
-

- Значение новых параметров настройки: -

-
-
- --with-manpage-format=normal -
-
-

- Этот аргумент предотвращает установку Ncurses сжатых страниц - руководства, это может произойти, если сам дистрибутив хоста - содержит сжатые страницы руководства. -

-
-
- --with-shared -
-
-

- Этот аргумент позволяет Ncurses собирать и устанавливать - разделяемые библиотеки C. -

-
-
- --without-normal -
-
-

- Этот аргумент предотвращает сборку и установку статических - библиотек C. -

-
-
- --without-debug -
-
-

- Этот аргумент предотвращает сборку и установку отладочных - библиотек. -

-
-
- --with-cxx-shared -
-
-

- Это аргумент позволяет Ncurses собирать и устанавливать общие - привязки C++. А также предотвращает сборку и установку - статических привязок C++. -

-
-
- --without-ada -
-
-

- Этот аргумент гарантирует, что Ncurses будет собран без - поддержки компилятора Ada, который может присутствовать на - хосте, но будет недоступен, как только мы войдем в среду - chroot. -

-
-
- --disable-stripping -
-
-

- Этот аргумент не позволяет системе сборки использовать - программу strip - с хоста. Использование инструментов хоста в - кросс-компилируемой программе может привести к сбою. -

-
-
- --enable-widec -
-
-

- Этот аргумент указывает, что необходимо скомпилировать - библиотеки расширенных символов (такие как, libncursesw.so.6.4) вместо обычных (таких - как, libncurses.so.6.4). Эти - библиотеки расширенных символов можно использовать как в - многобайтовой, так и традиционной 8-битной локали, в то время - как обычные библиотеки корректно работают только в 8-битных - локалях. Библиотеки расширенных символов и обычные совместимы - на уровне исходного кода, но не совместимы в двоичном. -

-
-
-
-

- Скомпилируйте пакет: -

-
make
-

- Установите пакет: -

-
make DESTDIR=$LFS TIC_PATH=$(pwd)/build/progs/tic install
-echo "INPUT(-lncursesw)" > $LFS/usr/lib/libncurses.so
-
-

- Значение параметров установки: -

-
-
- TIC_PATH=$(pwd)/build/progs/tic -
-
-

- Нам нужно передать путь до только что собранной программы - tic, которая - работает на сборочной машине, чтобы база данных терминала - была создана без ошибок. -

-
-
- echo - "INPUT(-lncursesw)" > - $LFS/usr/lib/libncurses.so -
-
-

- Библиотека libncurses.so - необходима для нескольких пакетов, которые мы скоро соберем. - Мы создадим небольшой скрипт компоновщика, как это делается - поясняется в - Глава 8. -

-
-
-
-
-
-

- Подробная информация об этом пакете находится в Раздел 8.29.2, «Содержимое - пакета Ncurses.» -

-
-
- - - diff --git a/lfs-12.0-sysv/chapter06/patch.html b/lfs-12.0-sysv/chapter06/patch.html deleted file mode 100644 index 35bd39b..0000000 --- a/lfs-12.0-sysv/chapter06/patch.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - - - 6.13. Patch-2.7.6 - - - - - - - - -
-

- 6.13. Patch-2.7.6 -

-
-

- Пакет Patch содержит программу для изменения или создания файлов - путём наложение «патча», обычно, создаваемого программой - diff. -

-
-
-
- Приблизительное время сборки: - 0.1 SBU -
-
- Требуемое дисковое - пространство: 12 MB -
-
-
-
-
-

- 6.13.1. Установка пакета Patch -

-

- Подготовьте Patch к компиляции: -

-
./configure --prefix=/usr   \
-            --host=$LFS_TGT \
-            --build=$(build-aux/config.guess)
-

- Скомпилируйте пакет: -

-
make
-

- Установите пакет: -

-
make DESTDIR=$LFS install
-
-
-

- Подробная информация об этом пакете находится в Раздел 8.68.2, «Содержимое - пакета Patch.» -

-
-
- - - diff --git a/lfs-12.0-sysv/chapter06/sed.html b/lfs-12.0-sysv/chapter06/sed.html deleted file mode 100755 index fe7cbf4..0000000 --- a/lfs-12.0-sysv/chapter06/sed.html +++ /dev/null @@ -1,122 +0,0 @@ - - - - - - 6.14. Sed-4.9 - - - - - - - - -
-

- 6.14. Sed-4.9 -

-
-

- Пакет Sed содержит потоковый редактор текста -

-
-
-
- Приблизительное время сборки: - 0.1 SBU -
-
- Требуемое дисковое - пространство: 21 MB -
-
-
-
-
-

- 6.14.1. Установка пакета Sed -

-

- Подготовьте Sed к компиляции: -

-
./configure --prefix=/usr   \
-            --host=$LFS_TGT \
-            --build=$(./build-aux/config.guess)
-

- Скомпилируйте пакет: -

-
make
-

- Установите пакет: -

-
make DESTDIR=$LFS install
-
-
-

- Подробная информация об этом пакете находится в Раздел 8.30.2, «Содержимое - пакета Sed.» -

-
-
- - - diff --git a/lfs-12.0-sysv/chapter06/tar.html b/lfs-12.0-sysv/chapter06/tar.html deleted file mode 100644 index e68b90c..0000000 --- a/lfs-12.0-sysv/chapter06/tar.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - - - 6.15. Tar-1.35 - - - - - - - - -
-

- 6.15. Tar-1.35 -

-
-

- Пакет Tar предоставляет возможность создавать tar архивы, а также - производить с ними различные манипуляции. Tar может распаковать - предварительно созданный архив, добавить или обновить файлы в нём, - вернуть список файлов в архиве. -

-
-
-
- Приблизительное время сборки: - 0.1 SBU -
-
- Требуемое дисковое - пространство: 42 MB -
-
-
-
-
-

- 6.15.1. Установка пакета Tar -

-

- Подготовьте Tar к компиляции: -

-
./configure --prefix=/usr                     \
-            --host=$LFS_TGT                   \
-            --build=$(build-aux/config.guess)
-

- Скомпилируйте пакет: -

-
make
-

- Установите пакет: -

-
make DESTDIR=$LFS install
-
-
-

- Подробная информация об этом пакете находится в Раздел 8.69.2, «Содержимое - пакета Tar.» -

-
-
- - - diff --git a/lfs-12.0-sysv/chapter06/xz.html b/lfs-12.0-sysv/chapter06/xz.html deleted file mode 100644 index ddd8d3f..0000000 --- a/lfs-12.0-sysv/chapter06/xz.html +++ /dev/null @@ -1,138 +0,0 @@ - - - - - - 6.16. Xz-5.4.4 - - - - - - - - -
-

- 6.16. Xz-5.4.4 -

-
-

- Пакет Xz содержит программы для сжатия и распаковки файлов. Он - предоставляет возможности для lzma и более новых форматов сжатия - xz. Сжатие текстовых файлов с помощью xz дает лучший процент сжатия, - чем с традиционные gzip или bzip2. -

-
-
-
- Приблизительное время сборки: - 0.1 SBU -
-
- Требуемое дисковое - пространство: 22 MB -
-
-
-
-
-

- 6.16.1. Установка пакета Xz -

-

- Подготовьте Xz к компиляции: -

-
./configure --prefix=/usr                     \
-            --host=$LFS_TGT                   \
-            --build=$(build-aux/config.guess) \
-            --disable-static                  \
-            --docdir=/usr/share/doc/xz-5.4.4
-

- Скомпилируйте пакет: -

-
make
-

- Установите пакет: -

-
make DESTDIR=$LFS install
-

- Удалите архивный файл libtool, поскольку он потенциально опасен при - кросс-компиляции: -

-
rm -v $LFS/usr/lib/liblzma.la
-
-
-

- Подробная информация об этом пакете находится в Раздел 8.8.2, «Содержимое пакета - Xz.» -

-
-
- - - diff --git a/lfs-12.0-sysv/chapter07/Python.html b/lfs-12.0-sysv/chapter07/Python.html deleted file mode 100644 index 840653a..0000000 --- a/lfs-12.0-sysv/chapter07/Python.html +++ /dev/null @@ -1,190 +0,0 @@ - - - - - - 7.10. Python-3.11.4 - - - - - - - - -
-

- 7.10. - Python-3.11.4 -

-
-

- Пакет Python 3 содержит среду разработчика Python. Его можно - использовать для объектно-ориентированного программирования, - написания скриптов, прототипирования больших программ и разработка - целых приложений. Python — это интерпретируемый язык - программирования. -

-
-
-
- Приблизительное время сборки: - 0.4 SBU -
-
- Требуемое дисковое - пространство: 533 MB -
-
-
-
-
-

- 7.10.1. Установка пакета Python -

-
- [Примечание] -

- Примечание -

-

- Есть два пакета, имена которых начинаются с «python». Нужный архив - это Python-3.11.4.tar.xz (обратите - внимание на заглавную первую букву). -

-
-

- Подготовка Python к компиляции: -

-
./configure --prefix=/usr   \
-            --enable-shared \
-            --without-ensurepip
-
-

- Значение параметров настройки: -

-
-
- --enable-shared -
-
-

- Этот параметр отключает установку статичных библиотек. -

-
-
- --without-ensurepip -
-
-

- Этот параметр отключает установщик пакетов Python, который на - данном этапе не нужен. -

-
-
-
-

- Скомпилируйте пакет: -

-
make
-
- [Примечание] -

- Примечание -

-

- Некоторые модули Python 3 не могут быть собраны сейчас, потому - что зависимости еще не установлены. Система сборки пытается их - собрать, в результате компиляция некоторых файлов завершится - ошибкой, и может показаться, что сообщение компилятора указывает - на «фатальную - ошибку». Сообщение следует проигнорировать. Просто - убедитесь, что команда make верхнего уровня не - завершилась ошибкой. Дополнительные модули сейчас не нужны, и они - будут собраны в - Глава 8. -

-
-

- Установите пакет: -

-
make install
-
-
-

- Подробная информация об этом пакете находится в Раздел 8.51.2, - «Содержимое пакета Python 3.» -

-
-
- - - diff --git a/lfs-12.0-sysv/chapter07/bison.html b/lfs-12.0-sysv/chapter07/bison.html deleted file mode 100644 index acde6b9..0000000 --- a/lfs-12.0-sysv/chapter07/bison.html +++ /dev/null @@ -1,140 +0,0 @@ - - - - - - 7.8. Bison-3.8.2 - - - - - - - - -
-

- 7.8. Bison-3.8.2 -

-
-

- Пакет Bison содержит генератор синтаксического анализа. -

-
-
-
- Приблизительное время сборки: - 0.2 SBU -
-
- Требуемое дисковое - пространство: 57 MB -
-
-
-
-
-

- 7.8.1. Установка пакета Bison -

-

- Подготовьте Bison к компиляции: -

-
./configure --prefix=/usr \
-            --docdir=/usr/share/doc/bison-3.8.2
-
-

- Значение нового параметра конфигурации: -

-
-
- --docdir=/usr/share/doc/bison-3.8.2 -
-
-

- Этот параметр указывает системе сборки установить - документацию к bison в каталог с версией пакета. -

-
-
-
-

- Скомпилируйте пакет: -

-
make
-

- Установите пакет: -

-
make install
-
-
-

- Подробная информация об этом пакете находится в Раздел 8.33.2, «Содержимое - пакета Bison.» -

-
-
- - - diff --git a/lfs-12.0-sysv/chapter07/changingowner.html b/lfs-12.0-sysv/chapter07/changingowner.html deleted file mode 100644 index 45f04b4..0000000 --- a/lfs-12.0-sysv/chapter07/changingowner.html +++ /dev/null @@ -1,119 +0,0 @@ - - - - - - 7.2. Смена владельца - - - - - - - - -
-

- 7.2. - Смена владельца -

-
- [Примечание] -

- Примечание -

-

- Команды, приведенные в оставшейся части книги, должны выполняться - от имени пользователя root, а не - lfs. Дважды проверьте, что - переменная $LFS установлена в переменных - окружения пользователя root. -

-
-

- В настоящее время вся иерархия каталогов в $LFS принадлежит пользователю lfs, существующему только на хост-системе. Если - права на файлы и каталоги внутри $LFS - оставить как есть, то они будут принадлежать ID пользователя без - существующей учетной записи. Это опасно, так как созданная позже - учетная запись, может получить такой же ID пользователя и стать - владельцем всех файлов в $LFS, тем - самым делая эти файлы уязвимыми для возможных злонамеренных - манипуляций. -

-

- Для решения проблемы измените владельца каталогов $LFS/* на пользователя root выполнив следующую команду: -

-
chown -R root:root $LFS/{usr,lib,var,etc,bin,sbin,tools}
-case $(uname -m) in
-  x86_64) chown -R root:root $LFS/lib64 ;;
-esac
-
- - - diff --git a/lfs-12.0-sysv/chapter07/chapter07.html b/lfs-12.0-sysv/chapter07/chapter07.html deleted file mode 100644 index 2c054d9..0000000 --- a/lfs-12.0-sysv/chapter07/chapter07.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - - Глава 7. Вход в окружение Chroot и создание дополнительных временных - инструментов - - - - - - - - -
-

- 7. Вход в окружение Chroot и - создание дополнительных временных инструментов -

- -
- - - diff --git a/lfs-12.0-sysv/chapter07/chroot.html b/lfs-12.0-sysv/chapter07/chroot.html deleted file mode 100644 index 45022c7..0000000 --- a/lfs-12.0-sysv/chapter07/chroot.html +++ /dev/null @@ -1,155 +0,0 @@ - - - - - - 7.4. Вход в окружение Chroot - - - - - - - - -
-

- 7.4. Вход в - окружение Chroot -

-

- Теперь, когда все пакеты, необходимые для сборки остальных - инструментов установлены в системе, пришло время войти в окружение - chroot и завершить установку временных инструментов. Эта среда также - будет использоваться для установки конечной системы. От имени - пользователя root выполните следующую - команду для входа в chroot, в которой на данный момент нет ничего, - кроме временных инструментов: -

-
chroot "$LFS" /usr/bin/env -i   \
-    HOME=/root                  \
-    TERM="$TERM"                \
-    PS1='(lfs chroot) \u:\w\$ ' \
-    PATH=/usr/bin:/usr/sbin     \
-    /bin/bash --login
-

- Параметр -i команды - env, очистит все - переменные в среде chroot. После этого переменные HOME, TERM, PS1 и PATH будут - установлены заново. Конструкция TERM=$TERM установит переменную TERM - внутри chroot в то же значение, что и вне chroot. Эта переменная - необходима для корректной работы таких программ как vim и less. Если понадобятся другие - переменные окружения, такие как CFLAGS или - CXXFLAGS, то это подходящее место для их - установки. -

-

- С этого момента больше нет необходимости использовать переменную - LFS, поскольку вся работа будет ограничена - файловой системой LFS; команда chroot запускает оболочку Bash с - корневым каталогом (/), установленным в - $LFS. -

-

- Обратите внимание, что каталог /tools/bin не указан в переменной окружения - PATH. Это означает, что кросс-тулчейн - больше не будет использоваться. -

-

- Обратите внимание, что в командной строке bash будет указано I have no name!. Это нормально, поскольку - файл /etc/passwd еще не создан. -

-
- [Примечание] -

- Примечание -

-

- Важно, чтобы все команды в оставшейся части этой главы и следующих - главах выполнялись из среды chroot. Если вы покидаете эту среду по - какой-либо причине (например, при перезагрузке), убедитесь, что - файловые системы виртуального ядра смонтированы, как описано в - Раздел 7.3.1, - «Монтирование и заполнение /dev» и Раздел 7.3.2, - «Монтирование виртуальных файловых систем ядра», а затем - войдите в среду chroot для продолжения установки. -

-
-
- - - diff --git a/lfs-12.0-sysv/chapter07/cleanup.html b/lfs-12.0-sysv/chapter07/cleanup.html deleted file mode 100644 index 546549d..0000000 --- a/lfs-12.0-sysv/chapter07/cleanup.html +++ /dev/null @@ -1,285 +0,0 @@ - - - - - - 7.13. Очистка и сохранение временной системы - - - - - - - - -
-

- 7.13. Очистка и - сохранение временной системы -

-
-

- 7.13.1. Очистка -

-

- Во-первых, удалите установленную документацию, чтобы предотвратить - ее попадание в конечную систему и сэкономить около 35 МБ места: -

-
rm -rf /usr/share/{info,man,doc}/*
-

- Во-вторых, в современных системах Linux файлы .la библиотеки - libtool полезны только для libltdl. Никакие библиотеки в LFS не - загружаются с помощью libltdl. Известно, что некоторые файлы .la - могут привести к сбою во время сборки пакетов BLFS. Удалите эти - файлы сейчас: -

-
find /usr/{lib,libexec} -name \*.la -delete
-

- Сейчас размер системы составляет около 3 ГБ, однако каталог /tools - больше не понадобится. Удалите его, чтобы освободить около 1 ГБ - дискового пространства: -

-
rm -rf /tools
-
-
-

- 7.13.2. Резервное копирование -

-

- На данный момент основные программы и библиотеки собраны, и ваша - система LFS находится в хорошем состоянии. Можно создать резервную - копию вашей системы для последующего повторного использования. В - случае фатальных сбоев в следующих главах часто оказывается, что - удалить все и начать заново (более осторожно) — лучший вариант - восстановления. К сожалению, все временные файлы также будут - удалены. Чтобы не тратить лишнее время на повторную сборку того, - что было успешно собрано, полезно создать резервную копию текущей - системы LFS. -

-
- [Примечание] -

- Примечание -

-

- Все остальные шаги в этом разделе являются необязательными. Тем - не менее, как только вы начнете устанавливать пакеты в - Глава 8, временные файлы будут перезаписаны. Поэтому - рекомендуется создание резервной копии текущей системы, как - описано ниже. -

-
-

- Следующие шаги выполняются вне среды chroot. Это означает, что - прежде чем продолжить вы должны покинуть среду chroot. Причиной - этого является то, что необходимо получить доступ к расположению - файловой системы за пределами среды chroot для хранения/чтения - архива резервных копий, который не должен размещаться в иерархии - $LFS. -

-

- Если вы решили сделать резервную копию, покиньте среду chroot: -

-
exit
-
- [Важно] -

- Важно -

-

- Все следующие инструкции выполняются пользователем root в вашей хост-системе. Будьте особенно - внимательны к командам, которые вы собираетесь запускать, - поскольку ошибки, допущенные здесь, могут изменить вашу - хост-систему. Имейте в виду, что переменная окружения - LFS по умолчанию установлена для - пользователя lfs, но может не - быть установлена для root. -

-

- Всякий раз, когда команды должны выполняться от root, убедитесь, что вы установили переменную - LFS. -

-

- Это обсуждалось в Раздел 2.6, «Установка - переменной $LFS». -

-
-

- Перед созданием резервной копии размонтируйте виртуальные файловые - системы: -

-
mountpoint -q $LFS/dev/shm && umount $LFS/dev/shm
-umount $LFS/dev/pts
-umount $LFS/{sys,proc,run,dev}
-

- Убедитесь, что у вас есть как минимум 1 ГБ свободного места на - диске (исходные tar-архивы будут включены в архив резервных копий) - в файловой системе, содержащей каталог, в котором вы создаете архив - резервных копий. -

-

- Обратите внимание, что в приведенных ниже инструкциях указан - домашний каталог пользователя root - хост-системы, который обычно находится в корневой файловой системе. - Замените $HOME каталогом на ваш выбор, - если вы не хотите, чтобы резервная копия хранилась в домашнем - каталоге пользователя root. -

-

- Создайте архив резервной копии, выполнив следующую команду: -

-
- [Примечание] -

- Примечание -

-

- Поскольку архив резервной копии сжимается, процесс занимает - довольно много времени (более 10 минут) даже на достаточно - быстрой системе. -

-
-
cd $LFS
-tar -cJpf $HOME/lfs-temp-tools-12.0.tar.xz .
-
- [Примечание] -

- Примечание -

-

- Если вы переходите к главе 8, не забудьте повторно войти в среду - chroot, как описано в разделе «Важно» ниже. -

-
-
-
-

- 7.13.3. Восстановление -

-

- В случае, если были допущены какие-либо ошибки и вам нужно начать - все сначала, вы можете использовать эту резервную копию для - восстановления системы и сэкономить время на восстановление. - Поскольку исходники находятся в папке $LFS, они также включены в архив резервной копии, - поэтому их не нужно загружать повторно. Убедившись, что переменная - $LFS настроена правильно, вы можете - восстановить резервную копию, выполнив следующие команды: -

-
- [Предупреждение] -

- Предупреждение -

-

- Следующие команды чрезвычайно опасны. Если вы запустите команду - rm -rf ./* от имени - пользователя root и не перейдете - в каталог $LFS или переменная окружения LFS не будет установлена для пользователя - root, это уничтожит всю вашу - хост-систему. ВЫ ПРЕДУПРЕЖДЕНЫ. -

-
-
cd $LFS
-rm -rf ./*
-tar -xpf $HOME/lfs-temp-tools-12.0.tar.xz
-

- Еще раз проверьте, правильно ли настроено окружение, и продолжайте - сборку остальной части системы. -

-
- [Важно] -

- Важно -

-

- Если вы покинули среду chroot, чтобы создать резервную копию или - перезапустить сборку с помощью восстановления, не забудьте - проверить, что виртуальные файловые системы все еще смонтированы - (findmnt | grep - $LFS). Если они не смонтированы, перемонтируйте - их сейчас, как описано в Раздел 7.3, - «Подготовка виртуальных файловых систем ядра», и повторно - войдите в среду chroot (см. Раздел 7.4, «Вход в - окружение Chroot»), прежде чем продолжить. -

-
-
-
- - - diff --git a/lfs-12.0-sysv/chapter07/createfiles.html b/lfs-12.0-sysv/chapter07/createfiles.html deleted file mode 100644 index be47c7e..0000000 --- a/lfs-12.0-sysv/chapter07/createfiles.html +++ /dev/null @@ -1,244 +0,0 @@ - - - - - - 7.6. Создание основных файлов и символических ссылок - - - - - - - - -
-

- 7.6. - Создание основных файлов и символических ссылок -

-

- Исторически сложилось, что Linux хранит список примонтированных - файловых систем в файле /etc/mtab. - Современные ядра хранят этот список внутри себя и предоставляют его - пользователю через файловую систему /proc. Чтобы удовлетворять требованиям утилит, - которые ожидают наличия /etc/mtab, - создайте следующую символическую ссылку: -

-
ln -sv /proc/self/mounts /etc/mtab
-

- Создайте файл /etc/hosts, на который - будут ссылаться некоторые наборы тестов, а также один из файлов - конфигурации Perl: -

-
cat > /etc/hosts << EOF
-127.0.0.1  localhost $(hostname)
-::1        localhost
-EOF
-

- Чтобы пользователь root мог войти в - систему и распознавался системой, в файлах /etc/passwd и /etc/group должны быть соответствующие записи. -

-

- Создайте файл /etc/passwd выполнив - следующую команду: -

-
cat > /etc/passwd << "EOF"
-root:x:0:0:root:/root:/bin/bash
-bin:x:1:1:bin:/dev/null:/usr/bin/false
-daemon:x:6:6:Daemon User:/dev/null:/usr/bin/false
-messagebus:x:18:18:D-Bus Message Daemon User:/run/dbus:/usr/bin/false
-uuidd:x:80:80:UUID Generation Daemon User:/dev/null:/usr/bin/false
-nobody:x:65534:65534:Unprivileged User:/dev/null:/usr/bin/false
-EOF
-

- Пароль пользователя root будет задан - позднее. -

-

- Создайте файл /etc/group, выполнив - следующую команду: -

-
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:
-uuidd:x:80:
-wheel:x:97:
-users:x:999:
-nogroup:x:65534:
-EOF
-

- Созданные группы не являются частью какого-либо стандарта — это - группы, определяемые частично требованиями конфигурации Udev в главе - 9, а частично общими соглашениями, используемыми в ряде существующих - дистрибутивов Linux. Кроме того, некоторые наборы тестов зависят от - конкретных пользователей или групп. Спецификация LSB (доступна по - адресу https://refspecs.linuxfoundation.org/lsb.shtml) - рекомендует, чтобы, помимо группы root с идентификатор (GID) 0 присутствовала - группа bin с GID 1. GID 5 широко - используется для группы tty, число 5 - также используется в /etc/fstab для файловой системы devpts. Все остальные имена групп и GID могут - свободно выбираться системным администратором, так как хорошо - написанные программы не зависят от номеров GID, а чаще используют - название группы. -

-

- Идентификатор 65534 используется ядром для NFS и отдельных - пользовательских пространств имен для несопоставленных пользователей - и групп (они существуют на сервере NFS или родительском пространстве - имен пользователя, но «не - существует» на локальном компьютере или в отдельном - пространстве имен). Мы присваиваем nobody и nogroup - для того, чтобы избежать несопоставленных идентификаторов. Другие - дистрибутивы могут обрабатывать этот идентификатор по-разному, - поэтому любая переносимая программа не должна зависеть от этого - присвоения. -

-

- Для некоторых тестов в Глава 8 - требуется обычный пользователь. Добавим такого пользователя здесь и - удалим эту учетную запись в конце главы. -

-
echo "tester:x:101:101::/home/tester:/bin/bash" >> /etc/passwd
-echo "tester:x:101:" >> /etc/group
-install -o tester -d /home/tester
-

- Чтобы удалить приглашение «I - have no name!», запустите новую оболочку. Поскольку - файлы /etc/passwd и /etc/group были созданы, разрешение имен - пользователей и групп теперь будет работать: -

-
exec /usr/bin/bash --login
-

- Программы login, - agetty, init (и другие) используют ряд - журналов для записи такой информации, как кто и когда входил в - систему. Однако эти программы не будут записывать данные в журналы, - если они еще не существуют. Инициализируйте журналы и предоставьте им - соответствующие разрешения: -

-
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
-

- В файл /var/log/wtmp записываются все - входы и выходы из системы. В файл /var/log/lastlog записывается время последнего - входа каждого пользователя в систему. В файл /var/log/faillog записываются неудачные попытки - входа в систему. В файл /var/log/btmp - записываются неудачные попытки входа в систему. -

-
- [Примечание] -

- Примечание -

-

- В файле /run/utmp записываются - пользователи, которые в данный момент вошли в систему. Он создаётся - динамически, в процессе выполнения сценариев загрузки. -

-
-
- - - diff --git a/lfs-12.0-sysv/chapter07/creatingdirs.html b/lfs-12.0-sysv/chapter07/creatingdirs.html deleted file mode 100644 index ac421ab..0000000 --- a/lfs-12.0-sysv/chapter07/creatingdirs.html +++ /dev/null @@ -1,172 +0,0 @@ - - - - - - 7.5. Создание каталогов - - - - - - - - -
-

- 7.5. - Создание каталогов -

-

- Пришло время создать полную структуру каталогов в файловой системе - LFS. -

-
- [Примечание] -

- Примечание -

-

- Некоторые из каталогов, упомянутых в этом разделе, возможно, уже - были созданы ранее с помощью явных инструкций или при установке - некоторых пакетов. Они повторяются ниже для полноты картины. -

-
-

- Создайте несколько каталогов, которые не входили в ограниченный - набор, используемый в предыдущих главах, выполнив следующую команду: -

-
mkdir -pv /{boot,home,mnt,opt,srv}
-

- Создайте необходимые подкаталоги, выполнив следующие команды: -

-
mkdir -pv /etc/{opt,sysconfig}
-mkdir -pv /lib/firmware
-mkdir -pv /media/{floppy,cdrom}
-mkdir -pv /usr/{,local/}{include,src}
-mkdir -pv /usr/local/{bin,lib,sbin}
-mkdir -pv /usr/{,local/}share/{color,dict,doc,info,locale,man}
-mkdir -pv /usr/{,local/}share/{misc,terminfo,zoneinfo}
-mkdir -pv /usr/{,local/}share/man/man{1..8}
-mkdir -pv /var/{cache,local,log,mail,opt,spool}
-mkdir -pv /var/lib/{color,misc,locate}
-
-ln -sfv /run /var/run
-ln -sfv /run/lock /var/lock
-
-install -dv -m 0750 /root
-install -dv -m 1777 /tmp /var/tmp
-

- По умолчанию каталоги создаются с правами 755, но это нежелательно - делать для всех каталогов. В приведенных выше командах вносятся два - изменения — одно в домашний каталог пользователя root, а другое в каталоги для временных файлов. -

-

- Первое изменение гарантирует, что никто не сможет войти в каталог - /root — точно так же, как обычный - пользователь сделал бы это со своим собственным домашним каталогом. - Второе изменение гарантирует, что любой пользователь может писать в - каталоги /tmp и /var/tmp, но не может удалять из них файлы другого - пользователя. Последнее запрещено так называемым «sticky bit (липким - битом)», старшим битом (1) в битовой маске 1777 -

-
-

- 7.5.1. Примечание о соответствии требованиям FHS -

-

- Это дерево каталогов основано на стандарте иерархии файловой - системы (FHS) (доступен по адресу https://refspecs.linuxfoundation.org/fhs.shtml). - FHS также указывает, что наличие некоторых каталогов необязательно, - например, /usr/local/games и - /usr/share/games. В LFS мы создаем - только те каталоги, которые действительно необходимы. Однако, не - стесняйтесь создавать дополнительные каталоги, если хотите. -

-
- [Предупреждение] -

- Предупреждение -

-

- FHS не требует наличия каталога /usr/lib64, и редакторы LFS решили его не - использовать. Чтобы инструкции в LFS и BLFS работали корректно, - крайне важно, чтобы этот каталог не существовал. Время от времени - вам следует проверять, что он не существует, потому что его легко - создать непреднамеренно, и это, вероятно, приведет к поломке - вашей системы. -

-
-
-
- - - diff --git a/lfs-12.0-sysv/chapter07/gettext.html b/lfs-12.0-sysv/chapter07/gettext.html deleted file mode 100644 index ace711d..0000000 --- a/lfs-12.0-sysv/chapter07/gettext.html +++ /dev/null @@ -1,153 +0,0 @@ - - - - - - 7.7. Gettext-0.22 - - - - - - - - -
-

- 7.7. - Gettext-0.22 -

-
-

- Пакет Gettext содержит утилиты для интернационализации и - локализации. Они позволяют компилировать программы с поддержкой NLS - (Native Language Support), позволяя им выводить сообщения на родном - языке пользователя. -

-
-
-
- Приблизительное время сборки: - 1.1 SBU -
-
- Требуемое дисковое - пространство: 306 MB -
-
-
-
-
-

- 7.7.1. Установка пакета Gettext -

-

- Для временного набора инструментов нам нужно установить только три - программы из пакета Gettext. -

-

- Подготовьте Gettext к компиляции: -

-
./configure --disable-shared
-
-

- Значение параметров настройки: -

-
-
- --disable-shared -
-
-

- В настоящее время нам не нужно устанавливать какие-либо общие - библиотеки Gettext, поэтому нет необходимости их собирать. -

-
-
-
-

- Скомпилируйте пакет: -

-
make
-

- Установите программы msgfmt, msgmerge, и xgettext programs: -

-
cp -v gettext-tools/src/{msgfmt,msgmerge,xgettext} /usr/bin
-
-
-

- Подробная информация об этом пакете находится в Раздел 8.32.2, «Содержимое - пакета Gettext.» -

-
-
- - - diff --git a/lfs-12.0-sysv/chapter07/introduction.html b/lfs-12.0-sysv/chapter07/introduction.html deleted file mode 100644 index 5f879c9..0000000 --- a/lfs-12.0-sysv/chapter07/introduction.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - 7.1. Введение - - - - - - - - -
-

- 7.1. Введение -

-

- В этой главе рассказывается, как собрать последние недостающие части - временной системы: инструменты, необходимые для сборки различных - пакетов. Теперь, когда все циклические зависимости устранены, для - сборки можно использовать среду «chroot», полностью изолированную от - операционной системы хоста (за исключением работающего ядра). -

-

- Для правильной работы изолированной среды необходимо установить связь - с работающим ядром. Это делается с помощью так называемых - виртуальных файловых систем - ядра, которые будут смонтированы перед входом в среду - chroot. Вы можете проверить, смонтированы ли они, выполнив команду - findmnt. -

-

- До Раздел 7.4, «Вход в окружение - Chroot» команды должны выполняться от имени root с установленной переменной LFS. После входа в chroot все команды выполняются от - имени root, к счастью, без доступа к - операционной системе компьютера, на котором вы собираете LFS. В любом - случае будьте осторожны, так как неверными командами легко разрушить - всю систему LFS. -

-
- - - diff --git a/lfs-12.0-sysv/chapter07/kernfs.html b/lfs-12.0-sysv/chapter07/kernfs.html deleted file mode 100644 index 0cd8159..0000000 --- a/lfs-12.0-sysv/chapter07/kernfs.html +++ /dev/null @@ -1,168 +0,0 @@ - - - - - - 7.3. Подготовка виртуальных файловых систем ядра - - - - - - - - -
-

- 7.3. Подготовка - виртуальных файловых систем ядра -

-

- Приложения, работающие в пользовательском пространстве, используют - различные файловые системы, созданные ядром, для взаимодействия с - самим ядром. Эти файловые системы являются виртуальными: для них не - используется дисковое пространство. Содержимое файловых систем - находится в памяти. Эти файловые системы должны быть смонтированы в - дереве каталогов $LFS, чтобы приложения могли найти их в среде - chroot. -

-

- Начните с создания каталогов, в которые будут смонтированы эти - виртуальные файловые системы: -

-
mkdir -pv $LFS/{dev,proc,sys,run}
-
-

- 7.3.1. - Монтирование и заполнение /dev -

-

- Во время обычной загрузки ядро автоматически монтирует файловую - систему devtmpfs в каталог - /dev; ядро создает узлы устройств в - этой виртуальной файловой системе в процессе загрузки или при - первом обнаружении устройства, или доступе к нему. Демон udev может - изменять владельца или разрешения узлов устройств, созданных ядром, - или создавать новые узлы устройств или символические ссылки, чтобы - облегчить работу разработчиков дистрибутива или системных - администраторов. (Подробности смотрите в Раздел 9.3.2.2, «Создание - узла устройства».) Если ядро хоста поддерживает devtmpfs, мы можем просто смонтировать - devtmpfs в $LFS/dev и положиться на ядро для его заполнения. -

-

- Но в некоторых ядрах хоста отсутствует поддержка devtmpfs, эти хост-дистрибутивы используют - разные методы для создания содержимого /dev. Таким образом, единственный независимый от - хоста способ заполнить каталог $LFS/dev - это привязка к каталогу /dev хост-системы. Связное монтирование - это - особый тип монтирования, который делает дерево каталога или файл - видимым в каком-либо другом месте. Для этого используйте следующую - команду: -

-
mount -v --bind /dev $LFS/dev
-
-
-

- 7.3.2. - Монтирование виртуальных файловых систем ядра -

-

- Теперь смонтируйте оставшиеся виртуальные файловые системы: -

-
mount -v --bind /dev/pts $LFS/dev/pts
-mount -vt proc proc $LFS/proc
-mount -vt sysfs sysfs $LFS/sys
-mount -vt tmpfs tmpfs $LFS/run
-

- В некоторых хост-системах /dev/shm - является символической ссылкой на /run/shm. /run tmpfs был смонтирован выше, - поэтому нужно создать только каталог. -

-

- В других хост-системах /dev/shm - является точкой монтирования для tmpfs. В этом случае монтирование - /dev приведет только к созданию /dev/shm как каталога в среде - chroot. В этой ситуации мы должны явно смонтировать tmpfs: -

-
if [ -h $LFS/dev/shm ]; then
-  mkdir -pv $LFS/$(readlink $LFS/dev/shm)
-else
-  mount -t tmpfs -o nosuid,nodev tmpfs $LFS/dev/shm
-fi
-
-
- - - diff --git a/lfs-12.0-sysv/chapter07/perl.html b/lfs-12.0-sysv/chapter07/perl.html deleted file mode 100644 index 563fb5b..0000000 --- a/lfs-12.0-sysv/chapter07/perl.html +++ /dev/null @@ -1,150 +0,0 @@ - - - - - - 7.9. Perl-5.38.0 - - - - - - - - -
-

- 7.9. Perl-5.38.0 -

-
-

- Пакет Perl содержит практический язык для извлечения данных и - составления отчётов (Practical Extraction and Report Language). -

-
-
-
- Приблизительное время сборки: - 0.6 SBU -
-
- Требуемое дисковое - пространство: 280 MB -
-
-
-
-
-

- 7.9.1. Установка пакета Perl -

-

- Подготовьте Perl к компиляции: -

-
sh Configure -des                                        \
-             -Dprefix=/usr                               \
-             -Dvendorprefix=/usr                         \
-             -Duseshrplib                                \
-             -Dprivlib=/usr/lib/perl5/5.38/core_perl     \
-             -Darchlib=/usr/lib/perl5/5.38/core_perl     \
-             -Dsitelib=/usr/lib/perl5/5.38/site_perl     \
-             -Dsitearch=/usr/lib/perl5/5.38/site_perl    \
-             -Dvendorlib=/usr/lib/perl5/5.38/vendor_perl \
-             -Dvendorarch=/usr/lib/perl5/5.38/vendor_perl
-
-

- Значение новых опций Configure: -

-
-
- -des -
-
-

- Это комбинация из трех параметров: -d использует значения по - умолчанию для всех элементов; -e обеспечивает выполнение всех - задач; -s отключает несущественные выходные данные. -

-
-
-
-

- Скомпилируйте пакет: -

-
make
-

- Установите пакет: -

-
make install
-
-
-

- Подробная информация об этом пакете находится в Раздел 8.42.2, «Содержимое - пакета Perl.» -

-
-
- - - diff --git a/lfs-12.0-sysv/chapter07/texinfo.html b/lfs-12.0-sysv/chapter07/texinfo.html deleted file mode 100644 index 094d644..0000000 --- a/lfs-12.0-sysv/chapter07/texinfo.html +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - 7.11. Texinfo-7.0.3 - - - - - - - - -
-

- 7.11. - Texinfo-7.0.3 -

-
-

- Пакет Texinfo содержит программы для чтения, записи и - преобразования информационных страниц. -

-
-
-
- Приблизительное время сборки: - 0.1 SBU -
-
- Требуемое дисковое - пространство: 116 MB -
-
-
-
-
-

- 7.11.1. Установка пакета Texinfo -

-

- Подготовьте Texinfo к компиляции: -

-
./configure --prefix=/usr
-

- Скомпилируйте пакет: -

-
make
-

- Установите пакет: -

-
make install
-
-
-

- Подробная информация об этом пакете находится в Раздел 8.70.2, «Содержимое - пакета Texinfo.» -

-
-
- - - diff --git a/lfs-12.0-sysv/chapter07/util-linux.html b/lfs-12.0-sysv/chapter07/util-linux.html deleted file mode 100644 index 6b184fb..0000000 --- a/lfs-12.0-sysv/chapter07/util-linux.html +++ /dev/null @@ -1,215 +0,0 @@ - - - - - - 7.12. Util-linux-2.39.1 - - - - - - - - -
-

- 7.12. - Util-linux-2.39.1 -

-
-

- Пакет Util-linux содержит различные служебные программы. Среди них - утилиты для работы с файловыми системами, консолями, разделами и - сообщениями. -

-
-
-
- Приблизительное время сборки: - 0.2 SBU -
-
- Требуемое дисковое - пространство: 169 MB -
-
-
-
-
-

- 7.12.1. Установка пакета Util-linux -

-

- FHS рекомендует использовать каталог /var/lib/hwclock вместо каталога /etc в качестве местоположения для файла - adjtime. Создайте этот каталог: -

-
mkdir -pv /var/lib/hwclock
-

- Подготовьте Util-linux к компиляции: -

-
./configure ADJTIME_PATH=/var/lib/hwclock/adjtime    \
-            --libdir=/usr/lib    \
-            --runstatedir=/run   \
-            --docdir=/usr/share/doc/util-linux-2.39.1 \
-            --disable-chfn-chsh  \
-            --disable-login      \
-            --disable-nologin    \
-            --disable-su         \
-            --disable-setpriv    \
-            --disable-runuser    \
-            --disable-pylibmount \
-            --disable-static     \
-            --without-python
-
-

- Значение параметров настройки: -

-
-
- ADJTIME_PATH=/var/lib/hwclock/adjtime -
-
-

- Этот параметр устанавливает расположение файла для записи - информации об аппаратных часах в соответствии с FHS. Он не - обязателен для временного инструментария, но предотвращает - создание файла в другом месте, где файл не будет перезаписан - или удален при финальной сборке пакета util-linux. -

-
-
- --libdir=/usr/lib -
-
-

- Этот параметр гарантирует, что символические ссылки - .so, будут указывать на файл - общей библиотеки в том же каталоге (/usr/lib). -

-
-
- --disable-* -
-
-

- Этот параметр предотвращают появление предупреждений о сборке - компонентов, для которых требуются пакеты, отсутствующие или - еще не установленные в LFS. -

-
-
- --without-python -
-
-

- Этот параметр отключает использование Python. Это позволяет избежать попыток - создания ненужных привязок. -

-
-
- --runstatedir=/run -
-
-

- Этот параметр устанавливает расположение сокета, - используемого uuidd и libuuid. -

-
-
-
-

- Скомпилируйте пакет: -

-
make
-

- Установите пакет: -

-
make install
-
-
-

- Подробная информация об этом пакете находится в Раздел 8.77.2, - «Содержимое пакета Util-linux.» -

-
-
- - - diff --git a/lfs-12.0-sysv/chapter08/Python.html b/lfs-12.0-sysv/chapter08/Python.html deleted file mode 100644 index 097343b..0000000 --- a/lfs-12.0-sysv/chapter08/Python.html +++ /dev/null @@ -1,394 +0,0 @@ - - - - - - 8.51. Python-3.11.4 - - - - - - - - -
-

- 8.51. - Python-3.11.4 -

-
-

- Пакет Python 3 содержит среду разработчика Python. Его можно - использовать для объектно-ориентированного программирования, - написания скриптов, прототипирования больших программ и разработка - целых приложений. Python — это интерпретируемый язык - программирования. -

-
-
-
- Приблизительное время сборки: - 1.9 SBU -
-
- Требуемое дисковое - пространство: 370 MB -
-
-
-
-
-

- 8.51.1. Установка пакета Python 3 -

-

- Подготовьте Python к компиляции: -

-
./configure --prefix=/usr        \
-            --enable-shared      \
-            --with-system-expat  \
-            --with-system-ffi    \
-            --enable-optimizations
-
-

- Значение параметров настройки: -

-
-
- --with-system-expat -
-
-

- Этот параметр выполняет линковку с системной версией - Expat. -

-
-
- --with-system-ffi -
-
-

- Этот параметр выполняет линковку с системной версией - libffi.so. -

-
-
- --enable-optimizations -
-
-

- Этот параметр позволяет выполнить обширные, но отнимающие - много времени, действия по оптимизации. Интерпретатор - собирается дважды; тесты, выполненные при первой сборке, - используются для улучшения финальной версии. -

-
-
-
-

- Скомпилируйте пакет: -

-
make
-

- Запускать тесты на этом этапе не рекомендуется. Известно, что тесты - зависают на неопределенный срок в неполной среде LFS. При желании - тесты можно запустить повторно в конце этой главы или при - переустановке Python 3 в BLFS. Чтобы запустить тесты, выполните - команду make test. -

-

- Установите пакет: -

-
make install
-

- В некоторых местах книги, мы используем команду pip3 для установки программ и - модулей Python 3 от имени пользователя root. Это противоречит рекомендации - разработчиков Python: устанавливать пакеты в виртуальную среду или - домашний каталог обычного пользователя (путем запуска pip3 от имени этого - пользователя). Поэтому всякий раз при использовании pip3 от имени пользователя - root появляется многострочное - предупреждение. -

-

- Основная причина этой рекомендации — избежать конфликта с системным - менеджером пакетов (например, dpkg), но в LFS нет - общесистемного менеджера пакетов, так что это не проблема. Кроме - того, pip3 будет - пытаться проверять наличие новой версии при каждом запуске. - Поскольку разрешение доменных имен в среде chroot LFS еще не - настроено, он не сможет проверить наличие новой версии и выдаст - предупреждение. -

-

- Как только мы загрузим систему LFS и настроим сетевое подключение, - pip3 выдаст - предупреждение, сообщающее пользователю о необходимости обновить - его с помощью предварительно собранного whl-файла в PyPI (всякий - раз, когда будет доступна новая версия). Но LFS считает - pip3 частью Python3, - поэтому его не следует обновлять отдельно. Кроме того, обновление - из whl-файла не соответствует цели проекта — собрать систему Linux - из исходного кода, поэтому предупреждение о новой версии - pip3 следует - игнорировать. По желанию, вы можете отключить все предупреждение, - создав следующий файл конфигурации: -

-
cat > /etc/pip.conf << EOF
-[global]
-root-user-action = ignore
-disable-pip-version-check = true
-EOF
-
-
- [Важно] -

- Важно -

-

- В LFS и BLFS мы собираем и устанавливаем модули Python с помощью - команды pip3. - Убедитесь, что команда pip3 - install в обеих книгах запускаются от имени - пользователя root (если только - она не для виртуальной среды Python). Запуск pip3 install от имени - пользователя без полномочий root - может показаться нормальным, но это приведет к тому, что - установленный модуль будет недоступен для других пользователей. -

-

- Команда pip3 - install по умолчанию не приведёт к автоматической - переустановке уже установленного модуля. Чтобы использовать - команду pip3 - install для обновления модуля (например, с - meson-0.61.3 до meson-0.62.0), добавьте параметр --upgrade в командную строку. Если - по какой-то причине необходимо понизить версию модуля или - переустановить ту же версию, используйте параметр --force-reinstall --no-deps. -

-
-

- По желанию установите предварительно отформатированную - документацию: -

-
install -v -dm755 /usr/share/doc/python-3.11.4/html
-
-tar --strip-components=1  \
-    --no-same-owner       \
-    --no-same-permissions \
-    -C /usr/share/doc/python-3.11.4/html \
-    -xvf ../python-3.11.4-docs-html.tar.bz2
-
-

- Значение команд установки документации: -

-
-
- --no-same-owner - и --no-same-permissions -
-
-

- Проверяет, что установленные файлы имеют корректные права и - владельца файлов. Использование tar без этих параметров приведет к - установке файлов с правами пользователя создавшего пакет. -

-
-
-
-
-
-

- 8.51.2. - Содержимое пакета Python 3 -

-
-
-
- Установленные программы: - 2to3, idle3, pip3, pydoc3, python3 и - python3-config -
-
- Установленные библиотеки: - libpython3.11.so и libpython3.so -
-
- Созданные каталоги: - /usr/include/python3.11, /usr/lib/python3 - и /usr/share/doc/python-3.11.4 -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

- 2to3 -

-
-

- программа на Python, - которая читает файлы написанные на Python 2.x, применяет к ним серию - изменений и переводит их в валидный код Python 3.x. -

-
-

- idle3 -

-
-

- скрипт-обертка, который открывает графический редактор с - поддержкой Python. Для - запуска этого скрипта, перед установкой Python необходимо - установить Tk, чтобы - модуль Tkinter Python был собран. -

-
-

- pip3 -

-
-

- Установщик пакетов для Python. Вы можете использовать pip - для установки пакетов из каталога PyPI (Python Package - Index) и других источников. -

-
-

- pydoc3 -

-
-

- инструмент документации Python -

-
-

- python3 -

-
-

- это интерпретатор для Python, интерпретируемый, - интерактивный, объектно-ориентированный язык - программирования -

-
-
-
-
- - - diff --git a/lfs-12.0-sysv/chapter08/aboutdebug.html b/lfs-12.0-sysv/chapter08/aboutdebug.html deleted file mode 100644 index 2a1cdd1..0000000 --- a/lfs-12.0-sysv/chapter08/aboutdebug.html +++ /dev/null @@ -1,136 +0,0 @@ - - - - - - 8.81. Об отладочных символах - - - - - - - - -
-

- 8.81. Об - отладочных символах -

-

- Большинство программ и библиотек по умолчанию компилируются с - отладочными символами (gcc с параметром -g). Это означает, что при отладке - программы или библиотеки, которые были скомпилированы с - использованием отладочной информации, отладчик может предоставить не - только адреса памяти, но и имена подпрограмм и переменных. -

-

- Включение отладочных символов значительно увеличивает размер - программы или библиотеки. Ниже приведена информация по объему - пространства, занимаемого отладочными символами: -

-
-
    -
  • -

    - Двоичный файл bash с отладочными символами: - 1200 KB -

    -
  • -
  • -

    - Двоичный файл bash без отладочных символов: - 480 KB (на 60% меньше) -

    -
  • -
  • -

    - Файлы Glibc и GCC (/lib и - /usr/lib) с отладочными - символами: 87 MB -

    -
  • -
  • -

    - Файлы Glibc и GCC без отладочных символов: 16 MB (на 82% - меньше) -

    -
  • -
-
-

- Размеры могут варьироваться в зависимости от используемого - компилятора и библиотеки Си, но программа, в которой были удалены - отладочные символы, обычно примерно на 50-80% меньше, чем ее аналог с - ними. Поскольку большинство пользователей никогда не будут - использовать отладчик в своем программном обеспечении, удаление - отладочных символов может освободить много места на диске. В - следующем разделе показано, как удалить все отладочные символы из - программ и библиотек. -

-
- - - diff --git a/lfs-12.0-sysv/chapter08/acl.html b/lfs-12.0-sysv/chapter08/acl.html deleted file mode 100644 index c3fafa5..0000000 --- a/lfs-12.0-sysv/chapter08/acl.html +++ /dev/null @@ -1,215 +0,0 @@ - - - - - - 8.23. Acl-2.3.1 - - - - - - - - -
-

- 8.23. Acl-2.3.1 -

-
-

- Пакет Acl содержит утилиты для администрирования списков контроля - доступа, которые используются для определения расширенных - дискреционных прав доступа к файлам и каталогам. -

-
-
-
- Приблизительное время сборки: - менее 0.1 SBU -
-
- Требуемое дисковое - пространство: 6.1 MB -
-
-
-
-
-

- 8.23.1. Установка пакета Acl -

-

- Подготовьте Acl к компиляции: -

-
./configure --prefix=/usr         \
-            --disable-static      \
-            --docdir=/usr/share/doc/acl-2.3.1
-

- Скомпилируйте пакет: -

-
make
-

- Тесты Acl необходимо запускать в файловой системе, поддерживающей - списки контроля доступа, после сборки пакета Coreutils с использованием библиотек Acl. По - желанию вернитесь к этому пакету и запустите make check после того, как будет - собран пакет Coreutils. -

-

- Установите пакет: -

-
make install
-
-
-

- 8.23.2. Содержимое - пакета Acl -

-
-
-
- Установленные программы: - chacl, getfacl, и setfacl -
-
- Установленные библиотеки: - libacl.so -
-
- Созданные каталоги: - /usr/include/acl и - /usr/share/doc/acl-2.3.1 -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - - - - - - - - - - - - - -
-

- chacl -

-
-

- Изменяет список контроля доступа файла или каталога -

-
-

- getfacl -

-
-

- Получает списки контроля доступа файла -

-
-

- setfacl -

-
-

- Устанавливает списки контроля доступа к файлам -

-
-

- libacl -

-
-

- Содержит библиотечные функции для управления списками - контроля доступа. -

-
-
-
-
- - - diff --git a/lfs-12.0-sysv/chapter08/attr.html b/lfs-12.0-sysv/chapter08/attr.html deleted file mode 100644 index fe73baf..0000000 --- a/lfs-12.0-sysv/chapter08/attr.html +++ /dev/null @@ -1,214 +0,0 @@ - - - - - - 8.22. Attr-2.5.1 - - - - - - - - -
-

- 8.22. Attr-2.5.1 -

-
-

- Пакет Attr содержит утилиты для управления расширенными атрибутами - объектов файловой системы. -

-
-
-
- Приблизительное время сборки: - менее 0.1 SBU -
-
- Требуемое дисковое - пространство: 4.1 MB -
-
-
-
-
-

- 8.22.1. Установка пакета Attr -

-

- Подготовьте Attr к компиляции: -

-
./configure --prefix=/usr     \
-            --disable-static  \
-            --sysconfdir=/etc \
-            --docdir=/usr/share/doc/attr-2.5.1
-

- Скомпилируйте пакет: -

-
make
-

- Тесты необходимо запускать в файловой системе, которая поддерживает - расширенные атрибуты, например, ext2, ext3 или ext4. Чтобы - протестировать пакет, выполните: -

-
make check
-

- Установите пакет: -

-
make install
-
-
-

- 8.22.2. Содержимое - пакета Attr -

-
-
-
- Установленные программы: - attr, getfattr, и setfattr -
-
- Установленные библиотеки: - libattr.so -
-
- Созданные каталоги: - /usr/include/attr и - /usr/share/doc/attr-2.5.1 -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - - - - - - - - - - - - - -
-

- attr -

-
-

- Расширяет атрибуты объектов файловой системы -

-
-

- getfattr -

-
-

- Получает расширенные атрибуты объектов файловой системы -

-
-

- setfattr -

-
-

- Устанавливает расширенные атрибуты объектов файловой - системы -

-
-

- libattr -

-
-

- Содержит библиотечные функции для управления расширенными - атрибутами. -

-
-
-
-
- - - diff --git a/lfs-12.0-sysv/chapter08/autoconf.html b/lfs-12.0-sysv/chapter08/autoconf.html deleted file mode 100644 index f346be4..0000000 --- a/lfs-12.0-sysv/chapter08/autoconf.html +++ /dev/null @@ -1,310 +0,0 @@ - - - - - - 8.45. Autoconf-2.71 - - - - - - - - -
-

- 8.45. - Autoconf-2.71 -

-
-

- Пакет Autoconf содержит программы для создания сценариев оболочки, - которые могут автоматически настраивать исходный код. -

-
-
-
- Приблизительное время сборки: - менее 0.1 SBU (около 6.0 SBU с - тестами) -
-
- Требуемое дисковое - пространство: 24 MB -
-
-
-
-
-

- 8.45.1. Установка пакета Autoconf -

-

- Во-первых, исправьте несколько проблем с тестами, обнаруженными в - bash-5.2 и более поздних версиях: -

-
sed -e 's/SECONDS|/&SHLVL|/'               \
-    -e '/BASH_ARGV=/a\        /^SHLVL=/ d' \
-    -i.orig tests/local.at
-

- Подготовьте Autoconf к компиляции: -

-
./configure --prefix=/usr
-

- Скомпилируйте пакет: -

-
make
-

- Чтобы протестировать пакет, выполните: -

-
make check
-
- [Примечание] -

- Примечание -

-

- Время тестирования autoconf можно значительно сократить на - многоядерных системах. Для этого добавьте TESTSUITEFLAGS=-j<N> к - строке выше. Использование аргумента -j4 может сократить время - тестирования более чем на 60 процентов. -

-
-

- Установите пакет: -

-
make install
-
-
-

- 8.45.2. - Содержимое пакета Autoconf -

-
-
-
- Установленные программы: - autoconf, autoheader, autom4te, - autoreconf, autoscan, autoupdate, и ifnames -
-
- Созданные каталоги: - /usr/share/autoconf -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

- autoconf -

-
-

- Генерирует сценарии оболочки, которые автоматически - настраивают пакеты исходного кода программного - обеспечения для адаптации ко многим типам Unix-подобных - систем; создаваемые сценарии независимы—для их запуска не - требуется программа autoconf. -

-
-

- autoheader -

-
-

- Инструмент для создания файлов шаблонов операторов C - #define для - использования в configure -

-
-

- autom4te -

-
-

- Обертка для макропроцессора M4 -

-
-

- autoreconf -

-
-

- Автоматически запускает autoconf, autoheader, - aclocal, - automake, - gettextize - и libtoolize в правильном - порядке, чтобы сэкономить время, при внесении изменений в - файлы шаблонов autoconf и automake. -

-
-

- autoscan -

-
-

- Помогает создать файл configure.in для пакета программного - обеспечения; проверяет исходные файлы в дереве каталогов, - ищет в них распространенные проблемы с переносимостью и - создает файл configure.scan, который является - предварительным для configure.in. -

-
-

- autoupdate -

-
-

- Изменяет файл configure.in, - вызывающий макросы autoconf по их старым - именам для использования текущих имен макросов -

-
-

- ifnames -

-
-

- Помогает при написании файла configure.in для пакета; выводит - идентификаторы, которые использует пакет в условных - выражениях препроцессора C. (Если пакет уже был настроен - для некоторой переносимости, эта программа может помочь - определить, что нужно проверить сценарию configure. Он также - может заполнить пробелы в файле configure.in, сгенерированном командой - autoscan.) -

-
-
-
-
- - - diff --git a/lfs-12.0-sysv/chapter08/automake.html b/lfs-12.0-sysv/chapter08/automake.html deleted file mode 100644 index 58fe7b9..0000000 --- a/lfs-12.0-sysv/chapter08/automake.html +++ /dev/null @@ -1,231 +0,0 @@ - - - - - - 8.46. Automake-1.16.5 - - - - - - - - -
-

- 8.46. - Automake-1.16.5 -

-
-

- Пакет Automake содержит программы генерации Makefile для - использования с Autoconf. -

-
-
-
- Приблизительное время сборки: - менее 0.1 SBU (около 7.0 SBU с - тестами) -
-
- Требуемое дисковое - пространство: 114 MB -
-
-
-
-
-

- 8.46.1. Установка пакета Automake -

-

- Подготовьте Automake к компиляции: -

-
./configure --prefix=/usr --docdir=/usr/share/doc/automake-1.16.5
-

- Скомпилируйте пакет: -

-
make
-

- Использование опции make -j4 ускоряет тесты даже в системах с одним - процессором из-за внутренних задержек в отдельных тестах. Чтобы - протестировать пакет, выполните: -

-
make -j4 check
-

- Известно, что тест t/subobj.sh не проходит. -

-

- Установите пакет: -

-
make install
-
-
-

- 8.46.2. - Содержимое пакета Automake -

-
-
-
- Установленные программы: - aclocal, aclocal-1.16 (жестко связан с - aclocal), automake, и automake-1.16 (жестко связан с - automake) -
-
- Созданные каталоги: - /usr/share/aclocal-1.16, - /usr/share/automake-1.16, и - /usr/share/doc/automake-1.16.5 -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - - - - - - - - - - - - - -
-

- aclocal -

-
-

- Генерирует файлы aclocal.m4 - на основе содержимого файла configure.in -

-
-

- aclocal-1.16 -

-
-

- Жесткая ссылка на aclocal -

-
-

- automake -

-
-

- Инструмент для автоматического создания Makefile.in из файлов Makefile.am [Чтобы создать все файлы - Makefile.in запустите эту - программу в каталоге верхнего уровня. Сканируя файл - configure.in, он - автоматически находит все подходящие файлы Makefile.am и создает соответствующий - Makefile.in.] -

-
-

- automake-1.16 -

-
-

- Жесткая ссылка на automake -

-
-
-
-
- - - diff --git a/lfs-12.0-sysv/chapter08/bash.html b/lfs-12.0-sysv/chapter08/bash.html deleted file mode 100644 index 6a67454..0000000 --- a/lfs-12.0-sysv/chapter08/bash.html +++ /dev/null @@ -1,265 +0,0 @@ - - - - - - 8.35. Bash-5.2.15 - - - - - - - - -
-

- 8.35. Bash-5.2.15 -

-
-

- Пакет Bash содержит Bourne-Again Shell. -

-
-
-
- Приблизительное время сборки: - 1.1 SBU -
-
- Требуемое дисковое - пространство: 52 MB -
-
-
-
-
-

- 8.35.1. Установка пакета Bash -

-

- Подготовьте Bash к компиляции: -

-
./configure --prefix=/usr             \
-            --without-bash-malloc     \
-            --with-installed-readline \
-            --docdir=/usr/share/doc/bash-5.2.15
-
-

- Значение нового параметра настройки: -

-
-
- --with-installed-readline -
-
-

- Этот параметр указывает Bash использовать библиотеку - readline, которая уже - установлена в системе, а не собственную версию readline. -

-
-
-
-

- Скомпилируйте пакет: -

-
make
-

- Перейдите к разделу «Установка пакета», если не планируете - запускать тесты. -

-

- Перед запуском тестов, убедитесь, что пользователь tester может писать в каталог с исходниками: -

-
chown -Rv tester .
-

- Набор тестов пакета предназначен для запуска пользователем без - полномочий root, которому принадлежит терминал, подключенный к - стандартному вводу. Чтобы удовлетворить это требование, создайте - новый псевдотерминал с помощью Expect и запустите тесты от имени пользователя - tester: -

-
su -s /usr/bin/expect tester << EOF
-set timeout -1
-spawn make tests
-expect eof
-lassign [wait] _ _ _ value
-exit $value
-EOF
-

- Набор тестов использует diff для определения разницы - между выводом тестового сценария и ожидаемым результатом. Любой - вывод diff (с - префиксом < и >) указывает на сбой теста, если нет - сообщение о том, что различия можно проигнорировать. Известно, что - один тест с именем run-builtins не - работает на некоторых хост-дистрибутивах, указывая на различия в - первой строке выходных данных. -

-

- Установите пакет: -

-
make install
-

- Запустите только что скомпилированную программу bash (заменив ту, которая - выполняется в данный момент): -

-
exec /usr/bin/bash --login
-
-
-

- 8.35.2. Содержимое - пакета Bash -

-
-
-
- Установленные программы: - bash, bashbug и sh (ссылка на - bash) -
-
- Созданные каталоги: - /usr/include/bash, /usr/lib/bash, and - /usr/share/doc/bash-5.2.15 -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - - - - - - - - - -
-

- bash -

-
-

- Широко распространенный командный интерпретатор. - Выполняет различные дополнения и подстановки в переданной - командной строке перед её выполнением, что делает этот - интерпретатор мощным инструментом -

-
-

- bashbug -

-
-

- Скрипт, помогающий пользователю составлять и отправлять - по почте отчеты об ошибках bash -

-
-

- sh -

-
-

- Симлинк на программу bash; при вызове - sh, - bash - пытается максимально точно имитировать поведение - sh, при - этом также соответствуя стандарту POSIX. -

-
-
-
-
- - - diff --git a/lfs-12.0-sysv/chapter08/bc.html b/lfs-12.0-sysv/chapter08/bc.html deleted file mode 100644 index 429ce7d..0000000 --- a/lfs-12.0-sysv/chapter08/bc.html +++ /dev/null @@ -1,214 +0,0 @@ - - - - - - 8.13. Bc-6.6.0 - - - - - - - - -
-

- 8.13. Bc-6.6.0 -

-
-

- Пакет Bc содержит язык для обработки чисел произвольной точности. -

-
-
-
- Приблизительное время сборки: - менее 0.1 SBU -
-
- Требуемое дисковое - пространство: 7.7 MB -
-
-
-
-
-

- 8.13.1. Установка пакета Bc -

-

- Подготовьте Bc к компиляции: -

-
CC=gcc ./configure --prefix=/usr -G -O3 -r
-
-

- Значение параметров настройки: -

-
-
- CC=gcc -
-
-

- Этот параметр определяет используемый компилятор -

-
-
- -G -
-
-

- Пропускает часть тестов, которые не будут работать, пока не - будет установлена программа bc. -

-
-
- -O3 -
-
-

- Указывает используемый уровень оптимизации. -

-
-
- -r -
-
-

- Включает использование Readline для улучшения функции - редактирования строк в bc. -

-
-
-
-

- Скомпилируйте пакет: -

-
make
-

- Чтобы протестировать bc, запустите: -

-
make test
-

- Установите пакет: -

-
make install
-
-
-

- 8.13.2. Содержимое - пакета Bc -

-
-
-
- Установленные программы: - bc и dc -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - - - - - -
-

- bc -

-
-

- Калькулятор командной строки -

-
-

- dc -

-
-

- Калькулятор командной строки с обратной польской нотацией -

-
-
-
-
- - - diff --git a/lfs-12.0-sysv/chapter08/binutils.html b/lfs-12.0-sysv/chapter08/binutils.html deleted file mode 100644 index 7248a33..0000000 --- a/lfs-12.0-sysv/chapter08/binutils.html +++ /dev/null @@ -1,656 +0,0 @@ - - - - - - 8.18. Binutils-2.41 - - - - - - - - -
-

- 8.18. - Binutils-2.41 -

-
-

- Пакет Binutils содержит компоновщик, ассемблер и другие инструменты - для работы с объектными файлами. -

-
-
-
- Приблизительное время сборки: - 2.2 SBU -
-
- Требуемое дисковое - пространство: 2.7 GB -
-
-
-
-
-

- 8.18.1. Установка пакета Binutils -

-

- Документация Binutils рекомендует выполнять компиляцию в отдельном - каталоге: -

-
mkdir -v build
-cd       build
-

- Подготовьте Binutils к компиляции: -

-
../configure --prefix=/usr       \
-             --sysconfdir=/etc   \
-             --enable-gold       \
-             --enable-ld=default \
-             --enable-plugins    \
-             --enable-shared     \
-             --disable-werror    \
-             --enable-64-bit-bfd \
-             --with-system-zlib
-
-

- Значение параметров настройки: -

-
-
- --enable-gold -
-
-

- Собирает компоновщик gold и устанавливает его как ld.gold - (вместе с компоновщиком по умолчанию). -

-
-
- --enable-ld=default -
-
-

- Собирает оригинальный компоновщик bfd и устанавливает его как - ld (компоновщик по умолчанию) и как ld.bfd -

-
-
- --enable-plugins -
-
-

- Включает поддержку плагинов для компоновщика. -

-
-
- --enable-64-bit-bfd -
-
-

- Включает 64-разрядную поддержку (на хостах с ограниченным - размерам слов). Может не понадобится в 64-разрядных системах, - но вреда от этого не будет. -

-
-
- --with-system-zlib -
-
-

- Использовать установленную библиотеку zlib вместо сборки - собственной. -

-
-
-
-

- Скомпилируйте пакет: -

-
make tooldir=/usr
-
-

- Значение параметра make: -

-
-
- tooldir=/usr -
-
-

- Обычно для tooldir (каталога, в котором будут расположены - исполняемые файлы) установлено значение $(exec_prefix)/$(target_alias). Например, - машины x86_64 преобразуют это значение в /usr/x86_64-unknown-linux-gnu. Поскольку - это пользовательская система, то целевой каталог в - /usr не требуется. Параметр - $(exec_prefix)/$(target_alias) - использовался, если бы система применялась для - кросс-компиляции (например, при компиляции пакета на - компьютере Intel, который генерирует код, который может быть - выполнен на компьютерах PowerPC). -

-
-
-
-
- [Важно] -

- Важно -

-

- Набор тестов для Binutils в этом разделе считается критически - важным. Ни в коем случае не пропускайте его. -

-
-

- Выполните тестирование: -

-
make -k check
-

- Чтобы получить список неудачных тестов, запустите: -

-
grep '^FAIL:' $(find -name '*.log')
-

- Двенадцать тестов завершаются неудачно в наборе тестов gold, когда - GCC собирается с параметрами --enable-default-pie и --enable-default-ssp. -

-

- Также известно, что завершаются неудачно три теста в пакете - gprofng. -

-

- Установите пакет: -

-
make tooldir=/usr install
-

- Удалите бесполезные статические библиотеки: -

-
rm -fv /usr/lib/lib{bfd,ctf,ctf-nobfd,gprofng,opcodes,sframe}.a
-
-
-

- 8.18.2. - Содержимое пакета Binutils -

-
-
-
- Установленные программы: - addr2line, ar, as, c++filt, dwp, elfedit, - gprof, gprofng, ld, ld.bfd, ld.gold, nm, objcopy, objdump, - ranlib, readelf, size, strings и strip -
-
- Установленные библиотеки: - libbfd.so, libctf.so, libctf-nobfd.so, - libgprofng.so, libopcodes.so и libsframe.so -
-
- Созданные каталоги: - /usr/lib/ldscripts -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

- addr2line -

-
-

- Переводит адреса программ в имена файлов и номера строк; - учитывая адрес и имя исполняемого файла, использует - отладочную информацию в исполняемом файле, для - определения файла исходного кода и номера строки, - ассоциированной с адресом -

-
-

- ar -

-
-

- Создаёт, изменяет и распаковывает архивы -

-
-

- as -

-
-

- Ассемблер, который собирает результат работы gcc в объектные файлы -

-
-

- c++filt -

-
-

- Используется компоновщиком для исправления символов C++ и - Java и предотвращения конфликтов перегруженных функций. -

-
-

- dwp -

-
-

- Утилита для упаковки DWARF -

-
-

- elfedit -

-
-

- Обновляет ELF заголовки в ELF файлах -

-
-

- gprof -

-
-

- Отображает в графическом виде информацию о профилировании -

-
-

- gprofng -

-
-

- Собирает и анализирует данные о производительности -

-
-

- ld -

-
-

- Компоновщик, который объединяет несколько объектных и - архивных файлов в один файл, перемещая их данные и - связывая символическими ссылками -

-
-

- ld.gold -

-
-

- Урезанная версия ld, которая поддерживает только формат - объектных файлов elf -

-
-

- ld.bfd -

-
-

- Жесткая ссылка на ld -

-
-

- nm -

-
-

- Выводит список символов, используемых в данном объектном - файле -

-
-

- objcopy -

-
-

- Преобразует один тип объектного файла в другой -

-
-

- objdump -

-
-

- Отображает информацию о данном объектном файле; можно - указать параметры, определяющие, какая конкретно - информация будет отображаться. Отображаемая информация - полезна для программистов, которые работают над - инструментами, используемыми при компиляции -

-
-

- ranlib -

-
-

- Создает индекс содержимого архива и сохраняет его в - архиве; в индексе перечислены все символы, определенные в - перемещаемых объектных файлах, содержащихся в архиве -

-
-

- readelf -

-
-

- Отображает информацию о двоичных файлах типа ELF -

-
-

- size -

-
-

- Отображает размеры секций и общий размер указанных - объектных файлов -

-
-

- strings -

-
-

- Выводит для каждого указанного файла последовательности - печатаемых символов, которые имеют по крайней мере - указанную длину (по умолчанию четыре); для объектных - файлов по умолчанию печатаются только строки из секций - инициализации и загрузки, в то время как для других - файлов он сканирует весь файл. -

-
-

- strip -

-
-

- Удаляет символы из объектных файлов -

-
-

- libbfd -

-
-

- Библиотека дескрипторов двоичных файлов -

-
-

- libctf -

-
-

- Библиотека отладки формата Compat ANSI-C Type -

-
-

- libctf-nobfd -

-
-

- Вариант libctf, не использующий функциональность libbfd. -

-
-

- libgprofng -

-
-

- Библиотека, содержащая большинство подпрограмм, - используемых gprofng -

-
-

- libopcodes -

-
-

- Библиотека для работы с опкодами—«читаемыми» - версиями инструкций для процессора. Используется для - сборки таких утилит как objdump -

-
-

- libsframe -

-
-

- Библиотека для поддержки обратной онлайн-трассировки с - использованием простого декодера разделов .sframe. -

-
-
-
-
- - - diff --git a/lfs-12.0-sysv/chapter08/bison.html b/lfs-12.0-sysv/chapter08/bison.html deleted file mode 100644 index cab98f5..0000000 --- a/lfs-12.0-sysv/chapter08/bison.html +++ /dev/null @@ -1,203 +0,0 @@ - - - - - - 8.33. Bison-3.8.2 - - - - - - - - -
-

- 8.33. Bison-3.8.2 -

-
-

- Пакет Bison содержит генератор синтаксического анализа. -

-
-
-
- Приблизительное время сборки: - 2.2 SBU -
-
- Требуемое дисковое - пространство: 62 MB -
-
-
-
-
-

- 8.33.1. Установка пакета Bison -

-

- Подготовьте Bison к компиляции: -

-
./configure --prefix=/usr --docdir=/usr/share/doc/bison-3.8.2
-

- Скомпилируйте пакет: -

-
make
-

- Для тестирования пакета (около 5,5 SBU), выполните: -

-
make check
-

- Установите пакет: -

-
make install
-
-
-

- 8.33.2. Содержимое - пакета Bison -

-
-
-
- Установленные программы: - bison и yacc -
-
- Установленные библиотеки: - liby.a -
-
- Созданные каталоги: - /usr/share/bison -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - - - - - - - - - -
-

- bison -

-
-

- Генерирует из набора правил программу для анализа - структуры текстовых файлов; Bison является заменой Yacc - (Yet Another Compiler Compiler) -

-
-

- yacc -

-
-

- Обертка для bison, предназначенная - для программ, которые до сих пор вызывают yacc вместо - bison; он - вызывает bison с параметром - -y -

-
-

- liby -

-
-

- Библиотека Yacc, содержащая реализации Yacc-совместимых - функций yyerror и - main; обычно эта библиотека - не очень нужна, но требуется POSIX -

-
-
-
-
- - - diff --git a/lfs-12.0-sysv/chapter08/bzip2.html b/lfs-12.0-sysv/chapter08/bzip2.html deleted file mode 100644 index f9f84a5..0000000 --- a/lfs-12.0-sysv/chapter08/bzip2.html +++ /dev/null @@ -1,394 +0,0 @@ - - - - - - 8.7. Bzip2-1.0.8 - - - - - - - - -
-

- 8.7. Bzip2-1.0.8 -

-
-

- Пакет Bzip2 содержит программы для сжатия и распаковки файлов. - Сжатие текстовых файлов с помощью bzip2 даёт больший процент - сжатия, чем традиционный gzip. -

-
-
-
- Приблизительное время сборки: - менее 0.1 SBU -
-
- Требуемое дисковое - пространство: 7.2 MB -
-
-
-
-
-

- 8.7.1. Установка пакета Bzip2 -

-

- Примените патч, который установит документацию для этого пакета: -

-
patch -Np1 -i ../bzip2-1.0.8-install_docs-1.patch
-

- Следующая команда гарантирует установку символических ссылок с - относительным путём: -

-
sed -i 's@\(ln -s -f \)$(PREFIX)/bin/@\1@' Makefile
-

- Убедитесь, что справочные страницы установлены в правильном месте: -

-
sed -i "s@(PREFIX)/man@(PREFIX)/share/man@g" Makefile
-

- Подготовьте Bzip2 к компиляции: -

-
make -f Makefile-libbz2_so
-make clean
-
-

- Значение параметра make: -

-
-
- -f - Makefile-libbz2_so -
-
-

- Этот параметр позволяет выполнить сборку, с использованием - другого Makefile, в данном - случае Makefile-libbz2_so, - который создает динамическую библиотеку libbz2.so и связывает с ней Bzip2. -

-
-
-
-

- Скомпилируйте и протестируйте пакет: -

-
make
-

- Установите пакет: -

-
make PREFIX=/usr install
-

- Установите библиотеку: -

-
cp -av libbz2.so.* /usr/lib
-ln -sv libbz2.so.1.0.8 /usr/lib/libbz2.so
-

- Установите общий бинарный файл bzip2 в каталог /usr/bin, и замените две копии bzip2 символическими ссылками: -

-
cp -v bzip2-shared /usr/bin/bzip2
-for i in /usr/bin/{bzcat,bunzip2}; do
-  ln -sfv bzip2 $i
-done
-

- Удалите ненужную статическую библиотеку: -

-
rm -fv /usr/lib/libbz2.a
-
-
-

- 8.7.2. Содержимое - пакета Bzip2 -

-
-
-
- Установленные программы: - bunzip2 (ссылка на bzip2), bzcat (ссылка - на bzip2), bzcmp (ссылка на bzdiff), bzdiff, bzegrep (ссылка на - bzgrep), bzfgrep (ссылка на bzgrep), bzgrep, bzip2, - bzip2recover, bzless (ссылка на bzmore) и bzmore -
-
- Установленные библиотеки: - libbz2.so -
-
- Созданные каталоги: - /usr/share/doc/bzip2-1.0.8 -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

- bunzip2 -

-
-

- Распаковывает bzip-файлы -

-
-

- bzcat -

-
-

- Распаковывает в поток стандартного вывода -

-
-

- bzcmp -

-
-

- Запускает программу cmp для bzip файлов -

-
-

- bzdiff -

-
-

- Запускает программу diff для bzip файлов -

-
-

- bzegrep -

-
-

- Запускает программу egrep для bzip файлов -

-
-

- bzfgrep -

-
-

- Запускает программу fgrep для bzip файлов -

-
-

- bzgrep -

-
-

- Запускает программу grep для bzip файлов -

-
-

- bzip2 -

-
-

- Сжимает файлы, используя алгоритм сжатия текста с блочной - сортировкой Барроуза — Уилера и кодирование Хафмана; - степень сжатия лучше, чем у более традиционных - архиваторов, использующих алгоритмы «Lempel-Ziv», - например gzip -

-
-

- bzip2recover -

-
-

- Пытается восстанавливать данные из поврежденных архивов -

-
-

- bzless -

-
-

- Запускает программу less для bzip файлов -

-
-

- bzmore -

-
-

- Запускает программу more для bzip файлов -

-
-

- libbz2 -

-
-

- Библиотека, реализующая сжатие данных без потерь с - использованием алгоритма Барроуза-Уилера. -

-
-
-
-
- - - diff --git a/lfs-12.0-sysv/chapter08/chapter08.html b/lfs-12.0-sysv/chapter08/chapter08.html deleted file mode 100644 index 0783d75..0000000 --- a/lfs-12.0-sysv/chapter08/chapter08.html +++ /dev/null @@ -1,337 +0,0 @@ - - - - - - Глава 8. Установка базового системного программного обеспечения - - - - - - - - -
-

- 8. - Установка базового системного программного обеспечения -

-
-

- Содержание -

- -
-
- - - diff --git a/lfs-12.0-sysv/chapter08/check.html b/lfs-12.0-sysv/chapter08/check.html deleted file mode 100644 index eb4705d..0000000 --- a/lfs-12.0-sysv/chapter08/check.html +++ /dev/null @@ -1,180 +0,0 @@ - - - - - - 8.57. Check-0.15.2 - - - - - - - - -
-

- 8.57. Check-0.15.2 -

-
-

- Check - это фреймворк модульного тестирования для языка C. -

-
-
-
- Приблизительное время сборки: - 0.1 SBU (около 1.6 SBU с тестами) -
-
- Требуемое дисковое - пространство: 12 MB -
-
-
-
-
-

- 8.57.1. Установка пакета Check -

-

- Подготовить Check к компиляции: -

-
./configure --prefix=/usr --disable-static
-

- Соберите пакет: -

-
make
-

- Когда компиляция будет завершена, запустите набор тестов: -

-
make check
-

- Установите пакет: -

-
make docdir=/usr/share/doc/check-0.15.2 install
-
-
-

- 8.57.2. Содержимое - пакета Check -

-
-
-
- Установленные программы: - checkmk -
-
- Установленные библиотеки: - libcheck.so -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - - - - - -
-

- checkmk -

-
-

- Сценарий Awk для генерации unit-тестов C, для - использования с платформой модульного тестирования Check. -

-
-

- libcheck.so -

-
-

- Содержит функции, позволяющие вызывать Check из программы - тестирования. -

-
-
-
-
- - - diff --git a/lfs-12.0-sysv/chapter08/cleanup.html b/lfs-12.0-sysv/chapter08/cleanup.html deleted file mode 100644 index 483de0c..0000000 --- a/lfs-12.0-sysv/chapter08/cleanup.html +++ /dev/null @@ -1,119 +0,0 @@ - - - - - - 8.83. Очистка - - - - - - - - -
-

- 8.83. Очистка -

-

- Наконец, удалите некоторые лишние файлы, оставшиеся после запуска - тестов: -

-
rm -rf /tmp/*
-

- Также в каталогах /usr/lib и /usr/libexec также есть несколько файлов - с расширением .la. Это файлы «архива libtool». Как было сказано ранее, в - современной системе Linux файлы .la libtool необходимы только для - libltdl. Предполагается, что libltdl не будет загружать библиотеки в - LFS, кроме этого известно, что некоторые файлы .la могут нарушить - сборку пакетов BLFS. Удалите эти файлы сейчас: -

-
find /usr/lib /usr/libexec -name \*.la -delete
-

- Дополнительные сведения об архивных файлах libtool см. в разделе BLFS - - "О файлах архива Libtool (.la)". -

-

- Компилятор, собранный в Глава 6 и - - Глава 7 все еще установлен, но больше не нужен. Удалите его - с помощью команды: -

-
find /usr -depth -name $(uname -m)-lfs-linux-gnu\* | xargs rm -rf
-

- Наконец, удалите временную учетную запись пользователя 'tester', - созданную в начале предыдущей главы. -

-
userdel -r tester
-
- - - diff --git a/lfs-12.0-sysv/chapter08/coreutils.html b/lfs-12.0-sysv/chapter08/coreutils.html deleted file mode 100644 index ec3deef..0000000 --- a/lfs-12.0-sysv/chapter08/coreutils.html +++ /dev/null @@ -1,1792 +0,0 @@ - - - - - - 8.56. Coreutils-9.3 - - - - - - - - -
-

- 8.56. - Coreutils-9.3 -

-
-

- Пакет Coreutils содержит основные утилиты, необходимые каждой - операционной системе. -

-
-
-
- Приблизительное время сборки: - 0.9 SBU -
-
- Требуемое дисковое - пространство: 165 MB -
-
-
-
-
-

- 8.56.1. Установка пакета Coreutils -

-

- Стандарт POSIX требует, чтобы программы пакета Coreutils правильно - распознавали символы даже в случае, если используются многобайтовые - локали. Следующий патч исправляет несоответствие этому требованию, - а также другие ошибки, касающиеся интернационализации: -

-
patch -Np1 -i ../coreutils-9.3-i18n-1.patch
-
- [Примечание] -

- Примечание -

-

- В этом патче было обнаружено много ошибок. Сообщая о новых - ошибках разработчикам Coreutils, сначала проверьте, - воспроизводятся ли эти ошибки без этого исправления. -

-
-

- Теперь подготовьте Coreutils к компиляции: -

-
autoreconf -fiv
-FORCE_UNSAFE_CONFIGURE=1 ./configure \
-            --prefix=/usr            \
-            --enable-no-install-program=kill,uptime
-
-

- Значение параметров настройки: -

-
-
- autoreconf -
-
-

- Патч для интернационализации изменил систему сборки пакета, - поэтому файлы конфигурации необходимо сгенерировать заново. -

-
-
- FORCE_UNSAFE_CONFIGURE=1 -
-
-

- Эта переменная среды позволяет собрать пакет от имени - пользователя root. -

-
-
- --enable-no-install-program=kill,uptime -
-
-

- Назначение этого параметра — запретить Coreutils - устанавливать программы, которые будут установлены другими - пакетами. -

-
-
-
-

- Скомпилируйте пакет: -

-
make
-

- Если вы не планируете запускать набор тестов, перейдите к разделу - «Установка - пакета». -

-

- Теперь набор тестов готов к запуску. Сначала запустите тесты, - предназначенные для запуска от имени пользователя root: -

-
make NON_ROOT_USERNAME=tester check-root
-

- Мы собираемся выполнить остальные тесты от имени пользователя - tester. Некоторые тесты требуют, - чтобы пользователь был членом более чем одной группы. Чтобы эти - тесты не были пропущены, добавьте временную группу и включите в неё - пользователя tester: -

-
groupadd -g 102 dummy -U tester
-

- Исправьте некоторые разрешения, чтобы пользователь без полномочий - root мог компилировать и запускать - тесты: -

-
chown -Rv tester . 
-

- Теперь запустите тесты: -

-
su tester -c "PATH=$PATH make RUN_EXPENSIVE_TESTS=yes check"
-

- Тест test-getlogin может завершиться ошибкой в среде chroot LFS. -

-

- Удалить временную группу: -

-
groupdel dummy
-

- Установите пакет: -

-
make install
-

- Переместите программы туда, где они должны быть в соответствие со - спецификациями FHS: -

-
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"/' /usr/share/man/man8/chroot.8
-
-
-

- 8.56.2. - Содержимое пакета Coreutils -

-
-
-
- Установленные программы: - [, b2sum, base32, base64, basename, - basenc, 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 и - yes -
-
- Установленные библиотеки: - libstdbuf.so (in - /usr/libexec/coreutils) -
-
- Созданные каталоги: - /usr/libexec/coreutils -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

- [ -

-
-

- Это команда /usr/bin/[, которая является синонимом - команды test -

-
-

- base32 -

-
-

- Кодирует и декодирует данные в соответствии со - спецификацией base32 (RFC 4648) -

-
-

- base64 -

-
-

- Кодирует и декодирует данные в соответствии со - спецификацией base64 (RFC 4648) -

-
-

- b2sum -

-
-

- Выводит или проверяет контрольные суммы BLAKE2 - (512-битные) -

-
-

- basename -

-
-

- Удаляет любой путь и заданный суффикс из имени файла -

-
-

- basenc -

-
-

- Кодирует или декодирует данные с использованием различных - алгоритмов -

-
-

- cat -

-
-

- Присоединяет файлы к стандартному выходному потоку -

-
-

- chcon -

-
-

- Изменяет контекст безопасности для файлов и каталогов -

-
-

- chgrp -

-
-

- Изменяет владельцев группы для файлов и директорий -

-
-

- chmod -

-
-

- Изменяет разрешения каждого файла на заданный режим; - режим может быть либо символьным представлением вносимых - изменений, либо восьмеричным числом, представляющим новые - разрешения. -

-
-

- chown -

-
-

- Изменяет принадлежность файлов и директорий пользователю - и/или группе -

-
-

- chroot -

-
-

- Запускает команду с указанным каталогом в качестве - корневого каталога / -

-
-

- cksum -

-
-

- Выводит контрольную сумму Cyclic Redundancy Check (CRC) и - количество байтов для каждого указанного файла. -

-
-

- comm -

-
-

- Сравнивает два отсортированных файла, выводя в три - столбца уникальные и общие строки. -

-
-

- cp -

-
-

- Копирует файлы -

-
-

- csplit -

-
-

- Разбивает заданный файл на несколько новых файлов, - разделяя их в соответствии с заданными шаблонами или - номерами строк и выводя количество байтов для каждого - нового файла. -

-
-

- cut -

-
-

- Выдает участки строк, выбирая части в соответствии с - заданными полями или позициями -

-
-

- date -

-
-

- Отображает текущее дату и время в заданном формате или - устанавливает системные дату и время -

-
-

- dd -

-
-

- Копирует файл, используя заданный размер блока и - количество, при необходимости выполняя преобразования на - нем. -

-
-

- df -

-
-

- Сообщает объем доступного (и используемого) дискового - пространства во всех смонтированных файловых системах или - только в файловых системах, содержащих выбранные файлы. -

-
-

- dir -

-
-

- Выводит содержимое заданного каталога (так же, как - команда ls) -

-
-

- dircolors -

-
-

- Выводит команды для установки переменной среды - LS_COLOR для изменения - цветовой схемы, используемой ls. -

-
-

- dirname -

-
-

- Извлекает часть(части) каталога из заданного(заданных) - имени(имён) -

-
-

- du -

-
-

- Сообщает объем дискового пространства, используемого - текущим каталогом, каждым из заданных каталогов (включая - все подкаталоги) или каждым из заданных файлов. -

-
-

- echo -

-
-

- Отображает указанные строки -

-
-

- env -

-
-

- Запускает команду в модифицированной среде окружения -

-
-

- expand -

-
-

- Конвертирует символы табуляции в пробелы -

-
-

- expr -

-
-

- Вычисляет выражения -

-
-

- factor -

-
-

- Выводит простые множители указанных целых чисел -

-
-

- false -

-
-

- Ничего не делает, указывает на неудачу; всегда - завершается с кодом состояния, указывающим на сбой -

-
-

- fmt -

-
-

- Форматирует абзацы в указанных файлах -

-
-

- fold -

-
-

- Выполняет перенос строк в указанных файлах -

-
-

- groups -

-
-

- Сообщает о принадлежности пользователя к группам -

-
-

- head -

-
-

- Выводит первые десять строк (или заданное количество - строк) каждого заданного файла. -

-
-

- hostid -

-
-

- Выводит числовой идентификатор хоста (в шестнадцатеричном - формате) -

-
-

- id -

-
-

- Выводит действующий идентификатор пользователя, - идентификатор группы и принадлежность к группам для - текущего или для указанного пользователя -

-
-

- install -

-
-

- Копирует файлы, одновременно устанавливая для них права - доступа, и, если возможно, устанавливая для них владельца - и группу -

-
-

- join -

-
-

- Объединяет строки, которые имеют идентичные объединяемые - поля в двух различных файлах -

-
-

- link -

-
-

- Создает жесткую ссылку (с указанным именем) на файл -

-
-

- ln -

-
-

- Создает жесткие или мягкие (символические) ссылки между - файлами -

-
-

- logname -

-
-

- Сообщает имя входа текущего пользователя -

-
-

- ls -

-
-

- Выводит список содержимого для каждого заданного каталога -

-
-

- md5sum -

-
-

- Выводит или проверяет контрольные суммы Message Digest 5 - (MD5) -

-
-

- mkdir -

-
-

- Создает директории с указанными именами -

-
-

- mkfifo -

-
-

- Создает "именованный канал" "первым пришел — первым ушел" - (FIFO), в нотации UNIX с заданными именами -

-
-

- mknod -

-
-

- Создает узлы устройств с заданными именами; узел - устройства представляет собой специальный символьный - файл, специальный файл блока или FIFO. -

-
-

- mktemp -

-
-

- Создает временные файлы безопасным способом; используется - в скриптах -

-
-

- mv -

-
-

- Перемещает или переименовывает файлы или каталоги -

-
-

- nice -

-
-

- Запускает программу с измененным приоритетом исполнения -

-
-

- nl -

-
-

- Нумерует строки в указанных файлах -

-
-

- nohup -

-
-

- Запускает команду, невосприимчивую к зависаниям, а ее - вывод перенаправляется в файл журнала -

-
-

- nproc -

-
-

- Выводит количество дочерних процессов, доступных для - процесса. -

-
-

- numfmt -

-
-

- Преобразует числа в или из удобочитаемых строк -

-
-

- od -

-
-

- Вывод дампа файла в восьмеричном и других форматах -

-
-

- paste -

-
-

- Объединяет указанные файлы, последовательно соединяя - соответствующие строки рядом друг с другом, разделенные - символами табуляции. -

-
-

- pathchk -

-
-

- Проверяет, являются ли имена файлов допустимыми или - переносимыми -

-
-

- pinky -

-
-

- Легковесный клиент типа finger; выдает некоторую - информацию о заданных пользователях -

-
-

- pr -

-
-

- Разбивает файлы для печати на страницы и столбцы -

-
-

- printenv -

-
-

- Выдает значения переменных окружения -

-
-

- printf -

-
-

- Выводит аргументы в соответствии с заданным форматом, - подобно функции C printf. -

-
-

- ptx -

-
-

- Создает перестановочный индекс по содержимому указанных - файлов с каждым ключевым словом в своем контексте -

-
-

- pwd -

-
-

- Сообщает имя текущего рабочего каталога -

-
-

- readlink -

-
-

- Выдает значение указанной символической ссылки -

-
-

- realpath -

-
-

- Возвращает приведенное к обычному виду полное имя файла -

-
-

- rm -

-
-

- Удаляет файлы или каталоги -

-
-

- rmdir -

-
-

- Удаляет каталоги, если они пусты -

-
-

- runcon -

-
-

- Запускает команду с указанным контекстом безопасности -

-
-

- seq -

-
-

- Выдает последовательность чисел из указанного диапазона с - указанным значением приращения -

-
-

- sha1sum -

-
-

- Выводит или проверяет контрольные суммы 160-битного - алгоритма безопасного хеширования 1 (SHA1) -

-
-

- sha224sum -

-
-

- Выводит или проверяет контрольные суммы 224-битного - алгоритма безопасного хеширования -

-
-

- sha256sum -

-
-

- Выводит или проверяет контрольные суммы 256-битного - алгоритма безопасного хеширования -

-
-

- sha384sum -

-
-

- Выводит или проверяет контрольные суммы 384-битного - алгоритма безопасного хеширования -

-
-

- sha512sum -

-
-

- Выводит или проверяет контрольные суммы 512-битного - алгоритма безопасного хеширования -

-
-

- shred -

-
-

- Многократно перезаписывает заданные файлы сложными - шаблонами, что затрудняет восстановление данных. -

-
-

- shuf -

-
-

- Перемешивает строки текста -

-
-

- sleep -

-
-

- Делает паузу на заданный промежуток времени -

-
-

- sort -

-
-

- Сортирует строки в указанных файлах -

-
-

- split -

-
-

- Разбивает заданный файл на несколько частей в - соответствии с указанным размером или количеством строк -

-
-

- stat -

-
-

- Отображает статус файла или файловой системы -

-
-

- stdbuf -

-
-

- Запускает команды с измененными операциями буферизации - для своих стандартных потоков. -

-
-

- stty -

-
-

- Устанавливает или сообщает настройки терминала -

-
-

- sum -

-
-

- Выводит контрольную сумму и количество блоков для каждого - заданного файла -

-
-

- sync -

-
-

- Сбрасывает буферы файловой системы; он принудительно - записывает измененные блоки на диск и обновляет суперблок -

-
-

- tac -

-
-

- Конкатенация содержимого указанных файлов в обратном - порядке -

-
-

- tail -

-
-

- Выводит последние десять строк (или заданное количество - строк) каждого указанного файла -

-
-

- tee -

-
-

- Считывает данные со стандартного потока ввода, записывает - как в стандартный вывод, так и в указанные файлы -

-
-

- test -

-
-

- Сравнивает значения и проверяет типы файловs -

-
-

- timeout -

-
-

- Запускает команду с ограничением по времени -

-
-

- touch -

-
-

- Изменяет временные метки файлов, устанавливая время - доступа и модификации данных файлов на текущее время; - несуществующие файлы создаются с нулевой длиной -

-
-

- tr -

-
-

- Переводит, сжимает и удаляет заданные символы из - стандартного потока -

-
-

- true -

-
-

- Ничего не делает, указывает на успешное выполнение - операции; он всегда завершается с кодом состояния, - указывающим на успех -

-
-

- truncate -

-
-

- Сжимает или расширяет файл до указанного размера -

-
-

- tsort -

-
-

- Выполняет топологическую сортировку; записывает полностью - упорядоченный список в соответствии с частичным - упорядочением в данном файле -

-
-

- tty -

-
-

- Сообщает имя файла терминала, подключенного к - стандартному вводу. -

-
-

- uname -

-
-

- Сообщает системную информацию -

-
-

- unexpand -

-
-

- Преобразует пробелы в табуляции -

-
-

- uniq -

-
-

- Удаляет все повторяющиеся копии уже имеющихся строк, - кроме одной -

-
-

- unlink -

-
-

- Удаляет указанный файл -

-
-

- users -

-
-

- Сообщает имена пользователей, вошедших в систему в данный - момент -

-
-

- vdir -

-
-

- То же, что ls - -l -

-
-

- wc -

-
-

- Сообщает количество строк, слов и байт для каждого - заданного файла, а также общее количество строк, если - указано более одного файла -

-
-

- who -

-
-

- Сообщает, кто вошел в систему -

-
-

- whoami -

-
-

- Сообщает имя пользователя, соответствующее идентификатору - текущего пользователя -

-
-

- yes -

-
-

- Повторно выводит «y» или указанную строку, до тех - пор, пока команда не будет завершена с помощью kill -

-
-

- libstdbuf -

-
-

- Библиотека, используемая командой stdbuf -

-
-
-
-
- - - diff --git a/lfs-12.0-sysv/chapter08/dejagnu.html b/lfs-12.0-sysv/chapter08/dejagnu.html deleted file mode 100644 index 3830993..0000000 --- a/lfs-12.0-sysv/chapter08/dejagnu.html +++ /dev/null @@ -1,184 +0,0 @@ - - - - - - 8.17. DejaGNU-1.6.3 - - - - - - - - -
-

- 8.17. - DejaGNU-1.6.3 -

-
-

- Пакет DejaGnu содержит фреймворк - для запуска наборов тестов на инструментах GNU. Он написан на - expect, который в - свою очередь использует Tcl - (командный язык инструментов). -

-
-
-
- Приблизительное время сборки: - менее 0.1 SBU -
-
- Требуемое дисковое - пространство: 6.9 MB -
-
-
-
-
-

- 8.17.1. Установка пакета DejaGNU -

-

- Разработчики рекомендуют собирать DejaGNU в отдельном каталоге: -

-
mkdir -v build
-cd       build
-

- Подготовьте DejaGNU к компиляции: -

-
../configure --prefix=/usr
-makeinfo --html --no-split -o doc/dejagnu.html ../doc/dejagnu.texi
-makeinfo --plaintext       -o doc/dejagnu.txt  ../doc/dejagnu.texi
-

- Соберите и установите пакет: -

-
make install
-install -v -dm755  /usr/share/doc/dejagnu-1.6.3
-install -v -m644   doc/dejagnu.{html,txt} /usr/share/doc/dejagnu-1.6.3
-

- Чтобы протестировать пакет, выполните: -

-
make check
-
-
-

- 8.17.2. - Содержимое пакета DejaGNU -

-
-
-
- Установленные программы: - dejagnu и runtest -
-
-
-
-

- Short Descriptions -

- - - - - - - - - - - - - - - -
-

- dejagnu -

-
-

- Вспомогательная программа запуска команд DejaGNU -

-
-

- runtest -

-
-

- Скрипт-обертка, который находит соответствующую оболочку - expect, и - запускает DejaGnu -

-
-
-
-
- - - diff --git a/lfs-12.0-sysv/chapter08/diffutils.html b/lfs-12.0-sysv/chapter08/diffutils.html deleted file mode 100644 index 184a441..0000000 --- a/lfs-12.0-sysv/chapter08/diffutils.html +++ /dev/null @@ -1,201 +0,0 @@ - - - - - - 8.58. Diffutils-3.10 - - - - - - - - -
-

- 8.58. - Diffutils-3.10 -

-
-

- Пакет Diffutils содержит программы, которые показывают различия - между файлами или каталогами. -

-
-
-
- Приблизительное время сборки: - 0.3 SBU -
-
- Требуемое дисковое - пространство: 36 MB -
-
-
-
-
-

- 8.58.1. Установка пакета Diffutils -

-

- Подготовьте Diffutils к компиляции: -

-
./configure --prefix=/usr
-

- Скомпилируйте пакет: -

-
make
-

- Чтобы протестровать пакет, выполните: -

-
make check
-

- Установите пакет: -

-
make install
-
-
-

- 8.58.2. - Содержимое пакета Diffutils -

-
-
-
- Установленные программы: - cmp, diff, diff3, и sdiff -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - - - - - - - - - - - - - -
-

- cmp -

-
-

- Сравнивает побайтно два файла и сообщает о любых - различиях -

-
-

- diff -

-
-

- Сравнивает два файла или каталога и сообщает, какие - строки отличаются -

-
-

- diff3 -

-
-

- Сравнивает три файла построчно -

-
-

- sdiff -

-
-

- Объединяет два файла и интерактивно выводит результат -

-
-
-
-
- - - diff --git a/lfs-12.0-sysv/chapter08/e2fsprogs.html b/lfs-12.0-sysv/chapter08/e2fsprogs.html deleted file mode 100644 index f3ce360..0000000 --- a/lfs-12.0-sysv/chapter08/e2fsprogs.html +++ /dev/null @@ -1,775 +0,0 @@ - - - - - - 8.78. E2fsprogs-1.47.0 - - - - - - - - -
-

- 8.78. - E2fsprogs-1.47.0 -

-
-

- Пакет E2fsprogs содержит утилиты для работы с файловой системой - ext2. Также он поддерживает - журналируемые файловые системы ext3 - и ext4. -

-
-
-
- Приблизительное время сборки: - 2.4 SBU на жестком диске, 0.6 SBU на SSD - диске -
-
- Требуемое дисковое - пространство: 95 MB -
-
-
-
-
-

- 8.78.1. Установка пакета E2fsprogs -

-

- В документации к E2fsprogs рекомендуется выполнять сборку в - подкаталоге папки с исходниками: -

-
mkdir -v build
-cd       build
-

- Подготовьте E2fsprogs к компиляции: -

-
../configure --prefix=/usr           \
-             --sysconfdir=/etc       \
-             --enable-elf-shlibs     \
-             --disable-libblkid      \
-             --disable-libuuid       \
-             --disable-uuidd         \
-             --disable-fsck
-
-

- Значение параметров настройки: -

-
-
- --enable-elf-shlibs -
-
-

- Параметр создает общие библиотеки, которые используют - некоторые программы в этом пакете. -

-
-
- --disable-* -
-
-

- Эти параметры предотвращают сборку и установку библиотек - libuuid и libblkid, демона uuidd, и обертку для fsck, поскольку util-linux - устанавливает более свежие версии. -

-
-
-
-

- Скомпилируйте пакет: -

-
make
-

- Чтобы запустить тесты, выполните: -

-
make check
-

- Известно, что один тест, с именем m_assume_storage_prezeroed, завершается ошибкой. -

-

- Установите пакет: -

-
make install
-

- Удалите ненужные статические библиотеки: -

-
rm -fv /usr/lib/{libcom_err,libe2p,libext2fs,libss}.a
-

- Этот пакет устанавливает сжатый файл .info но не обновляет общесистемный файл - dir. Разархивируйте этот файл, а - затем обновите системный файл dir, - используя следующие команды: -

-
gunzip -v /usr/share/info/libext2fs.info.gz
-install-info --dir-file=/usr/share/info/dir /usr/share/info/libext2fs.info
-

- По желанию, создайте и установите дополнительную документацию, - выполнив следующие команды: -

-
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
-
-
-

- 8.78.2. Настройка - E2fsprogs -

-

- Файл /etc/mke2fs.conf содержит - значения по умолчанию для различных параметров командной строки - mke2fs. Вы можете - отредактировать файл, чтобы значения по умолчанию соответствовали - вашим потребностям. Например, некоторые утилиты (не в LFS или BLFS) - не могут распознать файловую систему ext4 с включенным параметром metadata_csum_seed. Если вам нужна такая утилита, вы - можете удалить параметр из списка по умолчанию для ext4 с помощью команды: -

-
sed 's/metadata_csum_seed,//' -i /etc/mke2fs.conf
-

- Подробности читайте в справочной странице mke2fs.conf(5). -

-
-
-

- 8.78.3. - Содержимое пакета E2fsprogs -

-
-
-
- Установленные программы: - badblocks, chattr, compile_et, debugfs, - dumpe2fs, e2freefrag, e2fsck, e2image, e2label, e2mmpstatus, - e2scrub, e2scrub_all, e2undo, e4crypt, e4defrag, filefrag, - fsck.ext2, fsck.ext3, fsck.ext4, logsave, lsattr, mk_cmds, - mke2fs, mkfs.ext2, mkfs.ext3, mkfs.ext4, mklost+found, - resize2fs и tune2fs -
-
- Установленные библиотеки: - libcom_err.so, libe2p.so, libext2fs.so, и - libss.so -
-
- Созданные каталоги: - /usr/include/e2p, /usr/include/et, - /usr/include/ext2fs, /usr/include/ss, /usr/lib/e2fsprogs, - /usr/share/et и /usr/share/ss -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

- badblocks -

-
-

- Выполняет поиск поврежденных блоков на устройстве (обычно - на разделе диска) -

-
-

- chattr -

-
-

- Изменяет атрибуты файлов в файловых системах ext{234} -

-
-

- compile_et -

-
-

- Компилятор таблицы ошибок; конвертирует таблицу имен - кодов ошибок и сообщений в файл исходного кода на языке С - с тем, чтобы ее можно было использовать с библиотекой - com_err -

-
-

- debugfs -

-
-

- Отладчик файловой системы; его можно использовать для - проверки и изменения состояния файловых систем - ext{234} -

-
-

- dumpe2fs -

-
-

- Выводит информацию о суперблоке и группе блоков для - файловой системы, присутствующей на указанном устройстве. -

-
-

- e2freefrag -

-
-

- Сообщает информацию о фрагментации свободного - пространства -

-
-

- e2fsck -

-
-

- Используется для проверки и, при необходимости, - восстановления файловых систем ext{234} -

-
-

- e2image -

-
-

- Используется для сохранения важных данных файловых систем - ext{234} в файл -

-
-

- e2label -

-
-

- Отображает или изменяет метку файловой системы в файловой - системе ext{234} на - данном устройстве. -

-
-

- e2mmpstatus -

-
-

- Проверяет состояние MMP (Multiple Mount Protection - - защита от множественного монтирования) файловой системы - ext4 -

-
-

- e2scrub -

-
-

- Проверяет содержимое смонтированной файловой системы - ext{234} -

-
-

- e2scrub_all -

-
-

- Проверяет все смонтированные файловые системы - ext{234} на наличие - ошибок -

-
-

- e2undo -

-
-

- Воспроизводит журнал отмены (undo_log) для файловой - системы ext{234}, - обнаруженной на устройстве. [Это можно использовать для - отмены неудачной операции программой E2fsprogs.] -

-
-

- e4crypt -

-
-

- Утилита шифрования файловой системы Ext4 -

-
-

- e4defrag -

-
-

- Онлайн дефрагментатор для файловой системы ext4 -

-
-

- filefrag -

-
-

- Сообщает о том, насколько сильно может быть - фрагментирован конкретный файл -

-
-

- fsck.ext2 -

-
-

- По умолчанию проверяет файловые системы ext2 и является жесткой ссылкой на - e2fsck -

-
-

- fsck.ext3 -

-
-

- По умолчанию проверяет файловые системы ext3 и является жесткой ссылкой на - e2fsck -

-
-

- fsck.ext4 -

-
-

- По умолчанию проверяет файловые системы ext4 и является жесткой ссылкой на - e2fsck -

-
-

- logsave -

-
-

- Сохраняет вывод команды в файл журнала -

-
-

- lsattr -

-
-

- Перечисляет атрибуты файлов во второй расширенной - файловой системе. -

-
-

- mk_cmds -

-
-

- Преобразует таблицу имен команд и справочных сообщений в - исходный файл C, подходящий для использования с - библиотекой подсистемы libss -

-
-

- mke2fs -

-
-

- Создает файловую систему ext{234} на указанном устройстве -

-
-

- mkfs.ext2 -

-
-

- По умолчанию создает файловую систему ext2 и является жесткой ссылкой на - mke2fs -

-
-

- mkfs.ext3 -

-
-

- По умолчанию создает файловую систему ext3 и является жесткой ссылкой на - mke2fs -

-
-

- mkfs.ext4 -

-
-

- По умолчанию создает файловую систему ext4 и является жесткой ссылкой на - mke2fs -

-
-

- mklost+found -

-
-

- Используется для создания каталога lost+found в файловой системе - ext{234}; предварительно - выделяет дисковые блоки для этого каталога, чтобы - облегчить задачу e2fsck -

-
-

- resize2fs -

-
-

- Может использоваться для увеличения или уменьшения - файловой системы ext{234} -

-
-

- tune2fs -

-
-

- Позволяет настроить параметры для файловой системы - ext{234} -

-
-

- libcom_err -

-
-

- Стандартная процедура отображения ошибок -

-
-

- libe2p -

-
-

- Используется dumpe2fs, chattr, и lsattr -

-
-

- libext2fs -

-
-

- Содержит подпрограммы, позволяющие программам - пользовательского уровня управлять файловой системой - ext{234} -

-
-

- libss -

-
-

- Используется debugfs -

-
-
-
-
- - - diff --git a/lfs-12.0-sysv/chapter08/expat.html b/lfs-12.0-sysv/chapter08/expat.html deleted file mode 100644 index b4d6692..0000000 --- a/lfs-12.0-sysv/chapter08/expat.html +++ /dev/null @@ -1,187 +0,0 @@ - - - - - - 8.39. Expat-2.5.0 - - - - - - - - -
-

- 8.39. Expat-2.5.0 -

-
-

- Пакет Expat содержит потоковую библиотеку C для синтаксического - анализа XML -

-
-
-
- Приблизительное время сборки: - 0.1 SBU -
-
- Требуемое дисковое - пространство: 12 MB -
-
-
-
-
-

- 8.39.1. Установка пакета Expat -

-

- Подготовьте Expat к компиляции: -

-
./configure --prefix=/usr    \
-            --disable-static \
-            --docdir=/usr/share/doc/expat-2.5.0
-

- Скомпилируйте пакет: -

-
make
-

- Чтобы протестировать пакет, выполните: -

-
make check
-

- Установите пакет: -

-
make install
-

- По желанию установите документацию: -

-
install -v -m644 doc/*.{html,css} /usr/share/doc/expat-2.5.0
-
-
-

- 8.39.2. Содержимое - пакета Expat -

-
-
-
- Установленные программы: - xmlwf -
-
- Установленные библиотеки: - libexpat.so -
-
- Созданные каталоги: - /usr/share/doc/expat-2.5.0 -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - - - - - -
-

- xmlwf -

-
-

- Утилита проверки правильности формирования XML документов -

-
-

- libexpat -

-
-

- Содержит функции API для синтаксического анализа XML -

-
-
-
-
- - - diff --git a/lfs-12.0-sysv/chapter08/expect.html b/lfs-12.0-sysv/chapter08/expect.html deleted file mode 100644 index f6d3b18..0000000 --- a/lfs-12.0-sysv/chapter08/expect.html +++ /dev/null @@ -1,256 +0,0 @@ - - - - - - 8.16. Expect-5.45.4 - - - - - - - - -
-

- 8.16. - Expect-5.45.4 -

-
-

- Пакет Expect содержит инструменты - для автоматизации работы интерактивных приложений, таких как - telnet, ftp, passwd, fsck, rlogin и tip, с помощью скриптовых - диалогов и макросов. Кроме того Expect полезен для тестирования перечисленных - выше приложений, а также для решения сложных задач взаимодействия с - другими средствами. Фреймворк DejaGnu написан на языке Expect. -

-
-
-
- Приблизительное время сборки: - 0.2 SBU -
-
- Требуемое дисковое - пространство: 3.9 MB -
-
-
-
-
-

- 8.16.1. Установка пакета Expect -

-

- Подготовьте Expect к компиляции: -

-
./configure --prefix=/usr           \
-            --with-tcl=/usr/lib     \
-            --enable-shared         \
-            --mandir=/usr/share/man \
-            --with-tclinclude=/usr/include
-
-

- Значение параметров настройки: -

-
-
- --with-tcl=/usr/lib -
-
-

- Этот параметр необходим для указания configure где находится - скрипт tclConfig.sh. -

-
-
- --with-tclinclude=/usr/include -
-
-

- Этот параметр явно указывает Expect, где искать внутренние - заголовки Tcl. -

-
-
-
-

- Соберите пакет: -

-
make
-
- [Важно] -

- Важно -

-

- Набор тестов для Expect считается критически важным. Не - пропускайте его ни при каких обстоятельствах. -

-
-

- Чтобы протестировать пакет, выполните: -

-
make test
-

- Если какой-либо тест завершается неудачей с сообщением «The - system has no more ptys. Ask your system administrator to create - more», это означает, что вы неправильно - смонтировали файловую систему devpts. Вам необходимо выйти из среды chroot, - ещё раз прочитать Раздел 7.3, - «Подготовка виртуальных файловых систем ядра» и убедиться, что - файловая система devpts (и другие - файловые системы виртуального ядра) смонтированы правильно. Затем - повторно войдите в среду chroot, следуя инструкции Раздел 7.4, «Вход в окружение - Chroot». Эту проблему необходимо решить, прежде чем вы - продолжите. -

-

- Установите пакет: -

-
make install
-ln -svf expect5.45.4/libexpect5.45.4.so /usr/lib
-
-
-

- 8.16.2. - Содержимое пакета Expect -

-
-
-
- Установленные программы: - expect -
-
- Установленные библиотеки: - libexpect5.45.4.so -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - - - - - -
-

- expect -

-
-

- Взаимодействует с другими интерактивными программами в - соответствии со сценарием -

-
-

- libexpect-5.45.4.so -

-
-

- Содержит функции, которые позволяют использовать Expect в - качестве расширения Tcl или непосредственно из C или C++ - (без Tcl). -

-
-
-
-
- - - diff --git a/lfs-12.0-sysv/chapter08/file.html b/lfs-12.0-sysv/chapter08/file.html deleted file mode 100644 index 2043dfc..0000000 --- a/lfs-12.0-sysv/chapter08/file.html +++ /dev/null @@ -1,180 +0,0 @@ - - - - - - 8.10. File-5.45 - - - - - - - - -
-

- 8.10. File-5.45 -

-
-

- Пакет File содержит утилиту для определения типа указанного файла - или файлов -

-
-
-
- Приблизительное время сборки: - менее 0.1 SBU -
-
- Требуемое дисковое - пространство: 17 MB -
-
-
-
-
-

- 8.10.1. Установка пакета File -

-

- Подготовьте File к компиляции: -

-
./configure --prefix=/usr
-

- Скомпилируйте пакет: -

-
make
-

- Чтобы протестировать пакет, выполните: -

-
make check
-

- Установите пакет: -

-
make install
-
-
-

- 8.10.2. Содержимое - пакета File -

-
-
-
- Установленные программы: - file -
-
- Установленные библиотеки: - libmagic.so -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - - - - - -
-

- file -

-
-

- Пытается классифицировать каждый указанный файл; он - делает это, выполняя серию тестов—тесты файловой системы, - тесты магических чисел и языковые тесты. -

-
-

- libmagic -

-
-

- Содержит функции распознавания магических чисел - используемые программой file -

-
-
-
-
- - - diff --git a/lfs-12.0-sysv/chapter08/findutils.html b/lfs-12.0-sysv/chapter08/findutils.html deleted file mode 100644 index 97925ba..0000000 --- a/lfs-12.0-sysv/chapter08/findutils.html +++ /dev/null @@ -1,238 +0,0 @@ - - - - - - 8.60. Findutils-4.9.0 - - - - - - - - -
-

- 8.60. - Findutils-4.9.0 -

-
-

- Пакет Findutils содержит программы для поиска файлов. Эти программы - предназначены для поиска по всем файлам в дереве каталогов, а также - для создания, обслуживания и поиска в базе данных (часто быстрее, - чем рекурсивный поиск, но ненадежно, если база данных давно не - обновлялась).Findutils также предоставляет программу xargs, которую можно использовать - для запуска указанной команды для каждого файла, выбранного при - поиске. -

-
-
-
- Приблизительное время сборки: - 0.4 SBU -
-
- Требуемое дисковое - пространство: 51 MB -
-
-
-
-
-

- 8.60.1. Установка пакета Findutils -

-

- Подготовьте Findutils к компиляции: -

-
./configure --prefix=/usr --localstatedir=/var/lib/locate
-
-

- Значение параметров настройки: -

-
-
- --localstatedir -
-
-

- Этот параметр перемещает базу данных команды locate в /var/lib/locate, что соответствует - расположению, совместимому со стандартом FHS. -

-
-
-
-

- Скомпилируйте пакет: -

-
make
-

- Чтобы протестировать пакет, выполните: -

-
chown -Rv tester .
-su tester -c "PATH=$PATH make check"
-

- Установите пакет: -

-
make install
-
-
-

- 8.60.2. - Содержимое пакета Findutils -

-
-
-
- Installed programs: - Установленные программы -
-
- Созданные каталоги: - /var/lib/locate -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - - - - - - - - - - - - - -
-

- find -

-
-

- Выполняет поиск в заданных каталогах файлов, - соответствующих критериям -

-
-

- locate -

-
-

- Выполняет поиск по базе данных имен файлов и сообщает об - именах, которые содержат заданную строку или - соответствуют заданному шаблону. -

-
-

- updatedb -

-
-

- Обновляет базу данных locate; сканирует всю - файловую систему (включая другие файловые системы, - которые в настоящее время смонтированы, если не указано - иное) и записывает найденные имена файлов в базу данных -

-
-

- xargs -

-
-

- Может использоваться для применения заданной команды к - списку файлов -

-
-
-
-
- - - diff --git a/lfs-12.0-sysv/chapter08/flex.html b/lfs-12.0-sysv/chapter08/flex.html deleted file mode 100644 index 8fb7abc..0000000 --- a/lfs-12.0-sysv/chapter08/flex.html +++ /dev/null @@ -1,230 +0,0 @@ - - - - - - 8.14. Flex-2.6.4 - - - - - - - - -
-

- 8.14. Flex-2.6.4 -

-
-

- Пакет Flex содержит инструмент для генерации программ, распознающих - заданные шаблоны в тексте -

-
-
-
- Приблизительное время сборки: - 0.1 SBU -
-
- Требуемое дисковое - пространство: 33 MB -
-
-
-
-
-

- 8.14.1. Установка пакета Flex -

-

- Подготовьте Flex к компиляции: -

-
./configure --prefix=/usr \
-            --docdir=/usr/share/doc/flex-2.6.4 \
-            --disable-static
-

- Скомпилируйте пакет: -

-
make
-

- Для тестирования пакета (около 0,5 SBU) выполните: -

-
make check
-

- Установите пакет: -

-
make install
-

- Некоторые программы пока не знают о flex и пытаются запустить его - предшественника - lex. Чтобы обеспечить их - работоспособность, создайте символическую ссылку lex, которая запускает - flex в режиме эмуляции lex, а также создайте - символическую ссылку на справочную страницу lex: -

-
ln -sv flex   /usr/bin/lex
-ln -sv flex.1 /usr/share/man/man1/lex.1
-
-
-

- 8.14.2. Содержимое - пакета Flex -

-
-
-
- Установленные программы: - flex, flex++ (ссылка на flex), и lex - (ссылка на flex) -
-
- Установленные библиотеки: - libfl.so -
-
- Созданные каталоги: - /usr/share/doc/flex-2.6.4 -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - - - - - - - - - - - - - -
-

- flex -

-
-

- Инструмент для создания программ, распознающих текст по - шаблону; это позволяет гибко указывать правила поиска - паттернов, устраняя необходимость разработки - специализированной программы. -

-
-

- flex++ -

-
-

- Расширение flex используется для генерации кода и классов - C++. Является символической ссылкой на flex -

-
-

- lex -

-
-

- Символическая ссылка, запускает flex в режиме эмуляции - lex -

-
-

- libfl -

-
-

- Библиотека flex -

-
-
-
-
- - - diff --git a/lfs-12.0-sysv/chapter08/flit-core.html b/lfs-12.0-sysv/chapter08/flit-core.html deleted file mode 100644 index 37255ac..0000000 --- a/lfs-12.0-sysv/chapter08/flit-core.html +++ /dev/null @@ -1,186 +0,0 @@ - - - - - - 8.52. Flit-Core-3.9.0 - - - - - - - - -
-

- 8.52. - Flit-Core-3.9.0 -

-
-

- Flit-core — это часть Flit, предназначенная для сборки дистрибутива - (инструмента для упаковки простых модулей Python). -

-
-
-
- Приблизительное время сборки: - менее 0.1 SBU -
-
- Требуемое дисковое - пространство: 1.7 MB -
-
-
-
-
-

- 8.52.1. Установка пакета Flit-Core -

-

- Соберите пакет: -

-
pip3 wheel -w dist --no-build-isolation --no-deps $PWD
-

- Установите пакет: -

-
pip3 install --no-index --no-user --find-links dist flit_core
-
-

- Значение параметров конфигурации и команд pip3: -

-
-
- wheel -
-
-

- Эта команда создает архив wheel для этого пакета. -

-
-
- -w - dist -
-
-

- Указывает pip поместить созданный архив в каталог - dist. -

-
-
- install -
-
-

- Эта команда устанавливает пакет. -

-
-
- --no-build-isolation, --no-deps и --no-index -
-
-

- Эти параметры предотвращают получение файлов из - онлайн-репозитория пакетов (PyPI). Если пакеты установлены в - правильном порядке, то нет необходимости загружать какие-либо - файлы; эти параметры усиливают безопасность в случае ошибки - пользователя. -

-
-
- --find-links - dist -
-
-

- Указывает pip искать архивы wheel в каталоге dist. -

-
-
-
-
-
-

- 8.52.2. - Содержимое пакета Flit-Core -

-
-
-
- Созданные каталоги: - /usr/lib/python3.11/site-packages/flit_core и - /usr/lib/python3.11/site-packages/flit_core-3.9.0.dist-info -
-
-
-
-
- - - diff --git a/lfs-12.0-sysv/chapter08/gawk.html b/lfs-12.0-sysv/chapter08/gawk.html deleted file mode 100644 index 6d2f089..0000000 --- a/lfs-12.0-sysv/chapter08/gawk.html +++ /dev/null @@ -1,244 +0,0 @@ - - - - - - 8.59. Gawk-5.2.2 - - - - - - - - -
-

- 8.59. Gawk-5.2.2 -

-
-

- Пакет Gawk содержит программы для работы с текстовыми файлами. -

-
-
-
- Приблизительное время сборки: - 0.1 SBU -
-
- Требуемое дисковое - пространство: 46 MB -
-
-
-
-
-

- 8.59.1. Установка пакета Gawk -

-

- Во-первых, отредактируйте Makefile, чтобы некоторые ненужные файлы - не были установлены -

-
sed -i 's/extras//' Makefile.in
-

- Подготовьте Gawk к компиляции: -

-
./configure --prefix=/usr
-

- Скомпилируйте пакет: -

-
make
-

- Чтобы протестировать пакет, выполните: -

-
chown -Rv tester .
-su tester -c "PATH=$PATH make check"
-

- Установите пакет: -

-
make LN='ln -f' install
-
-

- Значение переопределенной переменной make: -

-
-
- LN='ln -f' -
-
-

- Эта переменная гарантирует, что предыдущая жесткая ссылка, - установленная в Раздел 6.9, «Gawk-5.2.2», - будет обновлена здесь. -

-
-
-
-

- В процессе установки уже создан awk в виде символической ссылки - на gawk, создайте - также символическую ссылку на справочную страницу: -

-
ln -sv gawk.1 /usr/share/man/man1/awk.1
-

- По желанию, установите документацию: -

-
mkdir -pv                                   /usr/share/doc/gawk-5.2.2
-cp    -v doc/{awkforai.txt,*.{eps,pdf,jpg}} /usr/share/doc/gawk-5.2.2
-
-
-

- 8.59.2. Содержимое - пакета Gawk -

-
-
-
- Установленные программы: - awk (ссылка на gawk), gawk и - gawk-5.2.2 -
-
- Установленные библиотеки: - filefuncs.so, fnmatch.so, fork.so, - inplace.so, intdiv.so, ordchr.so, readdir.so, readfile.so, - revoutput.so, revtwoway.so, rwarray.so и time.so (все в - /usr/lib/gawk) -
-
- Созданные каталоги: - /usr/lib/gawk, /usr/libexec/awk, - /usr/share/awk и /usr/share/doc/gawk-5.2.2 -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - - - - - - - - - -
-

- awk -

-
-

- Ссылка на gawk -

-
-

- gawk -

-
-

- Программа для работы с текстовыми файлами; это GNU - реализация awk -

-
-

- gawk-5.2.2 -

-
-

- Жесткая ссылка на gawk -

-
-
-
-
- - - diff --git a/lfs-12.0-sysv/chapter08/gcc.html b/lfs-12.0-sysv/chapter08/gcc.html deleted file mode 100644 index 02ff6ce..0000000 --- a/lfs-12.0-sysv/chapter08/gcc.html +++ /dev/null @@ -1,911 +0,0 @@ - - - - - - 8.27. GCC-13.2.0 - - - - - - - - -
-

- 8.27. GCC-13.2.0 -

-
-

- Пакет GCC содержит коллекцию компиляторов GNU, которая включает - компиляторы C и C++. -

-
-
-
- Приблизительное время сборки: - 42 SBU (с тестами) -
-
- Требуемое дисковое - пространство: 5.5 GB -
-
-
-
-
-

- 8.27.1. Установка пакета GCC -

-

- При сборке на x86_64 измените имя каталога по умолчанию для - 64-битных библиотек на «lib»: -

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

- Документация GCC рекомендует собирать GCC в отдельном каталоге: -

-
mkdir -v build
-cd       build
-

- Подготовьте GCC к компиляции: -

-
../configure --prefix=/usr            \
-             LD=ld                    \
-             --enable-languages=c,c++ \
-             --enable-default-pie     \
-             --enable-default-ssp     \
-             --disable-multilib       \
-             --disable-bootstrap      \
-             --disable-fixincludes    \
-             --with-system-zlib
-

- GCC поддерживает семь различных языков программирования, но - предварительные условия для большинства из них еще не выполнены. - См. страницу - BLFS Book GCC для получения инструкций о том, как собрать все - языки, поддерживаемые GCC -

-
-

- Значение новых параметров настройки: -

-
-
- LD=ld -
-
-

- Этот параметр указывает скрипту configure использовать ld, - установленный программой Binutils, собранной ранее в этой - главе, а не кросс версию, которая использовалась бы в - противном случае. -

-
-
- --disable-fixincludes -
-
-

- По умолчанию во время установки GCC некоторые системные - заголовки будут «исправлены» для использования с GCC. - Это не обязательно для современной системы Linux и - потенциально опасно, если пакет будет переустановлен после - установки GCC. Этот параметр не позволяет GCC «исправлять» - заголовки. -

-
-
- --with-system-zlib -
-
-

- Этот параметр указывает GCC ссылаться на установленную в - системе копию библиотеки Zlib, а не на собственную внутреннюю - копию. -

-
-
-
-
- [Примечание] -

- Примечание -

-

- PIE (позиционно-независимые исполняемые файлы) — это двоичные - программы, которые можно загружать в любое место памяти. Без PIE - функция безопасности под названием ASLR (рандомизация размещения - адресного пространства) может применяться к общим библиотекам, но - не к самим исполняемым файлам. Включение PIE позволяет - использовать ASLR для исполняемых файлов в дополнение к общим - библиотекам и смягчает некоторые атаки, основанные на - фиксированных адресах конфиденциального кода или данных в - исполняемых файлах. -

-

- SSP (Stack Smashing Protection - защита от разрушения стека) — - это метод, гарантирующий, что стек параметров не будет поврежден. - Повреждение стека может, например, изменить адрес возврата - подпрограммы, тем самым передав управление какому-то опасному - коду (существующему в программе или общих библиотеках или - каким-то образом внедренному злоумышленником). -

-
-

- Скомпилируйте пакет: -

-
make
-
- [Важно] -

- Важно -

-

- В этом разделе набор тестов для GCC считается важным, но занимает - много времени. Начинающим сборщикам не рекомендуется пропускать - его. Время выполнения тестов можно значительно сократить, добавив - -jx в приведенную ниже команду make - -k check, где x - количество ядер процессора в - вашей системе. -

-
-

- Известно, что один набор тестов GCC переполняет стек по умолчанию, - поэтому увеличьте размер стека перед запуском тестов: -

-
ulimit -s 32768
-

- Выполните тестирование под непривилегированным пользователем, но не - останавливайтесь на ошибках: -

-
chown -Rv tester .
-su tester -c "PATH=$PATH make -k check"
-

- Чтобы получить сводку результатов набора тестов, выполните: -

-
../contrib/test_summary
-

- Чтобы отфильтровать только итоговую сводку, передайте вывод через - pipe grep -A7 Summ. -

-

- Результаты можно сравнить с результатами, размещенными на https://mirror.linuxfromscratch.ru/lfs/build-logs/12.0/ - и https://gcc.gnu.org/ml/gcc-testresults/. -

-

- Известно, что два теста с именами copy.cc и pr56837.c - завершаются ошибкой. Кроме того, известно, что несколько тестов в - каталоге vect завершаются неудачно, - если оборудование не поддерживает AVX. -

-

- Известно, что в Glibc-2.38, тесты анализатора с именами - data-model-4.c и conftest-1.c завершаются неудачно. Известно, что - в тестах asan, несколько тестов в asan_test.C завершаются неудачно. Известно, что - тест с именем interception-malloc-test-1.C завершился ошибкой. -

-

- Не всегда удается избежать неожиданных сбоев. Разработчики GCC - обычно знают об этих проблемах, но еще не решили их. Если - результаты теста не сильно отличаются от результатов по указанному - выше URL-адресу, можно продолжать. -

-

- Установите пакет: -

-
make install
-

- Каталог сборки GCC теперь принадлежит пользователю tester, и владелец каталога заголовочных файлов - (и его содержимого) указан неверно. Измените владельца на - пользователя и группу root: -

-
chown -v -R root:root \
-    /usr/lib/gcc/$(gcc -dumpmachine)/13.2.0/include{,-fixed}
-

- Создайте символическую ссылку, требуемую FHS - по "историческим" причинам. -

-
ln -svr /usr/bin/cpp /usr/lib
-

- Многие пакеты используют имя cc для вызова компилятора языка - Си. Мы уже создали cc - как символическую ссылку в GCC-Проход 2, теперь создайте - символическую ссылку на его справочную страницу: -

-
ln -sv gcc.1 /usr/share/man/man1/cc.1
-

- Добавьте символическую ссылку совместимости, чтобы включить сборку - программ с оптимизацией времени компоновки (LTO): -

-
ln -sfv ../../libexec/gcc/$(gcc -dumpmachine)/13.2.0/liblto_plugin.so \
-        /usr/lib/bfd-plugins/
-

- Теперь, когда наш окончательный набор инструментов готов, важно еще - раз убедиться, что компиляция и компоновка будут работать так, как - ожидалось. Мы сделаем это, выполнив проверку работоспособности: -

-
echo 'int main(){}' > dummy.c
-cc dummy.c -v -Wl,--verbose &> dummy.log
-readelf -l a.out | grep ': /lib'
-

- Ошибок быть не должно, и вывод последней команды будет (с учетом - платформо-зависимых различий в имени динамического компоновщика): -

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

- Теперь убедитесь, что мы настроили использование правильных - стартовых файлов: -

-
grep -E -o '/usr/lib.*/S?crt[1in].*succeeded' dummy.log
-

- Вывод последней команды должен быть: -

-
/usr/lib/gcc/x86_64-pc-linux-gnu/13.2.0/../../../../lib/Scrt1.o succeeded
-/usr/lib/gcc/x86_64-pc-linux-gnu/13.2.0/../../../../lib/crti.o succeeded
-/usr/lib/gcc/x86_64-pc-linux-gnu/13.2.0/../../../../lib/crtn.o succeeded
-

- В зависимости от архитектуры вашего компьютера вышеуказанные - параметры могут незначительно отличаться. Разница будет заключаться - в имени каталога после /usr/lib/gcc. - Здесь важно обратить внимание на то, что gcc нашел все три файла - crt*.o в каталоге /usr/lib. -

-

- Убедитесь, что компилятор ищет правильные заголовочные файлы: -

-
grep -B4 '^ /usr/include' dummy.log
-

- Эта команда должна вернуть следующий вывод: -

-
#include <...> search starts here:
- /usr/lib/gcc/x86_64-pc-linux-gnu/13.2.0/include
- /usr/local/include
- /usr/lib/gcc/x86_64-pc-linux-gnu/13.2.0/include-fixed
- /usr/include
-

- Опять же, имя каталога может отличаться от указанного выше, в - зависимости от архитектуры вашей системы. -

-

- Затем убедитесь, что новый компоновщик использует правильные пути - поиска: -

-
grep 'SEARCH.*/usr/lib' dummy.log |sed 's|; |\n|g'
-

- Ссылки на пути, содержащие компоненты с '-linux-gnu', следует - игнорировать, но в противном случае вывод последней команды должен - быть таким: -

-
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");
-

- 32-разрядная система может использовать несколько других каталогов. - Например, вот вывод с компьютера i686: -

-
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");
-

- Затем убедитесь, что мы используем правильную libc: -

-
grep "/lib.*/libc.so.6 " dummy.log
-

- Вывод последней команды должен быть: -

-
attempt to open /usr/lib/libc.so.6 succeeded
-

- Убедитесь, что GCC использует правильный динамический компоновщик: -

-
grep found dummy.log
-

- Вывод последней команды должен быть (с учетом различий в имени - динамического компоновщика, зависящих от платформы): -

-
found ld-linux-x86-64.so.2 at /usr/lib/ld-linux-x86-64.so.2
-

- Если вывод выглядит не так, как показано выше, или вообще не - получен, значит, где-то серьезная ошибка. Изучите и повторите шаги, - чтобы выяснить, в чем проблема, и исправьте ее. Любые проблемы - должны быть решены, прежде чем вы продолжите процесс. -

-

- Как только все заработает правильно, удалите тестовые файлы: -

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

- Наконец, переместите файл: -

-
mkdir -pv /usr/share/gdb/auto-load/usr/lib
-mv -v /usr/lib/*gdb.py /usr/share/gdb/auto-load/usr/lib
-
-
-

- 8.27.2. Содержимое - пакета GCC -

-
-
-
- Установленные программы: - c++, cc (link to gcc), cpp, g++, gcc, - gcc-ar, gcc-nm, gcc-ranlib, gcov, gcov-dump, gcov-tool, и - lto-dump -
-
- Установленные библиотеки: - libasan.{a,so}, libatomic.{a,so}, - libcc1.so, libgcc.a, libgcc_eh.a, libgcc_s.so, libgcov.a, - libgomp.{a,so}, libhwasan.{a,so}, libitm.{a,so}, - liblsan.{a,so}, liblto_plugin.so, libquadmath.{a,so}, - libssp.{a,so}, libssp_nonshared.a, libstdc++.{a,so}, - libstdc++exp.a, libstdc++fs.a, libsupc++.a, libtsan.{a,so} и - libubsan.{a,so} -
-
- Созданные каталоги: - /usr/include/c++, /usr/lib/gcc, - /usr/libexec/gcc и /usr/share/gcc-13.2.0 -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

- c++ -

-
-

- Компилятор С++ -

-
-

- cc -

-
-

- Компилятор C -

-
-

- cpp -

-
-

- Препроцессор C; он используется компилятором для - расширения инструкций #include, #define и подобные - директивы в исходных файлах -

-
-

- g++ -

-
-

- Компилятор C++ -

-
-

- gcc -

-
-

- Компилятор C -

-
-

- gcc-ar -

-
-

- Обертка над ar, добавляющая плагин - в командную строку. Эта программа используется только для - добавления "оптимизации времени компоновки" и бесполезна - с параметрами сборки по умолчанию. -

-
-

- gcc-nm -

-
-

- Обертка над nm, добавляющая плагин - в командную строку. Эта программа используется только для - добавления "оптимизации времени компоновки" и бесполезна - с параметрами сборки по умолчанию. -

-
-

- gcc-ranlib -

-
-

- Обертка над ranlib, добавляющая - плагин в командную строку. Эта программа используется - только для добавления "оптимизации времени компоновки" и - бесполезна с параметрами сборки по умолчанию. -

-
-

- gcov -

-
-

- Инструмент тестирования; он используется для анализа - программ, чтобы определить, где оптимизация будет иметь - наибольший эффект. -

-
-

- gcov-dump -

-
-

- Автономный инструмент для дампа профилей gcda and gcno -

-
-

- gcov-tool -

-
-

- Автономный инструмент обработки профиля gcda -

-
-

- lto-dump -

-
-

- Инструмент для создания дампа объектных файлов, созданных - GCC с включенным LTO. -

-
-

- libasan -

-
-

- Библиотека времени выполнения Address Sanitizer -

-
-

- libatomic -

-
-

- Встроенная библиотека времени выполнения GCC atomic -

-
-

- libcc1 -

-
-

- Библиотека предварительной обработки C -

-
-

- libgcc -

-
-

- Содержит средства поддержки времени исполнения для - gcc -

-
-

- libgcov -

-
-

- Эта библиотека компонуется с программой, когда в GCC - включено профилирование -

-
-

- libgomp -

-
-

- GNU реализация интерфейса OpenMP API мультиплатформенного - параллельного программирования для языков C/C++ и Fortran - с общим доступом к памяти -

-
-

- libhwasan -

-
-

- Библиотека времени выполнения Hardware-Assisted Address - Sanitizer (аппаратной очистки адресов) -

-
-

- libitm -

-
-

- Библиотека транзакционной памяти GNU -

-
-

- liblsan -

-
-

- Библиотека времени выполнения Leak Sanitizer (средств - защиты от утечек) -

-
-

- liblto_plugin -

-
-

- Плагин GCC LTO позволяет Binutils обрабатывать объектные - файлы, созданные GCC с включенным LTO. -

-
-

- libquadmath -

-
-

- API математической библиотеки GCC Quad Precision -

-
-

- libssp -

-
-

- Содержит подпрограммы, поддерживающие функциональность - защиты стека GCC. Обычно они не используются, потому что - Glibc также предоставляет эти подпрограммы. -

-
-

- libstdc++ -

-
-

- Стандартная библиотека C++ -

-
-

- libstdc++exp -

-
-

- Экспериментальная библиотека контрактов C++ -

-
-

- libstdc++fs -

-
-

- Библиотека файловой системы ISO/IEC TS 18822:2015 -

-
-

- libsupc++ -

-
-

- Предоставляет вспомогательные процедуры для языка - программирования C++ -

-
-

- libtsan -

-
-

- Библиотека времени выполнения Thread Sanitizer (средств - очистки потоков) -

-
-

- libubsan -

-
-

- Библиотека времени выполнения Undefined Behavior - Sanitizer (средств очистки неопределенного поведения) -

-
-
-
-
- - - diff --git a/lfs-12.0-sysv/chapter08/gdbm.html b/lfs-12.0-sysv/chapter08/gdbm.html deleted file mode 100644 index 36cdcdd..0000000 --- a/lfs-12.0-sysv/chapter08/gdbm.html +++ /dev/null @@ -1,243 +0,0 @@ - - - - - - 8.37. GDBM-1.23 - - - - - - - - -
-

- 8.37. GDBM-1.23 -

-
-

- Пакет GDBM содержит менеджер баз данных GNU. Это библиотека функций - базы данных, использующая расширяемое хеширование и работающая - аналогично стандартной СУБД UNIX. Библиотека предоставляет - примитивы для хранения пар ключ/значение, поиска и извлечения - данных по его ключу и удаления ключа вместе с его данными. -

-
-
-
- Приблизительное время сборки: - менее 0.1 SBU -
-
- Требуемое дисковое - пространство: 13 MB -
-
-
-
-
-

- 8.37.1. Установка пакета GDBM -

-

- Подготовьте GDBM к компиляции: -

-
./configure --prefix=/usr    \
-            --disable-static \
-            --enable-libgdbm-compat
-
-

- Значение параметра configure: -

-
-
- --enable-libgdbm-compat -
-
-

- Этот параметр включает сборку библиотеки совместимости - libgdbm. Некоторым пакетам за пределами LFS могут - потребоваться более старые подпрограммы DBM, которые он - предоставляет. -

-
-
-
-

- Скомпилируйте пакет: -

-
make
-

- Чтобы протестировать пакет, выполните: -

-
make check
-

- Установите пакет: -

-
make install
-
-
-

- 8.37.2. Содержимое - пакета GDBM -

-
-
-
- Установленные программы: - gdbm_dump, gdbm_load, и gdbmtool -
-
- Установленные библиотеки: - libgdbm.so и libgdbm_compat.so -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

- gdbm_dump -

-
-

- Сохраняет дамп базы данных GDBM в файл -

-
-

- gdbm_load -

-
-

- Восстанавливает базу данных GDBM из дампа. -

-
-

- gdbmtool -

-
-

- Проверяет и изменяет базу данных GDBM -

-
-

- libgdbm -

-
-

- Содержит функции для управления хэшированной базой данных -

-
-

- libgdbm_compat -

-
-

- Библиотека совместимости, содержащая более старые функции - DBM -

-
-
-
-
- - - diff --git a/lfs-12.0-sysv/chapter08/gettext.html b/lfs-12.0-sysv/chapter08/gettext.html deleted file mode 100644 index 82282cd..0000000 --- a/lfs-12.0-sysv/chapter08/gettext.html +++ /dev/null @@ -1,594 +0,0 @@ - - - - - - 8.32. Gettext-0.22 - - - - - - - - -
-

- 8.32. - Gettext-0.22 -

-
-

- Пакет Gettext содержит утилиты для интернационализации и - локализации. Они позволяют компилировать программы с поддержкой NLS - (Native Language Support), позволяя им выводить сообщения на родном - языке пользователя. -

-
-
-
- Приблизительное время сборки: - 1.4 SBU -
-
- Требуемое дисковое - пространство: 250 MB -
-
-
-
-
-

- 8.32.1. Установка пакета Gettext -

-

- Подготовьте Gettext для компиляции: -

-
./configure --prefix=/usr    \
-            --disable-static \
-            --docdir=/usr/share/doc/gettext-0.22
-

- Скомпилируйте пакет: -

-
make
-

- Чтобы протестировать пакет (это занимает много времени, около 3 - SBU), выполните: -

-
make check
-

- Установите пакет: -

-
make install
-chmod -v 0755 /usr/lib/preloadable_libintl.so
-
-
-

- 8.32.2. - Содержимое пакета Gettext -

-
-
-
- Установленные программы: - autopoint, envsubst, gettext, gettext.sh, - gettextize, msgattrib, msgcat, msgcmp, msgcomm, msgconv, msgen, - msgexec, msgfilter, msgfmt, msggrep, msginit, msgmerge, - msgunfmt, msguniq, ngettext, recode-sr-latin, и xgettext -
-
- Установленные библиотеки: - libasprintf.so, libgettextlib.so, - libgettextpo.so, libgettextsrc.so, libtextstyle.so и - preloadable_libintl.so -
-
- Созданные каталоги: - /usr/lib/gettext, - /usr/share/doc/gettext-0.22, /usr/share/gettext и - /usr/share/gettext-0.22 -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

- autopoint -

-
-

- Копирует файлы стандартной инфраструктуры Gettext в пакет - с исходным кодом -

-
-

- envsubst -

-
-

- Подставляет переменные окружения в строки, используемые - командной оболочкой -

-
-

- gettext -

-
-

- Переводит сообщение с естественного языка на язык - пользователя, осуществляя для этого поиск уже сделанного - перевода в каталоге сообщений -

-
-

- gettext.sh -

-
-

- В основном служит библиотекой функций оболочки для - gettext. -

-
-

- gettextize -

-
-

- Копирует все стандартные файлы Gettext в указанный - каталог верхнего уровня пакета, чтобы начать его - интернационализацию. -

-
-

- msgattrib -

-
-

- Фильтрует сообщения каталога переводов в соответствии с - их атрибутами и управляет атрибутами -

-
-

- msgcat -

-
-

- Объединяет указанные файлы .po -

-
-

- msgcmp -

-
-

- Сравнивает два файла .po, - чтобы проверить, что оба содержат один и тот же набор - строк msgid -

-
-

- msgcomm -

-
-

- Находит сообщения, которые являются общими для указанных - файлов .po -

-
-

- msgconv -

-
-

- Преобразует каталог переводов в другую кодировку символов -

-
-

- msgen -

-
-

- Создает каталог переводов на английский язык -

-
-

- msgexec -

-
-

- Применяет команду ко всем переводам каталога переводов -

-
-

- msgfilter -

-
-

- Применяет фильтр ко всем переводам каталога переводов -

-
-

- msgfmt -

-
-

- Генерирует каталог двоичных сообщений из каталога - переводов -

-
-

- msggrep -

-
-

- Извлекает все сообщения каталога переводов, которые - соответствуют заданному шаблону или принадлежат - нескольким указанным исходным файлам -

-
-

- msginit -

-
-

- Создает новый файл .po, - инициализируя метаинформацию значениями из среды - пользователя. -

-
-

- msgmerge -

-
-

- Объединяет два необработанных перевода в один файл -

-
-

- msgunfmt -

-
-

- Декомпилирует каталог двоичных сообщений в необработанный - текст перевода -

-
-

- msguniq -

-
-

- Объединяет дублирующиеся переводы в каталоге переводов -

-
-

- ngettext -

-
-

- Отображает перевод текстового сообщения на родной язык, - грамматическая форма которого зависит от числа. -

-
-

- recode-sr-latin -

-
-

- Перекодирует сербский текст с кириллицы на латиницу. -

-
-

- xgettext -

-
-

- Извлекает переводимые строки сообщений из заданных - исходных файлов для создания первого шаблона перевода. -

-
-

- libasprintf -

-
-

- Определяет класс autosprintf, который делает - подпрограммы вывода в формате C пригодными для - использования в программах на C++ для использования со - строками <string> и потоками - <iostream> -

-
-

- libgettextlib -

-
-

- Содержит общие подпрограммы, используемые различными - программами Gettext; они не предназначены для общего - использования -

-
-

- libgettextpo -

-
-

- Используется для написания специализированных программ, - обрабатывающих файлы .po; - эта библиотека используется, когда стандартных - приложений, поставляемых с Gettext (таких как - msgcomm, - msgcmp, - msgattrib, - и msgen), - недостаточно. -

-
-

- libgettextsrc -

-
-

- Предоставляет общие подпрограммы, используемые различными - программами Gettext; они не предназначены для общего - использования -

-
-

- libtextstyle -

-
-

- Библиотека стилей текста -

-
-

- preloadable_libintl -

-
-

- Библиотека, предназначенная для использования LD_PRELOAD, - которая помогает libintl - записывать в журнал непереведённые сообщения -

-
-
-
-
- - - diff --git a/lfs-12.0-sysv/chapter08/glibc.html b/lfs-12.0-sysv/chapter08/glibc.html deleted file mode 100644 index c0a7dbb..0000000 --- a/lfs-12.0-sysv/chapter08/glibc.html +++ /dev/null @@ -1,1229 +0,0 @@ - - - - - - 8.5. Glibc-2.38 - - - - - - - - -
-

- 8.5. Glibc-2.38 -

-
-

- Пакет Glibc содержит основную библиотеку C. Эта библиотека - предоставляет основные процедуры для выделения памяти, поиска в - каталогах, открытия и закрытия файлов, чтения и записи файлов, - обработки строк, сопоставления с образцом, арифметики и так далее -

-
-
-
- Приблизительное время сборки: - 11 SBU -
-
- Требуемое дисковое - пространство: 3.0 GB -
-
-
-
-
-

- 8.5.1. Установка пакета Glibc -

-

- Некоторые программы Glibc используют не совместимый с FHS каталог - /var/db для хранения своих данных во - время выполнения. Примените следующий патч, чтобы эти программы - хранили свои данные в каталогах, совместимых с FHS: -

-
patch -Np1 -i ../glibc-2.38-fhs-1.patch
-

- Теперь исправьте регрессию, из-за которой функция posix_memalign() - в некоторых условиях работала очень медленно: -

-
patch -Np1 -i ../glibc-2.38-memalign_fix-1.patch
-

- Документация Glibc рекомендует выполнять компиляцию в отдельном - каталоге: -

-
mkdir -v build
-cd       build
-

- Убедитесь, что утилиты ldconfig и sln будут установлены в - /usr/sbin: -

-
echo "rootsbindir=/usr/sbin" > configparms
-

- Подготовьте Glibc к компиляции: -

-
../configure --prefix=/usr                            \
-             --disable-werror                         \
-             --enable-kernel=4.14                     \
-             --enable-stack-protector=strong          \
-             --with-headers=/usr/include              \
-             libc_cv_slibdir=/usr/lib
-
-

- Значение параметров настройки: -

-
-
- --disable-werror -
-
-

- Отключает параметр -Werror, передаваемый GCC. Это необходимо - для запуска набора тестов. -

-
-
- --enable-kernel=4.14 -
-
-

- Этот параметр сообщает системе сборки, что Glibc может - использоваться с ядрами старше 4.14. Это значение - используется для создание обходных путей на случай, если - системный вызов, представленный в более поздней версии, - нельзя будет использовать. -

-
-
- --enable-stack-protector=strong -
-
-

- Этот параметр повышает безопасность системы за счет - добавления дополнительного кода для проверки переполнения - буфера. -

-
-
- --with-headers=/usr/include -
-
-

- Сообщает системе сборки местоположение заголовочных файлов - API ядра -

-
-
- libc_cv_slibdir=/usr/lib -
-
-

- Эта переменная устанавливает правильную библиотеку для всей - системы. Мы не хотим, чтобы использовалась lib64 -

-
-
-
-

- Скомпилируйте пакет: -

-
make
-
- [Важно] -

- Важно -

-

- В этом разделе набор тестов для Glibc считается критически - важным. Ни в коем случае не пропускайте его. -

-
-

- Как правило, несколько тестов не проходят. Ошибки тестирования, - перечисленные ниже, можно игнорировать. -

-
make check
-

- Вы можете увидеть, что ряд тестов завершились неудачей. Набор - тестов Glibc в некоторой степени зависит от хост-системы. Несколько - ошибок из более чем 5000 тестов можно игнорировать. Список наиболее - распространенных проблем последних версий LFS: -

-
-
    -
  • -

    - Известно, что io/tst-lchmod не работает в среде - chroot LFS. -

    -
  • -
  • -

    - Известно что тест stdlib/tst-arc4random-thread - завершается неудачей, если ядро хоста относительно старое. -

    -
  • -
  • -

    - Некоторые тесты, например, nss/tst-nss-files-hosts-multi не - работают на относительно медленных системах из-за внутреннего - тайм-аута. -

    -
  • -
  • -

    - Кроме того, некоторые тесты могут завершиться неудачно при - использовании относительно старой модели процессора или - версии ядра хоста. -

    -
  • -
-
-

- На этапе установки Glibc будет жаловаться на отсутствие файла - /etc/ld.so.conf, хотя это безобидное - сообщение, предотвратить его появление можно с помощью команды: -

-
touch /etc/ld.so.conf
-

- Исправьте Makefile, чтобы пропустить устаревшую проверку - работоспособности, которая завершается неудачей в современной - конфигурации Glibc: -

-
sed '/test-installation/s@$(PERL)@echo not running@' -i ../Makefile
-

- Установите пакет: -

-
make install
-

- Исправьте жестко заданный путь к исполняемому загрузчику в скрипте - ldd: -

-
sed '/RTLDLIST=/s@/usr@@g' -i /usr/bin/ldd
-

- Установите файл настроек и создайте рабочий каталог nscd: -

-
cp -v ../nscd/nscd.conf /etc/nscd.conf
-mkdir -pv /var/cache/nscd
-

- Затем установите локали, которые дадут возможность системе отвечать - на разных языках. Ни одна из локалей не требуется системе, но если - некоторые из них отсутствуют, то наборы тестов ряда пакетов будут - пропускать важные тестовые сценарии. -

-

- Отдельные локали можно установить с помощью программы localedef. Например, вторая - команда localedef - приведенная ниже, объединяет определение независимой от набора - символов локали /usr/share/i18n/locales/cs_CZ с набором символов - /usr/share/i18n/charmaps/UTF-8.gz и - добавляет результат в файл /usr/lib/locale/locale-archive. Следующие - инструкции установят минимальный набор локалей, необходимый для - оптимального охвата тестов -

-
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 ISO-8859-1 en_GB
-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_ES -f ISO-8859-15 es_ES@euro
-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 is_IS -f ISO-8859-1 is_IS
-localedef -i is_IS -f UTF-8 is_IS.UTF-8
-localedef -i it_IT -f ISO-8859-1 it_IT
-localedef -i it_IT -f ISO-8859-15 it_IT@euro
-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.SJIS 2> /dev/null || true
-localedef -i ja_JP -f UTF-8 ja_JP.UTF-8
-localedef -i nl_NL@euro -f ISO-8859-15 nl_NL@euro
-localedef -i ru_RU -f KOI8-R ru_RU.KOI8-R
-localedef -i ru_RU -f UTF-8 ru_RU.UTF-8
-localedef -i se_NO -f UTF-8 se_NO.UTF-8
-localedef -i ta_IN -f UTF-8 ta_IN.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
-localedef -i zh_TW -f UTF-8 zh_TW.UTF-8
-

- Кроме того, установите локаль для вашей страны, языка и набора - символов. -

-

- В качестве альтернативы, установите сразу все локали перечисленные - в файле glibc-2.38/localedata/SUPPORTED (он включает все - локали из списка выше и многие другие), выполнив команду: -

-
make localedata/install-locales
-

- Затем используйте команду localedef для создания и - установки локалей, не перечисленных в файле glibc-2.38/localedata/SUPPORTED, когда они вам - понадобятся. Например, для некоторых тестов в этой главе - потребуются следующие две локали: -

-
localedef -i POSIX -f UTF-8 C.UTF-8 2> /dev/null || true
-localedef -i ja_JP -f SHIFT_JIS ja_JP.SJIS 2> /dev/null || true
-
- [Примечание] -

- Примечание -

-

- Glibc теперь использует libidn2 для разрешения - интернационализированных доменных имен. Если такая функция - необходима, то инструкцию по установке libidn2 можно найти на - странице - BLFS libidn2. -

-
-
-
-

- 8.5.2. Настройка Glibc -

-
-

- 8.5.2.1. Добавление nsswitch.conf -

-

- Необходимо создать файл /etc/nsswitch.conf, потому что настроенный по - умолчанию Glibc плохо работает в сетевой среде. -

-

- Создайте новый фай /etc/nsswitch.conf, выполнив следующие - действия: -

-
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
-
-
-

- 8.5.2.2. Добавление данных о часовом поясе -

-

- Установите и настройте часовой пояс следующим образом: -

-
tar -xf ../../tzdata2023c.tar.gz
-
-ZONEINFO=/usr/share/zoneinfo
-mkdir -pv $ZONEINFO/{posix,right}
-
-for tz in etcetera southamerica northamerica europe africa antarctica  \
-          asia australasia backward; 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
-
-

- Значение команд zic: -

-
-
- zic -L - /dev/null ... -
-
-

- Создаёт часовые пояса posix без секунд координации. Обычно - их помещают как в zoneinfo - так и в zoneinfo/posix. - Часовые пояса POSIX должны быть прописаны в zoneinfo, иначе различные тесты будут - сообщать об ошибках. На встраиваемых системах с небольшим - диском, где часовые пояса никогда не будут обновляться, - можно сэкономить примерно 1.9 MB не используя каталог - posix, однако некоторые - приложения или наборы тестов могут вызывать сбои. -

-
-
- zic -L - leapseconds ... -
-
-

- Создаёт правильные часовые пояса с секундами координации. - На встраиваемых системах с небольшим диском, где часовые - пояса никогда не будут обновляться, а правильность времени - неважна, можно выиграть примерно 1.9 MB, исключив каталог - right. -

-
-
- zic ... -p - ... -
-
-

- Создаёт файл posixrules. - Используется New York, потому что POSIX требует - соответствия правил летнего времени с правилами США. -

-
-
-
-

- Один из способов определить местный часовой пояс — запустить - следующий скрипт: -

-
tzselect
-

- После нескольких вопросов о местоположении скрипт выдаст - наименование часового пояса (например America/Edmonton). В файле - /usr/share/zoneinfo перечислены и - другие возможные часовые пояса, такие как Canada/Eastern или EST5EDT, которые не распознаются - скриптом, но могут быть использованы. -

-

- Создайте файл /etc/localtime - выполнив: -

-
ln -sfv /usr/share/zoneinfo/<xxx> /etc/localtime
-

- Замените <xxx> на - имя выбранного часового пояса (например, Europe/Moscow). -

-
-
-

- 8.5.2.3. Настройка - динамического загрузчика -

-

- По умолчанию, динамический загрузчик (/lib/ld-linux.so.2) ищет в каталоге - /usr/lib, нужные для работы - программ библиотеки. Однако, если библиотеки находятся в другом - каталоге, то его необходимо указать в файле /etc/ld.so.conf, чтобы динамический загрузчик - мог их найти. Два каталога - /usr/local/lib и /opt/lib часто используются для дополнительных - библиотек, поэтому добавьте их в пути поиска для динамического - загрузчика. -

-

- Создайте новый файл /etc/ld.so.conf - выполнив: -

-
cat > /etc/ld.so.conf << "EOF"
-# Begin /etc/ld.so.conf
-/usr/local/lib
-/opt/lib
-
-EOF
-

- Динамический загрузчик может выполнить поиск в каталоге и - включить содержимое найденных там файлов. Обычно такие файлы - состоят из одной строки и содержат путь к библиотеке. Чтобы - добавить эту возможность, выполните следующие команды: -

-
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
-
-
-
-

- 8.5.3. Содержимое - пакета Glibc -

-
-
-
- Установленные программы: - gencat, getconf, getent, iconv, - iconvconfig, ldconfig, ldd, lddlibc4, ld.so (symlink to - ld-linux-x86-64.so.2 or ld-linux.so.2), locale, localedef, - makedb, mtrace, nscd, pcprofiledump, pldd, sln, sotruss, sprof, - tzselect, xtrace, zdump и zic -
-
- Установленные библиотеки: - ld-linux-x86-64.so.2, ld-linux.so.2, - libBrokenLocale.{a,so}, libanl.{a,so}, libc.{a,so}, - libc_nonshared.a, libc_malloc_debug.so, libdl.{a,so.2}, libg.a, - libm.{a,so}, libmcheck.a, libmemusage.so, libmvec.{a,so}, - libnsl.so.1, libnss_compat.so, libnss_dns.so, libnss_files.so, - libnss_hesiod.so, libpcprofile.so, libpthread.{a,so.0}, - libresolv.{a,so}, librt.{a,so.1}, libthread_db.so и - libutil.{a,so.1} -
-
- Созданные каталоги: - /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/sys, /usr/lib/audit, - /usr/lib/gconv, /usr/lib/locale, /usr/libexec/getconf, - /usr/share/i18n, /usr/share/zoneinfo, /var/cache/nscd и - /var/lib/nss_db -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

- gencat -

-
-

- Создает каталоги сообщений -

-
-

- getconf -

-
-

- Отображает настройки системы для специфичных переменных - файловой системы -

-
-

- getent -

-
-

- Получает записи из административной базы данных -

-
-

- iconv -

-
-

- Выполняет преобразование набора символов -

-
-

- iconvconfig -

-
-

- Создает быстрозагружаемые файлы настроек модуля - iconv -

-
-

- ldconfig -

-
-

- Настраивает привязки времени выполнения динамического - компоновщика -

-
-

- ldd -

-
-

- Сообщает, какие общие библиотеки требуются каждой - программе или общей библиотеке -

-
-

- lddlibc4 -

-
-

- Помогает ldd работать с - объектными файлами. Он не существует на более новых - архитектурах, таких как x86_64 -

-
-

- locale -

-
-

- Выводит различную информацию о текущей локали -

-
-

- localedef -

-
-

- Компилирует спецификации локали -

-
-

- makedb -

-
-

- Создает простую базу данных на основе текстового ввода -

-
-

- mtrace -

-
-

- Читает и интерпретирует файл трассировки памяти; - отображает сводку в удобочитаемом формате -

-
-

- nscd -

-
-

- Демон, который обеспечивает кеширование наиболее - распространенных запросов к службе имен -

-
-

- pcprofiledump -

-
-

- Создает дамп информации, генерируемой при профилировании - ПК -

-
-

- pldd -

-
-

- Перечисляет динамические общие объекты, используемые - запущенными процессами. -

-
-

- sln -

-
-

- Статически скомпонованная программа ln -

-
-

- sotruss -

-
-

- Отслеживает вызовы процедур общей библиотеки указанной - команды -

-
-

- sprof -

-
-

- Читает и отображает данные профилирования общих объектов. -

-
-

- tzselect -

-
-

- Запрашивает у пользователя информацию о текущем - местоположении системы и выводит описание - соответствующего часового пояса. -

-
-

- xtrace -

-
-

- Отслеживает выполнение программы, отображая выполняемую в - данный момент функцию -

-
-

- zdump -

-
-

- Выдает дамп часового пояса -

-
-

- zic -

-
-

- Компилятор часовых поясов -

-
-

- ld-*.so -

-
-

- Вспомогательная программа для исполняемых файлов общей - библиотеки -

-
-

- libBrokenLocale -

-
-

- Используется внутри Glibc как грубый хак для запуска - сломанных программ (например, некоторые приложения - Motif). Прочитайте комментарии в glibc-2.38/locale/broken_cur_max.c для - получения дополнительной информации -

-
-

- libanl -

-
-

- Библиотека-заглушка, не содержащая функций. Ранее это - была библиотека асинхронного поиска имен, функции которой - теперь находятся в libc -

-
-

- libc -

-
-

- Основная библиотека C -

-
-

- libc_malloc_debug -

-
-

- Включает проверку выделения памяти при предварительной - загрузке -

-
-

- libdl -

-
-

- Библиотека-заглушка, не содержащая функций. Ранее была - библиотекой интерфейса динамической компоновки, функции - которой теперь находятся в libc -

-
-

- libg -

-
-

- Библиотека-заглушка без функций. Раньше была библиотекой - среды выполнения для g++ -

-
-

- libm -

-
-

- Математическая библиотека -

-
-

- libmvec -

-
-

- Библиотека векторных математических вычислений, - подключаемая по мере необходимости при использовании - libm -

-
-

- libmcheck -

-
-

- Включает проверку выделения памяти при подключении к -

-
-

- libmemusage -

-
-

- Используется memusage для сбора - информации об использовании памяти программой -

-
-

- libnsl -

-
-

- Библиотека сетевых служб, которая в настоящее время - устарела -

-
-

- libnss_* -

-
-

- Модули Name Service Switch, содержащие функции для - разрешения имен хостов, имен пользователей, имен групп, - псевдонимов, служб, протоколов и т. д. Загружаются - libc в соответствии с - конфигурацией в /etc/nsswitch.conf -

-
-

- libpcprofile -

-
-

- Содержит функции профилирования, используемые для - отслеживания времени, потраченного процессором в - конкретных строках исходного кода -

-
-

- libpthread -

-
-

- Библиотека-заглушка, не содержащая функций. Ранее - содержала функции, обеспечивающие большинство - интерфейсов, заданных POSIX.1c Threads Extensions - (расширения реализации потоков) и интерфейсы семафоров, - указанных в POSIX.1b Real-time Extension (расширения - реального времени), теперь эти функции находятся в - libc -

-
-

- libresolv -

-
-

- Содержит функции создания, пересылки и интерпретации - пакетов, используемых на серверах доменных имен в сети - интернет -

-
-

- librt -

-
-

- Содержит функции, реализующие большую часть интерфейсов, - определяемых в POSIX.1b Real-time Extension (расширения - реального времени) -

-
-

- libthread_db -

-
-

- Содержит функции, полезные для сборки отладчиков для - многопоточных программ -

-
-

- libutil -

-
-

- Библиотека-заглушка, не содержащая функций. Ранее - содержал код для «стандартных» функций, используемых - во многих утилитах Unix. Эти функции теперь находятся в - libc -

-
-
-
-
- - - diff --git a/lfs-12.0-sysv/chapter08/gmp.html b/lfs-12.0-sysv/chapter08/gmp.html deleted file mode 100644 index 7c1e03d..0000000 --- a/lfs-12.0-sysv/chapter08/gmp.html +++ /dev/null @@ -1,268 +0,0 @@ - - - - - - 8.19. GMP-6.3.0 - - - - - - - - -
-

- 8.19. GMP-6.3.0 -

-
-

- Пакет GMP содержит математические библиотеки. Они содержат полезные - функции для арифметики с произвольной точностью. -

-
-
-
- Приблизительное время сборки: - 0.3 SBU -
-
- Требуемое дисковое - пространство: 54 MB -
-
-
-
-
-

- 8.19.1. Установка пакета GMP -

-
- [Примечание] -

- Примечание -

-

- Если вы выполняете сборку для 32-разрядной архитектуры x86, но - ваш процессор, способен выполнять 64-разрядный код, и вы указали в переменных окружения - CFLAGS, скрипт configure попытается - выполнить настройку для 64-разрядной системы и завершится - ошибкой. Чтобы избежать этого, необходимо вызвать команду - configure с приведенным ниже параметром -

-
ABI=32 ./configure ...
-
-
- [Примечание] -

- Примечание -

-

- Настройки GMP по умолчанию собирают библиотеки, оптимизированные - для процессора хоста. Если требуются библиотеки, подходящие для - процессоров с меньшей производительностью, чем у процессора - хоста, можно собрать общие библиотеки, добавив параметр - --host=none-linux-gnu в команде - configure. -

-
-

- Подготовьте GMP к компиляции: -

-
./configure --prefix=/usr    \
-            --enable-cxx     \
-            --disable-static \
-            --docdir=/usr/share/doc/gmp-6.3.0
-
-

- Значение новых параметров настройки: -

-
-
- --enable-cxx -
-
-

- Этот параметр включает поддержку C++ -

-
-
- --docdir=/usr/share/doc/gmp-6.3.0 -
-
-

- Эта переменная указывает местоположение для документации. -

-
-
-
-

- Скомпилируйте пакет и сгенерируйте HTML-документацию: -

-
make
-make html
-
- [Важно] -

- Важно -

-

- Набор тестов для GMP в этом разделе считается критически важным. - Ни в коем случае не пропускайте его. -

-
-

- Проверьте результаты: -

-
make check 2>&1 | tee gmp-check-log
-
- [Внимание] -

- Внимание -

-

- Код в GMP сильно оптимизирован для процессора, на котором он - собран. Иногда код, определяющий процессор, неверно определяет - возможности системы, и в тестах или других приложениях, - использующих библиотеки gmp, возникают ошибки с сообщением - "Illegal instruction". В этом случае gmp следует - переконфигурировать с параметром --host=none-linux-gnu и пересобрать. -

-
-

- Убедитесь, что все 199 тестов в наборе тестов пройдены. Проверьте - результат, выполнив следующую команду: -

-
awk '/# PASS:/{total+=$3} ; END{print total}' gmp-check-log
-

- Установите пакет и его документацию: -

-
make install
-make install-html
-
-
-

- 8.19.2. Содержимое - пакета GMP -

-
-
-
- Установленные библиотеки: - libgmp.so и libgmpxx.so -
-
- Созданные каталоги: - /usr/share/doc/gmp-6.3.0 -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - - - - - -
-

- libgmp -

-
-

- Содержит точные математические функции -

-
-

- libgmpxx -

-
-

- Содержит точные математические функции C++ -

-
-
-
-
- - - diff --git a/lfs-12.0-sysv/chapter08/gperf.html b/lfs-12.0-sysv/chapter08/gperf.html deleted file mode 100644 index 0448165..0000000 --- a/lfs-12.0-sysv/chapter08/gperf.html +++ /dev/null @@ -1,163 +0,0 @@ - - - - - - 8.38. Gperf-3.1 - - - - - - - - -
-

- 8.38. Gperf-3.1 -

-
-

- Gperf генерирует идеальную хэш-функцию из набора ключей. -

-
-
-
- Приблизительное время сборки: - менее 0.1 SBU -
-
- Требуемое дисковое - пространство: 6.1 MB -
-
-
-
-
-

- 8.38.1. Установка пакета Gperf -

-

- Подготовьте Gperf к компиляции: -

-
./configure --prefix=/usr --docdir=/usr/share/doc/gperf-3.1
-

- Скомпилируйте пакет: -

-
make
-

- Известно, что тесты завершаются ошибкой при одновременном - выполнении нескольких тестов (параметр -j больше 1). Для выполнения - тестов, запустите следующую команду: -

-
make -j1 check
-

- Установите пакет: -

-
make install
-
-
-

- 8.38.2. Содержимое - пакета Gperf -

-
-
-
- Установленные программы: - gperf -
-
- Созданные каталоги: - /usr/share/doc/gperf-3.1 -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - -
-

- gperf -

-
-

- Генерирует идеальный хэш из набора ключей -

-
-
-
-
- - - diff --git a/lfs-12.0-sysv/chapter08/grep.html b/lfs-12.0-sysv/chapter08/grep.html deleted file mode 100644 index 6c06629..0000000 --- a/lfs-12.0-sysv/chapter08/grep.html +++ /dev/null @@ -1,195 +0,0 @@ - - - - - - 8.34. Grep-3.11 - - - - - - - - -
-

- 8.34. Grep-3.11 -

-
-

- Пакет Grep содержит программы для поиска по содержимому файлов. -

-
-
-
- Приблизительное время сборки: - 0.4 SBU -
-
- Требуемое дисковое - пространство: 39 MB -
-
-
-
-
-

- 8.34.1. Установка пакета Grep -

-

- Во-первых, удалите предупреждение об использовании egrep и fgrep, - которое приводит к сбою тестов некоторых пакетов: -

-
sed -i "s/echo/#echo/" src/egrep.sh
-

- Подготовьте Grep к компиляции: -

-
./configure --prefix=/usr
-

- Скомпилируйте пакет: -

-
make
-

- Чтобы протестировать пакет, выполните: -

-
make check
-

- Установите пакет: -

-
make install
-
-
-

- 8.34.2. Содержимое - пакета Grep -

-
-
-
- Установленные программы: - egrep, fgrep, и grep -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - - - - - - - - - -
-

- egrep -

-
-

- Выводит строки, соответствующие расширенному регулярному - выражению. Команда устарела, вместо неё используйте - grep -E -

-
-

- fgrep -

-
-

- Выводит строки, соответствующие списку фиксированных - строк. Команда устарела, вместо неё используйте - grep -F -

-
-

- grep -

-
-

- Выводит строки, соответствующие простому регулярному - выражению -

-
-
-
-
- - - diff --git a/lfs-12.0-sysv/chapter08/groff.html b/lfs-12.0-sysv/chapter08/groff.html deleted file mode 100644 index 0af3b31..0000000 --- a/lfs-12.0-sysv/chapter08/groff.html +++ /dev/null @@ -1,897 +0,0 @@ - - - - - - 8.61. Groff-1.23.0 - - - - - - - - -
-

- 8.61. Groff-1.23.0 -

-
-

- Пакет Groff содержит программы для обработки и форматирования - текста и изображений. -

-
-
-
- Приблизительное время сборки: - 0.2 SBU -
-
- Требуемое дисковое - пространство: 107 MB -
-
-
-
-
-

- 8.61.1. Установка пакета Groff -

-

- Groff ожидает, что переменная окружения PAGE будет содержать размер бумаги по умолчанию. Для - пользователей из США подходит PAGE=letter. Для других стран больше - подойдет PAGE=A4. Хотя - формат бумаги по умолчанию настраивается во время компиляции, его - можно переопределить позже, записав «A4» или «letter» в файл - /etc/papersize. -

-

- Подготовьте Groff к компиляции: -

-
PAGE=<paper_size> ./configure --prefix=/usr
-

- Соберите пакет: -

-
make
-

- Чтобы протестировать пакет, выполните: -

-
make check
-

- Установите пакет: -

-
make install
-
-
-

- 8.61.2. Содержимое - пакета Groff -

-
-
-
- Установленные программы: - 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 и - troff -
-
- Созданные каталоги: - /usr/lib/groff и - /usr/share/doc/groff-1.23.0, /usr/share/groff -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

- addftinfo -

-
-

- Читает файл шрифта troff и добавляет некоторую - дополнительную информацию о метрике шрифта, используемую - системой groff. -

-
-

- afmtodit -

-
-

- Создаёт файл шрифта для использования с groff и grops -

-
-

- chem -

-
-

- Препроцессор Groff для создания диаграмм химических - структур -

-
-

- eqn -

-
-

- Компилирует описания уравнений, имеющихся внутри входных - файлов troff, которые понятны troff -

-
-

- eqn2graph -

-
-

- Преобразует a troff EQN (уравнение) во фрагмент - изображения -

-
-

- gdiffmk -

-
-

- Отображает различия между файлами groff/nroff/troff -

-
-

- glilypond -

-
-

- Преобразует ноты, записанные на языке lilypond в язык - groff -

-
-

- gperl -

-
-

- Препроцессор для groff, позволяющий вставлять код perl в - файлы groff -

-
-

- gpinyin -

-
-

- Препроцессор groff, позволяющий вставлять Pinyin (запись - звуков китайского языка с помощью латинского алфавита) в - файлы groff. -

-
-

- grap2graph -

-
-

- Преобразует диаграммы grap во фрагмент растрового - изображения (grap - это старый язык программирования Unix - для создания диаграмм) -

-
-

- grn -

-
-

- Препроцессор groff для файлов - gremlin -

-
-

- grodvi -

-
-

- Драйвер для groff, создающий - выходные файлы в формате TeX dvi -

-
-

- groff -

-
-

- Внешний интерфейс к системе форматирования документов - groff; обычно он запускает программу troff и постпроцессор, - соответствующий выбранному устройству -

-
-

- groffer -

-
-

- Отображает файлы groff и справочные страницы на - терминалах X и tty -

-
-

- grog -

-
-

- Читает файлы и пытается определить, какие из параметров - groff - -e, -man, -me, - -mm, -ms, -p, - -s, или -t требуются для печати файлов, и - указывает команду groff с этими - параметрами -

-
-

- grolbp -

-
-

- Драйвер groff для принтеров - Canon CAPSL (лазерные принтеры серий LBP-4 и LBP-8) -

-
-

- grolj4 -

-
-

- Драйвер для groff который выводит - результат в формате PCL5, подходящем для принтера HP - LaserJet 4 -

-
-

- gropdf -

-
-

- Переводит выходные данные GNU troff в формат PDF -

-
-

- grops -

-
-

- Переводит выходные данные GNU troff в формат - PostScript -

-
-

- grotty -

-
-

- Переводит вывод GNU troff в форму, - подходящую для устройств, подобных пишущим машинкам. -

-
-

- hpftodit -

-
-

- Создает файл шрифта для использования с groff -Tlj4 из файла - метрик шрифта для HP -

-
-

- indxbib -

-
-

- Создает инвертированный индекс для библиографических баз - данных для указанного файла, используемый с refer, lookbib, и lkbib -

-
-

- lkbib -

-
-

- Выполняет поиск в библиографических базах данных ссылок, - содержащих указанные ключи, и сообщает о любых найденных - ссылках -

-
-

- lookbib -

-
-

- Выводит приглашение при наличии стандартной ошибки (если - устройство стандартного ввода не является терминалом), - читает из устройства стандартного ввода строку, в которой - находится набор ключевых слов, ищет в библиографической - базе данных для указанного файла ссылки, содержащие эти - ключевые слова, выводит все ссылки, найденные в - стандартном выводе и повторяет этот процесс до тех пор, - пока не завершится входной поток -

-
-

- mmroff -

-
-

- Простой препроцессор для groff -

-
-

- neqn -

-
-

- Форматирует уравнения для их вывода в формате American - Standard Code for Information Interchange (ASCII) -

-
-

- nroff -

-
-

- Скрипт, который эмулирует команду nroff с помощью - groff -

-
-

- pdfmom -

-
-

- Это обертка над groff которая упрощает создание - PDF-документов из файлов, отформатированных с помощью - макросов mom. -

-
-

- pdfroff -

-
-

- Создает pdf-документы с помощью groff -

-
-

- pfbtops -

-
-

- Преобразует шрифт PostScript в формате .pfb в формат ASCII -

-
-

- pic -

-
-

- Компилирует описания изображений, вставленных во входные - файлы troff или TeX, в команды, понятные TeX или - troff -

-
-

- pic2graph -

-
-

- Преобразует диаграмму PIC во фрагмент изображения -

-
-

- post-grohtml -

-
-

- Переводит выходной поток GNU troff в HTML -

-
-

- preconv -

-
-

- Преобразует кодировку входных файлов в формат, понимаемый - GNU troff -

-
-

- pre-grohtml -

-
-

- Переводит выходной поток GNU troff в HTML -

-
-

- refer -

-
-

- Копирует содержимое файла в стандартный вывод, кроме тех - символов, которые расположены между .[ и .] и интерпретируются как - цитаты, и кроме строк между .R1 и .R2, которые интерпретируются - как команды, указывающие как цитаты должны быть - обработаны -

-
-

- roff2dvi -

-
-

- Преобразует файлы roff в формат DVI -

-
-

- roff2html -

-
-

- Преобразует файлы roff в формат HTML -

-
-

- roff2pdf -

-
-

- Преобразует файлы roff в формат PDF -

-
-

- roff2ps -

-
-

- Преобразует файлы roff в файлы ps -

-
-

- roff2text -

-
-

- Преобразует файлы roff в текстовые файлы -

-
-

- roff2x -

-
-

- Преобразует файлы roff в другие форматы -

-
-

- soelim -

-
-

- Читает файлы и заменяет строки вида .so file содержимым указанного - файла file -

-
-

- tbl -

-
-

- Компилирует описания таблиц, вставленные во входные файлы - troff, в команды, понимаемые troff -

-
-

- tfmtodit -

-
-

- Создает файл шрифта для использования с groff -Tdvi -

-
-

- troff -

-
-

- Полностью совместим с Unix troff; его следует - вызывать с помощью команды groff, которая также - будет запускать препроцессоры и постпроцессоры в - соответствующем порядке и с соответствующими параметрами -

-
-
-
-
- - - diff --git a/lfs-12.0-sysv/chapter08/grub.html b/lfs-12.0-sysv/chapter08/grub.html deleted file mode 100644 index 70ab88c..0000000 --- a/lfs-12.0-sysv/chapter08/grub.html +++ /dev/null @@ -1,602 +0,0 @@ - - - - - - 8.62. GRUB-2.06 - - - - - - - - -
-

- 8.62. GRUB-2.06 -

-
-

- Пакет GRUB содержит загрузчик операционной системы от проекта GNU - (GRand Unified Bootloader). -

-
-
-
- Приблизительное время сборки: - 0.3 SBU -
-
- Требуемое дисковое - пространство: 161 MB -
-
-
-
-
-

- 8.62.1. Установка пакета GRUB -

-
- [Примечание] -

- Примечание -

-

- Если ваша система поддерживает UEFI и вы хотите загрузить LFS с - UEFI, вы можете пропустить установку этого пакета в LFS и - установить GRUB с поддержкой UEFI (и его зависимости), следуя - инструкции - из BLFS. -

-
-
- [Предупреждение] -

- Предупреждение -

-

- Сбросьте переменные окружения, которые могут повлиять на сборку: -

-
unset {C,CPP,CXX,LD}FLAGS
-

- Не пытайтесь «настраивать» этот пакет с помощью - пользовательских флагов компиляции. Этот пакет является - загрузчиком. Низкоуровневые операции в исходном коде могут быть - нарушены из-за агрессивной оптимизации. -

-
-

- Устранена проблема, приводившая к сбою grub-install, когда раздел - /boot (или корневой раздел, если - /boot не является отдельным разделом) - создается e2fsprogs-1.47.0 или более поздней версии: -

-
patch -Np1 -i ../grub-2.06-upstream_fixes-1.patch
-

- Подготовьте GRUB к компиляции: -

-
./configure --prefix=/usr          \
-            --sysconfdir=/etc      \
-            --disable-efiemu       \
-            --disable-werror
-
-

- Значение новых параметров настройки: -

-
-
- --disable-werror -
-
-

- Этот параметр позволяет завершить сборку с предупреждениями, - появившимися в более поздних версиях Flex. -

-
-
- --disable-efiemu -
-
-

- Этот параметр запрещает установку компонента, отключает - функции и некоторые программы тестирования, которые не нужны - для LFS. -

-
-
-
-

- Скомпилируйте пакет: -

-
make
-

- Запуск набора тестов не рекомендуется. Большинство тестов зависят - от пакетов, недоступных в ограниченной среде LFS. Если вы все равно - хотите запустить тесты, выполните make check. -

-

- Установите пакет: -

-
make install
-mv -v /etc/bash_completion.d/grub /usr/share/bash-completion/completions
-

- Создание загружаемой системы LFS с помощью GRUB будет обсуждаться в - Раздел 10.4, - «Использование GRUB для настройки процесса загрузки». -

-
-
-

- 8.62.2. Содержимое - пакета GRUB -

-
-
-
- Установленные программы: - 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 и - grub-syslinux2cfg -
-
- Созданные каталоги: - /usr/lib/grub, /etc/grub.d, - /usr/share/grub и /boot/grub (при первом запуске - grub-install) -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

- grub-bios-setup -

-
-

- Вспомогательная программа для grub-install -

-
-

- grub-editenv -

-
-

- Инструмент для редактирования блока окружения - (environment block) -

-
-

- grub-file -

-
-

- Проверяет, относится ли данный файл к указанному типу -

-
-

- grub-fstest -

-
-

- Инструмент для отладки драйвера файловой системы -

-
-

- grub-glue-efi -

-
-

- Объединяет 32-разрядные и 64-разрядные бинарные файлы в - один файл (для компьютеров Apple) -

-
-

- grub-install -

-
-

- Устанавливает GRUB на ваш диск -

-
-

- grub-kbdcomp -

-
-

- Скрипт, который преобразует макет xkb в макет, - распознаваемый GRUB -

-
-

- grub-macbless -

-
-

- Это аналог bless в стиле Mac для файловых систем HFS или - HFS+ (команда bless характерна для - компьютеров Apple; она делает устройство загрузочным) -

-
-

- grub-menulst2cfg -

-
-

- Преобразует GRUB Legacy menu.lst в grub.cfg для использования с GRUB 2 -

-
-

- grub-mkconfig -

-
-

- Генерирует файл grub.cfg -

-
-

- grub-mkimage -

-
-

- Создаёт загрузочный образ GRUB -

-
-

- grub-mklayout -

-
-

- Создаёт файл раскладки клавиатуры GRUB -

-
-

- grub-mknetdir -

-
-

- Подготавливает сетевой загрузочный каталог GRUB -

-
-

- grub-mkpasswd-pbkdf2 -

-
-

- Генерирует зашифрованный пароль PBKDF2 для использования - в меню загрузки -

-
-

- grub-mkrelpath -

-
-

- Создает имена системных путей относительно корня -

-
-

- grub-mkrescue -

-
-

- Создает загрузочный образ GRUB, подходящий для дискеты, - CDROM/DVD или USB-накопителя -

-
-

- grub-mkstandalone -

-
-

- Генерирует автономный образ -

-
-

- grub-ofpathname -

-
-

- Вспомогательная программа, которая выводит путь к - устройству GRUB -

-
-

- grub-probe -

-
-

- Проверяет информацию об устройстве для заданного пути или - устройства -

-
-

- grub-reboot -

-
-

- Устанавливает пункт меню в GRUB для загрузки по - умолчанию, только для следующей загрузки(однократно) -

-
-

- grub-render-label -

-
-

- Отображает .disk_label для компьютеров Apple Mac -

-
-

- grub-script-check -

-
-

- Проверяет скрипт настройки GRUB на наличие синтаксических - ошибок -

-
-

- grub-set-default -

-
-

- Устанавливает для GRUB загрузочную запись по умолчанию -

-
-

- grub-sparc64-setup -

-
-

- Вспомогательная программа для grub-setup -

-
-

- grub-syslinux2cfg -

-
-

- Преобразует файл конфигурации syslinux в формат grub.cfg -

-
-
-
-
- - - diff --git a/lfs-12.0-sysv/chapter08/gzip.html b/lfs-12.0-sysv/chapter08/gzip.html deleted file mode 100644 index e08588b..0000000 --- a/lfs-12.0-sysv/chapter08/gzip.html +++ /dev/null @@ -1,365 +0,0 @@ - - - - - - 8.63. Gzip-1.12 - - - - - - - - -
-

- 8.63. Gzip-1.12 -

-
-

- Пакет Gzip содержит программы для сжатия и распаковки файлов. -

-
-
-
- Приблизительное время сборки: - 0.3 SBU -
-
- Требуемое дисковое - пространство: 21 MB -
-
-
-
-
-

- 8.63.1. Установка пакета Gzip -

-

- Подготовьте Gzip к компиляции: -

-
./configure --prefix=/usr
-

- Скомпилируйте пакет: -

-
make
-

- Чтобы протестировать пакет, выполните: -

-
make check
-

- Установите пакет: -

-
make install
-
-
-

- 8.63.2. Содержимое - пакета Gzip -

-
-
-
- Установленные программы: - gunzip, gzexe, gzip, uncompress (жесткая - ссылка на gunzip), zcat, zcmp, zdiff, zegrep, zfgrep, zforce, - zgrep, zless, zmore и znew -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

- gunzip -

-
-

- Распаковывает gzip-файлы -

-
-

- gzexe -

-
-

- Создает самораспаковывающиеся исполняемые файлы -

-
-

- gzip -

-
-

- Сжимает файлы, используя алгоритм Lempel-Ziv (LZ77). -

-
-

- uncompress -

-
-

- Распаковывает сжатые файлы -

-
-

- zcat -

-
-

- Распаковывает указанные сжатые файлы в стандартный поток - вывода -

-
-

- zcmp -

-
-

- Запускает cmp для архивированных - файлов -

-
-

- zdiff -

-
-

- Запускает diff для архивированных - файлов -

-
-

- zegrep -

-
-

- Запускает egrep для - архивированных файлов -

-
-

- zfgrep -

-
-

- Запускает fgrep для - архивированных файлов -

-
-

- zforce -

-
-

- Принудительно устанавливает расширение .gz всем сжатым файлам, чтобы - gzip не - сжимал их снова; это может быть полезно, когда имена - файлов были обрезаны во время передачи файла -

-
-

- zgrep -

-
-

- Запускает grep для архивированных - файлов -

-
-

- zless -

-
-

- Запускает less для архивированных - файлов -

-
-

- zmore -

-
-

- Запускает more для архивированных - файлов -

-
-

- znew -

-
-

- Повторно сжимает файлы из формата compress в формат - gzip — из - .Z в .gz -

-
-
-
-
- - - diff --git a/lfs-12.0-sysv/chapter08/iana-etc.html b/lfs-12.0-sysv/chapter08/iana-etc.html deleted file mode 100644 index 9069070..0000000 --- a/lfs-12.0-sysv/chapter08/iana-etc.html +++ /dev/null @@ -1,163 +0,0 @@ - - - - - - 8.4. Iana-Etc-20230810 - - - - - - - - -
-

- 8.4. - Iana-Etc-20230810 -

-
-

- Пакет Iana-Etc предоставляет данные для сетевых служб и протоколов. -

-
-
-
- Приблизительное время сборки: - менее 0.1 SBU -
-
- Требуемое дисковое - пространство: 4.8 MB -
-
-
-
-
-

- 8.4.1. Установка пакета Iana-Etc -

-

- Для этого пакета необходимо лишь скопировать нужные файлы: -

-
cp services protocols /etc
-
-
-

- 8.4.2. - Содержимое пакета Iana-Etc -

-
-
-
- Установленные файлы: - /etc/protocols и /etc/services -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - - - - - -
-

- /etc/protocols -

-
-

- Описывает различные интернет-протоколы DARPA, которые - доступны из подсистемы TCP/IP -

-
-

- /etc/services -

-
-

- Обеспечивает сопоставление понятных текстовых имен для - интернет-сервисов с назначенными им номерами портов и - типами протоколов. -

-
-
-
-
- - - diff --git a/lfs-12.0-sysv/chapter08/inetutils.html b/lfs-12.0-sysv/chapter08/inetutils.html deleted file mode 100644 index 313e5e5..0000000 --- a/lfs-12.0-sysv/chapter08/inetutils.html +++ /dev/null @@ -1,363 +0,0 @@ - - - - - - 8.40. Inetutils-2.4 - - - - - - - - -
-

- 8.40. - Inetutils-2.4 -

-
-

- Пакет Inetutils содержит базовые программы для работы с сетью. -

-
-
-
- Приблизительное время сборки: - 0.2 SBU -
-
- Требуемое дисковое - пространство: 31 MB -
-
-
-
-
-

- 8.40.1. Установка пакета Inetutils -

-

- Подготовьте Inetutils к компиляции: -

-
./configure --prefix=/usr        \
-            --bindir=/usr/bin    \
-            --localstatedir=/var \
-            --disable-logger     \
-            --disable-whois      \
-            --disable-rcp        \
-            --disable-rexec      \
-            --disable-rlogin     \
-            --disable-rsh        \
-            --disable-servers
-
-

- Значение параметров настройки: -

-
-
- --disable-logger -
-
-

- Параметр запрещает установку программы logger, используемой - скриптами для отправки сообщений системной службе логирования - (System Log Daemon). Не устанавливайте её, т.к. Util-linux - устанавливает более свежую версию. -

-
-
- --disable-whois -
-
-

- Этот параметр отключает сборку whois-клиента Inetutils, - который устарел. Инструкции для сборки более нового клиента - whois находятся - в книге BLFS. -

-
-
- --disable-r* -
-
-

- Отключает установку устаревших программ, которые не должны - использоваться по соображениям безопасности. Функционал этих - программы можно получить установкой пакета openssh из книги BLFS. -

-
-
- --disable-servers -
-
-

- Отключает установку различных сетевых серверов, входящих в - состав пакета Inetutils. Эти серверы считаются неподходящими - для базовой системы LFS. Некоторые из них небезопасны по - своей природе и считаются надежными только в доверенных - сетях. Обратите внимание, что для многих из них доступны - более качественные замены. -

-
-
-
-

- Скомпилируйте пакет: -

-
make
-

- Чтобы протестировать пакет, выполните:: -

-
make check
-

- Установите пакет: -

-
make install
-

- Переместите программу в правильное место: -

-
mv -v /usr/{,s}bin/ifconfig
-
-
-

- 8.40.2. - Содержимое пакета Inetutils -

-
-
-
- Установленные программы: - dnsdomainname, ftp, ifconfig, hostname, - ping, ping6, talk, telnet, tftp и traceroute -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

- dnsdomainname -

-
-

- Показывает системное DNS имя -

-
-

- ftp -

-
-

- Программа для передачи файлов по протоколу FTP -

-
-

- hostname -

-
-

- Сообщает или задает имя хоста -

-
-

- ifconfig -

-
-

- Управляет сетевыми интерфейсами -

-
-

- ping -

-
-

- Отправляет пакеты эхо-запросов и сообщает, сколько - времени занимают ответы -

-
-

- ping6 -

-
-

- Версия ping - для сетей IPv6 -

-
-

- talk -

-
-

- Используется для общения с другими пользователями -

-
-

- telnet -

-
-

- Интерфейс к протоколу TELNET -

-
-

- tftp -

-
-

- Программа для передачи файлов по протоколу TFTP (Trivial - File Transfer Protocol — простой протокол передачи - файлов) -

-
-

- traceroute -

-
-

- Отслеживает маршрут, по которому проходят ваши пакеты от - хоста на которым вы работаете, к другому узлу сети, - показывая все промежуточные переходы (шлюзы) на этом - пути. -

-
-
-
-
- - - diff --git a/lfs-12.0-sysv/chapter08/intltool.html b/lfs-12.0-sysv/chapter08/intltool.html deleted file mode 100644 index 6dc318e..0000000 --- a/lfs-12.0-sysv/chapter08/intltool.html +++ /dev/null @@ -1,245 +0,0 @@ - - - - - - 8.44. Intltool-0.51.0 - - - - - - - - -
-

- 8.44. - Intltool-0.51.0 -

-
-

- Intltool — это инструмент интернационализации, используемый для - извлечения переводимых строк из исходных файлов. -

-
-
-
- Приблизительное время сборки: - менее 0.1 SBU -
-
- Требуемое дисковое - пространство: 1.5 MB -
-
-
-
-
-

- 8.44.1. Установка пакета Intltool -

-

- Сначала исправьте предупреждение, вызываемое perl-5.22 и более - поздними версиями: -

-
sed -i 's:\\\${:\\\$\\{:' intltool-update.in
-
- [Примечание] -

- Примечание -

-

- Приведенное выше регулярное выражение выглядит необычно из-за - множества слэшей. Что оно делает, так это добавляет обратную - косую черту перед правой фигурной скобкой в последовательности - '\${' в результате чего получается '\$\{'. -

-
-

- Подготовьте Intltool к компиляции: -

-
./configure --prefix=/usr
-

- Скомпилируйте пакет: -

-
make
-

- Чтобы протестировать пакет, выполните: -

-
make check
-

- Установите пакет: -

-
make install
-install -v -Dm644 doc/I18N-HOWTO /usr/share/doc/intltool-0.51.0/I18N-HOWTO
-
-
-

- 8.44.2. - Содержимое пакета Intltool -

-
-
-
- Установленные программы: - intltool-extract, intltool-merge, - intltool-prepare, intltool-update и intltoolize -
-
- Созданные каталоги: - /usr/share/doc/intltool-0.51.0 и - /usr/share/intltool -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

- intltoolize -

-
-

- Подготавливает пакет для использования intltool -

-
-

- intltool-extract -

-
-

- Генерирует заголовочные файлы, которые могут быть - прочитаны с помощью gettext -

-
-

- intltool-merge -

-
-

- Объединяет переведенные строки в файлы различных типов -

-
-

- intltool-prepare -

-
-

- Обновляет файлы pot и объединяет их с файлами перевода -

-
-

- intltool-update -

-
-

- Обновляет файлы шаблонов po и объединяет их с переводами -

-
-
-
-
- - - diff --git a/lfs-12.0-sysv/chapter08/introduction.html b/lfs-12.0-sysv/chapter08/introduction.html deleted file mode 100644 index b620bdd..0000000 --- a/lfs-12.0-sysv/chapter08/introduction.html +++ /dev/null @@ -1,174 +0,0 @@ - - - - - - 8.1. Введение - - - - - - - - -
-

- 8.1. - Введение -

-

- В этой главе мы приступаем к сборке конечной системы LFS. -

-

- Установка программного обеспечения проста. Хотя во многих случаях - инструкции по установке можно было бы сделать короче и универсальнее, - мы решили предоставить полные инструкции для каждого пакета, чтобы - свести к минимуму вероятность ошибок. Ключом к пониманию того, что - заставляет систему Linux работать, является знание того, для чего - используется каждый пакет и зачем он вам (или системе) может - понадобиться. -

-

- Мы не рекомендуем использовать оптимизации. С ними программа может - работать немного быстрее, но также они могут вызвать сложности при - компиляции и проблемы при запуске программы. Если пакет не - компилируется при использовании оптимизации, попробуйте - скомпилировать его без оптимизации и посмотрите, решает ли это - проблему. Даже если пакет компилируется при использовании - оптимизации, существует риск, что он может быть скомпилирован - неправильно из-за сложных взаимодействий между кодом и инструментами - сборки. Также обратите внимание, что параметры -march и -mtune, не - тестировались со значениями отличными от указанных в книге. Это может - вызвать проблемы с пакетами набора инструментов (Binutils, GCC и - Glibc). Небольшие потенциальные плюсы, достигаемые за счет - оптимизации, часто перевешиваются рисками. Тем кто собирает LFS - впервые рекомендуется делать это без пользовательских оптимизаций. -

-

- С другой стороны, мы сохраняем оптимизацию включенной в конфигурации - пакетов по умолчанию. Кроме того, иногда мы явно включаем - оптимизированную конфигурацию, предоставляемую пакетом, но не - включенную по умолчанию. Сопровождающие пакета уже протестировали эти - конфигурации и считают их безопасными, поэтому маловероятно, что они - сломают сборку. Как правило, конфигурация по умолчанию уже включает - параметры -O2 или -O3, поэтому результирующая система по-прежнему будет - работать очень быстро без какой-либо пользовательской оптимизации и в - то же время будет стабильной. -

-

- Перед инструкцией по установке на каждой странице представлена - информация о пакете, включая краткое описание того, что он содержит, - примерное время, необходимое для сборки, и сколько места на диске - требуется в процессе сборки. После инструкции по установке идет - список программ и библиотек (вместе с кратким описанием), которые - устанавливает пакет. -

-
- [Примечание] -

- Примечание -

-

- Для всех пакетов в Глава 8 - значения SBU и требуемое дисковое пространство указано с учетом - тестов. Значения SBU были рассчитаны с использованием четырех ядер - ЦП (-j4) для всех операций, если не указано иное. -

-
-
-

- 8.1.1. О библиотеках -

-

- Как правило, редакторы LFS не рекомендуют собирать и устанавливать - статические библиотеки. Большинство статических библиотек устарели - в современной системе Linux. Кроме того, линковка статической - библиотеки с программой может быть вредна. Если для устранения - проблемы безопасности требуется обновление библиотеки, все - программы, использующие статическую библиотеку, необходимо будет - повторно перелинковать с новой библиотекой. Поскольку использование - статических библиотек не всегда очевидно, соответствующие программы - (и процедуры, необходимые для линковки) могут быть даже неизвестны. -

-

- В инструкциях этой главы мы удаляем или отключаем установку - большинства статических библиотек. Обычно это делается путем - передачи параметра --disable-static при - выполнении configure. - Иногда необходимо использовать альтернативные методы. В некоторых - случаях, в частности в пакетах Glibc и GCC, использование - статических библиотек остается важным элементом процесса сборки - пакетов. -

-

- Более подробное обсуждение библиотек смотрите - Библиотеки: статические или общие? в книге BLFS. -

-
-
- - - diff --git a/lfs-12.0-sysv/chapter08/iproute2.html b/lfs-12.0-sysv/chapter08/iproute2.html deleted file mode 100644 index c650240..0000000 --- a/lfs-12.0-sysv/chapter08/iproute2.html +++ /dev/null @@ -1,436 +0,0 @@ - - - - - - 8.64. IPRoute2-6.4.0 - - - - - - - - -
-

- 8.64. - IPRoute2-6.4.0 -

-
-

- Пакет IPRoute2 содержит набор программ для базового и расширенного - администрирования сетей IPv4. -

-
-
-
- Приблизительное время сборки: - 0.1 SBU -
-
- Требуемое дисковое - пространство: 17 MB -
-
-
-
-
-

- 8.64.1. Установка пакета IPRoute2 -

-

- Программа arpd, - входящая в этот пакет, не будет собрана, поскольку зависит от - Berkeley DB, которая не установлена в LFS. Однако каталог и - справочная страница для arpd все равно будут установлены. - Предотвратить это можно, выполнив приведенные ниже команды. (Если - вам нужна arpd, - инструкции по компиляции Berkeley DB можно найти в книге BLFS по - адресу https://mirror.linuxfromscratch.ru/blfs/view/12.0/server/db.html.) -

-
sed -i /ARPD/d Makefile
-rm -fv man/man8/arpd.8
-

- Скомпилируйте пакет: -

-
make NETNS_RUN_DIR=/run/netns
-

- Этот пакет не содержит рабочего набора тестов. -

-

- Установите пакет: -

-
make SBINDIR=/usr/sbin install
-

- По желанию, установите документацию: -

-
mkdir -pv             /usr/share/doc/iproute2-6.4.0
-cp -v COPYING README* /usr/share/doc/iproute2-6.4.0
-
-
-

- 8.64.2. - Содержимое пакета IPRoute2 -

-
-
-
- Установленные программы: - bridge, ctstat (ссылка на lnstat), genl, - ifstat, ip, lnstat, nstat, routel, rtacct, rtmon, rtpr, rtstat - (ссылка на lnstat), ss и tc -
-
- Созданные каталоги: - /etc/iproute2, /usr/lib/tc и - /usr/share/doc/iproute2-6.4.0 -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

- bridge -

-
-

- Настраивает сетевые мосты -

-
-

- ctstat -

-
-

- Утилита состояния подключения -

-
-

- genl -

-
-

- Универсальный интерфейс утилиты netlink -

-
-

- ifstat -

-
-

- Показывает статистику интерфейса, включая количество - переданных и полученных пакетов по интерфейсам. -

-
-

- ip -

-
-

- Основной исполняемый файл. Он имеет несколько различных - функций, в том числе эти: -

-

- ip link <device> - позволяет пользователям просматривать состояние устройств - и вносить изменения -

-

- ip addr - позволяет пользователям просматривать адреса и их - свойства, добавлять новые адреса и удалять старые -

-

- ip neighbor - позволяет пользователям просматривать связи с соседями и - их свойства, добавлять новые записи и удалять старые -

-

- ip rule - позволяет пользователям просматривать политики - маршрутизации и изменять их -

-

- ip route - позволяет пользователям просматривать таблицу - маршрутизации и изменять правила таблицы маршрутизации -

-

- ip tunnel - позволяет пользователям просматривать IP-туннели и их - свойства, а также изменять их -

-

- ip maddr - позволяет пользователям просматривать multicast адреса и - их свойства и изменять их -

-

- ip mroute - позволяет пользователям устанавливать, изменять или - удалять multicast маршрутизацию. -

-

- ip monitor - позволяет пользователям постоянно отслеживать состояние - устройств, адресов и маршрутов -

-
-

- lnstat -

-
-

- Предоставляет сетевую статистику Linux; это обобщенная и - более полнофункциональная замена старой программы - rtstat -

-
-

- nstat -

-
-

- Отображает сетевую статистику -

-
-

- routel -

-
-

- Компонент ip - route для просмотра таблиц маршрутизации -

-
-

- rtacct -

-
-

- Отображает содержимое /proc/net/rt_acct -

-
-

- rtmon -

-
-

- Мониторит изменения таблицы маршрутизации -

-
-

- rtpr -

-
-

- Преобразует вывод ip - -o в удобочитаемую форму -

-
-

- rtstat -

-
-

- Утилита состояния маршрута -

-
-

- ss -

-
-

- Аналогично команде netstat показывает - активные соединения -

-
-

- tc -

-
-

- Управление трафиком для реализаций качества обслуживания - (QoS) и класса обслуживания (CoS) -

-

- tc qdisc - позволяет пользователям настроить дисциплину обработки - очередей -

-

- tc class - позволяет пользователям настраивать классы, на основе - планирования дисциплины обработки очередей -

-

- tc filter - позволяет пользователям настроить фильтрацию пакетов - QOS/COS -

-

- tc monitor - может использоваться для просмотра изменений, внесенных в - управление трафиком в ядре -

-
-
-
-
- - - diff --git a/lfs-12.0-sysv/chapter08/jinja2.html b/lfs-12.0-sysv/chapter08/jinja2.html deleted file mode 100644 index d22e5e0..0000000 --- a/lfs-12.0-sysv/chapter08/jinja2.html +++ /dev/null @@ -1,129 +0,0 @@ - - - - - - 8.73. Jinja2-3.1.2 - - - - - - - - -
-

- 8.73. - Jinja2-3.1.2 -

-
-

- Jinja2 - это модуль Python, который реализует простой язык шаблонов - pythonic -

-
-
-
- Приблизительное время сборки: - менее 0.1 SBU -
-
- Требуемое дисковое - пространство: 3.4 MB -
-
-
-
-
-

- 8.73.1. Установка пакета Jinja2 -

-

- Соберите пакет: -

-
pip3 wheel -w dist --no-build-isolation --no-deps $PWD
-

- Установите пакет: -

-
pip3 install --no-index --no-user --find-links dist Jinja2
-
-
-

- 8.73.2. - Содержимое пакета Jinja2 -

-
-
-
- Созданные каталоги: - /usr/lib/python3.11/site-packages/Jinja2-3.1.2.dist-info -
-
-
-
-
- - - diff --git a/lfs-12.0-sysv/chapter08/kbd.html b/lfs-12.0-sysv/chapter08/kbd.html deleted file mode 100644 index 4e3a9cb..0000000 --- a/lfs-12.0-sysv/chapter08/kbd.html +++ /dev/null @@ -1,586 +0,0 @@ - - - - - - 8.65. Kbd-2.6.1 - - - - - - - - -
-

- 8.65. Kbd-2.6.1 -

-
-

- Пакет Kbd содержит файлы таблиц клавиш, консольные шрифты и утилиты - клавиатуры. -

-
-
-
- Приблизительное время сборки: - 0.1 SBU -
-
- Требуемое дисковое - пространство: 35 MB -
-
-
-
-
-

- 8.65.1. Установка пакета Kbd -

-

- Поведение клавиш backspace и delete не согласуется между - раскладками в пакете Kbd. Следующий патч исправляет эту проблему - для раскладок i386: -

-
patch -Np1 -i ../kbd-2.6.1-backspace-1.patch
-

- После исправления клавиша backspace генерирует символ с кодом 127, - а клавиша delete генерирует хорошо известную - escape-последовательность. -

-

- Удалите ненужную программу resizecons (она требуется - несуществующей svgalib для предоставления файлов видеорежима — для - нормального использования setfont, который правильно - определяет размеры консоли) вместе с ее справочной страницей. -

-
sed -i '/RESIZECONS_PROGS=/s/yes/no/' configure
-sed -i 's/resizecons.8 //' docs/man/man8/Makefile.in
-

- Подготовьте Kbd для компиляции: -

-
./configure --prefix=/usr --disable-vlock
-
-

- Значение параметра configure: -

-
-
- --disable-vlock -
-
-

- Этот параметр предотвращает сборку утилиты vlock, поскольку - для неё требуется библиотека PAM, которая недоступна в среде - chroot. -

-
-
-
-

- Скомпилируйте пакет: -

-
make
-

- Чтобы протестировать пакет, выполните: -

-
make check
-

- Установите пакет: -

-
make install
-
- [Примечание] -

- Примечание -

-

- Для некоторых языков (например белорусского) пакет Kbd не - предоставляет подходящую раскладку, штатная раскладка - «by» - предполагает кодировку ISO-8859-5, а обычно используется - раскладка CP1251. Пользователи таких языков должны отдельно - загрузить рабочую раскладку. -

-
-

- По желанию, установите документацию:: -

-
cp -R -v docs/doc -T /usr/share/doc/kbd-2.6.1
-
-
-

- 8.65.2. Содержимое - пакета Kbd -

-
-
-
- Установленные программы: - chvt, deallocvt, dumpkeys, fgconsole, - getkeycodes, kbdinfo, kbd_mode, kbdrate, loadkeys, loadunimap, - mapscrn, openvt, psfaddtable (ссылка на psfxtable), psfgettable - (ссылка на psfxtable), psfstriptable (ссылка на psfxtable), - psfxtable, setfont, setkeycodes, setleds, setmetamode, - setvtrgb, showconsolefont, showkey, unicode_start и - unicode_stop -
-
- Созданные каталоги: - /usr/share/consolefonts, - /usr/share/consoletrans, /usr/share/keymaps, - /usr/share/doc/kbd-2.6.1 и /usr/share/unimaps -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

- chvt -

-
-

- Изменяет используемый виртуальный терминал -

-
-

- deallocvt -

-
-

- Освобождает неиспользуемые виртуальные терминалы -

-
-

- dumpkeys -

-
-

- Создает дамп таблиц перевода клавиатуры -

-
-

- fgconsole -

-
-

- Выводит номер активного виртуального терминала -

-
-

- getkeycodes -

-
-

- Выводит таблицу ядра соответствия сканкода и кода клавиши -

-
-

- kbdinfo -

-
-

- Получает информацию о состоянии консоли -

-
-

- kbd_mode -

-
-

- Выводит или устанавливает режим клавиатуры -

-
-

- kbdrate -

-
-

- Устанавливает частоту повторных нажатий клавиш и задержки - клавиатуры -

-
-

- loadkeys -

-
-

- Загружает таблицу преобразования клавиатуры -

-
-

- loadunimap -

-
-

- Загружает таблицу ядра отображения символов юникода -

-
-

- mapscrn -

-
-

- Устаревшая программа, которая использовалась для загрузки - определяемой пользователем таблицы соответствия выводимых - символов в драйвер консоли; теперь эту функцию выполняет - setfont -

-
-

- openvt -

-
-

- Запускает программу на новом виртуальном терминале (VT) -

-
-

- psfaddtable -

-
-

- Добавляет таблицу символов Unicode в консольный шрифт. -

-
-

- psfgettable -

-
-

- Извлекает встроенную таблицу символов Unicode из - консольного шрифта. -

-
-

- psfstriptable -

-
-

- Удаляет встроенную таблицу символов Unicode из - консольного шрифта. -

-
-

- psfxtable -

-
-

- Обрабатывает таблицы символов Unicode для консольных - шрифтов. -

-
-

- setfont -

-
-

- Изменяет шрифты Enhanced Graphic Adapter (EGA) и Video - Graphics Array (VGA), используемые в консоли -

-
-

- setkeycodes -

-
-

- Загружает таблицу соответствия сканкодов ядра и кодов - клавиш; это удобно, если на клавиатуре есть нестандартные - клавиши -

-
-

- setleds -

-
-

- Устанавливает значения флагов клавиатуры и индикаторов - (обычно - светодиоды) -

-
-

- setmetamode -

-
-

- Определяет обработку метаклавиши на клавиатуре (обычно, - это клавиша Win) -

-
-

- setvtrgb -

-
-

- Устанавливает цветовую схему консоли для всех виртуальных - терминалов -

-
-

- showconsolefont -

-
-

- Показывает текущий шрифт экрана консоли EGA/VGA -

-
-

- showkey -

-
-

- Показывает сканкоды, код клавиши и код ASCII для клавиш, - нажатых на клавиатуре -

-
-

- unicode_start -

-
-

- Переводит клавиатуру и консоль в режим UNICODE. [Не - используйте эту программу, если вы не используете файл - раскладки для кодировки ISO-8859-1. Для других кодировок - эта утилита выдает неправильные результаты]. -

-
-

- unicode_stop -

-
-

- Возвращает клавиатуру и консоль из режима UNICODE -

-
-
-
-
- - - diff --git a/lfs-12.0-sysv/chapter08/kmod.html b/lfs-12.0-sysv/chapter08/kmod.html deleted file mode 100644 index 6d9f69b..0000000 --- a/lfs-12.0-sysv/chapter08/kmod.html +++ /dev/null @@ -1,315 +0,0 @@ - - - - - - 8.48. Kmod-30 - - - - - - - - -
-

- 8.48. Kmod-30 -

-
-

- Пакет Kmod содержит библиотеки и утилиты для загрузки модулей ядра. -

-
-
-
- Приблизительное время сборки: - менее 0.1 SBU -
-
- Требуемое дисковое - пространство: 12 MB -
-
-
-
-
-

- 8.48.1. Установка пакета Kmod -

-

- Подготовьте Kmod к компиляции: -

-
./configure --prefix=/usr          \
-            --sysconfdir=/etc      \
-            --with-openssl         \
-            --with-xz              \
-            --with-zstd            \
-            --with-zlib
-
-

- Значение параметров настройки: -

-
-
- --with-openssl -
-
-

- Этот параметр позволяет Kmod обрабатывать сигнатуры PKCS7 для - модулей ядра. -

-
-
- --with-xz, --with-zlib, и --with-zstd -
-
-

- Эти параметры позволяют Kmod обрабатывать сжатые модули ядра. -

-
-
-
-

- Скомпилируйте пакет: -

-
make
-

- Набору тестов этого пакета необходимы необработанные заголовочные - файлы ядра (а не «очищенные», установленных ранее), это выходит - за рамки LFS. -

-

- Установите пакет и создайте символические ссылки для совместимости - с Module-Init-Tools (пакетом, который ранее обрабатывал модули ядра - Linux): -

-
make install
-
-for target in depmod insmod modinfo modprobe rmmod; do
-  ln -sfv ../bin/kmod /usr/sbin/$target
-done
-
-ln -sfv kmod /usr/bin/lsmod
-
-
-

- 8.48.2. Содержимое - пакета Kmod -

-
-
-
- Установленные программы: - depmod (ссылка на kmod), insmod (ссылка - на kmod), kmod, lsmod (ссылка на kmod), modinfo (ссылка на - kmod), modprobe (ссылка на kmod) и rmmod (ссылка на - kmod) -
-
- Установленные библиотеки: - libkmod.so -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

- depmod -

-
-

- Создает файл зависимостей на основе символов найденных в - существующем наборе модулей; этот файл используется - программой modprobe для - автоматической загрузки необходимых модулей -

-
-

- insmod -

-
-

- Устанавливает загружаемый модуль в работающее ядро -

-
-

- kmod -

-
-

- Загружает и выгружает модули ядра -

-
-

- lsmod -

-
-

- Список загруженных в данный момент модулей -

-
-

- modinfo -

-
-

- Проверяет объектный файл, связанный с модулем ядра, и - отображает всю информацию, которую он смог собрать. -

-
-

- modprobe -

-
-

- Использует файл зависимостей, созданный depmod, для - автоматической загрузки соответствующих модулей -

-
-

- rmmod -

-
-

- Выгружает модули из работающего ядра -

-
-

- libkmod -

-
-

- Библиотека используемая другими программами для загрузки - и выгрузки модулей ядра -

-
-
-
-
- - - diff --git a/lfs-12.0-sysv/chapter08/less.html b/lfs-12.0-sysv/chapter08/less.html deleted file mode 100644 index 35c69e7..0000000 --- a/lfs-12.0-sysv/chapter08/less.html +++ /dev/null @@ -1,209 +0,0 @@ - - - - - - 8.41. Less-643 - - - - - - - - -
-

- 8.41. Less-643 -

-
-

- Пакет Less содержит средство просмотра текстовых файлов -

-
-
-
- Приблизительное время сборки: - менее 0.1 SBU -
-
- Требуемое дисковое - пространство: 12 MB -
-
-
-
-
-

- 8.41.1. Установка пакета Less -

-

- Подготовьте Less к компиляции: -

-
./configure --prefix=/usr --sysconfdir=/etc
-
-

- Значение параметров настройки: -

-
-
- --sysconfdir=/etc -
-
-

- Этот параметр указывает программам, созданным пакетом, искать - файлы конфигурации в /etc. -

-
-
-
-

- Скомпилируйте пакет: -

-
make
-

- Чтобы протестировать пакет, выполните: -

-
make check
-

- Установите пакет: -

-
make install
-
-
-

- 8.41.2. Содержимое - пакета Less -

-
-
-
- Установленные программы: - less, lessecho и lesskey -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - - - - - - - - - -
-

- less -

-
-

- Просмотрщик файлов; отображает содержимое данного файла, - позволяя пользователю прокручивать файл, искать строки и - переходить к меткам -

-
-

- lessecho -

-
-

- Требуется для расширения метасимволов, таких как - * и ?, в именах файлов в системах - Unix -

-
-

- lesskey -

-
-

- Используется для привязки клавиш в программе less -

-
-
-
-
- - - diff --git a/lfs-12.0-sysv/chapter08/libcap.html b/lfs-12.0-sysv/chapter08/libcap.html deleted file mode 100644 index c80b274..0000000 --- a/lfs-12.0-sysv/chapter08/libcap.html +++ /dev/null @@ -1,259 +0,0 @@ - - - - - - 8.24. Libcap-2.69 - - - - - - - - -
-

- 8.24. - Libcap-2.69 -

-
-

- Пакет Libcap реализует интерфейсы пользовательского пространства - для возможностей POSIX 1003.1e, доступных в ядрах Linux. Эти - возможности разделяют полномочия суперпользователя root на набор - отдельных привилегий. -

-
-
-
- Приблизительное время сборки: - менее 0.1 SBU -
-
- Требуемое дисковое - пространство: 2.9 MB -
-
-
-
-
-

- 8.24.1. Установка пакета Libcap -

-

- Запретите установку статических библиотек: -

-
sed -i '/install -m.*STA/d' libcap/Makefile
-

- Скомпилируйте пакет: -

-
make prefix=/usr lib=lib
-
-

- Значение опции make: -

-
-
- lib=lib -
-
-

- Этот параметр устанавливает библиотеки в каталог /usr/lib, а не /usr/lib64 на x86_64. На x86 это никак не - влияет. -

-
-
-
-

- Чтобы протестировать пакет, выполните: -

-
make test
-

- Установите пакет: -

-
make prefix=/usr lib=lib install
-
-
-

- 8.24.2. - Содержимое пакета Libcap -

-
-
-
- Установленные программы: - capsh, getcap, getpcaps и setcap -
-
- Установленные библиотеки: - libcap.so и libpsx.so -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

- capsh -

-
-

- Обёртка к оболочке для исследования и ограничения - поддержки возможностей Linux -

-
-

- getcap -

-
-

- Проверяет возможности файлов -

-
-

- getpcaps -

-
-

- Отображает возможности запрашиваемого процесса - (процессов) -

-
-

- setcap -

-
-

- Устанавливает возможности файлов -

-
-

- libcap -

-
-

- Содержит функции для управления возможностями POSIX - 1003.1e. -

-
-

- libpsx -

-
-

- Содержит функции для поддержки семантики POSIX для - системных вызовов, связанных с библиотекой pthread -

-
-
-
-
- - - diff --git a/lfs-12.0-sysv/chapter08/libelf.html b/lfs-12.0-sysv/chapter08/libelf.html deleted file mode 100644 index 2e2e598..0000000 --- a/lfs-12.0-sysv/chapter08/libelf.html +++ /dev/null @@ -1,169 +0,0 @@ - - - - - - 8.49. Libelf из Elfutils-0.189 - - - - - - - - -
-

- 8.49. Libelf из - Elfutils-0.189 -

-
-

- Libelf — это библиотека для обработки файлов ELF (Executable and - Linkable Format - формат исполняемых и связываемых файлов). -

-
-
-
- Приблизительное время сборки: - 0.3 SBU -
-
- Требуемое дисковое - пространство: 122 MB -
-
-
-
-
-

- 8.49.1. Установка пакета Libelf -

-

- Libelf является частью пакета elfutils-0.189. Используйте - elfutils-0.189.tar.bz2 в качестве исходного архива. -

-

- Подготовьте Libelf к компиляции: -

-
./configure --prefix=/usr                \
-            --disable-debuginfod         \
-            --enable-libdebuginfod=dummy
-

- Скомпилируйте пакет: -

-
make
-

- Чтобы протестировать пакет, выполните: -

-
make check
-

- Установите только Libelf: -

-
make -C libelf install
-install -vm644 config/libelf.pc /usr/lib/pkgconfig
-rm /usr/lib/libelf.a
-
-
-

- 8.49.2. - Содержимое пакета Libelf -

-
-
-
- Установленные библиотеки: - libelf.so -
-
- Созданные каталоги: - /usr/include/elfutils -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - -
-

- libelf.so -

-
-

- Содержит функции API для обработки объектных файлов ELF -

-
-
-
-
- - - diff --git a/lfs-12.0-sysv/chapter08/libffi.html b/lfs-12.0-sysv/chapter08/libffi.html deleted file mode 100644 index 4115958..0000000 --- a/lfs-12.0-sysv/chapter08/libffi.html +++ /dev/null @@ -1,211 +0,0 @@ - - - - - - 8.50. Libffi-3.4.4 - - - - - - - - -
-

- 8.50. - Libffi-3.4.4 -

-
-

- Библиотека Libffi предоставляет переносимый высокоуровневый - программный интерфейс для различных соглашений о вызовах. Это - позволяет программисту вызывать любую функцию, указанную в описании - интерфейса вызова во время выполнения. -

-

- FFI расшифровывается как интерфейс внешних функций. FFI позволяет - программе, написанной на одном языке, вызывать программу, - написанную на другом языке. В частности, Libffi может обеспечить - связь между интерпретатором, таким как Perl или Python, и - подпрограммами общей библиотеки, написанными на C или C++. -

-
-
-
- Приблизительное время сборки: - 1.8 SBU -
-
- Требуемое дисковое - пространство: 11 MB -
-
-
-
-
-

- 8.50.1. Установка пакета Libffi -

-
- [Примечание] -

- Примечание -

-

- Как и GMP, Libffi собирается с учетом оптимизаций, специфичных - для используемого процессора. При сборке для другой системы - измените значение параметра --with-gcc-arch= в следующей - команде на имя архитектуры, полностью реализованной процессором в - этой системе. Если этого не сделать, все приложения, ссылающиеся - на libffi, будут вызывать ошибку - «Illegal Operation - - недопустимая операция». -

-
-

- Подготовьте Libffi к компиляции: -

-
./configure --prefix=/usr          \
-            --disable-static       \
-            --with-gcc-arch=native
-
-

- Значение параметров configure: -

-
-
- --with-gcc-arch=native -
-
-

- Убедитесь, что GCC оптимизируется для текущей системы. Если - значение не указано, то архитектура системы угадывается и - сгенерированный код может быть неправильным. Если - сгенерированный код будет скопирован из родной системы в - менее мощную, используйте архитектуру менее мощной системы в - качестве параметра. Дополнительные сведения об альтернативных - типах систем смотрите в - описании параметров x86 в руководстве GCC. -

-
-
-
-

- Скомпилируйте пакет: -

-
make
-

- Чтобы протестировать пакет, выполните: -

-
make check
-

- Установите пакет: -

-
make install
-
-
-

- 8.50.2. - Содержимое пакета Libffi -

-
-
-
- Установленные библиотеки: - libffi.so -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - -
-

- libffi -

-
-

- Содержит внешний интерфейс для API-функций -

-
-
-
-
- - - diff --git a/lfs-12.0-sysv/chapter08/libpipeline.html b/lfs-12.0-sysv/chapter08/libpipeline.html deleted file mode 100644 index 995c06e..0000000 --- a/lfs-12.0-sysv/chapter08/libpipeline.html +++ /dev/null @@ -1,158 +0,0 @@ - - - - - - 8.66. Libpipeline-1.5.7 - - - - - - - - -
-

- 8.66. - Libpipeline-1.5.7 -

-
-

- Пакет Libpipeline содержит библиотеку для гибкого и удобного - управления подпроцессами. -

-
-
-
- Приблизительное время сборки: - 0.1 SBU -
-
- Требуемое дисковое - пространство: 10 MB -
-
-
-
-
-

- 8.66.1. Установка пакета Libpipeline -

-

- Подготовьте Libpipeline к компиляции: -

-
./configure --prefix=/usr
-

- Скомпилируйте пакет: -

-
make
-

- Чтобы протестировать пакет, выполните: -

-
make check
-

- Установите пакет: -

-
make install
-
-
-

- 8.66.2. Содержимое пакета Libpipeline -

-
-
-
- Установленные библиотеки: - libpipeline.so -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - -
-

- libpipeline -

-
-

- Эта библиотека используется для безопасного построения - конвейеров между подпроцессами. -

-
-
-
-
- - - diff --git a/lfs-12.0-sysv/chapter08/libtool.html b/lfs-12.0-sysv/chapter08/libtool.html deleted file mode 100644 index 5a4c01e..0000000 --- a/lfs-12.0-sysv/chapter08/libtool.html +++ /dev/null @@ -1,223 +0,0 @@ - - - - - - 8.36. Libtool-2.4.7 - - - - - - - - -
-

- 8.36. - Libtool-2.4.7 -

-
-

- Пакет Libtool содержит сценарий поддержки универсальной библиотеки - GNU. Это упрощает использование общих библиотек благодаря - согласованному переносимому интерфейсу. -

-
-
-
- Приблизительное время сборки: - 1.3 SBU -
-
- Требуемое дисковое - пространство: 45 MB -
-
-
-
-
-

- 8.36.1. Установка пакета Libtool -

-

- Подготовьте Libtool к компиляции: -

-
./configure --prefix=/usr
-

- Скомпилируйте пакет: -

-
make
-

- Чтобы протестировать пакет, выполните: -

-
make -k check
-
- [Примечание] -

- Примечание -

-

- Время тестирования Libtool может быть значительно сокращено в - системе с несколькими ядрами. Для этого добавьте TESTSUITEFLAGS=-j<N> к - строке выше. Например, использование -j4 может сократить время - тестирования более чем на 60 процентов. -

-
-

- Известно, что пять тестов в среде сборки LFS завершаются неудачно - из-за циклической зависимости, но эти тесты проходят успешно, если - запустить их повторно после установки automake. Кроме того, в - grep-3.8 два теста вызовут предупреждение для регулярных выражений, - несовместимых с POSIX и завершатся с ошибкой. -

-

- Установите пакет: -

-
make install
-

- Удалите ненужную статическую библиотеку: -

-
rm -fv /usr/lib/libltdl.a
-
-
-

- 8.36.2. - Содержимое пакета Libtool -

-
-
-
- Установленные программы: - libtool и libtoolize -
-
- Установленные библиотеки: - libltdl.so -
-
- Созданные каталоги: - /usr/include/libltdl и - /usr/share/libtool -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - - - - - - - - - -
-

- libtool -

-
-

- Обеспечивает общие услуги поддержки при сборке библиотек -

-
-

- libtoolize -

-
-

- Предоставляет стандартный способ добавления поддержки - libtool в - пакет -

-
-

- libltdl -

-
-

- Скрывает различные проблемы, связанные с открытием - динамически загружаемых библиотек -

-
-
-
-
- - - diff --git a/lfs-12.0-sysv/chapter08/libxcrypt.html b/lfs-12.0-sysv/chapter08/libxcrypt.html deleted file mode 100644 index af4edc5..0000000 --- a/lfs-12.0-sysv/chapter08/libxcrypt.html +++ /dev/null @@ -1,225 +0,0 @@ - - - - - - 8.25. Libxcrypt-4.4.36 - - - - - - - - -
-

- 8.25. - Libxcrypt-4.4.36 -

-
-

- Пакет Libxcrypt содержит современную библиотеку для одностороннего - хэширования паролей. -

-
-
-
- Приблизительное время сборки: - 0.1 SBU -
-
- Требуемое дисковое - пространство: 15 MB -
-
-
-
-
-

- 8.25.1. Установка пакета Libxcrypt -

-

- Подготовьте Libxcrypt к компиляции: -

-
./configure --prefix=/usr                \
-            --enable-hashes=strong,glibc \
-            --enable-obsolete-api=no     \
-            --disable-static             \
-            --disable-failure-tokens
-
-

- Значение новых параметров настройки: -

-
-
- --enable-hashes=strong,glibc -
-
-

- Создает хэши, используя надежные алгоритмы хэширования, - рекомендуемые для безопасности, и алгоритмы хэширования, - предоставляемые традиционной библиотекой Glibc libcrypt для совместимости. -

-
-
- --enable-obsolete-api=no -
-
-

- Отключает устаревшие функции API. Они не нужны для - современной системы Linux, собранной из исходного кода. -

-
-
- --disable-failure-tokens -
-
-

- Отключает признак токена сбоя. Он необходим для совместимости - с традиционными хэш-библиотеками некоторых платформ, но - система Linux, основанная на Glibc, в нем не нуждается. -

-
-
-
-

- Скомпилируйте пакет: -

-
make
-

- Чтобы протестировать пакет, выполните: -

-
make check
-

- Установите пакет: -

-
make install
-
- [Примечание] -

- Примечание -

-

- С помощью приведенных выше инструкций были отключены устаревшие - функции API, поскольку ни один пакет, установленный путем - компиляции из исходных кодов, не будет связываться с ними во - время выполнения. Однако известные двоичные приложения, которые - используют эти функции, требуют ABI версии 1. Если вам необходим - этот функционал для какого-либо приложения, предоставляемого - только в бинарном виде, или для совместимости с LSB, соберите - пакет заново с помощью следующих команд: -

-
make distclean
-./configure --prefix=/usr                \
-            --enable-hashes=strong,glibc \
-            --enable-obsolete-api=glibc  \
-            --disable-static             \
-            --disable-failure-tokens
-make
-cp -av .libs/libcrypt.so.1* /usr/lib
-
-
-
-

- 8.25.2. - Содержимое пакета Libxcrypt -

-
-
-
- Установленные библиотеки: - libcrypt.so -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - -
-

- libcrypt -

-
-

- Содержит функции для хэширования паролей -

-
-
-
-
- - - diff --git a/lfs-12.0-sysv/chapter08/m4.html b/lfs-12.0-sysv/chapter08/m4.html deleted file mode 100644 index 2fcfa14..0000000 --- a/lfs-12.0-sysv/chapter08/m4.html +++ /dev/null @@ -1,168 +0,0 @@ - - - - - - 8.12. M4-1.4.19 - - - - - - - - -
-

- 8.12. M4-1.4.19 -

-
-

- Пакет M4 содержит макропроцессор. -

-
-
-
- Приблизительное время сборки: - 0.3 SBU -
-
- Требуемое дисковое - пространство: 49 MB -
-
-
-
-
-

- 8.12.1. Установка пакета M4 -

-

- Подготовьте M4 к компиляции: -

-
./configure --prefix=/usr
-

- Скомпилируйте пакет: -

-
make
-

- Чтобы протестировать пакет, выполните: -

-
make check
-

- Установите пакет: -

-
make install
-
-
-

- 8.12.2. Содержимое - пакета M4 -

-
-
-
- Установленные программы: - m4 -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - -
-

- m4 -

-
-

- Копирует указанные файлы, одновременно расширяя - содержащиеся в них макросы. Эти макросы являются либо - встроенными, либо определяемыми пользователем и могут - принимать любое количество аргументов. Помимо выполнения - макросов, m4 имеет встроенные - функции для включения указанных файлов, выполнения команд - Unix, выполнения целочисленной арифметики, - манипулирования текстом, рекурсии и т.д. Программа - m4 может - использоваться либо как интерфейс к компилятору, либо как - самостоятельный макропроцессор -

-
-
-
-
- - - diff --git a/lfs-12.0-sysv/chapter08/make.html b/lfs-12.0-sysv/chapter08/make.html deleted file mode 100644 index b0bb047..0000000 --- a/lfs-12.0-sysv/chapter08/make.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - 8.67. Make-4.4.1 - - - - - - - - -
-

- 8.67. Make-4.4.1 -

-
-

- Пакет Make содержит программу, управляющую генерацией исполняемых и - других файлов, из исходного кода. -

-
-
-
- Приблизительное время сборки: - 0.5 SBU -
-
- Требуемое дисковое - пространство: 13 MB -
-
-
-
-
-

- 8.67.1. Установка пакета Make -

-

- Подготовьте Make к компиляции: -

-
./configure --prefix=/usr
-

- Скомпилируйте пакет: -

-
make
-

- Чтобы протестировать пакет, выполните: -

-
chown -Rv tester .
-su tester -c "PATH=$PATH make check"
-

- Установите пакет: -

-
make install
-
-
-

- 8.67.2. Содержимое - пакета Make -

-
-
-
- Установленные программы: - make -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - -
-

- make -

-
-

- Автоматически определяет, какие части пакета необходимо - (пере)компилировать и запускает соответствующие команды. -

-
-
-
-
- - - diff --git a/lfs-12.0-sysv/chapter08/man-db.html b/lfs-12.0-sysv/chapter08/man-db.html deleted file mode 100644 index 104c24e..0000000 --- a/lfs-12.0-sysv/chapter08/man-db.html +++ /dev/null @@ -1,765 +0,0 @@ - - - - - - 8.75. Man-DB-2.11.2 - - - - - - - - -
-

- 8.75. - Man-DB-2.11.2 -

-
-

- Пакет Man-DB содержит программы для поиска и просмотра справочных - страниц. -

-
-
-
- Приблизительное время сборки: - 0.2 SBU -
-
- Требуемое дисковое - пространство: 40 MB -
-
-
-
-
-

- 8.75.1. Установка пакета Man-DB -

-

- Подготовьте Man-DB к компиляции: -

-
./configure --prefix=/usr                         \
-            --docdir=/usr/share/doc/man-db-2.11.2 \
-            --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=
-
-

- Значение параметров настройки: -

-
-
- --disable-setuid -
-
-

- Отключает установку setuid пользователю man при сборке программы man. -

-
-
- --enable-cache-owner=bin -
-
-

- Изменяет владельца файлов общесистемного кэша на пользователя - bin. -

-
-
- --with-... -
-
-

- Эти три аргумента используются для настройки программ по - умолчанию. lynx - текстовый веб-браузер (см. инструкции по установке в книге - BLFS), vgrind - преобразует исходные коды программ во входные данные Groff, - grap удобен для - набора графов в документах Groff. Программы vgrind и grap обычно не нужны для - просмотра справочных страниц. Они не входят в состав книг LFS - или BLFS, но вы можете установить их самостоятельно после - сборки LFS. -

-
-
- --with-systemd... -
-
-

- Эти параметры предотвращают установку ненужных каталогов и - файлов systemd. -

-
-
-
-

- Скомпилируйте пакет: -

-
make
-

- Чтобы протестировать пакет, выполните: -

-
make check
-

- Известно, что один тест с именем man1/lexgrog.1 завершился неудачно. -

-

- Установите пакет: -

-
make install
-
-
-

- 8.75.2. Не англоязычные страницы руководств в LFS -

-

- В следующей таблице приведены наборы символов, в которых могут быть - закодированы страницы руководств пакета Man-DB, устанавливаемые в - директории /usr/share/man/<ll>. - Кроме этого, Man-DB правильно определяет, имеют ли справочные - страницы, установленные в этом каталоге, кодировку UTF-8. -

-
- -

- Таблица 8.1. Допустимые кодировки старых 8-битных страниц - руководств -

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- Язык (код) - - Кодировка - - Язык (код) - - Кодировка -
- Датский (da) - - ISO-8859-1 - - Хорватский (hr) - - ISO-8859-2 -
- Немецкий (de) - - ISO-8859-1 - - Венгерский (hu) - - ISO-8859-2 -
- Английский (en) - - ISO-8859-1 - - Японский (ja) - - EUC-JP -
- Испанский (es) - - ISO-8859-1 - - Корейский (ko) - - EUC-KR -
- Эстонский (et) - - ISO-8859-1 - - Литовский (lt) - - ISO-8859-13 -
- Финский (fi) - - ISO-8859-1 - - Латышский (lv) - - ISO-8859-13 -
- Французский (fr) - - ISO-8859-1 - - Македонский (mk) - - ISO-8859-5 -
- Ирландский (ga) - - ISO-8859-1 - - Польский (pl) - - ISO-8859-2 -
- Галисийский (gl) - - ISO-8859-1 - - Румынский (ro) - - ISO-8859-2 -
- Индонезийский (id) - - ISO-8859-1 - - Русский (ru) - - KOI8-R -
- Исландский (is) - - ISO-8859-1 - - Словацкий (sk) - - ISO-8859-2 -
- Итальянский (it) - - ISO-8859-1 - - Словенский (sl) - - ISO-8859-2 -
- Норвежский букмол (nb) - - ISO-8859-1 - - Сербский латинский (sr@latin) - - ISO-8859-2 -
- Голландский (nl) - - ISO-8859-1 - - Сербский (sr) - - ISO-8859-5 -
- Норвежский нюнорск (nn) - - ISO-8859-1 - - Турецкий (tr) - - ISO-8859-9 -
- Норвежский (no) - - ISO-8859-1 - - Украинский (uk) - - KOI8-U -
- Португальский (pt) - - ISO-8859-1 - - Вьетнамский (vi) - - TCVN5712-1 -
- Шведский (sv) - - ISO-8859-1 - - Упрощенный китайский (zh_CN) - - GBK -
- Белорусский (be) - - CP1251 - - Упрощенный китайский, Сингапур (zh_SG) - - GBK -
- Болгарский (bg) - - CP1251 - - Традиционный китайский, Гонконг (zh_HK) - - BIG5HKSCS -
- Чешский (cs) - - ISO-8859-2 - - Традиционный китайский (zh_TW) - - BIG5 -
- Греческий (el) - - ISO-8859-7 - -   - -   -
-
-

-
- [Примечание] -

- Примечание -

-

- Страницы руководств на языках, которые не указаны в списке, не - поддерживаются. -

-
-
-
-

- 8.75.3. - Содержимое пакета Man-DB -

-
-
-
- Установленные программы: - accessdb, apropos (ссылка на whatis), - catman, lexgrog, man, man-recode, mandb, manpath, и - whatis -
-
- Установленные библиотеки: - libman.so и libmandb.so (обе в - /usr/lib/man-db) -
-
- Созданные каталоги: - /usr/lib/man-db, /usr/libexec/man-db и - /usr/share/doc/man-db-2.11.2 -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

- accessdb -

-
-

- Выводит содержимое базы данных whatis в удобочитаемой - форме. -

-
-

- apropos -

-
-

- Выполняет поиск в базе данных whatis и отображает - краткое описание системных команд, содержащих заданную - строку -

-
-

- catman -

-
-

- Создает или обновляет предварительно отформатированные - страницы руководств -

-
-

- lexgrog -

-
-

- Отображает однострочную сводную информацию о данной - странице руководства -

-
-

- man -

-
-

- Форматирует и отображает запрошенную страницу руководства -

-
-

- man-recode -

-
-

- Преобразует страницы руководства в другую кодировку -

-
-

- mandb -

-
-

- Создает или обновляет базу данных whatis -

-
-

- manpath -

-
-

- Отображает содержимое переменной $MANPATH или (если - переменная $MANPATH не установлена) соответствующий путь - поиска, определяемый в настройках man.conf и в - пользовательском окружении -

-
-

- whatis -

-
-

- Выполняет поиск в базе данных whatis и отображает - краткие описания системных команд, в которых в описании - ключей указано искомое слово -

-
-

- libman -

-
-

- Включает поддержку man во время выполнения -

-
-

- libmandb -

-
-

- Включает поддержку man во время выполнения -

-
-
-
-
- - - diff --git a/lfs-12.0-sysv/chapter08/man-pages.html b/lfs-12.0-sysv/chapter08/man-pages.html deleted file mode 100644 index 5ed69a8..0000000 --- a/lfs-12.0-sysv/chapter08/man-pages.html +++ /dev/null @@ -1,156 +0,0 @@ - - - - - - 8.3. Man-pages-6.05.01 - - - - - - - - -
-

- 8.3. - Man-pages-6.05.01 -

-
-

- Пакет Man-pages содержит более 2400 справочных руководств. -

-
-
-
- Приблизительное время сборки: - менее 0.1 SBU -
-
- Требуемое дисковое - пространство: 33 MB -
-
-
-
-
-

- 8.3.1. Установка пакета Man-pages -

-

- Удалите две справочные страницы для функций хэширования паролей. - Libxcrypt предоставит улучшенную - версию этих справочных страниц: -

-
rm -v man3/crypt*
-

- Установите пакет Man-pages выполнив команду: -

-
make prefix=/usr install
-
-
-

- 8.3.2. - Содержимое пакета Man-pages -

-
-
-
- Установленные файлы: - различные справочные страницы -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - -
-

- man pages -

-
-

- Описывают функции языка программирования C, важные файлы - устройств и важные файлы конфигурации. -

-
-
-
-
- - - diff --git a/lfs-12.0-sysv/chapter08/markupsafe.html b/lfs-12.0-sysv/chapter08/markupsafe.html deleted file mode 100644 index 440bf83..0000000 --- a/lfs-12.0-sysv/chapter08/markupsafe.html +++ /dev/null @@ -1,128 +0,0 @@ - - - - - - 8.72. MarkupSafe-2.1.3 - - - - - - - - -
-

- 8.72. - MarkupSafe-2.1.3 -

-
-

- MarkupSafe — это модуль Python, реализующий безопасное - использование строк в языках разметки XML/HTML/XHTML -

-
-
-
- Приблизительное время сборки: - менее 0.1 SBU -
-
- Требуемое дисковое - пространство: 548 KB -
-
-
-
-
-

- 8.72.1. Установка пакета MarkupSafe -

-

- Скомпилируйте MarkupSafe с помощью следующей команды: -

-
pip3 wheel -w dist --no-build-isolation --no-deps $PWD
-

- С этим пакетом не поставляется тестов. -

-

- Установите пакет: -

-
pip3 install --no-index --no-user --find-links dist Markupsafe
-
-
-

- 8.72.2. - Содержимое пакета MarkupSafe -

-
-
-
- Созданные каталоги: - /usr/lib/python3.11/site-packages/MarkupSafe-2.1.3.dist-info -
-
-
-
-
- - - diff --git a/lfs-12.0-sysv/chapter08/meson.html b/lfs-12.0-sysv/chapter08/meson.html deleted file mode 100644 index 0b29709..0000000 --- a/lfs-12.0-sysv/chapter08/meson.html +++ /dev/null @@ -1,192 +0,0 @@ - - - - - - 8.55. Meson-1.2.1 - - - - - - - - -
-

- 8.55. Meson-1.2.1 -

-
-

- Meson — это система сборки с открытым исходным кодом, разработанная - таким образом, чтобы быть очень быстрой и максимально удобной для - пользователя. -

-
-
-
- Приблизительное время сборки: - менее 0.1 SBU -
-
- Требуемое дисковое - пространство: 42 MB -
-
-
-
-
-

- 8.55.1. Установка пакета Meson -

-

- Скомпилируйте Meson с помощью следующей команды: -

-
pip3 wheel -w dist --no-build-isolation --no-deps $PWD
-

- Для набора тестов требуются некоторые пакеты, выходящие за рамки - LFS. -

-

- Установите пакет: -

-
pip3 install --no-index --find-links dist meson
-install -vDm644 data/shell-completions/bash/meson /usr/share/bash-completion/completions/meson
-install -vDm644 data/shell-completions/zsh/_meson /usr/share/zsh/site-functions/_meson
-
-

- Значение параметров установки: -

-
-
- -w - dist -
-
-

- Помещает собранный wheels в каталог dist. -

-
-
- --find-links - dist -
-
-

- Устанавливает wheels из каталога dist. -

-
-
-
-
-
-

- 8.55.2. Содержимое - пакета Meson -

-
-
-
- Установленные программы: - meson -
-
- Созданные каталоги: - /usr/lib/python3.11/site-packages/meson-1.2.1.dist-info - и /usr/lib/python3.11/site-packages/mesonbuild -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - -
-

- meson -

-
-

- Высокопроизводительная система сборки -

-
-
-
-
- - - diff --git a/lfs-12.0-sysv/chapter08/mpc.html b/lfs-12.0-sysv/chapter08/mpc.html deleted file mode 100644 index cd8cee1..0000000 --- a/lfs-12.0-sysv/chapter08/mpc.html +++ /dev/null @@ -1,164 +0,0 @@ - - - - - - 8.21. MPC-1.3.1 - - - - - - - - -
-

- 8.21. MPC-1.3.1 -

-
-

- Пакет MPC содержит библиотеку для арифметики комплексных чисел с - высокой точностью и правильным округлением результата. -

-
-
-
- Приблизительное время сборки: - 0.1 SBU -
-
- Требуемое дисковое - пространство: 22 MB -
-
-
-
-
-

- 8.21.1. Установка пакета MPC -

-

- Подготовьте MPC к компиляции: -

-
./configure --prefix=/usr    \
-            --disable-static \
-            --docdir=/usr/share/doc/mpc-1.3.1
-

- Скомпилируйте пакет и сгенерируйте HTML-документацию: -

-
make
-make html
-

- Чтобы протестировать пакет, выполните: -

-
make check
-

- Установите пакет и документацию к нему: -

-
make install
-make install-html
-
-
-

- 8.21.2. Содержимое - пакета MPC -

-
-
-
- Установленные библиотеки: - libmpc.so -
-
- Созданные каталоги: - /usr/share/doc/mpc-1.3.1 -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - -
-

- libmpc -

-
-

- Содержит сложные математические функции -

-
-
-
-
- - - diff --git a/lfs-12.0-sysv/chapter08/mpfr.html b/lfs-12.0-sysv/chapter08/mpfr.html deleted file mode 100644 index cb145b2..0000000 --- a/lfs-12.0-sysv/chapter08/mpfr.html +++ /dev/null @@ -1,183 +0,0 @@ - - - - - - 8.20. MPFR-4.2.0 - - - - - - - - -
-

- 8.20. MPFR-4.2.0 -

-
-

- Пакет MPFR содержит функции для двоичных вычислений с плавающей - запятой произвольной точности. -

-
-
-
- Приблизительное время сборки: - 0.2 SBU -
-
- Требуемое дисковое - пространство: 43 MB -
-
-
-
-
-

- 8.20.1. Установка пакета MPFR -

-

- Исправьте тестовый пример, приводящий к ошибке в старых версиях - Glibc: -

-
sed -e 's/+01,234,567/+1,234,567 /' \
-    -e 's/13.10Pd/13Pd/'            \
-    -i tests/tsprintf.c
-

- Подготовьте MPFR к компиляции: -

-
./configure --prefix=/usr        \
-            --disable-static     \
-            --enable-thread-safe \
-            --docdir=/usr/share/doc/mpfr-4.2.0
-

- Скомпилируйте пакет и сгенерируйте HTML-документацию: -

-
make
-make html
-
- [Важно] -

- Важно -

-

- Набор тестов для MPFR в этом разделе считается критически важным. - Ни в коем случае не пропускайте его. -

-
-

- Выполните тестирование и убедитесь, что все 197 тестов пройдены: -

-
make check
-

- Установите пакет и документацию к нему: -

-
make install
-make install-html
-
-
-

- 8.20.2. Содержимое - пакета MPFR -

-
-
-
- Установленные библиотеки: - libmpfr.so -
-
- Созданные каталоги: - /usr/share/doc/mpfr-4.2.0 -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - -
-

- libmpfr -

-
-

- Содержит математические функции с произвольной точностью -

-
-
-
-
- - - diff --git a/lfs-12.0-sysv/chapter08/ncurses.html b/lfs-12.0-sysv/chapter08/ncurses.html deleted file mode 100644 index c56e5dc..0000000 --- a/lfs-12.0-sysv/chapter08/ncurses.html +++ /dev/null @@ -1,554 +0,0 @@ - - - - - - 8.29. Ncurses-6.4 - - - - - - - - -
-

- 8.29. - Ncurses-6.4 -

-
-

- Пакет Ncurses содержит библиотеки для независимой от терминала - обработки ввода/вывода -

-
-
-
- Приблизительное время сборки: - 0.2 SBU -
-
- Требуемое дисковое - пространство: 45 MB -
-
-
-
-
-

- 8.29.1. Установка пакета Ncurses -

-

- Подготовьте Ncurses к компиляции: -

-
./configure --prefix=/usr           \
-            --mandir=/usr/share/man \
-            --with-shared           \
-            --without-debug         \
-            --without-normal        \
-            --with-cxx-shared       \
-            --enable-pc-files       \
-            --enable-widec          \
-            --with-pkg-config-libdir=/usr/lib/pkgconfig
-
-

- Значение новых параметров настройки: -

-
-
- --with-shared -
-
-

- Этот параметр позволяет Ncurses собирать и устанавливать - общие библиотеки C. -

-
-
- --without-normal -
-
-

- Этот параметр отключает сборку и установку большинства - статических библиотек C. -

-
-
- --without-debug -
-
-

- Этот параметр предотвращает сборку и установку отладочных - библиотек. -

-
-
- --with-cxx-shared -
-
-

- Это аргумент позволяет Ncurses собирать и устанавливать общие - привязки C++. А также предотвращает сборку и установку - статических привязок C++. -

-
-
- --enable-pc-files -
-
-

- Этот параметр генерирует и устанавливает файлы .pc для - pkg-config. -

-
-
- --enable-widec -
-
-

- Этот параметр указывает, что при сборке пакета вместо обычных - библиотек (например, libncurses.so.6.4) будут использоваться - библиотеки с расширенным набором символов (например, - libncursesw.so.6.4). Библиотеки - с расширенным набором символов могут использоваться как с - многобайтовыми локалями, так и с традиционными 8-битовыми - локалями, тогда как обычные библиотеки работают только с - 8-битовыми локалями. Библиотеки с расширенным набором - символов и обычные библиотеки совместимы на уровне исходного - кода, но не совместимыми на уровне двоичного. -

-
-
-
-

- Скомпилируйте пакет: -

-
make
-

- У этого пакета есть набор тестов, но его можно запустить только - после того, как пакет будет установлен. Тесты находятся в каталоге - test/. Дополнительные сведения см. в - файле README в этом каталоге. -

-

- Установка этого пакета приведет к перезаписи libncursesw.so.6.4. Это может привести к сбою - процесса оболочки, который использует код и данные из файла - библиотеки. Установите пакет с помощью DESTDIR и правильно замените файл библиотеки с - помощью команды install. -

-
make DESTDIR=$PWD/dest install
-install -vm755 dest/usr/lib/libncursesw.so.6.4 /usr/lib
-rm -v  dest/usr/lib/libncursesw.so.6.4
-cp -av dest/* /
-

- Многие приложения ожидают, что компоновщик сможет найти библиотеки - Ncurses, не поддерживающие расширенный набор символов. Свяжите - такие приложения с библиотеками расширенного набора символов с - помощью символических ссылок и скриптов компоновщика: -

-
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
-

- Убедитесь, что старые приложения, которым нужна -lcurses для сборки, собираются правильно: -

-
rm -vf                     /usr/lib/libcursesw.so
-echo "INPUT(-lncursesw)" > /usr/lib/libcursesw.so
-ln -sfv libncurses.so      /usr/lib/libcurses.so
-

- По желанию установите документацию Ncurses: -

-
cp -v -R doc -T /usr/share/doc/ncurses-6.4
-
- [Примечание] -

- Примечание -

-

- С помощью приведенных выше инструкций не создаются библиотеки - Ncurses, не использующие расширенный набор символов, поскольку ни - один пакет, установленный путем компиляции из исходного кода, не - будет связан с ними во время выполнения. Тем не менее, известно - что некоторые бинарные приложения, которые связаны с библиотекой - Ncurses и не поддерживающие расширенный набор символов, требуют - наличия версии 5. Если вам необходимо иметь такие библиотеки - из-за какого-либо приложения, имеющегося только в бинарном виде, - или для обеспечения совместимости с LSB, соберите пакет с помощью - следующих команд: -

-
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
-
-
-
-

- 8.29.2. - Содержимое пакета Ncurses -

-
-
-
- Установленные программы: - captoinfo (ссылка на tic), clear, - infocmp, infotocap (ссылка на tic), ncursesw6-config, reset - (ссылка на tset), tabs, tic, toe, tput, и tset -
-
- Установленные библиотеки: - libcursesw.so (символическая ссылка и - скрипт компоновщика на libncursesw.so), libformw.so, - libmenuw.so, libncursesw.so, libncurses++w.so, libpanelw.so, и - их аналоги без "w" в именах библиотек. -
-
- Созданные каталоги: - /usr/share/tabset, /usr/share/terminfo, и - /usr/share/doc/ncurses-6.4 -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

- captoinfo -

-
-

- Преобразует описание termcap в описание terminfo -

-
-

- clear -

-
-

- Очищает экран, если это возможно -

-
-

- infocmp -

-
-

- Сравнивает или показывает описания terminfo -

-
-

- infotocap -

-
-

- Преобразует описание terminfo в описание termcap -

-
-

- ncursesw6-config -

-
-

- Предоставляет информацию о конфигурации пакету ncurses -

-
-

- reset -

-
-

- Повторно инициализирует терминал со значениями по - умолчанию -

-
-

- tabs -

-
-

- Очищает и устанавливает размеры табуляции в терминале -

-
-

- tic -

-
-

- Компилятор описания terminfo, преобразует файл terminfo - из исходного формата в двоичный, который необходим для - подпрограмм библиотеки ncurses [Файл terminfo содержит - информацию о возможностях конкретного терминала.] -

-
-

- toe -

-
-

- Выводит список всех доступных типов терминалов, для - каждого из которых указывается его имя и приводится - описание -

-
-

- tput -

-
-

- Позволяет использовать в командной оболочке настройки, - относящиеся к особенностям конкретного терминала; может - также использоваться для сброса или инициализации - терминала, либо для вывода полного имени терминала -

-
-

- tset -

-
-

- Может использоваться для инициализации терминалов -

-
-

- libcursesw -

-
-

- Ссылка на libncursesw -

-
-

- libncursesw -

-
-

- Содержит функции, отображающие различными способами текст - на экране терминала. Хорошим примером использования этих - функций является меню, отображаемое командой make menuconfig при - настройке ядра -

-
-

- libncurses++w -

-
-

- Содержит функции связывания C++ с другими библиотеками в - пакете -

-
-

- libformw -

-
-

- Содержит функции, реализующие формы -

-
-

- libmenuw -

-
-

- Содержит функции, реализующие меню -

-
-

- libpanelw -

-
-

- Содержит функции, реализующие панели -

-
-
-
-
- - - diff --git a/lfs-12.0-sysv/chapter08/ninja.html b/lfs-12.0-sysv/chapter08/ninja.html deleted file mode 100644 index 591a1ed..0000000 --- a/lfs-12.0-sysv/chapter08/ninja.html +++ /dev/null @@ -1,206 +0,0 @@ - - - - - - 8.54. Ninja-1.11.1 - - - - - - - - -
-

- 8.54. Ninja-1.11.1 -

-
-

- Ninja - небольшая система сборки ориентированная на скорость. -

-
-
-
- Приблизительное время сборки: - 0.3 SBU -
-
- Требуемое дисковое - пространство: 75 MB -
-
-
-
-
-

- 8.54.1. Установка пакета Ninja -

-

- При запуске ninja - обычно использует максимальное количество процессов параллельно. По - умолчанию это количество ядер в системе плюс два. В некоторых - случаях это может привести к перегреву процессора или нехватке - памяти в системе. Когда ninja вызывается из командной - строки, передача параметра -jN ограничит количество параллельных - процессов. Некоторые пакеты встраивают выполнение ninja и параметр -j не - передается. -

-

- Использование приведенной ниже необязательной процедуры позволяет - пользователю ограничить количество параллельных процессов с помощью - переменной окружения NINJAJOBS. Пример, настройки: -

-
export NINJAJOBS=4
-

- ограничит ninja - четырьмя параллельными процессами. -

-

- По желанию, добавьте возможность использовать переменную окружения - NINJAJOBS, выполнив следующую команду: -

-
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
-

- Соберите Ninja с помощью команды: -

-
python3 configure.py --bootstrap
-
-

- Значение параметров сборки: -

-
-
- --bootstrap -
-
-

- Этот параметр перестраивает Ninja под текущую систему. -

-
-
-
-

- Чтобы протестировать пакет, выполните: -

-
./ninja ninja_test
-./ninja_test --gtest_filter=-SubprocessTest.SetWithLots
-

- Установите пакет: -

-
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
-
-
-

- 8.54.2. Содержимое - пакета Ninja -

-
-
-
- Установленные программы: - ninja -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - -
-

- ninja -

-
-

- это система сборки Ninja -

-
-
-
-
- - - diff --git a/lfs-12.0-sysv/chapter08/openssl.html b/lfs-12.0-sysv/chapter08/openssl.html deleted file mode 100644 index 097e1f5..0000000 --- a/lfs-12.0-sysv/chapter08/openssl.html +++ /dev/null @@ -1,300 +0,0 @@ - - - - - - 8.47. OpenSSL-3.1.2 - - - - - - - - -
-

- 8.47. - OpenSSL-3.1.2 -

-
-

- Пакет OpenSSL содержит инструменты управления и библиотеки, - относящиеся к криптографии. Они полезны для предоставления - криптографических функций другим пакетам, таким как OpenSSH, - приложениям электронной почты и веб-браузерам (для доступа к сайтам - по HTTPS). -

-
-
-
- Приблизительное время сборки: - 3.0 SBU -
-
- Требуемое дисковое - пространство: 587 MB -
-
-
-
-
-

- 8.47.1. Установка пакета OpenSSL -

-

- Подготовьте OpenSSL к компиляции: -

-
./config --prefix=/usr         \
-         --openssldir=/etc/ssl \
-         --libdir=lib          \
-         shared                \
-         zlib-dynamic
-

- Скомпилируйте пакет: -

-
make
-

- Чтобы протестировать пакет, выполните: -

-
make test
-

- Известно, что один тест, 30-test_afalg.t, завершится ошибкой, если - в ядре хоста не включен параметр CONFIG_CRYPTO_USER_API_SKCIPHER или отсутствуют - какие-либо опции, обеспечивающих реализацию AES с CBC (например, - комбинация CONFIG_CRYPTO_AES и - CONFIG_CRYPTO_CBC или CONFIG_CRYPTO_AES_NI_INTEL, если процессор - поддерживает AES-NI). В случае неудачи его можно смело - игнорировать. -

-

- Установите пакет: -

-
sed -i '/INSTALL_LIBS/s/libcrypto.a libssl.a//' Makefile
-make MANSUFFIX=ssl install
-

- Добавьте версию к имени каталога документации, чтобы структура - соответствовала другим пакетам: -

-
mv -v /usr/share/doc/openssl /usr/share/doc/openssl-3.1.2
-

- По желанию, установите дополнительную документацию: -

-
cp -vfr doc/* /usr/share/doc/openssl-3.1.2
-
- [Примечание] -

- Примечание -

-

- Вы должны обновить OpenSSL, когда будет выпущена новая версия, - исправляющая уязвимости. Начиная с OpenSSL 3.0.0, схема - управления версиями OpenSSL следует формату MAJOR.MINOR.PATCH. - Совместимость API/ABI гарантируется для одной и той же ОСНОВНОЙ - (MAJOR) версии. Поскольку LFS устанавливает только общие - библиотеки, нет необходимости перекомпилировать пакеты, которые - ссылаются на libcrypto.so или - libssl.so, при обновлении до версии с тем же ОСНОВНЫМ номером - версии. -

-

- Если установлен OpenSSH, это - будет исключением из общего правила, указанного выше. Он содержит - чрезмерно ограничительную проверку версии OpenSSL, поэтому и - SSH-клиент, и SSH-сервер откажутся запускаться, если OpenSSL - обновлен с прежним номером MAJOR версии, но с другим номером - MINOR версии. После такого обновления вам необходимо пересобрать - OpenSSH. Если OpenSSH - используется для доступа к системе, вам необходимо пересобрать и - переустановить его после обновления OpenSSL до новой MINOR версии - перед выходом из системы, иначе вы не сможете больше войти в - систему через SSH. -

-

- Все запущенные программы, связанные с этими библиотеками, после - обновления необходимо остановить и перезапустить. Для получения - более подробной информации ознакомьтесь с соответствующей записью - в Раздел 8.2.1, - «Проблемы с обновлением». -

-
-
-
-

- 8.47.2. - Содержимое пакета OpenSSL -

-
-
-
- Установленные программы: - c_rehash и openssl -
-
- Установленные библиотеки: - libcrypto.so и libssl.so -
-
- Созданные каталоги: - /etc/ssl, /usr/include/openssl, - /usr/lib/engines и /usr/share/doc/openssl-3.1.2 -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - - - - - - - - - - - - - -
-

- c_rehash -

-
-

- это Perl скрипт, который - сканирует все файлы в каталоге и добавляет символические - ссылки к их хеш-значениям. Использование c_rehash считается - устаревшим и должно быть заменено командой openssl rehash -

-
-

- openssl -

-
-

- это инструмент командной строки для использования - различных криптографических функций библиотеки - OpenSSL из оболочки. Его - можно использовать для различных функций, которые - задокументированы в man 1 - openssl -

-
-

- libcrypto.so -

-
-

- реализует широкий спектр криптографических алгоритмов, - используемых в различных интернет-стандартах. Услуги, - предоставляемые этой библиотекой, используют OpenSSL-реализацию SSL, TLS и - S/MIME, а также для реализации OpenSSH, OpenPGP и других криптографических - стандартов. -

-
-

- libssl.so -

-
-

- реализует протокол безопасности транспортного уровня (TLS - v1). Он предоставляет богатый API, документацию по - которому можно найти, выполнив команду: man 7 ssl -

-
-
-
-
- - - diff --git a/lfs-12.0-sysv/chapter08/patch.html b/lfs-12.0-sysv/chapter08/patch.html deleted file mode 100644 index addccae..0000000 --- a/lfs-12.0-sysv/chapter08/patch.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - 8.68. Patch-2.7.6 - - - - - - - - -
-

- 8.68. Patch-2.7.6 -

-
-

- Пакет Patch содержит программу для изменения или создания файлов - путём наложение «патча», обычно, создаваемого программой - diff. -

-
-
-
- Приблизительное время сборки: - 0.1 SBU -
-
- Требуемое дисковое - пространство: 12 MB -
-
-
-
-
-

- 8.68.1. Установка пакета Patch -

-

- Подготовьте Patch к компиляции: -

-
./configure --prefix=/usr
-

- Скомпилируйте пакет: -

-
make
-

- Чтобы протестировать пакет, выполните: -

-
make check
-

- Установите пакет: -

-
make install
-
-
-

- 8.68.2. Содержимое - пакета Patch -

-
-
-
- Установленные программы: - patch -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - -
-

- patch -

-
-

- Изменяет файлы в соответствии с файлом исправления (патч - обычно представляет собой список отличий, создаваемый с - помощью программы diff. Применяя их к - исходным файлам, patch создает - исправленные версии.) -

-
-
-
-
- - - diff --git a/lfs-12.0-sysv/chapter08/perl.html b/lfs-12.0-sysv/chapter08/perl.html deleted file mode 100644 index a32c173..0000000 --- a/lfs-12.0-sysv/chapter08/perl.html +++ /dev/null @@ -1,725 +0,0 @@ - - - - - - 8.42. Perl-5.38.0 - - - - - - - - -
-

- 8.42. Perl-5.38.0 -

-
-

- Пакет Perl содержит практический язык для извлечения данных и - составления отчётов (Practical Extraction and Report Language). -

-
-
-
- Приблизительное время сборки: - 7.1 SBU -
-
- Требуемое дисковое - пространство: 239 MB -
-
-
-
-
-

- 8.42.1. Установка пакета Perl -

-

- Эта версия Perl собирает модули Compress::Raw::Zlib и - Compress::Raw::BZip2. По умолчанию Perl будет использовать - внутреннюю копию исходников для сборки. Выполните следующую - команду, чтобы Perl использовал библиотеки, установленные в - системе: -

-
export BUILD_ZLIB=False
-export BUILD_BZIP2=0
-

- Чтобы иметь полный контроль над настройкой Perl, вы можете удалить - параметры «-des» из следующей команды и вручную выбрать - способ сборки этого пакета. В качестве альтернативы, используйте - команду точно так, как указано ниже, чтобы использовать значения по - умолчанию, которые Perl определяет автоматически: -

-
sh Configure -des                                         \
-             -Dprefix=/usr                                \
-             -Dvendorprefix=/usr                          \
-             -Dprivlib=/usr/lib/perl5/5.38/core_perl      \
-             -Darchlib=/usr/lib/perl5/5.38/core_perl      \
-             -Dsitelib=/usr/lib/perl5/5.38/site_perl      \
-             -Dsitearch=/usr/lib/perl5/5.38/site_perl     \
-             -Dvendorlib=/usr/lib/perl5/5.38/vendor_perl  \
-             -Dvendorarch=/usr/lib/perl5/5.38/vendor_perl \
-             -Dman1dir=/usr/share/man/man1                \
-             -Dman3dir=/usr/share/man/man3                \
-             -Dpager="/usr/bin/less -isR"                 \
-             -Duseshrplib                                 \
-             -Dusethreads
-
-

- Значение параметров configure: -

-
-
- -Dvendorprefix=/usr -
-
-

- Параметр гарантирует, что perl знает, как указать - пакетам, где они должны устанавливать свои модули Perl. -

-
-
- -Dpager="/usr/bin/less - -isR" -
-
-

- Параметр указывает использовать less вместо more. -

-
-
- -Dman1dir=/usr/share/man/man1 - -Dman3dir=/usr/share/man/man3 -
-
-

- Так как Groff еще не установлен, Configure не будет - создавать man-страницы для Perl. Эти параметры переопределяют - это поведение. -

-
-
- -Duseshrplib -
-
-

- Собрать общую библиотеку libperl, необходимую некоторым - модулям Perl. -

-
-
- -Dusethreads -
-
-

- Собрать Perl с поддержкой потоков. -

-
-
- -Dprivlib,-Darchlib,-Dsitelib,... -
-
-

- Эти настройки определяют, где Perl ищет установленные модули. - Редакторы LFS решили поместить их в структуру каталогов, - основанную на MAJOR.MINOR версии Perl (5.38), что позволяет - обновлять Perl до более новых версий (5.38.0) без - необходимости переустанавливать все модули. -

-
-
-
-

- Скомпилируйте пакет: -

-
make
-

- Чтобы протестировать пакет (примерно 11 SBU), выполните: -

-
make test
-

- Установка пакета и очистка: -

-
make install
-unset BUILD_ZLIB BUILD_BZIP2
-
-
-

- 8.42.2. Содержимое - пакета Perl -

-
-
-
- Установленные программы: - corelist, cpan, enc2xs, encguess, h2ph, - h2xs, instmodsh, json_pp, libnetcfg, perl, perl5.38.0 (жесткая - ссылка на perl), perlbug, perldoc, perlivp, perlthanks (жесткая - ссылка на perlbug), piconv, pl2pm, pod2html, pod2man, pod2text, - pod2usage, podchecker, podselect, prove, ptar, ptardiff, - ptargrep, shasum, splain, xsubpp и zipdetails -
-
- Установленные библиотеки: - Список слишком большой для - перечисления -
-
- Созданные каталоги: - /usr/lib/perl5 -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

- corelist -

-
-

- Интерфейс командной строки для Module::CoreList -

-
-

- cpan -

-
-

- Позволяет получать из командной строки доступ к архиву - документации и программ Perl (Comprehensive Perl Archive - Network - CPAN) -

-
-

- enc2xs -

-
-

- Собирает расширение Perl для модуля Encode либо с - использование таблицы символов Unicode, либо с - использованием файлов кодирования Tcl -

-
-

- encguess -

-
-

- Определяет тип кодировки одного или нескольких файлов -

-
-

- h2ph -

-
-

- Конвертирует заголовочные файлы Си .h в заголовочные файлы Perl - .ph -

-
-

- h2xs -

-
-

- Конвертирует заголовочные файлы Си .h в расширения Perl -

-
-

- instmodsh -

-
-

- Сценарий оболочки для проверки установленных модулей - Perl; он может создать архив из установленного модуля. -

-
-

- json_pp -

-
-

- Преобразует данные между определенными входными и - выходными форматами -

-
-

- libnetcfg -

-
-

- Может использоваться для настройки Perl-модуля - libnet -

-
-

- perl -

-
-

- Объединяет лучшие возможности C, sed, awk и sh в одном языке -

-
-

- perl5.38.0 -

-
-

- Жесткая ссылка на perl -

-
-

- perlbug -

-
-

- Используется для создания отчетов об ошибках в Perl или - модулях, которые поставляются с ним, и отправки их по - почте -

-
-

- perldoc -

-
-

- Отображает часть документации в формате pod, которая - встроена в дерево установки Perl или в сценарий Perl -

-
-

- perlivp -

-
-

- Процедура проверки установки Perl; ее можно использовать - для проверки правильности установки Perl и его библиотек -

-
-

- perlthanks -

-
-

- Используется для создания сообщения-благодарности, - отсылаемого разработчикам Perl -

-
-

- piconv -

-
-

- Perl версия конвертера iconv, используемого - для кодирования символов -

-
-

- pl2pm -

-
-

- Инструмент для грубого конвертирования файлов - .pl Perl4 в модули - .pm Perl5 -

-
-

- pod2html -

-
-

- Преобразует файлы из формата pod в формат HTML -

-
-

- pod2man -

-
-

- Преобразует данные pod в форматированный входной поток - для *roff -

-
-

- pod2text -

-
-

- Преобразует данные pod в форматированный текст ASCII -

-
-

- pod2usage -

-
-

- Печатает в файл сообщения usage из встроенных документов - pod -

-
-

- podchecker -

-
-

- Проверяет синтаксис файлов документации формата pod -

-
-

- podselect -

-
-

- Отображает выбранные разделы документации pod -

-
-

- prove -

-
-

- Инструмент командной строки для выполнения тестов с - помощью модуля Test::Harness -

-
-

- ptar -

-
-

- Программа, похожая на tar, написанная на Perl -

-
-

- ptardiff -

-
-

- Программа на Perl для сравнения распакованного и - нераспакованного архивов -

-
-

- ptargrep -

-
-

- Программа на Perl для текстового поиска по шаблону внутри - tar-архива -

-
-

- shasum -

-
-

- Печатает или проверяет контрольные суммы SHA -

-
-

- splain -

-
-

- Включает подробные предупреждения для диагностики в Perl -

-
-

- xsubpp -

-
-

- Преобразует код Perl XS в код C -

-
-

- zipdetails -

-
-

- Отображает сведения о внутренней структуре Zip-файла -

-
-
-
-
- - - diff --git a/lfs-12.0-sysv/chapter08/pkgconf.html b/lfs-12.0-sysv/chapter08/pkgconf.html deleted file mode 100644 index 8d02151..0000000 --- a/lfs-12.0-sysv/chapter08/pkgconf.html +++ /dev/null @@ -1,204 +0,0 @@ - - - - - - 8.28. Pkgconf-2.0.1 - - - - - - - - -
-

- 8.28. - Pkgconf-2.0.1 -

-
-

- Пакет pkgconf является преемником pkg-config и содержит инструмент, - который позволяет передавать пути установки или пути к библиотекам - для инструментов сборки на этапе настройки (configure) и - сборки(make) пакетов. -

-
-
-
- Приблизительное время сборки: - менее 0.1 SBU -
-
- Требуемое дисковое - пространство: 4.6 MB -
-
-
-
-
-

- 8.28.1. Установка пакета Pkgconf -

-

- Подготовьте Pkgconf к компиляции: -

-
./configure --prefix=/usr              \
-            --disable-static           \
-            --docdir=/usr/share/doc/pkgconf-2.0.1
-

- Скомпилируйте пакет: -

-
make
-

- Установите пакет: -

-
make install
-

- Для обеспечения совместимости с исходным Pkg-config, создайте две - символические ссылки: -

-
ln -sv pkgconf   /usr/bin/pkg-config
-ln -sv pkgconf.1 /usr/share/man/man1/pkg-config.1
-
-
-

- 8.28.2. - Содержимое пакета Pkgconf -

-
-
-
- Установленные программы: - pkgconf, pkg-config (ссылка на pkgconf) и - bomtool -
-
- Установленные библиотеки: - libpkgconf.so -
-
- Созданные каталоги: - /usr/share/doc/pkgconf-2.0.1 -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - - - - - - - - - -
-

- pkgconf -

-
-

- Возвращает метаданные указанной библиотеки или пакета -

-
-

- bomtool -

-
-

- Генерирует спецификацию программного обеспечения из - файлов pkg-config с расширением .pc -

-
-

- libpkgconf -

-
-

- Содержит большую часть функций pkgconf, позволяя другим - инструментам, таким как IDE и компиляторы, использовать - его фреймворки -

-
-
-
-
- - - diff --git a/lfs-12.0-sysv/chapter08/pkgmgt.html b/lfs-12.0-sysv/chapter08/pkgmgt.html deleted file mode 100644 index 63ac09d..0000000 --- a/lfs-12.0-sysv/chapter08/pkgmgt.html +++ /dev/null @@ -1,528 +0,0 @@ - - - - - - 8.2. Управление пакетами - - - - - - - - -
-

- 8.2. Управление - пакетами -

-

- Управление пакетами — часто cпрашиваемое дополнение к книге LFS. - Менеджер пакетов позволяет отслеживать установку файлов, упрощая - удаление и обновление пакетов. Хороший менеджер пакетов также будет - обрабатывать конфигурационные файлы, чтобы сохранить пользовательские - настройки при переустановке или обновлении пакета. Прежде чем вы - начнете задаваться вопросом, НЕТ—в этом разделе не будет ни - говориться, ни рекомендоваться какой-либо конкретный менеджер - пакетов. Что он действительно предоставляет, так это обзор наиболее - популярных методов и того, как они работают. Идеальным менеджером - пакетов для вас может быть один из этих методов или комбинация двух и - более методов. В этом разделе кратко упоминаются проблемы, которые - могут возникнуть при обновлении пакетов. -

-

- Некоторые причины, по которым менеджер пакетов не упоминается в LFS - или BLFS представлены ниже: -

-
-
    -
  • -

    - Рассмотрение управления пакетами отвлекает внимание от целей - этих книг—обучения тому, как строится система Linux. -

    -
  • -
  • -

    - Существует множество решений для управления пакетами, каждое из - которых имеет свои сильные и слабые стороны. Трудно найти - такое, которое удовлетворит всех. -

    -
  • -
-
-

- Есть несколько советов, написанных на тему управления пакетами. - Посетите проект Советы - возможно вы найдете решение, которое соответствует вашим - потребностям. -

-
-

- 8.2.1. Проблемы с обновлением -

-

- Менеджер пакетов упрощает обновление до более новых версий после их - выпуска. Как правило, инструкции в книгах LFS и BLFS можно - использовать для обновления до более новых версий. Вот некоторые - моменты, о которых следует помнить при обновлении пакетов, особенно - в работающей системе. -

-
-
    -
  • -

    - Если нужно обновить ядро Linux (например, с 5.10.17 до - 5.10.18 или 5.11.1), дополнительно пересобирать ничего не - нужно. Система продолжит нормально работать благодаря четко - определенной границе между ядром и пользовательским - пространством. В частности, заголовки Linux API не нужно (и - не следует, см. следующий пункт) обновлять вместе с ядром. - Вам просто нужно перезагрузить систему, чтобы использовать - обновленное ядро. -

    -
  • -
  • -

    - Если необходимо обновить заголовочные файлы Linux API или - Glibc до более новой версии (например, с Glibc-2.31 до - Glibc-2.32), безопаснее заново собрать LFS. Хотя вы - можете пересобрать все - пакеты с их зависимостями, мы не рекомендуем этого делать. -

    -
  • -
  • -

    - Если пакет, содержащий общую библиотеку, обновляется и имя - библиотеки изменилось, то любые пакеты, динамически связанные - с библиотекой, необходимо перекомпилировать, чтобы связать с - более новой библиотекой. (Обратите внимание, что между - версией пакета и именем библиотеки нет никакой связи.) - Например, рассмотрим пакет foo-1.2.3, который устанавливает - общую библиотеку с именем libfoo.so.1. Предположим, вы обновили пакет - до более новой версии foo-1.2.4, которая устанавливает общую - библиотеку с именем libfoo.so.2, все пакеты, которые - динамически связаны с libfoo.so.1, должны быть перекомпилированы - для связи с libfoo.so.2, чтобы - использовать новую версию библиотеки. Вы не должны удалять - старые библиотеки, пока все зависимые пакеты не будут - перекомпилированы. -

    -
  • -
  • -

    - Если пакет (прямо или косвенно) связан как со старым, так и с - новым именем общей библиотеки (например, пакет ссылается как - на libfoo.so.2, так и на - libbar.so.1, в то время как - последний ссылается на libfoo.so.3), пакет может работать - неправильно, поскольку разные версии общей библиотеки - содержат несовместимые определения для некоторых имен - символов. Это может быть вызвано перекомпиляцией некоторых, - но не всех, пакетов, связанных со старой общей библиотекой, - после обновления пакета, предоставляющего общую библиотеку. - Чтобы избежать этой проблемы, пользователям необходимо как - можно скорее пересобрать каждый пакет, связанный с общей - библиотекой, с обновленной версией (например, с libfoo.so.2 - на libfoo.so.3). -

    -
  • -
  • -

    - Если пакет, содержащий общую библиотеку, обновляется, а имя - библиотеки не меняется, но уменьшается номер версии - файла библиотеки - (например, библиотека по-прежнему называется libfoo.so.1, но имя файла библиотеки - изменилось с libfoo.so.1.25 на - libfoo.so.1.24), следует - удалить файл библиотеки ранее установленной версии (в данном - случае libfoo.so.1.25). В - противном случае, команда ldconfig (запущенная - самостоятельно с помощью командной строки или при установке - какого-либо пакета) приведёт к сбросу символической ссылки - libfoo.so.1, которая будет - указывать на старый файл библиотеки, потому что кажется, что - она имеет «более - новую» версию, поскольку её номер версии - больше. Такая ситуация может произойти, если вам нужно - понизить версию пакета или авторы изменили схему управления - версиями файлов библиотеки. -

    -
  • -
  • -

    - Если пакет, содержащий общую библиотеку, обновляется, а имя - библиотеки не меняется, но устраняется серьезная проблема - (особенно уязвимость в системе безопасности), необходимо - перезапустить все работающие программы, связанные с общей - библиотекой. Следующая команда, запущенная от имени - пользователя root после - завершения обновления, выведет список программ, которые - использует старые версии этих библиотек (замените libfoo именем библиотеки): -

    -
    grep -l 'libfoo.*deleted' /proc/*/maps | tr -cd 0-9\\n | xargs -r ps u
    -

    - Если для доступа к системе используется OpenSSH и он связан с обновленной - библиотекой, вам необходимо перезапустить службу sshd, затем выйти из - системы, снова войти в систему и повторно выполнить - предыдущую команду, чтобы убедиться, что удаленные библиотеки - более не используются. -

    -
  • -
  • -

    - Если исполняемая программа или библиотека перезаписаны, - процессы, использующие код или данные из них, могут - завершиться сбоем. Правильный способ обновить программу или - общую библиотеку, не вызывая сбоя процесса, - это сначала - удалить его, а затем установить новую версию. Команда - install, - предоставляемая Coreutils, - уже реализовала это, и большинство пакетов используют ее для - установки двоичных файлов и библиотек. Это означает, что - большую часть времени вас не будет беспокоить эта проблема. - Однако процесс установки некоторых пакетов (в частности, - Mozilla JS в BLFS) просто перезаписывает файл, если он - существует, и вызывает сбой. Поэтому безопаснее сохранить - свою работу и закрыть ненужные запущенные программы перед - обновлением пакета. -

    -
  • -
-
-
-
-

- 8.2.2. Методы управления пакетами -

-

- Ниже приведены некоторые распространенные методы управления - пакетами. Прежде чем принять решение о менеджере пакетов, проведите - исследование различных методов, особенно недостатки каждой - конкретной схемы. -

-
-

- 8.2.2.1. Всё у меня в голове! -

-

- Да, это метод управления пакетами. Некоторым людям не нужен - менеджер пакетов, потому что они хорошо знакомы с пакетами и - знают, какие файлы устанавливаются каждым пакетом. Некоторым - пользователям также не требуется какое-либо управление пакетами, - поскольку они планируют пересобирать всю систему при каждом - изменении пакета. -

-
-
-

- 8.2.2.2. Установка в отдельные каталоги -

-

- Это упрощенный метод управления пакетами, для которого не - требуется специальная программа для управления. Каждый пакет - устанавливается в отдельный каталог. Например, пакет foo-1.1 - устанавливается в /usr/pkg/foo-1.1, - а символическая ссылка создается из /usr/pkg/foo в /usr/pkg/foo-1.1. Когда появляется новая версия - foo-1.2, она устанавливается в /usr/pkg/foo-1.2 и предыдущая символическая - ссылка заменяется символической ссылкой на новую версию. -

-

- Переменные окружения, такие как PATH, - LD_LIBRARY_PATH, MANPATH, INFOPATH и - CPPFLAGS необходимо расширить, включив - каталог /usr/pkg/foo. Для большого - количества пакетов, такая схема становится неуправляемой. -

-
-
-

- 8.2.2.3. Управление пакетами с использованием символических - ссылок -

-

- Это разновидность предыдущей техники.Каждый пакет устанавливается - аналогично, но вместо создания символической ссылки на общее имя - пакета, каждому файлу создаётся символическая ссылка в иерархии - каталогов /usr. Это исключает - необходимость модификации значений переменных окружения. Хотя - такие ссылки могут быть созданы пользователем, многие менеджеры - пакетов используют именной такой подход. Наиболее популярные из - них - Stow, Epkg, Graft и Depot. -

-

- Установку нужно сымитировать, чтобы пакет думал, что он - установлен в /usr, хотя на самом - деле он установлен в иерархии /usr/pkg. Установка таким способом обычно - является нетривиальной задачей. Например, предположим, что вы - устанавливаете пакет libfoo-1.1. Следующие инструкции могут - привести к неправильной установке пакета: -

-
./configure --prefix=/usr/pkg/libfoo/1.1
-make
-make install
-

- Установка будет выполнена, но зависимые пакеты не смогут - ссылаться на libfoo. Если вы скомпилируете пакет, который - ссылается на libfoo, вы заметите, что он связан с /usr/pkg/libfoo/1.1/lib/libfoo.so.1 вместо - /usr/lib/libfoo.so.1, как вы - ожидаете. Правильный подход заключается в использовании - переменной DESTDIR для управления - установкой. Этот подход работает следующим образом: -

-
./configure --prefix=/usr
-make
-make DESTDIR=/usr/pkg/libfoo/1.1 install
-

- Большинство пакетов поддерживают этот подход, но есть и такие, - которые этого не делают. Для несовместимых пакетов вам может - потребоваться либо установить пакет вручную, либо вы можете - установить проблемные пакеты в /opt. -

-
-
-

- 8.2.2.4. На основе временной метки -

-

- В этом методе файлу присваивается временная метка перед - установкой пакета. После установки простое использование команды - find с - соответствующими параметрами может создать журнал всех файлов, - установленных после создания файла с временной метки. Менеджером - пакетов, использующим этот подход, является install-log. -

-

- Хотя преимущество этой схемы в том, что она проста, у нее есть - два недостатка. Если во время установки, файлы устанавливаются с - отметкой времени, отличной от текущего времени, эти файлы не - будут отслеживаться менеджером пакетов. Кроме того, эта схема - может использоваться только при установке пакетов по одному. - Журналы ненадежны, если два пакета устанавливаются одновременно - на двух разных консолях. -

-
-
-

- 8.2.2.5. Отслеживание сценариев установки -

-

- При таком подходе, записываются команды, выполняемые сценариями - установки. Есть два метода, которые можно использовать: -

-

- Переменная среды LD_PRELOAD может быть - установлена так, чтобы она указывала на библиотеку, которую нужно - предварительно загрузить перед установкой. Во время установки эта - библиотека отслеживает устанавливаемые пакеты, присоединяясь к - различным исполняемым файлам, таким как cp, install, mv, и отслеживая системные - вызовы, изменяющие файловую систему. Чтобы этот подход работал, - все исполняемые файлы должны быть динамически связаны без битов - suid или sgid. Предварительная загрузка библиотеки может вызвать - некоторые нежелательные побочные эффекты во время установки. - Поэтому рекомендуется выполнить некоторые тесты, чтобы убедиться, - что менеджер пакетов ничего не сломает и что он регистрирует все - соответствующие файлы. -

-

- Другой метод заключается в использовании strace, который регистрирует - все системные вызовы, сделанные во время выполнения сценариев - установки. -

-
-
-

- 8.2.2.6. Создание архивов пакетов -

-

- В этой схеме установка пакета имитируется в отдельном дереве, как - описано ранее в разделе управление пакетами с использованием - символических ссылок. После установки из установленных файлов - создается архив пакета. Затем этот архив используется для - установки пакета на локальный компьютер или даже на другие - компьютеры. -

-

- Этот подход используется большинством менеджеров пакетов, - имеющихся в коммерческих дистрибутивах. Примерами менеджеров - пакетов, которые следуют этому подходу, являются RPM (который, - кстати, требуется согласно спецификации Linux Standard - Base Specification), pkg-utils, apt Debian и система Portage - Gentoo. Описание того, как использовать этот стиль управления - пакетами для систем LFS, находится по адресу - https://mirror.linuxfromscratch.ru/hints/downloads/files/fakeroot.txt. -

-

- Создание файлов пакетов, содержащих информацию о зависимостях, - является сложной задачей и выходит за рамки LFS. -

-

- Slackware использует систему на основе tar для архивов пакетов. Эта - система намеренно не обрабатывает зависимости пакетов, как это - делают более сложные менеджеры пакетов. Подробнее об управлении - пакетами Slackware см. https://www.slackbook.org/html/package-management.html. -

-
-
-

- 8.2.2.7. Пользовательское управление пакетами -

-

- Эта схема, уникальная для LFS, была разработана Маттиасом - Бенкманом и доступна в проекте Hints. - В этой схеме каждый пакет устанавливается отдельным пользователем - в стандартные папки. Файлы, принадлежащие пакету, легко - идентифицируются путем проверки идентификатора пользователя. - Особенности и недостатки этого подхода слишком сложны, чтобы - описывать их в этом разделе. Для получения более подробной - информации, пожалуйста, ознакомьтесь с советами по адресу - - https://mirror.linuxfromscratch.ru/hints/downloads/files/more_control_and_pkg_man.txt. -

-
-
-
-

- 8.2.3. Развертывание LFS на нескольких системах -

-

- Одним из преимуществ системы LFS является отсутствие файлов, - зависящих от положения файлов на диске. Клонировать сборку LFS на - другой компьютер с той же архитектурой, что и у базовой системы, - так же просто, как использовать tar для архивации раздела LFS, - содержащем корневой каталог (около 900 МБ в несжатом виде для - базовой сборки LFS), скопировать этот файл по сети или с помощью CD - / USB носителя в новую систему и распаковать его. После этого - необходимо изменить несколько конфигурационных файлов. Файлы, - которые, возможно, потребуется изменить представлены в списке ниже: - /etc/hosts, /etc/fstab, /etc/passwd, /etc/group, /etc/shadow, /etc/ld.so.conf, /etc/sysconfig/rc.site, /etc/sysconfig/network, и /etc/sysconfig/ifconfig.eth0. -

-

- Возможно, потребуется собрать собственное ядро для новой системы в - зависимости от различий в системном оборудовании и исходной - конфигурации ядра. -

-
- [Примечание] -

- Примечание -

-

- Поступали некоторые сообщения о проблемах при копировании между - похожими, но не идентичными архитектурами. Например, набор - инструкций для Intel не идентичен набору инструкций для - процессора AMD, и более поздние версии некоторых процессоров - могут содержать инструкции, недоступные в более ранних версиях. -

-
-

- Наконец, новую систему необходимо сделать загрузочной так, как это - описано в Раздел 10.4, - «Использование GRUB для настройки процесса загрузки». -

-
-
- - - diff --git a/lfs-12.0-sysv/chapter08/procps-ng.html b/lfs-12.0-sysv/chapter08/procps-ng.html deleted file mode 100644 index bd4f75f..0000000 --- a/lfs-12.0-sysv/chapter08/procps-ng.html +++ /dev/null @@ -1,412 +0,0 @@ - - - - - - 8.76. Procps-ng-4.0.3 - - - - - - - - -
-

- 8.76. - Procps-ng-4.0.3 -

-
-

- Пакет Procps-ng содержит программы для мониторинга процессов. -

-
-
-
- Приблизительное время сборки: - 0.1 SBU -
-
- Требуемое дисковое - пространство: 25 MB -
-
-
-
-
-

- 8.76.1. Установка пакета Procps-ng -

-

- Подготовьте Procps-ng к компиляции: -

-
./configure --prefix=/usr                           \
-            --docdir=/usr/share/doc/procps-ng-4.0.3 \
-            --disable-static                        \
-            --disable-kill
-
-

- Значение параметра configure: -

-
-
- --disable-kill -
-
-

- Этот параметр отключает сборку команды kill; она будет установлена - из пакета Util-linux. -

-
-
-
-

- Скомпилируйте пакет: -

-
make
-

- Чтобы запустить набор тестов, выполните: -

-
make check
-

- Установите пакет: -

-
make install
-
-
-

- 8.76.2. - Содержимое пакета Procps-ng -

-
-
-
- Установленные программы: - free, pgrep, pidof, pkill, pmap, ps, - pwdx, slabtop, sysctl, tload, top, uptime, vmstat, w и - watch -
-
- Установленные библиотеки: - libproc-2.so -
-
- Созданные каталоги: - /usr/include/procps и - /usr/share/doc/procps-ng-4.0.3 -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

- free -

-
-

- Сообщает объем свободной и используемой памяти (как - физической, так и файла подкачки) в системе. -

-
-

- pgrep -

-
-

- Выполняет поиск процессов на основе их имени и других - атрибутов -

-
-

- pidof -

-
-

- Сообщает PIDы указанных программ -

-
-

- pkill -

-
-

- Отправка сигналов процессам на основе их имени и других - атрибутов -

-
-

- pmap -

-
-

- Команда выводит детальную информацию об использование - оперативной памяти процессами -

-
-

- ps -

-
-

- Список запущенных процессов -

-
-

- pwdx -

-
-

- Сообщает текущий рабочий каталог процесса -

-
-

- slabtop -

-
-

- Отображает подробную информацию о кэш-памяти ядра в - режиме реального времени. -

-
-

- sysctl -

-
-

- Изменяет параметры ядра во время выполнения -

-
-

- tload -

-
-

- Выводит график текущей средней загрузки системы -

-
-

- top -

-
-

- Отображает список процессов, наиболее интенсивно - использующих ЦП; обеспечивает просмотр активности - процессора в режиме реального времени -

-
-

- uptime -

-
-

- Сообщает сколько времени работает система, сколько - пользователей вошли в систему и средние значения загрузки - системы. -

-
-

- vmstat -

-
-

- Сообщает статистику виртуальной памяти, содержащую - информацию о процессах, памяти, подкачке, блочном - вводе/выводе (IO), прерываниях и активности ЦП. -

-
-

- w -

-
-

- Показывает, какие пользователи в настоящее время вошли в - систему и с какого момента -

-
-

- watch -

-
-

- Выполняет заданную команду повторно, отображая первый - экран, заполненный ее выводом; это позволяет пользователю - наблюдать за изменениями с течением времени -

-
-

- libproc-2 -

-
-

- Содержит функции, используемые большинством программ в - этом пакете. -

-
-
-
-
- - - diff --git a/lfs-12.0-sysv/chapter08/psmisc.html b/lfs-12.0-sysv/chapter08/psmisc.html deleted file mode 100644 index 518d2db..0000000 --- a/lfs-12.0-sysv/chapter08/psmisc.html +++ /dev/null @@ -1,248 +0,0 @@ - - - - - - 8.31. Psmisc-23.6 - - - - - - - - -
-

- 8.31. - Psmisc-23.6 -

-
-

- Пакет Psmisc содержит программы для отображения информации о - запущенных процессах. -

-
-
-
- Приблизительное время сборки: - менее 0.1 SBU -
-
- Требуемое дисковое - пространство: 6.6 MB -
-
-
-
-
-

- 8.31.1. Установка пакета Psmisc -

-

- Подготовьте Psmisc к компиляции: -

-
./configure --prefix=/usr
-

- Скомпилируйте пакет: -

-
make
-

- Чтобы протестировать пакет, выполните: -

-
make check
-

- Установите пакет: -

-
make install
-
-
-

- 8.31.2. - Содержимое пакета Psmisc -

-
-
-
- Установленные программы: - fuser, killall, peekfd, prtstat, pslog, - pstree и pstree.x11 (ссылка на pstree) -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

- fuser -

-
-

- Сообщает идентификаторы процессов (PID), которые - используют данные файлы или файловые системы. -

-
-

- killall -

-
-

- Уничтожает процессы по имени; посылает сигнал всем - процессам, выполняющим любую из заданных команд -

-
-

- peekfd -

-
-

- Просмотривает файловые дескрипторы запущенного процесса с - учетом его PID -

-
-

- prtstat -

-
-

- Выводит информацию о процессе -

-
-

- pslog -

-
-

- Сообщает текущий путь к журналам процесса -

-
-

- pstree -

-
-

- Отображает запущенные процессы в виде дерева -

-
-

- pstree.x11 -

-
-

- То же, что и pstree, за исключением - того, что он ожидает подтверждения перед выходом. -

-
-
-
-
- - - diff --git a/lfs-12.0-sysv/chapter08/readline.html b/lfs-12.0-sysv/chapter08/readline.html deleted file mode 100644 index 84f6061..0000000 --- a/lfs-12.0-sysv/chapter08/readline.html +++ /dev/null @@ -1,238 +0,0 @@ - - - - - - 8.11. Readline-8.2 - - - - - - - - -
-

- 8.11. - Readline-8.2 -

-
-

- Пакет Readline представляет собой набор библиотек, предлагающих - возможности редактирования прямо в командной строке и просмотра - истории команд. -

-
-
-
- Приблизительное время сборки: - менее 0.1 SBU -
-
- Требуемое дисковое - пространство: 16 MB -
-
-
-
-
-

- 8.11.1. Установка пакета Readline -

-

- Переустановка пакета Readline приводит к перемещению старых - библиотек в <libraryname>.old. Обычно это не вызывает - проблем, но в некоторых случаях могут возникать ошибки линковки с - ldconfig. Этого можно - избежать, выполнив следующие две команды sed: -

-
sed -i '/MV.*old/d' Makefile.in
-sed -i '/{OLDSUFF}/c:' support/shlib-install
-

- Теперь устраните проблему, выявленную разработчиками: -

-
patch -Np1 -i ../readline-8.2-upstream_fix-1.patch
-

- Подготовьте Readline к компиляции: -

-
./configure --prefix=/usr    \
-            --disable-static \
-            --with-curses    \
-            --docdir=/usr/share/doc/readline-8.2
-
-

- Значение нового параметра configure: -

-
-
- --with-curses -
-
-

- Этот параметр сообщает Readline, что он может найти функции - библиотеки termcap в библиотеке curses, а не в отдельной - библиотеке termcap. Это позволит сгенерировать корректный - файл readline.pc. -

-
-
-
-

- Скомпилируйте пакет: -

-
make SHLIB_LIBS="-lncursesw"
-
-

- Значение параметра make: -

-
-
- SHLIB_LIBS="-lncursesw" -
-
-

- Этот параметр принудительно линкует Readline с библиотекой - libncursesw. -

-
-
-
-

- С этим пакетом не поставляется набор тестов. -

-

- Установите пакет: -

-
make SHLIB_LIBS="-lncursesw" install
-

- По желанию установите документацию: -

-
install -v -m644 doc/*.{ps,pdf,html,dvi} /usr/share/doc/readline-8.2
-
-
-

- 8.11.2. - Содержимое пакета Readline -

-
-
-
- Установленные библиотеки: - libhistory.so и libreadline.so -
-
- Созданные каталоги: - /usr/include/readline и - /usr/share/doc/readline-8.2 -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - - - - - -
-

- libhistory -

-
-

- Обеспечивает согласованный пользовательский интерфейс для - вызова строк из истории -

-
-

- libreadline -

-
-

- Предоставляет набор команд для управления текстом, - введенным в интерактивном сеансе программы. -

-
-
-
-
- - - diff --git a/lfs-12.0-sysv/chapter08/sed.html b/lfs-12.0-sysv/chapter08/sed.html deleted file mode 100644 index 7c711d8..0000000 --- a/lfs-12.0-sysv/chapter08/sed.html +++ /dev/null @@ -1,163 +0,0 @@ - - - - - - 8.30. Sed-4.9 - - - - - - - - -
-

- 8.30. Sed-4.9 -

-
-

- Пакет Sed содержит потоковый редактор текста -

-
-
-
- Приблизительное время сборки: - 0.3 SBU -
-
- Требуемое дисковое - пространство: 30 MB -
-
-
-
-
-

- 8.30.1. Установка пакета Sed -

-

- Подготовьте Sed к компиляции: -

-
./configure --prefix=/usr
-

- Скомпилируйте пакет и сгенерируйте HTML-документацию: -

-
make
-make html
-

- Чтобы протестировать пакет, выполните: -

-
chown -Rv tester .
-su tester -c "PATH=$PATH make check"
-

- Установите пакет и документацию к нему: -

-
make install
-install -d -m755           /usr/share/doc/sed-4.9
-install -m644 doc/sed.html /usr/share/doc/sed-4.9
-
-
-

- 8.30.2. Содержимое - пакета Sed -

-
-
-
- Установленные программы: - sed -
-
- Созданные каталоги: - /usr/share/doc/sed-4.9 -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - -
-

- sed -

-
-

- Фильтрует и преобразует текстовые файлы за один проход -

-
-
-
-
- - - diff --git a/lfs-12.0-sysv/chapter08/shadow.html b/lfs-12.0-sysv/chapter08/shadow.html deleted file mode 100644 index 9659b0f..0000000 --- a/lfs-12.0-sysv/chapter08/shadow.html +++ /dev/null @@ -1,945 +0,0 @@ - - - - - - 8.26. Shadow-4.13 - - - - - - - - -
-

- 8.26. - Shadow-4.13 -

-
-

- Пакет Shadow содержит программы для безопасной обработки паролей. -

-
-
-
- Приблизительное время сборки: - 0.1 SBU -
-
- Требуемое дисковое - пространство: 46 MB -
-
-
-
-
-

- 8.26.1. Установка пакета Shadow -

-
- [Примечание] -

- Примечание -

-

- Если вы хотите принудительно использовать надежные пароли, - обратитесь к инструкции - https://mirror.linuxfromscratch.ru/blfs/view/12.0/postlfs/cracklib.html - для установки CrackLib перед сборкой. Затем добавьте параметр - --with-libcrack в - приведенную ниже команду configure. -

-
-

- Отключите установку groups и ее справочных страниц, - так как Coreutils предоставляет версию лучше. Кроме того, запретите - установку страниц руководств, так как они были установлены в - Раздел 8.3, «Man-pages-6.05.01»: -

-
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 / /'   {} \;
-

- Вместо - используемого по умолчанию метода crypt, используйте более безопасный - метод шифрования паролей YESCRYPT, который также позволяет - использовать пароли длиннее 8 символов. Также необходимо изменить - устаревшее местоположение для почтовых ящиков пользователей - /var/spool/mail, которое Shadow - использует по умолчанию, на используемое в настоящее время - /var/mail. И удалите /bin и /sbin из - PATH, поскольку они являются просто - символическими ссылками на их аналоги в /usr. -

-
- [Примечание] -

- Примечание -

-

- Если вы по какой-либо причине хотите включить /bin и/или /sbin - в PATH, измените PATH в файле .bashrc - после сборки LFS. -

-
-
sed -e 's:#ENCRYPT_METHOD DES:ENCRYPT_METHOD YESCRYPT:' \
-    -e 's:/var/spool/mail:/var/mail:'                 \
-    -e '/PATH=/{s@/sbin:@@;s@/bin:@@}'                \
-    -i etc/login.defs
-
- [Примечание] -

- Примечание -

-

- Если вы решили собрать Shadow с поддержкой Cracklib, выполните - эту команду: -

-
sed -i 's:DICTPATH.*:DICTPATH\t/lib/cracklib/pw_dict:' etc/login.defs
-
-

- Подготовьте Shadow к компиляции: -

-
touch /usr/bin/passwd
-./configure --sysconfdir=/etc \
-            --disable-static  \
-            --with-{b,yes}crypt \
-            --with-group-name-max-length=32
-
-

- Значение новых параметров конфигурации: -

-
-
- touch - /usr/bin/passwd -
-
-

- Файл /usr/bin/passwd должен - существовать, потому что его местоположение жестко задано в - некоторых программах; если он не существует, скрипт установки - создаст его не в том месте. -

-
-
- --with-{b,yes}crypt -
-
-

- Оболочка расширяет это значение до двух параметров: - --with-bcrypt и - --with-yescrypt. Они - позволяют Shadow использовать алгоритмы Bcrypt и Yescrypt, - реализованные в Libxcrypt, - для хеширования паролей. Эти алгоритмы более безопасны (в - частности, гораздо более устойчивы к атакам с использованием - графических процессоров), чем традиционные алгоритмы SHA. -

-
-
- --with-group-name-max-length=32 -
-
-

- Максимально допустимая длина имени пользователя составляет 32 - символа. Сделайте такую же длину для названия группы. -

-
-
-
-

- Скомпилируйте пакет: -

-
make
-

- С этим пакетом не поставляется набор тестов. -

-

- Установите пакет: -

-
make exec_prefix=/usr install
-make -C man install-man
-
-
-

- 8.26.2. Настройка Shadow -

-

- Этот пакет содержит утилиты для добавления, изменения и удаления - пользователей и групп; установки и изменения их паролей; и - выполнения других задач администрирования. Полное объяснение того, - что означает password - shadowing, см. в файле doc/HOWTO в дереве распакованных - исходных текстов. При использовании Shadow имейте в виду, что - программы, которым необходимо проверять пароли (дисплейные - менеджеры, FTP-программы, демоны pop3 и т.д.), должны быть - совместимы с Shadow. То есть они должны уметь работать с теневыми - паролями. -

-

- Чтобы включить поддержку теневых паролей, выполните следующую - команду:: -

-
pwconv
-

- Чтобы включить использование теневых паролей для групп, запустите: -

-
grpconv
-

- Конфигурация Shadow по умолчанию для утилиты useradd имеет несколько - особенностей, требующих пояснения. Во-первых, по умолчанию утилита - useradd создает - пользователя и группу с тем же названием, что и имя пользователя. - По умолчанию, идентификатора пользователя (UID) и идентификатора - группы (GID) начинаются с 1000. Это означает, что если вы не - передадите дополнительные параметры в useradd, каждый пользователь - будет членом уникальной группы в системе. Если такое поведение - нежелательно, вам нужно передать один из параметров -g или -N в useradd или изменить настройку - USERGROUPS_ENAB в файле - /etc/login.defs. Смотрите справочную - страницу useradd(8) для получения - дополнительной информации. -

-

- Во-вторых, чтобы изменить параметры по умолчанию, необходимо - создать файл /etc/default/useradd и - настроить его в соответствии с вашими потребностями. Создайте его: -

-
mkdir -p /etc/default
-useradd -D --gid 999
-
-

- Пояснения к параметрам /etc/default/useradd -

-
-
- GROUP=999 -
-
-

- Этот параметр задает начальный номер группы, используемых в - файле /etc/group. Значение 999 - берется из приведенного выше параметра --gid. Вы можете установить - любое значение. Обратите внимание, что useradd никогда не будет - повторно использовать UID или GID. Если номер, указанный в - этом параметре, уже используется будет выбран следующий - доступный номер. Также обратите внимание, что если в вашей - системе нет группы с идентификатором, равным этому номеру, - при первом использовании useradd без параметра - -g — вы получите - следующее сообщение об ошибке: useradd: unknown GID 999, даже если - учетная запись была создана правильно. Поэтому мы создали - группу users с этим - идентификатором в Раздел 7.6, - «Создание основных файлов и символических ссылок». -

-
-
- CREATE_MAIL_SPOOL=yes -
-
-

- Этот параметр заставит утилиту useradd создавать файл - почтового ящика для каждого нового пользователя. useradd сделает этот файл - принадлежащим группе mail с - правами доступа 0660. Если вы предпочитаете, не создавать эти - файлы, выполните следующую команду: -

-
sed -i '/MAIL/s/yes/no/' /etc/default/useradd
-
-
-
-
-
-

- 8.26.3. Установка пароля пользователя root -

-

- Придумайте пароль для root и - установите командой: -

-
passwd root
-
-
-

- 8.26.4. - Содержимое пакета Shadow -

-
-
-
- Установленные программы: - chage, chfn, chgpasswd, chpasswd, chsh, - expiry, faillog, getsubids, gpasswd, groupadd, groupdel, - groupmems, groupmod, grpck, grpconv, grpunconv, lastlog, login, - logoutd, newgidmap, newgrp, newuidmap, newusers, nologin, - passwd, pwck, pwconv, pwunconv, sg (ссылка на newgrp), su, - useradd, userdel, usermod, vigr (ссылка на vipw) и vipw -
-
- Установленные библиотеки: - libsubid.so -
-
- Созданные каталоги: - /etc/default и /usr/include/shadow -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

- chage -

-
-

- Используется для изменения максимального количества дней - между обязательными сменами пароля -

-
-

- chfn -

-
-

- Используется для изменения полного имени пользователя и - другой информации -

-
-

- chgpasswd -

-
-

- Используется для обновления паролей групп в пакетном - режиме. -

-
-

- chpasswd -

-
-

- Используется для обновления паролей пользователей в - пакетном режиме. -

-
-

- chsh -

-
-

- Используется для изменения оболочки входа для - пользователя. -

-
-

- expiry -

-
-

- Проверяет и применяет текущую политику истечения срока - действия пароля -

-
-

- faillog -

-
-

- Используется для проверки журнала неудачных попыток входа - в систему, для установки максимального количества - неудачных попыток до блокировки учетной записи и для - сброса счетчика неудачных попыток. -

-
-

- getsubids -

-
-

- Используется для перечисления подчиненных диапазонов - идентификаторов для пользователя -

-
-

- gpasswd -

-
-

- Используется для добавления и удаления пользователей и - администраторов в группы. -

-
-

- groupadd -

-
-

- Создает группу с указанным именем -

-
-

- groupdel -

-
-

- Удаляет группу с указанным именем -

-
-

- groupmems -

-
-

- Позволяет пользователю управлять своим собственным - списком членов группы без привилегий суперпользователя -

-
-

- groupmod -

-
-

- Используется для изменения имени группы или GID -

-
-

- grpck -

-
-

- Проверяет целостность файлов групп /etc/group и /etc/gshadow -

-
-

- grpconv -

-
-

- Создает или изменяет файл теневых групп, используя для - этого обычный файл групп -

-
-

- grpunconv -

-
-

- Обновляет /etc/group из - /etc/gshadow, а затем - удаляет последний -

-
-

- lastlog -

-
-

- Сообщает о самом последнем входе в систему всех - пользователей или данного пользователя -

-
-

- login -

-
-

- Используется системой для того, чтобы пользователь мог - войти в систему -

-
-

- logoutd -

-
-

- Это демон, используемый для обеспечения соблюдения - ограничений на время входа в систему и порты -

-
-

- newgidmap -

-
-

- Используется для сопоставления gid пространства имен - пользователя -

-
-

- newgrp -

-
-

- Используется для изменения GID во время сеанса входа в - систему -

-
-

- newuidmap -

-
-

- Используется для сопоставления uid пространства имен - пользователя -

-
-

- newusers -

-
-

- Используется для создания или изменения - последовательности учетных записей -

-
-

- nologin -

-
-

- Отображает сообщение о том, что учетная запись - недоступна; она предназначена для использования в - качестве оболочки по умолчанию для отключенных учетных - записей -

-
-

- passwd -

-
-

- Используется для изменения пароля для учетной записи - пользователя или группы. -

-
-

- pwck -

-
-

- Проверяет целостность файлов паролей /etc/passwd и /etc/shadow -

-
-

- pwconv -

-
-

- Создает или изменяет файл теневых паролей, используя для - этого обычный файл паролей -

-
-

- pwunconv -

-
-

- Обновляет /etc/passwd из - /etc/shadow а затем удаляет - последний -

-
-

- sg -

-
-

- Выполняет указанную команду в случае, если у пользователя - идентификатор группы GID совпадает с идентификатором - указанной группы -

-
-

- su -

-
-

- Запускает оболочку с заменой идентификаторов пользователя - и группы -

-
-

- useradd -

-
-

- Создает нового пользователя с указанным именем, либо - изменяет информацию, задаваемую по умолчанию для нового - пользователя -

-
-

- userdel -

-
-

- Удаляет учетную запись указанного пользователя -

-
-

- usermod -

-
-

- Используется для изменения имени пользователя, - идентификатора пользователя (UID), оболочки, группы, - домашнего каталога и т.д. -

-
-

- vigr -

-
-

- Редактирует файлы /etc/group или /etc/gshadow -

-
-

- vipw -

-
-

- Редактирует файлы /etc/passwd или /etc/shadow -

-
-

- libsubid -

-
-

- библиотека для обработки подчиненных диапазонов - идентификаторов пользователей и групп -

-
-
-
-
- - - diff --git a/lfs-12.0-sysv/chapter08/stripping.html b/lfs-12.0-sysv/chapter08/stripping.html deleted file mode 100644 index f7beb74..0000000 --- a/lfs-12.0-sysv/chapter08/stripping.html +++ /dev/null @@ -1,223 +0,0 @@ - - - - - - 8.82. Удаление отладочных символов - - - - - - - - -
-

- 8.82. - Удаление отладочных символов -

-

- Этот раздел является необязательным. Если предполагаемый пользователь - не является программистом и не планирует выполнять какую-либо отладку - системного программного обеспечения, размер системы можно уменьшить - примерно на 2 ГБ, удалив отладочные символы и некоторые ненужные - записи таблицы символов из двоичных файлов и библиотек. Это не - вызывает никаких неудобств для обычного пользователя Linux. -

-

- Большинство людей, использующих приведенные ниже команды, не - испытывают никаких трудностей. Однако легко допустить опечатку и - сделать новую систему непригодной для использования. Поэтому перед - выполнением команды strip рекомендуется сделать - резервную копию системы LFS. -

-

- Команда strip с - параметром --strip-unneeded - удаляет все отладочные символы из двоичного файла или библиотеки. - Кроме этого, она удаляет все записи таблицы символов, ненужные - компоновщику (для статических библиотек) или динамическому - компоновщику (для динамически подключаемых двоичных файлов и общих - библиотек). -

-

- Отладочные символы для выбранных библиотек сохраняются в отдельных - файлах. Эта отладочная информация необходима при выполнении - регрессионных тестов, с помощью - valgrind или - gdb в BLFS. -

-

- Обратите внимание, что команда strip перезапишет двоичный файл или - библиотеку, которую она обрабатывает. Это может привести к сбою - процессов, использующих код или данные из файла. Если это затронет - сам процесс, выполняющий strip, удаляемый двоичный файл или - библиотека могут быть уничтожены; это может сделать систему полностью - непригодной для использования. Чтобы избежать этого, мы скопируем - некоторые библиотеки и двоичные файлы в /tmp, очистим их и переустановим с помощью команды - install. Прочтите - статью Раздел 8.2.1, «Проблемы с - обновлением», чтобы понять, почему следует использовать команду - install здесь. -

-
- [Примечание] -

- Примечание -

-

- Имя загрузчика ELF — ld-linux-x86-64.so.2 в 64-битных системах. и - ld-linux.so.2 в 32-битных системах. Конструкция ниже выбирает - правильное имя для текущей архитектуры, исключая всё, что - заканчивается на «g», если приведенные ниже команды уже были - выполнены. -

-
-
- [Важно] -

- Важно -

-

- Если есть какой-либо пакет, версия которого отличается от версии, - указанной в книге (либо в соответствии с рекомендациями по - безопасности, либо в соответствии с личными предпочтениями), может - потребоваться обновить имя файла библиотеки в save_usrlib или online_usrlib. В - противном случае система может стать полностью непригодной для - использования. -

-
-
save_usrlib="$(cd /usr/lib; ls ld-linux*[^g])
-             libc.so.6
-             libthread_db.so.1
-             libquadmath.so.0.0.0
-             libstdc++.so.6.0.32
-             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
-    cp $LIB /tmp/$LIB
-    strip --strip-unneeded /tmp/$LIB
-    objcopy --add-gnu-debuglink=$LIB.dbg /tmp/$LIB
-    install -vm755 /tmp/$LIB /usr/lib
-    rm /tmp/$LIB
-done
-
-online_usrbin="bash find strip"
-online_usrlib="libbfd-2.41.so
-               libsframe.so.1.0.0
-               libhistory.so.8.2
-               libncursesw.so.6.4
-               libm.so.6
-               libreadline.so.8.2
-               libz.so.1.2.13
-               $(cd /usr/lib; find libnss*.so* -type f)"
-
-for BIN in $online_usrbin; do
-    cp /usr/bin/$BIN /tmp/$BIN
-    strip --strip-unneeded /tmp/$BIN
-    install -vm755 /tmp/$BIN /usr/bin
-    rm /tmp/$BIN
-done
-
-for LIB in $online_usrlib; do
-    cp /usr/lib/$LIB /tmp/$LIB
-    strip --strip-unneeded /tmp/$LIB
-    install -vm755 /tmp/$LIB /usr/lib
-    rm /tmp/$LIB
-done
-
-for i in $(find /usr/lib -type f -name \*.so* ! -name \*dbg) \
-         $(find /usr/lib -type f -name \*.a)                 \
-         $(find /usr/{bin,sbin,libexec} -type f); do
-    case "$online_usrbin $online_usrlib $save_usrlib" in
-        *$(basename $i)* )
-            ;;
-        * ) strip --strip-unneeded $i
-            ;;
-    esac
-done
-
-unset BIN LIB save_usrlib online_usrbin online_usrlib
-
-

- Большое количество файлов будет помечено как ошибочные, потому что - формат файла не распознан. Эти предупреждения можно смело - игнорировать. Они указывают на то, что файлы являются скриптами, а не - двоичными файлами. -

-
- - - diff --git a/lfs-12.0-sysv/chapter08/sysklogd.html b/lfs-12.0-sysv/chapter08/sysklogd.html deleted file mode 100644 index a8a6ea1..0000000 --- a/lfs-12.0-sysv/chapter08/sysklogd.html +++ /dev/null @@ -1,208 +0,0 @@ - - - - - - 8.79. Sysklogd-1.5.1 - - - - - - - - -
-

- 8.79. - Sysklogd-1.5.1 -

-
-

- Пакет Sysklogd содержит программы для логирования системных - сообщений, таких как сообщения ядра, когда происходят различные - события. -

-
-
-
- Приблизительное время сборки: - менее 0.1 SBU -
-
- Требуемое дисковое - пространство: 680 KB -
-
-
-
-
-

- 8.79.1. Установка пакета Sysklogd -

-

- Во-первых, устраните проблему, которая при некоторых условиях - вызывает в klogd ошибку сегментирования и исправьте устаревшую - программную конструкцию: -

-
sed -i '/Error loading kernel symbols/{n;n;d}' ksym_mod.c
-sed -i 's/union wait/int/' syslogd.c
-

- Скомпилируйте пакет: -

-
make
-

- Этот пакет не содержит набора тестов. -

-

- Установите пакет: -

-
make BINDIR=/sbin install
-
-
-

- 8.79.2. Настройка - Sysklogd -

-

- Создайте новый файл /etc/syslog.conf, - выполнив следующую команду: -

-
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
-
-
-

- 8.79.3. - Содержимое пакета Sysklogd -

-
-
-
- Установленные программы: - klogd и syslogd -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - - - - - -
-

- klogd -

-
-

- Системный демон для перехвата и регистрации сообщений - ядра -

-
-

- syslogd -

-
-

- Регистрирует сообщения системных программ для записи в - лог [Каждое регистрируемое сообщение содержит как минимум - время события, имя хоста, а также имя программы, но это - зависит от настроек службы логирования.] -

-
-
-
-
- - - diff --git a/lfs-12.0-sysv/chapter08/sysvinit.html b/lfs-12.0-sysv/chapter08/sysvinit.html deleted file mode 100644 index 6f0d2e2..0000000 --- a/lfs-12.0-sysv/chapter08/sysvinit.html +++ /dev/null @@ -1,313 +0,0 @@ - - - - - - 8.80. Sysvinit-3.07 - - - - - - - - -
-

- 8.80. - Sysvinit-3.07 -

-
-

- Пакет Sysvinit содержит программы для управления загрузкой, - выполнением и выключением системы. -

-
-
-
- Приблизительное время сборки: - менее 0.1 SBU -
-
- Требуемое дисковое - пространство: 4.5 MB -
-
-
-
-
-

- 8.80.1. Установка пакета Sysvinit -

-

- Сначала примените патч, который удаляет несколько программ, - установленных другими пакетами и исправляет предупреждение - компилятора: -

-
patch -Np1 -i ../sysvinit-3.07-consolidated-1.patch
-

- Скомпилируйте пакет: -

-
make
-

- С этим пакетом не поставляется набор тестов. -

-

- Установите пакет: -

-
make install
-
-
-

- 8.80.2. - Содержимое пакета Sysvinit -

-
-
-
- Установленные программы: - bootlogd, fstab-decode, halt, init, - killall5, poweroff (ссылка на halt), reboot (ссылка на halt), - runlevel, shutdown и telinit (ссылка на init) -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

- bootlogd -

-
-

- Логирует сообщения при загрузке системы -

-
-

- fstab-decode -

-
-

- Запускает команду с аргументами, заданными в fstab -

-
-

- halt -

-
-

- Обычно вызывает команду shutdown с параметром - -h, за - исключением случаев, когда уровень запуска уже равен 0, - тогда он посылает ядру сигнал на остановку системы; Кроме - этого отмечает в файле /var/log/wtmp, что система завершает - работу -

-
-

- init -

-
-

- Первый процесс, который запускается после инициализации - оборудования; init берет на себя процесс загрузки и - запускает все процессы, которые указанны в его файле - конфигурации -

-
-

- killall5 -

-
-

- Посылает сигнал всем процессам, за исключением процессов - в его собственном сеансе; он не завершит свою - родительскую оболочку -

-
-

- poweroff -

-
-

- Посылает ядру команду остановить систему и выключить - компьютер (смотрите команду halt) -

-
-

- reboot -

-
-

- Посылает ядру команду перезагрузить систему (смотрите - команду halt) -

-
-

- runlevel -

-
-

- Сообщает о предыдущем и текущем уровнях выполнения так, - как это указано в последней записи в файле /run/utmp -

-
-

- shutdown -

-
-

- Безопасно останавливает систему, отправляя сигналы всем - процессам и оповещая всех пользователей, находящихся в - системе -

-
-

- telinit -

-
-

- Сообщает init на какой уровень - выполнения перейти -

-
-
-
-
- - - diff --git a/lfs-12.0-sysv/chapter08/tar.html b/lfs-12.0-sysv/chapter08/tar.html deleted file mode 100644 index 5861b35..0000000 --- a/lfs-12.0-sysv/chapter08/tar.html +++ /dev/null @@ -1,209 +0,0 @@ - - - - - - 8.69. Tar-1.35 - - - - - - - - -
-

- 8.69. Tar-1.35 -

-
-

- Пакет Tar предоставляет возможность создавать tar архивы, а также - производить с ними различные манипуляции. Tar может распаковать - предварительно созданный архив, добавить или обновить файлы в нём, - вернуть список файлов в архиве. -

-
-
-
- Приблизительное время сборки: - 1.7 SBU -
-
- Требуемое дисковое - пространство: 43 MB -
-
-
-
-
-

- 8.69.1. Установка пакета Tar -

-

- Подготовьте Tar к компиляции: -

-
FORCE_UNSAFE_CONFIGURE=1  \
-./configure --prefix=/usr
-
-

- Значение параметра configure: -

-
-
- FORCE_UNSAFE_CONFIGURE=1 -
-
-

- Этот параметр принудительно запускает тест для mknod от имени пользователя root. Обычно считается опасным запускать - этот тест от имени пользователя root, но, поскольку он выполняется в - системе, которая была собрана лишь частично, его - переопределение допустимо. -

-
-
-
-

- Скомпилируйте пакет: -

-
make
-

- Чтобы протестировать пакет, выполните: -

-
make check
-
- [Примечание] -

- Примечание -

-

- Время тестирования Tar можно значительно сократить в системе с - несколькими ядрами. Для этого добавьте TESTSUITEFLAGS=-j<N> к - строке выше. Например, использование -j4 может сократить время - тестирования более чем на 70 процентов. -

-
-

- Известно, что один тест, capabilities: binary store/restore, - завершается ошибкой при запуске, потому что в LFS отсутствует - selinux, он будет пропущен, если ядро хоста не поддерживает - расширенные атрибуты или метки безопасности файловой системы, - используемой для сборки LFS. -

-

- Установите пакет: -

-
make install
-make -C doc install-html docdir=/usr/share/doc/tar-1.35
-
-
-

- 8.69.2. Содержимое - пакета Tar -

-
-
-
- Установленные программы: - tar -
-
- Созданные каталоги: - /usr/share/doc/tar-1.35 -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - -
-

- tar -

-
-

- Создает архивы, извлекает файлы и отображает содержимое - архивов, также известных как Тарболл. -

-
-
-
-
- - - diff --git a/lfs-12.0-sysv/chapter08/tcl.html b/lfs-12.0-sysv/chapter08/tcl.html deleted file mode 100644 index 7c0e0fb..0000000 --- a/lfs-12.0-sysv/chapter08/tcl.html +++ /dev/null @@ -1,271 +0,0 @@ - - - - - - 8.15. Tcl-8.6.13 - - - - - - - - -
-

- 8.15. Tcl-8.6.13 -

-
-

- Пакет Tcl содержит Tool Command - Language, надежный скриптовый язык общего назначения. Пакет - Expect написан на языке - Tcl (произносится как "тикл"). -

-
-
-
- Приблизительное время сборки: - 2.7 SBU -
-
- Требуемое дисковое - пространство: 89 MB -
-
-
-
-
-

- 8.15.1. Установка пакета Tcl -

-

- Этот пакет и следующие два (Expect и DejaGNU) устанавливаются для - поддержки возможности тестирования Binutils, GCC и других пакетов. - Установка трех пакетов для целей тестирования может показаться - избыточной, но вы будете чувствовать себя увереннее, когда знаете, - что наиболее важные инструменты работают правильно. -

-

- Подготовьте Tcl к компиляции: -

-
SRCDIR=$(pwd)
-cd unix
-./configure --prefix=/usr           \
-            --mandir=/usr/share/man
-

- Соберите пакет: -

-
make
-
-sed -e "s|$SRCDIR/unix|/usr/lib|" \
-    -e "s|$SRCDIR|/usr/include|"  \
-    -i tclConfig.sh
-
-sed -e "s|$SRCDIR/unix/pkgs/tdbc1.1.5|/usr/lib/tdbc1.1.5|" \
-    -e "s|$SRCDIR/pkgs/tdbc1.1.5/generic|/usr/include|"    \
-    -e "s|$SRCDIR/pkgs/tdbc1.1.5/library|/usr/lib/tcl8.6|" \
-    -e "s|$SRCDIR/pkgs/tdbc1.1.5|/usr/include|"            \
-    -i pkgs/tdbc1.1.5/tdbcConfig.sh
-
-sed -e "s|$SRCDIR/unix/pkgs/itcl4.2.3|/usr/lib/itcl4.2.3|" \
-    -e "s|$SRCDIR/pkgs/itcl4.2.3/generic|/usr/include|"    \
-    -e "s|$SRCDIR/pkgs/itcl4.2.3|/usr/include|"            \
-    -i pkgs/itcl4.2.3/itclConfig.sh
-
-unset SRCDIR
-

- Различные инструкции «sed» после команды «make» удаляют ссылки на - каталог сборки из файлов конфигурации и заменяют их на созданные - каталоги. Это необязательно для остальной части LFS, но может - понадобиться в случае, когда пакет, собранный позже, использует - Tcl. -

-

- Чтобы протестировать пакет, выполните: -

-
make test
-

- Установите пакет: -

-
make install
-

- Сделайте установленную библиотеку доступной для записи, чтобы позже - можно было удалить отладочные символы: -

-
chmod -v u+w /usr/lib/libtcl8.6.so
-

- >Установите заголовочные файлы Tcl. Они потребуются для - следующего пакета - Expect. -

-
make install-private-headers
-

- Теперь создайте необходимую символическую ссылку: -

-
ln -sfv tclsh8.6 /usr/bin/tclsh
-

- Переименуйте справочную страницу, которая конфликтует со справочной - страницей Perl: -

-
mv /usr/share/man/man3/{Thread,Tcl_Thread}.3
-

- При необходимости установите документацию, выполнив следующие - команды: -

-
cd ..
-tar -xf ../tcl8.6.13-html.tar.gz --strip-components=1
-mkdir -v -p /usr/share/doc/tcl-8.6.13
-cp -v -r  ./html/* /usr/share/doc/tcl-8.6.13
-
-
-

- 8.15.2. Содержимое - пакета Tcl -

-
-
-
- Установленные программы: - tclsh (ссылка на tclsh8.6) и - tclsh8.6 -
-
- Установленные библиотеки: - libtcl8.6.so и libtclstub8.6.a -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - - - - - - - - - - - - - -
-

- tclsh8.6 -

-
-

- Командная оболочка Tcl -

-
-

- tclsh -

-
-

- Ссылка на tclsh8.6 -

-
-

- libtcl8.6.so -

-
-

- Библиотека Tcl -

-
-

- libtclstub8.6.a -

-
-

- Библиотека-заглушка Tcl -

-
-
-
-
- - - diff --git a/lfs-12.0-sysv/chapter08/texinfo.html b/lfs-12.0-sysv/chapter08/texinfo.html deleted file mode 100644 index ced0b27..0000000 --- a/lfs-12.0-sysv/chapter08/texinfo.html +++ /dev/null @@ -1,334 +0,0 @@ - - - - - - 8.70. Texinfo-7.0.3 - - - - - - - - -
-

- 8.70. - Texinfo-7.0.3 -

-
-

- Пакет Texinfo содержит программы для чтения, записи и - преобразования информационных страниц. -

-
-
-
- Приблизительное время сборки: - 0.3 SBU -
-
- Требуемое дисковое - пространство: 128 MB -
-
-
-
-
-

- 8.70.1. Установка пакета Texinfo -

-

- Подготовьте Texinfo к компиляции: -

-
./configure --prefix=/usr
-

- Скомпилируйте пакет: -

-
make
-

- Чтобы протестировать пакет, выполните: -

-
make check
-

- Установите пакет: -

-
make install
-

- По желанию установите компоненты, входящие в пакет TeX:: -

-
make TEXMF=/usr/share/texmf install-tex
-
-

- Значение параметра make: -

-
-
- TEXMF=/usr/share/texmf -
-
-

- Переменная makefile TEXMF содержит - расположение корня дерева TeX, это понадобится, если, - например, пакет TeX планируется установить позже. -

-
-
-
-

- Система документации использует простой текстовый файл для хранения - списка пунктов меню. Файл находится в /usr/share/info/dir. К сожалению, из-за случайных - проблем в Makefile различных пакетов он иногда может не - синхронизироваться с информационными страницами, установленными в - системе. Если когда-либо потребуется пересоздать файл /usr/share/info/dir, следующие необязательные - команды решают эту задачу: -

-
pushd /usr/share/info
-  rm -v dir
-  for f in *
-    do install-info $f dir 2>/dev/null
-  done
-popd
-
-
-

- 8.70.2. - Содержимое пакета Texinfo -

-
-
-
- Установленные программы: - info, install-info, makeinfo (ссылка на - texi2any), pdftexi2dvi, pod2texi, texi2any, texi2dvi, texi2pdf, - и texindex -
-
- Установленные библиотеки: - MiscXS.so, Parsetexi.so и XSParagraph.so - (все в /usr/lib/texinfo) -
-
- Созданные каталоги: - /usr/share/texinfo и - /usr/lib/texinfo -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

- info -

-
-

- Используется для чтения информационных страниц, которые - похожи на справочные страницы, но гораздо подробнее - описывают применение всех доступных параметров командной - строки [Например, сравните man bison и - info - bison.] -

-
-

- install-info -

-
-

- Используется для установки информационных страниц; он - обновляет записи в индексном файле команды info -

-
-

- makeinfo -

-
-

- Переводит исходные документы Texinfo в информационные - страницы, обычный текст или HTML. -

-
-

- pdftexi2dvi -

-
-

- Используется для форматирования документа Texinfo в файл - Portable Document Format (PDF). -

-
-

- pod2texi -

-
-

- Преобразует Pod в формат Texinfo -

-
-

- texi2any -

-
-

- Переводит исходную документацию Texinfo в различные - другие форматы. -

-
-

- texi2dvi -

-
-

- Используется для форматирования документа Texinfo в - независимый от устройства файл, который можно распечатать -

-
-

- texi2pdf -

-
-

- Используется для форматирования данного документа Texinfo - в файл Portable Document Format (PDF). -

-
-

- texindex -

-
-

- Используется для сортировки индексных файлов Texinfo. -

-
-
-
-
- - - diff --git a/lfs-12.0-sysv/chapter08/udev.html b/lfs-12.0-sysv/chapter08/udev.html deleted file mode 100644 index a55d603..0000000 --- a/lfs-12.0-sysv/chapter08/udev.html +++ /dev/null @@ -1,366 +0,0 @@ - - - - - - 8.74. Udev из Systemd-254 - - - - - - - - -
-

- 8.74. Udev из - Systemd-254 -

-
-

- Пакет Udev содержит программы для динамического создания узлов - устройств. -

-
-
-
- Приблизительное время сборки: - 0.2 SBU -
-
- Требуемое дисковое - пространство: 138 MB -
-
-
-
-
-

- 8.74.1. Установка пакета Udev -

-

- Udev является частью пакета systemd-254. Используйте файл - systemd-254.tar.xz в качестве исходного архива. -

-

- Удалите две ненужные группы render - и sgx, из правил udev по умолчанию: -

-
sed -i -e 's/GROUP="render"/GROUP="video"/' \
-       -e 's/GROUP="sgx", //' rules.d/50-udev-default.rules.in
-

- Удалите одно правило udev, требующее полной установки Systemd: -

-
sed '/systemd-sysctl/s/^/#/' -i rules.d/99-systemd.rules.in
-

- Подготовьте Udev к компиляции: -

-
mkdir -p build
-cd       build
-
-meson setup \
-      --prefix=/usr                 \
-      --buildtype=release           \
-      -Dmode=release                \
-      -Ddev-kvm-mode=0660           \
-      -Dlink-udev-shared=false      \
-      ..
-
-

- Значение параметров meson: -

-
-
- --buildtype=release -
-
-

- Этот параметр переопределяет тип сборки по умолчанию - («debug»), который создает - неоптимизированные двоичные файлы. -

-
-
- -Dmode=release -
-
-

- Отключает некоторые функции, которые разработчики считают - экспериментальными. -

-
-
- -Ddev-kvm-mode=0660 -
-
-

- По умолчанию правило udev разрешает всем пользователям доступ - к /dev/kvm. Редакторы LFS - считают это опасным. Данная опция переопределяет разрешение - по умолчанию. -

-
-
- -Dlink-udev-shared=false -
-
-

- Эта опция запрещает udev связываться с внутренней общей - библиотекой systemd libsystemd-shared. Эта библиотека - предназначена для совместного использования многими - компонентами Systemd, и ее использование избыточно, когда - установлен только udev -

-
-
-
-

- Соберите только компоненты, необходимые для udev: -

-
ninja udevadm systemd-hwdb \
-      $(grep -o -E "^build (src/libudev|src/udev|rules.d|hwdb.d)[^:]*" \
-        build.ninja | awk '{ print $2 }')                              \
-      $(realpath libudev.so --relative-to .)
-

- Удалите один файл правил udev, требующий полной установки Systemd: -

-
rm rules.d/90-vconsole.rules
-

- Установите пакет: -

-
install -vm755 -d {/usr/lib,/etc}/udev/{hwdb,rules}.d
-install -vm755 -d /usr/{lib,share}/pkgconfig
-install -vm755 udevadm                     /usr/bin/
-install -vm755 systemd-hwdb                /usr/bin/udev-hwdb
-ln      -svfn  ../bin/udevadm              /usr/sbin/udevd
-cp      -av    libudev.so{,*[0-9]}         /usr/lib/
-install -vm644 ../src/libudev/libudev.h    /usr/include/
-install -vm644 src/libudev/*.pc            /usr/lib/pkgconfig/
-install -vm644 src/udev/*.pc               /usr/share/pkgconfig/
-install -vm644 ../src/udev/udev.conf       /etc/udev/
-install -vm644 rules.d/* ../rules.d/{*.rules,README} /usr/lib/udev/rules.d/
-install -vm644 hwdb.d/*  ../hwdb.d/{*.hwdb,README}   /usr/lib/udev/hwdb.d/
-install -vm755 $(find src/udev -type f | grep -F -v ".") /usr/lib/udev
-

- Установите некоторые пользовательские правила и файлы поддержки, - полезные в среде LFS: -

-
tar -xvf ../../udev-lfs-20230818.tar.xz
-make -f udev-lfs-20230818/Makefile.lfs install
-

- Установите справочные страницы: -

-
tar -xf ../../systemd-man-pages-254.tar.xz                            \
-    --no-same-owner --strip-components=1                              \
-    -C /usr/share/man --wildcards '*/udev*' '*/libudev*'              \
-                                  '*/systemd-'{hwdb,udevd.service}.8
-sed 's/systemd\(\\\?-\)/udev\1/' /usr/share/man/man8/systemd-hwdb.8   \
-                               > /usr/share/man/man8/udev-hwdb.8
-sed 's|lib.*udevd|sbin/udevd|'                                        \
-    /usr/share/man/man8/systemd-udevd.service.8                       \
-  > /usr/share/man/man8/udevd.8
-rm  /usr/share/man/man8/systemd-*.8
-
-
-

- 8.74.2. Настройка Udev -

-

- Информация об аппаратных устройствах хранится в каталогах - /etc/udev/hwdb.d и /usr/lib/udev/hwdb.d. Udev необходимо, чтобы эта информация была - скомпилирована в двоичную базу данных /etc/udev/hwdb.bin. Создайте исходную базу - данных: -

-
udev-hwdb update
-

- Эту команду необходимо запускать каждый раз при обновлении - информации об оборудовании. -

-
-
-

- 8.74.3. Содержимое - пакета Udev -

-
-
-
- Установленные программы: - udevadm, udevd (символическая ссылка на - udevadm) и udev-hwdb -
-
- Установленные библиотеки: - libudev.so -
-
- Созданные каталоги: - /etc/udev и /usr/lib/udev -
-
-
-
-

- Short Descriptions -

- - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

- udevadm -

-
-

- Универсальный инструмент администрирования udev: - управляет демоном udevd, предоставляет информацию из базы - данных Udev, отслеживает uevents, ожидает завершения - uevents, проверяет конфигурацию Udev и запускает uevents - для данного устройства -

-
-

- udevd -

-
-

- Демон, который прослушивает uevents в сокете netlink, - создает устройства и запускает настроенные внешние - программы в ответ на эти uevents -

-
-

- udev-hwdb -

-
-

- Обновляет или запрашивает базу данных оборудования -

-
-

- libudev -

-
-

- Библиотека для получения информации об устройствах udev -

-
-

- /etc/udev -

-
-

- Содержит файлы конфигурации Udev, разрешения для - устройств и правила именования устройств -

-
-
-
-
- - - diff --git a/lfs-12.0-sysv/chapter08/util-linux.html b/lfs-12.0-sysv/chapter08/util-linux.html deleted file mode 100644 index 7a5228f..0000000 --- a/lfs-12.0-sysv/chapter08/util-linux.html +++ /dev/null @@ -1,1928 +0,0 @@ - - - - - - 8.77. Util-linux-2.39.1 - - - - - - - - -
-

- 8.77. - Util-linux-2.39.1 -

-
-

- Пакет Util-linux содержит различные служебные программы. Среди них - утилиты для работы с файловыми системами, консолями, разделами и - сообщениями. -

-
-
-
- Приблизительное время сборки: - 0.5 SBU -
-
- Требуемое дисковое - пространство: 310 MB -
-
-
-
-
-

- 8.77.1. Установка пакета Util-linux -

-

- Сначала отключите проблемные тесты: -

-
sed -i '/test_mkfds/s/^/#/' tests/helpers/Makemodule.am
-

- Подготовьте Util-linux к компиляции: -

-
./configure ADJTIME_PATH=/var/lib/hwclock/adjtime   \
-            --bindir=/usr/bin    \
-            --libdir=/usr/lib    \
-            --runstatedir=/run   \
-            --sbindir=/usr/sbin  \
-            --disable-chfn-chsh  \
-            --disable-login      \
-            --disable-nologin    \
-            --disable-su         \
-            --disable-setpriv    \
-            --disable-runuser    \
-            --disable-pylibmount \
-            --disable-static     \
-            --without-python     \
-            --without-systemd    \
-            --without-systemdsystemunitdir \
-            --docdir=/usr/share/doc/util-linux-2.39.1
-

- Параметры --disable и --without предотвращают появление - предупреждений о сборке компонентов, для которых требуются пакеты, - отсутствующие в LFS, или которые несовместимы с программами, - установленными другими пакетами. -

-

- Скомпилируйте пакет: -

-
make
-

- По желанию запустите набор тестов от имени пользователя без - полномочий root: -

-
- [Предупреждение] -

- Предупреждение -

-

- Запуск набора тестов от имени пользователя root может повредить вашу систему. Чтобы - запустить тесты, опция CONFIG_SCSI_DEBUG для ядра должна быть - доступна в текущей работающей системе и должна быть собрана как - модуль. Включение её в ядро будет прерывать загрузку. Для полного - охвата тестами в систему необходимо установить другие пакеты из - BLFS. По желанию, этот тест можно запустить после загрузки в - готовую систему LFS: -

-
bash tests/run.sh --srcdir=$PWD --builddir=$PWD
-
-
chown -Rv tester .
-su tester -c "make -k check"
-

- Тесты с жесткими ссылками - завершатся неудачей, если в ядре хоста не включена опция - CONFIG_CRYPTO_USER_API_HASH или не - включено никаких опций, обеспечивающих реализацию SHA256 (например, - CONFIG_CRYPTO_SHA256 или CONFIG_CRYPTO_SHA256_SSSE3, если процессор - поддерживает инструкции SSE3). Кроме того, известно, что два - подтеста из misc: mbsencode и один подтест из script: replay не - проходят. -

-

- Установите пакет: -

-
make install
-
-
-

- 8.77.2. - Содержимое пакета Util-linux -

-
-
-
- Установленные программы: - addpart, agetty, blkdiscard, blkid, - blkzone, blockdev, cal, cfdisk, chcpu, chmem, choom, chrt, col, - colcrt, colrm, column, ctrlaltdel, delpart, dmesg, eject, - fallocate, fdisk, fincore, findfs, findmnt, flock, fsck, - fsck.cramfs, fsck.minix, fsfreeze, fstrim, getopt, hardlink, - hexdump, hwclock, i386 (ссылка на setarch), ionice, ipcmk, - ipcrm, ipcs, irqtop, isosize, kill, last, lastb (ссылка на - last), ldattach, linux32 (link to setarch), linux64 (ссылка на - setarch), logger, look, losetup, lsblk, lscpu, lsipc, lsirq, - lsfd, lslocks, lslogins, lsmem, lsns, mcookie, mesg, mkfs, - mkfs.bfs, mkfs.cramfs, mkfs.minix, mkswap, more, mount, - mountpoint, namei, nsenter, partx, pivot_root, prlimit, - readprofile, rename, renice, resizepart, rev, rfkill, rtcwake, - script, scriptlive, scriptreplay, setarch, setsid, setterm, - sfdisk, sulogin, swaplabel, swapoff, swapon, switch_root, - taskset, uclampset, ul, umount, uname26 (ссылка на setarch), - unshare, utmpdump, uuidd, uuidgen, uuidparse, wall, wdctl, - whereis, wipefs, x86_64 (ссылка на setarch) и zramctl -
-
- Установленные библиотеки: - libblkid.so, libfdisk.so, libmount.so, - libsmartcols.so и libuuid.so -
-
- Созданные каталоги: - /usr/include/blkid, - /usr/include/libfdisk, /usr/include/libmount, - /usr/include/libsmartcols, /usr/include/uuid, - /usr/share/doc/util-linux-2.39.1 и /var/lib/hwclock -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

- addpart -

-
-

- Сообщает ядру Linux о новых разделах -

-
-

- agetty -

-
-

- Открывает порт tty, запрашивает имя для входа, а затем - вызывает программу login -

-
-

- blkdiscard -

-
-

- Очищает сектора на устройстве -

-
-

- blkid -

-
-

- Утилита командной строки для вывода атрибутов блочного - устройства -

-
-

- blkzone -

-
-

- Используется для управления зонированными блочными - системами хранения -

-
-

- blockdev -

-
-

- Позволяет пользователям вызывать ioctl блочного - устройства из командной строки -

-
-

- cal -

-
-

- Отображает простой календарь -

-
-

- cfdisk -

-
-

- Управляет таблицей разделов данного устройства -

-
-

- chcpu -

-
-

- Изменяет состояние процессоров -

-
-

- chmem -

-
-

- Настраивает память -

-
-

- choom -

-
-

- Отображает и регулирует оценки OOM-killer, используемые - для определения того, какой процесс следует завершить - первым, когда в Linux заканчивается память -

-
-

- chrt -

-
-

- Манипулирует атрибутами процесса в режиме реального - времени -

-
-

- col -

-
-

- Фильтрует обратные переносы строк из входного потока -

-
-

- colcrt -

-
-

- Фильтрует данные, выдаваемые командой nroff на терминалы, у - которых отсутствует ряд возможностей, например, - отображение перечеркнутых символов или верхних и нижних - индексов -

-
-

- colrm -

-
-

- Фильтрует вывод указанных столбцов -

-
-

- column -

-
-

- Форматирует заданный файл в несколько столбцов -

-
-

- ctrlaltdel -

-
-

- Устанавливает для комбинации символов Ctrl+Alt+Del - жесткую или мягкую перезагрузку -

-
-

- delpart -

-
-

- Запрашивает у ядра Linux удаление раздела -

-
-

- dmesg -

-
-

- Выводит загрузочные сообщения ядра -

-
-

- eject -

-
-

- Извлекает съемный носитель -

-
-

- fallocate -

-
-

- Предварительное выделение места под файл -

-
-

- fdisk -

-
-

- Манипулирует таблицей разделов указанного устройства -

-
-

- fincore -

-
-

- Подчитывает сколько страниц приложение хранит в памяти - ядра -

-
-

- findfs -

-
-

- Находит файловую систему по метке или универсальному - уникальному идентификатору (UUID) -

-
-

- findmnt -

-
-

- Представляет собой интерфейс командной строки к - библиотеке libmount для работы с файлами mountinfo, fstab - и mtab -

-
-

- flock -

-
-

- Осуществляет блокировку файла, а затем выполняет команду, - не снимая блокировку -

-
-

- fsck -

-
-

- Используется для проверки и, при необходимости, - восстановления файловых систем -

-
-

- fsck.cramfs -

-
-

- Выполняет проверку целостности файловой системы Cramfs на - данном устройстве -

-
-

- fsck.minix -

-
-

- Выполняет проверку целостности файловой системы Minix на - данном устройстве -

-
-

- fsfreeze -

-
-

- Очень простая программа-обертка для выполнение операций с - драйвером ядра FIFREEZE/FITHAW ioctl -

-
-

- fstrim -

-
-

- Освобождает неиспользованные блоки смонтированной - файловой системы -

-
-

- getopt -

-
-

- Разбирает параметры указанной командной строки -

-
-

- hardlink -

-
-

- Объединяет дубликаты файлов путем создания жестких ссылок -

-
-

- hexdump -

-
-

- Создает дамп указанного файла в шестнадцатеричном, - десятичном, восьмеричном или ascii-формате -

-
-

- hwclock -

-
-

- Читает или устанавливает значение аппаратных часов - системы, называемых также часами реального времени (RTC- - Real-Time Clock) или часами БИОС (BIOS - Basic - Input-Output System) -

-
-

- i386 -

-
-

- Символьная ссылка на setarch -

-
-

- ionice -

-
-

- Читает или устанавливает класс и приоритет обработки - ввода/вывода для программ -

-
-

- ipcmk -

-
-

- Создает различные ресурсы межпроцессного взаимодействия - (IPC) -

-
-

- ipcrm -

-
-

- Удаляет указанный ресурс межпроцессного взаимодействия - (IPC) -

-
-

- ipcs -

-
-

- Предоставляет информацию о состоянии IPC -

-
-

- irqtop -

-
-

- Отображает информацию о счетчике прерываний ядра в стиле - top(1) -

-
-

- isosize -

-
-

- Сообщает о размере файловой системы iso9660 -

-
-

- kill -

-
-

- Посылает сигналы процессам -

-
-

- last -

-
-

- Показывает, какие пользователи в последний раз входили (и - выходили), выполняя поиск в файле /var/log/wtmp; кроме этого показывает - информацию о загрузке системы, завершение работы и - изменениях уровня выполнения -

-
-

- lastb -

-
-

- Показывает неудачные попытки входа в систему, - зарегистрированные в /var/log/btmp -

-
-

- ldattach -

-
-

- Назначает устройству последовательного доступа алгоритм, - определяющий дисциплину обслуживания этого устройства -

-
-

- linux32 -

-
-

- Символическая ссылка на setarch -

-
-

- linux64 -

-
-

- Символическая ссылка на setarch -

-
-

- logger -

-
-

- Добавляет указанное сообщение в системный журнал -

-
-

- look -

-
-

- Отображает строки, начинающиеся с указанной - последовательности символов -

-
-

- losetup -

-
-

- Настраивает и управляет устройствами типа loop -

-
-

- lsblk -

-
-

- Выводит информацию обо всех или выбранных блочных - устройствах в древовидном формате -

-
-

- lscpu -

-
-

- Выводит информацию об архитектуре процессора -

-
-

- lsfd -

-
-

- Отображает информацию об открытых файлах; заменяет - lsof -

-
-

- lsipc -

-
-

- Выводит информацию об объектах IPC, которые в настоящее - время используются в системе -

-
-

- lsirq -

-
-

- Отображает информацию о счетчике прерываний ядра -

-
-

- lslocks -

-
-

- Отображает список всех заблокированных в настоящее время - файлов в системе -

-
-

- lslogins -

-
-

- Выводит информацию о пользователях, группах и системных - учетных записях -

-
-

- lsmem -

-
-

- Отображает диапазоны доступной памяти с указанием их - оперативного статуса -

-
-

- lsns -

-
-

- Отображает список пространств имен -

-
-

- mcookie -

-
-

- Генерирует для xauth магические куки - (128-битные случайные числа в шестнадцатеричном формате) -

-
-

- mesg -

-
-

- Определяет, могут ли другие пользователи отправлять - сообщения на терминал текущего пользователя -

-
-

- mkfs -

-
-

- Создает файловую систему на устройстве (обычно это раздел - жесткого диска) -

-
-

- mkfs.bfs -

-
-

- Создает файловую систему Santa Cruz Operations (SCO) bfs -

-
-

- mkfs.cramfs -

-
-

- Создает файловую систему cramfs -

-
-

- mkfs.minix -

-
-

- Создает файловую систему Minix -

-
-

- mkswap -

-
-

- Инициализирует данное устройство или файл для - использования в качестве области подкачки -

-
-

- more -

-
-

- Фильтр постраничного вывода текста -

-
-

- mount -

-
-

- Подключение файловой системы, находящейся на заданном - устройстве, к указанному каталогу в дереве файловой - системы -

-
-

- mountpoint -

-
-

- Проверяет, является ли каталог точкой монтирования -

-
-

- namei -

-
-

- Разделяет на составляющие путь к файлу или каталогу, - показывая информацию о типе каждого элемента -

-
-

- nsenter -

-
-

- Запускает программу в пространстве имен других процессов -

-
-

- partx -

-
-

- Сообщает ядру информацию о наличии и количестве разделов, - находящихся на диске -

-
-

- pivot_root -

-
-

- Делает данную файловую систему новой корневой файловой - системой текущего процесса -

-
-

- prlimit -

-
-

- Получает и устанавливает ограничения использования - ресурсов процесса -

-
-

- readprofile -

-
-

- Читает информацию о профилировании ядра -

-
-

- rename -

-
-

- Переименовывает заданные файлы, заменяя одну строку - другой -

-
-

- renice -

-
-

- Изменяет приоритет запущенных процессов -

-
-

- resizepart -

-
-

- Запрашивает у ядра Linux изменение размера раздела -

-
-

- rev -

-
-

- Меняет в указанном файле порядок строк на обратный -

-
-

- rfkill -

-
-

- Bнструмент командной строки для управления беспроводными - устройствами -

-
-

- rtcwake -

-
-

- Используется для перехода системы в спящий режим до - указанного времени пробуждения -

-
-

- script -

-
-

- Создает скрипт терминальной сессии -

-
-

- scriptlive -

-
-

- Перезапускает скрипт терминальной сессии, используя - информацию о времени -

-
-

- scriptreplay -

-
-

- Воспроизводит скрипт в соответствие с указанным временем - запуска -

-
-

- setarch -

-
-

- В окружении, используемом новой программой, изменяет - информацию об архитектуре и устанавливает флаги - персонализации -

-
-

- setsid -

-
-

- Запускает указанную программу в новом сеансе -

-
-

- setterm -

-
-

- Устанавливает атрибуты терминала -

-
-

- sfdisk -

-
-

- Управляет таблицей разделов диска -

-
-

- sulogin -

-
-

- Позволяет пользователю root входить в систему; обычно он - вызывается init, когда система - переходит в однопользовательский режим -

-
-

- swaplabel -

-
-

- Изменяет UUID и метку раздела подкачки -

-
-

- swapoff -

-
-

- Отключает устройства и файлы подкачки -

-
-

- swapon -

-
-

- Включает устройства и файлы, применяемые для раздела - подкачки, а также выводит список устройств и файлов, - используемых в данный момент -

-
-

- switch_root -

-
-

- Переключается на другую файловую систему и устанавливает - её в качестве корневой -

-
-

- taskset -

-
-

- Устанавливает привязку процессора к процессу -

-
-

- uclampset -

-
-

- Управляет атрибутами ограничения использования системы - или процесса -

-
-

- ul -

-
-

- Фильтр для преобразования символов подчеркивания в - escape-последовательности -

-
-

- umount -

-
-

- Размонтирует файловую систему из дерева ФС -

-
-

- uname26 -

-
-

- Символическая ссылка на setarch -

-
-

- unshare -

-
-

- Позволяет процессу (или потоку) отделить части своего - контекста выполнения, которые используются совместно с - другими процессами (или потоками) -

-
-

- utmpdump -

-
-

- Отображает содержимое указанного файла входа в систему в - удобном для пользователя формате -

-
-

- uuidd -

-
-

- Демон, используемый библиотекой UUID для создания - безопасных и гарантированно уникальных идентификаторов - UUID -

-
-

- uuidgen -

-
-

- Создает новые идентификаторы (UUID). Каждый новый UUID - - это случайная последовательность, которая, будет с очень - высокой вероятностью (примерно 3,4 х 10 в 38 степени - вариантов) уникальной среди всех идентификаторов, - созданных как на локальной машине, так и на любых других - системах, в прошлом и будущем -

-
-

- uuidparse -

-
-

- Утилита для анализа уникальных идентификаторов -

-
-

- wall -

-
-

- Отображает содержимое файла или, по умолчанию, его вывод - на терминалах всех пользователей, вошедших в систему в - данный момент -

-
-

- wdctl -

-
-

- Показывает статус аппаратного сторожевого таймера -

-
-

- whereis -

-
-

- Сообщает местоположение двоичного файла, исходного кода и - справочной страницы для указанной команды -

-
-

- wipefs -

-
-

- Стирает с устройства сигнатуру файловой системы -

-
-

- x86_64 -

-
-

- Символическая ссылка на setarch -

-
-

- zramctl -

-
-

- Программа для настройки и управления устройствами zram - (сжатый RAM-диск) -

-
-

- libblkid -

-
-

- Содержит подпрограммы для идентификации устройства и - извлечения токена -

-
-

- libfdisk -

-
-

- Содержит подпрограммы для управления таблицами разделов -

-
-

- libmount -

-
-

- Содержит подпрограммы для монтирования и размонтирования - блочных устройств -

-
-

- libsmartcols -

-
-

- Содержит подпрограммы для более удобного вывода на экран - информации в табличном виде -

-
-

- libuuid -

-
-

- Содержит подпрограммы для генерации уникальных - идентификаторов для объектов, которые могут быть доступны - за пределами локальной системы -

-
-
-
-
- - - diff --git a/lfs-12.0-sysv/chapter08/vim.html b/lfs-12.0-sysv/chapter08/vim.html deleted file mode 100644 index 7ebd94f..0000000 --- a/lfs-12.0-sysv/chapter08/vim.html +++ /dev/null @@ -1,448 +0,0 @@ - - - - - - 8.71. Vim-9.0.1677 - - - - - - - - -
-

- 8.71. Vim-9.0.1677 -

-
-

- Пакет Vim содержит мощный текстовый редактор. -

-
-
-
- Приблизительное время сборки: - 2.3 SBU -
-
- Требуемое дисковое - пространство: 229 MB -
-
-
-
- [Подсказка] -

- Альтернативы Vim -

-

- .Если вы предпочитаете другой текстовый редактор, например, - Emacs, Joe или Nano, обратитесь к - https://mirror.linuxfromscratch.ru/blfs/view/12.0/postlfs/editors.html - за рекомендациями по установке. -

-
-
-
-

- 8.71.1. Установка пакета Vim -

-

- Во-первых, измените расположение файла конфигурации vimrc на /etc: -

-
echo '#define SYS_VIMRC_FILE "/etc/vimrc"' >> src/feature.h
-

- Подготовьте Vim к компиляции: -

-
./configure --prefix=/usr
-

- Скомпилируйте пакет: -

-
make
-

- Чтобы подготовить тесты, убедитесь, что пользователь tester может писать в исходное дерево: -

-
chown -Rv tester .
-

- Теперь запустите тесты от имени пользователя tester: -

-
su tester -c "LANG=en_US.UTF-8 make -j1 test" &> vim-test.log
-

- Набор тестов выводит на экран много двоичных данных. Это может - вызвать проблемы с настройками текущего терминала. Чтобы этого - избежать, перенаправьте вывод в файл журнала, как показано выше. - Тест пройден успешно, если в файле журнала по завершении есть - надпись "ALL DONE". -

-

- Установите пакет: -

-
make install
-

- Многие пользователи рефлекторно набирают vi вместо vim. Чтобы разрешить выполнение - vim, когда - пользователи вводят vi, создайте символическую ссылку - как для двоичного файла, так и для справочной страницы: -

-
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
-

- По умолчанию документация Vim установливается в каталог - /usr/share/vim. Следующая - символическая ссылка позволяет получить доступ к документации через - каталог /usr/share/doc/vim-9.0.1677, - что согласуется с расположением документации остальных пакетов: -

-
ln -sv ../vim/vim90/doc /usr/share/doc/vim-9.0.1677
-

- Если в LFS будет установлена система X Window, может потребоваться - перекомпилировать Vim после установки X. Vim поставляется с - графической версией редактора, для которой требуется установка X и - некоторых дополнительных библиотек. Для получения дополнительной - информации об этом процессе обратитесь к документации по Vim и - странице установки Vim в книге BLFS по адресу - https://mirror.linuxfromscratch.ru/blfs/view/12.0/postlfs/vim.html. -

-
-
-

- 8.71.2. Настройка Vim -

-

- По умолчанию vim - работает в режиме, несовместимом с vi. Это может показаться - необычным для пользователей, которые в прошлом использовали другие - редакторы. Параметр «nocompatible» включен ниже, чтобы подчеркнуть - тот факт, что используется новое поведение. Настройка также - напоминает тем, кто хотел бы перейти в режим «compatible», что - параметр должен быть первым в файле конфигурации. Это необходимо, - потому что изменяются другие параметры, и переопределения - происходят после этой настройки. Создайте файл конфигурации - vim по умолчанию, - выполнив следующие действия: -

-
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
-

- Параметр set nocompatible - заставляет vim вести - себя более правильно (по умолчанию), чем vi-совместимый способ. - Удалите «no», - чтобы сохранить старое поведение vi. Параметр set backspace=2 позволяет удалять - символы через перенос строки, автоматические отступы и начало - вставки. Параметр syntax on - включает подсветку синтаксиса vim. Параметр set mouse= позволяет правильно - вставлять текст с помощью мыши при работе в chroot или через - удаленное соединение. Наконец, оператор if с параметром set background=dark корректирует - предположение vim о - цвете фона некоторых эмуляторов терминала. Это придает подсветке - лучшую цветовую схему для использования на черном фоне этих - программ. -

-

- Документацию по другим доступным параметрам можно получить, - выполнив следующую команду: -

-
vim -c ':options'
-
- [Примечание] -

- Примечание -

-

- По умолчанию vim устанавливает файлы проверки орфографии только - для английского языка. Для установки файлов проверки орфографии - других языков, скопируйте файлы .spl и, при необходимости, .sug для вашего языка и кодировки символов из - runtime/spell, сохраните их в - /usr/share/vim/vim90/spell/. -

-

- Чтобы использовать эти файлы проверки орфографии, необходимо - указать параметры для vim в файле /etc/vimrc, пример: -

-
set spelllang=en,ru
-set spell
-

- Дополнительные сведения смотрите в файле runtime/spell/README.txt. -

-
-
-
-

- 8.71.3. Содержимое - пакета Vim -

-
-
-
- Установленные программы: - ex (ссылка на vim), rview (ссылка на - vim), rvim (ссылка на vim), vi (ссылка на vim), view (ссылка на - vim), vim, vimdiff (ссылка на vim), vimtutor и xxd -
-
- Созданные каталоги: - /usr/share/vim -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

- ex -

-
-

- Запускает vim в режиме ex -

-
-

- rview -

-
-

- Это ограниченная версия view; никакие команды - оболочки не могут быть запущены, и view не может быть - приостановлен -

-
-

- rvim -

-
-

- Это ограниченная версия vim; никакие команды - оболочки не могут быть запущены, и vim не может быть - приостановлен -

-
-

- vi -

-
-

- Ссылка на vim -

-
-

- view -

-
-

- Запускает vim в режиме только для - чтения -

-
-

- vim -

-
-

- Сам редактор -

-
-

- vimdiff -

-
-

- Редактирует две или три версии файла с помощью - vim и - показывает различия -

-
-

- vimtutor -

-
-

- Обучает основным горячим клавишам и командам vim -

-
-

- xxd -

-
-

- Создает шестнадцатеричный дамп данного файла; он также - может выполнять обратную операцию, поэтому его можно - использовать для бинарных патчей -

-
-
-
-
- - - diff --git a/lfs-12.0-sysv/chapter08/wheel.html b/lfs-12.0-sysv/chapter08/wheel.html deleted file mode 100644 index 1f34b14..0000000 --- a/lfs-12.0-sysv/chapter08/wheel.html +++ /dev/null @@ -1,158 +0,0 @@ - - - - - - 8.53. Wheel-0.41.1 - - - - - - - - -
-

- 8.53. Wheel-0.41.1 -

-
-

- Wheel — это библиотека Python, которая является эталонной - реализацией стандарта упаковки программ на языке Python. -

-
-
-
- Приблизительное время сборки: - менее 0.1 SBU -
-
- Требуемое дисковое - пространство: 1.5 MB -
-
-
-
-
-

- 8.53.1. Установка пакета Wheel -

-

- Скомпилируйте Wheel с помощью следующей команды: -

-
pip3 wheel -w dist --no-build-isolation --no-deps $PWD
-

- Установите Wheel: -

-
pip3 install --no-index --find-links=dist wheel
-
-
-

- 8.53.2. Содержимое - пакета Wheel -

-
-
-
- Установленные программы: - wheel -
-
- Созданные каталоги: - /usr/lib/python3.11/site-packages/wheel и - /usr/lib/python3.11/site-packages/wheel-0.41.1.dist-info -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - -
-

- wheel -

-
-

- это утилита для распаковки, упаковки или преобразования - wheel-архивов -

-
-
-
-
- - - diff --git a/lfs-12.0-sysv/chapter08/xml-parser.html b/lfs-12.0-sysv/chapter08/xml-parser.html deleted file mode 100644 index d1c341a..0000000 --- a/lfs-12.0-sysv/chapter08/xml-parser.html +++ /dev/null @@ -1,159 +0,0 @@ - - - - - - 8.43. XML::Parser-2.46 - - - - - - - - -
-

- 8.43. - XML::Parser-2.46 -

-
-

- Модуль XML::Parser представляет собой Perl-интерфейс к XML-парсеру - Джеймса Кларка Expat. -

-
-
-
- Приблизительное время сборки: - менее 0.1 SBU -
-
- Требуемое дисковое - пространство: 2.3 MB -
-
-
-
-
-

- 8.43.1. Установка пакета XML::Parser -

-

- Подготовьте XML::Parser к компиляции: -

-
perl Makefile.PL
-

- Скомпилируйте пакет: -

-
make
-

- Чтобы протестировать пакет, выполните: -

-
make test
-

- Установите пакет: -

-
make install
-
-
-

- 8.43.2. - Содержимое XML::Parser -

-
-
-
- Установленный модуль: - Expat.so -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - -
-

- Expat -

-
-

- предоставляет Perl интерфейс для Expat -

-
-
-
-
- - - diff --git a/lfs-12.0-sysv/chapter08/xz.html b/lfs-12.0-sysv/chapter08/xz.html deleted file mode 100644 index 67488fc..0000000 --- a/lfs-12.0-sysv/chapter08/xz.html +++ /dev/null @@ -1,531 +0,0 @@ - - - - - - 8.8. Xz-5.4.4 - - - - - - - - -
-

- 8.8. Xz-5.4.4 -

-
-

- Пакет Xz содержит программы для сжатия и распаковки файлов. Он - предоставляет возможности для lzma и более новых форматов сжатия - xz. Сжатие текстовых файлов с помощью xz дает лучший процент сжатия, - чем с традиционные gzip или bzip2. -

-
-
-
- Приблизительное время сборки: - 0.1 SBU -
-
- Требуемое дисковое - пространство: 24 MB -
-
-
-
-
-

- 8.8.1. Установка пакета Xz -

-

- Подготовьте Xz к компиляции: -

-
./configure --prefix=/usr    \
-            --disable-static \
-            --docdir=/usr/share/doc/xz-5.4.4
-

- Скомпилируйте пакет: -

-
make
-

- Чтобы протестировать пакет, выполните: -

-
make check
-

- Установите пакет: -

-
make install
-
-
-

- 8.8.2. Содержимое пакета - Xz -

-
-
-
- Установленные программы: - lzcat (ссылка на xz), lzcmp (ссылка на - xzdiff), lzdiff (ссылка на xzdiff), lzegrep (ссылка на xzgrep), - lzfgrep (ссылка на xzgrep), lzgrep (ссылка на xzgrep), lzless - (ссылка на xzless), lzma (ссылка на xz), lzmadec, lzmainfo, - lzmore (ссылка на xzmore), unlzma (ссылка на xz), unxz (ссылка - на xz), xz, xzcat (ссылка на xz), xzcmp (ссылка на xzdiff), - xzdec, xzdiff, xzegrep (ссылка на xzgrep), xzfgrep (ссылка на - xzgrep), xzgrep, xzless и xzmore -
-
- Установленные библиотеки: - liblzma.so -
-
- Созданные каталоги: - /usr/include/lzma и - /usr/share/doc/xz-5.4.4 -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

- lzcat -

-
-

- Распаковывает в стандартный поток вывода -

-
-

- lzcmp -

-
-

- Запускает cmp для файлов сжатых - LZMA -

-
-

- lzdiff -

-
-

- Запускает diff для файлов сжатых - LZMA -

-
-

- lzegrep -

-
-

- Запускает egrep для файлов сжатых - LZMA -

-
-

- lzfgrep -

-
-

- Запускает fgrep для файлов сжатых - LZMA -

-
-

- lzgrep -

-
-

- Запускает grep для файлов сжатых - LZMA -

-
-

- lzless -

-
-

- Запускает less для файлов сжатых - LZMA -

-
-

- lzma -

-
-

- Сжимает или распаковывает файлы в формате LZMA -

-
-

- lzmadec -

-
-

- Небольшой и быстрый декодер для файлов сжатых LZMA. -

-
-

- lzmainfo -

-
-

- Показывает информацию, хранящуюся в заголовке сжатого - файла LZMA -

-
-

- lzmore -

-
-

- Запускает more для файлов сжатых - LZMA -

-
-

- unlzma -

-
-

- Распаковывает файлы в формате LZMA -

-
-

- unxz -

-
-

- Распаковывает файлы в формате XZ -

-
-

- xz -

-
-

- Сжимает или распаковывает файлы в формате XZ. -

-
-

- xzcat -

-
-

- Распаковывает в стандартный поток вывода -

-
-

- xzcmp -

-
-

- Запускает cmp для сжатых XZ - файлов -

-
-

- xzdec -

-
-

- Небольшой и быстрый декодер для файлов сжатых XZ -

-
-

- xzdiff -

-
-

- Запускает diff для сжатых XZ - файлов -

-
-

- xzegrep -

-
-

- Запускает egrep для сжатых XZ - файлов -

-
-

- xzfgrep -

-
-

- Запускает fgrep для сжатых XZ - файлов -

-
-

- xzgrep -

-
-

- Запускает grep для сжатых XZ - файлов -

-
-

- xzless -

-
-

- Запускает less для сжатых XZ - файлов -

-
-

- xzmore -

-
-

- Запускает more для сжатых XZ - файлов -

-
-

- liblzma -

-
-

- Библиотека, реализующая сжатие данных без потерь с - блочной сортировкой с использованием алгоритма - Lempel-Ziv-Markov -

-
-
-
-
- - - diff --git a/lfs-12.0-sysv/chapter08/zlib.html b/lfs-12.0-sysv/chapter08/zlib.html deleted file mode 100644 index b1ab8eb..0000000 --- a/lfs-12.0-sysv/chapter08/zlib.html +++ /dev/null @@ -1,162 +0,0 @@ - - - - - - 8.6. Zlib-1.2.13 - - - - - - - - -
-

- 8.6. Zlib-1.2.13 -

-
-

- Пакет Zlib содержит подпрограммы сжатия и распаковки, используемые - некоторыми программами. -

-
-
-
- Приблизительное время сборки: - менее 0.1 SBU -
-
- Требуемое дисковое - пространство: 6.2 MB -
-
-
-
-
-

- 8.6.1. Установка пакета Zlib -

-

- Подготовьте Zlib к компиляции: -

-
./configure --prefix=/usr
-

- Скомпилируйте пакет: -

-
make
-

- Чтобы протестировать пакет, выполните: -

-
make check
-

- Установите пакет: -

-
make install
-

- Удалите бесполезную статическую библиотеку: -

-
rm -fv /usr/lib/libz.a
-
-
-

- 8.6.2. Содержимое - пакета Zlib -

-
-
-
- Установленные библиотеки: - libz.so -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - -
-

- libz -

-
-

- Содержит функции сжатия и распаковки, используемые - некоторыми программами. -

-
-
-
-
- - - diff --git a/lfs-12.0-sysv/chapter08/zstd.html b/lfs-12.0-sysv/chapter08/zstd.html deleted file mode 100644 index 793c233..0000000 --- a/lfs-12.0-sysv/chapter08/zstd.html +++ /dev/null @@ -1,224 +0,0 @@ - - - - - - 8.9. Zstd-1.5.5 - - - - - - - - -
-

- 8.9. Zstd-1.5.5 -

-
-

- Zstandard — это алгоритм сжатия в реальном времени, обеспечивающий - высокую степень сжатия. Он предлагает очень широкий диапазон - компромиссов между сжатием и скоростью при поддержке очень быстрого - декодера. -

-
-
-
- Приблизительное время сборки: - 0.4 SBU -
-
- Требуемое дисковое - пространство: 77 MB -
-
-
-
-
-

- 8.9.1. Установка пакета Zstd -

-

- Скомпилируйте пакет: -

-
make prefix=/usr
-
- [Примечание] -

- Примечание -

-

- В выходных данных теста есть несколько мест, выводящих сообщение - 'failed'. Они ожидаемы, и только 'FAIL' является фактическим - сбоем теста. Сбоев при тестировании быть не должно. -

-
-

- Чтобы протестировать пакет, выполните: -

-
make check
-

- Установите пакет: -

-
make prefix=/usr install
-

- Удалите статическую библиотеку: -

-
rm -v /usr/lib/libzstd.a
-
-
-

- 8.9.2. Содержимое - пакета Zstd -

-
-
-
- Установленные программы: - zstd, zstdcat (ссылка на zstd), zstdgrep, - zstdless, zstdmt (ссылка на zstd) и unzstd (ссылка на - zstd) -
-
- Установленные библиотеки: - libzstd.so -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - - - - - - - - - - - - - -
-

- zstd -

-
-

- Сжимает или распаковывает файлы в формате ZSTD -

-
-

- zstdgrep -

-
-

- Запускает grep на сжатых ZSTD - файлах -

-
-

- zstdless -

-
-

- Запускает less на сжатых ZSTD - файлах -

-
-

- libzstd -

-
-

- Библиотека, реализующая сжатие данных без потерь, с - использованием алгоритма ZSTD -

-
-
-
-
- - - diff --git a/lfs-12.0-sysv/chapter09/bootscripts.html b/lfs-12.0-sysv/chapter09/bootscripts.html deleted file mode 100644 index 7ce25c7..0000000 --- a/lfs-12.0-sysv/chapter09/bootscripts.html +++ /dev/null @@ -1,513 +0,0 @@ - - - - - - 9.2. LFS-Bootscripts-20230728 - - - - - - - - -
-

- 9.2. - LFS-Bootscripts-20230728 -

-
-

- Пакет LFS-Bootscripts содержит набор скриптов для запуска/остановки - системы LFS при загрузке/завершении работы. Файлы конфигурации и - процедуры, необходимые для настройки /процесса загрузки, описаны в - следующих разделах. -

-
-
-
- Приблизительное время сборки: - менее 0.1 SBU -
-
- Требуемое дисковое - пространство: 244 KB -
-
-
-
-
-

- 9.2.1. Установка пакета LFS-Bootscripts -

-

- Установите пакет: -

-
make install
-
-
-

- 9.2.2. - Содержимое пакета LFS-Bootscripts -

-
-
-
- Установленные скрипты: - checkfs, cleanfs, console, functions, - halt, ifdown, ifup, localnet, modules, mountfs, mountvirtfs, - network, rc, reboot, sendsignals, setclock, ipv4-static, swap, - sysctl, sysklogd, template, udev и udev_retry -
-
- Созданные каталоги: - /etc/rc.d, /etc/init.d (символическая - ссылка), /etc/sysconfig, /lib/services, /lib/lsb (символическая - ссылка) -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

- checkfs -

-
-

- Проверяет целостность файловых систем перед их - монтированием (за исключением журналируемых и сетевых - файловых систем) -

-
-

- cleanfs -

-
-

- Удаляет файлы, которые не должны сохраняться между - перезагрузками, например, те, которые находятся в - директориях /run/ и - /var/lock/; скрипт - пересоздает /run/utmp и - удаляет файлы, которые, возможно, существуют /etc/nologin, /fastboot, и /forcefsck -

-
-

- console -

-
-

- Загружает правильную таблицу раскладок для требуемой - раскладки клавиатуры; он также устанавливает экранный - шрифт -

-
-

- functions -

-
-

- Содержит общие функции, такие как проверка ошибок и - состояния, которые используются несколькими загрузочными - скриптами -

-
-

- halt -

-
-

- Останавливает работу системы -

-
-

- ifdown -

-
-

- Останавливает сетевое устройство -

-
-

- ifup -

-
-

- Инициализирует сетевое устройство -

-
-

- localnet -

-
-

- Настраивает имя хоста системы и локальное устройство - loopback -

-
-

- modules -

-
-

- Загружает модули ядра из списка, который находится в - файле /etc/sysconfig/modules, используя - указанные там же аргументы -

-
-

- mountfs -

-
-

- Монтирует все файловые системы, кроме тех, которые - помечены как noauto или сетевых файловых - систем -

-
-

- mountvirtfs -

-
-

- Монтирует виртуальные файловые системы, такие как - proc -

-
-

- network -

-
-

- Выполняет настройку сетевых интерфейсов, например, - сетевых карт, и настаивает шлюз по-умолчанию (где это - применимо) -

-
-

- rc -

-
-

- Основной сценарий управления; он отвечает за запуск всех - остальных загрузочных скриптов один за другим, в - последовательности, определяемой именами символических - ссылок на другие скрипты. -

-
-

- reboot -

-
-

- Перезагружает систему -

-
-

- sendsignals -

-
-

- Обеспечивает завершение каждого процесса перед - перезагрузкой или остановкой системы. -

-
-

- setclock -

-
-

- Сбрасывает системные часы на местное время, если - аппаратные часы не установлены на всемирное - координированное время (UTC). -

-
-

- ipv4-static -

-
-

- Предоставляет функциональные возможности, необходимые для - назначения статического адреса сетевому интерфейсу. -

-
-

- swap -

-
-

- Включает и отключает файлы и разделы, используемые для - подкачки. -

-
-

- sysctl -

-
-

- Загружает в работающее ядро значения системных настроек - из файла /etc/sysctl.conf, - если этот файл существует -

-
-

- sysklogd -

-
-

- Запускает и останавливает демоны журналирования - сообщений, выдаваемых системой и ядром. -

-
-

- template -

-
-

- Шаблон для создания пользовательских загрузочных скриптов - для других демонов -

-
-

- udev -

-
-

- Подготавливает каталог /dev - и запускает демон udev -

-
-

- udev_retry -

-
-

- Повторяет неудачные попытки запуска udev uevents и - копирует сгенерированные файлы правил из /run/udev в /etc/udev/rules.d если требуется. -

-
-
-
-
- - - diff --git a/lfs-12.0-sysv/chapter09/chapter09.html b/lfs-12.0-sysv/chapter09/chapter09.html deleted file mode 100644 index 72a127d..0000000 --- a/lfs-12.0-sysv/chapter09/chapter09.html +++ /dev/null @@ -1,116 +0,0 @@ - - - - - - Глава 9. Системные настройки - - - - - - - - -
-

- 9. Системные - настройки -

- -
- - - diff --git a/lfs-12.0-sysv/chapter09/etcshells.html b/lfs-12.0-sysv/chapter09/etcshells.html deleted file mode 100644 index 89c7a43..0000000 --- a/lfs-12.0-sysv/chapter09/etcshells.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - 9.9. Создание файла /etc/shells - - - - - - - - -
-

- 9.9. Создание - файла /etc/shells -

-

- Файл shells содержит список оболочек - входа в систему. Приложения используют этот файл для определения - корректности оболочки. Для каждой оболочки должна присутствовать одна - строка, состоящая из пути к файлу оболочки относительно корня - структуры каталогов (/). -

-

- Например, chsh - обращается к этому файлу, чтобы определить, может ли - непривилегированный пользователь изменить оболочку входа для своей - учетной записи. Если имя команды не указано в списке, пользователю - будет отказано в возможности изменять оболочки. -

-

- Это обязательное условие для таких приложений, как GDM, которые не заполняют список пользователей, - если ему не удаётся найти /etc/shells, - или демонов FTP, которые традиционно запрещают доступ пользователям с - оболочками, не включенными в этот файл. -

-
cat > /etc/shells << "EOF"
-# Begin /etc/shells
-
-/bin/sh
-/bin/bash
-
-# End /etc/shells
-EOF
-
- - - diff --git a/lfs-12.0-sysv/chapter09/inputrc.html b/lfs-12.0-sysv/chapter09/inputrc.html deleted file mode 100644 index ca6d05a..0000000 --- a/lfs-12.0-sysv/chapter09/inputrc.html +++ /dev/null @@ -1,156 +0,0 @@ - - - - - - 9.8. Создание файла /etc/inputrc - - - - - - - - -
-

- 9.8. Создание - файла /etc/inputrc -

-

- Файл inputrc это конфигурационный файл - библиотеки readline, который предоставляет возможности - редактирования, когда пользователь вводит строку с терминала. Он - работает путем преобразования ввода с клавиатуры в определенные - действия. Readline используется bash и большинством других оболочек, - а также многими другими приложениями. -

-

- Большинство людей не нуждаются в специальных настройках, поэтому - приведенная ниже команда создает глобальный /etc/inputrc, используемый всеми, кто входит в - систему. Если позже вы решите, что вам нужно переопределить значения - по умолчанию для одного из пользователей, вы можете создать файл - .inputrc в домашнем каталоге - пользователя и указать в нём измененные настройки. -

-

- Дополнительные сведения о редактировании файла inputrc см. в разделе info bash в секции Readline Init File. Также хорошим - источником информации является info - readline. -

-

- Ниже приведен общий глобальный inputrc - с комментариями, объясняющими, что делают различные параметры. - Обратите внимание, что комментарии не могут находиться в той же - строке, что и команды. Создайте файл с помощью следующей команды: -

-
cat > /etc/inputrc << "EOF"
-# Begin /etc/inputrc
-# Modified by Chris Lynn <roryo@roryo.dynup.net>
-
-# Разрешить перенос приглашения оболочки на следующую строку
-set horizontal-scroll-mode Off
-
-# Разрешить 8-битный ввод
-set meta-flag On
-set input-meta On
-
-# Отключить обрезание восьмого бита в вводимых символах
-set convert-meta Off
-
-# Выводить на экран все восемь бит
-set output-meta On
-
-# Звуковой сигнал - none, visible или audible, соответственно никакого, видимый или слышимый
-set bell-style none
-
-# Нижеследующие команды привязывают escape-последовательности (первый аргумент)
-# к специфичным для Readline функциям (второй аргумент)
-"\eOd": backward-word
-"\eOc": forward-word
-
-# для консоли linux
-"\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
-
-# для xterm
-"\eOH": beginning-of-line
-"\eOF": end-of-line
-
-# для Konsole
-"\e[H": beginning-of-line
-"\e[F": end-of-line
-
-# End /etc/inputrc
-EOF
-
- - - diff --git a/lfs-12.0-sysv/chapter09/introduction.html b/lfs-12.0-sysv/chapter09/introduction.html deleted file mode 100644 index 74604c7..0000000 --- a/lfs-12.0-sysv/chapter09/introduction.html +++ /dev/null @@ -1,182 +0,0 @@ - - - - - - 9.1. Введение - - - - - - - - -
-

- 9.1. - Введение -

-

- Загрузка системы Linux включает в себя несколько задач. Процесс - должен монтировать как виртуальные, так и реальные файловые системы, - инициализировать устройства, активировать файл подкачки, проверять - целостность файловых систем, монтировать любые разделы или файл - подкачки, устанавливать системные часы, запускать сеть, запускать - требуемые системой службы и выполнять любые другие необходимые - пользователю задачи. Этот процесс должен быть организован таким - образом, чтобы задачи выполнялись в правильном порядке, но в то же - время как можно быстрее. -

-
-

- 9.1.1. System V -

-

- System V это классический процесс загрузки, который использовался в - Unix и Unix-подобных системах, таких как Linux с 1983 года. Он - состоит из небольшой программы init, которая настраивает базовые - программы, такие как login (через getty) и запускает - скрипт. Этот скрипт, обычно именуемый rc управляет выполнением - дополнительных сценариев, необходимых для инициализации системы. -

-

- Программа init - управляется файлом /etc/inittab и - разделена по уровням выполнения, которые могут быть выбраны - пользователем. В LFS используются следующие уровни: -

-
-

- 0 — выключение
- 1 — Однопользовательский режим
- 2 — Определяемый пользователем
- 3 — Полный многопользовательский режим
- 4 — Определяемый пользователем
- 5 — Полный многопользовательский режим с дисплей-менеджером
- - 6 — перезагрузка -

-
-

- Уровень выполнения по умолчанию равен 3 или 5. -

-

- Преимущества -

-
-
    -
  • -

    - Устоявшаяся, хорошо отлаженная система. -

    -
  • -
  • -

    - Легко настраивается. -

    -
  • -
-
-

- Недостатки -

-
-
    -
  • -

    - Может загружаться медленнее. Загрузка базовой системы LFS в - среднем занимает 8-12 секунд, при этом время загрузки - измеряется от первого сообщения ядра до запроса на вход в - систему. Подключение к сети обычно устанавливается примерно - через 2 секунды после запроса на вход в систему. -

    -
  • -
  • -

    - Последовательная обработка задач загрузки. Это связано с - предыдущим пунктом. Задержка в работе любого процесса, - например, проверка файловой системы, приведет к задержке - всего процесса загрузки. -

    -
  • -
  • -

    - Напрямую не поддерживает дополнительные функции, такие как - контрольные группы (cgroups) и диспетчер системных ресурсов - для каждого пользователя. -

    -
  • -
  • -

    - Добавление init-скриптов требует ручных однотипных действий. -

    -
  • -
-
-
-
- - - diff --git a/lfs-12.0-sysv/chapter09/network.html b/lfs-12.0-sysv/chapter09/network.html deleted file mode 100644 index 36587cf..0000000 --- a/lfs-12.0-sysv/chapter09/network.html +++ /dev/null @@ -1,333 +0,0 @@ - - - - - - 9.5. Настройка сети - - - - - - - - -
-

- 9.5. Настройка - сети -

-
-

- 9.5.1. Создание файлов конфигурации сетевого интерфейса -

-

- Файлы в каталоге /etc/sysconfig/ - обычно определяют, какие интерфейсы запускаются и выключаются - сетевым скриптом. Этот каталог должен содержать файл для каждого - настраиваемого интерфейса, например ifconfig.xyz, где «xyz» описывает сетевую - карту. Имя интерфейса (например, eth0) обычно является подходящим. - Каждый файл содержит атрибуты одного интерфейса, такие как его - IP-адреса, маски подсетей и так далее. Имя файла должно быть - ifconfig. -

-
- [Примечание] -

- Примечание -

-

- Если процедура именования из предыдущего раздела не - использовалась, udev будет назначать имена интерфейсов сетевых - карт на основе физических характеристик системы, например, - enp2s1. Если вы не знаете имя вашего интерфейса, вы всегда можете - запустить ip link - или ls - /sys/class/net после загрузки системы. -

-

- Имена интерфейсов зависят от реализации и конфигурации демона - udev, работающего в системе. Демон udev для LFS (установленный в - Раздел 8.74, «Udev из - Systemd-254») не запустится, пока система LFS не будет - загружена. Таким образом, имена интерфейсов в системе LFS не - всегда можно определить, запустив эти команды в - хост-дистрибутиве, даже в среде - chroot. -

-
-

- Следующая команда создает пример конфигурационного файла для - устройства eth0 со - статическим IP-адресом: -

-
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
-

- Значения, выделенные курсивом, должны быть изменены в каждом файле, - чтобы правильно настроить интерфейсы. -

-

- Если переменной ONBOOT присвоено - значение «yes», сценарий загрузки сети System V вызовет - сетевую карту (NIC) в процессе загрузки системы. Если задано - значение, отличное от «yes» сетевой адаптер будет проигнорирован - сетевым скриптом и не будет запущен автоматически. Интерфейсы можно - запускать или останавливать вручную с помощью команд ifup и ifdown. -

-

- Переменная IFACE определяет имя сетевого - интерфейса, например, eth0. Она необходима для всех файлов - конфигураций сетевых устройств. Расширение файла должно - соответствовать этому значению. -

-

- Переменная SERVICE определяет метод - получения IP-адреса. Пакет LFS-Bootscripts имеет модульный формат - назначения IP, а создание дополнительных файлов в каталоге - /lib/services/ позволит использовать - другие методы назначения IP. Переменная обычно используется для - протокола DHCP (Dynamic Host Configuration Protocol), который - рассматривается в книге BLFS -

-

- Переменная GATEWAY должна содержать - IP-адрес шлюза по умолчанию, если таковой имеется. Если нет, то - закомментируйте эту строку. -

-

- Переменная PREFIX указывает количество - бит, используемых в подсети. Каждый сегмент IP-адреса состоит из 8 - бит. Если маска подсети равна 255.255.255.0, то для указания номера - сети используются первые три сегмента (24 бита). Если сетевая маска - 255.255.255.240, подсеть использует первые 28 бит. Префиксы длиннее - 24 бит обычно используются DSL и кабельными интернет-провайдерами - (ISP). В этом примере (PREFIX=24) маска сети — 255.255.255.0. - Измените переменную PREFIX в - соответствии c конфигурацией вашей сети. Если этот параметр не - указан, то ПРЕФИКС по умолчанию равен 24. -

-

- Для получения дополнительной информации смотрите справочную - страницу ifup. -

-
-
-

- 9.5.2. Создание файла - /etc/resolv.conf -

-

- Системе потребуются дополнительные настройки службы доменных имен - (DNS) для преобразования имен сети Интернет в IP-адреса и наоборот. - Это достигается путем указания IP-адреса DNS-сервера, доступного от - провайдера или администратора сети, в /etc/resolv.conf. Создайте файл, выполнив - следующие действия: -

-
cat > /etc/resolv.conf << "EOF"
-# Begin /etc/resolv.conf
-
-domain <Ваше доменное имя>
-nameserver <IP-адрес вашего основного DNS-сервера>
-nameserver <IP-адрес вашего дополнительного DNS-сервера>
-
-# End /etc/resolv.conf
-EOF
-

- Оператор domain может быть опущен или - заменён оператором search. Смотрите - справочную страницу resolv.conf для получения подробной информации. -

-

- Замените <IP-адрес вашего - основного DNS-сервера> адресом наиболее подходящего - DNS сервера. DNS серверов, может быть указано более одной записи - (дополнительные серверы необходимы для возможности резервного - переключения). Если вам нужен только один DNS-сервер, удалите - вторую строку nameserver из - файла. DNS-сервер также может выступать шлюзом в локальной сети. -

-
- [Примечание] -

- Примечание -

-

- Адреса общедоступных DNS серверов Google - 8.8.8.8 и 8.8.4.4. -

-
-
-
-

- 9.5.3. - Настройка имени хоста -

-

- В процессе загрузки файл /etc/hostname используется для настройки имени - хоста системы. -

-

- Создайте файл /etc/hostname и внесите - имя хоста, выполнив команду: -

-
echo "<lfs>" > /etc/hostname
-

- <lfs> замените на - имя вашего компьютера. Не вносите сюда полное доменное имя(FQDN). - Эта информация помещается в файл /etc/hosts. -

-
-
-

- 9.5.4. Настройка - файла /etc/hosts -

-

- Укажите IP-адрес, полное доменное имя (FQDN) и возможные псевдонимы - для использования в файле /etc/hosts. - Синтаксис строки: -

-
IP_address myhost.example.org aliases
-

- Если компьютер не должен быть виден в Интернете (т. е. нет - зарегистрированного домена и действительного блока назначенных - IP-адресов—у большинства пользователей этого нет), убедитесь, что - IP-адрес находится в диапазоне внутренних сетевых IP-адресов. - Допустимые диапазоны: -

-
Диапазон адресов локальной сети      Стандартный префикс
-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 может быть любым числом в диапазоне 16-31. y может быть любым - числом в диапазоне 0-255. -

-

- Правильный IP адрес может быть 192.168.1.1. Правильный FQDN для - этого IP адреса может быть lfs.example.org. -

-

- Даже если сетевая карта не используется, всё равно требуется - указание полного доменного имени. Это необходимо для правильной - работы некоторых программ. -

-

- Создайте файл /etc/hosts, выполнив - команду: -

-
cat > /etc/hosts << "EOF"
-# Begin /etc/hosts
-
-127.0.0.1 localhost.localdomain 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
-

- Значения <192.168.1.1>, <FQDN>, и <HOSTNAME> должны быть - изменены в соответствии с предпочтениями пользователя или - требованиями сети (если имеется IP-адрес выданный сетевым/системным - администратором и машина подключена к существующей сети). - Необязательные параметры могут быть опущены. -

-
-
- - - diff --git a/lfs-12.0-sysv/chapter09/profile.html b/lfs-12.0-sysv/chapter09/profile.html deleted file mode 100644 index 40ebbca..0000000 --- a/lfs-12.0-sysv/chapter09/profile.html +++ /dev/null @@ -1,275 +0,0 @@ - - - - - - 9.7. Файлы запуска оболочки Bash - - - - - - - - -
-

- 9.7. Файлы - запуска оболочки Bash -

-

- Программа оболочки /bin/bash (далее именуемая как - «оболочка») - использует начальный набор файлов, чтобы помочь создать среду для - запуска. Каждый файл имеет определенное назначение и может по-разному - влиять на вход в систему и интерактивное окружение. Файлы в каталоге - /etc содержат глобальные настройки. - Если в домашнем каталоге существуют эквивалентные файлы, они могут - переопределить глобальные настройки. -

-

- Интерактивная оболочка входа запускается после успешного входа с - использованием /bin/login, прочитав файл - /etc/passwd. Интерактивная оболочка без - входа в систему запускается из командной строки (например, - [prompt]$/bin/bash). Неинтерактивная - оболочка обычно присутствует когда выполняется скрипт оболочки. Он - неинтерактивен, поскольку обрабатывает скрипт и не ожидает ввода - пользователем между командами. -

-

- Для получения дополнительной информации смотрите разделы Загрузочные файлы Bash и Интерактивные оболочки главы Возможности Bash на информационных - страницах Bash (info - bash). -

-

- Файлы /etc/profile и ~/.bash_profile считываются при вызове оболочки как - интерактивной оболочки входа в систему. -

-

- По умолчанию в файле /etc/profile - задаются некоторые переменные окружения, необходимые для поддержки - вашего языка. Правильная их установка влияет на: -

-
-
    -
  • -

    - Выходные данные программ переводятся на ваш родной язык -

    -
  • -
  • -

    - Правильную интерпретацию символов в буквы, цифры и другие - классы. Это необходимо для того, чтобы bash правильно принимал - символы, отличные от ASCII, в командной строке с неанглийской - локалью -

    -
  • -
  • -

    - Правильный порядок сортировки по алфавиту для страны -

    -
  • -
  • -

    - Подходящий формат бумаги по умолчанию -

    -
  • -
  • -

    - Правильное форматирование денежных значений, значений времени и - дат -

    -
  • -
-
-

- Замените <ll> - двухбуквенным кодом нужного языка (например, «en») и <CC> двухбуквенным кодом - соответствующей страны (например, «GB»). <charmap> следует заменить на - таблицу символов для выбранной вами локали. Также могут - присутствовать необязательные модификаторы, такие как «@euro». -

-

- Список всех языковых стандартов, поддерживаемых Glibc, можно - получить, выполнив следующую команду: -

-
locale -a
-

- Таблицы символов могут иметь несколько синонимов, например, - «ISO-8859-1» - также упоминается как «iso8859-1» и «iso88591». Некоторые приложения не могут - корректно обрабатывать различные синонимы (например, требуют чтобы - «UTF-8» - записывалось как «UTF-8», а не «utf8»), поэтому безопаснее всего в большинстве - случаев выбирать каноническое имя для конкретной локали. Чтобы - определить каноническое имя, запустите следующую команду, где - <locale name> - это - вывод, выдаваемый командой locale - -a для желаемой локали (в нашем примере «en_GB.iso88591»). -

-
LC_ALL=<locale name> locale charmap
-

- Для локали «en_GB.iso88591» указанная выше команда - напечатает: -

-
ISO-8859-1
-

- Окончательная настройка локали будет выглядеть так: «en_GB.ISO-8859-1». Важно, - чтобы локаль, найденная с помощью приведенной выше методики, была - проверена перед её добавлением в файлы запуска Bash: -

-
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
-

- Приведенные выше команды должны вывести название языка, кодировку - символов, используемую в локали, местную валюту и телефонный код - страны. Если какая-либо из команд завершается с сообщением об ошибке, - похожим на указанное ниже, это означает, что ваша локаль либо не была - установлена в Раздел 8.5, «Glibc-2.38», либо не - поддерживается стандартной установкой Glibc -

-
locale: Cannot set LC_* to default locale: No such file or directory
-

- Если это произойдет, вам следует либо установить желаемую локаль с - помощью команды localedef, либо рассмотреть - возможность выбора другой локали. Дальнейшие инструкции не - предполагают таких сообщений об ошибках от Glibc. -

-

- Другие пакеты также могут работать некорректно (но не обязательно - будут отображать какие-либо сообщения об ошибках), если название - локали не соответствует их ожиданиям. В таких случаях может оказаться - полезной информация о том, как другие дистрибутивы Linux поддерживают - вашу локаль. -

-

- Как только будут определены правильные настройки локали, создайте - файл /etc/profile: -

-
cat > /etc/profile << "EOF"
-# Begin /etc/profile
-
-export LANG=<ll>_<CC>.<charmap><@modifiers>
-
-# End /etc/profile
-EOF
-

- Локаль «C» - (используемая по умолчанию) и «en_US.utf8» (рекомендуемая для англоязычных - пользователей в Соединенных Штатах) это разные локали. «C» использует 7-битный - набор символов US-ASCII и обрабатывает байты с установленным старшим - битом как недопустимые символы. Вот почему, например, команда - ls заменяет их - вопросительными знаками в этой локали. Кроме того, попытка отправить - письмо с такими символами из Mutt или Pine приводит к отправке - сообщений не соответствующих RFC (кодировка в исходящей почте указана - как «unknown - 8-bit»). Таким образом, вы можете использовать локаль - «C», только в - том случае, если уверены, что вам никогда не понадобятся 8-битные - символы. -

-

- Некоторые программы не поддерживают локали на основе UTF-8. Ведется - работа по документированию и, по возможности, устранению таких - проблем. Некоторые подробности смотрите по ссылке: - https://mirror.linuxfromscratch.ru/blfs/view/12.0/introduction/locale-issues.html. -

-
- - - diff --git a/lfs-12.0-sysv/chapter09/symlinks.html b/lfs-12.0-sysv/chapter09/symlinks.html deleted file mode 100644 index 04da0d0..0000000 --- a/lfs-12.0-sysv/chapter09/symlinks.html +++ /dev/null @@ -1,412 +0,0 @@ - - - - - - 9.4. Управление устройствами - - - - - - - - -
-

- 9.4. - Управление устройствами -

-
-

- 9.4.1. Сетевые устройства -

-

- Udev по умолчанию присваивает имена сетевым устройствам в - соответствии с данными прошивки, BIOS'а или физическими - характеристиками, такими как шина, слот или MAC-адрес. Целью такого - соглашения об именовании является обеспечение того, чтобы сетевые - устройства именовались последовательно, а не основывались на - времени обнаружения сетевой карты.Например, в более старых версиях - Linux—на компьютере с двумя сетевыми картами производства Intel и - Realtek, сетевая карта производства Intel могла стать eth0, а карта - Realtek — eth1. Иногда после перезагрузки карты именовались - наоборот. -

-

- В новой схеме именования, типичными именами сетевых устройств - являются enp5s0 или wlp3s0. Если такие имена для вас нежелательны, - то может быть реализована традиционная схема именования или своя - собственная. -

-
-

- 9.4.1.1. Отключение постоянного присвоения имен в параметрах - загрузки ядра -

-

- Традиционная схема именования - eth0, eth1, и так далее, может - быть включена путем добавления параметра net.ifnames=0 в командную - строку ядра. Это решение подходит для систем, которые имеют - только одно сетевое устройство каждого типа. Часто в ноутбуках - несколько сетевых устройств с именами eth0 и wlan0; в таких - ноутбуках также может использоваться этот метод. Командная строка - указывается в файле конфигурации GRUB. Подробности смотрите на - странице Раздел 10.4.4, - «Создание файла конфигурации GRUB». -

-
-
-

- 9.4.1.2. Создание пользовательских правил Udev -

-

- Схему именования можно настроить, создав пользовательские правила - udev. В состав книги включен скрипт, который генерирует начальные - правила. Чтобы их сгенерировать, выполните команду: -

-
bash /usr/lib/udev/init-net-rules.sh
-

- Теперь, проверьте файл /etc/udev/rules.d/70-persistent-net.rules, - чтобы узнать какое имя с каким сетевым устройством сопоставлено: -

-
cat /etc/udev/rules.d/70-persistent-net.rules
-
- [Примечание] -

- Примечание -

-

- В некоторых случаях, например, когда MAC-адреса были назначены - сетевой карте вручную или в виртуальной среде, такой как Qemu - или Xen, возможно, файл сетевых правил не будет сгенерирован, - поскольку адреса назначаются не последовательно. В таких - случаях, этот способ не применим. -

-
-

- Файл начинается с блока комментариев, далее следуют две строки - для каждой сетевой карты (NIC). Первая строка представляет собой - описание с комментариями и содержит аппаратные идентификаторы - (например, поставщика PCI и идентификаторы устройств, если это - PCI-карта), а также информацию о драйвере (если его удалось - обнаружить). Ни идентификатор оборудования, ни драйвер не - используются для определения того, какое имя присвоить - интерфейсу; эта информация предназначена только для справки. - Вторая строка - это правило udev, которое соответствует этому - сетевому адаптеру и фактически присваивает ему имя. -

-

- Все правила udev состоят из нескольких ключевых слов, разделенных - запятыми и необязательными пробелами. Ниже приведены ключевые - слова и пояснения по каждому из них: -

-
-
    -
  • -

    - SUBSYSTEM=="net" - указывает - Udev игнорировать устройства, которые не являются сетевыми - картами. -

    -
  • -
  • -

    - ACTION=="add" - указывает Udev - игнорировать правила для событий, отличных от добавления - (события "удалить" и "изменить" также происходят, но не - требуют переименования сетевых интерфейсов). -

    -
  • -
  • -

    - DRIVERS=="?*" - существует для - того, чтобы Udev проигнорировал подинтерфейсы VLAN или - моста (потому что эти подинтерфейсы не имеют драйверов). - Эти подинтерфейсы пропускаются, потому что назначенные им - имена будут конфликтовать с именами их родительских - устройств. -

    -
  • -
  • -

    - ATTR{address} - значением - этого ключевого слова является MAC-адрес сетевой карты. -

    -
  • -
  • -

    - ATTR{type}=="1" - этот ключ - гарантирует выполнение правила соответствующего только - основному интерфейсу, при использовании определенных - беспроводных драйверов, которые создают несколько - виртуальных интерфейсов. Дополнительные интерфейсы - пропускаются по той же причине, что и подинтерфейсы VLAN и - мост, в ином случае произошел бы конфликт имен. -

    -
  • -
  • -

    - NAME - значением этого - ключевого слова является имя, которое udev присвоит этому - интерфейсу. -

    -
  • -
-
-

- Значение NAME является очень важным. - Прежде чем продолжить, убедитесь, что вы знаете, какое имя - назначено каждой из сетевых карт и обязательно используйте это - значение NAME при создании файлов - конфигурации сети. -

-
-
-
-

- 9.4.2. Символические ссылки CD-ROM -

-

- Некоторое программное обеспечение, которое вы, возможно, захотите - установить позже (например, различные медиаплееры) ожидают, что - устройства /dev/cdrom или - /dev/dvd и символические ссылки на - CD-ROM или DVD-ROM устройства должны существовать. Кроме того, - может быть удобно использовать эти символические ссылки в - /etc/fstab. Udev поставляется с - файлом сценария, который будет генерировать правила для создания - этих символических ссылок, в зависимости от возможностей каждого - устройства, но вам нужно решить, какой из двух режимов работы вы - хотите использовать. -

-

- Во-первых, скрипт может работать в режиме «by-path» (используется - по умолчанию для USB и FireWire устройств), где создаваемые им - правила зависят от физического пути к CD или DVD устройству. - Во-вторых, он может работать в режиме «by-id» (по умолчанию для - устройств IDE и SCSI), где создаваемые им правила зависят от строк - идентификации, хранящихся в самом устройстве CD или DVD. Путь - определяется сценарием Udev path_id, а идентификационные - строки считываются с оборудования командами ata_id или scsi_id, в зависимости от того, - какой тип устройства у вас есть. -

-

- У каждого подхода есть свои преимущества; правильный подход к - использованию будет зависеть от того, какие изменения устройств - могут произойти. Если вы ожидаете, что физический путь к устройству - (порты и/или слоты, в который оно подключено), изменится, например, - потому, что вы планируете переместить диск в другой порт IDE или - другой разъем USB, то вы должны использовать режим «by-id». С другой - стороны, если вы ожидаете, что идентификация устройства изменится, - например, потому, что оно может выйти из строя, и вы замените его - другим устройством с теми же характеристиками и подключите к тем же - разъемам, тогда вы должны использовать режим «by-path». -

-

- Если с вашим устройством возможен любой из вариантов, выберите тот, - который по вашему мнению случается чаще. -

-
- [Важно] -

- Важно -

-

- Внешние устройства (например, привод компакт-дисков, подключенный - через USB) не следует подключать методом «by-path», потому что - каждый раз, когда устройство подключено в новый внешний порт, - изменится его физический путь. Все внешние устройства подвержены - этой проблеме, если при написании правил Udev применять режим - распознавания по их физическому пути. К тому же, эта проблема не - ограничивается CD и DVD-приводами. -

-
-

- Если вы хотите увидеть значения, которые будут использовать скрипты - udev, то для требуемого устройства CD-ROM найдите соответствующий - каталог в /sys (например, это может - быть /sys/block/hdd) и выполните - команду, аналогичную следующей: -

-
udevadm test /sys/block/hdd
-

- Обратите внимание на строки, содержащие вывод различных - идентификаторов *_id. Режим «by-id» будет использовать значение ID_SERIAL - если оно существует и не пустое, иначе будет использована - комбинация ID_MODEL и ID_REVISION. Режим «by-path» будет - использовать значение ID_PATH. -

-

- Если режим по умолчанию не подходит для вашей ситуации, то в файл - /etc/udev/rules.d/83-cdrom-symlinks.rules можно - внести следующие изменения (где mode является одним из значений - «by-id» или - «by-path»): -

-
sed -e 's/"write_cd_rules"/"write_cd_rules mode"/' \
-    -i /etc/udev/rules.d/83-cdrom-symlinks.rules
-

- Обратите внимание, что на данный момент, нет необходимости - создавать файлы правил или символические ссылки, так как вы - смонтировали каталог /dev хоста в - систему LFS, и мы предполагаем, что символические ссылки уже - существуют. Правила и символические ссылки будут создаваться при - первой загрузке LFS системы. -

-

- Однако, если у вас есть несколько устройств CD-ROM, то - символические ссылки, сгенерированные в это время, могут указывать - на другие устройства, и иметь различия от хост системы, потому что - устройства не будут обнаружены в предсказуемом порядке. Назначения, - созданные при первой загрузке системы LFS, будут правильными, - проблема возникнет только в том случае, если символические ссылки в - обеих системах указывают на одно и то же устройство. Если - потребуется, проверьте (и, возможно, отредактируйте) - сгенерированные правила в файле /etc/udev/rules.d/70-persistent-cd.rules после - загрузки, чтобы убедиться, что назначенные символические ссылки - соответствуют тому, что вам нужно. -

-
-
-

- 9.4.3. Работа с дубликатами устройств -

-

- Как поясняется в Раздел 9.3, - «Взаимодействие с устройствами и модулями», порядок отображения - устройства с одинаковой функциональностью в /dev является, как правило, случайным. Например, - если у вас есть веб камера и TV тюнер, иногда /dev/video0 ссылается на камеру, а /dev/video1 ссылается на TV тюнер, а иногда, - например, после перезагрузки системы, порядок поменяется на - противоположный. Для всех классов оборудования, за исключением - звуковых и сетевых карт, это можно исправить, написав правила udev - для создания постоянных символических ссылок. Случай с сетевыми - картами описан отдельно в Раздел 9.5, «Настройка сети», - инструкции по настройке звуковых карт можно найти в - BLFS. -

-

- Для каждого из ваших устройств, которые могут иметь такую проблему - (даже если проблема не существует в текущем дистрибутиве Linux ), - найдите соответствующий каталог в /sys/class или /sys/block. Для видеоустройств это может быть - /sys/class/video4linux/videoX. Определите атрибуты, - которые однозначно идентифицируют устройство (обычно это - идентификаторы поставщика и продукта и/или серийные номера): -

-
udevadm info -a -p /sys/class/video4linux/video0
-

- Затем напишите правила, которые создают символические ссылки, - например: -

-
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
-

- В результате устройства /dev/video0 и - /dev/video1 по-прежнему случайным - образом ссылаются на TV тюнер и веб-камеру (и, следовательно, - никогда не должны использоваться напрямую), но есть символические - ссылки /dev/tvtuner и /dev/webcam, которые всегда указывают на - правильное устройство. -

-
-
- - - diff --git a/lfs-12.0-sysv/chapter09/udev.html b/lfs-12.0-sysv/chapter09/udev.html deleted file mode 100644 index 2cec39d..0000000 --- a/lfs-12.0-sysv/chapter09/udev.html +++ /dev/null @@ -1,489 +0,0 @@ - - - - - - 9.3. Взаимодействие с устройствами и модулями - - - - - - - - -
-

- 9.3. Взаимодействие - с устройствами и модулями -

-

- В Глава 8, - мы установили демон udev во время сборки udev . Прежде чем мы углубимся в детали того, как - работает udev, необходимо кратко рассказать о предыдущих методах - взаимодействия с устройствами. -

-

- Системы Linux традиционно использовали метод статического создания - устройств, при котором огромное количество узлов устройств(иногда - буквально тысячи узлов) создавалось в /dev, независимо от того, существовали ли - соответствующие аппаратные устройства на самом деле. Обычно это - делалось с помощью скрипта MAKEDEV, который содержал ряд - вызовов команды mknod с - соответствующими основными и второстепенными номерами устройств, для - всех возможных вариантов, которые только могут существовать в мире. -

-

- Используя метод udev, узлы устройств создаются только для тех - устройств, которые обнаружены ядром. Эти узлы устройств создаются - каждый раз при загрузке системы; они хранятся в файловой системе - devtmpfs (виртуальная файловая - система, которая полностью находится в оперативной памяти). Узлы не - занимают много места в памяти и их общий размер незначителен. -

-
-

- 9.3.1. История -

-

- В феврале 2000 года, новая файловая система devfs была принята в ветку ядра 2.3.46 и была - доступна на протяжении выпуска стабильных релизов ветки 2.4. Хотя - она и присутствовала в ядре, такой способ динамического создания - устройств никогда не получал поддержки от разработчиков ядра. -

-

- Основная проблема с подходом, принятым devfs была связана с обработкой обнаружения, - создания и назначения имен устройствам. Проблема связанная с - именованием узлов была самой важной. Общепринято, что если имена - устройств можно настраивать, политика именования устройств должна - выбираться системными администраторами, а не навязываться - разработчиками. Файловая система devfs также страдала от состояния гонки, - присущего её архитектуре; оно не могло быть исправлено без - существенной переработки ядра. devfs долгое время была помечена как устаревшая - и, наконец, была удалена из ядра в июне 2006 года. -

-

- При разработке нестабильной ветки ядра 2.5, позднее, выпущенной как - стабильный релиз 2.6, появилась новая виртуальная файловая система - sysfs. Задача этой файловой системы - заключалась в предоставление информации о конфигурации оборудования - системы процессам пользовательского пространства. С помощью этого - представления, видимого в пользовательском пространстве, стало - возможным разработать замену пользовательского пространства для - devfs. -

-
-
-

- 9.3.2. Реализация Udev -

-
-

- 9.3.2.1. Sysfs -

-

- Краткое описание файловой системы sysfs было представлено выше. Можно задаться - вопросом, как sysfs получает - информацию об устройствах в системе, и о том, какие номера - устройств должны использоваться для них. Драйверы, - скомпилированные в ядро, регистрируют свои объекты в sysfs (внутри devtmpfs), по мере обнаружения ядром. Для - драйверов, которые скомпилированы в виде модулей, регистрация - происходит при его загрузке. После монтирования файловой системы - sysfs (в каталог /sys), данные, зарегистрированные драйверами, в - sysfs, станут доступны для - пользовательского пространства и udevd для обработки (включая - модификацию узлов устройств). -

-
-
-

- 9.3.2.2. Создание узла - устройства -

-

- Файлы устройств создаются ядром в файловой системе devtmpfs. Любой драйвер, которому необходимо - зарегистрировать узел устройства, будет использовать для этого - devtmpfs (через системный драйвер - ядра). Когда экземпляр devtmpfs - монтируется в каталог /dev, узел - устройства будет доступен в пользовательском пространстве с - фиксированным именем, разрешениями и владельцем. -

-

- Через некоторое время, ядро отправит uevent в udevd. На основе правил, - которые указанны в файлах в каталогах /etc/udev/rules.d, /lib/udev/rules.d, и /run/udev/rules.d, udevd создаст дополнительные - символические ссылки на узлы устройств, или сменит разрешения, - владельца или группу, или изменит запись (имя) во внутренней базе - данных udevd для - этого объекта. -

-

- Правила в этих трёх каталогах пронумерованы и используются - совместно. Если udevd не может найти правило - для устройства, он оставит права доступа и владельца на - devtmpfs, которые были - установлены изначально. -

-
-
-

- 9.3.2.3. - Загрузка модуля -

-

- Драйверы устройств, скомпилированные в виде модулей ядра могут - содержать встроенные псевдонимы. Псевдонимы можно увидеть - просмотрев вывод программы modinfo, обычно они связаны со - специфичными для шины идентификаторами устройств, которые - поддерживается модулем. Например, драйвер snd-fm801 подерживает PCI устройства с - идентификатором поставщика 0x1319 и идентификатором устройства - 0x0801, и имеет псевдоним «pci:v00001319d00000801sv*sd*bc04sc01i*». - Для большинства устройств, драйвер шины экспортирует псевдонимы - драйвера, которые будет обрабатывать устройство через - sysfs. Например, файл - /sys/bus/pci/devices/0000:00:0d.0/modalias - может содержать строку «pci:v00001319d00000801sv00001319sd00001319bc04sc01i00». - Правила по умолчанию, которые предоставлены Udev, заставят - udevd вызвать - /sbin/modprobe с - содержимым, которое находится в значении переменной окружения - MODALIAS uevent (которое должно - совпадать с содержимым файла modalias в sysfs), тем самым загружая все - модули, чьи псевдонимы совпадают в строке после расширения - подстановочных знаков -

-

- В указанном примере, это означает, что в дополнение к - snd-fm801 будет загружен - устаревший (и нежелательный) драйвер forte, если он будет доступен. Ниже - приведены способы, как можно предотвратить загрузку нежелательных - драйверов. -

-

- Само ядро также способно загружать модули для сетевых протоколов, - файловых систем и поддержки NLS по запросу. -

-
-
-

- 9.3.2.4. Работа с устройствами с горячей заменой или - динамическими устройствами -

-

- При подключении устройства, например, MP3-плеер, к универсальной - последовательной шине (USB), ядро распознает, что устройство - подключено, и генерирует событие uevent. Затем это событие - обрабатывается udevd, как было описано выше. -

-
-
-
-

- 9.3.3. Проблемы с загрузкой модулей и созданием устройств -

-

- Существует несколько возможных проблем, связанных с автоматическим - созданием узлов устройств. -

-
-

- 9.3.3.1. Модуль ядра не загружается автоматически -

-

- Udev загрузит модуль только в том случае, если у него есть - псевдоним, специфичный для шины, и драйвер шины правильно - экспортирует необходимые псевдонимы в sysfs. В других случаях следует организовать - загрузку модуля иными способами. Известно, что, начиная с версии - Linux-6.4.12, udev, выполняет загрузку правильно написанных - драйверов для INPUT, IDE, PCI, USB, SCSI, SERIO, и FireWire - устройств. -

-

- Чтобы определить, имеет ли требуемый драйвер устройства - необходимую поддержку Udev, запустите modinfo с именем модуля в - качестве аргумента. Далее, попробуйте найти каталог устройства в - /sys/bus и проверьте, есть ли там - файл modalias. -

-

- Если файл modalias существует в - sysfs, то драйвер, который - поддерживает устройство, может обращаться к нему напрямую, но не - имеет псевдонима, это ошибка в драйвере. Загрузите драйвер без - помощи Udev и ожидайте, что проблема будет исправлена позднее. -

-

- Если же в каталоге /sys/bus нет - файла modalias, это означает, что - разработчики ядра еще не добавили поддержку modalias к этому типу шины. В Linux-6.4.12 это - относится к шиной ISA. Ожидайте, что эта проблема будет - исправлена в более поздних версиях ядра. -

-

- Udev не предназначен для загрузки драйверов «обёрток», таких как - snd-pcm-ossи не аппаратных - драйверов, например, loop. -

-
-
-

- 9.3.3.2. Модуль ядра не загружается автоматически и Udev не - предназначен для его загрузки -

-

- Если модуль «обёртка» только расширяет функциональность, - предоставляемую каким-либо другим модулем (например модуль - snd-pcm-oss расширяет - функциональность модуля snd-pcm, давая возможность звуковым - картам быть доступными для OSS приложений), настройте - modprobe для - загрузки оболочки после того, как Udev загрузит обернутый модуль. - Для этого добавьте строку «softdep» в файл, который находится в - каталоге /etc/modprobe.d/<filename>.conf. - Например: -

-
softdep snd-pcm post: snd-pcm-oss
-

- Обратите внимание, что команда «softdep» разрешает добавлять pre: зависимости, или одновременно pre: и post: - зависимости. Обратитесь к документации modprobe.d(5) для изучения синтаксиса и - возможностей «softdep». -

-

- Если рассматриваемый модуль не является обёрткой, и полезен сам - по себе, настройте загрузочный скрипт modules, чтобы он - инициализировался при загрузке системы. Для этого добавьте имя - модуля в файл /etc/sysconfig/modules в отдельной строке. Этот - способ сработает и для модулей-обёрток,но не является - оптимальным. -

-
-
-

- 9.3.3.3. Udev загружает какой-то нежелательный модуль -

-

- Либо не создавайте модуль, либо занесите его в черный список в - файле /etc/modprobe.d/blacklist.conf, как это сделано - с модулем forte в примере - ниже: -

-
blacklist forte
-

- Модули, занесенные в черный список, можно загрузить вручную с - помощью явной команды modprobe. -

-
-
-

- 9.3.3.4. Udev неправильно создает устройство или делает - неправильную символическую ссылку -

-

- Это обычно происходит, если правило неожиданно совпадает с другим - устройством. Например, плохо написанное поставщиком оборудования - правило может соответствовать как диску SCSI(искомое устройство), - так и универсальному устройству SCSI (неправильно). Найдите - ошибочное правило и исправьте его с помощью команды udevadm info. -

-
-
-

- 9.3.3.5. Правило Udev работает ненадежно -

-

- Это может быть проявлением предыдущей проблемы. В ином случае, - если правило использует атрибуты файловой системы sysfs, то это может быть проблемой - синхронизации ядра, которая будет исправлена в более поздних - версиях ядра. Но вы можете обойти проблему, создав правило, - которое ожидает используемый атрибут sysfs и добавляет его к файлу правил - /etc/udev/rules.d/10-wait_for_sysfs.rules - (создайте его, если файл не существует). Пожалуйста, сообщите в - списке рассылки разработчиков LFS, если это решение вам поможет. -

-
-
-

- 9.3.3.6. Udev не создаёт устройство -

-

- Во-первых, убедитесь, что драйвер встроен в ядро или уже загружен - как модуль, и, что udev не создает устройство с неправильным - именем. -

-

- Если драйвер ядра не экспортирует свои данные в sysfs, udev не хватает информации, - необходимой для создания узла устройства. Это, вероятнее всего, - произойдет со сторонними драйверами, которых нет в дереве - исходного кода ядра. Создайте статический узел в каталоге - /usr/lib/udev/devices с - соответствующими старшим/младшим номерами (смотрите файл - devices.txt в документации к ядру или документации, - предоставленной сторонним поставщиком драйвера). Статический узел - будет скопирован в /dev с помощью - udev. -

-
-
-

- 9.3.3.7. Порядок присвоения имен устройствам меняется случайным - образом после перезагрузки -

-

- Это связано с тем, что udev обрабатывает события uevents и - загружает модули параллельно, а значит в непредсказуемом порядке. - Это никогда не будет «исправлено». Вы не должны полагаться на то - что имена устройств ядра стабильны. Вместо этого создайте свои - собственные правила, которые делают символические ссылки со - стабильными именами на основе некоторых неизменяемых атрибутов - устройства, таких как серийный номер или вывод различных утилит - *_id, установленных Udev. Смотрите Раздел 9.4, «Управление - устройствами» и Раздел 9.5, «Настройка сети» для - примера. -

-
-
-
-

- 9.3.4. Полезная информация -

-

- Дополнительную документацию можно получить на следующих сайтах: -

-
- -
-
-
- - - diff --git a/lfs-12.0-sysv/chapter09/usage.html b/lfs-12.0-sysv/chapter09/usage.html deleted file mode 100644 index ee92c3f..0000000 --- a/lfs-12.0-sysv/chapter09/usage.html +++ /dev/null @@ -1,999 +0,0 @@ - - - - - - 9.6. Настройка и использование загрузочных скриптов System V - - - - - - - - -
-

- 9.6. Настройка и - использование загрузочных скриптов System V -

-
-

- 9.6.1. Как работают загрузочные скрипты System V? -

-

- В этой версии LFS используется специальное средство загрузки под - названием SysVinit, основанное на наборе уровней выполнения - (run-levels). Процедура - загрузки может сильно отличаться от одной системы к другой; и тот - факт, что в конкретном дистрибутиве Linux все работало должным - образом, не гарантирует, что оно будут работать так же в LFS. LFS - работает по-своему, но соблюдает общепринятые стандарты. -

-

- Существует альтернативная система загрузки, которая называется - systemd. Мы не будем - обсуждать этот вариант загрузки здесь. Для получения подробного - описания, посетите - https://www.linux.com/training-tutorials/understanding-and-using-systemd/. -

-

- SysVinit (в дальнейшем именуемый «init») использует схему уровней выполнения. - Существует семь уровней выполнения, пронумерованных от 0 до 6. (На - самом деле уровней больше, но они предназначены для особых случаев - и обычно не используются. Подробности смотрите в руководстве - init(8)). Каждый из них соответствует - действиям, которые компьютер должен выполнить при запуске и - выключении. Уровень выполнения по умолчанию — 3. Ниже приведено - описание различных уровней в том виде, в каком они реализованы в - LFS: -

-
-

- 0: выключение компьютера
- 1: однопользовательский режим
- 2: зарезервировано для настройки, в остальном аналогично 3
- - 3: многопользовательский режим с поддержкой сети
- - 4: зарезервировано для настройки, в остальном аналогично 3
- - 5: то же, что и 4, обычно используется для входа в систему с графическим интерфейсом (например, 
- - gdm от GNOME или lxdm от LXDE)
- - 6: перезагрузка компьютера -

-
-
- [Примечание] -

- Примечание -

-

- Раньше, много лет назад, уровень выполнения 2 обозначался как - "многопользовательский режим без поддержки сети", тогда, - несколько пользователей могли подключаться к системе через - последовательные порты. В сегодняшних условиях это не имеет - смысла, и мы обозначаем этот уровень как "зарезервировано". -

-
-
-
-

- 9.6.2. Настройка - Sysvinit -

-

- Во время инициализации ядра первой запускаемой программой (если она - не переопределена в командной строке) является init. Эта программа считывает - файл инициализации /etc/inittab. - Создайте этот файл: -

-
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:S06:once:/sbin/sulogin
-s1:1:respawn:/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
-

- Пояснения по содержимому этого файла инициализации находится на - справочной странице inittab. - Для LFS основной командой является rc. В приведенном выше файле - инициализации, rc - будет выполнять все сценарии, начинающиеся с символа S в каталоге - /etc/rc.d/rcS.d, за которыми следуют - все скрипты, начинающиеся с S в каталоге /etc/rc.d/rc?.d, где знак вопроса задается - значением initdefault. -

-

- Для удобства, скрипт rc считывает библиотеку функций - из /lib/lsb/init-functions. Эта - библиотека также читает необязательный файл конфигурации - /etc/sysconfig/rc.site. В этот файл - можно поместить любой из параметров конфигурации системы, описанных - в последующих разделах, что позволяет объединить все параметры - системы в одном файле. -

-

- Для удобства отладки скрипт functions также записывает весь вывод в - /run/var/bootlog. Поскольку каталог - /run является tmpfs, этот файл не - сохраняется при загрузке; однако его содержимое добавляется в файл - /var/log/boot.log по окончании - процесса загрузки. -

-
-

- 9.6.2.1. Изменение - уровней выполнения -

-

- Изменить уровень выполнения можно с помощью команды init <runlevel>, - где <runlevel> - - это целевой уровнем выполнения. Например, чтобы перезагрузить - компьютер, пользователь должен выполнить команду init 6, которая является - псевдонимом для команды reboot. Аналогично, init 0 - является псевдонимом для команды halt. -

-

- В каталоге /etc/rc.d есть ещё - несколько каталогов, которые выглядят как rc?.d (где ? - номер уровня выполнения), все - они содержат ряд символических ссылок. Некоторые ссылки - начинаются с K, другие - начинаются с S, и все они - содержат две цифры после начальной буквы. K означает остановить - (убить) службу, а S означает запустить службу. Числа определяют - порядок выполнения сценариев от 00 до 99—чем меньше число, тем - раньше запускается скрипт. Когда init переключается на другой - уровень выполнения, соответствующие службы либо запускаются, либо - останавливаются, в зависимости от выбранного уровня выполнения. -

-

- Реальные скрипты находятся в каталоге /etc/rc.d/init.d. Они выполняют фактическую - работу, и символические ссылки указывают на них. Ссылки К и S - указывают на один и тот же скрипт в /etc/rc.d/init.d. Это связано с тем, что - скрипты могут вызываться с разными параметрами, такими как - start, stop, restart, reload, и status. Когда встречается ссылка K, - соответствующий скрипт запускается с аргументом stop. Когда встречается S-ссылка, - соответствующий скрипт запускается с аргументом start. -

-

- Ниже приведено описание к аргументам скриптов: -

-
-
-
- start -
-
-

- Служба запущена. -

-
-
- stop -
-
-

- Служба остановлена. -

-
-
- restart -
-
-

- Служба остановлена и снова запущена. -

-
-
- reload -
-
-

- Конфигурация сервиса обновлена. Используется после - изменения файла конфигурации службы, когда перезапуск не - требуется. -

-
-
- status -
-
-

- Сообщает, запущена ли служба и с какими ИД процессов. -

-
-
-
-

- Не стесняйтесь изменять работу процесса загрузки (в конце концов, - это ваша собственная система LFS). Приведенные здесь файлы - являются примером того, как это можно сделать. -

-
-
-
-

- 9.6.3. Загрузочные скрипты Udev -

-

- Инит-скрипт /etc/rc.d/init.d/udev - запускает udevd, - который инициализирует все устройства "холодного подключения", - которые уже были созданы ядром, и ожидает выполнения всех правил. - Скрипт также отключает обработчик uevent по умолчанию /sbin/hotplug. Это сделано потому, что ядру - больше не нужно обращаться к внешнему бинарному файлу. Вместо этого - udevd будет - прослушивать сокет netlink на предмет событий, которые вызывает - ядро. -

-

- Инит-скрипт /etc/rc.d/init.d/udev_retry - решает задачу повторного запуска событий для подсистем, правила - которых могут зависеть от файловых систем, которые не монтируются - до запуска скрипта mountfs (в частности, его - вызывают /usr и /var). Этот скрипт запускается после скрипта - mountfs, поэтому эти - правила (при повторном запуске) должны сработать во второй раз. Он - настраивается в файле /etc/sysconfig/udev_retry; любые слова в этом - файле, кроме комментариев, являются именами подсистем, которые - запускаются при повторной попытке. Чтобы найти подсистему - устройства, используйте udevadm info - --attribute-walk <device>, где <device> - - это абсолютный путь в /dev или /sys, такой как /dev/sr0 или - /sys/class/rtc. -

-

- Для получения информации о загрузке модуля ядра и udev смотрите - Раздел 9.3.2.3, «Загрузка - модуля». -

-
-
-

- 9.6.4. Настройка - системного времени -

-

- Скрипт setclock - считывает время с аппаратных часов, также известных как часы BIOS - или CMOS (Complementary Metal Oxide Semiconductor). Если на - аппаратных часах установлено время UTC (всемирное скоординированное - время), этот скрипт преобразует полученное значение в локальное - время, используя файл /etc/localtime - (который сообщает программе hwclock, в какой временной зоне - находится пользователь). Невозможно определить, установленное на - аппаратных часах время UTC или же локальное, поэтому необходимо - указать его вручную. -

-

- Скрипт setclock - запускается системой udev при - загрузке, когда ядро определяет возможности аппаратного - обеспечения. Также его можно запустить вручную с параметром stop, - чтобы сохранить системное время в аппаратные часы CMOS. -

-

- Если Вы не можете вспомнить, установлено на аппаратных часах UTC - или локальное время, запустите команду hwclock --localtime --show. Она - отобразит текущее время в соответствии с аппаратными часами. Если - оно совпадает с тем, что показывают ваши настенные/наручные часы, - значит на часах CMOS установлено локальное время. Если вывод - hwclock не совпадает - с локальным временем, скорее всего, это UTC. Проверьте это, добавив - или вычитая нужное количество часов для вашего часового пояса ко - времени, отображаемому hwclock. Например, если ваш - часовой пояс это MSK, также известный как GMT +0300, то нужно - вычесть три часа из локального времени. -

-

- Измените значение переменной UTC ниже на - 0 (ноль), если на - аппаратных часах установлено НЕ UTC. -

-

- Создайте новый файл /etc/sysconfig/clock выполнив: -

-
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
-

- Хороший совет, объясняющий, как обращаться с временем в LFS, - доступен по адресу - https://mirror.linuxfromscratch.ru/hints/downloads/files/time.txt. - Там объясняются такие вопросы, как часовые пояса, UTC и переменная - окружения TZ. -

-
- [Примечание] -

- Примечание -

-

- Параметры CLOCKPARAMS и UTC также могут быть указаны в файле - /etc/sysconfig/rc.site. -

-
-
-
-

- 9.6.5. - Настройка консоли Linux -

-

- Эта секция описывает настройку скрипта console, который устанавливает - раскладку клавиатуры, шрифт консоли и уровень подробности - информации, выводимой ядром на консоль. Если Вы не планируете - использовать символы, не соответствующие стандарту ASCII (например, - знак копирайта, символы фунта и евро), и собираетесь печатать - только в английской раскладке, то можете пропустить большую часть - секции. Без файла конфигурации (или эквивалентных настроек в - rc.site), скрипт console не будет ничего делать. -

-

- Скрипт console - считывает конфигурацию из файла /etc/sysconfig/console. Решите для себя, какую - раскладку клавиатуры и какой шрифт намерены использовать. В этом - также могут помочь различные HOWTO для конкретных языков; смотрите - https://tldp.org/HOWTO/HOWTO-INDEX/other-lang.html. - Если вы все еще сомневаетесь, посмотрите в каталогах /usr/share/keymaps и /usr/share/consolefonts допустимые раскладки и - экранные шрифты. Прочтите справочные страницы loadkeys(1) и setfont(8), чтобы определить правильные аргументы - для этих программ. -

-

- Файл /etc/sysconfig/console должен - содержать строки вида: ПЕРЕМЕННАЯ="значение". Допустимы следующие - переменные: -

-
-
-
- LOGLEVEL -
-
-

- Эта переменная задает уровень подробности сообщений, - посылаемых ядром на системную консоль. Значение этой - переменной передается в качестве аргумента утилите - dmesg -n. - Допустимы уровни от "1" (нет сообщений) до "8". По умолчанию - "7". -

-
-
- KEYMAP -
-
-

- Эта переменная указывает аргументы для программы loadkeys, обычно это имя - загружаемой раскладки, например, «it». Если эта - переменная не установлена, загрузочный скрипт не будет - запускать программу loadkeys, и будет использоваться - раскладка по умолчанию. Обратите внимание, что некоторые - раскладки имеют несколько версий с одним и тем же именем (cz - и его варианты в qwerty/ и qwertz/, es в olpc/ и qwerty/ и - trf в fgGIod/ и qwerty/). В этих случаях также следует - указать родительский каталог (например, qwerty/es), чтобы - обеспечить загрузку правильной раскладки. -

-
-
- KEYMAP_CORRECTIONS -
-
-

- Эта (крайне редко используемая) переменная задает аргументы - для второго вызова программы loadkeys. Она полезна, если - стандартная раскладка вас не совсем устраивает и необходимо - внести небольшую корректировку. Например, чтобы добавить - символ евро в раскладку, которая его не содержит, присвойте - этой переменной значение «euro2». -

-
-
- FONT -
-
-

- Эта переменная определяет аргументы для программы - setfont. Обычно - она включает в себя имя шрифта «-m» и имя - загружаемой таблицы символов. Например, чтобы загрузить шрифт - «lat1-16» вместе с таблицей символов - «8859-1» (подходит для США), установите - эту переменную в «lat1-16 -m 8859-1». В режиме UTF-8 ядро - использует таблицу символов для преобразования 8-битных кодов - клавиш в UTF-8, поэтому аргумент параметра "-m" должен быть - установлен на кодировку соответствующих кодов клавиш в - раскладке. -

-
-
- UNICODE -
-
-

- Присвойте этой переменной значение «1», «yes» или - «true», - чтобы переключить консоль в режим UTF-8. Это полезно при - использовании локали, основанной на UTF-8, и не рекомендуется - в иных случаях. -

-
-
- LEGACY_CHARSET -
-
-

- Для многих раскладок клавиатуры в пакете Kbd не существует - готового Unicode-варианта. Скрипт console будет на лету - конвертировать имеющуюся раскладку в UTF-8, если присвоить - этой переменной имя доступной не-UTF-8 раскладки. -

-
-
-
-

- Несколько примеров: -

-
-
    -
  • -

    - Для не-Unicode настройки необходимы только переменные KEYMAP - и FONT. Например, для польских пользователей может подойти - такой вариант: -

    -
    cat > /etc/sysconfig/console << "EOF"
    -# Begin /etc/sysconfig/console
    -
    -KEYMAP="pl2"
    -FONT="lat2a-16 -m 8859-2"
    -
    -# End /etc/sysconfig/console
    -EOF
    -
  • -
  • -

    - Как упоминалось выше, иногда бывает необходимо - подкорректировать раскладку. Следующий пример добавляет - символ евро к немецкой раскладке: -

    -
    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
    -
  • -
  • -

    - Ниже приведен пример с поддержкой Unicode для болгарского - языка, где существует стандартная раскладка UTF-8: -

    -
    cat > /etc/sysconfig/console << "EOF"
    -# Begin /etc/sysconfig/console
    -
    -UNICODE="1"
    -KEYMAP="bg_bds-utf8"
    -FONT="LatArCyrHeb-16"
    -
    -# End /etc/sysconfig/console
    -EOF
    -
  • -
  • -

    - Из-за использования 512-символьного шрифта LatArCyrHeb-16 в - предыдущем примере, яркие цвета больше не доступны в консоли - Linux, если используется фреймбуфер. Если Вы хотите - использовать яркие цвета без фреймбуфера и можете обходиться - без символов, не относящихся к вашему языку, тогда можно - использовать специфичный для вашего языка 256-символьный - шрифт, как показано ниже: -

    -
    cat > /etc/sysconfig/console << "EOF"
    -# Begin /etc/sysconfig/console
    -
    -UNICODE="1"
    -KEYMAP="bg_bds-utf8"
    -FONT="cyr-sun16"
    -
    -# End /etc/sysconfig/console
    -EOF
    -
  • -
  • -

    - Следующий пример демонстрирует автоматическое преобразование - раскладки из ISO-8859-15 в UTF-8 и включает "мертвые" клавиши - в режиме Unicode: -

    -
    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
    -
  • -
  • -

    - Некоторые раскладки включают в себя "мертвые" клавиши (то - есть клавиши, нажатие которых само по себе не приводит к - появлению на экране символа, но которые влияют на символ, - генерируемый следующей клавишей) или определяют слияние - символов (например: «нажмите Ctrl+. A E чтобы получить Æ» в - раскладке по умолчанию). Linux-6.4.12 правильно - интерпретирует "мертвые" клавиши и слияния, только когда - исходные символы имеют 8-битные коды. Эта особенность не - влияет на раскладки для европейских языков, поскольку в них - "сливаются" два ASCII-символа или добавляются подчеркивания к - неподчеркнутым ASCII-символам. Однако, в режиме UTF-8 могут - быть проблемы, например, для греческого языка, когда - необходимо подчеркнуть символ «alpha». Решением в - этой ситуации будет отказ от использования UTF-8 или - установка графической системы X Window, не имеющих подобных - ограничений. -

    -
  • -
  • -

    - Для китайского, японского, корейского и некоторых других - языков невозможно настроить консоль Linux так, чтобы она - отображала все необходимые символы. Пользователи, которым - требуются эти языки, должны установить систему X Window, - шрифты, покрывающие необходимый диапазон символов, и - правильный метод ввода (например, SCIM поддерживает большое - число разнообразных языков). -

    -
  • -
-
-
- [Примечание] -

- Примечание -

-

- Файл /etc/sysconfig/console - управляет только локализацией текстовой консоли Linux. Он никак - не влияет на настройки раскладки клавиатуры и шрифтов в системе X - Window, в сессиях SSH или на последовательном терминале. В этих - ситуациях ограничения, описанные в двух расположенных выше - абзацах, не применяются. -

-
-
-
-

- 9.6.6. Создание файлов при загрузке -

-

- Иногда необходимо создавать файлы во время загрузки. Например, - часто требуется каталог /tmp/.ICE-unix . Это можно сделать, создав запись - в скрипте /etc/sysconfig/createfiles. - Формат этого файла описан в комментариях файла конфигурации по - умолчанию. -

-
-
-

- 9.6.7. - Настройка скрипта Sysklogd -

-

- Скрипт sysklogd вызывает программу - syslogd как часть - инициализации System V. Параметр -m - 0 отключает периодическую (по умолчанию - каждые 20 - минут) запись временных меток в файлы журналов, производимую - syslogd. Если Вам - необходимо включить периодическую запись временных меток, - отредактируйте файл /etc/sysconfig/rc.site и присвойте переменной - SYSKLOGD_PARMS требуемое значение. Например, чтобы сбросить все - параметры, присвойте переменной пустое значение: -

-
SYSKLOGD_PARMS=
-

- Дополнительные параметры смотрите в man syslogd. -

-
-
-

- 9.6.8. Файл - rc.site -

-

- Необязательный файл /etc/sysconfig/rc.site содержит настройки, - автоматически применяемые всеми загрузочными скриптами. Этот файл - может содержать парамеры, обычно указываемые в файлах hostname, console и - clock из каталога /etc/sysconfig/. Если значение одной и той же - переменной присваивается, как в одном из этих файлов, так и в - rc.site, приоритет имеет значение из - специализированного файла. -

-

- rc.site также содержит параметры, - которые могут настраивать другие аспекты процесса загрузки. - Установка переменной IPROMPT позволит выборочно запускать - загрузочные скрипты. Другие параметры описаны в комментариях к - файлу. Версия файла по умолчанию выглядит следующим образом: -

-
# 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@lists.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 set 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=
-
-
-
-

- 9.6.8.1. Настройка скриптов загрузки и завершения работы -

-

- Загрузочные скрипты LFS загружают и завершают работу системы - довольно эффективно, но есть несколько настроек, которые вы - можете внести в файл rc.site, чтобы еще больше повысить скорость - и настроить сообщения в соответствии с вашими предпочтениями. - Чтобы сделать это, измените настройки в приведенном выше файле - /etc/sysconfig/rc.site. -

-
-
    -
  • -

    - Во время работы загрузочного скрипта udev происходит вызов udev settle, для - завершения которого требуется некоторое время. Это время - может и не потребоваться в зависимости от конфигурации - устройств в системе. Если у вас имеются только простые - разделы и одна сетевая карта, процессу загрузки, вероятно, - не нужно будет ждать завершения работы этой команды. Чтобы - пропустить её, установите переменную OMIT_UDEV_SETTLE=y. -

    -
  • -
  • -

    - Скрипт загрузки udev_retry - также по умолчанию запускает udev settle. Команда - необходима только тогда, когда каталог /var смонтирован в отдельный раздел. Это - связано с тем, что часам нужен доступ к файлу /var/lib/hwclock/adjtime. Для других - настроек также может потребоваться дождаться завершения - udev, но в большинстве случаев в этом нет необходимости. - Пропустите команду, установив переменную - OMIT_UDEV_RETRY_SETTLE=y. -

    -
  • -
  • -

    - По умолчанию проверка файловой системы выполняется в - "тихом" режиме. Это может показаться задержкой во время - процесса загрузки. Чтобы включить вывод fsck, установите - переменную VERBOSE_FSCK=y. -

    -
  • -
  • -

    - При перезагрузке вы, возможно, захотите полностью - пропустить проверку файловой системы, fsck. Чтобы сделать это, - либо создайте файл /fastboot, - либо перезагрузите систему командой /sbin/shutdown -f -r now. - С другой стороны, вы можете принудительно проверить все - файловые системы, создав /forcefsck или запустив shutdown с параметром - -F вместо - -f. -

    -

    - Установка переменной FASTBOOT=y отключит fsck во время процесса - загрузки до тех пор, пока она не будет удалена. Это не - рекомендуется делать на постоянной основе. -

    -
  • -
  • -

    - Обычно все файлы в каталоге /tmp удаляются во время загрузки. В - зависимости от количества имеющихся файлов или каталогов - это может привести к заметной задержке в процессе загрузки. - Чтобы пропустить удаление этих файлов, установите - переменную SKIPTMPCLEAN=y. -

    -
  • -
  • -

    - Во время завершения работы, init отправляет сигнал - TERM каждой запущенной программе (например, agetty), - ожидает установленное время (по умолчанию 3 секунды), затем - посылает каждому процессу сигнал завершения(KILL) и снова - ждёт. Этот процесс повторяется в сценарии sendsignals для любых - процессов, которые не завершаются их собственными - скриптами. Задержка для init может быть - установлена путем передачи параметра. Например, чтобы - устранить задержку в init, передайте параметр - -t0 при выключении или перезагрузке (например, /sbin/shutdown -t0 -r - now). Задержку для скрипта sendsignals можно - пропустить, установив параметр KILLDELAY=0. -

    -
  • -
-
-
-
-
- - - diff --git a/lfs-12.0-sysv/chapter10/chapter10.html b/lfs-12.0-sysv/chapter10/chapter10.html deleted file mode 100644 index d832222..0000000 --- a/lfs-12.0-sysv/chapter10/chapter10.html +++ /dev/null @@ -1,101 +0,0 @@ - - - - - - Глава 10. Делаем систему LFS загрузочной - - - - - - - - -
-

- 10. Делаем - систему LFS загрузочной -

- -
- - - diff --git a/lfs-12.0-sysv/chapter10/fstab.html b/lfs-12.0-sysv/chapter10/fstab.html deleted file mode 100644 index 0bf2405..0000000 --- a/lfs-12.0-sysv/chapter10/fstab.html +++ /dev/null @@ -1,191 +0,0 @@ - - - - - - 10.2. Создание файла /etc/fstab - - - - - - - - -
-

- 10.2. Создание - файла /etc/fstab -

-

- Файл /etc/fstab используется некоторыми - программами для определения того, какие файловые системы должны - монтироваться по умолчанию, в каком порядке и какие из них должны - быть проверены (на наличие ошибок целостности) перед монтированием. - Создайте новую таблицу файловых систем следующим образом: -

-
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
-tmpfs          /dev/shm     tmpfs    nosuid,nodev        0     0
-cgroup2        /sys/fs/cgroup cgroup2  nosuid,noexec,nodev 0     0
-
-# End /etc/fstab
-EOF
-

- Замените <xxx>, - <yyy>, и <fff> подходящими для системы - значениями, например, sda2, - sda5, и ext4. Для получения подробной информации о - параметрах в этом файле, смотрите man 5 - fstab. -

-

- Файловым системам операционных систем MS DOS и Windows (таким как - vfat, ntfs, smbfs, cifs, iso9660, udf) требуется специальная опция - utf8, чтобы не-ASCII символы в именах файлов интерпретировались - правильно. Для локалей, отличных от UTF-8, значение iocharset должно быть таким же, как набор символов - локали и настроено так, чтобы ядро понимало его. Это будет работать, - если соответствующее определение набора символов (находится в разделе - File systems -> Native Language Support при настройке ядра) было - скомпилировано в ядро или собрано как модуль. Однако, если набор - символов локали — UTF-8, параметр iocharset=utf8 сделает файловую систему - чувствительной к регистру. Чтобы исправить это, используйте - специальную опцию utf8 вместо - iocharset=utf8 для локалей UTF-8. - Параметр «codepage» также необходим для файловых систем - vfat и smbfs. Он должен быть установлен на номер кодовой страницы, - используемый в MS-DOS в вашей стране. Например, для монтирования - флешек пользователь локали ru_RU.KOI8-R должен установить следующие - значения в группе параметров строки монтирования в /etc/fstab: -

-
noauto,user,quiet,showexec,codepage=866,iocharset=koi8r
-

- Соответствующий фрагмент параметров для пользователей ru_RU.UTF-8 - выглядит следующим образом: -

-
noauto,user,quiet,showexec,codepage=866,utf8
-

- Обратите внимание, что iocharset - используется по умолчанию для iso8859-1 - (которая сохраняет файловую систему нечувствительной к регистру), а - параметр utf8 указывает ядру, что нужно - преобразовать имена файлов с использованием UTF-8, чтобы их можно - было интерпретировать в локали UTF-8. -

-

- Также возможно указать значения кодовой страницы по умолчанию и - iocharset для некоторых файловых систем во время настройки ядра. - Соответствующие параметры называются «Default NLS Option» - (CONFIG_NLS_DEFAULT), «Default Remote NLS Option» - (CONFIG_SMB_NLS_DEFAULT), «Default codepage for FAT» - (CONFIG_FAT_DEFAULT_CODEPAGE) и - «Default iocharset for - FAT» (CONFIG_FAT_DEFAULT_IOCHARSET). Нет возможности - указать эти параметры для файловой системы ntfs во время компиляции - ядра. -

-

- Для некоторых типов жестких дисков можно сделать файловую систему - ext3 более устойчивой к сбоям питания. Чтобы сделать это, добавьте - параметр barrier=1 к соответствующей - записи в /etc/fstab. Чтобы проверить, - поддерживает ли диск эту опцию, запустите - hdparm на соответствуюшем разделе. Например, если: -

-
hdparm -I /dev/sda | grep NCQ
-

- возвращает непустой вывод, опция поддерживается. -

-

- Примечание: разделы на основе управления логическими томами (LVM) не - могут использовать параметр barrier. -

-
- - - diff --git a/lfs-12.0-sysv/chapter10/grub.html b/lfs-12.0-sysv/chapter10/grub.html deleted file mode 100644 index c41e3fa..0000000 --- a/lfs-12.0-sysv/chapter10/grub.html +++ /dev/null @@ -1,354 +0,0 @@ - - - - - - 10.4. Использование GRUB для настройки процесса загрузки - - - - - - - - -
-

- 10.4. - Использование GRUB для настройки процесса загрузки -

-
- [Примечание] -

- Примечание -

-

- Если ваша система поддерживает UEFI и вы хотите загрузить LFS с - помощью UEFI, вам следует пропустить инструкции на этой странице, - но все равно изучить синтаксис grub.cfg и способ указания раздела в файле с этой - страницы, а также настроить GRUB с поддержкой UEFI используя - инструкции, приведенные на - странице BLFS. -

-
-
-

- 10.4.1. Введение -

-
- [Предупреждение] -

- Предупреждение -

-

- При неправильной настройке GRUB ваша система перестанет - загружаться без вспомогательно загрузочного CD-ROM или - USB-накопителя. Для загрузки системы LFS этот раздел - необязателен. Вы можете просто использовать существующий - загрузчик, например Grub-Legacy, GRUB2 или LILO. -

-
-

- Убедитесь, что аварийный загрузочный диск готов к «спасению» компьютера, - если он перестанет загружаться. Если у вас еще нет загрузочного - диска, вы можете создать его. Для этого необходимо перейти в раздел - BLFS и установить программу xorriso из пакета - libisoburn. -

-
cd /tmp
-grub-mkrescue --output=grub-img.iso
-xorriso -as cdrecord -v dev=/dev/cdrw blank=as_needed grub-img.iso
-
-
-

- 10.4.2. Соглашения об именовании GRUB -

-

- GRUB использует собственную структуру именования дисков и разделов - в виде (hdn,m), где - n — номер жесткого диска, а - m — номер раздела. Номера - жестких дисков начинаются с нуля, а номера разделов начинаются с - единицы для обычных разделов (с пяти для расширенных разделов). - Обратите внимание, что это отличается от более ранних версий, где - оба номера начинались с нуля. Например, раздел sda1 это (hd0,1) в GRUB, а sdb3 (hd1,3). В отличие от Linux, GRUB не - считает приводы CD-ROM жесткими дисками. Например, если - используемый CD-привода определяется как hdb, а второй жесткий диск как hdc, этот второй жесткий диск все равно будет - (hd1). -

-
-
-

- 10.4.3. Настройка -

-

- GRUB записывает данные на первый физический сектор жесткого диска. - Эта область не является частью какой-либо файловой системы. - Программа в загрузочном разделе имеет доступ к модулям GRUB - расположенным по умолчанию в /boot/grub/. -

-

- Расположение загрузочного раздела - это выбор пользователя, который - влияет на конфигурацию. Одна из рекомендаций заключается в том, - чтобы иметь отдельный небольшой раздел (примерно 200 МБ) - исключительно для загрузочной информации. В этом случае каждая - сборка, будь то LFS или другой дистрибутив, может обращаться к тем - же загрузочным файлам, а доступ может быть получен из любой - загруженной системы. Если вы решите так сделать, вам необходимо - примонтировать отдельный раздел, переместить все файлы из текущего - каталога /boot (например, ядро Linux, - которое вы создали на предыдущем этапе) в новый раздел. Затем нужно - отмонтировать раздел и примонтировать его заново в каталог - /boot. Когда вы это сделаете, - обязательно обновите данные в файле /etc/fstab. -

-

- Оставить /boot на текущем разделе LFS - это тоже рабочее решение, но его настройка для загрузки нескольких - систем сложнее. -

-

- Используя информацию выше, определите соответствующие точки - монтирования для корневого раздела (или загрузочного раздела, если - используется отдельный). В следующем примере предполагается, что - корневым (или отдельным загрузочным) разделом является sda2. -

-

- Установите файлы GRUB в каталог /boot/grub и настройте загрузочный сектор: -

-
- [Предупреждение] -

- Предупреждение -

-

- Следующая команда перезапишет текущий загрузчик. Не выполняйте - эту команду, если это не нужно, например, если вы используете - сторонний менеджер загрузки для управления главной загрузочной - записью (MBR). -

-
-
grub-install /dev/sda
-
- [Примечание] -

- Примечание -

-

- Если система была загружена с использованием UEFI, grub-install попытается - установить файлы для x86_64-efi, но эти файлы не были - установлены в - Глава 8. Если это так, добавьте --target i386-pc к приведенной выше команде. -

-
-
-
-

- 10.4.4. Создание файла - конфигурации GRUB -

-

- Создайте файл /boot/grub/grub.cfg: -

-
cat > /boot/grub/grub.cfg << "EOF"
-# Begin /boot/grub/grub.cfg
-set default=0
-set timeout=5
-
-insmod part_gpt
-insmod ext2
-set root=(hd0,2)
-
-menuentry "GNU/Linux, Linux 6.4.12-lfs-12.0" {
-        linux   /boot/vmlinuz-6.4.12-lfs-12.0 root=/dev/sda2 ro
-}
-EOF
-

- Команды insmod - загружают модули GRUB с именами - part_gpt и ext2. Несмотря на название, ext2 фактически поддерживаются файловые системы - ext2, ext3 и ext4. - Команда grub-install - встроила некоторые модули в основной образ GRUB (установленный в MBR или раздел GRUB - BIOS) для доступа к другим модулям (в /boot/grub/i386-pc), поэтому в стандартной - конфигурации эти два модуля уже встроены и эти две команды - insmod ничего не - будут делать. В любом случае, от них нет никакого вреда, но они - могут понадобиться в некоторых редких конфигурациях. -

-
- [Примечание] -

- Примечание -

-

- С точки зрения GRUB, файлы ядра - относятся к используемому разделу. Если вы используется отдельный - раздел /boot, удалите /boot из приведенной выше строки - linux. Вам также - потребуется изменить строку set - root так, чтобы она указывала на загрузочный раздел. -

-
-
- [Примечание] -

- Примечание -

-

- Наименование раздела для GRUB может измениться, если вы добавили - или удалили некоторые диски (это могут быть как съемные диски, - так и USB-устройства). Изменение может привести к сбою загрузки, - потому что grub.cfg ссылается на - «старые» - указатели. Чтобы не столкнуться с этой проблемой, необходимо - использовать UUID раздела и файловой системы вместо указателя - GRUB для указания устройства. Запустите команду lsblk -o - UUID,PARTUUID,PATH,MOUNTPOINT, чтобы посмотреть - UUID ваших файловых систем (в столбце UUID) и разделов (в столбце PARTUUID). Затем замените set root=(hdx,y) на search - --set=root --fs-uuid <UUID - файловой системы, в которой установлено - ядро>, и замените root=/dev/sda2 на root=PARTUUID=<UUID - раздела, в котором собрана LFS>. -

-

- Обратите внимание, что UUID раздела и UUID файловой системы на - этом разделе это совершенно разные вещи. Некоторые онлайн-ресурсы - могут предлагать вам использовать root=UUID=<UUID - файловой системы> вместо root=PARTUUID=<UUID - раздела>, но для этого требуется initramfs, - которая не рассматривается в LFS. -

-

- Имя узла устройства для раздела в /dev также может измениться (хотя это менее - вероятно, чем изменение указателя GRUB). Вы можете заменить пути - к узлам устройств, таким как /dev/sda1 на PARTUUID=<UUID - раздела>, в /etc/fstab, чтобы избежать потенциального сбоя - загрузки в случае, если имя узла устройства изменилось. -

-
-

- GRUB - чрезвычайно мощная программа, предоставляющая огромное - количество вариантов загрузки с самых разных устройств, работающих - систем и типов разделов. Существует также множество опций - настройки, таких как графические экраны-заставки, воспроизведение - звука, ввод с помощью мыши и т. д., детали этих опций выходят за - рамки этой инструкции. -

-
- [Внимание] -

- Внимание -

-

- Существует команда grub-mkconfig, которая может автоматически - записывать файл конфигурации. Она использует набор скриптов из - каталога /etc/grub.d/ и уничтожит любые сделанные вами настройки. - Эти скрипты предназначены в первую очередь для обычных - дистрибутивов и не рекомендуются для LFS. Если вы устанавливаете - коммерческий дистрибутив Linux, есть вероятность, что эта - программа будет запущена. Обязательно создайте резервную копию - файла grub.cfg. -

-
-
-
- - - diff --git a/lfs-12.0-sysv/chapter10/introduction.html b/lfs-12.0-sysv/chapter10/introduction.html deleted file mode 100644 index 5e04e74..0000000 --- a/lfs-12.0-sysv/chapter10/introduction.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - 10.1. Введение - - - - - - - - -
-

- 10.1. Введение -

-

- Пришло время сделать систему LFS загрузочной. В этой главе - обсуждается создание файла /etc/fstab, - сборка ядра для новой системы и установка загрузчика GRUB, чтобы - система LFS могла быть выбрана для загрузки при запуске. -

-
- - - diff --git a/lfs-12.0-sysv/chapter10/kernel.html b/lfs-12.0-sysv/chapter10/kernel.html deleted file mode 100644 index ed8aeee..0000000 --- a/lfs-12.0-sysv/chapter10/kernel.html +++ /dev/null @@ -1,752 +0,0 @@ - - - - - - 10.3. Linux-6.4.12 - - - - - - - - -
-

- 10.3. - Linux-6.4.12 -

-
-

- Этот пакет содержит ядро Linux. -

-
-
-
- Приблизительное время сборки: - 1.5 - 130.0 SBU (обычно около 12 - SBU) -
-
- Требуемое дисковое - пространство: 1200 - 8800 MB - (обычно около 1700 MB) -
-
-
-
-
-

- 10.3.1. Установка ядра -

-

- Сборка ядра состоит из нескольких этапов—настройка, компиляция и - установка. Ознакомьтесь с файлом README в дереве исходных текстов, чтобы узнать об - альтернативных способах настройки ядра. -

-
- [Важно] -

- Важно -

-

- Сборка ядра Linux в первый раз — одна из самых сложных задач в - LFS. Правильный выбор параметров зависит от конкретного - оборудования для целевой системы и ваших потребностей. Для ядра - доступно почти 12 000 элементов конфигурации, хотя для - большинства компьютеров требуется только около трети из них. - Редакторы LFS рекомендуют пользователям, не знакомым с этим - процессом, внимательно следовать описанным ниже процедурам. - Главная цель сейчас состоит в том, чтобы довести первоначальную - систему до состояния, когда вы сможете войти в систему из - командной строки при последующей перезагрузке в Раздел 11.3, «Перезагрузка - системы». Вопросы оптимизация и кастомизация второстепенны. -

-

- Для получения общей информации о конфигурации ядра смотрите - - https://mirror.linuxfromscratch.ru/hints/downloads/files/kernel-configuration.txt. - Дополнительную информацию о настройке и сборке ядра можно найти - по адресу https://anduin.linuxfromscratch.org/LFS/kernel-nutshell/. - Эти ссылки немного устарели, но все же дают разумное - представление о процессе. -

-

- Если ничего не помогает, вы можете обратиться за помощью в список - рассылки lfs-support. - Обратите внимание, что подписка необходима для того, чтобы - рассылка не содержала спама. -

-
-

- Подготовьте пакет к компиляции, выполнив следующую команду: -

-
make mrproper
-

- Выполнение этой команды гарантирует, что дерево исходников будет - абсолютно чистым. Разработчики ядра рекомендуют запускать эту - команду перед каждой компиляцией. Не следует полагаться на то, что - дерево исходных текстов ядра будет чистым после распаковки. -

-

- Существует несколько способов настройки параметров ядра. Обычно это - делается с помощью псевдографического интерфейса, например так: -

-
make menuconfig
-
-

- Значения необязательных переменных окружения - make: -

-
-
- LANG=<переменная_LANG_хоста> - LC_ALL= -
-
-

- Устанавливает значение локали на то, которое используется на - хосте. Это может понадобиться для правильного отображения - интерфейса menuconfig с помощью ncurses в текстовой консоли - Linux с UTF-8. -

-

- Если это необходимо, обязательно замените значение <переменной_LANG> на - значение переменной $LANG вашего - хоста. В качестве альтернативы вы можете использовать - значения переменных $LC_ALL или - $LC_CTYPE. -

-
-
- make - menuconfig -
-
-

- Эта команда запускает интерфейс на основе ncurses. Для - использования других (графических) интерфейсов, выполните - make help. -

-
-
-
-
- [Примечание] -

- Примечание -

-

- Хорошей отправной точкой для настройки ядра, может стать запуск - команды make - defconfig. В результате её выполнения будет - создана базовая конфигурация с учётом архитектуры системы. -

-

- Обязательно включите/отключите/настройте следующие параметры, - иначе система может работать некорректно или вообще не - загружаться: -

-
General setup --->
-  [ ] Compile the kernel with warnings as errors                        [WERROR]
-  CPU/Task time and stats accounting --->
-    [*] Pressure stall information tracking                                [PSI]
-    [ ]   Require boot parameter to enable pressure stall information tracking
-                                                     ...  [PSI_DEFAULT_DISABLED]
-  < > Enable kernel headers through /sys/kernel/kheaders.tar.xz      [IKHEADERS]
-  [*] Control Group support --->                                       [CGROUPS]
-    [*] Memory controller                                                [MEMCG]
-  [ ] Configure standard kernel features (expert users) --->            [EXPERT]
-
-Processor type and features --->
-  [*] Build a relocatable kernel                                   [RELOCATABLE]
-  [*]   Randomize the address of the kernel image (KASLR)       [RANDOMIZE_BASE]
-
-General architecture-dependent options --->
-  [*] Stack Protector buffer overflow detection                 [STACKPROTECTOR]
-  [*]   Strong Stack Protector                           [STACKPROTECTOR_STRONG]
-
-Device Drivers --->
-  Generic Driver Options --->
-    [ ] Support for uevent helper                                [UEVENT_HELPER]
-    [*] Maintain a devtmpfs filesystem to mount at /dev               [DEVTMPFS]
-    [*]   Automount devtmpfs at /dev, after the kernel mounted the rootfs
-                                                           ...  [DEVTMPFS_MOUNT]
-  Graphics support --->
-    Frame buffer Devices --->
-      <*> Support for frame buffer devices --->                             [FB]
-    Console display driver support --->
-      [*] Framebuffer Console support                      [FRAMEBUFFER_CONSOLE]
-

- Включите некоторые дополнительные функции, если вы собираете - 64-битную систему. Если вы используете menuconfig, включите их в - следующем порядке: сначала CONFIG_PCI_MSI, затем CONFIG_IRQ_REMAP, и, наконец, - CONFIG_X86_X2APIC, потому - что параметр отображается только после выбора его зависимости. -

-
Processor type and features --->
-  [*] Support x2apic                                                [X86_X2APIC]
-
-Device Drivers --->
-  [*] PCI support --->                                                     [PCI]
-    [*] Message Signaled Interrupts (MSI and MSI-X)                    [PCI_MSI]
-  [*] IOMMU Hardware Support --->                                [IOMMU_SUPPORT]
-    [*] Support for Interrupt Remapping                              [IRQ_REMAP]
-

- Если вы создаете 32-разрядную систему, работающую на оборудовании - с объемом оперативной памяти более 4 ГБ, измените конфигурацию - таким образом, чтобы ядро могло использовать до 64 ГБ оперативной - памяти: -

-
Processor type and features --->
-  High Memory Support --->
-    (X) 64GB                                                        [HIGHMEM64G]
-

- Если раздел для системы LFS находится на NVME SSD (то есть узлом - устройства для раздела является /dev/nvme*, а не /dev/sd*), включите параметр NVME support, - иначе система LFS не будет загружается: -

-
Device Drivers --->
-  NVME Support --->
-    <*> NVM Express block device                                  [BLK_DEV_NVME]
-
-

- Есть несколько других параметров, которые могут понадобиться в - зависимости от особенностей системы. Для получения списка - необходимых опций для пакетов BLFS смотрите - Список опций ядра BLFS. -

-
- [Примечание] -

- Примечание -

-

- Если ваша хост поддерживает UEFI и вы хотите загрузить LFS с - помощью него, вам необходимо настроить некоторые параметры ядра, - следуя инструкции - на странице BLFS, даже если вы - будете использовать загрузчик UEFI из основного - дистрибутива. -

-
-
-

- Пояснения для выбранных выше параметров ядра: -

-
-
- Randomize the - address of the kernel image (KASLR) -
-
-

- Включите ASLR для образа ядра, чтобы уменьшить вероятность - некоторых атак, основанных на фиксированных адресах - конфиденциальных данных или кода в ядре. -

-
-
- Compile the - kernel with warnings as errors -
-
-

- Включение этого параметра может привести к сбою сборки, если - компилятор и/или конфигурация отличается от конфигурации ядра - разработчиков. -

-
-
- Enable kernel - headers through /sys/kernel/kheaders.tar.xz -
-
-

- Для сборки ядра с этим параметром необходим пакет - cpio. - cpio не - устанавливается в LFS. -

-
-
- Configure - standard kernel features (expert users) -
-
-

- Эта опция приведет к отображению некоторых параметров в - интерфейсе конфигурации, но изменение этих параметров может - быть опасным. Не используйте её, если вы не знаете, что - делаете. -

-
-
- Strong Stack - Protector -
-
-

- Включите SSP для ядра. Мы включили его для всего - пользовательского пространства с помощью --enable-default-ssp, настроив - GCC, но ядро не использует настройки GCC по умолчанию для - SSP. Мы включаем это явно здесь. -

-
-
- Support for - uevent helper -
-
-

- Включение этого параметра может вызвать сбои при управление - устройствами через Udev. -

-
-
- Maintain a - devtmpfs -
-
-

- С помощью этого параметра узлы устройств создаются - автоматически и заполняются самим ядром, даже без запуска - Udev. Udev будет работать поверх, управляя разрешениями и - добавляя необходимые символические ссылки. Этот элемент - конфигурации необходим всем пользователям Udev. -

-
-
- Automount - devtmpfs at /dev -
-
-

- Этот параметр позволит смонтировать представление ядра - устройств в /dev при переключении на корневую файловую - систему непосредственно перед запуском init. -

-
-
- Framebuffer - Console support -
-
-

- Это параметр необходим для отображения консоли Linux на - устройстве с фреймбуфером. Чтобы ядро могло печатать - отладочные сообщения на ранней стадии загрузки, его не - следует собирать как модуль (если только не будет - использоваться initramfs). И, если CONFIG_DRM (Direct Rendering Manager - - Диспетчер прямого рендеринга) включен, скорее всего, также - должен быть включен CONFIG_DRM_FBDEV_EMULATION (включить - устаревшую поддержку fbdev для вашего modesetting драйвера). -

-
-
- Support - x2apic -
-
-

- Поддержка запуска 64-разрядного контроллера прерываний для - x86 процессоров в режиме x2APIC. x2APIC может быть включен в - BIOS на системах x86 и у ядра собранного без этой опции будет - kernel panic при загрузке. Эта опция не окажет никакого - эффекта, но и не причиняет вреда, если x2APIC отключен в - BIOS. -

-
-
-
-

- В качестве альтернативы, в некоторых ситуациях может быть уместно - использование команды make - oldconfig. Смотрите файл README для получения дополнительной информации. -

-

- По желанию, вы можете пропустить настройку ядра, скопировав - конфигурационный файл ядра .config, - из хост системы(если он доступен) в каталог куда было распаковано - ядро linux-6.4.12. Однако, мы не - рекомендуем этот вариант. Намного лучше изучить все параметры меню - и создать конфигурацию ядра с нуля. -

-

- Скомпилируйте образ ядра и модули: -

-
make
-

- При использовании модулей, могут потребоваться файлы конфигурации, - которые расположены в каталоге /etc/modprobe.d. Информация о модулях и - конфигурации ядра находится в Раздел 9.3, - «Взаимодействие с устройствами и модулями» и в документации к - ядру linux-6.4.12/Documentation. - Кроме этого, стоит ознакомиться с руководством modprobe.d(5). -

-

- Если поддержка модулей не была отключена в параметрах ядра, - установите модули с помощью: -

-
make modules_install
-

- После окончания компиляции, необходимо выполнить еще несколько - шагов для завершения установки ядра. Некоторые файлы должны быть - скопированы в каталог /boot. -

-
- [Внимание] -

- Внимание -

-

- Если вы решили использовать отдельный /boot раздел для системы LFS (возможно, общий - раздел /boot с хост-дистрибутивом), - скопированные ниже файлы должны быть помещены туда. Самый простой - способ сделать это — сначала создать запись для /boot в /etc/fstab (подробности читайте в предыдущем - разделе), затем выполните следующую команду от имени пользователя - root в среде chroot: -

-
mount /boot
-

- Путь к узлу устройства в команде опущен, поскольку mount может прочитать его из - /etc/fstab. -

-
-

- Путь к образу ядра может различаться в зависимости от используемой - платформы. Имя файла, может быть произвольным, но начинаться должно - с vmlinuz для обеспечения - совместимости с автоматической настройкой процесса загрузки, - описанного в следующем разделе. Следующая команда предполагает - архитектуру x86: -

-
cp -iv arch/x86/boot/bzImage /boot/vmlinuz-6.4.12-lfs-12.0
-

- System.map - это символьный файл для - ядра. Он содержит точки входа каждой функции в API ядра, а также - адреса структур данных для запущенного ядро. Он используется в - качестве ресурса при исследовании проблем с ядром. Выполните - следующую команду для установки файла: -

-
cp -iv System.map /boot/System.map-6.4.12
-

- Файл конфигурации ядра .config - создается на шаге make - menuconfig и содержит все параметры ядра, которое - было скомпилировано только что. Рекомендуется сохранить этот файл - на будущее: -

-
cp -iv .config /boot/config-6.4.12
-

- Установите документацию ядра: -

-
cp -r Documentation -T /usr/share/doc/linux-6.4.12
-

- Важно отметить, что файлы в каталоге исходных кодов ядра не - принадлежат пользователю root. Всякий раз, когда пакет - распаковывается от пользователя root (как это и выполнялось внутри среды - chroot), файлы имеют те идентификаторы пользователя и группы, - которые были присвоены при распаковке. Обычно это не вызывает - проблем для других устанавливаемых пакетов, так как каталог с - исходными кодами удаляется после установки пакета. Однако исходный - код ядра Linux часто сохраняется в течение длительного времени. - Из-за этого существует вероятность того, что идентификатор - пользователя, используемый при распаковке, будет назначен другому - пользователю. В таком случае, этот пользователь будет иметь доступ - на запись в этот каталог. -

-
- [Примечание] -

- Примечание -

-

- В ряде случаев требуется обновить конфигурацию ядра для пакетов, - которые будут установлены позже в BLFS. В отличии от других - пакетов, нет необходимости удалять дерево исходного кода ядра - после установки только что собранного ядра. -

-

- Если вы планируете оставить каталог с исходным кодом ядра, - выполните команду chown -R - 0:0 в каталоге linux-6.4.12, чтобы все файлы принадлежали - пользователю root. -

-
-
- [Предупреждение] -

- Предупреждение -

-

- В некоторой документации по ядру рекомендуется создать - символическую ссылку /usr/src/linux - указывающую на каталог с исходниками ядра. Эта рекомендация - относится к ядрам до версии 2.6 и не - должна выполняться в системе LFS, так как это может - вызвать проблемы с пакетами, которые вы, возможно, захотите - собрать, когда ваша базовая система LFS будет готова. -

-
-
- [Предупреждение] -

- Предупреждение -

-

- Заголовочные файлы в системном каталоге include (/usr/include) всегда используются те, которые - применялись при компиляции Glibc, то есть подготовленные - заголовочные файлы, установленные в Раздел 5.4, - «Заголовочные файлы Linux-6.4.12 API». Поэтому их - никогда не следует - заменять на чистые заголовочные файлы ядра или любые другие - подготовленные заголовочные файлы. -

-
-
-
-

- 10.3.2. Настройка - порядка загрузки модулей Linux -

-

- В большинстве случаев модули Linux загружаются автоматически, но - иногда требуется определенный порядок. Программа, которая загружает - модули, modprobe или - insmod, использует - файл /etc/modprobe.d/usb.conf как раз - для этой цели. Этот файл должен быть заполнен таким образом, что - если USB-драйверы (ehci_hcd, ohci_hcd и uhci_hcd) были собраны в - виде модулей, то они будут загружены в правильном порядке; ehci_hcd - должен быть загружен до ohci_hcd и uhci_hcd для того, чтобы - избежать предупреждений во время загрузки. -

-

- Создайте новый файл /etc/modprobe.d/usb.conf, выполнив следующую - команду: -

-
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
-
-
-

- 10.3.3. - Содержимое пакета Linux -

-
-
-
- Установленные файлы: - config-6.4.12, vmlinuz-6.4.12-lfs-12.0, и - System.map-6.4.12 -
-
- Созданные каталоги: - /lib/modules, - /usr/share/doc/linux-6.4.12 -
-
-
-
-

- Краткое описание -

- - - - - - - - - - - - - - - - - - - -
-

- config-6.4.12 -

-
-

- Содержит в себе все параметры конфигурации ядра -

-
-

- vmlinuz-6.4.12-lfs-12.0 -

-
-

- Ядро системы Linux. При включении компьютера ядро — это - первая загружаемая часть операционной системы. Оно - обнаруживает и инициализирует все компоненты аппаратного - обеспечения компьютера, делает их доступными в виде - дерева каталогов с файлами для доступа к ним программ и - превращает один процессор в мультизадачную машину, - способную выполнять множество программ как будто - одновременно. -

-
-

- System.map-6.4.12 -

-
-

- Список адресов и символов; файл содержит точки входа и - адреса всех функций и структур данных в ядре -

-
-
-
-
- - - diff --git a/lfs-12.0-sysv/chapter11/afterlfs.html b/lfs-12.0-sysv/chapter11/afterlfs.html deleted file mode 100644 index 77421b1..0000000 --- a/lfs-12.0-sysv/chapter11/afterlfs.html +++ /dev/null @@ -1,332 +0,0 @@ - - - - - - 11.5. Начало работы после сборки LFS - - - - - - - - -
-

- 11.5. Начало работы после сборки - LFS -

-
-

- 11.5.1. Что делать дальше? -

-

- Теперь, когда LFS собрана и у вас есть загружаемая система, - необходимо решить, что же делать дальше? Следующий шаг - - определиться, как использовать систему. Как правило, следует - учитывать две широкие категории: рабочая станция или сервер. - Действительно, эти категории не являются взаимоисключающими. - Приложения, необходимые для каждой категории, можно объединить в - одну систему, но пока давайте рассмотрим их по отдельности. -

-

- Сервер — более простая категория. Как правило, это веб-сервер, - такой как - Apache, и сервер баз данных, например, - MariaDB. Однако возможны и другие варианты. К этой же категории - относятся операционные системы для встраиваемых устройств. -

-

- Рабочая станция же, гораздо сложнее. Обычно для нее требуется среда - рабочего стола, например, LXDE, - XFCE, - KDE, - или - Gnome основанные на базовом - графическом окружении и набор графических приложений, таких как - - веб-браузер Firefox, - почтовый клиент Thunderbird, или - пакет офисных приложений LibreOffice. Для этих приложений - требуется множество (может быть несколько сотен, в зависимости от - ваших потребностей) пакетов вспомогательных приложений и библиотек. -

-

- В дополнение к вышесказанному, существует набор приложений для - управления системой. Все эти приложения есть в справочнике BLFS, но - не все пакеты необходимы в каждом конкретном окружении. Например - - клиент dhcpcd, обычно не требуется на серверах или - управление параметрами беспроводных сетей - полезно только для - ноутбуков и других портативных систем. -

-
-
-

- 11.5.2. Работа в базовой среде LFS -

-

- Когда вы впервые загружаетесь в LFS, у вас есть все необходимые - инструменты для сборки дополнительных пакетов. К сожалению, набор - программ пользовательского окружения довольно скудный. Есть - несколько способов исправить это: -

-
-

- 11.5.2.1. Работа с хоста LFS в chroot -

-

- Этот метод обеспечивает полноценную графическую среду, в которой - доступен полнофункциональный браузер и возможности - копирования/вставки. Также он позволяет использовать приложения - хоста, такие как wget, для загрузки исходных текстов пакетов в - каталог, доступный при работе в среде chroot. -

-

- Чтобы правильно собрать пакеты в chroot, вам необходимо не забыть - смонтировать виртуальные файловые системы, если они еще не - смонтированы. Один из способов сделать это — создать скрипт в - ХОСТОВОЙ системе: -

-
cat > ~/mount-virt.sh << "EOF"
-#!/bin/bash
-
-function mountbind
-{
-   if ! mountpoint $LFS/$1 >/dev/null; then
-     $SUDO mount --bind /$1 $LFS/$1
-     echo $LFS/$1 mounted
-   else
-     echo $LFS/$1 already mounted
-   fi
-}
-
-function mounttype
-{
-   if ! mountpoint $LFS/$1 >/dev/null; then
-     $SUDO mount -t $2 $3 $4 $5 $LFS/$1
-     echo $LFS/$1 mounted
-   else
-     echo $LFS/$1 already mounted
-   fi
-}
-
-if [ $EUID -ne 0 ]; then
-  SUDO=sudo
-else
-  SUDO=""
-fi
-
-if [ x$LFS == x ]; then
-  echo "LFS not set"
-  exit 1
-fi
-
-mountbind dev
-mounttype dev/pts devpts devpts -o gid=5,mode=620
-mounttype proc    proc   proc
-mounttype sys     sysfs  sysfs
-mounttype run     tmpfs  run
-if [ -h $LFS/dev/shm ]; then
-  mkdir -pv $LFS/$(readlink $LFS/dev/shm)
-else
-  mounttype dev/shm tmpfs tmpfs -o nosuid,nodev
-fi 
-
-#mountbind usr/src
-#mountbind boot
-#mountbind home
-EOF
-

- Обратите внимание, что последние три команды в скрипте - закомментированы. Они пригодятся, если эти каталоги монтируются - как отдельные разделы в хост-системе и будут монтироваться при - загрузке завершенной системы LFS/BLFS. -

-

- Скрипт можно запустить с помощью bash ~/mount-virt.sh либо от - имени обычного пользователя (рекомендуется), либо от имени - root. При запуске от имени - обычного пользователя в хост-системе требуется sudo. -

-

- Еще одна проблема, на которую указывает скрипт, заключается в - том, где хранить загруженные файлы пакетов. Это местоположение - является произвольным. Оно может находиться в домашнем каталоге - обычного пользователя, таком как ~/sources, или в глобальном - каталоге /usr/src. Наша рекомендация - не смешивать источники - BLFS и источники LFS в (из среды chroot) /sources. В любом - случае, пакеты должны быть доступны внутри среды chroot. -

-

- Последняя удобная функция, представленная здесь, предназначена - для упрощения процесса входа в среду chroot. Это можно сделать с - помощью псевдонима, помещенного в пользовательский файл ~/.bashrc - в хост-системе: -

-
alias lfs='sudo /usr/sbin/chroot /mnt/lfs /usr/bin/env -i HOME=/root TERM="$TERM" PS1="\u:\w\\\\$ "
-PATH=/bin:/usr/bin:/sbin:/usr/sbin /bin/bash --login'
-

- Этот псевдоним немного сложен для восприятия из-за кавычек и - слэшей. Всё это должно быть в одной строке. Вышеуказанная команда - была разделена на две части для презентационных целей. -

-
-
-

- 11.5.2.2. Работа удаленно по ssh -

-

- Этот метод также предоставляет полноценную графическую среду, но - сначала требует установки - sshd и - wget в системе LFS, обычно в chroot. Кроме этого потребуется - второй компьютер. Преимущество этого метода в том, что он прост, - поскольку не требует сложной среды chroot. Он также использует - собранное вами ядро LFS для всех дополнительных пакетов и - по-прежнему предоставляет полную систему для установки пакетов. -

-
-
-

- 11.5.2.3. Работа из командной строки LFS -

-

- Этот метот требует установки - libtasn1, - p11-kit, - make-ca, - wget, - gpm и - links (или - lynx) в chroot, а затем перезагрузки в новую систему LFS. На - данный момент система по умолчанию имеет шесть виртуальных - консолей. Переключать консоли так же просто, как использовать - комбинации клавиш Alt+Fx , где Fx это клавиши от F1 до F6. Комбинации Alt+ и Alt+ также переключают консоль. -

-

- На этом этапе вы можете войти в две разные виртуальные консоли и - запустить браузер links или lynx в одной консоли и bash в другой. - GPM позволяет копировать команды из браузера с помощью левой - кнопки мыши, переключать консоли и вставлять их в другую консоль. -

-
- [Примечание] -

- Примечание -

-

- Вместо примечания: переключение виртуальных консолей также - может быть выполнено из экземпляра X Window с помощью - комбинации клавиш Ctrl+Alt+Fx ,но операция копирования - мышью не работает между графическим интерфейсом и виртуальной - консолью. Вы можете вернуться к дисплею X Window с помощью - комбинации Ctrl+Alt+Fx ,где Fx обычно F1, но может быть F7. -

-
-
-
-
- - - diff --git a/lfs-12.0-sysv/chapter11/chapter11.html b/lfs-12.0-sysv/chapter11/chapter11.html deleted file mode 100644 index eabd06c..0000000 --- a/lfs-12.0-sysv/chapter11/chapter11.html +++ /dev/null @@ -1,101 +0,0 @@ - - - - - - Глава 11. Заключение - - - - - - - - -
-

- 11. - Заключение -

- -
- - - diff --git a/lfs-12.0-sysv/chapter11/getcounted.html b/lfs-12.0-sysv/chapter11/getcounted.html deleted file mode 100644 index 8f2df28..0000000 --- a/lfs-12.0-sysv/chapter11/getcounted.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - 11.2. Вступите в ряды пользователей LFS - - - - - - - - -
-

- 11.2. - Вступите в ряды пользователей LFS -

-

- Теперь, когда вы закончили изучение книги LFS, хотите добавить себя в - список пользователей LFS? Перейдите по ссылке https://www.linuxfromscratch.org/cgi-bin/lfscounter.php - и зарегистрируйтесь. Введите ваше имя и версию LFS, которую вы - использовали. -

-

- Давайте выполним перезагрузку в систему LFS. -

-
- - - diff --git a/lfs-12.0-sysv/chapter11/reboot.html b/lfs-12.0-sysv/chapter11/reboot.html deleted file mode 100644 index ce06b43..0000000 --- a/lfs-12.0-sysv/chapter11/reboot.html +++ /dev/null @@ -1,217 +0,0 @@ - - - - - - 11.3. Перезагрузка системы - - - - - - - - -
-

- 11.3. - Перезагрузка системы -

-

- Теперь, когда все программное обеспечение установлено, пришло время - перезагрузить ваш компьютер. Однако есть несколько вещей, которые - нужно проверить. Вот некоторые предложения: -

-
-
    -
  • -

    - Установить - прошивки, если они необходимы для правильной работы вашего - оборудования. -

    -
  • -
  • -

    - Убедитесь, что установлен пароль для пользователя root. -

    -
  • -
  • -

    - На данном этапе также уместно ознакомиться со следующими - конфигурационными файлами. -

    -
    -
      -
    • -

      - /etc/bashrc -

      -
    • -
    • -

      - /etc/dircolors -

      -
    • -
    • -

      - /etc/fstab -

      -
    • -
    • -

      - /etc/hosts -

      -
    • -
    • -

      - /etc/inputrc -

      -
    • -
    • -

      - /etc/profile -

      -
    • -
    • -

      - /etc/resolv.conf -

      -
    • -
    • -

      - /etc/vimrc -

      -
    • -
    • -

      - /root/.bash_profile -

      -
    • -
    • -

      - /root/.bashrc -

      -
    • -
    • -

      - /etc/sysconfig/ifconfig.eth0 -

      -
    • -
    -
    -
  • -
-
-

- Теперь, после всего, давайте перейдём к первой загрузке нашей новой - системы LFS. Для начала, выйдем из chroot-окружения: -

-
logout
-

- Затем размонтируйте виртуальные файловые системы: -

-
umount -v $LFS/dev/pts
-mountpoint -q $LFS/dev/shm && umount $LFS/dev/shm
-umount -v $LFS/dev
-umount -v $LFS/run
-umount -v $LFS/proc
-umount -v $LFS/sys
-

- Если было создано несколько разделов, размонтируйте их перед - размонтированием основного, вот так: -

-
umount -v $LFS/home
-umount -v $LFS/usr
-

- Размонтируйте саму файловую систему LFS: -

-
umount -v $LFS
-

- Теперь, выполните перезагрузку системы. -

-

- Предполагается, что загрузчик GRUB был настроен ранее, поэтому пункт - меню LFS 12.0 будет загружен - автоматически. -

-

- После завершения перезагрузки, система LFS будет готова к - использованию. Вы увидите простую подсказку «login: ». На этом этапе вы - можете перейти к книге BLFS, - где вы установите дополнительное программное обеспечение в - соответствии с вашими потребностями. -

-

- Если перезагрузка завершилась неудачей, самое время устранить эти - неполадки. Советы по решению проблем с начальной загрузкой, смотрите - на странице https://www.linuxfromscratch.org/lfs/troubleshooting.html. -

-
- - - diff --git a/lfs-12.0-sysv/chapter11/theend.html b/lfs-12.0-sysv/chapter11/theend.html deleted file mode 100644 index 1b46506..0000000 --- a/lfs-12.0-sysv/chapter11/theend.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - - - 11.1. Заключение - - - - - - - - -
-

- 11.1. Заключение -

-

- Отлично! Новая система LFS установлена! Желаем успехов в работе с - вашей новой, блестящей, самостоятельно собранной Linux системой. -

-

- Может быть хорошей идеей создать файл /etc/lfs-release. Имея этот файл, вам (и нам, если - вам в какой-то момент понадобится обратиться за помощью) будет проще - узнать, какая версия LFS установлена в системе. Создайте этот файл, - выполнив следующую команду: -

-
echo 12.0 > /etc/lfs-release
-

- Следующие два файла, содержащие описание установленной системы, могут - использоваться пакетами, устанавливаемыми позже, либо в бинарном - виде, либо путем их сборки. -

-

- Первый показывает статус вашей новой системы по отношению к стандарту - LSB. Чтобы создать этот файл, выполните: -

-
cat > /etc/lsb-release << "EOF"
-DISTRIB_ID="Linux From Scratch"
-DISTRIB_RELEASE="12.0"
-DISTRIB_CODENAME="<your name here>"
-DISTRIB_DESCRIPTION="Linux From Scratch"
-EOF
-

- Второй содержит примерно ту же информацию и используется systemd и - некоторыми графическими средами рабочего стола. Чтобы создать этот - файл, выполните: -

-
cat > /etc/os-release << "EOF"
-NAME="Linux From Scratch"
-VERSION="12.0"
-ID=lfs
-PRETTY_NAME="Linux From Scratch 12.0"
-VERSION_CODENAME="<your name here>"
-EOF
-

- Обязательно настройте значения 'DISTRIB_CODENAME' и - 'VERSION_CODENAME', чтобы сделать название вашей новой системы - уникальным. -

-
- - - diff --git a/lfs-12.0-sysv/chapter11/whatnow.html b/lfs-12.0-sysv/chapter11/whatnow.html deleted file mode 100644 index 7401413..0000000 --- a/lfs-12.0-sysv/chapter11/whatnow.html +++ /dev/null @@ -1,171 +0,0 @@ - - - - - - 11.4. Дополнительные ресурсы - - - - - - - - -
-

- 11.4. - Дополнительные ресурсы -

-

- Благодарим за прочтение книги LFS. Мы надеемся, что эта книга была - полезна и вы узнали больше о процессе создания системы с нуля. -

-

- Теперь, когда система LFS установлена, вы можете задаться вопросом - «Что дальше?» - Чтобы ответить на этот вопрос, мы составили для вас список ресурсов. -

-
-
    -
  • -

    - Обслуживание -

    -

    - Для всего программного обеспечения регулярно появляются - сообщения об ошибках и уведомления безопасности. Поскольку - система LFS компилируется из исходного кода, вы должны быть в - курсе таких отчетов. Существует несколько онлайн-ресурсов, - которые отслеживают такие отчеты, некоторые из них приведены - ниже: -

    -
    - -
    -
  • -
  • -

    - Советы LFS -

    -

    - Советы LFS представляют собой коллекцию обучающих материалов, - собранную добровольцами сообщества LFS. Советы доступны по - адресу https://mirror.linuxfromscratch.ru/hints/downloads/files/. -

    -
  • -
  • -

    - Списки рассылки -

    -

    - Существует несколько списков рассылки LFS, на которые вы можете - подписаться, если нуждаетесь в помощи, хотите быть в курсе - последних событий, хотите внести свой вклад в проект и многое - другое. Посетите Глава 1 - Списки рассылки для - получения дополнительной информации. -

    -
  • -
  • -

    - Проект документации по Linux (TLDP) -

    -

    - Целью проекта TLDP является сотрудничество по всем вопросам - связанным с документацией по Linux. TLDP содержит большую - коллекцию инструкций, руководств и справочных страниц. Она - расположена по адресу https://tldp.org/. -

    -
  • -
-
-
- - - diff --git a/lfs-12.0-sysv/images/caution.png b/lfs-12.0-sysv/images/caution.png deleted file mode 100644 index 5b7809c..0000000 Binary files a/lfs-12.0-sysv/images/caution.png and /dev/null differ diff --git a/lfs-12.0-sysv/images/chevron-bottom.png b/lfs-12.0-sysv/images/chevron-bottom.png deleted file mode 100644 index a1a3bce..0000000 Binary files a/lfs-12.0-sysv/images/chevron-bottom.png and /dev/null differ diff --git a/lfs-12.0-sysv/images/chevron-left.png b/lfs-12.0-sysv/images/chevron-left.png deleted file mode 100644 index f16a3ab..0000000 Binary files a/lfs-12.0-sysv/images/chevron-left.png and /dev/null differ diff --git a/lfs-12.0-sysv/images/chevron-right.png b/lfs-12.0-sysv/images/chevron-right.png deleted file mode 100644 index b8d9362..0000000 Binary files a/lfs-12.0-sysv/images/chevron-right.png and /dev/null differ diff --git a/lfs-12.0-sysv/images/chevron-top.png b/lfs-12.0-sysv/images/chevron-top.png deleted file mode 100644 index d9c01ba..0000000 Binary files a/lfs-12.0-sysv/images/chevron-top.png and /dev/null differ diff --git a/lfs-12.0-sysv/images/grid-three-up.png b/lfs-12.0-sysv/images/grid-three-up.png deleted file mode 100644 index c3f70a2..0000000 Binary files a/lfs-12.0-sysv/images/grid-three-up.png and /dev/null differ diff --git a/lfs-12.0-sysv/images/important.png b/lfs-12.0-sysv/images/important.png deleted file mode 100644 index 12c90f6..0000000 Binary files a/lfs-12.0-sysv/images/important.png and /dev/null differ diff --git a/lfs-12.0-sysv/images/menu.png b/lfs-12.0-sysv/images/menu.png deleted file mode 100644 index 6de4e43..0000000 Binary files a/lfs-12.0-sysv/images/menu.png and /dev/null differ diff --git a/lfs-12.0-sysv/images/note.png b/lfs-12.0-sysv/images/note.png deleted file mode 100644 index f14464d..0000000 Binary files a/lfs-12.0-sysv/images/note.png and /dev/null differ diff --git a/lfs-12.0-sysv/images/tip.png b/lfs-12.0-sysv/images/tip.png deleted file mode 100644 index 5c4aab3..0000000 Binary files a/lfs-12.0-sysv/images/tip.png and /dev/null differ diff --git a/lfs-12.0-sysv/images/tux.png b/lfs-12.0-sysv/images/tux.png deleted file mode 100644 index 8aae132..0000000 Binary files a/lfs-12.0-sysv/images/tux.png and /dev/null differ diff --git a/lfs-12.0-sysv/images/warning.png b/lfs-12.0-sysv/images/warning.png deleted file mode 100644 index 1c33db8..0000000 Binary files a/lfs-12.0-sysv/images/warning.png and /dev/null differ diff --git a/lfs-12.0-sysv/index.html b/lfs-12.0-sysv/index.html deleted file mode 100644 index a46072e..0000000 --- a/lfs-12.0-sysv/index.html +++ /dev/null @@ -1,916 +0,0 @@ - - - - - - Линукс с нуля - - - - - - - -
-
-
-
-

- Линукс с нуля -

-
-
-

- Версия 12.0 -

-
-
-

- Дата публикации 2 сентября 2023 -

-
-
-
-
-

- Создатель: Gerard - Beekmans -

-
-
-

- Главный редактор: Bruce - Dubbs -

-
-
-

- Автор перевода: Владимир - Перцев -

-
-
-
-
- -
-
-
-
-
-

- Содержание -

- -
-
- - - diff --git a/lfs-12.0-sysv/legalnotice.html b/lfs-12.0-sysv/legalnotice.html deleted file mode 100644 index d4442d8..0000000 --- a/lfs-12.0-sysv/legalnotice.html +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - Юридическое уведомление - - - - - - - -
-

- Все права защищены. -

-

- Эта книга распространяется на условиях Лицензия Creative Commons. -

-

- Инструкции для компьютера могут быть извлечены из книги на условиях - Лицензия MIT. -

-

- Linux® является зарегистрированным - товарным знаком Линуса Торвальдса. -

-
- - - diff --git a/lfs-12.0-sysv/longindex.html b/lfs-12.0-sysv/longindex.html deleted file mode 100644 index c45180e..0000000 --- a/lfs-12.0-sysv/longindex.html +++ /dev/null @@ -1,5717 +0,0 @@ - - - - - Предметный указатель - - - - - - - - -
-
-
-
-

- Предметный указатель -

-
-
-
-
-

- Пакеты -

- -

- Программы -

- -

- Библиотеки -

- -

- Скрипты -

- -

- Разное -

- -
-
- - - diff --git a/lfs-12.0-sysv/md5sums b/lfs-12.0-sysv/md5sums deleted file mode 100644 index 2243507..0000000 --- a/lfs-12.0-sysv/md5sums +++ /dev/null @@ -1,93 +0,0 @@ -95ce715fe09acca7c12d3306d0f076b2 acl-2.3.1.tar.xz -ac1c5a7a084f0f83b8cace34211f64d8 attr-2.5.1.tar.gz -12cfa1687ffa2606337efe1a64416106 autoconf-2.71.tar.xz -4017e96f89fca45ca946f1c5db6be714 automake-1.16.5.tar.xz -4281bb43497f3905a308430a8d6a30a5 bash-5.2.15.tar.gz -a148cbaaf8ff813b7289a00539e74a5f bc-6.6.0.tar.xz -256d7e0ad998e423030c84483a7c1e30 binutils-2.41.tar.xz -c28f119f405a2304ff0a7ccdcc629713 bison-3.8.2.tar.xz -67e051268d0c475ea773822f7500d0e5 bzip2-1.0.8.tar.gz -50fcafcecde5a380415b12e9c574e0b2 check-0.15.2.tar.gz -040b4b7acaf89499834bfc79609af29f coreutils-9.3.tar.xz -68c5208c58236eba447d7d6d1326b821 dejagnu-1.6.3.tar.gz -2745c50f6f4e395e7b7d52f902d075bf diffutils-3.10.tar.xz -6b4f18a33873623041857b4963641ee9 e2fsprogs-1.47.0.tar.gz -5cfaa711a90cb670406cd495aeaa6030 elfutils-0.189.tar.bz2 -ac6677b6d1b95d209ab697ce8b688704 expat-2.5.0.tar.xz -00fce8de158422f5ccd2666512329bd2 expect5.45.4.tar.gz -26b2a96d4e3a8938827a1e572afd527a file-5.45.tar.gz -4a4a547e888a944b2f3af31d789a1137 findutils-4.9.0.tar.xz -2882e3179748cc9f9c23ec593d6adc8d flex-2.6.4.tar.gz -3bc52f1952b9a78361114147da63c35b flit_core-3.9.0.tar.gz -d63b4de2c722cbd9b8cc8e6f14d78a1e gawk-5.2.2.tar.xz -e0e48554cc6e4f261d55ddee9ab69075 gcc-13.2.0.tar.xz -8551961e36bf8c70b7500d255d3658ec gdbm-1.23.tar.gz -db2f3daf34fd5b85ab1a56f9033e42d1 gettext-0.22.tar.xz -778cce0ea6bf7f84ca8caacf4a01f45b glibc-2.38.tar.xz -956dc04e864001a9c22429f761f2c283 gmp-6.3.0.tar.xz -9e251c0a618ad0824b51117d5d9db87e gperf-3.1.tar.gz -7c9bbd74492131245f7cdb291fa142c0 grep-3.11.tar.xz -5e4f40315a22bb8a158748e7d5094c7d groff-1.23.0.tar.gz -cf0fd928b1e5479c8108ee52cb114363 grub-2.06.tar.xz -9608e4ac5f061b2a6479dc44e917a5db gzip-1.12.tar.xz -0502bd41cc0bf1c1c3cd8651058b9650 iana-etc-20230810.tar.gz -319d65bb5a6f1847c4810651f3b4ba74 inetutils-2.4.tar.xz -12e517cac2b57a0121cda351570f1e63 intltool-0.51.0.tar.gz -90ce0eb84a8f1e2b14ffa77e8eb3f5ed iproute2-6.4.0.tar.xz -d31148abd89c1df1cdb077a55db27d02 Jinja2-3.1.2.tar.gz -986241b5d94c6bd4ed2f6d2a5ab4320b kbd-2.6.1.tar.xz -85202f0740a75eb52f2163c776f9b564 kmod-30.tar.xz -cf05e2546a3729492b944b4874dd43dd less-643.tar.gz -fea080e8be5d0c18095c81bdb9128f5b lfs-bootscripts-20230728.tar.xz -4667bacb837f9ac4adb4a1a0266f4b65 libcap-2.69.tar.xz -0da1a5ed7786ac12dcbaf0d499d8a049 libffi-3.4.4.tar.gz -1a48b5771b9f6c790fb4efdb1ac71342 libpipeline-1.5.7.tar.gz -2fc0b6ddcd66a89ed6e45db28fa44232 libtool-2.4.7.tar.xz -b84cd4104e08c975063ec6c4d0372446 libxcrypt-4.4.36.tar.xz -24570ba0ef9dd592bd640a1a41686fac linux-6.4.12.tar.xz -0d90823e1426f1da2fd872df0311298d m4-1.4.19.tar.xz -c8469a3713cbbe04d955d4ae4be23eeb make-4.4.1.tar.gz -a7d59fb2df6158c44f8f7009dcc6d875 man-db-2.11.2.tar.xz -de4563b797cf9b1e0b0d73628b35e442 man-pages-6.05.01.tar.xz -ca33f119bd0551ce15837f58bb180214 MarkupSafe-2.1.3.tar.gz -e3cc846536189aacd7d01858a45ca9af meson-1.2.1.tar.gz -5c9bc658c9fd0f940e8e3e0f09530c62 mpc-1.3.1.tar.gz -a25091f337f25830c16d2054d74b5af7 mpfr-4.2.0.tar.xz -5a62487b5d4ac6b132fe2bf9f8fad29b ncurses-6.4.tar.gz -32151c08211d7ca3c1d832064f6939b0 ninja-1.11.1.tar.gz -1d7861f969505e67b8677e205afd9ff4 openssl-3.1.2.tar.gz -78ad9937e4caadcba1526ef1853730d5 patch-2.7.6.tar.xz -e1c8aaec897dd386c741f97eef9f2e87 perl-5.38.0.tar.xz -efc1318f368bb592aba6ebb18d9ff254 pkgconf-2.0.1.tar.xz -22b287bcd758831cbaf3356cd3054fe7 procps-ng-4.0.3.tar.xz -ed3206da1184ce9e82d607dc56c52633 psmisc-23.6.tar.xz -fb7f7eae520285788449d569e45b6718 Python-3.11.4.tar.xz -cdce7b1189bcf52947f3b434ab04d7e2 python-3.11.4-docs-html.tar.bz2 -4aa1b31be779e6b84f9a96cb66bc50f6 readline-8.2.tar.gz -6aac9b2dbafcd5b7a67a8a9bcb8036c3 sed-4.9.tar.xz -b1ab01b5462ddcf43588374d57bec123 shadow-4.13.tar.xz -c70599ab0d037fde724f7210c2c8d7f8 sysklogd-1.5.1.tar.gz -0d266e5361dc72097b6c18cfde1c0001 systemd-254.tar.gz -fc32faeac581e1890ca27fcea3858410 systemd-man-pages-254.tar.xz -190398c660af29c97d892126d2a95e28 sysvinit-3.07.tar.xz -a2d8042658cfd8ea939e6d911eaf4152 tar-1.35.tar.xz -0e4358aade2f5db8a8b6f2f6d9481ec2 tcl8.6.13-src.tar.gz -4452f2f6d557f5598cca17b786d6eb68 tcl8.6.13-html.tar.gz -37bf94fd255729a14d4ea3dda119f81a texinfo-7.0.3.tar.xz -5aa672bf129b44dd915f8232de38e49a tzdata2023c.tar.gz -acd4360d8a5c3ef320b9db88d275dae6 udev-lfs-20230818.tar.xz -c542cd7c0726254e4b3006a9b428201a util-linux-2.39.1.tar.xz -65e6b09ef0628a2d8eba79f1d1d5a564 vim-9.0.1677.tar.gz -181cb3f4d8ed340c904a0e1c416d341d wheel-0.41.1.tar.gz -80bb18a8e6240fcf7ec2f7b57601c170 XML-Parser-2.46.tar.gz -d83d6f64a64f88759e312b8a38c3add6 xz-5.4.4.tar.xz -7d9fc1d78ae2fa3e84fe98b77d006c63 zlib-1.2.13.tar.xz -63251602329a106220e0a5ad26ba656f zstd-1.5.5.tar.gz -6a5ac7e89b791aae556de0f745916f7f bzip2-1.0.8-install_docs-1.patch -3c6340b3ddd62f4acdf8d3caa6fad6b0 coreutils-9.3-i18n-1.patch -2c3552bded42a83ad6a7087c5fbf3857 glibc-2.38-memalign_fix-1.patch -9a5997c3452909b1769918c759eff8a2 glibc-2.38-fhs-1.patch -da388905710bb4cbfbc7bd7346ff9174 grub-2.06-upstream_fixes-1.patch -f75cca16a38da6caa7d52151f7136895 kbd-2.6.1-backspace-1.patch -dd1764b84cfca6b677f44978218a75da readline-8.2-upstream_fix-1.patch -17ffccbb8e18c39e8cedc32046f3a475 sysvinit-3.07-consolidated-1.patch diff --git a/lfs-12.0-sysv/part1.html b/lfs-12.0-sysv/part1.html deleted file mode 100644 index 6ec88e4..0000000 --- a/lfs-12.0-sysv/part1.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - Часть I. Введение - - - - - - - - -
-

- I. Введение -

- -
- - - diff --git a/lfs-12.0-sysv/part2.html b/lfs-12.0-sysv/part2.html deleted file mode 100644 index 0bf1df3..0000000 --- a/lfs-12.0-sysv/part2.html +++ /dev/null @@ -1,158 +0,0 @@ - - - - - - Часть II. Подготовка к сборке - - - - - - - - -
-

- II. Подготовка к сборке -

- -
- - - diff --git a/lfs-12.0-sysv/part3.html b/lfs-12.0-sysv/part3.html deleted file mode 100644 index 1035eb4..0000000 --- a/lfs-12.0-sysv/part3.html +++ /dev/null @@ -1,240 +0,0 @@ - - - - - - Часть III. Сборка кросс-компилятора и набора временных - инструментов - - - - - - - - -
-

- III. Сборка кросс-компилятора и набора - временных инструментов -

-
-

- Содержание -

- -
-
- - - diff --git a/lfs-12.0-sysv/part4.html b/lfs-12.0-sysv/part4.html deleted file mode 100644 index 1a1c7a7..0000000 --- a/lfs-12.0-sysv/part4.html +++ /dev/null @@ -1,422 +0,0 @@ - - - - - - Часть IV. Сборка системы LFS - - - - - - - - -
-

- IV. Сборка системы LFS -

-
-

- Содержание -

- -
-
- - - diff --git a/lfs-12.0-sysv/part5.html b/lfs-12.0-sysv/part5.html deleted file mode 100644 index dfe1475..0000000 --- a/lfs-12.0-sysv/part5.html +++ /dev/null @@ -1,200 +0,0 @@ - - - - - - Часть V. Приложения - - - - - - - - -
-

- V. Приложения -

- -
- - - diff --git a/lfs-12.0-sysv/partintro/generalinstructions.html b/lfs-12.0-sysv/partintro/generalinstructions.html deleted file mode 100644 index bdef636..0000000 --- a/lfs-12.0-sysv/partintro/generalinstructions.html +++ /dev/null @@ -1,264 +0,0 @@ - - - - - - Общие инструкции по компиляции - - - - - - - - -
-

- iii. Общие инструкции по - компиляции -

-

- При сборке пакетов в инструкциях делается несколько допущений: -

-
-
    -
  • -

    - На некоторые пакеты необходимо наложить патчи перед - компиляцией, метод используется тогда, когда исправление - необходимо для решения проблем сборки. Патчи часто требуются - как в этой, так и в следующих главах, но иногда, когда один и - тот же пакет собирается более одного раза, патч требуется не - сразу. Поэтому не беспокойтесь, если инструкции для скачанного - патча отсутствуют. Предупреждающие сообщения о смещении (offset) или размытии (fuzz) также могут - появляться при применении патча. Не обращайте внимания на эти - предупреждения, патч все равно успешно применен. -

    -
  • -
  • -

    - Во время компиляции большинства пакетов на экране будут - отображаться предупреждения. Это нормально, и их можно смело - игнорировать. Предупреждения появляются, например, когда - используется устаревший, недопустимый синтаксис C или C++. - Стандарты C меняются довольно часто, и некоторые пакеты все еще - используют более старый стандарт. Это не является серьезной - проблемой, но вызывает появление предупреждений. -

    -
  • -
  • -

    - Проверьте в последний раз, что переменная среды LFS настроена правильно: -

    -
    echo $LFS
    -

    - Убедитесь, что в выводе указан путь к точке монтирования - раздела LFS, то есть /mnt/lfs, - как в примере из этой книги. -

    -
  • -
  • -

    - Наконец, необходимо подчеркнуть два важных момента: -

    -
    - [Важно] -

    - Важно -

    -

    - Инструкции по сборке предполагают, что все Требования к - хост-системе, включая символические ссылки, установлены - правильно: -

    -
    -
      -
    • -

      - bash это - используемая оболочка. -

      -
    • -
    • -

      - sh это - символическая ссылка на bash. -

      -
    • -
    • -

      - /usr/bin/awk это - символическая ссылка на gawk. -

      -
    • -
    • -

      - /usr/bin/yacc это - символическая ссылка на bison или небольшой - скрипт, который выполняет bison -

      -
    • -
    -
    -
    -
    - [Важно] -

    - Важно -

    -

    - Вот краткое описание процесса сборки: -

    -
    -
      -
    1. -

      - Поместите все исходники и патчи в каталог, который - будет доступен из среды chroot, например, /mnt/lfs/sources/. -

      -
    2. -
    3. -

      - Перейдите в каталог /mnt/lfs/sources/. -

      -
    4. -
    5. -

      - Для каждого - пакета: -

      -
      -
        -
      1. -

        - С помощью программы tar извлеките - пакет для сборки. В Глава 5 - и - Глава 6 убедитесь, что при извлечении - пакета вы залогинены под пользователем lfs. -

        -

        - Не используйте никаких методов, кроме команды - tar, для - извлечения исходного кода. Примечательно, что - использование команды cp -R для - копирования дерева исходного кода в другое место - может привести к уничтожению ссылок и меток - времени в дереве исходного кода и привести к сбою - сборки. -

        -
      2. -
      3. -

        - Перейдите в каталог, созданный при извлечении - пакета. -

        -
      4. -
      5. -

        - Следуйте инструкциям по сборке пакета. -

        -
      6. -
      7. -

        - Вернитесь в исходный каталог, когда сборка будет - завершена. -

        -
      8. -
      9. -

        - Удалите извлеченный каталог, если не указано - иное. -

        -
      10. -
      -
      -
    6. -
    -
    -
    -
  • -
-
-
- - - diff --git a/lfs-12.0-sysv/partintro/introduction.html b/lfs-12.0-sysv/partintro/introduction.html deleted file mode 100644 index b3b98b1..0000000 --- a/lfs-12.0-sysv/partintro/introduction.html +++ /dev/null @@ -1,113 +0,0 @@ - - - - - - Введение - - - - - - - - -
-

- i. - Введение -

-

- Эта часть разделена на три этапа: во-первых, сборка кросс-компилятора - и связанных с ним библиотек; во-вторых, использование этого набора - инструментов для сборки нескольких утилит таким образом, чтобы - изолировать их от основного дистрибутива; в-третьих, вход в среду - chroot (что ещё больше улучшает изоляцию от хоста), и сборка - оставшихся инструментов, необходимых для создания конечной системы. -

-
- [Важно] -

- Важно -

-

- Именно здесь начинается настоящая работа по сборке новой системы. - Требуется очень тщательно следить за тем, чтобы инструкции - выполнялись точно так, как они приведены в книге. Вы должны - попытаться понять, что они делают, и каким бы ни было ваше желание - скорее закончить сборку, вам следует воздержаться от слепого набора - команд. Читайте документацию, если вы что-то не понимаете. Кроме - того, следите за результатом выполнения команд, отправляя лог в - файл с помощью утилиты tee. Это упрощает отладку, если - что-то пойдет не так. -

-
-

- Следующий раздел представляет собой техническое введение в процесс - сборки, а следующий за ним, содержит очень важные общие инструкции по - компиляции. -

-
- - - diff --git a/lfs-12.0-sysv/partintro/partintro.html b/lfs-12.0-sysv/partintro/partintro.html deleted file mode 100644 index 25a670e..0000000 --- a/lfs-12.0-sysv/partintro/partintro.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - - - Важный предварительный материал - - - - - - - - -
-

- Важный - предварительный материал -

- -
- - - diff --git a/lfs-12.0-sysv/partintro/toolchaintechnotes.html b/lfs-12.0-sysv/partintro/toolchaintechnotes.html deleted file mode 100644 index 998168b..0000000 --- a/lfs-12.0-sysv/partintro/toolchaintechnotes.html +++ /dev/null @@ -1,743 +0,0 @@ - - - - - - Технические примечания по сборочным инструментам - - - - - - - - -
-

- ii. Технические примечания по - сборочным инструментам -

-

- В этом разделе объясняются причины и некоторые технические детали, - лежащие в основе сборки пакетов. Не обязательно сразу понимать все, - что содержится в этом разделе. Большая часть этой информации станет - более понятной после выполнения фактической сборки. Возвращайтесь и - перечитывайте этот раздел в любое время по ходу сборки. -

-

- Основная задача Глава 5 и Глава 6 - состоит в том, чтобы создать временную область, содержащую заведомо - исправный набор инструментов, которые можно изолировать от - хост-системы. Использовании команды chroot в последующих главах, - обеспечит чистую и безотказную сборку целевой системы LFS. Процесс - сборки разработан таким образом, чтобы свести к минимуму риски для - новых читателей и в то же время обеспечить наибольшую образовательную - ценность. -

-

- Сборка инструментария основана на процессе кросс-компиляции. Кросс-компиляция обычно - используется для сборки компилятора и его инструментов для машины, - отличной от той, которая используется для сборки. Строго говоря, это - не требуется для LFS, так как машина, на которой будет работать новая - система, та же, что и используемая для сборки. Но у кросс-компиляции - есть большое преимущество, заключающееся в том, что все, что - подвергается кросс-компиляции, не будет зависеть от окружения хоста. -

-
-

- О кросс-компиляции -

-
- [Примечание] -

- Примечание -

-

- Книга LFS не является руководством и не содержит общего - руководства по созданию кросс (или собственного) тулчейна. Не - используйте команды из книги для кросс-тулчейна, который - планируете использовать для каких-либо других целей, кроме - создания LFS, если у вас нет полного понимания, что вы делаете. -

-
-

- Кросс-компиляция включает в себя некоторые концепции, которые сами - по себе заслуживают отдельного раздела. Хотя этот раздел можно - пропустить при первом чтении, возвращение к нему позже будет - полезно для полного понимания процесса. -

-

- Давайте определим некоторые термины, используемые в этом контексте. -

-
-
-
- сборщик -
-
-

- это машина, на которой мы собираем программы. Обратите - внимание, что этот компьютер упоминается как «хост» в других - разделах. -

-
-
- хост -
-
-

- это машина/система, на которой будут выполняться встроенные - программы. Обратите внимание, что используемое здесь значение - слова «хост» отличается от того, которое - применяется в других разделах. -

-
-
- цель -
-
-

- используется только для компиляторов. Это машина, для которой - компилятор создает код. Он может отличаться как от - «сборщика», так и от «хоста». -

-
-
-
-

- В качестве примера представим следующий сценарий (иногда называемый - «канадским - крестом»): у нас есть компилятор на медленной машине, - назовем ее машиной A и компилятор ccA. У нас также есть быстрая - машина (B), но без компилятора, и мы хотим создать код для другой - медленной машины (C). Чтобы собрать компилятор для машины C, у нас - будет три этапа: -

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- Этап - - Сборщик - - Хост - - Цель - - Действие -
- 1 - - A - - A - - B - - Сборка кросс-компилятора cc1 с использованием ccA на машине - A -
- 2 - - A - - B - - C - - Сборка кросс-компилятора cc2 с использованием cc1 на машине - A -
- 3 - - B - - C - - C - - Сборка компилятора ccC с использованием cc2 на машине B -
-
-

- Затем все другие программы, необходимые для машины C, могут быть - скомпилированы с помощью cc2 на быстрой машине B. Обратите - внимание, что до тех пор, пока B не может запускать программы, - собранные для C, нет способа протестировать программы, пока не - будет запущена сама машина C. Например, чтобы запустить набор - тестов на ccC мы можем добавить четвертый этап: -

-
- - - - - - - - - - - - - - - - - - - - - - - - - - -
- Этап - - Сборщик - - Хост - - Цель - - Действие -
- 4 - - C - - C - - C - - Пересобрать и протестировать ccC, используя ccC на машине C -
-
-

- В приведенном выше примере только cc1 и cc2 являются - кросс-компиляторами, то есть они создают код для машины, отличной - от той, на которой они выполняются. Компиляторы ccA и ccC создают - код для машины, на которой они выполняются. Такие компиляторы - называются нативными - компиляторами. -

-
-
-

- Реализация кросс-компиляции - для LFS -

-
- [Примечание] -

- Примечание -

-

- Все кросс-компилируемые пакеты в этой книге используют систему - сборки на основе autoconf. Система сборки на основе autoconf - принимает типы систем вида cpu-vendor-kernel-os, называемые - системным триплетом. Поскольку поле vendor часто не содержит - значения, autoconf позволяет вам опустить его. -

-

- Проницательный читатель может задаться вопросом, почему название - «триплет» - применяется к имени из четырех компонентов. Поле kernel и поле os - ранее применялись как единый элемент: «system». Такая форма с - тремя полями все еще актуальна для некоторых систем, например, - x86_64-unknown-freebsd. Но две - системы могут использовать одно и то же ядро и все же быть - слишком разными, чтобы использовать одинаковый триплет для их - описания. Например, Android, работающий на мобильном телефоне - полностью отличается от Ubuntu, работающей на ARM64 сервере, хотя - они оба работают на одном и том же типе процессора (ARM64) и с - одним ядром (Linux). -

-

- Без слоя эмуляции вы не сможете запустить исполняемый файл c - сервера на мобильном телефоне и наоборот. Итак, поле «system» было разделено - на поля kernel и os, чтобы однозначно их интерпретировать. В - нашем примере Android обозначается как aarch64-unknown-linux-android, а Ubuntu - aarch64-unknown-linux-gnu. -

-

- Слово «триплет» сохранилось в лексиконе. Простой - способ определить триплет вашей машины — запустить скрипт - config.guess, - который входит в исходный код многих пакетов. Распакуйте - исходники binutils и запустите скрипт: ./config.guess, обратите - внимание на вывод. Например, для 32-разрядного процессора Intel - вывод будет i686-pc-linux-gnu. В 64-битной системе - это будет x86_64-pc-linux-gnu. В большинстве - систем Linux используют еще более простую команду gcc -dumpmachine, которая - предоставит вам аналогичную информацию. -

-

- Вы также должны знать имя динамического компоновщика платформы, - часто называемого динамическим загрузчиком (не путать со - стандартным компоновщиком ld, который является частью - binutils). Динамический компоновщик, предоставляемый glibc, - находит и загружает общие библиотеки, необходимые программе, - подготавливает программу к запуску, а затем запускает ее. Имя - динамического компоновщика для 32-разрядной машины Intel — - ld-linux.so.2, а для 64-разрядных - систем — ld-linux-x86-64.so.2. - Надежный способ определить имя динамического компоновщика — - проверить случайный двоичный файл из хост-системы, выполнив - следующую команду: readelf -l - <имя исполняемого файла> | grep interpreter - и зафиксировать результат. Официальный источник, охватывающий все - платформы, находится в файле shlib-versions в корне дерева исходного кода - glibc. -

-
-

- Чтобы сымитировать кросс-компиляцию в LFS, имя триплета хоста - немного подкорректировали, изменив поле "vendor" в переменной - LFS_TGT таким образом, чтобы оно - указывало "lfs". Мы также используем параметр --with-sysroot при сборке - кросс-компоновщика и кросс-компилятора, чтобы сообщить им, где - найти необходимые файлы хоста. Это гарантирует, что ни одна из - программ, входящих в Глава 6, - не сможет ссылаться на библиотеки на машине сборки. Для корректной - работы, обязательны всего два этапа, еще один рекомендуется для - тестирования: -

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- Этап - - Сборщик - - Хост - - Цель - - Действие -
- 1 - - ПК - - ПК - - LFS - - Сборка кросс-компилятора cc1 с использованием cc-pc на ПК -
- 2 - - ПК - - LFS - - LFS - - Сборка компилятора cc-lfs с использованием cc1 на ПК -
- 3 - - LFS - - LFS - - LFS - - Пересборка и тестирование cc-lfs, используя cc-lfs в lfs -
-
-

- В приведенной выше таблице «ПК» означает, что команды выполняются на - компьютере с использованием уже установленного дистрибутива. - «В lfs» - означает, что команды выполняются в chroot-окружении. -

-

- Это еще не конец истории. Язык С - это не просто компилятор; также - он определяет стандартную библиотеку. В этой книге используется - библиотека GNU C под названием glibc (есть альтернативный вариант - - "musl"). Эта библиотека должна быть скомпилирована для машины lfs, - то есть с использованием кросс-компилятора cc1. Но сам компилятор - использует внутреннюю библиотеку, реализующую сложные инструкции, - недоступные в наборе инструкций ассемблера. Эта внутренняя - библиотека называется libgcc, и для полноценной работы ее - необходимо связать с библиотекой glibc! Кроме того, стандартная - библиотека для C++ (libstdc++) также должна быть связана с glibc. - Решение этой проблемы курицы и яйца состоит в том, чтобы сначала - собрать деградированную libgcc на основе cc1, в которой отсутствуют - некоторые функциональные возможности, такие как потоки и обработка - исключений, затем собрать glibc с использованием этого - деградированного компилятора (сама glibc не деградирована), а затем - собрать libstdc++. В этой последней библиотеке будет не хватать - некоторых функциональных возможностей libgcc. -

-

- Выводом из предыдущего абзаца является то, что cc1 не может собрать - полнофункциональную libstdc++ с деградированной libgcc, но это - единственный компилятор, доступный для сборки библиотек C/C++ на - этапе 2. Есть две причины, по которым мы не используем сразу - компилятор cc-lfs, собранный на этапе 2, для сборки этих библиотек. -

-
-
    -
  • -

    - Вообще говоря, cc-lfs не может работать на ПК (хост-системе). - Хотя триплеты для ПК и LFS совместимы друг с другом, - исполняемый файл для lfs должен зависеть от glibc-2.38; - хост-дистрибутив может использовать либо другую реализацию - libc (например, musl), либо предыдущий выпуск glibc - (например, glibc-2.13). -

    -
  • -
  • -

    - Даже если cc-lfs может работать на ПК, его использование на - ПК сопряжено с риском привязки к библиотекам ПК, так как - cc-lfs является родным компилятором. -

    -
  • -
-
-

- Поэтому, когда мы собираем gcc этап 2, мы даем указание системе - сборки пересобрать libgcc и libstdc++ с помощью cc1, но мы - связываем libstdc++ с новой пересобранной libgcc вместо старой, - деградированной. Это делает пересобранную библиотеку libstdc++ - полностью функциональной. -

-

- В Глава 8 - (или «этап - 3») собраны все пакеты, необходимые для системы LFS. - Даже если пакет уже был установлен в системе LFS в предыдущей - главе, мы все равно пересобираем пакет. Основная причина пересборки - этих пакетов состоит в том, чтобы сделать их стабильными: если мы - переустанавливаем пакет LFS в готовой системе LFS, содержимое - пакета должно совпадать с содержимым того же пакета при первой - установке в Глава 8. - Временные пакеты, установленные в Глава 6 - или - Глава 7 не могут удовлетворять этому требованию, потому - что некоторые из них собраны без необязательных зависимостей и - autoconf не может выполнить некоторые проверки функций в Глава 6 - из-за кросс-компиляции, в результате чего во временных пакетах - отсутствуют дополнительные функции или используются не оптимальные - процедуры кода. Кроме того, второстепенной причиной для пересборки - пакетов является выполнение тестов. -

-
-
-

- Другие детали - процесса -

-

- Кросс-компилятор будет установлен в отдельный каталог $LFS/tools, так как он не будет частью конечной - системы. -

-

- Сначала устанавливается Binutils, потому что во время выполнения - команды configure gcc - и glibc выполняются различные тесты функций на ассемблере и - компоновщике, чтобы определить, какие программные функции следует - включить или отключить. Это важнее, чем может показаться на первый - взгляд. Неправильно настроенный gcc или glibc может привести к - незначительной поломке сборочных инструментов, где последствия - такой поломки могут проявиться ближе к концу сборки всего - дистрибутива. Сбой тестов обычно выявляет эту ошибку до того, как - будет выполнено много дополнительной работы. -

-

- Binutils устанавливает свой ассемблер и компоновщик в двух местах: - $LFS/tools/bin и $LFS/tools/$LFS_TGT/bin. Инструменты в одном - месте жестко связаны с другими. Важным аспектом компоновщика - является порядок поиска в библиотеке. Подробную информацию можно - получить от ld, - передав ей флаг --verbose. - Например, $LFS_TGT-ld --verbose | - grep SEARCH покажет текущие пути поиска и их - порядок. Он показывает, какие файлы связаны с помощью ld, путем компиляции фиктивной - программы и передачи параметра --verbose компоновщику. Например, - $LFS_TGT-gcc dummy.c -Wl,--verbose - 2>&1 | grep succeeded покажет все файлы, - успешно открытые во время компоновки. -

-

- Следующий устанавливаемый пакет — gcc. Пример того, что можно - увидеть во время запуска configure: -

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

- Это важно по причинам, упомянутым выше. Также здесь - демонстрируется, что сценарий настройки gcc не просматривает - значения переменной PATH, чтобы найти, какие инструменты - использовать. Однако во время фактической работы самого - gcc не обязательно - используются одни и те же пути поиска. Чтобы узнать, какой - стандартный компоновщик будет использовать gcc, запустите: $LFS_TGT-gcc -print-prog-name=ld. -

-

- Подробную информацию можно получить из gcc, передав ему параметр - -v при компиляции фиктивной - программы. Например, gcc -v - dummy.c покажет подробную информацию об этапах - препроцессора, компиляции и сборки, включая указанные в - gcc пути поиска и их - порядок. -

-

- Далее устанавливаются очищенные заголовочные файлы Linux API. Они - позволяют стандартной библиотеке C (Glibc) взаимодействовать с - функциями, предоставляемыми ядром Linux. -

-

- Следующий устанавливаемый пакет — glibc. Наиболее важными при - сборке glibc являются компилятор, бинарные инструменты и - заголовочные файлы ядра. С компилятором, как правило, не бывает - проблем, поскольку glibc всегда будет использовать компилятор, - указанный в параметре --host, переданный скрипту configure; - например, в нашем случае компилятором будет $LFS_TGT-gcc. С бинарными - инструментами и заголовки ядра может быть немного сложнее. Поэтому - мы не рискуем и используем доступные параметры конфигурации, чтобы - обеспечить правильный выбор. После запуска configure проверьте содержимое - файла config.make в каталоге - сборки на наличие всех важных - деталей. Обратите внимание на использование опции CC="$LFS_TGT-gcc" (с переменной - $LFS_TGT) для управления используемыми - бинарными инструментами и использование флагов -nostdinc и -isystem для управления включаемым - путем поиска компилятора. Эти пункты подчеркивают важный аспект - пакета glibc — он очень самодостаточен с точки зрения своего - механизма сборки и, как правило, не полагается на значения по - умолчанию. -

-

- Как было сказано выше, затем компилируется стандартная библиотека - C++, а затем в Глава 6 - все остальные программы, которым необходимо разрешить проблему - циклических зависимостей во время сборки. На этапе установки всех - этих пакетов используется переменная DESTDIR, для принудительной - установки в файловую систему LFS. -

-

- В конце Глава 6 - устанавливается собственный компилятор lfs. Сначала собирается - binutils с той же переменной DESTDIR, - что и другие программы, затем повторно собирается gcc, без сборки - некоторых некритических библиотек. Из-за какой-то странной логики в - сценарии настройки GCC CC_FOR_TARGET - заканчивается как cc, - когда хост совпадает с целью, но отличается от системы сборки. - Поэтому значение CC_FOR_TARGET=$LFS_TGT-gcc явно - указывается в параметрах конфигурации. -

-

- После входа в среду chroot в - Глава 7 первой задачей является установка libstdc++. Затем - выполняется установка временных программ, необходимых для - правильной работы тулчейна. С этого момента основной набор - инструментов является самодостаточным и автономным. В Глава 8 - собираются, тестируются и устанавливаются окончательные версии всех - пакетов, необходимых для полнофункциональной системы. -

-
-
- - - diff --git a/lfs-12.0-sysv/prologue/architecture.html b/lfs-12.0-sysv/prologue/architecture.html deleted file mode 100644 index 5b2a8e4..0000000 --- a/lfs-12.0-sysv/prologue/architecture.html +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - Целевые архитектуры LFS - - - - - - - - -
-

- iii. Целевые - архитектуры LFS -

-

- Основными целевыми архитектурами LFS являются процессоры AMD/Intel - x86 (32-разрядные) и x86_64 (64-разрядные). Однако, известно, что - инструкции, приведенные в этой книге, с некоторыми изменениями - работают с процессорами Power PC и ARM. Для создания системы, - использующей один из этих процессоров, основным предварительным - условием, в дополнение к описанным на следующей странице, является - существующая система Linux, например, собранная ранее LFS, Ubuntu, - Red Hat/Fedora, SuSE или другой дистрибутив, ориентированный на - имеющуюся у вас архитектуру. Также обратите внимание, что - 32-разрядный дистрибутив можно установить и использовать в качестве - хост-системы на 64-разрядном компьютере AMD/Intel. -

-

- При сборке LFS выигрыш от сборки на 64-битной системе по сравнению с - 32-битной системой минимален. Например, в тестовой сборке LFS-9.1 в - системе на базе процессора Core i7-4790 с использованием 4 ядер были - получены следующие статистические данные: -

-
Архитектура     Время сборки    Размер сборки
-x86             239.9 минут     3.6 ГБ
-x64             233.2 минут     4.4 ГБ
-

- Как видите, на том же оборудовании 64-битная сборка всего на 3% - быстрее и на 22% больше, чем 32-битная. Если вы планируете - использовать LFS в качестве LAMP-сервера или брандмауэра, - 32-разрядной сборки может быть достаточно. С другой стороны, для - сборки и/или запуска некоторых пакетов в BLFS теперь требуется более - 4 ГБ ОЗУ, поэтому, если вы планируете использовать LFS в качестве - настольной ОС, авторы LFS рекомендуют собирать 64-битную систему. -

-

- По умолчанию 64-разрядная сборка LFS, считается «чистой» 64-разрядной - системой. То есть она поддерживает только 64-разрядные исполняемые - файлы. Сборка «multilib» системы требует компиляции многих - программ дважды - один раз для 32-битной и один раз для 64-битной. - Напрямую в книге данная опция не поддерживается, потому что это будет - только мешать образовательной цели этой книги, предлагающей - инструкции, необходимые для сборки базовой системы. Некоторые - редакторы LFS/BLFS поддерживают ответвление LFS для multilib, которое - доступно по адресу https://www.linuxfromscratch.org/~thomas/multilib/index.html. - Но это более продвинутая тема. -

-
- - - diff --git a/lfs-12.0-sysv/prologue/audience.html b/lfs-12.0-sysv/prologue/audience.html deleted file mode 100644 index 533333a..0000000 --- a/lfs-12.0-sysv/prologue/audience.html +++ /dev/null @@ -1,129 +0,0 @@ - - - - - - Аудитория, на которую рассчитана эта книга - - - - - - - - -
-

- ii. Аудитория, на - которую рассчитана эта книга -

-

- Есть много причин, по которым вы хотели бы прочитать эту книгу. Один - из вопросов, который задают многие люди, звучит так: «Зачем тратить время на сборку - Linux-системы вручную с нуля, если можно просто загрузить и - установить существующую?» -

-

- Одной из важных целей существования этого проекта является помощь в - изучении того, как работает система Linux изнутри. Создание системы - LFS помогает продемонстрировать, что заставляет работать Linux, как - все работает вместе и зависит друг от друга. Одна из лучших вещей, - которую может дать этот учебный опыт, — это возможность настроить - систему Linux в соответствии с вашими уникальными потребностями. -

-

- Другое ключевое преимущество - LFS предоставляет более глубокий - контроль, не полагаясь на чью-либо реализацию Linux. С LFS вы - находитесь в кресле водителя, и Вы управляете каждым аспектом системы. -

-

- LFS позволяет создавать очень компактные системы Linux. При установке - обычных дистрибутивов вам часто приходится устанавливать очень много - программ, которые, вероятно, никогда не используются. Эти программы - тратят ресурсы впустую. Вы можете возразить, что с сегодняшними - жесткими дисками и процессорами такие ресурсы не имеют значения. - Иногда, однако, вы все еще ограничены размером. Подумайте о - загрузочных компакт-дисках, USB-накопителях и встраиваемых системах. - Это области, в которых LFS может быть полезным. -

-

- Ещё одним преимуществом собственной сборки Linux является - безопасность. При компиляции каждого компонента системы из исходных - кодов вы можете всё проверить и применить необходимые патчи. Больше - не нужно ждать, когда кто-то другой скомпилирует пакет с требуемыми - исправлениями. Если вы не изучите патч и не примените его - самостоятельно, нет гарантий, что новый пакет будет собран корректно - и устранит проблему. -

-

- Цель Linux From Scratch — создать законченную и пригодную для - использования систему базового уровня. Если вы не хотите создавать - свою собственную систему Linux с нуля, вы, тем не менее, можете - извлечь пользу из информации, содержащейся в этой книге. -

-

- Есть много других веских причин для создания собственной системы LFS. - В конце концов, образование, безусловно, является самой важной из - них. Продолжая работать с LFS, вы откроете для себя силу, которую - действительно приносят информация и знания. -

-
- - - diff --git a/lfs-12.0-sysv/prologue/errata.html b/lfs-12.0-sysv/prologue/errata.html deleted file mode 100644 index e5a1d23..0000000 --- a/lfs-12.0-sysv/prologue/errata.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - - - Ошибки и рекомендации по безопасности - - - - - - - - -
-

- ix. Ошибки и рекомендации по - безопасности -

-

- Программное обеспечение, используемое для создания системы LFS, - постоянно обновляется и совершенствуется. Предупреждения безопасности - и исправления ошибок могут появиться после выхода книги LFS. Чтобы - проверить, нуждаются ли пакеты или инструкции в этом выпуске LFS в - каких-либо изменениях для устранения уязвимостей в системе - безопасности или исправления других ошибок, посетите https://mirror.linuxfromscratch.ru/lfs/errata/12.0/, - прежде чем приступить к сборке. Вы должны внести требуемые изменения - и применить их к соответствующему разделу книги по мере сборки - системы LFS. -

-

- Кроме того, редакторы Linux From Scratch ведут список уязвимостей - безопасности, обнаруженных после выхода книги. Чтобы проверить - наличие каких-либо известных уязвимостей безопасности, посетите - https://mirror.linuxfromscratch.ru/lfs/advisories/, - прежде чем продолжить сборку. И, если вы будете использовать систему - LFS в качестве реальной настольной или серверной системы, вам следует - обращаться к рекомендациям и устранять любые уязвимости в системе - безопасности, даже когда система LFS полностью собрана. -

-
- - - diff --git a/lfs-12.0-sysv/prologue/foreword.html b/lfs-12.0-sysv/prologue/foreword.html deleted file mode 100644 index 818a62a..0000000 --- a/lfs-12.0-sysv/prologue/foreword.html +++ /dev/null @@ -1,154 +0,0 @@ - - - - - - Предисловие - - - - - - - - -
-

- i. Предисловие -

-

- Мой путь к изучению и лучшему пониманию Linux начался еще в 1998 - году. Я только что установил свой первый дистрибутив Linux и быстро - увлекся его концепцией и философией. -

-

- У задачи может быть несколько вариантов решения. То же самое можно - сказать и о дистрибутивах Linux. Многие из них существовали годами. - Некоторые всё еще существуют, некоторые превратились во что-то иное, - а некоторые остались только в наших воспоминаниях. Все они выполняют - задачи по-разному, чтобы удовлетворить потребности своей целевой - аудитории. И я понял - раз существует так много всевозможных способов - добиться поставленной цели, мне больше не нужно ограничивать себя - какой-то одной реализацией. До появления Linux мы просто мирились с - проблемами в других операционных системах, поскольку у нас не было - выбора. Что есть, то есть, нравилось нам это или нет. С Linux - появился выбор. Если вам что-то не понравилось, вы можете изменить - это, к тому же, это всецело поощряется. -

-

- Я попробовал разные дистрибутивы, но так и не смог ни на одном - остановиться. Oни были отличными системами сами по себе. Это больше - не было вопросом правильно или неправильно. Это стало делом личного - вкуса. При всём разнообразии выбора не было ни одного дистрибутива, - который был для меня идеален. Поэтому я решил создать свою - собственную Linux-систему, которая бы полностью соответствовала моим - личным предпочтениям. -

-

- Чтобы создать свою собственную систему, я решил скомпилировать всё из - исходного кода вместо использования предварительно скомпилированных - пакетов. Эта «идеальная» Linux-система должна была иметь - сильные стороны других систем без их недостатков. Сначала эта мысль - казалась пугающей. Но я придерживался идеи, что такая система должна - быть создана. -

-

- Разобравшись с такими проблемами, как циклические зависимости и - ошибки во время компиляции, я, наконец, создал собственную систему - Linux. Она была полностью работоспособна и вполне пригодна для - использования, как и любая другая Linux-система того времени. Но это - было мое собственное творение. Было очень приятно собрать такую - систему самому. Единственное, что было бы лучше, это создавать каждую - часть программного обеспечения самостоятельно. Это было следующее, к - чему я стремился -

-

- Когда я поделился своими идеями и опытом с другими членами сообщества - Linux, стал очевиден явный интерес к ним. Вскоре стало понятно, что - такие специально созданные Linux-системы служат не только для - удовлетворения специфических потребностей пользователей, но и - являются идеальной возможностью для обучения программистов и - системных администраторов, чтобы улучшить их (существующие) навыки - работы с Linux. Так родился проект Linux - From Scratch. -

-

- Книга Linux From Scratch является ядром этого проекта. В ней - содержится информация и инструкции, необходимые для разработки и - создания собственной системы. Хотя эта книга представляет шаблон, - который позволит создать правильно работающую систему, вы можете - изменить инструкции по своему усмотрению, что отчасти является важной - частью этого проекта. Вы всё контролируете; мы просто протягиваем - руку помощи, чтобы вы начали свой собственный путь. -

-

- Я искренне надеюсь, что вы прекрасно проведете время, работая над - своей собственной системой Linux From Scratch, и оцените ее - многочисленные преимущества. -

-
-

- --
- Gerard Beekmans
- gerard@linuxfromscratch.org -

-
-
- - - diff --git a/lfs-12.0-sysv/prologue/organization.html b/lfs-12.0-sysv/prologue/organization.html deleted file mode 100644 index ef2771b..0000000 --- a/lfs-12.0-sysv/prologue/organization.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - - Структура - - - - - - - - -
-

- viii. Структура -

-

- Эта книга разделена на несколько частей. -

-
-

- Часть I - Введение -

-

- Эта часть содержит важные замечания о том, как выполнить установку - LFS. Также здесь представлена метаинформация о книге -

-
-
-

- Часть II - Подготовка к сборке -

-

- Часть II описывает, как подготовиться к процессу сборки — создать - разделы, загрузить пакеты и выполнить компиляцию временных - инструментов. -

-
-
-

- Часть III - Создание кросс-тулчейна LFS и временных инструментов -

-

- Часть III содержит инструкции по созданию инструментов, необходимых - для создания конечной системы LFS. -

-
-
-

- Часть IV - Сборка системы LFS -

-

- Часть IV проводит читателя через сборку системы LFS—компиляцию и - установку всех пакетов один за другим, настройку сценариев загрузки - и установку ядра. Полученная в результате система Linux является - основой, на которой можно собрать другое программное обеспечение - для расширения системы по желанию. В конце этой книги есть простой - в использовании справочник со списком всех программ, библиотек и - важных файлов, которые были установлены. -

-
-
-

- Часть V - Приложения -

-

- Часть V содержит информацию о самой книге, включая акронимы и - термины, благодарности, зависимости пакетов, список загрузочных - сценариев LFS, лицензии на распространение книги и исчерпывающий - указатель пакетов, программ, библиотек и сценариев. -

-
-
- - - diff --git a/lfs-12.0-sysv/prologue/package-choices.html b/lfs-12.0-sysv/prologue/package-choices.html deleted file mode 100644 index 04e5d44..0000000 --- a/lfs-12.0-sysv/prologue/package-choices.html +++ /dev/null @@ -1,856 +0,0 @@ - - - - - - Информация о пакетах, используемых в этой книге - - - - - - - - -
-

- vi. Информация о пакетах, - используемых в этой книге -

-

- Целью LFS является создание законченной и пригодной для использования - базовой системы, которая содержит все пакеты, необходимые для - самовоспроизведения, состоящую при этом из относительно небольшого - набора программ, с помощью которых можно расширять систему. Это не - означает, что LFS является самой маленькой из возможных систем. В - систему включено несколько важных пакетов, которые не являются - обязательными. Приведенный ниже список объясняет почему в книгу - включен тот или иной пакет. -

-
-
    -
  • -

    - Acl -

    -

    - Access Control List или ACL — список управления доступом, - который определяет, кто или что может получать доступ к объекту - (программе, процессу или файлу), и какие именно операции - разрешено или запрещено выполнять субъекту (пользователю, - группе пользователей).Данный пакет содержит утилиты для - администрирования списков управления доступом, которые - используются для определения дискреционных прав доступа к - файлам и каталогам. -

    -
  • -
  • -

    - Attr -

    -

    - Этот пакет содержит программы для управления расширенными - атрибутами объектов файловой системы. -

    -
  • -
  • -

    - Autoconf -

    -

    - Этот пакет содержит программы для создания сценариев оболочки, - которые могут выполнять автоматическую настройку исходного кода - из шаблона разработчика. Он часто необходим для повторной - компиляции пакета после обновления процедур сборки. -

    -
  • -
  • -

    - Automake -

    -

    - Этот пакет содержит программы для создания Make-файлов из - шаблона. Он также необходим для повторной компиляции пакета - после обновления процедур сборки. -

    -
  • -
  • -

    - Bash -

    -

    - Этот пакет удовлетворяет требования LSB по предоставлению - интерфейса Bourne Shell для системы. Он был выбран среди других - пакетов оболочки из-за его повсеместного использования и - широких возможностей. -

    -
  • -
  • -

    - Bc -

    -

    - Этот пакет предоставляет язык числовой обработки произвольной - точности. Он необходимым для сборки ядра Linux -

    -
  • -
  • -

    - Binutils -

    -

    - Этот пакет содержит компоновщик, ассемблер и другие инструменты - для работы с объектными файлами. Программы в этом пакете - необходимы для компиляции большинства пакетов в системе LFS. -

    -
  • -
  • -

    - Bison -

    -

    - Этот пакет содержит GNU-версию yacc (Yet Another Compiler - Compiler), необходимого для сборки некоторых пакетов в LFS. -

    -
  • -
  • -

    - Bzip2 -

    -

    - Этот пакет содержит программы для сжатия и распаковки файлов. - Требуется для распаковки множества пакетов LFS. -

    -
  • -
  • -

    - Check -

    -

    - Этот пакет содержит тестовую обвязку для других программ. -

    -
  • -
  • -

    - Coreutils -

    -

    - Этот пакет содержит ряд программ для просмотра файлов и - каталогов, и управления ими. Эти программы необходимы для - управления файлами через командную строку и для сборки каждого - пакета в LFS. -

    -
  • -
  • -

    - DejaGNU -

    -

    - Этот пакет предоставляет фреймворк для тестирования других - программ. -

    -
  • -
  • -

    - Diffutils -

    -

    - Этот пакет содержит программы, которые показывают различия - между файлами или каталогами. Их можно использовать для - создания патчей, а также они применяются во многих процедурах - сборки -

    -
  • -
  • -

    - E2fsprogs -

    -

    - Этот пакет содержит утилиты для работы с файловыми системами - ext2, ext3 и ext4. Это наиболее распространенные и тщательно - протестированные файловые системы, поддерживаемые Linux -

    -
  • -
  • -

    - Expat -

    -

    - Этот пакет содержит небольшую библиотеку разбора XML. Она - требуется модулем Perl XML::Parser. -

    -
  • -
  • -

    - Expect -

    -

    - Этот пакет содержит инструменты для автоматизации и - тестирования, и является расширением к скриптовому языку Tcl, - для многих интерактивных приложений. Он обычно используется для - тестирования других пакетов. -

    -
  • -
  • -

    - File -

    -

    - Этот пакет содержит утилиту для определения типа файла или - файлов. Некоторым пакетам она нужна в сценариях сборки. -

    -
  • -
  • -

    - Findutils -

    -

    - Этот пакет предоставляет программы для поиска файлов. Он - используется во многих сценариях сборки пакетов. -

    -
  • -
  • -

    - Flex -

    -

    - Этот пакет содержит утилиту для генерации программ, - распознающих шаблоны в тексте. Это версия GNU программы lex - (лексический анализатор). Пакет необходим для сборки некоторых - пакетов LFS. -

    -
  • -
  • -

    - Gawk -

    -

    - Этот пакет содержит программы для работы с текстовыми файлами. - Это GNU версия awk (Aho-Weinberg-Kernighan). Он используется во - многих сценариях сборки пакетов. -

    -
  • -
  • -

    - GCC -

    -

    - Это коллекция компиляторов Gnu. Он содержит компиляторы C и - C++, а также несколько других компиляторов, поддержка которых - не предусмотрена в LFS. -

    -
  • -
  • -

    - GDBM -

    -

    - Этот пакет содержит библиотеку GNU Database Manager. Он - используется пакетом Man-DB -

    -
  • -
  • -

    - Gettext -

    -

    - Этот пакет содержит утилиты и библиотеки для - интернационализации и локализации многочисленных пакетов. -

    -
  • -
  • -

    - Glibc -

    -

    - Этот пакет содержит основную библиотеку C. Программы Linux не - будут работать без неё. -

    -
  • -
  • -

    - GMP -

    -

    - Этот пакет содержит математические библиотеки, предоставляющие - полезные функции для вычислений с плавающей точкой. Требуется - для сборки GCC. -

    -
  • -
  • -

    - Gperf -

    -

    - Этот пакет содержит программу, которая генерирует идеальную - хеш-функцию из набора ключей. Требуется для пакета Udev . -

    -
  • -
  • -

    - Grep -

    -

    - Этот пакет содержит программы для поиска по файлам. Пакет - используется в скриптах сборки большинства пакетов. -

    -
  • -
  • -

    - Groff -

    -

    - Этот пакет содержит программы для обработки и форматирования - текста. Одной из важнейших функций этих программ является - форматирование man страниц. -

    -
  • -
  • -

    - GRUB -

    -

    - Это загрузчик операционной системы (GRand Unified Bootloader). - Самый гибкий из нескольких доступных загрузчиков. -

    -
  • -
  • -

    - Gzip -

    -

    - Этот пакет содержит программы для сжатия и распаковки файлов. - Он необходим для распаковки множества пакетов в LFS. -

    -
  • -
  • -

    - Iana-etc -

    -

    - Этот пакет предоставляет данные для сетевых служб и протоколов. - Он необходим для обеспечения правильных сетевых возможностей. -

    -
  • -
  • -

    - Inetutils -

    -

    - Этот пакет содержит программы для базового сетевого - администрирования. -

    -
  • -
  • -

    - Intltool -

    -

    - Этот пакет содержит инструменты для извлечения переводимых - строк из исходных файлов. -

    -
  • -
  • -

    - IProute2 -

    -

    - Этот пакет содержит программы для базовой и расширенной работы - в сетях IPv4 и IPv6. Он был выбран среди других - распространенных пакетов сетевых инструментов (net-tools) из-за - его поддержки IPv6. -

    -
  • -
  • -

    - Kbd -

    -

    - Этот пакет содержит таблицы раскладок, утилиты управления - клавиатурой для неамериканских клавиатур, кроме этого, с ним - поставляется большой набор консольных шрифтов. -

    -
  • -
  • -

    - Kmod -

    -

    - Этот пакет содержит программы, необходимые для - администрирования модулей ядра Linux. -

    -
  • -
  • -

    - Less -

    -

    - Этот пакет содержит очень хороший просмотрщик текстовых файлов, - который позволяет использовать прокрутку верх/вниз при - просмотре. Многие пакеты используют его для постраничного - вывода. -

    -
  • -
  • -

    - Libcap -

    -

    - Этот пакет реализует интерфейсы пользовательского пространства - для возможностей POSIX 1003.1e, доступных в ядре Linux. -

    -
  • -
  • -

    - Libelf -

    -

    - Проект elfutils предоставляет библиотеки и инструменты для - файлов ELF и данных DWARF. Большинство утилит в этом пакете - доступны в других пакетах, но эта библиотека необходима для - сборки ядра Linux с использованием стандартной (и наиболее - эффективной) конфигурации. -

    -
  • -
  • -

    - Libffi -

    -

    - Этот пакет реализует переносимый программный интерфейс высокого - уровня для различных соглашений о вызовах. Некоторые программы - могут не знать во время компиляции, какие аргументы должны быть - переданы в функцию. Например, интерпретатору во время - выполнения может быть сообщено о количестве и типах аргументов, - используемых для вызова данной функции. Libffi можно - использовать как мост от интерпретатора к скомпилированному - коду. -

    -
  • -
  • -

    - Libpipeline -

    -

    - Пакет Libpipeline содержит библиотеку для гибкого и удобного - управления конвейерами подпроцессов. Она требуется для Man-DB. -

    -
  • -
  • -

    - Libtool -

    -

    - Этот пакет содержит сценарий поддержки универсальной библиотеки - GNU. Он объединяет сложность использования общих библиотек в - согласованный переносимый интерфейс. Библиотека необходима - наборам тестов в других пакетах LFS. -

    -
  • -
  • -

    - Libxcrypt -

    -

    - Этот пакет предоставляет библиотеку libcrypt, необходимую различным пакетам (в - частности, Shadow) для хеширования паролей. Он заменяет - устаревшую реализацию libcrypt - в Glibc. -

    -
  • -
  • -

    - Linux Kernel -

    -

    - Этот пакет является ядром операционной системой. -

    -
  • -
  • -

    - M4 -

    -

    - Этот пакет содержит текстовый макропроцессор, полезный в - качестве инструмента сборки для других программ. -

    -
  • -
  • -

    - Make -

    -

    - Этот пакет содержит программу для управления сборкой пакетов. - При сборке она необходима почти для каждого пакета в LFS. -

    -
  • -
  • -

    - Man-DB -

    -

    - Этот пакет содержит программы для поиска и просмотра справочных - страниц. Он был выбран вместо пакета man из-за превосходных возможностей - интернационализации. Содержит man. -

    -
  • -
  • -

    - Man-pages -

    -

    - Этот пакет представляет собой содержимое основных справочных - страниц Linux. -

    -
  • -
  • -

    - Meson -

    -

    - Этот пакет предоставляет программный инструмент для - автоматизации создания программного обеспечения. Основная цель - Meson — свести к минимуму количество времени, которое - разработчики программного обеспечения должны тратить на - настройку своей системы сборки. Требуется для сборки Systemd, а - также многих пакетов BLFS. -

    -
  • -
  • -

    - MPC -

    -

    - Этот пакет содержит функции для арифметики комплексных чисел. - Необходим GCC. -

    -
  • -
  • -

    - MPFR -

    -

    - Этот пакет содержит функции для арифметики с произвольной - точностью. Необходим GCC. -

    -
  • -
  • -

    - Ninja -

    -

    - Этот пакет предоставляет небольшую систему сборки, - ориентированную на скорость. Он предназначен для того, чтобы - его входные файлы генерировались системой сборки более высокого - уровня, и для максимально быстрого запуска сборок. Необходим - для Meson. -

    -
  • -
  • -

    - Ncurses -

    -

    - Этот пакет содержит библиотеки для независимой от терминала - обработки символьных экранов. Он часто используется для - управления курсором в меню. Необходим ряду пакетов в LFS. -

    -
  • -
  • -

    - Openssl -

    -

    - Этот пакет содержит инструменты управления и библиотеки, - относящиеся к криптографии. Они предоставляют криптографические - функций другим пакетам, включая ядро Linux. -

    -
  • -
  • -

    - Patch -

    -

    - Этот пакет содержит программу для изменения или создания файлов - путем применения файла patch, обычно создаваемого - программой diff. Он необходим - процедуре сборки для некоторых пакетов LFS. -

    -
  • -
  • -

    - Perl -

    -

    - Этот пакет является интерпретатором языка PERL. Он необходим - для установки и тестирования некоторых пакетов LFS. -

    -
  • -
  • -

    - Pkgconf -

    -

    - Этот пакет содержит программу, которая помогает настраивать - флаги компилятора и компоновщика для библиотек разработки. - Программа может быть использована в качестве замены - pkg-config, - который необходим системе сборки многих пакетов. Он - поддерживается более активно и развивается немного быстрее, чем - оригинальный пакет Pkg-config. -

    -
  • -
  • -

    - Procps-NG -

    -

    - Этот пакет содержит программы для мониторинга процессов. Набор - полезен для системного администрирования, а также используются - загрузочными сценариями LFS. -

    -
  • -
  • -

    - Psmisc -

    -

    - Этот пакет содержит программы для отображения информации о - запущенных процессах. Этот набор программ полезен для - системного администрирования. -

    -
  • -
  • -

    - Python 3 -

    -

    - Этот пакет предоставляет интерпретируемый язык - программирования, философия которого делает упор на - удобочитаемость кода. -

    -
  • -
  • -

    - Readline -

    -

    - Этот пакет представляет собой набор библиотек, предлагающих - возможности редактирования командной строки и средства для - работы с историей команд. Используется командным - интерпретатором Bash. -

    -
  • -
  • -

    - Sed -

    -

    - Этот пакет позволяет редактировать текст, не открывая его в - текстовом редакторе. Он необходим сценариям настройки многих - пакетов LFS. -

    -
  • -
  • -

    - Shadow -

    -

    - Этот пакет содержит программы для безопасной обработки паролей. -

    -
  • -
  • -

    - Sysklogd -

    -

    - Этот пакет содержит программы для регистрации системных - сообщений, которые генерируются ядром или процессами демона при - возникновении необычных событий. -

    -
  • -
  • -

    - Sysvinit -

    -

    - Этот пакет содержит систему инициализации init, родительской элемент всех остальных - процессов в работающей системе Linux. -

    -
  • -
  • -

    - Udev -

    -

    - Этот пакет представляет собой диспетчер устройств. Он - контролирует разрешения, имена и символические ссылки устройств - в каталоге /dev, когда устройства добавляются или удаляются из - системы. -

    -
  • -
  • -

    - Tar -

    -

    - Этот пакет предоставляет возможность архивирования и извлечения - практически всех пакетов, используемых в LFS. -

    -
  • -
  • -

    - Tcl -

    -

    - Этот пакет содержит командный язык инструментов, используется - во многих наборах тестов. -

    -
  • -
  • -

    - Texinfo -

    -

    - Этот пакет предоставляет программы для чтения, записи и - преобразования информационных страниц. Используется в - процедурах установки многих пакетов LFS. -

    -
  • -
  • -

    - Util-linux -

    -

    - Этот пакет содержит различные служебные программы. Среди них - утилиты для работы с файловыми системами, консолями, разделами - и сообщениями. -

    -
  • -
  • -

    - Vim -

    -

    - Этот пакет содержит редактор. Его выбрали из-за совместимости с - классическим редактором vi и огромного количества возможностей. - Редактор является очень личным выбором для каждого - пользователя. По желанию можно заменить любым другим - редактором. -

    -
  • -
  • -

    - Wheel -

    -

    - Этот пакет содержит модуль Python, который представляет собой - эталонную реализацию механизма упаковки Python. -

    -
  • -
  • -

    - XML::Parser -

    -

    - Этот пакет представляет собой модуль Perl, который - взаимодействует с Expat. -

    -
  • -
  • -

    - XZ Utils -

    -

    - Этот пакет содержит программы для сжатия и распаковки файлов. - Он обеспечивает высокое сжатие и используется для распаковки - пакетов в формате XZ или LZMA. -

    -
  • -
  • -

    - Zlib -

    -

    - Этот пакет содержит процедуры сжатия и распаковки, используемые - некоторыми программами. -

    -
  • -
  • -

    - Zstd -

    -

    - Этот пакет содержит процедуры сжатия и распаковки, используемые - некоторыми программами. Он обеспечивает высокие коэффициенты - сжатия и очень широкий диапазон компромиссов между сжатием и - скоростью. -

    -
  • -
-
-
- - - diff --git a/lfs-12.0-sysv/prologue/preface.html b/lfs-12.0-sysv/prologue/preface.html deleted file mode 100644 index 2b2224a..0000000 --- a/lfs-12.0-sysv/prologue/preface.html +++ /dev/null @@ -1,93 +0,0 @@ - - - - - - Предисловие - - - - - - - - -
-

- Предисловие -

- -
- - - diff --git a/lfs-12.0-sysv/prologue/prerequisites.html b/lfs-12.0-sysv/prologue/prerequisites.html deleted file mode 100644 index 68c349d..0000000 --- a/lfs-12.0-sysv/prologue/prerequisites.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - Предпосылки - - - - - - - - -
-

- iv. - Предпосылки -

-

- Создание системы LFS — непростая задача. Это требует определенного - уровня знаний системного администрирования Unix для решения проблем и - правильного выполнения перечисленных команд. В частности, как - абсолютный минимум, Вы должны уметь пользоваться командной оболочкой - для копирования или перемещения файлов и каталогов, просмотра - содержимого каталогов и файлов и изменения текущего каталога. Также - ожидается, что у вас есть достаточные знания об использовании и - установке программного обеспечения в Linux. -

-

- Поскольку книга LFS предполагает наличие хотя бы этого базового уровня навыков, - различные форумы поддержки LFS вряд ли смогут предоставить вам - большую помощь в этих вопросах. Вы обнаружите, что ваши вопросы, - касающиеся таких базовых знаний, скорее всего, останутся без ответа - (или вас просто направят к списку основных материалов для - предварительного ознакомления). -

-

- Перед созданием системы LFS мы настоятельно рекомендуем прочитать - следующие статьи: -

-
-
    -
  • -

    - HOWTO по сборке программного обеспечения https://tldp.org/HOWTO/Software-Building-HOWTO.html -

    -

    - Это исчерпывающее руководство по сборке и установке - «универсальных» программ Unix под Linux. - Несмотря на то что руководство написано достаточно давно, оно - по-прежнему дает хороший обзор основных методов, применяемых - для сборки и установки программного обеспечения. -

    -
  • -
  • -

    - Руководство для начинающих по установке из исходников - https://moi.vonos.net/linux/beginners-installing-from-source/ -

    -

    - В этом руководстве содержится хороший обзор основных навыков и - методов, необходимых для сборки программ из исходного кода -

    -
  • -
-
-
- - - diff --git a/lfs-12.0-sysv/prologue/standards.html b/lfs-12.0-sysv/prologue/standards.html deleted file mode 100644 index 88eb973..0000000 --- a/lfs-12.0-sysv/prologue/standards.html +++ /dev/null @@ -1,376 +0,0 @@ - - - - - - LFS и стандарты - - - - - - - - -
-

- v. LFS и стандарты -

-

- Структура LFS максимально соответствует стандартам Linux. Первичными - стандартами являются: -

-
-
    -
  • -

    - POSIX.1-2008. -

    -
  • -
  • -

    - Filesystem - Hierarchy Standard (FHS) Version 3.0 -

    -
  • -
  • -

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

    -

    - LSB имеет четыре отдельных стандарта: Core, Desktop, Runtime - Languages и Imaging. Некоторые части спецификаций Core и - Desktop зависят от архитектуры. Есть также две области не - являющиеся обязательными: Gtk3 и Graphics. LFS старается - соответствовать стандартам LSB, для архитектур IA32 (32-bit - x86) или AMD64 (x86_64), рассмотренным в предыдущем разделе. -

    -
    - [Примечание] -

    - Примечание -

    -

    - Многие не согласны с требованиями LSB. Основные цели - стандартов - быть уверенным в том, что проприетарное ПО будет - правильно установлено и сможет корректно работать на - совместимой системе. Поскольку в LFS установка программ идёт - из исходных кодов, у пользователя имеется полный контроль над - тем, какие пакеты ему необходимы, вы можете не устанавливать - некоторые пакеты, определяемые в LSB. -

    -
    -
  • -
-
-

- Создать законченную систему, которая пройдет сертификационные тесты - LSB "с нуля" возможно, но этого нельзя сделать без установки - множества дополнительных пакетов, которые выходят за рамки этой - книги. Однако, инструкции по их установке можно найти в книге BLFS. -

-
-

- Пакеты LFS, которые необходимы для удовлетворения требований LSB -

- - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

- 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: -

-
-

- Нет -

-
-

- LSB Runtime - Languages: -

-
-

- Perl, Python -

-
-

- LSB - Imaging: -

-
-

- Нет -

-
-

- LSB Gtk3 и - LSB Graphics (Необязательные): -

-
-

- Нет -

-
-
-
-

- Пакеты, поставляемые BLFS, необходимые для удовлетворения - требований LSB -

- - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

- LSB - Core: -

-
-

- At, Batch (часть At), Cpio, Ed, Fcrontab, LSB-Tools, NSPR, - NSS, PAM, Pax, Sendmail (или Postfix, или 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: -

-
-

- Libxml2, Libxslt -

-
-

- LSB - Imaging: -

-
-

- CUPS, Cups-filters, Ghostscript, SANE -

-
-

- LSB Gtk3 и - LSB Graphics (Необязательные): -

-
-

- GTK3+ -

-
-
-
-

- Пакеты, не поставляемые LFS или BLFS, необходимые для - удовлетворения требований LSB -

- - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

- LSB - Core: -

-
-

- Нет -

-
-

- LSB - Desktop: -

-
-

- Qt4 (но предоставляется Qt5) -

-
-

- LSB Runtime - Languages: -

-
-

- Нет -

-
-

- LSB - Imaging: -

-
-

- Нет -

-
-

- LSB Gtk3 и - LSB Graphics (Необязательные): -

-
-

- Нет -

-
-
-
- - - diff --git a/lfs-12.0-sysv/prologue/typography.html b/lfs-12.0-sysv/prologue/typography.html deleted file mode 100644 index e75c188..0000000 --- a/lfs-12.0-sysv/prologue/typography.html +++ /dev/null @@ -1,190 +0,0 @@ - - - - - - Оформление - - - - - - - - -
-

- vii. Оформление -

-

- Чтобы облегчить понимание, в этой книге используются условные - обозначения. Этот раздел содержит примеры оформления, используемые в - Linux From Scratch. -

-
./configure --prefix=/usr
-

- Такое оформление предназначено для ввода именно так, как показано, - если иное не сказано в тексте рядом. Это оформление также - используется в разделах пояснений, чтобы указать, на какую команду - ссылается. -

-

- В некоторых случаях логическая строка расширяется до двух или более - физических строк с обратной косой чертой в конце строки. -

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

- Обратите внимание, что за обратной косой чертой должен следовать - перевод строки. Другие символы, такие как пробелы или символы - табуляции, приведут к неправильным результатам. -

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

- Такое оформление (текст фиксированной ширины) показывает вывод на - экран, как правило, в результате выполнения команд. Этот формат также - используется для отображения имен файлов, таких как /etc/ld.so.conf. -

-
- [Примечание] -

- Примечание -

-

- Пожалуйста, настройте свой браузер для отображения текста - фиксированной ширины с хорошим моноширинным шрифтом, с помощью - которого вы сможете четко различать символы Il1 или O0. -

-
-

- Акцент -

-

- Эта форма текста используется в книге для нескольких целей. Его - основная цель — подчеркнуть важные моменты. -

-

- https://mirror.linuxfromscratch.ru/ -

-

- Этот формат используется для гиперссылок как внутри сообщества LFS, - так и на внешние ресурсы. Может включать справочную информацию, места - загрузки и веб-сайты. -

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

- Этот формат используется при создании файлов конфигурации. Первая - команда указывает системе создать файл $LFS/etc/group из всего, что введено далее, пока не - встретится последовательность End Of File (EOF). Поэтому весь этот - раздел обычно печатается как есть. -

-

- <ЗАМЕНЯЕМЫЙ ТЕКСТ> -

-

- Этот формат используется для текста, который не должен быть напечатан - так, как отображается, или для операций копирования и вставки. -

-

- [НЕОБЯЗАТЕЛЬНЫЙ ТЕКСТ] -

-

- Этот формат используется для текста, который является необязательным. -

-

- passwd(5) -

-

- Этот формат используется для ссылки на определенную страницу - руководства (man). Число в скобках указывает на конкретный раздел - внутри руководств. Например, у passwd есть две справочные - страницы. В соответствии с инструкциями по установке LFS эти две - справочные страницы будут расположены в /usr/share/man/man1/passwd.1 и /usr/share/man/man5/passwd.5. Когда в книге - используется passwd(5), имеется в виду - конкретно /usr/share/man/man5/passwd.5. - man passwd напечатает - первую найденную справочную страницу, совпадающую с «passwd», которая будет - /usr/share/man/man1/passwd.1. В этом - примере вам нужно будет запустить man 5 - passwd, чтобы прочитать указанную страницу. Обратите - внимание, что большинство справочных страниц не имеют повторяющихся - страниц в разных разделах. Поэтому обычно достаточно man <имя - программы>. -

-
- - - diff --git a/lfs-12.0-sysv/scripts/apds01.html b/lfs-12.0-sysv/scripts/apds01.html deleted file mode 100644 index 1d203f3..0000000 --- a/lfs-12.0-sysv/scripts/apds01.html +++ /dev/null @@ -1,313 +0,0 @@ - - - - - - D.1. /etc/rc.d/init.d/rc - - - - - - - - -
-

- D.1. /etc/rc.d/init.d/rc -

-

- Скрипт rc это первый скрипт, - вызываемый системой инициализации init и инициирующий процесс загрузки. -

-
#!/bin/bash
-########################################################################
-# Begin rc
-#
-# Description : Main Run Level Control Script
-#
-# Authors     : Gerard Beekmans  - gerard@linuxfromscratch.org
-#             : DJ Lucas - dj@linuxfromscratch.org
-# Updates     : Bruce Dubbs - bdubbs@linuxfromscratch.org
-#             : Pierre Labastie - pierre@linuxfromscratch.org
-#
-# Version     : LFS 7.0
-#
-# Notes       : Updates March 24th, 2022: new semantics of S/K files
-#               - Instead of testing that S scripts were K scripts in the
-#                 previous runlevel, test that they were not S scripts
-#               - Instead of testing that K scripts were S scripts in the
-#                 previous runlevel, test that they were not K scripts
-#               - S scripts in runlevel 0 or 6 are now run with
-#                "script start" (was "script stop" previously).
-########################################################################
-
-. /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@lists.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 /run/interactive ] && source /run/interactive
-
-# Stop all services marked as K, except if marked as K in the previous
-# runlevel: it is the responsibility of the script to not try to kill
-# a non running service
-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]}
-      [ -e /etc/rc.d/rc${previous}.d/K[0-9][0-9]$suffix ] && continue
-
-      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 services marked as S in this runlevel, except if marked as
-# S in the previous runlevel
-# it is the responsibility of the script to not try to start an already running
-# service
-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]}
-      [ -e /etc/rc.d/rc${previous}.d/S[0-9][0-9]$suffix ] && continue
-   fi
-
-   check_script_status
-   if [ "${SCRIPT_STAT}" == "1" ]; then
-      SCRIPT_STAT="0"
-      continue
-   fi
-
-   run ${i} start
-
-   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\"" > /run/interactive
-else
-    rm -f /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
-
-
- - - diff --git a/lfs-12.0-sysv/scripts/apds02.html b/lfs-12.0-sysv/scripts/apds02.html deleted file mode 100644 index 43d4727..0000000 --- a/lfs-12.0-sysv/scripts/apds02.html +++ /dev/null @@ -1,892 +0,0 @@ - - - - - - D.2. /lib/lsb/init-functions - - - - - - - - -
-

- D.2. - /lib/lsb/init-functions -

-
#!/bin/sh
-########################################################################
-#
-# Begin /lib/lsb/init-funtions
-#
-# Description : Run Level Control Functions
-#
-# Authors     : Gerard Beekmans - gerard@linuxfromscratch.org
-#             : DJ Lucas - dj@linuxfromscratch.org
-# Update      : Bruce Dubbs - bdubbs@linuxfromscratch.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) responsibility
-        # 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) responsibility
-    # 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.
-
-            progname=${program##*/}
-
-            if [[ -e "/run/${progname}.pid" ]]; then
-                pidfile="/run/${progname}.pid"
-                rm -f "${pidfile}"
-            fi
-
-            # 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 "/run/${progname}.pid" ]; then
-                rm -f "/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 "/run/${progname}.pid" ]; then
-            pidfile="/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 "/run/${base}.pid" ]; then
-         /bin/echo -e "${WARNING}${1} is not running but" \
-            "/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 failure 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} ]                                            #
-#                                                                              #
-# 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 of -{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
-
-
- - - diff --git a/lfs-12.0-sysv/scripts/apds03.html b/lfs-12.0-sysv/scripts/apds03.html deleted file mode 100644 index eba93b9..0000000 --- a/lfs-12.0-sysv/scripts/apds03.html +++ /dev/null @@ -1,186 +0,0 @@ - - - - - - D.3. /etc/rc.d/init.d/mountvirtfs - - - - - - - - -
-

- D.3. - /etc/rc.d/init.d/mountvirtfs -

-
#!/bin/sh
-########################################################################
-# Begin mountvirtfs
-#
-# Description : Ensure proc, sysfs, run, and dev are mounted
-#
-# Authors     : Gerard Beekmans - gerard@linuxfromscratch.org
-#               DJ Lucas - dj@linuxfromscratch.org
-# Update      : Bruce Dubbs - bdubbs@linuxfromscratch.org
-#               Xi Ruoyao - xry111@xry111.site
-#
-# Version     : LFS 12.0
-#
-########################################################################
-
-### BEGIN INIT INFO
-# Provides:            mountvirtfs
-# Required-Start:      $first
-# Should-Start:
-# Required-Stop:
-# Should-Stop:
-# Default-Start:       S
-# Default-Stop:
-# Short-Description:   Mounts various special fs needed at start
-# Description:         Mounts /sys and /proc virtual (kernel) filesystems.
-#                      Mounts /run (tmpfs) and /dev (devtmpfs).
-#                      This is done only if they are not already mounted.
-#                      with the kernel config proposed in the book, dev
-#                      should be automatically mounted by the kernel.
-# 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 
-      chmod 1777 /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
-
-      mkdir -p /dev/shm
-      log_info_msg2 " ${INFO}/dev/shm"
-      mount -o nosuid,nodev /dev/shm || failed=1
-
-      mkdir -p /sys/fs/cgroup
-      log_info_msg2 " ${INFO}/sys/fs/cgroup"
-      mount -o nosuid,noexec,nodev /sys/fs/cgroup || failed=1
-
-      (exit ${failed})
-      evaluate_retval
-      if [ "${failed}" = 1 ]; then
-         exit 1
-      fi
-
-      log_info_msg "Create symlinks in /dev targeting /proc: ${INFO}/dev/stdin"
-      ln -sf /proc/self/fd/0 /dev/stdin  || failed=1
-
-      log_info_msg2 " ${INFO}/dev/stdout"
-      ln -sf /proc/self/fd/1 /dev/stdout || failed=1
-
-      log_info_msg2 " ${INFO}/dev/stderr"
-      ln -sf /proc/self/fd/2 /dev/stderr || failed=1
-
-      log_info_msg2 " ${INFO}/dev/fd"
-      ln -sf /proc/self/fd   /dev/fd     || failed=1
-
-      if [ -e /proc/kcore ]; then
-         log_info_msg2 " ${INFO}/dev/core"
-         ln -sf /proc/kcore  /dev/core   || failed=1
-      fi
-
-      (exit ${failed})
-      evaluate_retval
-      exit $failed
-      ;;
-
-   *)
-      echo "Usage: ${0} {start}"
-      exit 1
-      ;;
-esac
-
-# End mountvirtfs
-
-
- - - diff --git a/lfs-12.0-sysv/scripts/apds04.html b/lfs-12.0-sysv/scripts/apds04.html deleted file mode 100644 index 05dc2b1..0000000 --- a/lfs-12.0-sysv/scripts/apds04.html +++ /dev/null @@ -1,163 +0,0 @@ - - - - - - D.4. /etc/rc.d/init.d/modules - - - - - - - - -
-

- D.4. /etc/rc.d/init.d/modules -

-
#!/bin/sh
-########################################################################
-# Begin modules
-#
-# Description : Module auto-loading script
-#
-# Authors     : Zack Winkles
-#               DJ Lucas - dj@linuxfromscratch.org
-# Update      : Bruce Dubbs - bdubbs@linuxfromscratch.org
-#
-# Version     : LFS 7.0
-#
-########################################################################
-
-### BEGIN INIT INFO
-# Provides:            modules
-# Required-Start:      mountvirtfs
-# 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
-      grep -E -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
-
-
- - - diff --git a/lfs-12.0-sysv/scripts/apds05.html b/lfs-12.0-sysv/scripts/apds05.html deleted file mode 100644 index 1e9b5b3..0000000 --- a/lfs-12.0-sysv/scripts/apds05.html +++ /dev/null @@ -1,158 +0,0 @@ - - - - - - D.5. /etc/rc.d/init.d/udev - - - - - - - - -
-

- 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@linuxfromscratch.org
-# Update      : Bruce Dubbs - bdubbs@linuxfromscratch.org
-#               Xi Ruoyao - xry111@xry111.site
-#
-# Version     : LFS 12.0
-#
-########################################################################
-
-### BEGIN INIT INFO
-# Provides:            udev $time
-# Required-Start:      localnet
-# 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
-      SYSTEMD_LOG_TARGET=kmsg /sbin/udevd --daemon
-
-      # Now traverse /sys in order to "coldplug" devices that have
-      # already been discovered
-      /bin/udevadm trigger --action=add    --type=subsystems
-      /bin/udevadm trigger --action=add    --type=devices
-      /bin/udevadm trigger --action=change --type=devices
-
-      # Now wait for udevd to process the uevents we triggered
-      if ! is_true "$OMIT_UDEV_SETTLE"; then
-         /bin/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
-
-
- - - diff --git a/lfs-12.0-sysv/scripts/apds06.html b/lfs-12.0-sysv/scripts/apds06.html deleted file mode 100644 index 69ad1e2..0000000 --- a/lfs-12.0-sysv/scripts/apds06.html +++ /dev/null @@ -1,144 +0,0 @@ - - - - - - D.6. /etc/rc.d/init.d/swap - - - - - - - - -
-

- D.6. /etc/rc.d/init.d/swap -

-
#!/bin/sh
-########################################################################
-# Begin swap
-#
-# Description : Swap Control Script
-#
-# Authors     : Gerard Beekmans - gerard@linuxfromscratch.org
-#               DJ Lucas - dj@linuxfromscratch.org
-# Update      : Bruce Dubbs - bdubbs@linuxfromscratch.org
-#
-# Version     : LFS 7.0
-#
-########################################################################
-
-### BEGIN INIT INFO
-# Provides:            swap
-# Required-Start:      udev
-# Should-Start:        modules
-# Required-Stop:       localnet
-# Should-Stop:         $local_fs
-# Default-Start:       S
-# Default-Stop:        0 6
-# Short-Description:   Activates and deactivates swap partitions.
-# Description:         Activates and deactivates 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
-
-
- - - diff --git a/lfs-12.0-sysv/scripts/apds07.html b/lfs-12.0-sysv/scripts/apds07.html deleted file mode 100644 index c80209a..0000000 --- a/lfs-12.0-sysv/scripts/apds07.html +++ /dev/null @@ -1,144 +0,0 @@ - - - - - - D.7. /etc/rc.d/init.d/setclock - - - - - - - - -
-

- D.7. /etc/rc.d/init.d/setclock -

-
#!/bin/sh
-########################################################################
-# Begin setclock
-#
-# Description : Setting Linux Clock
-#
-# Authors     : Gerard Beekmans - gerard@linuxfromscratch.org
-#               DJ Lucas - dj@linuxfromscratch.org
-# Update      : Bruce Dubbs - bdubbs@linuxfromscratch.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
-### 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
-
-
- - - diff --git a/lfs-12.0-sysv/scripts/apds08.html b/lfs-12.0-sysv/scripts/apds08.html deleted file mode 100644 index a773e18..0000000 --- a/lfs-12.0-sysv/scripts/apds08.html +++ /dev/null @@ -1,230 +0,0 @@ - - - - - - D.8. /etc/rc.d/init.d/checkfs - - - - - - - - -
-

- D.8. /etc/rc.d/init.d/checkfs -

-
#!/bin/sh
-########################################################################
-# Begin checkfs
-#
-# Description : File System Check
-#
-# Authors     : Gerard Beekmans - gerard@linuxfromscratch.org
-#               A. Luebke - luebke@users.sourceforge.net
-#               DJ Lucas - dj@linuxfromscratch.org
-# Update      : Bruce Dubbs - bdubbs@linuxfromscratch.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
-# Should-Start:
-# Required-Stop:
-# Should-Stop:
-# Default-Start:       S
-# Default-Stop:
-# Short-Description:   Checks local filesystems before mounting.
-# Description:         Checks local filesystems 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
-
-
- - - diff --git a/lfs-12.0-sysv/scripts/apds09.html b/lfs-12.0-sysv/scripts/apds09.html deleted file mode 100644 index 8d29e43..0000000 --- a/lfs-12.0-sysv/scripts/apds09.html +++ /dev/null @@ -1,164 +0,0 @@ - - - - - - D.9. /etc/rc.d/init.d/mountfs - - - - - - - - -
-

- D.9. /etc/rc.d/init.d/mountfs -

-
#!/bin/sh
-########################################################################
-# Begin mountfs
-#
-# Description : File System Mount Script
-#
-# Authors     : Gerard Beekmans - gerard@linuxfromscratch.org
-#               DJ Lucas - dj@linuxfromscratch.org
-# Update      : Bruce Dubbs - bdubbs@linuxfromscratch.org
-#
-# Version     : LFS 7.0
-#
-########################################################################
-
-### BEGIN INIT INFO
-# Provides:            $local_fs
-# Required-Start:      udev checkfs
-# Should-Start:        modules
-# Required-Stop:       localnet
-# 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..."
-      failed=0
-      mount --all --test-opts no_netdev >/dev/null || failed=1
-      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 devices 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
-      if [ -r /etc/mdadm.conf ]; then
-         log_info_msg "Mark arrays as clean..."
-         mdadm --wait-clean --scan
-         evaluate_retval
-      fi
-      ;;
-
-   *)
-      echo "Usage: ${0} {start|stop}"
-      exit 1
-      ;;
-esac
-
-# End mountfs
-
-
- - - diff --git a/lfs-12.0-sysv/scripts/apds10.html b/lfs-12.0-sysv/scripts/apds10.html deleted file mode 100644 index adf160c..0000000 --- a/lfs-12.0-sysv/scripts/apds10.html +++ /dev/null @@ -1,155 +0,0 @@ - - - - - - D.10. /etc/rc.d/init.d/udev_retry - - - - - - - - -
-

- 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@linuxfromscratch.org
-# Update      : Bruce Dubbs - bdubbs@linuxfromscratch.org
-#               Bryan Kadzban -
-#
-# Version     : LFS 7.0
-#
-########################################################################
-
-### BEGIN INIT INFO
-# Provides:            udev_retry
-# Required-Start:      udev
-# Should-Start:        $local_fs cleanfs
-# 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..."
-
-      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
-            /bin/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
-         /bin/udevadm settle
-      fi
-
-      evaluate_retval
-      ;;
-
-   *)
-      echo "Usage ${0} {start}"
-      exit 1
-      ;;
-esac
-
-exit 0
-
-# End udev_retry
-
-
- - - diff --git a/lfs-12.0-sysv/scripts/apds11.html b/lfs-12.0-sysv/scripts/apds11.html deleted file mode 100644 index bc63aab..0000000 --- a/lfs-12.0-sysv/scripts/apds11.html +++ /dev/null @@ -1,203 +0,0 @@ - - - - - - D.11. /etc/rc.d/init.d/cleanfs - - - - - - - - -
-

- D.11. /etc/rc.d/init.d/cleanfs -

-
#!/bin/sh
-########################################################################
-# Begin cleanfs
-#
-# Description : Clean file system
-#
-# Authors     : Gerard Beekmans - gerard@linuxfromscratch.org
-#               DJ Lucas - dj@linuxfromscratch.org
-# Update      : Bruce Dubbs - bdubbs@linuxfromscratch.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 /run, /var/lock, and
-#                      optionally, /tmp.  cleanfs also creates /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
-
-      > /run/utmp
-
-      if grep -q '^utmp:' /etc/group ; then
-         chmod 664 /run/utmp
-         chgrp utmp /run/utmp
-      fi
-
-      (exit ${failed})
-      evaluate_retval
-
-      if grep -E -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
-
-
- - - diff --git a/lfs-12.0-sysv/scripts/apds12.html b/lfs-12.0-sysv/scripts/apds12.html deleted file mode 100644 index 28cf650..0000000 --- a/lfs-12.0-sysv/scripts/apds12.html +++ /dev/null @@ -1,188 +0,0 @@ - - - - - - D.12. /etc/rc.d/init.d/console - - - - - - - - -
-

- D.12. /etc/rc.d/init.d/console -

-
#!/bin/sh
-########################################################################
-# Begin console
-#
-# Description : Sets keymap and screen font
-#
-# Authors     : Gerard Beekmans - gerard@linuxfromscratch.org
-#               Alexander E. Patrakov
-#               DJ Lucas - dj@linuxfromscratch.org
-# Update      : Bruce Dubbs - bdubbs@linuxfromscratch.org
-#
-# Version     : LFS 7.0
-#
-########################################################################
-
-### BEGIN INIT INFO
-# Provides:            console
-# Required-Start:      $local_fs
-# Should-Start:        udev_retry
-# 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
-
-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
-
-
- - - diff --git a/lfs-12.0-sysv/scripts/apds13.html b/lfs-12.0-sysv/scripts/apds13.html deleted file mode 100644 index 8034472..0000000 --- a/lfs-12.0-sysv/scripts/apds13.html +++ /dev/null @@ -1,151 +0,0 @@ - - - - - - D.13. /etc/rc.d/init.d/localnet - - - - - - - - -
-

- D.13. /etc/rc.d/init.d/localnet -

-
#!/bin/sh
-########################################################################
-# Begin localnet
-#
-# Description : Loopback device
-#
-# Authors     : Gerard Beekmans  - gerard@linuxfromscratch.org
-#               DJ Lucas - dj@linuxfromscratch.org
-# Update      : Bruce Dubbs - bdubbs@linuxfromscratch.org
-#
-# Version     : LFS 7.0
-#
-########################################################################
-
-### BEGIN INIT INFO
-# Provides:            localnet
-# Required-Start:      mountvirtfs
-# Should-Start:        modules
-# 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
-
-
- - - diff --git a/lfs-12.0-sysv/scripts/apds14.html b/lfs-12.0-sysv/scripts/apds14.html deleted file mode 100644 index 16847e1..0000000 --- a/lfs-12.0-sysv/scripts/apds14.html +++ /dev/null @@ -1,136 +0,0 @@ - - - - - - D.14. /etc/rc.d/init.d/sysctl - - - - - - - - -
-

- 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@linuxfromscratch.org)
-#               Matthew Burgress (matthew@linuxfromscratch.org)
-#               DJ Lucas - dj@linuxfromscratch.org
-# Update      : Bruce Dubbs - bdubbs@linuxfromscratch.org
-#
-# Version     : LFS 7.0
-#
-########################################################################
-
-### BEGIN INIT INFO
-# Provides:            sysctl
-# Required-Start:      mountvirtfs
-# Should-Start:        console
-# 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
-
-
- - - diff --git a/lfs-12.0-sysv/scripts/apds15.html b/lfs-12.0-sysv/scripts/apds15.html deleted file mode 100644 index e7e8383..0000000 --- a/lfs-12.0-sysv/scripts/apds15.html +++ /dev/null @@ -1,160 +0,0 @@ - - - - - - D.15. /etc/rc.d/init.d/sysklogd - - - - - - - - -
-

- D.15. /etc/rc.d/init.d/sysklogd -

-
#!/bin/sh
-########################################################################
-# Begin sysklogd
-#
-# Description : Sysklogd loader
-#
-# Authors     : Gerard Beekmans - gerard@linuxfromscratch.org
-#               DJ Lucas - dj@linuxfromscratch.org
-# Update      : Bruce Dubbs - bdubbs@linuxfromscratch.org
-#
-# Version     : LFS 7.0
-#
-########################################################################
-
-### BEGIN INIT INFO
-# Provides:            $syslog
-# Required-Start:      $first localnet
-# Should-Start:
-# Required-Stop:       $local_fs
-# Should-Stop:         sendsignals
-# Default-Start:       2 3 4 5
-# Default-Stop:        0 1 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
-
-. /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
-
-
- - - diff --git a/lfs-12.0-sysv/scripts/apds16.html b/lfs-12.0-sysv/scripts/apds16.html deleted file mode 100644 index cffc592..0000000 --- a/lfs-12.0-sysv/scripts/apds16.html +++ /dev/null @@ -1,171 +0,0 @@ - - - - - - D.16. /etc/rc.d/init.d/network - - - - - - - - -
-

- D.16. /etc/rc.d/init.d/network -

-
#!/bin/sh
-########################################################################
-# Begin network
-#
-# Description : Network Control Script
-#
-# Authors     : Gerard Beekmans - gerard@linuxfromscratch.org
-#               Nathan Coulson - nathan@linuxfromscratch.org
-#               Kevin P. Fleming - kpfleming@linuxfromscratch.org
-#               DJ Lucas - dj@linuxfromscratch.org
-# Update      : Bruce Dubbs - bdubbs@linuxfromscratch.org
-#
-# Version     : LFS 7.0
-#
-########################################################################
-
-### BEGIN INIT INFO
-# Provides:            $network
-# Required-Start:      $local_fs localnet swap
-# Should-Start:        $syslog firewalld iptables nftables
-# Required-Stop:       $local_fs localnet swap
-# Should-Stop:         $syslog firewalld iptables nftables
-# Default-Start:       2 3 4 5
-# Default-Stop:        0 1 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)
-      # if the default route exists, network is already configured
-      if ip route | grep -q "^default"; then return 0; fi
-      # 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
-
-         # See if interface exists
-         if [ ! -e /sys/class/net/$interface ]; then continue; fi
-
-         # Is interface UP?
-         ip link show $interface 2>/dev/null | grep -q "state UP"
-         if [ $? -ne 0 ];  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
-
-
- - - diff --git a/lfs-12.0-sysv/scripts/apds17.html b/lfs-12.0-sysv/scripts/apds17.html deleted file mode 100644 index f67d58a..0000000 --- a/lfs-12.0-sysv/scripts/apds17.html +++ /dev/null @@ -1,151 +0,0 @@ - - - - - - D.17. /etc/rc.d/init.d/sendsignals - - - - - - - - -
-

- D.17. - /etc/rc.d/init.d/sendsignals -

-
#!/bin/sh
-########################################################################
-# Begin sendsignals
-#
-# Description : Sendsignals Script
-#
-# Authors     : Gerard Beekmans - gerard@linuxfromscratch.org
-#               DJ Lucas - dj@linuxfromscratch.org
-# Update      : Bruce Dubbs - bdubbs@linuxfromscratch.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)
-      omit=$(pidof mdmon)
-      [ -n "$omit" ] && omit="-o $omit"
-
-      log_info_msg "Sending all processes the TERM signal..."
-      killall5 -15 $omit
-      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 $omit
-      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
-
-
- - - diff --git a/lfs-12.0-sysv/scripts/apds18.html b/lfs-12.0-sysv/scripts/apds18.html deleted file mode 100644 index 235459c..0000000 --- a/lfs-12.0-sysv/scripts/apds18.html +++ /dev/null @@ -1,129 +0,0 @@ - - - - - - D.18. /etc/rc.d/init.d/reboot - - - - - - - - -
-

- D.18. - /etc/rc.d/init.d/reboot -

-
#!/bin/sh
-########################################################################
-# Begin reboot
-#
-# Description : Reboot Scripts
-#
-# Authors     : Gerard Beekmans - gerard@linuxfromscratch.org
-#               DJ Lucas - dj@linuxfromscratch.org
-# Updates     : Bruce Dubbs - bdubbs@linuxfromscratch.org
-#             : Pierre Labastie - pierre@linuxfromscratch.org
-#
-# Version     : LFS 7.0
-#
-# Notes       : Update March 24th, 2022: change "stop" to "start".
-#               Add the $last facility to Required-start
-#
-########################################################################
-
-### BEGIN INIT INFO
-# Provides:            reboot
-# Required-Start:      $last
-# 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
-   start)
-      log_info_msg "Restarting system..."
-      reboot -d -f -i
-      ;;
-
-   *)
-      echo "Usage: ${0} {start}"
-      exit 1
-      ;;
-
-esac
-
-# End reboot
-
-
- - - diff --git a/lfs-12.0-sysv/scripts/apds19.html b/lfs-12.0-sysv/scripts/apds19.html deleted file mode 100644 index 7836407..0000000 --- a/lfs-12.0-sysv/scripts/apds19.html +++ /dev/null @@ -1,124 +0,0 @@ - - - - - - D.19. /etc/rc.d/init.d/halt - - - - - - - - -
-

- D.19. /etc/rc.d/init.d/halt -

-
#!/bin/sh
-########################################################################
-# Begin halt
-#
-# Description : Halt Script
-#
-# Authors     : Gerard Beekmans - gerard@linuxfromscratch.org
-#               DJ Lucas - dj@linuxfromscratch.org
-# Update      : Bruce Dubbs - bdubbs@linuxfromscratch.org
-#             : Pierre Labastie - pierre@linuxfromscratch.org
-#
-# Version     : LFS 7.0
-#
-# Notes       : Update March 24th, 2022: change "stop" to "start".
-#               Add the $last facility to Required-start
-#
-########################################################################
-
-### BEGIN INIT INFO
-# Provides:            halt
-# Required-Start:      $last
-# 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
-   start)
-      halt -d -f -i -p
-      ;;
-
-   *)
-      echo "Usage: {start}"
-      exit 1
-      ;;
-esac
-
-# End halt
-
-
- - - diff --git a/lfs-12.0-sysv/scripts/apds20.html b/lfs-12.0-sysv/scripts/apds20.html deleted file mode 100644 index 6c8f39f..0000000 --- a/lfs-12.0-sysv/scripts/apds20.html +++ /dev/null @@ -1,150 +0,0 @@ - - - - - - D.20. /etc/rc.d/init.d/template - - - - - - - - -
-

- 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..."
-    # if it is possible to use start_daemon
-      start_daemon fully_qualified_path
-    # if it is not possible to use start_daemon
-    # (command to start the daemon is not simple enough)
-      if ! pidofproc daemon_name_as_reported_by_ps >/dev/null; then
-         command_to_start_the_service
-      fi
-      evaluate_retval
-      ;;
-
-   stop)
-      log_info_msg "Stopping..."
-    # if it is possible to use killproc
-      killproc fully_qualified_path
-    # if it is not possible to use killproc
-    # (the daemon shouldn't be stopped by killing it)
-      if pidofproc daemon_name_as_reported_by_ps >/dev/null; then
-         command_to_stop_the_service
-      fi
-      evaluate_retval
-      ;;
-
-   restart)
-      ${0} stop
-      sleep 1
-      ${0} start
-      ;;
-
-   *)
-      echo "Usage: ${0} {start|stop|restart}"
-      exit 1
-      ;;
-esac
-
-exit 0
-
-# End scriptname
-
-
- - - diff --git a/lfs-12.0-sysv/scripts/apds21.html b/lfs-12.0-sysv/scripts/apds21.html deleted file mode 100644 index f664453..0000000 --- a/lfs-12.0-sysv/scripts/apds21.html +++ /dev/null @@ -1,100 +0,0 @@ - - - - - - D.21. /etc/sysconfig/modules - - - - - - - - -
-

- 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
-
-
- - - diff --git a/lfs-12.0-sysv/scripts/apds22.html b/lfs-12.0-sysv/scripts/apds22.html deleted file mode 100644 index e63b800..0000000 --- a/lfs-12.0-sysv/scripts/apds22.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - - - D.22. /etc/sysconfig/createfiles - - - - - - - - -
-

- 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 device
-#                       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
-
-
- - - diff --git a/lfs-12.0-sysv/scripts/apds23.html b/lfs-12.0-sysv/scripts/apds23.html deleted file mode 100644 index ad56c00..0000000 --- a/lfs-12.0-sysv/scripts/apds23.html +++ /dev/null @@ -1,100 +0,0 @@ - - - - - - D.23. /etc/sysconfig/udev-retry - - - - - - - - -
-

- 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
-
-
- - - diff --git a/lfs-12.0-sysv/scripts/apds24.html b/lfs-12.0-sysv/scripts/apds24.html deleted file mode 100644 index 93037ff..0000000 --- a/lfs-12.0-sysv/scripts/apds24.html +++ /dev/null @@ -1,229 +0,0 @@ - - - - - - D.24. /sbin/ifup - - - - - - - - -
-

- D.24. /sbin/ifup -

-
#!/bin/sh
-########################################################################
-# Begin /sbin/ifup
-#
-# Description : Interface Up
-#
-# Authors     : Nathan Coulson - nathan@linuxfromscratch.org
-#               Kevin P. Fleming - kpfleming@linuxfromscratch.org
-# Update      : Bruce Dubbs - bdubbs@linuxfromscratch.org
-#               DJ Lucas - dj@linuxfromscratch.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()
-{
-  log_info_msg "Bringing up the ${1} interface..."
-
-  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 "Interface ${IFACE} doesn't exist."
-     exit 1
-  fi
-
-  evaluate_retval
-}
-
-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
-
-if [ ! -r "${file}" ]; then
-   log_failure_msg "Unable to bring up ${1} interface! ${file} is missing or cannot be accessed."
-   exit 1
-fi
-
-.  $file
-
-if [ "$IFACE" = "" ]; then
-   log_failure_msg "Unable to bring up ${1} interface! ${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
-   exit 0
-fi
-
-# Bring up the interface
-if [ "$VIRTINT" != "yes" ]; then
-   up ${IFACE}
-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
-
-# Set link up virtual interfaces
-if [ "${VIRTINT}" == "yes" ]; then
-   up ${IFACE}
-fi
-
-# Bring up any additional interface components
-for I in $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_warning_msg "Gateway already setup; skipping."
-   else
-      log_info_msg "Adding default gateway ${GATEWAY} to the ${IFACE} interface..."
-      ip route add default via ${GATEWAY} dev ${IFACE}
-      evaluate_retval
-   fi
-fi
-
-# End /sbin/ifup
-
-
- - - diff --git a/lfs-12.0-sysv/scripts/apds25.html b/lfs-12.0-sysv/scripts/apds25.html deleted file mode 100644 index 4b65350..0000000 --- a/lfs-12.0-sysv/scripts/apds25.html +++ /dev/null @@ -1,179 +0,0 @@ - - - - - - D.25. /sbin/ifdown - - - - - - - - -
-

- D.25. /sbin/ifdown -

-
#!/bin/bash
-########################################################################
-# Begin /sbin/ifdown
-#
-# Description : Interface Down
-#
-# Authors     : Nathan Coulson - nathan@linuxfromscratch.org
-#               Kevin P. Fleming - kpfleming@linuxfromscratch.org
-# Update      : Bruce Dubbs - bdubbs@linuxfromscratch.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
-
-
- - - diff --git a/lfs-12.0-sysv/scripts/apds26.html b/lfs-12.0-sysv/scripts/apds26.html deleted file mode 100644 index e66cce8..0000000 --- a/lfs-12.0-sysv/scripts/apds26.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - D.26. /lib/services/ipv4-static - - - - - - - - -
-

- D.26. - /lib/services/ipv4-static -

-
#!/bin/sh
-########################################################################
-# Begin /lib/services/ipv4-static
-#
-# Description : IPV4 Static Boot Script
-#
-# Authors     : Nathan Coulson - nathan@linuxfromscratch.org
-#               Kevin P. Fleming - kpfleming@linuxfromscratch.org
-# Update      : Bruce Dubbs - bdubbs@linuxfromscratch.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
-         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
-
-
- - - diff --git a/lfs-12.0-sysv/scripts/apds27.html b/lfs-12.0-sysv/scripts/apds27.html deleted file mode 100644 index f20985d..0000000 --- a/lfs-12.0-sysv/scripts/apds27.html +++ /dev/null @@ -1,180 +0,0 @@ - - - - - - D.27. /lib/services/ipv4-static-route - - - - - - - - -
-

- 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@linuxfromscratch.org
-# Update      : Bruce Dubbs - bdubbs@linuxfromscratch.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
-
-
- - - diff --git a/lfs-12.0-sysv/scripts/apes01.html b/lfs-12.0-sysv/scripts/apes01.html deleted file mode 100644 index 72ed4fc..0000000 --- a/lfs-12.0-sysv/scripts/apes01.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - E.1. 55-lfs.rules - - - - - - - - -
-

- 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"
-
-
-
- - - diff --git a/lfs-12.0-sysv/scripts/scripts.html b/lfs-12.0-sysv/scripts/scripts.html deleted file mode 100644 index a15ff16..0000000 --- a/lfs-12.0-sysv/scripts/scripts.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - Приложение D. Скрипты загрузки и настройки системы-20230728 - - - - - - - - -
-

- D. Скрипты загрузки и настройки - системы-20230728 -

-

- Скрипты в приложении перечислены с указанием каталога, в котором они - обычно находятся. Порядок такой: /etc/rc.d/init.d, /etc/sysconfig, /etc/sysconfig/network-devices, и /etc/sysconfig/network-devices/services. В каждом - разделе файлы перечислены в том порядке, в котором они обычно - вызываются. -

-
- - - diff --git a/lfs-12.0-sysv/scripts/udev-rules.html b/lfs-12.0-sysv/scripts/udev-rules.html deleted file mode 100644 index 2a3d507..0000000 --- a/lfs-12.0-sysv/scripts/udev-rules.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - Приложение E. Правила настройки Udev - - - - - - - - -
-

- E. Правила настройки Udev -

-

- Правила в этом приложении перечислены для удобства. Установка обычно - выполняются с помощью инструкций приведенных в Раздел 8.74, «Udev из - Systemd-254». -

-
- - - diff --git a/lfs-12.0-sysv/stylesheets/lfs-print.css b/lfs-12.0-sysv/stylesheets/lfs-print.css deleted file mode 100644 index 75f05d4..0000000 --- a/lfs-12.0-sysv/stylesheets/lfs-print.css +++ /dev/null @@ -1,14 +0,0 @@ -@import url(lfs.css); - -.navfooter, .headerlinks { - display: none; -} - -div.navheader { - position: absolute; -} - -div.navheader ul, -div.navheader ul{ - display: none; -} diff --git a/lfs-12.0-sysv/stylesheets/lfs.css b/lfs-12.0-sysv/stylesheets/lfs.css deleted file mode 100644 index 0e404b5..0000000 --- a/lfs-12.0-sysv/stylesheets/lfs.css +++ /dev/null @@ -1,639 +0,0 @@ -/* Global settings */ -body { - font-family: verdana, tahoma, helvetica, arial, sans-serif; - text-align: left; - background: #fff; - color: #222; - margin: 1em; - padding: 0; - font-size: 1em; - line-height: 1.2em -} - - -/* Links */ -a:link { color: #22b; } -a.ulink:link { font-weight: bold; color: #55f; } -a:visited { color: #7e4988 ! important; } -a:hover, a:focus { color: #d30e08 ! important; } -a:active { color: #6b77b1 ! important;} - - -/* Book titlepage */ -.book .titlepage { - background: #f5f6f7; - margin: 0px auto; - padding: 0 1em; -} - -.book hr { - background: #dbddec; - height: .3em; - border: 0px; - margin: 0 -1em; - padding: 0; -} - -div.dedication { - padding-left: 1em; -} - - -/* Sections */ -div.sect1, div.appendix { - padding-left: .3em; -} - -div.important ul { - padding-left: 1.5em; - list-style-type: disc; -} - -div.important ul li p { - margin: 0px; - padding: 0px 0.6em; -} - -.package, .kernel, .installation, .commands, .testing, .configuration, .content { - padding: 0 .5em .2em 0; - margin: 0; -} - -.lfs .package { - background: #f5f6f7; - border-bottom: 0.2em solid #dbddec; - padding-top: .1em; - margin-top: 0; -} - -.lfs .configuration { - background: #fefefe; - border-top: 0.2em solid #dbddec; -} - -.lfs .content { - background: #f5f6f7; - border-top: 0.2em solid #dbddec; - padding-bottom: .1em; - margin-bottom: 0; -} - - -/* Headers */ -h1, h2, h3, h4, h5, h6, b, .strong { - color: #000; - font-weight: bold; - line-height: 1em; -} - -h1 { - font-size: 173%; - text-align: center; -} - -.book h1 { - margin: 0; - padding: 0.4em; -} - -.preface h1, .part h1, .chapter h1, .appendix h1, .index h1, .sect1 h1, .glossary h1 { - background: #f5f6f7; - border-bottom: .1em solid #dbddec; - margin-bottom: 1em; - margin-top: 0; - padding: .4em; -} - -.sect1 h1, .appendix h1 { - margin-left: -.2em; -} - -.wrap h1 { - background: #f5f6f7; - margin: 0; - padding: .4em; -} - -h1.title sup { - font-size: small; -} - -h2 { - font-size: 144%; -} - -.book h2.subtitle { - text-align: center; - background: #dbddec; - margin: 0; - padding: 0.2em; -} - -.appendix h2 { - font-size: 133%; - margin-top: .8em; - margin-bottom: 0.2em; -} - -h3 { - font-size: 120%; -} - -h4 { - font-size: 110%; -} - -.package h4, h5, h6 { - font-size: 100%; - font-style: italic; -} - - -/* Navigation */ -div.navheader, div.navfooter { - background: #ecedef; - margin: 0; - padding: 0.1em .5em; -} - -div.navheader { - border-bottom: 1px solid #dbddec; - position: sticky; - top: 0; -} - -div.navfooter { - border-top: 1px solid #dbddec; -} - -div.navheader h4 { - margin-top: .4em; - margin-bottom: 0; - text-align: center; -} - -div.navheader h3 { - margin-top: .2em; - margin-bottom: 0; - text-align: center; -} - -div.navheader ul, div.navfooter ul { - padding: .2em .5em .5em 0; - margin: .5em 0; - position: relative; - background: #dbddec; -} - -div.navheader ul li, div.navfooter ul li { - display: inline; - width: 40%; -} - -div.navheader ul li.prev, div.navfooter ul li.prev { - position: absolute; - display: block; - left: 0; - text-align: left; - padding: 0.2em 1em; - margin-left: 6px; -} - -div.navheader ul li.next, div.navfooter ul li.next { - position: absolute; - display: block; - text-align: right; - right: 5px; - padding: 0.2em 0.5em; - margin-right: 7px; -} - -div.navheader ul li.prev p, div.navfooter ul li.prev p, -div.navheader ul li.next p, div.navfooter ul li.next p { - padding: 0; - margin: 1px 0px; -} - -div.navheader ul li.home, div.navheader ul li.up, -div.navfooter ul li.home, div.navfooter ul li.up { - text-align: center; - padding: 0; - margin: 0px auto; - display: block; - color: #dbddec; -} - - -/* TOC */ -div.toc ul, div.index ul, div.navheader ul, div.navfooter ul { - list-style: none; -} - -div.toc { - padding-left: 1em; -} - -.book li.preface, .part li.appendix { - margin-left: 1em; -} - -.part li.preface { - margin-left: 0em; -} - -div.toc h3 { - margin: 1em 0 .3em 0; -} - -li.appendix h3, li.glossary h3, li.index h3 { - margin: .5em -} - -div.toc h4 { - margin: .6em 0 .2em 0; -} - -li.chapter h4 a { - display: block; - margin-bottom: .4em -} - -.dummy { - display: block; - font-weight: bold; - font-size: 110%; - margin: .6em 0 .2em 0; -} - -span.blue { - color: #2ac; -} - -/* Index */ -.item { - float: left; - margin-right: 1em -} - -.secitem { - font-weight: normal; - float: left; - margin-right: 1em -} - -.indexref { - display: block; -} - -.item + .indexref { - margin-left: 20em; -} - -.secitem + .indexref { - margin-left: 19em; -} - - -/* Admonitions */ -div.admon img { - padding: .3em; -} - -div.admon h3 { - display: inline; - margin-left: 2em; -} - -div.admon p { - margin-left: .5em; - padding-bottom: .4em; -} - -div.admon pre { - margin: 0.5em 3em; -} - -div.note, div.tip { - background-color: #fffff6; - border: 2px solid #dbddec; - width: 90%; - margin: .5em auto; -} - -div.important, div.warning, div.caution { - background-color: #fffff6; - border: medium solid #400; - width: 90%; - margin: .5em auto; - color: #600; -} - -div.important h3, div.warning h3, div.caution h3 { - color: #900; -} - -div.important em, div.warning em, div.caution em { - color: #000; - font-weight: bold; -} - - -/* table */ -.table p.title { - text-align: center; - margin-top: 0; - margin-bottom: .3em; -} - -.table table, .informaltable { - margin-left: auto; - margin-right: auto; -} - -.table table th, .table table td { - padding: 0.2em 2em 0.2em 2em; - text-align: left; -} - -.revhistory { - padding-left: 1em; -} - -.revhistory th { - line-height: 2em; - text-align: left; -} - -.revhistory td { - padding-right: 1em; -} - - -/* variablelist as table */ -.variablelist table { - width: auto; - margin: 0 1em 0 1em; -} - -.variablelist td { - vertical-align: top; -} - -.variablelist td span, td p { - margin: 0.25em; -} - - -/* variablelist as list */ -dl { - padding-left: 1em -} - -dt { - font-weight: bold; - margin-left: 1em; -} - -dd { - margin-bottom: .6em; - margin-left: 1em; -} - -dd p { - margin-top: 0; - margin-bottom: 0; - padding-top: 0; - padding-bottom: 0; -} - -div.materials dt { - display: list-item; -} - -div.materials dd { - margin-left: 0; - padding-left: 0; -} - - -/* segmentedlist */ -.appendix .segmentedlist { - padding-left: 1em; -} - -.package .seg { - margin-bottom: 1em; - margin-top: 0em; - clear: left; -} - -.content .seg { - margin-bottom: .4em; - margin-top: .4em; - clear: left; -} - -.segtitle { - float: left; - padding-left: 1em; - width: 14.5em; -} - -.content .segtitle { - width: 12em; -} - -.package .segbody { - display: block; - padding-left: 14em; -} - -.appendix .segbody{ - display: block; - padding-left: 16em; -} - -.content .segbody { - display: block; - padding-left: 13em; -} - -.content table tr td:first-child -{ - width: 9em; - padding-right: 0px; -} - -.content table tr td:first-child p -{ - padding-right: 0px; -} - -/* itemizedlist */ -ul { - padding-left: 1em -} - -.itemizedlist ul { - margin-left: 1em -} - -.itemizedlist li ul { - margin-bottom: 1.2em; -} - -.itemizedlist li ul li p { - margin-top: .5em; - margin-bottom: .5em; -} - -.itemizedlist li ul li:first-child p:first-child { - margin-top: -.6em; -} - -ul.compact { - list-style: none; -} - -.blfs ul.compact { - list-style: disc; -} - -ul.compact li { - margin: 0em; - padding: 0em; -} - -ul.compact li p { - padding: 0.3em; - margin: 0em; -} - -.blfs ul.compact li p { - background-color: #f0fff0; -} - -/* orderedlist */ -ol { - list-style: decimal; -} - -ol ol { - list-style: lower-alpha; -} - -ol ol ol { - list-style: lower-roman; -} - -ol.compact li { - margin: 0em; - padding: 0em; -} - -ol.compact li p { - padding: 0.3em; - margin: 0em; -} - - -/* Indented blocks */ -p, blockquote { - padding-left: 1em; - padding-right: 1em; -} - - -/* Monospaced elements */ -tt, code, kbd, pre, .command { - font-family: monospace; -} - -.systemitem { - font-style: italic; -} - -pre { - background-color: #e5e5e5; - border: 1px solid #050505; - padding: .5em 1em; - margin: 0 2em .5em 2em; - font-weight: bold; -} - -pre.userinput { - color: #101310; -} - -pre.root { - color: #101310; - border: 1px solid #11a; -} - -pre.screen { - color: #000; - background-color: #e9e9e9; - font-weight: normal; -} - -.literal, .prompt { - font-weight: normal; -} - - -/* Mixed tags */ -p.usernotes { - margin-left: -1em; - font-size: small; - font-weight: bold; - font-style: italic; -} - -.underlined { - text-decoration: underline; -} - - -/* Last edited info */ -p.updated { - font-size: small; - font-weight: bold; - font-style: italic; -} - - -/* Special colored blocks */ - /* OrangeRed4 */ -.feature-ssp { - color: #8B2500; -} - - /* RoyalBlue3 */ -.feature-aslr { - color: #3A5FCD; -} - - /* NavyBlue */ -.feature-pax { - color: #000080; -} - - /* VioletRed */ -.feature-hardened_tmp { - color: #d02090; -} - - /* PaleTurquoise4 */ -.feature-warnings { - color: #668b8b; -} - - /* RosyBrown */ -.feature-misc { - color: #bc8f8f; -} - - /* Sienna*/ -.feature-blowfish { - color: #8E6B23 -} diff --git a/lfs-12.0-sysv/wget-list b/lfs-12.0-sysv/wget-list deleted file mode 100644 index 1547452..0000000 --- a/lfs-12.0-sysv/wget-list +++ /dev/null @@ -1,94 +0,0 @@ -https://download.savannah.gnu.org/releases/acl/acl-2.3.1.tar.xz -https://download.savannah.gnu.org/releases/attr/attr-2.5.1.tar.gz -https://ftp.gnu.org/gnu/autoconf/autoconf-2.71.tar.xz -https://ftp.gnu.org/gnu/automake/automake-1.16.5.tar.xz -https://ftp.gnu.org/gnu/bash/bash-5.2.15.tar.gz -https://github.com/gavinhoward/bc/releases/download/6.6.0/bc-6.6.0.tar.xz -https://sourceware.org/pub/binutils/releases/binutils-2.41.tar.xz -https://ftp.gnu.org/gnu/bison/bison-3.8.2.tar.xz -https://www.sourceware.org/pub/bzip2/bzip2-1.0.8.tar.gz -https://github.com/libcheck/check/releases/download/0.15.2/check-0.15.2.tar.gz -https://ftp.gnu.org/gnu/coreutils/coreutils-9.3.tar.xz -https://dbus.freedesktop.org/releases/dbus/dbus-1.14.8.tar.xz -https://ftp.gnu.org/gnu/dejagnu/dejagnu-1.6.3.tar.gz -https://ftp.gnu.org/gnu/diffutils/diffutils-3.10.tar.xz -https://downloads.sourceforge.net/project/e2fsprogs/e2fsprogs/v1.47.0/e2fsprogs-1.47.0.tar.gz -https://sourceware.org/ftp/elfutils/0.189/elfutils-0.189.tar.bz2 -https://prdownloads.sourceforge.net/expat/expat-2.5.0.tar.xz -https://prdownloads.sourceforge.net/expect/expect5.45.4.tar.gz -https://astron.com/pub/file/file-5.45.tar.gz -https://ftp.gnu.org/gnu/findutils/findutils-4.9.0.tar.xz -https://github.com/westes/flex/releases/download/v2.6.4/flex-2.6.4.tar.gz -https://pypi.org/packages/source/f/flit-core/flit_core-3.9.0.tar.gz -https://ftp.gnu.org/gnu/gawk/gawk-5.2.2.tar.xz -https://ftp.gnu.org/gnu/gcc/gcc-13.2.0/gcc-13.2.0.tar.xz -https://ftp.gnu.org/gnu/gdbm/gdbm-1.23.tar.gz -https://ftp.gnu.org/gnu/gettext/gettext-0.22.tar.xz -https://ftp.gnu.org/gnu/glibc/glibc-2.38.tar.xz -https://ftp.gnu.org/gnu/gmp/gmp-6.3.0.tar.xz -https://ftp.gnu.org/gnu/gperf/gperf-3.1.tar.gz -https://ftp.gnu.org/gnu/grep/grep-3.11.tar.xz -https://ftp.gnu.org/gnu/groff/groff-1.23.0.tar.gz -https://ftp.gnu.org/gnu/grub/grub-2.06.tar.xz -https://ftp.gnu.org/gnu/gzip/gzip-1.12.tar.xz -https://github.com/Mic92/iana-etc/releases/download/20230810/iana-etc-20230810.tar.gz -https://ftp.gnu.org/gnu/inetutils/inetutils-2.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-6.4.0.tar.xz -https://pypi.org/packages/source/J/Jinja2/Jinja2-3.1.2.tar.gz -https://www.kernel.org/pub/linux/utils/kbd/kbd-2.6.1.tar.xz -https://www.kernel.org/pub/linux/utils/kernel/kmod/kmod-30.tar.xz -https://www.greenwoodsoftware.com/less/less-643.tar.gz -https://mirror.linuxfromscratch.ru/lfs/downloads/12.0/lfs-bootscripts-20230728.tar.xz -https://www.kernel.org/pub/linux/libs/security/linux-privs/libcap2/libcap-2.69.tar.xz -https://github.com/libffi/libffi/releases/download/v3.4.4/libffi-3.4.4.tar.gz -https://download.savannah.gnu.org/releases/libpipeline/libpipeline-1.5.7.tar.gz -https://ftp.gnu.org/gnu/libtool/libtool-2.4.7.tar.xz -https://github.com/besser82/libxcrypt/releases/download/v4.4.36/libxcrypt-4.4.36.tar.xz -https://www.kernel.org/pub/linux/kernel/v6.x/linux-6.4.12.tar.xz -https://ftp.gnu.org/gnu/m4/m4-1.4.19.tar.xz -https://ftp.gnu.org/gnu/make/make-4.4.1.tar.gz -https://download.savannah.gnu.org/releases/man-db/man-db-2.11.2.tar.xz -https://www.kernel.org/pub/linux/docs/man-pages/man-pages-6.05.01.tar.xz -https://pypi.org/packages/source/M/MarkupSafe/MarkupSafe-2.1.3.tar.gz -https://github.com/mesonbuild/meson/releases/download/1.2.1/meson-1.2.1.tar.gz -https://ftp.gnu.org/gnu/mpc/mpc-1.3.1.tar.gz -https://ftp.gnu.org/gnu/mpfr/mpfr-4.2.0.tar.xz -https://invisible-mirror.net/archives/ncurses/ncurses-6.4.tar.gz -https://github.com/ninja-build/ninja/archive/v1.11.1/ninja-1.11.1.tar.gz -https://www.openssl.org/source/openssl-3.1.2.tar.gz -https://ftp.gnu.org/gnu/patch/patch-2.7.6.tar.xz -https://www.cpan.org/src/5.0/perl-5.38.0.tar.xz -https://distfiles.ariadne.space/pkgconf/pkgconf-2.0.1.tar.xz -https://sourceforge.net/projects/procps-ng/files/Production/procps-ng-4.0.3.tar.xz -https://sourceforge.net/projects/psmisc/files/psmisc/psmisc-23.6.tar.xz -https://www.python.org/ftp/python/3.11.4/Python-3.11.4.tar.xz -https://www.python.org/ftp/python/doc/3.11.4/python-3.11.4-docs-html.tar.bz2 -https://ftp.gnu.org/gnu/readline/readline-8.2.tar.gz -https://ftp.gnu.org/gnu/sed/sed-4.9.tar.xz -https://github.com/shadow-maint/shadow/releases/download/4.13/shadow-4.13.tar.xz -https://www.infodrom.org/projects/sysklogd/download/sysklogd-1.5.1.tar.gz -https://github.com/systemd/systemd/archive/v254/systemd-254.tar.gz -https://anduin.linuxfromscratch.org/LFS/systemd-man-pages-254.tar.xz -https://github.com/slicer69/sysvinit/releases/download/3.07/sysvinit-3.07.tar.xz -https://ftp.gnu.org/gnu/tar/tar-1.35.tar.xz -https://downloads.sourceforge.net/tcl/tcl8.6.13-src.tar.gz -https://downloads.sourceforge.net/tcl/tcl8.6.13-html.tar.gz -https://ftp.gnu.org/gnu/texinfo/texinfo-7.0.3.tar.xz -https://www.iana.org/time-zones/repository/releases/tzdata2023c.tar.gz -https://anduin.linuxfromscratch.org/LFS/udev-lfs-20230818.tar.xz -https://www.kernel.org/pub/linux/utils/util-linux/v2.39/util-linux-2.39.1.tar.xz -https://anduin.linuxfromscratch.org/LFS/vim-9.0.1677.tar.gz -https://pypi.org/packages/source/w/wheel/wheel-0.41.1.tar.gz -https://cpan.metacpan.org/authors/id/T/TO/TODDR/XML-Parser-2.46.tar.gz -https://tukaani.org/xz/xz-5.4.4.tar.xz -https://anduin.linuxfromscratch.org/LFS/zlib-1.2.13.tar.xz -https://github.com/facebook/zstd/releases/download/v1.5.5/zstd-1.5.5.tar.gz -https://mirror.linuxfromscratch.ru/patches/lfs/12.0/bzip2-1.0.8-install_docs-1.patch -https://mirror.linuxfromscratch.ru/patches/lfs/12.0/coreutils-9.3-i18n-1.patch -https://mirror.linuxfromscratch.ru/patches/lfs/12.0/glibc-2.38-memalign_fix-1.patch -https://mirror.linuxfromscratch.ru/patches/lfs/12.0/glibc-2.38-fhs-1.patch -https://mirror.linuxfromscratch.ru/patches/lfs/12.0/grub-2.06-upstream_fixes-1.patch -https://mirror.linuxfromscratch.ru/patches/lfs/12.0/kbd-2.6.1-backspace-1.patch -https://mirror.linuxfromscratch.ru/patches/lfs/12.0/readline-8.2-upstream_fix-1.patch -https://mirror.linuxfromscratch.ru/patches/lfs/12.0/sysvinit-3.07-consolidated-1.patch diff --git a/lfs-12.0-sysv/wget-list-sysv b/lfs-12.0-sysv/wget-list-sysv deleted file mode 100644 index 19a50b9..0000000 --- a/lfs-12.0-sysv/wget-list-sysv +++ /dev/null @@ -1,93 +0,0 @@ -https://download.savannah.gnu.org/releases/acl/acl-2.3.1.tar.xz -https://download.savannah.gnu.org/releases/attr/attr-2.5.1.tar.gz -https://ftp.gnu.org/gnu/autoconf/autoconf-2.71.tar.xz -https://ftp.gnu.org/gnu/automake/automake-1.16.5.tar.xz -https://ftp.gnu.org/gnu/bash/bash-5.2.15.tar.gz -https://github.com/gavinhoward/bc/releases/download/6.6.0/bc-6.6.0.tar.xz -https://sourceware.org/pub/binutils/releases/binutils-2.41.tar.xz -https://ftp.gnu.org/gnu/bison/bison-3.8.2.tar.xz -https://www.sourceware.org/pub/bzip2/bzip2-1.0.8.tar.gz -https://github.com/libcheck/check/releases/download/0.15.2/check-0.15.2.tar.gz -https://ftp.gnu.org/gnu/coreutils/coreutils-9.3.tar.xz -https://ftp.gnu.org/gnu/dejagnu/dejagnu-1.6.3.tar.gz -https://ftp.gnu.org/gnu/diffutils/diffutils-3.10.tar.xz -https://downloads.sourceforge.net/project/e2fsprogs/e2fsprogs/v1.47.0/e2fsprogs-1.47.0.tar.gz -https://sourceware.org/ftp/elfutils/0.189/elfutils-0.189.tar.bz2 -https://prdownloads.sourceforge.net/expat/expat-2.5.0.tar.xz -https://prdownloads.sourceforge.net/expect/expect5.45.4.tar.gz -https://astron.com/pub/file/file-5.45.tar.gz -https://ftp.gnu.org/gnu/findutils/findutils-4.9.0.tar.xz -https://github.com/westes/flex/releases/download/v2.6.4/flex-2.6.4.tar.gz -https://pypi.org/packages/source/f/flit-core/flit_core-3.9.0.tar.gz -https://ftp.gnu.org/gnu/gawk/gawk-5.2.2.tar.xz -https://ftp.gnu.org/gnu/gcc/gcc-13.2.0/gcc-13.2.0.tar.xz -https://ftp.gnu.org/gnu/gdbm/gdbm-1.23.tar.gz -https://ftp.gnu.org/gnu/gettext/gettext-0.22.tar.xz -https://ftp.gnu.org/gnu/glibc/glibc-2.38.tar.xz -https://ftp.gnu.org/gnu/gmp/gmp-6.3.0.tar.xz -https://ftp.gnu.org/gnu/gperf/gperf-3.1.tar.gz -https://ftp.gnu.org/gnu/grep/grep-3.11.tar.xz -https://ftp.gnu.org/gnu/groff/groff-1.23.0.tar.gz -https://ftp.gnu.org/gnu/grub/grub-2.06.tar.xz -https://ftp.gnu.org/gnu/gzip/gzip-1.12.tar.xz -https://github.com/Mic92/iana-etc/releases/download/20230810/iana-etc-20230810.tar.gz -https://ftp.gnu.org/gnu/inetutils/inetutils-2.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-6.4.0.tar.xz -https://pypi.org/packages/source/J/Jinja2/Jinja2-3.1.2.tar.gz -https://www.kernel.org/pub/linux/utils/kbd/kbd-2.6.1.tar.xz -https://www.kernel.org/pub/linux/utils/kernel/kmod/kmod-30.tar.xz -https://www.greenwoodsoftware.com/less/less-643.tar.gz -https://mirror.linuxfromscratch.ru/lfs/downloads/12.0/lfs-bootscripts-20230728.tar.xz -https://www.kernel.org/pub/linux/libs/security/linux-privs/libcap2/libcap-2.69.tar.xz -https://github.com/libffi/libffi/releases/download/v3.4.4/libffi-3.4.4.tar.gz -https://download.savannah.gnu.org/releases/libpipeline/libpipeline-1.5.7.tar.gz -https://ftp.gnu.org/gnu/libtool/libtool-2.4.7.tar.xz -https://github.com/besser82/libxcrypt/releases/download/v4.4.36/libxcrypt-4.4.36.tar.xz -https://www.kernel.org/pub/linux/kernel/v6.x/linux-6.4.12.tar.xz -https://ftp.gnu.org/gnu/m4/m4-1.4.19.tar.xz -https://ftp.gnu.org/gnu/make/make-4.4.1.tar.gz -https://download.savannah.gnu.org/releases/man-db/man-db-2.11.2.tar.xz -https://www.kernel.org/pub/linux/docs/man-pages/man-pages-6.05.01.tar.xz -https://pypi.org/packages/source/M/MarkupSafe/MarkupSafe-2.1.3.tar.gz -https://github.com/mesonbuild/meson/releases/download/1.2.1/meson-1.2.1.tar.gz -https://ftp.gnu.org/gnu/mpc/mpc-1.3.1.tar.gz -https://ftp.gnu.org/gnu/mpfr/mpfr-4.2.0.tar.xz -https://invisible-mirror.net/archives/ncurses/ncurses-6.4.tar.gz -https://github.com/ninja-build/ninja/archive/v1.11.1/ninja-1.11.1.tar.gz -https://www.openssl.org/source/openssl-3.1.2.tar.gz -https://ftp.gnu.org/gnu/patch/patch-2.7.6.tar.xz -https://www.cpan.org/src/5.0/perl-5.38.0.tar.xz -https://distfiles.ariadne.space/pkgconf/pkgconf-2.0.1.tar.xz -https://sourceforge.net/projects/procps-ng/files/Production/procps-ng-4.0.3.tar.xz -https://sourceforge.net/projects/psmisc/files/psmisc/psmisc-23.6.tar.xz -https://www.python.org/ftp/python/3.11.4/Python-3.11.4.tar.xz -https://www.python.org/ftp/python/doc/3.11.4/python-3.11.4-docs-html.tar.bz2 -https://ftp.gnu.org/gnu/readline/readline-8.2.tar.gz -https://ftp.gnu.org/gnu/sed/sed-4.9.tar.xz -https://github.com/shadow-maint/shadow/releases/download/4.13/shadow-4.13.tar.xz -https://www.infodrom.org/projects/sysklogd/download/sysklogd-1.5.1.tar.gz -https://github.com/systemd/systemd/archive/v254/systemd-254.tar.gz -https://anduin.linuxfromscratch.org/LFS/systemd-man-pages-254.tar.xz -https://github.com/slicer69/sysvinit/releases/download/3.07/sysvinit-3.07.tar.xz -https://ftp.gnu.org/gnu/tar/tar-1.35.tar.xz -https://downloads.sourceforge.net/tcl/tcl8.6.13-src.tar.gz -https://downloads.sourceforge.net/tcl/tcl8.6.13-html.tar.gz -https://ftp.gnu.org/gnu/texinfo/texinfo-7.0.3.tar.xz -https://www.iana.org/time-zones/repository/releases/tzdata2023c.tar.gz -https://anduin.linuxfromscratch.org/LFS/udev-lfs-20230818.tar.xz -https://www.kernel.org/pub/linux/utils/util-linux/v2.39/util-linux-2.39.1.tar.xz -https://anduin.linuxfromscratch.org/LFS/vim-9.0.1677.tar.gz -https://pypi.org/packages/source/w/wheel/wheel-0.41.1.tar.gz -https://cpan.metacpan.org/authors/id/T/TO/TODDR/XML-Parser-2.46.tar.gz -https://tukaani.org/xz/xz-5.4.4.tar.xz -https://anduin.linuxfromscratch.org/LFS/zlib-1.2.13.tar.xz -https://github.com/facebook/zstd/releases/download/v1.5.5/zstd-1.5.5.tar.gz -https://mirror.linuxfromscratch.ru/patches/lfs/12.0/bzip2-1.0.8-install_docs-1.patch -https://mirror.linuxfromscratch.ru/patches/lfs/12.0/coreutils-9.3-i18n-1.patch -https://mirror.linuxfromscratch.ru/patches/lfs/12.0/glibc-2.38-memalign_fix-1.patch -https://mirror.linuxfromscratch.ru/patches/lfs/12.0/glibc-2.38-fhs-1.patch -https://mirror.linuxfromscratch.ru/patches/lfs/12.0/grub-2.06-upstream_fixes-1.patch -https://mirror.linuxfromscratch.ru/patches/lfs/12.0/kbd-2.6.1-backspace-1.patch -https://mirror.linuxfromscratch.ru/patches/lfs/12.0/readline-8.2-upstream_fix-1.patch -https://mirror.linuxfromscratch.ru/patches/lfs/12.0/sysvinit-3.07-consolidated-1.patch diff --git a/lfs-12.1-sysv/LFS-BOOK.html b/lfs-12.1-sysv/LFS-BOOK.html new file mode 100644 index 0000000..439d3b0 --- /dev/null +++ b/lfs-12.1-sysv/LFS-BOOK.html @@ -0,0 +1,59294 @@ + + + + + + Линукс с нуля + + + + + +
+
+
+
+

+ Линукс с нуля +

+
+
+

+ Версия 12.1 +

+
+
+

+ Дата публикации 1 марта 2024 +

+
+
+
+
+

+ Создатель: Gerard + Beekmans +

+
+
+

+ Главный редактор: Bruce + Dubbs +

+
+
+

+ Автор перевода: Владимир + Перцев +

+
+
+
+
+ +
+
+
+ +

+ Все права защищены. +

+

+ Эта книга распространяется на условиях Лицензия + Creative Commons. +

+

+ Инструкции для компьютера могут быть извлечены из книги на + условиях Лицензия MIT. +

+

+ Linux® является + зарегистрированным товарным знаком Линуса Торвальдса. +

+
+
+
+
+
+
+

+ Содержание +

+ +
+
+
+
+

+ Предисловие +

+
+
+
+
+
+
+
+

+ Предисловие +

+
+
+
+
+

+ Мой путь к изучению и лучшему пониманию Linux начался еще в 1998 + году. Я только что установил свой первый дистрибутив Linux и + быстро увлекся его концепцией и философией. +

+

+ У задачи может быть несколько вариантов решения. То же самое + можно сказать и о дистрибутивах Linux. Многие из них существовали + годами. Некоторые всё еще существуют, некоторые превратились во + что-то иное, а некоторые остались только в наших воспоминаниях. + Все они выполняют задачи по-разному, чтобы удовлетворить + потребности своей целевой аудитории. И я понял - раз существует + так много всевозможных способов добиться поставленной цели, мне + больше не нужно ограничивать себя какой-то одной реализацией. До + появления Linux мы просто мирились с проблемами в других + операционных системах, поскольку у нас не было выбора. Что есть, + то есть, нравилось нам это или нет. С Linux появился выбор. Если + вам что-то не понравилось, вы можете изменить это, к тому же, это + всецело поощряется. +

+

+ Я попробовал разные дистрибутивы, но так и не смог ни на одном + остановиться. Oни были отличными системами сами по себе. Это + больше не было вопросом правильно или неправильно. Это стало + делом личного вкуса. При всём разнообразии выбора не было ни + одного дистрибутива, который был для меня идеален. Поэтому я + решил создать свою собственную Linux-систему, которая бы + полностью соответствовала моим личным предпочтениям. +

+

+ Чтобы создать свою собственную систему, я решил скомпилировать + всё из исходного кода вместо использования предварительно + скомпилированных пакетов. Эта «идеальная» Linux-система должна была иметь + сильные стороны других систем без их недостатков. Сначала эта + мысль казалась пугающей. Но я придерживался идеи, что такая + система должна быть создана. +

+

+ Разобравшись с такими проблемами, как циклические зависимости и + ошибки во время компиляции, я, наконец, создал собственную + систему Linux. Она была полностью работоспособна и вполне + пригодна для использования, как и любая другая Linux-система того + времени. Но это было мое собственное творение. Было очень приятно + собрать такую систему самому. Единственное, что было бы лучше, + это создавать каждую часть программного обеспечения + самостоятельно. Это было следующее, к чему я стремился +

+

+ Когда я поделился своими идеями и опытом с другими членами + сообщества Linux, стал очевиден явный интерес к ним. Вскоре стало + понятно, что такие специально созданные Linux-системы служат не + только для удовлетворения специфических потребностей + пользователей, но и являются идеальной возможностью для обучения + программистов и системных администраторов, чтобы улучшить их + (существующие) навыки работы с Linux. Так родился проект + Linux From Scratch. +

+

+ Книга Linux From Scratch является ядром этого проекта. В ней + содержится информация и инструкции, необходимые для разработки и + создания собственной системы. Хотя эта книга представляет шаблон, + который позволит создать правильно работающую систему, вы можете + изменить инструкции по своему усмотрению, что отчасти является + важной частью этого проекта. Вы всё контролируете; мы просто + протягиваем руку помощи, чтобы вы начали свой собственный путь. +

+

+ Я искренне надеюсь, что вы прекрасно проведете время, работая над + своей собственной системой Linux From Scratch, и оцените ее + многочисленные преимущества. +

+
+

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

+
+
+
+
+
+

+ Аудитория, на + которую рассчитана эта книга +

+
+
+
+
+

+ Есть много причин, по которым вы хотели бы прочитать эту книгу. + Один из вопросов, который задают многие люди, звучит так: + «Зачем тратить время на + сборку Linux-системы вручную с нуля, если можно просто загрузить + и установить существующую?» +

+

+ Одной из важных целей существования этого проекта является помощь + в изучении того, как работает система Linux изнутри. Создание + системы LFS помогает продемонстрировать, что заставляет работать + Linux, как все работает вместе и зависит друг от друга. Одна из + лучших вещей, которую может дать этот учебный опыт, — это + возможность настроить систему Linux в соответствии с вашими + уникальными потребностями. +

+

+ Другое ключевое преимущество - LFS предоставляет более глубокий + контроль, не полагаясь на чью-либо реализацию Linux. С LFS вы + находитесь в кресле водителя, и Вы управляете каждым аспектом системы. +

+

+ LFS позволяет создавать очень компактные системы Linux. При + установке обычных дистрибутивов вам часто приходится + устанавливать очень много программ, которые, вероятно, никогда не + используются. Эти программы тратят ресурсы впустую. Вы можете + возразить, что с сегодняшними жесткими дисками и процессорами + такие ресурсы не имеют значения. Иногда, однако, вы все еще + ограничены размером. Подумайте о загрузочных компакт-дисках, + USB-накопителях и встраиваемых системах. Это области, в которых + LFS может быть полезным. +

+

+ Ещё одним преимуществом собственной сборки Linux является + безопасность. При компиляции каждого компонента системы из + исходных кодов вы можете всё проверить и применить необходимые + патчи. Больше не нужно ждать, когда кто-то другой скомпилирует + пакет с требуемыми исправлениями. Если вы не изучите патч и не + примените его самостоятельно, нет гарантий, что новый пакет будет + собран корректно и устранит проблему. +

+

+ Цель Linux From Scratch — создать законченную и пригодную для + использования систему базового уровня. Если вы не хотите + создавать свою собственную систему Linux с нуля, вы, тем не + менее, можете извлечь пользу из информации, содержащейся в этой + книге. +

+

+ Есть много других веских причин для создания собственной системы + LFS. В конце концов, образование, безусловно, является самой + важной из них. Продолжая работать с LFS, вы откроете для себя + силу, которую действительно приносят информация и знания. +

+
+
+
+
+

+ Целевые + архитектуры LFS +

+
+
+
+
+

+ Основными целевыми архитектурами LFS являются процессоры + AMD/Intel x86 (32-разрядные) и x86_64 (64-разрядные). Однако, + известно, что инструкции, приведенные в этой книге, с некоторыми + изменениями работают с процессорами Power PC и ARM. Для создания + системы, использующей один из этих процессоров, основным + предварительным условием, в дополнение к описанным на следующей + странице, является существующая система Linux, например, + собранная ранее LFS, Ubuntu, Red Hat/Fedora, SuSE или другой + дистрибутив, ориентированный на имеющуюся у вас архитектуру. + Также обратите внимание, что 32-разрядный дистрибутив можно + установить и использовать в качестве хост-системы на 64-разрядном + компьютере AMD/Intel. +

+

+ При сборке LFS выигрыш от сборки на 64-битной системе по + сравнению с 32-битной системой минимален. Например, в тестовой + сборке LFS-9.1 в системе на базе процессора Core i7-4790 с + использованием 4 ядер были получены следующие статистические + данные: +

+
Архитектура     Время сборки    Размер сборки
+x86             239.9 минут     3.6 ГБ
+x64             233.2 минут     4.4 ГБ
+

+ Как видите, на том же оборудовании 64-битная сборка всего на 3% + быстрее и на 22% больше, чем 32-битная. Если вы планируете + использовать LFS в качестве LAMP-сервера или брандмауэра, + 32-разрядной сборки может быть достаточно. С другой стороны, для + сборки и/или запуска некоторых пакетов в BLFS теперь требуется + более 4 ГБ ОЗУ, поэтому, если вы планируете использовать LFS в + качестве настольной ОС, авторы LFS рекомендуют собирать 64-битную + систему. +

+

+ По умолчанию 64-разрядная сборка LFS, считается «чистой» 64-разрядной + системой. То есть она поддерживает только 64-разрядные + исполняемые файлы. Сборка «multilib» системы требует компиляции многих + программ дважды - один раз для 32-битной и один раз для + 64-битной. Напрямую в книге данная опция не поддерживается, + потому что это будет только мешать образовательной цели этой + книги, предлагающей инструкции, необходимые для сборки базовой + системы. Некоторые редакторы LFS/BLFS поддерживают ответвление + LFS для multilib, которое доступно по адресу https://book.linuxfromscratch.ru/12.1-ml/systemv. + Но это более продвинутая тема. +

+
+
+
+
+

+ Предпосылки +

+
+
+
+
+

+ Создание системы LFS — непростая задача. Это требует + определенного уровня знаний системного администрирования Unix для + решения проблем и правильного выполнения перечисленных команд. В + частности, как абсолютный минимум, Вы должны уметь пользоваться + командной оболочкой для копирования или перемещения файлов и + каталогов, просмотра содержимого каталогов и файлов и изменения + текущего каталога. Также ожидается, что у вас есть достаточные + знания об использовании и установке программного обеспечения в + Linux. +

+

+ Поскольку книга LFS предполагает наличие хотя бы этого базового уровня навыков, + различные форумы поддержки LFS вряд ли смогут предоставить вам + большую помощь в этих вопросах. Вы обнаружите, что ваши вопросы, + касающиеся таких базовых знаний, скорее всего, останутся без + ответа (или вас просто направят к списку основных материалов для + предварительного ознакомления). +

+

+ Перед созданием системы LFS мы настоятельно рекомендуем прочитать + следующие статьи: +

+
+
    +
  • +

    + HOWTO по сборке программного обеспечения https://tldp.org/HOWTO/Software-Building-HOWTO.html +

    +

    + Это исчерпывающее руководство по сборке и установке + «универсальных» программ Unix под + Linux. Несмотря на то что руководство написано достаточно + давно, оно по-прежнему дает хороший обзор основных методов, + применяемых для сборки и установки программного + обеспечения. +

    +
  • +
  • +

    + Руководство для начинающих по установке из исходников + + https://moi.vonos.net/linux/beginners-installing-from-source/ +

    +

    + В этом руководстве содержится хороший обзор основных + навыков и методов, необходимых для сборки программ из + исходного кода +

    +
  • +
+
+
+
+
+
+

+ LFS и + стандарты +

+
+
+
+
+

+ Структура LFS максимально соответствует стандартам Linux. + Первичными стандартами являются: +

+
+
    +
  • +

    + POSIX.1-2008. +

    +
  • +
  • +

    + + Filesystem Hierarchy Standard (FHS) Version 3.0 +

    +
  • +
  • +

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

    +

    + LSB имеет четыре отдельных стандарта: Core, Desktop, + Runtime Languages и Imaging. Некоторые части спецификаций + Core и Desktop зависят от архитектуры. Есть также две + области не являющиеся обязательными: Gtk3 и Graphics. LFS + старается соответствовать стандартам LSB, для архитектур + IA32 (32-bit x86) или AMD64 (x86_64), рассмотренных в + предыдущем разделе. +

    +
    +

    + Примечание +

    +

    + Многие не согласны с требованиями LSB. Основные цели + стандартов - быть уверенным в том, что проприетарное ПО + будет правильно установлено и сможет корректно работать + на совместимой системе. Поскольку в LFS установка + программ идёт из исходных кодов, у пользователя имеется + полный контроль над тем, какие пакеты ему необходимы, вы + можете не устанавливать некоторые пакеты, определяемые в + LSB. +

    +
    +
  • +
+
+

+ Создать законченную систему, которая пройдет сертификационные + тесты LSB «с + нуля», возможно, но этого нельзя сделать без + установки множества дополнительных пакетов, которые выходят за + рамки этой книги. Однако, инструкции по их установке можно найти + в книге BLFS. +

+
+

+ Пакеты LFS, которые необходимы + для удовлетворения требований LSB +

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

+ 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: +

+
+

+ Нет +

+
+

+ LSB + Runtime Languages: +

+
+

+ Perl, Python +

+
+

+ LSB + Imaging: +

+
+

+ Нет +

+
+

+ LSB Gtk3 + и LSB Graphics (Необязательные): +

+
+

+ Нет +

+
+
+
+

+ Пакеты, поставляемые BLFS, + необходимые для удовлетворения требований LSB +

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

+ LSB + Core: +

+
+

+ At, Batch (часть At), Cpio, Ed, Fcrontab, LSB-Tools, + NSPR, NSS, PAM, Pax, Sendmail (или Postfix, или 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: +

+
+

+ Libxml2, Libxslt +

+
+

+ LSB + Imaging: +

+
+

+ CUPS, Cups-filters, Ghostscript, SANE +

+
+

+ LSB Gtk3 + и LSB Graphics (Необязательные): +

+
+

+ GTK3+ +

+
+
+
+

+ Пакеты, не поставляемые LFS + или BLFS, необходимые для удовлетворения требований LSB +

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

+ LSB + Core: +

+
+

+ Нет +

+
+

+ LSB + Desktop: +

+
+

+ Qt4 (но предоставляется Qt5) +

+
+

+ LSB + Runtime Languages: +

+
+

+ Нет +

+
+

+ LSB + Imaging: +

+
+

+ Нет +

+
+

+ LSB Gtk3 + и LSB Graphics (Необязательные): +

+
+

+ Нет +

+
+
+
+
+
+
+

+ Информация о пакетах, + используемых в этой книге +

+
+
+
+
+

+ Целью LFS является создание законченной и пригодной для + использования базовой системы, которая содержит все пакеты, + необходимые для её функционирования, состоящую при этом из + относительно небольшого набора программ, и возможности которой + можно расширять в зависимости от потребностей пользователя. Это + не означает, что LFS является самой маленькой из возможных + систем. В систему включено несколько важных пакетов, которые не + являются обязательными. Приведенный ниже список объясняет почему + в книгу включен тот или иной пакет. +

+
+
    +
  • +

    + Acl +

    +

    + Access Control List или ACL — список управления доступом, + который определяет, кто или что может получать доступ к + объекту (программе, процессу или файлу), и какие именно + операции разрешено или запрещено выполнять субъекту + (пользователю, группе пользователей).Данный пакет содержит + утилиты для администрирования списков управления доступом, + которые используются для определения дискреционных прав + доступа к файлам и каталогам. +

    +
  • +
  • +

    + Attr +

    +

    + Этот пакет содержит программы для управления расширенными + атрибутами объектов файловой системы. +

    +
  • +
  • +

    + Autoconf +

    +

    + Этот пакет содержит программы для создания сценариев + оболочки, которые могут выполнять автоматическую настройку + исходного кода из шаблона разработчика. Он часто необходим + для повторной компиляции пакета после обновления процедур + сборки. +

    +
  • +
  • +

    + Automake +

    +

    + Этот пакет содержит программы для создания Make-файлов из + шаблона. Он также необходим для повторной компиляции пакета + после обновления процедур сборки. +

    +
  • +
  • +

    + Bash +

    +

    + Этот пакет удовлетворяет требования LSB по предоставлению + интерфейса Bourne Shell для системы. Он был выбран среди + других пакетов оболочки из-за его повсеместного + использования и широких возможностей. +

    +
  • +
  • +

    + Bc +

    +

    + Этот пакет предоставляет язык числовой обработки + произвольной точности. Он необходимым для сборки ядра Linux +

    +
  • +
  • +

    + Binutils +

    +

    + Этот пакет содержит компоновщик, ассемблер и другие + инструменты для работы с объектными файлами. Программы в + этом пакете необходимы для компиляции большинства пакетов в + системе LFS. +

    +
  • +
  • +

    + Bison +

    +

    + Этот пакет содержит GNU-версию yacc (Yet Another Compiler + Compiler), необходимого для сборки некоторых пакетов в LFS. +

    +
  • +
  • +

    + Bzip2 +

    +

    + Этот пакет содержит программы для сжатия и распаковки + файлов. Используется для распаковки множества пакетов LFS. +

    +
  • +
  • +

    + Check +

    +

    + Этот пакет содержит тестовую обвязку для других программ. +

    +
  • +
  • +

    + Coreutils +

    +

    + Этот пакет содержит ряд программ для просмотра файлов и + каталогов, и управления ими. Эти программы необходимы для + управления файлами через командную строку и для сборки + каждого пакета в LFS. +

    +
  • +
  • +

    + DejaGNU +

    +

    + Этот пакет предоставляет фреймворк для тестирования других + программ. +

    +
  • +
  • +

    + Diffutils +

    +

    + Этот пакет содержит программы, которые показывают различия + между файлами или каталогами. Их можно использовать для + создания патчей, а также они применяются во многих + процедурах сборки +

    +
  • +
  • +

    + E2fsprogs +

    +

    + Этот пакет содержит утилиты для работы с файловыми + системами ext2, ext3 и ext4. Это наиболее распространенные + и тщательно протестированные файловые системы, + поддерживаемые Linux +

    +
  • +
  • +

    + Expat +

    +

    + Этот пакет содержит небольшую библиотеку разбора XML.Она + необходима для модуля Perl XML::Parser. +

    +
  • +
  • +

    + Expect +

    +

    + Этот пакет содержит инструменты для автоматизации и + тестирования, и является расширением к скриптовому языку + Tcl, для многих интерактивных приложений. Он обычно + используется для тестирования других пакетов. +

    +
  • +
  • +

    + File +

    +

    + Этот пакет содержит утилиту для определения типа файла или + файлов. Некоторым пакетам она нужна в сценариях сборки. +

    +
  • +
  • +

    + Findutils +

    +

    + Этот пакет предоставляет программы для поиска файлов. Он + используется во многих сценариях сборки пакетов. +

    +
  • +
  • +

    + Flex +

    +

    + Этот пакет содержит утилиту для генерации программ, + распознающих шаблоны в тексте. Это версия GNU программы lex + (лексический анализатор). Пакет необходим для сборки + некоторых пакетов LFS. +

    +
  • +
  • +

    + Gawk +

    +

    + Этот пакет содержит программы для работы с текстовыми + файлами. Это GNU версия awk (Aho-Weinberg-Kernighan). Он + используется во многих сценариях сборки пакетов. +

    +
  • +
  • +

    + GCC +

    +

    + Это коллекция компиляторов Gnu. Он содержит компиляторы C и + C++, а также несколько других компиляторов, поддержка + которых не предусмотрена в LFS. +

    +
  • +
  • +

    + GDBM +

    +

    + Этот пакет содержит библиотеку GNU Database Manager. Он + используется пакетом Man-DB +

    +
  • +
  • +

    + Gettext +

    +

    + Этот пакет содержит утилиты и библиотеки для + интернационализации и локализации многочисленных пакетов. +

    +
  • +
  • +

    + Glibc +

    +

    + Этот пакет содержит основную библиотеку C. Программы Linux + не будут работать без неё. +

    +
  • +
  • +

    + GMP +

    +

    + Этот пакет содержит математические библиотеки, + предоставляющие полезные функции для вычислений с плавающей + точкой. Требуется для сборки GCC. +

    +
  • +
  • +

    + Gperf +

    +

    + Этот пакет содержит программу, которая генерирует идеальную + хеш-функцию из набора ключей. Необходим для пакета + Udev . +

    +
  • +
  • +

    + Grep +

    +

    + Этот пакет содержит программы для поиска по файлам. Пакет + используется в скриптах сборки большинства пакетов. +

    +
  • +
  • +

    + Groff +

    +

    + Этот пакет содержит программы для обработки и + форматирования текста. Одной из важнейших функций этих + программ является форматирование man страниц. +

    +
  • +
  • +

    + GRUB +

    +

    + Это загрузчик операционной системы (GRand Unified + Bootloader). Самый гибкий из нескольких доступных + загрузчиков. +

    +
  • +
  • +

    + Gzip +

    +

    + Этот пакет содержит программы для сжатия и распаковки + файлов. Он необходим для распаковки множества пакетов в + LFS. +

    +
  • +
  • +

    + Iana-etc +

    +

    + Этот пакет предоставляет данные для сетевых служб и + протоколов. Он необходим для обеспечения правильных сетевых + возможностей. +

    +
  • +
  • +

    + Inetutils +

    +

    + Этот пакет содержит программы для базового сетевого + администрирования. +

    +
  • +
  • +

    + Intltool +

    +

    + Этот пакет содержит инструменты для извлечения переводимых + строк из исходных файлов. +

    +
  • +
  • +

    + IProute2 +

    +

    + Этот пакет содержит программы для базовой и расширенной + работы в сетях IPv4 и IPv6. Он был выбран среди других + распространенных пакетов сетевых инструментов (net-tools) + из-за его поддержки IPv6. +

    +
  • +
  • +

    + Kbd +

    +

    + Этот пакет содержит таблицы раскладок, утилиты управления + клавиатурой для неамериканских клавиатур, кроме этого, с + ним поставляется большой набор консольных шрифтов. +

    +
  • +
  • +

    + Kmod +

    +

    + Этот пакет содержит программы, необходимые для + администрирования модулей ядра Linux. +

    +
  • +
  • +

    + Less +

    +

    + Этот пакет содержит очень хороший просмотрщик текстовых + файлов, который позволяет использовать прокрутку верх/вниз + при просмотре. Многие пакеты используют его для + постраничного вывода. +

    +
  • +
  • +

    + Libcap +

    +

    + Этот пакет реализует интерфейсы пользовательского + пространства для возможностей POSIX 1003.1e, доступных в + ядре Linux. +

    +
  • +
  • +

    + Libelf +

    +

    + Проект elfutils предоставляет библиотеки и инструменты для + файлов ELF и данных DWARF. Большинство утилит в этом пакете + доступны в других пакетах, но эта библиотека необходима для + сборки ядра Linux с использованием стандартной (и наиболее + эффективной) конфигурации. +

    +
  • +
  • +

    + Libffi +

    +

    + Этот пакет реализует переносимый программный интерфейс + высокого уровня для различных соглашений о вызовах. + Некоторые программы могут не знать во время компиляции, + какие аргументы должны быть переданы в функцию. Например, + интерпретатору во время выполнения может быть сообщено о + количестве и типах аргументов, используемых для вызова + данной функции. Libffi можно использовать как мост от + интерпретатора к скомпилированному коду. +

    +
  • +
  • +

    + Libpipeline +

    +

    + Пакет Libpipeline содержит библиотеку для гибкого и + удобного управления конвейерами подпроцессов. Она + необходима для Man-DB. +

    +
  • +
  • +

    + Libtool +

    +

    + Этот пакет содержит сценарий поддержки универсальной + библиотеки GNU. Он объединяет сложность использования общих + библиотек в согласованный переносимый интерфейс. Библиотека + необходима наборам тестов в других пакетах LFS. +

    +
  • +
  • +

    + Libxcrypt +

    +

    + Этот пакет предоставляет библиотеку libcrypt, необходимую различным пакетам + (в частности, Shadow) для хеширования паролей. Он заменяет + устаревшую реализацию libcrypt в Glibc. +

    +
  • +
  • +

    + Linux Kernel +

    +

    + Этот пакет является ядром операционной системой. +

    +
  • +
  • +

    + M4 +

    +

    + Этот пакет содержит текстовый макропроцессор, полезный в + качестве инструмента сборки для других программ. +

    +
  • +
  • +

    + Make +

    +

    + Этот пакет содержит программу для управления сборкой + пакетов. При сборке она необходима почти для каждого пакета + в LFS. +

    +
  • +
  • +

    + Man-DB +

    +

    + Этот пакет содержит программы для поиска и просмотра + справочных страниц. Он был выбран вместо пакета + man из-за превосходных + возможностей интернационализации. Содержит man. +

    +
  • +
  • +

    + Man-pages +

    +

    + Этот пакет представляет собой содержимое основных + справочных страниц Linux. +

    +
  • +
  • +

    + Meson +

    +

    + Этот пакет предоставляет программный инструмент для + автоматизации создания программного обеспечения. Основная + цель Meson — свести к минимуму количество времени, которое + разработчики программного обеспечения должны тратить на + настройку своей системы сборки. Требуется для сборки + Systemd, а также многих пакетов BLFS. +

    +
  • +
  • +

    + MPC +

    +

    + Этот пакет содержит функции для арифметики комплексных + чисел. Необходим GCC. +

    +
  • +
  • +

    + MPFR +

    +

    + Этот пакет содержит функции для арифметики с произвольной + точностью. Необходим GCC. +

    +
  • +
  • +

    + Ninja +

    +

    + Этот пакет предоставляет небольшую систему сборки, + ориентированную на скорость. Он предназначен для того, + чтобы его входные файлы генерировались системой сборки + более высокого уровня, и для максимально быстрого запуска + сборок. Необходим для Meson. +

    +
  • +
  • +

    + Ncurses +

    +

    + Этот пакет содержит библиотеки для независимой от терминала + обработки символьных экранов. Он часто используется для + управления курсором в меню. Необходим ряду пакетов в LFS. +

    +
  • +
  • +

    + Openssl +

    +

    + Этот пакет содержит инструменты управления и библиотеки, + относящиеся к криптографии. Они предоставляют + криптографические функций другим пакетам, включая ядро + Linux. +

    +
  • +
  • +

    + Patch +

    +

    + Этот пакет содержит программу для изменения или создания + файлов путем применения файла patch, обычно создаваемого + программой diff. Он + необходим процедуре сборки для некоторых пакетов LFS. +

    +
  • +
  • +

    + Perl +

    +

    + Этот пакет является интерпретатором языка PERL. Он + необходим для установки и тестирования некоторых пакетов + LFS. +

    +
  • +
  • +

    + Pkgconf +

    +

    + Этот пакет содержит программу, которая помогает настраивать + флаги компилятора и компоновщика для библиотек разработки. + Программа может быть использована в качестве замены + pkg-config, + который необходим системе сборки многих пакетов. Он + поддерживается более активно и развивается немного быстрее, + чем оригинальный пакет Pkg-config. +

    +
  • +
  • +

    + Procps-NG +

    +

    + Этот пакет содержит программы для мониторинга процессов. + Набор полезен для системного администрирования, а также + используются загрузочными сценариями LFS. +

    +
  • +
  • +

    + Psmisc +

    +

    + Этот пакет содержит программы для отображения информации о + запущенных процессах. Этот набор программ полезен для + системного администрирования. +

    +
  • +
  • +

    + Python 3 +

    +

    + Этот пакет предоставляет интерпретируемый язык + программирования, философия которого делает упор на + удобочитаемость кода. +

    +
  • +
  • +

    + Readline +

    +

    + Этот пакет представляет собой набор библиотек, предлагающих + возможности редактирования командной строки и средства для + работы с историей команд. Используется командным + интерпретатором Bash. +

    +
  • +
  • +

    + Sed +

    +

    + Этот пакет позволяет редактировать текст, не открывая его в + текстовом редакторе. Он необходим сценариям настройки + многих пакетов LFS. +

    +
  • +
  • +

    + Shadow +

    +

    + Этот пакет содержит программы для безопасной обработки + паролей. +

    +
  • +
  • +

    + Sysklogd +

    +

    + Этот пакет содержит программы для регистрации системных + сообщений, которые генерируются ядром или процессами демона + при возникновении необычных событий. +

    +
  • +
  • +

    + Sysvinit +

    +

    + Этот пакет содержит систему инициализации init, родительской элемент всех + остальных процессов в работающей системе Linux. +

    +
  • +
  • +

    + Udev +

    +

    + Этот пакет представляет собой диспетчер устройств. Он + контролирует разрешения, имена и символические ссылки + устройств в каталоге /dev, когда устройства добавляются или + удаляются из системы. +

    +
  • +
  • +

    + Tar +

    +

    + Этот пакет предоставляет возможность архивирования и + извлечения практически всех пакетов, используемых в LFS. +

    +
  • +
  • +

    + Tcl +

    +

    + Этот пакет содержит командный язык инструментов, + используется во многих наборах тестов. +

    +
  • +
  • +

    + Texinfo +

    +

    + Этот пакет предоставляет программы для чтения, записи и + преобразования информационных страниц. Используется в + процедурах установки многих пакетов LFS. +

    +
  • +
  • +

    + Util-linux +

    +

    + Этот пакет содержит различные служебные программы. Среди + них утилиты для работы с файловыми системами, консолями, + разделами и сообщениями. +

    +
  • +
  • +

    + Vim +

    +

    + Этот пакет содержит редактор. Его выбрали из-за + совместимости с классическим редактором vi и огромного + количества возможностей. Редактор является очень личным + выбором для каждого пользователя. По желанию можно заменить + любым другим редактором. +

    +
  • +
  • +

    + Wheel +

    +

    + Этот пакет содержит модуль Python, который представляет + собой эталонную реализацию механизма упаковки Python. +

    +
  • +
  • +

    + XML::Parser +

    +

    + Этот пакет представляет собой модуль Perl, который + взаимодействует с Expat. +

    +
  • +
  • +

    + XZ Utils +

    +

    + Этот пакет содержит программы для сжатия и распаковки + файлов. Он обеспечивает высокое сжатие и используется для + распаковки пакетов в формате XZ или LZMA. +

    +
  • +
  • +

    + Zlib +

    +

    + Этот пакет содержит процедуры сжатия и распаковки, + используемые некоторыми программами. +

    +
  • +
  • +

    + Zstd +

    +

    + Этот пакет содержит процедуры сжатия и распаковки, + используемые некоторыми программами. Он обеспечивает + высокие коэффициенты сжатия и очень широкий диапазон + компромиссов между сжатием и скоростью. +

    +
  • +
+
+
+
+
+
+

+ Оформление +

+
+
+
+
+

+ Чтобы облегчить понимание, в этой книге используются условные + обозначения. Этот раздел содержит примеры оформления, + используемые в Linux From Scratch. +

+
./configure --prefix=/usr
+

+ Такое оформление предназначено для ввода именно так, как + показано, если иное не сказано в тексте рядом. Это оформление + также используется в разделах пояснений, чтобы указать, на какую + команду ссылается. +

+

+ В некоторых случаях логическая строка расширяется до двух или + более физических строк с обратной косой чертой в конце строки. +

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

+ Обратите внимание, что за обратной косой чертой должен следовать + перевод строки. Другие символы, такие как пробелы или символы + табуляции, приведут к неправильным результатам. +

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

+ Такое оформление (текст фиксированной ширины) показывает вывод на + экран, как правило, в результате выполнения команд. Этот формат + также используется для отображения имен файлов, таких как + /etc/ld.so.conf. +

+
+

+ Примечание +

+

+ Пожалуйста, настройте свой браузер для отображения текста + фиксированной ширины с хорошим моноширинным шрифтом, с помощью + которого вы сможете четко различать символы Il1 или O0. +

+
+

+ Акцент +

+

+ Эта форма текста используется в книге для нескольких целей. Его + основная цель — подчеркнуть важные моменты. +

+

+ https://mirror.linuxfromscratch.ru/ +

+

+ Этот формат используется для гиперссылок как на сайт сообщества + LFS, так и на внешние ресурсы. Может включать справочную + информацию, места загрузки и веб-сайты. +

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

+ Этот формат используется при создании файлов конфигурации. Первая + команда указывает системе создать файл $LFS/etc/group из всего, что введено далее, + пока не встретится последовательность End Of File (EOF). Поэтому + весь этот раздел обычно печатается как есть. +

+

+ <ЗАМЕНЯЕМЫЙ + ТЕКСТ> +

+

+ Этот формат используется для текста, который не должен быть + напечатан так, как отображается, или для операций копирования и + вставки. +

+

+ [НЕОБЯЗАТЕЛЬНЫЙ ТЕКСТ] +

+

+ Этот формат используется для текста, который является + необязательным. +

+

+ passwd(5) +

+

+ Этот формат используется для ссылки на определенную страницу + руководства (man). Число в скобках указывает на конкретный раздел + внутри руководств. Например, у passwd есть две справочные + страницы. В соответствии с инструкциями по установке LFS эти две + справочные страницы будут расположены в /usr/share/man/man1/passwd.1 и /usr/share/man/man5/passwd.5. Когда в книге + используется passwd(5), имеется + в виду конкретно /usr/share/man/man5/passwd.5. man passwd напечатает первую + найденную справочную страницу, совпадающую с «passwd» - это будет + /usr/share/man/man1/passwd.1. В + этом примере вам нужно будет запустить man 5 passwd, чтобы прочитать + указанную страницу. Обратите внимание, что большинство справочных + страниц не имеют повторяющихся страниц в разных разделах. Поэтому + обычно достаточно man <имя + программы>. В книге LFS ссылки на + справочные страницы также являются гиперссылками, поэтому нажатие + на такую ссылку откроет справочную страницу, в формате HTML, со + страниц + руководства Arch Linux. +

+
+
+
+
+

+ Структура +

+
+
+
+
+

+ Эта книга разделена на несколько частей. +

+
+

+ Часть I - Введение +

+

+ Эта часть содержит важные замечания о том, как выполнить + установку LFS. Также здесь представлена метаинформация о книге +

+
+
+

+ Часть II - Подготовка к сборке +

+

+ Часть II описывает, как подготовиться к процессу сборки — + создать разделы, загрузить пакеты и выполнить компиляцию + временных инструментов. +

+
+
+

+ Часть III - Создание кросс-тулчейна LFS и временных + инструментов +

+

+ Часть III содержит инструкции по созданию инструментов, + необходимых для создания конечной системы LFS. +

+
+
+

+ Часть IV - Сборка системы LFS +

+

+ Часть IV проводит читателя через сборку системы LFS—компиляцию + и установку всех пакетов один за другим, настройку сценариев + загрузки и установку ядра. Полученная в результате система + Linux является основой, на которой можно собрать другое + программное обеспечение для расширения системы по желанию. В + конце этой книги есть простой в использовании справочник со + списком всех программ, библиотек и важных файлов, которые были + установлены. +

+
+
+

+ Часть V - Приложения +

+

+ Часть V содержит информацию о самой книге, включая акронимы и + термины, благодарности, зависимости пакетов, список загрузочных + сценариев LFS, лицензии на распространение книги и + исчерпывающий указатель пакетов, программ, библиотек и + сценариев. +

+
+
+
+
+
+

+ Ошибки и + рекомендации по безопасности +

+
+
+
+
+

+ Программное обеспечение, используемое для создания системы LFS, + постоянно обновляется и совершенствуется. Предупреждения + безопасности и исправления ошибок могут появиться после выхода + книги LFS. Чтобы проверить, нуждаются ли пакеты или инструкции в + этом выпуске LFS в каких-либо изменениях для устранения + уязвимостей в системе безопасности или исправления других ошибок, + посетите https://mirror.linuxfromscratch.ru/lfs/errata/12.1/, + прежде чем приступить к сборке. Вы должны внести требуемые + изменения и применить их к соответствующему разделу книги по мере + сборки системы LFS. +

+

+ Кроме того, редакторы Linux From Scratch ведут список уязвимостей + безопасности, обнаруженных после выхода книги. Чтобы проверить + наличие каких-либо известных уязвимостей безопасности, посетите + https://mirror.linuxfromscratch.ru/lfs/advisories/, + прежде чем продолжить сборку. И, если вы будете использовать + систему LFS в качестве реальной настольной или серверной системы, + вам следует обращаться к рекомендациям и устранять любые + уязвимости в системе безопасности, даже когда система LFS + полностью собрана. +

+
+
+
+
+
+

+ Часть I. Введение +

+
+
+
+
+
+
+
+

+ Глава 1. + Введение +

+
+
+
+
+
+
+
+

+ 1.1. Как + собрать систему LFS +

+
+
+
+
+

+ Система LFS будет собрана с использованием уже установленного + дистрибутива Linux (например, Debian, OpenMandriva, Fedora или + openSUSE). Существующая система Linux (хост) будет + использоваться в качестве отправной точки для предоставления + необходимых программ, включая компилятор, компоновщик и + оболочку, для создания новой системы. Выберите опцию + «разработка» во время установки + дистрибутива, чтобы получить доступ к этим инструментам. +

+
+

+ Примечание +

+

+ Существует множество способов установки дистрибутива Linux, и + значения по умолчанию обычно не оптимальны для сборки системы + LFS. Предложения по настройке дистрибутива смотрите: + + https://mirror.linuxfromscratch.ru/hints/downloads/files/partitioning-for-lfs.txt. +

+
+

+ В качестве альтернативы установке отдельного дистрибутива на + свой компьютер вы можете использовать LiveCD другого + дистрибутива. +

+

+ Глава 2 этой книги + содержит информацию, о том, как создать новые разделы Linux и + файловую систему, где будет скомпилирована и установлена новая + система LFS. Глава 3 содержит + информацию, о том, какие пакеты и исправления необходимо + загрузить для сборки системы LFS и как их хранить на файловой + системе. Глава 4 + освещает вопросы настройки рабочего окружения. Пожалуйста, + внимательно прочитайте Глава 4, так + как в ней объясняется несколько важных моментов, о которых вам + необходимо знать, прежде чем вы начнёте работать со следующими + главами. +

+

+ Глава 5 содержит + информацию об установке первоначального набора инструментов + (binutils, gcc и glibc) с использованием методов + кросс-компиляции для изоляции новых инструментов от + хост-системы. +

+

+ Глава 6 + рассказывает, как выполнить кросс-компиляцию базовых утилит с + использованием только что собранного временного набора + инструментов. +

+

+ В + Глава 7 будет осуществлен переход в среду chroot, где мы будет + использовать новые инструменты для сборки остальных + инструментов, необходимых для создания конечной системы. +

+

+ Эта попытка изолировать новую систему от основного дистрибутива + поначалу может показаться чрезмерной. Полное техническое + обоснование того, почему это сделано именно так, приведено в + разделе Технические + примечания по сборочным инструментам. +

+

+ В + Глава 8 будет собрана полноценная система LFS. Еще + одно преимущество среды chroot заключается в том, что она + позволяет вам продолжать использовать хост-систему во время + сборки LFS. Ожидая завершения компиляции пакетов, вы можете + продолжать пользоваться своим компьютером в обычном режиме. +

+

+ Чтобы завершить установку, в Глава 9 происходит + настройка базовой конфигурации системы, в Глава 10 + настраиваются ядро и загрузчик. Глава 11 содержит информацию о + том как расширить возможности системы LFS. После выполнения + шагов, описанных в этой главе, компьютер будет готов к загрузке + в новую систему LFS. +

+

+ Здесь описан процесс сборки системы в двух словах. Подробная + информация о каждом шаге обсуждается в следующих главах и + описаниях пакетов. Элементы, которые кажутся сложными сейчас, + будут разъяснены позже, и все встанет на свои места, по мере + прочтения книги. +

+
+
+
+
+

+ 1.2. + Что нового с момента последнего релиза +

+
+
+
+
+

+ Ниже приведен список пакетов, обновленных с момента предыдущего + выпуска книги. +

+
+

+ Обновлены: +

+
    +
  • +

    + Acl-2.3.2 +

    +
  • +
  • +

    + Attr-2.5.2 +

    +
  • +
  • +

    + Autoconf-2.72 +

    +
  • +
  • +

    + Bash-5.2.21 +

    +
  • +
  • +

    + Bc-6.7.5 +

    +
  • +
  • +

    + Binutils-2.42 +

    +
  • +
  • +

    + Coreutils-9.4 +

    +
  • +
  • +

    + Expat-2.6.0 +

    +
  • +
  • +

    + Gawk-5.3.0 +

    +
  • +
  • +

    + Gettext-0.22.4 +

    +
  • +
  • +

    + Glibc-2.39 +

    +
  • +
  • +

    + GRUB-2.12 +

    +
  • +
  • +

    + Gzip-1.13 +

    +
  • +
  • +

    + Iana-Etc-20240125 +

    +
  • +
  • +

    + Inetutils-2.5 +

    +
  • +
  • +

    + IPRoute2-6.7.0 +

    +
  • +
  • +

    + Jinja2-3.1.3 +

    +
  • +
  • +

    + Kbd-2.6.4 +

    +
  • +
  • +

    + Kmod-31 +

    +
  • +
  • +

    + Libelf из Elfutils-0.190 +

    +
  • +
  • +

    + Linux-6.7.4 +

    +
  • +
  • +

    + Man-DB-2.12.0 +

    +
  • +
  • +

    + Man-pages-6.06 +

    +
  • +
  • +

    + MarkupSafe-2.1.5 +

    +
  • +
  • +

    + Meson-1.3.2 +

    +
  • +
  • +

    + MPFR-4.2.1 +

    +
  • +
  • +

    + Ncurses-6.4-20230520 +

    +
  • +
  • +

    + OpenSSL-3.2.1 +

    +
  • +
  • +

    + Perl-5.38.2 +

    +
  • +
  • +

    + Pkgconf-2.1.1 +

    +
  • +
  • +

    + Procps-ng-4.0.4 +

    +
  • +
  • +

    + Python-3.12.2 +

    +
  • +
  • +

    + Setuptools-69.1.0 +

    +
  • +
  • +

    + Shadow-4.14.5 +

    +
  • +
  • +

    + SysVinit-3.08 +

    +
  • +
  • +

    + Texinfo-7.1 +

    +
  • +
  • +

    + Tzdata-2024a +

    +
  • +
  • +

    + Util-Linux-2.39.3 +

    +
  • +
  • +

    + Vim-9.1.0041 +

    +
  • +
  • +

    + wheel-0.42.0 +

    +
  • +
  • +

    + XML::Parser-2.47 +

    +
  • +
  • +

    + Xz-5.4.6 +

    +
  • +
  • +

    + Zlib-1.3.1 +

    +
  • +
+
+
+

+ Добавлены: +

+
    +
  • +

    + bash-5.2.21-upstream_fixes-1.patch +

    +
  • +
  • +

    + readline-8.2-upstream_fixes-3.patch +

    +
  • +
  • +

    + setuptools-69.1.0 +

    +
  • +
  • +

    + systemd-255-upstream_fixes-1.patch +

    +
  • +
+
+
+

+ Удалены: +

+
    +
  • +

    + glibc-2.38-memalign_fix-1.patch +

    +
  • +
  • +

    + grub-2.06-upstream_fixes-1.patch +

    +
  • +
  • +

    + readline-8.2-upstream_fix-1.patch +

    +
  • +
+
+
+
+
+
+

+ 1.3. Журнал изменений +

+
+
+
+
+

+ Это версия 12.1 книги Linux From Scratch от 1 марта 2024. Если + этой книге больше шести месяцев, возможно, уже доступна более + новая, улучшенная версия. Чтобы узнать это, проверьте одно из + зеркал https://mirror.linuxfromscratch.ru/mirrors.html. +

+

+ Ниже приведен список изменений, внесенных с момента предыдущего + выпуска книги. +

+
+

+ Список изменений: +

+
    +
  • +

    + 2024-02-14 +

    +
    +
      +
    • +

      + [bdubbs] - Update to meson-1.3.2. Fixes + #5442. +

      +
    • +
    +
    +
  • +
  • +

    + 2024-02-12 +

    +
    +
      +
    • +

      + [bdubbs] - Update to shadow-4.14.5. Fixes + #5437. +

      +
    • +
    • +

      + [bdubbs] - Update to setuptools-69.1.0 (Python + module). Fixes + #5439. +

      +
    • +
    • +

      + [bdubbs] - Update to python-3.12.2. Fixes + #5434. +

      +
    • +
    • +

      + [bdubbs] - Update to pkgconf-2.1.1. Fixes + #5432. +

      +
    • +
    • +

      + [bdubbs] - Update to MarkupSafe-2.1.5 (Python + module). Fixes + #5431. +

      +
    • +
    • +

      + [bdubbs] - Update to man-pages-6.06. Fixes + + #5438. +

      +
    • +
    • +

      + [bdubbs] - Update to expat-2.6.0. Fixes + #5435. +

      +
    • +
    • +

      + [bdubbs] - Update to linux-6.7.4. Fixes + #5433. +

      +
    • +
    +
    +
  • +
  • +

    + 2024-02-02 +

    +
    +
      +
    • +

      + [xry111] - Update to tzdata-2024a. Fixes + #5428. +

      +
    • +
    • +

      + [xry111] - Update to glibc-2.39 (security fix). + Fixes + #5426. +

      +
    • +
    • +

      + [xry111] - Update to linux-6.7.3. Fixes + #5427. +

      +
    • +
    +
    +
  • +
  • +

    + 2024-02-01 +

    +
    +
      +
    • +

      + [bdubbs] - Update to openssl-3.2.1 (security fix). + Fixes + #5425. +

      +
    • +
    • +

      + [bdubbs] - Update to zlib-1.3.1. Fixes + #5419. +

      +
    • +
    • +

      + [bdubbs] - Update to xz-5.4.6. Fixes + #5423. +

      +
    • +
    • +

      + [bdubbs] - Update to linux-6.7.2. Fixes + #5422. +

      +
    • +
    • +

      + [bdubbs] - Update to iana-etc-20240125. Addresses + + #5006. +

      +
    • +
    • +

      + [bdubbs] - Update to binutils-2.42. Fixes + #5424. +

      +
    • +
    • +

      + [bdubbs] - Update to acl-2.3.2. Fixes + #5421. +

      +
    • +
    • +

      + [bdubbs] - Update upstream fixes for readline-8.2. + Fixes + #5420. +

      +
    • +
    • +

      + [bdubbs] - Apply upstream fix for bash-5.2.21. + Fixes + #5420. +

      +
    • +
    +
    +
  • +
  • +

    + 2024-01-21 +

    +
    +
      +
    • +

      + [xry111] - Apply upstream fix for pkgconf-2.1.0 + regression. Fixes + #5414. +

      +
    • +
    • +

      + [xry111] - Update to jinja2-3.1.3 (security fix). + Fixes + #5411. +

      +
    • +
    • +

      + [xry111] - Update to bc-6.7.5. Fixes + #5408. +

      +
    • +
    • +

      + [xry111] - Update to attr-2.5.2. Fixes + #5412. +

      +
    • +
    • +

      + [xry111] - Update to ncurses-6.4-20230520 (security + fix). Fixes + #5416. +

      +
    • +
    • +

      + [xry111] - Update to markupsafe-2.1.4. Fixes + + #5418. +

      +
    • +
    • +

      + [xry111] - Update to linux-6.7.1. Fixes + #5406. +

      +
    • +
    • +

      + [xry111] - Update to iproute2-6.7.0. Fixes + + #5410. +

      +
    • +
    • +

      + [xry111] - Update to vim-9.1.0041. Addresses + + #4500. +

      +
    • +
    • +

      + [xry111] - Update to iana-etc-20240117. Addresses + + #5006. +

      +
    • +
    • +

      + [xry111] - Update to shadow-4.14.3. Fixes + #5413. +

      +
    • +
    • +

      + [xry111] - Fix CVE-2024-0684 for coreutils-9.4. + Fixes + #5417. +

      +
    • +
    +
    +
  • +
  • +

    + 2024-01-18 +

    +
    +
      +
    • +

      + [xry111] - Edit a ncurses header to always use the + wide-character ABI compatible with libncursesw.so + because we are faking the 8-bit libncurses.so with + it. Fixes + #5415. +

      +
    • +
    +
    +
  • +
  • +

    + 2024-01-09 +

    +
    +
      +
    • +

      + [renodr] - Fix the definition of the C.UTF-8 + locale. Fixes + #5409. +

      +
    • +
    +
    +
  • +
  • +

    + 2023-12-31 +

    +
    +
      +
    • +

      + [xry111] - Add --enable-default-hash-style=gnu + configuring binutils. Fixes + #5401. +

      +
    • +
    • +

      + [xry111] - Fix CVE-2023-7008 for systemd-255. Fixes + + #5405. +

      +
    • +
    • +

      + [xry111] - Update to iana-etc-20231205. Addresses + + #5006. +

      +
    • +
    • +

      + [xry111] - Update to tzdata-2023d. Fixes + #5399. +

      +
    • +
    • +

      + [xry111] - Update to linux-6.6.8. Fixes + #5397. +

      +
    • +
    • +

      + [xry111] - Update to meson-1.3.1. Fixes + #5402. +

      +
    • +
    • +

      + [xry111] - Update to grub-2.12. Fixes + #5396. +

      +
    • +
    • +

      + [xry111] - Update to inetutils-2.5. Fixes + #5404. +

      +
    • +
    • +

      + [xry111] - Update to setuptools-69.0.3. Fixes + + #5400. +

      +
    • +
    • +

      + [xry111] - Update to xml-parser-2.47. Fixes + + #5403. +

      +
    • +
    • +

      + [xry111] - Update to vim-9.0.2189. Addresses + + #4500. +

      +
    • +
    • +

      + [xry111] - Update to autoconf-2.72. Fixes + #5398. +

      +
    • +
    +
    +
  • +
  • +

    + 2023-12-16 +

    +
    +
      +
    • +

      + [xry111] - Update to udev + from systemd-255. Fixes + #5390. +

      +
    • +
    +
    +
  • +
  • +

    + 2023-12-14 +

    +
    +
      +
    • +

      + [bdubbs] - Update to util-linux v2.39.3. Fixes + + #5388. +

      +
    • +
    • +

      + [bdubbs] - Update to python3-3.12.1. Fixes + + #5392. +

      +
    • +
    • +

      + [bdubbs] - Update to linux-6.6.7. Fixes + #5387. +

      +
    • +
    • +

      + [bdubbs] - Update to kbd-2.6.4. Fixes + #5393. +

      +
    • +
    • +

      + [bdubbs] - Update to bc-6.7.4. Fixes + #5389. +

      +
    • +
    • +

      + [bdubbs] - Reformat util-linux configure + parameters. Fixes + #5395. +

      +
    • +
    +
    +
  • +
  • +

    + 2023-12-04 +

    +
    +
      +
    • +

      + [thomas] - Modify commands for install Python docs + to avoid too restrictive permissions on the files + and dirs. +

      +
    • +
    +
    +
  • +
  • +

    + 2023-12-01 +

    +
    +
      +
    • +

      + [xry111] - Restore NIC naming based on physical + system characteristics. Fixes + #5386. +

      +
    • +
    +
    +
  • +
  • +

    + 2023-11-30 +

    +
    +
      +
    • +

      + [bdubbs] - Update to vim-9.0.2136. Addresses + + #4500. +

      +
    • +
    • +

      + [bdubbs] - Update to iana-etc-20231117. Addresses + + #5006. +

      +
    • +
    • +

      + [bdubbs] - Update to bc-6.7.3. Fixes + #5385. +

      +
    • +
    • +

      + [bdubbs] - Update to wheel-0.42.0 (Python Module). + Fixes + #5384. +

      +
    • +
    • +

      + [bdubbs] - Update to perl-5.38.2. Fixes + #5383. +

      +
    • +
    • +

      + [bdubbs] - Update to pkgconf-2.1.0. Fixes + #5382. +

      +
    • +
    • +

      + [bdubbs] - Update to readline patches 002 through + 007. Fixes + #5381. +

      +
    • +
    • +

      + [bdubbs] - Update to openssl-3.2.0. Fixes + #5380. +

      +
    • +
    • +

      + [bdubbs] - Update to setuptools-69.0.2. Fixes + + #5379. +

      +
    • +
    • +

      + [bdubbs] - Update to linux-6.6.3. Fixes + #5378. +

      +
    • +
    • +

      + [bdubbs] - Update to meson-1.3.0. Fixes + #5377. +

      +
    • +
    • +

      + [bdubbs] - Update to gettext-0.22.4. Fixes + + #5376. +

      +
    • +
    +
    +
  • +
  • +

    + 2023-11-13 +

    +
    +
      +
    • +

      + [xry111] - Update to elfutils-0.190. Fixes + + #5373. +

      +
    • +
    • +

      + [xry111] - Update to vim-9.0.2103. Addresses + + #4500. +

      +
    • +
    • +

      + [xry111] - Update to linux-6.6.1. Fixes + #5369. +

      +
    • +
    • +

      + [xry111] - Update to xz-5.4.5. Fixes + #5371. +

      +
    • +
    • +

      + [xry111] - Update to iana-etc-20231107. Addresses + + #5006. +

      +
    • +
    • +

      + [xry111] - Update to gawk-5.3.0. Fixes + #5372. +

      +
    • +
    • +

      + [xry111] - Update to bash-5.2.21. Fixes + #5375. +

      +
    • +
    • +

      + [xry111] - Update to iproute2-6.6.0. Fixes + + #5374. +

      +
    • +
    +
    +
  • +
  • +

    + 2023-11-01 +

    +
    +
      +
    • +

      + [bdubbs] - Update to iana-etc-20231019. Addresses + + #5006. +

      +
    • +
    • +

      + [bdubbs] - Update to wheel-0.41.3. Fixes + #5370. +

      +
    • +
    • +

      + [bdubbs] - Update to shadow-4.14.2. Fixes + #5368. +

      +
    • +
    • +

      + [bdubbs] - Update to openssl-3.1.4. Fixes + #5367. +

      +
    • +
    • +

      + [bdubbs] - Update to texinfo-7.1. Fixes + #5364. +

      +
    • +
    • +

      + [bdubbs] - Update to meson-1.2.3. Fixes + #5366. +

      +
    • +
    • +

      + [bdubbs] - Update to bc-6.7.2. Fixes + #5363. +

      +
    • +
    • +

      + [bdubbs] - Update to linux-6.5.9. Fixes + #5365. +

      +
    • +
    • +

      + [bdubbs] - Update to Python-3.12.0. Fixes + #5357. +

      +
    • +
    • +

      + [bdubbs] - Add setuptools-68.2.2. Fixes + #5358. +

      +
    • +
    +
    +
  • +
  • +

    + 2023-10-15 +

    +
    +
      +
    • +

      + [bdubbs] - Update to linux-6.5.7. Fixes + #5362. +

      +
    • +
    • +

      + [bdubbs] - Update to shadow-4.14.1. Fixes + #5361. +

      +
    • +
    • +

      + [bdubbs] - Update to gettext-0.22.3. Fixes + + #5359. +

      +
    • +
    +
    +
  • +
  • +

    + 2023-10-03 +

    +
    +
      +
    • +

      + [xry111] - Update Glibc upstream fixes patch to fix + CVE-2023-4911. +

      +
    • +
    +
    +
  • +
  • +

    + 2023-10-01 +

    +
    +
      +
    • +

      + [bdubbs] - Disable building nscd in glibc. Fixes + + #5349. +

      +
    • +
    • +

      + [bdubbs] - Update to iana-etc-20230929. Addresses + + #5006. +

      +
    • +
    • +

      + [bdubbs] - Update to vim-9.0.1968. Addresses + + #4500. +

      +
    • +
    • +

      + [bdubbs] - Update to openssl-3.1.3. Fixes + #5350. +

      +
    • +
    • +

      + [bdubbs] - Update to meson-1.2.2. Fixes + #5356. +

      +
    • +
    • +

      + [bdubbs] - Update to man-db-2.12.0. Fixes + #5354. +

      +
    • +
    • +

      + [bdubbs] - Update to linux-6.5.5. Fixes + #5352. +

      +
    • +
    • +

      + [bdubbs] - Update to kmod-31. Fixes + #5355. +

      +
    • +
    • +

      + [bdubbs] - Update to kbd-2.6.3. Fixes + #5361. +

      +
    • +
    • +

      + [bdubbs] - Update to gettext-0.22.2. Fixes + + #5348. +

      +
    • +
    • +

      + [bdubbs] - Update to bc-6.7.0. Fixes + #5353. +

      +
    • +
    +
    +
  • +
  • +

    + 2023-09-24 +

    +
    +
      +
    • +

      + [xry111] - Update Glibc upstream fixes patch to + plug a memory leak introduced by the security fix. +

      +
    • +
    +
    +
  • +
  • +

    + 2023-09-17 +

    +
    +
      +
    • +

      + [xry111] - Update to linux-6.5.3. Fixes + #5343. +

      +
    • +
    • +

      + [xry111] - Update to iana-etc-20230912. Addresses + + #5006. +

      +
    • +
    • +

      + [xry111] - Update to iproute2-6.5.0. Fixes + + #5342. +

      +
    • +
    +
    +
  • +
  • +

    + 2023-09-13 +

    +
    +
      +
    • +

      + [xry111] - Fix CVE-2023-4806 for Glibc-2.38. Fixes + + #5347. +

      +
    • +
    +
    +
  • +
  • +

    + 2023-09-12 +

    +
    +
      +
    • +

      + [xry111] - Fix CVE-2023-4527 for Glibc-2.38. Fixes + + #5346. +

      +
    • +
    +
    +
  • +
  • +

    + 2023-09-07 +

    +
    +
      +
    • +

      + [xry111] - Fix an issue in pkgconf-2.0.3 causing + BLFS packages fail to build. Fixes + #5341. +

      +
    • +
    +
    +
  • +
  • +

    + 2023-09-05 +

    +
    +
      +
    • +

      + [xry111] - Move pkgconf before binutils for + binutils building system to detect zstd properly. + Fixes + #5340. +

      +
    • +
    • +

      + [xry111] - Update to linux-6.5.1. Fixes + #5332. +

      +
    • +
    • +

      + [xry111] - Update to pkgconf-2.0.3. Fixes + #5339. +

      +
    • +
    • +

      + [xry111] - Update to dbus-1.14.10. Fixes + #5337. +

      +
    • +
    +
    +
  • +
  • +

    + 2023-09-04 +

    +
    +
      +
    • +

      + [bdubbs] - Move caution regarding building by + mixing different version of LFS to General + Compilation Instructions. Fixes + #5338. +

      +
    • +
    +
    +
  • +
  • +

    + 2023-09-02 +

    +
    +
      +
    • +

      + [xry111] - Add --no-cache-dir option for pip3 wheel + commands. Addresses + BLFS #18466. +

      +
    • +
    • +

      + [bdubbs] - Update to vim-9.0.1837. Addresses + + #4500. +

      +
    • +
    • +

      + [bdubbs] - Update to zlib-1.3. Fixes + #5324. +

      +
    • +
    • +

      + [bdubbs] - Update to wheel-0.41.2 (Python Module). + Fixes + #5328. +

      +
    • +
    • +

      + [bdubbs] - Update to util-linux-2.39.2. Fixes + + #5322. +

      +
    • +
    • +

      + [bdubbs] - Update to sysvinit-3.08. Fixes + #5321. +

      +
    • +
    • +

      + [bdubbs] - Update to shadow-4.14.0. Fixes + #5319. +

      +
    • +
    • +

      + [bdubbs] - Update to Python-3.11.5. Fixes + #5330. +

      +
    • +
    • +

      + [bdubbs] - Update to procps-ng-4.0.4 (security fix + for 32-bit systems). Fixes + #5335. +

      +
    • +
    • +

      + [bdubbs] - Update to pkgconf-2.0.2. Fixes + #5323. +

      +
    • +
    • +

      + [bdubbs] - Update to mpfr-4.2.1. Fixes + #5326. +

      +
    • +
    • +

      + [bdubbs] - Update to kbd-2.6.2. Fixes + #5318. +

      +
    • +
    • +

      + [bdubbs] - Update to gzip-1.13. Fixes + #5325. +

      +
    • +
    • +

      + [bdubbs] - Update to coreutils-9.4. Fixes + #5334. +

      +
    • +
    • +

      + [bdubbs] - Remove unused usb group. Fixes + #5331. +

      +
    • +
    +
    +
  • +
  • +

    + 2023-09-01 +

    +
    +
      +
    • +

      + [bdubbs] - LFS-12.0 released. +

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

+ 1.4. Ресурсы +

+
+
+
+
+
+

+ 1.4.1. Часто + задаваемые вопросы +

+

+ Если во время создания системы LFS вы столкнетесь с + какими-либо ошибками, у вас возникнут какие-либо вопросы или + вам кажется, что в книге допущена опечатка, пожалуйста, для + начала ознакомьтесь со списком часто задаваемых вопросов + (FAQ), расположенным по адресу https://mirror.linuxfromscratch.ru/faq/. +

+
+
+

+ 1.4.2. Списки рассылки +

+

+ На сервере linuxfromscratch.org размещен ряд списков + рассылки, используемых для разработки проекта LFS. Эти списки + включают, среди прочего, основные списки разработки и + поддержки. Если вы не можете найти ответ на странице часто + задаваемых вопросов, следующим шагом будет поиск решения в + списках рассылки по адресу https://mirror.linuxfromscratch.ru/search.html. +

+

+ Для получения информации о списках рассылки, способах + подписки, архивах и дополнительной информации посетите + https://mirror.linuxfromscratch.ru/mail.html. +

+
+
+

+ 1.4.3. IRC +

+

+ Некоторые члены сообщества LFS предлагают помощь в Internet + Relay Chat (IRC). Прежде чем воспользоваться этим способом, + убедитесь, что на ваш вопрос еще нет ответа в разделе часто + задаваемых вопросов LFS или в архивах списков рассылки. Вы + можете найти нас в irc.libera.chat. Канал поддержки + называется #lfs-support. +

+
+
+

+ 1.4.4. + Зеркала проекта +

+

+ Проект LFS имеет несколько зеркал по всему миру, чтобы + сделать доступ к веб-сайту и загрузку необходимых пакетов + более удобными. Пожалуйста, посетите веб-сайт LFS по адресу + https://mirror.linuxfromscratch.ru/mirrors.html + для получения списка текущих зеркал. +

+
+
+

+ 1.4.5. Контактная информация +

+

+ Пожалуйста, направляйте все свои вопросы и комментарии в один + из списков рассылки LFS (см. выше). +

+
+
+
+
+
+

+ 1.5. Помощь +

+
+
+
+
+
+

+ Примечание +

+

+ Если вы столкнулись с проблемой при сборки одного пакета с + помощью инструкцией из LFS, мы настоятельно не рекомендуем + публиковать проблему непосредственно в канале поддержки + разработчиков пакета до обсуждения через канал поддержки LFS, + указанный в Раздел 1.4, «Ресурсы». Часто это + неэффективно, потому что разработчики редко знакомы с + процедурой сборки LFS. Даже если вы действительно столкнулись + с проблемой в пакете, сообщество LFS все равно может помочь + выделить информацию, необходимую специалистам по поддержке + пакета, и составить соответствующий отчет. +

+

+ Если вам нужно задать вопрос напрямую через канал поддержки + пакета, вы должны, по крайней мере, понимать, что многие + проекты имеют каналы поддержки, отделенные от системы + отслеживания ошибок. Отчеты об «ошибках» при + отправке вопросов считаются недействительными и могут + раздражать разработчиков этих проектов. +

+
+

+ Если при работе с этой книгой у вас возникнут проблемы или + вопросы, посетите страницу часто задаваемых вопросов по адресу + https://mirror.linuxfromscratch.ru/faq/#generalfaq. + Часто там уже есть ответы на большинство вопросов. Если на этой + странице нет ответа на ваш вопрос, попробуйте самостоятельно + найти источник проблемы. Следующий документ даст вам некоторые + рекомендации по устранению неполадок: + https://mirror.linuxfromscratch.ru/hints/downloads/files/errors.txt. +

+

+ Если вы не можете найти решение своей проблемы в разделе часто + задаваемых вопросов, выполните поиск в списках рассылки по + адресу https://mirror.linuxfromscratch.ru/search.html. +

+

+ У нас также есть замечательное сообщество LFS, которое готово + предложить помощь через списки рассылки и IRC (см. Раздел 1.4, «Ресурсы» этой книги). Мы + получаем много вопросов в службу поддержки каждый день, и на + многие из них можно легко ответить, зайдя в раздел часто + задаваемых вопросов и предварительно выполнив поиск в списках + рассылки. Чтобы мы могли оказать помощь, вам необходимо сначала + провести самостоятельное исследование. Это позволяет нам + сосредоточиться на более сложных вопросах в поддержке. Если + ваши поиски не привели к решению проблемы, включите всю + необходимую информацию (упомянутую ниже) в свой запрос о + помощи. +

+
+

+ 1.5.1. Что следует упомянуть +

+

+ Помимо краткого объяснения возникшей проблемы, в любой запрос + о помощи необходимо включить следующую важную информацию: +

+
+
    +
  • +

    + Используемая версия книги (в данном случае 12.1) +

    +
  • +
  • +

    + Информацию о дистрибутиве и его версия, используемые + для сборки LFS +

    +
  • +
  • +

    + Вывод сценария Системные требования к хостовой + машине +

    +
  • +
  • +

    + Пакет или раздел где возникла проблема +

    +
  • +
  • +

    + Точное сообщение об ошибке или четкое описание проблемы +

    +
  • +
  • +

    + Обратите внимание, отклонялись ли вы от книги +

    +
  • +
+
+
+

+ Примечание +

+

+ Отклонение от этой книги не означает, что мы не поможем + вам. В конце концов, LFS зависит от личных предпочтений. + Заблаговременное информирование о любых изменениях в + процессе сборки помогает нам оценить и определить возможные + причины вашей проблемы +

+
+
+
+

+ 1.5.2. Проблемы со скриптом configure +

+

+ Если что-то пойдет не так во время выполнения скрипта + configure, + просмотрите файл config.log. + Этот файл может содержать ошибки, обнаруженные во время + настройки, которые не были выведены на экран. Включите + соответствующие + строки, если вам нужно обратиться за помощью. +

+
+
+

+ 1.5.3. Проблемы компиляции +

+

+ Как вывод на экран, так и содержимое различных файлов полезны + для определения причины проблем компиляции. Вывод экрана из + скрипта configure и запуска + make может быть + полезен. Необязательно включать весь вывод целиком, но + обязательно включите всю необходимую информацию. Ниже + приведен пример информации, которая должна быть включена в + экранный вывод 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
+

+ В этом случае многие люди просто включили бы только нижнюю + часть: +

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

+ Этой информации недостаточно, чтобы правильно диагностировать + проблему, потому что она только указывает на то, что что-то + пошло не так, а не на то, что пошло не так. Весь раздел, как + в приведенном выше примере, должен быть сохранен, так как он + включает в себя выполненную команду и все связанные с ней + сообщения об ошибках. +

+

+ Отличная статья о том, как обращаться за помощью в Интернете, + доступна по адресу http://catb.org/~esr/faqs/smart-questions.html. + Прочтите этот документ и следуйте советам, чтобы повысить + вероятность получения помощи в которой вы нуждаетесь. +

+
+
+
+
+
+
+
+

+ Часть II. Подготовка к + сборке +

+
+
+
+
+
+
+
+

+ Глава 2. Подготовка хост-системы +

+
+
+
+
+
+
+
+

+ 2.1. Введение +

+
+
+
+
+

+ В этой главе проверяются и при необходимости устанавливаются + основные инструменты, необходимые для построения LFS. Затем + подготавливается раздел, в котором будет размещаться система + LFS. Мы создадим сам раздел, создадим на нем файловую систему и + смонтируем его. +

+
+
+
+
+

+ 2.2. Требования к + хост-системе +

+
+
+
+
+
+

+ 2.2.1. Аппаратное обеспечение +

+

+ Редакторы LFS рекомендуют, чтобы процессор имел не менее + четырех ядер и не менее 8 ГБ памяти. Старые системы, не + отвечающие этим требованиям, будут по-прежнему работать, но + время сборки пакетов будет значительно больше, чем указано в + документации. +

+
+
+

+ 2.2.2. Программное обеспечение +

+

+ Ваша хост-система должна иметь следующее программное + обеспечение с указанными минимальными версиями. Это не должно + быть проблемой для большинства современных дистрибутивов + Linux. Также обратите внимание на то, что многие дистрибутивы + помещают заголовочные файлы в отдельные пакеты, как правило в + формате <package-name>-devel + или <package-name>-dev. + Обязательно установите эти пакеты, если ваш дистрибутив их + предоставляет. +

+

+ Более ранние версии перечисленных ниже пакетов могут + работать, но это не проверялось. +

+
+
    +
  • +

    + Bash-3.2 + (/bin/sh должен быть символической или жесткой ссылкой + на bash) +

    +
  • +
  • +

    + Binutils-2.13.1 + (Версия выше 2.42 не рекомендуется, так как она не + тестировалась) +

    +
  • +
  • +

    + Bison-2.7 + (/usr/bin/yacc должен быть ссылкой на bison или + небольшой скрипт, запускающий bison) +

    +
  • +
  • +

    + Coreutils-8.1 +

    +
  • +
  • +

    + Diffutils-2.8.1 +

    +
  • +
  • +

    + Findutils-4.2.31 +

    +
  • +
  • +

    + Gawk-4.0.1 + (/usr/bin/awk должен быть ссылкой на gawk) +

    +
  • +
  • +

    + GCC-5.2, + включая компилятор C++, g++ (версии выше + 13.2.0 не рекомендуются, поскольку они не + тестировались). Также должны присутствовать стандартные + библиотеки C и C++ (с заголовочными файлами), чтобы + компилятор C++ мог осуществлять сборку программ. +

    +
  • +
  • +

    + Grep-2.5.1a +

    +
  • +
  • +

    + Gzip-1.3.12 +

    +
  • +
  • +

    + Linux + Kernel-4.19 +

    +

    + Причиной, по которой указаны минимальные требования к + версии ядра, является то, что мы указываем эту версию + при сборке glibc в + Глава 5 и + + Глава 8. Так как более старые ядра не + поддерживаются, скомпилированный пакет glibc немного меньше и быстрее. По + состоянию на февраль 2024 г. 4.19 является самой старой + версией ядра, поддерживаемой разработчиками ядра. + Некоторые версии ядра, более старые, чем 4.19, могут + по-прежнему поддерживаться сторонними командами, но они + не считаются официальными выпусками ядра; подробности + читайте на странице https://kernel.org/category/releases.html +

    +

    + Если версия ядра хоста более ранняя, чем 4.19, вам + необходимо обновить ядро на более современную версию. + Есть два способа сделать это. Во-первых, посмотрите, + предоставляет ли ваш дистрибутив Linux пакет ядра 4.19 + или более позднюю версию. Если это так, установите его. + Если ваш дистрибутив не предлагает приемлемый пакет + ядра или вы предпочитаете не устанавливать его, вы + можете скомпилировать ядро самостоятельно. Инструкции + по компиляции ядра и настройке загрузчика (при условии, + что хост использует GRUB) находятся в Глава 10. +

    +

    + Для сборки LFS необходимо, чтобы ядро хоста + поддерживало псевдотерминал UNIX 98 (PTY). Обычно он + включен на всех настольных или серверных дистрибутивах, + поставляющих Linux 4.19 или более новое ядро. Если на + хосте вы используете самостоятельно собранное ядро, + убедитесь, что для параметра CONFIG_UNIX98_PTYS установлено значение + y в конфигурационном файле + ядра. +

    +
  • +
  • +

    + 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-5.0 +

    +
  • +
  • +

    + Xz-5.0.0 +

    +
  • +
+
+
+

+ Важно +

+

+ Обратите внимание, что упомянутые выше символические ссылки + необходимы для создания системы LFS с использованием + инструкций, содержащихся в этой книге. Симлинки, + указывающие на другое программное обеспечение (например, + dash, mawk и т. д.), могут работать, но не тестируются и не + поддерживаются командой разработчиков LFS, и могут + потребовать либо отклонения от инструкций, либо + дополнительных исправлений для некоторых пакетов. +

+
+

+ +

+

+ Чтобы узнать, есть ли в вашей хост-системе все необходимые + пакеты и возможность компилировать программы, выполните + следующий скрипт: +

+
cat > version-check.sh << "EOF"
+#!/bin/bash
+# A script to list version numbers of critical development tools
+
+# If you have tools installed in other directories, adjust PATH here AND
+# in ~lfs/.bashrc (section 4.4) as well.
+
+LC_ALL=C 
+PATH=/usr/bin:/bin
+
+bail() { echo "FATAL: $1"; exit 1; }
+grep --version > /dev/null 2> /dev/null || bail "grep does not work"
+sed '' /dev/null || bail "sed does not work"
+sort   /dev/null || bail "sort does not work"
+
+ver_check()
+{
+   if ! type -p $2 &>/dev/null
+   then 
+     echo "ERROR: Cannot find $2 ($1)"; return 1; 
+   fi
+   v=$($2 --version 2>&1 | grep -E -o '[0-9]+\.[0-9\.]+[a-z]*' | head -n1)
+   if printf '%s\n' $3 $v | sort --version-sort --check &>/dev/null
+   then 
+     printf "OK:    %-9s %-6s >= $3\n" "$1" "$v"; return 0;
+   else 
+     printf "ERROR: %-9s is TOO OLD ($3 or later required)\n" "$1"; 
+     return 1; 
+   fi
+}
+
+ver_kernel()
+{
+   kver=$(uname -r | grep -E -o '^[0-9\.]+')
+   if printf '%s\n' $1 $kver | sort --version-sort --check &>/dev/null
+   then 
+     printf "OK:    Linux Kernel $kver >= $1\n"; return 0;
+   else 
+     printf "ERROR: Linux Kernel ($kver) is TOO OLD ($1 or later required)\n" "$kver"; 
+     return 1; 
+   fi
+}
+
+# Coreutils first because --version-sort needs Coreutils >= 7.0
+ver_check Coreutils      sort     8.1 || bail "Coreutils too old, stop"
+ver_check Bash           bash     3.2
+ver_check Binutils       ld       2.13.1
+ver_check Bison          bison    2.7
+ver_check Diffutils      diff     2.8.1
+ver_check Findutils      find     4.2.31
+ver_check Gawk           gawk     4.0.1
+ver_check GCC            gcc      5.2
+ver_check "GCC (C++)"    g++      5.2
+ver_check Grep           grep     2.5.1a
+ver_check Gzip           gzip     1.3.12
+ver_check M4             m4       1.4.10
+ver_check Make           make     4.0
+ver_check Patch          patch    2.5.4
+ver_check Perl           perl     5.8.8
+ver_check Python         python3  3.4
+ver_check Sed            sed      4.1.5
+ver_check Tar            tar      1.22
+ver_check Texinfo        texi2any 5.0
+ver_check Xz             xz       5.0.0
+ver_kernel 4.19
+
+if mount | grep -q 'devpts on /dev/pts' && [ -e /dev/ptmx ]
+then echo "OK:    Linux Kernel supports UNIX 98 PTY";
+else echo "ERROR: Linux Kernel does NOT support UNIX 98 PTY"; fi
+
+alias_check() {
+   if $1 --version 2>&1 | grep -qi $2
+   then printf "OK:    %-4s is $2\n" "$1";
+   else printf "ERROR: %-4s is NOT $2\n" "$1"; fi
+}
+echo "Aliases:"
+alias_check awk GNU
+alias_check yacc Bison
+alias_check sh Bash
+
+echo "Compiler check:"
+if printf "int main(){}" | g++ -x c++ -
+then echo "OK:    g++ works";
+else echo "ERROR: g++ does NOT work"; fi
+rm -f a.out
+
+if [ "$(nproc)" = "" ]; then
+   echo "ERROR: nproc is not available or it produces empty output"
+else
+   echo "OK: nproc reports $(nproc) logical cores are available"
+fi
+EOF
+
+bash version-check.sh
+
+
+
+
+
+

+ 2.3. Этапы сборки системы LFS +

+
+
+
+
+

+ LFS разработан для сборки за один сеанс. То есть инструкция + предполагает, что система не будет выключаться в процессе. Это + не означает, что система должна быть собрана за один присест. + Для возобновления сборки в точке предыдущей остановки (после + перезагрузки/выключения), необходимо выполнить некоторые + процедуры повторно. +

+
+

+ 2.3.1. Главы 1–4 +

+

+ Эти главы выполняются на хост-системе. После перезагрузки + обратите внимание на следующее: +

+
+
    +
  • +

    + При выполнении операций, от имени пользователя + root после Раздела 2.4, + ДЛЯ ПОЛЬЗОВАТЕЛЯ + root должна быть + установлена переменная окружения LFS. +

    +
  • +
+
+
+
+

+ 2.3.2. Главы 5–6 +

+
+
    +
  • +

    + Раздел /mnt/lfs должен быть смонтирован. +

    +
  • +
  • +

    + Эти две главы должны быть выполнены из-под + пользователя lfs. Перед + выполнением любой задачи в этих главах необходимо + выполнить команду su - + lfs. В противном случае вы рискуете + установить пакеты на хост и сделать его непригодным для + использования. +

    +
  • +
  • +

    + Выполнение процедур из Общие инструкции по + компиляции имеет решающее значение. Если есть + какие-либо сомнения по поводу установки пакета, + убедитесь, что все ранее распакованные tar-архивы + удалены, затем повторно извлеките файлы и выполните все + инструкции, приведенные в этом разделе. +

    +
  • +
+
+
+
+

+ 2.3.3. Главы 7–10 +

+
+
    +
  • +

    + Раздел /mnt/lfs должен быть смонтирован. +

    +
  • +
  • +

    + Некоторые операции, такие как «Смена + владельца» или «Вход в среду + Chroot», должны быть выполнены от имени + пользователя root с + переменной окружения $LFS, установленной для + пользователя root. +

    +
  • +
  • +

    + При входе в chroot переменная среды LFS должна быть + установлена для пользователя root. Переменная LFS не + используется после входа в среду chroot. +

    +
  • +
  • +

    + Виртуальные файловые системы должны быть смонтированы. + Это можно сделать до или после входа в chroot, + переключившись на виртуальный терминал хоста и от имени + пользователя root + выполнив команды, описанные в Раздел 7.3.1, + «Монтирование и заполнение /dev» и Раздел 7.3.2, + «Монтирование виртуальных файловых систем ядра». +

    +
  • +
+
+
+
+
+
+
+

+ 2.4. Создание + нового раздела +

+
+
+
+
+

+ Как и большинство других операционных систем, LFS обычно + устанавливается на выделенный раздел. Рекомендуемый подход к + построению системы LFS состоит в том, чтобы использовать + доступный пустой раздел или, если у вас достаточно + неразмеченного пространства, использовать его +

+

+ Минимальная система требует раздел размером около 10 гигабайт + (ГБ). Этого достаточно для хранения всех архивов с исходным + кодом и компиляции пакетов. Однако, если система LFS + предназначена для использования в качестве основной системы + Linux, вероятно, будет установлено дополнительное программное + обеспечение, для которого потребуется дополнительное + пространство. Раздел размером 30 ГБ является разумным размером + для расширения. Сама система LFS не займет столько места. + Большая часть этого требования заключается в предоставлении + достаточного временного хранилища, а также в добавлении + дополнительных возможностей после сборки LFS. Кроме того, для + компиляции пакетов может потребоваться много места на диске, + которое будет освобождено после установки пакета. +

+

+ Поскольку для компиляции не всегда достаточно оперативной + памяти (ОЗУ), рекомендуется использовать небольшой раздел диска + в качестве раздела подкачки. Он + используется ядром для хранения редко используемых данных и + оставляет больше памяти для активных процессов. Раздел подкачки для системы LFS может + совпадать с разделом, используемым хост-системой, и в этом + случае нет необходимости создавать еще один. +

+

+ Запустите программу создания разделов диска, такую как + cfdisk или + fdisk, с + параметром командной строки, указав имя жесткого диска, на + котором будет создан новый раздел, например, /dev/sda для основного диска. Создайте раздел + Linux и раздел подкачки, если + это необходимо. Пожалуйста, обратитесь к справке cfdisk(8) или + fdisk(8), если вы + еще не знаете, как пользоваться этими программами. +

+
+

+ Примечание +

+

+ Для опытных пользователей возможны и другие схемы разбиения. + Система LFS может располагаться на программном + RAID-массиве или логическом томе + LVM. Однако для некоторых опций требуется + initramfs, что является сложной темой. Эти методы + разбиения не рекомендуются начинающим пользователям LFS. +

+
+

+ Запомните обозначение созданного раздела (например, + sda5). В этой книге он будет + называться разделом LFS. Также запомните обозначение + раздела подкачки. Эти имена + понадобятся позже для файла /etc/fstab. +

+
+

+ 2.4.1. Другие вопросы по созданию разделов +

+

+ Рекомендации по созданию разделов системы часто публикуются в + списках рассылки LFS. Это очень субъективная тема. По + умолчанию для большинства дистрибутивов используется весь + диск, за исключением небольшого раздела подкачки. Это не + оптимально для LFS по нескольким причинам. Это снижает + гибкость, затрудняет совместное использование данных между + несколькими дистрибутивами или сборками LFS, делает резервное + копирование более трудоемким и может тратить дисковое + пространство из-за неэффективно распределенной файловой + системы. +

+
+
+
+
+

+ 2.4.1.1. Корневой + раздел +

+
+
+
+

+ Корневой раздел LFS (не путать с каталогом /root) размером в 20 гигабайт является + хорошим компромиссом для большинства систем. Он + обеспечивает достаточно места для построения LFS и большей + части BLFS, но достаточно мал, чтобы можно было легко + создать несколько разделов для экспериментов. +

+
+
+
+
+
+

+ 2.4.1.2. Раздел + подкачки +

+
+
+
+

+ Большинство дистрибутивов автоматически создают раздел + подкачки. Обычно рекомендуемый размер раздела подкачки + примерно в два раза превышает объем физической памяти, + однако это требуется редко. Если дисковое пространство + ограничено, установите размер раздела подкачки в два + гигабайта и контролируйте его объемом. +

+

+ Если вы хотите использовать режим гибернации + (suspend-to-disk) Linux, которая записывает содержимое ОЗУ + в раздел подкачки перед выключением машины. Установите + размер раздела подкачки не меньше объема установленной + оперативной памяти. +

+

+ Использование файла подкачки - это не очень хорошо. Для + механических жестких дисков вы можете определить, что + система использует раздел подкачки, просто слыша активность + диска и наблюдая, как система реагирует на команды. Для + SSD-накопителя вы не сможете услышать, что используется + раздел подкачки, но сможете оценить, сколько места на + разделе подкачки занято, используя команды top или free. По возможности + следует избегать использования SSD-накопителя для раздела + подкачки. Первой реакцией на активность раздела подкачки + должна быть проверка на необоснованное применение + какой-либо команды, например, попытка редактирования + пятигигабайтного файла. Если использование раздела подкачки + становится обычным явлением, лучшее решение — приобретение + большего объема оперативной памяти для вашей системы. +

+
+
+
+
+
+

+ 2.4.1.3. Раздел + GRUB +

+
+
+
+

+ Если загрузочный + диск размечен с помощью таблицы разделов GUID + (GPT), необходимо создать небольшой раздел, обычно размером + 1 МБ, если он еще не существует. Этот раздел не + форматируется, но должен быть доступен для использования + GRUB во время установки загрузчика. Обычно он помечен как + 'BIOS Boot' при использовании fdisk или имеет код + EF02 при + использовании gdisk. +

+
+

+ Примечание +

+

+ Раздел Grub Bios должен находиться на диске, который BIOS + использует для загрузки системы. Это не обязательно тот + же диск, на котором расположен корневой раздел LFS. Диски + в системе могут использовать разные типы таблиц разделов. + Наличие раздела Grub Bios зависит только от типа таблицы + разделов на загрузочном диске. +

+
+
+
+
+
+
+

+ 2.4.1.4. Разделы, + используемые для удобства +

+
+
+
+

+ Есть несколько других разделов, которые не являются + обязательными, но их следует учитывать при разработке схемы + диска. Следующий список не является исчерпывающим, а + представлен в качестве справочного руководства. +

+
+
    +
  • +

    + /boot – Настоятельно рекомендуется. Используйте этот + раздел для хранения ядер и другой загрузочной + информации. Чтобы свести к минимуму возможные + проблемы с загрузкой дисков большого размера, + сделайте этот раздел первым физическим разделом на + первом диске. Размер раздела в 200 мегабайт вполне + достаточен. +

    +
  • +
  • +

    + /boot/efi – Системный раздел EFI, используемый для + загрузки системы с помощью UEFI. Подробнее читайте на + + странице BLFS. +

    +
  • +
  • +

    + /home – Настоятельно рекомендуется. Предоставьте + общий доступ к своему домашнему каталогу и + пользовательским настройкам нескольким дистрибутивам + или сборкам LFS. Размер, как правило, довольно + большой и зависит от доступного места на диске. +

    +
  • +
  • +

    + /usr – в LFS, /bin, + /lib, и /sbin являются символическими + ссылками на их аналоги в /usr. Таким образом /usr содержит все двоичные файлы, + необходимые для работы системы. Для LFS отдельный + раздел /usr не + требуется. Если он вам необходим, вы должны сделать + раздел достаточно большим, чтобы поместить туда все + программы и библиотеки в системе. В этой + конфигурации, корневой раздел может быть очень + маленьким (возможно, всего один гигабайт), поэтому он + подходит для тонкого клиента или бездисковой рабочей + станции (где /usr + монтируется с удаленного сервера). Однако вы должны + знать, что для загрузки системы с отдельного раздела + /usr потребуется + initramfs (не включенный в LFS). +

    +
  • +
  • +

    + /opt – Этот каталог наиболее полезен для BLFS, в него + можно установить некоторые большие пакеты, такие как + KDE или Texlive, без использования иерархии /usr. Для + /opt достаточно размера от 5 до 10 гигабайт. +

    +
  • +
  • +

    + /tmp – Отдельный раздел /tmp используется редко, он + полезен при настройке тонкого клиента. Обычно, его + размер не должен превышать пару гигабайт. Если у вас + достаточно оперативной памяти, вы можете смонтировать + /tmp как tmpfs, чтобы + ускорить доступ к временным файлам. +

    +
  • +
  • +

    + /usr/src – Этот раздел очень удобен для хранения + исходников BLFS и совместного использования их в + сборках LFS. Его также можно использовать в качестве + места для сборки пакетов BLFS. Размера в 30-50 + гигабайт вполне достаточно. +

    +
  • +
+
+

+ Любой отдельный раздел, который вы хотите автоматически + монтировать при загрузке, должен быть указан в файле + /etc/fstab. Подробности о + том, как указать разделы, будут обсуждаться в Раздел 10.2, + «Создание файла /etc/fstab». +

+
+
+
+
+
+
+

+ 2.5. Создание + файловой системы на разделе +

+
+
+
+
+

+ Раздел - это всего лишь диапазон секторов на диске, указанный в + таблице разделов. Прежде чем операционная система сможет + использовать раздел для хранения каких-либо файлов, он должен + быть отформатирован, чтобы содержать файловую систему, обычно + состоящую из метки, блоков каталогов, блоков данных и схемы + индексации для поиска конкретного файла по запросу. Файловая + система также помогает операционной системе отслеживать + свободное пространство на разделе, резервировать необходимые + секторы при создании нового файла или расширении существующего + и повторно использует свободные сегменты данных, полученные в + результате удаления файлов. Она также может обеспечивать + поддержку избыточности данных и восстановления после ошибок. +

+

+ LFS может использовать любую файловую систему, распознаваемую + ядром Linux, но наиболее распространенными типами являются ext3 + и ext4. Выбор правильной файловой системы может быть сложным; + это зависит от характеристик файлов и размера раздела. + Например: +

+
+
+
+ ext2 +
+
+

+ подходит для небольших разделов, которые редко + обновляются, например /boot. +

+
+
+ ext3 +
+
+

+ это обновленная файловая система ext2, которая включает в + себя журнал, помогающий восстановить состояние раздела в + случае некорректного завершения работы. Обычно + используется в качестве файловой системы общего + назначения. +

+
+
+ ext4 +
+
+

+ является последней версией файловых систем семейства ext. + Она предоставляет несколько новых возможностей, включая + временные метки с точностью до наносекунды, создание и + использование очень больших файлов (16 ТБ) и повышение + скорости работы. +

+
+
+
+

+ Другие файловые системы, включая FAT32, NTFS, ReiserFS, JFS и + XFS, полезны для конкретных задач. Более подробную информацию + об этих файловых системах и многих других можно найти по адресу + https://en.wikipedia.org/wiki/Comparison_of_file_systems. +

+

+ LFS предполагает, что корневая файловая система (/) имеет тип + ext4. Чтобы создать файловую систему ext4 на разделе LFS, выполните следующую + команду: +

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

+ Замените <xxx> + именем раздела LFS +

+

+ Если вы используете существующий раздел подкачки, нет необходимости его + форматировать. Если был создан новый раздел подкачки, его нужно будет + инициализировать с помощью этой команды: +

+
mkswap /dev/<yyy>
+

+ Замените <yyy> + именем раздела подкачки. +

+
+
+
+
+

+ 2.6. Установка переменной + $LFS +

+
+
+
+
+

+ В этой книге переменная окружения LFS будет использоваться несколько раз. Вы + должны убедиться, что эта переменная всегда определена в + процессе сборки LFS. Она должна быть установлена на каталог, в + котором вы будете создавать свою систему LFS — мы, для примера, + будем использовать /mnt/lfs, но + вы можете выбрать любой другой. Если вы собираете LFS на + отдельном разделе, этот каталог будет точкой монтирования для + раздела. Выберите расположение каталога и установите переменную + с помощью следующей команды: +

+
export LFS=/mnt/lfs
+

+ Установка этой переменной полезна тем, что такие команды, как + mkdir -v + $LFS/tools, можно вводить буквально. Оболочка + автоматически заменит «$LFS» на «/mnt/lfs» (или любое + другое значение переменной) при обработке команды. +

+
+

+ Внимание +

+

+ Не забывайте проверять, что переменная LFS установлена, всякий раз, когда вы + покидаете и снова входите в текущую рабочую среду (например, + когда выполняете su для root или другого пользователя). + Убедитесь, что переменная LFS + настроена правильно: +

+
echo $LFS
+

+ Убедитесь, что в выходных данных указан путь к местоположению + сборки вашей системы LFS, то есть /mnt/lfs, если вы следовали примеру. Если + вывод неверен, используйте команду, указанную ранее, чтобы + установить $LFS в правильное + значение каталога LFS. +

+
+
+

+ Примечание +

+

+ Один из способов гарантировать, что переменная LFS всегда установлена, — отредактировать файл + .bash_profile как в вашем + личном домашнем каталоге, так и в /root/.bash_profile и добавить приведенную + выше команду экспорта. Кроме того, оболочка, указанная в + файле /etc/passwd для всех + пользователей, которым нужна переменная LFS, должна быть bash, чтобы гарантировать, + что файл /root/.bash_profile + используется как часть процесса входа в систему. +

+

+ Еще один способ, который используется для входа в + хост-систему. При входе в систему через диспетчер + графического дисплея пользовательский .bash_profile не используется при запуске + виртуального терминала. В этом случае добавьте команду + экспорта в файл .bashrc для + своего пользователя и root. + Кроме того, некоторые дистрибутивы используют тест "if" и не + запускают оставшиеся инструкции .bashrc для не интерактивного вызова bash. + Обязательно разместите команду экспорта перед тестом для не + интерактивного использования. +

+
+
+
+
+
+

+ 2.7. Монтирование нового + раздела +

+
+
+
+
+

+ Теперь, когда файловая система создана, раздел должен быть + смонтирован, чтобы хост-система могла получить доступ к нему. В + книге предполагается, что файловая система монтируется в + каталог, указанный в переменной LFS, + описанной в предыдущем разделе. +

+

+ Строго говоря, нельзя «смонтировать раздел». Монтируется + файловая система на этом + разделе. Но так как один раздел не может содержать несколько + файловых систем, люди часто говорят о разделе и связанной с ним + файловой системе так, как если бы они были одним и тем же. +

+

+ Создайте точку монтирования и смонтируйте файловую систему LFS + с помощью этих команд: +

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

+ Замените <xxx> + на имя раздела LFS. +

+

+ Если вы используете несколько разделов для LFS (например, один + для /, а другой для /home), смонтируйте их вот так: +

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

+ Замените <xxx> + и <yyy> + соответствующими именами разделов. +

+

+ Убедитесь, что этот новый раздел не смонтирован со слишком + строгими разрешениями (такими как параметры nosuid или nodev). + Запустите команду mount без каких-либо + параметров, чтобы увидеть, какие параметры установлены для + смонтированного раздела LFS. Если установлены nosuid и/или nodev, + раздел должен быть размонтирован и смонтирован повторно. +

+
+

+ Предупреждение +

+

+ Приведенные выше инструкции предполагают, что вы не будете + перезагружать компьютер в процессе сборки LFS. Если вы + выключите свою систему, вам придется либо перемонтировать + раздел LFS каждый раз, когда вы перезапускаете процесс + сборки, либо изменить файл /etc/fstab вашей хост-системы, чтобы он + автоматически монтировал его при загрузке. Например, вы + можете добавить эту строку в свой /etc/fstab: +

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

+ Если вы используете дополнительные разделы, обязательно + добавьте их. +

+
+

+ Если вы используете раздел + подкачки, убедитесь, что он включен с помощью команды + swapon: +

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

+ Замените <zzz> + именем раздела подкачки. +

+

+ Теперь, когда новый раздел LFS готов к работе, пришло время + загрузить пакеты. +

+
+
+
+
+
+

+ Глава 3. Пакеты и патчи +

+
+
+
+
+
+
+
+

+ 3.1. Введение +

+
+
+
+
+

+ Эта глава содержит список пакетов, которые необходимо загрузить + для сборки базовой системы Linux. Перечисленные версии + программного обеспечения, соответствуют версиям, которые, + проверены и работают, книга основана на их использовании. Мы + настоятельно рекомендуем не использовать другие версии пакетов, + потому что команды сборки для одной версии могут не работать с + другой, если только другая версия не указана в сообщениях об + ошибках LFS или рекомендациях по безопасности. В новейших + версиях пакетов также могут быть проблемы, требующие обходных + путей. Эти обходные пути будут стабилизированы в + разрабатываемой версии книги. +

+

+ Для некоторых пакетов архив релиза и архив снимка репозитория + (Git или SVN) для этого выпуска могут быть опубликованы с + одинаковыми именами файлов. Релиз содержит сгенерированные + файлы (например, скрипт configure, сгенерированный + пакетом autoconf) + в дополнение к содержимому соответствующего моментального + снимка репозитория. В книге везде, где это возможно, + используются релизные архивы. Использование моментального + снимка вместо tar-архива, указанного в книге, может вызвать + проблемы. +

+

+ Источники загрузки могут быть недоступны. Если источник + изменился с момента публикации этой книги, Google (https://www.google.com/) + предоставляет удобную поисковую систему для поиска большинства + пакетов. Если поиск не увенчался успехом, попробуйте один из + альтернативных способов загрузки, расположенных по адресу + https://mirror.linuxfromscratch.ru/lfs/mirrors.html#files. +

+

+ Загруженные пакеты и патчи необходимо где-нибудь хранить, чтобы + они были доступны на протяжении всей сборки. Рабочий каталог + также необходим для распаковки исходников и их сборки. + $LFS/sources можно использовать и + как место для хранения архивов и патчей, и как рабочий каталог. + При использовании этого каталога необходимые элементы будут + расположены в разделе LFS и будут доступны на всех этапах + процесса сборки. +

+

+ Чтобы создать этот каталог, выполните следующую команду от + имени пользователя root перед + началом загрузки: +

+
mkdir -v $LFS/sources
+

+ Сделайте этот каталог доступным для записи и установите липкий + бит. «Липкий + бит» означает, что даже если несколько + пользователей имеют право на запись в каталог, только владелец + файла может удалить файл в таком каталоге. Следующая команда + активирует режимы записи и липкий бит: +

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

+ Есть несколько способов получить все необходимые пакеты и патчи + для сборки LFS: +

+
+
    +
  • +

    + Файлы можно загрузить по отдельности, как описано в + следующих двух разделах. +

    +
  • +
  • +

    + Для стабильных версий книги архив со всеми необходимыми + файлами можно загрузить с одного из зеркал LFS, + перечисленных на странице https://mirror.linuxfromscratch.ru/mirrors.html#files. +

    +
  • +
  • +

    + Файлы можно загрузить с помощью wget и wget-list. +

    +
  • +
+
+

+ Чтобы загрузить все пакеты и патчи, используя wget-list-sysv в качестве входных + данных для команды wget, наберите команду: +

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

+ Начиная с LFS-7.0, существует отдельный файл md5sums, который можно использовать для + проверки всех пакетов. Поместите этот файл в $LFS/sources и выполните: +

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

+ Эту проверку можно использовать после загрузки файлов любым из + перечисленных выше способов. +

+

+ Если пакеты и исправления загружаются от имени пользователя, + без привилегий root, то файлы + будут принадлежать этому пользователю. Файловая система + записывает владельца по его UID, а UID обычного пользователя в + хост-дистрибутиве не будет присвоен в LFS. Таким образом, файлы + останутся принадлежащими безымянному UID в конечной системе + LFS. Если вы не назначили тот же UID для своего пользователя в + системе LFS, измените владельца этих файлов на root сейчас, чтобы избежать этой проблемы: +

+
chown root:root $LFS/sources/*
+
+
+
+
+

+ 3.2. Все пакеты +

+
+
+
+
+
+

+ Примечание +

+

+ Ознакомьтесь с рекомендациями + по безопасности перед загрузкой пакетов, чтобы узнать, + следует ли использовать более новую версию пакета, чтобы + избежать проблем безопасности. +

+

+ При выходе новых версий, старые версии пакетов могут быть + удалены, особенно, если они содержали уязвимости. Если одна + или несколько ссылок ниже недоступны, сначала ознакомьтесь с + рекомендациями по безопасности, чтобы понять следует ли + использовать более новую версию (с исправленной уязвимостью). + Если нет, попробуйте скачать удаленный пакет с зеркала. Хотя + старый релиз можно скачать с зеркала (даже если он был удален + из-за уязвимости), для сборки системы не рекомендуется + использовать версию, которая уязвима. +

+
+

+ Загрузите или иным образом получите следующие пакеты: +

+
+
+
+
+ Acl (2.3.2) - 363 + KB: +
+
+

+ Домашняя страница: https://savannah.nongnu.org/projects/acl +

+

+ Ссылка на загрузку: + https://download.savannah.gnu.org/releases/acl/acl-2.3.2.tar.xz +

+

+ Контрольная сумма MD5: 590765dee95907dbc3c856f7255bd669 +

+
+
+ Attr (2.5.2) - 484 + KB: +
+
+

+ Домашняя страница: https://savannah.nongnu.org/projects/attr +

+

+ Ссылка на загрузку: + https://download.savannah.gnu.org/releases/attr/attr-2.5.2.tar.gz +

+

+ Контрольная сумма MD5: 227043ec2f6ca03c0948df5517f9c927 +

+
+
+ Autoconf (2.72) - 1,360 KB: +
+
+

+ Домашняя страница: https://www.gnu.org/software/autoconf/ +

+

+ Ссылка на загрузку: + https://ftp.gnu.org/gnu/autoconf/autoconf-2.72.tar.xz +

+

+ Контрольная сумма MD5: 1be79f7106ab6767f18391c5e22be701 +

+
+
+ Automake (1.16.5) - 1,565 KB: +
+
+

+ Домашняя страница: https://www.gnu.org/software/automake/ +

+

+ Ссылка на загрузку: + https://ftp.gnu.org/gnu/automake/automake-1.16.5.tar.xz +

+

+ Контрольная сумма MD5: 4017e96f89fca45ca946f1c5db6be714 +

+
+
+ Bash (5.2.21) - 10,696 KB: +
+
+

+ Домашняя страница: https://www.gnu.org/software/bash/ +

+

+ Ссылка на загрузку: https://ftp.gnu.org/gnu/bash/bash-5.2.21.tar.gz +

+

+ Контрольная сумма MD5: ad5b38410e3bf0e9bcc20e2765f5e3f9 +

+
+
+ Bc (6.7.5) - 460 + KB: +
+
+

+ Домашняя страница: https://git.gavinhoward.com/gavin/bc +

+

+ Ссылка на загрузку: + https://github.com/gavinhoward/bc/releases/download/6.7.5/bc-6.7.5.tar.xz +

+

+ Контрольная сумма MD5: e249b1f86f886d6fb71c15f72b65dd3d +

+
+
+ Binutils (2.42) - 26,922 KB: +
+
+

+ Домашняя страница: https://www.gnu.org/software/binutils/ +

+

+ Ссылка на загрузку: + https://sourceware.org/pub/binutils/releases/binutils-2.42.tar.xz +

+

+ Контрольная сумма MD5: a075178a9646551379bfb64040487715 +

+
+
+ Bison (3.8.2) - 2,752 KB: +
+
+

+ Домашняя страница: https://www.gnu.org/software/bison/ +

+

+ Ссылка на загрузку: https://ftp.gnu.org/gnu/bison/bison-3.8.2.tar.xz +

+

+ Контрольная сумма MD5: c28f119f405a2304ff0a7ccdcc629713 +

+
+
+ Bzip2 (1.0.8) - 792 KB: +
+
+

+ Ссылка на загрузку: + https://www.sourceware.org/pub/bzip2/bzip2-1.0.8.tar.gz +

+

+ Контрольная сумма MD5: 67e051268d0c475ea773822f7500d0e5 +

+
+
+ Check (0.15.2) - 760 KB: +
+
+

+ Домашняя страница: https://libcheck.github.io/check +

+

+ Ссылка на загрузку: + https://github.com/libcheck/check/releases/download/0.15.2/check-0.15.2.tar.gz +

+

+ Контрольная сумма MD5: 50fcafcecde5a380415b12e9c574e0b2 +

+
+
+ Coreutils (9.4) - 5,840 KB: +
+
+

+ Домашняя страница: https://www.gnu.org/software/coreutils/ +

+

+ Ссылка на загрузку: + https://ftp.gnu.org/gnu/coreutils/coreutils-9.4.tar.xz +

+

+ Контрольная сумма MD5: 459e9546074db2834eefe5421f250025 +

+
+
+ DejaGNU (1.6.3) - 608 KB: +
+
+

+ Домашняя страница: https://www.gnu.org/software/dejagnu/ +

+

+ Ссылка на загрузку: https://ftp.gnu.org/gnu/dejagnu/dejagnu-1.6.3.tar.gz +

+

+ Контрольная сумма MD5: 68c5208c58236eba447d7d6d1326b821 +

+
+
+ Diffutils (3.10) - 1,587 KB: +
+
+

+ Домашняя страница: https://www.gnu.org/software/diffutils/ +

+

+ Ссылка на загрузку: + https://ftp.gnu.org/gnu/diffutils/diffutils-3.10.tar.xz +

+

+ Контрольная сумма MD5: 2745c50f6f4e395e7b7d52f902d075bf +

+
+
+ E2fsprogs (1.47.0) - 9,412 KB: +
+
+

+ Домашняя страница: http://e2fsprogs.sourceforge.net/ +

+

+ Ссылка на загрузку: + https://downloads.sourceforge.net/project/e2fsprogs/e2fsprogs/v1.47.0/e2fsprogs-1.47.0.tar.gz +

+

+ Контрольная сумма MD5: 6b4f18a33873623041857b4963641ee9 +

+
+
+ Elfutils (0.190) - 8,949 KB: +
+
+

+ Домашняя страница: https://sourceware.org/elfutils/ +

+

+ Ссылка на загрузку: + https://sourceware.org/ftp/elfutils/0.190/elfutils-0.190.tar.bz2 +

+

+ Контрольная сумма MD5: 79ad698e61a052bea79e77df6a08bc4b +

+
+
+ Expat (2.6.0) - 473 KB: +
+
+

+ Домашняя страница: https://libexpat.github.io/ +

+

+ Ссылка на загрузку: + https://prdownloads.sourceforge.net/expat/expat-2.6.0.tar.xz +

+

+ Контрольная сумма MD5: bd169cb11f4b9bdfddadf9e88a5c4d4b +

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

+ Домашняя страница: https://core.tcl.tk/expect/ +

+

+ Ссылка на загрузку: + https://prdownloads.sourceforge.net/expect/expect5.45.4.tar.gz +

+

+ Контрольная сумма MD5: 00fce8de158422f5ccd2666512329bd2 +

+
+
+ File (5.45) - 1,218 KB: +
+
+

+ Домашняя страница: https://www.darwinsys.com/file/ +

+

+ Ссылка на загрузку: https://astron.com/pub/file/file-5.45.tar.gz +

+

+ Контрольная сумма MD5: 26b2a96d4e3a8938827a1e572afd527a +

+
+
+ Findutils (4.9.0) - 1,999 KB: +
+
+

+ Домашняя страница: https://www.gnu.org/software/findutils/ +

+

+ Ссылка на загрузку: + https://ftp.gnu.org/gnu/findutils/findutils-4.9.0.tar.xz +

+

+ Контрольная сумма MD5: 4a4a547e888a944b2f3af31d789a1137 +

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

+ Домашняя страница: https://github.com/westes/flex +

+

+ Ссылка на загрузку: + https://github.com/westes/flex/releases/download/v2.6.4/flex-2.6.4.tar.gz +

+

+ Контрольная сумма MD5: 2882e3179748cc9f9c23ec593d6adc8d +

+
+
+ Flit-core (3.9.0) - 41 KB: +
+
+

+ Домашняя страница: https://pypi.org/project/flit-core/ +

+

+ Ссылка на загрузку: + https://pypi.org/packages/source/f/flit-core/flit_core-3.9.0.tar.gz +

+

+ Контрольная сумма MD5: 3bc52f1952b9a78361114147da63c35b +

+
+
+ Gawk (5.3.0) - 3,356 KB: +
+
+

+ Домашняя страница: https://www.gnu.org/software/gawk/ +

+

+ Ссылка на загрузку: https://ftp.gnu.org/gnu/gawk/gawk-5.3.0.tar.xz +

+

+ Контрольная сумма MD5: 97c5a7d83f91a7e1b2035ebbe6ac7abd +

+
+
+ GCC (13.2.0) - 85,800 KB: +
+
+

+ Домашняя страница: https://gcc.gnu.org/ +

+

+ Ссылка на загрузку: + https://ftp.gnu.org/gnu/gcc/gcc-13.2.0/gcc-13.2.0.tar.xz +

+

+ Контрольная сумма MD5: e0e48554cc6e4f261d55ddee9ab69075 +

+
+
+ GDBM (1.23) - 1,092 KB: +
+
+

+ Домашняя страница: https://www.gnu.org/software/gdbm/ +

+

+ Ссылка на загрузку: https://ftp.gnu.org/gnu/gdbm/gdbm-1.23.tar.gz +

+

+ Контрольная сумма MD5: 8551961e36bf8c70b7500d255d3658ec +

+
+
+ Gettext (0.22.4) - 10,016 KB: +
+
+

+ Домашняя страница: https://www.gnu.org/software/gettext/ +

+

+ Ссылка на загрузку: + https://ftp.gnu.org/gnu/gettext/gettext-0.22.4.tar.xz +

+

+ Контрольная сумма MD5: 2d8507d003ef3ddd1c172707ffa97ed8 +

+
+
+ Glibc (2.39) - 18,092 KB: +
+
+

+ Домашняя страница: https://www.gnu.org/software/libc/ +

+

+ Ссылка на загрузку: https://ftp.gnu.org/gnu/glibc/glibc-2.39.tar.xz +

+

+ Контрольная сумма MD5: be81e87f72b5ea2c0ffe2bedfeb680c6 +

+
+

+ Примечание +

+

+ Разработчики Glibc поддерживают + Git ветку содержащую исправления, которые + заслуживают внимания для Glibc-2.39 но, к сожалению, + выпущенные после релиза Glibc-2.39. Редакторы LFS + публикуют рекомендации по безопасности, если в ветку + добавлено какое-либо исправление безопасности, но для + других недавно добавленных патчей не будет + предпринято никаких действий. Вы можете + самостоятельно просмотреть патчи и включить некоторые + из них, если посчитаете их важными. +

+
+
+
+ GMP (6.3.0) - 2,046 KB: +
+
+

+ Домашняя страница: https://www.gnu.org/software/gmp/ +

+

+ Ссылка на загрузку: https://ftp.gnu.org/gnu/gmp/gmp-6.3.0.tar.xz +

+

+ Контрольная сумма MD5: 956dc04e864001a9c22429f761f2c283 +

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

+ Домашняя страница: https://www.gnu.org/software/gperf/ +

+

+ Ссылка на загрузку: https://ftp.gnu.org/gnu/gperf/gperf-3.1.tar.gz +

+

+ Контрольная сумма MD5: 9e251c0a618ad0824b51117d5d9db87e +

+
+
+ Grep (3.11) - 1,664 KB: +
+
+

+ Домашняя страница: https://www.gnu.org/software/grep/ +

+

+ Ссылка на загрузку: https://ftp.gnu.org/gnu/grep/grep-3.11.tar.xz +

+

+ Контрольная сумма MD5: 7c9bbd74492131245f7cdb291fa142c0 +

+
+
+ Groff (1.23.0) - 7,259 KB: +
+
+

+ Домашняя страница: https://www.gnu.org/software/groff/ +

+

+ Ссылка на загрузку: https://ftp.gnu.org/gnu/groff/groff-1.23.0.tar.gz +

+

+ Контрольная сумма MD5: 5e4f40315a22bb8a158748e7d5094c7d +

+
+
+ GRUB (2.12) - 6,524 KB: +
+
+

+ Домашняя страница: https://www.gnu.org/software/grub/ +

+

+ Ссылка на загрузку: https://ftp.gnu.org/gnu/grub/grub-2.12.tar.xz +

+

+ Контрольная сумма MD5: 60c564b1bdc39d8e43b3aab4bc0fb140 +

+
+
+ Gzip (1.13) - 819 + KB: +
+
+

+ Домашняя страница: https://www.gnu.org/software/gzip/ +

+

+ Ссылка на загрузку: https://ftp.gnu.org/gnu/gzip/gzip-1.13.tar.xz +

+

+ Контрольная сумма MD5: d5c9fc9441288817a4a0be2da0249e29 +

+
+
+ Iana-Etc (20240125) - 589 KB: +
+
+

+ Домашняя страница: https://www.iana.org/protocols +

+

+ Ссылка на загрузку: + https://github.com/Mic92/iana-etc/releases/download/20240125/iana-etc-20240125.tar.gz +

+

+ Контрольная сумма MD5: aed66d04de615d76c70890233081e584 +

+
+
+ Inetutils (2.5) - 1,632 KB: +
+
+

+ Домашняя страница: https://www.gnu.org/software/inetutils/ +

+

+ Ссылка на загрузку: + https://ftp.gnu.org/gnu/inetutils/inetutils-2.5.tar.xz +

+

+ Контрольная сумма MD5: 9e5a6dfd2d794dc056a770e8ad4a9263 +

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

+ Домашняя страница: https://freedesktop.org/wiki/Software/intltool +

+

+ Ссылка на загрузку: + https://launchpad.net/intltool/trunk/0.51.0/+download/intltool-0.51.0.tar.gz +

+

+ Контрольная сумма MD5: 12e517cac2b57a0121cda351570f1e63 +

+
+
+ IPRoute2 (6.7.0) - 900 KB: +
+
+

+ Домашняя страница: https://www.kernel.org/pub/linux/utils/net/iproute2/ +

+

+ Ссылка на загрузку: + https://www.kernel.org/pub/linux/utils/net/iproute2/iproute2-6.7.0.tar.xz +

+

+ Контрольная сумма MD5: 35d8277d1469596b7edc07a51470a033 +

+
+
+ Jinja2 (3.1.3) - 264 KB: +
+
+

+ Домашняя страница: https://jinja.palletsprojects.com/en/3.1.x/ +

+

+ Ссылка на загрузку: + https://pypi.org/packages/source/J/Jinja2/Jinja2-3.1.3.tar.gz +

+

+ Контрольная сумма MD5: caf5418c851eac59e70a78d9730d4cea +

+
+
+ Kbd (2.6.4) - 1,470 KB: +
+
+

+ Домашняя страница: https://kbd-project.org/ +

+

+ Ссылка на загрузку: + https://www.kernel.org/pub/linux/utils/kbd/kbd-2.6.4.tar.xz +

+

+ Контрольная сумма MD5: e2fd7adccf6b1e98eb1ae8d5a1ce5762 +

+
+
+ Kmod (31) - 558 + KB: +
+
+

+ Домашняя страница: https://github.com/kmod-project/kmod +

+

+ Ссылка на загрузку: + https://www.kernel.org/pub/linux/utils/kernel/kmod/kmod-31.tar.xz +

+

+ Контрольная сумма MD5: 6165867e1836d51795a11ea4762ff66a +

+
+
+ Less (643) - 579 + KB: +
+
+

+ Домашняя страница: https://www.greenwoodsoftware.com/less/ +

+

+ Ссылка на загрузку: + https://www.greenwoodsoftware.com/less/less-643.tar.gz +

+

+ Контрольная сумма MD5: cf05e2546a3729492b944b4874dd43dd +

+
+
+ LFS-Bootscripts (20230728) - + 33 KB: +
+
+

+ Ссылка на загрузку: + https://mirror.linuxfromscratch.ru/lfs/downloads/12.1/lfs-bootscripts-20230728.tar.xz +

+

+ Контрольная сумма MD5: c37ac1c5dbb57fb326d9c32c8f8b49c7 +

+
+
+ Libcap (2.69) - 185 KB: +
+
+

+ Домашняя страница: https://sites.google.com/site/fullycapable/ +

+

+ Ссылка на загрузку: + https://www.kernel.org/pub/linux/libs/security/linux-privs/libcap2/libcap-2.69.tar.xz +

+

+ Контрольная сумма MD5: 4667bacb837f9ac4adb4a1a0266f4b65 +

+
+
+ Libffi (3.4.4) - 1,331 KB: +
+
+

+ Домашняя страница: https://sourceware.org/libffi/ +

+

+ Ссылка на загрузку: + https://github.com/libffi/libffi/releases/download/v3.4.4/libffi-3.4.4.tar.gz +

+

+ Контрольная сумма MD5: 0da1a5ed7786ac12dcbaf0d499d8a049 +

+
+
+ Libpipeline (1.5.7) - 956 KB: +
+
+

+ Домашняя страница: https://libpipeline.nongnu.org/ +

+

+ Ссылка на загрузку: + https://download.savannah.gnu.org/releases/libpipeline/libpipeline-1.5.7.tar.gz +

+

+ Контрольная сумма MD5: 1a48b5771b9f6c790fb4efdb1ac71342 +

+
+
+ Libtool (2.4.7) - 996 KB: +
+
+

+ Домашняя страница: https://www.gnu.org/software/libtool/ +

+

+ Ссылка на загрузку: https://ftp.gnu.org/gnu/libtool/libtool-2.4.7.tar.xz +

+

+ Контрольная сумма MD5: 2fc0b6ddcd66a89ed6e45db28fa44232 +

+
+
+ Libxcrypt (4.4.36) - 610 KB: +
+
+

+ Домашняя страница: https://github.com/besser82/libxcrypt/ +

+

+ Ссылка на загрузку: + https://github.com/besser82/libxcrypt/releases/download/v4.4.36/libxcrypt-4.4.36.tar.xz +

+

+ Контрольная сумма MD5: b84cd4104e08c975063ec6c4d0372446 +

+
+
+ Linux (6.7.4) - 138,130 KB: +
+
+

+ Домашняя страница: https://www.kernel.org/ +

+

+ Ссылка на загрузку: + https://www.kernel.org/pub/linux/kernel/v6.x/linux-6.7.4.tar.xz +

+

+ Контрольная сумма MD5: 370e1b6155ae63133380e421146619e0 +

+
+

+ Примечание +

+

+ Ядро Linux обновляется достаточно часто из-за + обнаружения уязвимостей в системе безопасности. Можно + использовать последнюю стабильную версию ядра, если + на странице с ошибками и рекомендациями по + безопасности не указано иное. +

+

+ Для пользователей, у которых ограниченный или + тарифицируемый выход в интернет, и которые хотят + обновить ядро Linux, можно скачать базовую версию + ядра, а затем применить к ней патчи, которые могут + быть загружены отдельно. Это может сэкономить немного + времени или стоимость при обновлению до следующих + версий. +

+
+
+
+ M4 (1.4.19) - 1,617 KB: +
+
+

+ Домашняя страница: https://www.gnu.org/software/m4/ +

+

+ Ссылка на загрузку: https://ftp.gnu.org/gnu/m4/m4-1.4.19.tar.xz +

+

+ Контрольная сумма MD5: 0d90823e1426f1da2fd872df0311298d +

+
+
+ Make (4.4.1) - 2,300 KB: +
+
+

+ Домашняя страница: https://www.gnu.org/software/make/ +

+

+ Ссылка на загрузку: https://ftp.gnu.org/gnu/make/make-4.4.1.tar.gz +

+

+ Контрольная сумма MD5: c8469a3713cbbe04d955d4ae4be23eeb +

+
+
+ Man-DB (2.12.0) - 1,941 KB: +
+
+

+ Домашняя страница: https://www.nongnu.org/man-db/ +

+

+ Ссылка на загрузку: + https://download.savannah.gnu.org/releases/man-db/man-db-2.12.0.tar.xz +

+

+ Контрольная сумма MD5: 67e0052fa200901b314fad7b68c9db27 +

+
+
+ Man-pages (6.06) - 2,116 KB: +
+
+

+ Домашняя страница: https://www.kernel.org/doc/man-pages/ +

+

+ Ссылка на загрузку: + https://www.kernel.org/pub/linux/docs/man-pages/man-pages-6.06.tar.xz +

+

+ Контрольная сумма MD5: 26b39e38248144156d437e1e10cb20bf +

+
+
+ MarkupSafe (2.1.5) - 19 KB: +
+
+

+ Домашняя страница: https://palletsprojects.com/p/markupsafe/ +

+

+ Ссылка на загрузку: + https://pypi.org/packages/source/M/MarkupSafe/MarkupSafe-2.1.5.tar.gz +

+

+ Контрольная сумма MD5: 8fe7227653f2fb9b1ffe7f9f2058998a +

+
+
+ Meson (1.3.2) - 2,172 KB: +
+
+

+ Домашняя страница: https://mesonbuild.com +

+

+ Ссылка на загрузку: + https://github.com/mesonbuild/meson/releases/download/1.3.2/meson-1.3.2.tar.gz +

+

+ Контрольная сумма MD5: 2d0ebd3a24249617b1c4d30026380cf8 +

+
+
+ MPC (1.3.1) - 756 + KB: +
+
+

+ Домашняя страница: https://www.multiprecision.org/ +

+

+ Ссылка на загрузку: https://ftp.gnu.org/gnu/mpc/mpc-1.3.1.tar.gz +

+

+ Контрольная сумма MD5: 5c9bc658c9fd0f940e8e3e0f09530c62 +

+
+
+ MPFR (4.2.1) - 1,459 KB: +
+
+

+ Домашняя страница: https://www.mpfr.org/ +

+

+ Ссылка на загрузку: https://ftp.gnu.org/gnu/mpfr/mpfr-4.2.1.tar.xz +

+

+ Контрольная сумма MD5: 523c50c6318dde6f9dc523bc0244690a +

+
+
+ Ncurses (6.4-20230520) - 2,156 KB: +
+
+

+ Домашняя страница: https://www.gnu.org/software/ncurses/ +

+

+ Ссылка на загрузку: + https://anduin.linuxfromscratch.org/LFS/ncurses-6.4-20230520.tar.xz +

+

+ Контрольная сумма MD5: c5367e829b6d9f3f97b280bb3e6bfbc3 +

+
+
+ Ninja (1.11.1) - 225 KB: +
+
+

+ Домашняя страница: https://ninja-build.org/ +

+

+ Ссылка на загрузку: + https://github.com/ninja-build/ninja/archive/v1.11.1/ninja-1.11.1.tar.gz +

+

+ Контрольная сумма MD5: 32151c08211d7ca3c1d832064f6939b0 +

+
+
+ OpenSSL (3.2.1) - 17,318 KB: +
+
+

+ Домашняя страница: https://www.openssl.org/ +

+

+ Ссылка на загрузку: https://www.openssl.org/source/openssl-3.2.1.tar.gz +

+

+ Контрольная сумма MD5: c239213887804ba00654884918b37441 +

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

+ Домашняя страница: https://savannah.gnu.org/projects/patch/ +

+

+ Ссылка на загрузку: https://ftp.gnu.org/gnu/patch/patch-2.7.6.tar.xz +

+

+ Контрольная сумма MD5: 78ad9937e4caadcba1526ef1853730d5 +

+
+
+ Perl (5.38.2) - 13,359 KB: +
+
+

+ Домашняя страница: https://www.perl.org/ +

+

+ Ссылка на загрузку: https://www.cpan.org/src/5.0/perl-5.38.2.tar.xz +

+

+ Контрольная сумма MD5: d3957d75042918a23ec0abac4a2b7e0a +

+
+
+ Pkgconf (2.1.1) - 305 KB: +
+
+

+ Домашняя страница: http://pkgconf.org/ +

+

+ Ссылка на загрузку: + https://distfiles.ariadne.space/pkgconf/pkgconf-2.1.1.tar.xz +

+

+ Контрольная сумма MD5: bc29d74c2483197deb9f1f3b414b7918 +

+
+
+ Procps (4.0.4) - 1,369 KB: +
+
+

+ Домашняя страница: https://gitlab.com/procps-ng/procps/ +

+

+ Ссылка на загрузку: + https://sourceforge.net/projects/procps-ng/files/Production/procps-ng-4.0.4.tar.xz +

+

+ Контрольная сумма MD5: 2f747fc7df8ccf402d03e375c565cf96 +

+
+
+ Psmisc (23.6) - 415 KB: +
+
+

+ Домашняя страница: https://gitlab.com/psmisc/psmisc +

+

+ Ссылка на загрузку: + https://sourceforge.net/projects/psmisc/files/psmisc/psmisc-23.6.tar.xz +

+

+ Контрольная сумма MD5: ed3206da1184ce9e82d607dc56c52633 +

+
+
+ Python (3.12.2) - 20,109 KB: +
+
+

+ Домашняя страница: https://www.python.org/ +

+

+ Ссылка на загрузку: + https://www.python.org/ftp/python/3.12.2/Python-3.12.2.tar.xz +

+

+ Контрольная сумма MD5: e7c178b97bf8f7ccd677b94d614f7b3c +

+
+
+ Python Documentation (3.12.2) - + 8,065 KB: +
+
+

+ Ссылка на загрузку: + https://www.python.org/ftp/python/doc/3.12.2/python-3.12.2-docs-html.tar.bz2 +

+

+ Контрольная сумма MD5: 8a6310f6288e7f60c3565277ec3b5279 +

+
+
+ Readline (8.2) - 2,973 KB: +
+
+

+ Домашняя страница: https://tiswww.case.edu/php/chet/readline/rltop.html +

+

+ Ссылка на загрузку: https://ftp.gnu.org/gnu/readline/readline-8.2.tar.gz +

+

+ Контрольная сумма MD5: 4aa1b31be779e6b84f9a96cb66bc50f6 +

+
+
+ Sed (4.9) - 1,365 + KB: +
+
+

+ Домашняя страница: https://www.gnu.org/software/sed/ +

+

+ Ссылка на загрузку: https://ftp.gnu.org/gnu/sed/sed-4.9.tar.xz +

+

+ Контрольная сумма MD5: 6aac9b2dbafcd5b7a67a8a9bcb8036c3 +

+
+
+ Setuptools (69.1.0) - 2,168 KB: +
+
+

+ Домашняя страница: https://pypi.org/project/setuptools/ +

+

+ Ссылка на загрузку: + https://pypi.org/packages/source/s/setuptools/setuptools-69.1.0.tar.gz +

+

+ Контрольная сумма MD5: 6f6eb780ce12c90d81ce243747ed7ab0 +

+
+
+ Shadow (4.14.5) - 1,765 KB: +
+
+

+ Домашняя страница: https://github.com/shadow-maint/shadow/ +

+

+ Ссылка на загрузку: + https://github.com/shadow-maint/shadow/releases/download/4.14.5/shadow-4.14.5.tar.xz +

+

+ Контрольная сумма MD5: 452b0e59f08bf618482228ba3732d0ae +

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

+ Домашняя страница: https://www.infodrom.org/projects/sysklogd/ +

+

+ Ссылка на загрузку: + https://www.infodrom.org/projects/sysklogd/download/sysklogd-1.5.1.tar.gz +

+

+ Контрольная сумма MD5: c70599ab0d037fde724f7210c2c8d7f8 +

+
+
+ Systemd (255) - 14,516 KB: +
+
+

+ Домашняя страница: https://www.freedesktop.org/wiki/Software/systemd/ +

+

+ Ссылка на загрузку: + https://github.com/systemd/systemd/archive/v255/systemd-255.tar.gz +

+

+ Контрольная сумма MD5: 521cda27409a9edf0370c128fae3e690 +

+
+
+ Systemd Man Pages(255) - 652 KB: +
+
+

+ Домашняя страница: https://www.freedesktop.org/wiki/Software/systemd/ +

+

+ Ссылка на загрузку: + https://anduin.linuxfromscratch.org/LFS/systemd-man-pages-255.tar.xz +

+

+ Контрольная сумма MD5: 1ebe54d7a80f9abf8f2d14ddfeb2432d +

+
+

+ Примечание +

+

+ Команда Linux From Scratch генерирует собственный + архив справочных страниц, используя исходный код + systemd. Это делается для того, чтобы избежать + ненужных зависимостей. +

+
+
+
+ Sysvinit (3.08) - 263 KB: +
+
+

+ Домашняя страница: https://savannah.nongnu.org/projects/sysvinit +

+

+ Ссылка на загрузку: + https://github.com/slicer69/sysvinit/releases/download/3.08/sysvinit-3.08.tar.xz +

+

+ Контрольная сумма MD5: 81a05f28d7b67533cfc778fcadea168c +

+
+
+ Tar (1.35) - 2,263 + KB: +
+
+

+ Домашняя страница: https://www.gnu.org/software/tar/ +

+

+ Ссылка на загрузку: https://ftp.gnu.org/gnu/tar/tar-1.35.tar.xz +

+

+ Контрольная сумма MD5: a2d8042658cfd8ea939e6d911eaf4152 +

+
+
+ Tcl (8.6.13) - 10,581 KB: +
+
+

+ Домашняя страница: http://tcl.sourceforge.net/ +

+

+ Ссылка на загрузку: + https://downloads.sourceforge.net/tcl/tcl8.6.13-src.tar.gz +

+

+ Контрольная сумма MD5: 0e4358aade2f5db8a8b6f2f6d9481ec2 +

+
+
+ Tcl Documentation (8.6.13) - + 1,165 KB: +
+
+

+ Ссылка на загрузку: + https://downloads.sourceforge.net/tcl/tcl8.6.13-html.tar.gz +

+

+ Контрольная сумма MD5: 4452f2f6d557f5598cca17b786d6eb68 +

+
+
+ Texinfo (7.1) - 5,416 KB: +
+
+

+ Домашняя страница: https://www.gnu.org/software/texinfo/ +

+

+ Ссылка на загрузку: https://ftp.gnu.org/gnu/texinfo/texinfo-7.1.tar.xz +

+

+ Контрольная сумма MD5: edd9928b4a3f82674bcc3551616eef3b +

+
+
+ Time Zone Data (2024a) - 444 KB: +
+
+

+ Домашняя страница: https://www.iana.org/time-zones +

+

+ Ссылка на загрузку: + https://www.iana.org/time-zones/repository/releases/tzdata2024a.tar.gz +

+

+ Контрольная сумма MD5: 2349edd8335245525cc082f2755d5bf4 +

+
+
+ Udev-lfs Tarball (udev-lfs-20230818) - + 10 KB: +
+
+

+ Ссылка на загрузку: + https://anduin.linuxfromscratch.org/LFS/udev-lfs-20230818.tar.xz +

+

+ Контрольная сумма MD5: acd4360d8a5c3ef320b9db88d275dae6 +

+
+
+ Util-linux (2.39.3) - 8,327 KB: +
+
+

+ Домашняя страница: + https://git.kernel.org/pub/scm/utils/util-linux/util-linux.git/ +

+

+ Ссылка на загрузку: + https://www.kernel.org/pub/linux/utils/util-linux/v2.39/util-linux-2.39.3.tar.xz +

+

+ Контрольная сумма MD5: f3591e6970c017bb4bcd24ae762a98f5 +

+
+
+ Vim (9.1.0041) - 17,224 KB: +
+
+

+ Домашняя страница: https://www.vim.org +

+

+ Ссылка на загрузку: + https://github.com/vim/vim/archive/v9.1.0041/vim-9.1.0041.tar.gz +

+

+ Контрольная сумма MD5: 79dfe62be5d347b1325cbd5ce2a1f9b3 +

+
+

+ Примечание +

+

+ Версия vim меняется ежедневно. Чтобы получить + последнюю версию, перейдите на https://github.com/vim/vim/tags. +

+
+
+
+ Wheel (0.42.0) - 97 KB: +
+
+

+ Домашняя страница: https://pypi.org/project/wheel/ +

+

+ Ссылка на загрузку: + https://pypi.org/packages/source/w/wheel/wheel-0.42.0.tar.gz +

+

+ Контрольная сумма MD5: 802ad6e5f9336fcb1c76b7593f0cd22d +

+
+
+ XML::Parser (2.47) - 276 KB: +
+
+

+ Домашняя страница: https://github.com/chorny/XML-Parser +

+

+ Ссылка на загрузку: + https://cpan.metacpan.org/authors/id/T/TO/TODDR/XML-Parser-2.47.tar.gz +

+

+ Контрольная сумма MD5: 89a8e82cfd2ad948b349c0a69c494463 +

+
+
+ Xz Utils (5.4.6) - 1,645 KB: +
+
+

+ Домашняя страница: https://tukaani.org/xz +

+

+ Ссылка на загрузку: + https://github.com/tukaani-project/xz/releases/download/v5.4.6/xz-5.4.6.tar.xz +

+

+ Контрольная сумма MD5: 7ade7bd1181a731328f875bec62a9377 +

+
+
+ Zlib (1.3.1) - 1,478 KB: +
+
+

+ Домашняя страница: https://zlib.net/ +

+

+ Ссылка на загрузку: https://zlib.net/fossils/zlib-1.3.1.tar.gz +

+

+ Контрольная сумма MD5: 9855b6d802d7fe5b7bd5b196a2271655 +

+
+
+ Zstd (1.5.5) - 2,314 KB: +
+
+

+ Домашняя страница: https://facebook.github.io/zstd/ +

+

+ Ссылка на загрузку: + https://github.com/facebook/zstd/releases/download/v1.5.5/zstd-1.5.5.tar.gz +

+

+ Контрольная сумма MD5: 63251602329a106220e0a5ad26ba656f +

+
+
+
+
+

+ Общий размер пакетов: примерно 504 MB +

+
+
+
+
+

+ 3.3. Необходимые патчи +

+
+
+
+
+

+ В дополнение к пакетам требуется несколько патчей. Эти патчи + исправляют ошибки в пакетах, которые должны быть исправлены + сопровождающим. Патчи также вносят небольшие изменения, + облегчающие работу с пакетами. Для создания системы LFS + потребуются следующие исправления: +

+
+
+
+
+ Bash Upstream Fixes Patch - + 5.9 KB: +
+
+

+ Ссылка на загрузку: + https://mirror.linuxfromscratch.ru/patches/lfs/12.1/bash-5.2.21-upstream_fixes-1.patch +

+

+ Контрольная сумма MD5: 2d1691a629c558e894dbb78ee6bf34ef +

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

+ Ссылка на загрузку: + https://mirror.linuxfromscratch.ru/patches/lfs/12.1/bzip2-1.0.8-install_docs-1.patch +

+

+ Контрольная сумма MD5: 6a5ac7e89b791aae556de0f745916f7f +

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

+ Ссылка на загрузку: + https://mirror.linuxfromscratch.ru/patches/lfs/12.1/coreutils-9.4-i18n-1.patch +

+

+ Контрольная сумма MD5: cca7dc8c73147444e77bc45d210229bb +

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

+ Ссылка на загрузку: + https://mirror.linuxfromscratch.ru/patches/lfs/12.1/glibc-2.39-fhs-1.patch +

+

+ Контрольная сумма MD5: 9a5997c3452909b1769918c759eff8a2 +

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

+ Ссылка на загрузку: + https://mirror.linuxfromscratch.ru/patches/lfs/12.1/kbd-2.6.4-backspace-1.patch +

+

+ Контрольная сумма MD5: f75cca16a38da6caa7d52151f7136895 +

+
+
+ Readline Upstream Fix Patch - + 13 KB: +
+
+

+ Ссылка на загрузку: + https://mirror.linuxfromscratch.ru/patches/lfs/12.1/readline-8.2-upstream_fixes-3.patch +

+

+ Контрольная сумма MD5: 9ed497b6cb8adcb8dbda9dee9ebce791 +

+
+
+ Sysvinit Consolidated Patch - + 2.5 KB: +
+
+

+ Ссылка на загрузку: + https://mirror.linuxfromscratch.ru/patches/lfs/12.1/sysvinit-3.08-consolidated-1.patch +

+

+ Контрольная сумма MD5: 17ffccbb8e18c39e8cedc32046f3a475 +

+
+
+
+
+

+ Общий размер этих патчей: примерно 203.8 KB +

+

+ Помимо указанных выше обязательных исправлений, существует ряд + необязательных патчей, созданных сообществом LFS. Эти + необязательные исправления решают незначительные проблемы или + включают функции, которые не включены по умолчанию. Не + стесняйтесь просматривать базу данных исправлений, + расположенную по адресу https://mirror.linuxfromscratch.ru/patches/downloads/, + и применять патчи, необходимые вашей системе. +

+
+
+
+
+
+

+ Глава 4. Заключительный этап + подготовки +

+
+
+
+
+
+
+
+

+ 4.1. Введение +

+
+
+
+
+

+ В этой главе мы выполним несколько дополнительных настроек для + подготовки к сборке временной системы. Мы создадим несколько + каталогов в $LFS (в котором + установим временные инструменты), добавим непривилегированного + пользователя и настроим окружение для этого пользователя. Кроме + этого, будут даны пояснения по стандартной единице времени + сборки, или «SBU», которую мы используем для измерения + времени необходимого для сборки пакетов LFS, и предоставим + некоторую информацию о наборах тестов. +

+
+
+
+
+

+ 4.2. Создание ограниченной + иерархии папок в файловой системе LFS +

+
+
+
+
+

+ В этом разделе мы начинаем заполнять файловую систему LFS + элементами, которые будут основой конечной системы Linux. + Первым шагом является создание ограниченной иерархии каталогов, + чтобы программы, скомпилированные в Глава 6 + (а также glibc и libstdc++ в Глава 5), могли быть + установлены в их конечном расположении. Это необходимо для + того, чтобы эти временные программы были перезаписаны при + сборке окончательных версий в + Глава 8. +

+

+ Создайте необходимую иерархию каталогов, выполнив следующую + команду от имени root: +

+
mkdir -pv $LFS/{etc,var} $LFS/usr/{bin,lib,sbin}
+
+for i in bin lib sbin; do
+  ln -sv usr/$i $LFS/$i
+done
+
+case $(uname -m) in
+  x86_64) mkdir -pv $LFS/lib64 ;;
+esac
+

+ Программы в Глава 6 + будут скомпилированы с помощью кросс-компилятора (более + подробная информация приведена в разделе Технические + примечания по сборочным инструментам). Чтобы отделить + кросс-компилятор от других программ, он будет установлен в + специальный каталог. Создайте этот каталог с помощью следующей + команды: +

+
mkdir -pv $LFS/tools
+
+

+ Примечание +

+

+ Редакторы LFS намеренно решили не использовать каталог + /usr/lib64. В процессе сборки + предпринимается ряд шагов, чтобы убедиться, что набор + инструментов не будет его использовать. Если по какой-либо + причине этот каталог появится (это может произойти, если вы + допустили ошибку, следуя инструкциям, или потому что вы + установили бинарный пакет, создавший его после сборки LFS), + это может привести к поломке вашей системы. Вы должны быть + уверены, что этого каталога не существует. +

+
+
+
+
+
+

+ 4.3. Создание пользователя LFS +

+
+
+
+
+

+ При входе в систему под учетной записью root допущение одной ошибки может привести + к повреждению или разрушению системы. Поэтому пакеты в + следующих двух главах собираются из-под учетной записи + непривилегированного пользователя. Вы можете использовать свое + собственное имя пользователя, но чтобы упростить настройку + рабочей среды, создайте нового пользователя с именем + lfs, который является членом + одноименной группы и выполняйте команды из-под этой учетной + записи в процессе установки. От имени пользователя root выполните следующие команды, чтобы + добавить нового пользователя: +

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

+ Значение параметров командной строки: +

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

+ Устанавливает bash оболочкой по + умолчанию для пользователя lfs. +

+
+
+ -g + lfs +
+
+

+ Эта опция добавляет пользователя lfs в группу lfs. +

+
+
+ -m +
+
+

+ Создает домашний каталог для пользователя lfs. +

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

+ Этот параметр предотвращает возможное копирование файлов + из предустановленного набора каталогов (по умолчанию + /etc/skel) путем изменения + местоположения ввода на специальное null-устройство. +

+
+
+ lfs +
+
+

+ Это имя нового пользователя. +

+
+
+
+

+ Если вы хотите войти в систему как lfs или переключиться на lfs из учетной записи непривилегированного + пользователя (в отличие от переключения на пользователя + lfs при входе в систему как + root, для которого не требуется + пароль пользователя lfs), вам + необходимо установить пароль для lfs. Выполните следующую команду от имени + пользователя root, чтобы + установить пароль: +

+
passwd lfs
+

+ Предоставьте пользователю lfs + полный доступ ко всем каталогам в папке $LFS, назначив lfs владельцем: +

+
chown -v lfs $LFS/{usr{,/*},lib,var,etc,bin,sbin,tools}
+case $(uname -m) in
+  x86_64) chown -v lfs $LFS/lib64 ;;
+esac
+
+

+ Примечание +

+

+ В некоторых хост-системах следующая команда не выполняется + должным образом и приостанавливает вход пользователя + lfs в фоновом режиме. Если + подсказка "lfs:~$" не появляется сразу, ввод команды + fg устранит + проблему. +

+
+

+ Затем запустите оболочку, работающую от имени пользователя + lfs. Это можно сделать, войдя в + систему как lfs на виртуальной + консоли или с помощью следующей команды замены/переключения + пользователя: +

+
su - lfs
+

+ Аргумент «-» передает + значение команде su для запуска оболочки входа + в систему, а не обычной оболочки. Разница между этими двумя + типами оболочек подробно описана в bash(1) и + info bash. +

+
+
+
+
+

+ 4.4. Настройка окружения +

+
+
+
+
+

+ Настроим хорошо работающее окружение, создав два новых файла + запуска для оболочки bash. Войдя в систему как + пользователь lfs, введите + следующую команду, чтобы создать новый .bash_profile: +

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

+ При входе в систему под учетной записью пользователя + lfs или при переключении на + lfs, используя команду + su с опцией + «-», начальная + оболочка представляет собой оболочку login, которая читает данные из + /etc/profile хоста (который, + вероятно, содержит некоторые настройки и переменные среды), а + затем .bash_profile. Команда + exec env + -i.../bin/bash в файле .bash_profile заменяет запущенную оболочку + новой, не содержащей переменные среды, за исключением + переменных HOME, TERM, и PS1. Это + гарантирует, что никакие нежелательные и потенциально опасные + переменные среды из хост-системы не попадут в среду сборки. +

+

+ Новый экземпляр оболочки представляет собой non-login оболочку, которая не + считывает и не выполняет содержимое файлов /etc/profile и .bash_profile, а вместо этого выполняет + чтение из файла .bashrc. Создайте + файл .bashrc: +

+
cat > ~/.bashrc << "EOF"
+set +h
+umask 022
+LFS=/mnt/lfs
+LC_ALL=POSIX
+LFS_TGT=$(uname -m)-lfs-linux-gnu
+PATH=/usr/bin
+if [ ! -L /bin ]; then PATH=/bin:$PATH; fi
+PATH=$LFS/tools/bin:$PATH
+CONFIG_SITE=$LFS/usr/share/config.site
+export LFS LC_ALL LFS_TGT PATH CONFIG_SITE
+EOF
+
+

+ Значение настроек в .bashrc +

+
+
+ set + +h +
+
+

+ Команда set + +h отключает хэш-функцию bash. Хеширование + является полезной функцией —bash использует + хеш-таблицу для запоминания полного пути к исполняемому + файлу, чтобы избежать многократного поиска одного и того + же исполняемого файла в переменной окружения PATH. Однако новые инструменты требуется + использовать сразу же после их установки. Отключение + хэш-функции, заставляет оболочку искать переменную + окружения PATH, всякий раз, + когда программу необходимо запустить. Таким образом, + оболочка найдет вновь скомпилированные инструменты в + $LFS/tools/bin, как только + они станут доступны, не запоминая предыдущую версию той + же программы, предоставленную хост-дистрибутивом, в + /usr/bin или /bin. +

+
+
+ umask + 022 +
+
+

+ Установка значения пользовательской маски создания файлов + (umask) 022 гарантирует, что вновь созданные файлы и + каталоги доступны для записи только их владельцу, но + будут доступны для чтения и выполнения остальным + пользователям (при условии, что системный вызов open(2) + использует режимы по умолчанию, новые файлы получат + разрешения 644, а каталоги 755). +

+
+
+ LFS=/mnt/lfs +
+
+

+ Переменная окружения LFS + должна указывать на выбранную точку монтирования. +

+
+
+ LC_ALL=POSIX +
+
+

+ Переменная LC_ALL управляет + локализацией определенных программ, и формирует сообщения + в соответствии с локализацией указанной страны. Установка + в LC_ALL значения «POSIX» или + «C» + (они эквивалентны) гарантирует, что все будет работать + должным образом в среде кросс-компиляции. +

+
+
+ LFS_TGT=$(uname + -m)-lfs-linux-gnu +
+
+

+ Переменная LFS_TGT + устанавливает нестандартное, но совместимое описание + компьютера для использования при создании + кросс-компилятора и компоновщика, а также при + кросс-компиляции временного набора инструментов. + Дополнительная информация об этом представлена в + Технические + примечания по сборочным инструментам. +

+
+
+ PATH=/usr/bin +
+
+

+ Многие современные дистрибутивы Linux объединили + /bin и /usr/bin. В этом случае стандартной + переменной PATH необходимо + установить значение /usr/bin/ для окружения из Глава 6. + Когда это не так, следующая строка добавит /bin к пути. +

+
+
+ if [ ! -L + /bin ]; then PATH=/bin:$PATH; fi +
+
+

+ Если /bin не является + символической ссылкой, то его необходимо добавить в + переменную PATH. +

+
+
+ PATH=$LFS/tools/bin:$PATH +
+
+

+ Поместив $LFS/tools/bin + перед стандартным PATH, + кросс-компилятор, установленный в начале Глава 5, будет + обнаружен оболочкой сразу после его установки. Это, в + сочетании с отключением хеширования, ограничивает риск + использования компилятора хоста вместо кросс-компилятора. +

+
+
+ CONFIG_SITE=$LFS/usr/share/config.site +
+
+

+ В Глава 5 и + Глава 6, + если эта переменная не задана, сценарии configure могут + попытаться загрузить элементы конфигурации, специфичные + для некоторых дистрибутивов, из /usr/share/config.site в хост-системе. + Переопределите её, чтобы предотвратить потенциальное + влияние хоста. +

+
+
+ export + ... +
+
+

+ Приведенные выше команды установили некоторые переменные, + чтобы сделать их видимыми в любых вложенных оболочках, мы + экспортируем их. +

+
+
+
+
+

+ Важно +

+

+ Некоторые коммерческие дистрибутивы добавляют + недокументированный экземпляр /etc/bash.bashrc для инициализации + bash. Этот файл + потенциально может изменить среду пользователя lfs таким образом, что это может повлиять + на сборку важных пакетов LFS. Чтобы убедиться, что + пользовательская среда lfs + чиста, проверьте наличие файла /etc/bash.bashrc и, если он есть, + переименуйте его. От имени пользователя root, запустите: +

+
[ ! -e /etc/bash.bashrc ] || mv -v /etc/bash.bashrc /etc/bash.bashrc.NOUSE
+

+ Когда пользователь lfs больше + не нужен (в начале + Глава 7 ) вы можете безопасно восстановить + /etc/bash.bashrc (по желанию). +

+

+ Обратите внимание, что пакет LFS Bash, который мы создадим в + Раздел 8.35, «Bash-5.2.21», не + настроен на загрузку или выполнение /etc/bash.bashrc, поэтому этот файл + бесполезен в готовой системе LFS. +

+
+

+ Для многих современных систем с несколькими процессорами (или + ядрами) время компиляции пакета можно сократить, выполнив + «параллельную + сборку», либо установив переменную среды, либо + сообщив программе make, сколько ядер + задействовать для сборки. Например, процессор Intel Core + i9-13900K имеет 8 ядер P (производительность) и 16 ядер E + (энергоэффективность), ядро P может одновременно запускать два + потока, поэтому каждое ядро P моделируется ядром Linux как два + логических ядра. В результате получается 32 логических ядра. + Очевидный способ задействовать все эти логические ядра - + разрешить make + создавать до 32 заданий сборки. Это можно сделать, передав + параметр -j32 команде + make: +

+
make -j32
+

+ Или установите переменную окружения MAKEFLAGS, и ее содержимое будет автоматически + использоваться make в качестве параметров + командной строки: +

+
export MAKEFLAGS=-j32
+
+

+ Важно +

+

+ Никогда не передавайте параметр -j без номера в make и не устанавливайте + такой параметр в MAKEFLAGS. Иначе + make будет + создавать бесконечные задания сборки, что вызовет проблемы со + стабильностью системы. +

+
+

+ Чтобы использовать все логические ядра, доступные для сборки + пакетов в Глава 5 и Глава 6, + укажите параметр MAKEFLAGS в + .bashrc сейчас: +

+
cat >> ~/.bashrc << "EOF"
+export MAKEFLAGS=-j$(nproc)
+EOF
+

+ Замените $(nproc) + количеством логических ядер, которые вы хотите использовать, + если вы планируете использовать не все логические ядра. +

+

+ Наконец, чтобы убедиться, что среда полностью подготовлена для + сборки временных инструментов, перечитайте только что созданный + профиль пользователя: +

+
source ~/.bash_profile
+
+
+
+
+

+ 4.5. О SBU (Стандартная единица + времени сборки) +

+
+
+
+
+

+ Многие люди хотели бы знать заранее, сколько примерно времени + потребуется для компиляции и установки каждого пакета. + Поскольку Linux From Scratch может быть собран на различных + системах, невозможно дать точную оценку времени. Сборка самого + большого пакета (gcc) займет около 5 минут на быстрых системах, + но может занять несколько дней на более медленных компьютерах! + Вместо фактического времени в книге используется показатель + "стандартная единица времени сборки" (SBU). +

+

+ Показатель SBU рассчитывается следующим образом. Первым + пакетом, который нужно скомпилировать, является binutils в + Глава 5. Время, + необходимое для компиляции этого пакета с использованием одного + ядра, будет называться стандартной единицей времени сборки или + SBU. Время компиляции остальных пакетов будет рассчитано + относительно этого времени. +

+

+ Например, рассмотрим пакет, время компиляции которого + составляет 4,5 SBU. Это означает, что если вашей системе + потребовалось 10 минут для компиляции и сборки первого прохода + binutils, то для сборки этого пакета потребуется примерно 45 минут. К счастью, в + большинстве случаев, время сборки меньше, чем у binutils. +

+

+ В целом, величина SBU не совсем точна, поскольку она зависит от + многих факторов, включая версию GCC хост-системы. Она приведены + здесь, чтобы дать оценку того, сколько времени может + потребоваться для сборки пакета, но в некоторых случаях цифры + могут отличаться на десятки минут. +

+
+

+ Примечание +

+

+ Когда используется несколько ядер, единицы измерения SBU + будут различаться еще больше, чем обычно. В некоторых случаях + make просто завершится ошибкой. Анализ выходных данных + процесса сборки также будет более сложным, поскольку строки + разных потоков будут чередоваться. Если вы столкнулись с + проблемой на этапе сборки, вернитесь к сборке на одном ядре, + чтобы проанализировать сообщения об ошибках. +

+

+ Представленные здесь значения времени основаны на замерах при + использовании четырех ядер (-j4). Время, указанное в главе 8, + также включает время выполнения регрессионных тестов для + пакета, если не указано иное. +

+
+
+
+
+
+

+ 4.6. О наборах тестов +

+
+
+
+
+

+ Большинство пакетов предоставляют набор тестов. Запуск набора + тестов для только что собранного пакета — хорошая идея, потому + что он может обеспечить «проверку работоспособности», указывающую, + что все скомпилировано правильно. Набор тестов, который + проходит свой набор проверок, обычно доказывает, что пакет + работает так, как задумал разработчик. Однако это не + гарантирует, что пакет полностью без ошибок. +

+

+ Некоторые наборы тестов более важны, чем другие. Например, + наборы тестов для основных инструментов — GCC, binutils и glibc + — имеют первостепенное значение из-за их центральной роли в + правильно функционирующей системе. Выполнение наборов тестов + для GCC и glibc может занять очень много времени, особенно на + медленном оборудовании, но их выполнение настоятельно + рекомендуется. +

+
+

+ Примечание +

+

+ Запуск наборов тестов, описанных в Глава 5 и Глава 6, + не имеет смысла, поскольку программы компилируются с помощью + кросс-компилятора, они, вероятно, не могут работать на хосте + сборки. +

+
+

+ Распространенной проблемой при запуске наборов тестов для + binutils и GCC является нехватка псевдотерминалов (PTY). Это + может привести к большому количеству неудачных тестов. Причин + может быть несколько, но наиболее вероятная причина заключается + в том, что в хост-системе неправильно настроена файловая + система devpts. Этот вопрос + более подробно обсуждается на странице https://mirror.linuxfromscratch.ru/lfs/faq.html#no-ptys. +

+

+ Иногда наборы тестов не работают, по причинам, о которых знают + разработчики и которые они считают некритичными. Просмотрите + журналы, расположенные по адресу https://mirror.linuxfromscratch.ru/lfs/build-logs/12.1/, + чтобы проверить, ожидаются ли сбои. Этот сайт актуален для всех + наборов тестов, описанных в книге. +

+
+
+
+
+
+
+

+ Часть III. Сборка + кросс-компилятора и набора временных инструментов +

+
+
+
+
+
+
+
+

+ Важный предварительный материал +

+
+
+
+
+
+
+
+

+ Введение +

+
+
+
+
+

+ Эта часть разделена на три этапа: во-первых, сборка + кросс-компилятора и связанных с ним библиотек; во-вторых, + использование этого набора инструментов для сборки нескольких + утилит таким образом, чтобы изолировать их от основного + дистрибутива; в-третьих, вход в среду chroot (что ещё больше + улучшает изоляцию от хоста), и сборка оставшихся инструментов, + необходимых для создания конечной системы. +

+
+

+ Важно +

+

+ Именно здесь начинается настоящая работа по сборке новой + системы. Требуется очень тщательно следить за тем, чтобы + инструкции выполнялись точно так, как они приведены в книге. + Вы должны попытаться понять, что они делают, и каким бы ни + было ваше желание скорее закончить сборку, вам следует + воздержаться от слепого набора команд. Читайте документацию, + если вы что-то не понимаете. Кроме того, следите за + результатом выполнения команд, отправляя лог в файл с помощью + утилиты tee. + Это упрощает отладку, если что-то пойдет не так. +

+
+

+ Следующий раздел представляет собой техническое введение в + процесс сборки, а следующий за ним, содержит очень важные общие инструкции + по компиляции. +

+
+
+
+
+

+ Технические примечания по + сборочным инструментам +

+
+
+
+
+

+ В этом разделе объясняются причины и некоторые технические + детали, лежащие в основе сборки пакетов. Не обязательно сразу + понимать все, что содержится в этом разделе. Большая часть этой + информации станет более понятной после выполнения фактической + сборки. Возвращайтесь и перечитывайте этот раздел в любое время + по ходу сборки. +

+

+ Основная задача Глава 5 и + Глава 6 + состоит в том, чтобы создать временную область, содержащую + заведомо исправный набор инструментов, которые можно + изолировать от хост-системы. Использовании команды chroot в последующих главах, + обеспечит чистую и безотказную сборку целевой системы LFS. + Процесс сборки разработан таким образом, чтобы свести к + минимуму риски для новых читателей и в то же время обеспечить + наибольшую образовательную ценность. +

+

+ Сборка инструментария основана на процессе кросс-компиляции. Кросс-компиляция + обычно используется для сборки компилятора и его инструментов + для машины, отличной от той, которая используется для сборки. + Строго говоря, это не требуется для LFS, так как машина, на + которой будет работать новая система, та же, что и используемая + для сборки. Но у кросс-компиляции есть большое преимущество, + заключающееся в том, что все, что подвергается + кросс-компиляции, не будет зависеть от окружения хоста. +

+
+

+ О + кросс-компиляции +

+
+

+ Примечание +

+

+ Книга LFS не является руководством и не содержит общего + руководства по созданию кросс (или собственного) тулчейна. + Не используйте команды из книги для кросс-тулчейна, который + планируете использовать для каких-либо других целей, кроме + создания LFS, если у вас нет полного понимания, что вы + делаете. +

+
+

+ Кросс-компиляция включает в себя некоторые концепции, которые + сами по себе заслуживают отдельного раздела. Хотя этот раздел + можно пропустить при первом чтении, возвращение к нему позже + будет полезно для полного понимания процесса. +

+

+ Давайте определим некоторые термины, используемые в этом + контексте. +

+
+
+
+ сборщик +
+
+

+ это машина, на которой мы собираем программы. Обратите + внимание, что этот компьютер упоминается как + «хост» в других разделах. +

+
+
+ хост +
+
+

+ это машина/система, на которой будут выполняться + встроенные программы. Обратите внимание, что + используемое здесь значение слова «хост» + отличается от того, которое применяется в других + разделах. +

+
+
+ цель +
+
+

+ используется только для компиляторов. Это машина, для + которой компилятор создает код. Он может отличаться как + от «сборщика», так и от «хоста». +

+
+
+
+

+ В качестве примера представим следующий сценарий (иногда + называемый «канадским + крестом»): у нас есть компилятор на медленной + машине, назовем ее машиной A и компилятор ccA. У нас также + есть быстрая машина (B), но без компилятора, и мы хотим + создать код для другой медленной машины (C). Чтобы собрать + компилятор для машины C, у нас будет три этапа: +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Этап + + Сборщик + + Хост + + Цель + + Действие +
+ 1 + + A + + A + + B + + Сборка кросс-компилятора cc1 с использованием ccA на + машине A +
+ 2 + + A + + B + + C + + Сборка кросс-компилятора cc2 с использованием cc1 на + машине A +
+ 3 + + B + + C + + C + + Сборка компилятора ccC с использованием cc2 на машине + B +
+
+

+ Затем все другие программы, необходимые для машины C, могут + быть скомпилированы с помощью cc2 на быстрой машине B. + Обратите внимание, что до тех пор, пока B не может запускать + программы, собранные для C, нет способа протестировать + программы, пока не будет запущена сама машина C. Например, + чтобы запустить набор тестов на ccC мы можем добавить + четвертый этап: +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Этап + + Сборщик + + Хост + + Цель + + Действие +
+ 4 + + C + + C + + C + + Пересобрать и протестировать ccC, используя ccC на + машине C +
+
+

+ В приведенном выше примере только cc1 и cc2 являются + кросс-компиляторами, то есть они создают код для машины, + отличной от той, на которой они выполняются. Компиляторы ccA + и ccC создают код для машины, на которой они выполняются. + Такие компиляторы называются нативными компиляторами. +

+
+
+

+ Реализация + кросс-компиляции для LFS +

+
+

+ Примечание +

+

+ Все кросс-компилируемые пакеты в этой книге используют + систему сборки на основе autoconf. Система сборки на основе + autoconf принимает типы систем вида cpu-vendor-kernel-os, + называемые системным триплетом. Поскольку поле vendor часто + не содержит значения, autoconf позволяет вам опустить его. +

+

+ Проницательный читатель может задаться вопросом, почему + название «триплет» применяется к имени из + четырех компонентов. Поле kernel и поле os ранее + применялись как единый элемент: «system». Такая + форма с тремя полями все еще актуальна для некоторых + систем, например, x86_64-unknown-freebsd. Но две системы + могут использовать одно и то же ядро и все же быть слишком + разными, чтобы использовать одинаковый триплет для их + описания. Например, Android, работающий на мобильном + телефоне полностью отличается от Ubuntu, работающей на + ARM64 сервере, хотя они оба работают на одном и том же типе + процессора (ARM64) и с одним ядром (Linux). +

+

+ Без слоя эмуляции вы не сможете запустить исполняемый файл + c сервера на мобильном телефоне и наоборот. Итак, поле + «system» было разделено на поля kernel + и os, чтобы однозначно их интерпретировать. В нашем примере + Android обозначается как aarch64-unknown-linux-android, а Ubuntu + aarch64-unknown-linux-gnu. +

+

+ Слово «триплет» сохранилось в лексиконе. + Простой способ определить триплет вашей машины — запустить + скрипт config.guess, который + входит в исходный код многих пакетов. Распакуйте исходники + binutils и запустите скрипт: ./config.guess, обратите + внимание на вывод. Например, для 32-разрядного процессора + Intel вывод будет i686-pc-linux-gnu. В 64-битной + системе это будет x86_64-pc-linux-gnu. В + большинстве систем Linux используют еще более простую + команду gcc + -dumpmachine, которая предоставит вам + аналогичную информацию. +

+

+ Вы также должны знать имя динамического компоновщика + платформы, часто называемого динамическим загрузчиком (не + путать со стандартным компоновщиком ld, который является + частью binutils). Динамический компоновщик, предоставляемый + glibc, находит и загружает общие библиотеки, необходимые + программе, подготавливает программу к запуску, а затем + запускает ее. Имя динамического компоновщика для + 32-разрядной машины Intel — ld-linux.so.2, а для 64-разрядных систем + — ld-linux-x86-64.so.2. + Надежный способ определить имя динамического компоновщика — + проверить случайный двоичный файл из хост-системы, выполнив + следующую команду: readelf + -l <имя исполняемого файла> | grep + interpreter и зафиксировать результат. + Официальный источник, охватывающий все платформы, находится + в файле shlib-versions в + корне дерева исходного кода glibc. +

+
+

+ Чтобы сымитировать кросс-компиляцию в LFS, имя триплета хоста + немного подкорректировали, изменив поле "vendor" в переменной + LFS_TGT таким образом, чтобы оно + указывало "lfs". Мы также используем параметр --with-sysroot при сборке + кросс-компоновщика и кросс-компилятора, чтобы сообщить им, + где найти необходимые файлы хоста. Это гарантирует, что ни + одна из программ, входящих в Глава 6, + не сможет ссылаться на библиотеки на машине сборки. Для + корректной работы, обязательны всего два этапа, еще один + рекомендуется для тестирования: +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Этап + + Сборщик + + Хост + + Цель + + Действие +
+ 1 + + ПК + + ПК + + LFS + + Сборка кросс-компилятора cc1 с использованием cc-pc + на ПК +
+ 2 + + ПК + + LFS + + LFS + + Сборка компилятора cc-lfs с использованием cc1 на ПК +
+ 3 + + LFS + + LFS + + LFS + + Пересборка и тестирование cc-lfs, используя cc-lfs в + lfs +
+
+

+ В приведенной выше таблице «ПК» означает, что команды выполняются + на компьютере с использованием уже установленного + дистрибутива. «В + lfs» означает, что команды выполняются в + chroot-окружении. +

+

+ Это еще не конец истории. Язык С - это не просто компилятор; + также он определяет стандартную библиотеку. В этой книге + используется библиотека GNU C под названием glibc (есть + альтернативный вариант - "musl"). Эта библиотека должна быть + скомпилирована для машины lfs, то есть с использованием + кросс-компилятора cc1. Но сам компилятор использует + внутреннюю библиотеку, реализующую сложные инструкции, + недоступные в наборе инструкций ассемблера. Эта внутренняя + библиотека называется libgcc, и для полноценной работы ее + необходимо связать с библиотекой glibc! Кроме того, + стандартная библиотека для C++ (libstdc++) также должна быть + связана с glibc. Решение этой проблемы курицы и яйца состоит + в том, чтобы сначала собрать деградированную libgcc на основе + cc1, в которой отсутствуют некоторые функциональные + возможности, такие как потоки и обработка исключений, затем + собрать glibc с использованием этого деградированного + компилятора (сама glibc не деградирована), а затем собрать + libstdc++. В этой последней библиотеке будет не хватать + некоторых функциональных возможностей libgcc. +

+

+ Выводом из предыдущего абзаца является то, что cc1 не может + собрать полнофункциональную libstdc++ с деградированной + libgcc, но это единственный компилятор, доступный для сборки + библиотек C/C++ на этапе 2. Есть две причины, по которым мы + не используем сразу компилятор cc-lfs, собранный на этапе 2, + для сборки этих библиотек. +

+
+
    +
  • +

    + Вообще говоря, cc-lfs не может работать на ПК + (хост-системе). Хотя триплеты для ПК и LFS совместимы + друг с другом, исполняемый файл для lfs должен зависеть + от glibc-2.39; хост-дистрибутив может использовать либо + другую реализацию libc (например, musl), либо + предыдущий выпуск glibc (например, glibc-2.13). +

    +
  • +
  • +

    + Даже если cc-lfs может работать на ПК, его + использование на ПК сопряжено с риском привязки к + библиотекам ПК, так как cc-lfs является родным + компилятором. +

    +
  • +
+
+

+ Поэтому, когда мы собираем gcc этап 2, мы даем указание + системе сборки пересобрать libgcc и libstdc++ с помощью cc1, + но мы связываем libstdc++ с новой пересобранной libgcc вместо + старой, деградированной. Это делает пересобранную библиотеку + libstdc++ полностью функциональной. +

+

+ В + Глава 8 (или «этап 3») собраны все пакеты, + необходимые для системы LFS. Даже если пакет уже был + установлен в системе LFS в предыдущей главе, мы все равно + пересобираем пакет. Основная причина пересборки этих пакетов + состоит в том, чтобы сделать их стабильными: если мы + переустанавливаем пакет LFS в готовой системе LFS, содержимое + пакета должно совпадать с содержимым того же пакета при + первой установке в + Глава 8. Временные пакеты, установленные в Глава 6 + или + Глава 7 не могут удовлетворять этому требованию, + потому что некоторые из них собраны без необязательных + зависимостей и autoconf не может выполнить некоторые проверки + функций в Глава 6 + из-за кросс-компиляции, в результате чего во временных + пакетах отсутствуют дополнительные функции или используются + не оптимальные процедуры кода. Кроме того, второстепенной + причиной для пересборки пакетов является выполнение тестов. +

+
+
+

+ Другие детали + процесса +

+

+ Кросс-компилятор будет установлен в отдельный каталог + $LFS/tools, так как он не будет + частью конечной системы. +

+

+ Сначала устанавливается Binutils, потому что во время + выполнения команды configure gcc и glibc + выполняются различные тесты функций на ассемблере и + компоновщике, чтобы определить, какие программные функции + следует включить или отключить. Это важнее, чем может + показаться на первый взгляд. Неправильно настроенный gcc или + glibc может привести к незначительной поломке сборочных + инструментов, где последствия такой поломки могут проявиться + ближе к концу сборки всего дистрибутива. Сбой тестов обычно + выявляет эту ошибку до того, как будет выполнено много + дополнительной работы. +

+

+ Binutils устанавливает свой ассемблер и компоновщик в двух + местах: $LFS/tools/bin и + $LFS/tools/$LFS_TGT/bin. + Инструменты в одном месте жестко связаны с другими. Важным + аспектом компоновщика является порядок поиска в библиотеке. + Подробную информацию можно получить от ld, передав ей флаг + --verbose. Например, + $LFS_TGT-ld --verbose | grep + SEARCH покажет текущие пути поиска и их + порядок. Он показывает, какие файлы связаны с помощью + ld, путем + компиляции фиктивной программы и передачи параметра + --verbose + компоновщику. Например, $LFS_TGT-gcc dummy.c -Wl,--verbose + 2>&1 | grep succeeded покажет все + файлы, успешно открытые во время компоновки. +

+

+ Следующий устанавливаемый пакет — gcc. Пример того, что можно + увидеть во время запуска configure: +

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

+ Это важно по причинам, упомянутым выше. Также здесь + демонстрируется, что сценарий настройки gcc не просматривает + значения переменной PATH, чтобы найти, какие инструменты + использовать. Однако во время фактической работы самого + gcc не + обязательно используются одни и те же пути поиска. Чтобы + узнать, какой стандартный компоновщик будет использовать + gcc, запустите: + $LFS_TGT-gcc + -print-prog-name=ld. +

+

+ Подробную информацию можно получить из gcc, передав ему параметр + -v при компиляции + фиктивной программы. Например, gcc -v dummy.c покажет + подробную информацию об этапах препроцессора, компиляции и + сборки, включая указанные в gcc пути поиска и их + порядок. +

+

+ Далее устанавливаются очищенные заголовочные файлы Linux API. + Они позволяют стандартной библиотеке C (Glibc) + взаимодействовать с функциями, предоставляемыми ядром Linux. +

+

+ Следующий устанавливаемый пакет — glibc. Наиболее важными при + сборке glibc являются компилятор, бинарные инструменты и + заголовочные файлы ядра. С компилятором, как правило, не + бывает проблем, поскольку glibc всегда будет использовать + компилятор, указанный в параметре --host, переданный скрипту + configure; например, в нашем случае компилятором будет + $LFS_TGT-gcc. С + бинарными инструментами и заголовки ядра может быть немного + сложнее. Поэтому мы не рискуем и используем доступные + параметры конфигурации, чтобы обеспечить правильный выбор. + После запуска configure проверьте + содержимое файла config.make в + каталоге сборки на наличие всех + важных деталей. Обратите внимание на использование опции + CC="$LFS_TGT-gcc" (с + переменной $LFS_TGT) для + управления используемыми бинарными инструментами и + использование флагов -nostdinc и -isystem для управления + включаемым путем поиска компилятора. Эти пункты подчеркивают + важный аспект пакета glibc — он очень самодостаточен с точки + зрения своего механизма сборки и, как правило, не полагается + на значения по умолчанию. +

+

+ Как было сказано выше, затем компилируется стандартная + библиотека C++, а затем в Глава 6 + все остальные программы, которым необходимо разрешить + проблему циклических зависимостей во время сборки. На этапе + установки всех этих пакетов используется переменная DESTDIR, + для принудительной установки в файловую систему LFS. +

+

+ В конце Глава 6 + устанавливается собственный компилятор lfs. Сначала + собирается binutils с той же переменной DESTDIR, что и другие программы, затем + повторно собирается gcc, без сборки некоторых некритических + библиотек. Из-за какой-то странной логики в сценарии + настройки GCC CC_FOR_TARGET + заканчивается как cc, когда хост совпадает с + целью, но отличается от системы сборки. Поэтому значение + CC_FOR_TARGET=$LFS_TGT-gcc явно + указывается в параметрах конфигурации. +

+

+ После входа в среду chroot в + Глава 7 первой задачей является установка libstdc++. + Затем выполняется установка временных программ, необходимых + для правильной работы тулчейна. С этого момента основной + набор инструментов является самодостаточным и автономным. В + + Глава 8 собираются, тестируются и устанавливаются + окончательные версии всех пакетов, необходимых для + полнофункциональной системы. +

+
+
+
+
+
+

+ Общие инструкции по + компиляции +

+
+
+
+
+
+

+ Внимание +

+

+ В процессе разработки LFS инструкции в книге часто + изменяются, чтобы адаптироваться к обновлению пакета или + использовать преимущества новых функций из обновленных + пакетов. Смешение инструкций разных версий книги LFS может + привести к незначительным поломкам. Такого рода проблемы + обычно являются результатом повторного использования + некоторых скриптов, созданных для предыдущей версии LFS. + Такое повторное использование настоятельно не рекомендуется. + Если вы по какой-либо причине повторно используете скрипты из + предыдущей версии LFS, вам нужно быть очень осторожным при + обновлении скриптов, чтобы они соответствовали текущей версии + книги LFS. +

+
+

+ При сборке пакетов в инструкциях делается несколько допущений: +

+
+
    +
  • +

    + На некоторые пакеты необходимо наложить патчи перед + компиляцией, метод используется тогда, когда исправление + необходимо для решения проблем сборки. Патчи часто + требуются как в этой, так и в следующих главах, но + иногда, когда один и тот же пакет собирается более одного + раза, патч требуется не сразу. Поэтому не беспокойтесь, + если инструкции для скачанного патча отсутствуют. + Предупреждающие сообщения о смещении (offset) или + размытии (fuzz) + также могут появляться при применении патча. Не обращайте + внимания на эти предупреждения, патч все равно успешно + применен. +

    +
  • +
  • +

    + Во время компиляции большинства пакетов на экране будут + отображаться предупреждения. Это нормально, и их можно + смело игнорировать. Предупреждения появляются, например, + когда используется устаревший, недопустимый синтаксис C + или C++. Стандарты C меняются довольно часто, и некоторые + пакеты все еще используют более старый стандарт. Это не + является серьезной проблемой, но вызывает появление + предупреждений. +

    +
  • +
  • +

    + Проверьте в последний раз, что переменная среды + LFS настроена правильно: +

    +
    echo $LFS
    +

    + Убедитесь, что в выводе указан путь к точке монтирования + раздела LFS, то есть /mnt/lfs, как в примере из этой книги. +

    +
  • +
  • +

    + Наконец, необходимо подчеркнуть два важных момента: +

    +
    +

    + Важно +

    +

    + Инструкции по сборке предполагают, что все Требования к + хост-системе, включая символические ссылки, + установлены правильно: +

    +
    +
      +
    • +

      + bash это + используемая оболочка. +

      +
    • +
    • +

      + sh + это символическая ссылка на bash. +

      +
    • +
    • +

      + /usr/bin/awk + это символическая ссылка на gawk. +

      +
    • +
    • +

      + /usr/bin/yacc + это символическая ссылка на bison или + небольшой скрипт, который выполняет bison +

      +
    • +
    +
    +
    +
    +

    + Важно +

    +

    + Вот краткое описание процесса сборки: +

    +
    +
      +
    1. +

      + Поместите все исходники и патчи в каталог, + который будет доступен из среды chroot, например, + /mnt/lfs/sources/. +

      +
    2. +
    3. +

      + Перейдите в каталог /mnt/lfs/sources/. +

      +
    4. +
    5. +

      + Для + каждого пакета: +

      +
      +
        +
      1. +

        + С помощью программы tar + извлеките пакет для сборки. В Глава 5 + и + Глава 6 убедитесь, что при + извлечении пакета вы залогинены под + пользователем lfs. +

        +

        + Не используйте никаких методов, кроме + команды tar, для + извлечения исходного кода. Примечательно, + что использование команды cp -R для + копирования дерева исходного кода в другое + место может привести к уничтожению ссылок и + меток времени в дереве исходного кода и + привести к сбою сборки. +

        +
      2. +
      3. +

        + Перейдите в каталог, созданный при + извлечении пакета. +

        +
      4. +
      5. +

        + Следуйте инструкциям по сборке пакета. +

        +
      6. +
      7. +

        + Вернитесь в исходный каталог, когда сборка + будет завершена. +

        +
      8. +
      9. +

        + Удалите извлеченный каталог, если не + указано иное. +

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

+ Глава 5. Сборка кросс-тулчейна +

+
+
+
+
+
+
+
+

+ 5.1. Введение +

+
+
+
+
+

+ В этой главе дано описание, как создать кросс-компилятор и + связанные с ним инструменты. Несмотря на то, что на данном + этапе кросс-компиляция имитируется, принципы его работы те же, + что и для настоящего кросс-тулчейна. +

+

+ Программы, скомпилированные в этой главе, будут установлены в + каталог $LFS/tools, чтобы они + были отделены от файлов, установленных в следующих главах. + Библиотеки, же, устанавливаются на свое постоянное место, + поскольку они относятся к системе, которую мы хотим создать. +

+
+
+
+
+

+ 5.2. Binutils-2.42 - Проход 1 +

+
+
+
+
+
+

+ Пакет Binutils содержит компоновщик, ассемблер и другие + инструменты для работы с объектными файлами. +

+
+
+
+ Приблизительное время + сборки: 1 SBU +
+
+ Требуемое дисковое + пространство: 663 + MB +
+
+
+
+
+

+ 5.2.1. Установка кросс-пакета Binutils +

+
+

+ Примечание +

+

+ Вернитесь назад и перечитайте примечания в разделе + Общие инструкции по + компиляции. Понимание информации, помеченной как + важная, может впоследствии избавить вас от многих проблем. +

+
+

+ Очень важно, чтобы Binutils был скомпилированным первым, + потому что и Glibc, и GCC выполняют различные тесты на + доступных компоновщике и ассемблере, чтобы определить, какие + из их функций следует включить. +

+

+ В документации пакета Binutils рекомендуется выполнять сборку + в отдельном каталоге, создадим его: +

+
mkdir -v build
+cd       build
+
+

+ Примечание +

+

+ Для того, чтобы значения SBU, перечисленные в остальной + части книги, были вам полезны, измерьте время, необходимое + для сборки этого пакета, начиная с настройки и заканчивая + установкой. Чтобы добиться этого, оберните команды сборки + командой time: time { ../configure ... && make + && make install; }. +

+
+

+ Теперь подготовьте Binutils к компиляции: +

+
../configure --prefix=$LFS/tools \
+             --with-sysroot=$LFS \
+             --target=$LFS_TGT   \
+             --disable-nls       \
+             --enable-gprofng=no \
+             --disable-werror    \
+             --enable-default-hash-style=gnu
+
+

+ Значение параметров настройки: +

+
+
+ --prefix=$LFS/tools +
+
+

+ Указывает сценарию configure подготовить к установке + пакет Binutils в каталог $LFS/tools. +

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

+ Для кросс-компляции указывает системе сборки искать в + $LFS библиотеки целевой системы, если необходимо. +

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

+ Поскольку название машины в значении переменной + LFS_TGT может отличаться от + значения, которое возвращает сценарий config.guess, этот + аргумент укажет сценарию configure как + настроить систему сборки пакета Binutils для создания + кросс-компоновщика. +

+
+
+ --disable-nls +
+
+

+ Этот параметр отключает интернационализацию, так как + i18n не требуется для временных инструментов. +

+
+
+ --enable-gprofng=no +
+
+

+ Этот параметр отключает сборку gprofng, который не + нужен для временного инструментария. +

+
+
+ --disable-werror +
+
+

+ Этот параметр предотвращает остановку сборки в случае + появления предупреждений от компилятора хоста. +

+
+
+ --enable-default-hash-style=gnu +
+
+

+ По умолчанию компоновщик генерирует как хеш-таблицу в + стиле GNU, так и классическую хеш-таблицу ELF для общих + библиотек и динамически связанных исполняемых файлов. + Хеш-таблицы необходимы только для динамического + компоновщика, выполняющего поиск символов. В LFS + динамический компоновщик (предоставляемый пакетом + Glibc) всегда будет использовать хеш-таблицу в стиле + GNU, к которой запросы выполняются быстрее. Так что + классическая хеш-таблица ELF совершенно бесполезна. + Этот параметр указывает компоновщику по умолчанию + генерировать только хеш-таблицу в стиле GNU, поэтому мы + можем избежать траты времени на создание классической + хеш-таблицы ELF при сборке пакетов или не тратить + дисковое пространство для ее хранения. +

+
+
+
+

+ Скомпилируйте пакет: +

+
make
+

+ Установите пакет: +

+
make install
+
+
+

+ Подробная информация об этом пакете находится в Раздел 8.19.2, + «Содержимое пакета Binutils.» +

+
+
+
+
+
+

+ 5.3. GCC-13.2.0 - Проход 1 +

+
+
+
+
+
+

+ Пакет GCC содержит коллекцию компиляторов GNU, которая + включает компиляторы C и C++. +

+
+
+
+ Приблизительное время + сборки: 3.8 SBU +
+
+ Требуемое дисковое + пространство: 4.1 + GB +
+
+
+
+
+

+ 5.3.1. Установка кросс-пакета GCC +

+

+ Для GCC требуются пакеты GMP, MPFR и MPC. Поскольку эти + пакеты могут отсутствовать в дистрибутиве вашего хоста, они + будут собраны с помощью GCC. Распакуйте каждый пакет в + исходный каталог GCC и переименуйте получившиеся каталоги, + чтобы процедуры сборки GCC использовали их автоматически: +

+
+

+ Примечание +

+

+ В этой главе часто возникают недоразумения, хотя + применяются те же процедуры, что и в любой другой главе, + следуйте инструкции которую получили ранее (Инструкции по сборке пакетов). + Сначала распакуйте пакет gcc-13.2.0 из архива, а затем + перейдите в созданный каталог. Только после этого следует + приступить к приведенным ниже инструкциям. +

+
+
tar -xf ../mpfr-4.2.1.tar.xz
+mv -v mpfr-4.2.1 mpfr
+tar -xf ../gmp-6.3.0.tar.xz
+mv -v gmp-6.3.0 gmp
+tar -xf ../mpc-1.3.1.tar.gz
+mv -v mpc-1.3.1 mpc
+

+ На хостах x86_64 измените имя каталога по умолчанию для + 64-битных библиотек на «lib»: +

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

+ В документации к GCC рекомендуется собирать GCC в отдельном + каталоге: +

+
mkdir -v build
+cd       build
+

+ Подготовьте GCC к компиляции: +

+
../configure                  \
+    --target=$LFS_TGT         \
+    --prefix=$LFS/tools       \
+    --with-glibc-version=2.39 \
+    --with-sysroot=$LFS       \
+    --with-newlib             \
+    --without-headers         \
+    --enable-default-pie      \
+    --enable-default-ssp      \
+    --disable-nls             \
+    --disable-shared          \
+    --disable-multilib        \
+    --disable-threads         \
+    --disable-libatomic       \
+    --disable-libgomp         \
+    --disable-libquadmath     \
+    --disable-libssp          \
+    --disable-libvtv          \
+    --disable-libstdcxx       \
+    --enable-languages=c,c++
+
+

+ Значение параметров настройки: +

+
+
+ --with-glibc-version=2.39 +
+
+

+ Этот параметр указывает версию Glibc, которая будет + использоваться на целевой системе. Он не имеет + отношения к libc хост-дистрибутива, потому что все, + скомпилированное в этом разделе, будет выполняться в + среде chroot, которая изолирована от libc + хост-дистрибутива. +

+
+
+ --with-newlib +
+
+

+ Поскольку работающая библиотека C еще недоступна, это + гарантирует, что константа inhibit_libc будет + определена при сборке libgcc. Это предотвращает + компиляцию любого кода, требующего поддержки libc. +

+
+
+ --without-headers +
+
+

+ При создании полного кросс-компилятора GCC требует + наличия стандартных заголовков, совместимых с целевой + системой. Для наших целей эти заголовки не понадобятся. + Этот параметр предотвращает их поиск GCC. +

+
+
+ --enable-default-pie и + --enable-default-ssp +
+
+

+ Эти параметры позволяют GCC по умолчанию компилировать + программы с некоторые функциями усиливающими + безопасность (более подробная информация о них + приведена в примечание о PIE и SSP в Главе 8). + На данном этапе это не является строго обязательным, + поскольку компилятор будет создавать только временные + исполняемые файлы. Но лучше, чтобы временные пакеты + были максимально приближены к тем, что будут в готовой + системе LFS. +

+
+
+ --disable-shared +
+
+

+ Этот параметр заставляет GCC статически связывать свои + внутренние библиотеки. Он необходим потому что общие + библиотеки требуют Glibc, который еще не установлен в + целевой системе. +

+
+
+ --disable-multilib +
+
+

+ На x86_64, LFS не поддерживает конфигурацию multilib. + Этот аргумент никак не влияет на работу с архитектурой + x86. +

+
+
+ --disable-threads, --disable-libatomic, + --disable-libgomp, --disable-libquadmath, + --disable-libssp, --disable-libvtv, + --disable-libstdcxx +
+
+

+ Эти аргументы отключают поддержку расширений для работы + с многопоточностью, libatomic, libgomp, libquadmath, + libssp, libvtv и стандартной библиотеки C++ + соответственно. Эти функции могут не скомпилироваться + при сборке кросс-компилятора и не нужны для задач + кросс-компиляции временной libc +

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

+ Этот параметр обеспечивает сборку только компиляторов C + и C++. Это единственные языки, которые нужны сейчас. +

+
+
+
+

+ Скомпилируйте GCC, выполнив: +

+
make
+

+ Установите пакет: +

+
make install
+

+ Во время сборки GCC установил пару внутренних системных + заголовочных файлов. Обычно один из файлов limits.h, включает соответствующие + системные ограничения limits.h, + в данном случае $LFS/usr/include/limits.h. Однако во время + сборки GCC $LFS/usr/include/limits.h не существует, + поэтому только что установленный внутренний заголовочный файл + является частичным, автономным файлом и не включает + расширенные функции системного файла. Этого достаточно для + сборки Glibc, но полный внутренний заголовочный файл + понадобится позже. Создайте полную версию внутреннего + заголовочного файла с помощью команды, идентичной той, что + система сборки GCC использует обычно: +

+
+

+ Примечание +

+

+ В приведенной ниже команде показан пример подстановки + вложенных команд, используя два метода: обратные кавычки и + конструкцию $(). Его можно + было бы переписать, используя один и тот же метод для обеих + замен, но сделано так, чтобы продемонстрировать, как их + можно использовать одновременно. В целом метод $() предпочтительнее. +

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

+ Подробная информация об этом пакете находится в Раздел 8.28.2, + «Содержимое пакета GCC.» +

+
+
+
+
+
+

+ 5.4. Заголовочные файлы + Linux-6.7.4 API +

+
+
+
+
+
+

+ Заголовочные файлы Linux API (в linux-6.7.4.tar.xz) + предоставляют API ядра для использования Glibc. +

+
+
+
+ Приблизительное время + сборки: менее 0.1 + SBU +
+
+ Требуемое дисковое + пространство: 1.5 + GB +
+
+
+
+
+

+ 5.4.1. Установка заголовочных файлов +

+

+ Ядро Linux должно предоставлять интерфейс прикладного + программирования (API) для использования системной + библиотекой C (Glibc в LFS). Это делается путем установки + заголовочных файлов C, которые поставляются в архиве с + исходным кодом ядра Linux. +

+

+ Убедитесь, что в пакете нет устаревших файлов: +

+
make mrproper
+

+ Теперь извлеките видимые пользователю заголовочные файлы ядра + из исходного кода. Рекомендуемый способ make «headers_install» + использовать нельзя, так как для этого требуется rsync, который может быть недоступен. + Заголовочные файлы сначала помещаются в /usr, а затем копируются в нужное место. +

+
make headers
+find usr/include -type f ! -name '*.h' -delete
+cp -rv usr/include $LFS/usr
+
+
+

+ 5.4.2. Содержимое заголовочных + файлов Linux API +

+
+
+
+ Установленные заголовочные + файлы:: /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 +
+
+ Созданные каталоги:: + /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 +
+
+
+
+

+ Краткое описание +

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

+ /usr/include/asm/*.h +

+
+

+ Заголовочные файлы Linux API ASM +

+
+

+ /usr/include/asm-generic/*.h +

+
+

+ Заголовочные файлы Linux API ASM Generic +

+
+

+ /usr/include/drm/*.h +

+
+

+ Заголовочные файлы Linux API DRM +

+
+

+ /usr/include/linux/*.h +

+
+

+ Заголовочные файлы Linux API Linux +

+
+

+ /usr/include/misc/*.h +

+
+

+ Заголовочные файлы Linux API Miscellaneous +

+
+

+ /usr/include/mtd/*.h +

+
+

+ Заголовочные файлы API MTD +

+
+

+ /usr/include/rdma/*.h +

+
+

+ Заголовочные файлы Linux API RDMA +

+
+

+ /usr/include/scsi/*.h +

+
+

+ Заголовочные файлы Linux API SCSI +

+
+

+ /usr/include/sound/*.h +

+
+

+ Заголовочные файлы Linux API Sound +

+
+

+ /usr/include/video/*.h +

+
+

+ Заголовочные файлы Linux API Video +

+
+

+ /usr/include/xen/*.h +

+
+

+ Заголовочные файлы Linux API Xen +

+
+
+
+
+
+
+
+

+ 5.5. + Glibc-2.39 +

+
+
+
+
+
+

+ Пакет Glibc содержит основную библиотеку C. Эта библиотека + предоставляет основные процедуры для выделения памяти, поиска + в каталогах, открытия и закрытия файлов, чтения и записи + файлов, обработки строк, сопоставления с образцом, арифметики + и так далее +

+
+
+
+ Приблизительное время + сборки: 1.5 SBU +
+
+ Требуемое дисковое + пространство: 846 + MB +
+
+
+
+
+

+ 5.5.1. Установка пакета Glibc +

+

+ Во-первых, создайте символическую ссылку для соответствия + требованиям LSB. Кроме того, для совместимости с x86_64 + создайте символическую ссылку, необходимую для правильной + работы загрузчика динамической библиотеки: +

+
case $(uname -m) in
+    i?86)   ln -sfv ld-linux.so.2 $LFS/lib/ld-lsb.so.3
+    ;;
+    x86_64) ln -sfv ../lib/ld-linux-x86-64.so.2 $LFS/lib64
+            ln -sfv ../lib/ld-linux-x86-64.so.2 $LFS/lib64/ld-lsb-x86-64.so.3
+    ;;
+esac
+
+

+ Примечание +

+

+ Приведенная выше команда верна. Команда ln имеет несколько + вариантов синтаксиса, поэтому обязательно ознакомьтесь с + info coreutils + ln и ln(1), прежде чем + сообщать об ошибке. +

+
+

+ Некоторые программы, использующие Glibc, применяют + несовместимый с FHS каталог /var/db для хранения своих данных времени + выполнения. Установите следующий патч, чтобы такие программы + хранили свои данные в местах, совместимых с FHS: +

+
patch -Np1 -i ../glibc-2.39-fhs-1.patch
+

+ В документации к Glibc рекомендуется собирать Glibc в + отдельном каталоге: +

+
mkdir -v build
+cd       build
+

+ Убедитесь, что утилиты ldconfig and sln установлены в + /usr/sbin: +

+
echo "rootsbindir=/usr/sbin" > configparms
+

+ Затем подготовьте Glibc к компиляции: +

+
../configure                             \
+      --prefix=/usr                      \
+      --host=$LFS_TGT                    \
+      --build=$(../scripts/config.guess) \
+      --enable-kernel=4.19               \
+      --with-headers=$LFS/usr/include    \
+      --disable-nscd                     \
+      libc_cv_slibdir=/usr/lib
+
+

+ Значение параметров настройки: +

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

+ Комбинация этих опций указывает на то, что система + сборки Glibc настраивается на кросс-компиляцию с + использованием кросс-компоновщика и кросс-компилятора в + $LFS/tools. +

+
+
+ --enable-kernel=4.19 +
+
+

+ Этот параметр позволяет Glibc выполнять компиляцию + библиотеки с поддержкой ядра 4.19 и более поздних + версий. Поддержка более старых ядер не включена. +

+
+
+ --with-headers=$LFS/usr/include +
+
+

+ Этот аргумент позволяет скомпилировать библиотеку с + заголовочными файлами, недавно установленными в + каталоге $LFS/usr/include, таким образом, пакету будет + известно, какие функции есть у ядра, чтобы + оптимизировать себя. +

+
+
+ libc_cv_slibdir=/usr/lib +
+
+

+ Этот аргумент гарантирует, что библиотека будет + установлена в /usr/lib вместо стандартного /lib64 на + 64-битных машинах. +

+
+
+ --disable-nscd +
+
+

+ Параметр отключает сборку демона кэша службы имен, + который больше не используется. +

+
+
+
+

+ На этом этапе может появиться следующее предупреждение: +

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

+ Отсутствующая или несовместимая программа msgfmt, как правило, + безвредна. msgfmt является частью + пакета Gettext, который должен предоставлять + хост-дистрибутив. +

+
+

+ Примечание +

+

+ Поступали сообщения о том, что этот пакет может не + компилироваться при «параллельной сборке». Если это + произойдет, повторно запустите команду make с параметром + -j1. +

+
+

+ Скомпилируйте пакет: +

+
make
+

+ Установите пакет: +

+
+

+ Предупреждение +

+

+ Если переменная LFS настроена + неправильно, и, несмотря на рекомендации, вы выполняете + сборку от имени пользователя root, следующая команда установит + только что собранный Glibc в вашу хост-систему, что, скорее + всего, сделает её непригодной для использования. Поэтому + дважды проверьте, правильность настройки среды и что вы + вошли в систему не под учетной записью root, прежде чем запускать следующую + команду. +

+
+
make DESTDIR=$LFS install
+
+

+ Значение опции make + install: +

+
+
+ DESTDIR=$LFS +
+
+

+ Переменная make DESTDIR + используется почти всеми пакетами для определения места + установки пакета. Если она не задана, по умолчанию для + установки используется корневой каталог (/). Здесь мы указываем, что пакет + должен быть установлен в $LFS, который станет корневым + каталогом в Раздел 7.4, + «Вход в окружение Chroot». +

+
+
+
+

+ Исправьте жестко запрограммированный путь к исполняемому + загрузчику в ldd: +

+
sed '/RTLDLIST=/s@/usr@@g' -i $LFS/usr/bin/ldd
+
+

+ Внимание +

+

+ На этом этапе необходимо остановиться и убедиться, что + основные функции (компиляция и компоновка) нового + кросс-тулчейна работают должным образом. Чтобы выполнить + проверку работоспособности, выполните следующие команды: +

+
echo 'int main(){}' | $LFS_TGT-gcc -xc -
+readelf -l a.out | grep ld-linux
+

+ Если все работает правильно, ошибок быть не должно и вывод + последней команды будет иметь вид: +

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

+ Обратите внимание, что для 32-разрядных машин имя + интерпретатора будет /lib/ld-linux.so.2. +

+

+ Если выходные данные отображаются не так, как указано выше, + или их вообще нет, значит, что-то сделано неправильно. + Разберитесь с проблемой и повторите шаги выше, чтобы + исправить ее. Эта проблема должна быть решена, прежде чем + вы продолжите. +

+

+ Как только все будет хорошо, удалите тестовый файл: +

+
rm -v a.out
+
+
+

+ Примечание +

+

+ Сборка пакетов в следующей главе послужит дополнительной + проверкой правильности сборки временного кросс-тулчейна. + Если какой-либо пакет, особенно Binutils или GCC, не + удается собрать, это указывает на то, что что-то пошло не + так с установленными ранее Binutils, GCC, или Glibc. +

+
+
+
+

+ Подробная информация об этом пакете находится в Раздел 8.5.3, + «Содержимое пакета Glibc.» +

+
+
+
+
+
+

+ 5.6. Libstdc++ из GCC-13.2.0 +

+
+
+
+
+
+

+ Libstdc++ — это стандартная библиотека C++. Она нужна для + компиляции кода C++ (часть GCC написана на C++), когда мы + собирали GCC-Проход 1, нам пришлось + отложить её установку, потому что она зависит от библиотеки + Glibc, которой еще не было в целевом каталоге. +

+
+
+
+ Приблизительное время + сборки: 0.2 SBU +
+
+ Требуемое дисковое + пространство: 1.1 + GB +
+
+
+
+
+

+ 5.6.1. Установка библиотеки Libstdc++ +

+
+

+ Примечание +

+

+ Libstdc++ является частью + исходников GCC. Сначала вы должны распаковать архив GCC и + перейти в каталог gcc-13.2.0. +

+
+

+ Создайте отдельный каталог сборки для libstdc++ и перейдите в + него: +

+
mkdir -v build
+cd       build
+

+ Подготовьте libstdc++ к компиляции: +

+
../libstdc++-v3/configure           \
+    --host=$LFS_TGT                 \
+    --build=$(../config.guess)      \
+    --prefix=/usr                   \
+    --disable-multilib              \
+    --disable-nls                   \
+    --disable-libstdcxx-pch         \
+    --with-gxx-include-dir=/tools/$LFS_TGT/include/c++/13.2.0
+
+

+ Значение параметров настройки: +

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

+ Указывает, что должен использоваться кросс-компилятор, + который мы только что собрали, вместо того, который + находится в /usr/bin. +

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

+ Этот аргумент предотвращает установку предварительно + скомпилированных include-файлов, которые на данном + этапе не нужны. +

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

+ Указывает каталог установки для include-файлов. + Поскольку libstdc++ является стандартной библиотекой + C++ для LFS, этот каталог должен соответствовать + местоположению, в котором компилятор C++ ($LFS_TGT-g++) будет + искать стандартные включаемые файлы C++. При обычной + сборке эта информация автоматически передается в + Libstdc++ при выполнении configure из каталога + верхнего уровня. В нашем случае эта информация должна + быть указана явно. Компилятор C++ добавит путь sysroot + $LFS (указанный при + сборке GCC Проход 1) к пути поиска include-файлов, + поэтому фактически он будет искать в $LFS/tools/$LFS_TGT/include/c++/13.2.0. + Комбинация переменной DESTDIR (в приведенной + ниже команде make + install) и этого аргумента обеспечивает + установку заголовочных файлов туда. +

+
+
+
+

+ Скомпилируйте Libstdc++, выполнив: +

+
make
+

+ Установите библиотеку: +

+
make DESTDIR=$LFS install
+

+ Удалите архивные файлы libtool, поскольку они потенциально + опасны при кросс-компиляции: +

+
rm -v $LFS/usr/lib/lib{stdc++{,exp,fs},supc++}.la
+
+
+

+ Подробная информация об этом пакете приведена в Раздел 8.28.2, + «Содержимое пакета GCC.» +

+
+
+
+
+
+
+

+ Глава 6. Кросс-Компиляция + временных инструментов +

+
+
+
+
+
+
+
+

+ 6.1. Введение +

+
+
+
+
+

+ В этой главе рассказывается, как выполнить кросс-компиляцию + базовых утилит с использованием только что собранного + кросс-тулчейна. Эти утилиты установлены в свое конечное + местоположение, но пока не могут быть использованы. Выполняемые + инструкции по-прежнему зависят от инструментария хоста. Тем не + менее, установленные библиотеки используются при компоновке. +

+

+ Использование утилит станет возможным в следующей главе после + входа в среду «chroot». Все пакеты из этой главы, должны + быть собраны до того, как мы это сделаем. Поэтому пока наша + система зависима от хост-системы. +

+

+ Еще раз напомним, что неправильная настройка LFS вместе со сборкой от root может сделать ваш компьютер + непригодным для использования. Всю эту главу нужно выполнить от + имени пользователя lfs, в его + рабочем окружении, как описано в Раздел 4.4, «Настройка + окружения». +

+
+
+
+
+

+ 6.2. M4-1.4.19 +

+
+
+
+
+
+

+ Пакет M4 содержит макропроцессор. +

+
+
+
+ Приблизительное время + сборки: 0.1 SBU +
+
+ Требуемое дисковое + пространство: 31 MB +
+
+
+
+
+

+ 6.2.1. Установка пакета M4 +

+

+ Подготовьте пакет M4 к компиляции: +

+
./configure --prefix=/usr   \
+            --host=$LFS_TGT \
+            --build=$(build-aux/config.guess)
+

+ Скомпилируйте пакет: +

+
make
+

+ Установите пакет: +

+
make DESTDIR=$LFS install
+
+
+

+ Подробная информация об этом пакете находится в Раздел 8.12.2, + «Содержимое пакета M4.» +

+
+
+
+
+
+

+ 6.3. + Ncurses-6.4-20230520 +

+
+
+
+
+
+

+ Пакет Ncurses содержит библиотеки для независимой от + терминала обработки ввода/вывода +

+
+
+
+ Приблизительное время + сборки: 0.3 SBU +
+
+ Требуемое дисковое + пространство: 51 MB +
+
+
+
+
+

+ 6.3.1. Установка пакета Ncurses +

+

+ Во-первых, убедитесь, что gawk найден первым во время + настройки: +

+
sed -i s/mawk// configure
+

+ Затем выполните следующие команды, чтобы собрать программу + «tic» + на хосте сборки: +

+
mkdir build
+pushd build
+  ../configure
+  make -C include
+  make -C progs tic
+popd
+

+ Подготовьте Ncurses к компиляции: +

+
./configure --prefix=/usr                \
+            --host=$LFS_TGT              \
+            --build=$(./config.guess)    \
+            --mandir=/usr/share/man      \
+            --with-manpage-format=normal \
+            --with-shared                \
+            --without-normal             \
+            --with-cxx-shared            \
+            --without-debug              \
+            --without-ada                \
+            --disable-stripping          \
+            --enable-widec
+
+

+ Значение новых параметров настройки: +

+
+
+ --with-manpage-format=normal +
+
+

+ Этот аргумент предотвращает установку Ncurses сжатых + страниц руководства, это может произойти, если сам + дистрибутив хоста содержит сжатые страницы руководства. +

+
+
+ --with-shared +
+
+

+ Этот аргумент позволяет Ncurses собирать и + устанавливать разделяемые библиотеки C. +

+
+
+ --without-normal +
+
+

+ Этот аргумент предотвращает сборку и установку + статических библиотек C. +

+
+
+ --without-debug +
+
+

+ Этот аргумент предотвращает сборку и установку + отладочных библиотек. +

+
+
+ --with-cxx-shared +
+
+

+ Это аргумент позволяет Ncurses собирать и устанавливать + общие привязки C++. А также предотвращает сборку и + установку статических привязок C++. +

+
+
+ --without-ada +
+
+

+ Этот аргумент гарантирует, что Ncurses будет собран без + поддержки компилятора Ada, который может присутствовать + на хосте, но будет недоступен, как только мы войдем в + среду chroot. +

+
+
+ --disable-stripping +
+
+

+ Этот аргумент не позволяет системе сборки использовать + программу strip с хоста. + Использование инструментов хоста в кросс-компилируемой + программе может привести к сбою. +

+
+
+ --enable-widec +
+
+

+ Этот аргумент указывает, что необходимо скомпилировать + библиотеки расширенных символов (такие как, + libncursesw.so.6.4-20230520) + вместо обычных (таких как, libncurses.so.6.4-20230520). Эти + библиотеки расширенных символов можно использовать как + в многобайтовой, так и традиционной 8-битной локали, в + то время как обычные библиотеки корректно работают + только в 8-битных локалях. Библиотеки расширенных + символов и обычные совместимы на уровне исходного кода, + но не совместимы в двоичном. +

+
+
+
+

+ Скомпилируйте пакет: +

+
make
+

+ Установите пакет: +

+
make DESTDIR=$LFS TIC_PATH=$(pwd)/build/progs/tic install
+ln -sv libncursesw.so $LFS/usr/lib/libncurses.so
+sed -e 's/^#if.*XOPEN.*$/#if 1/' \
+    -i $LFS/usr/include/curses.h
+
+

+ Значение параметров установки: +

+
+
+ TIC_PATH=$(pwd)/build/progs/tic +
+
+

+ Нам нужно передать путь до только что собранной + программы tic, которая работает + на сборочной машине, чтобы база данных терминала была + создана без ошибок. +

+
+
+ ln -sv + libncursesw.so + $LFS/usr/lib/libncurses.so +
+
+

+ Библиотека libncurses.so + необходима для нескольких пакетов, которые мы скоро + соберем. Мы создаем эту символическую ссылку, чтобы + использовать libncursesw.so в качестве замены. +

+
+
+ sed -e + 's/^#if.*XOPEN.*$/#if 1/' ... +
+
+

+ Заголовочный файл curses.h содержит определения + различных структур данных Ncurses. С разными + определениями макросов препроцессора могут + использоваться два разных набора определений структуры + данных: 8-битное определение совместимо с libncurses.so, а определение + расширенного набора символов совместимо с libncursesw.so . Поскольку мы + используем libncursesw.so + вместо libncurses.so, + отредактируйте заголовочный файл, чтобы он всегда + использовал определение структуры данных расширенного + набора символов, совместимое с . + libncursesw.so. +

+
+
+
+
+
+

+ Подробная информация об этом пакете находится в Раздел 8.29.2, + «Содержимое пакета Ncurses.» +

+
+
+
+
+
+

+ 6.4. + Bash-5.2.21 +

+
+
+
+
+
+

+ Пакет Bash содержит Bourne-Again Shell. +

+
+
+
+ Приблизительное время + сборки: 0.2 SBU +
+
+ Требуемое дисковое + пространство: 67 MB +
+
+
+
+
+

+ 6.4.1. Установка пакета Bash +

+

+ Подготовьте Bash к компиляции: +

+
./configure --prefix=/usr                      \
+            --build=$(sh support/config.guess) \
+            --host=$LFS_TGT                    \
+            --without-bash-malloc
+
+

+ Значение параметров настройки: +

+
+
+ --without-bash-malloc +
+
+

+ Этот параметр отключает использование функции + распределения памяти (malloc) Bash, которая, как известно, + вызывает ошибки сегментации. Если опция отключена, Bash + будет использовать функции malloc из Glibc, которые более + стабильны. +

+
+
+
+

+ Скомпилируйте пакет: +

+
make
+

+ Установите пакет: +

+
make DESTDIR=$LFS install
+

+ Создайте символическую ссылку для программ, которые + используют sh + как оболочку: +

+
ln -sv bash $LFS/bin/sh
+
+
+

+ Подробная информация об этом пакете находится в Раздел 8.35.2, + «Содержимое пакета Bash.» +

+
+
+
+
+
+

+ 6.5. Coreutils-9.4 +

+
+
+
+
+
+

+ Пакет Coreutils содержит основные утилиты, необходимые каждой + операционной системе. +

+
+
+
+ Приблизительное время + сборки: 0.3 SBU +
+
+ Требуемое дисковое + пространство: 173 + MB +
+
+
+
+
+

+ 6.5.1. Установка пакета Coreutils +

+

+ Подготовьте Coreutils к компиляции: +

+
./configure --prefix=/usr                     \
+            --host=$LFS_TGT                   \
+            --build=$(build-aux/config.guess) \
+            --enable-install-program=hostname \
+            --enable-no-install-program=kill,uptime
+
+

+ Значение параметров настройки: +

+
+
+ --enable-install-program=hostname +
+
+

+ Этот параметр позволяет создать и установить двоичный + файл hostname – по + умолчанию он отключен, но требуется для набора тестов + Perl. +

+
+
+
+

+ Скомпилируйте пакет: +

+
make
+

+ Установите пакет: +

+
make DESTDIR=$LFS install
+

+ Переместите программы в их конечное местоположение. Хотя во + временной среде в этом нет необходимости, мы должны это + сделать, потому что некоторые программы жестко прописывают + местоположение исполняемых файлов: +

+
mv -v $LFS/usr/bin/chroot              $LFS/usr/sbin
+mkdir -pv $LFS/usr/share/man/man8
+mv -v $LFS/usr/share/man/man1/chroot.1 $LFS/usr/share/man/man8/chroot.8
+sed -i 's/"1"/"8"/'                    $LFS/usr/share/man/man8/chroot.8
+
+
+

+ Подробная информация об этом пакете находится в Раздел 8.57.2, + «Содержимое пакета Coreutils.» +

+
+
+
+
+
+

+ 6.6. Diffutils-3.10 +

+
+
+
+
+
+

+ Пакет Diffutils содержит программы, которые показывают + различия между файлами или каталогами. +

+
+
+
+ Приблизительное время + сборки: 0.1 SBU +
+
+ Требуемое дисковое + пространство: 29 MB +
+
+
+
+
+

+ 6.6.1. Установка пакета Diffutils +

+

+ Подготовьте Diffutils для компиляции: +

+
./configure --prefix=/usr   \
+            --host=$LFS_TGT \
+            --build=$(./build-aux/config.guess)
+

+ Скомпилируйте пакет: +

+
make
+

+ Установите пакет: +

+
make DESTDIR=$LFS install
+
+
+

+ Подробная информация об этом пакете находится в Раздел 8.59.2, + «Содержимое пакета Diffutils.» +

+
+
+
+
+
+

+ 6.7. + File-5.45 +

+
+
+
+
+
+

+ Пакет File содержит утилиту для определения типа указанного + файла или файлов +

+
+
+
+ Приблизительное время + сборки: 0.1 SBU +
+
+ Требуемое дисковое + пространство: 37 MB +
+
+
+
+
+

+ 6.7.1. Установка пакета File +

+

+ Команда file на + хосте сборки должна быть той же версии, что и собираемая, + чтобы создать файл подписи. Выполните следующие команды, + чтобы создать временную копию команды file. +

+
mkdir build
+pushd build
+  ../configure --disable-bzlib      \
+               --disable-libseccomp \
+               --disable-xzlib      \
+               --disable-zlib
+  make
+popd
+
+

+ Значение новой опции настройки: +

+
+
+ --disable-* +
+
+

+ Сценарий конфигурации пытается использовать некоторые + пакеты из основного дистрибутива, если существуют + соответствующие файлы библиотек. Это может привести к + сбою компиляции, если файлы библиотек существует, но + отсутствуют соответствующие заголовочные файлы. Эти + параметры предотвращают использование ненужных + возможностей хоста. +

+
+
+
+

+ Подготовьте файл для компиляции: +

+
./configure --prefix=/usr --host=$LFS_TGT --build=$(./config.guess)
+

+ Скомпилируйте пакет: +

+
make FILE_COMPILE=$(pwd)/build/src/file
+

+ Установите пакет: +

+
make DESTDIR=$LFS install
+

+ Удалите архивный файл libtool, поскольку он потенциально + опасен при кросс-компиляции: +

+
rm -v $LFS/usr/lib/libmagic.la
+
+
+

+ Подробная информация об этом пакете находится в Раздел 8.10.2, + «Содержимое пакета File.» +

+
+
+
+
+
+

+ 6.8. Findutils-4.9.0 +

+
+
+
+
+
+

+ Пакет Findutils содержит программы для поиска файлов. Эти + программы предназначены для поиска по всем файлам в дереве + каталогов, а также для создания, обслуживания и поиска в базе + данных (часто быстрее, чем рекурсивный поиск, но ненадежно, + если база данных давно не обновлялась).Findutils также + предоставляет программу xargs, которую можно + использовать для запуска указанной команды для каждого файла, + выбранного при поиске. +

+
+
+
+ Приблизительное время + сборки: 0.1 SBU +
+
+ Требуемое дисковое + пространство: 42 MB +
+
+
+
+
+

+ 6.8.1. Установка пакета Findutils +

+

+ Подготовьте Findutils к компиляции: +

+
./configure --prefix=/usr                   \
+            --localstatedir=/var/lib/locate \
+            --host=$LFS_TGT                 \
+            --build=$(build-aux/config.guess)
+

+ Скомпилируйте пакет: +

+
make
+

+ Установите пакет: +

+
make DESTDIR=$LFS install
+
+
+

+ Подробная информация об этом пакете находится в Раздел 8.61.2, + «Содержимое пакета Findutils.» +

+
+
+
+
+
+

+ 6.9. + Gawk-5.3.0 +

+
+
+
+
+
+

+ Пакет Gawk содержит программы для работы с текстовыми + файлами. +

+
+
+
+ Приблизительное время + сборки: 0.1 SBU +
+
+ Требуемое дисковое + пространство: 47 MB +
+
+
+
+
+

+ 6.9.1. Установка пакета Gawk +

+

+ Во-первых, убедитесь, что некоторые ненужные файлы не будут + установлены: +

+
sed -i 's/extras//' Makefile.in
+

+ Подготовьте Gawk к компиляции: +

+
./configure --prefix=/usr   \
+            --host=$LFS_TGT \
+            --build=$(build-aux/config.guess)
+

+ Скомпилируйте пакет: +

+
make
+

+ Установите пакет: +

+
make DESTDIR=$LFS install
+
+
+

+ Подробная информация об этом пакете находится в Раздел 8.60.2, + «Содержимое пакета Gawk.» +

+
+
+
+
+
+

+ 6.10. + Grep-3.11 +

+
+
+
+
+
+

+ Пакет Grep содержит программы для поиска по содержимому + файлов. +

+
+
+
+ Приблизительное время + сборки: 0.1 SBU +
+
+ Требуемое дисковое + пространство: 27 MB +
+
+
+
+
+

+ 6.10.1. Установка пакета Grep +

+

+ Подготовьте Grep к компиляции: +

+
./configure --prefix=/usr   \
+            --host=$LFS_TGT \
+            --build=$(./build-aux/config.guess)
+

+ Скомпилируйте пакет: +

+
make
+

+ Установите пакет: +

+
make DESTDIR=$LFS install
+
+
+

+ Подробная информация об этом пакете находится в Раздел 8.34.2, + «Содержимое пакета Grep.» +

+
+
+
+
+
+

+ 6.11. + Gzip-1.13 +

+
+
+
+
+
+

+ Пакет Gzip содержит программы для сжатия и распаковки файлов. +

+
+
+
+ Приблизительное время + сборки: 0.1 SBU +
+
+ Требуемое дисковое + пространство: 11 MB +
+
+
+
+
+

+ 6.11.1. Установка пакета Gzip +

+

+ Подготовьте Gzip к компиляции: +

+
./configure --prefix=/usr --host=$LFS_TGT
+

+ Скомпилируйте пакет: +

+
make
+

+ Установите пакет: +

+
make DESTDIR=$LFS install
+
+
+

+ Подробная информация об этом пакете находится в Раздел 8.64.2, + «Содержимое пакета Gzip.» +

+
+
+
+
+
+

+ 6.12. + Make-4.4.1 +

+
+
+
+
+
+

+ Пакет Make содержит программу, управляющую генерацией + исполняемых и других файлов, из исходного кода. +

+
+
+
+ Приблизительное время + сборки: менее 0.1 + SBU +
+
+ Требуемое дисковое + пространство: 15 MB +
+
+
+
+
+

+ 6.12.1. Установка пакета Make +

+

+ Подготовьте Make к компиляции: +

+
./configure --prefix=/usr   \
+            --without-guile \
+            --host=$LFS_TGT \
+            --build=$(build-aux/config.guess)
+
+

+ Значение новой опции настройки: +

+
+
+ --without-guile +
+
+

+ Несмотря на то, что мы выполняем кросс-компиляцию, + configure пытается использовать guile с узла сборки, + если он его находит. Это приводит к сбою компиляции, + этот аргумент предотвращает его использование. +

+
+
+
+

+ Скомпилируйте пакет: +

+
make
+

+ Установите пакет: +

+
make DESTDIR=$LFS install
+
+
+

+ Подробная информация об этом пакете находится в Раздел 8.68.2, + «Содержимое пакета Make.» +

+
+
+
+
+
+

+ 6.13. + Patch-2.7.6 +

+
+
+
+
+
+

+ Пакет Patch содержит программу для изменения или создания + файлов путём наложение «патча», обычно, создаваемого программой + diff. +

+
+
+
+ Приблизительное время + сборки: 0.1 SBU +
+
+ Требуемое дисковое + пространство: 12 MB +
+
+
+
+
+

+ 6.13.1. Установка пакета Patch +

+

+ Подготовьте Patch к компиляции: +

+
./configure --prefix=/usr   \
+            --host=$LFS_TGT \
+            --build=$(build-aux/config.guess)
+

+ Скомпилируйте пакет: +

+
make
+

+ Установите пакет: +

+
make DESTDIR=$LFS install
+
+
+

+ Подробная информация об этом пакете находится в Раздел 8.69.2, + «Содержимое пакета Patch.» +

+
+
+
+
+
+

+ 6.14. Sed-4.9 +

+
+
+
+
+
+

+ Пакет Sed содержит потоковый редактор текста +

+
+
+
+ Приблизительное время + сборки: 0.1 SBU +
+
+ Требуемое дисковое + пространство: 21 MB +
+
+
+
+
+

+ 6.14.1. Установка пакета Sed +

+

+ Подготовьте Sed к компиляции: +

+
./configure --prefix=/usr   \
+            --host=$LFS_TGT \
+            --build=$(./build-aux/config.guess)
+

+ Скомпилируйте пакет: +

+
make
+

+ Установите пакет: +

+
make DESTDIR=$LFS install
+
+
+

+ Подробная информация об этом пакете находится в Раздел 8.30.2, + «Содержимое пакета Sed.» +

+
+
+
+
+
+

+ 6.15. Tar-1.35 +

+
+
+
+
+
+

+ Пакет Tar предоставляет возможность создавать tar архивы, а + также производить с ними различные манипуляции. Tar может + распаковать предварительно созданный архив, добавить или + обновить файлы в нём, вернуть список файлов в архиве. +

+
+
+
+ Приблизительное время + сборки: 0.1 SBU +
+
+ Требуемое дисковое + пространство: 42 MB +
+
+
+
+
+

+ 6.15.1. Установка пакета Tar +

+

+ Подготовьте Tar к компиляции: +

+
./configure --prefix=/usr                     \
+            --host=$LFS_TGT                   \
+            --build=$(build-aux/config.guess)
+

+ Скомпилируйте пакет: +

+
make
+

+ Установите пакет: +

+
make DESTDIR=$LFS install
+
+
+

+ Подробная информация об этом пакете находится в Раздел 8.70.2, + «Содержимое пакета Tar.» +

+
+
+
+
+
+

+ 6.16. Xz-5.4.6 +

+
+
+
+
+
+

+ Пакет Xz содержит программы для сжатия и распаковки файлов. + Он предоставляет возможности для lzma и более новых форматов + сжатия xz. Сжатие текстовых файлов с помощью xz дает лучший процент + сжатия, чем с традиционные gzip или bzip2. +

+
+
+
+ Приблизительное время + сборки: 0.1 SBU +
+
+ Требуемое дисковое + пространство: 22 MB +
+
+
+
+
+

+ 6.16.1. Установка пакета Xz +

+

+ Подготовьте Xz к компиляции: +

+
./configure --prefix=/usr                     \
+            --host=$LFS_TGT                   \
+            --build=$(build-aux/config.guess) \
+            --disable-static                  \
+            --docdir=/usr/share/doc/xz-5.4.6
+

+ Скомпилируйте пакет: +

+
make
+

+ Установите пакет: +

+
make DESTDIR=$LFS install
+

+ Удалите архивный файл libtool, поскольку он потенциально + опасен при кросс-компиляции: +

+
rm -v $LFS/usr/lib/liblzma.la
+
+
+

+ Подробная информация об этом пакете находится в Раздел 8.8.2, «Содержимое + пакета Xz.» +

+
+
+
+
+
+

+ 6.17. Binutils-2.42 - Проход + 2 +

+
+
+
+
+
+

+ Пакет Binutils содержит компоновщик, ассемблер и другие + инструменты для работы с объектными файлами. +

+
+
+
+ Приблизительное время + сборки: 0.5 SBU +
+
+ Требуемое дисковое + пространство: 537 + MB +
+
+
+
+
+

+ 6.17.1. Установка пакета Binutils +

+

+ Система сборки Binutils использует содержащуюся в пакете + копию libtool для линковки с внутренними статическими + библиотеками, но копии libiberty и zlib, поставляемые с + пакетом, не используют libtool. Это несоответствие может + привести к тому, что созданные двоичные файлы будут ошибочно + связаны с библиотеками из основного дистрибутива. Решение + этой проблемы: +

+
sed '6009s/$add_dir//' -i ltmain.sh
+

+ Создайте отдельный каталог для сборки: +

+
mkdir -v build
+cd       build
+

+ Подготовьте Binutils к компиляции: +

+
../configure                   \
+    --prefix=/usr              \
+    --build=$(../config.guess) \
+    --host=$LFS_TGT            \
+    --disable-nls              \
+    --enable-shared            \
+    --enable-gprofng=no        \
+    --disable-werror           \
+    --enable-64-bit-bfd        \
+    --enable-default-hash-style=gnu
+
+

+ Значение новых параметров настройки: +

+
+
+ --enable-shared +
+
+

+ Собирает libbfd как + разделяемую библиотеку +

+
+
+ --enable-64-bit-bfd +
+
+

+ Включает 64-разрядную поддержку (на хостах с меньшим + размером слова). В 64-разрядных системах это может и не + понадобиться, но вреда от этого не будет +

+
+
+
+

+ Скомпилируйте пакет: +

+
make
+

+ Установите пакет: +

+
make DESTDIR=$LFS install
+

+ Удалите архивные файлы libtool, поскольку они потенциально + опасны при кросс-компиляции, также удалите ненужные + статические библиотеки +

+
rm -v $LFS/usr/lib/lib{bfd,ctf,ctf-nobfd,opcodes,sframe}.{a,la}
+
+
+

+ Подробная информация об этом пакете находится в Раздел 8.19.2, + «Содержимое пакета Binutils.» +

+
+
+
+
+
+

+ 6.18. GCC-13.2.0 - Проход 2 +

+
+
+
+
+
+

+ Пакет GCC содержит коллекцию компиляторов GNU, которая + включает компиляторы C и C++. +

+
+
+
+ Приблизительное время + сборки: 4.4 SBU +
+
+ Требуемое дисковое + пространство: 4.8 + GB +
+
+
+
+
+

+ 6.18.1. Установка пакета GCC +

+

+ Как и при первой сборке GCC, требуются пакеты GMP, MPFR и + MPC. Распакуйте архивы и переименуйте каталоги: +

+
tar -xf ../mpfr-4.2.1.tar.xz
+mv -v mpfr-4.2.1 mpfr
+tar -xf ../gmp-6.3.0.tar.xz
+mv -v gmp-6.3.0 gmp
+tar -xf ../mpc-1.3.1.tar.gz
+mv -v mpc-1.3.1 mpc
+

+ При сборке на x86_64 измените имя каталога по умолчанию для + 64-разрядных библиотек на «lib»: +

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

+ Переопределите правила сборки заголовочных файлов libgcc и + libstdc++, чтобы разрешить создание этих библиотек с + поддержкой потоков POSIX: +

+
sed '/thread_header =/s/@.*@/gthr-posix.h/' \
+    -i libgcc/Makefile.in libstdc++-v3/include/Makefile.in
+

+ Снова создайте отдельный каталог сборки: +

+
mkdir -v build
+cd       build
+

+ Перед началом сборки GCC не забудьте отключить все переменные + среды, которые переопределяют флаги оптимизации по умолчанию. +

+

+ Теперь подготовьте GCC к компиляции: +

+
../configure                                       \
+    --build=$(../config.guess)                     \
+    --host=$LFS_TGT                                \
+    --target=$LFS_TGT                              \
+    LDFLAGS_FOR_TARGET=-L$PWD/$LFS_TGT/libgcc      \
+    --prefix=/usr                                  \
+    --with-build-sysroot=$LFS                      \
+    --enable-default-pie                           \
+    --enable-default-ssp                           \
+    --disable-nls                                  \
+    --disable-multilib                             \
+    --disable-libatomic                            \
+    --disable-libgomp                              \
+    --disable-libquadmath                          \
+    --disable-libsanitizer                         \
+    --disable-libssp                               \
+    --disable-libvtv                               \
+    --enable-languages=c,c++
+
+

+ Значение новых параметров настройки: +

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

+ Обычно, использование --host гарантирует, что + для сборки GCC используется кросс-компилятор, и этот + компилятор знает, что он должен искать заголовочные + файлы и библиотеки в $LFS. Но сборочная система GCC + использует другие инструменты, которые не знают об этом + местоположении. Этот параметр необходим для того, чтобы + они могли найти нужные файлы в $LFS, а не на хосте. +

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

+ Поскольку мы выполняем кросс-компиляцию GCC, невозможно + создать целевые библиотеки (libgcc и libstdc++) с ранее скомпилированными + двоичными файлами GCC, потому что эти двоичные файлы не + будут работать на хост-дистрибутиве. Система сборки GCC + по умолчанию попытается использовать компиляторы C и + C++ хоста в качестве обходного пути. Сейчас не + поддерживается создание целевых библиотек GCC с помощью + другой версии GCC, поэтому использование компиляторов + хоста может привести к сбою сборки. Этот параметр + гарантирует сборку библиотек с помощью GCC собранного + на первом проходе. +

+
+
+ LDFLAGS_FOR_TARGET=... +
+
+

+ Разрешить libstdc++ + использовать общую библиотеку libgcc, собранную на этом этапе, + вместо статической версии, собранной в GCC Проход 1. + Это необходимо для поддержки обработки исключений C++ +

+
+
+ --disable-libsanitizer +
+
+

+ Отключает библиотеки среды выполнения GCC sanitizer. + Они не нужны для временного набора инструментов. Этот + параметр необходим для сборки GCC без установки + libcrypt для целевого + объекта. В GCC-Проход 1 это + решалось с помощью параметра --disable-libstdcxx, но + теперь мы должны передать его явно. +

+
+
+
+

+ Скомпилируйте пакет: +

+
make
+

+ Установите пакет: +

+
make DESTDIR=$LFS install
+

+ В качестве завершающего штриха создайте символическую ссылку + на утилиту. Многие программы и скрипты используют + cc вместо + gcc, чтобы + сделать программы более универсальными и, следовательно, для + совместимости со всеми типами UNIX-систем, где компилятор GNU + C не всегда установлен. Наличие cc оставляет системному + администратору право самостоятельно решать, какой компилятор + C устанавливать: +

+
ln -sv gcc $LFS/usr/bin/cc
+
+
+

+ Подробная информация об этом пакете находится в Раздел 8.28.2, + «Содержимое пакета GCC.» +

+
+
+
+
+
+
+

+ Глава 7. Вход в + окружение Chroot и создание дополнительных временных + инструментов +

+
+
+
+
+
+
+
+

+ 7.1. Введение +

+
+
+
+
+

+ В этой главе рассказывается, как собрать последние недостающие + части временной системы: инструменты, необходимые для сборки + различных пакетов. Теперь, когда все циклические зависимости + устранены, для сборки можно использовать среду «chroot», полностью + изолированную от операционной системы хоста (за исключением + работающего ядра). +

+

+ Для правильной работы изолированной среды необходимо установить + связь с работающим ядром. Это делается с помощью так называемых + виртуальных файловых систем + ядра, которые будут смонтированы перед входом в + среду chroot. Вы можете проверить, смонтированы ли они, + выполнив команду findmnt. +

+

+ До Раздел 7.4, «Вход в + окружение Chroot» команды должны выполняться от имени + root с установленной переменной + LFS. После входа в chroot все + команды выполняются от имени root, к счастью, без доступа к операционной + системе компьютера, на котором вы собираете LFS. В любом случае + будьте осторожны, так как неверными командами легко разрушить + всю систему LFS. +

+
+
+
+
+

+ 7.2. Смена владельца +

+
+
+
+
+
+

+ Примечание +

+

+ Команды, приведенные в оставшейся части книги, должны + выполняться от имени пользователя root, а не lfs. Дважды проверьте, что переменная + $LFS установлена в переменных + окружения пользователя root. +

+
+

+ В настоящее время вся иерархия каталогов в $LFS принадлежит пользователю lfs, существующему только на хост-системе. + Если права на файлы и каталоги внутри $LFS оставить как есть, то они будут + принадлежать ID пользователя без существующей учетной записи. + Это опасно, так как созданная позже учетная запись, может + получить такой же ID пользователя и стать владельцем всех + файлов в $LFS, тем самым делая + эти файлы уязвимыми для возможных злонамеренных манипуляций. +

+

+ Для решения проблемы измените владельца каталогов $LFS/* на пользователя root, выполнив следующую команду: +

+
chown -R root:root $LFS/{usr,lib,var,etc,bin,sbin,tools}
+case $(uname -m) in
+  x86_64) chown -R root:root $LFS/lib64 ;;
+esac
+
+
+
+
+

+ 7.3. + Подготовка виртуальных файловых систем ядра +

+
+
+
+
+

+ Приложения, работающие в пользовательском пространстве, + используют различные файловые системы, созданные ядром, для + взаимодействия с самим ядром. Эти файловые системы являются + виртуальными: для них не используется дисковое пространство. + Содержимое файловых систем находится в памяти. Эти файловые + системы должны быть смонтированы в дереве каталогов $LFS, чтобы + приложения могли найти их в среде chroot. +

+

+ Начните с создания каталогов, в которые будут смонтированы эти + виртуальные файловые системы: +

+
mkdir -pv $LFS/{dev,proc,sys,run}
+
+

+ 7.3.1. Монтирование и заполнение + /dev +

+

+ Во время обычной загрузки ядро автоматически монтирует + файловую систему devtmpfs в + каталог /dev; ядро создает узлы + устройств в этой виртуальной файловой системе в процессе + загрузки или при первом обнаружении устройства, или доступе к + нему. Демон udev может изменять владельца или разрешения + узлов устройств, созданных ядром, или создавать новые узлы + устройств или символические ссылки, чтобы облегчить работу + разработчиков дистрибутива или системных администраторов. + (Подробности смотрите в Раздел 9.3.2.2, + «Создание узла устройства».) Если ядро хоста поддерживает + devtmpfs, мы можем просто + смонтировать devtmpfs в + $LFS/dev и положиться на ядро + для его заполнения. +

+

+ Но в некоторых ядрах хоста отсутствует поддержка devtmpfs, эти хост-дистрибутивы + используют разные методы для создания содержимого + /dev. Таким образом, + единственный независимый от хоста способ заполнить каталог + $LFS/dev - это привязка к + каталогу /dev хост-системы. + Связное монтирование - это особый тип монтирования, который + делает дерево каталога или файл видимым в каком-либо другом + месте. Для этого используйте следующую команду: +

+
mount -v --bind /dev $LFS/dev
+
+
+

+ 7.3.2. Монтирование виртуальных + файловых систем ядра +

+

+ Теперь смонтируйте оставшиеся виртуальные файловые системы: +

+
mount -vt devpts devpts -o gid=5,mode=0620 $LFS/dev/pts
+mount -vt proc proc $LFS/proc
+mount -vt sysfs sysfs $LFS/sys
+mount -vt tmpfs tmpfs $LFS/run
+
+

+ Значение параметров монтирования для + devpts: +

+
+
+ gid=5 +
+
+

+ Этот параметр гарантирует, что все узлы устройств, + созданные devpts, принадлежат группе с идентификатором + 5. Это идентификатор, который мы будем использовать + позже для группы tty. + Мы используем идентификатор группы вместо имени, + поскольку хост-система может использовать другой + идентификатор для своей группы tty. +

+
+
+ mode=0620 +
+
+

+ Этот параметр гарантирует, что все узлы устройств, + созданные devpts, будут иметь права 0620 (доступен для + чтения и записи пользователем, доступен для записи + группе). Вместе с вышеуказанной опцией это гарантирует, + что devpts создаст узлы устройств, соответствующие + требованиям grantpt(), а это означает, что + вспомогательный файл Glibc pt_chown (который не + установлен по умолчанию) не требуется. +

+
+
+
+

+ В некоторых хост-системах /dev/shm является символической ссылкой на + каталог /run/shm. /run tmpfs + был смонтирован выше, поэтому сейчас необходимо только + создать каталог с правильными разрешениями. +

+

+ В других хост-системах /dev/shm + является точкой монтирования для tmpfs. В этом случае + монтирование /dev приведет только к созданию /dev/shm как + каталога в среде chroot. В этой ситуации мы должны явно + смонтировать tmpfs: +

+
if [ -h $LFS/dev/shm ]; then
+  install -v -d -m 1777 $LFS$(realpath /dev/shm)
+else
+  mount -vt tmpfs -o nosuid,nodev tmpfs $LFS/dev/shm
+fi
+
+
+
+
+
+

+ 7.4. + Вход в окружение Chroot +

+
+
+
+
+

+ Теперь, когда все пакеты, необходимые для сборки остальных + инструментов установлены в системе, пришло время войти в + окружение chroot и завершить установку временных инструментов. + Эта среда также будет использоваться для установки конечной + системы. От имени пользователя root выполните следующую команду для входа + в chroot, в которой на данный момент нет ничего, кроме + временных инструментов: +

+
chroot "$LFS" /usr/bin/env -i   \
+    HOME=/root                  \
+    TERM="$TERM"                \
+    PS1='(lfs chroot) \u:\w\$ ' \
+    PATH=/usr/bin:/usr/sbin     \
+    MAKEFLAGS="-j$(nproc)"      \
+    TESTSUITEFLAGS="-j$(nproc)" \
+    /bin/bash --login
+

+ Если вы не хотите использовать все доступные логические ядра, + замените параметр $(nproc) количеством логических + ядер, которые вы хотите использовать для сборки пакетов в этой + и последующих главах. На наборы тестов некоторых пакетов (в + частности Autoconf, Libtool и Tar) в + Глава 8 не влияет установка переменной MAKEFLAGS, вместо этого они используют + переменную среды TESTSUITEFLAGS. Мы + также установили её здесь для запуска тестов с поддержкой + нескольких ядер. +

+

+ Параметр -i команды + env, очистит все + переменные в среде chroot. После этого переменные HOME, TERM, + PS1 и PATH будут установлены заново. Конструкция + TERM=$TERM установит + переменную TERM внутри chroot в то же значение, что и вне + chroot. Эта переменная необходима для корректной работы таких + программ как vim + и less. Если + понадобятся другие переменные окружения, такие как CFLAGS или CXXFLAGS, + то это подходящее место для их установки. +

+

+ С этого момента больше нет необходимости использовать + переменную LFS, поскольку вся работа + будет ограничена файловой системой LFS; команда chroot запускает оболочку + Bash с корневым каталогом (/), + установленным в $LFS. +

+

+ Обратите внимание, что каталог /tools/bin не указан в переменной окружения + PATH. Это означает, что + кросс-тулчейн больше не будет использоваться. +

+

+ Также обратите внимание, что в командной строке bash будет указано + I have no name!. Это + нормально, поскольку файл /etc/passwd еще не создан. +

+
+

+ Примечание +

+

+ Важно, чтобы все команды в оставшейся части этой главы и + следующих главах выполнялись из среды chroot. Если вы + покидаете эту среду по какой-либо причине (например, при + перезагрузке), убедитесь, что файловые системы виртуального + ядра смонтированы, как описано в Раздел 7.3.1, + «Монтирование и заполнение /dev» и Раздел 7.3.2, + «Монтирование виртуальных файловых систем ядра», а затем + войдите в среду chroot для продолжения установки. +

+
+
+
+
+
+

+ 7.5. Создание каталогов +

+
+
+
+
+

+ Пришло время создать полную структуру каталогов в файловой + системе LFS. +

+
+

+ Примечание +

+

+ Некоторые из каталогов, упомянутых в этом разделе, возможно, + уже были созданы ранее с помощью явных инструкций или при + установке некоторых пакетов. Они повторяются ниже для полноты + картины. +

+
+

+ Создайте несколько каталогов, которые не входили в ограниченный + набор, используемый в предыдущих главах, выполнив следующую + команду: +

+
mkdir -pv /{boot,home,mnt,opt,srv}
+

+ Создайте необходимые подкаталоги, выполнив следующие команды: +

+
mkdir -pv /etc/{opt,sysconfig}
+mkdir -pv /lib/firmware
+mkdir -pv /media/{floppy,cdrom}
+mkdir -pv /usr/{,local/}{include,src}
+mkdir -pv /usr/local/{bin,lib,sbin}
+mkdir -pv /usr/{,local/}share/{color,dict,doc,info,locale,man}
+mkdir -pv /usr/{,local/}share/{misc,terminfo,zoneinfo}
+mkdir -pv /usr/{,local/}share/man/man{1..8}
+mkdir -pv /var/{cache,local,log,mail,opt,spool}
+mkdir -pv /var/lib/{color,misc,locate}
+
+ln -sfv /run /var/run
+ln -sfv /run/lock /var/lock
+
+install -dv -m 0750 /root
+install -dv -m 1777 /tmp /var/tmp
+

+ По умолчанию каталоги создаются с правами 755, но это + нежелательно делать для всех каталогов. В приведенных выше + командах вносятся два изменения — одно в домашний каталог + пользователя root, а другое в + каталоги для временных файлов. +

+

+ Первое изменение гарантирует, что никто не сможет войти в + каталог /root — точно так же, как + обычный пользователь сделал бы это со своим собственным + домашним каталогом. Второе изменение гарантирует, что любой + пользователь может писать в каталоги /tmp и /var/tmp, но не может удалять из них файлы + другого пользователя. Последнее запрещено так называемым + «sticky bit (липким + битом)», старшим битом (1) в битовой маске 1777 +

+
+

+ 7.5.1. Примечание о соответствии требованиям FHS +

+

+ Это дерево каталогов основано на стандарте иерархии файловой + системы (FHS) (доступен по адресу https://refspecs.linuxfoundation.org/fhs.shtml). + FHS также указывает, что наличие некоторых каталогов + необязательно, например, /usr/local/games и /usr/share/games. В LFS мы создаем только + те каталоги, которые действительно необходимы. Однако, не + стесняйтесь создавать дополнительные каталоги, если хотите. +

+
+

+ Предупреждение +

+

+ FHS не требует наличия каталога /usr/lib64, и редакторы LFS решили его не + использовать. Чтобы инструкции в LFS и BLFS работали + корректно, крайне важно, чтобы этот каталог не существовал. + Время от времени вам следует проверять, что он не + существует, потому что его легко создать непреднамеренно, и + это, вероятно, приведет к поломке вашей системы. +

+
+
+
+
+
+
+

+ 7.6. Создание основных файлов и + символических ссылок +

+
+
+
+
+

+ Исторически сложилось, что Linux хранит список примонтированных + файловых систем в файле /etc/mtab. Современные ядра хранят этот + список внутри себя и предоставляют его пользователю через + файловую систему /proc. Чтобы + удовлетворять требованиям утилит, которые ожидают наличия + /etc/mtab, создайте следующую + символическую ссылку: +

+
ln -sv /proc/self/mounts /etc/mtab
+

+ Создайте файл /etc/hosts, на + который будут ссылаться некоторые наборы тестов, а также один + из файлов конфигурации Perl: +

+
cat > /etc/hosts << EOF
+127.0.0.1  localhost $(hostname)
+::1        localhost
+EOF
+

+ Чтобы пользователь root мог + войти в систему и распознавался системой, в файлах /etc/passwd и /etc/group должны быть соответствующие + записи. +

+

+ Создайте файл /etc/passwd + выполнив следующую команду: +

+
cat > /etc/passwd << "EOF"
+root:x:0:0:root:/root:/bin/bash
+bin:x:1:1:bin:/dev/null:/usr/bin/false
+daemon:x:6:6:Daemon User:/dev/null:/usr/bin/false
+messagebus:x:18:18:D-Bus Message Daemon User:/run/dbus:/usr/bin/false
+uuidd:x:80:80:UUID Generation Daemon User:/dev/null:/usr/bin/false
+nobody:x:65534:65534:Unprivileged User:/dev/null:/usr/bin/false
+EOF
+

+ Пароль пользователя root будет + задан позднее. +

+

+ Создайте файл /etc/group, + выполнив следующую команду: +

+
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:
+cdrom:x:15:
+adm:x:16:
+messagebus:x:18:
+input:x:24:
+mail:x:34:
+kvm:x:61:
+uuidd:x:80:
+wheel:x:97:
+users:x:999:
+nogroup:x:65534:
+EOF
+

+ Созданные группы не являются частью какого-либо стандарта — это + группы, определяемые частично требованиями конфигурации Udev в + главе 9, а частично общими соглашениями, используемыми в ряде + существующих дистрибутивов Linux. Кроме того, некоторые наборы + тестов зависят от конкретных пользователей или групп. + Спецификация LSB (доступна по адресу https://refspecs.linuxfoundation.org/lsb.shtml) + рекомендует, чтобы, помимо группы root с идентификатор (GID) 0 присутствовала + группа bin с GID 1. GID 5 + широко используется для группы tty, число 5 также используется в + /etc/fstab для файловой системы + devpts. Все остальные имена + групп и GID могут свободно выбираться системным + администратором, так как хорошо написанные программы не зависят + от номеров GID, а чаще используют название группы. +

+

+ Идентификатор 65534 используется ядром для NFS и отдельных + пользовательских пространств имен для несопоставленных + пользователей и групп (они существуют на сервере NFS или + родительском пространстве имен пользователя, но «не существует» на + локальном компьютере или в отдельном пространстве имен). Мы + присваиваем nobody и + nogroup для того, чтобы + избежать несопоставленных идентификаторов. Другие дистрибутивы + могут обрабатывать этот идентификатор по-разному, поэтому любая + переносимая программа не должна зависеть от этого присвоения. +

+

+ Для некоторых тестов в + Глава 8 требуется обычный пользователь. Добавим такого + пользователя здесь и удалим эту учетную запись в конце главы. +

+
echo "tester:x:101:101::/home/tester:/bin/bash" >> /etc/passwd
+echo "tester:x:101:" >> /etc/group
+install -o tester -d /home/tester
+

+ Чтобы удалить приглашение «I have no name!», запустите новую + оболочку. Поскольку файлы /etc/passwd и /etc/group были созданы, разрешение имен + пользователей и групп теперь будет работать: +

+
exec /usr/bin/bash --login
+

+ Программы login, + agetty, + init (и другие) + используют ряд журналов для записи такой информации, как кто и + когда входил в систему. Однако эти программы не будут + записывать данные в журналы, если они еще не существуют. + Инициализируйте журналы и предоставьте им соответствующие + разрешения: +

+
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
+

+ В файл /var/log/wtmp записываются + все входы и выходы из системы. В файл /var/log/lastlog записывается время + последнего входа каждого пользователя в систему. В файл + /var/log/faillog записываются + неудачные попытки входа в систему. В файл /var/log/btmp также записываются неудачные + попытки входа в систему. +

+
+

+ Примечание +

+

+ В файл /run/utmp записываются + пользователи, которые в данный момент вошли в систему. Он + создаётся динамически, в процессе выполнения сценариев + загрузки. +

+
+
+

+ Примечание +

+

+ Файлы utmp, wtmp, btmp и + lastlog используют для + временных меток 32-разрядные целые числа, значения счетчика + достигнет максимума (2 147 483 647) 19 января 2038 года + ("проблема 2038 года"). Многие пакеты перестали их + использовать, другие же, собираются прекратить их + использование. Вероятно, лучше считать их устаревшими. +

+
+
+
+
+
+

+ 7.7. + Gettext-0.22.4 +

+
+
+
+
+
+

+ Пакет Gettext содержит утилиты для интернационализации и + локализации. Они позволяют компилировать программы с + поддержкой NLS (Native Language Support), позволяя им + выводить сообщения на родном языке пользователя. +

+
+
+
+ Приблизительное время + сборки: 1.1 SBU +
+
+ Требуемое дисковое + пространство: 306 + MB +
+
+
+
+
+

+ 7.7.1. Установка пакета Gettext +

+

+ Для временного набора инструментов нам нужно установить + только три программы из пакета Gettext. +

+

+ Подготовьте Gettext к компиляции: +

+
./configure --disable-shared
+
+

+ Значение параметров настройки: +

+
+
+ --disable-shared +
+
+

+ В настоящее время нам не нужно устанавливать какие-либо + общие библиотеки Gettext, поэтому нет необходимости их + собирать. +

+
+
+
+

+ Скомпилируйте пакет: +

+
make
+

+ Установите программы msgfmt, msgmerge, и xgettext programs: +

+
cp -v gettext-tools/src/{msgfmt,msgmerge,xgettext} /usr/bin
+
+
+

+ Подробная информация об этом пакете находится в Раздел 8.32.2, + «Содержимое пакета Gettext.» +

+
+
+
+
+
+

+ 7.8. + Bison-3.8.2 +

+
+
+
+
+
+

+ Пакет Bison содержит генератор синтаксического анализа. +

+
+
+
+ Приблизительное время + сборки: 0.2 SBU +
+
+ Требуемое дисковое + пространство: 57 MB +
+
+
+
+
+

+ 7.8.1. Установка пакета Bison +

+

+ Подготовьте Bison к компиляции: +

+
./configure --prefix=/usr \
+            --docdir=/usr/share/doc/bison-3.8.2
+
+

+ Значение нового параметра конфигурации: +

+
+
+ --docdir=/usr/share/doc/bison-3.8.2 +
+
+

+ Этот параметр указывает системе сборки установить + документацию к bison в каталог с версией пакета. +

+
+
+
+

+ Скомпилируйте пакет: +

+
make
+

+ Установите пакет: +

+
make install
+
+
+

+ Подробная информация об этом пакете находится в Раздел 8.33.2, + «Содержимое пакета Bison.» +

+
+
+
+
+
+

+ 7.9. + Perl-5.38.2 +

+
+
+
+
+
+

+ Пакет Perl содержит практический язык для извлечения данных и + составления отчётов (Practical Extraction and Report + Language). +

+
+
+
+ Приблизительное время + сборки: 0.6 SBU +
+
+ Требуемое дисковое + пространство: 280 + MB +
+
+
+
+
+

+ 7.9.1. Установка пакета Perl +

+

+ Подготовьте Perl к компиляции: +

+
sh Configure -des                                        \
+             -Dprefix=/usr                               \
+             -Dvendorprefix=/usr                         \
+             -Duseshrplib                                \
+             -Dprivlib=/usr/lib/perl5/5.38/core_perl     \
+             -Darchlib=/usr/lib/perl5/5.38/core_perl     \
+             -Dsitelib=/usr/lib/perl5/5.38/site_perl     \
+             -Dsitearch=/usr/lib/perl5/5.38/site_perl    \
+             -Dvendorlib=/usr/lib/perl5/5.38/vendor_perl \
+             -Dvendorarch=/usr/lib/perl5/5.38/vendor_perl
+
+

+ Значение новых опций Configure: +

+
+
+ -des +
+
+

+ Это комбинация из трех параметров: -d использует + значения по умолчанию для всех элементов; -e + обеспечивает выполнение всех задач; -s отключает + несущественные выходные данные. +

+
+
+ -Dvendorprefix=/usr +
+
+

+ Параметр гарантирует, что perl знает, как + указать пакетам, где они должны устанавливать свои + модули Perl. +

+
+
+ -Duseshrplib +
+
+

+ Собрать библиотеку libperl, необходимую некоторым + модулям Perl, как общую библиотеку вместо статической. +

+
+
+ -Dprivlib,-Darchlib,-Dsitelib,... +
+
+

+ Эти настройки определяют, где Perl ищет установленные + модули. Редакторы LFS решили поместить их в структуру + каталогов, основанную на MAJOR.MINOR версии Perl + (5.38), что позволяет обновлять Perl до более новых + уровней исправлений (уровень исправления - это + последняя разделенная точками часть в строке полной + версии, например 5.38.2) без необходимости + переустанавливать все модули. +

+
+
+
+

+ Скомпилируйте пакет: +

+
make
+

+ Установите пакет: +

+
make install
+
+
+

+ Подробная информация об этом пакете находится в Раздел 8.42.2, + «Содержимое пакета Perl.» +

+
+
+
+
+
+

+ 7.10. + Python-3.12.2 +

+
+
+
+
+
+

+ Пакет Python 3 содержит среду разработчика Python. Его можно + использовать для объектно-ориентированного программирования, + написания скриптов, прототипирования больших программ и + разработка целых приложений. Python — это интерпретируемый + язык программирования. +

+
+
+
+ Приблизительное время + сборки: 0.5 SBU +
+
+ Требуемое дисковое + пространство: 598 + MB +
+
+
+
+
+

+ 7.10.1. Установка пакета Python +

+
+

+ Примечание +

+

+ Существует два пакета, имена которых начинаются с префикса + «python». Сейчас необходимо + распаковать файл Python-3.12.2.tar.xz (обратите внимание + на заглавную первую букву). +

+
+

+ Подготовка Python к компиляции: +

+
./configure --prefix=/usr   \
+            --enable-shared \
+            --without-ensurepip
+
+

+ Значение параметров настройки: +

+
+
+ --enable-shared +
+
+

+ Этот параметр отключает установку статичных библиотек. +

+
+
+ --without-ensurepip +
+
+

+ Этот параметр отключает установщик пакетов Python, + который на данном этапе не нужен. +

+
+
+
+

+ Скомпилируйте пакет: +

+
make
+
+

+ Примечание +

+

+ Некоторые модули Python 3 не могут быть собраны сейчас, + потому что зависимости еще не установлены. Для модуля + ssl выводится сообщение + Python требует OpenSSL 1.1.1 + или новее. Сообщение следует проигнорировать. Просто + убедитесь, что команда make верхнего уровня не + завершилась ошибкой. Дополнительные модули сейчас не нужны, + и они будут собраны в + Глава 8. +

+
+

+ Установите пакет: +

+
make install
+
+
+

+ Подробная информация об этом пакете находится в Раздел 8.51.2, + «Содержимое пакета Python 3.» +

+
+
+
+
+
+

+ 7.11. + Texinfo-7.1 +

+
+
+
+
+
+

+ Пакет Texinfo содержит программы для чтения, записи и + преобразования информационных страниц. +

+
+
+
+ Приблизительное время + сборки: 0.2 SBU +
+
+ Требуемое дисковое + пространство: 130 + MB +
+
+
+
+
+

+ 7.11.1. Установка пакета Texinfo +

+

+ Подготовьте Texinfo к компиляции: +

+
./configure --prefix=/usr
+

+ Скомпилируйте пакет: +

+
make
+

+ Установите пакет: +

+
make install
+
+
+

+ Подробная информация об этом пакете находится в Раздел 8.71.2, + «Содержимое пакета Texinfo.» +

+
+
+
+
+
+

+ 7.12. Util-linux-2.39.3 +

+
+
+
+
+
+

+ Пакет Util-linux содержит различные служебные программы. + Среди них утилиты для работы с файловыми системами, + консолями, разделами и сообщениями. +

+
+
+
+ Приблизительное время + сборки: 0.2 SBU +
+
+ Требуемое дисковое + пространство: 172 + MB +
+
+
+
+
+

+ 7.12.1. Установка пакета Util-linux +

+

+ FHS рекомендует использовать каталог /var/lib/hwclock вместо каталога + /etc в качестве местоположения + для файла adjtime. Создайте + этот каталог: +

+
mkdir -pv /var/lib/hwclock
+

+ Подготовьте Util-linux к компиляции: +

+
./configure --libdir=/usr/lib    \
+            --runstatedir=/run   \
+            --disable-chfn-chsh  \
+            --disable-login      \
+            --disable-nologin    \
+            --disable-su         \
+            --disable-setpriv    \
+            --disable-runuser    \
+            --disable-pylibmount \
+            --disable-static     \
+            --without-python     \
+            ADJTIME_PATH=/var/lib/hwclock/adjtime \
+            --docdir=/usr/share/doc/util-linux-2.39.3
+
+

+ Значение параметров настройки: +

+
+
+ ADJTIME_PATH=/var/lib/hwclock/adjtime +
+
+

+ Этот параметр устанавливает расположение файла для + записи информации об аппаратных часах в соответствии с + FHS. Он не обязателен для временного инструментария, но + предотвращает создание файла в другом месте, где файл + не будет перезаписан или удален при финальной сборке + пакета util-linux. +

+
+
+ --libdir=/usr/lib +
+
+

+ Этот параметр гарантирует, что символические ссылки + .so, будут указывать на + файл общей библиотеки в том же каталоге (/usr/lib). +

+
+
+ --disable-* +
+
+

+ Этот параметр предотвращают появление предупреждений о + сборке компонентов, для которых требуются пакеты, + отсутствующие или еще не установленные в LFS. +

+
+
+ --without-python +
+
+

+ Этот параметр отключает использование Python. Это позволяет избежать + попыток создания ненужных привязок. +

+
+
+ --runstatedir=/run +
+
+

+ Этот параметр устанавливает расположение сокета, + используемого uuidd и libuuid. +

+
+
+
+

+ Скомпилируйте пакет: +

+
make
+

+ Установите пакет: +

+
make install
+
+
+

+ Подробная информация об этом пакете находится в Раздел 8.78.2, + «Содержимое пакета Util-linux.» +

+
+
+
+
+
+

+ 7.13. + Очистка и сохранение временной системы +

+
+
+
+
+
+

+ 7.13.1. Очистка +

+

+ Во-первых, удалите установленную документацию, чтобы + предотвратить ее попадание в конечную систему и сэкономить + около 35 МБ места: +

+
rm -rf /usr/share/{info,man,doc}/*
+

+ Во-вторых, в современных системах Linux файлы .la библиотеки + libtool полезны только для libltdl. Никакие библиотеки в LFS + не загружаются с помощью libltdl. Известно, что некоторые + файлы .la могут привести к сбою во время сборки пакетов BLFS. + Удалите эти файлы сейчас: +

+
find /usr/{lib,libexec} -name \*.la -delete
+

+ Сейчас размер системы составляет около 3 ГБ, однако каталог + /tools больше не понадобится. Удалите его, чтобы освободить + около 1 ГБ дискового пространства: +

+
rm -rf /tools
+
+
+

+ 7.13.2. Резервное копирование +

+

+ На данный момент основные программы и библиотеки собраны, и + ваша система LFS находится в хорошем состоянии. Можно создать + резервную копию вашей системы для последующего повторного + использования. В случае фатальных сбоев в следующих главах + часто оказывается, что удалить все и начать заново (более + осторожно) — лучший вариант восстановления. К сожалению, все + временные файлы также будут удалены. Чтобы не тратить лишнее + время на повторную сборку того, что было успешно собрано, + полезно создать резервную копию текущей системы LFS. +

+
+

+ Примечание +

+

+ Все остальные шаги в этом разделе являются необязательными. + Тем не менее, как только вы начнете устанавливать пакеты в + + Глава 8, временные файлы будут перезаписаны. + Поэтому рекомендуется создание резервной копии текущей + системы, как описано ниже. +

+
+

+ Следующие шаги выполняются вне среды chroot. Это означает, + что прежде чем продолжить вы должны покинуть среду chroot. + Причиной этого является то, что необходимо получить доступ к + расположению файловой системы за пределами среды chroot для + хранения/чтения архива резервных копий, который не должен + размещаться в иерархии $LFS. +

+

+ Если вы решили сделать резервную копию, покиньте среду + chroot: +

+
exit
+
+

+ Важно +

+

+ Все следующие инструкции выполняются пользователем + root в вашей хост-системе. + Будьте особенно внимательны к командам, которые вы + собираетесь запускать, поскольку ошибки, допущенные здесь, + могут изменить вашу хост-систему. Имейте в виду, что + переменная окружения LFS по + умолчанию установлена для пользователя lfs, но может не быть установлена для + root. +

+

+ Всякий раз, когда команды должны выполняться от + root, убедитесь, что вы + установили переменную LFS. +

+

+ Это обсуждалось в Раздел 2.6, + «Установка переменной $LFS». +

+
+

+ Перед созданием резервной копии размонтируйте виртуальные + файловые системы: +

+
mountpoint -q $LFS/dev/shm && umount $LFS/dev/shm
+umount $LFS/dev/pts
+umount $LFS/{sys,proc,run,dev}
+

+ Убедитесь, что у вас есть как минимум 1 ГБ свободного места + на диске (исходные tar-архивы будут включены в архив + резервных копий) в файловой системе, содержащей каталог, в + котором вы создаете архив резервных копий. +

+

+ Обратите внимание, что в приведенных ниже инструкциях указан + домашний каталог пользователя root хост-системы, который обычно + находится в корневой файловой системе. Замените $HOME каталогом на ваш выбор, если вы не + хотите, чтобы резервная копия хранилась в домашнем каталоге + пользователя root. +

+

+ Создайте архив резервной копии, выполнив следующую команду: +

+
+

+ Примечание +

+

+ Поскольку архив резервной копии сжимается, процесс занимает + довольно много времени (более 10 минут) даже на достаточно + быстрой системе. +

+
+
cd $LFS
+tar -cJpf $HOME/lfs-temp-tools-12.1.tar.xz .
+
+

+ Примечание +

+

+ Если вы переходите к главе 8, не забудьте повторно войти в + среду chroot, как описано в разделе «Важно» ниже. +

+
+
+
+

+ 7.13.3. Восстановление +

+

+ В случае, если были допущены какие-либо ошибки и вам нужно + начать все сначала, вы можете использовать эту резервную + копию для восстановления системы и сэкономить время на + восстановление. Поскольку исходники находятся в папке + $LFS, они также включены в + архив резервной копии, поэтому их не нужно загружать + повторно. Убедившись, что переменная $LFS настроена правильно, вы можете + восстановить резервную копию, выполнив следующие команды: +

+
+

+ Предупреждение +

+

+ Следующие команды чрезвычайно опасны. Если вы запустите + команду rm -rf + ./* от имени пользователя root и не перейдете в каталог $LFS или + переменная окружения LFS не + будет установлена для пользователя root, это уничтожит всю вашу + хост-систему. ВЫ ПРЕДУПРЕЖДЕНЫ. +

+
+
cd $LFS
+rm -rf ./*
+tar -xpf $HOME/lfs-temp-tools-12.1.tar.xz
+

+ Еще раз проверьте, правильно ли настроено окружение, и + продолжайте сборку остальной части системы. +

+
+

+ Важно +

+

+ Если вы покинули среду chroot, чтобы создать резервную + копию или перезапустить сборку с помощью восстановления, не + забудьте проверить, что виртуальные файловые системы все + еще смонтированы (findmnt | + grep $LFS). Если они не смонтированы, + перемонтируйте их сейчас, как описано в Раздел 7.3, + «Подготовка виртуальных файловых систем ядра», и + повторно войдите в среду chroot (см. Раздел 7.4, «Вход в + окружение Chroot»), прежде чем продолжить. +

+
+
+
+
+
+
+
+
+

+ Часть IV. Сборка + системы LFS +

+
+
+
+
+
+
+
+

+ Глава 8. Установка базового + системного программного обеспечения +

+
+
+
+
+
+
+
+

+ 8.1. Введение +

+
+
+
+
+

+ В этой главе мы приступаем к сборке конечной системы LFS. +

+

+ Установка программного обеспечения проста. Хотя во многих + случаях инструкции по установке можно было бы сделать короче и + универсальнее, мы решили предоставить полные инструкции для + каждого пакета, чтобы свести к минимуму вероятность ошибок. + Ключом к пониманию того, что заставляет систему Linux работать, + является знание того, для чего используется каждый пакет и + зачем он вам (или системе) может понадобиться. +

+

+ Мы не рекомендуем использовать оптимизации. С ними программа + может работать немного быстрее, но также они могут вызвать + сложности при компиляции и проблемы при запуске программы. Если + пакет не компилируется при использовании оптимизации, + попробуйте скомпилировать его без оптимизации и посмотрите, + решает ли это проблему. Даже если пакет компилируется при + использовании оптимизации, существует риск, что он может быть + скомпилирован неправильно из-за сложных взаимодействий между + кодом и инструментами сборки. Также обратите внимание, что + параметры -march и -mtune, не тестировались со значениями + отличными от указанных в книге. Это может вызвать проблемы с + пакетами набора инструментов (Binutils, GCC и Glibc). Небольшие + потенциальные плюсы, достигаемые за счет оптимизации, часто + перевешиваются рисками. Тем кто собирает LFS впервые + рекомендуется делать это без пользовательских оптимизаций. +

+

+ С другой стороны, мы сохраняем оптимизацию включенной в + конфигурации пакетов по умолчанию. Кроме того, иногда мы явно + включаем оптимизированную конфигурацию, предоставляемую + пакетом, но не включенную по умолчанию. Сопровождающие пакета + уже протестировали эти конфигурации и считают их безопасными, + поэтому маловероятно, что они сломают сборку. Как правило, + конфигурация по умолчанию уже включает параметры -O2 или -O3, + поэтому результирующая система по-прежнему будет работать очень + быстро без какой-либо пользовательской оптимизации и в то же + время будет стабильной. +

+

+ Перед инструкцией по установке на каждой странице представлена + информация о пакете, включая краткое описание того, что он + содержит, примерное время, необходимое для сборки, и сколько + места на диске требуется в процессе сборки. После инструкции по + установке идет список программ и библиотек (вместе с кратким + описанием), которые устанавливает пакет. +

+
+

+ Примечание +

+

+ Для всех пакетов в + Глава 8 значения SBU и требуемое дисковое + пространство указано с учетом тестов. Значения SBU были + рассчитаны с использованием четырех ядер ЦП (-j4) для всех + операций, если не указано иное. +

+
+
+

+ 8.1.1. О библиотеках +

+

+ Как правило, редакторы LFS не рекомендуют собирать и + устанавливать статические библиотеки. Большинство статических + библиотек устарели в современной системе Linux. Кроме того, + линковка статической библиотеки с программой может быть + вредна. Если для устранения проблемы безопасности требуется + обновление библиотеки, все программы, использующие + статическую библиотеку, необходимо будет повторно + перелинковать с новой библиотекой. Поскольку использование + статических библиотек не всегда очевидно, соответствующие + программы (и процедуры, необходимые для линковки) могут быть + даже неизвестны. +

+

+ В инструкциях этой главы мы удаляем или отключаем установку + большинства статических библиотек. Обычно это делается путем + передачи параметра --disable-static при выполнении configure. Иногда + необходимо использовать альтернативные методы. В некоторых + случаях, в частности в пакетах Glibc и GCC, использование + статических библиотек остается важным элементом процесса + сборки пакетов. +

+

+ Более подробное обсуждение библиотек смотрите + Библиотеки: статические или общие? в книге BLFS. +

+
+
+
+
+
+

+ 8.2. + Управление пакетами +

+
+
+
+
+

+ Управление пакетами — часто cпрашиваемое дополнение к книге + LFS. Менеджер пакетов позволяет отслеживать установку файлов, + упрощая удаление и обновление пакетов. Хороший менеджер пакетов + также будет обрабатывать конфигурационные файлы, чтобы + сохранить пользовательские настройки при переустановке или + обновлении пакета. Прежде чем вы начнете задаваться вопросом, + НЕТ—в этом разделе не будет ни говориться, ни рекомендоваться + какой-либо конкретный менеджер пакетов. Что он действительно + предоставляет, так это обзор наиболее популярных методов и + того, как они работают. Идеальным менеджером пакетов для вас + может быть один из этих методов или комбинация двух и более + методов. В этом разделе кратко упоминаются проблемы, которые + могут возникнуть при обновлении пакетов. +

+

+ Некоторые причины, по которым менеджер пакетов не упоминается в + LFS или BLFS представлены ниже: +

+
+
    +
  • +

    + Рассмотрение управления пакетами отвлекает внимание от + целей этих книг—обучения тому, как строится система + Linux. +

    +
  • +
  • +

    + Существует множество решений для управления пакетами, + каждое из которых имеет свои сильные и слабые стороны. + Трудно найти такое, которое удовлетворит всех. +

    +
  • +
+
+

+ Есть несколько советов, написанных на тему управления пакетами. + Посетите проект Советы + возможно вы найдете решение, которое соответствует вашим + потребностям. +

+
+

+ 8.2.1. Проблемы с обновлением +

+

+ Менеджер пакетов упрощает обновление до более новых версий + после их выпуска. Как правило, инструкции в книгах LFS и BLFS + можно использовать для обновления до более новых версий. Вот + некоторые моменты, о которых следует помнить при обновлении + пакетов, особенно в работающей системе. +

+
+
    +
  • +

    + Если нужно обновить ядро Linux (например, с 5.10.17 до + 5.10.18 или 5.11.1), дополнительно пересобирать ничего + не нужно. Система продолжит нормально работать + благодаря четко определенной границе между ядром и + пользовательским пространством. В частности, заголовки + Linux API не нужно обновлять вместе с ядром. Вам просто + нужно перезагрузить систему, чтобы использовать + обновленное ядро. +

    +
  • +
  • +

    + Если необходимо обновить Glibc до более новой версии + (например, с Glibc-2.36 до Glibc-2.39) необходимо + выполнить некоторые дополнительные действия, чтобы + избежать поломки системы. Подробности читайте в + Раздел 8.5, «Glibc-2.39». +

    +
  • +
  • +

    + Если пакет, содержащий общую библиотеку, обновляется и + имя библиотеки изменилось, то любые пакеты, динамически + связанные с библиотекой, необходимо перекомпилировать, + чтобы связать с более новой библиотекой. (Обратите + внимание, что между версией пакета и именем библиотеки + нет никакой связи.) Например, рассмотрим пакет + foo-1.2.3, который устанавливает общую библиотеку с + именем libfoo.so.1. + Предположим, вы обновили пакет до более новой версии + foo-1.2.4, которая устанавливает общую библиотеку с + именем libfoo.so.2, все + пакеты, которые динамически связаны с libfoo.so.1, должны быть + перекомпилированы для связи с libfoo.so.2, чтобы использовать новую + версию библиотеки. Вы не должны удалять старые + библиотеки, пока все зависимые пакеты не будут + перекомпилированы. +

    +
  • +
  • +

    + Если пакет (прямо или косвенно) связан как со старым, + так и с новым именем общей библиотеки (например, пакет + ссылается как на libfoo.so.2, так и на libbar.so.1, в то время как последний + ссылается на libfoo.so.3), пакет может работать + неправильно, поскольку разные версии общей библиотеки + содержат несовместимые определения для некоторых имен + символов. Это может быть вызвано перекомпиляцией + некоторых, но не всех, пакетов, связанных со старой + общей библиотекой, после обновления пакета, + предоставляющего общую библиотеку. Чтобы избежать этой + проблемы, пользователям необходимо как можно скорее + пересобрать каждый пакет, связанный с общей + библиотекой, с обновленной версией (например, с + libfoo.so.2 на libfoo.so.3). +

    +
  • +
  • +

    + Если пакет, содержащий общую библиотеку, обновляется, а + имя библиотеки не меняется, но уменьшается номер версии + файла + библиотеки (например, библиотека по-прежнему называется + libfoo.so.1, но имя файла + библиотеки изменилось с libfoo.so.1.25 на libfoo.so.1.24), следует удалить файл + библиотеки ранее установленной версии (в данном случае + libfoo.so.1.25). В + противном случае, команда ldconfig (запущенная + самостоятельно с помощью командной строки или при + установке какого-либо пакета) приведёт к сбросу + символической ссылки libfoo.so.1, которая будет указывать + на старый файл библиотеки, потому что кажется, что она + имеет «более + новую» версию, поскольку её номер версии + больше. Такая ситуация может произойти, если вам нужно + понизить версию пакета или авторы изменили схему + управления версиями файлов библиотеки. +

    +
  • +
  • +

    + Если пакет, содержащий общую библиотеку, обновляется, а + имя библиотеки не меняется, но устраняется серьезная + проблема (особенно уязвимость в системе безопасности), + необходимо перезапустить все работающие программы, + связанные с общей библиотекой. Следующая команда, + запущенная от имени пользователя root после завершения обновления, + выведет список программ, которые использует старые + версии этих библиотек (замените libfoo именем + библиотеки): +

    +
    grep -l 'libfoo.*deleted' /proc/*/maps | tr -cd 0-9\\n | xargs -r ps u
    +

    + Если для доступа к системе используется OpenSSH и он связан с обновленной + библиотекой, вам необходимо перезапустить службу + sshd, + затем выйти из системы, снова войти в систему и + повторно выполнить предыдущую команду, чтобы убедиться, + что удаленные библиотеки более не используются. +

    +
  • +
  • +

    + Если исполняемая программа или библиотека перезаписаны, + процессы, использующие код или данные из них, могут + завершиться сбоем. Правильный способ обновить программу + или общую библиотеку, не вызывая сбоя процесса, - это + сначала удалить его, а затем установить новую версию. + Команда install, + предоставляемая Coreutils, уже реализовала это, и + большинство пакетов используют ее для установки + двоичных файлов и библиотек. Это означает, что большую + часть времени вас не будет беспокоить эта проблема. + Однако процесс установки некоторых пакетов (в + частности, SpiderMonkey в BLFS) просто перезаписывает + файл, если он существует, и вызывает сбой. Поэтому + безопаснее сохранить свою работу и закрыть ненужные + запущенные программы перед обновлением пакета. +

    +
  • +
+
+
+
+

+ 8.2.2. Методы управления пакетами +

+

+ Ниже приведены некоторые распространенные методы управления + пакетами. Прежде чем принять решение о менеджере пакетов, + проведите исследование различных методов, особенно недостатки + каждой конкретной схемы. +

+
+
+
+
+

+ 8.2.2.1. Всё у + меня в голове! +

+
+
+
+

+ Да, это метод управления пакетами. Некоторым людям не нужен + менеджер пакетов, потому что они хорошо знакомы с пакетами + и знают, какие файлы устанавливаются каждым пакетом. + Некоторым пользователям также не требуется какое-либо + управление пакетами, поскольку они планируют пересобирать + всю систему при каждом изменении пакета. +

+
+
+
+
+
+

+ 8.2.2.2. Установка + в отдельные каталоги +

+
+
+
+

+ Это упрощенный метод управления пакетами, для которого не + требуется специальная программа управления. Каждый пакет + устанавливается в отдельный каталог. Например, пакет + foo-1.1 устанавливается в /opt/foo-1.1, а символическая ссылка + создается из /opt/foo в + /opt/foo-1.1. Когда + появляется новая версия foo-1.2, она устанавливается в + /opt/foo-1.2 и предыдущая + символическая ссылка заменяется символической ссылкой на + новую версию. +

+

+ Переменные окружения, такие как PATH, MANPATH, + INFOPATH, PKG_CONFIG_PATH, CPPFLAGS, LDFLAGS + и файл конфигурации /etc/ld.so.conf, возможно, потребуется + расширить, включив соответствующие подкаталоги в + /opt/foo-x.y. +

+

+ Этот подход используется в книге BLFS для установки + некоторых очень больших пакетов, чтобы упростить их + обновление. Если вы устанавливаете много таких пакетов, эта + схема становится неуправляемой. Некоторые пакеты (например, + заголовки Linux API и Glibc) могут плохо работать с такой + структурой. Никогда не + используйте её в масштабах всей системы. +

+
+
+
+
+
+

+ 8.2.2.3. + Управление пакетами с использованием символических + ссылок +

+
+
+
+

+ Это разновидность предыдущей техники.Каждый пакет + устанавливается аналогично, но вместо создания + символической ссылки на общее имя пакета, каждому файлу + создаётся символическая ссылка в иерархии каталогов + /usr. Это исключает + необходимость модификации значений переменных окружения. + Хотя такие ссылки могут быть созданы пользователем, многие + менеджеры пакетов используют именной такой подход. Наиболее + популярные из них - Stow, Epkg, Graft и Depot. +

+

+ Установку нужно сымитировать, чтобы пакет думал, что он + установлен в /usr, хотя на + самом деле он установлен в иерархии /usr/pkg. Установка таким способом обычно + является нетривиальной задачей. Например, предположим, что + вы устанавливаете пакет libfoo-1.1. Следующие инструкции + могут привести к неправильной установке пакета: +

+
./configure --prefix=/usr/pkg/libfoo/1.1
+make
+make install
+

+ Установка будет выполнена, но зависимые пакеты не смогут + ссылаться на libfoo. Если вы скомпилируете пакет, который + ссылается на libfoo, вы заметите, что он связан с + /usr/pkg/libfoo/1.1/lib/libfoo.so.1 + вместо /usr/lib/libfoo.so.1, + как вы ожидаете. Правильный подход заключается в + использовании переменной DESTDIR + для управления установкой. Этот подход работает следующим + образом: +

+
./configure --prefix=/usr
+make
+make DESTDIR=/usr/pkg/libfoo/1.1 install
+

+ Большинство пакетов поддерживают этот подход, но есть и + такие, которые этого не делают. Для несовместимых пакетов + вам может потребоваться либо установить пакет вручную, либо + вы можете установить проблемные пакеты в /opt. +

+
+
+
+
+
+

+ 8.2.2.4. На основе + временной метки +

+
+
+
+

+ В этом методе файлу присваивается временная метка перед + установкой пакета. После установки простое использование + команды find + с соответствующими параметрами может создать журнал всех + файлов, установленных после создания файла с временной + метки. Менеджером пакетов, использующим этот подход, + является install-log. +

+

+ Хотя преимущество этой схемы в том, что она проста, у нее + есть два недостатка. Если во время установки, файлы + устанавливаются с отметкой времени, отличной от текущего + времени, эти файлы не будут отслеживаться менеджером + пакетов. Кроме того, эта схема может использоваться только + при установке пакетов по одному. Журналы ненадежны, если + два пакета устанавливаются одновременно на двух разных + консолях. +

+
+
+
+
+
+

+ 8.2.2.5. + Отслеживание сценариев установки +

+
+
+
+

+ При таком подходе, записываются команды, выполняемые + сценариями установки. Есть два метода, которые можно + использовать: +

+

+ Переменная среды LD_PRELOAD + может быть установлена так, чтобы она указывала на + библиотеку, которую нужно предварительно загрузить перед + установкой. Во время установки эта библиотека отслеживает + устанавливаемые пакеты, присоединяясь к различным + исполняемым файлам, таким как cp, install, mv, и отслеживая + системные вызовы, изменяющие файловую систему. Чтобы этот + подход работал, все исполняемые файлы должны быть + динамически связаны без битов suid или sgid. + Предварительная загрузка библиотеки может вызвать некоторые + нежелательные побочные эффекты во время установки. Поэтому + рекомендуется выполнить некоторые тесты, чтобы убедиться, + что менеджер пакетов ничего не сломает и что он + регистрирует все соответствующие файлы. +

+

+ Другой метод заключается в использовании strace, который + регистрирует все системные вызовы, сделанные во время + выполнения сценариев установки. +

+
+
+
+
+
+

+ 8.2.2.6. Создание + архивов пакетов +

+
+
+
+

+ В этой схеме установка пакета имитируется в отдельном + дереве, как описано ранее в разделе управление пакетами с + использованием символических ссылок. После установки из + установленных файлов создается архив пакета. Затем этот + архив используется для установки пакета на локальный + компьютер или даже на другие компьютеры. +

+

+ Этот подход используется большинством менеджеров пакетов, + имеющихся в коммерческих дистрибутивах. Примерами + менеджеров пакетов, которые следуют этому подходу, являются + RPM (который, кстати, требуется согласно спецификации + Linux + Standard Base Specification), pkg-utils, apt Debian и + система Portage Gentoo. Описание того, как использовать + этот стиль управления пакетами для систем LFS, находится по + адресу + https://mirror.linuxfromscratch.ru/hints/downloads/files/fakeroot.txt. +

+

+ Создание файлов пакетов, содержащих информацию о + зависимостях, является сложной задачей и выходит за рамки + LFS. +

+

+ Slackware использует систему на основе tar для архивов пакетов. + Эта система намеренно не обрабатывает зависимости пакетов, + как это делают более сложные менеджеры пакетов. Подробнее + об управлении пакетами Slackware см. https://www.slackbook.org/html/package-management.html. +

+
+
+
+
+
+

+ 8.2.2.7. + Пользовательское управление пакетами +

+
+
+
+

+ Эта схема, уникальная для LFS, была разработана Маттиасом + Бенкманом и доступна в проекте + Hints. В этой схеме каждый пакет устанавливается + отдельным пользователем в стандартные папки. Файлы, + принадлежащие пакету, легко идентифицируются путем проверки + идентификатора пользователя. Особенности и недостатки этого + подхода слишком сложны, чтобы описывать их в этом разделе. + Для получения более подробной информации, пожалуйста, + ознакомьтесь с советами по адресу + https://mirror.linuxfromscratch.ru/hints/downloads/files/more_control_and_pkg_man.txt. +

+
+
+
+

+ 8.2.3. Развертывание LFS на нескольких системах +

+

+ Одним из преимуществ системы LFS является отсутствие файлов, + зависящих от положения файлов на диске. Клонировать сборку + LFS на другой компьютер с той же архитектурой, что и у + базовой системы, так же просто, как использовать tar для архивации раздела + LFS, содержащем корневой каталог (около 900 МБ в несжатом + виде для базовой сборки LFS), скопировать этот файл по сети + или с помощью CD / USB носителя в новую систему и распаковать + его. После этого необходимо изменить несколько + конфигурационных файлов. Файлы, которые, возможно, + потребуется изменить представлены в списке ниже: /etc/hosts, /etc/fstab, /etc/passwd, /etc/group, /etc/shadow, + /etc/ld.so.conf, /etc/sysconfig/rc.site, /etc/sysconfig/network, и /etc/sysconfig/ifconfig.eth0. +

+

+ Возможно, потребуется собрать собственное ядро для новой + системы в зависимости от различий в системном оборудовании и + исходной конфигурации ядра. +

+
+

+ Примечание +

+

+ Поступали некоторые сообщения о проблемах при копировании + между похожими, но не идентичными архитектурами. Например, + набор инструкций для Intel не идентичен набору инструкций + для процессора AMD, и более поздние версии некоторых + процессоров могут содержать инструкции, недоступные в более + ранних версиях. +

+
+

+ Наконец, новую систему необходимо сделать загрузочной так, + как это описано в Раздел 10.4, + «Использование GRUB для настройки процесса загрузки». +

+
+
+
+
+
+

+ 8.3. Man-pages-6.06 +

+
+
+
+
+
+

+ Пакет Man-pages содержит более 2400 справочных руководств. +

+
+
+
+ Приблизительное время + сборки: менее 0.1 + SBU +
+
+ Требуемое дисковое + пространство: 33 MB +
+
+
+
+
+

+ 8.3.1. Установка пакета Man-pages +

+

+ Удалите две справочные страницы для функций хэширования + паролей. Libxcrypt + предоставит улучшенную версию этих справочных страниц: +

+
rm -v man3/crypt*
+

+ Установите пакет Man-pages выполнив команду: +

+
make prefix=/usr install
+
+
+

+ 8.3.2. + Содержимое пакета Man-pages +

+
+
+
+ Установленные файлы: + различные справочные + страницы +
+
+
+
+

+ Краткое описание +

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

+ man + pages +

+
+

+ Описывают функции языка программирования C, важные + файлы устройств и важные файлы конфигурации. +

+
+
+
+
+
+
+
+

+ 8.4. Iana-Etc-20240125 +

+
+
+
+
+
+

+ Пакет Iana-Etc предоставляет данные для сетевых служб и + протоколов. +

+
+
+
+ Приблизительное время + сборки: менее 0.1 + SBU +
+
+ Требуемое дисковое + пространство: 4.8 + MB +
+
+
+
+
+

+ 8.4.1. Установка пакета Iana-Etc +

+

+ Для этого пакета необходимо лишь скопировать нужные файлы: +

+
cp services protocols /etc
+
+
+

+ 8.4.2. + Содержимое пакета Iana-Etc +

+
+
+
+ Установленные файлы: + /etc/protocols и + /etc/services +
+
+
+
+

+ Краткое описание +

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

+ /etc/protocols +

+
+

+ Описывает различные интернет-протоколы DARPA, + которые доступны из подсистемы TCP/IP +

+
+

+ /etc/services +

+
+

+ Обеспечивает сопоставление понятных текстовых имен + для интернет-сервисов с назначенными им номерами + портов и типами протоколов. +

+
+
+
+
+
+
+
+

+ 8.5. + Glibc-2.39 +

+
+
+
+
+
+

+ Пакет Glibc содержит основную библиотеку C. Эта библиотека + предоставляет основные процедуры для выделения памяти, поиска + в каталогах, открытия и закрытия файлов, чтения и записи + файлов, обработки строк, сопоставления с образцом, арифметики + и так далее +

+
+
+
+ Приблизительное время + сборки: 12 SBU +
+
+ Требуемое дисковое + пространство: 3.1 + GB +
+
+
+
+
+

+ 8.5.1. Установка пакета Glibc +

+

+ Некоторые программы Glibc используют не совместимый с FHS + каталог /var/db для хранения + своих данных во время выполнения. Примените следующий патч, + чтобы эти программы хранили свои данные в каталогах, + совместимых с FHS: +

+
patch -Np1 -i ../glibc-2.39-fhs-1.patch
+

+ Документация Glibc рекомендует выполнять компиляцию в + отдельном каталоге: +

+
mkdir -v build
+cd       build
+

+ Убедитесь, что утилиты ldconfig и sln будут установлены в + /usr/sbin: +

+
echo "rootsbindir=/usr/sbin" > configparms
+

+ Подготовьте Glibc к компиляции: +

+
../configure --prefix=/usr                            \
+             --disable-werror                         \
+             --enable-kernel=4.19                     \
+             --enable-stack-protector=strong          \
+             --disable-nscd                           \
+             libc_cv_slibdir=/usr/lib
+
+

+ Значение параметров настройки: +

+
+
+ --disable-werror +
+
+

+ Отключает параметр -Werror, передаваемый GCC. Это + необходимо для запуска набора тестов. +

+
+
+ --enable-kernel=4.19 +
+
+

+ Этот параметр сообщает системе сборки, что Glibc может + использоваться с ядрами старше 4.19. Это значение + используется для создание обходных путей на случай, + если системный вызов, представленный в более поздней + версии, нельзя будет использовать. +

+
+
+ --enable-stack-protector=strong +
+
+

+ Этот параметр повышает безопасность системы за счет + добавления дополнительного кода для проверки + переполнения буфера. Обратите внимание, что Glibc + всегда явно переопределяет параметры GCC по умолчанию, + поэтому необходимо всегда указывать эту опцию, несмотря + на то, что мы уже указали --enable-default-ssp для GCC. +

+
+
+ --disable-nscd +
+
+

+ Параметр отключает сборку демона кэша службы имен, + который больше не используется. +

+
+
+ libc_cv_slibdir=/usr/lib +
+
+

+ Эта переменная устанавливает правильную библиотеку для + всей системы. Мы не хотим, чтобы использовалась lib64 +

+
+
+
+

+ Скомпилируйте пакет: +

+
make
+
+

+ Важно +

+

+ В этом разделе набор тестов для Glibc считается критически + важным. Ни в коем случае не пропускайте его. +

+
+

+ Как правило, несколько тестов не проходят. Ошибки + тестирования, перечисленные ниже, можно игнорировать. +

+
make check
+

+ Вы можете увидеть, что ряд тестов завершились неудачей. Набор + тестов Glibc в некоторой степени зависит от хост-системы. + Несколько ошибок из более чем 5000 тестов можно игнорировать. + Список наиболее распространенных проблем последних версий + LFS: +

+
+
    +
  • +

    + Известно, что io/tst-lchmod не работает в + среде chroot LFS. +

    +
  • +
  • +

    + Известно, что некоторые тесты, например nss/tst-nss-files-hosts-multi + и nptl/tst-thread-affinity* + завершаются неудачей из-за тайм-аута (особенно когда + система работает относительно медленно и/или набор + тестов запущен в несколько потоков). Эти тесты могут + быть идентифицированы с помощью следующей команды: +

    +
    grep "Timed out" -l $(find -name \*.out)
    +

    + Можно повторно запустить отдельный тест, увеличив + таймаут с помощью команды TIMEOUTFACTOR=<factor> make + test t=<test + name>. Например, + TIMEOUTFACTOR=10 make + test t=nss/tst-nss-files-hosts-multi + перезапустит nss/tst-nss-files-hosts-multi, + увеличив начальный таймаут в 10 раз. +

    +
  • +
  • +

    + Кроме того, некоторые тесты могут завершиться неудачно + при использовании относительно старой модели процессора + (например, elf/tst-cpu-features-cpuinfo) + или версии ядра хоста (например, stdlib/tst-arc4random-thread). +

    +
  • +
+
+

+ На этапе установки Glibc будет жаловаться на отсутствие файла + /etc/ld.so.conf, хотя это + безобидное сообщение, предотвратить его появление можно с + помощью команды: +

+
touch /etc/ld.so.conf
+

+ Исправьте Makefile, чтобы пропустить устаревшую проверку + работоспособности, которая завершается неудачей в современной + конфигурации Glibc: +

+
sed '/test-installation/s@$(PERL)@echo not running@' -i ../Makefile
+
+

+ Важно +

+

+ При обновлении Glibc до новой минорной версии (например, с + Glibc-2.36 до Glibc-2.39) в работающей системе LFS вам + необходимо принять некоторые дополнительные меры + предосторожности, чтобы избежать поломки системы: +

+
+
    +
  • +

    + Обновление Glibc в системе LFS до версии 11.0 не + поддерживается. Пересоберите LFS, если вы используете + такую старую систему, но вам нужна более новая Glibc. +

    +
  • +
  • +

    + При обновлении системы LFS до версии 12.0 установите + Libxcrypt следуя + инструкции Раздел 8.26, + «Libxcrypt-4.4.36.». В дополнение к обычной + установке Libxcrypt, + вы ДОЛЖНЫ следовать + примечанию со страницы Libxcrypt, чтобы установить + libcrypt.so.1* (заменив + libcrypt.so.1 из + предыдущей установки Glibc). +

    +
  • +
  • +

    + При обновлении системы LFS до версии 12.1 удалите + программу nscd: +

    +
    rm -f /usr/sbin/nscd
    +
  • +
  • +

    + Обновите ядро и перезагрузитесь, если оно старше 4.19 + (проверьте текущую версию с помощью uname -r) или, если + вы хотите обновить имеющееся ядро, выполните действия + из Раздел 10.3, + «Linux-6.7.4.» +

    +
  • +
  • +

    + Обновите заголовочные файлы API ядра, если они старше + 4.19 (проверьте текущую версию с помощью cat + /usr/include/linux/version.h) или, + если вы просто хотите обновить их, следуйте Раздел 5.4, + «Заголовочные файлы Linux-6.7.4 API» (но удалив + $LFS из команды + cp). +

    +
  • +
  • +

    + Выполните установку DESTDIR и обновите общие библиотеки + Glibc в системе с помощью одной команды install: +

    +
    make DESTDIR=$PWD/dest install
    +install -vm755 dest/usr/lib/*.so.* /usr/lib
    +
  • +
+
+

+ Крайне важно строго следовать описанным выше шагам, если вы + не совсем понимаете, что делаете. Любое неожиданное отклонение может сделать + систему полностью непригодной для использования. ВЫ + ПРЕДУПРЕЖДЕНЫ. +

+

+ Затем продолжайте выполнять команды make install, + sed для + /usr/bin/ldd и команды для + установки локалей. Как только они будут выполнены, + перезагрузите систему. +

+
+

+ Установите пакет: +

+
make install
+

+ Исправьте жестко заданный путь к исполняемому загрузчику в + скрипте ldd: +

+
sed '/RTLDLIST=/s@/usr@@g' -i /usr/bin/ldd
+

+ Затем установите локали, которые дадут возможность системе + отвечать на разных языках. Ни одна из локалей не требуется + системе, но если некоторые из них отсутствуют, то наборы + тестов ряда пакетов будут пропускать важные тестовые + сценарии. +

+

+ Отдельные локали можно установить с помощью программы + localedef. + Например, вторая команда localedef приведенная ниже, + объединяет определение независимой от набора символов локали + /usr/share/i18n/locales/cs_CZ с + набором символов /usr/share/i18n/charmaps/UTF-8.gz и + добавляет результат в файл /usr/lib/locale/locale-archive. Следующие + инструкции установят минимальный набор локалей, необходимый + для оптимального охвата тестов +

+
mkdir -pv /usr/lib/locale
+localedef -i C -f UTF-8 C.UTF-8
+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 ISO-8859-1 en_GB
+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_ES -f ISO-8859-15 es_ES@euro
+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 is_IS -f ISO-8859-1 is_IS
+localedef -i is_IS -f UTF-8 is_IS.UTF-8
+localedef -i it_IT -f ISO-8859-1 it_IT
+localedef -i it_IT -f ISO-8859-15 it_IT@euro
+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.SJIS 2> /dev/null || true
+localedef -i ja_JP -f UTF-8 ja_JP.UTF-8
+localedef -i nl_NL@euro -f ISO-8859-15 nl_NL@euro
+localedef -i ru_RU -f KOI8-R ru_RU.KOI8-R
+localedef -i ru_RU -f UTF-8 ru_RU.UTF-8
+localedef -i se_NO -f UTF-8 se_NO.UTF-8
+localedef -i ta_IN -f UTF-8 ta_IN.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
+localedef -i zh_TW -f UTF-8 zh_TW.UTF-8
+

+ Кроме того, установите локаль для вашей страны, языка и + набора символов. +

+

+ В качестве альтернативы, установите сразу все локали + перечисленные в файле glibc-2.39/localedata/SUPPORTED (он + включает все локали из списка выше и многие другие), выполнив + команду: +

+
make localedata/install-locales
+

+ Затем используйте команду localedef для создания и + установки локалей, не перечисленных в файле glibc-2.39/localedata/SUPPORTED, когда они + вам понадобятся. Например, для некоторых тестов в этой главе + потребуются следующие две локали: +

+
localedef -i C -f UTF-8 C.UTF-8
+localedef -i ja_JP -f SHIFT_JIS ja_JP.SJIS 2> /dev/null || true
+
+

+ Примечание +

+

+ Glibc теперь использует libidn2 для разрешения + интернационализированных доменных имен. Если такая функция + необходима, то инструкцию по установке libidn2 можно найти + на странице + BLFS libidn2. +

+
+
+
+

+ 8.5.2. Настройка + Glibc +

+
+
+
+
+

+ 8.5.2.1. + Добавление nsswitch.conf +

+
+
+
+

+ Необходимо создать файл /etc/nsswitch.conf, потому что + настроенный по умолчанию Glibc плохо работает в сетевой + среде. +

+

+ Создайте новый фай /etc/nsswitch.conf, выполнив следующие + действия: +

+
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
+
+
+
+
+
+

+ 8.5.2.2. + Добавление данных о часовом поясе +

+
+
+
+

+ Установите и настройте часовой пояс следующим образом: +

+
tar -xf ../../tzdata2024a.tar.gz
+
+ZONEINFO=/usr/share/zoneinfo
+mkdir -pv $ZONEINFO/{posix,right}
+
+for tz in etcetera southamerica northamerica europe africa antarctica  \
+          asia australasia backward; 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
+
+

+ Значение команд zic: +

+
+
+ zic -L + /dev/null ... +
+
+

+ Создаёт часовые пояса posix без секунд координации. + Обычно их помещают как в zoneinfo так и в zoneinfo/posix. Часовые пояса POSIX + должны быть прописаны в zoneinfo, иначе различные тесты + будут сообщать об ошибках. На встраиваемых системах с + небольшим диском, где часовые пояса никогда не будут + обновляться, можно сэкономить примерно 1.9 MB не + используя каталог posix, однако некоторые приложения + или наборы тестов могут вызывать сбои. +

+
+
+ zic -L + leapseconds ... +
+
+

+ Создаёт правильные часовые пояса с секундами + координации. На встраиваемых системах с небольшим + диском, где часовые пояса никогда не будут + обновляться, а правильность времени неважна, можно + выиграть примерно 1.9 MB, исключив каталог + right. +

+
+
+ zic ... + -p ... +
+
+

+ Создаёт файл posixrules. Используется New York, + потому что POSIX требует, чтобы правила перехода на + летнее время соответствовали правилам США. +

+
+
+
+

+ Один из способов определить местный часовой пояс — + запустить следующий скрипт: +

+
tzselect
+

+ После нескольких вопросов о местоположении скрипт выдаст + наименование часового пояса (например America/Edmonton). В файле + /usr/share/zoneinfo + перечислены и другие возможные часовые пояса, такие как + Canada/Eastern или + EST5EDT, которые не + распознаются скриптом, но могут быть использованы. +

+

+ Создайте файл /etc/localtime + выполнив: +

+
ln -sfv /usr/share/zoneinfo/<xxx> /etc/localtime
+

+ Замените <xxx> на имя + выбранного часового пояса (например, Europe/Moscow). +

+
+
+
+
+
+

+ 8.5.2.3. Настройка + динамического загрузчика +

+
+
+
+

+ По умолчанию, динамический загрузчик (/lib/ld-linux.so.2) ищет в каталоге + /usr/lib, нужные для работы + программ библиотеки. Однако, если библиотеки находятся в + другом каталоге, то его необходимо указать в файле + /etc/ld.so.conf, чтобы + динамический загрузчик мог их найти. Два каталога - + /usr/local/lib и /opt/lib часто используются для + дополнительных библиотек, поэтому добавьте их в пути поиска + для динамического загрузчика. +

+

+ Создайте новый файл /etc/ld.so.conf выполнив: +

+
cat > /etc/ld.so.conf << "EOF"
+# Begin /etc/ld.so.conf
+/usr/local/lib
+/opt/lib
+
+EOF
+

+ Динамический загрузчик может выполнить поиск в каталоге и + включить содержимое найденных там файлов. Обычно такие + файлы состоят из одной строки и содержат путь к библиотеке. + Чтобы добавить эту возможность, выполните следующие + команды: +

+
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
+
+
+
+

+ 8.5.3. + Содержимое пакета Glibc +

+
+
+
+ Установленные + программы: gencat, + getconf, getent, iconv, iconvconfig, ldconfig, ldd, + lddlibc4, ld.so (symlink to ld-linux-x86-64.so.2 or + ld-linux.so.2), locale, localedef, makedb, mtrace, + pcprofiledump, pldd, sln, sotruss, sprof, tzselect, + xtrace, zdump и zic +
+
+ Установленные + библиотеки: ld-linux-x86-64.so.2, ld-linux.so.2, + libBrokenLocale.{a,so}, libanl.{a,so}, libc.{a,so}, + libc_nonshared.a, libc_malloc_debug.so, libdl.{a,so.2}, + libg.a, libm.{a,so}, libmcheck.a, libmemusage.so, + libmvec.{a,so}, libnsl.so.1, libnss_compat.so, + libnss_dns.so, libnss_files.so, libnss_hesiod.so, + libpcprofile.so, libpthread.{a,so.0}, libresolv.{a,so}, + librt.{a,so.1}, libthread_db.so и libutil.{a,so.1} +
+
+ Созданные каталоги: + /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/sys, /usr/lib/audit, + /usr/lib/gconv, /usr/lib/locale, /usr/libexec/getconf, + /usr/share/i18n, /usr/share/zoneinfo и + /var/lib/nss_db +
+
+
+
+

+ Краткое описание +

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

+ gencat +

+
+

+ Создает каталоги сообщений +

+
+

+ getconf +

+
+

+ Отображает настройки системы для специфичных + переменных файловой системы +

+
+

+ getent +

+
+

+ Получает записи из административной базы данных +

+
+

+ iconv +

+
+

+ Выполняет преобразование набора символов +

+
+

+ iconvconfig +

+
+

+ Создает быстрозагружаемые файлы настроек модуля + iconv +

+
+

+ ldconfig +

+
+

+ Настраивает привязки времени выполнения + динамического компоновщика +

+
+

+ ldd +

+
+

+ Сообщает, какие общие библиотеки требуются каждой + программе или общей библиотеке +

+
+

+ lddlibc4 +

+
+

+ Помогает ldd работать с + объектными файлами. Он не существует на более новых + архитектурах, таких как x86_64 +

+
+

+ locale +

+
+

+ Выводит различную информацию о текущей локали +

+
+

+ localedef +

+
+

+ Компилирует спецификации локали +

+
+

+ makedb +

+
+

+ Создает простую базу данных на основе текстового + ввода +

+
+

+ mtrace +

+
+

+ Читает и интерпретирует файл трассировки памяти; + отображает сводку в удобочитаемом формате +

+
+

+ pcprofiledump +

+
+

+ Создает дамп информации, генерируемой при + профилировании ПК +

+
+

+ pldd +

+
+

+ Перечисляет динамические общие объекты, + используемые запущенными процессами. +

+
+

+ sln +

+
+

+ Статически скомпонованная программа ln +

+
+

+ sotruss +

+
+

+ Отслеживает вызовы процедур общей библиотеки + указанной команды +

+
+

+ sprof +

+
+

+ Читает и отображает данные профилирования общих + объектов. +

+
+

+ tzselect +

+
+

+ Запрашивает у пользователя информацию о текущем + местоположении системы и выводит описание + соответствующего часового пояса. +

+
+

+ xtrace +

+
+

+ Отслеживает выполнение программы, отображая + выполняемую в данный момент функцию +

+
+

+ zdump +

+
+

+ Выдает дамп часового пояса +

+
+

+ zic +

+
+

+ Компилятор часовых поясов +

+
+

+ ld-*.so +

+
+

+ Вспомогательная программа для исполняемых файлов + общей библиотеки +

+
+

+ libBrokenLocale +

+
+

+ Используется внутри Glibc как грубый хак для + запуска сломанных программ (например, некоторые + приложения Motif). Прочитайте комментарии в + glibc-2.39/locale/broken_cur_max.c + для получения дополнительной информации +

+
+

+ libanl +

+
+

+ Библиотека-заглушка, не содержащая функций. Ранее + это была библиотека асинхронного поиска имен, + функции которой теперь находятся в libc +

+
+

+ libc +

+
+

+ Основная библиотека C +

+
+

+ libc_malloc_debug +

+
+

+ Включает проверку выделения памяти при + предварительной загрузке +

+
+

+ libdl +

+
+

+ Библиотека-заглушка, не содержащая функций. Ранее + была библиотекой интерфейса динамической + компоновки, функции которой теперь находятся в + libc +

+
+

+ libg +

+
+

+ Библиотека-заглушка без функций. Раньше была + библиотекой среды выполнения для g++ +

+
+

+ libm +

+
+

+ Математическая библиотека +

+
+

+ libmvec +

+
+

+ Библиотека векторных математических вычислений, + подключаемая по мере необходимости при + использовании libm +

+
+

+ libmcheck +

+
+

+ Включает проверку выделения памяти при подключении + к +

+
+

+ libmemusage +

+
+

+ Используется memusage для + сбора информации об использовании памяти программой +

+
+

+ libnsl +

+
+

+ Библиотека сетевых служб, которая в настоящее время + устарела +

+
+

+ libnss_* +

+
+

+ Модули Name Service Switch, содержащие функции для + разрешения имен хостов, имен пользователей, имен + групп, псевдонимов, служб, протоколов и т. д. + Загружаются libc в + соответствии с конфигурацией в /etc/nsswitch.conf +

+
+

+ libpcprofile +

+
+

+ Содержит функции профилирования, используемые для + отслеживания времени, потраченного процессором в + конкретных строках исходного кода +

+
+

+ libpthread +

+
+

+ Библиотека-заглушка, не содержащая функций. Ранее + содержала функции, обеспечивающие большинство + интерфейсов, заданных POSIX.1c Threads Extensions + (расширения реализации потоков) и интерфейсы + семафоров, указанных в POSIX.1b Real-time Extension + (расширения реального времени), теперь эти функции + находятся в libc +

+
+

+ libresolv +

+
+

+ Содержит функции создания, пересылки и + интерпретации пакетов, используемых на серверах + доменных имен в сети интернет +

+
+

+ librt +

+
+

+ Содержит функции, реализующие большую часть + интерфейсов, определяемых в POSIX.1b Real-time + Extension (расширения реального времени) +

+
+

+ libthread_db +

+
+

+ Содержит функции, полезные для сборки отладчиков + для многопоточных программ +

+
+

+ libutil +

+
+

+ Библиотека-заглушка, не содержащая функций. Ранее + содержал код для «стандартных» функций, + используемых во многих утилитах Unix. Эти функции + теперь находятся в libc +

+
+
+
+
+
+
+
+

+ 8.6. + Zlib-1.3.1 +

+
+
+
+
+
+

+ Пакет Zlib содержит подпрограммы сжатия и распаковки, + используемые некоторыми программами. +

+
+
+
+ Приблизительное время + сборки: менее 0.1 + SBU +
+
+ Требуемое дисковое + пространство: 6.4 + MB +
+
+
+
+
+

+ 8.6.1. Установка пакета Zlib +

+

+ Подготовьте Zlib к компиляции: +

+
./configure --prefix=/usr
+

+ Скомпилируйте пакет: +

+
make
+

+ Чтобы протестировать пакет, выполните: +

+
make check
+

+ Установите пакет: +

+
make install
+

+ Удалите бесполезную статическую библиотеку: +

+
rm -fv /usr/lib/libz.a
+
+
+

+ 8.6.2. + Содержимое пакета Zlib +

+
+
+
+ Установленные + библиотеки: libz.so +
+
+
+
+

+ Краткое описание +

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

+ libz +

+
+

+ Содержит функции сжатия и распаковки, используемые + некоторыми программами. +

+
+
+
+
+
+
+
+

+ 8.7. + Bzip2-1.0.8 +

+
+
+
+
+
+

+ Пакет Bzip2 содержит программы для сжатия и распаковки + файлов. Сжатие текстовых файлов с помощью bzip2 даёт больший процент + сжатия, чем традиционный gzip. +

+
+
+
+ Приблизительное время + сборки: менее 0.1 + SBU +
+
+ Требуемое дисковое + пространство: 7.2 + MB +
+
+
+
+
+

+ 8.7.1. Установка пакета Bzip2 +

+

+ Примените патч, который установит документацию для этого + пакета: +

+
patch -Np1 -i ../bzip2-1.0.8-install_docs-1.patch
+

+ Следующая команда гарантирует установку символических ссылок + с относительным путём: +

+
sed -i 's@\(ln -s -f \)$(PREFIX)/bin/@\1@' Makefile
+

+ Убедитесь, что справочные страницы установлены в правильном + месте: +

+
sed -i "s@(PREFIX)/man@(PREFIX)/share/man@g" Makefile
+

+ Подготовьте Bzip2 к компиляции: +

+
make -f Makefile-libbz2_so
+make clean
+
+

+ Значение параметра make: +

+
+
+ -f + Makefile-libbz2_so +
+
+

+ Этот параметр позволяет выполнить сборку, с + использованием другого Makefile, в данном случае + Makefile-libbz2_so, + который создает динамическую библиотеку libbz2.so и связывает с ней Bzip2. +

+
+
+
+

+ Скомпилируйте и протестируйте пакет: +

+
make
+

+ Установите пакет: +

+
make PREFIX=/usr install
+

+ Установите библиотеку: +

+
cp -av libbz2.so.* /usr/lib
+ln -sv libbz2.so.1.0.8 /usr/lib/libbz2.so
+

+ Установите общий бинарный файл bzip2 в каталог + /usr/bin, и замените две копии + bzip2 + символическими ссылками: +

+
cp -v bzip2-shared /usr/bin/bzip2
+for i in /usr/bin/{bzcat,bunzip2}; do
+  ln -sfv bzip2 $i
+done
+

+ Удалите ненужную статическую библиотеку: +

+
rm -fv /usr/lib/libbz2.a
+
+
+

+ 8.7.2. + Содержимое пакета Bzip2 +

+
+
+
+ Установленные + программы: bunzip2 (ссылка + на bzip2), bzcat (ссылка на bzip2), bzcmp (ссылка на + bzdiff), bzdiff, bzegrep (ссылка на bzgrep), bzfgrep + (ссылка на bzgrep), bzgrep, bzip2, bzip2recover, bzless + (ссылка на bzmore) и bzmore +
+
+ Установленные + библиотеки: libbz2.so +
+
+ Созданные каталоги: + /usr/share/doc/bzip2-1.0.8 +
+
+
+
+

+ Краткое описание +

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

+ bunzip2 +

+
+

+ Распаковывает bzip-файлы +

+
+

+ bzcat +

+
+

+ Распаковывает в поток стандартного вывода +

+
+

+ bzcmp +

+
+

+ Запускает программу cmp для bzip + файлов +

+
+

+ bzdiff +

+
+

+ Запускает программу diff для bzip + файлов +

+
+

+ bzegrep +

+
+

+ Запускает программу egrep для bzip + файлов +

+
+

+ bzfgrep +

+
+

+ Запускает программу fgrep для bzip + файлов +

+
+

+ bzgrep +

+
+

+ Запускает программу grep для bzip + файлов +

+
+

+ bzip2 +

+
+

+ Сжимает файлы, используя алгоритм сжатия текста с + блочной сортировкой Барроуза — Уилера и кодирование + Хафмана; степень сжатия лучше, чем у более + традиционных архиваторов, использующих алгоритмы + «Lempel-Ziv», например + gzip +

+
+

+ bzip2recover +

+
+

+ Пытается восстанавливать данные из поврежденных + архивов +

+
+

+ bzless +

+
+

+ Запускает программу less для bzip + файлов +

+
+

+ bzmore +

+
+

+ Запускает программу more для bzip + файлов +

+
+

+ libbz2 +

+
+

+ Библиотека, реализующая сжатие данных без потерь с + использованием алгоритма Барроуза-Уилера. +

+
+
+
+
+
+
+
+

+ 8.8. Xz-5.4.6 +

+
+
+
+
+
+

+ Пакет Xz содержит программы для сжатия и распаковки файлов. + Он предоставляет возможности для lzma и более новых форматов + сжатия xz. Сжатие текстовых файлов с помощью xz дает лучший процент + сжатия, чем с традиционные gzip или bzip2. +

+
+
+
+ Приблизительное время + сборки: 0.1 SBU +
+
+ Требуемое дисковое + пространство: 25 MB +
+
+
+
+
+

+ 8.8.1. Установка пакета Xz +

+

+ Подготовьте Xz к компиляции: +

+
./configure --prefix=/usr    \
+            --disable-static \
+            --docdir=/usr/share/doc/xz-5.4.6
+

+ Скомпилируйте пакет: +

+
make
+

+ Чтобы протестировать пакет, выполните: +

+
make check
+

+ Установите пакет: +

+
make install
+
+
+

+ 8.8.2. Содержимое + пакета Xz +

+
+
+
+ Установленные + программы: lzcat (ссылка + на xz), lzcmp (ссылка на xzdiff), lzdiff (ссылка на + xzdiff), lzegrep (ссылка на xzgrep), lzfgrep (ссылка на + xzgrep), lzgrep (ссылка на xzgrep), lzless (ссылка на + xzless), lzma (ссылка на xz), lzmadec, lzmainfo, lzmore + (ссылка на xzmore), unlzma (ссылка на xz), unxz (ссылка + на xz), xz, xzcat (ссылка на xz), xzcmp (ссылка на + xzdiff), xzdec, xzdiff, xzegrep (ссылка на xzgrep), + xzfgrep (ссылка на xzgrep), xzgrep, xzless и + xzmore +
+
+ Установленные + библиотеки: liblzma.so +
+
+ Созданные каталоги: + /usr/include/lzma и + /usr/share/doc/xz-5.4.6 +
+
+
+
+

+ Краткое описание +

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

+ lzcat +

+
+

+ Распаковывает в стандартный поток вывода +

+
+

+ lzcmp +

+
+

+ Запускает cmp для файлов + сжатых LZMA +

+
+

+ lzdiff +

+
+

+ Запускает diff для файлов + сжатых LZMA +

+
+

+ lzegrep +

+
+

+ Запускает egrep для файлов + сжатых LZMA +

+
+

+ lzfgrep +

+
+

+ Запускает fgrep для файлов + сжатых LZMA +

+
+

+ lzgrep +

+
+

+ Запускает grep для файлов + сжатых LZMA +

+
+

+ lzless +

+
+

+ Запускает less для файлов + сжатых LZMA +

+
+

+ lzma +

+
+

+ Сжимает или распаковывает файлы в формате LZMA +

+
+

+ lzmadec +

+
+

+ Небольшой и быстрый декодер для файлов сжатых LZMA. +

+
+

+ lzmainfo +

+
+

+ Показывает информацию, хранящуюся в заголовке + сжатого файла LZMA +

+
+

+ lzmore +

+
+

+ Запускает more для файлов + сжатых LZMA +

+
+

+ unlzma +

+
+

+ Распаковывает файлы в формате LZMA +

+
+

+ unxz +

+
+

+ Распаковывает файлы в формате XZ +

+
+

+ xz +

+
+

+ Сжимает или распаковывает файлы в формате XZ. +

+
+

+ xzcat +

+
+

+ Распаковывает в стандартный поток вывода +

+
+

+ xzcmp +

+
+

+ Запускает cmp для сжатых XZ + файлов +

+
+

+ xzdec +

+
+

+ Небольшой и быстрый декодер для файлов сжатых XZ +

+
+

+ xzdiff +

+
+

+ Запускает diff для сжатых + XZ файлов +

+
+

+ xzegrep +

+
+

+ Запускает egrep для сжатых + XZ файлов +

+
+

+ xzfgrep +

+
+

+ Запускает fgrep для сжатых + XZ файлов +

+
+

+ xzgrep +

+
+

+ Запускает grep для сжатых + XZ файлов +

+
+

+ xzless +

+
+

+ Запускает less для сжатых + XZ файлов +

+
+

+ xzmore +

+
+

+ Запускает more для сжатых + XZ файлов +

+
+

+ liblzma +

+
+

+ Библиотека, реализующая сжатие данных без потерь с + блочной сортировкой с использованием алгоритма + Lempel-Ziv-Markov +

+
+
+
+
+
+
+
+

+ 8.9. + Zstd-1.5.5 +

+
+
+
+
+
+

+ Zstandard — это алгоритм сжатия в реальном времени, + обеспечивающий высокую степень сжатия. Он предлагает очень + широкий диапазон компромиссов между сжатием и скоростью при + поддержке очень быстрого декодера. +

+
+
+
+ Приблизительное время + сборки: 0.5 SBU +
+
+ Требуемое дисковое + пространство: 77 MB +
+
+
+
+
+

+ 8.9.1. Установка пакета Zstd +

+

+ Скомпилируйте пакет: +

+
make prefix=/usr
+
+

+ Примечание +

+

+ В выходных данных теста есть несколько мест, выводящих + сообщение 'failed'. Они ожидаемы, и только 'FAIL' является + фактическим сбоем теста. Сбоев при тестировании быть не + должно. +

+
+

+ Чтобы протестировать пакет, выполните: +

+
make check
+

+ Установите пакет: +

+
make prefix=/usr install
+

+ Удалите статическую библиотеку: +

+
rm -v /usr/lib/libzstd.a
+
+
+

+ 8.9.2. + Содержимое пакета Zstd +

+
+
+
+ Установленные + программы: zstd, zstdcat + (ссылка на zstd), zstdgrep, zstdless, zstdmt (ссылка на + zstd) и unzstd (ссылка на zstd) +
+
+ Установленные + библиотеки: libzstd.so +
+
+
+
+

+ Краткое описание +

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

+ zstd +

+
+

+ Сжимает или распаковывает файлы в формате ZSTD +

+
+

+ zstdgrep +

+
+

+ Запускает grep на сжатых + ZSTD файлах +

+
+

+ zstdless +

+
+

+ Запускает less на сжатых + ZSTD файлах +

+
+

+ libzstd +

+
+

+ Библиотека, реализующая сжатие данных без потерь, с + использованием алгоритма ZSTD +

+
+
+
+
+
+
+
+

+ 8.10. + File-5.45 +

+
+
+
+
+
+

+ Пакет File содержит утилиту для определения типа указанного + файла или файлов +

+
+
+
+ Приблизительное время + сборки: менее 0.1 + SBU +
+
+ Требуемое дисковое + пространство: 17 MB +
+
+
+
+
+

+ 8.10.1. Установка пакета File +

+

+ Подготовьте File к компиляции: +

+
./configure --prefix=/usr
+

+ Скомпилируйте пакет: +

+
make
+

+ Чтобы протестировать пакет, выполните: +

+
make check
+

+ Установите пакет: +

+
make install
+
+
+

+ 8.10.2. + Содержимое пакета File +

+
+
+
+ Установленные + программы: file +
+
+ Установленные + библиотеки: libmagic.so +
+
+
+
+

+ Краткое описание +

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

+ file +

+
+

+ Пытается классифицировать каждый указанный файл; он + делает это, выполняя серию тестов—тесты файловой + системы, тесты магических чисел и языковые тесты. +

+
+

+ libmagic +

+
+

+ Содержит функции распознавания магических чисел + используемые программой file +

+
+
+
+
+
+
+
+

+ 8.11. Readline-8.2 +

+
+
+
+
+
+

+ Пакет Readline представляет собой набор библиотек, + предлагающих возможности редактирования прямо в командной + строке и просмотра истории команд. +

+
+
+
+ Приблизительное время + сборки: менее 0.1 + SBU +
+
+ Требуемое дисковое + пространство: 16 MB +
+
+
+
+
+

+ 8.11.1. Установка пакета Readline +

+

+ Переустановка пакета Readline приводит к перемещению старых + библиотек в <libraryname>.old. Обычно это не вызывает + проблем, но в некоторых случаях могут возникать ошибки + линковки с ldconfig. Этого можно + избежать, выполнив следующие две команды sed: +

+
sed -i '/MV.*old/d' Makefile.in
+sed -i '/{OLDSUFF}/c:' support/shlib-install
+

+ Теперь устраните проблему, выявленную разработчиками: +

+
patch -Np1 -i ../readline-8.2-upstream_fixes-3.patch
+

+ Подготовьте Readline к компиляции: +

+
./configure --prefix=/usr    \
+            --disable-static \
+            --with-curses    \
+            --docdir=/usr/share/doc/readline-8.2
+
+

+ Значение нового параметра configure: +

+
+
+ --with-curses +
+
+

+ Этот параметр сообщает Readline, что он может найти + функции библиотеки termcap в библиотеке curses, а не в + отдельной библиотеке termcap. Это позволит + сгенерировать корректный файл readline.pc. +

+
+
+
+

+ Скомпилируйте пакет: +

+
make SHLIB_LIBS="-lncursesw"
+
+

+ Значение параметра make: +

+
+
+ SHLIB_LIBS="-lncursesw" +
+
+

+ Этот параметр принудительно линкует Readline с + библиотекой libncursesw. +

+
+
+
+

+ С этим пакетом не поставляется набор тестов. +

+

+ Установите пакет: +

+
make SHLIB_LIBS="-lncursesw" install
+

+ По желанию установите документацию: +

+
install -v -m644 doc/*.{ps,pdf,html,dvi} /usr/share/doc/readline-8.2
+
+
+

+ 8.11.2. Содержимое пакета Readline +

+
+
+
+ Установленные + библиотеки: libhistory.so + и libreadline.so +
+
+ Созданные каталоги: + /usr/include/readline и + /usr/share/doc/readline-8.2 +
+
+
+
+

+ Краткое описание +

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

+ libhistory +

+
+

+ Обеспечивает согласованный пользовательский + интерфейс для вызова строк из истории +

+
+

+ libreadline +

+
+

+ Предоставляет набор команд для управления текстом, + введенным в интерактивном сеансе программы. +

+
+
+
+
+
+
+
+

+ 8.12. + M4-1.4.19 +

+
+
+
+
+
+

+ Пакет M4 содержит макропроцессор. +

+
+
+
+ Приблизительное время + сборки: 0.3 SBU +
+
+ Требуемое дисковое + пространство: 49 MB +
+
+
+
+
+

+ 8.12.1. Установка пакета M4 +

+

+ Подготовьте M4 к компиляции: +

+
./configure --prefix=/usr
+

+ Скомпилируйте пакет: +

+
make
+

+ Чтобы протестировать пакет, выполните: +

+
make check
+

+ Установите пакет: +

+
make install
+
+
+

+ 8.12.2. Содержимое + пакета M4 +

+
+
+
+ Установленные + программы: m4 +
+
+
+
+

+ Краткое описание +

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

+ m4 +

+
+

+ Копирует указанные файлы, одновременно расширяя + содержащиеся в них макросы. Эти макросы являются + либо встроенными, либо определяемыми пользователем + и могут принимать любое количество аргументов. + Помимо выполнения макросов, m4 имеет + встроенные функции для включения указанных файлов, + выполнения команд Unix, выполнения целочисленной + арифметики, манипулирования текстом, рекурсии и + т.д. Программа m4 может + использоваться либо как интерфейс к компилятору, + либо как самостоятельный макропроцессор +

+
+
+
+
+
+
+
+

+ 8.13. Bc-6.7.5 +

+
+
+
+
+
+

+ Пакет Bc содержит язык для обработки чисел произвольной + точности. +

+
+
+
+ Приблизительное время + сборки: менее 0.1 + SBU +
+
+ Требуемое дисковое + пространство: 7.8 + MB +
+
+
+
+
+

+ 8.13.1. Установка пакета Bc +

+

+ Подготовьте Bc к компиляции: +

+
CC=gcc ./configure --prefix=/usr -G -O3 -r
+
+

+ Значение параметров настройки: +

+
+
+ CC=gcc +
+
+

+ Этот параметр определяет используемый компилятор +

+
+
+ -G +
+
+

+ Пропускает часть тестов, которые не будут работать, + пока не будет установлена программа bc. +

+
+
+ -O3 +
+
+

+ Указывает используемый уровень оптимизации. +

+
+
+ -r +
+
+

+ Включает использование Readline для улучшения функции + редактирования строк в bc. +

+
+
+
+

+ Скомпилируйте пакет: +

+
make
+

+ Чтобы протестировать bc, запустите: +

+
make test
+

+ Установите пакет: +

+
make install
+
+
+

+ 8.13.2. Содержимое + пакета Bc +

+
+
+
+ Установленные + программы: bc и dc +
+
+
+
+

+ Краткое описание +

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

+ bc +

+
+

+ Калькулятор командной строки +

+
+

+ dc +

+
+

+ Калькулятор командной строки с обратной польской + нотацией +

+
+
+
+
+
+
+
+

+ 8.14. + Flex-2.6.4 +

+
+
+
+
+
+

+ Пакет Flex содержит инструмент для генерации программ, + распознающих заданные шаблоны в тексте +

+
+
+
+ Приблизительное время + сборки: 0.1 SBU +
+
+ Требуемое дисковое + пространство: 33 MB +
+
+
+
+
+

+ 8.14.1. Установка пакета Flex +

+

+ Подготовьте Flex к компиляции: +

+
./configure --prefix=/usr \
+            --docdir=/usr/share/doc/flex-2.6.4 \
+            --disable-static
+

+ Скомпилируйте пакет: +

+
make
+

+ Для тестирования пакета (около 0,5 SBU) выполните: +

+
make check
+

+ Установите пакет: +

+
make install
+

+ Некоторые программы пока не знают о flex и пытаются запустить + его предшественника - lex. Чтобы обеспечить их + работоспособность, создайте символическую ссылку lex, которая запускает + flex в режиме эмуляции + lex, а также + создайте символическую ссылку на справочную страницу + lex: +

+
ln -sv flex   /usr/bin/lex
+ln -sv flex.1 /usr/share/man/man1/lex.1
+
+
+

+ 8.14.2. + Содержимое пакета Flex +

+
+
+
+ Установленные + программы: flex, flex++ + (ссылка на flex), и lex (ссылка на flex) +
+
+ Установленные + библиотеки: libfl.so +
+
+ Созданные каталоги: + /usr/share/doc/flex-2.6.4 +
+
+
+
+

+ Краткое описание +

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

+ flex +

+
+

+ Инструмент для создания программ, распознающих + текст по шаблону; это позволяет гибко указывать + правила поиска паттернов, устраняя необходимость + разработки специализированной программы. +

+
+

+ flex++ +

+
+

+ Расширение flex используется для генерации кода и + классов C++. Является символической ссылкой на + flex +

+
+

+ lex +

+
+

+ Символическая ссылка, запускает flex в режиме + эмуляции lex +

+
+

+ libfl +

+
+

+ Библиотека flex +

+
+
+
+
+
+
+
+

+ 8.15. + Tcl-8.6.13 +

+
+
+
+
+
+

+ Пакет Tcl содержит Tool + Command Language, надежный скриптовый язык общего назначения. + Пакет Expect написан на + языке Tcl (произносится как + "тикл"). +

+
+
+
+ Приблизительное время + сборки: 2.7 SBU +
+
+ Требуемое дисковое + пространство: 89 MB +
+
+
+
+
+

+ 8.15.1. Установка пакета Tcl +

+

+ Этот пакет и следующие два (Expect и DejaGNU) устанавливаются + для поддержки возможности тестирования Binutils, GCC и других + пакетов. Установка трех пакетов для целей тестирования может + показаться избыточной, но вы будете чувствовать себя + увереннее, когда знаете, что наиболее важные инструменты + работают правильно. +

+

+ Подготовьте Tcl к компиляции: +

+
SRCDIR=$(pwd)
+cd unix
+./configure --prefix=/usr           \
+            --mandir=/usr/share/man
+

+ Соберите пакет: +

+
make
+
+sed -e "s|$SRCDIR/unix|/usr/lib|" \
+    -e "s|$SRCDIR|/usr/include|"  \
+    -i tclConfig.sh
+
+sed -e "s|$SRCDIR/unix/pkgs/tdbc1.1.5|/usr/lib/tdbc1.1.5|" \
+    -e "s|$SRCDIR/pkgs/tdbc1.1.5/generic|/usr/include|"    \
+    -e "s|$SRCDIR/pkgs/tdbc1.1.5/library|/usr/lib/tcl8.6|" \
+    -e "s|$SRCDIR/pkgs/tdbc1.1.5|/usr/include|"            \
+    -i pkgs/tdbc1.1.5/tdbcConfig.sh
+
+sed -e "s|$SRCDIR/unix/pkgs/itcl4.2.3|/usr/lib/itcl4.2.3|" \
+    -e "s|$SRCDIR/pkgs/itcl4.2.3/generic|/usr/include|"    \
+    -e "s|$SRCDIR/pkgs/itcl4.2.3|/usr/include|"            \
+    -i pkgs/itcl4.2.3/itclConfig.sh
+
+unset SRCDIR
+

+ Различные инструкции «sed» после команды «make» удаляют + ссылки на каталог сборки из файлов конфигурации и заменяют их + на созданные каталоги. Это необязательно для остальной части + LFS, но может понадобиться в случае, когда пакет, собранный + позже, использует Tcl. +

+

+ Чтобы протестировать пакет, выполните: +

+
make test
+

+ Установите пакет: +

+
make install
+

+ Сделайте установленную библиотеку доступной для записи, чтобы + позже можно было удалить отладочные символы: +

+
chmod -v u+w /usr/lib/libtcl8.6.so
+

+ >Установите заголовочные файлы Tcl. Они потребуются для + следующего пакета - Expect. +

+
make install-private-headers
+

+ Теперь создайте необходимую символическую ссылку: +

+
ln -sfv tclsh8.6 /usr/bin/tclsh
+

+ Переименуйте справочную страницу, которая конфликтует со + справочной страницей Perl: +

+
mv /usr/share/man/man3/{Thread,Tcl_Thread}.3
+

+ При необходимости установите документацию, выполнив следующие + команды: +

+
cd ..
+tar -xf ../tcl8.6.13-html.tar.gz --strip-components=1
+mkdir -v -p /usr/share/doc/tcl-8.6.13
+cp -v -r  ./html/* /usr/share/doc/tcl-8.6.13
+
+
+

+ 8.15.2. + Содержимое пакета Tcl +

+
+
+
+ Установленные + программы: tclsh (ссылка + на tclsh8.6) и tclsh8.6 +
+
+ Установленные + библиотеки: libtcl8.6.so и + libtclstub8.6.a +
+
+
+
+

+ Краткое описание +

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

+ tclsh8.6 +

+
+

+ Командная оболочка Tcl +

+
+

+ tclsh +

+
+

+ Ссылка на tclsh8.6 +

+
+

+ libtcl8.6.so +

+
+

+ Библиотека Tcl +

+
+

+ libtclstub8.6.a +

+
+

+ Библиотека-заглушка Tcl +

+
+
+
+
+
+
+
+

+ 8.16. + Expect-5.45.4 +

+
+
+
+
+
+

+ Пакет Expect содержит + инструменты для автоматизации работы интерактивных + приложений, таких как telnet, ftp, passwd, fsck, rlogin и tip, с помощью скриптовых + диалогов и макросов. Кроме того Expect полезен для тестирования + перечисленных выше приложений, а также для решения сложных + задач взаимодействия с другими средствами. Фреймворк + DejaGnu написан на языке + Expect. +

+
+
+
+ Приблизительное время + сборки: 0.2 SBU +
+
+ Требуемое дисковое + пространство: 3.9 + MB +
+
+
+
+
+

+ 8.16.1. Установка пакета Expect +

+

+ Expect для работы необходим псевдотерминал(PTY). Убедитесь, + что PTY работают правильно в среде chroot, выполнив простой + тест: +

+
python3 -c 'from pty import spawn; spawn(["echo", "ok"])'
+

+ Эта команда должна вывести ok. Если вместо этого вывод содержит + OSError: out of pty + devices, то среда не настроена для правильной работы + PTY. Вам необходимо выйти из среды chroot, ещё раз прочитать + Раздел 7.3, + «Подготовка виртуальных файловых систем ядра» и + убедиться, что файловая система devpts (и другие файловые системы + виртуального ядра) смонтирована правильно. Затем повторно + войдите в среду chroot, следуя инструкции Раздел 7.4, «Вход в + окружение Chroot». Эту проблему необходимо решить, прежде + чем вы продолжите, иначе наборы тестов, зависимые от Expect + (например, наборы тестов Bash, Binutils, GCC, GDBM и, + конечно, самого Expect), потерпят фатальный сбой, а также + могут произойти другие незначительные сбои. +

+

+ Подготовьте Expect к компиляции: +

+
./configure --prefix=/usr           \
+            --with-tcl=/usr/lib     \
+            --enable-shared         \
+            --mandir=/usr/share/man \
+            --with-tclinclude=/usr/include
+
+

+ Значение параметров настройки: +

+
+
+ --with-tcl=/usr/lib +
+
+

+ Этот параметр необходим для указания configure где + находится скрипт tclConfig.sh. +

+
+
+ --with-tclinclude=/usr/include +
+
+

+ Этот параметр явно указывает Expect, где искать + внутренние заголовки Tcl. +

+
+
+
+

+ Соберите пакет: +

+
make
+

+ Чтобы протестировать пакет, выполните: +

+
make test
+

+ Установите пакет: +

+
make install
+ln -svf expect5.45.4/libexpect5.45.4.so /usr/lib
+
+
+

+ 8.16.2. + Содержимое пакета Expect +

+
+
+
+ Установленные + программы: expect +
+
+ Установленные + библиотеки: libexpect5.45.4.so +
+
+
+
+

+ Краткое описание +

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

+ expect +

+
+

+ Взаимодействует с другими интерактивными + программами в соответствии со сценарием +

+
+

+ libexpect-5.45.4.so +

+
+

+ Содержит функции, которые позволяют использовать + Expect в качестве расширения Tcl или + непосредственно из C или C++ (без Tcl). +

+
+
+
+
+
+
+
+

+ 8.17. DejaGNU-1.6.3 +

+
+
+
+
+
+

+ Пакет DejaGnu содержит + фреймворк для запуска наборов тестов на инструментах GNU. Он + написан на expect, который в свою + очередь использует Tcl + (командный язык инструментов). +

+
+
+
+ Приблизительное время + сборки: 0.1 SBU +
+
+ Требуемое дисковое + пространство: 6.9 + MB +
+
+
+
+
+

+ 8.17.1. Установка пакета DejaGNU +

+

+ Разработчики рекомендуют собирать DejaGNU в отдельном + каталоге: +

+
mkdir -v build
+cd       build
+

+ Подготовьте DejaGNU к компиляции: +

+
../configure --prefix=/usr
+makeinfo --html --no-split -o doc/dejagnu.html ../doc/dejagnu.texi
+makeinfo --plaintext       -o doc/dejagnu.txt  ../doc/dejagnu.texi
+

+ Чтобы протестировать пакет, выполните: +

+
make check
+

+ Установите пакет: +

+
make install
+install -v -dm755  /usr/share/doc/dejagnu-1.6.3
+install -v -m644   doc/dejagnu.{html,txt} /usr/share/doc/dejagnu-1.6.3
+
+
+

+ 8.17.2. + Содержимое пакета DejaGNU +

+
+
+
+ Установленные + программы: dejagnu и + runtest +
+
+
+
+

+ Short Descriptions +

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

+ dejagnu +

+
+

+ Вспомогательная программа запуска команд DejaGNU +

+
+

+ runtest +

+
+

+ Скрипт-обертка, который находит соответствующую + оболочку expect и + запускает DejaGnu +

+
+
+
+
+
+
+
+

+ 8.18. Pkgconf-2.1.1 +

+
+
+
+
+
+

+ Пакет pkgconf является преемником pkg-config и содержит + инструмент, который позволяет передавать пути установки или + пути к библиотекам для инструментов сборки на этапе настройки + (configure) и сборки(make) пакетов. +

+
+
+
+ Приблизительное время + сборки: менее 0.1 + SBU +
+
+ Требуемое дисковое + пространство: 4.6 + MB +
+
+
+
+
+

+ 8.18.1. Установка пакета Pkgconf +

+

+ Подготовьте Pkgconf к компиляции: +

+
./configure --prefix=/usr              \
+            --disable-static           \
+            --docdir=/usr/share/doc/pkgconf-2.1.1
+

+ Скомпилируйте пакет: +

+
make
+

+ Установите пакет: +

+
make install
+

+ Для обеспечения совместимости с исходным Pkg-config, создайте + две символические ссылки: +

+
ln -sv pkgconf   /usr/bin/pkg-config
+ln -sv pkgconf.1 /usr/share/man/man1/pkg-config.1
+
+
+

+ 8.18.2. + Содержимое пакета Pkgconf +

+
+
+
+ Установленные + программы: pkgconf, + pkg-config (ссылка на pkgconf) и bomtool +
+
+ Установленные + библиотеки: libpkgconf.so +
+
+ Созданные каталоги: + /usr/share/doc/pkgconf-2.1.1 +
+
+
+
+

+ Краткое описание +

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

+ pkgconf +

+
+

+ Возвращает метаданные указанной библиотеки или + пакета +

+
+

+ bomtool +

+
+

+ Генерирует спецификацию программного обеспечения из + файлов pkg-config с расширением .pc +

+
+

+ libpkgconf +

+
+

+ Содержит большую часть функций pkgconf, позволяя + другим инструментам, таким как IDE и компиляторы, + использовать его фреймворки +

+
+
+
+
+
+
+
+

+ 8.19. Binutils-2.42 +

+
+
+
+
+
+

+ Пакет Binutils содержит компоновщик, ассемблер и другие + инструменты для работы с объектными файлами. +

+
+
+
+ Приблизительное время + сборки: 2.2 SBU +
+
+ Требуемое дисковое + пространство: 2.7 + GB +
+
+
+
+
+

+ 8.19.1. Установка пакета Binutils +

+

+ Документация Binutils рекомендует выполнять компиляцию в + отдельном каталоге: +

+
mkdir -v build
+cd       build
+

+ Подготовьте Binutils к компиляции: +

+
../configure --prefix=/usr       \
+             --sysconfdir=/etc   \
+             --enable-gold       \
+             --enable-ld=default \
+             --enable-plugins    \
+             --enable-shared     \
+             --disable-werror    \
+             --enable-64-bit-bfd \
+             --with-system-zlib  \
+             --enable-default-hash-style=gnu
+
+

+ Значение новых параметров настройки: +

+
+
+ --enable-gold +
+
+

+ Собирает компоновщик gold и устанавливает его как + ld.gold (вместе с компоновщиком по умолчанию). +

+
+
+ --enable-ld=default +
+
+

+ Собирает оригинальный компоновщик bfd и устанавливает + его как ld (компоновщик по умолчанию) и как ld.bfd +

+
+
+ --enable-plugins +
+
+

+ Включает поддержку плагинов для компоновщика. +

+
+
+ --with-system-zlib +
+
+

+ Указывает, что необходимо использовать установленную + библиотеку zlib вместо сборки собственной. +

+
+
+
+

+ Скомпилируйте пакет: +

+
make tooldir=/usr
+
+

+ Значение параметра make: +

+
+
+ tooldir=/usr +
+
+

+ Обычно для tooldir (каталога, в котором будут + расположены исполняемые файлы) установлено значение + $(exec_prefix)/$(target_alias). + Например, машины x86_64 преобразуют это значение в + /usr/x86_64-unknown-linux-gnu. + Поскольку это пользовательская система, то целевой + каталог в /usr не + требуется. Параметр $(exec_prefix)/$(target_alias) + использовался, если бы система применялась для + кросс-компиляции (например, при компиляции пакета на + компьютере Intel, который генерирует код, который может + быть выполнен на компьютерах PowerPC). +

+
+
+
+
+

+ Важно +

+

+ Набор тестов для Binutils в этом разделе считается + критически важным. Ни в коем случае не пропускайте его. +

+
+

+ Выполните тестирование: +

+
make -k check
+

+ Чтобы получить список неудачных тестов, запустите: +

+
grep '^FAIL:' $(find -name '*.log')
+

+ Двенадцать тестов завершаются неудачно в наборе тестов gold, + когда GCC собирается с параметрами --enable-default-pie и --enable-default-ssp. +

+

+ Установите пакет: +

+
make tooldir=/usr install
+

+ Удалите бесполезные статические библиотеки: +

+
rm -fv /usr/lib/lib{bfd,ctf,ctf-nobfd,gprofng,opcodes,sframe}.a
+
+
+

+ 8.19.2. Содержимое пакета Binutils +

+
+
+
+ Установленные + программы: addr2line, ar, + as, c++filt, dwp, elfedit, gprof, gprofng, ld, ld.bfd, + ld.gold, nm, objcopy, objdump, ranlib, readelf, size, + strings и strip +
+
+ Установленные + библиотеки: libbfd.so, + libctf.so, libctf-nobfd.so, libgprofng.so, libopcodes.so + и libsframe.so +
+
+ Созданные каталоги: + /usr/lib/ldscripts +
+
+
+
+

+ Краткое описание +

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

+ addr2line +

+
+

+ Переводит адреса программ в имена файлов и номера + строк; учитывая адрес и имя исполняемого файла, + использует отладочную информацию в исполняемом + файле, для определения файла исходного кода и + номера строки, ассоциированной с адресом +

+
+

+ ar +

+
+

+ Создаёт, изменяет и распаковывает архивы +

+
+

+ as +

+
+

+ Ассемблер, который собирает результат работы + gcc в + объектные файлы +

+
+

+ c++filt +

+
+

+ Используется компоновщиком для исправления символов + C++ и Java и предотвращения конфликтов + перегруженных функций. +

+
+

+ dwp +

+
+

+ Утилита для упаковки DWARF +

+
+

+ elfedit +

+
+

+ Обновляет ELF заголовки в ELF файлах +

+
+

+ gprof +

+
+

+ Отображает в графическом виде информацию о + профилировании +

+
+

+ gprofng +

+
+

+ Собирает и анализирует данные о производительности +

+
+

+ ld +

+
+

+ Компоновщик, который объединяет несколько объектных + и архивных файлов в один файл, перемещая их данные + и связывая символическими ссылками +

+
+

+ ld.gold +

+
+

+ Урезанная версия ld, которая поддерживает только + формат объектных файлов elf +

+
+

+ ld.bfd +

+
+

+ Жесткая ссылка на ld +

+
+

+ nm +

+
+

+ Выводит список символов, используемых в данном + объектном файле +

+
+

+ objcopy +

+
+

+ Преобразует один тип объектного файла в другой +

+
+

+ objdump +

+
+

+ Отображает информацию о данном объектном файле; + можно указать параметры, определяющие, какая + конкретно информация будет отображаться. + Отображаемая информация полезна для программистов, + которые работают над инструментами, используемыми + при компиляции +

+
+

+ ranlib +

+
+

+ Создает индекс содержимого архива и сохраняет его в + архиве; в индексе перечислены все символы, + определенные в перемещаемых объектных файлах, + содержащихся в архиве +

+
+

+ readelf +

+
+

+ Отображает информацию о двоичных файлах типа ELF +

+
+

+ size +

+
+

+ Отображает размеры секций и общий размер указанных + объектных файлов +

+
+

+ strings +

+
+

+ Выводит для каждого указанного файла + последовательности печатаемых символов, которые + имеют по крайней мере указанную длину (по умолчанию + четыре); для объектных файлов по умолчанию + печатаются только строки из секций инициализации и + загрузки, в то время как для других файлов он + сканирует весь файл. +

+
+

+ strip +

+
+

+ Удаляет символы из объектных файлов +

+
+

+ libbfd +

+
+

+ Библиотека дескрипторов двоичных файлов +

+
+

+ libctf +

+
+

+ Библиотека отладки формата Compat ANSI-C Type +

+
+

+ libctf-nobfd +

+
+

+ Вариант libctf, не использующий функциональность + libbfd. +

+
+

+ libgprofng +

+
+

+ Библиотека, содержащая большинство подпрограмм, + используемых gprofng +

+
+

+ libopcodes +

+
+

+ Библиотека для работы с опкодами—«читаемыми» версиями + инструкций для процессора. Используется для сборки + таких утилит как objdump +

+
+

+ libsframe +

+
+

+ Библиотека для поддержки обратной + онлайн-трассировки с использованием простого + декодера разделов .sframe. +

+
+
+
+
+
+
+
+

+ 8.20. + GMP-6.3.0 +

+
+
+
+
+
+

+ Пакет GMP содержит математические библиотеки. Они содержат + полезные функции для арифметики с произвольной точностью. +

+
+
+
+ Приблизительное время + сборки: 0.3 SBU +
+
+ Требуемое дисковое + пространство: 54 MB +
+
+
+
+
+

+ 8.20.1. Установка пакета GMP +

+
+

+ Примечание +

+

+ Если вы выполняете сборку для 32-разрядной архитектуры x86, + но ваш процессор, способен выполнять 64-разрядный код, + и вы указали в + переменных окружения CFLAGS, + скрипт configure попытается выполнить настройку для + 64-разрядной системы и завершится ошибкой. Чтобы избежать + этого, необходимо вызвать команду configure с приведенным + ниже параметром +

+
ABI=32 ./configure ...
+
+
+

+ Примечание +

+

+ Настройки GMP по умолчанию собирают библиотеки, + оптимизированные для процессора хоста. Если требуются + библиотеки, подходящие для процессоров с меньшей + производительностью, чем у процессора хоста, можно собрать + общие библиотеки, добавив параметр --host=none-linux-gnu в команде + configure. +

+
+

+ Подготовьте GMP к компиляции: +

+
./configure --prefix=/usr    \
+            --enable-cxx     \
+            --disable-static \
+            --docdir=/usr/share/doc/gmp-6.3.0
+
+

+ Значение новых параметров настройки: +

+
+
+ --enable-cxx +
+
+

+ Этот параметр включает поддержку C++ +

+
+
+ --docdir=/usr/share/doc/gmp-6.3.0 +
+
+

+ Эта переменная указывает местоположение для + документации. +

+
+
+
+

+ Скомпилируйте пакет и сгенерируйте HTML-документацию: +

+
make
+make html
+
+

+ Важно +

+

+ Набор тестов для GMP в этом разделе считается критически + важным. Ни в коем случае не пропускайте его. +

+
+

+ Проверьте результаты: +

+
make check 2>&1 | tee gmp-check-log
+
+

+ Внимание +

+

+ Код в GMP сильно оптимизирован для процессора, на котором + он собран. Иногда код, определяющий процессор, неверно + определяет возможности системы, и в тестах или других + приложениях, использующих библиотеки gmp, возникают ошибки + с сообщением Illegal + instruction. В этом случае gmp следует + переконфигурировать с параметром --host=none-linux-gnu и пересобрать. +

+
+

+ Убедитесь, что все 199 тестов в наборе пройдены. Проверьте + результат, выполнив следующую команду: +

+
awk '/# PASS:/{total+=$3} ; END{print total}' gmp-check-log
+

+ Установите пакет и его документацию: +

+
make install
+make install-html
+
+
+

+ 8.20.2. + Содержимое пакета GMP +

+
+
+
+ Установленные + библиотеки: libgmp.so и + libgmpxx.so +
+
+ Созданные каталоги: + /usr/share/doc/gmp-6.3.0 +
+
+
+
+

+ Краткое описание +

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

+ libgmp +

+
+

+ Содержит точные математические функции +

+
+

+ libgmpxx +

+
+

+ Содержит точные математические функции C++ +

+
+
+
+
+
+
+
+

+ 8.21. + MPFR-4.2.1 +

+
+
+
+
+
+

+ Пакет MPFR содержит функции для двоичных вычислений с + плавающей запятой произвольной точности. +

+
+
+
+ Приблизительное время + сборки: 0.3 SBU +
+
+ Требуемое дисковое + пространство: 44 MB +
+
+
+
+
+

+ 8.21.1. Установка пакета MPFR +

+

+ Подготовьте MPFR к компиляции: +

+
./configure --prefix=/usr        \
+            --disable-static     \
+            --enable-thread-safe \
+            --docdir=/usr/share/doc/mpfr-4.2.1
+

+ Скомпилируйте пакет и сгенерируйте HTML-документацию: +

+
make
+make html
+
+

+ Важно +

+

+ Набор тестов для MPFR в этом разделе считается критически + важным. Ни в коем случае не пропускайте его. +

+
+

+ Выполните тестирование и убедитесь, что все 198 тестов + пройдены: +

+
make check
+

+ Установите пакет и документацию к нему: +

+
make install
+make install-html
+
+
+

+ 8.21.2. + Содержимое пакета MPFR +

+
+
+
+ Установленные + библиотеки: libmpfr.so +
+
+ Созданные каталоги: + /usr/share/doc/mpfr-4.2.1 +
+
+
+
+

+ Краткое описание +

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

+ libmpfr +

+
+

+ Содержит математические функции с произвольной + точностью +

+
+
+
+
+
+
+
+

+ 8.22. + MPC-1.3.1 +

+
+
+
+
+
+

+ Пакет MPC содержит библиотеку для арифметики комплексных + чисел с высокой точностью и правильным округлением + результата. +

+
+
+
+ Приблизительное время + сборки: 0.1 SBU +
+
+ Требуемое дисковое + пространство: 22 MB +
+
+
+
+
+

+ 8.22.1. Установка пакета MPC +

+

+ Подготовьте MPC к компиляции: +

+
./configure --prefix=/usr    \
+            --disable-static \
+            --docdir=/usr/share/doc/mpc-1.3.1
+

+ Скомпилируйте пакет и сгенерируйте HTML-документацию: +

+
make
+make html
+

+ Чтобы протестировать пакет, выполните: +

+
make check
+

+ Установите пакет и документацию к нему: +

+
make install
+make install-html
+
+
+

+ 8.22.2. + Содержимое пакета MPC +

+
+
+
+ Установленные + библиотеки: libmpc.so +
+
+ Созданные каталоги: + /usr/share/doc/mpc-1.3.1 +
+
+
+
+

+ Краткое описание +

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

+ libmpc +

+
+

+ Содержит сложные математические функции +

+
+
+
+
+
+
+
+

+ 8.23. + Attr-2.5.2 +

+
+
+
+
+
+

+ Пакет Attr содержит утилиты для управления расширенными + атрибутами объектов файловой системы. +

+
+
+
+ Приблизительное время + сборки: менее 0.1 + SBU +
+
+ Требуемое дисковое + пространство: 4.2 + MB +
+
+
+
+
+

+ 8.23.1. Установка пакета Attr +

+

+ Подготовьте Attr к компиляции: +

+
./configure --prefix=/usr     \
+            --disable-static  \
+            --sysconfdir=/etc \
+            --docdir=/usr/share/doc/attr-2.5.2
+

+ Скомпилируйте пакет: +

+
make
+

+ Тесты необходимо запускать в файловой системе, которая + поддерживает расширенные атрибуты, например, ext2, ext3 или + ext4. Чтобы протестировать пакет, выполните: +

+
make check
+

+ Установите пакет: +

+
make install
+
+
+

+ 8.23.2. + Содержимое пакета Attr +

+
+
+
+ Установленные + программы: attr, getfattr, + и setfattr +
+
+ Установленные + библиотеки: libattr.so +
+
+ Созданные каталоги: + /usr/include/attr и + /usr/share/doc/attr-2.5.2 +
+
+
+
+

+ Краткое описание +

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

+ attr +

+
+

+ Расширяет атрибуты объектов файловой системы +

+
+

+ getfattr +

+
+

+ Получает расширенные атрибуты объектов файловой + системы +

+
+

+ setfattr +

+
+

+ Устанавливает расширенные атрибуты объектов + файловой системы +

+
+

+ libattr +

+
+

+ Содержит библиотечные функции для управления + расширенными атрибутами. +

+
+
+
+
+
+
+
+

+ 8.24. + Acl-2.3.2 +

+
+
+
+
+
+

+ Пакет Acl содержит утилиты для администрирования списков + контроля доступа, которые используются для определения + расширенных дискреционных прав доступа к файлам и каталогам. +

+
+
+
+ Приблизительное время + сборки: менее 0.1 + SBU +
+
+ Требуемое дисковое + пространство: 6.3 + MB +
+
+
+
+
+

+ 8.24.1. Установка пакета Acl +

+

+ Подготовьте Acl к компиляции: +

+
./configure --prefix=/usr         \
+            --disable-static      \
+            --docdir=/usr/share/doc/acl-2.3.2
+

+ Скомпилируйте пакет: +

+
make
+

+ Тесты Acl необходимо запускать в файловой системе, + поддерживающей списки контроля доступа, после сборки пакета + Coreutils с использованием + библиотек Acl. По желанию вернитесь к этому пакету и + запустите make + check после того, как будет собран пакет + Coreutils. +

+

+ Установите пакет: +

+
make install
+
+
+

+ 8.24.2. + Содержимое пакета Acl +

+
+
+
+ Установленные + программы: chacl, getfacl, + и setfacl +
+
+ Установленные + библиотеки: libacl.so +
+
+ Созданные каталоги: + /usr/include/acl и + /usr/share/doc/acl-2.3.2 +
+
+
+
+

+ Краткое описание +

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

+ chacl +

+
+

+ Изменяет список контроля доступа файла или каталога +

+
+

+ getfacl +

+
+

+ Получает списки контроля доступа файла +

+
+

+ setfacl +

+
+

+ Устанавливает списки контроля доступа к файлам +

+
+

+ libacl +

+
+

+ Содержит библиотечные функции для управления + списками контроля доступа. +

+
+
+
+
+
+
+
+

+ 8.25. + Libcap-2.69 +

+
+
+
+
+
+

+ Пакет Libcap реализует интерфейсы пользовательского + пространства для возможностей POSIX 1003.1e, доступных в + ядрах Linux. Эти возможности разделяют полномочия + суперпользователя root на набор отдельных привилегий. +

+
+
+
+ Приблизительное время + сборки: менее 0.1 + SBU +
+
+ Требуемое дисковое + пространство: 2.9 + MB +
+
+
+
+
+

+ 8.25.1. Установка пакета Libcap +

+

+ Запретите установку статических библиотек: +

+
sed -i '/install -m.*STA/d' libcap/Makefile
+

+ Скомпилируйте пакет: +

+
make prefix=/usr lib=lib
+
+

+ Значение опции make: +

+
+
+ lib=lib +
+
+

+ Этот параметр устанавливает библиотеки в каталог + /usr/lib, а не + /usr/lib64 на x86_64. На + x86 это никак не влияет. +

+
+
+
+

+ Чтобы протестировать пакет, выполните: +

+
make test
+

+ Установите пакет: +

+
make prefix=/usr lib=lib install
+
+
+

+ 8.25.2. + Содержимое пакета Libcap +

+
+
+
+ Установленные + программы: capsh, getcap, + getpcaps и setcap +
+
+ Установленные + библиотеки: libcap.so и + libpsx.so +
+
+
+
+

+ Краткое описание +

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

+ capsh +

+
+

+ Обёртка к оболочке для исследования и ограничения + поддержки возможностей Linux +

+
+

+ getcap +

+
+

+ Проверяет возможности файлов +

+
+

+ getpcaps +

+
+

+ Отображает возможности запрашиваемого процесса + (процессов) +

+
+

+ setcap +

+
+

+ Устанавливает возможности файлов +

+
+

+ libcap +

+
+

+ Содержит функции для управления возможностями POSIX + 1003.1e. +

+
+

+ libpsx +

+
+

+ Содержит функции для поддержки семантики POSIX для + системных вызовов, связанных с библиотекой pthread +

+
+
+
+
+
+
+
+

+ 8.26. Libxcrypt-4.4.36 +

+
+
+
+
+
+

+ Пакет Libxcrypt содержит современную библиотеку для + одностороннего хэширования паролей. +

+
+
+
+ Приблизительное время + сборки: 0.1 SBU +
+
+ Требуемое дисковое + пространство: 15 MB +
+
+
+
+
+

+ 8.26.1. Установка пакета Libxcrypt +

+

+ Подготовьте Libxcrypt к компиляции: +

+
./configure --prefix=/usr                \
+            --enable-hashes=strong,glibc \
+            --enable-obsolete-api=no     \
+            --disable-static             \
+            --disable-failure-tokens
+
+

+ Значение новых параметров настройки: +

+
+
+ --enable-hashes=strong,glibc +
+
+

+ Создает хэши, используя надежные алгоритмы хэширования, + рекомендуемые для безопасности, и алгоритмы + хэширования, предоставляемые традиционной библиотекой + Glibc libcrypt для + совместимости. +

+
+
+ --enable-obsolete-api=no +
+
+

+ Отключает устаревшие функции API. Они не нужны для + современной системы Linux, собранной из исходного кода. +

+
+
+ --disable-failure-tokens +
+
+

+ Отключает признак токена сбоя. Он необходим для + совместимости с традиционными хэш-библиотеками + некоторых платформ, но система Linux, основанная на + Glibc, в нем не нуждается. +

+
+
+
+

+ Скомпилируйте пакет: +

+
make
+

+ Чтобы протестировать пакет, выполните: +

+
make check
+

+ Установите пакет: +

+
make install
+
+

+ Примечание +

+

+ С помощью приведенных выше инструкций были отключены + устаревшие функции API, поскольку ни один пакет, + установленный путем компиляции из исходных кодов, не будет + связываться с ними во время выполнения. Однако известные + двоичные приложения, которые используют эти функции, + требуют ABI версии 1. Если вам необходим этот функционал + для какого-либо приложения, предоставляемого только в + бинарном виде, или для совместимости с LSB, соберите пакет + заново с помощью следующих команд: +

+
make distclean
+./configure --prefix=/usr                \
+            --enable-hashes=strong,glibc \
+            --enable-obsolete-api=glibc  \
+            --disable-static             \
+            --disable-failure-tokens
+make
+cp -av --remove-destination .libs/libcrypt.so.1* /usr/lib
+
+
+
+

+ 8.26.2. Содержимое пакета Libxcrypt +

+
+
+
+ Установленные + библиотеки: libcrypt.so +
+
+
+
+

+ Краткое описание +

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

+ libcrypt +

+
+

+ Содержит функции для хэширования паролей +

+
+
+
+
+
+
+
+

+ 8.27. + Shadow-4.14.5 +

+
+
+
+
+
+

+ Пакет Shadow содержит программы для безопасной обработки + паролей. +

+
+
+
+ Приблизительное время + сборки: 0.1 SBU +
+
+ Требуемое дисковое + пространство: 49 MB +
+
+
+
+
+

+ 8.27.1. Установка пакета Shadow +

+
+

+ Примечание +

+

+ Если вы хотите принудительно использовать надежные пароли, + обратитесь к инструкции + https://mirror.linuxfromscratch.ru/blfs/view/12.1/postlfs/cracklib.html + для установки CrackLib перед сборкой. Затем добавьте + параметр --with-libcrack в приведенную + ниже команду configure. +

+
+

+ Отключите установку groups и ее справочных + страниц, так как Coreutils предоставляет версию лучше. Кроме + того, запретите установку страниц руководств, так как они + были установлены в Раздел 8.3, «Man-pages-6.06»: +

+
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 / /'   {} \;
+

+ Вместо + используемого по умолчанию метода crypt, используйте более + безопасный метод шифрования паролей YESCRYPT, который также позволяет + использовать пароли длиннее 8 символов. Также необходимо + изменить устаревшее местоположение для почтовых ящиков + пользователей /var/spool/mail, + которое Shadow использует по умолчанию, на используемое в + настоящее время /var/mail. И + удалите /bin и /sbin из PATH, + поскольку они являются просто символическими ссылками на их + аналоги в /usr. +

+
+

+ Примечание +

+

+ Если вы по какой-либо причине хотите включить /bin и/или /sbin в PATH, + измените PATH в файле + .bashrc после сборки LFS. +

+
+
sed -e 's:#ENCRYPT_METHOD DES:ENCRYPT_METHOD YESCRYPT:' \
+    -e 's:/var/spool/mail:/var/mail:'                 \
+    -e '/PATH=/{s@/sbin:@@;s@/bin:@@}'                \
+    -i etc/login.defs
+
+

+ Примечание +

+

+ Если вы решили собрать Shadow с поддержкой Cracklib, + выполните эту команду: +

+
sed -i 's:DICTPATH.*:DICTPATH\t/lib/cracklib/pw_dict:' etc/login.defs
+
+

+ Подготовьте Shadow к компиляции: +

+
touch /usr/bin/passwd
+./configure --sysconfdir=/etc \
+            --disable-static  \
+            --with-{b,yes}crypt \
+            --without-libbsd    \
+            --with-group-name-max-length=32
+
+

+ Значение новых параметров конфигурации: +

+
+
+ touch + /usr/bin/passwd +
+
+

+ Файл /usr/bin/passwd + должен существовать, потому что его местоположение + жестко задано в некоторых программах; если он не + существует, скрипт установки создаст его не в том + месте. +

+
+
+ --with-{b,yes}crypt +
+
+

+ Оболочка расширяет это значение до двух параметров: + --with-bcrypt и + --with-yescrypt. Они + позволяют Shadow использовать алгоритмы Bcrypt и + Yescrypt, реализованные в Libxcrypt, для хеширования + паролей. Эти алгоритмы более безопасны (в частности, + гораздо более устойчивы к атакам с использованием + графических процессоров), чем традиционные алгоритмы + SHA. +

+
+
+ --with-group-name-max-length=32 +
+
+

+ Максимально допустимая длина имени пользователя + составляет 32 символа. Сделайте такую же длину для + названия группы. +

+
+
+ --without-libbsd +
+
+

+ Не используйте функцию readpassphrase из иблиотеки + libbsd, которой нет в LFS. Вместо этого используйте + внутреннюю копию. +

+
+
+
+

+ Скомпилируйте пакет: +

+
make
+

+ С этим пакетом не поставляется набор тестов. +

+

+ Установите пакет: +

+
make exec_prefix=/usr install
+make -C man install-man
+
+
+

+ 8.27.2. Настройка + Shadow +

+

+ Этот пакет содержит утилиты для добавления, изменения и + удаления пользователей и групп; установки и изменения их + паролей; и выполнения других задач администрирования. Полное + объяснение того, что означает password shadowing, см. в файле + doc/HOWTO в дереве распакованных исходных текстов. При + использовании Shadow имейте в виду, что программы, которым + необходимо проверять пароли (дисплейные менеджеры, + FTP-программы, демоны pop3 и т.д.), должны быть совместимы с + Shadow. То есть они должны уметь работать с теневыми + паролями. +

+

+ Чтобы включить поддержку теневых паролей, выполните следующую + команду:: +

+
pwconv
+

+ Чтобы включить использование теневых паролей для групп, + запустите: +

+
grpconv
+

+ Конфигурация Shadow по умолчанию для утилиты useradd имеет несколько + особенностей, требующих пояснения. Во-первых, по умолчанию + утилита useradd + создает пользователя и группу с тем же названием, что и имя + пользователя. По умолчанию, идентификатора пользователя (UID) + и идентификатора группы (GID) начинаются с 1000. Это + означает, что если вы не передадите дополнительные параметры + в useradd, + каждый пользователь будет членом уникальной группы в системе. + Если такое поведение нежелательно, вам нужно передать один из + параметров -g или + -N в useradd или изменить + настройку USERGROUPS_ENAB в файле + /etc/login.defs. Смотрите + справочную страницу useradd(8) для + получения дополнительной информации. +

+

+ Во-вторых, чтобы изменить параметры по умолчанию, необходимо + создать файл /etc/default/useradd и настроить его в + соответствии с вашими потребностями. Создайте его: +

+
mkdir -p /etc/default
+useradd -D --gid 999
+
+

+ Пояснения к параметрам /etc/default/useradd +

+
+
+ GROUP=999 +
+
+

+ Этот параметр задает начальный номер группы, + используемых в файле /etc/group. Значение 999 берется из + приведенного выше параметра --gid. Вы можете + установить любое значение. Обратите внимание, что + useradd + никогда не будет повторно использовать UID или GID. + Если номер, указанный в этом параметре, уже + используется будет выбран следующий доступный номер. + Также обратите внимание, что если в вашей системе нет + группы с идентификатором, равным этому номеру, при + первом использовании useradd без параметра + -g — вы + получите следующее сообщение об ошибке: useradd: unknown GID 999, даже + если учетная запись была создана правильно. Поэтому мы + создали группу users с + этим идентификатором в Раздел 7.6, + «Создание основных файлов и символических ссылок». +

+
+
+ CREATE_MAIL_SPOOL=yes +
+
+

+ Этот параметр заставит утилиту useradd создавать + файл почтового ящика для каждого нового пользователя. + useradd + сделает этот файл принадлежащим группе mail с правами доступа 0660. Если + вы предпочитаете, не создавать эти файлы, выполните + следующую команду: +

+
sed -i '/MAIL/s/yes/no/' /etc/default/useradd
+
+
+
+
+
+

+ 8.27.3. Установка пароля пользователя root +

+

+ Придумайте пароль для root и установите командой: +

+
passwd root
+
+
+

+ 8.27.4. + Содержимое пакета Shadow +

+
+
+
+ Установленные + программы: chage, chfn, + chgpasswd, chpasswd, chsh, expiry, faillog, getsubids, + gpasswd, groupadd, groupdel, groupmems, groupmod, grpck, + grpconv, grpunconv, login, logoutd, newgidmap, newgrp, + newuidmap, newusers, nologin, passwd, pwck, pwconv, + pwunconv, sg (ссылка на newgrp), su, useradd, userdel, + usermod, vigr (ссылка на vipw) и vipw +
+
+ Установленные + библиотеки: libsubid.so +
+
+ Созданные каталоги: + /etc/default и + /usr/include/shadow +
+
+
+
+

+ Краткое описание +

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

+ chage +

+
+

+ Используется для изменения максимального количества + дней между обязательными сменами пароля +

+
+

+ chfn +

+
+

+ Используется для изменения полного имени + пользователя и другой информации +

+
+

+ chgpasswd +

+
+

+ Используется для обновления паролей групп в + пакетном режиме. +

+
+

+ chpasswd +

+
+

+ Используется для обновления паролей пользователей в + пакетном режиме. +

+
+

+ chsh +

+
+

+ Используется для изменения оболочки входа для + пользователя. +

+
+

+ expiry +

+
+

+ Проверяет и применяет текущую политику истечения + срока действия пароля +

+
+

+ faillog +

+
+

+ Используется для проверки журнала неудачных попыток + входа в систему, для установки максимального + количества неудачных попыток до блокировки учетной + записи и для сброса счетчика неудачных попыток. +

+
+

+ getsubids +

+
+

+ Используется для перечисления подчиненных + диапазонов идентификаторов для пользователя +

+
+

+ gpasswd +

+
+

+ Используется для добавления и удаления + пользователей и администраторов в группы. +

+
+

+ groupadd +

+
+

+ Создает группу с указанным именем +

+
+

+ groupdel +

+
+

+ Удаляет группу с указанным именем +

+
+

+ groupmems +

+
+

+ Позволяет пользователю управлять своим собственным + списком членов группы без привилегий + суперпользователя +

+
+

+ groupmod +

+
+

+ Используется для изменения имени группы или GID +

+
+

+ grpck +

+
+

+ Проверяет целостность файлов групп /etc/group и /etc/gshadow +

+
+

+ grpconv +

+
+

+ Создает или изменяет файл теневых групп, используя + для этого обычный файл групп +

+
+

+ grpunconv +

+
+

+ Обновляет /etc/group + из /etc/gshadow, а + затем удаляет последний +

+
+

+ login +

+
+

+ Используется системой для того, чтобы пользователь + мог войти в систему +

+
+

+ logoutd +

+
+

+ Это демон, используемый для обеспечения соблюдения + ограничений на время входа в систему и порты +

+
+

+ newgidmap +

+
+

+ Используется для сопоставления gid пространства + имен пользователя +

+
+

+ newgrp +

+
+

+ Используется для изменения GID во время сеанса + входа в систему +

+
+

+ newuidmap +

+
+

+ Используется для сопоставления uid пространства + имен пользователя +

+
+

+ newusers +

+
+

+ Используется для создания или изменения + последовательности учетных записей +

+
+

+ nologin +

+
+

+ Отображает сообщение о том, что учетная запись + недоступна; она предназначена для использования в + качестве оболочки по умолчанию для отключенных + учетных записей +

+
+

+ passwd +

+
+

+ Используется для изменения пароля для учетной + записи пользователя или группы. +

+
+

+ pwck +

+
+

+ Проверяет целостность файлов паролей /etc/passwd и /etc/shadow +

+
+

+ pwconv +

+
+

+ Создает или изменяет файл теневых паролей, + используя для этого обычный файл паролей +

+
+

+ pwunconv +

+
+

+ Обновляет /etc/passwd + из /etc/shadow а + затем удаляет последний +

+
+

+ sg +

+
+

+ Выполняет указанную команду в случае, если у + пользователя идентификатор группы GID совпадает с + идентификатором указанной группы +

+
+

+ su +

+
+

+ Запускает оболочку с заменой идентификаторов + пользователя и группы +

+
+

+ useradd +

+
+

+ Создает нового пользователя с указанным именем, + либо изменяет информацию, задаваемую по умолчанию + для нового пользователя +

+
+

+ userdel +

+
+

+ Удаляет учетную запись указанного пользователя +

+
+

+ usermod +

+
+

+ Используется для изменения имени пользователя, + идентификатора пользователя (UID), оболочки, + группы, домашнего каталога и т.д. +

+
+

+ vigr +

+
+

+ Редактирует файлы /etc/group или /etc/gshadow +

+
+

+ vipw +

+
+

+ Редактирует файлы /etc/passwd или /etc/shadow +

+
+

+ libsubid +

+
+

+ библиотека для обработки подчиненных диапазонов + идентификаторов пользователей и групп +

+
+
+
+
+
+
+
+

+ 8.28. + GCC-13.2.0 +

+
+
+
+
+
+

+ Пакет GCC содержит коллекцию компиляторов GNU, которая + включает компиляторы C и C++. +

+
+
+
+ Приблизительное время + сборки: 42 SBU (с + тестами) +
+
+ Требуемое дисковое + пространство: 5.5 + GB +
+
+
+
+
+

+ 8.28.1. Установка пакета GCC +

+

+ При сборке на x86_64 измените имя каталога по умолчанию для + 64-битных библиотек на «lib»: +

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

+ Документация GCC рекомендует собирать GCC в отдельном + каталоге: +

+
mkdir -v build
+cd       build
+

+ Подготовьте GCC к компиляции: +

+
../configure --prefix=/usr            \
+             LD=ld                    \
+             --enable-languages=c,c++ \
+             --enable-default-pie     \
+             --enable-default-ssp     \
+             --disable-multilib       \
+             --disable-bootstrap      \
+             --disable-fixincludes    \
+             --with-system-zlib
+

+ GCC поддерживает семь различных языков программирования, но + предварительные условия для большинства из них еще не + выполнены. См. страницу + BLFS Book GCC для получения инструкций о том, как собрать + все языки, поддерживаемые GCC +

+
+

+ Значение новых параметров настройки: +

+
+
+ LD=ld +
+
+

+ Этот параметр указывает скрипту configure использовать + ld, установленный программой Binutils, собранной ранее + в этой главе, а не кросс версию, которая использовалась + бы в противном случае. +

+
+
+ --disable-fixincludes +
+
+

+ По умолчанию во время установки GCC некоторые системные + заголовки будут «исправлены» для использования с + GCC. Это не обязательно для современной системы Linux и + потенциально опасно, если пакет будет переустановлен + после установки GCC. Этот параметр не позволяет GCC + «исправлять» заголовки. +

+
+
+ --with-system-zlib +
+
+

+ Этот параметр указывает GCC ссылаться на установленную + в системе копию библиотеки Zlib, а не на собственную + внутреннюю копию. +

+
+
+
+
+

+ Примечание +

+

+ PIE (позиционно-независимые исполняемые файлы) — это + двоичные программы, которые можно загружать в любое место + памяти. Без PIE функция безопасности под названием ASLR + (рандомизация размещения адресного пространства) может + применяться к общим библиотекам, но не к самим исполняемым + файлам. Включение PIE позволяет использовать ASLR для + исполняемых файлов в дополнение к общим библиотекам и + смягчает некоторые атаки, основанные на фиксированных + адресах конфиденциального кода или данных в исполняемых + файлах. +

+

+ SSP (Stack Smashing Protection - защита от разрушения + стека) — это метод, гарантирующий, что стек параметров не + будет поврежден. Повреждение стека может, например, + изменить адрес возврата подпрограммы, тем самым передав + управление какому-то опасному коду (существующему в + программе или общих библиотеках или каким-то образом + внедренному злоумышленником). +

+
+

+ Скомпилируйте пакет: +

+
make
+
+

+ Важно +

+

+ В этом разделе набор тестов для GCC считается важным, но + занимает много времени. Начинающим сборщикам не + рекомендуется пропускать его. Время выполнения тестов можно + значительно сократить, добавив -jx в приведенную ниже + команду make -k + check, где x - количество ядер процессора в + вашей системе. +

+
+

+ Известно, что один набор тестов GCC переполняет стек по + умолчанию, поэтому увеличьте размер стека перед запуском + тестов: +

+
ulimit -s 32768
+

+ Выполните тестирование под непривилегированным пользователем, + но не останавливайтесь на ошибках: +

+
chown -R tester .
+su tester -c "PATH=$PATH make -k check"
+

+ Чтобы получить сводку результатов набора тестов, выполните: +

+
../contrib/test_summary
+

+ Чтобы отфильтровать только итоговую сводку, передайте вывод + через pipe grep -A7 + Summ. +

+

+ Результаты можно сравнить с результатами, размещенными на + https://mirror.linuxfromscratch.ru/lfs/build-logs/12.1/ + и https://gcc.gnu.org/ml/gcc-testresults/. +

+

+ Известно, что восемь тестов gcc (из более чем 185 000): + pr56837.c и семь тестов из + каталога analyzer завершились + неудачно. Также провалился один тест libstdc++ (из более чем + 15 000) — это copy.cc. + Известно, что для g++ 21 тест (из примерно 250 000), 14 + тестов «AddressSanitizer*» и 7 тестов + interception-malloc-test-1.C + завершились неудачно. Кроме того, несколько тестов из + каталога vect завершаются + неудачно, если оборудование не поддерживает AVX. +

+

+ Не всегда удается избежать неожиданных сбоев. Разработчики + GCC обычно знают об этих проблемах, но еще не решили их. Если + результаты теста не сильно отличаются от результатов по + указанному выше URL-адресу, можно продолжать. +

+

+ Установите пакет: +

+
make install
+

+ Каталог сборки GCC теперь принадлежит пользователю + tester, и владелец каталога + заголовочных файлов (и его содержимого) указан неверно. + Измените владельца на пользователя и группу root: +

+
chown -v -R root:root \
+    /usr/lib/gcc/$(gcc -dumpmachine)/13.2.0/include{,-fixed}
+

+ Создайте символическую ссылку, требуемую + FHS по "историческим" причинам. +

+
ln -svr /usr/bin/cpp /usr/lib
+

+ Многие пакеты используют имя cc для вызова компилятора + языка Си. Мы уже создали cc как символическую ссылку + в GCC-Проход 2, теперь + создайте символическую ссылку на его справочную страницу: +

+
ln -sv gcc.1 /usr/share/man/man1/cc.1
+

+ Добавьте символическую ссылку совместимости, чтобы включить + сборку программ с оптимизацией времени компоновки (LTO): +

+
ln -sfv ../../libexec/gcc/$(gcc -dumpmachine)/13.2.0/liblto_plugin.so \
+        /usr/lib/bfd-plugins/
+

+ Теперь, когда наш окончательный набор инструментов готов, + важно еще раз убедиться, что компиляция и компоновка будут + работать так, как ожидалось. Мы сделаем это, выполнив + проверку работоспособности: +

+
echo 'int main(){}' > dummy.c
+cc dummy.c -v -Wl,--verbose &> dummy.log
+readelf -l a.out | grep ': /lib'
+

+ Ошибок быть не должно, и вывод последней команды будет (с + учетом платформо-зависимых различий в имени динамического + компоновщика): +

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

+ Теперь убедитесь, что мы настроили использование правильных + стартовых файлов: +

+
grep -E -o '/usr/lib.*/S?crt[1in].*succeeded' dummy.log
+

+ Вывод последней команды должен быть: +

+
/usr/lib/gcc/x86_64-pc-linux-gnu/13.2.0/../../../../lib/Scrt1.o succeeded
+/usr/lib/gcc/x86_64-pc-linux-gnu/13.2.0/../../../../lib/crti.o succeeded
+/usr/lib/gcc/x86_64-pc-linux-gnu/13.2.0/../../../../lib/crtn.o succeeded
+

+ В зависимости от архитектуры вашего компьютера вышеуказанные + параметры могут незначительно отличаться. Разница будет + заключаться в имени каталога после /usr/lib/gcc. Здесь важно обратить внимание + на то, что gcc + нашел все три файла crt*.o в + каталоге /usr/lib. +

+

+ Убедитесь, что компилятор ищет правильные заголовочные файлы: +

+
grep -B4 '^ /usr/include' dummy.log
+

+ Эта команда должна вернуть следующий вывод: +

+
#include <...> search starts here:
+ /usr/lib/gcc/x86_64-pc-linux-gnu/13.2.0/include
+ /usr/local/include
+ /usr/lib/gcc/x86_64-pc-linux-gnu/13.2.0/include-fixed
+ /usr/include
+

+ Опять же, имя каталога может отличаться от указанного выше, в + зависимости от архитектуры вашей системы. +

+

+ Затем убедитесь, что новый компоновщик использует правильные + пути поиска: +

+
grep 'SEARCH.*/usr/lib' dummy.log |sed 's|; |\n|g'
+

+ Ссылки на пути, содержащие компоненты с '-linux-gnu', следует + игнорировать, но в противном случае вывод последней команды + должен быть таким: +

+
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");
+

+ 32-разрядная система может использовать несколько других + каталогов. Например, вот вывод с компьютера i686: +

+
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");
+

+ Затем убедитесь, что мы используем правильную libc: +

+
grep "/lib.*/libc.so.6 " dummy.log
+

+ Вывод последней команды должен быть: +

+
attempt to open /usr/lib/libc.so.6 succeeded
+

+ Убедитесь, что GCC использует правильный динамический + компоновщик: +

+
grep found dummy.log
+

+ Вывод последней команды должен быть (с учетом различий в + имени динамического компоновщика, зависящих от платформы): +

+
found ld-linux-x86-64.so.2 at /usr/lib/ld-linux-x86-64.so.2
+

+ Если вывод выглядит не так, как показано выше, или вообще не + получен, значит, где-то серьезная ошибка. Изучите и повторите + шаги, чтобы выяснить, в чем проблема, и исправьте ее. Любые + проблемы должны быть решены, прежде чем вы продолжите + процесс. +

+

+ Как только все заработает правильно, удалите тестовые файлы: +

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

+ Наконец, переместите файл: +

+
mkdir -pv /usr/share/gdb/auto-load/usr/lib
+mv -v /usr/lib/*gdb.py /usr/share/gdb/auto-load/usr/lib
+
+
+

+ 8.28.2. + Содержимое пакета GCC +

+
+
+
+ Установленные + программы: c++, cc (link + to gcc), cpp, g++, gcc, gcc-ar, gcc-nm, gcc-ranlib, gcov, + gcov-dump, gcov-tool, и lto-dump +
+
+ Установленные + библиотеки: libasan.{a,so}, libatomic.{a,so}, libcc1.so, + libgcc.a, libgcc_eh.a, libgcc_s.so, libgcov.a, + libgomp.{a,so}, libhwasan.{a,so}, libitm.{a,so}, + liblsan.{a,so}, liblto_plugin.so, libquadmath.{a,so}, + libssp.{a,so}, libssp_nonshared.a, libstdc++.{a,so}, + libstdc++exp.a, libstdc++fs.a, libsupc++.a, + libtsan.{a,so} и libubsan.{a,so} +
+
+ Созданные каталоги: + /usr/include/c++, /usr/lib/gcc, + /usr/libexec/gcc и /usr/share/gcc-13.2.0 +
+
+
+
+

+ Краткое описание +

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

+ c++ +

+
+

+ Компилятор С++ +

+
+

+ cc +

+
+

+ Компилятор C +

+
+

+ cpp +

+
+

+ Препроцессор C; он используется компилятором для + расширения инструкций #include, #define и подобные + директивы в исходных файлах +

+
+

+ g++ +

+
+

+ Компилятор C++ +

+
+

+ gcc +

+
+

+ Компилятор C +

+
+

+ gcc-ar +

+
+

+ Обертка над ar, добавляющая + плагин в командную строку. Эта программа + используется только для добавления "оптимизации + времени компоновки" и бесполезна с параметрами + сборки по умолчанию. +

+
+

+ gcc-nm +

+
+

+ Обертка над nm, добавляющая + плагин в командную строку. Эта программа + используется только для добавления "оптимизации + времени компоновки" и бесполезна с параметрами + сборки по умолчанию. +

+
+

+ gcc-ranlib +

+
+

+ Обертка над ranlib, + добавляющая плагин в командную строку. Эта + программа используется только для добавления + "оптимизации времени компоновки" и бесполезна с + параметрами сборки по умолчанию. +

+
+

+ gcov +

+
+

+ Инструмент тестирования; он используется для + анализа программ, чтобы определить, где оптимизация + будет иметь наибольший эффект. +

+
+

+ gcov-dump +

+
+

+ Автономный инструмент для дампа профилей gcda and + gcno +

+
+

+ gcov-tool +

+
+

+ Автономный инструмент обработки профиля gcda +

+
+

+ lto-dump +

+
+

+ Инструмент для создания дампа объектных файлов, + созданных GCC с включенным LTO. +

+
+

+ libasan +

+
+

+ Библиотека времени выполнения Address Sanitizer +

+
+

+ libatomic +

+
+

+ Встроенная библиотека времени выполнения GCC atomic +

+
+

+ libcc1 +

+
+

+ Библиотека, которая позволяет GDB использовать GCC +

+
+

+ libgcc +

+
+

+ Содержит средства поддержки времени исполнения для + gcc +

+
+

+ libgcov +

+
+

+ Эта библиотека компонуется с программой, когда в + GCC включено профилирование +

+
+

+ libgomp +

+
+

+ GNU реализация интерфейса OpenMP API + мультиплатформенного параллельного программирования + для языков C/C++ и Fortran с общим доступом к + памяти +

+
+

+ libhwasan +

+
+

+ Библиотека времени выполнения Hardware-Assisted + Address Sanitizer (аппаратной очистки адресов) +

+
+

+ libitm +

+
+

+ Библиотека транзакционной памяти GNU +

+
+

+ liblsan +

+
+

+ Библиотека времени выполнения Leak Sanitizer + (средств защиты от утечек) +

+
+

+ liblto_plugin +

+
+

+ Плагин GCC LTO позволяет Binutils обрабатывать + объектные файлы, созданные GCC с включенным LTO. +

+
+

+ libquadmath +

+
+

+ API математической библиотеки GCC Quad Precision +

+
+

+ libssp +

+
+

+ Содержит подпрограммы, поддерживающие + функциональность защиты стека GCC. Обычно они не + используются, потому что Glibc также предоставляет + эти подпрограммы. +

+
+

+ libstdc++ +

+
+

+ Стандартная библиотека C++ +

+
+

+ libstdc++exp +

+
+

+ Экспериментальная библиотека контрактов C++ +

+
+

+ libstdc++fs +

+
+

+ Библиотека файловой системы ISO/IEC TS 18822:2015 +

+
+

+ libsupc++ +

+
+

+ Предоставляет вспомогательные процедуры для языка + программирования C++ +

+
+

+ libtsan +

+
+

+ Библиотека времени выполнения Thread Sanitizer + (средств очистки потоков) +

+
+

+ libubsan +

+
+

+ Библиотека времени выполнения Undefined Behavior + Sanitizer (средств очистки неопределенного + поведения) +

+
+
+
+
+
+
+
+

+ 8.29. Ncurses-6.4-20230520 +

+
+
+
+
+
+

+ Пакет Ncurses содержит библиотеки для независимой от + терминала обработки ввода/вывода +

+
+
+
+ Приблизительное время + сборки: 0.2 SBU +
+
+ Требуемое дисковое + пространство: 45 MB +
+
+
+
+
+

+ 8.29.1. Установка пакета Ncurses +

+

+ Подготовьте Ncurses к компиляции: +

+
./configure --prefix=/usr           \
+            --mandir=/usr/share/man \
+            --with-shared           \
+            --without-debug         \
+            --without-normal        \
+            --with-cxx-shared       \
+            --enable-pc-files       \
+            --enable-widec          \
+            --with-pkg-config-libdir=/usr/lib/pkgconfig
+
+

+ Значение новых параметров настройки: +

+
+
+ --with-shared +
+
+

+ Этот параметр позволяет Ncurses собирать и + устанавливать общие библиотеки C. +

+
+
+ --without-normal +
+
+

+ Этот параметр отключает сборку и установку большинства + статических библиотек C. +

+
+
+ --without-debug +
+
+

+ Этот параметр предотвращает сборку и установку + отладочных библиотек. +

+
+
+ --with-cxx-shared +
+
+

+ Это аргумент позволяет Ncurses собирать и устанавливать + общие привязки C++. А также предотвращает сборку и + установку статических привязок C++. +

+
+
+ --enable-pc-files +
+
+

+ Этот параметр генерирует и устанавливает файлы .pc для + pkg-config. +

+
+
+ --enable-widec +
+
+

+ Этот параметр указывает, что при сборке пакета вместо + обычных библиотек (например, libncurses.so.6.4) будут + использоваться библиотеки с расширенным набором + символов (например, libncursesw.so.6.4). Библиотеки с + расширенным набором символов могут использоваться как с + многобайтовыми локалями, так и с традиционными + 8-битовыми локалями, тогда как обычные библиотеки + работают только с 8-битовыми локалями. Библиотеки с + расширенным набором символов и обычные библиотеки + совместимы на уровне исходного кода, но не совместимыми + на уровне двоичного. +

+
+
+
+

+ Скомпилируйте пакет: +

+
make
+

+ У этого пакета есть набор тестов, но его можно запустить + только после того, как пакет будет установлен. Тесты + находятся в каталоге test/. + Дополнительные сведения смотрите в файле README в этом каталоге. +

+

+ Установка этого пакета приведет к перезаписи libncursesw.so.6.4. Это может привести к + сбою процесса оболочки, который использует код и данные из + файла библиотеки. Установите пакет с помощью DESTDIR и правильно замените файл библиотеки + с помощью команды install(также + отредактирован заголовочный файл curses.h, чтобы обеспечить использование + ABI расширенного набора символов, как это сделано в Раздел 6.3, + «Ncurses-6.4-20230520»). +

+
make DESTDIR=$PWD/dest install
+install -vm755 dest/usr/lib/libncursesw.so.6.4 /usr/lib
+rm -v  dest/usr/lib/libncursesw.so.6.4
+sed -e 's/^#if.*XOPEN.*$/#if 1/' \
+    -i dest/usr/include/curses.h
+cp -av dest/* /
+

+ Многие приложения ожидают, что компоновщик может найти + библиотеки Ncurses, не поддерживающие расширенный набор + символов. Используя трюк ниже, свяжите такие приложения с + библиотеками расширенного набора символов с помощью + символических ссылок (обратите внимание, что ссылки + .so безопасны только в том + случае, если curses.h + отредактирован так, чтобы всегда использовать ABI + расширенного набора символов): +

+
for lib in ncurses form panel menu ; do
+    ln -sfv lib${lib}w.so /usr/lib/lib${lib}.so
+    ln -sfv ${lib}w.pc    /usr/lib/pkgconfig/${lib}.pc
+done
+

+ Убедитесь, что старые приложения, которым нужна -lcurses для сборки, собираются правильно: +

+
ln -sfv libncursesw.so /usr/lib/libcurses.so
+

+ По желанию установите документацию Ncurses: +

+
cp -v -R doc -T /usr/share/doc/ncurses-6.4-20230520
+
+

+ Примечание +

+

+ С помощью приведенных выше инструкций не создаются + библиотеки Ncurses, не использующие расширенный набор + символов, поскольку ни один пакет, установленный путем + компиляции из исходного кода, не будет связан с ними во + время выполнения. Тем не менее, известно что некоторые + бинарные приложения, которые связаны с библиотекой Ncurses + и не поддерживающие расширенный набор символов, требуют + наличия версии 5. Если вам необходимо иметь такие + библиотеки из-за какого-либо приложения, имеющегося только + в бинарном виде, или для обеспечения совместимости с LSB, + соберите пакет с помощью следующих команд: +

+
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
+
+
+
+

+ 8.29.2. + Содержимое пакета Ncurses +

+
+
+
+ Установленные + программы: captoinfo + (ссылка на tic), clear, infocmp, infotocap (ссылка на + tic), ncursesw6-config, reset (ссылка на tset), tabs, + tic, toe, tput и tset +
+
+ Установленные + библиотеки: libcurses.so + (символическая ссылка), libform.so (символическая + ссылка), libformw.so, libmenu.so (символическая ссылка), + libmenuw.so, libncurses.so (символическая ссылка), + libncursesw.so, libncurses++w.so, libpanel.so + (символическая ссылка) и libpanelw.so, +
+
+ Созданные каталоги: + /usr/share/tabset, + /usr/share/terminfo и + /usr/share/doc/ncurses-6.4-20230520 +
+
+
+
+

+ Краткое описание +

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

+ captoinfo +

+
+

+ Преобразует описание termcap в описание terminfo +

+
+

+ clear +

+
+

+ Очищает экран, если это возможно +

+
+

+ infocmp +

+
+

+ Сравнивает или показывает описания terminfo +

+
+

+ infotocap +

+
+

+ Преобразует описание terminfo в описание termcap +

+
+

+ ncursesw6-config +

+
+

+ Предоставляет информацию о конфигурации пакету + ncurses +

+
+

+ reset +

+
+

+ Повторно инициализирует терминал со значениями по + умолчанию +

+
+

+ tabs +

+
+

+ Очищает и устанавливает размеры табуляции в + терминале +

+
+

+ tic +

+
+

+ Компилятор описания terminfo, преобразует файл + terminfo из исходного формата в двоичный, который + необходим для подпрограмм библиотеки ncurses [Файл + terminfo содержит информацию о возможностях + конкретного терминала.] +

+
+

+ toe +

+
+

+ Выводит список всех доступных типов терминалов, для + каждого из которых указывается его имя и приводится + описание +

+
+

+ tput +

+
+

+ Позволяет использовать в командной оболочке + настройки, относящиеся к особенностям конкретного + терминала; может также использоваться для сброса + или инициализации терминала, либо для вывода + полного имени терминала +

+
+

+ tset +

+
+

+ Может использоваться для инициализации терминалов +

+
+

+ libncursesw +

+
+

+ Содержит функции, отображающие различными способами + текст на экране терминала. Хорошим примером + использования этих функций является меню, + отображаемое командой make menuconfig + при настройке ядра +

+
+

+ libncurses++w +

+
+

+ Содержит функции связывания C++ с другими + библиотеками в пакете +

+
+

+ libformw +

+
+

+ Содержит функции, реализующие формы +

+
+

+ libmenuw +

+
+

+ Содержит функции, реализующие меню +

+
+

+ libpanelw +

+
+

+ Содержит функции, реализующие панели +

+
+
+
+
+
+
+
+

+ 8.30. + Sed-4.9 +

+
+
+
+
+
+

+ Пакет Sed содержит потоковый редактор текста +

+
+
+
+ Приблизительное время + сборки: 0.3 SBU +
+
+ Требуемое дисковое + пространство: 30 MB +
+
+
+
+
+

+ 8.30.1. Установка пакета Sed +

+

+ Подготовьте Sed к компиляции: +

+
./configure --prefix=/usr
+

+ Скомпилируйте пакет и сгенерируйте HTML-документацию: +

+
make
+make html
+

+ Чтобы протестировать пакет, выполните: +

+
chown -R tester .
+su tester -c "PATH=$PATH make check"
+

+ Установите пакет и документацию к нему: +

+
make install
+install -d -m755           /usr/share/doc/sed-4.9
+install -m644 doc/sed.html /usr/share/doc/sed-4.9
+
+
+

+ 8.30.2. + Содержимое пакета Sed +

+
+
+
+ Установленные + программы: sed +
+
+ Созданные каталоги: + /usr/share/doc/sed-4.9 +
+
+
+
+

+ Краткое описание +

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

+ sed +

+
+

+ Фильтрует и преобразует текстовые файлы за один + проход +

+
+
+
+
+
+
+
+

+ 8.31. + Psmisc-23.6 +

+
+
+
+
+
+

+ Пакет Psmisc содержит программы для отображения информации о + запущенных процессах. +

+
+
+
+ Приблизительное время + сборки: менее 0.1 + SBU +
+
+ Требуемое дисковое + пространство: 6.6 + MB +
+
+
+
+
+

+ 8.31.1. Установка пакета Psmisc +

+

+ Подготовьте Psmisc к компиляции: +

+
./configure --prefix=/usr
+

+ Скомпилируйте пакет: +

+
make
+

+ Чтобы протестировать пакет, выполните: +

+
make check
+

+ Установите пакет: +

+
make install
+
+
+

+ 8.31.2. + Содержимое пакета Psmisc +

+
+
+
+ Установленные + программы: fuser, killall, + peekfd, prtstat, pslog, pstree и pstree.x11 (ссылка на + pstree) +
+
+
+
+

+ Краткое описание +

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

+ fuser +

+
+

+ Сообщает идентификаторы процессов (PID), которые + используют данные файлы или файловые системы. +

+
+

+ killall +

+
+

+ Уничтожает процессы по имени; посылает сигнал всем + процессам, выполняющим любую из заданных команд +

+
+

+ peekfd +

+
+

+ Просмотривает файловые дескрипторы запущенного + процесса с учетом его PID +

+
+

+ prtstat +

+
+

+ Выводит информацию о процессе +

+
+

+ pslog +

+
+

+ Сообщает текущий путь к журналам процесса +

+
+

+ pstree +

+
+

+ Отображает запущенные процессы в виде дерева +

+
+

+ pstree.x11 +

+
+

+ То же, что и pstree, за + исключением того, что он ожидает подтверждения + перед выходом. +

+
+
+
+
+
+
+
+

+ 8.32. Gettext-0.22.4 +

+
+
+
+
+
+

+ Пакет Gettext содержит утилиты для интернационализации и + локализации. Они позволяют компилировать программы с + поддержкой NLS (Native Language Support), позволяя им + выводить сообщения на родном языке пользователя. +

+
+
+
+ Приблизительное время + сборки: 1.4 SBU +
+
+ Требуемое дисковое + пространство: 250 + MB +
+
+
+
+
+

+ 8.32.1. Установка пакета Gettext +

+

+ Подготовьте Gettext для компиляции: +

+
./configure --prefix=/usr    \
+            --disable-static \
+            --docdir=/usr/share/doc/gettext-0.22.4
+

+ Скомпилируйте пакет: +

+
make
+

+ Чтобы протестировать пакет (это занимает много времени, около + 3 SBU), выполните: +

+
make check
+

+ Установите пакет: +

+
make install
+chmod -v 0755 /usr/lib/preloadable_libintl.so
+
+
+

+ 8.32.2. + Содержимое пакета Gettext +

+
+
+
+ Установленные + программы: autopoint, + envsubst, gettext, gettext.sh, gettextize, msgattrib, + msgcat, msgcmp, msgcomm, msgconv, msgen, msgexec, + msgfilter, msgfmt, msggrep, msginit, msgmerge, msgunfmt, + msguniq, ngettext, recode-sr-latin, и xgettext +
+
+ Установленные + библиотеки: libasprintf.so, libgettextlib.so, + libgettextpo.so, libgettextsrc.so, libtextstyle.so и + preloadable_libintl.so +
+
+ Созданные каталоги: + /usr/lib/gettext, + /usr/share/doc/gettext-0.22.4, /usr/share/gettext и + /usr/share/gettext-0.22.4 +
+
+
+
+

+ Краткое описание +

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

+ autopoint +

+
+

+ Копирует файлы стандартной инфраструктуры Gettext в + пакет с исходным кодом +

+
+

+ envsubst +

+
+

+ Подставляет переменные окружения в строки, + используемые командной оболочкой +

+
+

+ gettext +

+
+

+ Переводит сообщение с естественного языка на язык + пользователя, осуществляя для этого поиск уже + сделанного перевода в каталоге сообщений +

+
+

+ gettext.sh +

+
+

+ В основном служит библиотекой функций оболочки для + gettext. +

+
+

+ gettextize +

+
+

+ Копирует все стандартные файлы Gettext в указанный + каталог верхнего уровня пакета, чтобы начать его + интернационализацию. +

+
+

+ msgattrib +

+
+

+ Фильтрует сообщения каталога переводов в + соответствии с их атрибутами и управляет атрибутами +

+
+

+ msgcat +

+
+

+ Объединяет указанные файлы .po +

+
+

+ msgcmp +

+
+

+ Сравнивает два файла .po, чтобы проверить, что оба + содержат один и тот же набор строк msgid +

+
+

+ msgcomm +

+
+

+ Находит сообщения, которые являются общими для + указанных файлов .po +

+
+

+ msgconv +

+
+

+ Преобразует каталог переводов в другую кодировку + символов +

+
+

+ msgen +

+
+

+ Создает каталог переводов на английский язык +

+
+

+ msgexec +

+
+

+ Применяет команду ко всем переводам каталога + переводов +

+
+

+ msgfilter +

+
+

+ Применяет фильтр ко всем переводам каталога + переводов +

+
+

+ msgfmt +

+
+

+ Генерирует каталог двоичных сообщений из каталога + переводов +

+
+

+ msggrep +

+
+

+ Извлекает все сообщения каталога переводов, которые + соответствуют заданному шаблону или принадлежат + нескольким указанным исходным файлам +

+
+

+ msginit +

+
+

+ Создает новый файл .po, инициализируя метаинформацию + значениями из среды пользователя. +

+
+

+ msgmerge +

+
+

+ Объединяет два необработанных перевода в один файл +

+
+

+ msgunfmt +

+
+

+ Декомпилирует каталог двоичных сообщений в + необработанный текст перевода +

+
+

+ msguniq +

+
+

+ Объединяет дублирующиеся переводы в каталоге + переводов +

+
+

+ ngettext +

+
+

+ Отображает перевод текстового сообщения на родной + язык, грамматическая форма которого зависит от + числа. +

+
+

+ recode-sr-latin +

+
+

+ Перекодирует сербский текст с кириллицы на + латиницу. +

+
+

+ xgettext +

+
+

+ Извлекает переводимые строки сообщений из заданных + исходных файлов для создания первого шаблона + перевода. +

+
+

+ libasprintf +

+
+

+ Определяет класс autosprintf, который + делает подпрограммы вывода в формате C пригодными + для использования в программах на C++ для + использования со строками <string> и + потоками <iostream> +

+
+

+ libgettextlib +

+
+

+ Содержит общие подпрограммы, используемые + различными программами Gettext; они не + предназначены для общего использования +

+
+

+ libgettextpo +

+
+

+ Используется для написания специализированных + программ, обрабатывающих файлы .po; эта библиотека используется, + когда стандартных приложений, поставляемых с + Gettext (таких как msgcomm, + msgcmp, + msgattrib, и + msgen), + недостаточно. +

+
+

+ libgettextsrc +

+
+

+ Предоставляет общие подпрограммы, используемые + различными программами Gettext; они не + предназначены для общего использования +

+
+

+ libtextstyle +

+
+

+ Библиотека стилей текста +

+
+

+ preloadable_libintl +

+
+

+ Библиотека, предназначенная для использования + LD_PRELOAD, которая помогает libintl записывать в журнал + непереведённые сообщения +

+
+
+
+
+
+
+
+

+ 8.33. + Bison-3.8.2 +

+
+
+
+
+
+

+ Пакет Bison содержит генератор синтаксического анализа. +

+
+
+
+ Приблизительное время + сборки: 2.3 SBU +
+
+ Требуемое дисковое + пространство: 62 MB +
+
+
+
+
+

+ 8.33.1. Установка пакета Bison +

+

+ Подготовьте Bison к компиляции: +

+
./configure --prefix=/usr --docdir=/usr/share/doc/bison-3.8.2
+

+ Скомпилируйте пакет: +

+
make
+

+ Для тестирования пакета (около 5,5 SBU), выполните: +

+
make check
+

+ Установите пакет: +

+
make install
+
+
+

+ 8.33.2. + Содержимое пакета Bison +

+
+
+
+ Установленные + программы: bison и + yacc +
+
+ Установленные + библиотеки: liby.a +
+
+ Созданные каталоги: + /usr/share/bison +
+
+
+
+

+ Краткое описание +

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

+ bison +

+
+

+ Генерирует из набора правил программу для анализа + структуры текстовых файлов; Bison является заменой + Yacc (Yet Another Compiler Compiler) +

+
+

+ yacc +

+
+

+ Обертка для bison, + предназначенная для программ, которые до сих пор + вызывают yacc вместо + bison; он + вызывает bison с + параметром -y +

+
+

+ liby +

+
+

+ Библиотека Yacc, содержащая реализации + Yacc-совместимых функций yyerror и main; обычно эта библиотека не + очень нужна, но требуется POSIX +

+
+
+
+
+
+
+
+

+ 8.34. + Grep-3.11 +

+
+
+
+
+
+

+ Пакет Grep содержит программы для поиска по содержимому + файлов. +

+
+
+
+ Приблизительное время + сборки: 0.4 SBU +
+
+ Требуемое дисковое + пространство: 39 MB +
+
+
+
+
+

+ 8.34.1. Установка пакета Grep +

+

+ Во-первых, удалите предупреждение об использовании egrep и + fgrep, которое приводит к сбою тестов некоторых пакетов: +

+
sed -i "s/echo/#echo/" src/egrep.sh
+

+ Подготовьте Grep к компиляции: +

+
./configure --prefix=/usr
+

+ Скомпилируйте пакет: +

+
make
+

+ Чтобы протестировать пакет, выполните: +

+
make check
+

+ Установите пакет: +

+
make install
+
+
+

+ 8.34.2. + Содержимое пакета Grep +

+
+
+
+ Установленные + программы: egrep, fgrep, и + grep +
+
+
+
+

+ Краткое описание +

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

+ egrep +

+
+

+ Выводит строки, соответствующие расширенному + регулярному выражению. Команда устарела, вместо неё + используйте grep + -E +

+
+

+ fgrep +

+
+

+ Выводит строки, соответствующие списку + фиксированных строк. Команда устарела, вместо неё + используйте grep + -F +

+
+

+ grep +

+
+

+ Выводит строки, соответствующие простому + регулярному выражению +

+
+
+
+
+
+
+
+

+ 8.35. + Bash-5.2.21 +

+
+
+
+
+
+

+ Пакет Bash содержит Bourne-Again Shell. +

+
+
+
+ Приблизительное время + сборки: 1.2 SBU +
+
+ Требуемое дисковое + пространство: 52 MB +
+
+
+
+
+

+ 8.35.1. Установка пакета Bash +

+

+ Во-первых, исправьте некоторые проблемы, выявленные + разработчиками: +

+
patch -Np1 -i ../bash-5.2.21-upstream_fixes-1.patch
+

+ Подготовьте Bash к компиляции: +

+
./configure --prefix=/usr             \
+            --without-bash-malloc     \
+            --with-installed-readline \
+            --docdir=/usr/share/doc/bash-5.2.21
+
+

+ Значение нового параметра настройки: +

+
+
+ --with-installed-readline +
+
+

+ Этот параметр указывает Bash использовать библиотеку + readline, которая уже + установлена в системе, а не собственную версию + readline. +

+
+
+
+

+ Скомпилируйте пакет: +

+
make
+

+ Перейдите к разделу «Установка пакета», если не планируете + запускать тесты. +

+

+ Перед запуском тестов, убедитесь, что пользователь + tester может писать в каталог + с исходниками: +

+
chown -R tester .
+

+ Набор тестов пакета предназначен для запуска пользователем + без полномочий root, которому принадлежит терминал, + подключенный к стандартному вводу. Чтобы удовлетворить это + требование, создайте новый псевдотерминал с помощью + Expect и запустите тесты от + имени пользователя tester: +

+
su -s /usr/bin/expect tester << "EOF"
+set timeout -1
+spawn make tests
+expect eof
+lassign [wait] _ _ _ value
+exit $value
+EOF
+

+ Набор тестов использует diff для определения + разницы между выводом тестового сценария и ожидаемым + результатом. Любой вывод diff (с префиксом + < и >) указывает на сбой теста, если + нет сообщение о том, что различия можно проигнорировать. + Известно, что один тест с именем run-builtins не работает на некоторых + хост-дистрибутивах, указывая на различия в первой строке + выходных данных. +

+

+ Установите пакет: +

+
make install
+

+ Запустите только что скомпилированную программу bash (заменив ту, которая + выполняется в данный момент): +

+
exec /usr/bin/bash --login
+
+
+

+ 8.35.2. + Содержимое пакета Bash +

+
+
+
+ Установленные + программы: bash, bashbug и + sh (ссылка на bash) +
+
+ Созданные каталоги: + /usr/include/bash, /usr/lib/bash, + and /usr/share/doc/bash-5.2.21 +
+
+
+
+

+ Краткое описание +

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

+ bash +

+
+

+ Широко распространенный командный интерпретатор. + Выполняет различные дополнения и подстановки в + переданной командной строке перед её выполнением, + что делает этот интерпретатор мощным инструментом +

+
+

+ bashbug +

+
+

+ Скрипт, помогающий пользователю составлять и + отправлять по почте отчеты об ошибках bash +

+
+

+ sh +

+
+

+ Симлинк на программу bash; при вызове + sh, + bash + пытается максимально точно имитировать поведение + sh, + при этом также соответствуя стандарту POSIX. +

+
+
+
+
+
+
+
+

+ 8.36. Libtool-2.4.7 +

+
+
+
+
+
+

+ Пакет Libtool содержит сценарий поддержки универсальной + библиотеки GNU. Это упрощает использование общих библиотек + благодаря согласованному переносимому интерфейсу. +

+
+
+
+ Приблизительное время + сборки: 0.6 SBU +
+
+ Требуемое дисковое + пространство: 45 MB +
+
+
+
+
+

+ 8.36.1. Установка пакета Libtool +

+

+ Подготовьте Libtool к компиляции: +

+
./configure --prefix=/usr
+

+ Скомпилируйте пакет: +

+
make
+

+ Чтобы протестировать пакет, выполните: +

+
make -k check
+

+ Известно, что пять тестов в среде сборки LFS завершаются + неудачно из-за циклической зависимости, но эти тесты проходят + успешно, если запустить их повторно после установки automake. + Кроме того, в grep-3.8 или более поздней версии два теста + вызовут предупреждение для регулярных выражений, + несовместимых с POSIX и завершатся ошибкой. +

+

+ Установите пакет: +

+
make install
+

+ Удалите ненужную статическую библиотеку: +

+
rm -fv /usr/lib/libltdl.a
+
+
+

+ 8.36.2. + Содержимое пакета Libtool +

+
+
+
+ Установленные + программы: libtool и + libtoolize +
+
+ Установленные + библиотеки: libltdl.so +
+
+ Созданные каталоги: + /usr/include/libltdl и + /usr/share/libtool +
+
+
+
+

+ Краткое описание +

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

+ libtool +

+
+

+ Обеспечивает общие услуги поддержки при сборке + библиотек +

+
+

+ libtoolize +

+
+

+ Предоставляет стандартный способ добавления + поддержки libtool в пакет +

+
+

+ libltdl +

+
+

+ Скрывает различные проблемы, связанные с открытием + динамически загружаемых библиотек +

+
+
+
+
+
+
+
+

+ 8.37. + GDBM-1.23 +

+
+
+
+
+
+

+ Пакет GDBM содержит менеджер баз данных GNU. Это библиотека + функций базы данных, использующая расширяемое хеширование и + работающая аналогично стандартной СУБД UNIX. Библиотека + предоставляет примитивы для хранения пар ключ/значение, + поиска и извлечения данных по его ключу и удаления ключа + вместе с его данными. +

+
+
+
+ Приблизительное время + сборки: менее 0.1 + SBU +
+
+ Требуемое дисковое + пространство: 13 MB +
+
+
+
+
+

+ 8.37.1. Установка пакета GDBM +

+

+ Подготовьте GDBM к компиляции: +

+
./configure --prefix=/usr    \
+            --disable-static \
+            --enable-libgdbm-compat
+
+

+ Значение параметра configure: +

+
+
+ --enable-libgdbm-compat +
+
+

+ Этот параметр включает сборку библиотеки совместимости + libgdbm. Некоторым пакетам за пределами LFS могут + потребоваться более старые подпрограммы DBM, которые он + предоставляет. +

+
+
+
+

+ Скомпилируйте пакет: +

+
make
+

+ Чтобы протестировать пакет, выполните: +

+
make check
+

+ Установите пакет: +

+
make install
+
+
+

+ 8.37.2. + Содержимое пакета GDBM +

+
+
+
+ Установленные + программы: gdbm_dump, + gdbm_load, и gdbmtool +
+
+ Установленные + библиотеки: libgdbm.so и + libgdbm_compat.so +
+
+
+
+

+ Краткое описание +

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

+ gdbm_dump +

+
+

+ Сохраняет дамп базы данных GDBM в файл +

+
+

+ gdbm_load +

+
+

+ Восстанавливает базу данных GDBM из дампа. +

+
+

+ gdbmtool +

+
+

+ Проверяет и изменяет базу данных GDBM +

+
+

+ libgdbm +

+
+

+ Содержит функции для управления хэшированной базой + данных +

+
+

+ libgdbm_compat +

+
+

+ Библиотека совместимости, содержащая более старые + функции DBM +

+
+
+
+
+
+
+
+

+ 8.38. + Gperf-3.1 +

+
+
+
+
+
+

+ Gperf генерирует идеальную хэш-функцию из набора ключей. +

+
+
+
+ Приблизительное время + сборки: менее 0.1 + SBU +
+
+ Требуемое дисковое + пространство: 6.1 + MB +
+
+
+
+
+

+ 8.38.1. Установка пакета Gperf +

+

+ Подготовьте Gperf к компиляции: +

+
./configure --prefix=/usr --docdir=/usr/share/doc/gperf-3.1
+

+ Скомпилируйте пакет: +

+
make
+

+ Известно, что тесты завершаются ошибкой при одновременном + выполнении нескольких тестов (параметр -j больше 1). Для + выполнения тестов, запустите следующую команду: +

+
make -j1 check
+

+ Установите пакет: +

+
make install
+
+
+

+ 8.38.2. + Содержимое пакета Gperf +

+
+
+
+ Установленные + программы: gperf +
+
+ Созданные каталоги: + /usr/share/doc/gperf-3.1 +
+
+
+
+

+ Краткое описание +

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

+ gperf +

+
+

+ Генерирует идеальный хэш из набора ключей +

+
+
+
+
+
+
+
+

+ 8.39. + Expat-2.6.0 +

+
+
+
+
+
+

+ Пакет Expat содержит потоковую библиотеку C для + синтаксического анализа XML +

+
+
+
+ Приблизительное время + сборки: 0.1 SBU +
+
+ Требуемое дисковое + пространство: 13 MB +
+
+
+
+
+

+ 8.39.1. Установка пакета Expat +

+

+ Подготовьте Expat к компиляции: +

+
./configure --prefix=/usr    \
+            --disable-static \
+            --docdir=/usr/share/doc/expat-2.6.0
+

+ Скомпилируйте пакет: +

+
make
+

+ Чтобы протестировать пакет, выполните: +

+
make check
+

+ Установите пакет: +

+
make install
+

+ По желанию установите документацию: +

+
install -v -m644 doc/*.{html,css} /usr/share/doc/expat-2.6.0
+
+
+

+ 8.39.2. + Содержимое пакета Expat +

+
+
+
+ Установленные + программы: xmlwf +
+
+ Установленные + библиотеки: libexpat.so +
+
+ Созданные каталоги: + /usr/share/doc/expat-2.6.0 +
+
+
+
+

+ Краткое описание +

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

+ xmlwf +

+
+

+ Утилита проверки правильности формирования XML + документов +

+
+

+ libexpat +

+
+

+ Содержит функции API для синтаксического анализа + XML +

+
+
+
+
+
+
+
+

+ 8.40. Inetutils-2.5 +

+
+
+
+
+
+

+ Пакет Inetutils содержит базовые программы для работы с + сетью. +

+
+
+
+ Приблизительное время + сборки: 0.2 SBU +
+
+ Требуемое дисковое + пространство: 35 MB +
+
+
+
+
+

+ 8.40.1. Установка пакета Inetutils +

+

+ Подготовьте Inetutils к компиляции: +

+
./configure --prefix=/usr        \
+            --bindir=/usr/bin    \
+            --localstatedir=/var \
+            --disable-logger     \
+            --disable-whois      \
+            --disable-rcp        \
+            --disable-rexec      \
+            --disable-rlogin     \
+            --disable-rsh        \
+            --disable-servers
+
+

+ Значение параметров настройки: +

+
+
+ --disable-logger +
+
+

+ Параметр запрещает установку программы logger, используемой + скриптами для отправки сообщений системной службе + логирования (System Log Daemon). Не устанавливайте её, + т.к. Util-linux устанавливает более свежую версию. +

+
+
+ --disable-whois +
+
+

+ Этот параметр отключает сборку whois-клиента + Inetutils, который устарел. Инструкции для сборки более + нового клиента whois находятся в + книге BLFS. +

+
+
+ --disable-r* +
+
+

+ Отключает установку устаревших программ, которые не + должны использоваться по соображениям безопасности. + Функционал этих программы можно получить установкой + пакета openssh из + книги BLFS. +

+
+
+ --disable-servers +
+
+

+ Отключает установку различных сетевых серверов, + входящих в состав пакета Inetutils. Эти серверы + считаются неподходящими для базовой системы LFS. + Некоторые из них небезопасны по своей природе и + считаются надежными только в доверенных сетях. Обратите + внимание, что для многих из них доступны более + качественные замены. +

+
+
+
+

+ Скомпилируйте пакет: +

+
make
+

+ Чтобы протестировать пакет, выполните:: +

+
make check
+

+ Установите пакет: +

+
make install
+

+ Переместите программу в правильное место: +

+
mv -v /usr/{,s}bin/ifconfig
+
+
+

+ 8.40.2. Содержимое пакета Inetutils +

+
+
+
+ Установленные + программы: dnsdomainname, + ftp, ifconfig, hostname, ping, ping6, talk, telnet, tftp + и traceroute +
+
+
+
+

+ Краткое описание +

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

+ dnsdomainname +

+
+

+ Показывает системное DNS имя +

+
+

+ ftp +

+
+

+ Программа для передачи файлов по протоколу FTP +

+
+

+ hostname +

+
+

+ Сообщает или задает имя хоста +

+
+

+ ifconfig +

+
+

+ Управляет сетевыми интерфейсами +

+
+

+ ping +

+
+

+ Отправляет пакеты эхо-запросов и сообщает, сколько + времени занимают ответы +

+
+

+ ping6 +

+
+

+ Версия ping для сетей + IPv6 +

+
+

+ talk +

+
+

+ Используется для общения с другими пользователями +

+
+

+ telnet +

+
+

+ Интерфейс к протоколу TELNET +

+
+

+ tftp +

+
+

+ Программа для передачи файлов по протоколу TFTP + (Trivial File Transfer Protocol — простой протокол + передачи файлов) +

+
+

+ traceroute +

+
+

+ Отслеживает маршрут, по которому проходят ваши + пакеты от хоста на которым вы работаете, к другому + узлу сети, показывая все промежуточные переходы + (шлюзы) на этом пути. +

+
+
+
+
+
+
+
+

+ 8.41. + Less-643 +

+
+
+
+
+
+

+ Пакет Less содержит средство просмотра текстовых файлов +

+
+
+
+ Приблизительное время + сборки: менее 0.1 + SBU +
+
+ Требуемое дисковое + пространство: 12 MB +
+
+
+
+
+

+ 8.41.1. Установка пакета Less +

+

+ Подготовьте Less к компиляции: +

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

+ Значение параметров настройки: +

+
+
+ --sysconfdir=/etc +
+
+

+ Этот параметр указывает программам, созданным пакетом, + искать файлы конфигурации в /etc. +

+
+
+
+

+ Скомпилируйте пакет: +

+
make
+

+ Чтобы протестировать пакет, выполните: +

+
make check
+

+ Установите пакет: +

+
make install
+
+
+

+ 8.41.2. + Содержимое пакета Less +

+
+
+
+ Установленные + программы: less, lessecho + и lesskey +
+
+
+
+

+ Краткое описание +

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

+ less +

+
+

+ Просмотрщик файлов; отображает содержимое данного + файла, позволяя пользователю прокручивать файл, + искать строки и переходить к меткам +

+
+

+ lessecho +

+
+

+ Требуется для расширения метасимволов, таких как + * и + ?, в именах + файлов в системах Unix +

+
+

+ lesskey +

+
+

+ Используется для привязки клавиш в программе + less +

+
+
+
+
+
+
+
+

+ 8.42. + Perl-5.38.2 +

+
+
+
+
+
+

+ Пакет Perl содержит практический язык для извлечения данных и + составления отчётов (Practical Extraction and Report + Language). +

+
+
+
+ Приблизительное время + сборки: 1.5 SBU +
+
+ Требуемое дисковое + пространство: 239 + MB +
+
+
+
+
+

+ 8.42.1. Установка пакета Perl +

+

+ Эта версия Perl собирает модули Compress::Raw::Zlib и + Compress::Raw::BZip2. По умолчанию Perl будет использовать + внутреннюю копию исходников для сборки. Выполните следующую + команду, чтобы Perl использовал библиотеки, установленные в + системе: +

+
export BUILD_ZLIB=False
+export BUILD_BZIP2=0
+

+ Чтобы иметь полный контроль над настройкой Perl, вы можете + удалить параметры «-des» из следующей команды и вручную + выбрать способ сборки этого пакета. В качестве альтернативы, + используйте команду точно так, как указано ниже, чтобы + использовать значения по умолчанию, которые Perl определяет + автоматически: +

+
sh Configure -des                                         \
+             -Dprefix=/usr                                \
+             -Dvendorprefix=/usr                          \
+             -Dprivlib=/usr/lib/perl5/5.38/core_perl      \
+             -Darchlib=/usr/lib/perl5/5.38/core_perl      \
+             -Dsitelib=/usr/lib/perl5/5.38/site_perl      \
+             -Dsitearch=/usr/lib/perl5/5.38/site_perl     \
+             -Dvendorlib=/usr/lib/perl5/5.38/vendor_perl  \
+             -Dvendorarch=/usr/lib/perl5/5.38/vendor_perl \
+             -Dman1dir=/usr/share/man/man1                \
+             -Dman3dir=/usr/share/man/man3                \
+             -Dpager="/usr/bin/less -isR"                 \
+             -Duseshrplib                                 \
+             -Dusethreads
+
+

+ Значение параметров Configure: +

+
+
+ -Dpager="/usr/bin/less + -isR" +
+
+

+ Параметр указывает использовать less вместо + more. +

+
+
+ -Dman1dir=/usr/share/man/man1 + -Dman3dir=/usr/share/man/man3 +
+
+

+ Так как Groff еще не установлен, Configure не будет + создавать man-страницы для Perl. Эти параметры + переопределяют это поведение. +

+
+
+ -Dusethreads +
+
+

+ Собрать Perl с поддержкой потоков. +

+
+
+
+

+ Скомпилируйте пакет: +

+
make
+

+ Чтобы протестировать пакет (примерно 11 SBU), выполните: +

+
TEST_JOBS=$(nproc) make test_harness
+

+ Установка пакета и очистка: +

+
make install
+unset BUILD_ZLIB BUILD_BZIP2
+
+
+

+ 8.42.2. + Содержимое пакета Perl +

+
+
+
+ Установленные + программы: corelist, cpan, + enc2xs, encguess, h2ph, h2xs, instmodsh, json_pp, + libnetcfg, perl, perl5.38.2 (жесткая ссылка на perl), + perlbug, perldoc, perlivp, perlthanks (жесткая ссылка на + perlbug), piconv, pl2pm, pod2html, pod2man, pod2text, + pod2usage, podchecker, podselect, prove, ptar, ptardiff, + ptargrep, shasum, splain, xsubpp и zipdetails +
+
+ Установленные + библиотеки: Список слишком + большой для перечисления +
+
+ Созданные каталоги: + /usr/lib/perl5 +
+
+
+
+

+ Краткое описание +

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

+ corelist +

+
+

+ Интерфейс командной строки для Module::CoreList +

+
+

+ cpan +

+
+

+ Позволяет получать из командной строки доступ к + архиву документации и программ Perl (Comprehensive + Perl Archive Network - CPAN) +

+
+

+ enc2xs +

+
+

+ Собирает расширение Perl для модуля Encode либо с + использование таблицы символов Unicode, либо с + использованием файлов кодирования Tcl +

+
+

+ encguess +

+
+

+ Определяет тип кодировки одного или нескольких + файлов +

+
+

+ h2ph +

+
+

+ Конвертирует заголовочные файлы Си .h в заголовочные файлы Perl + .ph +

+
+

+ h2xs +

+
+

+ Конвертирует заголовочные файлы Си .h в расширения Perl +

+
+

+ instmodsh +

+
+

+ Сценарий оболочки для проверки установленных + модулей Perl; он может создать архив из + установленного модуля. +

+
+

+ json_pp +

+
+

+ Преобразует данные между определенными входными и + выходными форматами +

+
+

+ libnetcfg +

+
+

+ Может использоваться для настройки Perl-модуля + libnet +

+
+

+ perl +

+
+

+ Объединяет лучшие возможности C, sed, awk и + sh в + одном языке +

+
+

+ perl5.38.2 +

+
+

+ Жесткая ссылка на perl +

+
+

+ perlbug +

+
+

+ Используется для создания отчетов об ошибках в Perl + или модулях, которые поставляются с ним, и отправки + их по почте +

+
+

+ perldoc +

+
+

+ Отображает часть документации в формате pod, + которая встроена в дерево установки Perl или в + сценарий Perl +

+
+

+ perlivp +

+
+

+ Процедура проверки установки Perl; ее можно + использовать для проверки правильности установки + Perl и его библиотек +

+
+

+ perlthanks +

+
+

+ Используется для создания сообщения-благодарности, + отсылаемого разработчикам Perl +

+
+

+ piconv +

+
+

+ Perl версия конвертера iconv, + используемого для кодирования символов +

+
+

+ pl2pm +

+
+

+ Инструмент для грубого конвертирования файлов + .pl Perl4 в модули + .pm Perl5 +

+
+

+ pod2html +

+
+

+ Преобразует файлы из формата pod в формат HTML +

+
+

+ pod2man +

+
+

+ Преобразует данные pod в форматированный входной + поток для *roff +

+
+

+ pod2text +

+
+

+ Преобразует данные pod в форматированный текст + ASCII +

+
+

+ pod2usage +

+
+

+ Печатает в файл сообщения usage из встроенных + документов pod +

+
+

+ podchecker +

+
+

+ Проверяет синтаксис файлов документации формата pod +

+
+

+ podselect +

+
+

+ Отображает выбранные разделы документации pod +

+
+

+ prove +

+
+

+ Инструмент командной строки для выполнения тестов с + помощью модуля Test::Harness +

+
+

+ ptar +

+
+

+ Программа, похожая на tar, написанная + на Perl +

+
+

+ ptardiff +

+
+

+ Программа на Perl для сравнения распакованного и + нераспакованного архивов +

+
+

+ ptargrep +

+
+

+ Программа на Perl для текстового поиска по шаблону + внутри tar-архива +

+
+

+ shasum +

+
+

+ Печатает или проверяет контрольные суммы SHA +

+
+

+ splain +

+
+

+ Включает подробные предупреждения для диагностики в + Perl +

+
+

+ xsubpp +

+
+

+ Преобразует код Perl XS в код C +

+
+

+ zipdetails +

+
+

+ Отображает сведения о внутренней структуре + Zip-файла +

+
+
+
+
+
+
+
+

+ 8.43. XML::Parser-2.47 +

+
+
+
+
+
+

+ Модуль XML::Parser представляет собой Perl-интерфейс к + XML-парсеру Джеймса Кларка Expat. +

+
+
+
+ Приблизительное время + сборки: менее 0.1 + SBU +
+
+ Требуемое дисковое + пространство: 2.4 + MB +
+
+
+
+
+

+ 8.43.1. Установка пакета XML::Parser +

+

+ Подготовьте XML::Parser к компиляции: +

+
perl Makefile.PL
+

+ Скомпилируйте пакет: +

+
make
+

+ Чтобы протестировать пакет, выполните: +

+
make test
+

+ Установите пакет: +

+
make install
+
+
+

+ 8.43.2. Содержимое XML::Parser +

+
+
+
+ Установленный модуль: + Expat.so +
+
+
+
+

+ Краткое описание +

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

+ Expat +

+
+

+ предоставляет Perl интерфейс для Expat +

+
+
+
+
+
+
+
+

+ 8.44. Intltool-0.51.0 +

+
+
+
+
+
+

+ Intltool — это инструмент интернационализации, используемый + для извлечения переводимых строк из исходных файлов. +

+
+
+
+ Приблизительное время + сборки: менее 0.1 + SBU +
+
+ Требуемое дисковое + пространство: 1.5 + MB +
+
+
+
+
+

+ 8.44.1. Установка пакета Intltool +

+

+ Сначала исправьте предупреждение, вызываемое perl-5.22 и + более поздними версиями: +

+
sed -i 's:\\\${:\\\$\\{:' intltool-update.in
+
+

+ Примечание +

+

+ Приведенное выше регулярное выражение выглядит необычно + из-за множества слэшей. Что оно делает, так это добавляет + обратную косую черту перед правой фигурной скобкой в + последовательности '\${' в результате чего получается + '\$\{'. +

+
+

+ Подготовьте Intltool к компиляции: +

+
./configure --prefix=/usr
+

+ Скомпилируйте пакет: +

+
make
+

+ Чтобы протестировать пакет, выполните: +

+
make check
+

+ Установите пакет: +

+
make install
+install -v -Dm644 doc/I18N-HOWTO /usr/share/doc/intltool-0.51.0/I18N-HOWTO
+
+
+

+ 8.44.2. Содержимое пакета Intltool +

+
+
+
+ Установленные + программы: intltool-extract, intltool-merge, + intltool-prepare, intltool-update и intltoolize +
+
+ Созданные каталоги: + /usr/share/doc/intltool-0.51.0 и + /usr/share/intltool +
+
+
+
+

+ Краткое описание +

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

+ intltoolize +

+
+

+ Подготавливает пакет для использования intltool +

+
+

+ intltool-extract +

+
+

+ Генерирует заголовочные файлы, которые могут быть + прочитаны с помощью gettext +

+
+

+ intltool-merge +

+
+

+ Объединяет переведенные строки в файлы различных + типов +

+
+

+ intltool-prepare +

+
+

+ Обновляет файлы pot и объединяет их с файлами + перевода +

+
+

+ intltool-update +

+
+

+ Обновляет файлы шаблонов po и объединяет их с + переводами +

+
+
+
+
+
+
+
+

+ 8.45. Autoconf-2.72 +

+
+
+
+
+
+

+ Пакет Autoconf содержит программы для создания сценариев + оболочки, которые могут автоматически настраивать исходный + код. +

+
+
+
+ Приблизительное время + сборки: менее 0.1 SBU + (около 0.5 SBU с тестами) +
+
+ Требуемое дисковое + пространство: 25 MB +
+
+
+
+
+

+ 8.45.1. Установка пакета Autoconf +

+

+ Подготовьте Autoconf к компиляции: +

+
./configure --prefix=/usr
+

+ Скомпилируйте пакет: +

+
make
+

+ Чтобы протестировать пакет, выполните: +

+
make check
+

+ Установите пакет: +

+
make install
+
+
+

+ 8.45.2. Содержимое пакета Autoconf +

+
+
+
+ Установленные + программы: autoconf, + autoheader, autom4te, autoreconf, autoscan, autoupdate, и + ifnames +
+
+ Созданные каталоги: + /usr/share/autoconf +
+
+
+
+

+ Краткое описание +

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

+ autoconf +

+
+

+ Генерирует сценарии оболочки, которые автоматически + настраивают пакеты исходного кода программного + обеспечения для адаптации ко многим типам + Unix-подобных систем; создаваемые сценарии + независимы—для их запуска не требуется программа + autoconf. +

+
+

+ autoheader +

+
+

+ Инструмент для создания файлов шаблонов операторов + C #define + для использования в configure +

+
+

+ autom4te +

+
+

+ Обертка для макропроцессора M4 +

+
+

+ autoreconf +

+
+

+ Автоматически запускает autoconf, + autoheader, + aclocal, + automake, + gettextize и + libtoolize в + правильном порядке, чтобы сэкономить время, при + внесении изменений в файлы шаблонов autoconf и + automake. +

+
+

+ autoscan +

+
+

+ Помогает создать файл configure.in для пакета + программного обеспечения; проверяет исходные файлы + в дереве каталогов, ищет в них распространенные + проблемы с переносимостью и создает файл + configure.scan, + который является предварительным файлом + configure.in для + пакета. +

+
+

+ autoupdate +

+
+

+ Изменяет файл configure.in, вызывающий макросы + autoconf по их + старым именам для использования текущих имен + макросов +

+
+

+ ifnames +

+
+

+ Помогает при написании файла configure.in для пакета; выводит + идентификаторы, которые использует пакет в условных + выражениях препроцессора C. (Если пакет уже был + настроен для некоторой переносимости, эта программа + может помочь определить, что нужно проверить + сценарию configure. Он + также может заполнить пробелы в файле configure.in, сгенерированном + командой autoscan.) +

+
+
+
+
+
+
+
+

+ 8.46. Automake-1.16.5 +

+
+
+
+
+
+

+ Пакет Automake содержит программы генерации Makefile для + использования с Autoconf. +

+
+
+
+ Приблизительное время + сборки: менее 0.1 SBU + (около 1.6 SBU с тестами) +
+
+ Требуемое дисковое + пространство: 115 + MB +
+
+
+
+
+

+ 8.46.1. Установка пакета Automake +

+

+ Подготовьте Automake к компиляции: +

+
./configure --prefix=/usr --docdir=/usr/share/doc/automake-1.16.5
+

+ Скомпилируйте пакет: +

+
make
+

+ Использование четырех параллельных заданий ускоряет + тестирование даже на системах с меньшим количеством + логических ядер из-за внутренних задержек в отдельных тестах. + Чтобы протестировать пакет, выполните: +

+
make -j$(($(nproc)>4?$(nproc):4)) check
+

+ Замените $((...)) + количеством логических ядер, которые вы хотите использовать, + если вы не планируете использовать все. +

+

+ Известно, что тест t/subobj.sh не проходит. +

+

+ Установите пакет: +

+
make install
+
+
+

+ 8.46.2. Содержимое пакета Automake +

+
+
+
+ Установленные + программы: aclocal, + aclocal-1.16 (жестко связан с aclocal), automake, и + automake-1.16 (жестко связан с automake) +
+
+ Созданные каталоги: + /usr/share/aclocal-1.16, + /usr/share/automake-1.16, и + /usr/share/doc/automake-1.16.5 +
+
+
+
+

+ Краткое описание +

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

+ aclocal +

+
+

+ Генерирует файлы aclocal.m4 на основе содержимого + файла configure.in +

+
+

+ aclocal-1.16 +

+
+

+ Жесткая ссылка на aclocal +

+
+

+ automake +

+
+

+ Инструмент для автоматического создания + Makefile.in из файлов + Makefile.am [Чтобы + создать все файлы Makefile.in запустите эту + программу в каталоге верхнего уровня. Сканируя файл + configure.in, он + автоматически находит все подходящие файлы + Makefile.am и создает + соответствующий Makefile.in.] +

+
+

+ automake-1.16 +

+
+

+ Жесткая ссылка на automake +

+
+
+
+
+
+
+
+

+ 8.47. OpenSSL-3.2.1 +

+
+
+
+
+
+

+ Пакет OpenSSL содержит инструменты управления и библиотеки, + относящиеся к криптографии. Они полезны для предоставления + криптографических функций другим пакетам, таким как OpenSSH, + приложениям электронной почты и веб-браузерам (для доступа к + сайтам по HTTPS). +

+
+
+
+ Приблизительное время + сборки: 1.8 SBU +
+
+ Требуемое дисковое + пространство: 805 + MB +
+
+
+
+
+

+ 8.47.1. Установка пакета OpenSSL +

+

+ Подготовьте OpenSSL к компиляции: +

+
./config --prefix=/usr         \
+         --openssldir=/etc/ssl \
+         --libdir=lib          \
+         shared                \
+         zlib-dynamic
+

+ Скомпилируйте пакет: +

+
make
+

+ Чтобы протестировать пакет, выполните: +

+
HARNESS_JOBS=$(nproc) make test
+

+ Известно, что один тест, 30-test_afalg.t, завершится ошибкой, + если в ядре хоста не включен параметр CONFIG_CRYPTO_USER_API_SKCIPHER или + отсутствуют какие-либо опции, обеспечивающих реализацию AES с + CBC (например, комбинация CONFIG_CRYPTO_AES и CONFIG_CRYPTO_CBC или CONFIG_CRYPTO_AES_NI_INTEL, если процессор + поддерживает AES-NI). В случае неудачи его можно смело + игнорировать. +

+

+ Установите пакет: +

+
sed -i '/INSTALL_LIBS/s/libcrypto.a libssl.a//' Makefile
+make MANSUFFIX=ssl install
+

+ Добавьте версию к имени каталога документации, чтобы + структура соответствовала другим пакетам: +

+
mv -v /usr/share/doc/openssl /usr/share/doc/openssl-3.2.1
+

+ По желанию, установите дополнительную документацию: +

+
cp -vfr doc/* /usr/share/doc/openssl-3.2.1
+
+

+ Примечание +

+

+ Вы должны обновить OpenSSL, когда будет выпущена новая + версия, исправляющая уязвимости. Начиная с OpenSSL 3.0.0, + схема управления версиями OpenSSL следует формату + MAJOR.MINOR.PATCH. Совместимость API/ABI гарантируется для + одной и той же ОСНОВНОЙ (MAJOR) версии. Поскольку LFS + устанавливает только общие библиотеки, нет необходимости + перекомпилировать пакеты, которые ссылаются на libcrypto.so или libssl.so, при + обновлении до версии с тем же ОСНОВНЫМ номером + версии. +

+

+ Все запущенные программы, связанные с этими библиотеками, + после обновления необходимо остановить и перезапустить. Для + получения более подробной информации ознакомьтесь с + соответствующей записью в Раздел 8.2.1, + «Проблемы с обновлением». +

+
+
+
+

+ 8.47.2. + Содержимое пакета OpenSSL +

+
+
+
+ Установленные + программы: c_rehash и + openssl +
+
+ Установленные + библиотеки: libcrypto.so и + libssl.so +
+
+ Созданные каталоги: + /etc/ssl, /usr/include/openssl, + /usr/lib/engines и /usr/share/doc/openssl-3.2.1 +
+
+
+
+

+ Краткое описание +

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

+ c_rehash +

+
+

+ это Perl скрипт, + который сканирует все файлы в каталоге и добавляет + символические ссылки к их хеш-значениям. + Использование c_rehash + считается устаревшим и должно быть заменено + командой openssl + rehash +

+
+

+ openssl +

+
+

+ это инструмент командной строки для использования + различных криптографических функций библиотеки + OpenSSL из + оболочки. Его можно использовать для различных + функций, которые задокументированы в openssl(1) +

+
+

+ libcrypto.so +

+
+

+ реализует широкий спектр криптографических + алгоритмов, используемых в различных + интернет-стандартах. Услуги, предоставляемые этой + библиотекой, используют OpenSSL-реализацию SSL, TLS и + S/MIME, а также для реализации OpenSSH, OpenPGP и других + криптографических стандартов. +

+
+

+ libssl.so +

+
+

+ реализует протокол безопасности транспортного + уровня (TLS v1). Он предоставляет богатый API, + документацию по которому можно найти в руководстве + ssl(7) +

+
+
+
+
+
+
+
+

+ 8.48. + Kmod-31 +

+
+
+
+
+
+

+ Пакет Kmod содержит библиотеки и утилиты для загрузки модулей + ядра. +

+
+
+
+ Приблизительное время + сборки: менее 0.1 + SBU +
+
+ Требуемое дисковое + пространство: 12 MB +
+
+
+
+
+

+ 8.48.1. Установка пакета Kmod +

+

+ Подготовьте Kmod к компиляции: +

+
./configure --prefix=/usr          \
+            --sysconfdir=/etc      \
+            --with-openssl         \
+            --with-xz              \
+            --with-zstd            \
+            --with-zlib
+
+

+ Значение параметров настройки: +

+
+
+ --with-openssl +
+
+

+ Этот параметр позволяет Kmod обрабатывать сигнатуры + PKCS7 для модулей ядра. +

+
+
+ --with-xz, --with-zlib, и --with-zstd +
+
+

+ Эти параметры позволяют Kmod обрабатывать сжатые модули + ядра. +

+
+
+
+

+ Скомпилируйте пакет: +

+
make
+

+ Набору тестов этого пакета необходимы необработанные + заголовочные файлы ядра (а не «очищенные», + установленных ранее), это выходит за рамки LFS. +

+

+ Установите пакет и создайте символические ссылки для + совместимости с Module-Init-Tools (пакетом, который ранее + обрабатывал модули ядра Linux): +

+
make install
+
+for target in depmod insmod modinfo modprobe rmmod; do
+  ln -sfv ../bin/kmod /usr/sbin/$target
+done
+
+ln -sfv kmod /usr/bin/lsmod
+
+
+

+ 8.48.2. + Содержимое пакета Kmod +

+
+
+
+ Установленные + программы: depmod (ссылка + на kmod), insmod (ссылка на kmod), kmod, lsmod (ссылка на + kmod), modinfo (ссылка на kmod), modprobe (ссылка на + kmod) и rmmod (ссылка на kmod) +
+
+ Установленные + библиотеки: libkmod.so +
+
+
+
+

+ Краткое описание +

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

+ depmod +

+
+

+ Создает файл зависимостей на основе символов + найденных в существующем наборе модулей; этот файл + используется программой modprobe для + автоматической загрузки необходимых модулей +

+
+

+ insmod +

+
+

+ Устанавливает загружаемый модуль в работающее ядро +

+
+

+ kmod +

+
+

+ Загружает и выгружает модули ядра +

+
+

+ lsmod +

+
+

+ Список загруженных в данный момент модулей +

+
+

+ modinfo +

+
+

+ Проверяет объектный файл, связанный с модулем ядра, + и отображает всю информацию, которую он смог + собрать. +

+
+

+ modprobe +

+
+

+ Использует файл зависимостей, созданный + depmod, + для автоматической загрузки соответствующих модулей +

+
+

+ rmmod +

+
+

+ Выгружает модули из работающего ядра +

+
+

+ libkmod +

+
+

+ Библиотека используемая другими программами для + загрузки и выгрузки модулей ядра +

+
+
+
+
+
+
+
+

+ 8.49. + Libelf из Elfutils-0.190 +

+
+
+
+
+
+

+ Libelf — это библиотека для обработки файлов ELF (Executable + and Linkable Format - формат исполняемых и связываемых + файлов). +

+
+
+
+ Приблизительное время + сборки: 0.3 SBU +
+
+ Требуемое дисковое + пространство: 124 + MB +
+
+
+
+
+

+ 8.49.1. Установка пакета Libelf +

+

+ Libelf является частью пакета elfutils-0.190. Используйте + elfutils-0.190.tar.bz2 в качестве исходного архива. +

+

+ Подготовьте Libelf к компиляции: +

+
./configure --prefix=/usr                \
+            --disable-debuginfod         \
+            --enable-libdebuginfod=dummy
+

+ Скомпилируйте пакет: +

+
make
+

+ Чтобы протестировать пакет, выполните: +

+
make check
+

+ Установите только Libelf: +

+
make -C libelf install
+install -vm644 config/libelf.pc /usr/lib/pkgconfig
+rm /usr/lib/libelf.a
+
+
+

+ 8.49.2. Содержимое пакета Libelf +

+
+
+
+ Установленные + библиотеки: libelf.so +
+
+ Созданные каталоги: + /usr/include/elfutils +
+
+
+
+

+ Краткое описание +

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

+ libelf.so +

+
+

+ Содержит функции API для обработки объектных файлов + ELF +

+
+
+
+
+
+
+
+

+ 8.50. + Libffi-3.4.4 +

+
+
+
+
+
+

+ Библиотека Libffi предоставляет переносимый высокоуровневый + программный интерфейс для различных соглашений о вызовах. Это + позволяет программисту вызывать любую функцию, указанную в + описании интерфейса вызова во время выполнения. +

+

+ FFI расшифровывается как интерфейс внешних функций. FFI + позволяет программе, написанной на одном языке, вызывать + программу, написанную на другом языке. В частности, Libffi + может обеспечить связь между интерпретатором, таким как Perl + или Python, и подпрограммами общей библиотеки, написанными на + C или C++. +

+
+
+
+ Приблизительное время + сборки: 1.8 SBU +
+
+ Требуемое дисковое + пространство: 11 MB +
+
+
+
+
+

+ 8.50.1. Установка пакета Libffi +

+
+

+ Примечание +

+

+ Как и GMP, Libffi собирается с учетом оптимизаций, + специфичных для используемого процессора. При сборке для + другой системы измените значение параметра --with-gcc-arch= в следующей + команде на имя архитектуры, полностью реализованной + процессором в этой системе. Если этого не сделать, все + приложения, ссылающиеся на libffi, будут вызывать ошибку + «Illegal Operation + - недопустимая операция». +

+
+

+ Подготовьте Libffi к компиляции: +

+
./configure --prefix=/usr          \
+            --disable-static       \
+            --with-gcc-arch=native
+
+

+ Значение параметров configure: +

+
+
+ --with-gcc-arch=native +
+
+

+ Убедитесь, что GCC оптимизируется для текущей системы. + Если значение не указано, то архитектура системы + угадывается и сгенерированный код может быть + неправильным. Если сгенерированный код будет скопирован + из родной системы в менее мощную, используйте + архитектуру менее мощной системы в качестве параметра. + Дополнительные сведения об альтернативных типах систем + смотрите в + описании параметров x86 в руководстве GCC. +

+
+
+
+

+ Скомпилируйте пакет: +

+
make
+

+ Чтобы протестировать пакет, выполните: +

+
make check
+

+ Установите пакет: +

+
make install
+
+
+

+ 8.50.2. + Содержимое пакета Libffi +

+
+
+
+ Установленные + библиотеки: libffi.so +
+
+
+
+

+ Краткое описание +

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

+ libffi +

+
+

+ Содержит внешний интерфейс для API-функций +

+
+
+
+
+
+
+
+

+ 8.51. + Python-3.12.2 +

+
+
+
+
+
+

+ Пакет Python 3 содержит среду разработчика Python. Его можно + использовать для объектно-ориентированного программирования, + написания скриптов, прототипирования больших программ и + разработка целых приложений. Python — это интерпретируемый + язык программирования. +

+
+
+
+ Приблизительное время + сборки: 1.8 SBU +
+
+ Требуемое дисковое + пространство: 485 + MB +
+
+
+
+
+

+ 8.51.1. Установка пакета Python 3 +

+

+ Подготовьте Python к компиляции: +

+
./configure --prefix=/usr        \
+            --enable-shared      \
+            --with-system-expat  \
+            --enable-optimizations
+
+

+ Значение параметров настройки: +

+
+
+ --with-system-expat +
+
+

+ Этот параметр выполняет линковку с системной версией + Expat. +

+
+
+ --enable-optimizations +
+
+

+ Этот параметр позволяет выполнить обширные, но + отнимающие много времени, действия по оптимизации. + Интерпретатор собирается дважды; тесты, выполненные при + первой сборке, используются для улучшения финальной + версии. +

+
+
+
+

+ Скомпилируйте пакет: +

+
make
+

+ Запускать тесты на этом этапе не рекомендуется. Известно, что + тесты зависают на неопределенный срок в неполной среде LFS. + При желании тесты можно запустить повторно в конце этой главы + или при переустановке Python 3 в BLFS. Чтобы запустить тесты, + выполните команду make + test. +

+

+ Установите пакет: +

+
make install
+

+ В некоторых местах книги, мы используем команду pip3 для установки программ + и модулей Python 3 от имени пользователя root. Это противоречит рекомендации + разработчиков Python: устанавливать пакеты в виртуальную + среду или домашний каталог обычного пользователя (путем + запуска pip3 от + имени этого пользователя). Поэтому всякий раз при + использовании pip3 от имени пользователя + root появляется многострочное + предупреждение. +

+

+ Основная причина этой рекомендации — избежать конфликта с + системным менеджером пакетов (например, dpkg), но в LFS нет + общесистемного менеджера пакетов, так что это не проблема. + Кроме того, pip3 будет пытаться + проверять наличие новой версии при каждом запуске. Поскольку + разрешение доменных имен в среде chroot LFS еще не настроено, + он не сможет проверить наличие новой версии и выдаст + предупреждение. +

+

+ Как только мы загрузим систему LFS и настроим сетевое + подключение, pip3 выдаст предупреждение, + сообщающее пользователю о необходимости обновить его с + помощью предварительно собранного whl-файла в PyPI (всякий + раз, когда будет доступна новая версия). Но LFS считает + pip3 частью + Python3, поэтому его не следует обновлять отдельно. Кроме + того, обновление из whl-файла не соответствует цели проекта — + собрать систему Linux из исходного кода, поэтому + предупреждение о новой версии pip3 следует игнорировать. + По желанию, вы можете отключить все предупреждение, создав + следующий файл конфигурации: +

+
cat > /etc/pip.conf << EOF
+[global]
+root-user-action = ignore
+disable-pip-version-check = true
+EOF
+
+
+

+ Важно +

+

+ В LFS и BLFS мы собираем и устанавливаем модули Python с + помощью команды pip3. Убедитесь, что + команда pip3 + install в обеих книгах запускаются от имени + пользователя root (если + только она не для виртуальной среды Python). Запуск + pip3 install + от имени пользователя без полномочий root может показаться нормальным, но + это приведет к тому, что установленный модуль будет + недоступен для других пользователей. +

+

+ Команда pip3 + install по умолчанию не приведёт к + автоматической переустановке уже установленного модуля. + Чтобы использовать команду pip3 install для + обновления модуля (например, с meson-0.61.3 до + meson-0.62.0), добавьте параметр --upgrade в командную строку. + Если по какой-то причине необходимо понизить версию модуля + или переустановить ту же версию, используйте параметр + --force-reinstall + --no-deps. +

+
+

+ По желанию установите предварительно отформатированную + документацию: +

+
install -v -dm755 /usr/share/doc/python-3.12.2/html
+
+tar --no-same-owner \
+    -xvf ../python-3.12.2-docs-html.tar.bz2
+cp -R --no-preserve=mode python-3.12.2-docs-html/* \
+    /usr/share/doc/python-3.12.2/html
+
+

+ Значение команд установки документации: +

+
+
+ --no-same-owner (tar) и --no-preserve=mode (cp) +
+
+

+ Параметры обеспечивают, что установленные файлы имеют + корректные права и владельца файлов. Использование + tar без этих + параметров приведет к установке файлов с правами + пользователя создавшего архив и файлы будут иметь + ограниченные разрешения. +

+
+
+
+
+
+

+ 8.51.2. + Содержимое пакета Python 3 +

+
+
+
+ Установленные + программы: 2to3, idle3, + pip3, pydoc3, python3 и python3-config +
+
+ Установленные + библиотеки: libpython3.12.so и libpython3.so +
+
+ Созданные каталоги: + /usr/include/python3.12, + /usr/lib/python3 и /usr/share/doc/python-3.12.2 +
+
+
+
+

+ Краткое описание +

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

+ 2to3 +

+
+

+ программа на Python, которая читает файлы + написанные на Python + 2.x, применяет к ним серию изменений и + переводит их в валидный код Python 3.x. +

+
+

+ idle3 +

+
+

+ скрипт-обертка, который открывает графический + редактор с поддержкой Python. Для запуска этого + скрипта, перед установкой Python необходимо + установить Tk, + чтобы модуль Tkinter Python был собран. +

+
+

+ pip3 +

+
+

+ Установщик пакетов для Python. Вы можете + использовать pip для установки пакетов из каталога + PyPI (Python Package Index) и других источников. +

+
+

+ pydoc3 +

+
+

+ инструмент документации Python +

+
+

+ python3 +

+
+

+ это интерпретатор для Python, интерпретируемый, + интерактивный, объектно-ориентированный язык + программирования +

+
+
+
+
+
+
+
+

+ 8.52. Flit-Core-3.9.0 +

+
+
+
+
+
+

+ Flit-core — это часть Flit, предназначенная для сборки + дистрибутива (инструмента для упаковки простых модулей + Python). +

+
+
+
+ Приблизительное время + сборки: менее 0.1 + SBU +
+
+ Требуемое дисковое + пространство: 1.6 + MB +
+
+
+
+
+

+ 8.52.1. Установка пакета Flit-Core +

+

+ Соберите пакет: +

+
pip3 wheel -w dist --no-cache-dir --no-build-isolation --no-deps $PWD
+

+ Установите пакет: +

+
pip3 install --no-index --no-user --find-links dist flit_core
+
+

+ Значение параметров конфигурации и команд + pip3: +

+
+
+ wheel +
+
+

+ Эта команда создает архив wheel для этого пакета. +

+
+
+ -w + dist +
+
+

+ Указывает pip поместить созданный архив в каталог + dist. +

+
+
+ --no-cache-dir +
+
+

+ Не позволяет pip копировать созданный wheel-пакет в + каталог /root/.cache/pip. +

+
+
+ install +
+
+

+ Эта команда устанавливает пакет. +

+
+
+ --no-build-isolation, + --no-deps и + --no-index +
+
+

+ Эти параметры предотвращают получение файлов из + онлайн-репозитория пакетов (PyPI). Если пакеты + установлены в правильном порядке, то нет необходимости + загружать какие-либо файлы; эти параметры усиливают + безопасность в случае ошибки пользователя. +

+
+
+ --find-links dist +
+
+

+ Указывает pip искать архивы wheel в каталоге + dist. +

+
+
+
+
+
+

+ 8.52.2. Содержимое пакета Flit-Core +

+
+
+
+ Созданные каталоги: + /usr/lib/python3.12/site-packages/flit_core и + /usr/lib/python3.12/site-packages/flit_core-3.9.0.dist-info +
+
+
+
+
+
+
+
+

+ 8.53. + Wheel-0.42.0 +

+
+
+
+
+
+

+ Wheel — это библиотека Python, которая является эталонной + реализацией стандарта упаковки программ на языке Python. +

+
+
+
+ Приблизительное время + сборки: менее 0.1 + SBU +
+
+ Требуемое дисковое + пространство: 1.5 + MB +
+
+
+
+
+

+ 8.53.1. Установка пакета Wheel +

+

+ Скомпилируйте Wheel с помощью следующей команды: +

+
pip3 wheel -w dist --no-cache-dir --no-build-isolation --no-deps $PWD
+

+ Установите Wheel: +

+
pip3 install --no-index --find-links=dist wheel
+
+
+

+ 8.53.2. + Содержимое пакета Wheel +

+
+
+
+ Установленные + программы: wheel +
+
+ Созданные каталоги: + /usr/lib/python3.12/site-packages/wheel и + /usr/lib/python3.12/site-packages/wheel-0.42.0.dist-info +
+
+
+
+

+ Краткое описание +

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

+ wheel +

+
+

+ это утилита для распаковки, упаковки или + преобразования wheel-архивов +

+
+
+
+
+
+
+
+

+ 8.54. Setuptools-69.1.0 +

+
+
+
+
+
+

+ Пакет Setuptools это инструмент, используемый для загрузки, + сборки, установки, обновления и удаления пакетов Python. +

+
+
+
+ Приблизительное время + сборки: 0.1 SBU +
+
+ Требуемое дисковое + пространство: 20 MB +
+
+
+
+
+

+ 8.54.1. Установка пакета Setuptools +

+

+ Соберите пакет: +

+
pip3 wheel -w dist --no-cache-dir --no-build-isolation --no-deps $PWD
+

+ Установите пакет: +

+
pip3 install --no-index --find-links dist setuptools
+
+
+

+ 8.54.2. Содержимое пакета + Setuptools +

+
+
+
+ Созданные каталоги: + /usr/lib/python3.12/site-packages/_distutils_hack, + /usr/lib/python3.12/site-packages/pkg_resources, + /usr/lib/python3.12/site-packages/setuptools, and + /usr/lib/python3.12/site-packages/setuptools-69.1.0.dist-info +
+
+
+
+
+
+
+
+

+ 8.55. + Ninja-1.11.1 +

+
+
+
+
+
+

+ Ninja - небольшая система сборки ориентированная на скорость. +

+
+
+
+ Приблизительное время + сборки: 0.3 SBU +
+
+ Требуемое дисковое + пространство: 75 MB +
+
+
+
+
+

+ 8.55.1. Установка пакета Ninja +

+

+ При запуске ninja обычно использует + максимальное количество процессов параллельно. По умолчанию + это количество ядер в системе плюс два. В некоторых случаях + это может привести к перегреву процессора или нехватке памяти + в системе. Когда ninja вызывается из + командной строки, передача параметра -jN ограничит количество + параллельных процессов. Некоторые пакеты встраивают + выполнение ninja и параметр -j не + передается. +

+

+ Использование приведенной ниже необязательной процедуры позволяет + пользователю ограничить количество параллельных процессов с + помощью переменной окружения NINJAJOBS. Пример, настройки: +

+
export NINJAJOBS=4
+

+ ограничит ninja + четырьмя параллельными процессами. +

+

+ По желанию, добавьте возможность использовать переменную + окружения NINJAJOBS, выполнив следующую команду: +

+
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
+

+ Соберите Ninja с помощью команды: +

+
python3 configure.py --bootstrap
+
+

+ Значение параметров сборки: +

+
+
+ --bootstrap +
+
+

+ Этот параметр перестраивает Ninja под текущую систему. +

+
+
+
+

+ Чтобы протестировать пакет, выполните: +

+
./ninja ninja_test
+./ninja_test --gtest_filter=-SubprocessTest.SetWithLots
+

+ Установите пакет: +

+
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
+
+
+

+ 8.55.2. + Содержимое пакета Ninja +

+
+
+
+ Установленные + программы: ninja +
+
+
+
+

+ Краткое описание +

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

+ ninja +

+
+

+ это система сборки Ninja +

+
+
+
+
+
+
+
+

+ 8.56. + Meson-1.3.2 +

+
+
+
+
+
+

+ Meson — это система сборки с открытым исходным кодом, + разработанная таким образом, чтобы быть очень быстрой и + максимально удобной для пользователя. +

+
+
+
+ Приблизительное время + сборки: менее 0.1 + SBU +
+
+ Требуемое дисковое + пространство: 42 MB +
+
+
+
+
+

+ 8.56.1. Установка пакета Meson +

+

+ Скомпилируйте Meson с помощью следующей команды: +

+
pip3 wheel -w dist --no-cache-dir --no-build-isolation --no-deps $PWD
+

+ Для набора тестов требуются некоторые пакеты, выходящие за + рамки LFS. +

+

+ Установите пакет: +

+
pip3 install --no-index --find-links dist meson
+install -vDm644 data/shell-completions/bash/meson /usr/share/bash-completion/completions/meson
+install -vDm644 data/shell-completions/zsh/_meson /usr/share/zsh/site-functions/_meson
+
+

+ Значение параметров установки: +

+
+
+ -w + dist +
+
+

+ Помещает собранный wheels в каталог dist. +

+
+
+ --find-links dist +
+
+

+ Устанавливает wheels из каталога dist. +

+
+
+
+
+
+

+ 8.56.2. + Содержимое пакета Meson +

+
+
+
+ Установленные + программы: meson +
+
+ Созданные каталоги: + /usr/lib/python3.12/site-packages/meson-1.3.2.dist-info + и /usr/lib/python3.12/site-packages/mesonbuild +
+
+
+
+

+ Краткое описание +

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

+ meson +

+
+

+ Высокопроизводительная система сборки +

+
+
+
+
+
+
+
+

+ 8.57. Coreutils-9.4 +

+
+
+
+
+
+

+ Пакет Coreutils содержит основные утилиты, необходимые каждой + операционной системе. +

+
+
+
+ Приблизительное время + сборки: 1 SBU +
+
+ Требуемое дисковое + пространство: 175 + MB +
+
+
+
+
+

+ 8.57.1. Установка пакета Coreutils +

+

+ Стандарт POSIX требует, чтобы программы пакета Coreutils + правильно распознавали символы даже в случае, если + используются многобайтовые локали. Следующий патч исправляет + несоответствие этому требованию, а также другие ошибки, + касающиеся интернационализации: +

+
patch -Np1 -i ../coreutils-9.4-i18n-1.patch
+
+

+ Примечание +

+

+ В этом патче было обнаружено много ошибок. Сообщая о новых + ошибках разработчикам Coreutils, сначала проверьте, + воспроизводятся ли эти ошибки без этого исправления. +

+
+

+ Исправьте уязвимость в утилите split: +

+
sed -e '/n_out += n_hold/,+4 s|.*bufsize.*|//&|' \
+    -i src/split.c
+

+ Теперь подготовьте Coreutils к компиляции: +

+
autoreconf -fiv
+FORCE_UNSAFE_CONFIGURE=1 ./configure \
+            --prefix=/usr            \
+            --enable-no-install-program=kill,uptime
+
+

+ Значение параметров настройки: +

+
+
+ autoreconf +
+
+

+ Патч для интернационализации изменил систему сборки + пакета, поэтому файлы конфигурации необходимо + сгенерировать заново. +

+
+
+ FORCE_UNSAFE_CONFIGURE=1 +
+
+

+ Эта переменная среды позволяет собрать пакет от имени + пользователя root. +

+
+
+ --enable-no-install-program=kill,uptime +
+
+

+ Назначение этого параметра — запретить Coreutils + устанавливать программы, которые будут установлены + другими пакетами. +

+
+
+
+

+ Скомпилируйте пакет: +

+
make
+

+ Если вы не планируете запускать набор тестов, перейдите к + разделу «Установка + пакета». +

+

+ Теперь набор тестов готов к запуску. Сначала запустите тесты, + предназначенные для запуска от имени пользователя + root: +

+
make NON_ROOT_USERNAME=tester check-root
+

+ Мы собираемся выполнить остальные тесты от имени пользователя + tester. Некоторые тесты + требуют, чтобы пользователь был членом более чем одной + группы. Чтобы эти тесты не были пропущены, добавьте временную + группу и включите в неё пользователя tester: +

+
groupadd -g 102 dummy -U tester
+

+ Исправьте некоторые разрешения, чтобы пользователь без + полномочий root мог + компилировать и запускать тесты: +

+
chown -R tester . 
+

+ Теперь запустите тесты: +

+
su tester -c "PATH=$PATH make RUN_EXPENSIVE_TESTS=yes check"
+

+ Удалить временную группу: +

+
groupdel dummy
+

+ Установите пакет: +

+
make install
+

+ Переместите программы туда, где они должны быть в + соответствие со спецификациями FHS: +

+
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"/' /usr/share/man/man8/chroot.8
+
+
+

+ 8.57.2. Содержимое пакета Coreutils +

+
+
+
+ Установленные + программы: [, b2sum, + base32, base64, basename, basenc, 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 и yes +
+
+ Установленные + библиотеки: libstdbuf.so + (in /usr/libexec/coreutils) +
+
+ Созданные каталоги: + /usr/libexec/coreutils +
+
+
+
+

+ Краткое описание +

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

+ [ +

+
+

+ Это команда /usr/bin/[, которая является синонимом + команды test +

+
+

+ base32 +

+
+

+ Кодирует и декодирует данные в соответствии со + спецификацией base32 (RFC 4648) +

+
+

+ base64 +

+
+

+ Кодирует и декодирует данные в соответствии со + спецификацией base64 (RFC 4648) +

+
+

+ b2sum +

+
+

+ Выводит или проверяет контрольные суммы BLAKE2 + (512-битные) +

+
+

+ basename +

+
+

+ Удаляет любой путь и заданный суффикс из имени + файла +

+
+

+ basenc +

+
+

+ Кодирует или декодирует данные с использованием + различных алгоритмов +

+
+

+ cat +

+
+

+ Присоединяет файлы к стандартному выходному потоку +

+
+

+ chcon +

+
+

+ Изменяет контекст безопасности для файлов и + каталогов +

+
+

+ chgrp +

+
+

+ Изменяет владельцев группы для файлов и директорий +

+
+

+ chmod +

+
+

+ Изменяет разрешения каждого файла на заданный + режим; режим может быть либо символьным + представлением вносимых изменений, либо + восьмеричным числом, представляющим новые + разрешения. +

+
+

+ chown +

+
+

+ Изменяет принадлежность файлов и директорий + пользователю и/или группе +

+
+

+ chroot +

+
+

+ Запускает команду с указанным каталогом в качестве + корневого каталога / +

+
+

+ cksum +

+
+

+ Выводит контрольную сумму Cyclic Redundancy Check + (CRC) и количество байтов для каждого указанного + файла. +

+
+

+ comm +

+
+

+ Сравнивает два отсортированных файла, выводя в три + столбца уникальные и общие строки. +

+
+

+ cp +

+
+

+ Копирует файлы +

+
+

+ csplit +

+
+

+ Разбивает заданный файл на несколько новых файлов, + разделяя их в соответствии с заданными шаблонами + или номерами строк и выводя количество байтов для + каждого нового файла. +

+
+

+ cut +

+
+

+ Выдает участки строк, выбирая части в соответствии + с заданными полями или позициями +

+
+

+ date +

+
+

+ Отображает текущее дату и время в заданном формате + или устанавливает системные дату и время +

+
+

+ dd +

+
+

+ Копирует файл, используя заданный размер блока и + количество, при необходимости выполняя + преобразования на нем. +

+
+

+ df +

+
+

+ Сообщает объем доступного (и используемого) + дискового пространства во всех смонтированных + файловых системах или только в файловых системах, + содержащих выбранные файлы. +

+
+

+ dir +

+
+

+ Выводит содержимое заданного каталога (так же, как + команда ls) +

+
+

+ dircolors +

+
+

+ Выводит команды для установки переменной среды + LS_COLOR для изменения + цветовой схемы, используемой ls. +

+
+

+ dirname +

+
+

+ Извлекает часть(части) каталога из + заданного(заданных) имени(имён) +

+
+

+ du +

+
+

+ Сообщает объем дискового пространства, + используемого текущим каталогом, каждым из заданных + каталогов (включая все подкаталоги) или каждым из + заданных файлов. +

+
+

+ echo +

+
+

+ Отображает указанные строки +

+
+

+ env +

+
+

+ Запускает команду в модифицированной среде + окружения +

+
+

+ expand +

+
+

+ Конвертирует символы табуляции в пробелы +

+
+

+ expr +

+
+

+ Вычисляет выражения +

+
+

+ factor +

+
+

+ Выводит простые множители указанных целых чисел +

+
+

+ false +

+
+

+ Ничего не делает, указывает на неудачу; всегда + завершается с кодом состояния, указывающим на сбой +

+
+

+ fmt +

+
+

+ Форматирует абзацы в указанных файлах +

+
+

+ fold +

+
+

+ Выполняет перенос строк в указанных файлах +

+
+

+ groups +

+
+

+ Сообщает о принадлежности пользователя к группам +

+
+

+ head +

+
+

+ Выводит первые десять строк (или заданное + количество строк) каждого заданного файла. +

+
+

+ hostid +

+
+

+ Выводит числовой идентификатор хоста (в + шестнадцатеричном формате) +

+
+

+ id +

+
+

+ Выводит действующий идентификатор пользователя, + идентификатор группы и принадлежность к группам для + текущего или для указанного пользователя +

+
+

+ install +

+
+

+ Копирует файлы, одновременно устанавливая для них + права доступа, и, если возможно, устанавливая для + них владельца и группу +

+
+

+ join +

+
+

+ Объединяет строки, которые имеют идентичные + объединяемые поля в двух различных файлах +

+
+

+ link +

+
+

+ Создает жесткую ссылку (с указанным именем) на файл +

+
+

+ ln +

+
+

+ Создает жесткие или мягкие (символические) ссылки + между файлами +

+
+

+ logname +

+
+

+ Сообщает имя входа текущего пользователя +

+
+

+ ls +

+
+

+ Выводит список содержимого для каждого заданного + каталога +

+
+

+ md5sum +

+
+

+ Выводит или проверяет контрольные суммы Message + Digest 5 (MD5) +

+
+

+ mkdir +

+
+

+ Создает директории с указанными именами +

+
+

+ mkfifo +

+
+

+ Создает "именованный канал" "первым пришел — первым + ушел" (FIFO), в нотации UNIX с заданными именами +

+
+

+ mknod +

+
+

+ Создает узлы устройств с заданными именами; узел + устройства представляет собой специальный + символьный файл, специальный файл блока или FIFO. +

+
+

+ mktemp +

+
+

+ Создает временные файлы безопасным способом; + используется в скриптах +

+
+

+ mv +

+
+

+ Перемещает или переименовывает файлы или каталоги +

+
+

+ nice +

+
+

+ Запускает программу с измененным приоритетом + исполнения +

+
+

+ nl +

+
+

+ Нумерует строки в указанных файлах +

+
+

+ nohup +

+
+

+ Запускает команду, невосприимчивую к зависаниям, а + ее вывод перенаправляется в файл журнала +

+
+

+ nproc +

+
+

+ Выводит количество дочерних процессов, доступных + для процесса. +

+
+

+ numfmt +

+
+

+ Преобразует числа в или из удобочитаемых строк +

+
+

+ od +

+
+

+ Вывод дампа файла в восьмеричном и других форматах +

+
+

+ paste +

+
+

+ Объединяет указанные файлы, последовательно + соединяя соответствующие строки рядом друг с + другом, разделенные символами табуляции. +

+
+

+ pathchk +

+
+

+ Проверяет, являются ли имена файлов допустимыми или + переносимыми +

+
+

+ pinky +

+
+

+ Легковесный клиент типа finger; выдает некоторую + информацию о заданных пользователях +

+
+

+ pr +

+
+

+ Разбивает файлы для печати на страницы и столбцы +

+
+

+ printenv +

+
+

+ Выдает значения переменных окружения +

+
+

+ printf +

+
+

+ Выводит аргументы в соответствии с заданным + форматом, подобно функции C printf. +

+
+

+ ptx +

+
+

+ Создает перестановочный индекс по содержимому + указанных файлов с каждым ключевым словом в своем + контексте +

+
+

+ pwd +

+
+

+ Сообщает имя текущего рабочего каталога +

+
+

+ readlink +

+
+

+ Выдает значение указанной символической ссылки +

+
+

+ realpath +

+
+

+ Возвращает приведенное к обычному виду полное имя + файла +

+
+

+ rm +

+
+

+ Удаляет файлы или каталоги +

+
+

+ rmdir +

+
+

+ Удаляет каталоги, если они пусты +

+
+

+ runcon +

+
+

+ Запускает команду с указанным контекстом + безопасности +

+
+

+ seq +

+
+

+ Выдает последовательность чисел из указанного + диапазона с указанным значением приращения +

+
+

+ sha1sum +

+
+

+ Выводит или проверяет контрольные суммы 160-битного + алгоритма безопасного хеширования 1 (SHA1) +

+
+

+ sha224sum +

+
+

+ Выводит или проверяет контрольные суммы 224-битного + алгоритма безопасного хеширования +

+
+

+ sha256sum +

+
+

+ Выводит или проверяет контрольные суммы 256-битного + алгоритма безопасного хеширования +

+
+

+ sha384sum +

+
+

+ Выводит или проверяет контрольные суммы 384-битного + алгоритма безопасного хеширования +

+
+

+ sha512sum +

+
+

+ Выводит или проверяет контрольные суммы 512-битного + алгоритма безопасного хеширования +

+
+

+ shred +

+
+

+ Многократно перезаписывает заданные файлы сложными + шаблонами, что затрудняет восстановление данных. +

+
+

+ shuf +

+
+

+ Перемешивает строки текста +

+
+

+ sleep +

+
+

+ Делает паузу на заданный промежуток времени +

+
+

+ sort +

+
+

+ Сортирует строки в указанных файлах +

+
+

+ split +

+
+

+ Разбивает заданный файл на несколько частей в + соответствии с указанным размером или количеством + строк +

+
+

+ stat +

+
+

+ Отображает статус файла или файловой системы +

+
+

+ stdbuf +

+
+

+ Запускает команды с измененными операциями + буферизации для своих стандартных потоков. +

+
+

+ stty +

+
+

+ Устанавливает или сообщает настройки терминала +

+
+

+ sum +

+
+

+ Выводит контрольную сумму и количество блоков для + каждого заданного файла +

+
+

+ sync +

+
+

+ Сбрасывает буферы файловой системы; он + принудительно записывает измененные блоки на диск и + обновляет суперблок +

+
+

+ tac +

+
+

+ Конкатенация содержимого указанных файлов в + обратном порядке +

+
+

+ tail +

+
+

+ Выводит последние десять строк (или заданное + количество строк) каждого указанного файла +

+
+

+ tee +

+
+

+ Считывает данные со стандартного потока ввода, + записывает как в стандартный вывод, так и в + указанные файлы +

+
+

+ test +

+
+

+ Сравнивает значения и проверяет типы файловs +

+
+

+ timeout +

+
+

+ Запускает команду с ограничением по времени +

+
+

+ touch +

+
+

+ Изменяет временные метки файлов, устанавливая время + доступа и модификации данных файлов на текущее + время; несуществующие файлы создаются с нулевой + длиной +

+
+

+ tr +

+
+

+ Переводит, сжимает и удаляет заданные символы из + стандартного потока +

+
+

+ true +

+
+

+ Ничего не делает, указывает на успешное выполнение + операции; он всегда завершается с кодом состояния, + указывающим на успех +

+
+

+ truncate +

+
+

+ Сжимает или расширяет файл до указанного размера +

+
+

+ tsort +

+
+

+ Выполняет топологическую сортировку; записывает + полностью упорядоченный список в соответствии с + частичным упорядочением в данном файле +

+
+

+ tty +

+
+

+ Сообщает имя файла терминала, подключенного к + стандартному вводу. +

+
+

+ uname +

+
+

+ Сообщает системную информацию +

+
+

+ unexpand +

+
+

+ Преобразует пробелы в табуляции +

+
+

+ uniq +

+
+

+ Удаляет все повторяющиеся копии уже имеющихся + строк, кроме одной +

+
+

+ unlink +

+
+

+ Удаляет указанный файл +

+
+

+ users +

+
+

+ Сообщает имена пользователей, вошедших в систему в + данный момент +

+
+

+ vdir +

+
+

+ То же, что ls + -l +

+
+

+ wc +

+
+

+ Сообщает количество строк, слов и байт для каждого + заданного файла, а также общее количество строк, + если указано более одного файла +

+
+

+ who +

+
+

+ Сообщает, кто вошел в систему +

+
+

+ whoami +

+
+

+ Сообщает имя пользователя, соответствующее + идентификатору текущего пользователя +

+
+

+ yes +

+
+

+ Повторно выводит y или + указанную строку, до тех пор, пока команда не будет + завершена с помощью kill +

+
+

+ libstdbuf +

+
+

+ Библиотека, используемая командой stdbuf +

+
+
+
+
+
+
+
+

+ 8.58. + Check-0.15.2 +

+
+
+
+
+
+

+ Check - это фреймворк модульного тестирования для языка C. +

+
+
+
+ Приблизительное время + сборки: 0.1 SBU (около 1.6 + SBU с тестами) +
+
+ Требуемое дисковое + пространство: 12 MB +
+
+
+
+
+

+ 8.58.1. Установка пакета Check +

+

+ Подготовить Check к компиляции: +

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

+ Соберите пакет: +

+
make
+

+ Когда компиляция будет завершена, запустите набор тестов: +

+
make check
+

+ Установите пакет: +

+
make docdir=/usr/share/doc/check-0.15.2 install
+
+
+

+ 8.58.2. + Содержимое пакета Check +

+
+
+
+ Установленные + программы: checkmk +
+
+ Установленные + библиотеки: libcheck.so +
+
+
+
+

+ Краткое описание +

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

+ checkmk +

+
+

+ Сценарий Awk для генерации unit-тестов C, для + использования с платформой модульного тестирования + Check. +

+
+

+ libcheck.so +

+
+

+ Содержит функции, позволяющие вызывать Check из + программы тестирования. +

+
+
+
+
+
+
+
+

+ 8.59. Diffutils-3.10 +

+
+
+
+
+
+

+ Пакет Diffutils содержит программы, которые показывают + различия между файлами или каталогами. +

+
+
+
+ Приблизительное время + сборки: 0.3 SBU +
+
+ Требуемое дисковое + пространство: 36 MB +
+
+
+
+
+

+ 8.59.1. Установка пакета Diffutils +

+

+ Подготовьте Diffutils к компиляции: +

+
./configure --prefix=/usr
+

+ Скомпилируйте пакет: +

+
make
+

+ Чтобы протестровать пакет, выполните: +

+
make check
+

+ Установите пакет: +

+
make install
+
+
+

+ 8.59.2. Содержимое пакета Diffutils +

+
+
+
+ Установленные + программы: cmp, diff, + diff3, и sdiff +
+
+
+
+

+ Краткое описание +

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

+ cmp +

+
+

+ Сравнивает побайтно два файла и сообщает о любых + различиях +

+
+

+ diff +

+
+

+ Сравнивает два файла или каталога и сообщает, какие + строки отличаются +

+
+

+ diff3 +

+
+

+ Сравнивает три файла построчно +

+
+

+ sdiff +

+
+

+ Объединяет два файла и интерактивно выводит + результат +

+
+
+
+
+
+
+
+

+ 8.60. + Gawk-5.3.0 +

+
+
+
+
+
+

+ Пакет Gawk содержит программы для работы с текстовыми + файлами. +

+
+
+
+ Приблизительное время + сборки: 0.1 SBU +
+
+ Требуемое дисковое + пространство: 42 MB +
+
+
+
+
+

+ 8.60.1. Установка пакета Gawk +

+

+ Во-первых, отредактируйте Makefile, чтобы некоторые ненужные + файлы не были установлены +

+
sed -i 's/extras//' Makefile.in
+

+ Подготовьте Gawk к компиляции: +

+
./configure --prefix=/usr
+

+ Скомпилируйте пакет: +

+
make
+

+ Чтобы протестировать пакет, выполните: +

+
chown -R tester .
+su tester -c "PATH=$PATH make check"
+

+ Установите пакет: +

+
rm -f /usr/bin/gawk-5.3.0
+make install
+
+

+ Значение команды: +

+
+
+ rm -f + /usr/bin/gawk-5.3.0 +
+
+

+ Система сборки не будет пересоздавать жесткую ссылку + gawk-5.3.0, если она + существует. Удалите её, чтобы гарантировать, что + предыдущая жесткая ссылка, созданная в Раздел 6.9, «Gawk-5.3.0», + будет обновлена. +

+
+
+
+

+ В процессе установки уже создан awk в виде символической + ссылки на gawk, + создайте также символическую ссылку на справочную страницу: +

+
ln -sv gawk.1 /usr/share/man/man1/awk.1
+

+ По желанию, установите документацию: +

+
mkdir -pv                                   /usr/share/doc/gawk-5.3.0
+cp    -v doc/{awkforai.txt,*.{eps,pdf,jpg}} /usr/share/doc/gawk-5.3.0
+
+
+

+ 8.60.2. + Содержимое пакета Gawk +

+
+
+
+ Установленные + программы: awk (ссылка на + gawk), gawk и gawk-5.3.0 +
+
+ Установленные + библиотеки: filefuncs.so, + fnmatch.so, fork.so, inplace.so, intdiv.so, ordchr.so, + readdir.so, readfile.so, revoutput.so, revtwoway.so, + rwarray.so и time.so (все в /usr/lib/gawk) +
+
+ Созданные каталоги: + /usr/lib/gawk, /usr/libexec/awk, + /usr/share/awk и /usr/share/doc/gawk-5.3.0 +
+
+
+
+

+ Краткое описание +

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

+ awk +

+
+

+ Ссылка на gawk +

+
+

+ gawk +

+
+

+ Программа для работы с текстовыми файлами; это GNU + реализация awk +

+
+

+ gawk-5.3.0 +

+
+

+ Жесткая ссылка на gawk +

+
+
+
+
+
+
+
+

+ 8.61. Findutils-4.9.0 +

+
+
+
+
+
+

+ Пакет Findutils содержит программы для поиска файлов. Эти + программы предназначены для поиска по всем файлам в дереве + каталогов, а также для создания, обслуживания и поиска в базе + данных (часто быстрее, чем рекурсивный поиск, но ненадежно, + если база данных давно не обновлялась).Findutils также + предоставляет программу xargs, которую можно + использовать для запуска указанной команды для каждого файла, + выбранного при поиске. +

+
+
+
+ Приблизительное время + сборки: 0.4 SBU +
+
+ Требуемое дисковое + пространство: 51 MB +
+
+
+
+
+

+ 8.61.1. Установка пакета Findutils +

+

+ Подготовьте Findutils к компиляции: +

+
./configure --prefix=/usr --localstatedir=/var/lib/locate
+
+

+ Значение параметров настройки: +

+
+
+ --localstatedir +
+
+

+ Этот параметр перемещает базу данных команды + locate в + /var/lib/locate, что + соответствует расположению, совместимому со стандартом + FHS. +

+
+
+
+

+ Скомпилируйте пакет: +

+
make
+

+ Чтобы протестировать пакет, выполните: +

+
chown -R tester .
+su tester -c "PATH=$PATH make check"
+

+ Установите пакет: +

+
make install
+
+
+

+ 8.61.2. Содержимое пакета Findutils +

+
+
+
+ Installed programs: + Установленные программы +
+
+ Созданные каталоги: + /var/lib/locate +
+
+
+
+

+ Краткое описание +

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

+ find +

+
+

+ Выполняет поиск в заданных каталогах файлов, + соответствующих критериям +

+
+

+ locate +

+
+

+ Выполняет поиск по базе данных имен файлов и + сообщает об именах, которые содержат заданную + строку или соответствуют заданному шаблону. +

+
+

+ updatedb +

+
+

+ Обновляет базу данных locate; сканирует + всю файловую систему (включая другие файловые + системы, которые в настоящее время смонтированы, + если не указано иное) и записывает найденные имена + файлов в базу данных +

+
+

+ xargs +

+
+

+ Может использоваться для применения заданной + команды к списку файлов +

+
+
+
+
+
+
+
+

+ 8.62. + Groff-1.23.0 +

+
+
+
+
+
+

+ Пакет Groff содержит программы для обработки и форматирования + текста и изображений. +

+
+
+
+ Приблизительное время + сборки: 0.2 SBU +
+
+ Требуемое дисковое + пространство: 107 + MB +
+
+
+
+
+

+ 8.62.1. Установка пакета Groff +

+

+ Groff ожидает, что переменная окружения PAGE будет содержать размер бумаги по + умолчанию. Для пользователей из США подходит PAGE=letter. Для других стран + больше подойдет PAGE=A4. Хотя формат бумаги по + умолчанию настраивается во время компиляции, его можно + переопределить позже, записав «A4» или + «letter» в файл /etc/papersize. +

+

+ Подготовьте Groff к компиляции: +

+
PAGE=<paper_size> ./configure --prefix=/usr
+

+ Соберите пакет: +

+
make
+

+ Чтобы протестировать пакет, выполните: +

+
make check
+

+ Установите пакет: +

+
make install
+
+
+

+ 8.62.2. + Содержимое пакета Groff +

+
+
+
+ Установленные + программы: 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 и + troff +
+
+ Созданные каталоги: + /usr/lib/groff и + /usr/share/doc/groff-1.23.0, /usr/share/groff +
+
+
+
+

+ Краткое описание +

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

+ addftinfo +

+
+

+ Читает файл шрифта troff и добавляет некоторую + дополнительную информацию о метрике шрифта, + используемую системой groff. +

+
+

+ afmtodit +

+
+

+ Создаёт файл шрифта для использования с + groff + и grops +

+
+

+ chem +

+
+

+ Препроцессор Groff для создания диаграмм химических + структур +

+
+

+ eqn +

+
+

+ Компилирует описания уравнений, имеющихся внутри + входных файлов troff, которые понятны troff +

+
+

+ eqn2graph +

+
+

+ Преобразует a troff EQN (уравнение) во фрагмент + изображения +

+
+

+ gdiffmk +

+
+

+ Отображает различия между файлами groff/nroff/troff +

+
+

+ glilypond +

+
+

+ Преобразует ноты, записанные на языке lilypond в + язык groff +

+
+

+ gperl +

+
+

+ Препроцессор для groff, позволяющий вставлять код + perl в файлы groff +

+
+

+ gpinyin +

+
+

+ Препроцессор groff, позволяющий вставлять Pinyin + (запись звуков китайского языка с помощью + латинского алфавита) в файлы groff. +

+
+

+ grap2graph +

+
+

+ Преобразует диаграммы grap во фрагмент растрового + изображения (grap - это старый язык + программирования Unix для создания диаграмм) +

+
+

+ grn +

+
+

+ Препроцессор groff для файлов + gremlin +

+
+

+ grodvi +

+
+

+ Драйвер для groff, создающий + выходные файлы в формате TeX dvi +

+
+

+ groff +

+
+

+ Внешний интерфейс к системе форматирования + документов groff; обычно он запускает программу + troff + и постпроцессор, соответствующий выбранному + устройству +

+
+

+ groffer +

+
+

+ Отображает файлы groff и справочные страницы на + терминалах X и tty +

+
+

+ grog +

+
+

+ Читает файлы и пытается определить, какие из + параметров groff + -e, -man, -me, -mm, -ms, -p, -s, + или -t требуются для + печати файлов, и указывает команду groff с этими + параметрами +

+
+

+ grolbp +

+
+

+ Драйвер groff для + принтеров Canon CAPSL (лазерные принтеры серий + LBP-4 и LBP-8) +

+
+

+ grolj4 +

+
+

+ Драйвер для groff который + выводит результат в формате PCL5, подходящем для + принтера HP LaserJet 4 +

+
+

+ gropdf +

+
+

+ Переводит выходные данные GNU troff в формат + PDF +

+
+

+ grops +

+
+

+ Переводит выходные данные GNU troff в формат + PostScript +

+
+

+ grotty +

+
+

+ Переводит вывод GNU troff в форму, + подходящую для устройств, подобных пишущим + машинкам. +

+
+

+ hpftodit +

+
+

+ Создает файл шрифта для использования с + groff + -Tlj4 из файла метрик шрифта для HP +

+
+

+ indxbib +

+
+

+ Создает инвертированный индекс для + библиографических баз данных для указанного файла, + используемый с refer, + lookbib, и + lkbib +

+
+

+ lkbib +

+
+

+ Выполняет поиск в библиографических базах данных + ссылок, содержащих указанные ключи, и сообщает о + любых найденных ссылках +

+
+

+ lookbib +

+
+

+ Выводит приглашение при наличии стандартной ошибки + (если устройство стандартного ввода не является + терминалом), читает из устройства стандартного + ввода строку, в которой находится набор ключевых + слов, ищет в библиографической базе данных для + указанного файла ссылки, содержащие эти ключевые + слова, выводит все ссылки, найденные в стандартном + выводе и повторяет этот процесс до тех пор, пока не + завершится входной поток +

+
+

+ mmroff +

+
+

+ Простой препроцессор для groff +

+
+

+ neqn +

+
+

+ Форматирует уравнения для их вывода в формате + American Standard Code for Information Interchange + (ASCII) +

+
+

+ nroff +

+
+

+ Скрипт, который эмулирует команду nroff с помощью + groff +

+
+

+ pdfmom +

+
+

+ Это обертка над groff которая упрощает создание + PDF-документов из файлов, отформатированных с + помощью макросов mom. +

+
+

+ pdfroff +

+
+

+ Создает pdf-документы с помощью groff +

+
+

+ pfbtops +

+
+

+ Преобразует шрифт PostScript в формате .pfb в формат ASCII +

+
+

+ pic +

+
+

+ Компилирует описания изображений, вставленных во + входные файлы troff или TeX, в команды, понятные + TeX или troff +

+
+

+ pic2graph +

+
+

+ Преобразует диаграмму PIC во фрагмент изображения +

+
+

+ post-grohtml +

+
+

+ Переводит выходной поток GNU troff в HTML +

+
+

+ preconv +

+
+

+ Преобразует кодировку входных файлов в формат, + понимаемый GNU troff +

+
+

+ pre-grohtml +

+
+

+ Переводит выходной поток GNU troff в HTML +

+
+

+ refer +

+
+

+ Копирует содержимое файла в стандартный вывод, + кроме тех символов, которые расположены между + .[ и + .] и + интерпретируются как цитаты, и кроме строк между + .R1 и + .R2, которые + интерпретируются как команды, указывающие как + цитаты должны быть обработаны +

+
+

+ roff2dvi +

+
+

+ Преобразует файлы roff в формат DVI +

+
+

+ roff2html +

+
+

+ Преобразует файлы roff в формат HTML +

+
+

+ roff2pdf +

+
+

+ Преобразует файлы roff в формат PDF +

+
+

+ roff2ps +

+
+

+ Преобразует файлы roff в файлы ps +

+
+

+ roff2text +

+
+

+ Преобразует файлы roff в текстовые файлы +

+
+

+ roff2x +

+
+

+ Преобразует файлы roff в другие форматы +

+
+

+ soelim +

+
+

+ Читает файлы и заменяет строки вида .so file содержимым + указанного файла file +

+
+

+ tbl +

+
+

+ Компилирует описания таблиц, вставленные во входные + файлы troff, в команды, понимаемые troff +

+
+

+ tfmtodit +

+
+

+ Создает файл шрифта для использования с + groff + -Tdvi +

+
+

+ troff +

+
+

+ Полностью совместим с Unix troff; его + следует вызывать с помощью команды groff, которая + также будет запускать препроцессоры и + постпроцессоры в соответствующем порядке и с + соответствующими параметрами +

+
+
+
+
+
+
+
+

+ 8.63. + GRUB-2.12 +

+
+
+
+
+
+

+ Пакет GRUB содержит загрузчик операционной системы от проекта + GNU (GRand Unified Bootloader). +

+
+
+
+ Приблизительное время + сборки: 0.3 SBU +
+
+ Требуемое дисковое + пространство: 166 + MB +
+
+
+
+
+

+ 8.63.1. Установка пакета GRUB +

+
+

+ Примечание +

+

+ Если ваша система поддерживает UEFI и вы хотите загрузить + LFS с UEFI, вы можете пропустить установку этого пакета в + LFS и установить GRUB с поддержкой UEFI (и его + зависимости), следуя инструкции + из BLFS. +

+
+
+

+ Предупреждение +

+

+ Сбросьте переменные окружения, которые могут повлиять на + сборку: +

+
unset {C,CPP,CXX,LD}FLAGS
+

+ Не пытайтесь «настраивать» этот пакет с помощью + пользовательских флагов компиляции. Этот пакет является + загрузчиком. Низкоуровневые операции в исходном коде могут + быть нарушены из-за агрессивной оптимизации. +

+
+

+ Добавьте файл, отсутствующий в архиве релиза: +

+
echo depends bli part_gpt > grub-core/extra_deps.lst
+

+ Подготовьте GRUB к компиляции: +

+
./configure --prefix=/usr          \
+            --sysconfdir=/etc      \
+            --disable-efiemu       \
+            --disable-werror
+
+

+ Значение новых параметров настройки: +

+
+
+ --disable-werror +
+
+

+ Этот параметр позволяет завершить сборку с + предупреждениями, появившимися в более поздних версиях + Flex. +

+
+
+ --disable-efiemu +
+
+

+ Этот параметр запрещает установку компонента, отключает + функции и некоторые программы тестирования, которые не + нужны для LFS. +

+
+
+
+

+ Скомпилируйте пакет: +

+
make
+

+ Запуск набора тестов не рекомендуется. Большинство тестов + зависят от пакетов, недоступных в ограниченной среде LFS. + Если вы все равно хотите запустить тесты, выполните + make check. +

+

+ Установите пакет: +

+
make install
+mv -v /etc/bash_completion.d/grub /usr/share/bash-completion/completions
+

+ Создание загружаемой системы LFS с помощью GRUB будет + обсуждаться в Раздел 10.4, + «Использование GRUB для настройки процесса загрузки». +

+
+
+

+ 8.63.2. + Содержимое пакета GRUB +

+
+
+
+ Установленные + программы: 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 и + grub-syslinux2cfg +
+
+ Созданные каталоги: + /usr/lib/grub, /etc/grub.d, + /usr/share/grub и /boot/grub (при первом запуске + grub-install) +
+
+
+
+

+ Краткое описание +

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

+ grub-bios-setup +

+
+

+ Вспомогательная программа для grub-install +

+
+

+ grub-editenv +

+
+

+ Инструмент для редактирования блока окружения + (environment block) +

+
+

+ grub-file +

+
+

+ Проверяет, относится ли данный файл к указанному + типу +

+
+

+ grub-fstest +

+
+

+ Инструмент для отладки драйвера файловой системы +

+
+

+ grub-glue-efi +

+
+

+ Объединяет 32-разрядные и 64-разрядные бинарные + файлы в один файл (для компьютеров Apple) +

+
+

+ grub-install +

+
+

+ Устанавливает GRUB на ваш диск +

+
+

+ grub-kbdcomp +

+
+

+ Скрипт, который преобразует макет xkb в макет, + распознаваемый GRUB +

+
+

+ grub-macbless +

+
+

+ Это аналог bless в стиле Mac для файловых систем + HFS или HFS+ (команда bless характерна + для компьютеров Apple; она делает устройство + загрузочным) +

+
+

+ grub-menulst2cfg +

+
+

+ Преобразует GRUB Legacy menu.lst в grub.cfg для использования с GRUB + 2 +

+
+

+ grub-mkconfig +

+
+

+ Генерирует файл grub.cfg +

+
+

+ grub-mkimage +

+
+

+ Создаёт загрузочный образ GRUB +

+
+

+ grub-mklayout +

+
+

+ Создаёт файл раскладки клавиатуры GRUB +

+
+

+ grub-mknetdir +

+
+

+ Подготавливает сетевой загрузочный каталог GRUB +

+
+

+ grub-mkpasswd-pbkdf2 +

+
+

+ Генерирует зашифрованный пароль PBKDF2 для + использования в меню загрузки +

+
+

+ grub-mkrelpath +

+
+

+ Создает имена системных путей относительно корня +

+
+

+ grub-mkrescue +

+
+

+ Создает загрузочный образ GRUB, подходящий для + дискеты, CDROM/DVD или USB-накопителя +

+
+

+ grub-mkstandalone +

+
+

+ Генерирует автономный образ +

+
+

+ grub-ofpathname +

+
+

+ Вспомогательная программа, которая выводит путь к + устройству GRUB +

+
+

+ grub-probe +

+
+

+ Проверяет информацию об устройстве для заданного + пути или устройства +

+
+

+ grub-reboot +

+
+

+ Устанавливает пункт меню в GRUB для загрузки по + умолчанию, только для следующей + загрузки(однократно) +

+
+

+ grub-render-label +

+
+

+ Отображает .disk_label для компьютеров Apple Mac +

+
+

+ grub-script-check +

+
+

+ Проверяет скрипт настройки GRUB на наличие + синтаксических ошибок +

+
+

+ grub-set-default +

+
+

+ Устанавливает для GRUB загрузочную запись по + умолчанию +

+
+

+ grub-sparc64-setup +

+
+

+ Вспомогательная программа для grub-setup +

+
+

+ grub-syslinux2cfg +

+
+

+ Преобразует файл конфигурации syslinux в формат + grub.cfg +

+
+
+
+
+
+
+
+

+ 8.64. + Gzip-1.13 +

+
+
+
+
+
+

+ Пакет Gzip содержит программы для сжатия и распаковки файлов. +

+
+
+
+ Приблизительное время + сборки: 0.3 SBU +
+
+ Требуемое дисковое + пространство: 21 MB +
+
+
+
+
+

+ 8.64.1. Установка пакета Gzip +

+

+ Подготовьте Gzip к компиляции: +

+
./configure --prefix=/usr
+

+ Скомпилируйте пакет: +

+
make
+

+ Чтобы протестировать пакет, выполните: +

+
make check
+

+ Установите пакет: +

+
make install
+
+
+

+ 8.64.2. + Содержимое пакета Gzip +

+
+
+
+ Установленные + программы: gunzip, gzexe, + gzip, uncompress (жесткая ссылка на gunzip), zcat, zcmp, + zdiff, zegrep, zfgrep, zforce, zgrep, zless, zmore и + znew +
+
+
+
+

+ Краткое описание +

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

+ gunzip +

+
+

+ Распаковывает gzip-файлы +

+
+

+ gzexe +

+
+

+ Создает самораспаковывающиеся исполняемые файлы +

+
+

+ gzip +

+
+

+ Сжимает файлы, используя алгоритм Lempel-Ziv + (LZ77). +

+
+

+ uncompress +

+
+

+ Распаковывает сжатые файлы +

+
+

+ zcat +

+
+

+ Распаковывает указанные сжатые файлы в стандартный + поток вывода +

+
+

+ zcmp +

+
+

+ Запускает cmp для + архивированных файлов +

+
+

+ zdiff +

+
+

+ Запускает diff для + архивированных файлов +

+
+

+ zegrep +

+
+

+ Запускает egrep для + архивированных файлов +

+
+

+ zfgrep +

+
+

+ Запускает fgrep для + архивированных файлов +

+
+

+ zforce +

+
+

+ Принудительно устанавливает расширение .gz всем сжатым файлам, чтобы + gzip + не сжимал их снова; это может быть полезно, когда + имена файлов были обрезаны во время передачи файла +

+
+

+ zgrep +

+
+

+ Запускает grep для + архивированных файлов +

+
+

+ zless +

+
+

+ Запускает less для + архивированных файлов +

+
+

+ zmore +

+
+

+ Запускает more для + архивированных файлов +

+
+

+ znew +

+
+

+ Повторно сжимает файлы из формата compress в формат + gzip + — из .Z в + .gz +

+
+
+
+
+
+
+
+

+ 8.65. IPRoute2-6.7.0 +

+
+
+
+
+
+

+ Пакет IPRoute2 содержит набор программ для базового и + расширенного администрирования сетей IPv4. +

+
+
+
+ Приблизительное время + сборки: 0.1 SBU +
+
+ Требуемое дисковое + пространство: 17 MB +
+
+
+
+
+

+ 8.65.1. Установка пакета IPRoute2 +

+

+ Программа arpd, + входящая в этот пакет, не будет собрана, поскольку зависит от + Berkeley DB, которая не установлена в LFS. Однако каталог и + справочная страница для arpd все равно будут + установлены. Предотвратить это можно, выполнив приведенные + ниже команды. +

+
sed -i /ARPD/d Makefile
+rm -fv man/man8/arpd.8
+

+ Скомпилируйте пакет: +

+
make NETNS_RUN_DIR=/run/netns
+

+ Этот пакет не содержит рабочего набора тестов. +

+

+ Установите пакет: +

+
make SBINDIR=/usr/sbin install
+

+ По желанию, установите документацию: +

+
mkdir -pv             /usr/share/doc/iproute2-6.7.0
+cp -v COPYING README* /usr/share/doc/iproute2-6.7.0
+
+
+

+ 8.65.2. Содержимое пакета IPRoute2 +

+
+
+
+ Установленные + программы: bridge, ctstat + (ссылка на lnstat), genl, ifstat, ip, lnstat, nstat, + routel, rtacct, rtmon, rtpr, rtstat (ссылка на lnstat), + ss и tc +
+
+ Созданные каталоги: + /etc/iproute2, /usr/lib/tc и + /usr/share/doc/iproute2-6.7.0 +
+
+
+
+

+ Краткое описание +

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

+ bridge +

+
+

+ Настраивает сетевые мосты +

+
+

+ ctstat +

+
+

+ Утилита состояния подключения +

+
+

+ genl +

+
+

+ Универсальный интерфейс утилиты netlink +

+
+

+ ifstat +

+
+

+ Показывает статистику интерфейса, включая + количество переданных и полученных пакетов по + интерфейсам. +

+
+

+ ip +

+
+

+ Основной исполняемый файл. Он имеет несколько + различных функций, в том числе эти: +

+

+ ip link <device> + позволяет пользователям просматривать состояние + устройств и вносить изменения +

+

+ ip + addr позволяет пользователям + просматривать адреса и их свойства, добавлять новые + адреса и удалять старые +

+

+ ip + neighbor позволяет пользователям + просматривать связи с соседями и их свойства, + добавлять новые записи и удалять старые +

+

+ ip + rule позволяет пользователям + просматривать политики маршрутизации и изменять их +

+

+ ip + route позволяет пользователям + просматривать таблицу маршрутизации и изменять + правила таблицы маршрутизации +

+

+ ip + tunnel позволяет пользователям + просматривать IP-туннели и их свойства, а также + изменять их +

+

+ ip + maddr позволяет пользователям + просматривать multicast адреса и их свойства и + изменять их +

+

+ ip + mroute позволяет пользователям + устанавливать, изменять или удалять multicast + маршрутизацию. +

+

+ ip + monitor позволяет пользователям + постоянно отслеживать состояние устройств, адресов + и маршрутов +

+
+

+ lnstat +

+
+

+ Предоставляет сетевую статистику Linux; это + обобщенная и более полнофункциональная замена + старой программы rtstat +

+
+

+ nstat +

+
+

+ Отображает сетевую статистику +

+
+

+ routel +

+
+

+ Компонент ip + route для просмотра таблиц + маршрутизации +

+
+

+ rtacct +

+
+

+ Отображает содержимое /proc/net/rt_acct +

+
+

+ rtmon +

+
+

+ Мониторит изменения таблицы маршрутизации +

+
+

+ rtpr +

+
+

+ Преобразует вывод ip + -o в удобочитаемую форму +

+
+

+ rtstat +

+
+

+ Утилита состояния маршрута +

+
+

+ ss +

+
+

+ Аналогично команде netstat + показывает активные соединения +

+
+

+ tc +

+
+

+ Управление трафиком для реализаций качества + обслуживания (QoS) и класса обслуживания (CoS) +

+

+ tc + qdisc позволяет пользователям + настроить дисциплину обработки очередей +

+

+ tc + class позволяет пользователям + настраивать классы, на основе планирования + дисциплины обработки очередей +

+

+ tc + filter позволяет пользователям + настроить фильтрацию пакетов QOS/COS +

+

+ tc + monitor может использоваться для + просмотра изменений, внесенных в управление + трафиком в ядре +

+
+
+
+
+
+
+
+

+ 8.66. + Kbd-2.6.4 +

+
+
+
+
+
+

+ Пакет Kbd содержит файлы таблиц клавиш, консольные шрифты и + утилиты клавиатуры. +

+
+
+
+ Приблизительное время + сборки: 0.1 SBU +
+
+ Требуемое дисковое + пространство: 34 MB +
+
+
+
+
+

+ 8.66.1. Установка пакета Kbd +

+

+ Поведение клавиш backspace и delete не согласуется между + раскладками в пакете Kbd. Следующий патч исправляет эту + проблему для раскладок i386: +

+
patch -Np1 -i ../kbd-2.6.4-backspace-1.patch
+

+ После исправления клавиша backspace генерирует символ с кодом + 127, а клавиша delete генерирует хорошо известную + escape-последовательность. +

+

+ Удалите ненужную программу resizecons (она требуется + несуществующей svgalib для предоставления файлов видеорежима + — для нормального использования setfont, который правильно + определяет размеры консоли) вместе с ее справочной страницей. +

+
sed -i '/RESIZECONS_PROGS=/s/yes/no/' configure
+sed -i 's/resizecons.8 //' docs/man/man8/Makefile.in
+

+ Подготовьте Kbd для компиляции: +

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

+ Значение параметра configure: +

+
+
+ --disable-vlock +
+
+

+ Этот параметр предотвращает сборку утилиты vlock, + поскольку для неё требуется библиотека PAM, которая + недоступна в среде chroot. +

+
+
+
+

+ Скомпилируйте пакет: +

+
make
+

+ Чтобы протестировать пакет, выполните: +

+
make check
+

+ Установите пакет: +

+
make install
+
+

+ Примечание +

+

+ Для некоторых языков (например белорусского) пакет Kbd не + предоставляет подходящую раскладку, штатная раскладка + «by» + предполагает кодировку ISO-8859-5, а обычно используется + раскладка CP1251. Пользователи таких языков должны отдельно + загрузить рабочую раскладку. +

+
+

+ По желанию, установите документацию:: +

+
cp -R -v docs/doc -T /usr/share/doc/kbd-2.6.4
+
+
+

+ 8.66.2. + Содержимое пакета Kbd +

+
+
+
+ Установленные + программы: chvt, + deallocvt, dumpkeys, fgconsole, getkeycodes, kbdinfo, + kbd_mode, kbdrate, loadkeys, loadunimap, mapscrn, openvt, + psfaddtable (ссылка на psfxtable), psfgettable (ссылка на + psfxtable), psfstriptable (ссылка на psfxtable), + psfxtable, setfont, setkeycodes, setleds, setmetamode, + setvtrgb, showconsolefont, showkey, unicode_start и + unicode_stop +
+
+ Созданные каталоги: + /usr/share/consolefonts, + /usr/share/consoletrans, /usr/share/keymaps, + /usr/share/doc/kbd-2.6.4 и /usr/share/unimaps +
+
+
+
+

+ Краткое описание +

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

+ chvt +

+
+

+ Изменяет используемый виртуальный терминал +

+
+

+ deallocvt +

+
+

+ Освобождает неиспользуемые виртуальные терминалы +

+
+

+ dumpkeys +

+
+

+ Создает дамп таблиц перевода клавиатуры +

+
+

+ fgconsole +

+
+

+ Выводит номер активного виртуального терминала +

+
+

+ getkeycodes +

+
+

+ Выводит таблицу ядра соответствия сканкода и кода + клавиши +

+
+

+ kbdinfo +

+
+

+ Получает информацию о состоянии консоли +

+
+

+ kbd_mode +

+
+

+ Выводит или устанавливает режим клавиатуры +

+
+

+ kbdrate +

+
+

+ Устанавливает частоту повторных нажатий клавиш и + задержки клавиатуры +

+
+

+ loadkeys +

+
+

+ Загружает таблицу преобразования клавиатуры +

+
+

+ loadunimap +

+
+

+ Загружает таблицу ядра отображения символов юникода +

+
+

+ mapscrn +

+
+

+ Устаревшая программа, которая использовалась для + загрузки определяемой пользователем таблицы + соответствия выводимых символов в драйвер консоли; + теперь эту функцию выполняет setfont +

+
+

+ openvt +

+
+

+ Запускает программу на новом виртуальном терминале + (VT) +

+
+

+ psfaddtable +

+
+

+ Добавляет таблицу символов Unicode в консольный + шрифт. +

+
+

+ psfgettable +

+
+

+ Извлекает встроенную таблицу символов Unicode из + консольного шрифта. +

+
+

+ psfstriptable +

+
+

+ Удаляет встроенную таблицу символов Unicode из + консольного шрифта. +

+
+

+ psfxtable +

+
+

+ Обрабатывает таблицы символов Unicode для + консольных шрифтов. +

+
+

+ setfont +

+
+

+ Изменяет шрифты Enhanced Graphic Adapter (EGA) и + Video Graphics Array (VGA), используемые в консоли +

+
+

+ setkeycodes +

+
+

+ Загружает таблицу соответствия сканкодов ядра и + кодов клавиш; это удобно, если на клавиатуре есть + нестандартные клавиши +

+
+

+ setleds +

+
+

+ Устанавливает значения флагов клавиатуры и + индикаторов (обычно - светодиоды) +

+
+

+ setmetamode +

+
+

+ Определяет обработку метаклавиши на клавиатуре + (обычно, это клавиша Win) +

+
+

+ setvtrgb +

+
+

+ Устанавливает цветовую схему консоли для всех + виртуальных терминалов +

+
+

+ showconsolefont +

+
+

+ Показывает текущий шрифт экрана консоли EGA/VGA +

+
+

+ showkey +

+
+

+ Показывает сканкоды, код клавиши и код ASCII для + клавиш, нажатых на клавиатуре +

+
+

+ unicode_start +

+
+

+ Переводит клавиатуру и консоль в режим UNICODE. [Не + используйте эту программу, если вы не используете + файл раскладки для кодировки ISO-8859-1. Для других + кодировок эта утилита выдает неправильные + результаты]. +

+
+

+ unicode_stop +

+
+

+ Возвращает клавиатуру и консоль из режима UNICODE +

+
+
+
+
+
+
+
+

+ 8.67. Libpipeline-1.5.7 +

+
+
+
+
+
+

+ Пакет Libpipeline содержит библиотеку для гибкого и удобного + управления подпроцессами. +

+
+
+
+ Приблизительное время + сборки: 0.1 SBU +
+
+ Требуемое дисковое + пространство: 10 MB +
+
+
+
+
+

+ 8.67.1. Установка пакета Libpipeline +

+

+ Подготовьте Libpipeline к компиляции: +

+
./configure --prefix=/usr
+

+ Скомпилируйте пакет: +

+
make
+

+ Чтобы протестировать пакет, выполните: +

+
make check
+

+ Установите пакет: +

+
make install
+
+
+

+ 8.67.2. Содержимое пакета + Libpipeline +

+
+
+
+ Установленные + библиотеки: libpipeline.so +
+
+
+
+

+ Краткое описание +

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

+ libpipeline +

+
+

+ Эта библиотека используется для безопасного + построения конвейеров между подпроцессами. +

+
+
+
+
+
+
+
+

+ 8.68. + Make-4.4.1 +

+
+
+
+
+
+

+ Пакет Make содержит программу, управляющую генерацией + исполняемых и других файлов, из исходного кода. +

+
+
+
+ Приблизительное время + сборки: 0.5 SBU +
+
+ Требуемое дисковое + пространство: 13 MB +
+
+
+
+
+

+ 8.68.1. Установка пакета Make +

+

+ Подготовьте Make к компиляции: +

+
./configure --prefix=/usr
+

+ Скомпилируйте пакет: +

+
make
+

+ Чтобы протестировать пакет, выполните: +

+
chown -R tester .
+su tester -c "PATH=$PATH make check"
+

+ Установите пакет: +

+
make install
+
+
+

+ 8.68.2. + Содержимое пакета Make +

+
+
+
+ Установленные + программы: make +
+
+
+
+

+ Краткое описание +

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

+ make +

+
+

+ Автоматически определяет, какие части пакета + необходимо (пере)компилировать и запускает + соответствующие команды. +

+
+
+
+
+
+
+
+

+ 8.69. + Patch-2.7.6 +

+
+
+
+
+
+

+ Пакет Patch содержит программу для изменения или создания + файлов путём наложение «патча», обычно, создаваемого программой + diff. +

+
+
+
+ Приблизительное время + сборки: 0.1 SBU +
+
+ Требуемое дисковое + пространство: 12 MB +
+
+
+
+
+

+ 8.69.1. Установка пакета Patch +

+

+ Подготовьте Patch к компиляции: +

+
./configure --prefix=/usr
+

+ Скомпилируйте пакет: +

+
make
+

+ Чтобы протестировать пакет, выполните: +

+
make check
+

+ Установите пакет: +

+
make install
+
+
+

+ 8.69.2. + Содержимое пакета Patch +

+
+
+
+ Установленные + программы: patch +
+
+
+
+

+ Краткое описание +

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

+ patch +

+
+

+ Изменяет файлы в соответствии с файлом исправления + (патч обычно представляет собой список отличий, + создаваемый с помощью программы diff. Применяя их + к исходным файлам, patch создает + исправленные версии.) +

+
+
+
+
+
+
+
+

+ 8.70. + Tar-1.35 +

+
+
+
+
+
+

+ Пакет Tar предоставляет возможность создавать tar архивы, а + также производить с ними различные манипуляции. Tar может + распаковать предварительно созданный архив, добавить или + обновить файлы в нём, вернуть список файлов в архиве. +

+
+
+
+ Приблизительное время + сборки: 0.5 SBU +
+
+ Требуемое дисковое + пространство: 43 MB +
+
+
+
+
+

+ 8.70.1. Установка пакета Tar +

+

+ Подготовьте Tar к компиляции: +

+
FORCE_UNSAFE_CONFIGURE=1  \
+./configure --prefix=/usr
+
+

+ Значение параметра configure: +

+
+
+ FORCE_UNSAFE_CONFIGURE=1 +
+
+

+ Этот параметр принудительно запускает тест для + mknod от имени + пользователя root. + Обычно считается опасным запускать этот тест от имени + пользователя root, но, + поскольку он выполняется в системе, которая была + собрана лишь частично, его переопределение допустимо. +

+
+
+
+

+ Скомпилируйте пакет: +

+
make
+

+ Чтобы протестировать пакет, выполните: +

+
make check
+

+ Известно, что один тест, capabilities: binary store/restore, + завершается ошибкой при запуске, потому что в LFS отсутствует + selinux, он будет пропущен, если ядро хоста не поддерживает + расширенные атрибуты или метки безопасности файловой системы, + используемой для сборки LFS. +

+

+ Установите пакет: +

+
make install
+make -C doc install-html docdir=/usr/share/doc/tar-1.35
+
+
+

+ 8.70.2. + Содержимое пакета Tar +

+
+
+
+ Установленные + программы: tar +
+
+ Созданные каталоги: + /usr/share/doc/tar-1.35 +
+
+
+
+

+ Краткое описание +

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

+ tar +

+
+

+ Создает архивы, извлекает файлы и отображает + содержимое архивов, также известных как Тарболл. +

+
+
+
+
+
+
+
+

+ 8.71. Texinfo-7.1 +

+
+
+
+
+
+

+ Пакет Texinfo содержит программы для чтения, записи и + преобразования информационных страниц. +

+
+
+
+ Приблизительное время + сборки: 0.3 SBU +
+
+ Требуемое дисковое + пространство: 139 + MB +
+
+
+
+
+

+ 8.71.1. Установка пакета Texinfo +

+

+ Подготовьте Texinfo к компиляции: +

+
./configure --prefix=/usr
+

+ Скомпилируйте пакет: +

+
make
+

+ Чтобы протестировать пакет, выполните: +

+
make check
+

+ Установите пакет: +

+
make install
+

+ По желанию установите компоненты, входящие в пакет TeX:: +

+
make TEXMF=/usr/share/texmf install-tex
+
+

+ Значение параметра make: +

+
+
+ TEXMF=/usr/share/texmf +
+
+

+ Переменная makefile TEXMF + содержит расположение корня дерева TeX, это + понадобится, если, например, пакет TeX планируется + установить позже. +

+
+
+
+

+ Система документации использует простой текстовый файл для + хранения списка пунктов меню. Файл находится в /usr/share/info/dir. К сожалению, из-за + случайных проблем в Makefile различных пакетов он иногда + может не синхронизироваться с информационными страницами, + установленными в системе. Если когда-либо потребуется + пересоздать файл /usr/share/info/dir, следующие + необязательные команды решают эту задачу: +

+
pushd /usr/share/info
+  rm -v dir
+  for f in *
+    do install-info $f dir 2>/dev/null
+  done
+popd
+
+
+

+ 8.71.2. + Содержимое пакета Texinfo +

+
+
+
+ Установленные + программы: info, + install-info, makeinfo (ссылка на texi2any), pdftexi2dvi, + pod2texi, texi2any, texi2dvi, texi2pdf, и texindex +
+
+ Установленные + библиотеки: MiscXS.so, + Parsetexi.so и XSParagraph.so (все в + /usr/lib/texinfo) +
+
+ Созданные каталоги: + /usr/share/texinfo и + /usr/lib/texinfo +
+
+
+
+

+ Краткое описание +

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

+ info +

+
+

+ Используется для чтения информационных страниц, + которые похожи на справочные страницы, но гораздо + подробнее описывают применение всех доступных + параметров командной строки [Например, сравните + man + bison и info bison.] +

+
+

+ install-info +

+
+

+ Используется для установки информационных страниц; + он обновляет записи в индексном файле команды + info +

+
+

+ makeinfo +

+
+

+ Переводит исходные документы Texinfo в + информационные страницы, обычный текст или HTML. +

+
+

+ pdftexi2dvi +

+
+

+ Используется для форматирования документа Texinfo в + файл Portable Document Format (PDF). +

+
+

+ pod2texi +

+
+

+ Преобразует Pod в формат Texinfo +

+
+

+ texi2any +

+
+

+ Переводит исходную документацию Texinfo в различные + другие форматы. +

+
+

+ texi2dvi +

+
+

+ Используется для форматирования документа Texinfo в + независимый от устройства файл, который можно + распечатать +

+
+

+ texi2pdf +

+
+

+ Используется для форматирования данного документа + Texinfo в файл Portable Document Format (PDF). +

+
+

+ texindex +

+
+

+ Используется для сортировки индексных файлов + Texinfo. +

+
+
+
+
+
+
+
+

+ 8.72. + Vim-9.1.0041 +

+
+
+
+
+
+

+ Пакет Vim содержит мощный текстовый редактор. +

+
+
+
+ Приблизительное время + сборки: 2.5 SBU +
+
+ Требуемое дисковое + пространство: 236 + MB +
+
+
+
+

+ Альтернативы Vim +

+

+ .Если вы предпочитаете другой текстовый редактор, например, + Emacs, Joe или Nano, обратитесь к + https://mirror.linuxfromscratch.ru/blfs/view/12.1/postlfs/editors.html + за рекомендациями по установке. +

+
+
+
+

+ 8.72.1. Установка пакета Vim +

+

+ Во-первых, измените расположение файла конфигурации + vimrc на /etc: +

+
echo '#define SYS_VIMRC_FILE "/etc/vimrc"' >> src/feature.h
+

+ Подготовьте Vim к компиляции: +

+
./configure --prefix=/usr
+

+ Скомпилируйте пакет: +

+
make
+

+ Чтобы подготовить тесты, убедитесь, что пользователь + tester может писать в + исходное дерево: +

+
chown -R tester .
+

+ Теперь запустите тесты от имени пользователя tester: +

+
su tester -c "TERM=xterm-256color LANG=en_US.UTF-8 make -j1 test" \
+   &> vim-test.log
+

+ Набор тестов выводит на экран много двоичных данных. Это + может вызвать проблемы с настройками текущего терминала + (особенно, когда мы переопределяем переменную TERM, чтобы удовлетворить некоторые требования + набора тестов). Чтобы этого избежать, перенаправьте вывод в + файл журнала, как показано выше. Тест пройден успешно, если + лог по завершении содержит текст: ALL DONE. +

+

+ Установите пакет: +

+
make install
+

+ Многие пользователи рефлекторно набирают vi вместо vim. Чтобы разрешить + выполнение vim, + когда пользователи вводят vi, создайте символическую + ссылку как для двоичного файла, так и для справочной + страницы: +

+
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
+

+ По умолчанию документация Vim установливается в каталог + /usr/share/vim. Следующая + символическая ссылка позволяет получить доступ к документации + через каталог /usr/share/doc/vim-9.1.0041, что + согласуется с расположением документации остальных пакетов: +

+
ln -sv ../vim/vim91/doc /usr/share/doc/vim-9.1.0041
+

+ Если в LFS будет установлена система X Window, может + потребоваться перекомпилировать Vim после установки X. Vim + поставляется с графической версией редактора, для которой + требуется установка X и некоторых дополнительных библиотек. + Для получения дополнительной информации об этом процессе + обратитесь к документации по Vim и странице установки Vim в + книге BLFS по адресу + https://mirror.linuxfromscratch.ru/blfs/view/12.1/postlfs/vim.html. +

+
+
+

+ 8.72.2. Настройка Vim +

+

+ По умолчанию vim работает в режиме, + несовместимом с vi. Это может показаться необычным для + пользователей, которые в прошлом использовали другие + редакторы. Параметр «nocompatible» включен ниже, чтобы + подчеркнуть тот факт, что используется новое поведение. + Настройка также напоминает тем, кто хотел бы перейти в режим + «compatible», что параметр должен быть + первым в файле конфигурации. Это необходимо, потому что + изменяются другие параметры, и переопределения происходят + после этой настройки. Создайте файл конфигурации vim по умолчанию, выполнив + следующие действия: +

+
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
+

+ Параметр set + nocompatible заставляет vim вести себя более + правильно (по умолчанию), чем vi-совместимый способ. Удалите + «no», + чтобы сохранить старое поведение vi. Параметр set backspace=2 позволяет + удалять символы через перенос строки, автоматические отступы + и начало вставки. Параметр syntax + on включает подсветку синтаксиса vim. Параметр + set mouse= позволяет + правильно вставлять текст с помощью мыши при работе в chroot + или через удаленное соединение. Наконец, оператор + if с параметром + set background=dark + корректирует предположение vim о цвете фона некоторых + эмуляторов терминала. Это придает подсветке лучшую цветовую + схему для использования на черном фоне этих программ. +

+

+ Документацию по другим доступным параметрам можно получить, + выполнив следующую команду: +

+
vim -c ':options'
+
+

+ Примечание +

+

+ По умолчанию vim устанавливает файлы проверки орфографии + только для английского языка. Для установки файлов проверки + орфографии других языков, скопируйте файлы .spl и, при необходимости, .sug для вашего языка и кодировки + символов из runtime/spell, + сохраните их в /usr/share/vim/vim91/spell/. +

+

+ Чтобы использовать эти файлы проверки орфографии, + необходимо указать параметры для vim в файле /etc/vimrc, пример: +

+
set spelllang=en,ru
+set spell
+

+ Дополнительные сведения смотрите в файле runtime/spell/README.txt. +

+
+
+
+

+ 8.72.3. + Содержимое пакета Vim +

+
+
+
+ Установленные + программы: ex (ссылка на + vim), rview (ссылка на vim), rvim (ссылка на vim), vi + (ссылка на vim), view (ссылка на vim), vim, vimdiff + (ссылка на vim), vimtutor и xxd +
+
+ Созданные каталоги: + /usr/share/vim +
+
+
+
+

+ Краткое описание +

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

+ ex +

+
+

+ Запускает vim в режиме ex +

+
+

+ rview +

+
+

+ Это ограниченная версия view; никакие + команды оболочки не могут быть запущены, и + view + не может быть приостановлен +

+
+

+ rvim +

+
+

+ Это ограниченная версия vim; никакие + команды оболочки не могут быть запущены, и + vim + не может быть приостановлен +

+
+

+ vi +

+
+

+ Ссылка на vim +

+
+

+ view +

+
+

+ Запускает vim в режиме + только для чтения +

+
+

+ vim +

+
+

+ Сам редактор +

+
+

+ vimdiff +

+
+

+ Редактирует две или три версии файла с помощью + vim и + показывает различия +

+
+

+ vimtutor +

+
+

+ Обучает основным горячим клавишам и командам + vim +

+
+

+ xxd +

+
+

+ Создает шестнадцатеричный дамп данного файла; он + также может выполнять обратную операцию, поэтому + его можно использовать для бинарных патчей +

+
+
+
+
+
+
+
+

+ 8.73. MarkupSafe-2.1.5 +

+
+
+
+
+
+

+ MarkupSafe — это модуль Python, реализующий безопасное + использование строк в языках разметки XML/HTML/XHTML +

+
+
+
+ Приблизительное время + сборки: менее 0.1 + SBU +
+
+ Требуемое дисковое + пространство: 508 + KB +
+
+
+
+
+

+ 8.73.1. Установка пакета MarkupSafe +

+

+ Скомпилируйте MarkupSafe с помощью следующей команды: +

+
pip3 wheel -w dist --no-cache-dir --no-build-isolation --no-deps $PWD
+

+ С этим пакетом не поставляется тестов. +

+

+ Установите пакет: +

+
pip3 install --no-index --no-user --find-links dist Markupsafe
+
+
+

+ 8.73.2. Содержимое пакета + MarkupSafe +

+
+
+
+ Созданные каталоги: + /usr/lib/python3.12/site-packages/MarkupSafe-2.1.5.dist-info +
+
+
+
+
+
+
+
+

+ 8.74. + Jinja2-3.1.3 +

+
+
+
+
+
+

+ Jinja2 - это модуль Python, который реализует простой язык + шаблонов pythonic +

+
+
+
+ Приблизительное время + сборки: менее 0.1 + SBU +
+
+ Требуемое дисковое + пространство: 3.2 + MB +
+
+
+
+
+

+ 8.74.1. Установка пакета Jinja2 +

+

+ Соберите пакет: +

+
pip3 wheel -w dist --no-cache-dir --no-build-isolation --no-deps $PWD
+

+ Установите пакет: +

+
pip3 install --no-index --no-user --find-links dist Jinja2
+
+
+

+ 8.74.2. + Содержимое пакета Jinja2 +

+
+
+
+ Созданные каталоги: + /usr/lib/python3.12/site-packages/Jinja2-3.1.3.dist-info +
+
+
+
+
+
+
+
+

+ 8.75. Udev + из Systemd-255 +

+
+
+
+
+
+

+ Пакет Udev содержит программы для динамического создания + узлов устройств. +

+
+
+
+ Приблизительное время + сборки: 0.2 SBU +
+
+ Требуемое дисковое + пространство: 144 + MB +
+
+
+
+
+

+ 8.75.1. Установка пакета Udev +

+

+ Udev является частью пакета systemd-255. Используйте файл + systemd-255.tar.xz в качестве исходного архива. +

+

+ Удалите две ненужные группы render и sgx, из правил udev по умолчанию: +

+
sed -i -e 's/GROUP="render"/GROUP="video"/' \
+       -e 's/GROUP="sgx", //' rules.d/50-udev-default.rules.in
+

+ Удалите одно правило udev, требующее полной установки + Systemd: +

+
sed '/systemd-sysctl/s/^/#/' -i rules.d/99-systemd.rules.in
+

+ Измените жестко заданные пути к файлам конфигурации сети для + автономной установки udev: +

+
sed '/NETWORK_DIRS/s/systemd/udev/' -i src/basic/path-lookup.h
+

+ Подготовьте Udev к компиляции: +

+
mkdir -p build
+cd       build
+
+meson setup \
+      --prefix=/usr                 \
+      --buildtype=release           \
+      -Dmode=release                \
+      -Ddev-kvm-mode=0660           \
+      -Dlink-udev-shared=false      \
+      -Dlogind=false                \
+      -Dvconsole=false              \
+      ..
+
+

+ Значение параметров meson: +

+
+
+ --buildtype=release +
+
+

+ Этот параметр переопределяет тип сборки по умолчанию + («debug»), который создает + неоптимизированные двоичные файлы. +

+
+
+ -Dmode=release +
+
+

+ Отключает некоторые функции, которые разработчики + считают экспериментальными. +

+
+
+ -Ddev-kvm-mode=0660 +
+
+

+ По умолчанию правило udev разрешает всем пользователям + доступ к /dev/kvm. + Редакторы LFS считают это опасным. Данная опция + переопределяет разрешение по умолчанию. +

+
+
+ -Dlink-udev-shared=false +
+
+

+ Эта опция запрещает udev связываться с внутренней общей + библиотекой systemd libsystemd-shared. Эта библиотека + предназначена для совместного использования многими + компонентами Systemd, и ее использование избыточно, + когда установлен только udev. +

+
+
+ -Dlogind=false + -Dvconsole=false +
+
+

+ Эти параметры предотвращают создание нескольких файлов + правил udev, принадлежащих другим компонентам Systemd, + которые мы не будем устанавливать. +

+
+
+
+

+ Получите список предоставляемых udev helpers и сохраните его + в переменной (экспортировать его не обязательно, но это + упрощает сборку от имени обычного пользователя или при + использовании менеджера пакетов): +

+
export udev_helpers=$(grep "'name' :" ../src/udev/meson.build | \
+                      awk '{print $3}' | tr -d ",'" | grep -v 'udevadm')
+

+ Соберите только компоненты, необходимые для udev: +

+
ninja udevadm systemd-hwdb \
+      $(ninja -n | grep -Eo '(src/(lib)?udev|rules.d|hwdb.d)/[^ ]*') \
+      $(realpath libudev.so --relative-to .)                         \
+      $udev_helpers
+

+ Установите пакет: +

+
install -vm755 -d {/usr/lib,/etc}/udev/{hwdb.d,rules.d,network}
+install -vm755 -d /usr/{lib,share}/pkgconfig
+install -vm755 udevadm                     /usr/bin/
+install -vm755 systemd-hwdb                /usr/bin/udev-hwdb
+ln      -svfn  ../bin/udevadm              /usr/sbin/udevd
+cp      -av    libudev.so{,*[0-9]}         /usr/lib/
+install -vm644 ../src/libudev/libudev.h    /usr/include/
+install -vm644 src/libudev/*.pc            /usr/lib/pkgconfig/
+install -vm644 src/udev/*.pc               /usr/share/pkgconfig/
+install -vm644 ../src/udev/udev.conf       /etc/udev/
+install -vm644 rules.d/* ../rules.d/README         /usr/lib/udev/rules.d/
+install -vm644 $(find ../rules.d/*.rules \
+                      -not -name '*power-switch*') /usr/lib/udev/rules.d/
+install -vm644 hwdb.d/*  ../hwdb.d/{*.hwdb,README} /usr/lib/udev/hwdb.d/
+install -vm755 $udev_helpers                       /usr/lib/udev
+install -vm644 ../network/99-default.link          /usr/lib/udev/network
+

+ Установите некоторые пользовательские правила и + вспомогательные файлы, полезные в среде LFS: +

+
tar -xvf ../../udev-lfs-20230818.tar.xz
+make -f udev-lfs-20230818/Makefile.lfs install
+

+ Установите справочные страницы: +

+
tar -xf ../../systemd-man-pages-255.tar.xz                            \
+    --no-same-owner --strip-components=1                              \
+    -C /usr/share/man --wildcards '*/udev*' '*/libudev*'              \
+                                  '*/systemd.link.5'                  \
+                                  '*/systemd-'{hwdb,udevd.service}.8
+
+sed 's|systemd/network|udev/network|'                                 \
+    /usr/share/man/man5/systemd.link.5                                \
+  > /usr/share/man/man5/udev.link.5
+
+sed 's/systemd\(\\\?-\)/udev\1/' /usr/share/man/man8/systemd-hwdb.8   \
+                               > /usr/share/man/man8/udev-hwdb.8
+
+sed 's|lib.*udevd|sbin/udevd|'                                        \
+    /usr/share/man/man8/systemd-udevd.service.8                       \
+  > /usr/share/man/man8/udevd.8
+
+rm /usr/share/man/man*/systemd*
+

+ Наконец, сбросьте значение переменной udev_helpers: +

+
unset udev_helpers
+
+
+

+ 8.75.2. Настройка Udev +

+

+ Информация об аппаратных устройствах хранится в каталогах + /etc/udev/hwdb.d и /usr/lib/udev/hwdb.d. Udev необходимо, чтобы эта информация + была скомпилирована в двоичную базу данных /etc/udev/hwdb.bin. Создайте исходную базу + данных: +

+
udev-hwdb update
+

+ Эту команду необходимо запускать каждый раз при обновлении + информации об оборудовании. +

+
+
+

+ 8.75.3. + Содержимое пакета Udev +

+
+
+
+ Установленные + программы: udevadm, udevd + (символическая ссылка на udevadm) и udev-hwdb +
+
+ Установленные + библиотеки: libudev.so +
+
+ Созданные каталоги: + /etc/udev и /usr/lib/udev +
+
+
+
+

+ Short Descriptions +

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

+ udevadm +

+
+

+ Универсальный инструмент администрирования udev: + управляет демоном udevd, предоставляет информацию + из базы данных Udev, отслеживает uevents, ожидает + завершения uevents, проверяет конфигурацию Udev и + запускает uevents для данного устройства +

+
+

+ udevd +

+
+

+ Демон, который прослушивает uevents в сокете + netlink, создает устройства и запускает настроенные + внешние программы в ответ на эти uevents +

+
+

+ udev-hwdb +

+
+

+ Обновляет или запрашивает базу данных оборудования +

+
+

+ libudev +

+
+

+ Библиотека для получения информации об устройствах + udev +

+
+

+ /etc/udev +

+
+

+ Содержит файлы конфигурации Udev, разрешения для + устройств и правила именования устройств +

+
+
+
+
+
+
+
+

+ 8.76. + Man-DB-2.12.0 +

+
+
+
+
+
+

+ Пакет Man-DB содержит программы для поиска и просмотра + справочных страниц. +

+
+
+
+ Приблизительное время + сборки: 0.2 SBU +
+
+ Требуемое дисковое + пространство: 41 MB +
+
+
+
+
+

+ 8.76.1. Установка пакета Man-DB +

+

+ Подготовьте Man-DB к компиляции: +

+
./configure --prefix=/usr                         \
+            --docdir=/usr/share/doc/man-db-2.12.0 \
+            --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=
+
+

+ Значение параметров настройки: +

+
+
+ --disable-setuid +
+
+

+ Отключает установку setuid пользователю man при сборке программы + man. +

+
+
+ --enable-cache-owner=bin +
+
+

+ Изменяет владельца файлов общесистемного кэша на + пользователя bin. +

+
+
+ --with-... +
+
+

+ Эти три аргумента используются для настройки программ + по умолчанию. lynx текстовый + веб-браузер (см. инструкции по установке в книге BLFS), + vgrind + преобразует исходные коды программ во входные данные + Groff, grap удобен для + набора графов в документах Groff. Программы + vgrind и + grap + обычно не нужны для просмотра справочных страниц. Они + не входят в состав книг LFS или BLFS, но вы можете + установить их самостоятельно после сборки LFS. +

+
+
+ --with-systemd... +
+
+

+ Эти параметры предотвращают установку ненужных + каталогов и файлов systemd. +

+
+
+
+

+ Скомпилируйте пакет: +

+
make
+

+ Чтобы протестировать пакет, выполните: +

+
make check
+

+ Установите пакет: +

+
make install
+
+
+

+ 8.76.2. Не англоязычные страницы руководств в LFS +

+

+ В следующей таблице приведены наборы символов, в которых + могут быть закодированы страницы руководств пакета Man-DB, + устанавливаемые в директории /usr/share/man/<ll>. Кроме этого, + Man-DB правильно определяет, имеют ли справочные страницы, + установленные в этом каталоге, кодировку UTF-8. +

+
+ +

+ Таблица 8.1. Допустимые кодировки старых 8-битных + страниц руководств +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Язык (код) + + Кодировка + + Язык (код) + + Кодировка +
+ Датский (da) + + ISO-8859-1 + + Хорватский (hr) + + ISO-8859-2 +
+ Немецкий (de) + + ISO-8859-1 + + Венгерский (hu) + + ISO-8859-2 +
+ Английский (en) + + ISO-8859-1 + + Японский (ja) + + EUC-JP +
+ Испанский (es) + + ISO-8859-1 + + Корейский (ko) + + EUC-KR +
+ Эстонский (et) + + ISO-8859-1 + + Литовский (lt) + + ISO-8859-13 +
+ Финский (fi) + + ISO-8859-1 + + Латышский (lv) + + ISO-8859-13 +
+ Французский (fr) + + ISO-8859-1 + + Македонский (mk) + + ISO-8859-5 +
+ Ирландский (ga) + + ISO-8859-1 + + Польский (pl) + + ISO-8859-2 +
+ Галисийский (gl) + + ISO-8859-1 + + Румынский (ro) + + ISO-8859-2 +
+ Индонезийский (id) + + ISO-8859-1 + + Русский (ru) + + KOI8-R +
+ Исландский (is) + + ISO-8859-1 + + Словацкий (sk) + + ISO-8859-2 +
+ Итальянский (it) + + ISO-8859-1 + + Словенский (sl) + + ISO-8859-2 +
+ Норвежский букмол (nb) + + ISO-8859-1 + + Сербский латинский (sr@latin) + + ISO-8859-2 +
+ Голландский (nl) + + ISO-8859-1 + + Сербский (sr) + + ISO-8859-5 +
+ Норвежский нюнорск (nn) + + ISO-8859-1 + + Турецкий (tr) + + ISO-8859-9 +
+ Норвежский (no) + + ISO-8859-1 + + Украинский (uk) + + KOI8-U +
+ Португальский (pt) + + ISO-8859-1 + + Вьетнамский (vi) + + TCVN5712-1 +
+ Шведский (sv) + + ISO-8859-1 + + Упрощенный китайский (zh_CN) + + GBK +
+ Белорусский (be) + + CP1251 + + Упрощенный китайский, Сингапур (zh_SG) + + GBK +
+ Болгарский (bg) + + CP1251 + + Традиционный китайский, Гонконг (zh_HK) + + BIG5HKSCS +
+ Чешский (cs) + + ISO-8859-2 + + Традиционный китайский (zh_TW) + + BIG5 +
+ Греческий (el) + + ISO-8859-7 + +   + +   +
+
+

+
+

+ Примечание +

+

+ Страницы руководств на языках, которые не указаны в списке, + не поддерживаются. +

+
+
+
+

+ 8.76.3. + Содержимое пакета Man-DB +

+
+
+
+ Установленные + программы: accessdb, + apropos (ссылка на whatis), catman, lexgrog, man, + man-recode, mandb, manpath, и whatis +
+
+ Установленные + библиотеки: libman.so и + libmandb.so (обе в /usr/lib/man-db) +
+
+ Созданные каталоги: + /usr/lib/man-db, + /usr/libexec/man-db и /usr/share/doc/man-db-2.12.0 +
+
+
+
+

+ Краткое описание +

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

+ accessdb +

+
+

+ Выводит содержимое базы данных whatis в + удобочитаемой форме. +

+
+

+ apropos +

+
+

+ Выполняет поиск в базе данных whatis и + отображает краткое описание системных команд, + содержащих заданную строку +

+
+

+ catman +

+
+

+ Создает или обновляет предварительно + отформатированные страницы руководств +

+
+

+ lexgrog +

+
+

+ Отображает однострочную сводную информацию о данной + странице руководства +

+
+

+ man +

+
+

+ Форматирует и отображает запрошенную страницу + руководства +

+
+

+ man-recode +

+
+

+ Преобразует страницы руководства в другую кодировку +

+
+

+ mandb +

+
+

+ Создает или обновляет базу данных whatis +

+
+

+ manpath +

+
+

+ Отображает содержимое переменной $MANPATH или (если + переменная $MANPATH не установлена) соответствующий + путь поиска, определяемый в настройках man.conf и в + пользовательском окружении +

+
+

+ whatis +

+
+

+ Выполняет поиск в базе данных whatis и + отображает краткие описания системных команд, в + которых в описании ключей указано искомое слово +

+
+

+ libman +

+
+

+ Включает поддержку man во время + выполнения +

+
+

+ libmandb +

+
+

+ Включает поддержку man во время + выполнения +

+
+
+
+
+
+
+
+

+ 8.77. + Procps-ng-4.0.4 +

+
+
+
+
+
+

+ Пакет Procps-ng содержит программы для мониторинга процессов. +

+
+
+
+ Приблизительное время + сборки: 0.1 SBU +
+
+ Требуемое дисковое + пространство: 27 MB +
+
+
+
+
+

+ 8.77.1. Установка пакета Procps-ng +

+

+ Подготовьте Procps-ng к компиляции: +

+
./configure --prefix=/usr                           \
+            --docdir=/usr/share/doc/procps-ng-4.0.4 \
+            --disable-static                        \
+            --disable-kill
+
+

+ Значение параметра configure: +

+
+
+ --disable-kill +
+
+

+ Этот параметр отключает сборку команды kill; она будет + установлена из пакета Util-linux. +

+
+
+
+

+ Скомпилируйте пакет: +

+
make
+

+ Чтобы запустить набор тестов, выполните: +

+
make -k check
+

+ Известно, что тест ps with output flag + bsdtime,cputime,etime,etimes завершается неудачно, + если ядро хоста собрано с выключенным параметром CONFIG_BSD_PROCESS_ACCT. Также известно, что + два теста: pmap X with unreachable + process и pmap XX with + unreachable process иногда завершаются неудачно. +

+

+ Установите пакет: +

+
make install
+
+
+

+ 8.77.2. + Содержимое пакета Procps-ng +

+
+
+
+ Установленные + программы: free, pgrep, + pidof, pkill, pmap, ps, pwdx, slabtop, sysctl, tload, + top, uptime, vmstat, w и watch +
+
+ Установленные + библиотеки: libproc-2.so +
+
+ Созданные каталоги: + /usr/include/procps и + /usr/share/doc/procps-ng-4.0.4 +
+
+
+
+

+ Краткое описание +

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

+ free +

+
+

+ Сообщает объем свободной и используемой памяти (как + физической, так и файла подкачки) в системе. +

+
+

+ pgrep +

+
+

+ Выполняет поиск процессов на основе их имени и + других атрибутов +

+
+

+ pidof +

+
+

+ Сообщает PIDы указанных программ +

+
+

+ pkill +

+
+

+ Отправка сигналов процессам на основе их имени и + других атрибутов +

+
+

+ pmap +

+
+

+ Команда выводит детальную информацию об + использование оперативной памяти процессами +

+
+

+ ps +

+
+

+ Список запущенных процессов +

+
+

+ pwdx +

+
+

+ Сообщает текущий рабочий каталог процесса +

+
+

+ slabtop +

+
+

+ Отображает подробную информацию о кэш-памяти ядра в + режиме реального времени. +

+
+

+ sysctl +

+
+

+ Изменяет параметры ядра во время выполнения +

+
+

+ tload +

+
+

+ Выводит график текущей средней загрузки системы +

+
+

+ top +

+
+

+ Отображает список процессов, наиболее интенсивно + использующих ЦП; обеспечивает просмотр активности + процессора в режиме реального времени +

+
+

+ uptime +

+
+

+ Сообщает сколько времени работает система, сколько + пользователей вошли в систему и средние значения + загрузки системы. +

+
+

+ vmstat +

+
+

+ Сообщает статистику виртуальной памяти, содержащую + информацию о процессах, памяти, подкачке, блочном + вводе/выводе (IO), прерываниях и активности ЦП. +

+
+

+ w +

+
+

+ Показывает, какие пользователи в настоящее время + вошли в систему и с какого момента +

+
+

+ watch +

+
+

+ Выполняет заданную команду повторно, отображая + первый экран, заполненный ее выводом; это позволяет + пользователю наблюдать за изменениями с течением + времени +

+
+

+ libproc-2 +

+
+

+ Содержит функции, используемые большинством + программ в этом пакете. +

+
+
+
+
+
+
+
+

+ 8.78. Util-linux-2.39.3 +

+
+
+
+
+
+

+ Пакет Util-linux содержит различные служебные программы. + Среди них утилиты для работы с файловыми системами, + консолями, разделами и сообщениями. +

+
+
+
+ Приблизительное время + сборки: 0.5 SBU +
+
+ Требуемое дисковое + пространство: 313 + MB +
+
+
+
+
+

+ 8.78.1. Установка пакета Util-linux +

+

+ Сначала отключите проблемный тест: +

+
sed -i '/test_mkfds/s/^/#/' tests/helpers/Makemodule.am
+

+ Подготовьте Util-linux к компиляции: +

+
./configure --bindir=/usr/bin    \
+            --libdir=/usr/lib    \
+            --runstatedir=/run   \
+            --sbindir=/usr/sbin  \
+            --disable-chfn-chsh  \
+            --disable-login      \
+            --disable-nologin    \
+            --disable-su         \
+            --disable-setpriv    \
+            --disable-runuser    \
+            --disable-pylibmount \
+            --disable-static     \
+            --without-python     \
+            --without-systemd    \
+            --without-systemdsystemunitdir        \
+            ADJTIME_PATH=/var/lib/hwclock/adjtime \
+            --docdir=/usr/share/doc/util-linux-2.39.3
+

+ Параметры --disable и --without предотвращают появление + предупреждений о сборке компонентов, для которых требуются + пакеты, отсутствующие в LFS, или которые несовместимы с + программами, установленными другими пакетами. +

+

+ Скомпилируйте пакет: +

+
make
+

+ По желанию запустите набор тестов от имени пользователя без + полномочий root: +

+
+

+ Предупреждение +

+

+ Запуск набора тестов от имени пользователя root может повредить вашу систему. + Чтобы запустить тесты, опция CONFIG_SCSI_DEBUG для ядра + должна быть доступна в текущей работающей системе и должна + быть собрана как модуль. Включение её в ядро будет + прерывать загрузку. Для полного охвата тестами в систему + необходимо установить другие пакеты из BLFS. По желанию, + этот тест можно запустить после загрузки в готовую систему + LFS: +

+
bash tests/run.sh --srcdir=$PWD --builddir=$PWD
+
+
chown -R tester .
+su tester -c "make -k check"
+

+ Тесты с жесткими + ссылками завершатся неудачей, если в ядре хоста + не включена опция CONFIG_CRYPTO_USER_API_HASH или не включено + никаких опций, обеспечивающих реализацию SHA256 (например, + CONFIG_CRYPTO_SHA256 или + CONFIG_CRYPTO_SHA256_SSSE3, если + процессор поддерживает инструкции SSE3). Кроме того, + известно, что два подтеста из misc: mbsencode и один подтест + из script: replay не проходят. +

+

+ Установите пакет: +

+
make install
+
+
+

+ 8.78.2. Содержимое пакета Util-linux +

+
+
+
+ Установленные + программы: addpart, + agetty, blkdiscard, blkid, blkzone, blockdev, cal, + cfdisk, chcpu, chmem, choom, chrt, col, colcrt, colrm, + column, ctrlaltdel, delpart, dmesg, eject, fallocate, + fdisk, fincore, findfs, findmnt, flock, fsck, + fsck.cramfs, fsck.minix, fsfreeze, fstrim, getopt, + hardlink, hexdump, hwclock, i386 (ссылка на setarch), + ionice, ipcmk, ipcrm, ipcs, irqtop, isosize, kill, last, + lastb (ссылка на last), ldattach, linux32 (link to + setarch), linux64 (ссылка на setarch), logger, look, + losetup, lsblk, lscpu, lsipc, lsirq, lsfd, lslocks, + lslogins, lsmem, lsns, mcookie, mesg, mkfs, mkfs.bfs, + mkfs.cramfs, mkfs.minix, mkswap, more, mount, mountpoint, + namei, nsenter, partx, pivot_root, prlimit, readprofile, + rename, renice, resizepart, rev, rfkill, rtcwake, script, + scriptlive, scriptreplay, setarch, setsid, setterm, + sfdisk, sulogin, swaplabel, swapoff, swapon, switch_root, + taskset, uclampset, ul, umount, uname26 (ссылка на + setarch), unshare, utmpdump, uuidd, uuidgen, uuidparse, + wall, wdctl, whereis, wipefs, x86_64 (ссылка на setarch) + и zramctl +
+
+ Установленные + библиотеки: libblkid.so, + libfdisk.so, libmount.so, libsmartcols.so и + libuuid.so +
+
+ Созданные каталоги: + /usr/include/blkid, + /usr/include/libfdisk, /usr/include/libmount, + /usr/include/libsmartcols, /usr/include/uuid, + /usr/share/doc/util-linux-2.39.3 и + /var/lib/hwclock +
+
+
+
+

+ Краткое описание +

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

+ addpart +

+
+

+ Сообщает ядру Linux о новых разделах +

+
+

+ agetty +

+
+

+ Открывает порт tty, запрашивает имя для входа, а + затем вызывает программу login +

+
+

+ blkdiscard +

+
+

+ Очищает сектора на устройстве +

+
+

+ blkid +

+
+

+ Утилита командной строки для вывода атрибутов + блочного устройства +

+
+

+ blkzone +

+
+

+ Используется для управления зонированными блочными + системами хранения +

+
+

+ blockdev +

+
+

+ Позволяет пользователям вызывать ioctl блочного + устройства из командной строки +

+
+

+ cal +

+
+

+ Отображает простой календарь +

+
+

+ cfdisk +

+
+

+ Управляет таблицей разделов данного устройства +

+
+

+ chcpu +

+
+

+ Изменяет состояние процессоров +

+
+

+ chmem +

+
+

+ Настраивает память +

+
+

+ choom +

+
+

+ Отображает и регулирует оценки OOM-killer, + используемые для определения того, какой процесс + следует завершить первым, когда в Linux + заканчивается память +

+
+

+ chrt +

+
+

+ Манипулирует атрибутами процесса в режиме реального + времени +

+
+

+ col +

+
+

+ Фильтрует обратные переносы строк из входного + потока +

+
+

+ colcrt +

+
+

+ Фильтрует данные, выдаваемые командой nroff на + терминалы, у которых отсутствует ряд возможностей, + например, отображение перечеркнутых символов или + верхних и нижних индексов +

+
+

+ colrm +

+
+

+ Фильтрует вывод указанных столбцов +

+
+

+ column +

+
+

+ Форматирует заданный файл в несколько столбцов +

+
+

+ ctrlaltdel +

+
+

+ Устанавливает для комбинации символов Ctrl+Alt+Del + жесткую или мягкую перезагрузку +

+
+

+ delpart +

+
+

+ Запрашивает у ядра Linux удаление раздела +

+
+

+ dmesg +

+
+

+ Выводит загрузочные сообщения ядра +

+
+

+ eject +

+
+

+ Извлекает съемный носитель +

+
+

+ fallocate +

+
+

+ Предварительное выделение места под файл +

+
+

+ fdisk +

+
+

+ Манипулирует таблицей разделов указанного + устройства +

+
+

+ fincore +

+
+

+ Подчитывает сколько страниц приложение хранит в + памяти ядра +

+
+

+ findfs +

+
+

+ Находит файловую систему по метке или + универсальному уникальному идентификатору (UUID) +

+
+

+ findmnt +

+
+

+ Представляет собой интерфейс командной строки к + библиотеке libmount для работы с файлами mountinfo, + fstab и mtab +

+
+

+ flock +

+
+

+ Осуществляет блокировку файла, а затем выполняет + команду, не снимая блокировку +

+
+

+ fsck +

+
+

+ Используется для проверки и, при необходимости, + восстановления файловых систем +

+
+

+ fsck.cramfs +

+
+

+ Выполняет проверку целостности файловой системы + Cramfs на данном устройстве +

+
+

+ fsck.minix +

+
+

+ Выполняет проверку целостности файловой системы + Minix на данном устройстве +

+
+

+ fsfreeze +

+
+

+ Очень простая программа-обертка для выполнение + операций с драйвером ядра FIFREEZE/FITHAW ioctl +

+
+

+ fstrim +

+
+

+ Освобождает неиспользованные блоки смонтированной + файловой системы +

+
+

+ getopt +

+
+

+ Разбирает параметры указанной командной строки +

+
+

+ hardlink +

+
+

+ Объединяет дубликаты файлов путем создания жестких + ссылок +

+
+

+ hexdump +

+
+

+ Создает дамп указанного файла в шестнадцатеричном, + десятичном, восьмеричном или ascii-формате +

+
+

+ hwclock +

+
+

+ Читает или устанавливает значение аппаратных часов + системы, называемых также часами реального времени + (RTC- Real-Time Clock) или часами БИОС (BIOS - + Basic Input-Output System) +

+
+

+ i386 +

+
+

+ Символьная ссылка на setarch +

+
+

+ ionice +

+
+

+ Читает или устанавливает класс и приоритет + обработки ввода/вывода для программ +

+
+

+ ipcmk +

+
+

+ Создает различные ресурсы межпроцессного + взаимодействия (IPC) +

+
+

+ ipcrm +

+
+

+ Удаляет указанный ресурс межпроцессного + взаимодействия (IPC) +

+
+

+ ipcs +

+
+

+ Предоставляет информацию о состоянии IPC +

+
+

+ irqtop +

+
+

+ Отображает информацию о счетчике прерываний ядра в + стиле top(1) +

+
+

+ isosize +

+
+

+ Сообщает о размере файловой системы iso9660 +

+
+

+ kill +

+
+

+ Посылает сигналы процессам +

+
+

+ last +

+
+

+ Показывает, какие пользователи в последний раз + входили (и выходили), выполняя поиск в файле + /var/log/wtmp; кроме + этого показывает информацию о загрузке системы, + завершение работы и изменениях уровня выполнения +

+
+

+ lastb +

+
+

+ Показывает неудачные попытки входа в систему, + зарегистрированные в /var/log/btmp +

+
+

+ ldattach +

+
+

+ Назначает устройству последовательного доступа + алгоритм, определяющий дисциплину обслуживания + этого устройства +

+
+

+ linux32 +

+
+

+ Символическая ссылка на setarch +

+
+

+ linux64 +

+
+

+ Символическая ссылка на setarch +

+
+

+ logger +

+
+

+ Добавляет указанное сообщение в системный журнал +

+
+

+ look +

+
+

+ Отображает строки, начинающиеся с указанной + последовательности символов +

+
+

+ losetup +

+
+

+ Настраивает и управляет устройствами типа loop +

+
+

+ lsblk +

+
+

+ Выводит информацию обо всех или выбранных блочных + устройствах в древовидном формате +

+
+

+ lscpu +

+
+

+ Выводит информацию об архитектуре процессора +

+
+

+ lsfd +

+
+

+ Отображает информацию об открытых файлах; заменяет + lsof +

+
+

+ lsipc +

+
+

+ Выводит информацию об объектах IPC, которые в + настоящее время используются в системе +

+
+

+ lsirq +

+
+

+ Отображает информацию о счетчике прерываний ядра +

+
+

+ lslocks +

+
+

+ Отображает список всех заблокированных в настоящее + время файлов в системе +

+
+

+ lslogins +

+
+

+ Выводит информацию о пользователях, группах и + системных учетных записях +

+
+

+ lsmem +

+
+

+ Отображает диапазоны доступной памяти с указанием + их оперативного статуса +

+
+

+ lsns +

+
+

+ Отображает список пространств имен +

+
+

+ mcookie +

+
+

+ Генерирует для xauth магические + куки (128-битные случайные числа в + шестнадцатеричном формате) +

+
+

+ mesg +

+
+

+ Определяет, могут ли другие пользователи отправлять + сообщения на терминал текущего пользователя +

+
+

+ mkfs +

+
+

+ Создает файловую систему на устройстве (обычно это + раздел жесткого диска) +

+
+

+ mkfs.bfs +

+
+

+ Создает файловую систему Santa Cruz Operations + (SCO) bfs +

+
+

+ mkfs.cramfs +

+
+

+ Создает файловую систему cramfs +

+
+

+ mkfs.minix +

+
+

+ Создает файловую систему Minix +

+
+

+ mkswap +

+
+

+ Инициализирует данное устройство или файл для + использования в качестве области подкачки +

+
+

+ more +

+
+

+ Фильтр постраничного вывода текста +

+
+

+ mount +

+
+

+ Подключение файловой системы, находящейся на + заданном устройстве, к указанному каталогу в дереве + файловой системы +

+
+

+ mountpoint +

+
+

+ Проверяет, является ли каталог точкой монтирования +

+
+

+ namei +

+
+

+ Разделяет на составляющие путь к файлу или + каталогу, показывая информацию о типе каждого + элемента +

+
+

+ nsenter +

+
+

+ Запускает программу в пространстве имен других + процессов +

+
+

+ partx +

+
+

+ Сообщает ядру информацию о наличии и количестве + разделов, находящихся на диске +

+
+

+ pivot_root +

+
+

+ Делает данную файловую систему новой корневой + файловой системой текущего процесса +

+
+

+ prlimit +

+
+

+ Получает и устанавливает ограничения использования + ресурсов процесса +

+
+

+ readprofile +

+
+

+ Читает информацию о профилировании ядра +

+
+

+ rename +

+
+

+ Переименовывает заданные файлы, заменяя одну строку + другой +

+
+

+ renice +

+
+

+ Изменяет приоритет запущенных процессов +

+
+

+ resizepart +

+
+

+ Запрашивает у ядра Linux изменение размера раздела +

+
+

+ rev +

+
+

+ Меняет в указанном файле порядок строк на обратный +

+
+

+ rfkill +

+
+

+ Bнструмент командной строки для управления + беспроводными устройствами +

+
+

+ rtcwake +

+
+

+ Используется для перехода системы в спящий режим до + указанного времени пробуждения +

+
+

+ script +

+
+

+ Создает скрипт терминальной сессии +

+
+

+ scriptlive +

+
+

+ Перезапускает скрипт терминальной сессии, используя + информацию о времени +

+
+

+ scriptreplay +

+
+

+ Воспроизводит скрипт в соответствие с указанным + временем запуска +

+
+

+ setarch +

+
+

+ В окружении, используемом новой программой, + изменяет информацию об архитектуре и устанавливает + флаги персонализации +

+
+

+ setsid +

+
+

+ Запускает указанную программу в новом сеансе +

+
+

+ setterm +

+
+

+ Устанавливает атрибуты терминала +

+
+

+ sfdisk +

+
+

+ Управляет таблицей разделов диска +

+
+

+ sulogin +

+
+

+ Позволяет пользователю root входить в систему; обычно + он вызывается init, когда + система переходит в однопользовательский режим +

+
+

+ swaplabel +

+
+

+ Изменяет UUID и метку раздела подкачки +

+
+

+ swapoff +

+
+

+ Отключает устройства и файлы подкачки +

+
+

+ swapon +

+
+

+ Включает устройства и файлы, применяемые для + раздела подкачки, а также выводит список устройств + и файлов, используемых в данный момент +

+
+

+ switch_root +

+
+

+ Переключается на другую файловую систему и + устанавливает её в качестве корневой +

+
+

+ taskset +

+
+

+ Устанавливает привязку процессора к процессу +

+
+

+ uclampset +

+
+

+ Управляет атрибутами ограничения использования + системы или процесса +

+
+

+ ul +

+
+

+ Фильтр для преобразования символов подчеркивания в + escape-последовательности +

+
+

+ umount +

+
+

+ Размонтирует файловую систему из дерева ФС +

+
+

+ uname26 +

+
+

+ Символическая ссылка на setarch +

+
+

+ unshare +

+
+

+ Позволяет процессу (или потоку) отделить части + своего контекста выполнения, которые используются + совместно с другими процессами (или потоками) +

+
+

+ utmpdump +

+
+

+ Отображает содержимое указанного файла входа в + систему в удобном для пользователя формате +

+
+

+ uuidd +

+
+

+ Демон, используемый библиотекой UUID для создания + безопасных и гарантированно уникальных + идентификаторов UUID +

+
+

+ uuidgen +

+
+

+ Создает новые идентификаторы (UUID). Каждый новый + UUID - это случайная последовательность, которая, + будет с очень высокой вероятностью уникальной среди + всех идентификаторов, созданных как на локальной + машине, так и на любых других системах, в прошлом и + будущем (2128 или около 3,4 х + 1038 вариантов) +

+
+

+ uuidparse +

+
+

+ Утилита для анализа уникальных идентификаторов +

+
+

+ wall +

+
+

+ Отображает содержимое файла или, по умолчанию, его + вывод на терминалах всех пользователей, вошедших в + систему в данный момент +

+
+

+ wdctl +

+
+

+ Показывает статус аппаратного сторожевого таймера +

+
+

+ whereis +

+
+

+ Сообщает местоположение двоичного файла, исходного + кода и справочной страницы для указанной команды +

+
+

+ wipefs +

+
+

+ Стирает с устройства сигнатуру файловой системы +

+
+

+ x86_64 +

+
+

+ Символическая ссылка на setarch +

+
+

+ zramctl +

+
+

+ Программа для настройки и управления устройствами + zram (сжатый RAM-диск) +

+
+

+ libblkid +

+
+

+ Содержит подпрограммы для идентификации устройства + и извлечения токена +

+
+

+ libfdisk +

+
+

+ Содержит подпрограммы для управления таблицами + разделов +

+
+

+ libmount +

+
+

+ Содержит подпрограммы для монтирования и + размонтирования блочных устройств +

+
+

+ libsmartcols +

+
+

+ Содержит подпрограммы для более удобного вывода на + экран информации в табличном виде +

+
+

+ libuuid +

+
+

+ Содержит подпрограммы для генерации уникальных + идентификаторов для объектов, которые могут быть + доступны за пределами локальной системы +

+
+
+
+
+
+
+
+

+ 8.79. E2fsprogs-1.47.0 +

+
+
+
+
+
+

+ Пакет E2fsprogs содержит утилиты для работы с файловой + системой ext2. Также он + поддерживает журналируемые файловые системы ext3 и ext4. +

+
+
+
+ Приблизительное время + сборки: 2.4 SBU на жестком + диске, 0.4 SBU на SSD диске +
+
+ Требуемое дисковое + пространство: 95 MB +
+
+
+
+
+

+ 8.79.1. Установка пакета E2fsprogs +

+

+ В документации к E2fsprogs рекомендуется выполнять сборку в + подкаталоге папки с исходниками: +

+
mkdir -v build
+cd       build
+

+ Подготовьте E2fsprogs к компиляции: +

+
../configure --prefix=/usr           \
+             --sysconfdir=/etc       \
+             --enable-elf-shlibs     \
+             --disable-libblkid      \
+             --disable-libuuid       \
+             --disable-uuidd         \
+             --disable-fsck
+
+

+ Значение параметров настройки: +

+
+
+ --enable-elf-shlibs +
+
+

+ Параметр создает общие библиотеки, которые используют + некоторые программы в этом пакете. +

+
+
+ --disable-* +
+
+

+ Эти параметры предотвращают сборку и установку + библиотек libuuid и + libblkid, демона + uuidd, и обертку для + fsck, + поскольку util-linux устанавливает более свежие версии. +

+
+
+
+

+ Скомпилируйте пакет: +

+
make
+

+ Чтобы запустить тесты, выполните: +

+
make check
+

+ Известно, что один тест, с именем m_assume_storage_prezeroed, завершается + ошибкой. +

+

+ Установите пакет: +

+
make install
+

+ Удалите ненужные статические библиотеки: +

+
rm -fv /usr/lib/{libcom_err,libe2p,libext2fs,libss}.a
+

+ Этот пакет устанавливает сжатый файл .info но не обновляет общесистемный файл + dir. Разархивируйте этот файл, + а затем обновите системный файл dir, используя следующие команды: +

+
gunzip -v /usr/share/info/libext2fs.info.gz
+install-info --dir-file=/usr/share/info/dir /usr/share/info/libext2fs.info
+

+ По желанию, создайте и установите дополнительную + документацию, выполнив следующие команды: +

+
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
+
+
+

+ 8.79.2. + Настройка E2fsprogs +

+

+ Файл /etc/mke2fs.conf содержит + значения по умолчанию для различных параметров командной + строки mke2fs. + Вы можете отредактировать файл, чтобы значения по умолчанию + соответствовали вашим потребностям. Например, некоторые + утилиты (не в LFS или BLFS) не могут распознать файловую + систему ext4 с включенным + параметром metadata_csum_seed. + Если вам нужна + такая утилита, вы можете удалить параметр из списка по + умолчанию для ext4 с помощью + команды: +

+
sed 's/metadata_csum_seed,//' -i /etc/mke2fs.conf
+

+ Подробности читайте на странице руководства mke2fs.conf(5). +

+
+
+

+ 8.79.3. Содержимое пакета E2fsprogs +

+
+
+
+ Установленные + программы: badblocks, + chattr, compile_et, debugfs, dumpe2fs, e2freefrag, + e2fsck, e2image, e2label, e2mmpstatus, e2scrub, + e2scrub_all, e2undo, e4crypt, e4defrag, filefrag, + fsck.ext2, fsck.ext3, fsck.ext4, logsave, lsattr, + mk_cmds, mke2fs, mkfs.ext2, mkfs.ext3, mkfs.ext4, + mklost+found, resize2fs и tune2fs +
+
+ Установленные + библиотеки: libcom_err.so, + libe2p.so, libext2fs.so, и libss.so +
+
+ Созданные каталоги: + /usr/include/e2p, /usr/include/et, + /usr/include/ext2fs, /usr/include/ss, /usr/lib/e2fsprogs, + /usr/share/et и /usr/share/ss +
+
+
+
+

+ Краткое описание +

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

+ badblocks +

+
+

+ Выполняет поиск поврежденных блоков на устройстве + (обычно на разделе диска) +

+
+

+ chattr +

+
+

+ Изменяет атрибуты файлов в файловых системах + ext{234} +

+
+

+ compile_et +

+
+

+ Компилятор таблицы ошибок; конвертирует таблицу + имен кодов ошибок и сообщений в файл исходного кода + на языке С с тем, чтобы ее можно было использовать + с библиотекой com_err +

+
+

+ debugfs +

+
+

+ Отладчик файловой системы; его можно использовать + для проверки и изменения состояния файловых систем + ext{234} +

+
+

+ dumpe2fs +

+
+

+ Выводит информацию о суперблоке и группе блоков для + файловой системы, присутствующей на указанном + устройстве. +

+
+

+ e2freefrag +

+
+

+ Сообщает информацию о фрагментации свободного + пространства +

+
+

+ e2fsck +

+
+

+ Используется для проверки и, при необходимости, + восстановления файловых систем ext{234} +

+
+

+ e2image +

+
+

+ Используется для сохранения важных данных файловых + систем ext{234} в + файл +

+
+

+ e2label +

+
+

+ Отображает или изменяет метку файловой системы в + файловой системе ext{234} на данном устройстве. +

+
+

+ e2mmpstatus +

+
+

+ Проверяет состояние MMP (Multiple Mount Protection + - защита от множественного монтирования) файловой + системы ext4 +

+
+

+ e2scrub +

+
+

+ Проверяет содержимое смонтированной файловой + системы ext{234} +

+
+

+ e2scrub_all +

+
+

+ Проверяет все смонтированные файловые системы + ext{234} на наличие + ошибок +

+
+

+ e2undo +

+
+

+ Воспроизводит журнал отмены (undo_log) для файловой + системы ext{234}, + обнаруженной на устройстве. [Это можно использовать + для отмены неудачной операции программой + E2fsprogs.] +

+
+

+ e4crypt +

+
+

+ Утилита шифрования файловой системы Ext4 +

+
+

+ e4defrag +

+
+

+ Онлайн дефрагментатор для файловой системы + ext4 +

+
+

+ filefrag +

+
+

+ Сообщает о том, насколько сильно может быть + фрагментирован конкретный файл +

+
+

+ fsck.ext2 +

+
+

+ По умолчанию проверяет файловые системы + ext2 и является + жесткой ссылкой на e2fsck +

+
+

+ fsck.ext3 +

+
+

+ По умолчанию проверяет файловые системы + ext3 и является + жесткой ссылкой на e2fsck +

+
+

+ fsck.ext4 +

+
+

+ По умолчанию проверяет файловые системы + ext4 и является + жесткой ссылкой на e2fsck +

+
+

+ logsave +

+
+

+ Сохраняет вывод команды в файл журнала +

+
+

+ lsattr +

+
+

+ Перечисляет атрибуты файлов во второй расширенной + файловой системе. +

+
+

+ mk_cmds +

+
+

+ Преобразует таблицу имен команд и справочных + сообщений в исходный файл C, подходящий для + использования с библиотекой подсистемы libss +

+
+

+ mke2fs +

+
+

+ Создает файловую систему ext{234} на указанном + устройстве +

+
+

+ mkfs.ext2 +

+
+

+ По умолчанию создает файловую систему ext2 и является жесткой ссылкой + на mke2fs +

+
+

+ mkfs.ext3 +

+
+

+ По умолчанию создает файловую систему ext3 и является жесткой ссылкой + на mke2fs +

+
+

+ mkfs.ext4 +

+
+

+ По умолчанию создает файловую систему ext4 и является жесткой ссылкой + на mke2fs +

+
+

+ mklost+found +

+
+

+ Используется для создания каталога lost+found в файловой системе + ext{234}; + предварительно выделяет дисковые блоки для этого + каталога, чтобы облегчить задачу e2fsck +

+
+

+ resize2fs +

+
+

+ Может использоваться для увеличения или уменьшения + файловой системы ext{234} +

+
+

+ tune2fs +

+
+

+ Позволяет настроить параметры для файловой системы + ext{234} +

+
+

+ libcom_err +

+
+

+ Стандартная процедура отображения ошибок +

+
+

+ libe2p +

+
+

+ Используется dumpe2fs, + chattr, и + lsattr +

+
+

+ libext2fs +

+
+

+ Содержит подпрограммы, позволяющие программам + пользовательского уровня управлять файловой + системой ext{234} +

+
+

+ libss +

+
+

+ Используется debugfs +

+
+
+
+
+
+
+
+

+ 8.80. Sysklogd-1.5.1 +

+
+
+
+
+
+

+ Пакет Sysklogd содержит программы для логирования системных + сообщений, таких как сообщения ядра, когда происходят + различные события. +

+
+
+
+ Приблизительное время + сборки: менее 0.1 + SBU +
+
+ Требуемое дисковое + пространство: 680 + KB +
+
+
+
+
+

+ 8.80.1. Установка пакета Sysklogd +

+

+ Во-первых, устраните проблему, которая при некоторых условиях + вызывает в klogd ошибку сегментирования и исправьте + устаревшую программную конструкцию: +

+
sed -i '/Error loading kernel symbols/{n;n;d}' ksym_mod.c
+sed -i 's/union wait/int/' syslogd.c
+

+ Скомпилируйте пакет: +

+
make
+

+ Этот пакет не содержит набора тестов. +

+

+ Установите пакет: +

+
make BINDIR=/sbin install
+
+
+

+ 8.80.2. + Настройка Sysklogd +

+

+ Создайте новый файл /etc/syslog.conf, выполнив следующую + команду: +

+
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
+
+
+

+ 8.80.3. Содержимое пакета Sysklogd +

+
+
+
+ Установленные + программы: klogd и + syslogd +
+
+
+
+

+ Краткое описание +

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

+ klogd +

+
+

+ Системный демон для перехвата и регистрации + сообщений ядра +

+
+

+ syslogd +

+
+

+ Регистрирует сообщения системных программ для + записи в лог [Каждое регистрируемое сообщение + содержит как минимум время события, имя хоста, а + также имя программы, но это зависит от настроек + службы логирования.] +

+
+
+
+
+
+
+
+

+ 8.81. Sysvinit-3.08 +

+
+
+
+
+
+

+ Пакет Sysvinit содержит программы для управления загрузкой, + выполнением и выключением системы. +

+
+
+
+ Приблизительное время + сборки: менее 0.1 + SBU +
+
+ Требуемое дисковое + пространство: 3.5 + MB +
+
+
+
+
+

+ 8.81.1. Установка пакета Sysvinit +

+

+ Сначала примените патч, который удаляет несколько программ, + установленных другими пакетами и исправляет предупреждение + компилятора: +

+
patch -Np1 -i ../sysvinit-3.08-consolidated-1.patch
+

+ Скомпилируйте пакет: +

+
make
+

+ С этим пакетом не поставляется набор тестов. +

+

+ Установите пакет: +

+
make install
+
+
+

+ 8.81.2. Содержимое пакета Sysvinit +

+
+
+
+ Установленные + программы: bootlogd, + fstab-decode, halt, init, killall5, poweroff (ссылка на + halt), reboot (ссылка на halt), runlevel, shutdown и + telinit (ссылка на init) +
+
+
+
+

+ Краткое описание +

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

+ bootlogd +

+
+

+ Логирует сообщения при загрузке системы +

+
+

+ fstab-decode +

+
+

+ Запускает команду с аргументами, заданными в fstab +

+
+

+ halt +

+
+

+ Обычно вызывает команду shutdown с + параметром -h, за исключением + случаев, когда уровень запуска уже равен 0, тогда + он посылает ядру сигнал на остановку системы; Кроме + этого отмечает в файле /var/log/wtmp, что система + завершает работу +

+
+

+ init +

+
+

+ Первый процесс, который запускается после + инициализации оборудования; init берет на себя + процесс загрузки и запускает все процессы, которые + указанны в его файле конфигурации +

+
+

+ killall5 +

+
+

+ Посылает сигнал всем процессам, за исключением + процессов в его собственном сеансе; он не завершит + свою родительскую оболочку +

+
+

+ poweroff +

+
+

+ Посылает ядру команду остановить систему и + выключить компьютер (смотрите команду halt) +

+
+

+ reboot +

+
+

+ Посылает ядру команду перезагрузить систему + (смотрите команду halt) +

+
+

+ runlevel +

+
+

+ Сообщает о предыдущем и текущем уровнях выполнения + так, как это указано в последней записи в файле + /run/utmp +

+
+

+ shutdown +

+
+

+ Безопасно останавливает систему, отправляя сигналы + всем процессам и оповещая всех пользователей, + находящихся в системе +

+
+

+ telinit +

+
+

+ Сообщает init на какой + уровень выполнения перейти +

+
+
+
+
+
+
+
+

+ 8.82. Об отладочных символах +

+
+
+
+
+

+ Большинство программ и библиотек по умолчанию компилируются с + отладочными символами (gcc с параметром -g). Это означает, что при + отладке программы или библиотеки, которые были скомпилированы с + использованием отладочной информации, отладчик может + предоставить не только адреса памяти, но и имена подпрограмм и + переменных. +

+

+ Включение отладочных символов значительно увеличивает размер + программы или библиотеки. Ниже приведена информация по объему + пространства, занимаемого отладочными символами: +

+
+
    +
  • +

    + Двоичный файл bash с отладочными + символами: 1200 KB +

    +
  • +
  • +

    + Двоичный файл bash без отладочных + символов: 480 KB (на 60% меньше) +

    +
  • +
  • +

    + Файлы Glibc и GCC (/lib и + /usr/lib) с отладочными + символами: 87 MB +

    +
  • +
  • +

    + Файлы Glibc и GCC без отладочных символов: 16 MB (на 82% + меньше) +

    +
  • +
+
+

+ Размеры могут варьироваться в зависимости от используемого + компилятора и библиотеки Си, но программа, в которой были + удалены отладочные символы, обычно примерно на 50-80% меньше, + чем ее аналог с ними. Поскольку большинство пользователей + никогда не будут использовать отладчик в своем программном + обеспечении, удаление отладочных символов может освободить + много места на диске. В следующем разделе показано, как удалить + все отладочные символы из программ и библиотек. +

+
+
+
+
+

+ 8.83. Удаление отладочных + символов +

+
+
+
+
+

+ Этот раздел является необязательным. Если предполагаемый + пользователь не является программистом и не планирует выполнять + какую-либо отладку системного программного обеспечения, размер + системы можно уменьшить примерно на 2 ГБ, удалив отладочные + символы и некоторые ненужные записи таблицы символов из + двоичных файлов и библиотек. Это не вызывает никаких неудобств + для обычного пользователя Linux. +

+

+ Большинство людей, использующих приведенные ниже команды, не + испытывают никаких трудностей. Однако легко допустить опечатку + и сделать новую систему непригодной для использования. Поэтому + перед выполнением команды strip рекомендуется сделать + резервную копию системы LFS. +

+

+ Команда strip с + параметром --strip-unneeded удаляет все + отладочные символы из двоичного файла или библиотеки. Кроме + этого, она удаляет все записи таблицы символов, ненужные + компоновщику (для статических библиотек) или динамическому + компоновщику (для динамически подключаемых двоичных файлов и + общих библиотек). +

+

+ Отладочные символы из выбранных библиотек сжимаются с помощью + Zlib и сохраняются в отдельных + файлах. Эта отладочная информация необходима при выполнении + регрессионных тестов, с помощью + valgrind или + gdb позже, в BLFS. +

+

+ Обратите внимание, что команда strip перезапишет двоичный + файл или библиотеку, которую она обрабатывает. Это может + привести к сбою процессов, использующих код или данные из + файла. Если это затронет сам процесс, выполняющий strip, удаляемый двоичный + файл или библиотека могут быть уничтожены; это может сделать + систему полностью непригодной для использования. Чтобы избежать + этого, мы скопируем некоторые библиотеки и двоичные файлы в + /tmp, очистим их и переустановим + с помощью команды install. Прочтите статью + Раздел 8.2.1, «Проблемы с + обновлением», чтобы понять, почему следует использовать + команду install + здесь. +

+
+

+ Примечание +

+

+ Имя загрузчика ELF — ld-linux-x86-64.so.2 в 64-битных + системах. и ld-linux.so.2 в 32-битных системах. Конструкция + ниже выбирает правильное имя для текущей архитектуры, + исключая всё, что заканчивается на g, если приведенные ниже команды уже были + выполнены. +

+
+
+

+ Важно +

+

+ Если есть какой-либо пакет, версия которого отличается от + версии, указанной в книге (либо в соответствии с + рекомендациями по безопасности, либо в соответствии с личными + предпочтениями), может потребоваться обновить имя файла + библиотеки в save_usrlib или + online_usrlib. В противном случае система может стать + полностью непригодной для использования. +

+
+
save_usrlib="$(cd /usr/lib; ls ld-linux*[^g])
+             libc.so.6
+             libthread_db.so.1
+             libquadmath.so.0.0.0
+             libstdc++.so.6.0.32
+             libitm.so.1.0.0
+             libatomic.so.1.2.0"
+
+cd /usr/lib
+
+for LIB in $save_usrlib; do
+    objcopy --only-keep-debug --compress-debug-sections=zlib $LIB $LIB.dbg
+    cp $LIB /tmp/$LIB
+    strip --strip-unneeded /tmp/$LIB
+    objcopy --add-gnu-debuglink=$LIB.dbg /tmp/$LIB
+    install -vm755 /tmp/$LIB /usr/lib
+    rm /tmp/$LIB
+done
+
+online_usrbin="bash find strip"
+online_usrlib="libbfd-2.42.so
+               libsframe.so.1.0.0
+               libhistory.so.8.2
+               libncursesw.so.6.4-20230520
+               libm.so.6
+               libreadline.so.8.2
+               libz.so.1.3.1
+               libzstd.so.1.5.5
+               $(cd /usr/lib; find libnss*.so* -type f)"
+
+for BIN in $online_usrbin; do
+    cp /usr/bin/$BIN /tmp/$BIN
+    strip --strip-unneeded /tmp/$BIN
+    install -vm755 /tmp/$BIN /usr/bin
+    rm /tmp/$BIN
+done
+
+for LIB in $online_usrlib; do
+    cp /usr/lib/$LIB /tmp/$LIB
+    strip --strip-unneeded /tmp/$LIB
+    install -vm755 /tmp/$LIB /usr/lib
+    rm /tmp/$LIB
+done
+
+for i in $(find /usr/lib -type f -name \*.so* ! -name \*dbg) \
+         $(find /usr/lib -type f -name \*.a)                 \
+         $(find /usr/{bin,sbin,libexec} -type f); do
+    case "$online_usrbin $online_usrlib $save_usrlib" in
+        *$(basename $i)* )
+            ;;
+        * ) strip --strip-unneeded $i
+            ;;
+    esac
+done
+
+unset BIN LIB save_usrlib online_usrbin online_usrlib
+
+

+ Большое количество файлов будет помечено как ошибочные, потому + что формат файла не распознан. Эти предупреждения можно смело + игнорировать. Они указывают на то, что файлы являются + скриптами, а не двоичными файлами. +

+
+
+
+
+

+ 8.84. Очистка +

+
+
+
+
+

+ Наконец, удалите некоторые лишние файлы, оставшиеся после + запуска тестов: +

+
rm -rf /tmp/*
+

+ Также в каталогах /usr/lib и /usr/libexec есть несколько файлов + с расширением .la. Это файлы «архива libtool». Как было сказано ранее, + в современной системе Linux файлы .la libtool необходимы только + для libltdl. Предполагается, что libltdl не будет загружать + библиотеки в LFS, кроме этого известно, что некоторые файлы .la + могут нарушить сборку пакетов BLFS. Удалите эти файлы сейчас: +

+
find /usr/lib /usr/libexec -name \*.la -delete
+

+ Дополнительные сведения об архивных файлах Libtool смотрите в + книге BLFS + "О файлах Libtool Archive (.la)". +

+

+ Компилятор, собранный в Глава 6 + и + Глава 7 все еще установлен, но больше не нужен. + Удалите его с помощью команды: +

+
find /usr -depth -name $(uname -m)-lfs-linux-gnu\* | xargs rm -rf
+

+ Наконец, удалите временную учетную запись пользователя + 'tester', созданную в начале предыдущей главы. +

+
userdel -r tester
+
+
+
+
+
+

+ Глава 9. + Системные настройки +

+
+
+
+
+
+
+
+

+ 9.1. Введение +

+
+
+
+
+

+ Загрузка системы Linux включает в себя несколько задач. Процесс + должен монтировать как виртуальные, так и реальные файловые + системы, инициализировать устройства, активировать файл + подкачки, проверять целостность файловых систем, монтировать + любые разделы или файл подкачки, устанавливать системные часы, + запускать сеть, запускать требуемые системой службы и выполнять + любые другие необходимые пользователю задачи. Этот процесс + должен быть организован таким образом, чтобы задачи выполнялись + в правильном порядке, но в то же время как можно быстрее. +

+
+

+ 9.1.1. System V +

+

+ System V это классический процесс загрузки, который + использовался в Unix и Unix-подобных системах, таких как + Linux с 1983 года. Он состоит из небольшой программы + init, которая + настраивает базовые программы, такие как login (через getty) и + запускает скрипт. Этот скрипт, обычно именуемый rc управляет выполнением + дополнительных сценариев, необходимых для инициализации + системы. +

+

+ Программа init + управляется файлом /etc/inittab + и разделена по уровням выполнения, которые могут быть выбраны + пользователем. В LFS используются следующие уровни: +

+
+

+ 0 — выключение
+ 1 — Однопользовательский режим
+ 2 — Определяемый пользователем
+ 3 — Полный многопользовательский режим
+ + 4 — Определяемый пользователем
+ 5 — Полный многопользовательский режим с дисплей-менеджером
+ + 6 — перезагрузка +

+
+

+ Уровень выполнения по умолчанию равен 3 или 5. +

+

+ Преимущества +

+
+
    +
  • +

    + Устоявшаяся, хорошо отлаженная система. +

    +
  • +
  • +

    + Легко настраивается. +

    +
  • +
+
+

+ Недостатки +

+
+
    +
  • +

    + Может загружаться медленнее. Загрузка базовой системы + LFS в среднем занимает 8-12 секунд, при этом время + загрузки измеряется от первого сообщения ядра до + запроса на вход в систему. Подключение к сети обычно + устанавливается примерно через 2 секунды после запроса + на вход в систему. +

    +
  • +
  • +

    + Последовательная обработка задач загрузки. Это связано + с предыдущим пунктом. Задержка в работе любого + процесса, например, проверка файловой системы, приведет + к задержке всего процесса загрузки. +

    +
  • +
  • +

    + Напрямую не поддерживает дополнительные функции, такие + как контрольные группы (cgroups) и диспетчер системных + ресурсов для каждого пользователя. +

    +
  • +
  • +

    + Добавление init-скриптов требует ручных однотипных + действий. +

    +
  • +
+
+
+
+
+
+
+

+ 9.2. LFS-Bootscripts-20230728 +

+
+
+
+
+
+

+ Пакет LFS-Bootscripts содержит набор скриптов для + запуска/остановки системы LFS при загрузке/завершении работы. + Файлы конфигурации и процедуры, необходимые для настройки + /процесса загрузки, описаны в следующих разделах. +

+
+
+
+ Приблизительное время + сборки: менее 0.1 + SBU +
+
+ Требуемое дисковое + пространство: 244 + KB +
+
+
+
+
+

+ 9.2.1. Установка пакета LFS-Bootscripts +

+

+ Установите пакет: +

+
make install
+
+
+

+ 9.2.2. Содержимое пакета + LFS-Bootscripts +

+
+
+
+ Установленные скрипты: + checkfs, cleanfs, console, + functions, halt, ifdown, ifup, localnet, modules, + mountfs, mountvirtfs, network, rc, reboot, sendsignals, + setclock, ipv4-static, swap, sysctl, sysklogd, template, + udev и udev_retry +
+
+ Созданные каталоги: + /etc/rc.d, /etc/init.d + (символическая ссылка), /etc/sysconfig, /lib/services, + /lib/lsb (символическая ссылка) +
+
+
+
+

+ Краткое описание +

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

+ checkfs +

+
+

+ Проверяет целостность файловых систем перед их + монтированием (за исключением журналируемых и + сетевых файловых систем) +

+
+

+ cleanfs +

+
+

+ Удаляет файлы, которые не должны сохраняться между + перезагрузками, например, те, которые находятся в + директориях /run/ и + /var/lock/; скрипт + пересоздает /run/utmp + и удаляет файлы, которые, возможно, существуют + /etc/nologin, + /fastboot, и + /forcefsck +

+
+

+ console +

+
+

+ Загружает правильную таблицу раскладок для + требуемой раскладки клавиатуры; он также + устанавливает экранный шрифт +

+
+

+ functions +

+
+

+ Содержит общие функции, такие как проверка ошибок и + состояния, которые используются несколькими + загрузочными скриптами +

+
+

+ halt +

+
+

+ Останавливает работу системы +

+
+

+ ifdown +

+
+

+ Останавливает сетевое устройство +

+
+

+ ifup +

+
+

+ Инициализирует сетевое устройство +

+
+

+ localnet +

+
+

+ Настраивает имя хоста системы и локальное + устройство loopback +

+
+

+ modules +

+
+

+ Загружает модули ядра из списка, который находится + в файле /etc/sysconfig/modules, используя + указанные там же аргументы +

+
+

+ mountfs +

+
+

+ Монтирует все файловые системы, кроме тех, которые + помечены как noauto или сетевых + файловых систем +

+
+

+ mountvirtfs +

+
+

+ Монтирует виртуальные файловые системы, такие как + proc +

+
+

+ network +

+
+

+ Выполняет настройку сетевых интерфейсов, например, + сетевых карт, и настаивает шлюз по-умолчанию (где + это применимо) +

+
+

+ rc +

+
+

+ Основной сценарий управления; он отвечает за запуск + всех остальных загрузочных скриптов один за другим, + в последовательности, определяемой именами + символических ссылок на другие скрипты. +

+
+

+ reboot +

+
+

+ Перезагружает систему +

+
+

+ sendsignals +

+
+

+ Обеспечивает завершение каждого процесса перед + перезагрузкой или остановкой системы. +

+
+

+ setclock +

+
+

+ Сбрасывает системные часы на местное время, если + аппаратные часы не установлены на всемирное + координированное время (UTC). +

+
+

+ ipv4-static +

+
+

+ Предоставляет функциональные возможности, + необходимые для назначения статического адреса + сетевому интерфейсу. +

+
+

+ swap +

+
+

+ Включает и отключает файлы и разделы, используемые + для подкачки. +

+
+

+ sysctl +

+
+

+ Загружает в работающее ядро значения системных + настроек из файла /etc/sysctl.conf, если этот файл + существует +

+
+

+ sysklogd +

+
+

+ Запускает и останавливает демоны журналирования + сообщений, выдаваемых системой и ядром. +

+
+

+ template +

+
+

+ Шаблон для создания пользовательских загрузочных + скриптов для других демонов +

+
+

+ udev +

+
+

+ Подготавливает каталог /dev и запускает демон udev +

+
+

+ udev_retry +

+
+

+ Повторяет неудачные попытки запуска udev uevents и + копирует сгенерированные файлы правил из + /run/udev в + /etc/udev/rules.d + если требуется. +

+
+
+
+
+
+
+
+

+ 9.3. + Взаимодействие с устройствами и модулями +

+
+
+
+
+

+ В + Глава 8, мы установили демон udev во время сборки + udev . Прежде чем мы углубимся в + детали того, как работает udev, необходимо кратко рассказать о + предыдущих методах взаимодействия с устройствами. +

+

+ Системы Linux традиционно использовали метод статического + создания устройств, при котором огромное количество узлов + устройств(иногда буквально тысячи узлов) создавалось в + /dev, независимо от того, + существовали ли соответствующие аппаратные устройства на самом + деле. Обычно это делалось с помощью скрипта MAKEDEV, который содержал ряд + вызовов команды mknod с соответствующими + основными и второстепенными номерами устройств, для всех + возможных вариантов, которые только могут существовать в мире. +

+

+ Используя метод udev, узлы устройств создаются только для тех + устройств, которые обнаружены ядром. Эти узлы устройств + создаются каждый раз при загрузке системы; они хранятся в + файловой системе devtmpfs + (виртуальная файловая система, которая полностью находится в + оперативной памяти). Узлы не занимают много места в памяти и их + общий размер незначителен. +

+
+

+ 9.3.1. История +

+

+ В феврале 2000 года, новая файловая система devfs была принята в ветку ядра 2.3.46 и + была доступна на протяжении выпуска стабильных релизов ветки + 2.4. Хотя она и присутствовала в ядре, такой способ + динамического создания устройств никогда не получал поддержки + от разработчиков ядра. +

+

+ Основная проблема с подходом, принятым devfs была связана с обработкой + обнаружения, создания и назначения имен устройствам. Проблема + связанная с именованием узлов была самой важной. Общепринято, + что если имена устройств можно настраивать, политика + именования устройств должна выбираться системными + администраторами, а не навязываться разработчиками. Файловая + система devfs также страдала + от состояния гонки, присущего её архитектуре; оно не могло + быть исправлено без существенной переработки ядра. + devfs долгое время была + помечена как устаревшая и, наконец, была удалена из ядра в + июне 2006 года. +

+

+ При разработке нестабильной ветки ядра 2.5, позднее, + выпущенной как стабильный релиз 2.6, появилась новая + виртуальная файловая система sysfs. Задача этой файловой системы + заключалась в предоставление информации о конфигурации + оборудования системы процессам пользовательского + пространства. С помощью этого представления, видимого в + пользовательском пространстве, стало возможным разработать + замену пользовательского пространства для devfs. +

+
+
+

+ 9.3.2. Реализация Udev +

+
+
+
+
+

+ 9.3.2.1. Sysfs +

+
+
+
+

+ Краткое описание файловой системы sysfs было представлено выше. Можно + задаться вопросом, как sysfs получает информацию об + устройствах в системе, и о том, какие номера устройств + должны использоваться для них. Драйверы, скомпилированные в + ядро, регистрируют свои объекты в sysfs (внутри devtmpfs), по мере обнаружения ядром. + Для драйверов, которые скомпилированы в виде модулей, + регистрация происходит при его загрузке. После монтирования + файловой системы sysfs (в + каталог /sys), данные, + зарегистрированные драйверами, в sysfs, станут доступны для + пользовательского пространства и udevd для обработки + (включая модификацию узлов устройств). +

+
+
+
+
+
+

+ 9.3.2.2. + Создание узла устройства +

+
+
+
+

+ Файлы устройств создаются ядром в файловой системе + devtmpfs. Любой драйвер, + которому необходимо зарегистрировать узел устройства, будет + использовать для этого devtmpfs (через системный драйвер + ядра). Когда экземпляр devtmpfs монтируется в каталог + /dev, узел устройства будет + доступен в пользовательском пространстве с фиксированным + именем, разрешениями и владельцем. +

+

+ Через некоторое время, ядро отправит uevent в udevd. На основе правил, + которые указанны в файлах в каталогах /etc/udev/rules.d, /lib/udev/rules.d, и /run/udev/rules.d, udevd создаст + дополнительные символические ссылки на узлы устройств, или + сменит разрешения, владельца или группу, или изменит запись + (имя) во внутренней базе данных udevd для этого объекта. +

+

+ Правила в этих трёх каталогах пронумерованы и используются + совместно. Если udevd не может найти + правило для устройства, он оставит права доступа и + владельца на devtmpfs, + которые были установлены изначально. +

+
+
+
+
+
+

+ 9.3.2.3. Загрузка модуля +

+
+
+
+

+ Драйверы устройств, скомпилированные в виде модулей ядра + могут содержать встроенные псевдонимы. Псевдонимы можно + увидеть просмотрев вывод программы modinfo, обычно они + связаны со специфичными для шины идентификаторами + устройств, которые поддерживается модулем. Например, + драйвер snd-fm801 + подерживает PCI устройства с идентификатором поставщика + 0x1319 и идентификатором устройства 0x0801, и имеет + псевдоним pci:v00001319d00000801sv*sd*bc04sc01i*. + Для большинства устройств, драйвер шины экспортирует + псевдонимы драйвера, которые будет обрабатывать устройство + через sysfs. Например, файл + /sys/bus/pci/devices/0000:00:0d.0/modalias + может содержать строку pci:v00001319d00000801sv00001319sd00001319bc04sc01i00. + Правила по умолчанию, которые предоставлены Udev, заставят + udevd вызвать + /sbin/modprobe с + содержимым, которое находится в значении переменной + окружения MODALIAS uevent + (которое должно совпадать с содержимым файла modalias в sysfs), тем самым загружая все + модули, чьи псевдонимы совпадают в строке после расширения + подстановочных знаков +

+

+ В указанном примере, это означает, что в дополнение к + snd-fm801 будет + загружен устаревший (и нежелательный) драйвер forte, если он будет доступен. + Ниже приведены способы, как можно предотвратить загрузку + нежелательных драйверов. +

+

+ Само ядро также способно загружать модули для сетевых + протоколов, файловых систем и поддержки NLS по запросу. +

+
+
+
+
+
+

+ 9.3.2.4. Работа + с устройствами с горячей заменой или динамическими + устройствами +

+
+
+
+

+ При подключении устройства, например, MP3-плеер, к + универсальной последовательной шине (USB), ядро распознает, + что устройство подключено, и генерирует событие uevent. + Затем это событие обрабатывается udevd, как было описано + выше. +

+
+
+
+

+ 9.3.3. Проблемы с загрузкой модулей и созданием устройств +

+

+ Существует несколько возможных проблем, связанных с + автоматическим созданием узлов устройств. +

+
+
+
+
+

+ 9.3.3.1. Модуль + ядра не загружается автоматически +

+
+
+
+

+ Udev загрузит модуль только в том случае, если у него есть + псевдоним, специфичный для шины, и драйвер шины правильно + экспортирует необходимые псевдонимы в sysfs. В других случаях следует + организовать загрузку модуля иными способами. Известно, + что, начиная с версии Linux-6.7.4, udev, выполняет загрузку + правильно написанных драйверов для INPUT, IDE, PCI, USB, + SCSI, SERIO, и FireWire устройств. +

+

+ Чтобы определить, имеет ли требуемый драйвер устройства + необходимую поддержку Udev, запустите modinfo с именем модуля в + качестве аргумента. Далее, попробуйте найти каталог + устройства в /sys/bus и + проверьте, есть ли там файл modalias. +

+

+ Если файл modalias существует + в sysfs, то драйвер, + который поддерживает устройство, может обращаться к нему + напрямую, но не имеет псевдонима, это ошибка в драйвере. + Загрузите драйвер без помощи Udev и ожидайте, что проблема + будет исправлена позднее. +

+

+ Если же в каталоге /sys/bus + нет файла modalias, это + означает, что разработчики ядра еще не добавили поддержку + modalias к этому типу шины. В + Linux-6.7.4 это относится к шиной ISA. Ожидайте, что эта + проблема будет исправлена в более поздних версиях ядра. +

+

+ Udev не предназначен для загрузки драйверов «обёрток», таких + как snd-pcm-oss и не + аппаратных драйверов, например, loop. +

+
+
+
+
+
+

+ 9.3.3.2. Модуль + ядра не загружается автоматически и Udev не + предназначен для его загрузки +

+
+
+
+

+ Если модуль «обёртка» только расширяет + функциональность, предоставляемую каким-либо другим модулем + (например модуль snd-pcm-oss расширяет + функциональность модуля snd-pcm, давая возможность + звуковым картам быть доступными для OSS приложений), + настройте modprobe для загрузки + оболочки после того, как Udev загрузит обернутый модуль. + Для этого добавьте строку «softdep» в файл, который находится в + каталоге /etc/modprobe.d/<filename>.conf. + Например: +

+
softdep snd-pcm post: snd-pcm-oss
+

+ Обратите внимание, что команда «softdep» + разрешает добавлять pre: + зависимости, или одновременно pre: и post: + зависимости. Обратитесь к документации modprobe.d(5) + для изучения синтаксиса и возможностей «softdep». +

+

+ Если рассматриваемый модуль не является обёрткой, и полезен + сам по себе, настройте загрузочный скрипт modules, чтобы он + инициализировался при загрузке системы. Для этого добавьте + имя модуля в файл /etc/sysconfig/modules в отдельной + строке. Этот способ сработает и для модулей-обёрток, но не + является оптимальным. +

+
+
+
+
+
+

+ 9.3.3.3. Udev + загружает какой-то нежелательный модуль +

+
+
+
+

+ Либо не создавайте модуль, либо занесите его в черный + список в файле /etc/modprobe.d/blacklist.conf, как это + сделано с модулем forte в примере ниже: +

+
blacklist forte
+

+ Модули, занесенные в черный список, можно загрузить вручную + с помощью явной команды modprobe. +

+
+
+
+
+
+

+ 9.3.3.4. Udev + неправильно создает устройство или делает + неправильную символическую ссылку +

+
+
+
+

+ Это обычно происходит, если правило неожиданно совпадает с + другим устройством. Например, плохо написанное поставщиком + оборудования правило может соответствовать как диску + SCSI(искомое устройство), так и универсальному устройству + SCSI (неправильно). Найдите ошибочное правило и исправьте + его с помощью команды udevadm + info. +

+
+
+
+
+
+

+ 9.3.3.5. Правило + Udev работает ненадежно +

+
+
+
+

+ Это может быть проявлением предыдущей проблемы. В ином + случае, если правило использует атрибуты файловой системы + sysfs, то это может быть + проблемой синхронизации ядра, которая будет исправлена в + более поздних версиях ядра. Но вы можете обойти проблему, + создав правило, которое ожидает используемый атрибут + sysfs и добавляет его к + файлу правил /etc/udev/rules.d/10-wait_for_sysfs.rules + (создайте его, если файл не существует). Пожалуйста, + сообщите в списке рассылки разработчиков LFS, если это + решение вам поможет. +

+
+
+
+
+
+

+ 9.3.3.6. Udev не + создаёт устройство +

+
+
+
+

+ Во-первых, убедитесь, что драйвер встроен в ядро или уже + загружен как модуль, и, что udev не создает устройство с + неправильным именем. +

+

+ Если драйвер ядра не экспортирует свои данные в + sysfs, udev не хватает + информации, необходимой для создания узла устройства. Это, + вероятнее всего, произойдет со сторонними драйверами, + которых нет в дереве исходного кода ядра. Создайте + статический узел в каталоге /usr/lib/udev/devices с соответствующими + старшим/младшим номерами (смотрите файл devices.txt в + документации к ядру или документации, предоставленной + сторонним поставщиком драйвера). Статический узел будет + скопирован в /dev с помощью + udev. +

+
+
+
+
+
+

+ 9.3.3.7. Порядок + присвоения имен устройствам меняется случайным + образом после перезагрузки +

+
+
+
+

+ Это связано с тем, что udev обрабатывает события uevents и + загружает модули параллельно, а значит в непредсказуемом + порядке. Это никогда не будет «исправлено». Вы + не должны полагаться на то что имена устройств ядра + стабильны. Вместо этого создайте свои собственные правила, + которые делают символические ссылки со стабильными именами + на основе некоторых неизменяемых атрибутов устройства, + таких как серийный номер или вывод различных утилит *_id, + установленных Udev. Смотрите Раздел 9.4, «Управление + устройствами» и Раздел 9.5, «Настройка сети» + для примера. +

+
+
+
+

+ 9.3.4. Полезная информация +

+

+ Дополнительную документацию можно получить на следующих + сайтах: +

+
+ +
+
+
+
+
+
+

+ 9.4. Управление устройствами +

+
+
+
+
+
+

+ 9.4.1. Сетевые устройства +

+

+ Udev по умолчанию присваивает имена сетевым устройствам в + соответствии с данными прошивки, BIOS'а или физическими + характеристиками, такими как шина, слот или MAC-адрес. Целью + такого соглашения об именовании является обеспечение того, + чтобы сетевые устройства именовались последовательно, а не + основывались на времени обнаружения сетевой карты. Например, + в более старых версиях Linux—на компьютере с двумя сетевыми + картами производства Intel и Realtek, сетевая карта + производства Intel могла стать eth0, а карта Realtek — eth1. + Иногда после перезагрузки карты именовались наоборот. +

+

+ В новой схеме именования, типичными именами сетевых устройств + являются enp5s0 или wlp3s0. Если такие имена для вас + нежелательны, то может быть реализована традиционная схема + именования или своя собственная. +

+
+
+
+
+

+ 9.4.1.1. + Отключение постоянного присвоения имен в параметрах + загрузки ядра +

+
+
+
+

+ Традиционная схема именования - eth0, eth1, и так далее, + может быть включена путем добавления параметра + net.ifnames=0 в командную + строку ядра. Это решение подходит для систем, которые имеют + только одно сетевое устройство каждого типа. Часто в + ноутбуках несколько сетевых устройств с именами eth0 и + wlan0; в таких ноутбуках также может использоваться этот + метод. Командная строка указывается в файле конфигурации + GRUB. Подробности смотрите на странице Раздел 10.4.4, + «Создание файла конфигурации GRUB». +

+
+
+
+
+
+

+ 9.4.1.2. + Создание пользовательских правил Udev +

+
+
+
+

+ Схему именования можно настроить, создав пользовательские + правила udev. В состав книги включен скрипт, который + генерирует начальные правила. Чтобы их сгенерировать, + выполните команду: +

+
bash /usr/lib/udev/init-net-rules.sh
+

+ Теперь, проверьте файл /etc/udev/rules.d/70-persistent-net.rules, + чтобы узнать какое имя с каким сетевым устройством + сопоставлено: +

+
cat /etc/udev/rules.d/70-persistent-net.rules
+
+

+ Примечание +

+

+ В некоторых случаях, например, когда MAC-адреса были + назначены сетевой карте вручную или в виртуальной среде, + такой как Qemu или Xen, возможно, файл сетевых правил не + будет сгенерирован, поскольку адреса назначаются не + последовательно. В таких случаях, этот способ не + применим. +

+
+

+ Файл начинается с блока комментариев, далее следуют две + строки для каждой сетевой карты (NIC). Первая строка + представляет собой описание с комментариями и содержит + аппаратные идентификаторы (например, поставщика PCI и + идентификаторы устройств, если это PCI-карта), а также + информацию о драйвере (если его удалось обнаружить). Ни + идентификатор оборудования, ни драйвер не используются для + определения того, какое имя присвоить интерфейсу; эта + информация предназначена только для справки. Вторая строка + - это правило udev, которое соответствует этому сетевому + адаптеру и фактически присваивает ему имя. +

+

+ Все правила udev состоят из нескольких ключевых слов, + разделенных запятыми и необязательными пробелами. Ниже + приведены ключевые слова и пояснения по каждому из них: +

+
+
    +
  • +

    + SUBSYSTEM=="net" - + указывает Udev игнорировать устройства, которые не + являются сетевыми картами. +

    +
  • +
  • +

    + ACTION=="add" - + указывает Udev игнорировать правила для событий, + отличных от добавления (события "удалить" и + "изменить" также происходят, но не требуют + переименования сетевых интерфейсов). +

    +
  • +
  • +

    + DRIVERS=="?*" - + существует для того, чтобы Udev проигнорировал + подинтерфейсы VLAN или моста (потому что эти + подинтерфейсы не имеют драйверов). Эти подинтерфейсы + пропускаются, потому что назначенные им имена будут + конфликтовать с именами их родительских устройств. +

    +
  • +
  • +

    + ATTR{address} - + значением этого ключевого слова является MAC-адрес + сетевой карты. +

    +
  • +
  • +

    + ATTR{type}=="1" - этот + ключ гарантирует выполнение правила соответствующего + только основному интерфейсу, при использовании + определенных беспроводных драйверов, которые создают + несколько виртуальных интерфейсов. Дополнительные + интерфейсы пропускаются по той же причине, что и + подинтерфейсы VLAN и мост, в ином случае произошел бы + конфликт имен. +

    +
  • +
  • +

    + NAME - значением этого + ключевого слова является имя, которое udev присвоит + этому интерфейсу. +

    +
  • +
+
+

+ Значение NAME является очень + важным. Прежде чем продолжить, убедитесь, что вы знаете, + какое имя назначено каждой из сетевых карт и обязательно + используйте это значение NAME + при создании файлов конфигурации сети. +

+

+ Даже если создан пользовательский файл правил udev, udev + все равно может назначить одно или несколько альтернативных + имен для сетевой карты на основе физических характеристик. + Если пользовательское правило udev переименовывает + какой-либо сетевой адаптер, используя имя, уже назначенное + в качестве альтернативного имени другого сетевого адаптера, + это правило udev не будет выполнено. Если возникает эта + проблема, вы можете создать файл конфигурации /etc/udev/network/99-default.link с + пустой альтернативной политикой назначения, + переопределяющей файл конфигурации по умолчанию + /usr/lib/udev/network/99-default.link: +

+
sed -e '/^AlternativeNamesPolicy/s/=.*$/=/'  \
+    -i /usr/lib/udev/network/99-default.link \
+     > /etc/udev/network/99-default.link
+
+
+
+

+ 9.4.2. Символические ссылки CD-ROM +

+

+ Некоторое программное обеспечение, которое вы, возможно, + захотите установить позже (например, различные медиаплееры) + ожидают, что устройства /dev/cdrom или /dev/dvd и символические ссылки на CD-ROM + или DVD-ROM устройства должны существовать. Кроме того, может + быть удобно использовать эти символические ссылки в + /etc/fstab. Udev поставляется с + файлом сценария, который будет генерировать правила для + создания этих символических ссылок, в зависимости от + возможностей каждого устройства, но вам нужно решить, какой + из двух режимов работы вы хотите использовать. +

+

+ Во-первых, скрипт может работать в режиме «by-path» + (используется по умолчанию для USB и FireWire устройств), где + создаваемые им правила зависят от физического пути к CD или + DVD устройству. Во-вторых, он может работать в режиме + «by-id» + (по умолчанию для устройств IDE и SCSI), где создаваемые им + правила зависят от строк идентификации, хранящихся в самом + устройстве CD или DVD. Путь определяется сценарием Udev + path_id, а + идентификационные строки считываются с оборудования командами + ata_id или + scsi_id, в + зависимости от того, какой тип устройства у вас есть. +

+

+ У каждого подхода есть свои преимущества; правильный подход к + использованию будет зависеть от того, какие изменения + устройств могут произойти. Если вы ожидаете, что физический + путь к устройству (порты и/или слоты, в который оно + подключено), изменится, например, потому, что вы планируете + переместить диск в другой порт IDE или другой разъем USB, то + вы должны использовать режим «by-id». С другой + стороны, если вы ожидаете, что идентификация устройства + изменится, например, потому, что оно может выйти из строя, и + вы замените его другим устройством с теми же характеристиками + и подключите к тем же разъемам, тогда вы должны использовать + режим «by-path». +

+

+ Если с вашим устройством возможен любой из вариантов, + выберите тот, который по вашему мнению случается чаще. +

+
+

+ Важно +

+

+ Внешние устройства (например, привод компакт-дисков, + подключенный через USB) не следует подключать методом + «by-path», потому что каждый раз, + когда устройство подключено в новый внешний порт, изменится + его физический путь. Все внешние устройства подвержены этой + проблеме, если при написании правил Udev применять режим + распознавания по их физическому пути. К тому же, эта + проблема не ограничивается CD и DVD-приводами. +

+
+

+ Если вы хотите увидеть значения, которые будут использовать + скрипты udev, то для требуемого устройства CD-ROM найдите + соответствующий каталог в /sys + (например, это может быть /sys/block/hdd) и выполните команду, + аналогичную следующей: +

+
udevadm test /sys/block/hdd
+

+ Обратите внимание на строки, содержащие вывод различных + идентификаторов *_id. Режим «by-id» будет использовать значение + ID_SERIAL если оно существует и не пустое, иначе будет + использована комбинация ID_MODEL и ID_REVISION. Режим + «by-path» будет использовать значение + ID_PATH. +

+

+ Если режим по умолчанию не подходит для вашей ситуации, то в + файл /etc/udev/rules.d/83-cdrom-symlinks.rules + можно внести следующие изменения (где mode является одним из + значений «by-id» или «by-path»): +

+
sed -e 's/"write_cd_rules"/"write_cd_rules mode"/' \
+    -i /etc/udev/rules.d/83-cdrom-symlinks.rules
+

+ Обратите внимание, что на данный момент, нет необходимости + создавать файлы правил или символические ссылки, так как вы + смонтировали каталог /dev хоста + в систему LFS, и мы предполагаем, что символические ссылки + уже существуют. Правила и символические ссылки будут + создаваться при первой загрузке LFS системы. +

+

+ Однако, если у вас есть несколько устройств CD-ROM, то + символические ссылки, сгенерированные в это время, могут + указывать на другие устройства, и иметь различия от хост + системы, потому что устройства не будут обнаружены в + предсказуемом порядке. Назначения, созданные при первой + загрузке системы LFS, будут правильными, проблема возникнет + только в том случае, если символические ссылки в обеих + системах указывают на одно и то же устройство. Если + потребуется, проверьте (и, возможно, отредактируйте) + сгенерированные правила в файле /etc/udev/rules.d/70-persistent-cd.rules + после загрузки, чтобы убедиться, что назначенные + символические ссылки соответствуют тому, что вам нужно. +

+
+
+

+ 9.4.3. Работа с дубликатами устройств +

+

+ Как поясняется в Раздел 9.3, + «Взаимодействие с устройствами и модулями», порядок + отображения устройства с одинаковой функциональностью в + /dev является, как правило, + случайным. Например, если у вас есть веб камера и TV тюнер, + иногда /dev/video0 ссылается на + камеру, а /dev/video1 ссылается + на TV тюнер, а иногда, например, после перезагрузки системы, + порядок поменяется на противоположный. Для всех классов + оборудования, за исключением звуковых и сетевых карт, это + можно исправить, написав правила udev для создания постоянных + символических ссылок. Случай с сетевыми картами описан + отдельно в Раздел 9.5, «Настройка сети», + инструкции по настройке звуковых карт можно найти в + BLFS. +

+

+ Для каждого из ваших устройств, которые могут иметь такую + проблему (даже если проблема не существует в текущем + дистрибутиве Linux ), найдите соответствующий каталог в + /sys/class или /sys/block. Для видеоустройств это может + быть /sys/class/video4linux/videoX. Определите + атрибуты, которые однозначно идентифицируют устройство + (обычно это идентификаторы поставщика и продукта и/или + серийные номера): +

+
udevadm info -a -p /sys/class/video4linux/video0
+

+ Затем напишите правила, которые создают символические ссылки, + например: +

+
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
+

+ В результате устройства /dev/video0 и /dev/video1 по-прежнему случайным образом + ссылаются на TV тюнер и веб-камеру (и, следовательно, никогда + не должны использоваться напрямую), но есть символические + ссылки /dev/tvtuner и /dev/webcam, которые всегда указывают + на правильное устройство. +

+
+
+
+
+
+

+ 9.5. + Настройка сети +

+
+
+
+
+
+

+ 9.5.1. Создание файлов конфигурации сетевого интерфейса +

+

+ Файлы в каталоге /etc/sysconfig/ обычно определяют, какие + интерфейсы запускаются и выключаются сетевым скриптом. Этот + каталог должен содержать файл для каждого настраиваемого + интерфейса, например ifconfig.xyz, где «xyz» описывает + сетевую карту. Имя интерфейса (например, eth0) обычно + является подходящим. Каждый файл содержит атрибуты одного + интерфейса, такие как его IP-адреса, маски подсетей и так + далее. Имя файла должно быть ifconfig. +

+
+

+ Примечание +

+

+ Если процедура именования из предыдущего раздела не + использовалась, udev будет назначать имена интерфейсов + сетевых карт на основе физических характеристик системы, + например, enp2s1. Если вы не знаете имя вашего интерфейса, + вы всегда можете запустить ip + link или ls + /sys/class/net после загрузки системы. +

+

+ Имена интерфейсов зависят от реализации и конфигурации + демона udev, работающего в системе. Демон udev для LFS + (установленный в Раздел 8.75, «Udev + из Systemd-255») не запустится, пока система LFS не + будет загружена. Таким образом, имена интерфейсов в системе + LFS не всегда можно определить, запустив эти команды в + хост-дистрибутиве, даже в среде + chroot. +

+
+

+ Следующая команда создает пример конфигурационного файла для + устройства eth0 со + статическим IP-адресом: +

+
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
+

+ Значения, выделенные курсивом, должны быть изменены в каждом + файле, чтобы правильно настроить интерфейсы. +

+

+ Если переменной ONBOOT присвоено + значение yes, сценарий загрузки + сети System V вызовет сетевую карту (NIC) в процессе загрузки + системы. Если задано значение, отличное от yes сетевой адаптер будет проигнорирован + сетевым скриптом и не будет запущен автоматически. Интерфейсы + можно запускать или останавливать вручную с помощью команд + ifup и + ifdown. +

+

+ Переменная IFACE определяет имя + сетевого интерфейса, например, eth0. Она необходима для всех + файлов конфигураций сетевых устройств. Расширение файла + должно соответствовать этому значению. +

+

+ Переменная SERVICE определяет + метод получения IP-адреса. Пакет LFS-Bootscripts имеет + модульный формат назначения IP, а создание дополнительных + файлов в каталоге /lib/services/ позволит использовать другие + методы назначения IP. Переменная обычно используется для + протокола DHCP (Dynamic Host Configuration Protocol), который + рассматривается в книге BLFS +

+

+ Переменная GATEWAY должна + содержать IP-адрес шлюза по умолчанию, если таковой имеется. + Если нет, то закомментируйте эту строку. +

+

+ Переменная PREFIX указывает + количество бит, используемых в подсети. Каждый сегмент + IP-адреса состоит из 8 бит. Если маска подсети равна + 255.255.255.0, то для указания номера сети используются + первые три сегмента (24 бита). Если сетевая маска + 255.255.255.240, подсеть использует первые 28 бит. Префиксы + длиннее 24 бит обычно используются DSL и кабельными + интернет-провайдерами (ISP). В этом примере (PREFIX=24) маска + сети — 255.255.255.0. Измените переменную PREFIX в соответствии c конфигурацией вашей + сети. Если этот параметр не указан, то ПРЕФИКС по умолчанию + равен 24. +

+

+ Для получения дополнительной информации смотрите справочную + страницу ifup. +

+
+
+

+ 9.5.2. Создание + файла /etc/resolv.conf +

+

+ Системе потребуются дополнительные настройки службы доменных + имен (DNS) для преобразования имен сети Интернет в IP-адреса + и наоборот. Это достигается путем указания IP-адреса + DNS-сервера, доступного от провайдера или администратора + сети, в /etc/resolv.conf. + Создайте файл, выполнив следующие действия: +

+
cat > /etc/resolv.conf << "EOF"
+# Begin /etc/resolv.conf
+
+domain <Ваше доменное имя>
+nameserver <IP-адрес вашего основного DNS-сервера>
+nameserver <IP-адрес вашего дополнительного DNS-сервера>
+
+# End /etc/resolv.conf
+EOF
+

+ Оператор domain может быть + опущен или заменён оператором search. Смотрите справочную страницу + resolv.conf для получения подробной информации. +

+

+ Замените <IP-адрес вашего + основного DNS-сервера> адресом наиболее + подходящего DNS сервера. DNS серверов, может быть указано + более одной записи (дополнительные серверы необходимы для + возможности резервного переключения). Если вам нужен только + один DNS-сервер, удалите вторую строку nameserver из файла. DNS-сервер + также может выступать шлюзом в локальной сети. +

+
+

+ Примечание +

+

+ Адреса общедоступных DNS серверов Google - 8.8.8.8 и + 8.8.4.4. +

+
+
+
+

+ 9.5.3. Настройка имени хоста +

+

+ В процессе загрузки файл /etc/hostname используется для настройки + имени хоста системы. +

+

+ Создайте файл /etc/hostname и + внесите имя хоста, выполнив команду: +

+
echo "<lfs>" > /etc/hostname
+

+ <lfs> + замените на имя вашего компьютера. Не вносите сюда полное + доменное имя(FQDN). Эта информация помещается в файл + /etc/hosts. +

+
+
+

+ 9.5.4. + Настройка файла /etc/hosts +

+

+ Выберите полное доменное имя (FQDN) и возможные псевдонимы + для использования в файле /etc/hosts. Если вы используете статические + IP-адреса, вам также необходимо определиться с IP-адресом. + Синтаксис для записи в файле hosts следующий: +

+
IP_address myhost.example.org aliases
+

+ Если компьютер не должен быть виден в Интернете (т. е. нет + зарегистрированного домена и действительного блока + назначенных IP-адресов—у большинства пользователей этого + нет), убедитесь, что IP-адрес находится в диапазоне + внутренних сетевых IP-адресов. Допустимые диапазоны: +

+
Диапазон адресов локальной сети      Стандартный префикс
+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 может быть любым числом в диапазоне 16-31. y может быть + любым числом в диапазоне 0-255. +

+

+ Правильным IP адресом в локальной сети может быть + 192.168.1.1. +

+

+ Если компьютер должен быть виден в Интернете, действительным + полным доменным именем может быть само имя домена или строка, + полученная путем объединения префикса (часто имени хоста) и + домена с помощью символа «.». Кроме того, вам необходимо + обратиться к администратору домена, чтобы связать полное + доменное имя и ваш общедоступный IP-адрес. +

+

+ Даже если компьютер не виден из Интернета, полное доменное + имя все равно необходимо для правильной работы некоторых + программ, таких как MTA. Для этих целей можно использовать + специальное полное доменное имя localhost.localdomain. +

+

+ Создайте файл /etc/hosts, + выполнив команду: +

+
cat > /etc/hosts << "EOF"
+# Begin /etc/hosts
+
+127.0.0.1 localhost.localdomain 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
+

+ Значения <192.168.1.1>, + <FQDN>, и + <HOSTNAME> + должны быть изменены в соответствии с предпочтениями + пользователя или требованиями сети (если имеется IP-адрес + выданный сетевым/системным администратором и машина + подключена к существующей сети). Необязательные параметры + могут быть опущены. +

+
+
+
+
+
+

+ 9.6. + Настройка и использование загрузочных скриптов System V +

+
+
+
+
+
+

+ 9.6.1. Как работают загрузочные скрипты System V? +

+

+ В этой версии LFS используется специальное средство загрузки + под названием SysVinit, основанное на наборе уровней + выполнения (run-levels). Процедура загрузки + может сильно отличаться от одной системы к другой; и тот + факт, что в конкретном дистрибутиве Linux все работало + должным образом, не гарантирует, что оно будут работать так + же в LFS. LFS работает по-своему, но соблюдает общепринятые + стандарты. +

+

+ Существует альтернативная система загрузки, которая + называется systemd. Мы не будем + обсуждать этот вариант загрузки здесь. Для получения + подробного описания, посетите + https://www.linux.com/training-tutorials/understanding-and-using-systemd/. +

+

+ SysVinit (в дальнейшем именуемый «init») использует + схему уровней выполнения. Существует семь уровней выполнения, + пронумерованных от 0 до 6. (На самом деле уровней больше, но + они предназначены для особых случаев и обычно не + используются. Подробности смотрите в руководстве init(8)). Каждый + из них соответствует действиям, которые компьютер должен + выполнить при запуске и выключении. Уровень выполнения по + умолчанию — 3. Ниже приведено описание различных уровней в + том виде, в каком они реализованы в LFS: +

+
+

+ 0: выключение компьютера
+ 1: однопользовательский режим
+ 2: зарезервировано для настройки, в остальном аналогично 3
+ + 3: многопользовательский режим с поддержкой сети
+ + 4: зарезервировано для настройки, в остальном аналогично 3
+ + 5: то же, что и 4, обычно используется для входа в систему с графическим интерфейсом (например, 
+ + gdm от GNOME или lxdm от LXDE)
+ + 6: перезагрузка компьютера +

+
+
+

+ Примечание +

+

+ Раньше, много лет назад, уровень выполнения 2 обозначался + как «многопользовательский режим без поддержки + сети», тогда, несколько пользователей могли + подключаться к системе через последовательные порты. В + сегодняшних условиях это не имеет смысла, и мы обозначаем + этот уровень как «зарезервировано». +

+
+
+
+

+ 9.6.2. + Настройка Sysvinit +

+

+ Во время инициализации ядра первой запускаемой программой + (если она не переопределена в командной строке) является + init. Эта + программа считывает файл инициализации /etc/inittab. Создайте этот файл: +

+
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:S06:once:/sbin/sulogin
+s1:1:respawn:/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
+

+ Пояснения по содержимому этого файла инициализации находится + на справочной странице inittab. Для LFS основной командой + является rc. В + приведенном выше файле инициализации, rc будет выполнять все + сценарии, начинающиеся с символа S в каталоге /etc/rc.d/rcS.d, за которыми следуют все + скрипты, начинающиеся с S в каталоге /etc/rc.d/rc?.d, где знак вопроса задается + значением initdefault. +

+

+ Для удобства, скрипт rc считывает библиотеку + функций из /lib/lsb/init-functions. Эта библиотека + также читает необязательный файл конфигурации /etc/sysconfig/rc.site. В этот файл можно + поместить любой из параметров конфигурации системы, описанных + в последующих разделах, что позволяет объединить все + параметры системы в одном файле. +

+

+ Для удобства отладки скрипт functions также записывает весь + вывод в /run/var/bootlog. + Поскольку каталог /run является + tmpfs, этот файл не сохраняется при загрузке; однако его + содержимое добавляется в файл /var/log/boot.log по окончании процесса + загрузки. +

+
+
+
+
+

+ 9.6.2.1. + Изменение уровней выполнения +

+
+
+
+

+ Изменить уровень выполнения можно с помощью команды + init <runlevel>, + где <runlevel> - это + целевой уровнем выполнения. Например, чтобы перезагрузить + компьютер, пользователь должен выполнить команду + init 6, + которая является псевдонимом для команды reboot. Аналогично, init + 0 является псевдонимом для команды halt. +

+

+ В каталоге /etc/rc.d есть ещё + несколько каталогов, которые выглядят как rc?.d (где ? - номер уровня выполнения), + все они содержат ряд символических ссылок. Некоторые ссылки + начинаются с K, + другие начинаются с S, и все они содержат две цифры + после начальной буквы. K означает остановить (убить) + службу, а S означает запустить службу. Числа определяют + порядок выполнения сценариев от 00 до 99—чем меньше число, + тем раньше запускается скрипт. Когда init переключается на + другой уровень выполнения, соответствующие службы либо + запускаются, либо останавливаются, в зависимости от + выбранного уровня выполнения. +

+

+ Реальные скрипты находятся в каталоге /etc/rc.d/init.d. Они выполняют + фактическую работу, и символические ссылки указывают на + них. Ссылки К и S указывают на один и тот же скрипт в + /etc/rc.d/init.d. Это связано + с тем, что скрипты могут вызываться с разными параметрами, + такими как start, + stop, restart, reload, и status. Когда встречается + ссылка K, соответствующий скрипт запускается с аргументом + stop. Когда + встречается S-ссылка, соответствующий скрипт запускается с + аргументом start. +

+

+ Ниже приведено описание к аргументам скриптов: +

+
+
+
+ start +
+
+

+ Служба запущена. +

+
+
+ stop +
+
+

+ Служба остановлена. +

+
+
+ restart +
+
+

+ Служба остановлена и снова запущена. +

+
+
+ reload +
+
+

+ Конфигурация сервиса обновлена. Используется после + изменения файла конфигурации службы, когда перезапуск + не требуется. +

+
+
+ status +
+
+

+ Сообщает, запущена ли служба и с какими ИД процессов. +

+
+
+
+

+ Не стесняйтесь изменять работу процесса загрузки (в конце + концов, это ваша собственная система LFS). Приведенные + здесь файлы являются примером того, как это можно сделать. +

+
+
+
+

+ 9.6.3. Загрузочные скрипты Udev +

+

+ Инит-скрипт /etc/rc.d/init.d/udev запускает + udevd, который + инициализирует все устройства "холодного подключения", + которые уже были созданы ядром, и ожидает выполнения всех + правил. Скрипт также отключает обработчик uevent по умолчанию + /sbin/hotplug. Это сделано + потому, что ядру больше не нужно обращаться к внешнему + бинарному файлу. Вместо этого udevd будет прослушивать + сокет netlink на предмет событий, которые вызывает ядро. +

+

+ Инит-скрипт /etc/rc.d/init.d/udev_retry + решает задачу повторного запуска событий для подсистем, + правила которых могут зависеть от файловых систем, которые не + монтируются до запуска скрипта mountfs (в частности, его + вызывают /usr и /var). Этот скрипт запускается после + скрипта mountfs, поэтому эти + правила (при повторном запуске) должны сработать во второй + раз. Он настраивается в файле /etc/sysconfig/udev_retry; любые слова в + этом файле, кроме комментариев, являются именами подсистем, + которые запускаются при повторной попытке. Чтобы найти + подсистему устройства, используйте udevadm info --attribute-walk + <device>, где <device> - это + абсолютный путь в /dev или /sys, такой как /dev/sr0 или + /sys/class/rtc. +

+

+ Для получения информации о загрузке модуля ядра и udev + смотрите Раздел 9.3.2.3, «Загрузка + модуля». +

+
+
+

+ 9.6.4. + Настройка системного времени +

+

+ Скрипт setclock + считывает время с аппаратных часов, также известных как часы + BIOS или CMOS (Complementary Metal Oxide Semiconductor). Если + на аппаратных часах установлено время UTC (всемирное + скоординированное время), этот скрипт преобразует полученное + значение в локальное время, используя файл /etc/localtime (который сообщает программе + hwclock, в + какой временной зоне находится пользователь). Невозможно + определить, установленное на аппаратных часах время UTC или + же локальное, поэтому необходимо указать его вручную. +

+

+ Скрипт setclock + запускается системой udev + при загрузке, когда ядро определяет возможности аппаратного + обеспечения. Также его можно запустить вручную с параметром + stop, чтобы сохранить системное время в аппаратные часы CMOS. +

+

+ Если Вы не можете вспомнить, установлено на аппаратных часах + UTC или локальное время, запустите команду hwclock --localtime --show. + Она отобразит текущее время в соответствии с аппаратными + часами. Если оно совпадает с тем, что показывают ваши + настенные/наручные часы, значит на часах CMOS установлено + локальное время. Если вывод hwclock не совпадает с + локальным временем, скорее всего, это UTC. Проверьте это, + добавив или вычитая нужное количество часов для вашего + часового пояса ко времени, отображаемому hwclock. Например, если ваш + часовой пояс это MSK, также известный как GMT +0300, то нужно + вычесть три часа из локального времени. +

+

+ Измените значение переменной UTC + ниже на 0 (ноль), + если на аппаратных часах установлено НЕ UTC. +

+

+ Создайте новый файл /etc/sysconfig/clock выполнив: +

+
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
+

+ Хороший совет, объясняющий, как обращаться с временем в LFS, + доступен по адресу + https://mirror.linuxfromscratch.ru/hints/downloads/files/time.txt. + Там объясняются такие вопросы, как часовые пояса, UTC и + переменная окружения TZ. +

+
+

+ Примечание +

+

+ Параметры CLOCKPARAMS и UTC также могут быть указаны в + файле /etc/sysconfig/rc.site. +

+
+
+
+

+ 9.6.5. + Настройка консоли Linux +

+

+ Эта секция описывает настройку скрипта console, который + устанавливает раскладку клавиатуры, шрифт консоли и уровень + подробности информации, выводимой ядром на консоль. Если Вы + не планируете использовать символы, не соответствующие + стандарту ASCII (например, знак копирайта, символы фунта и + евро), и собираетесь печатать только в английской раскладке, + то можете пропустить большую часть секции. Без файла + конфигурации (или эквивалентных настроек в rc.site), скрипт console не будет ничего + делать. +

+

+ Скрипт console + считывает конфигурацию из файла /etc/sysconfig/console. Решите для себя, + какую раскладку клавиатуры и какой шрифт намерены + использовать. В этом также могут помочь различные HOWTO для + конкретных языков; смотрите https://tldp.org/HOWTO/HOWTO-INDEX/other-lang.html. + Если вы все еще сомневаетесь, посмотрите в каталогах + /usr/share/keymaps и + /usr/share/consolefonts + допустимые раскладки и экранные шрифты. Прочтите справочные + страницы loadkeys(1) и + setfont(8), + чтобы определить правильные аргументы для этих программ. +

+

+ Файл /etc/sysconfig/console + должен содержать строки вида: ПЕРЕМЕННАЯ=значение. Допустимы следующие + переменные: +

+
+
+
+ LOGLEVEL +
+
+

+ Эта переменная задает уровень подробности сообщений, + посылаемых ядром на системную консоль. Значение этой + переменной передается в качестве аргумента утилите + dmesg -n. + Допустимы уровни от 1(нет + сообщений) до 8. По + умолчанию 7, что является + довольно подробным. +

+
+
+ KEYMAP +
+
+

+ Эта переменная указывает аргументы для программы + loadkeys, + обычно это имя загружаемой раскладки, например, + it. Если эта переменная не + установлена, загрузочный скрипт не будет запускать + программу loadkeys, и будет использоваться раскладка по + умолчанию. Обратите внимание, что некоторые раскладки + имеют несколько версий с одним и тем же именем (cz и + его варианты в qwerty/ и qwertz/, es в olpc/ и qwerty/ + и trf в fgGIod/ и qwerty/). В этих случаях также + следует указать родительский каталог (например, + qwerty/es), чтобы обеспечить загрузку правильной + раскладки. +

+
+
+ KEYMAP_CORRECTIONS +
+
+

+ Эта (крайне редко используемая) переменная задает + аргументы для второго вызова программы loadkeys. Она + полезна, если стандартная раскладка вас не совсем + устраивает и необходимо внести небольшую корректировку. + Например, чтобы добавить символ евро в раскладку, + которая его не содержит, присвойте этой переменной + значение euro2. +

+
+
+ FONT +
+
+

+ Эта переменная определяет аргументы для программы + setfont. + Обычно она включает в себя имя шрифта -m и имя загружаемой таблицы символов. + Например, чтобы загрузить шрифт «lat1-16» + вместе с таблицей символов «8859-1» + (подходит для США), установите эту переменную в + lat1-16 -m 8859-1. В + режиме UTF-8 ядро использует таблицу символов для + преобразования 8-битных кодов клавиш в UTF-8, поэтому + аргумент параметра "-m" должен быть установлен на + кодировку соответствующих кодов клавиш в раскладке. +

+
+
+ UNICODE +
+
+

+ Присвойте этой переменной значение 1, yes + или true, чтобы + переключить консоль в режим UTF-8. Это полезно при + использовании локали, основанной на UTF-8, и не + рекомендуется в иных случаях. +

+
+
+ LEGACY_CHARSET +
+
+

+ Для многих раскладок клавиатуры в пакете Kbd не + существует готового Unicode-варианта. Скрипт + console + будет на лету конвертировать имеющуюся раскладку в + UTF-8, если присвоить этой переменной имя доступной + не-UTF-8 раскладки. +

+
+
+
+

+ Несколько примеров: +

+
+
    +
  • +

    + Мы будем использовать C.UTF-8 в качестве локали для + интерактивных сеансов в консоли Linux в Раздел 9.7, + «Настройка системной локали,», поэтому нам следует + установить значение переменной UNICODE в 1. Консольные шрифты, поставляемые + пакетом Kbd, + содержащие глифы для всех символов сообщений программы + в C.UTF-8 являются + LatArCyrHeb*.psfu.gz, + LatGrkCyr*.psfu.gz, + Lat2-Terminus16.psfu.gz и + pancyrillic.f16.psfu.gz + из каталога /usr/share/consolefonts (в других + поставляемых консольных шрифтах отсутствуют глифы + некоторых символов Unicode, таких как левые/правые + кавычки и английское тире). Поэтому установите один из + них, например Lat2-Terminus16.psfu.gz, в качестве + шрифта консоли по умолчанию: +

    +
    cat > /etc/sysconfig/console << "EOF"
    +# Begin /etc/sysconfig/console
    +
    +UNICODE="1"
    +FONT="Lat2-Terminus16"
    +
    +# End /etc/sysconfig/console
    +EOF
    +
  • +
  • +

    + Для русскоязычных пользователей может подойти такой + вариант: +

    +
    cat > /etc/sysconfig/console << "EOF"
    +# Begin /etc/sysconfig/console
    +
    +UNICODE="1"
    +KEYMAP="ruwin_alt_sh-UTF-8"
    +FONT="cyr-sun16"
    +
    +# End /etc/sysconfig/console
    +EOF
    +
    +

    + Примечание +

    +

    + Для поиска нужной раскладки, выполните команду: + find /usr/share/keymaps + -type f +

    +

    + ruwin_alt-UTF-8 - + переключение раскладки по Alt. +

    +

    + ruwin_alt_sh-UTF-8 - + переключение раскладки по Alt+Shift. +

    +

    + ruwin_cplk-UTF-8 - + переключение раскладки по Caps Lock. +

    +

    + ruwin_ct_sh-UTF-8 - + переключение раскладки по Ctrl+Shift. +

    +

    + ruwin_ctrl-UTF-8 - + переключение раскладки по Ctrl. +

    +

    + Посмотреть список доступных шрифтов можно с помощью + следующей команды: ls + /usr/share/consolefonts +

    +
    +
  • +
  • +

    + Для не-Unicode настройки необходимы только переменные + KEYMAP и FONT. Например, для польских пользователей + может подойти такой вариант: +

    +
    cat > /etc/sysconfig/console << "EOF"
    +# Begin /etc/sysconfig/console
    +
    +KEYMAP="pl2"
    +FONT="lat2a-16 -m 8859-2"
    +
    +# End /etc/sysconfig/console
    +EOF
    +
  • +
  • +

    + Как упоминалось выше, иногда бывает необходимо + подкорректировать раскладку. Следующий пример добавляет + символ евро к немецкой раскладке: +

    +
    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
    +
  • +
  • +

    + Ниже приведен пример с поддержкой Unicode для + болгарского языка, где существует стандартная раскладка + UTF-8: +

    +
    cat > /etc/sysconfig/console << "EOF"
    +# Begin /etc/sysconfig/console
    +
    +UNICODE="1"
    +KEYMAP="bg_bds-utf8"
    +FONT="LatArCyrHeb-16"
    +
    +# End /etc/sysconfig/console
    +EOF
    +
  • +
  • +

    + Из-за использования 512-символьного шрифта + LatArCyrHeb-16 в предыдущем примере, яркие цвета больше + не доступны в консоли Linux, если используется + фреймбуфер. Если Вы хотите использовать яркие цвета без + фреймбуфера и можете обходиться без символов, не + относящихся к вашему языку, тогда можно использовать + специфичный для вашего языка 256-символьный шрифт, как + показано ниже: +

    +
    cat > /etc/sysconfig/console << "EOF"
    +# Begin /etc/sysconfig/console
    +
    +UNICODE="1"
    +KEYMAP="bg_bds-utf8"
    +FONT="cyr-sun16"
    +
    +# End /etc/sysconfig/console
    +EOF
    +
  • +
  • +

    + Следующий пример демонстрирует автоматическое + преобразование раскладки из ISO-8859-15 в UTF-8 и + включает "мертвые" клавиши в режиме Unicode: +

    +
    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
    +
  • +
  • +

    + Некоторые раскладки включают в себя "мертвые" клавиши + (то есть клавиши, нажатие которых само по себе не + приводит к появлению на экране символа, но которые + влияют на символ, генерируемый следующей клавишей) или + определяют слияние символов (например: «нажмите Ctrl+. A E чтобы + получить Æ» в раскладке по умолчанию). + Linux-6.7.4 правильно интерпретирует "мертвые" клавиши + и слияния, только когда исходные символы имеют 8-битные + коды. Эта особенность не влияет на раскладки для + европейских языков, поскольку в них "сливаются" два + ASCII-символа или добавляются подчеркивания к + неподчеркнутым ASCII-символам. Однако, в режиме UTF-8 + могут быть проблемы, например, для греческого языка, + когда необходимо подчеркнуть символ α. Решением в этой + ситуации будет отказ от использования UTF-8 или + установка графической системы X Window, не имеющих + подобных ограничений. +

    +
  • +
  • +

    + Для китайского, японского, корейского и некоторых + других языков невозможно настроить консоль Linux так, + чтобы она отображала все необходимые символы. + Пользователи, которым требуются эти языки, должны + установить систему X Window, шрифты, покрывающие + необходимый диапазон символов, и правильный метод ввода + (например, SCIM поддерживает большое число + разнообразных языков). +

    +
  • +
+
+
+

+ Примечание +

+

+ Файл /etc/sysconfig/console + управляет только локализацией текстовой консоли Linux. Он + никак не влияет на настройки раскладки клавиатуры и шрифтов + в системе X Window, в сессиях SSH или на последовательном + терминале. В этих ситуациях ограничения, описанные в двух + расположенных выше абзацах, не применяются. +

+
+
+
+

+ 9.6.6. Создание файлов при + загрузке +

+

+ Иногда необходимо создавать файлы во время загрузки. + Например, часто требуется каталог /tmp/.ICE-unix . Это можно сделать, создав + запись в скрипте /etc/sysconfig/createfiles. Формат этого + файла описан в комментариях файла конфигурации по умолчанию. +

+
+
+

+ 9.6.7. Настройка скрипта Sysklogd +

+

+ Скрипт sysklogd вызывает + программу syslogd как часть + инициализации System V. Параметр -m 0 отключает периодическую + (по умолчанию - каждые 20 минут) запись временных меток в + файлы журналов, производимую syslogd. Если Вам + необходимо включить периодическую запись временных меток, + отредактируйте файл /etc/sysconfig/rc.site и присвойте + переменной SYSKLOGD_PARMS требуемое значение. Например, чтобы + сбросить все параметры, присвойте переменной пустое значение: +

+
SYSKLOGD_PARMS=
+

+ Дополнительные параметры смотрите в man syslogd. +

+
+
+

+ 9.6.8. Файл + rc.site +

+

+ Необязательный файл /etc/sysconfig/rc.site содержит настройки, + автоматически применяемые всеми загрузочными скриптами. Этот + файл может содержать парамеры, обычно указываемые в файлах + hostname, console и clock из каталога /etc/sysconfig/. Если значение одной и той + же переменной присваивается, как в одном из этих файлов, так + и в rc.site, приоритет имеет + значение из специализированного файла. +

+

+ rc.site также содержит + параметры, которые могут настраивать другие аспекты процесса + загрузки. Установка переменной IPROMPT позволит выборочно + запускать загрузочные скрипты. Другие параметры описаны в + комментариях к файлу. Версия файла по умолчанию выглядит + следующим образом: +

+
# 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@lists.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 set 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=
+
+
+
+
+
+
+

+ 9.6.8.1. + Настройка скриптов загрузки и завершения работы +

+
+
+
+

+ Загрузочные скрипты LFS загружают и завершают работу + системы довольно эффективно, но есть несколько настроек, + которые вы можете внести в файл rc.site, чтобы еще больше + повысить скорость и настроить сообщения в соответствии с + вашими предпочтениями. Чтобы сделать это, измените + настройки в приведенном выше файле /etc/sysconfig/rc.site. +

+
+
    +
  • +

    + Во время работы загрузочного скрипта udev происходит вызов udev settle, для + завершения которого требуется некоторое время. Это + время может и не потребоваться в зависимости от + конфигурации устройств в системе. Если у вас имеются + только простые разделы и одна сетевая карта, процессу + загрузки, вероятно, не нужно будет ждать завершения + работы этой команды. Чтобы пропустить её, установите + переменную OMIT_UDEV_SETTLE=y. +

    +
  • +
  • +

    + Скрипт загрузки udev_retry также по умолчанию + запускает udev + settle. Команда необходима только + тогда, когда каталог /var смонтирован в отдельный + раздел. Это связано с тем, что часам нужен доступ к + файлу /var/lib/hwclock/adjtime. Для + других настроек также может потребоваться дождаться + завершения udev, но в большинстве случаев в этом нет + необходимости. Пропустите команду, установив + переменную OMIT_UDEV_RETRY_SETTLE=y. +

    +
  • +
  • +

    + По умолчанию проверка файловой системы выполняется в + "тихом" режиме. Это может показаться задержкой во + время процесса загрузки. Чтобы включить вывод + fsck, + установите переменную VERBOSE_FSCK=y. +

    +
  • +
  • +

    + При перезагрузке вы, возможно, захотите полностью + пропустить проверку файловой системы, fsck. Чтобы сделать + это, либо создайте файл /fastboot, либо перезагрузите + систему командой /sbin/shutdown -f -r + now. С другой стороны, вы можете + принудительно проверить все файловые системы, создав + /forcefsck или запустив + shutdown с + параметром -F + вместо -f. +

    +

    + Установка переменной FASTBOOT=y отключит fsck во время + процесса загрузки до тех пор, пока она не будет + удалена. Это не рекомендуется делать на постоянной + основе. +

    +
  • +
  • +

    + Обычно все файлы в каталоге /tmp удаляются во время загрузки. В + зависимости от количества имеющихся файлов или + каталогов это может привести к заметной задержке в + процессе загрузки. Чтобы пропустить удаление этих + файлов, установите переменную SKIPTMPCLEAN=y. +

    +
  • +
  • +

    + Во время завершения работы, init отправляет + сигнал TERM каждой запущенной программе (например, + agetty), ожидает установленное время (по умолчанию 3 + секунды), затем посылает каждому процессу сигнал + завершения(KILL) и снова ждёт. Этот процесс + повторяется в сценарии sendsignals для + любых процессов, которые не завершаются их + собственными скриптами. Задержка для init может быть + установлена путем передачи параметра. Например, чтобы + устранить задержку в init, передайте + параметр -t0 при выключении или перезагрузке + (например, /sbin/shutdown -t0 -r + now). Задержку для скрипта + sendsignals можно + пропустить, установив параметр KILLDELAY=0. +

    +
  • +
+
+
+
+
+
+
+
+

+ 9.7. + Настройка системной локали +

+
+
+
+
+

+ Некоторые переменные окружения, необходимые для поддержки + вашего языка. Правильная их установка влияет на: +

+
+
    +
  • +

    + Выходные данные программ, переводятся на ваш родной язык +

    +
  • +
  • +

    + Правильную интерпретацию символов в буквы, цифры и другие + классы. Это необходимо для того, чтобы bash правильно принимал + не-ASCII символы, в командной строке в неанглоязычных + языковых системах +

    +
  • +
  • +

    + Правильную для страны сортировку по алфавиту +

    +
  • +
  • +

    + Подходящий формат бумаги по умолчанию +

    +
  • +
  • +

    + Правильное форматирование денежных значений, значений + времени и дат +

    +
  • +
+
+

+ Ниже замените <ll> двухбуквенным кодом + нужного вам языка (например en), а + <CC> + двухбуквенным кодом соответствующей страны (например + GB). <charmap> нужно заменить + на каноническую кодировку для выбраной вами локали. Также могут + присутствовать необязательные модификаторы, такие как + @euro. +

+

+ Список всех локалей, поддерживаемых Glibc, можно получить, + выполнив следующую команду: +

+
locale -a
+

+ Таблицы символов могут иметь несколько синонимов. Например + ISO-8859-1 так же называют + iso8859-1 и iso88591. Некоторые приложения не могут + корректно обрабатывать различные синонимы (например + UTF-8 должно быть указано как + UTF-8, а не utf8), поэтому в большинстве случаев + безопаснее всего выбрать каноническое имя для конкретной + локали. Для определения канонического имени локали выполните + команду ниже, заменив <locale + name> на вывод locale -a для желаемой локали + (например en_GB.iso88591 в нашем + примере). +

+
LC_ALL=<locale name> locale charmap
+

+ Для локали en_GB.iso88591 + приведенная выше команда напечатает: +

+
ISO-8859-1
+

+ Окончательная настройка локали будет выглядеть так: + en_GB.ISO-8859-1. Важно, чтобы + локаль, найденная с помощью приведенной выше методики, была + проверена перед её добавлением в файлы запуска Bash: +

+
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
+

+ Приведенные выше команды должны вывести название языка, + кодировку символов, используемую в локали, местную валюту и + телефонный код страны. Если какая-либо из команд завершается с + сообщением об ошибке, похожим на указанное ниже, это означает, + что ваша локаль либо не была установлена в Главе 8, либо не + поддерживается стандартной установкой Glibc. +

+
locale: Cannot set LC_* to default locale: No such file or directory
+

+ Если это произойдет, вам следует либо установить желаемую + локаль с помощью команды localedef, либо рассмотреть + возможность выбора другой локали. Дальнейшие инструкции не + предполагают таких сообщений об ошибках от Glibc. +

+

+ Другие пакеты также могут работать некорректно (но не всегда + будут отображать какие-либо сообщения об ошибках), если + название локали не соответствует их ожиданиям. В таких случаях + изучите, какие ещё дистрибутивы Linux поддерживают ваш язык, + возможно, это даст некоторую полезную информацию +

+

+ Программа оболочки /bin/bash (далее именуемая + как «оболочка») использует начальный набор + файлов, чтобы помочь создать среду для запуска. Каждый файл + имеет определенное назначение и может по-разному влиять на вход + в систему и интерактивное окружение. Файлы в каталоге + /etc содержат глобальные + настройки. Если в домашнем каталоге существуют эквивалентные + файлы, они могут переопределить глобальные настройки. +

+

+ Интерактивная оболочка входа запускается после успешного входа + с использованием /bin/login, прочитав файл + /etc/passwd. Интерактивная + оболочка без входа в систему запускается из командной строки + (например, [prompt]$/bin/bash). Неинтерактивная + оболочка обычно присутствует когда выполняется скрипт оболочки. + Он неинтерактивен, поскольку обрабатывает скрипт и не ожидает + ввода пользователем между командами. +

+

+ Создайте файл /etc/profile + после того, как будут определены + правильные настройки локали, чтобы установить желаемый + язык, но вместо этого установите локаль C.UTF-8 при запуске консоли Linux (чтобы + программы не выводили символы, которые консоль Linux не может + отобразить): +

+
cat > /etc/profile << "EOF"
+# Begin /etc/profile
+
+for i in $(locale); do
+  unset ${i%=*}
+done
+
+if [[ "$TERM" = linux ]]; then
+  export LANG=C.UTF-8
+else
+  export LANG=<ll>_<CC>.<charmap><@modifiers>
+fi
+
+# End /etc/profile
+EOF
+

+ Локаль C (используемая по + умолчанию) и en_US (одна из + рекомендуемых для англоязычных пользователей в Соединенных + Штатах) это разные локали. C + использует 7-битный набор символов US-ASCII и обрабатывает + байты с установленным старшим битом как недопустимые символы. + Вот почему, например, команда ls заменяет их + вопросительными знаками в этой локали. Кроме того, попытка + отправить почту с такими символами из Mutt или Pine приводит к + тому что, отправляемые сообщения не соответствуют RFC + (кодировка в исходящей почте указана как unknown 8-bit). Рекомендуется + использовать локаль C, если вы + уверены, что вам никогда не понадобятся 8-битные символы. +

+
+
+
+
+

+ 9.8. + Создание файла /etc/inputrc +

+
+
+
+
+

+ Файл inputrc это конфигурационный + файл библиотеки readline, который предоставляет возможности + редактирования, когда пользователь вводит строку с терминала. + Он работает путем преобразования ввода с клавиатуры в + определенные действия. Readline используется bash и + большинством других оболочек, а также многими другими + приложениями. +

+

+ Большинство людей не нуждаются в специальных настройках, + поэтому приведенная ниже команда создает глобальный + /etc/inputrc, используемый всеми, + кто входит в систему. Если позже вы решите, что вам нужно + переопределить значения по умолчанию для одного из + пользователей, вы можете создать файл .inputrc в домашнем каталоге пользователя и + указать в нём измененные настройки. +

+

+ Дополнительные сведения о редактировании файла inputrc см. в разделе info bash в секции + Readline Init File. + Также хорошим источником информации является info readline. +

+

+ Ниже приведен общий глобальный inputrc с комментариями, объясняющими, что + делают различные параметры. Обратите внимание, что комментарии + не могут находиться в той же строке, что и команды. Создайте + файл с помощью следующей команды: +

+
cat > /etc/inputrc << "EOF"
+# Begin /etc/inputrc
+# Modified by Chris Lynn <roryo@roryo.dynup.net>
+
+# Разрешить перенос приглашения оболочки на следующую строку
+set horizontal-scroll-mode Off
+
+# Разрешить 8-битный ввод
+set meta-flag On
+set input-meta On
+
+# Отключить обрезание восьмого бита в вводимых символах
+set convert-meta Off
+
+# Выводить на экран все восемь бит
+set output-meta On
+
+# Звуковой сигнал - none, visible или audible, соответственно никакого, видимый или слышимый
+set bell-style none
+
+# Нижеследующие команды привязывают escape-последовательности (первый аргумент)
+# к специфичным для Readline функциям (второй аргумент)
+"\eOd": backward-word
+"\eOc": forward-word
+
+# для консоли linux
+"\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
+
+# для xterm
+"\eOH": beginning-of-line
+"\eOF": end-of-line
+
+# для Konsole
+"\e[H": beginning-of-line
+"\e[F": end-of-line
+
+# End /etc/inputrc
+EOF
+
+
+
+
+

+ 9.9. + Создание файла /etc/shells +

+
+
+
+
+

+ Файл shells содержит список + оболочек входа в систему. Приложения используют этот файл для + определения корректности оболочки. Для каждой оболочки должна + присутствовать одна строка, состоящая из пути к файлу оболочки + относительно корня структуры каталогов (/). +

+

+ Например, chsh + обращается к этому файлу, чтобы определить, может ли + непривилегированный пользователь изменить оболочку входа для + своей учетной записи. Если имя команды не указано в списке, + пользователю будет отказано в возможности изменять оболочки. +

+

+ Это обязательное условие для таких приложений, как GDM, которые не заполняют список + пользователей, если ему не удаётся найти /etc/shells, или демонов FTP, которые + традиционно запрещают доступ пользователям с оболочками, не + включенными в этот файл. +

+
cat > /etc/shells << "EOF"
+# Begin /etc/shells
+
+/bin/sh
+/bin/bash
+
+# End /etc/shells
+EOF
+
+
+
+
+
+

+ Глава + 10. Делаем систему LFS загрузочной +

+
+
+
+
+
+
+
+

+ 10.1. Введение +

+
+
+
+
+

+ Пришло время сделать систему LFS загрузочной. В этой главе + обсуждается создание файла /etc/fstab, сборка ядра для новой системы и + установка загрузчика GRUB, чтобы система LFS могла быть выбрана + для загрузки при запуске. +

+
+
+
+
+

+ 10.2. Создание файла /etc/fstab +

+
+
+
+
+

+ Файл /etc/fstab используется + некоторыми программами для определения того, какие файловые + системы должны монтироваться по умолчанию, в каком порядке и + какие из них должны быть проверены (на наличие ошибок + целостности) перед монтированием. Создайте новую таблицу + файловых систем следующим образом: +

+
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
+tmpfs          /dev/shm     tmpfs    nosuid,nodev        0     0
+cgroup2        /sys/fs/cgroup cgroup2  nosuid,noexec,nodev 0     0
+
+# End /etc/fstab
+EOF
+

+ Замените <xxx>, + <yyy>, и + <fff> + подходящими для системы значениями, например, sda2, sda5, и + ext4. Для получения подробной + информации о параметрах в этом файле, смотрите fstab(5). +

+

+ Файловым системам операционных систем MS DOS и Windows (таким + как vfat, ntfs, smbfs, cifs, iso9660, udf) требуется + специальная опция utf8, чтобы не-ASCII символы в именах файлов + интерпретировались правильно. Для локалей, отличных от UTF-8, + значение iocharset должно быть + таким же, как набор символов локали и настроено так, чтобы ядро + понимало его. Это будет работать, если соответствующее + определение набора символов (находится в разделе File systems + -> Native Language Support при настройке ядра) было + скомпилировано в ядро или собрано как модуль. Однако, если + набор символов локали — UTF-8, параметр iocharset=utf8 сделает файловую систему + чувствительной к регистру. Чтобы исправить это, используйте + специальную опцию utf8 вместо + iocharset=utf8 для локалей UTF-8. + Параметр «codepage» также необходим для файловых + систем vfat и smbfs. Он должен быть установлен на номер кодовой + страницы, используемый в MS-DOS в вашей стране. Например, для + монтирования флешек пользователь локали ru_RU.KOI8-R должен + установить следующие значения в группе параметров строки + монтирования в /etc/fstab: +

+
noauto,user,quiet,showexec,codepage=866,iocharset=koi8r
+

+ Соответствующий фрагмент параметров для пользователей + ru_RU.UTF-8 выглядит следующим образом: +

+
noauto,user,quiet,showexec,codepage=866,utf8
+

+ Обратите внимание, что iocharset + используется по умолчанию для iso8859-1 (которая сохраняет файловую систему + нечувствительной к регистру), а параметр utf8 указывает ядру, что нужно преобразовать + имена файлов с использованием UTF-8, чтобы их можно было + интерпретировать в локали UTF-8. +

+

+ Также возможно указать значения кодовой страницы по умолчанию и + iocharset для некоторых файловых систем во время настройки + ядра. Соответствующие параметры называются «Default NLS Option» + (CONFIG_NLS_DEFAULT), «Default Remote NLS + Option» (CONFIG_SMB_NLS_DEFAULT), «Default codepage for + FAT» (CONFIG_FAT_DEFAULT_CODEPAGE) и «Default iocharset for + FAT» (CONFIG_FAT_DEFAULT_IOCHARSET). Нет возможности + указать эти параметры для файловой системы ntfs во время + компиляции ядра. +

+

+ Для некоторых типов жестких дисков можно сделать файловую + систему ext3 более устойчивой к сбоям питания. Чтобы сделать + это, добавьте параметр barrier=1 к + соответствующей записи в /etc/fstab. Чтобы проверить, поддерживает ли + диск эту опцию, запустите + hdparm на соответствуюшем разделе. Например, если: +

+
hdparm -I /dev/sda | grep NCQ
+

+ возвращает непустой вывод, опция поддерживается. +

+

+ Примечание: разделы на основе управления логическими томами + (LVM) не могут использовать параметр barrier. +

+
+
+
+
+

+ 10.3. Linux-6.7.4 +

+
+
+
+
+
+

+ Этот пакет содержит ядро Linux. +

+
+
+
+ Приблизительное время + сборки: 0.6 - 20.4 SBU + (обычно около 1.4 SBU) +
+
+ Требуемое дисковое + пространство: 1.8 - 10.6 + GB (обычно около 2 GB) +
+
+
+
+
+

+ 10.3.1. Установка ядра +

+

+ Сборка ядра состоит из нескольких этапов—настройка, + компиляция и установка. Ознакомьтесь с файлом README в дереве исходных текстов, чтобы + узнать об альтернативных способах настройки ядра. +

+
+

+ Важно +

+

+ Сборка ядра Linux в первый раз — одна из самых сложных + задач в LFS. Правильный выбор параметров зависит от + конкретного оборудования для целевой системы и ваших + потребностей. Для ядра доступно почти 12 000 элементов + конфигурации, хотя для большинства компьютеров требуется + только около трети из них. Редакторы LFS рекомендуют + пользователям, не знакомым с этим процессом, внимательно + следовать описанным ниже процедурам. Главная цель сейчас + состоит в том, чтобы довести первоначальную систему до + состояния, когда вы сможете войти в систему из командной + строки при последующей перезагрузке в Раздел 11.3, + «Перезагрузка системы». Вопросы оптимизация и + кастомизация второстепенны. +

+

+ Для получения общей информации о конфигурации ядра смотрите + + https://mirror.linuxfromscratch.ru/hints/downloads/files/kernel-configuration.txt. + Дополнительную информацию о настройке и сборке ядра можно + найти по адресу https://anduin.linuxfromscratch.org/LFS/kernel-nutshell/. + Эти ссылки немного устарели, но все же дают разумное + представление о процессе. +

+

+ Если ничего не помогает, вы можете обратиться за помощью в + список рассылки lfs-support. + Обратите внимание, что подписка необходима для того, чтобы + рассылка не содержала спама. +

+
+

+ Подготовьте пакет к компиляции, выполнив следующую команду: +

+
make mrproper
+

+ Выполнение этой команды гарантирует, что дерево исходников + будет абсолютно чистым. Разработчики ядра рекомендуют + запускать эту команду перед каждой компиляцией. Не следует + полагаться на то, что дерево исходных текстов ядра будет + чистым после распаковки. +

+

+ Существует несколько способов настройки параметров ядра. + Обычно это делается с помощью псевдографического интерфейса, + например так: +

+
make menuconfig
+
+

+ Значения необязательных переменных окружения + make: +

+
+
+ LANG=<переменная_LANG_хоста> + LC_ALL= +
+
+

+ Устанавливает значение локали на то, которое + используется на хосте. Это может понадобиться для + правильного отображения интерфейса menuconfig с помощью + ncurses в текстовой консоли Linux с UTF-8. +

+

+ Если это необходимо, обязательно замените значение + <переменной_LANG> + на значение переменной $LANG + вашего хоста. В качестве альтернативы вы можете + использовать значения переменных $LC_ALL или $LC_CTYPE. +

+
+
+ make + menuconfig +
+
+

+ Эта команда запускает интерфейс на основе ncurses. Для + использования других (графических) интерфейсов, + выполните make + help. +

+
+
+
+
+

+ Примечание +

+

+ Хорошей отправной точкой для настройки ядра, может стать + запуск команды make + defconfig. В результате её выполнения будет + создана базовая конфигурация с учётом архитектуры системы. +

+

+ Обязательно включите/отключите/настройте следующие + параметры, иначе система может работать некорректно или + вообще не загружаться: +

+
General setup --->
+  [ ] Compile the kernel with warnings as errors                        [WERROR]
+  CPU/Task time and stats accounting --->
+    [*] Pressure stall information tracking                                [PSI]
+    [ ]   Require boot parameter to enable pressure stall information tracking
+                                                     ...  [PSI_DEFAULT_DISABLED]
+  < > Enable kernel headers through /sys/kernel/kheaders.tar.xz      [IKHEADERS]
+  [*] Control Group support --->                                       [CGROUPS]
+    [*] Memory controller                                                [MEMCG]
+  [ ] Configure standard kernel features (expert users) --->            [EXPERT]
+
+Processor type and features --->
+  [*] Build a relocatable kernel                                   [RELOCATABLE]
+  [*]   Randomize the address of the kernel image (KASLR)       [RANDOMIZE_BASE]
+
+General architecture-dependent options --->
+  [*] Stack Protector buffer overflow detection                 [STACKPROTECTOR]
+  [*]   Strong Stack Protector                           [STACKPROTECTOR_STRONG]
+
+Device Drivers --->
+  Generic Driver Options --->
+    [ ] Support for uevent helper                                [UEVENT_HELPER]
+    [*] Maintain a devtmpfs filesystem to mount at /dev               [DEVTMPFS]
+    [*]   Automount devtmpfs at /dev, after the kernel mounted the rootfs
+                                                           ...  [DEVTMPFS_MOUNT]
+  Graphics support --->
+    < /*/M> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) --->
+                                                                      ...  [DRM]
+    # If [DRM] is selected as * or M, this must be selected:
+    [ /*]   Enable legacy fbdev support for your modesetting driver
+                                                      ...  [DRM_FBDEV_EMULATION]
+    Console display driver support --->
+      # If [DRM] is selected as * or M, this must be selected:
+      [ /*] Framebuffer Console support                    [FRAMEBUFFER_CONSOLE]
+

+ Включите некоторые дополнительные функции, если вы + собираете 64-битную систему. Если вы используете + menuconfig, включите их в следующем порядке: сначала + CONFIG_PCI_MSI, + затем CONFIG_IRQ_REMAP, и, наконец, + CONFIG_X86_X2APIC, + потому что параметр отображается только после выбора его + зависимости. +

+
Processor type and features --->
+  [*] Support x2apic                                                [X86_X2APIC]
+
+Device Drivers --->
+  [*] PCI support --->                                                     [PCI]
+    [*] Message Signaled Interrupts (MSI and MSI-X)                    [PCI_MSI]
+  [*] IOMMU Hardware Support --->                                [IOMMU_SUPPORT]
+    [*] Support for Interrupt Remapping                              [IRQ_REMAP]
+

+ Если вы создаете 32-разрядную систему, работающую на + оборудовании с объемом оперативной памяти более 4 ГБ, + измените конфигурацию таким образом, чтобы ядро могло + использовать до 64 ГБ оперативной памяти: +

+
Processor type and features --->
+  High Memory Support --->
+    (X) 64GB                                                        [HIGHMEM64G]
+

+ Если раздел для системы LFS находится на NVME SSD (то есть + узлом устройства для раздела является /dev/nvme*, а не /dev/sd*), включите параметр NVME + support, иначе система LFS не будет загружаться: +

+
Device Drivers --->
+  NVME Support --->
+    <*> NVM Express block device                                  [BLK_DEV_NVME]
+
+

+ Есть несколько других параметров, которые могут понадобиться + в зависимости от особенностей системы. Для получения списка + необходимых опций для пакетов BLFS смотрите + Список опций ядра BLFS. +

+
+

+ Примечание +

+

+ Если ваша хост поддерживает UEFI и вы хотите загрузить LFS + с помощью него, вам необходимо настроить некоторые + параметры ядра, следуя инструкции + на странице BLFS, даже если + вы будете использовать загрузчик UEFI из основного + дистрибутива. +

+
+
+

+ Пояснения для выбранных выше параметров + ядра: +

+
+
+ Randomize + the address of the kernel image + (KASLR) +
+
+

+ Включите ASLR для образа ядра, чтобы уменьшить + вероятность некоторых атак, основанных на фиксированных + адресах конфиденциальных данных или кода в ядре. +

+
+
+ Compile + the kernel with warnings as errors +
+
+

+ Включение этого параметра может привести к сбою сборки, + если компилятор и/или конфигурация отличается от + конфигурации ядра разработчиков. +

+
+
+ Enable + kernel headers through + /sys/kernel/kheaders.tar.xz +
+
+

+ Для сборки ядра с этим параметром необходим пакет + cpio. + cpio не + устанавливается в LFS. +

+
+
+ Configure + standard kernel features (expert + users) +
+
+

+ Эта опция приведет к отображению некоторых параметров в + интерфейсе конфигурации, но изменение этих параметров + может быть опасным. Не используйте её, если вы не + знаете, что делаете. +

+
+
+ Strong + Stack Protector +
+
+

+ Включите SSP для ядра. Мы включили его для всего + пользовательского пространства с помощью --enable-default-ssp, + настроив GCC, но ядро не использует настройки GCC по + умолчанию для SSP. Мы включаем это явно здесь. +

+
+
+ Support + for uevent helper +
+
+

+ Включение этого параметра может вызвать сбои при + управление устройствами через Udev. +

+
+
+ Maintain a + devtmpfs +
+
+

+ С помощью этого параметра узлы устройств создаются + автоматически и заполняются самим ядром, даже без + запуска Udev. Udev будет работать поверх, управляя + разрешениями и добавляя необходимые символические + ссылки. Этот элемент конфигурации необходим всем + пользователям Udev. +

+
+
+ Automount + devtmpfs at /dev +
+
+

+ Этот параметр позволит смонтировать представление ядра + устройств в /dev при переключении на корневую файловую + систему непосредственно перед запуском init. +

+
+
+ Enable + legacy fbdev support for your modesetting + driver и Framebuffer Console + support +
+
+

+ Они необходимы для отображения консоли Linux на + графическом процессоре, управляемом драйвером DRI + (Direct Rendering Infrastructure - инфраструктура + прямого рендеринга). Если CONFIG_DRM (Direct Rendering Manager - + диспетчер прямого рендеринга) включен, вам также + следует включить эти две опции, иначе вы увидите пустой + экран после загрузки драйвера DRI. +

+
+
+ Support + x2apic +
+
+

+ Поддержка запуска 64-разрядного контроллера прерываний + для x86 процессоров в режиме x2APIC. x2APIC может быть + включен в BIOS на системах x86 и у ядра собранного без + этой опции будет kernel panic при загрузке. Эта опция + не окажет никакого эффекта, но и не причиняет вреда, + если x2APIC отключен в BIOS. +

+
+
+
+

+ В качестве альтернативы, в некоторых ситуациях может быть + уместно использование команды make oldconfig. Смотрите + файл README для получения + дополнительной информации. +

+

+ По желанию, вы можете пропустить настройку ядра, скопировав + конфигурационный файл ядра .config, из хост системы(если он доступен) + в каталог куда было распаковано ядро linux-6.7.4. Однако, мы не рекомендуем этот + вариант. Намного лучше изучить все параметры меню и создать + конфигурацию ядра с нуля. +

+

+ Скомпилируйте образ ядра и модули: +

+
make
+

+ При использовании модулей, могут потребоваться файлы + конфигурации, которые расположены в каталоге /etc/modprobe.d. Информация о модулях и + конфигурации ядра находится в Раздел 9.3, + «Взаимодействие с устройствами и модулями» и в + документации к ядру linux-6.7.4/Documentation. Кроме этого, + стоит ознакомиться с руководством modprobe.d(5). +

+

+ Если поддержка модулей не была отключена в параметрах ядра, + установите модули с помощью: +

+
make modules_install
+

+ После окончания компиляции, необходимо выполнить еще + несколько шагов для завершения установки ядра. Некоторые + файлы должны быть скопированы в каталог /boot. +

+
+

+ Внимание +

+

+ Если вы решили использовать отдельный /boot раздел для системы LFS (возможно, + общий раздел /boot с + хост-дистрибутивом), скопированные ниже файлы должны быть + помещены туда. Самый простой способ сделать это — сначала + создать запись для /boot в + /etc/fstab (подробности + читайте в предыдущем разделе), затем выполните следующую + команду от имени пользователя root в среде chroot: +

+
mount /boot
+

+ Путь к узлу устройства в команде опущен, поскольку + mount может + прочитать его из /etc/fstab. +

+
+

+ Путь к образу ядра может различаться в зависимости от + используемой платформы. Имя файла, может быть произвольным, + но начинаться должно с vmlinuz для обеспечения + совместимости с автоматической настройкой процесса загрузки, + описанного в следующем разделе. Следующая команда + предполагает архитектуру x86: +

+
cp -iv arch/x86/boot/bzImage /boot/vmlinuz-6.7.4-lfs-12.1
+

+ System.map - это символьный + файл для ядра. Он содержит точки входа каждой функции в API + ядра, а также адреса структур данных для запущенного ядра. Он + используется в качестве ресурса при исследовании проблем с + ядром. Выполните следующую команду для установки файла: +

+
cp -iv System.map /boot/System.map-6.7.4
+

+ Файл конфигурации ядра .config + создается на шаге make + menuconfig и содержит все параметры ядра, + которое было скомпилировано только что. Рекомендуется + сохранить этот файл на будущее: +

+
cp -iv .config /boot/config-6.7.4
+

+ Установите документацию ядра: +

+
cp -r Documentation -T /usr/share/doc/linux-6.7.4
+

+ Важно отметить, что файлы в каталоге с исходным кодом ядра не + принадлежат пользователю root. Всякий раз, когда пакет + распаковывается от имени пользователя root (как это и выполнялось внутри + среды chroot), файлы имеют те идентификаторы пользователя и + группы, которые были присвоены при распаковке. Обычно это не + вызывает проблем для других устанавливаемых пакетов, так как + каталог с исходниками удаляется после установки пакета. + Однако исходный код ядра Linux часто сохраняется в течение + длительного времени. Из-за этого существует вероятность того, + что идентификатор пользователя, используемый при распаковке, + будет назначен другому пользователю. В таком случае, этот + пользователь будет иметь доступ на запись в этот каталог. +

+
+

+ Примечание +

+

+ В ряде случаев требуется обновить конфигурацию ядра для + пакетов, которые будут установлены позже в BLFS. В отличии + от других пакетов, нет необходимости удалять дерево + исходного кода ядра после установки только что собранного + ядра. +

+

+ Если вы планируете оставить каталог с исходным кодом ядра, + выполните команду chown -R + 0:0 * находясь в каталоге linux-6.7.4, чтобы все файлы принадлежали + пользователю root. +

+
+
+

+ Предупреждение +

+

+ Иногда, в документации к ядру, рекомендуют создать + символическую ссылку /usr/src/linux указывающую на каталог с + исходниками ядра. Эта рекомендация относится к ядрам до + версии 2.6 и не + должна выполняться в системе LFS, так как это + может вызвать проблемы с пакетами, которые вы, возможно, + захотите собрать, когда ваша базовая система LFS будет + готова. +

+
+
+

+ Предупреждение +

+

+ Заголовочные файлы в системном каталоге include (/usr/include) всегда используются те, которые + применялись при компиляции Glibc, то есть подготовленные + заголовочные файлы, установленные в Раздел 5.4, + «Заголовочные файлы Linux-6.7.4 API». Поэтому их + никогда не следует + заменять на чистые заголовочные файлы ядра или любые другие + подготовленные заголовочные файлы. +

+
+
+
+

+ 10.3.2. + Настройка порядка загрузки модулей Linux +

+

+ В большинстве случаев модули Linux загружаются автоматически, + но иногда требуется определенный порядок. Программа, которая + загружает модули, modprobe или insmod, использует файл + /etc/modprobe.d/usb.conf как + раз для этой цели. Этот файл должен быть заполнен таким + образом, что если USB-драйверы (ehci_hcd, ohci_hcd и + uhci_hcd) были собраны в виде модулей, то они будут загружены + в правильном порядке; ehci_hcd должен быть загружен до + ohci_hcd и uhci_hcd для того, чтобы избежать предупреждений + во время загрузки. +

+

+ Создайте новый файл /etc/modprobe.d/usb.conf, выполнив + следующую команду: +

+
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
+
+
+

+ 10.3.3. + Содержимое пакета Linux +

+
+
+
+ Установленные файлы: + config-6.7.4, + vmlinuz-6.7.4-lfs-12.1, и System.map-6.7.4 +
+
+ Созданные каталоги: + /lib/modules, + /usr/share/doc/linux-6.7.4 +
+
+
+
+

+ Краткое описание +

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

+ config-6.7.4 +

+
+

+ Содержит в себе все параметры конфигурации ядра +

+
+

+ vmlinuz-6.7.4-lfs-12.1 +

+
+

+ Ядро системы Linux. При включении компьютера ядро — + это первая загружаемая часть операционной системы. + Оно обнаруживает и инициализирует все компоненты + аппаратного обеспечения компьютера, делает их + доступными в виде дерева каталогов с файлами для + доступа к ним программ и превращает один процессор + в мультизадачную машину, способную выполнять + множество программ как будто одновременно. +

+
+

+ System.map-6.7.4 +

+
+

+ Список адресов и символов; файл содержит точки + входа и адреса всех функций и структур данных в + ядре +

+
+
+
+
+
+
+
+

+ 10.4. + Использование GRUB для настройки процесса загрузки +

+
+
+
+
+
+

+ Примечание +

+

+ Если ваша система поддерживает UEFI и вы хотите загрузить LFS + с помощью UEFI, вам следует пропустить инструкции на этой + странице, но все равно изучить синтаксис grub.cfg и способ указания раздела в файле + с этой страницы, а также настроить GRUB с поддержкой UEFI + используя инструкции, приведенные на + странице BLFS. +

+
+
+

+ 10.4.1. Введение +

+
+

+ Предупреждение +

+

+ При неправильной настройке GRUB ваша система перестанет + загружаться без вспомогательно загрузочного CD-ROM или + USB-накопителя. Для загрузки системы LFS этот раздел + необязателен. Вы можете просто использовать существующий + загрузчик, например Grub-Legacy, GRUB2 или LILO. +

+
+

+ Убедитесь, что аварийный загрузочный диск готов к + «спасению» компьютера, если он + перестанет загружаться. Если у вас еще нет загрузочного + диска, вы можете создать его. Для этого необходимо перейти в + раздел BLFS и установить программу xorriso из пакета + libisoburn. +

+
cd /tmp
+grub-mkrescue --output=grub-img.iso
+xorriso -as cdrecord -v dev=/dev/cdrw blank=as_needed grub-img.iso
+
+
+

+ 10.4.2. Соглашения об именовании GRUB +

+

+ GRUB использует собственную структуру именования дисков и + разделов в виде (hdn,m), где n — номер жесткого диска, а + m — номер раздела. + Номера жестких дисков начинаются с нуля, а номера разделов + начинаются с единицы для обычных разделов (с пяти для + расширенных разделов). Обратите внимание, что это отличается + от более ранних версий, где оба номера начинались с нуля. + Например, раздел sda1 это + (hd0,1) в GRUB, а + sdb3 (hd1,3). В отличие от Linux, GRUB + не считает приводы CD-ROM жесткими дисками. Например, если + используемый CD-привода определяется как hdb, а второй жесткий диск как hdc, этот второй жесткий диск все равно + будет (hd1). +

+
+
+

+ 10.4.3. Настройка +

+

+ GRUB записывает данные на первый физический сектор жесткого + диска. Эта область не является частью какой-либо файловой + системы. Программа в загрузочном разделе имеет доступ к + модулям GRUB расположенным по умолчанию в /boot/grub/. +

+

+ Расположение загрузочного раздела - это выбор пользователя, + который влияет на конфигурацию. Одна из рекомендаций + заключается в том, чтобы иметь отдельный небольшой раздел + (примерно 200 МБ) исключительно для загрузочной информации. В + этом случае каждая сборка, будь то LFS или другой + дистрибутив, может обращаться к тем же загрузочным файлам, а + доступ может быть получен из любой загруженной системы. Если + вы решите так сделать, вам необходимо примонтировать + отдельный раздел, переместить все файлы из текущего каталога + /boot (например, ядро Linux, + которое вы создали на предыдущем этапе) в новый раздел. Затем + нужно отмонтировать раздел и примонтировать его заново в + каталог /boot. Когда вы это + сделаете, обязательно обновите данные в файле /etc/fstab. +

+

+ Оставить /boot на текущем + разделе LFS это тоже рабочее решение, но его настройка для + загрузки нескольких систем сложнее. +

+

+ Используя информацию выше, определите соответствующие точки + монтирования для корневого раздела (или загрузочного раздела, + если используется отдельный). В следующем примере + предполагается, что корневым (или отдельным загрузочным) + разделом является sda2. +

+

+ Установите файлы GRUB в каталог /boot/grub и настройте загрузочный сектор: +

+
+

+ Предупреждение +

+

+ Следующая команда перезапишет текущий загрузчик. Не + выполняйте эту команду, если это не нужно, например, если + вы используете сторонний менеджер загрузки для управления + главной загрузочной записью (MBR). +

+
+
grub-install /dev/sda
+
+

+ Примечание +

+

+ Если система была загружена с использованием UEFI, + grub-install + попытается установить файлы для x86_64-efi, но эти файлы не были + установлены в + Глава 8. Если это так, добавьте --target i386-pc к приведенной выше + команде. +

+
+
+
+

+ 10.4.4. Создание файла + конфигурации GRUB +

+

+ Создайте файл /boot/grub/grub.cfg: +

+
cat > /boot/grub/grub.cfg << "EOF"
+# Begin /boot/grub/grub.cfg
+set default=0
+set timeout=5
+
+insmod part_gpt
+insmod ext2
+set root=(hd0,2)
+
+menuentry "GNU/Linux, Linux 6.7.4-lfs-12.1" {
+        linux   /boot/vmlinuz-6.7.4-lfs-12.1 root=/dev/sda2 ro
+}
+EOF
+

+ Команды insmod + загружают модули GRUB с + именами part_gpt и ext2. Несмотря на название, ext2 фактически поддерживаются файловые + системы ext2, ext3 и ext4. Команда grub-install встроила + некоторые модули в основной образ GRUB (установленный в MBR или раздел + GRUB BIOS) для доступа к другим модулям (в /boot/grub/i386-pc), поэтому в стандартной + конфигурации эти два модуля уже встроены и эти две команды + insmod ничего + не будут делать. В любом случае, от них нет никакого вреда, + но они могут понадобиться в некоторых редких конфигурациях. +

+
+

+ Примечание +

+

+ С точки зрения GRUB, файлы + ядра относятся к используемому разделу. Если вы + используется отдельный раздел /boot, удалите /boot из + приведенной выше строки linux. Вам также потребуется + изменить строку set + root так, чтобы она указывала на загрузочный + раздел. +

+
+
+

+ Примечание +

+

+ Наименование раздела для GRUB может измениться, если вы + добавили или удалили некоторые диски (это могут быть как + съемные диски, так и USB-устройства). Изменение может + привести к сбою загрузки, потому что grub.cfg ссылается на «старые» + указатели. Чтобы не столкнуться с этой проблемой, + необходимо использовать UUID раздела и файловой системы + вместо указателя GRUB для указания устройства. Запустите + команду lsblk -o + UUID,PARTUUID,PATH,MOUNTPOINT, чтобы + посмотреть UUID ваших файловых систем (в столбце + UUID) и разделов (в столбце + PARTUUID). Затем замените + set root=(hdx,y) на + search --set=root --fs-uuid + <UUID файловой системы, в + которой установлено ядро>, и замените + root=/dev/sda2 на root=PARTUUID=<UUID раздела, в котором собрана + LFS>. +

+

+ Обратите внимание, что UUID раздела и UUID файловой системы + на этом разделе это совершенно разные вещи. Некоторые + онлайн-ресурсы могут предлагать вам использовать + root=UUID=<UUID файловой + системы> вместо root=PARTUUID=<UUID + раздела>, но для этого требуется + initramfs, которая не рассматривается в LFS. +

+

+ Имя узла устройства для раздела в /dev также может измениться (хотя это + менее вероятно, чем изменение указателя GRUB). Вы можете + заменить пути к узлам устройств, таким как /dev/sda1 на PARTUUID=<UUID + раздела>, в /etc/fstab, чтобы избежать потенциального + сбоя загрузки в случае, если имя узла устройства + изменилось. +

+
+

+ GRUB - чрезвычайно мощная программа, предоставляющая огромное + количество вариантов загрузки с самых разных устройств, + работающих систем и типов разделов. Существует также + множество опций настройки, таких как графические + экраны-заставки, воспроизведение звука, ввод с помощью мыши и + т. д., детали этих опций выходят за рамки этой инструкции. +

+
+

+ Внимание +

+

+ Существует команда grub-mkconfig, которая может + автоматически записывать файл конфигурации. Она использует + набор скриптов из каталога /etc/grub.d/ и уничтожит любые + сделанные вами настройки. Эти скрипты предназначены в + первую очередь для обычных дистрибутивов и не рекомендуются + для LFS. Если вы устанавливаете коммерческий дистрибутив + Linux, есть вероятность, что эта программа будет запущена. + Обязательно создайте резервную копию файла grub.cfg. +

+
+
+
+
+
+
+
+

+ Глава 11. Заключение +

+
+
+
+
+
+
+
+

+ 11.1. + Заключение +

+
+
+
+
+

+ Отлично! Новая система LFS установлена! Желаем успехов в работе + с вашей новой, блестящей, самостоятельно собранной Linux + системой. +

+

+ Может быть хорошей идеей создать файл /etc/lfs-release. Имея этот файл, вам (и нам, + если вам в какой-то момент понадобится обратиться за помощью) + будет проще узнать, какая версия LFS установлена в системе. + Создайте этот файл, выполнив следующую команду: +

+
echo 12.1 > /etc/lfs-release
+

+ Следующие два файла, содержащие описание установленной системы, + могут использоваться пакетами, устанавливаемыми позже, либо в + бинарном виде, либо путем их сборки. +

+

+ Первый показывает статус вашей новой системы по отношению к + стандарту LSB. Чтобы создать этот файл, выполните: +

+
cat > /etc/lsb-release << "EOF"
+DISTRIB_ID="Linux From Scratch"
+DISTRIB_RELEASE="12.1"
+DISTRIB_CODENAME="<your name here>"
+DISTRIB_DESCRIPTION="Linux From Scratch"
+EOF
+

+ Второй содержит примерно ту же информацию и используется + systemd и некоторыми графическими средами рабочего стола. Чтобы + создать этот файл, выполните: +

+
cat > /etc/os-release << "EOF"
+NAME="Linux From Scratch"
+VERSION="12.1"
+ID=lfs
+PRETTY_NAME="Linux From Scratch 12.1"
+VERSION_CODENAME="<your name here>"
+HOME_URL="https://mirror.linuxfromscratch.ru/lfs/"
+EOF
+

+ Обязательно настройте значения 'DISTRIB_CODENAME' и + 'VERSION_CODENAME', чтобы сделать название вашей новой системы + уникальным. +

+
+
+
+
+

+ 11.2. Вступите в ряды + пользователей LFS +

+
+
+
+
+

+ Теперь, когда вы закончили изучение книги LFS, хотите добавить + себя в список пользователей LFS? Перейдите по ссылке https://www.linuxfromscratch.org/cgi-bin/lfscounter.php + и зарегистрируйтесь. Введите ваше имя и версию LFS, которую вы + использовали. +

+

+ Давайте выполним перезагрузку в систему LFS. +

+
+
+
+
+

+ 11.3. + Перезагрузка системы +

+
+
+
+
+

+ Теперь, когда все программное обеспечение установлено, пришло + время перезагрузить ваш компьютер. Однако есть несколько вещей, + которые нужно проверить. Вот некоторые предложения: +

+
+
    +
  • +

    + Установить + прошивки, если они необходимы для правильной работы + вашего оборудования. +

    +
  • +
  • +

    + Убедитесь, что установлен пароль для пользователя + root. +

    +
  • +
  • +

    + На данном этапе также уместно ознакомиться со следующими + конфигурационными файлами. +

    +
    +
      +
    • +

      + /etc/bashrc +

      +
    • +
    • +

      + /etc/dircolors +

      +
    • +
    • +

      + /etc/fstab +

      +
    • +
    • +

      + /etc/hosts +

      +
    • +
    • +

      + /etc/inputrc +

      +
    • +
    • +

      + /etc/profile +

      +
    • +
    • +

      + /etc/resolv.conf +

      +
    • +
    • +

      + /etc/vimrc +

      +
    • +
    • +

      + /root/.bash_profile +

      +
    • +
    • +

      + /root/.bashrc +

      +
    • +
    • +

      + /etc/sysconfig/ifconfig.eth0 +

      +
    • +
    +
    +
  • +
+
+

+ Теперь, после всего, давайте перейдём к первой загрузке нашей + новой системы LFS. Для начала, выйдем из chroot-окружения: +

+
logout
+

+ Затем размонтируйте виртуальные файловые системы: +

+
umount -v $LFS/dev/pts
+mountpoint -q $LFS/dev/shm && umount -v $LFS/dev/shm
+umount -v $LFS/dev
+umount -v $LFS/run
+umount -v $LFS/proc
+umount -v $LFS/sys
+

+ Если было создано несколько разделов, размонтируйте их перед + размонтированием основного, вот так: +

+
umount -v $LFS/home
+umount -v $LFS/usr
+

+ Размонтируйте саму файловую систему LFS: +

+
umount -v $LFS
+

+ Теперь, выполните перезагрузку системы. +

+

+ Предполагается, что загрузчик GRUB был настроен ранее, поэтому + пункт меню LFS 12.1 + будет загружен автоматически. +

+

+ После завершения перезагрузки, система LFS будет готова к + использованию. Вы увидите простую подсказку «login: ». На этом + этапе вы можете перейти к книге + BLFS, где вы установите дополнительное программное + обеспечение в соответствии с вашими потребностями. +

+

+ Если перезагрузка завершилась неудачей, самое время устранить + эти неполадки. Советы по решению проблем с начальной загрузкой, + смотрите на странице https://www.linuxfromscratch.org/lfs/troubleshooting.html. +

+
+
+
+
+

+ 11.4. Дополнительные ресурсы +

+
+
+
+
+

+ Благодарим за прочтение книги LFS. Мы надеемся, что эта книга + была полезна и вы узнали больше о процессе создания системы с + нуля. +

+

+ Теперь, когда система LFS установлена, вы можете задаться + вопросом «Что + дальше?» Чтобы ответить на этот вопрос, мы + составили для вас список ресурсов. +

+
+
    +
  • +

    + Обслуживание +

    +

    + Для всего программного обеспечения регулярно появляются + сообщения об ошибках и уведомления безопасности. + Поскольку система LFS компилируется из исходного кода, вы + должны быть в курсе таких отчетов. Существует несколько + онлайн-ресурсов, которые отслеживают такие отчеты, + некоторые из них приведены ниже: +

    +
    + +
    +
  • +
  • +

    + Советы LFS +

    +

    + Советы LFS представляют собой коллекцию обучающих + материалов, собранную добровольцами сообщества LFS. + Советы доступны по адресу + https://mirror.linuxfromscratch.ru/hints/downloads/files/. +

    +
  • +
  • +

    + Списки рассылки +

    +

    + Существует несколько списков рассылки LFS, на которые вы + можете подписаться, если нуждаетесь в помощи, хотите быть + в курсе последних событий, хотите внести свой вклад в + проект и многое другое. Посетите Глава 1 - Списки + рассылки для получения дополнительной информации. +

    +
  • +
  • +

    + Проект документации по Linux (TLDP) +

    +

    + Целью проекта TLDP является сотрудничество по всем + вопросам связанным с документацией по Linux. TLDP + содержит большую коллекцию инструкций, руководств и + справочных страниц. Она расположена по адресу https://tldp.org/. +

    +
  • +
+
+
+
+
+
+

+ 11.5. Начало работы + после сборки LFS +

+
+
+
+
+
+

+ 11.5.1. Что делать дальше? +

+

+ Теперь, когда LFS собрана и у вас есть загружаемая система, + необходимо решить, что же делать дальше? Следующий шаг - + определиться, как использовать систему. Как правило, следует + учитывать две широкие категории: рабочая станция или сервер. + Действительно, эти категории не являются взаимоисключающими. + Приложения, необходимые для каждой категории, можно + объединить в одну систему, но пока давайте рассмотрим их по + отдельности. +

+

+ Сервер — более простая категория. Как правило, это + веб-сервер, такой как + Apache, и сервер баз данных, например, + MariaDB. Однако возможны и другие варианты. К этой же + категории относятся операционные системы для встраиваемых + устройств. +

+

+ Рабочая станция же, гораздо сложнее. Обычно для нее требуется + среда рабочего стола, например, + LXDE, + XFCE, + KDE, или + Gnome основанные на базовом + графическом окружении и наборе графических приложений, + таких как + веб-браузер Firefox, + почтовый клиент Thunderbird, или + пакет офисных приложений LibreOffice. Для этих приложений + требуется множество (может быть несколько сотен, в + зависимости от ваших потребностей) пакетов вспомогательных + приложений и библиотек. +

+

+ В дополнение к вышесказанному, существует набор приложений + для управления системой. Все эти приложения есть в + справочнике BLFS, но не все пакеты необходимы в каждом + конкретном окружении. Например + клиент dhcpcd, обычно не требуется на серверах или + + управление параметрами беспроводных сетей - полезно + только для ноутбуков и других портативных систем. +

+
+
+

+ 11.5.2. Работа в базовой среде LFS +

+

+ Когда вы впервые загружаетесь в LFS, у вас есть все + необходимые инструменты для сборки дополнительных пакетов. К + сожалению, набор программ пользовательского окружения + довольно скудный. Есть несколько способов исправить это: +

+
+
+
+
+

+ 11.5.2.1. Работа + с хоста LFS в chroot +

+
+
+
+

+ Этот метод обеспечивает полноценную графическую среду, в + которой доступен полнофункциональный браузер и возможности + копирования/вставки. Также он позволяет использовать + приложения хоста, такие как wget, для загрузки исходных + текстов пакетов в каталог, доступный при работе в среде + chroot. +

+

+ Чтобы правильно собрать пакеты в chroot, вам необходимо не + забыть смонтировать виртуальные файловые системы, если они + еще не смонтированы. Один из способов сделать это — создать + скрипт в ХОСТОВОЙ системе: +

+
cat > ~/mount-virt.sh << "EOF"
+#!/bin/bash
+
+function mountbind
+{
+   if ! mountpoint $LFS/$1 >/dev/null; then
+     $SUDO mount --bind /$1 $LFS/$1
+     echo $LFS/$1 mounted
+   else
+     echo $LFS/$1 already mounted
+   fi
+}
+
+function mounttype
+{
+   if ! mountpoint $LFS/$1 >/dev/null; then
+     $SUDO mount -t $2 $3 $4 $5 $LFS/$1
+     echo $LFS/$1 mounted
+   else
+     echo $LFS/$1 already mounted
+   fi
+}
+
+if [ $EUID -ne 0 ]; then
+  SUDO=sudo
+else
+  SUDO=""
+fi
+
+if [ x$LFS == x ]; then
+  echo "LFS not set"
+  exit 1
+fi
+
+mountbind dev
+mounttype dev/pts devpts devpts -o gid=5,mode=620
+mounttype proc    proc   proc
+mounttype sys     sysfs  sysfs
+mounttype run     tmpfs  run
+if [ -h $LFS/dev/shm ]; then
+  install -v -d -m 1777 $LFS$(realpath /dev/shm)
+else
+  mounttype dev/shm tmpfs tmpfs -o nosuid,nodev
+fi 
+
+#mountbind usr/src
+#mountbind boot
+#mountbind home
+EOF
+

+ Обратите внимание, что последние три команды в скрипте + закомментированы. Они пригодятся, если эти каталоги + монтируются как отдельные разделы в хост-системе и будут + монтироваться при загрузке завершенной системы LFS/BLFS. +

+

+ Скрипт можно запустить с помощью bash ~/mount-virt.sh либо + от имени обычного пользователя (рекомендуется), либо от + имени root. При запуске от + имени обычного пользователя в хост-системе требуется sudo. +

+

+ Еще одна проблема, на которую указывает скрипт, заключается + в том, где хранить загруженные файлы пакетов. Это + местоположение является произвольным. Оно может находиться + в домашнем каталоге обычного пользователя, таком как + ~/sources, или в глобальном каталоге /usr/src. Наша + рекомендация - не смешивать источники BLFS и источники LFS + в (из среды chroot) /sources. В любом случае, пакеты должны + быть доступны внутри среды chroot. +

+

+ Последняя удобная функция, представленная здесь, + предназначена для упрощения процесса входа в среду chroot. + Это можно сделать с помощью псевдонима, помещенного в + пользовательский файл ~/.bashrc в хост-системе: +

+
alias lfs='sudo /usr/sbin/chroot /mnt/lfs /usr/bin/env -i HOME=/root TERM="$TERM" PS1="\u:\w\\\\$ "
+PATH=/bin:/usr/bin:/sbin:/usr/sbin /bin/bash --login'
+

+ Этот псевдоним немного сложен для восприятия из-за кавычек + и слэшей. Всё это должно быть в одной строке. Вышеуказанная + команда была разделена на две части для презентационных + целей. +

+
+
+
+
+
+

+ 11.5.2.2. Работа + удаленно по ssh +

+
+
+
+

+ Этот метод также предоставляет полноценную графическую + среду, но сначала требует установки + sshd в системе LFS, обычно в chroot. Кроме этого + потребуется второй компьютер. Преимущество этого метода в + том, что он прост, поскольку не требует сложной среды + chroot. Он также использует собранное вами ядро LFS для + всех дополнительных пакетов и по-прежнему предоставляет + полную систему для установки пакетов. +

+

+ Вы можете использовать команду scp для загрузки исходных + текстов пакетов, которые будут собраны в системе LFS. Если + вместо этого вы хотите загрузить исходные тексты + непосредственно в систему LFS, установите + libtasn1, + p11-kit, + make-ca и + wget в chroot (или загрузите их исходники с помощью + scp после + загрузки системы LFS). +

+
+
+
+
+
+

+ 11.5.2.3. Работа + из командной строки LFS +

+
+
+
+

+ Этот метод требует установки + libtasn1, + p11-kit, + make-ca, + wget, + gpm и + links (или + lynx) в chroot, а затем перезагрузки в новую систему + LFS. На данный момент система по умолчанию имеет шесть + виртуальных консолей. Переключать консоли так же просто, + как использовать комбинации клавиш Alt+Fx , где Fx это клавиши от + F1 до + F6. Комбинации + Alt+ и Alt+ также переключают + консоль. +

+

+ На этом этапе вы можете войти в две разные виртуальные + консоли и запустить браузер links или lynx в одной консоли + и bash в другой. GPM позволяет копировать команды из + браузера с помощью левой кнопки мыши, переключать консоли и + вставлять их в другую консоль. +

+
+

+ Примечание +

+

+ Вместо примечания: переключение виртуальных консолей + также может быть выполнено из экземпляра X Window с + помощью комбинации клавиш Ctrl+Alt+Fx ,но операция + копирования мышью не работает между графическим + интерфейсом и виртуальной консолью. Вы можете вернуться к + дисплею X Window с помощью комбинации Ctrl+Alt+Fx ,где Fx обычно F1, но может быть + F7. +

+
+
+
+
+
+
+
+
+
+

+ Часть V. Приложения +

+
+
+
+
+
+
+
+

+ Приложение A. + Сокращения и условные обозначения +

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

+ ABI +

+
+

+ Application Binary Interface - Двоичный (бинарный) + интерфейс приложений +

+
+

+ ALFS +

+
+

+ Automated Linux From Scratch - Проект автоматической + сборки системы LFS +

+
+

+ API +

+
+

+ Application Programming Interface - Программный + интерфейс приложения +

+
+

+ ASCII +

+
+

+ American Standard Code for Information Interchange — + Американский стандартный код для обмена информацией +

+
+

+ BIOS +

+
+

+ Basic Input/Output System - Базовая система + ввода/вывода +

+
+

+ BLFS +

+
+

+ Beyond Linux From Scratch - Проект, расширяющий + возможности 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 - Коллекция компиляторов GNU +

+
+

+ 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 - Совместный проект семейства + операционных систем, основанных на Linux (то есть + дистрибутивов Linux), при организации Linux Foundation, + целью которого является стандартизация их внутренней + структуры. LSB опирается на существующие спецификации, + такие как POSIX, Single UNIX Specification, и другие + открытые стандарты, при этом расширяя и дополняя их. +

+
+

+ MB +

+
+

+ Megabytes - Мегабайты +

+
+

+ MBR +

+
+

+ Master Boot Record - Главная загрузочная запись +

+
+

+ MD5 +

+
+

+ Message Digest 5 - 128-битный алгоритм хеширования +

+
+

+ NIC +

+
+

+ Network Interface Card - Сетевой адаптер +

+
+

+ NLS +

+
+

+ Native Language Support - Поддержка естественного языка +

+
+

+ NNTP +

+
+

+ Network News Transport Protocol - Сетевой транспортный + протокол новостных групп +

+
+

+ NPTL +

+
+

+ Native POSIX Threading Library - Библиотека потоков + POSIX +

+
+

+ OSS +

+
+

+ Open Sound System - Унифицированный драйвер для + звуковых карт и других звуковых устройств +

+
+

+ PCH +

+
+

+ Pre-Compiled Headers - Предварительно скомпилированные + заголовки +

+
+

+ PCRE +

+
+

+ Perl Compatible Regular Expression - Регулярные + выражения, совместимые с Perl +

+
+

+ 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 - Проект документации + Linux +

+
+

+ 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 - Виртуальный терминал +

+
+
+
+
+
+
+

+ Приложение B. + Благодарности +

+
+
+
+
+

+ Мы хотели бы поблагодарить следующих людей и организации за их + вклад в проект Linux From Scratch. +

+
+
    +
  • +

    + Gerard Beekmans + <gerard AT linuxfromscratch D0T org> – Основатель проекта + LFS +

    +
  • +
  • +

    + Bruce Dubbs + <bdubbs AT linuxfromscratch D0T org> – Главный редактор LFS +

    +
  • +
  • +

    + Jim + Gifford <jim AT linuxfromscratch D0T org> – Второй + руководитель проекта CLFS +

    +
  • +
  • +

    + Pierre Labastie + <pierre AT linuxfromscratch D0T org> – Редактор BLFS и + руководитель ALFS +

    +
  • +
  • +

    + DJ + Lucas <dj AT linuxfromscratch D0T org> – Редактор + проектов LFS и BLFS +

    +
  • +
  • +

    + Ken + Moffat <ken AT linuxfromscratch D0T org> – Редактор BLFS +

    +
  • +
  • +

    + Бесчисленное множество других людей из различных списков + рассылки проектов LFS и BLFS, которые помогали в создании + этой книги, присылая свои предложения, проверяя книгу и + отправляя отчеты об ошибках, инструкции и собственный опыт + установки различных пакетов. +

    +
  • +
+
+

+ Переводчики +

+
+
    +
  • +

    + Manuel + Canales Esparcia <macana AT macana-es D0T com> – Перевод + проекта LFS на испанский язык +

    +
  • +
  • +

    + Johan Lenglet + <johan AT linuxfromscratch D0T org> – Перевод проекта LFS на + французский язык до 2008 г. +

    +
  • +
  • +

    + Jean-Philippe + Mengual <jmengual AT linuxfromscratch D0T org> – Перевод + проекта LFS на французский язык 2008-2016 гг +

    +
  • +
  • +

    + Julien Lepiller + <jlepiller AT linuxfromscratch D0T org> – Перевод проекта + LFS на французский язык с 2017-по настоящее время +

    +
  • +
  • +

    + Anderson Lizardo + <lizardo AT linuxfromscratch D0T org> – Перевод проекта LFS + на португальский язык до 2022 г. +

    +
  • +
  • +

    + Jamenson + Espindula <jafesp AT gmail D0T com> – Перевод проекта + LFS на португальский язык 2022-по настоящее время +

    +
  • +
  • +

    + Thomas + Reitelbach <tr AT erdfunkstelle D0T de> – Перевод + проекта LFS на немецкий язык +

    +
  • +
  • +

    + Anton Maisak + <info AT linuxfromscratch D0T ru> – Перевод проекта LFS на + русский язык 2018-2020 гг +

    +
  • +
  • +

    + Elena Shevcova + <info AT linuxfromscratch D0T ru> – Перевод проекта LFS на + русский язык 2018-2020 гг +

    +
  • +
  • +

    + Vladimir Pertsev + <info AT linuxfromscratch D0T ru> – Перевод проекта LFS на + русский язык 2022-по настоящее время +

    +
  • +
+
+

+ Зеркала проекта +

+

+ Североамериканские зеркала +

+
+
    +
  • +

    + Scott + Kveton <scott AT osuosl D0T org> – зеркало + lfs.oregonstate.edu +

    +
  • +
  • +

    + William + Astle <lost AT l-w D0T net> – зеркало + ca.linuxfromscratch.org +

    +
  • +
  • +

    + Eujon Sellers + <jpolen@rackspace.com> – зеркало lfs.introspeed.com +

    +
  • +
  • +

    + Justin + Knierim <tim@idge.net> – зеркало lfs-matrix.net +

    +
  • +
+
+

+ Южноамериканские зеркала +

+
+
    +
  • +

    + Manuel Canales + Esparcia <manuel AT linuxfromscratch D0T org> – зеркало + lfsmirror.lfs-es.info +

    +
  • +
  • +

    + Luis + Falcon <Luis Falcon> – зеркало torredehanoi.org +

    +
  • +
+
+

+ Европейские зеркала +

+
+
    +
  • +

    + Guido + Passet <guido AT primerelay D0T net> – зеркало + nl.linuxfromscratch.org +

    +
  • +
  • +

    + Bastiaan + Jacques <baafie AT planet D0T nl> – зеркало + lfs.pagefault.net +

    +
  • +
  • +

    + Sven + Cranshoff <sven D0T cranshoff AT lineo D0T be> – зеркало + lfs.lineo.be +

    +
  • +
  • +

    + Scarlet Belgium – зеркало lfs.scarlet.be +

    +
  • +
  • +

    + Sebastian + Faulborn <info AT aliensoft D0T org> – зеркало + lfs.aliensoft.org +

    +
  • +
  • +

    + Stuart + Fox <stuart AT dontuse D0T ms> – зеркало lfs.dontuse.ms +

    +
  • +
  • +

    + Ralf + Uhlemann <admin AT realhost D0T de> – зеркало + lfs.oss-mirror.org +

    +
  • +
  • +

    + Antonin Sprinzl + <Antonin D0T Sprinzl AT tuwien D0T ac D0T at> – зеркало + at.linuxfromscratch.org +

    +
  • +
  • +

    + Fredrik Danerklint + <fredan-lfs AT fredan D0T org> – зеркало + se.linuxfromscratch.org +

    +
  • +
  • +

    + Franck + <franck AT linuxpourtous D0T com> – зеркало + lfs.linuxpourtous.com +

    +
  • +
  • +

    + Philippe + Baque <baque AT cict D0T fr> – зеркало lfs.cict.fr +

    +
  • +
  • +

    + Benjamin + Heil <kontakt AT wankoo D0T org> – зеркало + lfs.wankoo.org +

    +
  • +
  • +

    + Vladimir Pertsev + <info AT linuxfromscratch D0T ru> – зеркало + mirror.linuxfromscratch.ru +

    +
  • +
+
+

+ Азиатские зеркала +

+
+
    +
  • +

    + Satit + Phermsawang <satit AT wbac D0T ac D0T th> – зеркало + lfs.phayoune.org +

    +
  • +
  • +

    + Shizunet + Co.,Ltd. <info AT shizu-net D0T jp> – зеркало + lfs.mirror.shizu-net.jp +

    +
  • +
+
+

+ Австралийские зеркала +

+
+
    +
  • +

    + Jason + Andrade <jason AT dstc D0T edu D0T au> – зеркало + au.linuxfromscratch.org +

    +
  • +
+
+

+ Бывшие участники проекта +

+
+
    +
  • +

    + Christine + Barczak <theladyskye AT linuxfromscratch D0T org> – + Редактор книги LFS +

    +
  • +
  • +

    + Archaic <archaic@linuxfromscratch.org> – Технический + писатель/редактор LFS, руководитель проекта HLFS, редактор + BLFS, Сопровождающий проекта Советы и патчи +

    +
  • +
  • +

    + Matthew Burgess + <matthew AT linuxfromscratch D0T org> – Руководитель проекта + LFS, технический писатель/редактор LFS +

    +
  • +
  • +

    + Nathan Coulson + <nathan AT linuxfromscratch D0T org> – Сопровождающий + LFS-Bootscripts +

    +
  • +
  • +

    + Timothy Bauscher +

    +
  • +
  • +

    + Robert Briggs +

    +
  • +
  • +

    + Ian Chilton +

    +
  • +
  • +

    + Jeroen Coumans + <jeroen AT linuxfromscratch D0T org> – Разработчик + веб-сайта, сопровождающий FAQ +

    +
  • +
  • +

    + Manuel Canales + Esparcia <manuel AT linuxfromscratch D0T org> – + Сопровождающий XML и XSL проектов LFS/BLFS/HLFS +

    +
  • +
  • +

    + Alex Groenewoud – Технический писатель LFS +

    +
  • +
  • +

    + Marc Heerdink +

    +
  • +
  • +

    + Jeremy Huntwork + <jhuntwork AT linuxfromscratch D0T org> – Технический + писатель LFS, сопровождающий LFS LiveCD +

    +
  • +
  • +

    + Bryan Kadzban + <bryan AT linuxfromscratch D0T org> – Технический писатель + LFS +

    +
  • +
  • +

    + Mark Hymers +

    +
  • +
  • +

    + Seth W. Klein – Сопровождающий FAQ +

    +
  • +
  • +

    + Nicholas Leippe + <nicholas AT linuxfromscratch D0T org> – Сопровождающий Wiki +

    +
  • +
  • +

    + Anderson Lizardo + <lizardo AT linuxfromscratch D0T org> – Сопровождающий + движка сайта +

    +
  • +
  • +

    + Randy McMurchy + <randy AT linuxfromscratch D0T org> – Руководитель проекта + BLFS, редактор LFS +

    +
  • +
  • +

    + Dan Nicholson + <dnicholson AT linuxfromscratch D0T org> – Редактор LFS и + BLFS +

    +
  • +
  • +

    + Alexander E. + Patrakov <alexander AT linuxfromscratch D0T org> – + Технический писатель LFS, редактор интернационализации LFS, + сопровождающий LFS Live CD +

    +
  • +
  • +

    + Simon Perreault +

    +
  • +
  • +

    + Scot Mc Pherson + <scot AT linuxfromscratch D0T org> – Сопровождающий шлюза + NNTP для проекта LFS +

    +
  • +
  • +

    + Douglas R. Reno + <renodr AT linuxfromscratch D0T org> – Редактор Systemd +

    +
  • +
  • +

    + Ryan Oliver + <ryan AT linuxfromscratch D0T org> – Один из руководителей + проекта CLFS +

    +
  • +
  • +

    + Greg + Schafer <gschafer AT zip D0T com D0T au> – Технический + писатель проекта LFS и архитектор методов сборки пакетов + следующего поколения, предназначенных для 64-битной + архитектуры +

    +
  • +
  • +

    + Jesse Tie-Ten-Quee – Технический писатель LFS +

    +
  • +
  • +

    + James Robertson + <jwrober AT linuxfromscratch D0T org> – Сопровождающий + Bugzilla +

    +
  • +
  • +

    + Tushar Teredesai + <tushar AT linuxfromscratch D0T org> – Редактор книги BLFS, + руководитель проекта Советы и Патчи +

    +
  • +
  • +

    + Jeremy Utley + <jeremy AT linuxfromscratch D0T org> – Технический писатель + проекта LFS, сопровождающий Bugzilla, сопровождающий + LFS-Bootscripts +

    +
  • +
  • +

    + Zack + Winkles <zwinkles AT gmail D0T com> – Технический + писатель проекта LFS +

    +
  • +
+
+
+
+
+
+

+ Приложение C. + Зависимости +

+
+
+
+
+

+ Каждый пакет в системе LFS для правильной сборки и установки + может ссылаться на один или несколько других пакетов. Некоторые + пакеты могут иметь циклические зависимости, то есть первый пакет + зависит от второго, который в свою очередь, зависит от первого. + Именно по этой причине, указанный порядок сборки пакетов в LFS + очень важен. Цель этой страницы - документировать зависимости + каждого пакета, собранного в LFS +

+

+ Для каждого собираемого пакета существует от трёх до пяти типов + зависимостей, перечисленных ниже. В первом списке перечислены + другие пакеты, которые должны быть доступны для компиляции и + установки рассматриваемого пакета. Во втором перечислены пакеты, + которые должны быть доступны, когда какие-либо программы или + библиотеки из пакета используются во время его выполнения. В + третьем списке перечислены пакеты, которые, в дополнение к + пакетам из первого списка, должны быть доступны для запуска + наборов тестов. Четвертый список зависимостей — это пакеты, + которые требуют, чтобы некий пакет был собран и установлен по + определенному пути, прежде чем они будут собраны и установлены. +

+

+ Последний список зависимостей - это необязательные пакеты, + которые не рассматриваются в LFS, но могут быть полезны + пользователю. Эти пакеты могут иметь дополнительные как + обязательные, так и необязательные зависимости. Такие зависимости + - рекомендуется разрешать после завершения сборки всей системы + LFS. В некоторых случаях, повторная установка некоторых таких + пакетов рассматривается в BLFS. +

+

+ Acl +

+
+ +
+
+ Установка зависит от: + Attr, Bash, Binutils, Coreutils, GCC, + Gettext, Grep, M4, Make, Perl, Sed и Texinfo +
+
+
+
+ +
+
+ Требуется во время + выполнения: Attr и + Glibc +
+
+
+
+ +
+
+ Набор тестов зависит от: + Automake, Diffutils, Findutils и + Libtool +
+
+
+
+ +
+
+ Должен быть установлен до: + Coreutils, Sed, Tar и Vim +
+
+
+
+ +
+
+ Необязательные зависимости: + Нет +
+
+
+

+ Attr +

+
+ +
+
+ Установка зависит от: + Bash, Binutils, Coreutils, GCC, + Gettext, Glibc, Grep, M4, Make, Perl, Sed и Texinfo +
+
+
+
+ +
+
+ Требуется во время + выполнения: Glibc +
+
+
+
+ +
+
+ Набор тестов зависит от: + Automake, Diffutils, Findutils и + Libtool +
+
+
+
+ +
+
+ Должен быть установлен до: + Acl, Libcap и Patch +
+
+
+
+ +
+
+ Необязательные зависимости: + Нет +
+
+
+

+ Autoconf +

+
+ +
+
+ Установка зависит от: + Bash, Coreutils, Grep, M4, Make, Perl, + Sed и Texinfo +
+
+
+
+ +
+
+ Требуется во время + выполнения: Bash, Coreutils, + Grep, M4, Make, Sed и Texinfo +
+
+
+
+ +
+
+ Набор тестов зависит от: + Automake, Diffutils, Findutils, GCC и + Libtool +
+
+
+
+ +
+
+ Должен быть установлен до: + Automake и Coreutils +
+
+
+
+ +
+
+ Необязательные зависимости: + + Emacs +
+
+
+

+ Automake +

+
+ +
+
+ Установка зависит от: + Autoconf, Bash, Coreutils, Gettext, + Grep, M4, Make, Perl, Sed, и Texinfo +
+
+
+
+ +
+
+ Требуется во время + выполнения: Bash, Coreutils, + Grep, M4, Sed и Texinfo +
+
+
+
+ +
+
+ Набор тестов зависит от: + Binutils, Bison, Bzip2, DejaGNU, + Diffutils, Expect, Findutils, Flex, GCC, Gettext, Gzip, + Libtool и Tar +
+
+
+
+ +
+
+ Должен быть установлен до: + Coreutils +
+
+
+
+ +
+
+ Необязательные зависимости: + Нет +
+
+
+

+ Bash +

+
+ +
+
+ Установка зависит от: + Bash, Binutils, Bison, Coreutils, + Diffutils, Gawk, GCC, Glibc, Grep, Make, Ncurses, Patch, + Readline, Sed и Texinfo +
+
+
+
+ +
+
+ Требуется во время + выполнения: Glibc, Ncurses и + Readline +
+
+
+
+ +
+
+ Набор тестов зависит от: + Expect и Shadow +
+
+
+
+ +
+
+ Должен быть установлен до: + Нет +
+
+
+
+ +
+
+ Необязательные зависимости: + + Xorg +
+
+
+

+ Bc +

+
+ +
+
+ Установка зависит от: + Bash, Binutils, Coreutils, GCC, Glibc, + Grep, Make и Readline +
+
+
+
+ +
+
+ Требуется во время + выполнения: Glibc, Ncurses и + Readline +
+
+
+
+ +
+
+ Набор тестов зависит от: + Gawk +
+
+
+
+ +
+
+ Должен быть установлен до: + Linux +
+
+
+
+ +
+
+ Необязательные зависимости: + Нет +
+
+
+

+ Binutils +

+
+ +
+
+ Установка зависит от: + Bash, Binutils, Coreutils, Diffutils, + File, Flex, Gawk, GCC, Glibc, Grep, Make, Perl, Pkgconf, Sed, + Texinfo, Zlib и Zstd +
+
+
+
+ +
+
+ Требуется во время + выполнения: Glibc, Zlib и + Zstd +
+
+
+
+ +
+
+ Набор тестов зависит от: + DejaGNU и Expect +
+
+
+
+ +
+
+ Должен быть установлен до: + Нет +
+
+
+
+ +
+
+ Необязательные зависимости: + Elfutils и + Jansson +
+
+
+

+ Bison +

+
+ +
+
+ Установка зависит от: + Bash, Binutils, Coreutils, GCC, + Gettext, Glibc, Grep, M4, Make, Perl и Sed +
+
+
+
+ +
+
+ Требуется во время + выполнения: Glibc +
+
+
+
+ +
+
+ Набор тестов зависит от: + Diffutils, Findutils и Flex +
+
+
+
+ +
+
+ Должен быть установлен до: + Kbd и Tar +
+
+
+
+ +
+
+ Необязательные зависимости: + + Doxygen +
+
+
+

+ Bzip2 +

+
+ +
+
+ Установка зависит от: + Bash, Binutils, Coreutils, Diffutils, + GCC, Glibc, Make и Patch +
+
+
+
+ +
+
+ Требуется во время + выполнения: Glibc +
+
+
+
+ +
+
+ Набор тестов зависит от: + Нет +
+
+
+
+ +
+
+ Должен быть установлен до: + File и Libelf +
+
+
+
+ +
+
+ Необязательные зависимости: + Нет +
+
+
+

+ Check +

+
+ +
+
+ Установка зависит от: + Gawk, GCC, Grep, Make, Sed и + Texinfo +
+
+
+
+ +
+
+ Требуется во время + выполнения: Bash и Gawk +
+
+
+
+ +
+
+ Набор тестов зависит от: + Нет +
+
+
+
+ +
+
+ Должен быть установлен до: + Нет +
+
+
+
+ +
+
+ Необязательные зависимости: + libsubunit и + patchutils +
+
+
+

+ Coreutils +

+
+ +
+
+ Установка зависит от: + Autoconf, Automake, Bash, Binutils, + Coreutils, GCC, Gettext, Glibc, GMP, Grep, Libcap, Make, + OpenSSL, Patch, Perl, Sed и Texinfo +
+
+
+
+ +
+
+ Требуется во время + выполнения: Glibc +
+
+
+
+ +
+
+ Набор тестов зависит от: + Diffutils, E2fsprogs, Findutils, Shadow + и Util-linux +
+
+
+
+ +
+
+ Должен быть установлен до: + Bash, Diffutils, Findutils, Man-DB и + Udev +
+
+
+
+ +
+
+ Необязательные зависимости: + Expect.pm и IO::Tty +
+
+
+

+ DejaGNU +

+
+ +
+
+ Установка зависит от: + Bash, Coreutils, Diffutils, Expect, + GCC, Grep, Make, Sed и Texinfo +
+
+
+
+ +
+
+ Требуется во время + выполнения: Expect и + Bash +
+
+
+
+ +
+
+ Набор тестов зависит от: + Нет +
+
+
+
+ +
+
+ Должен быть установлен до: + Нет +
+
+
+
+ +
+
+ Необязательные зависимости: + Нет +
+
+
+

+ Diffutils +

+
+ +
+
+ Установка зависит от: + Bash, Binutils, Coreutils, Gawk, GCC, + Gettext, Glibc, Grep, Make, Sed и Texinfo +
+
+
+
+ +
+
+ Требуется во время + выполнения: Glibc +
+
+
+
+ +
+
+ Набор тестов зависит от: + Perl +
+
+
+
+ +
+
+ Должен быть установлен до: + Нет +
+
+
+
+ +
+
+ Необязательные зависимости: + Нет +
+
+
+

+ E2fsprogs +

+
+ +
+
+ Установка зависит от: + Bash, Binutils, Coreutils, Diffutils, + Gawk, GCC, Glibc, Grep, Gzip, Make, Pkgconf, Sed, Texinfo и + Util-linux +
+
+
+
+ +
+
+ Требуется во время + выполнения: Glibc и + Util-linux +
+
+
+
+ +
+
+ Набор тестов зависит от: + Procps-ng и Psmisc +
+
+
+
+ +
+
+ Должен быть установлен до: + Нет +
+
+
+
+ +
+
+ Необязательные зависимости: + Нет +
+
+
+

+ Expat +

+
+ +
+
+ Установка зависит от: + Bash, Binutils, Coreutils, Gawk, GCC, + Glibc, Grep, Make и Sed +
+
+
+
+ +
+
+ Требуется во время + выполнения: Glibc +
+
+
+
+ +
+
+ Набор тестов зависит от: + Нет +
+
+
+
+ +
+
+ Должен быть установлен до: + Python и XML::Parser +
+
+
+
+ +
+
+ Необязательные зависимости: + Нет +
+
+
+

+ Expect +

+
+ +
+
+ Установка зависит от: + Bash, Binutils, Coreutils, Diffutils, + GCC, Glibc, Grep, Make, Patch, Sed и Tcl +
+
+
+
+ +
+
+ Требуется во время + выполнения: Glibc и Tcl +
+
+
+
+ +
+
+ Набор тестов зависит от: + Нет +
+
+
+
+ +
+
+ Должен быть установлен до: + Нет +
+
+
+
+ +
+
+ Необязательные зависимости: + + Tk +
+
+
+

+ File +

+
+ +
+
+ Установка зависит от: + Bash, Binutils, Bzip2, Coreutils, + Diffutils, Gawk, GCC, Glibc, Grep, Make, Sed, Xz и + Zlib +
+
+
+
+ +
+
+ Требуется во время + выполнения: Glibc, Bzip2, Xz и + Zlib +
+
+
+
+ +
+
+ Набор тестов зависит от: + Нет +
+
+
+
+ +
+
+ Должен быть установлен до: + Нет +
+
+
+
+ +
+
+ Необязательные зависимости: + + libseccomp +
+
+
+

+ Findutils +

+
+ +
+
+ Установка зависит от: + Bash, Binutils, Coreutils, GCC, + Gettext, Glibc, Grep, Make, Sed, и Texinfo +
+
+
+
+ +
+
+ Требуется во время + выполнения: Bash и + Glibc +
+
+
+
+ +
+
+ Набор тестов зависит от: + DejaGNU, Diffutils и Expect +
+
+
+
+ +
+
+ Должен быть установлен до: + Нет +
+
+
+
+ +
+
+ Необязательные зависимости: + Нет +
+
+
+

+ Flex +

+
+ +
+
+ Установка зависит от: + Bash, Binutils, Coreutils, GCC, + Gettext, Glibc, Grep, M4, Make, Patch, Sed и Texinfo +
+
+
+
+ +
+
+ Требуется во время + выполнения: Bash, Glibc и + M4 +
+
+
+
+ +
+
+ Набор тестов зависит от: + Bison и Gawk +
+
+
+
+ +
+
+ Должен быть установлен до: + Binutils, IProute2, Kbd, Kmod и + Man-DB +
+
+
+
+ +
+
+ Необязательные зависимости: + Нет +
+
+
+

+ Flit-Core +

+
+ +
+
+ Установка зависит от: + Python +
+
+
+
+ +
+
+ Требуется во время + выполнения: Python +
+
+
+
+ +
+
+ Набор тестов зависит от: + Набор тестов недоступен +
+
+
+
+ +
+
+ Должен быть установлен до: + Wheel +
+
+
+
+ +
+
+ Необязательные зависимости: + + pytest и testpath +
+
+
+

+ Gawk +

+
+ +
+
+ Установка зависит от: + Bash, Binutils, Coreutils, GCC, + Gettext, Glibc, GMP, Grep, Make, MPFR, Patch, Readline, Sed и + Texinfo +
+
+
+
+ +
+
+ Требуется во время + выполнения: Bash, Glibc и + Mpfr +
+
+
+
+ +
+
+ Набор тестов зависит от: + Diffutils +
+
+
+
+ +
+
+ Должен быть установлен до: + Нет +
+
+
+
+ +
+
+ Необязательные зависимости: + + libsigsegv +
+
+
+

+ GCC +

+
+ +
+
+ Установка зависит от: + Bash, Binutils, Coreutils, Diffutils, + Findutils, Gawk, GCC, Gettext, Glibc, GMP, Grep, Libxcrypt, + M4, Make, MPC, MPFR, Patch, Perl, Sed, Tar, Texinfo и + Zstd +
+
+
+
+ +
+
+ Требуется во время + выполнения: Bash, Binutils, + Glibc, Mpc и Python +
+
+
+
+ +
+
+ Набор тестов зависит от: + DejaGNU, Expect и Shadow +
+
+
+
+ +
+
+ Должен быть установлен до: + Нет +
+
+
+
+ +
+
+ Необязательные зависимости: + GDC, GNAT, и ISL +
+
+
+

+ GDBM +

+
+ +
+
+ Установка зависит от: + Bash, Binutils, Coreutils, Diffutils, + GCC, Grep, Make и Sed +
+
+
+
+ +
+
+ Требуется во время + выполнения: Bash, Glibc и + Readline +
+
+
+
+ +
+
+ Набор тестов зависит от: + Нет +
+
+
+
+ +
+
+ Должен быть установлен до: + Нет +
+
+
+
+ +
+
+ Необязательные зависимости: + Нет +
+
+
+

+ Gettext +

+
+ +
+
+ Установка зависит от: + Bash, Binutils, Coreutils, Gawk, GCC, + Glibc, Grep, Make, Ncurses, Sed и Texinfo +
+
+
+
+ +
+
+ Требуется во время + выполнения: Acl, Bash, Gcc и + Glibc +
+
+
+
+ +
+
+ Набор тестов зависит от: + Diffutils, Perl и Tcl +
+
+
+
+ +
+
+ Должен быть установлен до: + Automake и Bison +
+
+
+
+ +
+
+ Необязательные зависимости: + + libunistring и + libxml2 +
+
+
+

+ Glibc +

+
+ +
+
+ Установка зависит от: + Bash, Binutils, Bison, Coreutils, + Diffutils, Gawk, GCC, Gettext, Grep, Gzip, Linux API Headers, + Make, Perl, Python, Sed и Texinfo +
+
+
+
+ +
+
+ Требуется во время + выполнения: Нет +
+
+
+
+ +
+
+ Набор тестов зависит от: + File +
+
+
+
+ +
+
+ Должен быть установлен до: + Нет +
+
+
+
+ +
+
+ Необязательные зависимости: + Нет +
+
+
+

+ GMP +

+
+ +
+
+ Установка зависит от: + Bash, Binutils, Coreutils, Diffutils, + Gawk, GCC, Glibc, Grep, M4, Make, Sed и Texinfo +
+
+
+
+ +
+
+ Требуется во время + выполнения: GCC и Glibc +
+
+
+
+ +
+
+ Набор тестов зависит от: + Нет +
+
+
+
+ +
+
+ Должен быть установлен до: + MPFR и GCC +
+
+
+
+ +
+
+ Необязательные зависимости: + Нет +
+
+
+

+ Gperf +

+
+ +
+
+ Установка зависит от: + Bash, Binutils, Coreutils, GCC, Glibc и + Make +
+
+
+
+ +
+
+ Требуется во время + выполнения: GCC и Glibc +
+
+
+
+ +
+
+ Набор тестов зависит от: + Diffutils и Expect +
+
+
+
+ +
+
+ Должен быть установлен до: + Нет +
+
+
+
+ +
+
+ Необязательные зависимости: + Нет +
+
+
+

+ Grep +

+
+ +
+
+ Установка зависит от: + Bash, Binutils, Coreutils, Diffutils, + GCC, Gettext, Glibc, Grep, Make, Patch, Sed и Texinfo +
+
+
+
+ +
+
+ Требуется во время + выполнения: Glibc +
+
+
+
+ +
+
+ Набор тестов зависит от: + Gawk +
+
+
+
+ +
+
+ Должен быть установлен до: + Man-DB +
+
+
+
+ +
+
+ Необязательные зависимости: + + PCRE2 и + libsigsegv +
+
+
+

+ Groff +

+
+ +
+
+ Установка зависит от: + Bash, Binutils, Bison, Coreutils, Gawk, + GCC, Glibc, Grep, Make, Patch, Sed и Texinfo +
+
+
+
+ +
+
+ Требуется во время + выполнения: GCC, Glibc и + Perl +
+
+
+
+ +
+
+ Набор тестов зависит от: + Набор тестов недоступен +
+
+
+
+ +
+
+ Должен быть установлен до: + Man-DB +
+
+
+
+ +
+
+ Необязательные зависимости: + + ghostscript и + Uchardet +
+
+
+

+ GRUB +

+
+ +
+
+ Установка зависит от: + Bash, Binutils, Bison, Coreutils, + Diffutils, GCC, Gettext, Glibc, Grep, Make, Ncurses, Sed, + Texinfo и Xz +
+
+
+
+ +
+
+ Требуется во время + выполнения: Bash, GCC, + Gettext, Glibc, Xz и Sed. +
+
+
+
+ +
+
+ Набор тестов зависит от: + Нет +
+
+
+
+ +
+
+ Должен быть установлен до: + Нет +
+
+
+
+ +
+
+ Необязательные зависимости: + Нет +
+
+
+

+ Gzip +

+
+ +
+
+ Установка зависит от: + Bash, Binutils, Coreutils, GCC, Glibc, + Grep, Make, Sed и Texinfo +
+
+
+
+ +
+
+ Требуется во время + выполнения: Bash и + Glibc +
+
+
+
+ +
+
+ Набор тестов зависит от: + Diffutils и Less +
+
+
+
+ +
+
+ Должен быть установлен до: + Man-DB +
+
+
+
+ +
+
+ Необязательные зависимости: + Нет +
+
+
+

+ Iana-Etc +

+
+ +
+
+ Установка зависит от: + Coreutils +
+
+
+
+ +
+
+ Требуется во время + выполнения: Нет +
+
+
+
+ +
+
+ Набор тестов зависит от: + Набор тестов недоступен +
+
+
+
+ +
+
+ Должен быть установлен до: + Perl +
+
+
+
+ +
+
+ Необязательные зависимости: + Нет +
+
+
+

+ Inetutils +

+
+ +
+
+ Установка зависит от: + Bash, Binutils, Coreutils, GCC, Glibc, + Grep, Make, Ncurses, Patch, Sed, Texinfo и Zlib +
+
+
+
+ +
+
+ Требуется во время + выполнения: GCC, Glibc, + Ncurses и Readline +
+
+
+
+ +
+
+ Набор тестов зависит от: + Нет +
+
+
+
+ +
+
+ Должен быть установлен до: + Tar +
+
+
+
+ +
+
+ Необязательные зависимости: + Нет +
+
+
+

+ Intltool +

+
+ +
+
+ Установка зависит от: + Bash, Gawk, Glibc, Make, Perl, Sed и + XML::Parser +
+
+
+
+ +
+
+ Требуется во время + выполнения: Autoconf, + Automake, Bash, Glibc, Grep, Perl и Sed +
+
+
+
+ +
+
+ Набор тестов зависит от: + Perl +
+
+
+
+ +
+
+ Должен быть установлен до: + Нет +
+
+
+
+ +
+
+ Необязательные зависимости: + Нет +
+
+
+

+ IProute2 +

+
+ +
+
+ Установка зависит от: + Bash, Bison, Coreutils, Flex, GCC, + Glibc, Make, Libcap, Libelf, Linux API Headers и Zlib +
+
+
+
+ +
+
+ Требуется во время + выполнения: Bash, Coreutils, + Glibc, Libcap, Libelf и Zlib +
+
+
+
+ +
+
+ Набор тестов зависит от: + Набор тестов недоступен +
+
+
+
+ +
+
+ Должен быть установлен до: + Нет +
+
+
+
+ +
+
+ Необязательные зависимости: + + Berkeley DB, + iptables, libbpf, + libmnl и + libtirpc +
+
+
+

+ Jinja2 +

+
+ +
+
+ Установка зависит от: + MarkupSafe, Python, Setuptools и + Wheel +
+
+
+
+ +
+
+ Требуется во время + выполнения: MarkupSafe и + Python +
+
+
+
+ +
+
+ Набор тестов зависит от: + Набор тестов недоступен +
+
+
+
+ +
+
+ Должен быть установлен до: + Udev +
+
+
+
+ +
+
+ Необязательные зависимости: + Нет +
+
+
+

+ Kbd +

+
+ +
+
+ Установка зависит от: + Bash, Binutils, Bison, Check, + Coreutils, Flex, GCC, Gettext, Glibc, Gzip, Make, Patch и + Sed +
+
+
+
+ +
+
+ Требуется во время + выполнения: Bash, Coreutils и + Glibc +
+
+
+
+ +
+
+ Набор тестов зависит от: + Нет +
+
+
+
+ +
+
+ Должен быть установлен до: + Нет +
+
+
+
+ +
+
+ Необязательные зависимости: + + Linux-PAM +
+
+
+

+ Kmod +

+
+ +
+
+ Установка зависит от: + Bash, Binutils, Bison, Coreutils, Flex, + GCC, Gettext, Glibc, Gzip, Make, OpenSSL, Pkg-config, Sed, Xz + и Zlib +
+
+
+
+ +
+
+ Требуется во время + выполнения: Glibc, Xz и + Zlib +
+
+
+
+ +
+
+ Набор тестов зависит от: + Набор тестов недоступен +
+
+
+
+ +
+
+ Должен быть установлен до: + Udev +
+
+
+
+ +
+
+ Необязательные зависимости: + Нет +
+
+
+

+ Less +

+
+ +
+
+ Установка зависит от: + Bash, Binutils, Coreutils, Diffutils, + GCC, Glibc, Grep, Make, Ncurses и Sed +
+
+
+
+ +
+
+ Требуется во время + выполнения: Glibc и + Ncurses +
+
+
+
+ +
+
+ Набор тестов зависит от: + Набор тестов недоступен +
+
+
+
+ +
+
+ Должен быть установлен до: + Gzip +
+
+
+
+ +
+
+ Необязательные зависимости: + + PCRE2 или + PCRE +
+
+
+

+ Libcap +

+
+ +
+
+ Установка зависит от: + Attr, Bash, Binutils, Coreutils, GCC, + Glibc, Perl, Make и Sed +
+
+
+
+ +
+
+ Требуется во время + выполнения: Glibc +
+
+
+
+ +
+
+ Набор тестов зависит от: + Нет +
+
+
+
+ +
+
+ Должен быть установлен до: + IProute2 и Shadow +
+
+
+
+ +
+
+ Необязательные зависимости: + + Linux-PAM +
+
+
+

+ Libelf +

+
+ +
+
+ Установка зависит от: + Bash, Binutils, Bzip2, Coreutils, GCC, + Glibc, Make, Xz, Zlib и Zstd +
+
+
+
+ +
+
+ Требуется во время + выполнения: Bzip2, Glibc, Xz, + Zlib и Zstd +
+
+
+
+ +
+
+ Набор тестов зависит от: + Нет +
+
+
+
+ +
+
+ Должен быть установлен до: + IProute2 и Linux +
+
+
+
+ +
+
+ Необязательные зависимости: + Нет +
+
+
+

+ Libffi +

+
+ +
+
+ Установка зависит от: + Bash, Binutils, Coreutils, GCC, Glibc, + Make и Sed +
+
+
+
+ +
+
+ Требуется во время + выполнения: Glibc +
+
+
+
+ +
+
+ Набор тестов зависит от: + DejaGnu +
+
+
+
+ +
+
+ Должен быть установлен до: + Python +
+
+
+
+ +
+
+ Необязательные зависимости: + Нет +
+
+
+

+ Libpipeline +

+
+ +
+
+ Установка зависит от: + Bash, Binutils, Coreutils, Diffutils, + Gawk, GCC, Glibc, Grep, Make, Sed и Texinfo +
+
+
+
+ +
+
+ Требуется во время + выполнения: Glibc +
+
+
+
+ +
+
+ Набор тестов зависит от: + Check и Pkgconf +
+
+
+
+ +
+
+ Должен быть установлен до: + Man-DB +
+
+
+
+ +
+
+ Необязательные зависимости: + Нет +
+
+
+

+ Libtool +

+
+ +
+
+ Установка зависит от: + Bash, Binutils, Coreutils, Diffutils, + Gawk, GCC, Glibc, Grep, Make, Sed и Texinfo +
+
+
+
+ +
+
+ Требуется во время + выполнения: Autoconf, + Automake, Bash, Binutils, Coreutils, File, GCC, Glibc, Grep, + Make и Sed +
+
+
+
+ +
+
+ Набор тестов зависит от: + Autoconf, Automake и Findutils +
+
+
+
+ +
+
+ Должен быть установлен до: + Нет +
+
+
+
+ +
+
+ Необязательные зависимости: + Нет +
+
+
+

+ Libxcrypt +

+
+ +
+
+ Установка зависит от: + Bash, Binutils, Coreutils, Diffutils, + Gawk, GCC, Glibc, Grep, Make, Perl и Sed +
+
+
+
+ +
+
+ Требуется во время + выполнения: Glibc +
+
+
+
+ +
+
+ Набор тестов зависит от: + Нет +
+
+
+
+ +
+
+ Должен быть установлен до: + GCC, Perl, Python, Shadow и + Udev +
+
+
+
+ +
+
+ Необязательные зависимости: + Нет +
+
+
+

+ Linux +

+
+ +
+
+ Установка зависит от: + Bash, Bc, Binutils, Coreutils, + Diffutils, Findutils, GCC, Glibc, Grep, Gzip, Kmod, Libelf, + Make, Ncurses, OpenSSL, Perl и Sed +
+
+
+
+ +
+
+ Требуется во время + выполнения: Нет +
+
+
+
+ +
+
+ Набор тестов зависит от: + Набор тестов недоступен +
+
+
+
+ +
+
+ Должен быть установлен до: + Нет +
+
+
+
+ +
+
+ Необязательные зависимости: + + cpio и + LLVM (с Clang) +
+
+
+

+ Linux API Headers +

+
+ +
+
+ Установка зависит от: + Bash, Binutils, Coreutils, Findutils, + GCC, Glibc, Grep, Gzip, Make, Perl и Sed +
+
+
+
+ +
+
+ Требуется во время + выполнения: Нет +
+
+
+
+ +
+
+ Набор тестов зависит от: + Набор тестов недоступен +
+
+
+
+ +
+
+ Должен быть установлен до: + Нет +
+
+
+
+ +
+
+ Необязательные зависимости: + Нет +
+
+
+

+ M4 +

+
+ +
+
+ Установка зависит от: + Bash, Binutils, Coreutils, GCC, Glibc, + Grep, Make, Sed и Texinfo +
+
+
+
+ +
+
+ Требуется во время + выполнения: Bash и + Glibc +
+
+
+
+ +
+
+ Набор тестов зависит от: + Diffutils +
+
+
+
+ +
+
+ Должен быть установлен до: + Autoconf и Bison +
+
+
+
+ +
+
+ Необязательные зависимости: + + libsigsegv +
+
+
+

+ Make +

+
+ +
+
+ Установка зависит от: + Bash, Binutils, Coreutils, GCC, + Gettext, Glibc, Grep, Make, Sed, и Texinfo +
+
+
+
+ +
+
+ Требуется во время + выполнения: Glibc +
+
+
+
+ +
+
+ Набор тестов зависит от: + Perl и Procps-ng +
+
+
+
+ +
+
+ Должен быть установлен до: + Нет +
+
+
+
+ +
+
+ Необязательные зависимости: + + Guile +
+
+
+

+ Man-DB +

+
+ +
+
+ Установка зависит от: + Bash, Binutils, Bzip2, Coreutils, Flex, + GCC, GDBM, Gettext, Glibc, Grep, Groff, Gzip, Less, + Libpipeline, Make, Pkgconf, Sed, и Xz +
+
+
+
+ +
+
+ Требуется во время + выполнения: Bash, GDBM, Groff, + Glibc, Gzip, Less, Libpipeline и Zlib +
+
+
+
+ +
+
+ Набор тестов зависит от: + Util-linux +
+
+
+
+ +
+
+ Должен быть установлен до: + Нет +
+
+
+
+ +
+
+ Необязательные зависимости: + + libseccomp и po4a +
+
+
+

+ Man-Pages +

+
+ +
+
+ Установка зависит от: + Bash, Coreutils и Make +
+
+
+
+ +
+
+ Требуется во время + выполнения: Нет +
+
+
+
+ +
+
+ Набор тестов зависит от: + Набор тестов недоступен +
+
+
+
+ +
+
+ Должен быть установлен до: + Нет +
+
+
+
+ +
+
+ Необязательные зависимости: + Нет +
+
+
+

+ MarkupSafe +

+
+ +
+
+ Установка зависит от: + Python, Setuptools и Wheel +
+
+
+
+ +
+
+ Требуется во время + выполнения: Python +
+
+
+
+ +
+
+ Набор тестов зависит от: + Набор тестов недоступен +
+
+
+
+ +
+
+ Должен быть установлен до: + Jinja2 +
+
+
+
+ +
+
+ Необязательные зависимости: + Нет +
+
+
+

+ Meson +

+
+ +
+
+ Установка зависит от: + Ninja, Python, Setuptools и + Wheel +
+
+
+
+ +
+
+ Требуется во время + выполнения: Python +
+
+
+
+ +
+
+ Набор тестов зависит от: + Набор тестов недоступен +
+
+
+
+ +
+
+ Должен быть установлен до: + Udev +
+
+
+
+ +
+
+ Необязательные зависимости: + Нет +
+
+
+

+ MPC +

+
+ +
+
+ Установка зависит от: + Bash, Binutils, Coreutils, Diffutils, + Gawk, GCC, Glibc, Grep, GMP, Make, MPFR, Sed и Texinfo +
+
+
+
+ +
+
+ Требуется во время + выполнения: Glibc, GMP и + MPFR +
+
+
+
+ +
+
+ Набор тестов зависит от: + Нет +
+
+
+
+ +
+
+ Должен быть установлен до: + GCC +
+
+
+
+ +
+
+ Необязательные зависимости: + Нет +
+
+
+

+ MPFR +

+
+ +
+
+ Установка зависит от: + Bash, Binutils, Coreutils, Diffutils, + Gawk, GCC, Glibc, Grep, GMP, Make, Sed и Texinfo +
+
+
+
+ +
+
+ Требуется во время + выполнения: Glibc и GMP +
+
+
+
+ +
+
+ Набор тестов зависит от: + Нет +
+
+
+
+ +
+
+ Должен быть установлен до: + Gawk и GCC +
+
+
+
+ +
+
+ Необязательные зависимости: + Нет +
+
+
+

+ Ncurses +

+
+ +
+
+ Установка зависит от: + Bash, Binutils, Coreutils, Diffutils, + Gawk, GCC, Glibc, Grep, Make, Patch и Sed +
+
+
+
+ +
+
+ Требуется во время + выполнения: Glibc +
+
+
+
+ +
+
+ Набор тестов зависит от: + Набор тестов недоступен +
+
+
+
+ +
+
+ Должен быть установлен до: + Bash, GRUB, Inetutils, Less, Procps-ng, + Psmisc, Readline, Texinfo, Util-linux и Vim +
+
+
+
+ +
+
+ Необязательные зависимости: + Нет +
+
+
+

+ Ninja +

+
+ +
+
+ Установка зависит от: + Binutils, Coreutils, GCC и + Python +
+
+
+
+ +
+
+ Требуется во время + выполнения: GCC и Glibc +
+
+
+
+ +
+
+ Набор тестов зависит от: + Нет +
+
+
+
+ +
+
+ Должен быть установлен до: + Meson +
+
+
+
+ +
+
+ Необязательные зависимости: + + Asciidoc, + Doxygen, + Emacs и re2c +
+
+
+

+ OpenSSL +

+
+ +
+
+ Установка зависит от: + Binutils, Coreutils, GCC, Make и + Perl +
+
+
+
+ +
+
+ Требуется во время + выполнения: Glibc и + Perl +
+
+
+
+ +
+
+ Набор тестов зависит от: + Нет +
+
+
+
+ +
+
+ Должен быть установлен до: + Coreutils, Kmod, Linux и Udev +
+
+
+
+ +
+
+ Необязательные зависимости: + Нет +
+
+
+

+ Patch +

+
+ +
+
+ Установка зависит от: + Attr, Bash, Binutils, Coreutils, GCC, + Glibc, Grep, Make и Sed +
+
+
+
+ +
+
+ Требуется во время + выполнения: Attr и + Glibc +
+
+
+
+ +
+
+ Набор тестов зависит от: + Diffutils +
+
+
+
+ +
+
+ Должен быть установлен до: + Нет +
+
+
+
+ +
+
+ Необязательные зависимости: + + Ed +
+
+
+

+ Perl +

+
+ +
+
+ Установка зависит от: + Bash, Binutils, Coreutils, Gawk, GCC, + GDBM, Glibc, Grep, Libxcrypt, Make, Sed и Zlib +
+
+
+
+ +
+
+ Требуется во время + выполнения: GDBM, Glibc и + Libxcrypt +
+
+
+
+ +
+
+ Набор тестов зависит от: + Iana-Etc, Less и Procps-ng +
+
+
+
+ +
+
+ Должен быть установлен до: + Autoconf +
+
+
+
+ +
+
+ Необязательные зависимости: + + Berkeley DB +
+
+
+

+ Pkgconf +

+
+ +
+
+ Установка зависит от: + Bash, Binutils, Coreutils, Gawk, GCC, + Glibc, Grep, Make, и Sed +
+
+
+
+ +
+
+ Требуется во время + выполнения: Glibc +
+
+
+
+ +
+
+ Набор тестов зависит от: + Нет +
+
+
+
+ +
+
+ Должен быть установлен до: + Binutils, E2fsprogs, IProute2, Kmod, + Man-DB, Procps-ng, Python, Udev и + Util-linux +
+
+
+
+ +
+
+ Необязательные зависимости: + Нет +
+
+
+

+ Procps-ng +

+
+ +
+
+ Установка зависит от: + Bash, Binutils, Coreutils, GCC, Glibc, + Make, Ncurses, и Pkgconf +
+
+
+
+ +
+
+ Требуется во время + выполнения: Glibc +
+
+
+
+ +
+
+ Набор тестов зависит от: + DejaGNU +
+
+
+
+ +
+
+ Должен быть установлен до: + Нет +
+
+
+
+ +
+
+ Необязательные зависимости: + + elogind +
+
+
+

+ Psmisc +

+
+ +
+
+ Установка зависит от: + Bash, Binutils, Coreutils, GCC, + Gettext, Glibc, Grep, Make, Ncurses и Sed +
+
+
+
+ +
+
+ Требуется во время + выполнения: Glibc и + Ncurses +
+
+
+
+ +
+
+ Набор тестов зависит от: + Набор тестов недоступен +
+
+
+
+ +
+
+ Должен быть установлен до: + Нет +
+
+
+
+ +
+
+ Необязательные зависимости: + Нет +
+
+
+

+ Python +

+
+ +
+
+ Установка зависит от: + Bash, Binutils, Coreutils, Expat, GCC, + Gdbm, Gettext, Glibc, Grep, Libffi, Libxcrypt, Make, Ncurses, + OpenSSL, Pkgconf, Sed и Util-linux +
+
+
+
+ +
+
+ Требуется во время + выполнения: Bzip2, Expat, + Gdbm, Glibc, Libffi, Libxcrypt, Ncurses, OpenSSL и + Zlib +
+
+
+
+ +
+
+ Набор тестов зависит от: + GDB и Valgrind +
+
+
+
+ +
+
+ Должен быть установлен до: + Ninja +
+
+
+
+ +
+
+ Необязательные зависимости: + + Berkeley DB, + libnsl, + SQLite и + Tk +
+
+
+

+ Readline +

+
+ +
+
+ Установка зависит от: + Bash, Binutils, Coreutils, Gawk, GCC, + Glibc, Grep, Make, Ncurses, Patch, Sed и Texinfo +
+
+
+
+ +
+
+ Требуется во время + выполнения: Glibc и + Ncurses +
+
+
+
+ +
+
+ Набор тестов зависит от: + Набор тестов недоступен +
+
+
+
+ +
+
+ Должен быть установлен до: + Bash, Bc и Gawk +
+
+
+
+ +
+
+ Необязательные зависимости: + Нет +
+
+
+

+ Sed +

+
+ +
+
+ Установка зависит от: + Bash, Binutils, Coreutils, GCC, + Gettext, Glibc, Grep, Make, Sed, и Texinfo +
+
+
+
+ +
+
+ Требуется во время + выполнения: Acl, Attr и + Glibc +
+
+
+
+ +
+
+ Набор тестов зависит от: + Diffutils и Gawk +
+
+
+
+ +
+
+ Должен быть установлен до: + E2fsprogs, File, Libtool и + Shadow +
+
+
+
+ +
+
+ Необязательные зависимости: + Нет +
+
+
+

+ Setuptools +

+
+ +
+
+ Установка зависит от: + Python и Wheel +
+
+
+
+ +
+
+ Требуется во время + выполнения: Python +
+
+
+
+ +
+
+ Набор тестов зависит от: + Набор тестов недоступен +
+
+
+
+ +
+
+ Должен быть установлен до: + Jinja2, MarkupSafe и Meson +
+
+
+
+ +
+
+ Необязательные зависимости: + Нет +
+
+
+

+ Shadow +

+
+ +
+
+ Установка зависит от: + Acl, Attr, Bash, Binutils, Coreutils, + Diffutils, Findutils, Gawk, GCC, Gettext, Glibc, Grep, + Libcap, Libxcrypt, Make и Sed +
+
+
+
+ +
+
+ Требуется во время + выполнения: Glibc и + Libxcrypt +
+
+
+
+ +
+
+ Набор тестов зависит от: + Набор тестов недоступен +
+
+
+
+ +
+
+ Должен быть установлен до: + Coreutils +
+
+
+
+ +
+
+ Необязательные зависимости: + + CrackLib и + Linux-PAM +
+
+
+

+ Sysklogd +

+
+ +
+
+ Установка зависит от: + Binutils, Coreutils, GCC, Glibc, Make и + Patch +
+
+
+
+ +
+
+ Требуется во время + выполнения: Glibc +
+
+
+
+ +
+
+ Набор тестов зависит от: + Набор тестов недоступен +
+
+
+
+ +
+
+ Должен быть установлен до: + Нет +
+
+
+
+ +
+
+ Необязательные зависимости: + Нет +
+
+
+

+ Sysvinit +

+
+ +
+
+ Установка зависит от: + Binutils, Coreutils, GCC, Glibc, Make и + Sed +
+
+
+
+ +
+
+ Требуется во время + выполнения: Glibc +
+
+
+
+ +
+
+ Набор тестов зависит от: + Набор тестов недоступен +
+
+
+
+ +
+
+ Должен быть установлен до: + Нет +
+
+
+
+ +
+
+ Необязательные зависимости: + Нет +
+
+
+

+ Tar +

+
+ +
+
+ Установка зависит от: + Acl, Attr, Bash, Binutils, Bison, + Coreutils, GCC, Gettext, Glibc, Grep, Inetutils, Make, Sed и + Texinfo +
+
+
+
+ +
+
+ Требуется во время + выполнения: Acl, Attr, Bzip2, + Glibc, Gzip и Xz +
+
+
+
+ +
+
+ Набор тестов зависит от: + Autoconf, Diffutils, Findutils, Gawk и + Gzip +
+
+
+
+ +
+
+ Должен быть установлен до: + Нет +
+
+
+
+ +
+
+ Необязательные зависимости: + Нет +
+
+
+

+ Tcl +

+
+ +
+
+ Установка зависит от: + Bash, Binutils, Coreutils, Diffutils, + GCC, Glibc, Grep, Make и Sed +
+
+
+
+ +
+
+ Требуется во время + выполнения: Glibc и + Zlib +
+
+
+
+ +
+
+ Набор тестов зависит от: + Нет +
+
+
+
+ +
+
+ Должен быть установлен до: + Нет +
+
+
+
+ +
+
+ Необязательные зависимости: + Нет +
+
+
+

+ Texinfo +

+
+ +
+
+ Установка зависит от: + Bash, Binutils, Coreutils, GCC, + Gettext, Glibc, Grep, Make, Ncurses, Patch и Sed +
+
+
+
+ +
+
+ Требуется во время + выполнения: Glibc и + Ncurses +
+
+
+
+ +
+
+ Набор тестов зависит от: + Нет +
+
+
+
+ +
+
+ Должен быть установлен до: + Нет +
+
+
+
+ +
+
+ Необязательные зависимости: + Нет +
+
+
+

+ Udev +

+
+ +
+
+ Установка зависит от: + Acl, Bash, Binutils, Coreutils, + Diffutils, Gawk, GCC, Glibc, Gperf, Grep, Jinja2, Libcap, + Libxcrypt, Meson, OpenSSL, Pkgconf, Sed, Util-linux и + Zstd +
+
+
+
+ +
+
+ Требуется во время + выполнения: Acl, Glibc, + Libcap, OpenSSL и Util-linux +
+
+
+
+ +
+
+ Набор тестов зависит от: + Нет +
+
+
+
+ +
+
+ Должен быть установлен до: + Util-linux +
+
+
+
+ +
+
+ Необязательные зависимости: + Нет +
+
+
+

+ Util-linux +

+
+ +
+
+ Установка зависит от: + Bash, Binutils, Coreutils, Diffutils, + File, Findutils, Gawk, GCC, Gettext, Glibc, Grep, Make, + Ncurses, Pkgconf, Sed, Udev и + Zlib +
+
+
+
+ +
+
+ Требуется во время + выполнения: Glibc, Ncurses, + Readline, Udev и Zlib +
+
+
+
+ +
+
+ Набор тестов зависит от: + Нет +
+
+
+
+ +
+
+ Должен быть установлен до: + Нет +
+
+
+
+ +
+
+ Необязательные зависимости: + + Asciidoctor, Libcap-NG, + libeconf, + libuser, libutempter, + + Linux-PAM, + smartmontools, po4a и + slang +
+
+
+

+ Vim +

+
+ +
+
+ Установка зависит от: + Acl, Attr, Bash, Binutils, Coreutils, + Diffutils, GCC, Glibc, Grep, Make, Ncurses и Sed +
+
+
+
+ +
+
+ Требуется во время + выполнения: Acl, Attr, Glibc, + Python, Ncurses и Tcl +
+
+
+
+ +
+
+ Набор тестов зависит от: + Нет +
+
+
+
+ +
+
+ Должен быть установлен до: + Нет +
+
+
+
+ +
+
+ Необязательные зависимости: + + Xorg, + GTK+2, LessTif, + Ruby и + GPM +
+
+
+

+ Wheel +

+
+ +
+
+ Установка зависит от: + Python и Flit-core +
+
+
+
+ +
+
+ Требуется во время + выполнения: Python +
+
+
+
+ +
+
+ Набор тестов зависит от: + Набор тестов недоступен +
+
+
+
+ +
+
+ Должен быть установлен до: + Jinja2, MarkupSafe, Meson и + Setuptools +
+
+
+
+ +
+
+ Необязательные зависимости: + Нет +
+
+
+

+ XML::Parser +

+
+ +
+
+ Установка зависит от: + Bash, Binutils, Coreutils, Expat, GCC, + Glibc, Make и Perl +
+
+
+
+ +
+
+ Требуется во время + выполнения: Expat, Glibc и + Perl +
+
+
+
+ +
+
+ Набор тестов зависит от: + Perl +
+
+
+
+ +
+
+ Должен быть установлен до: + Intltool +
+
+
+
+ +
+
+ Необязательные зависимости: + Нет +
+
+
+

+ Xz +

+
+ +
+
+ Установка зависит от: + Bash, Binutils, Coreutils, Diffutils, + GCC, Glibc и Make +
+
+
+
+ +
+
+ Требуется во время + выполнения: Glibc +
+
+
+
+ +
+
+ Набор тестов зависит от: + Нет +
+
+
+
+ +
+
+ Должен быть установлен до: + File, GRUB, Kmod, Libelf, Man-DB и + Udev +
+
+
+
+ +
+
+ Необязательные зависимости: + Нет +
+
+
+

+ Zlib +

+
+ +
+
+ Установка зависит от: + Bash, Binutils, Coreutils, GCC, Glibc, + Make и Sed +
+
+
+
+ +
+
+ Требуется во время + выполнения: Glibc +
+
+
+
+ +
+
+ Набор тестов зависит от: + Нет +
+
+
+
+ +
+
+ Должен быть установлен до: + File, Kmod, Libelf, Perl и + Util-linux +
+
+
+
+ +
+
+ Необязательные зависимости: + Нет +
+
+
+

+ Zstd +

+
+ +
+
+ Установка зависит от: + Binutils, Coreutils, GCC, Glibc, Gzip, + Make, Xz и Zlib +
+
+
+
+ +
+
+ Требуется во время + выполнения: Glibc +
+
+
+
+ +
+
+ Набор тестов зависит от: + Нет +
+
+
+
+ +
+
+ Должен быть установлен до: + Binutils, GCC, Libelf и Udev +
+
+
+
+ +
+
+ Необязательные зависимости: + LZ4 +
+
+
+
+
+
+
+

+ Приложение D. Скрипты + загрузки и настройки системы-20230728 +

+
+
+
+
+

+ Скрипты в приложении перечислены с указанием каталога, в котором + они обычно находятся. Порядок такой: /etc/rc.d/init.d, /etc/sysconfig, /etc/sysconfig/network-devices, и /etc/sysconfig/network-devices/services. В + каждом разделе файлы перечислены в том порядке, в котором они + обычно вызываются. +

+
+
+
+

+ D.1. /etc/rc.d/init.d/rc +

+
+
+
+
+

+ Скрипт rc это первый скрипт, + вызываемый системой инициализации init и инициирующий процесс загрузки. +

+
#!/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
+# Updates     : Bruce Dubbs - bdubbs AT linuxfromscratch D0T org
+#             : Pierre Labastie - pierre AT linuxfromscratch D0T org
+#
+# Version     : LFS 7.0
+#
+# Notes       : Updates March 24th, 2022: new semantics of S/K files
+#               - Instead of testing that S scripts were K scripts in the
+#                 previous runlevel, test that they were not S scripts
+#               - Instead of testing that K scripts were S scripts in the
+#                 previous runlevel, test that they were not K scripts
+#               - S scripts in runlevel 0 or 6 are now run with
+#                "script start" (was "script stop" previously).
+########################################################################
+
+. /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@lists.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 /run/interactive ] && source /run/interactive
+
+# Stop all services marked as K, except if marked as K in the previous
+# runlevel: it is the responsibility of the script to not try to kill
+# a non running service
+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]}
+      [ -e /etc/rc.d/rc${previous}.d/K[0-9][0-9]$suffix ] && continue
+
+      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 services marked as S in this runlevel, except if marked as
+# S in the previous runlevel
+# it is the responsibility of the script to not try to start an already running
+# service
+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]}
+      [ -e /etc/rc.d/rc${previous}.d/S[0-9][0-9]$suffix ] && continue
+   fi
+
+   check_script_status
+   if [ "${SCRIPT_STAT}" == "1" ]; then
+      SCRIPT_STAT="0"
+      continue
+   fi
+
+   run ${i} start
+
+   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\"" > /run/interactive
+else
+    rm -f /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) responsibility
+        # 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) responsibility
+    # 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.
+
+            progname=${program##*/}
+
+            if [[ -e "/run/${progname}.pid" ]]; then
+                pidfile="/run/${progname}.pid"
+                rm -f "${pidfile}"
+            fi
+
+            # 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 "/run/${progname}.pid" ]; then
+                rm -f "/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 "/run/${progname}.pid" ]; then
+            pidfile="/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 "/run/${base}.pid" ]; then
+         /bin/echo -e "${WARNING}${1} is not running but" \
+            "/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 failure 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} ]                                            #
+#                                                                              #
+# 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 of -{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 : Ensure proc, sysfs, run, and dev are mounted
+#
+# Authors     : Gerard Beekmans - gerard AT linuxfromscratch D0T org
+#               DJ Lucas - dj AT linuxfromscratch D0T org
+# Update      : Bruce Dubbs - bdubbs AT linuxfromscratch D0T org
+#               Xi Ruoyao - xry111@xry111.site
+#
+# Version     : LFS 12.0
+#
+########################################################################
+
+### BEGIN INIT INFO
+# Provides:            mountvirtfs
+# Required-Start:      $first
+# Should-Start:
+# Required-Stop:
+# Should-Stop:
+# Default-Start:       S
+# Default-Stop:
+# Short-Description:   Mounts various special fs needed at start
+# Description:         Mounts /sys and /proc virtual (kernel) filesystems.
+#                      Mounts /run (tmpfs) and /dev (devtmpfs).
+#                      This is done only if they are not already mounted.
+#                      with the kernel config proposed in the book, dev
+#                      should be automatically mounted by the kernel.
+# 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 
+      chmod 1777 /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
+
+      mkdir -p /dev/shm
+      log_info_msg2 " ${INFO}/dev/shm"
+      mount -o nosuid,nodev /dev/shm || failed=1
+
+      mkdir -p /sys/fs/cgroup
+      log_info_msg2 " ${INFO}/sys/fs/cgroup"
+      mount -o nosuid,noexec,nodev /sys/fs/cgroup || failed=1
+
+      (exit ${failed})
+      evaluate_retval
+      if [ "${failed}" = 1 ]; then
+         exit 1
+      fi
+
+      log_info_msg "Create symlinks in /dev targeting /proc: ${INFO}/dev/stdin"
+      ln -sf /proc/self/fd/0 /dev/stdin  || failed=1
+
+      log_info_msg2 " ${INFO}/dev/stdout"
+      ln -sf /proc/self/fd/1 /dev/stdout || failed=1
+
+      log_info_msg2 " ${INFO}/dev/stderr"
+      ln -sf /proc/self/fd/2 /dev/stderr || failed=1
+
+      log_info_msg2 " ${INFO}/dev/fd"
+      ln -sf /proc/self/fd   /dev/fd     || failed=1
+
+      if [ -e /proc/kcore ]; then
+         log_info_msg2 " ${INFO}/dev/core"
+         ln -sf /proc/kcore  /dev/core   || failed=1
+      fi
+
+      (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
+# 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
+      grep -E -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
+#               Xi Ruoyao - xry111@xry111.site
+#
+# Version     : LFS 12.0
+#
+########################################################################
+
+### BEGIN INIT INFO
+# Provides:            udev $time
+# Required-Start:      localnet
+# 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 start
+      fi
+
+      # Start the udev daemon to continually watch for, and act on,
+      # uevents
+      SYSTEMD_LOG_TARGET=kmsg /sbin/udevd --daemon
+
+      # Now traverse /sys in order to "coldplug" devices that have
+      # already been discovered
+      /bin/udevadm trigger --action=add    --type=subsystems
+      /bin/udevadm trigger --action=add    --type=devices
+      /bin/udevadm trigger --action=change --type=devices
+
+      # Now wait for udevd to process the uevents we triggered
+      if ! is_true "$OMIT_UDEV_SETTLE"; then
+         /bin/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:         $local_fs
+# Default-Start:       S
+# Default-Stop:        0 6
+# Short-Description:   Activates and deactivates swap partitions.
+# Description:         Activates and deactivates 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
+### 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
+# Should-Start:
+# Required-Stop:
+# Should-Stop:
+# Default-Start:       S
+# Default-Stop:
+# Short-Description:   Checks local filesystems before mounting.
+# Description:         Checks local filesystems 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 start
+      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 "
+         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 start
+      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:        modules
+# Required-Stop:       localnet
+# 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..."
+      failed=0
+      mount --all --test-opts no_netdev >/dev/null || failed=1
+      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 devices 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
+      if [ -r /etc/mdadm.conf ]; then
+         log_info_msg "Mark arrays as clean..."
+         mdadm --wait-clean --scan
+         evaluate_retval
+      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 cleanfs
+# 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..."
+
+      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
+            /bin/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
+         /bin/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 /run, /var/lock, and
+#                      optionally, /tmp.  cleanfs also creates /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
+
+      > /run/utmp
+
+      if grep -q '^utmp:' /etc/group ; then
+         chmod 664 /run/utmp
+         chgrp utmp /run/utmp
+      fi
+
+      (exit ${failed})
+      evaluate_retval
+
+      if grep -E -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:      $local_fs
+# Should-Start:        udev_retry
+# 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
+
+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:      mountvirtfs
+# Should-Start:        modules
+# 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:        console
+# 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:      $first localnet
+# Should-Start:
+# Required-Stop:       $local_fs
+# Should-Stop:         sendsignals
+# Default-Start:       2 3 4 5
+# Default-Stop:        0 1 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
+
+. /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 localnet swap
+# Should-Start:        $syslog firewalld iptables nftables
+# Required-Stop:       $local_fs localnet swap
+# Should-Stop:         $syslog firewalld iptables nftables
+# Default-Start:       2 3 4 5
+# Default-Stop:        0 1 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)
+      # if the default route exists, network is already configured
+      if ip route | grep -q "^default"; then return 0; fi
+      # 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
+
+         # See if interface exists
+         if [ ! -e /sys/class/net/$interface ]; then continue; fi
+
+         # Is interface UP?
+         ip link show $interface 2>/dev/null | grep -q "state UP"
+         if [ $? -ne 0 ];  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)
+      omit=$(pidof mdmon)
+      [ -n "$omit" ] && omit="-o $omit"
+
+      log_info_msg "Sending all processes the TERM signal..."
+      killall5 -15 $omit
+      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 $omit
+      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
+# Updates     : Bruce Dubbs - bdubbs AT linuxfromscratch D0T org
+#             : Pierre Labastie - pierre AT linuxfromscratch D0T org
+#
+# Version     : LFS 7.0
+#
+# Notes       : Update March 24th, 2022: change "stop" to "start".
+#               Add the $last facility to Required-start
+#
+########################################################################
+
+### BEGIN INIT INFO
+# Provides:            reboot
+# Required-Start:      $last
+# 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
+   start)
+      log_info_msg "Restarting system..."
+      reboot -d -f -i
+      ;;
+
+   *)
+      echo "Usage: ${0} {start}"
+      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
+#             : Pierre Labastie - pierre AT linuxfromscratch D0T org
+#
+# Version     : LFS 7.0
+#
+# Notes       : Update March 24th, 2022: change "stop" to "start".
+#               Add the $last facility to Required-start
+#
+########################################################################
+
+### BEGIN INIT INFO
+# Provides:            halt
+# Required-Start:      $last
+# 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
+   start)
+      halt -d -f -i -p
+      ;;
+
+   *)
+      echo "Usage: {start}"
+      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..."
+    # if it is possible to use start_daemon
+      start_daemon fully_qualified_path
+    # if it is not possible to use start_daemon
+    # (command to start the daemon is not simple enough)
+      if ! pidofproc daemon_name_as_reported_by_ps >/dev/null; then
+         command_to_start_the_service
+      fi
+      evaluate_retval
+      ;;
+
+   stop)
+      log_info_msg "Stopping..."
+    # if it is possible to use killproc
+      killproc fully_qualified_path
+    # if it is not possible to use killproc
+    # (the daemon shouldn't be stopped by killing it)
+      if pidofproc daemon_name_as_reported_by_ps >/dev/null; then
+         command_to_stop_the_service
+      fi
+      evaluate_retval
+      ;;
+
+   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 device
+#                       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
+#               DJ Lucas - dj 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()
+{
+  log_info_msg "Bringing up the ${1} interface..."
+
+  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 "Interface ${IFACE} doesn't exist."
+     exit 1
+  fi
+
+  evaluate_retval
+}
+
+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
+
+if [ ! -r "${file}" ]; then
+   log_failure_msg "Unable to bring up ${1} interface! ${file} is missing or cannot be accessed."
+   exit 1
+fi
+
+.  $file
+
+if [ "$IFACE" = "" ]; then
+   log_failure_msg "Unable to bring up ${1} interface! ${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
+   exit 0
+fi
+
+# Bring up the interface
+if [ "$VIRTINT" != "yes" ]; then
+   up ${IFACE}
+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
+
+# Set link up virtual interfaces
+if [ "${VIRTINT}" == "yes" ]; then
+   up ${IFACE}
+fi
+
+# Bring up any additional interface components
+for I in $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_warning_msg "Gateway already setup; skipping."
+   else
+      log_info_msg "Adding default gateway ${GATEWAY} to the ${IFACE} interface..."
+      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
+         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
+
+
+
+
+
+
+

+ Приложение E. Правила + настройки Udev +

+
+
+
+
+

+ Правила в этом приложении перечислены для удобства. Установка + обычно выполняются с помощью инструкций приведенных в Раздел 8.75, «Udev из + Systemd-255». +

+
+
+
+

+ 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"
+
+
+
+
+
+
+
+

+ Приложение F. Лицензии + LFS +

+
+
+
+
+

+ Настоящая книга распространяется на условиях лицензии Creative + Commons Attribution-NonCommercial-ShareAlike 2.0 License. +

+

+ Инструкции, предназначенные для использования на компьютере, + могут использоваться отдельно от книги на условиях лицензии MIT. +

+
+
+
+

+ F.1. Лицензия Creative Commons +

+
+
+
+
+

+ Creative Commons Legal Code +

+

+ Attribution-NonCommercial-ShareAlike 2.0 +

+
+

+ Важно +

+

+ 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. +
+
+
+

+ Важно +

+

+ 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. Лицензия MIT +

+
+
+
+
+

+ Copyright © 1999-2024 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. +

+
+
+
+
+
+
+
+

+ Предметный указатель +

+
+
+
+
+

+ Пакеты +

+ +

+ Программы +

+ +

+ Библиотеки +

+ +

+ Скрипты +

+ +

+ Разное +

+ +
+
+
+ + diff --git a/lfs-12.1-sysv/LFS-BOOK.pdf b/lfs-12.1-sysv/LFS-BOOK.pdf new file mode 100644 index 0000000..475f8fd Binary files /dev/null and b/lfs-12.1-sysv/LFS-BOOK.pdf differ diff --git a/lfs-12.1-sysv/appendices/acknowledgments.html b/lfs-12.1-sysv/appendices/acknowledgments.html new file mode 100644 index 0000000..4fadc09 --- /dev/null +++ b/lfs-12.1-sysv/appendices/acknowledgments.html @@ -0,0 +1,621 @@ + + + + + + Приложение B. Благодарности + + + + + + + + +

+ B. Благодарности +

+
+

+ Мы хотели бы поблагодарить следующих людей и организации за их вклад + в проект Linux From Scratch. +

+
+
    +
  • +

    + Gerard Beekmans + <gerard AT linuxfromscratch D0T org> – Основатель проекта LFS +

    +
  • +
  • +

    + Bruce Dubbs + <bdubbs AT linuxfromscratch D0T org> – Главный редактор LFS +

    +
  • +
  • +

    + Jim + Gifford <jim AT linuxfromscratch D0T org> – Второй + руководитель проекта CLFS +

    +
  • +
  • +

    + Pierre Labastie + <pierre AT linuxfromscratch D0T org> – Редактор BLFS и + руководитель ALFS +

    +
  • +
  • +

    + DJ + Lucas <dj AT linuxfromscratch D0T org> – Редактор проектов + LFS и BLFS +

    +
  • +
  • +

    + Ken + Moffat <ken AT linuxfromscratch D0T org> – Редактор BLFS +

    +
  • +
  • +

    + Бесчисленное множество других людей из различных списков + рассылки проектов LFS и BLFS, которые помогали в создании этой + книги, присылая свои предложения, проверяя книгу и отправляя + отчеты об ошибках, инструкции и собственный опыт установки + различных пакетов. +

    +
  • +
+
+

+ Переводчики +

+
+
    +
  • +

    + Manuel + Canales Esparcia <macana AT macana-es D0T com> – Перевод + проекта LFS на испанский язык +

    +
  • +
  • +

    + Johan + Lenglet <johan AT linuxfromscratch D0T org> – Перевод + проекта LFS на французский язык до 2008 г. +

    +
  • +
  • +

    + Jean-Philippe + Mengual <jmengual AT linuxfromscratch D0T org> – Перевод + проекта LFS на французский язык 2008-2016 гг +

    +
  • +
  • +

    + Julien Lepiller + <jlepiller AT linuxfromscratch D0T org> – Перевод проекта LFS на + французский язык с 2017-по настоящее время +

    +
  • +
  • +

    + Anderson Lizardo + <lizardo AT linuxfromscratch D0T org> – Перевод проекта LFS на + португальский язык до 2022 г. +

    +
  • +
  • +

    + Jamenson + Espindula <jafesp AT gmail D0T com> – Перевод проекта LFS на + португальский язык 2022-по настоящее время +

    +
  • +
  • +

    + Thomas + Reitelbach <tr AT erdfunkstelle D0T de> – Перевод проекта + LFS на немецкий язык +

    +
  • +
  • +

    + Anton Maisak + <info AT linuxfromscratch D0T ru> – Перевод проекта LFS на + русский язык 2018-2020 гг +

    +
  • +
  • +

    + Elena Shevcova + <info AT linuxfromscratch D0T ru> – Перевод проекта LFS на + русский язык 2018-2020 гг +

    +
  • +
  • +

    + Vladimir Pertsev + <info AT linuxfromscratch D0T ru> – Перевод проекта LFS на + русский язык 2022-по настоящее время +

    +
  • +
+
+

+ Зеркала проекта +

+

+ Североамериканские зеркала +

+
+
    +
  • +

    + Scott + Kveton <scott AT osuosl D0T org> – зеркало + lfs.oregonstate.edu +

    +
  • +
  • +

    + William Astle + <lost AT l-w D0T net> – зеркало ca.linuxfromscratch.org +

    +
  • +
  • +

    + Eujon + Sellers <jpolen@rackspace.com> – зеркало + lfs.introspeed.com +

    +
  • +
  • +

    + Justin + Knierim <tim@idge.net> – зеркало lfs-matrix.net +

    +
  • +
+
+

+ Южноамериканские зеркала +

+
+
    +
  • +

    + Manuel Canales + Esparcia <manuel AT linuxfromscratch D0T org> – зеркало + lfsmirror.lfs-es.info +

    +
  • +
  • +

    + Luis + Falcon <Luis Falcon> – зеркало torredehanoi.org +

    +
  • +
+
+

+ Европейские зеркала +

+
+
    +
  • +

    + Guido + Passet <guido AT primerelay D0T net> – зеркало + nl.linuxfromscratch.org +

    +
  • +
  • +

    + Bastiaan + Jacques <baafie AT planet D0T nl> – зеркало + lfs.pagefault.net +

    +
  • +
  • +

    + Sven + Cranshoff <sven D0T cranshoff AT lineo D0T be> – зеркало + lfs.lineo.be +

    +
  • +
  • +

    + Scarlet Belgium – зеркало lfs.scarlet.be +

    +
  • +
  • +

    + Sebastian + Faulborn <info AT aliensoft D0T org> – зеркало + lfs.aliensoft.org +

    +
  • +
  • +

    + Stuart Fox + <stuart AT dontuse D0T ms> – зеркало lfs.dontuse.ms +

    +
  • +
  • +

    + Ralf + Uhlemann <admin AT realhost D0T de> – зеркало + lfs.oss-mirror.org +

    +
  • +
  • +

    + Antonin Sprinzl + <Antonin D0T Sprinzl AT tuwien D0T ac D0T at> – зеркало + at.linuxfromscratch.org +

    +
  • +
  • +

    + Fredrik + Danerklint <fredan-lfs AT fredan D0T org> – зеркало + se.linuxfromscratch.org +

    +
  • +
  • +

    + Franck + <franck AT linuxpourtous D0T com> – зеркало + lfs.linuxpourtous.com +

    +
  • +
  • +

    + Philippe Baque + <baque AT cict D0T fr> – зеркало lfs.cict.fr +

    +
  • +
  • +

    + Benjamin + Heil <kontakt AT wankoo D0T org> – зеркало lfs.wankoo.org +

    +
  • +
  • +

    + Vladimir Pertsev + <info AT linuxfromscratch D0T ru> – зеркало + mirror.linuxfromscratch.ru +

    +
  • +
+
+

+ Азиатские зеркала +

+
+
    +
  • +

    + Satit + Phermsawang <satit AT wbac D0T ac D0T th> – зеркало + lfs.phayoune.org +

    +
  • +
  • +

    + Shizunet + Co.,Ltd. <info AT shizu-net D0T jp> – зеркало + lfs.mirror.shizu-net.jp +

    +
  • +
+
+

+ Австралийские зеркала +

+
+
    +
  • +

    + Jason + Andrade <jason AT dstc D0T edu D0T au> – зеркало + au.linuxfromscratch.org +

    +
  • +
+
+

+ Бывшие участники проекта +

+
+
    +
  • +

    + Christine Barczak + <theladyskye AT linuxfromscratch D0T org> – Редактор книги LFS +

    +
  • +
  • +

    + Archaic <archaic@linuxfromscratch.org> – Технический + писатель/редактор LFS, руководитель проекта HLFS, редактор + BLFS, Сопровождающий проекта Советы и патчи +

    +
  • +
  • +

    + Matthew Burgess + <matthew AT linuxfromscratch D0T org> – Руководитель проекта + LFS, технический писатель/редактор LFS +

    +
  • +
  • +

    + Nathan Coulson + <nathan AT linuxfromscratch D0T org> – Сопровождающий + LFS-Bootscripts +

    +
  • +
  • +

    + Timothy Bauscher +

    +
  • +
  • +

    + Robert Briggs +

    +
  • +
  • +

    + Ian Chilton +

    +
  • +
  • +

    + Jeroen Coumans + <jeroen AT linuxfromscratch D0T org> – Разработчик веб-сайта, + сопровождающий FAQ +

    +
  • +
  • +

    + Manuel Canales + Esparcia <manuel AT linuxfromscratch D0T org> – + Сопровождающий XML и XSL проектов LFS/BLFS/HLFS +

    +
  • +
  • +

    + Alex Groenewoud – Технический писатель LFS +

    +
  • +
  • +

    + Marc Heerdink +

    +
  • +
  • +

    + Jeremy Huntwork + <jhuntwork AT linuxfromscratch D0T org> – Технический писатель + LFS, сопровождающий LFS LiveCD +

    +
  • +
  • +

    + Bryan + Kadzban <bryan AT linuxfromscratch D0T org> – Технический + писатель LFS +

    +
  • +
  • +

    + Mark Hymers +

    +
  • +
  • +

    + Seth W. Klein – Сопровождающий FAQ +

    +
  • +
  • +

    + Nicholas Leippe + <nicholas AT linuxfromscratch D0T org> – Сопровождающий Wiki +

    +
  • +
  • +

    + Anderson Lizardo + <lizardo AT linuxfromscratch D0T org> – Сопровождающий движка + сайта +

    +
  • +
  • +

    + Randy + McMurchy <randy AT linuxfromscratch D0T org> – Руководитель + проекта BLFS, редактор LFS +

    +
  • +
  • +

    + Dan Nicholson + <dnicholson AT linuxfromscratch D0T org> – Редактор LFS и BLFS +

    +
  • +
  • +

    + Alexander E. + Patrakov <alexander AT linuxfromscratch D0T org> – + Технический писатель LFS, редактор интернационализации LFS, + сопровождающий LFS Live CD +

    +
  • +
  • +

    + Simon Perreault +

    +
  • +
  • +

    + Scot + Mc Pherson <scot AT linuxfromscratch D0T org> – + Сопровождающий шлюза NNTP для проекта LFS +

    +
  • +
  • +

    + Douglas R. Reno + <renodr AT linuxfromscratch D0T org> – Редактор Systemd +

    +
  • +
  • +

    + Ryan + Oliver <ryan AT linuxfromscratch D0T org> – Один из + руководителей проекта CLFS +

    +
  • +
  • +

    + Greg + Schafer <gschafer AT zip D0T com D0T au> – Технический писатель + проекта LFS и архитектор методов сборки пакетов следующего + поколения, предназначенных для 64-битной архитектуры +

    +
  • +
  • +

    + Jesse Tie-Ten-Quee – Технический писатель LFS +

    +
  • +
  • +

    + James Robertson + <jwrober AT linuxfromscratch D0T org> – Сопровождающий Bugzilla +

    +
  • +
  • +

    + Tushar Teredesai + <tushar AT linuxfromscratch D0T org> – Редактор книги BLFS, + руководитель проекта Советы и Патчи +

    +
  • +
  • +

    + Jeremy Utley + <jeremy AT linuxfromscratch D0T org> – Технический писатель + проекта LFS, сопровождающий Bugzilla, сопровождающий + LFS-Bootscripts +

    +
  • +
  • +

    + Zack + Winkles <zwinkles AT gmail D0T com> – Технический писатель + проекта LFS +

    +
  • +
+
+
+ + + diff --git a/lfs-12.1-sysv/appendices/acronymlist.html b/lfs-12.1-sysv/appendices/acronymlist.html new file mode 100644 index 0000000..2d8bda8 --- /dev/null +++ b/lfs-12.1-sysv/appendices/acronymlist.html @@ -0,0 +1,1087 @@ + + + + + + Приложение A. Сокращения и условные обозначения + + + + + + + + +

+ A. Сокращения и условные + обозначения +

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

+ ABI +

+
+

+ Application Binary Interface - Двоичный (бинарный) + интерфейс приложений +

+
+

+ ALFS +

+
+

+ Automated Linux From Scratch - Проект автоматической сборки + системы LFS +

+
+

+ API +

+
+

+ Application Programming Interface - Программный интерфейс + приложения +

+
+

+ ASCII +

+
+

+ American Standard Code for Information Interchange — + Американский стандартный код для обмена информацией +

+
+

+ BIOS +

+
+

+ Basic Input/Output System - Базовая система ввода/вывода +

+
+

+ BLFS +

+
+

+ Beyond Linux From Scratch - Проект, расширяющий возможности + 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 - Коллекция компиляторов GNU +

+
+

+ 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 - Совместный проект семейства + операционных систем, основанных на Linux (то есть + дистрибутивов Linux), при организации Linux Foundation, + целью которого является стандартизация их внутренней + структуры. LSB опирается на существующие спецификации, + такие как POSIX, Single UNIX Specification, и другие + открытые стандарты, при этом расширяя и дополняя их. +

+
+

+ MB +

+
+

+ Megabytes - Мегабайты +

+
+

+ MBR +

+
+

+ Master Boot Record - Главная загрузочная запись +

+
+

+ MD5 +

+
+

+ Message Digest 5 - 128-битный алгоритм хеширования +

+
+

+ NIC +

+
+

+ Network Interface Card - Сетевой адаптер +

+
+

+ NLS +

+
+

+ Native Language Support - Поддержка естественного языка +

+
+

+ NNTP +

+
+

+ Network News Transport Protocol - Сетевой транспортный + протокол новостных групп +

+
+

+ NPTL +

+
+

+ Native POSIX Threading Library - Библиотека потоков POSIX +

+
+

+ OSS +

+
+

+ Open Sound System - Унифицированный драйвер для звуковых + карт и других звуковых устройств +

+
+

+ PCH +

+
+

+ Pre-Compiled Headers - Предварительно скомпилированные + заголовки +

+
+

+ PCRE +

+
+

+ Perl Compatible Regular Expression - Регулярные выражения, + совместимые с Perl +

+
+

+ 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 - Проект документации Linux +

+
+

+ 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 - Виртуальный терминал +

+
+
+
+ + + diff --git a/lfs-12.1-sysv/appendices/creat-comm.html b/lfs-12.1-sysv/appendices/creat-comm.html new file mode 100644 index 0000000..7a519f1 --- /dev/null +++ b/lfs-12.1-sysv/appendices/creat-comm.html @@ -0,0 +1,579 @@ + + + + + + F.1. Лицензия Creative Commons + + + + + + + + +

+ F.1. Лицензия Creative Commons +

+
+

+ Creative Commons Legal Code +

+

+ Attribution-NonCommercial-ShareAlike 2.0 +

+
+ [Важно] +

+ Важно +

+

+ 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. +
+
+
+ [Важно] +

+ Важно +

+

+ 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/. +

+
+
+ + + diff --git a/lfs-12.1-sysv/appendices/dependencies.html b/lfs-12.1-sysv/appendices/dependencies.html new file mode 100644 index 0000000..af98142 --- /dev/null +++ b/lfs-12.1-sysv/appendices/dependencies.html @@ -0,0 +1,4239 @@ + + + + + + Приложение C. Зависимости + + + + + + + + +

+ C. Зависимости +

+
+

+ Каждый пакет в системе LFS для правильной сборки и установки может + ссылаться на один или несколько других пакетов. Некоторые пакеты + могут иметь циклические зависимости, то есть первый пакет зависит от + второго, который в свою очередь, зависит от первого. Именно по этой + причине, указанный порядок сборки пакетов в LFS очень важен. Цель + этой страницы - документировать зависимости каждого пакета, + собранного в LFS +

+

+ Для каждого собираемого пакета существует от трёх до пяти типов + зависимостей, перечисленных ниже. В первом списке перечислены другие + пакеты, которые должны быть доступны для компиляции и установки + рассматриваемого пакета. Во втором перечислены пакеты, которые должны + быть доступны, когда какие-либо программы или библиотеки из пакета + используются во время его выполнения. В третьем списке перечислены + пакеты, которые, в дополнение к пакетам из первого списка, должны + быть доступны для запуска наборов тестов. Четвертый список + зависимостей — это пакеты, которые требуют, чтобы некий пакет был + собран и установлен по определенному пути, прежде чем они будут + собраны и установлены. +

+

+ Последний список зависимостей - это необязательные пакеты, которые не + рассматриваются в LFS, но могут быть полезны пользователю. Эти пакеты + могут иметь дополнительные как обязательные, так и необязательные + зависимости. Такие зависимости - рекомендуется разрешать после + завершения сборки всей системы LFS. В некоторых случаях, повторная + установка некоторых таких пакетов рассматривается в BLFS. +

+

+ Acl +

+
+ +
+
+ Установка зависит от: + Attr, Bash, Binutils, Coreutils, GCC, + Gettext, Grep, M4, Make, Perl, Sed и Texinfo +
+
+
+
+ +
+
+ Требуется во время выполнения: + Attr и Glibc +
+
+
+
+ +
+
+ Набор тестов зависит от: + Automake, Diffutils, Findutils и + Libtool +
+
+
+
+ +
+
+ Должен быть установлен до: + Coreutils, Sed, Tar и Vim +
+
+
+
+ +
+
+ Необязательные зависимости: + Нет +
+
+
+

+ Attr +

+
+ +
+
+ Установка зависит от: + Bash, Binutils, Coreutils, GCC, Gettext, + Glibc, Grep, M4, Make, Perl, Sed и Texinfo +
+
+
+
+ +
+
+ Требуется во время выполнения: + Glibc +
+
+
+
+ +
+
+ Набор тестов зависит от: + Automake, Diffutils, Findutils и + Libtool +
+
+
+
+ +
+
+ Должен быть установлен до: + Acl, Libcap и Patch +
+
+
+
+ +
+
+ Необязательные зависимости: + Нет +
+
+
+

+ Autoconf +

+
+ +
+
+ Установка зависит от: + Bash, Coreutils, Grep, M4, Make, Perl, Sed + и Texinfo +
+
+
+
+ +
+
+ Требуется во время выполнения: + Bash, Coreutils, Grep, M4, Make, Sed и + Texinfo +
+
+
+
+ +
+
+ Набор тестов зависит от: + Automake, Diffutils, Findutils, GCC и + Libtool +
+
+
+
+ +
+
+ Должен быть установлен до: + Automake и Coreutils +
+
+
+
+ +
+
+ Необязательные зависимости: + + Emacs +
+
+
+

+ Automake +

+
+ +
+
+ Установка зависит от: + Autoconf, Bash, Coreutils, Gettext, Grep, + M4, Make, Perl, Sed, и Texinfo +
+
+
+
+ +
+
+ Требуется во время выполнения: + Bash, Coreutils, Grep, M4, Sed и + Texinfo +
+
+
+
+ +
+
+ Набор тестов зависит от: + Binutils, Bison, Bzip2, DejaGNU, Diffutils, + Expect, Findutils, Flex, GCC, Gettext, Gzip, Libtool и Tar +
+
+
+
+ +
+
+ Должен быть установлен до: + Coreutils +
+
+
+
+ +
+
+ Необязательные зависимости: + Нет +
+
+
+

+ Bash +

+
+ +
+
+ Установка зависит от: + Bash, Binutils, Bison, Coreutils, + Diffutils, Gawk, GCC, Glibc, Grep, Make, Ncurses, Patch, + Readline, Sed и Texinfo +
+
+
+
+ +
+
+ Требуется во время выполнения: + Glibc, Ncurses и Readline +
+
+
+
+ +
+
+ Набор тестов зависит от: + Expect и Shadow +
+
+
+
+ +
+
+ Должен быть установлен до: + Нет +
+
+
+
+ +
+
+ Необязательные зависимости: + + Xorg +
+
+
+

+ Bc +

+
+ +
+
+ Установка зависит от: + Bash, Binutils, Coreutils, GCC, Glibc, + Grep, Make и Readline +
+
+
+
+ +
+
+ Требуется во время выполнения: + Glibc, Ncurses и Readline +
+
+
+
+ +
+
+ Набор тестов зависит от: + Gawk +
+
+
+
+ +
+
+ Должен быть установлен до: + Linux +
+
+
+
+ +
+
+ Необязательные зависимости: + Нет +
+
+
+

+ Binutils +

+
+ +
+
+ Установка зависит от: + Bash, Binutils, Coreutils, Diffutils, File, + Flex, Gawk, GCC, Glibc, Grep, Make, Perl, Pkgconf, Sed, Texinfo, + Zlib и Zstd +
+
+
+
+ +
+
+ Требуется во время выполнения: + Glibc, Zlib и Zstd +
+
+
+
+ +
+
+ Набор тестов зависит от: + DejaGNU и Expect +
+
+
+
+ +
+
+ Должен быть установлен до: + Нет +
+
+
+
+ +
+
+ Необязательные зависимости: + Elfutils и + Jansson +
+
+
+

+ Bison +

+
+ +
+
+ Установка зависит от: + Bash, Binutils, Coreutils, GCC, Gettext, + Glibc, Grep, M4, Make, Perl и Sed +
+
+
+
+ +
+
+ Требуется во время выполнения: + Glibc +
+
+
+
+ +
+
+ Набор тестов зависит от: + Diffutils, Findutils и Flex +
+
+
+
+ +
+
+ Должен быть установлен до: + Kbd и Tar +
+
+
+
+ +
+
+ Необязательные зависимости: + + Doxygen +
+
+
+

+ Bzip2 +

+
+ +
+
+ Установка зависит от: + Bash, Binutils, Coreutils, Diffutils, GCC, + Glibc, Make и Patch +
+
+
+
+ +
+
+ Требуется во время выполнения: + Glibc +
+
+
+
+ +
+
+ Набор тестов зависит от: + Нет +
+
+
+
+ +
+
+ Должен быть установлен до: + File и Libelf +
+
+
+
+ +
+
+ Необязательные зависимости: + Нет +
+
+
+

+ Check +

+
+ +
+
+ Установка зависит от: + Gawk, GCC, Grep, Make, Sed и Texinfo +
+
+
+
+ +
+
+ Требуется во время выполнения: + Bash и Gawk +
+
+
+
+ +
+
+ Набор тестов зависит от: + Нет +
+
+
+
+ +
+
+ Должен быть установлен до: + Нет +
+
+
+
+ +
+
+ Необязательные зависимости: + libsubunit и + patchutils +
+
+
+

+ Coreutils +

+
+ +
+
+ Установка зависит от: + Autoconf, Automake, Bash, Binutils, + Coreutils, GCC, Gettext, Glibc, GMP, Grep, Libcap, Make, OpenSSL, + Patch, Perl, Sed и Texinfo +
+
+
+
+ +
+
+ Требуется во время выполнения: + Glibc +
+
+
+
+ +
+
+ Набор тестов зависит от: + Diffutils, E2fsprogs, Findutils, Shadow и + Util-linux +
+
+
+
+ +
+
+ Должен быть установлен до: + Bash, Diffutils, Findutils, Man-DB и + Udev +
+
+
+
+ +
+
+ Необязательные зависимости: + Expect.pm и IO::Tty +
+
+
+

+ DejaGNU +

+
+ +
+
+ Установка зависит от: + Bash, Coreutils, Diffutils, Expect, GCC, + Grep, Make, Sed и Texinfo +
+
+
+
+ +
+
+ Требуется во время выполнения: + Expect и Bash +
+
+
+
+ +
+
+ Набор тестов зависит от: + Нет +
+
+
+
+ +
+
+ Должен быть установлен до: + Нет +
+
+
+
+ +
+
+ Необязательные зависимости: + Нет +
+
+
+

+ Diffutils +

+
+ +
+
+ Установка зависит от: + Bash, Binutils, Coreutils, Gawk, GCC, + Gettext, Glibc, Grep, Make, Sed и Texinfo +
+
+
+
+ +
+
+ Требуется во время выполнения: + Glibc +
+
+
+
+ +
+
+ Набор тестов зависит от: + Perl +
+
+
+
+ +
+
+ Должен быть установлен до: + Нет +
+
+
+
+ +
+
+ Необязательные зависимости: + Нет +
+
+
+

+ E2fsprogs +

+
+ +
+
+ Установка зависит от: + Bash, Binutils, Coreutils, Diffutils, Gawk, + GCC, Glibc, Grep, Gzip, Make, Pkgconf, Sed, Texinfo и + Util-linux +
+
+
+
+ +
+
+ Требуется во время выполнения: + Glibc и Util-linux +
+
+
+
+ +
+
+ Набор тестов зависит от: + Procps-ng и Psmisc +
+
+
+
+ +
+
+ Должен быть установлен до: + Нет +
+
+
+
+ +
+
+ Необязательные зависимости: + Нет +
+
+
+

+ Expat +

+
+ +
+
+ Установка зависит от: + Bash, Binutils, Coreutils, Gawk, GCC, + Glibc, Grep, Make и Sed +
+
+
+
+ +
+
+ Требуется во время выполнения: + Glibc +
+
+
+
+ +
+
+ Набор тестов зависит от: + Нет +
+
+
+
+ +
+
+ Должен быть установлен до: + Python и XML::Parser +
+
+
+
+ +
+
+ Необязательные зависимости: + Нет +
+
+
+

+ Expect +

+
+ +
+
+ Установка зависит от: + Bash, Binutils, Coreutils, Diffutils, GCC, + Glibc, Grep, Make, Patch, Sed и Tcl +
+
+
+
+ +
+
+ Требуется во время выполнения: + Glibc и Tcl +
+
+
+
+ +
+
+ Набор тестов зависит от: + Нет +
+
+
+
+ +
+
+ Должен быть установлен до: + Нет +
+
+
+
+ +
+
+ Необязательные зависимости: + + Tk +
+
+
+

+ File +

+
+ +
+
+ Установка зависит от: + Bash, Binutils, Bzip2, Coreutils, + Diffutils, Gawk, GCC, Glibc, Grep, Make, Sed, Xz и Zlib +
+
+
+
+ +
+
+ Требуется во время выполнения: + Glibc, Bzip2, Xz и Zlib +
+
+
+
+ +
+
+ Набор тестов зависит от: + Нет +
+
+
+
+ +
+
+ Должен быть установлен до: + Нет +
+
+
+
+ +
+
+ Необязательные зависимости: + + libseccomp +
+
+
+

+ Findutils +

+
+ +
+
+ Установка зависит от: + Bash, Binutils, Coreutils, GCC, Gettext, + Glibc, Grep, Make, Sed, и Texinfo +
+
+
+
+ +
+
+ Требуется во время выполнения: + Bash и Glibc +
+
+
+
+ +
+
+ Набор тестов зависит от: + DejaGNU, Diffutils и Expect +
+
+
+
+ +
+
+ Должен быть установлен до: + Нет +
+
+
+
+ +
+
+ Необязательные зависимости: + Нет +
+
+
+

+ Flex +

+
+ +
+
+ Установка зависит от: + Bash, Binutils, Coreutils, GCC, Gettext, + Glibc, Grep, M4, Make, Patch, Sed и Texinfo +
+
+
+
+ +
+
+ Требуется во время выполнения: + Bash, Glibc и M4 +
+
+
+
+ +
+
+ Набор тестов зависит от: + Bison и Gawk +
+
+
+
+ +
+
+ Должен быть установлен до: + Binutils, IProute2, Kbd, Kmod и + Man-DB +
+
+
+
+ +
+
+ Необязательные зависимости: + Нет +
+
+
+

+ Flit-Core +

+
+ +
+
+ Установка зависит от: + Python +
+
+
+
+ +
+
+ Требуется во время выполнения: + Python +
+
+
+
+ +
+
+ Набор тестов зависит от: + Набор тестов недоступен +
+
+
+
+ +
+
+ Должен быть установлен до: + Wheel +
+
+
+
+ +
+
+ Необязательные зависимости: + + pytest и testpath +
+
+
+

+ Gawk +

+
+ +
+
+ Установка зависит от: + Bash, Binutils, Coreutils, GCC, Gettext, + Glibc, GMP, Grep, Make, MPFR, Patch, Readline, Sed и + Texinfo +
+
+
+
+ +
+
+ Требуется во время выполнения: + Bash, Glibc и Mpfr +
+
+
+
+ +
+
+ Набор тестов зависит от: + Diffutils +
+
+
+
+ +
+
+ Должен быть установлен до: + Нет +
+
+
+
+ +
+
+ Необязательные зависимости: + + libsigsegv +
+
+
+

+ GCC +

+
+ +
+
+ Установка зависит от: + Bash, Binutils, Coreutils, Diffutils, + Findutils, Gawk, GCC, Gettext, Glibc, GMP, Grep, Libxcrypt, M4, + Make, MPC, MPFR, Patch, Perl, Sed, Tar, Texinfo и Zstd +
+
+
+
+ +
+
+ Требуется во время выполнения: + Bash, Binutils, Glibc, Mpc и Python +
+
+
+
+ +
+
+ Набор тестов зависит от: + DejaGNU, Expect и Shadow +
+
+
+
+ +
+
+ Должен быть установлен до: + Нет +
+
+
+
+ +
+
+ Необязательные зависимости: + GDC, GNAT, и ISL +
+
+
+

+ GDBM +

+
+ +
+
+ Установка зависит от: + Bash, Binutils, Coreutils, Diffutils, GCC, + Grep, Make и Sed +
+
+
+
+ +
+
+ Требуется во время выполнения: + Bash, Glibc и Readline +
+
+
+
+ +
+
+ Набор тестов зависит от: + Нет +
+
+
+
+ +
+
+ Должен быть установлен до: + Нет +
+
+
+
+ +
+
+ Необязательные зависимости: + Нет +
+
+
+

+ Gettext +

+
+ +
+
+ Установка зависит от: + Bash, Binutils, Coreutils, Gawk, GCC, + Glibc, Grep, Make, Ncurses, Sed и Texinfo +
+
+
+
+ +
+
+ Требуется во время выполнения: + Acl, Bash, Gcc и Glibc +
+
+
+
+ +
+
+ Набор тестов зависит от: + Diffutils, Perl и Tcl +
+
+
+
+ +
+
+ Должен быть установлен до: + Automake и Bison +
+
+
+
+ +
+
+ Необязательные зависимости: + + libunistring и + libxml2 +
+
+
+

+ Glibc +

+
+ +
+
+ Установка зависит от: + Bash, Binutils, Bison, Coreutils, + Diffutils, Gawk, GCC, Gettext, Grep, Gzip, Linux API Headers, + Make, Perl, Python, Sed и Texinfo +
+
+
+
+ +
+
+ Требуется во время выполнения: + Нет +
+
+
+
+ +
+
+ Набор тестов зависит от: + File +
+
+
+
+ +
+
+ Должен быть установлен до: + Нет +
+
+
+
+ +
+
+ Необязательные зависимости: + Нет +
+
+
+

+ GMP +

+
+ +
+
+ Установка зависит от: + Bash, Binutils, Coreutils, Diffutils, Gawk, + GCC, Glibc, Grep, M4, Make, Sed и Texinfo +
+
+
+
+ +
+
+ Требуется во время выполнения: + GCC и Glibc +
+
+
+
+ +
+
+ Набор тестов зависит от: + Нет +
+
+
+
+ +
+
+ Должен быть установлен до: + MPFR и GCC +
+
+
+
+ +
+
+ Необязательные зависимости: + Нет +
+
+
+

+ Gperf +

+
+ +
+
+ Установка зависит от: + Bash, Binutils, Coreutils, GCC, Glibc и + Make +
+
+
+
+ +
+
+ Требуется во время выполнения: + GCC и Glibc +
+
+
+
+ +
+
+ Набор тестов зависит от: + Diffutils и Expect +
+
+
+
+ +
+
+ Должен быть установлен до: + Нет +
+
+
+
+ +
+
+ Необязательные зависимости: + Нет +
+
+
+

+ Grep +

+
+ +
+
+ Установка зависит от: + Bash, Binutils, Coreutils, Diffutils, GCC, + Gettext, Glibc, Grep, Make, Patch, Sed и Texinfo +
+
+
+
+ +
+
+ Требуется во время выполнения: + Glibc +
+
+
+
+ +
+
+ Набор тестов зависит от: + Gawk +
+
+
+
+ +
+
+ Должен быть установлен до: + Man-DB +
+
+
+
+ +
+
+ Необязательные зависимости: + + PCRE2 и + libsigsegv +
+
+
+

+ Groff +

+
+ +
+
+ Установка зависит от: + Bash, Binutils, Bison, Coreutils, Gawk, + GCC, Glibc, Grep, Make, Patch, Sed и Texinfo +
+
+
+
+ +
+
+ Требуется во время выполнения: + GCC, Glibc и Perl +
+
+
+
+ +
+
+ Набор тестов зависит от: + Набор тестов недоступен +
+
+
+
+ +
+
+ Должен быть установлен до: + Man-DB +
+
+
+
+ +
+
+ Необязательные зависимости: + ghostscript + и + Uchardet +
+
+
+

+ GRUB +

+
+ +
+
+ Установка зависит от: + Bash, Binutils, Bison, Coreutils, + Diffutils, GCC, Gettext, Glibc, Grep, Make, Ncurses, Sed, Texinfo + и Xz +
+
+
+
+ +
+
+ Требуется во время выполнения: + Bash, GCC, Gettext, Glibc, Xz и Sed. +
+
+
+
+ +
+
+ Набор тестов зависит от: + Нет +
+
+
+
+ +
+
+ Должен быть установлен до: + Нет +
+
+
+
+ +
+
+ Необязательные зависимости: + Нет +
+
+
+

+ Gzip +

+
+ +
+
+ Установка зависит от: + Bash, Binutils, Coreutils, GCC, Glibc, + Grep, Make, Sed и Texinfo +
+
+
+
+ +
+
+ Требуется во время выполнения: + Bash и Glibc +
+
+
+
+ +
+
+ Набор тестов зависит от: + Diffutils и Less +
+
+
+
+ +
+
+ Должен быть установлен до: + Man-DB +
+
+
+
+ +
+
+ Необязательные зависимости: + Нет +
+
+
+

+ Iana-Etc +

+
+ +
+
+ Установка зависит от: + Coreutils +
+
+
+
+ +
+
+ Требуется во время выполнения: + Нет +
+
+
+
+ +
+
+ Набор тестов зависит от: + Набор тестов недоступен +
+
+
+
+ +
+
+ Должен быть установлен до: + Perl +
+
+
+
+ +
+
+ Необязательные зависимости: + Нет +
+
+
+

+ Inetutils +

+
+ +
+
+ Установка зависит от: + Bash, Binutils, Coreutils, GCC, Glibc, + Grep, Make, Ncurses, Patch, Sed, Texinfo и Zlib +
+
+
+
+ +
+
+ Требуется во время выполнения: + GCC, Glibc, Ncurses и Readline +
+
+
+
+ +
+
+ Набор тестов зависит от: + Нет +
+
+
+
+ +
+
+ Должен быть установлен до: + Tar +
+
+
+
+ +
+
+ Необязательные зависимости: + Нет +
+
+
+

+ Intltool +

+
+ +
+
+ Установка зависит от: + Bash, Gawk, Glibc, Make, Perl, Sed и + XML::Parser +
+
+
+
+ +
+
+ Требуется во время выполнения: + Autoconf, Automake, Bash, Glibc, Grep, Perl + и Sed +
+
+
+
+ +
+
+ Набор тестов зависит от: + Perl +
+
+
+
+ +
+
+ Должен быть установлен до: + Нет +
+
+
+
+ +
+
+ Необязательные зависимости: + Нет +
+
+
+

+ IProute2 +

+
+ +
+
+ Установка зависит от: + Bash, Bison, Coreutils, Flex, GCC, Glibc, + Make, Libcap, Libelf, Linux API Headers и Zlib +
+
+
+
+ +
+
+ Требуется во время выполнения: + Bash, Coreutils, Glibc, Libcap, Libelf и + Zlib +
+
+
+
+ +
+
+ Набор тестов зависит от: + Набор тестов недоступен +
+
+
+
+ +
+
+ Должен быть установлен до: + Нет +
+
+
+
+ +
+
+ Необязательные зависимости: + + Berkeley DB, + iptables, libbpf, + libmnl и + libtirpc +
+
+
+

+ Jinja2 +

+
+ +
+
+ Установка зависит от: + MarkupSafe, Python, Setuptools и + Wheel +
+
+
+
+ +
+
+ Требуется во время выполнения: + MarkupSafe и Python +
+
+
+
+ +
+
+ Набор тестов зависит от: + Набор тестов недоступен +
+
+
+
+ +
+
+ Должен быть установлен до: + Udev +
+
+
+
+ +
+
+ Необязательные зависимости: + Нет +
+
+
+

+ Kbd +

+
+ +
+
+ Установка зависит от: + Bash, Binutils, Bison, Check, Coreutils, + Flex, GCC, Gettext, Glibc, Gzip, Make, Patch и Sed +
+
+
+
+ +
+
+ Требуется во время выполнения: + Bash, Coreutils и Glibc +
+
+
+
+ +
+
+ Набор тестов зависит от: + Нет +
+
+
+
+ +
+
+ Должен быть установлен до: + Нет +
+
+
+
+ +
+
+ Необязательные зависимости: + + Linux-PAM +
+
+
+

+ Kmod +

+
+ +
+
+ Установка зависит от: + Bash, Binutils, Bison, Coreutils, Flex, + GCC, Gettext, Glibc, Gzip, Make, OpenSSL, Pkg-config, Sed, Xz и + Zlib +
+
+
+
+ +
+
+ Требуется во время выполнения: + Glibc, Xz и Zlib +
+
+
+
+ +
+
+ Набор тестов зависит от: + Набор тестов недоступен +
+
+
+
+ +
+
+ Должен быть установлен до: + Udev +
+
+
+
+ +
+
+ Необязательные зависимости: + Нет +
+
+
+

+ Less +

+
+ +
+
+ Установка зависит от: + Bash, Binutils, Coreutils, Diffutils, GCC, + Glibc, Grep, Make, Ncurses и Sed +
+
+
+
+ +
+
+ Требуется во время выполнения: + Glibc и Ncurses +
+
+
+
+ +
+
+ Набор тестов зависит от: + Набор тестов недоступен +
+
+
+
+ +
+
+ Должен быть установлен до: + Gzip +
+
+
+
+ +
+
+ Необязательные зависимости: + + PCRE2 или + PCRE +
+
+
+

+ Libcap +

+
+ +
+
+ Установка зависит от: + Attr, Bash, Binutils, Coreutils, GCC, + Glibc, Perl, Make и Sed +
+
+
+
+ +
+
+ Требуется во время выполнения: + Glibc +
+
+
+
+ +
+
+ Набор тестов зависит от: + Нет +
+
+
+
+ +
+
+ Должен быть установлен до: + IProute2 и Shadow +
+
+
+
+ +
+
+ Необязательные зависимости: + + Linux-PAM +
+
+
+

+ Libelf +

+
+ +
+
+ Установка зависит от: + Bash, Binutils, Bzip2, Coreutils, GCC, + Glibc, Make, Xz, Zlib и Zstd +
+
+
+
+ +
+
+ Требуется во время выполнения: + Bzip2, Glibc, Xz, Zlib и Zstd +
+
+
+
+ +
+
+ Набор тестов зависит от: + Нет +
+
+
+
+ +
+
+ Должен быть установлен до: + IProute2 и Linux +
+
+
+
+ +
+
+ Необязательные зависимости: + Нет +
+
+
+

+ Libffi +

+
+ +
+
+ Установка зависит от: + Bash, Binutils, Coreutils, GCC, Glibc, Make + и Sed +
+
+
+
+ +
+
+ Требуется во время выполнения: + Glibc +
+
+
+
+ +
+
+ Набор тестов зависит от: + DejaGnu +
+
+
+
+ +
+
+ Должен быть установлен до: + Python +
+
+
+
+ +
+
+ Необязательные зависимости: + Нет +
+
+
+

+ Libpipeline +

+
+ +
+
+ Установка зависит от: + Bash, Binutils, Coreutils, Diffutils, Gawk, + GCC, Glibc, Grep, Make, Sed и Texinfo +
+
+
+
+ +
+
+ Требуется во время выполнения: + Glibc +
+
+
+
+ +
+
+ Набор тестов зависит от: + Check и Pkgconf +
+
+
+
+ +
+
+ Должен быть установлен до: + Man-DB +
+
+
+
+ +
+
+ Необязательные зависимости: + Нет +
+
+
+

+ Libtool +

+
+ +
+
+ Установка зависит от: + Bash, Binutils, Coreutils, Diffutils, Gawk, + GCC, Glibc, Grep, Make, Sed и Texinfo +
+
+
+
+ +
+
+ Требуется во время выполнения: + Autoconf, Automake, Bash, Binutils, + Coreutils, File, GCC, Glibc, Grep, Make и Sed +
+
+
+
+ +
+
+ Набор тестов зависит от: + Autoconf, Automake и Findutils +
+
+
+
+ +
+
+ Должен быть установлен до: + Нет +
+
+
+
+ +
+
+ Необязательные зависимости: + Нет +
+
+
+

+ Libxcrypt +

+
+ +
+
+ Установка зависит от: + Bash, Binutils, Coreutils, Diffutils, Gawk, + GCC, Glibc, Grep, Make, Perl и Sed +
+
+
+
+ +
+
+ Требуется во время выполнения: + Glibc +
+
+
+
+ +
+
+ Набор тестов зависит от: + Нет +
+
+
+
+ +
+
+ Должен быть установлен до: + GCC, Perl, Python, Shadow и Udev +
+
+
+
+ +
+
+ Необязательные зависимости: + Нет +
+
+
+

+ Linux +

+
+ +
+
+ Установка зависит от: + Bash, Bc, Binutils, Coreutils, Diffutils, + Findutils, GCC, Glibc, Grep, Gzip, Kmod, Libelf, Make, Ncurses, + OpenSSL, Perl и Sed +
+
+
+
+ +
+
+ Требуется во время выполнения: + Нет +
+
+
+
+ +
+
+ Набор тестов зависит от: + Набор тестов недоступен +
+
+
+
+ +
+
+ Должен быть установлен до: + Нет +
+
+
+
+ +
+
+ Необязательные зависимости: + + cpio и + LLVM (с Clang) +
+
+
+

+ Linux + API Headers +

+
+ +
+
+ Установка зависит от: + Bash, Binutils, Coreutils, Findutils, GCC, + Glibc, Grep, Gzip, Make, Perl и Sed +
+
+
+
+ +
+
+ Требуется во время выполнения: + Нет +
+
+
+
+ +
+
+ Набор тестов зависит от: + Набор тестов недоступен +
+
+
+
+ +
+
+ Должен быть установлен до: + Нет +
+
+
+
+ +
+
+ Необязательные зависимости: + Нет +
+
+
+

+ M4 +

+
+ +
+
+ Установка зависит от: + Bash, Binutils, Coreutils, GCC, Glibc, + Grep, Make, Sed и Texinfo +
+
+
+
+ +
+
+ Требуется во время выполнения: + Bash и Glibc +
+
+
+
+ +
+
+ Набор тестов зависит от: + Diffutils +
+
+
+
+ +
+
+ Должен быть установлен до: + Autoconf и Bison +
+
+
+
+ +
+
+ Необязательные зависимости: + + libsigsegv +
+
+
+

+ Make +

+
+ +
+
+ Установка зависит от: + Bash, Binutils, Coreutils, GCC, Gettext, + Glibc, Grep, Make, Sed, и Texinfo +
+
+
+
+ +
+
+ Требуется во время выполнения: + Glibc +
+
+
+
+ +
+
+ Набор тестов зависит от: + Perl и Procps-ng +
+
+
+
+ +
+
+ Должен быть установлен до: + Нет +
+
+
+
+ +
+
+ Необязательные зависимости: + + Guile +
+
+
+

+ Man-DB +

+
+ +
+
+ Установка зависит от: + Bash, Binutils, Bzip2, Coreutils, Flex, + GCC, GDBM, Gettext, Glibc, Grep, Groff, Gzip, Less, Libpipeline, + Make, Pkgconf, Sed, и Xz +
+
+
+
+ +
+
+ Требуется во время выполнения: + Bash, GDBM, Groff, Glibc, Gzip, Less, + Libpipeline и Zlib +
+
+
+
+ +
+
+ Набор тестов зависит от: + Util-linux +
+
+
+
+ +
+
+ Должен быть установлен до: + Нет +
+
+
+
+ +
+
+ Необязательные зависимости: + + libseccomp и po4a +
+
+
+

+ Man-Pages +

+
+ +
+
+ Установка зависит от: + Bash, Coreutils и Make +
+
+
+
+ +
+
+ Требуется во время выполнения: + Нет +
+
+
+
+ +
+
+ Набор тестов зависит от: + Набор тестов недоступен +
+
+
+
+ +
+
+ Должен быть установлен до: + Нет +
+
+
+
+ +
+
+ Необязательные зависимости: + Нет +
+
+
+

+ MarkupSafe +

+
+ +
+
+ Установка зависит от: + Python, Setuptools и Wheel +
+
+
+
+ +
+
+ Требуется во время выполнения: + Python +
+
+
+
+ +
+
+ Набор тестов зависит от: + Набор тестов недоступен +
+
+
+
+ +
+
+ Должен быть установлен до: + Jinja2 +
+
+
+
+ +
+
+ Необязательные зависимости: + Нет +
+
+
+

+ Meson +

+
+ +
+
+ Установка зависит от: + Ninja, Python, Setuptools и Wheel +
+
+
+
+ +
+
+ Требуется во время выполнения: + Python +
+
+
+
+ +
+
+ Набор тестов зависит от: + Набор тестов недоступен +
+
+
+
+ +
+
+ Должен быть установлен до: + Udev +
+
+
+
+ +
+
+ Необязательные зависимости: + Нет +
+
+
+

+ MPC +

+
+ +
+
+ Установка зависит от: + Bash, Binutils, Coreutils, Diffutils, Gawk, + GCC, Glibc, Grep, GMP, Make, MPFR, Sed и Texinfo +
+
+
+
+ +
+
+ Требуется во время выполнения: + Glibc, GMP и MPFR +
+
+
+
+ +
+
+ Набор тестов зависит от: + Нет +
+
+
+
+ +
+
+ Должен быть установлен до: + GCC +
+
+
+
+ +
+
+ Необязательные зависимости: + Нет +
+
+
+

+ MPFR +

+
+ +
+
+ Установка зависит от: + Bash, Binutils, Coreutils, Diffutils, Gawk, + GCC, Glibc, Grep, GMP, Make, Sed и Texinfo +
+
+
+
+ +
+
+ Требуется во время выполнения: + Glibc и GMP +
+
+
+
+ +
+
+ Набор тестов зависит от: + Нет +
+
+
+
+ +
+
+ Должен быть установлен до: + Gawk и GCC +
+
+
+
+ +
+
+ Необязательные зависимости: + Нет +
+
+
+

+ Ncurses +

+
+ +
+
+ Установка зависит от: + Bash, Binutils, Coreutils, Diffutils, Gawk, + GCC, Glibc, Grep, Make, Patch и Sed +
+
+
+
+ +
+
+ Требуется во время выполнения: + Glibc +
+
+
+
+ +
+
+ Набор тестов зависит от: + Набор тестов недоступен +
+
+
+
+ +
+
+ Должен быть установлен до: + Bash, GRUB, Inetutils, Less, Procps-ng, + Psmisc, Readline, Texinfo, Util-linux и Vim +
+
+
+
+ +
+
+ Необязательные зависимости: + Нет +
+
+
+

+ Ninja +

+
+ +
+
+ Установка зависит от: + Binutils, Coreutils, GCC и Python +
+
+
+
+ +
+
+ Требуется во время выполнения: + GCC и Glibc +
+
+
+
+ +
+
+ Набор тестов зависит от: + Нет +
+
+
+
+ +
+
+ Должен быть установлен до: + Meson +
+
+
+
+ +
+
+ Необязательные зависимости: + + Asciidoc, + Doxygen, + Emacs и re2c +
+
+
+

+ OpenSSL +

+
+ +
+
+ Установка зависит от: + Binutils, Coreutils, GCC, Make и + Perl +
+
+
+
+ +
+
+ Требуется во время выполнения: + Glibc и Perl +
+
+
+
+ +
+
+ Набор тестов зависит от: + Нет +
+
+
+
+ +
+
+ Должен быть установлен до: + Coreutils, Kmod, Linux и Udev +
+
+
+
+ +
+
+ Необязательные зависимости: + Нет +
+
+
+

+ Patch +

+
+ +
+
+ Установка зависит от: + Attr, Bash, Binutils, Coreutils, GCC, + Glibc, Grep, Make и Sed +
+
+
+
+ +
+
+ Требуется во время выполнения: + Attr и Glibc +
+
+
+
+ +
+
+ Набор тестов зависит от: + Diffutils +
+
+
+
+ +
+
+ Должен быть установлен до: + Нет +
+
+
+
+ +
+
+ Необязательные зависимости: + + Ed +
+
+
+

+ Perl +

+
+ +
+
+ Установка зависит от: + Bash, Binutils, Coreutils, Gawk, GCC, GDBM, + Glibc, Grep, Libxcrypt, Make, Sed и Zlib +
+
+
+
+ +
+
+ Требуется во время выполнения: + GDBM, Glibc и Libxcrypt +
+
+
+
+ +
+
+ Набор тестов зависит от: + Iana-Etc, Less и Procps-ng +
+
+
+
+ +
+
+ Должен быть установлен до: + Autoconf +
+
+
+
+ +
+
+ Необязательные зависимости: + + Berkeley DB +
+
+
+

+ Pkgconf +

+
+ +
+
+ Установка зависит от: + Bash, Binutils, Coreutils, Gawk, GCC, + Glibc, Grep, Make, и Sed +
+
+
+
+ +
+
+ Требуется во время выполнения: + Glibc +
+
+
+
+ +
+
+ Набор тестов зависит от: + Нет +
+
+
+
+ +
+
+ Должен быть установлен до: + Binutils, E2fsprogs, IProute2, Kmod, + Man-DB, Procps-ng, Python, Udev и + Util-linux +
+
+
+
+ +
+
+ Необязательные зависимости: + Нет +
+
+
+

+ Procps-ng +

+
+ +
+
+ Установка зависит от: + Bash, Binutils, Coreutils, GCC, Glibc, + Make, Ncurses, и Pkgconf +
+
+
+
+ +
+
+ Требуется во время выполнения: + Glibc +
+
+
+
+ +
+
+ Набор тестов зависит от: + DejaGNU +
+
+
+
+ +
+
+ Должен быть установлен до: + Нет +
+
+
+
+ +
+
+ Необязательные зависимости: + + elogind +
+
+
+

+ Psmisc +

+
+ +
+
+ Установка зависит от: + Bash, Binutils, Coreutils, GCC, Gettext, + Glibc, Grep, Make, Ncurses и Sed +
+
+
+
+ +
+
+ Требуется во время выполнения: + Glibc и Ncurses +
+
+
+
+ +
+
+ Набор тестов зависит от: + Набор тестов недоступен +
+
+
+
+ +
+
+ Должен быть установлен до: + Нет +
+
+
+
+ +
+
+ Необязательные зависимости: + Нет +
+
+
+

+ Python +

+
+ +
+
+ Установка зависит от: + Bash, Binutils, Coreutils, Expat, GCC, + Gdbm, Gettext, Glibc, Grep, Libffi, Libxcrypt, Make, Ncurses, + OpenSSL, Pkgconf, Sed и Util-linux +
+
+
+
+ +
+
+ Требуется во время выполнения: + Bzip2, Expat, Gdbm, Glibc, Libffi, + Libxcrypt, Ncurses, OpenSSL и Zlib +
+
+
+
+ +
+
+ Набор тестов зависит от: + GDB и Valgrind +
+
+
+
+ +
+
+ Должен быть установлен до: + Ninja +
+
+
+
+ +
+
+ Необязательные зависимости: + + Berkeley DB, + libnsl, + SQLite и + Tk +
+
+
+

+ Readline +

+
+ +
+
+ Установка зависит от: + Bash, Binutils, Coreutils, Gawk, GCC, + Glibc, Grep, Make, Ncurses, Patch, Sed и Texinfo +
+
+
+
+ +
+
+ Требуется во время выполнения: + Glibc и Ncurses +
+
+
+
+ +
+
+ Набор тестов зависит от: + Набор тестов недоступен +
+
+
+
+ +
+
+ Должен быть установлен до: + Bash, Bc и Gawk +
+
+
+
+ +
+
+ Необязательные зависимости: + Нет +
+
+
+

+ Sed +

+
+ +
+
+ Установка зависит от: + Bash, Binutils, Coreutils, GCC, Gettext, + Glibc, Grep, Make, Sed, и Texinfo +
+
+
+
+ +
+
+ Требуется во время выполнения: + Acl, Attr и Glibc +
+
+
+
+ +
+
+ Набор тестов зависит от: + Diffutils и Gawk +
+
+
+
+ +
+
+ Должен быть установлен до: + E2fsprogs, File, Libtool и Shadow +
+
+
+
+ +
+
+ Необязательные зависимости: + Нет +
+
+
+

+ Setuptools +

+
+ +
+
+ Установка зависит от: + Python и Wheel +
+
+
+
+ +
+
+ Требуется во время выполнения: + Python +
+
+
+
+ +
+
+ Набор тестов зависит от: + Набор тестов недоступен +
+
+
+
+ +
+
+ Должен быть установлен до: + Jinja2, MarkupSafe и Meson +
+
+
+
+ +
+
+ Необязательные зависимости: + Нет +
+
+
+

+ Shadow +

+
+ +
+
+ Установка зависит от: + Acl, Attr, Bash, Binutils, Coreutils, + Diffutils, Findutils, Gawk, GCC, Gettext, Glibc, Grep, Libcap, + Libxcrypt, Make и Sed +
+
+
+
+ +
+
+ Требуется во время выполнения: + Glibc и Libxcrypt +
+
+
+
+ +
+
+ Набор тестов зависит от: + Набор тестов недоступен +
+
+
+
+ +
+
+ Должен быть установлен до: + Coreutils +
+
+
+
+ +
+
+ Необязательные зависимости: + + CrackLib и + Linux-PAM +
+
+
+

+ Sysklogd +

+
+ +
+
+ Установка зависит от: + Binutils, Coreutils, GCC, Glibc, Make и + Patch +
+
+
+
+ +
+
+ Требуется во время выполнения: + Glibc +
+
+
+
+ +
+
+ Набор тестов зависит от: + Набор тестов недоступен +
+
+
+
+ +
+
+ Должен быть установлен до: + Нет +
+
+
+
+ +
+
+ Необязательные зависимости: + Нет +
+
+
+

+ Sysvinit +

+
+ +
+
+ Установка зависит от: + Binutils, Coreutils, GCC, Glibc, Make и + Sed +
+
+
+
+ +
+
+ Требуется во время выполнения: + Glibc +
+
+
+
+ +
+
+ Набор тестов зависит от: + Набор тестов недоступен +
+
+
+
+ +
+
+ Должен быть установлен до: + Нет +
+
+
+
+ +
+
+ Необязательные зависимости: + Нет +
+
+
+

+ Tar +

+
+ +
+
+ Установка зависит от: + Acl, Attr, Bash, Binutils, Bison, + Coreutils, GCC, Gettext, Glibc, Grep, Inetutils, Make, Sed и + Texinfo +
+
+
+
+ +
+
+ Требуется во время выполнения: + Acl, Attr, Bzip2, Glibc, Gzip и Xz +
+
+
+
+ +
+
+ Набор тестов зависит от: + Autoconf, Diffutils, Findutils, Gawk и + Gzip +
+
+
+
+ +
+
+ Должен быть установлен до: + Нет +
+
+
+
+ +
+
+ Необязательные зависимости: + Нет +
+
+
+

+ Tcl +

+
+ +
+
+ Установка зависит от: + Bash, Binutils, Coreutils, Diffutils, GCC, + Glibc, Grep, Make и Sed +
+
+
+
+ +
+
+ Требуется во время выполнения: + Glibc и Zlib +
+
+
+
+ +
+
+ Набор тестов зависит от: + Нет +
+
+
+
+ +
+
+ Должен быть установлен до: + Нет +
+
+
+
+ +
+
+ Необязательные зависимости: + Нет +
+
+
+

+ Texinfo +

+
+ +
+
+ Установка зависит от: + Bash, Binutils, Coreutils, GCC, Gettext, + Glibc, Grep, Make, Ncurses, Patch и Sed +
+
+
+
+ +
+
+ Требуется во время выполнения: + Glibc и Ncurses +
+
+
+
+ +
+
+ Набор тестов зависит от: + Нет +
+
+
+
+ +
+
+ Должен быть установлен до: + Нет +
+
+
+
+ +
+
+ Необязательные зависимости: + Нет +
+
+
+

+ Udev +

+
+ +
+
+ Установка зависит от: + Acl, Bash, Binutils, Coreutils, Diffutils, + Gawk, GCC, Glibc, Gperf, Grep, Jinja2, Libcap, Libxcrypt, Meson, + OpenSSL, Pkgconf, Sed, Util-linux и Zstd +
+
+
+
+ +
+
+ Требуется во время выполнения: + Acl, Glibc, Libcap, OpenSSL и + Util-linux +
+
+
+
+ +
+
+ Набор тестов зависит от: + Нет +
+
+
+
+ +
+
+ Должен быть установлен до: + Util-linux +
+
+
+
+ +
+
+ Необязательные зависимости: + Нет +
+
+
+

+ Util-linux +

+
+ +
+
+ Установка зависит от: + Bash, Binutils, Coreutils, Diffutils, File, + Findutils, Gawk, GCC, Gettext, Glibc, Grep, Make, Ncurses, + Pkgconf, Sed, Udev и Zlib +
+
+
+
+ +
+
+ Требуется во время выполнения: + Glibc, Ncurses, Readline, Udev и Zlib +
+
+
+
+ +
+
+ Набор тестов зависит от: + Нет +
+
+
+
+ +
+
+ Должен быть установлен до: + Нет +
+
+
+
+ +
+
+ Необязательные зависимости: + + Asciidoctor, Libcap-NG, + libeconf, libuser, libutempter, + + Linux-PAM, + smartmontools, po4a и + slang +
+
+
+

+ Vim +

+
+ +
+
+ Установка зависит от: + Acl, Attr, Bash, Binutils, Coreutils, + Diffutils, GCC, Glibc, Grep, Make, Ncurses и Sed +
+
+
+
+ +
+
+ Требуется во время выполнения: + Acl, Attr, Glibc, Python, Ncurses и + Tcl +
+
+
+
+ +
+
+ Набор тестов зависит от: + Нет +
+
+
+
+ +
+
+ Должен быть установлен до: + Нет +
+
+
+
+ +
+
+ Необязательные зависимости: + + Xorg, GTK+2, + LessTif, + Ruby и + GPM +
+
+
+

+ Wheel +

+
+ +
+
+ Установка зависит от: + Python и Flit-core +
+
+
+
+ +
+
+ Требуется во время выполнения: + Python +
+
+
+
+ +
+
+ Набор тестов зависит от: + Набор тестов недоступен +
+
+
+
+ +
+
+ Должен быть установлен до: + Jinja2, MarkupSafe, Meson и + Setuptools +
+
+
+
+ +
+
+ Необязательные зависимости: + Нет +
+
+
+

+ XML::Parser +

+
+ +
+
+ Установка зависит от: + Bash, Binutils, Coreutils, Expat, GCC, + Glibc, Make и Perl +
+
+
+
+ +
+
+ Требуется во время выполнения: + Expat, Glibc и Perl +
+
+
+
+ +
+
+ Набор тестов зависит от: + Perl +
+
+
+
+ +
+
+ Должен быть установлен до: + Intltool +
+
+
+
+ +
+
+ Необязательные зависимости: + Нет +
+
+
+

+ Xz +

+
+ +
+
+ Установка зависит от: + Bash, Binutils, Coreutils, Diffutils, GCC, + Glibc и Make +
+
+
+
+ +
+
+ Требуется во время выполнения: + Glibc +
+
+
+
+ +
+
+ Набор тестов зависит от: + Нет +
+
+
+
+ +
+
+ Должен быть установлен до: + File, GRUB, Kmod, Libelf, Man-DB и + Udev +
+
+
+
+ +
+
+ Необязательные зависимости: + Нет +
+
+
+

+ Zlib +

+
+ +
+
+ Установка зависит от: + Bash, Binutils, Coreutils, GCC, Glibc, Make + и Sed +
+
+
+
+ +
+
+ Требуется во время выполнения: + Glibc +
+
+
+
+ +
+
+ Набор тестов зависит от: + Нет +
+
+
+
+ +
+
+ Должен быть установлен до: + File, Kmod, Libelf, Perl и + Util-linux +
+
+
+
+ +
+
+ Необязательные зависимости: + Нет +
+
+
+

+ Zstd +

+
+ +
+
+ Установка зависит от: + Binutils, Coreutils, GCC, Glibc, Gzip, + Make, Xz и Zlib +
+
+
+
+ +
+
+ Требуется во время выполнения: + Glibc +
+
+
+
+ +
+
+ Набор тестов зависит от: + Нет +
+
+
+
+ +
+
+ Должен быть установлен до: + Binutils, GCC, Libelf и Udev +
+
+
+
+ +
+
+ Необязательные зависимости: + LZ4 +
+
+
+
+ + + diff --git a/lfs-12.1-sysv/appendices/licenses.html b/lfs-12.1-sysv/appendices/licenses.html new file mode 100644 index 0000000..1484731 --- /dev/null +++ b/lfs-12.1-sysv/appendices/licenses.html @@ -0,0 +1,88 @@ + + + + + + Приложение F. Лицензии LFS + + + + + + + + +

+ F. Лицензии LFS +

+
+

+ Настоящая книга распространяется на условиях лицензии Creative + Commons Attribution-NonCommercial-ShareAlike 2.0 License. +

+

+ Инструкции, предназначенные для использования на компьютере, могут + использоваться отдельно от книги на условиях лицензии MIT. +

+
+ + + diff --git a/lfs-12.1-sysv/appendices/mit.html b/lfs-12.1-sysv/appendices/mit.html new file mode 100644 index 0000000..c587a42 --- /dev/null +++ b/lfs-12.1-sysv/appendices/mit.html @@ -0,0 +1,106 @@ + + + + + + F.2. Лицензия MIT + + + + + + + + +

+ F.2. Лицензия MIT +

+
+

+ Copyright © 1999-2024 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. +

+
+ + + diff --git a/lfs-12.1-sysv/chapter01/askforhelp.html b/lfs-12.1-sysv/chapter01/askforhelp.html new file mode 100644 index 0000000..be55c09 --- /dev/null +++ b/lfs-12.1-sysv/chapter01/askforhelp.html @@ -0,0 +1,263 @@ + + + + + + 1.5. Помощь + + + + + + + + +

+ 1.5. Помощь +

+
+
+ [Примечание] +

+ Примечание +

+

+ Если вы столкнулись с проблемой при сборки одного пакета с помощью + инструкцией из LFS, мы настоятельно не рекомендуем публиковать + проблему непосредственно в канале поддержки разработчиков пакета до + обсуждения через канал поддержки LFS, указанный в Раздел 1.4, + «Ресурсы». Часто это неэффективно, потому что разработчики + редко знакомы с процедурой сборки LFS. Даже если вы действительно + столкнулись с проблемой в пакете, сообщество LFS все равно может + помочь выделить информацию, необходимую специалистам по поддержке + пакета, и составить соответствующий отчет. +

+

+ Если вам нужно задать вопрос напрямую через канал поддержки пакета, + вы должны, по крайней мере, понимать, что многие проекты имеют + каналы поддержки, отделенные от системы отслеживания ошибок. Отчеты + об «ошибках» + при отправке вопросов считаются недействительными и могут + раздражать разработчиков этих проектов. +

+
+

+ Если при работе с этой книгой у вас возникнут проблемы или вопросы, + посетите страницу часто задаваемых вопросов по адресу https://mirror.linuxfromscratch.ru/faq/#generalfaq. + Часто там уже есть ответы на большинство вопросов. Если на этой + странице нет ответа на ваш вопрос, попробуйте самостоятельно найти + источник проблемы. Следующий документ даст вам некоторые рекомендации + по устранению неполадок: + https://mirror.linuxfromscratch.ru/hints/downloads/files/errors.txt. +

+

+ Если вы не можете найти решение своей проблемы в разделе часто + задаваемых вопросов, выполните поиск в списках рассылки по адресу + https://mirror.linuxfromscratch.ru/search.html. +

+

+ У нас также есть замечательное сообщество LFS, которое готово + предложить помощь через списки рассылки и IRC (см. Раздел 1.4, + «Ресурсы» этой книги). Мы получаем много вопросов в службу + поддержки каждый день, и на многие из них можно легко ответить, зайдя + в раздел часто задаваемых вопросов и предварительно выполнив поиск в + списках рассылки. Чтобы мы могли оказать помощь, вам необходимо + сначала провести самостоятельное исследование. Это позволяет нам + сосредоточиться на более сложных вопросах в поддержке. Если ваши + поиски не привели к решению проблемы, включите всю необходимую + информацию (упомянутую ниже) в свой запрос о помощи. +

+
+

+ 1.5.1. Что следует упомянуть +

+

+ Помимо краткого объяснения возникшей проблемы, в любой запрос о + помощи необходимо включить следующую важную информацию: +

+
+
    +
  • +

    + Используемая версия книги (в данном случае 12.1) +

    +
  • +
  • +

    + Информацию о дистрибутиве и его версия, используемые для + сборки LFS +

    +
  • +
  • +

    + Вывод сценария Системные + требования к хостовой машине +

    +
  • +
  • +

    + Пакет или раздел где возникла проблема +

    +
  • +
  • +

    + Точное сообщение об ошибке или четкое описание проблемы +

    +
  • +
  • +

    + Обратите внимание, отклонялись ли вы от книги +

    +
  • +
+
+
+ [Примечание] +

+ Примечание +

+

+ Отклонение от этой книги не означает, что мы не поможем вам. В + конце концов, LFS зависит от личных предпочтений. + Заблаговременное информирование о любых изменениях в процессе + сборки помогает нам оценить и определить возможные причины вашей + проблемы +

+
+
+
+

+ 1.5.2. Проблемы со скриптом configure +

+

+ Если что-то пойдет не так во время выполнения скрипта configure, просмотрите файл + config.log. Этот файл может содержать + ошибки, обнаруженные во время настройки, которые не были выведены + на экран. Включите соответствующие строки, если вам нужно + обратиться за помощью. +

+
+
+

+ 1.5.3. Проблемы компиляции +

+

+ Как вывод на экран, так и содержимое различных файлов полезны для + определения причины проблем компиляции. Вывод экрана из скрипта + configure и запуска + make может быть + полезен. Необязательно включать весь вывод целиком, но обязательно + включите всю необходимую информацию. Ниже приведен пример + информации, которая должна быть включена в экранный вывод + 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
+

+ В этом случае многие люди просто включили бы только нижнюю часть: +

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

+ Этой информации недостаточно, чтобы правильно диагностировать + проблему, потому что она только указывает на то, что что-то пошло + не так, а не на то, что + пошло не так. Весь раздел, как в приведенном выше примере, должен + быть сохранен, так как он включает в себя выполненную команду и все + связанные с ней сообщения об ошибках. +

+

+ Отличная статья о том, как обращаться за помощью в Интернете, + доступна по адресу http://catb.org/~esr/faqs/smart-questions.html. + Прочтите этот документ и следуйте советам, чтобы повысить + вероятность получения помощи в которой вы нуждаетесь. +

+
+
+ + + diff --git a/lfs-12.1-sysv/chapter01/changelog.html b/lfs-12.1-sysv/chapter01/changelog.html new file mode 100644 index 0000000..8fbed91 --- /dev/null +++ b/lfs-12.1-sysv/chapter01/changelog.html @@ -0,0 +1,1242 @@ + + + + + + 1.3. Журнал изменений + + + + + + + + +

+ 1.3. Журнал + изменений +

+
+

+ Это версия 12.1 книги Linux From Scratch от 1 марта 2024. Если этой + книге больше шести месяцев, возможно, уже доступна более новая, + улучшенная версия. Чтобы узнать это, проверьте одно из зеркал + https://mirror.linuxfromscratch.ru/mirrors.html. +

+

+ Ниже приведен список изменений, внесенных с момента предыдущего + выпуска книги. +

+
+

+ Список изменений: +

+
    +
  • +

    + 2024-02-14 +

    +
    +
      +
    • +

      + [bdubbs] - Update to meson-1.3.2. Fixes #5442. +

      +
    • +
    +
    +
  • +
  • +

    + 2024-02-12 +

    +
    +
      +
    • +

      + [bdubbs] - Update to shadow-4.14.5. Fixes #5437. +

      +
    • +
    • +

      + [bdubbs] - Update to setuptools-69.1.0 (Python module). + Fixes #5439. +

      +
    • +
    • +

      + [bdubbs] - Update to python-3.12.2. Fixes #5434. +

      +
    • +
    • +

      + [bdubbs] - Update to pkgconf-2.1.1. Fixes #5432. +

      +
    • +
    • +

      + [bdubbs] - Update to MarkupSafe-2.1.5 (Python module). + Fixes #5431. +

      +
    • +
    • +

      + [bdubbs] - Update to man-pages-6.06. Fixes #5438. +

      +
    • +
    • +

      + [bdubbs] - Update to expat-2.6.0. Fixes #5435. +

      +
    • +
    • +

      + [bdubbs] - Update to linux-6.7.4. Fixes #5433. +

      +
    • +
    +
    +
  • +
  • +

    + 2024-02-02 +

    +
    +
      +
    • +

      + [xry111] - Update to tzdata-2024a. Fixes #5428. +

      +
    • +
    • +

      + [xry111] - Update to glibc-2.39 (security fix). Fixes + #5426. +

      +
    • +
    • +

      + [xry111] - Update to linux-6.7.3. Fixes #5427. +

      +
    • +
    +
    +
  • +
  • +

    + 2024-02-01 +

    +
    +
      +
    • +

      + [bdubbs] - Update to openssl-3.2.1 (security fix). Fixes + #5425. +

      +
    • +
    • +

      + [bdubbs] - Update to zlib-1.3.1. Fixes #5419. +

      +
    • +
    • +

      + [bdubbs] - Update to xz-5.4.6. Fixes #5423. +

      +
    • +
    • +

      + [bdubbs] - Update to linux-6.7.2. Fixes #5422. +

      +
    • +
    • +

      + [bdubbs] - Update to iana-etc-20240125. Addresses + #5006. +

      +
    • +
    • +

      + [bdubbs] - Update to binutils-2.42. Fixes #5424. +

      +
    • +
    • +

      + [bdubbs] - Update to acl-2.3.2. Fixes #5421. +

      +
    • +
    • +

      + [bdubbs] - Update upstream fixes for readline-8.2. Fixes + #5420. +

      +
    • +
    • +

      + [bdubbs] - Apply upstream fix for bash-5.2.21. Fixes + #5420. +

      +
    • +
    +
    +
  • +
  • +

    + 2024-01-21 +

    +
    +
      +
    • +

      + [xry111] - Apply upstream fix for pkgconf-2.1.0 + regression. Fixes #5414. +

      +
    • +
    • +

      + [xry111] - Update to jinja2-3.1.3 (security fix). Fixes + #5411. +

      +
    • +
    • +

      + [xry111] - Update to bc-6.7.5. Fixes #5408. +

      +
    • +
    • +

      + [xry111] - Update to attr-2.5.2. Fixes #5412. +

      +
    • +
    • +

      + [xry111] - Update to ncurses-6.4-20230520 (security fix). + Fixes #5416. +

      +
    • +
    • +

      + [xry111] - Update to markupsafe-2.1.4. Fixes #5418. +

      +
    • +
    • +

      + [xry111] - Update to linux-6.7.1. Fixes #5406. +

      +
    • +
    • +

      + [xry111] - Update to iproute2-6.7.0. Fixes #5410. +

      +
    • +
    • +

      + [xry111] - Update to vim-9.1.0041. Addresses #4500. +

      +
    • +
    • +

      + [xry111] - Update to iana-etc-20240117. Addresses + #5006. +

      +
    • +
    • +

      + [xry111] - Update to shadow-4.14.3. Fixes #5413. +

      +
    • +
    • +

      + [xry111] - Fix CVE-2024-0684 for coreutils-9.4. Fixes + #5417. +

      +
    • +
    +
    +
  • +
  • +

    + 2024-01-18 +

    +
    +
      +
    • +

      + [xry111] - Edit a ncurses header to always use the + wide-character ABI compatible with libncursesw.so because + we are faking the 8-bit libncurses.so with it. Fixes + #5415. +

      +
    • +
    +
    +
  • +
  • +

    + 2024-01-09 +

    +
    +
      +
    • +

      + [renodr] - Fix the definition of the C.UTF-8 locale. + Fixes #5409. +

      +
    • +
    +
    +
  • +
  • +

    + 2023-12-31 +

    +
    +
      +
    • +

      + [xry111] - Add --enable-default-hash-style=gnu + configuring binutils. Fixes #5401. +

      +
    • +
    • +

      + [xry111] - Fix CVE-2023-7008 for systemd-255. Fixes + #5405. +

      +
    • +
    • +

      + [xry111] - Update to iana-etc-20231205. Addresses + #5006. +

      +
    • +
    • +

      + [xry111] - Update to tzdata-2023d. Fixes #5399. +

      +
    • +
    • +

      + [xry111] - Update to linux-6.6.8. Fixes #5397. +

      +
    • +
    • +

      + [xry111] - Update to meson-1.3.1. Fixes #5402. +

      +
    • +
    • +

      + [xry111] - Update to grub-2.12. Fixes #5396. +

      +
    • +
    • +

      + [xry111] - Update to inetutils-2.5. Fixes #5404. +

      +
    • +
    • +

      + [xry111] - Update to setuptools-69.0.3. Fixes #5400. +

      +
    • +
    • +

      + [xry111] - Update to xml-parser-2.47. Fixes #5403. +

      +
    • +
    • +

      + [xry111] - Update to vim-9.0.2189. Addresses #4500. +

      +
    • +
    • +

      + [xry111] - Update to autoconf-2.72. Fixes #5398. +

      +
    • +
    +
    +
  • +
  • +

    + 2023-12-16 +

    +
    +
      +
    • +

      + [xry111] - Update to udev + from systemd-255. Fixes #5390. +

      +
    • +
    +
    +
  • +
  • +

    + 2023-12-14 +

    +
    +
      +
    • +

      + [bdubbs] - Update to util-linux v2.39.3. Fixes #5388. +

      +
    • +
    • +

      + [bdubbs] - Update to python3-3.12.1. Fixes #5392. +

      +
    • +
    • +

      + [bdubbs] - Update to linux-6.6.7. Fixes #5387. +

      +
    • +
    • +

      + [bdubbs] - Update to kbd-2.6.4. Fixes #5393. +

      +
    • +
    • +

      + [bdubbs] - Update to bc-6.7.4. Fixes #5389. +

      +
    • +
    • +

      + [bdubbs] - Reformat util-linux configure parameters. + Fixes #5395. +

      +
    • +
    +
    +
  • +
  • +

    + 2023-12-04 +

    +
    +
      +
    • +

      + [thomas] - Modify commands for install Python docs to + avoid too restrictive permissions on the files and dirs. +

      +
    • +
    +
    +
  • +
  • +

    + 2023-12-01 +

    +
    +
      +
    • +

      + [xry111] - Restore NIC naming based on physical system + characteristics. Fixes #5386. +

      +
    • +
    +
    +
  • +
  • +

    + 2023-11-30 +

    +
    +
      +
    • +

      + [bdubbs] - Update to vim-9.0.2136. Addresses #4500. +

      +
    • +
    • +

      + [bdubbs] - Update to iana-etc-20231117. Addresses + #5006. +

      +
    • +
    • +

      + [bdubbs] - Update to bc-6.7.3. Fixes #5385. +

      +
    • +
    • +

      + [bdubbs] - Update to wheel-0.42.0 (Python Module). Fixes + #5384. +

      +
    • +
    • +

      + [bdubbs] - Update to perl-5.38.2. Fixes #5383. +

      +
    • +
    • +

      + [bdubbs] - Update to pkgconf-2.1.0. Fixes #5382. +

      +
    • +
    • +

      + [bdubbs] - Update to readline patches 002 through 007. + Fixes #5381. +

      +
    • +
    • +

      + [bdubbs] - Update to openssl-3.2.0. Fixes #5380. +

      +
    • +
    • +

      + [bdubbs] - Update to setuptools-69.0.2. Fixes #5379. +

      +
    • +
    • +

      + [bdubbs] - Update to linux-6.6.3. Fixes #5378. +

      +
    • +
    • +

      + [bdubbs] - Update to meson-1.3.0. Fixes #5377. +

      +
    • +
    • +

      + [bdubbs] - Update to gettext-0.22.4. Fixes #5376. +

      +
    • +
    +
    +
  • +
  • +

    + 2023-11-13 +

    +
    +
      +
    • +

      + [xry111] - Update to elfutils-0.190. Fixes #5373. +

      +
    • +
    • +

      + [xry111] - Update to vim-9.0.2103. Addresses #4500. +

      +
    • +
    • +

      + [xry111] - Update to linux-6.6.1. Fixes #5369. +

      +
    • +
    • +

      + [xry111] - Update to xz-5.4.5. Fixes #5371. +

      +
    • +
    • +

      + [xry111] - Update to iana-etc-20231107. Addresses + #5006. +

      +
    • +
    • +

      + [xry111] - Update to gawk-5.3.0. Fixes #5372. +

      +
    • +
    • +

      + [xry111] - Update to bash-5.2.21. Fixes #5375. +

      +
    • +
    • +

      + [xry111] - Update to iproute2-6.6.0. Fixes #5374. +

      +
    • +
    +
    +
  • +
  • +

    + 2023-11-01 +

    +
    +
      +
    • +

      + [bdubbs] - Update to iana-etc-20231019. Addresses + #5006. +

      +
    • +
    • +

      + [bdubbs] - Update to wheel-0.41.3. Fixes #5370. +

      +
    • +
    • +

      + [bdubbs] - Update to shadow-4.14.2. Fixes #5368. +

      +
    • +
    • +

      + [bdubbs] - Update to openssl-3.1.4. Fixes #5367. +

      +
    • +
    • +

      + [bdubbs] - Update to texinfo-7.1. Fixes #5364. +

      +
    • +
    • +

      + [bdubbs] - Update to meson-1.2.3. Fixes #5366. +

      +
    • +
    • +

      + [bdubbs] - Update to bc-6.7.2. Fixes #5363. +

      +
    • +
    • +

      + [bdubbs] - Update to linux-6.5.9. Fixes #5365. +

      +
    • +
    • +

      + [bdubbs] - Update to Python-3.12.0. Fixes #5357. +

      +
    • +
    • +

      + [bdubbs] - Add setuptools-68.2.2. Fixes #5358. +

      +
    • +
    +
    +
  • +
  • +

    + 2023-10-15 +

    +
    +
      +
    • +

      + [bdubbs] - Update to linux-6.5.7. Fixes #5362. +

      +
    • +
    • +

      + [bdubbs] - Update to shadow-4.14.1. Fixes #5361. +

      +
    • +
    • +

      + [bdubbs] - Update to gettext-0.22.3. Fixes #5359. +

      +
    • +
    +
    +
  • +
  • +

    + 2023-10-03 +

    +
    +
      +
    • +

      + [xry111] - Update Glibc upstream fixes patch to fix + CVE-2023-4911. +

      +
    • +
    +
    +
  • +
  • +

    + 2023-10-01 +

    +
    +
      +
    • +

      + [bdubbs] - Disable building nscd in glibc. Fixes + #5349. +

      +
    • +
    • +

      + [bdubbs] - Update to iana-etc-20230929. Addresses + #5006. +

      +
    • +
    • +

      + [bdubbs] - Update to vim-9.0.1968. Addresses #4500. +

      +
    • +
    • +

      + [bdubbs] - Update to openssl-3.1.3. Fixes #5350. +

      +
    • +
    • +

      + [bdubbs] - Update to meson-1.2.2. Fixes #5356. +

      +
    • +
    • +

      + [bdubbs] - Update to man-db-2.12.0. Fixes #5354. +

      +
    • +
    • +

      + [bdubbs] - Update to linux-6.5.5. Fixes #5352. +

      +
    • +
    • +

      + [bdubbs] - Update to kmod-31. Fixes #5355. +

      +
    • +
    • +

      + [bdubbs] - Update to kbd-2.6.3. Fixes #5361. +

      +
    • +
    • +

      + [bdubbs] - Update to gettext-0.22.2. Fixes #5348. +

      +
    • +
    • +

      + [bdubbs] - Update to bc-6.7.0. Fixes #5353. +

      +
    • +
    +
    +
  • +
  • +

    + 2023-09-24 +

    +
    +
      +
    • +

      + [xry111] - Update Glibc upstream fixes patch to plug a + memory leak introduced by the security fix. +

      +
    • +
    +
    +
  • +
  • +

    + 2023-09-17 +

    +
    +
      +
    • +

      + [xry111] - Update to linux-6.5.3. Fixes #5343. +

      +
    • +
    • +

      + [xry111] - Update to iana-etc-20230912. Addresses + #5006. +

      +
    • +
    • +

      + [xry111] - Update to iproute2-6.5.0. Fixes #5342. +

      +
    • +
    +
    +
  • +
  • +

    + 2023-09-13 +

    +
    +
      +
    • +

      + [xry111] - Fix CVE-2023-4806 for Glibc-2.38. Fixes + #5347. +

      +
    • +
    +
    +
  • +
  • +

    + 2023-09-12 +

    +
    +
      +
    • +

      + [xry111] - Fix CVE-2023-4527 for Glibc-2.38. Fixes + #5346. +

      +
    • +
    +
    +
  • +
  • +

    + 2023-09-07 +

    +
    +
      +
    • +

      + [xry111] - Fix an issue in pkgconf-2.0.3 causing BLFS + packages fail to build. Fixes #5341. +

      +
    • +
    +
    +
  • +
  • +

    + 2023-09-05 +

    +
    +
      +
    • +

      + [xry111] - Move pkgconf before binutils for binutils + building system to detect zstd properly. Fixes #5340. +

      +
    • +
    • +

      + [xry111] - Update to linux-6.5.1. Fixes #5332. +

      +
    • +
    • +

      + [xry111] - Update to pkgconf-2.0.3. Fixes #5339. +

      +
    • +
    • +

      + [xry111] - Update to dbus-1.14.10. Fixes #5337. +

      +
    • +
    +
    +
  • +
  • +

    + 2023-09-04 +

    +
    +
      +
    • +

      + [bdubbs] - Move caution regarding building by mixing + different version of LFS to General Compilation + Instructions. Fixes #5338. +

      +
    • +
    +
    +
  • +
  • +

    + 2023-09-02 +

    +
    +
      +
    • +

      + [xry111] - Add --no-cache-dir option for pip3 wheel + commands. Addresses BLFS + #18466. +

      +
    • +
    • +

      + [bdubbs] - Update to vim-9.0.1837. Addresses #4500. +

      +
    • +
    • +

      + [bdubbs] - Update to zlib-1.3. Fixes #5324. +

      +
    • +
    • +

      + [bdubbs] - Update to wheel-0.41.2 (Python Module). Fixes + #5328. +

      +
    • +
    • +

      + [bdubbs] - Update to util-linux-2.39.2. Fixes #5322. +

      +
    • +
    • +

      + [bdubbs] - Update to sysvinit-3.08. Fixes #5321. +

      +
    • +
    • +

      + [bdubbs] - Update to shadow-4.14.0. Fixes #5319. +

      +
    • +
    • +

      + [bdubbs] - Update to Python-3.11.5. Fixes #5330. +

      +
    • +
    • +

      + [bdubbs] - Update to procps-ng-4.0.4 (security fix for + 32-bit systems). Fixes #5335. +

      +
    • +
    • +

      + [bdubbs] - Update to pkgconf-2.0.2. Fixes #5323. +

      +
    • +
    • +

      + [bdubbs] - Update to mpfr-4.2.1. Fixes #5326. +

      +
    • +
    • +

      + [bdubbs] - Update to kbd-2.6.2. Fixes #5318. +

      +
    • +
    • +

      + [bdubbs] - Update to gzip-1.13. Fixes #5325. +

      +
    • +
    • +

      + [bdubbs] - Update to coreutils-9.4. Fixes #5334. +

      +
    • +
    • +

      + [bdubbs] - Remove unused usb group. Fixes #5331. +

      +
    • +
    +
    +
  • +
  • +

    + 2023-09-01 +

    +
    +
      +
    • +

      + [bdubbs] - LFS-12.0 released. +

      +
    • +
    +
    +
  • +
+
+
+ + + diff --git a/lfs-12.1-sysv/chapter01/chapter01.html b/lfs-12.1-sysv/chapter01/chapter01.html new file mode 100644 index 0000000..f8756a9 --- /dev/null +++ b/lfs-12.1-sysv/chapter01/chapter01.html @@ -0,0 +1,101 @@ + + + + + + Глава 1. Введение + + + + + + + + +

+ 1. Введение +

+
+ +
+ + + diff --git a/lfs-12.1-sysv/chapter01/how.html b/lfs-12.1-sysv/chapter01/how.html new file mode 100644 index 0000000..9984dfd --- /dev/null +++ b/lfs-12.1-sysv/chapter01/how.html @@ -0,0 +1,182 @@ + + + + + + 1.1. Как собрать систему LFS + + + + + + + + +

+ 1.1. Как собрать систему + LFS +

+
+

+ Система LFS будет собрана с использованием уже установленного + дистрибутива Linux (например, Debian, OpenMandriva, Fedora или + openSUSE). Существующая система Linux (хост) будет использоваться в + качестве отправной точки для предоставления необходимых программ, + включая компилятор, компоновщик и оболочку, для создания новой + системы. Выберите опцию «разработка» во время установки дистрибутива, + чтобы получить доступ к этим инструментам. +

+
+ [Примечание] +

+ Примечание +

+

+ Существует множество способов установки дистрибутива Linux, и + значения по умолчанию обычно не оптимальны для сборки системы LFS. + Предложения по настройке дистрибутива смотрите: + https://mirror.linuxfromscratch.ru/hints/downloads/files/partitioning-for-lfs.txt. +

+
+

+ В качестве альтернативы установке отдельного дистрибутива на свой + компьютер вы можете использовать LiveCD другого дистрибутива. +

+

+ Глава 2 этой книги + содержит информацию, о том, как создать новые разделы Linux и + файловую систему, где будет скомпилирована и установлена новая + система LFS. Глава 3 содержит информацию, + о том, какие пакеты и исправления необходимо загрузить для сборки + системы LFS и как их хранить на файловой системе. Глава 4 освещает + вопросы настройки рабочего окружения. Пожалуйста, внимательно + прочитайте Глава 4, так как в + ней объясняется несколько важных моментов, о которых вам необходимо + знать, прежде чем вы начнёте работать со следующими главами. +

+

+ Глава 5 содержит информацию + об установке первоначального набора инструментов (binutils, gcc и + glibc) с использованием методов кросс-компиляции для изоляции новых + инструментов от хост-системы. +

+

+ Глава 6 + рассказывает, как выполнить кросс-компиляцию базовых утилит с + использованием только что собранного временного набора инструментов. +

+

+ В + Глава 7 будет осуществлен переход в среду chroot, где мы будет использовать + новые инструменты для сборки остальных инструментов, необходимых для + создания конечной системы. +

+

+ Эта попытка изолировать новую систему от основного дистрибутива + поначалу может показаться чрезмерной. Полное техническое обоснование + того, почему это сделано именно так, приведено в разделе Технические + примечания по сборочным инструментам. +

+

+ В Глава 8 + будет собрана полноценная система LFS. Еще одно преимущество среды + chroot заключается в том, что она позволяет вам продолжать + использовать хост-систему во время сборки LFS. Ожидая завершения + компиляции пакетов, вы можете продолжать пользоваться своим + компьютером в обычном режиме. +

+

+ Чтобы завершить установку, в Глава 9 происходит настройка + базовой конфигурации системы, в Глава 10 + настраиваются ядро и загрузчик. Глава 11 содержит информацию о том + как расширить возможности системы LFS. После выполнения шагов, + описанных в этой главе, компьютер будет готов к загрузке в новую + систему LFS. +

+

+ Здесь описан процесс сборки системы в двух словах. Подробная + информация о каждом шаге обсуждается в следующих главах и описаниях + пакетов. Элементы, которые кажутся сложными сейчас, будут разъяснены + позже, и все встанет на свои места, по мере прочтения книги. +

+
+ + + diff --git a/lfs-12.1-sysv/chapter01/resources.html b/lfs-12.1-sysv/chapter01/resources.html new file mode 100644 index 0000000..d9cd9da --- /dev/null +++ b/lfs-12.1-sysv/chapter01/resources.html @@ -0,0 +1,148 @@ + + + + + + 1.4. Ресурсы + + + + + + + + +

+ 1.4. Ресурсы +

+
+
+

+ 1.4.1. Часто + задаваемые вопросы +

+

+ Если во время создания системы LFS вы столкнетесь с какими-либо + ошибками, у вас возникнут какие-либо вопросы или вам кажется, что в + книге допущена опечатка, пожалуйста, для начала ознакомьтесь со + списком часто задаваемых вопросов (FAQ), расположенным по адресу + https://mirror.linuxfromscratch.ru/faq/. +

+
+
+

+ 1.4.2. + Списки рассылки +

+

+ На сервере linuxfromscratch.org + размещен ряд списков рассылки, используемых для разработки проекта + LFS. Эти списки включают, среди прочего, основные списки разработки + и поддержки. Если вы не можете найти ответ на странице часто + задаваемых вопросов, следующим шагом будет поиск решения в списках + рассылки по адресу https://mirror.linuxfromscratch.ru/search.html. +

+

+ Для получения информации о списках рассылки, способах подписки, + архивах и дополнительной информации посетите https://mirror.linuxfromscratch.ru/mail.html. +

+
+
+

+ 1.4.3. IRC +

+

+ Некоторые члены сообщества LFS предлагают помощь в Internet Relay + Chat (IRC). Прежде чем воспользоваться этим способом, убедитесь, + что на ваш вопрос еще нет ответа в разделе часто задаваемых + вопросов LFS или в архивах списков рассылки. Вы можете найти нас в + irc.libera.chat. Канал поддержки + называется #lfs-support. +

+
+
+

+ 1.4.4. Зеркала + проекта +

+

+ Проект LFS имеет несколько зеркал по всему миру, чтобы сделать + доступ к веб-сайту и загрузку необходимых пакетов более удобными. + Пожалуйста, посетите веб-сайт LFS по адресу https://mirror.linuxfromscratch.ru/mirrors.html + для получения списка текущих зеркал. +

+
+
+

+ 1.4.5. + Контактная информация +

+

+ Пожалуйста, направляйте все свои вопросы и комментарии в один из + списков рассылки LFS (см. выше). +

+
+
+ + + diff --git a/lfs-12.1-sysv/chapter01/whatsnew.html b/lfs-12.1-sysv/chapter01/whatsnew.html new file mode 100644 index 0000000..b237943 --- /dev/null +++ b/lfs-12.1-sysv/chapter01/whatsnew.html @@ -0,0 +1,356 @@ + + + + + + 1.2. Что нового с момента последнего релиза + + + + + + + + +

+ 1.2. Что нового + с момента последнего релиза +

+
+

+ Ниже приведен список пакетов, обновленных с момента предыдущего + выпуска книги. +

+
+

+ Обновлены: +

+
    +
  • +

    + Acl-2.3.2 +

    +
  • +
  • +

    + Attr-2.5.2 +

    +
  • +
  • +

    + Autoconf-2.72 +

    +
  • +
  • +

    + Bash-5.2.21 +

    +
  • +
  • +

    + Bc-6.7.5 +

    +
  • +
  • +

    + Binutils-2.42 +

    +
  • +
  • +

    + Coreutils-9.4 +

    +
  • +
  • +

    + Expat-2.6.0 +

    +
  • +
  • +

    + Gawk-5.3.0 +

    +
  • +
  • +

    + Gettext-0.22.4 +

    +
  • +
  • +

    + Glibc-2.39 +

    +
  • +
  • +

    + GRUB-2.12 +

    +
  • +
  • +

    + Gzip-1.13 +

    +
  • +
  • +

    + Iana-Etc-20240125 +

    +
  • +
  • +

    + Inetutils-2.5 +

    +
  • +
  • +

    + IPRoute2-6.7.0 +

    +
  • +
  • +

    + Jinja2-3.1.3 +

    +
  • +
  • +

    + Kbd-2.6.4 +

    +
  • +
  • +

    + Kmod-31 +

    +
  • +
  • +

    + Libelf из Elfutils-0.190 +

    +
  • +
  • +

    + Linux-6.7.4 +

    +
  • +
  • +

    + Man-DB-2.12.0 +

    +
  • +
  • +

    + Man-pages-6.06 +

    +
  • +
  • +

    + MarkupSafe-2.1.5 +

    +
  • +
  • +

    + Meson-1.3.2 +

    +
  • +
  • +

    + MPFR-4.2.1 +

    +
  • +
  • +

    + Ncurses-6.4-20230520 +

    +
  • +
  • +

    + OpenSSL-3.2.1 +

    +
  • +
  • +

    + Perl-5.38.2 +

    +
  • +
  • +

    + Pkgconf-2.1.1 +

    +
  • +
  • +

    + Procps-ng-4.0.4 +

    +
  • +
  • +

    + Python-3.12.2 +

    +
  • +
  • +

    + Setuptools-69.1.0 +

    +
  • +
  • +

    + Shadow-4.14.5 +

    +
  • +
  • +

    + SysVinit-3.08 +

    +
  • +
  • +

    + Texinfo-7.1 +

    +
  • +
  • +

    + Tzdata-2024a +

    +
  • +
  • +

    + Util-Linux-2.39.3 +

    +
  • +
  • +

    + Vim-9.1.0041 +

    +
  • +
  • +

    + wheel-0.42.0 +

    +
  • +
  • +

    + XML::Parser-2.47 +

    +
  • +
  • +

    + Xz-5.4.6 +

    +
  • +
  • +

    + Zlib-1.3.1 +

    +
  • +
+
+
+

+ Добавлены: +

+
    +
  • +

    + bash-5.2.21-upstream_fixes-1.patch +

    +
  • +
  • +

    + readline-8.2-upstream_fixes-3.patch +

    +
  • +
  • +

    + setuptools-69.1.0 +

    +
  • +
  • +

    + systemd-255-upstream_fixes-1.patch +

    +
  • +
+
+
+

+ Удалены: +

+
    +
  • +

    + glibc-2.38-memalign_fix-1.patch +

    +
  • +
  • +

    + grub-2.06-upstream_fixes-1.patch +

    +
  • +
  • +

    + readline-8.2-upstream_fix-1.patch +

    +
  • +
+
+
+ + + diff --git a/lfs-12.1-sysv/chapter02/aboutlfs.html b/lfs-12.1-sysv/chapter02/aboutlfs.html new file mode 100644 index 0000000..4530d9f --- /dev/null +++ b/lfs-12.1-sysv/chapter02/aboutlfs.html @@ -0,0 +1,156 @@ + + + + + + 2.6. Установка переменной $LFS + + + + + + + + +

+ 2.6. Установка переменной $LFS +

+
+

+ В этой книге переменная окружения LFS + будет использоваться несколько раз. Вы должны убедиться, что эта + переменная всегда определена в процессе сборки LFS. Она должна быть + установлена на каталог, в котором вы будете создавать свою систему + LFS — мы, для примера, будем использовать /mnt/lfs, но вы можете выбрать любой другой. Если + вы собираете LFS на отдельном разделе, этот каталог будет точкой + монтирования для раздела. Выберите расположение каталога и установите + переменную с помощью следующей команды: +

+
export LFS=/mnt/lfs
+

+ Установка этой переменной полезна тем, что такие команды, как + mkdir -v $LFS/tools, + можно вводить буквально. Оболочка автоматически заменит «$LFS» на «/mnt/lfs» (или любое + другое значение переменной) при обработке команды. +

+
+ [Внимание] +

+ Внимание +

+

+ Не забывайте проверять, что переменная LFS установлена, всякий раз, когда вы покидаете и + снова входите в текущую рабочую среду (например, когда выполняете + su для root или другого пользователя). Убедитесь, что + переменная LFS настроена правильно: +

+
echo $LFS
+

+ Убедитесь, что в выходных данных указан путь к местоположению + сборки вашей системы LFS, то есть /mnt/lfs, если вы следовали примеру. Если вывод + неверен, используйте команду, указанную ранее, чтобы установить + $LFS в правильное значение каталога LFS. +

+
+
+ [Примечание] +

+ Примечание +

+

+ Один из способов гарантировать, что переменная LFS всегда установлена, — отредактировать файл + .bash_profile как в вашем личном + домашнем каталоге, так и в /root/.bash_profile и добавить приведенную выше + команду экспорта. Кроме того, оболочка, указанная в файле + /etc/passwd для всех пользователей, + которым нужна переменная LFS, должна + быть bash, чтобы гарантировать, что файл /root/.bash_profile используется как часть + процесса входа в систему. +

+

+ Еще один способ, который используется для входа в хост-систему. При + входе в систему через диспетчер графического дисплея + пользовательский .bash_profile не + используется при запуске виртуального терминала. В этом случае + добавьте команду экспорта в файл .bashrc для своего пользователя и root. Кроме того, некоторые дистрибутивы + используют тест "if" и не запускают оставшиеся инструкции + .bashrc для не интерактивного вызова + bash. Обязательно разместите команду экспорта перед тестом для не + интерактивного использования. +

+
+
+ + + diff --git a/lfs-12.1-sysv/chapter02/chapter02.html b/lfs-12.1-sysv/chapter02/chapter02.html new file mode 100644 index 0000000..fa5690e --- /dev/null +++ b/lfs-12.1-sysv/chapter02/chapter02.html @@ -0,0 +1,110 @@ + + + + + + Глава 2. Подготовка хост-системы + + + + + + + + +

+ 2. + Подготовка хост-системы +

+
+ +
+ + + diff --git a/lfs-12.1-sysv/chapter02/creatingfilesystem.html b/lfs-12.1-sysv/chapter02/creatingfilesystem.html new file mode 100644 index 0000000..56eec58 --- /dev/null +++ b/lfs-12.1-sysv/chapter02/creatingfilesystem.html @@ -0,0 +1,167 @@ + + + + + + 2.5. Создание файловой системы на разделе + + + + + + + + +

+ 2.5. Создание файловой системы + на разделе +

+
+

+ Раздел - это всего лишь диапазон секторов на диске, указанный в + таблице разделов. Прежде чем операционная система сможет использовать + раздел для хранения каких-либо файлов, он должен быть отформатирован, + чтобы содержать файловую систему, обычно состоящую из метки, блоков + каталогов, блоков данных и схемы индексации для поиска конкретного + файла по запросу. Файловая система также помогает операционной + системе отслеживать свободное пространство на разделе, резервировать + необходимые секторы при создании нового файла или расширении + существующего и повторно использует свободные сегменты данных, + полученные в результате удаления файлов. Она также может обеспечивать + поддержку избыточности данных и восстановления после ошибок. +

+

+ LFS может использовать любую файловую систему, распознаваемую ядром + Linux, но наиболее распространенными типами являются ext3 и ext4. + Выбор правильной файловой системы может быть сложным; это зависит от + характеристик файлов и размера раздела. Например: +

+
+
+
+ ext2 +
+
+

+ подходит для небольших разделов, которые редко обновляются, + например /boot. +

+
+
+ ext3 +
+
+

+ это обновленная файловая система ext2, которая включает в себя + журнал, помогающий восстановить состояние раздела в случае + некорректного завершения работы. Обычно используется в качестве + файловой системы общего назначения. +

+
+
+ ext4 +
+
+

+ является последней версией файловых систем семейства ext. Она + предоставляет несколько новых возможностей, включая временные + метки с точностью до наносекунды, создание и использование + очень больших файлов (16 ТБ) и повышение скорости работы. +

+
+
+
+

+ Другие файловые системы, включая FAT32, NTFS, ReiserFS, JFS и XFS, + полезны для конкретных задач. Более подробную информацию об этих + файловых системах и многих других можно найти по адресу https://en.wikipedia.org/wiki/Comparison_of_file_systems. +

+

+ LFS предполагает, что корневая файловая система (/) имеет тип ext4. + Чтобы создать файловую систему ext4 + на разделе LFS, выполните следующую команду: +

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

+ Замените <xxx> именем + раздела LFS +

+

+ Если вы используете существующий раздел + подкачки, нет необходимости его форматировать. Если был создан + новый раздел подкачки, его нужно + будет инициализировать с помощью этой команды: +

+
mkswap /dev/<yyy>
+

+ Замените <yyy> именем + раздела подкачки. +

+
+ + + diff --git a/lfs-12.1-sysv/chapter02/creatingpartition.html b/lfs-12.1-sysv/chapter02/creatingpartition.html new file mode 100644 index 0000000..1724548 --- /dev/null +++ b/lfs-12.1-sysv/chapter02/creatingpartition.html @@ -0,0 +1,343 @@ + + + + + + 2.4. Создание нового раздела + + + + + + + + +

+ 2.4. Создание нового раздела +

+
+

+ Как и большинство других операционных систем, LFS обычно + устанавливается на выделенный раздел. Рекомендуемый подход к + построению системы LFS состоит в том, чтобы использовать доступный + пустой раздел или, если у вас достаточно неразмеченного пространства, + использовать его +

+

+ Минимальная система требует раздел размером около 10 гигабайт (ГБ). + Этого достаточно для хранения всех архивов с исходным кодом и + компиляции пакетов. Однако, если система LFS предназначена для + использования в качестве основной системы Linux, вероятно, будет + установлено дополнительное программное обеспечение, для которого + потребуется дополнительное пространство. Раздел размером 30 ГБ + является разумным размером для расширения. Сама система LFS не займет + столько места. Большая часть этого требования заключается в + предоставлении достаточного временного хранилища, а также в + добавлении дополнительных возможностей после сборки LFS. Кроме того, + для компиляции пакетов может потребоваться много места на диске, + которое будет освобождено после установки пакета. +

+

+ Поскольку для компиляции не всегда достаточно оперативной памяти + (ОЗУ), рекомендуется использовать небольшой раздел диска в качестве + раздела подкачки. Он используется + ядром для хранения редко используемых данных и оставляет больше + памяти для активных процессов. Раздел + подкачки для системы LFS может совпадать с разделом, + используемым хост-системой, и в этом случае нет необходимости + создавать еще один. +

+

+ Запустите программу создания разделов диска, такую как cfdisk или fdisk, с параметром командной + строки, указав имя жесткого диска, на котором будет создан новый + раздел, например, /dev/sda для + основного диска. Создайте раздел Linux и раздел подкачки, если это необходимо. Пожалуйста, + обратитесь к справке cfdisk(8) или fdisk(8), + если вы еще не знаете, как пользоваться этими программами. +

+
+ [Примечание] +

+ Примечание +

+

+ Для опытных пользователей возможны и другие схемы разбиения. + Система LFS может располагаться на программном + RAID-массиве или логическом томе + LVM. Однако для некоторых опций требуется + initramfs, что является сложной темой. Эти методы разбиения не + рекомендуются начинающим пользователям LFS. +

+
+

+ Запомните обозначение созданного раздела (например, sda5). В этой книге он будет называться разделом + LFS. Также запомните обозначение раздела + подкачки. Эти имена понадобятся позже для файла /etc/fstab. +

+
+

+ 2.4.1. Другие вопросы по созданию разделов +

+

+ Рекомендации по созданию разделов системы часто публикуются в + списках рассылки LFS. Это очень субъективная тема. По умолчанию для + большинства дистрибутивов используется весь диск, за исключением + небольшого раздела подкачки. Это не оптимально для LFS по + нескольким причинам. Это снижает гибкость, затрудняет совместное + использование данных между несколькими дистрибутивами или сборками + LFS, делает резервное копирование более трудоемким и может тратить + дисковое пространство из-за неэффективно распределенной файловой + системы. +

+
+

+ 2.4.1.1. Корневой раздел +

+

+ Корневой раздел LFS (не путать с каталогом /root) размером в 20 гигабайт является хорошим + компромиссом для большинства систем. Он обеспечивает достаточно + места для построения LFS и большей части BLFS, но достаточно мал, + чтобы можно было легко создать несколько разделов для + экспериментов. +

+
+
+

+ 2.4.1.2. Раздел подкачки +

+

+ Большинство дистрибутивов автоматически создают раздел подкачки. + Обычно рекомендуемый размер раздела подкачки примерно в два раза + превышает объем физической памяти, однако это требуется редко. + Если дисковое пространство ограничено, установите размер раздела + подкачки в два гигабайта и контролируйте его объемом. +

+

+ Если вы хотите использовать режим гибернации (suspend-to-disk) + Linux, которая записывает содержимое ОЗУ в раздел подкачки перед + выключением машины. Установите размер раздела подкачки не меньше + объема установленной оперативной памяти. +

+

+ Использование файла подкачки - это не очень хорошо. Для + механических жестких дисков вы можете определить, что система + использует раздел подкачки, просто слыша активность диска и + наблюдая, как система реагирует на команды. Для SSD-накопителя вы + не сможете услышать, что используется раздел подкачки, но сможете + оценить, сколько места на разделе подкачки занято, используя + команды top или + free. По + возможности следует избегать использования SSD-накопителя для + раздела подкачки. Первой реакцией на активность раздела подкачки + должна быть проверка на необоснованное применение какой-либо + команды, например, попытка редактирования пятигигабайтного файла. + Если использование раздела подкачки становится обычным явлением, + лучшее решение — приобретение большего объема оперативной памяти + для вашей системы. +

+
+
+

+ 2.4.1.3. Раздел GRUB +

+

+ Если загрузочный диск + размечен с помощью таблицы разделов GUID (GPT), необходимо + создать небольшой раздел, обычно размером 1 МБ, если он еще не + существует. Этот раздел не форматируется, но должен быть доступен + для использования GRUB во время установки загрузчика. Обычно он + помечен как 'BIOS Boot' при использовании fdisk или имеет код + EF02 при использовании + gdisk. +

+
+ [Примечание] +

+ Примечание +

+

+ Раздел Grub Bios должен находиться на диске, который BIOS + использует для загрузки системы. Это не обязательно тот же + диск, на котором расположен корневой раздел LFS. Диски в + системе могут использовать разные типы таблиц разделов. Наличие + раздела Grub Bios зависит только от типа таблицы разделов на + загрузочном диске. +

+
+
+
+

+ 2.4.1.4. Разделы, используемые для удобства +

+

+ Есть несколько других разделов, которые не являются + обязательными, но их следует учитывать при разработке схемы + диска. Следующий список не является исчерпывающим, а представлен + в качестве справочного руководства. +

+
+
    +
  • +

    + /boot – Настоятельно рекомендуется. Используйте этот раздел + для хранения ядер и другой загрузочной информации. Чтобы + свести к минимуму возможные проблемы с загрузкой дисков + большого размера, сделайте этот раздел первым физическим + разделом на первом диске. Размер раздела в 200 мегабайт + вполне достаточен. +

    +
  • +
  • +

    + /boot/efi – Системный раздел EFI, используемый для загрузки + системы с помощью UEFI. Подробнее читайте на + странице BLFS. +

    +
  • +
  • +

    + /home – Настоятельно рекомендуется. Предоставьте общий + доступ к своему домашнему каталогу и пользовательским + настройкам нескольким дистрибутивам или сборкам LFS. + Размер, как правило, довольно большой и зависит от + доступного места на диске. +

    +
  • +
  • +

    + /usr – в LFS, /bin, + /lib, и /sbin являются символическими ссылками на + их аналоги в /usr. Таким + образом /usr содержит все + двоичные файлы, необходимые для работы системы. Для LFS + отдельный раздел /usr не + требуется. Если он вам необходим, вы должны сделать раздел + достаточно большим, чтобы поместить туда все программы и + библиотеки в системе. В этой конфигурации, корневой раздел + может быть очень маленьким (возможно, всего один гигабайт), + поэтому он подходит для тонкого клиента или бездисковой + рабочей станции (где /usr + монтируется с удаленного сервера). Однако вы должны знать, + что для загрузки системы с отдельного раздела /usr потребуется initramfs (не включенный + в LFS). +

    +
  • +
  • +

    + /opt – Этот каталог наиболее полезен для BLFS, в него можно + установить некоторые большие пакеты, такие как KDE или + Texlive, без использования иерархии /usr. Для /opt + достаточно размера от 5 до 10 гигабайт. +

    +
  • +
  • +

    + /tmp – Отдельный раздел /tmp используется редко, он полезен + при настройке тонкого клиента. Обычно, его размер не должен + превышать пару гигабайт. Если у вас достаточно оперативной + памяти, вы можете смонтировать /tmp как tmpfs, чтобы ускорить доступ к + временным файлам. +

    +
  • +
  • +

    + /usr/src – Этот раздел очень удобен для хранения исходников + BLFS и совместного использования их в сборках LFS. Его + также можно использовать в качестве места для сборки + пакетов BLFS. Размера в 30-50 гигабайт вполне достаточно. +

    +
  • +
+
+

+ Любой отдельный раздел, который вы хотите автоматически + монтировать при загрузке, должен быть указан в файле /etc/fstab. Подробности о том, как указать + разделы, будут обсуждаться в Раздел 10.2, «Создание + файла /etc/fstab». +

+
+
+
+ + + diff --git a/lfs-12.1-sysv/chapter02/hostreqs.html b/lfs-12.1-sysv/chapter02/hostreqs.html new file mode 100644 index 0000000..589da18 --- /dev/null +++ b/lfs-12.1-sysv/chapter02/hostreqs.html @@ -0,0 +1,392 @@ + + + + + + 2.2. Требования к хост-системе + + + + + + + + +

+ 2.2. Требования к хост-системе +

+
+
+

+ 2.2.1. Аппаратное обеспечение +

+

+ Редакторы LFS рекомендуют, чтобы процессор имел не менее четырех + ядер и не менее 8 ГБ памяти. Старые системы, не отвечающие этим + требованиям, будут по-прежнему работать, но время сборки пакетов + будет значительно больше, чем указано в документации. +

+
+
+

+ 2.2.2. Программное обеспечение +

+

+ Ваша хост-система должна иметь следующее программное обеспечение с + указанными минимальными версиями. Это не должно быть проблемой для + большинства современных дистрибутивов Linux. Также обратите + внимание на то, что многие дистрибутивы помещают заголовочные файлы + в отдельные пакеты, как правило в формате <package-name>-devel + или <package-name>-dev. + Обязательно установите эти пакеты, если ваш дистрибутив их + предоставляет. +

+

+ Более ранние версии перечисленных ниже пакетов могут работать, но + это не проверялось. +

+
+
    +
  • +

    + Bash-3.2 + (/bin/sh должен быть символической или жесткой ссылкой на + bash) +

    +
  • +
  • +

    + Binutils-2.13.1 + (Версия выше 2.42 не рекомендуется, так как она не + тестировалась) +

    +
  • +
  • +

    + Bison-2.7 + (/usr/bin/yacc должен быть ссылкой на bison или небольшой + скрипт, запускающий bison) +

    +
  • +
  • +

    + Coreutils-8.1 +

    +
  • +
  • +

    + Diffutils-2.8.1 +

    +
  • +
  • +

    + Findutils-4.2.31 +

    +
  • +
  • +

    + Gawk-4.0.1 + (/usr/bin/awk должен быть ссылкой на gawk) +

    +
  • +
  • +

    + GCC-5.2, включая + компилятор C++, g++ (версии выше 13.2.0 не + рекомендуются, поскольку они не тестировались). Также должны + присутствовать стандартные библиотеки C и C++ (с + заголовочными файлами), чтобы компилятор C++ мог осуществлять + сборку программ. +

    +
  • +
  • +

    + Grep-2.5.1a +

    +
  • +
  • +

    + Gzip-1.3.12 +

    +
  • +
  • +

    + Linux + Kernel-4.19 +

    +

    + Причиной, по которой указаны минимальные требования к версии + ядра, является то, что мы указываем эту версию при сборке + glibc в Глава 5 и + Глава 8. Так как более старые ядра не + поддерживаются, скомпилированный пакет glibc немного меньше и быстрее. По + состоянию на февраль 2024 г. 4.19 является самой старой + версией ядра, поддерживаемой разработчиками ядра. Некоторые + версии ядра, более старые, чем 4.19, могут по-прежнему + поддерживаться сторонними командами, но они не считаются + официальными выпусками ядра; подробности читайте на странице + https://kernel.org/category/releases.html +

    +

    + Если версия ядра хоста более ранняя, чем 4.19, вам необходимо + обновить ядро на более современную версию. Есть два способа + сделать это. Во-первых, посмотрите, предоставляет ли ваш + дистрибутив Linux пакет ядра 4.19 или более позднюю версию. + Если это так, установите его. Если ваш дистрибутив не + предлагает приемлемый пакет ядра или вы предпочитаете не + устанавливать его, вы можете скомпилировать ядро + самостоятельно. Инструкции по компиляции ядра и настройке + загрузчика (при условии, что хост использует GRUB) находятся + в Глава 10. +

    +

    + Для сборки LFS необходимо, чтобы ядро хоста поддерживало + псевдотерминал UNIX 98 (PTY). Обычно он включен на всех + настольных или серверных дистрибутивах, поставляющих Linux + 4.19 или более новое ядро. Если на хосте вы используете + самостоятельно собранное ядро, убедитесь, что для параметра + CONFIG_UNIX98_PTYS установлено + значение y в конфигурационном + файле ядра. +

    +
  • +
  • +

    + 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-5.0 +

    +
  • +
  • +

    + Xz-5.0.0 +

    +
  • +
+
+
+ [Важно] +

+ Важно +

+

+ Обратите внимание, что упомянутые выше символические ссылки + необходимы для создания системы LFS с использованием инструкций, + содержащихся в этой книге. Симлинки, указывающие на другое + программное обеспечение (например, dash, mawk и т. д.), могут + работать, но не тестируются и не поддерживаются командой + разработчиков LFS, и могут потребовать либо отклонения от + инструкций, либо дополнительных исправлений для некоторых + пакетов. +

+
+

+ +

+

+ Чтобы узнать, есть ли в вашей хост-системе все необходимые пакеты и + возможность компилировать программы, выполните следующий скрипт: +

+
cat > version-check.sh << "EOF"
+#!/bin/bash
+# A script to list version numbers of critical development tools
+
+# If you have tools installed in other directories, adjust PATH here AND
+# in ~lfs/.bashrc (section 4.4) as well.
+
+LC_ALL=C 
+PATH=/usr/bin:/bin
+
+bail() { echo "FATAL: $1"; exit 1; }
+grep --version > /dev/null 2> /dev/null || bail "grep does not work"
+sed '' /dev/null || bail "sed does not work"
+sort   /dev/null || bail "sort does not work"
+
+ver_check()
+{
+   if ! type -p $2 &>/dev/null
+   then 
+     echo "ERROR: Cannot find $2 ($1)"; return 1; 
+   fi
+   v=$($2 --version 2>&1 | grep -E -o '[0-9]+\.[0-9\.]+[a-z]*' | head -n1)
+   if printf '%s\n' $3 $v | sort --version-sort --check &>/dev/null
+   then 
+     printf "OK:    %-9s %-6s >= $3\n" "$1" "$v"; return 0;
+   else 
+     printf "ERROR: %-9s is TOO OLD ($3 or later required)\n" "$1"; 
+     return 1; 
+   fi
+}
+
+ver_kernel()
+{
+   kver=$(uname -r | grep -E -o '^[0-9\.]+')
+   if printf '%s\n' $1 $kver | sort --version-sort --check &>/dev/null
+   then 
+     printf "OK:    Linux Kernel $kver >= $1\n"; return 0;
+   else 
+     printf "ERROR: Linux Kernel ($kver) is TOO OLD ($1 or later required)\n" "$kver"; 
+     return 1; 
+   fi
+}
+
+# Coreutils first because --version-sort needs Coreutils >= 7.0
+ver_check Coreutils      sort     8.1 || bail "Coreutils too old, stop"
+ver_check Bash           bash     3.2
+ver_check Binutils       ld       2.13.1
+ver_check Bison          bison    2.7
+ver_check Diffutils      diff     2.8.1
+ver_check Findutils      find     4.2.31
+ver_check Gawk           gawk     4.0.1
+ver_check GCC            gcc      5.2
+ver_check "GCC (C++)"    g++      5.2
+ver_check Grep           grep     2.5.1a
+ver_check Gzip           gzip     1.3.12
+ver_check M4             m4       1.4.10
+ver_check Make           make     4.0
+ver_check Patch          patch    2.5.4
+ver_check Perl           perl     5.8.8
+ver_check Python         python3  3.4
+ver_check Sed            sed      4.1.5
+ver_check Tar            tar      1.22
+ver_check Texinfo        texi2any 5.0
+ver_check Xz             xz       5.0.0
+ver_kernel 4.19
+
+if mount | grep -q 'devpts on /dev/pts' && [ -e /dev/ptmx ]
+then echo "OK:    Linux Kernel supports UNIX 98 PTY";
+else echo "ERROR: Linux Kernel does NOT support UNIX 98 PTY"; fi
+
+alias_check() {
+   if $1 --version 2>&1 | grep -qi $2
+   then printf "OK:    %-4s is $2\n" "$1";
+   else printf "ERROR: %-4s is NOT $2\n" "$1"; fi
+}
+echo "Aliases:"
+alias_check awk GNU
+alias_check yacc Bison
+alias_check sh Bash
+
+echo "Compiler check:"
+if printf "int main(){}" | g++ -x c++ -
+then echo "OK:    g++ works";
+else echo "ERROR: g++ does NOT work"; fi
+rm -f a.out
+
+if [ "$(nproc)" = "" ]; then
+   echo "ERROR: nproc is not available or it produces empty output"
+else
+   echo "OK: nproc reports $(nproc) logical cores are available"
+fi
+EOF
+
+bash version-check.sh
+
+
+ + + diff --git a/lfs-12.1-sysv/chapter02/introduction.html b/lfs-12.1-sysv/chapter02/introduction.html new file mode 100644 index 0000000..0183f5d --- /dev/null +++ b/lfs-12.1-sysv/chapter02/introduction.html @@ -0,0 +1,87 @@ + + + + + + 2.1. Введение + + + + + + + + +

+ 2.1. Введение +

+
+

+ В этой главе проверяются и при необходимости устанавливаются основные + инструменты, необходимые для построения LFS. Затем подготавливается + раздел, в котором будет размещаться система LFS. Мы создадим сам + раздел, создадим на нем файловую систему и смонтируем его. +

+
+ + + diff --git a/lfs-12.1-sysv/chapter02/mounting.html b/lfs-12.1-sysv/chapter02/mounting.html new file mode 100644 index 0000000..d602dbd --- /dev/null +++ b/lfs-12.1-sysv/chapter02/mounting.html @@ -0,0 +1,171 @@ + + + + + + 2.7. Монтирование нового раздела + + + + + + + + +

+ 2.7. Монтирование нового раздела +

+
+

+ Теперь, когда файловая система создана, раздел должен быть + смонтирован, чтобы хост-система могла получить доступ к нему. В книге + предполагается, что файловая система монтируется в каталог, указанный + в переменной LFS, описанной в предыдущем + разделе. +

+

+ Строго говоря, нельзя «смонтировать раздел». Монтируется файловая система на этом разделе. Но так + как один раздел не может содержать несколько файловых систем, люди + часто говорят о разделе и связанной с ним файловой системе так, как + если бы они были одним и тем же. +

+

+ Создайте точку монтирования и смонтируйте файловую систему LFS с + помощью этих команд: +

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

+ Замените <xxx> на имя + раздела LFS. +

+

+ Если вы используете несколько разделов для LFS (например, один для + /, а другой для /home), смонтируйте их вот так: +

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

+ Замените <xxx> и + <yyy> + соответствующими именами разделов. +

+

+ Убедитесь, что этот новый раздел не смонтирован со слишком строгими + разрешениями (такими как параметры nosuid + или nodev). Запустите команду + mount без каких-либо + параметров, чтобы увидеть, какие параметры установлены для + смонтированного раздела LFS. Если установлены nosuid и/или nodev, + раздел должен быть размонтирован и смонтирован повторно. +

+
+ [Предупреждение] +

+ Предупреждение +

+

+ Приведенные выше инструкции предполагают, что вы не будете + перезагружать компьютер в процессе сборки LFS. Если вы выключите + свою систему, вам придется либо перемонтировать раздел LFS каждый + раз, когда вы перезапускаете процесс сборки, либо изменить файл + /etc/fstab вашей хост-системы, чтобы + он автоматически монтировал его при загрузке. Например, вы можете + добавить эту строку в свой /etc/fstab: +

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

+ Если вы используете дополнительные разделы, обязательно добавьте + их. +

+
+

+ Если вы используете раздел подкачки, + убедитесь, что он включен с помощью команды swapon: +

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

+ Замените <zzz> именем + раздела подкачки. +

+

+ Теперь, когда новый раздел LFS готов к работе, пришло время загрузить + пакеты. +

+
+ + + diff --git a/lfs-12.1-sysv/chapter02/stages.html b/lfs-12.1-sysv/chapter02/stages.html new file mode 100644 index 0000000..aa6f7fe --- /dev/null +++ b/lfs-12.1-sysv/chapter02/stages.html @@ -0,0 +1,195 @@ + + + + + + 2.3. Этапы сборки системы LFS + + + + + + + + +

+ 2.3. + Этапы сборки системы LFS +

+
+

+ LFS разработан для сборки за один сеанс. То есть инструкция + предполагает, что система не будет выключаться в процессе. Это не + означает, что система должна быть собрана за один присест. Для + возобновления сборки в точке предыдущей остановки (после + перезагрузки/выключения), необходимо выполнить некоторые процедуры + повторно. +

+
+

+ 2.3.1. Главы 1–4 +

+

+ Эти главы выполняются на хост-системе. После перезагрузки обратите + внимание на следующее: +

+
+
    +
  • +

    + При выполнении операций, от имени пользователя root после Раздела 2.4, ДЛЯ ПОЛЬЗОВАТЕЛЯ root должна быть установлена переменная + окружения LFS. +

    +
  • +
+
+
+
+

+ 2.3.2. Главы 5–6 +

+
+
    +
  • +

    + Раздел /mnt/lfs должен быть смонтирован. +

    +
  • +
  • +

    + Эти две главы должны + быть выполнены из-под пользователя lfs. Перед выполнением любой задачи в + этих главах необходимо выполнить команду su - lfs. В противном + случае вы рискуете установить пакеты на хост и сделать его + непригодным для использования. +

    +
  • +
  • +

    + Выполнение процедур из Общие инструкции по + компиляции имеет решающее значение. Если есть какие-либо + сомнения по поводу установки пакета, убедитесь, что все ранее + распакованные tar-архивы удалены, затем повторно извлеките + файлы и выполните все инструкции, приведенные в этом разделе. +

    +
  • +
+
+
+
+

+ 2.3.3. Главы 7–10 +

+
+
    +
  • +

    + Раздел /mnt/lfs должен быть смонтирован. +

    +
  • +
  • +

    + Некоторые операции, такие как «Смена владельца» + или «Вход в среду + Chroot», должны быть выполнены от имени + пользователя root с + переменной окружения $LFS, установленной для пользователя + root. +

    +
  • +
  • +

    + При входе в chroot переменная среды LFS должна быть + установлена для пользователя root. Переменная LFS не используется + после входа в среду chroot. +

    +
  • +
  • +

    + Виртуальные файловые системы должны быть смонтированы. Это + можно сделать до или после входа в chroot, переключившись на + виртуальный терминал хоста и от имени пользователя + root выполнив команды, + описанные в Раздел 7.3.1, + «Монтирование и заполнение /dev» и Раздел 7.3.2, + «Монтирование виртуальных файловых систем ядра». +

    +
  • +
+
+
+
+ + + diff --git a/lfs-12.1-sysv/chapter03/chapter03.html b/lfs-12.1-sysv/chapter03/chapter03.html new file mode 100644 index 0000000..8496ca6 --- /dev/null +++ b/lfs-12.1-sysv/chapter03/chapter03.html @@ -0,0 +1,97 @@ + + + + + + Глава 3. Пакеты и патчи + + + + + + + + +

+ 3. Пакеты и патчи +

+
+
+

+ Содержание +

+ +
+
+ + + diff --git a/lfs-12.1-sysv/chapter03/introduction.html b/lfs-12.1-sysv/chapter03/introduction.html new file mode 100644 index 0000000..7f8bc2b --- /dev/null +++ b/lfs-12.1-sysv/chapter03/introduction.html @@ -0,0 +1,198 @@ + + + + + + 3.1. Введение + + + + + + + + +

+ 3.1. Введение +

+
+

+ Эта глава содержит список пакетов, которые необходимо загрузить для + сборки базовой системы Linux. Перечисленные версии программного + обеспечения, соответствуют версиям, которые, проверены и работают, + книга основана на их использовании. Мы настоятельно рекомендуем не + использовать другие версии пакетов, потому что команды сборки для + одной версии могут не работать с другой, если только другая версия не + указана в сообщениях об ошибках LFS или рекомендациях по + безопасности. В новейших версиях пакетов также могут быть проблемы, + требующие обходных путей. Эти обходные пути будут стабилизированы в + разрабатываемой версии книги. +

+

+ Для некоторых пакетов архив релиза и архив снимка репозитория (Git + или SVN) для этого выпуска могут быть опубликованы с одинаковыми + именами файлов. Релиз содержит сгенерированные файлы (например, + скрипт configure, + сгенерированный пакетом autoconf) в дополнение к + содержимому соответствующего моментального снимка репозитория. В + книге везде, где это возможно, используются релизные архивы. + Использование моментального снимка вместо tar-архива, указанного в + книге, может вызвать проблемы. +

+

+ Источники загрузки могут быть недоступны. Если источник изменился с + момента публикации этой книги, Google (https://www.google.com/) предоставляет + удобную поисковую систему для поиска большинства пакетов. Если поиск + не увенчался успехом, попробуйте один из альтернативных способов + загрузки, расположенных по адресу https://mirror.linuxfromscratch.ru/lfs/mirrors.html#files. +

+

+ Загруженные пакеты и патчи необходимо где-нибудь хранить, чтобы они + были доступны на протяжении всей сборки. Рабочий каталог также + необходим для распаковки исходников и их сборки. $LFS/sources можно использовать и как место для + хранения архивов и патчей, и как рабочий каталог. При использовании + этого каталога необходимые элементы будут расположены в разделе LFS и + будут доступны на всех этапах процесса сборки. +

+

+ Чтобы создать этот каталог, выполните следующую команду от имени + пользователя root перед началом + загрузки: +

+
mkdir -v $LFS/sources
+

+ Сделайте этот каталог доступным для записи и установите липкий бит. + «Липкий бит» + означает, что даже если несколько пользователей имеют право на запись + в каталог, только владелец файла может удалить файл в таком каталоге. + Следующая команда активирует режимы записи и липкий бит: +

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

+ Есть несколько способов получить все необходимые пакеты и патчи для + сборки LFS: +

+
+
    +
  • +

    + Файлы можно загрузить по отдельности, как описано в следующих + двух разделах. +

    +
  • +
  • +

    + Для стабильных версий книги архив со всеми необходимыми файлами + можно загрузить с одного из зеркал LFS, перечисленных на + странице https://mirror.linuxfromscratch.ru/mirrors.html#files. +

    +
  • +
  • +

    + Файлы можно загрузить с помощью wget и wget-list. +

    +
  • +
+
+

+ Чтобы загрузить все пакеты и патчи, используя wget-list-sysv в качестве входных данных для + команды wget, наберите команду: +

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

+ Начиная с LFS-7.0, существует отдельный файл md5sums, который можно использовать для проверки + всех пакетов. Поместите этот файл в $LFS/sources и выполните: +

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

+ Эту проверку можно использовать после загрузки файлов любым из + перечисленных выше способов. +

+

+ Если пакеты и исправления загружаются от имени пользователя, без + привилегий root, то файлы будут + принадлежать этому пользователю. Файловая система записывает + владельца по его UID, а UID обычного пользователя в хост-дистрибутиве + не будет присвоен в LFS. Таким образом, файлы останутся + принадлежащими безымянному UID в конечной системе LFS. Если вы не + назначили тот же UID для своего пользователя в системе LFS, измените + владельца этих файлов на root сейчас, + чтобы избежать этой проблемы: +

+
chown root:root $LFS/sources/*
+
+ + + diff --git a/lfs-12.1-sysv/chapter03/packages.html b/lfs-12.1-sysv/chapter03/packages.html new file mode 100644 index 0000000..d9e9d4d --- /dev/null +++ b/lfs-12.1-sysv/chapter03/packages.html @@ -0,0 +1,1754 @@ + + + + + + 3.2. Все пакеты + + + + + + + + +

+ 3.2. Все + пакеты +

+
+
+ [Примечание] +

+ Примечание +

+

+ Ознакомьтесь с рекомендациями + по безопасности перед загрузкой пакетов, чтобы узнать, следует + ли использовать более новую версию пакета, чтобы избежать проблем + безопасности. +

+

+ При выходе новых версий, старые версии пакетов могут быть удалены, + особенно, если они содержали уязвимости. Если одна или несколько + ссылок ниже недоступны, сначала ознакомьтесь с рекомендациями по + безопасности, чтобы понять следует ли использовать более новую + версию (с исправленной уязвимостью). Если нет, попробуйте скачать + удаленный пакет с зеркала. Хотя старый релиз можно скачать с + зеркала (даже если он был удален из-за уязвимости), для сборки + системы не рекомендуется использовать версию, которая уязвима. +

+
+

+ Загрузите или иным образом получите следующие пакеты: +

+
+
+
+
+ Acl (2.3.2) - 363 + KB: +
+
+

+ Домашняя страница: https://savannah.nongnu.org/projects/acl +

+

+ Ссылка на загрузку: + https://download.savannah.gnu.org/releases/acl/acl-2.3.2.tar.xz +

+

+ Контрольная сумма MD5: 590765dee95907dbc3c856f7255bd669 +

+
+
+ Attr (2.5.2) - 484 + KB: +
+
+

+ Домашняя страница: https://savannah.nongnu.org/projects/attr +

+

+ Ссылка на загрузку: + https://download.savannah.gnu.org/releases/attr/attr-2.5.2.tar.gz +

+

+ Контрольная сумма MD5: 227043ec2f6ca03c0948df5517f9c927 +

+
+
+ Autoconf (2.72) - 1,360 + KB: +
+
+

+ Домашняя страница: https://www.gnu.org/software/autoconf/ +

+

+ Ссылка на загрузку: https://ftp.gnu.org/gnu/autoconf/autoconf-2.72.tar.xz +

+

+ Контрольная сумма MD5: 1be79f7106ab6767f18391c5e22be701 +

+
+
+ Automake (1.16.5) - 1,565 KB: +
+
+

+ Домашняя страница: https://www.gnu.org/software/automake/ +

+

+ Ссылка на загрузку: https://ftp.gnu.org/gnu/automake/automake-1.16.5.tar.xz +

+

+ Контрольная сумма MD5: 4017e96f89fca45ca946f1c5db6be714 +

+
+
+ Bash (5.2.21) - 10,696 + KB: +
+
+

+ Домашняя страница: https://www.gnu.org/software/bash/ +

+

+ Ссылка на загрузку: https://ftp.gnu.org/gnu/bash/bash-5.2.21.tar.gz +

+

+ Контрольная сумма MD5: ad5b38410e3bf0e9bcc20e2765f5e3f9 +

+
+
+ Bc (6.7.5) - 460 + KB: +
+
+

+ Домашняя страница: https://git.gavinhoward.com/gavin/bc +

+

+ Ссылка на загрузку: + https://github.com/gavinhoward/bc/releases/download/6.7.5/bc-6.7.5.tar.xz +

+

+ Контрольная сумма MD5: e249b1f86f886d6fb71c15f72b65dd3d +

+
+
+ Binutils (2.42) - 26,922 + KB: +
+
+

+ Домашняя страница: https://www.gnu.org/software/binutils/ +

+

+ Ссылка на загрузку: + https://sourceware.org/pub/binutils/releases/binutils-2.42.tar.xz +

+

+ Контрольная сумма MD5: a075178a9646551379bfb64040487715 +

+
+
+ Bison (3.8.2) - 2,752 + KB: +
+
+

+ Домашняя страница: https://www.gnu.org/software/bison/ +

+

+ Ссылка на загрузку: https://ftp.gnu.org/gnu/bison/bison-3.8.2.tar.xz +

+

+ Контрольная сумма MD5: c28f119f405a2304ff0a7ccdcc629713 +

+
+
+ Bzip2 (1.0.8) - 792 + KB: +
+
+

+ Ссылка на загрузку: https://www.sourceware.org/pub/bzip2/bzip2-1.0.8.tar.gz +

+

+ Контрольная сумма MD5: 67e051268d0c475ea773822f7500d0e5 +

+
+
+ Check (0.15.2) - 760 + KB: +
+
+

+ Домашняя страница: https://libcheck.github.io/check +

+

+ Ссылка на загрузку: + https://github.com/libcheck/check/releases/download/0.15.2/check-0.15.2.tar.gz +

+

+ Контрольная сумма MD5: 50fcafcecde5a380415b12e9c574e0b2 +

+
+
+ Coreutils (9.4) - 5,840 + KB: +
+
+

+ Домашняя страница: https://www.gnu.org/software/coreutils/ +

+

+ Ссылка на загрузку: https://ftp.gnu.org/gnu/coreutils/coreutils-9.4.tar.xz +

+

+ Контрольная сумма MD5: 459e9546074db2834eefe5421f250025 +

+
+
+ DejaGNU (1.6.3) - 608 + KB: +
+
+

+ Домашняя страница: https://www.gnu.org/software/dejagnu/ +

+

+ Ссылка на загрузку: https://ftp.gnu.org/gnu/dejagnu/dejagnu-1.6.3.tar.gz +

+

+ Контрольная сумма MD5: 68c5208c58236eba447d7d6d1326b821 +

+
+
+ Diffutils (3.10) - 1,587 + KB: +
+
+

+ Домашняя страница: https://www.gnu.org/software/diffutils/ +

+

+ Ссылка на загрузку: https://ftp.gnu.org/gnu/diffutils/diffutils-3.10.tar.xz +

+

+ Контрольная сумма MD5: 2745c50f6f4e395e7b7d52f902d075bf +

+
+
+ E2fsprogs (1.47.0) - 9,412 KB: +
+
+

+ Домашняя страница: http://e2fsprogs.sourceforge.net/ +

+

+ Ссылка на загрузку: + https://downloads.sourceforge.net/project/e2fsprogs/e2fsprogs/v1.47.0/e2fsprogs-1.47.0.tar.gz +

+

+ Контрольная сумма MD5: 6b4f18a33873623041857b4963641ee9 +

+
+
+ Elfutils (0.190) - 8,949 + KB: +
+
+

+ Домашняя страница: https://sourceware.org/elfutils/ +

+

+ Ссылка на загрузку: + https://sourceware.org/ftp/elfutils/0.190/elfutils-0.190.tar.bz2 +

+

+ Контрольная сумма MD5: 79ad698e61a052bea79e77df6a08bc4b +

+
+
+ Expat (2.6.0) - 473 + KB: +
+
+

+ Домашняя страница: https://libexpat.github.io/ +

+

+ Ссылка на загрузку: + https://prdownloads.sourceforge.net/expat/expat-2.6.0.tar.xz +

+

+ Контрольная сумма MD5: bd169cb11f4b9bdfddadf9e88a5c4d4b +

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

+ Домашняя страница: https://core.tcl.tk/expect/ +

+

+ Ссылка на загрузку: + https://prdownloads.sourceforge.net/expect/expect5.45.4.tar.gz +

+

+ Контрольная сумма MD5: 00fce8de158422f5ccd2666512329bd2 +

+
+
+ File (5.45) - 1,218 + KB: +
+
+

+ Домашняя страница: https://www.darwinsys.com/file/ +

+

+ Ссылка на загрузку: https://astron.com/pub/file/file-5.45.tar.gz +

+

+ Контрольная сумма MD5: 26b2a96d4e3a8938827a1e572afd527a +

+
+
+ Findutils (4.9.0) - 1,999 KB: +
+
+

+ Домашняя страница: https://www.gnu.org/software/findutils/ +

+

+ Ссылка на загрузку: https://ftp.gnu.org/gnu/findutils/findutils-4.9.0.tar.xz +

+

+ Контрольная сумма MD5: 4a4a547e888a944b2f3af31d789a1137 +

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

+ Домашняя страница: https://github.com/westes/flex +

+

+ Ссылка на загрузку: + https://github.com/westes/flex/releases/download/v2.6.4/flex-2.6.4.tar.gz +

+

+ Контрольная сумма MD5: 2882e3179748cc9f9c23ec593d6adc8d +

+
+
+ Flit-core (3.9.0) - 41 + KB: +
+
+

+ Домашняя страница: https://pypi.org/project/flit-core/ +

+

+ Ссылка на загрузку: + https://pypi.org/packages/source/f/flit-core/flit_core-3.9.0.tar.gz +

+

+ Контрольная сумма MD5: 3bc52f1952b9a78361114147da63c35b +

+
+
+ Gawk (5.3.0) - 3,356 + KB: +
+
+

+ Домашняя страница: https://www.gnu.org/software/gawk/ +

+

+ Ссылка на загрузку: https://ftp.gnu.org/gnu/gawk/gawk-5.3.0.tar.xz +

+

+ Контрольная сумма MD5: 97c5a7d83f91a7e1b2035ebbe6ac7abd +

+
+
+ GCC (13.2.0) - 85,800 + KB: +
+
+

+ Домашняя страница: https://gcc.gnu.org/ +

+

+ Ссылка на загрузку: https://ftp.gnu.org/gnu/gcc/gcc-13.2.0/gcc-13.2.0.tar.xz +

+

+ Контрольная сумма MD5: e0e48554cc6e4f261d55ddee9ab69075 +

+
+
+ GDBM (1.23) - 1,092 + KB: +
+
+

+ Домашняя страница: https://www.gnu.org/software/gdbm/ +

+

+ Ссылка на загрузку: https://ftp.gnu.org/gnu/gdbm/gdbm-1.23.tar.gz +

+

+ Контрольная сумма MD5: 8551961e36bf8c70b7500d255d3658ec +

+
+
+ Gettext (0.22.4) - 10,016 KB: +
+
+

+ Домашняя страница: https://www.gnu.org/software/gettext/ +

+

+ Ссылка на загрузку: https://ftp.gnu.org/gnu/gettext/gettext-0.22.4.tar.xz +

+

+ Контрольная сумма MD5: 2d8507d003ef3ddd1c172707ffa97ed8 +

+
+
+ Glibc (2.39) - 18,092 + KB: +
+
+

+ Домашняя страница: https://www.gnu.org/software/libc/ +

+

+ Ссылка на загрузку: https://ftp.gnu.org/gnu/glibc/glibc-2.39.tar.xz +

+

+ Контрольная сумма MD5: be81e87f72b5ea2c0ffe2bedfeb680c6 +

+
+ [Примечание] +

+ Примечание +

+

+ Разработчики Glibc поддерживают + Git ветку содержащую исправления, которые заслуживают + внимания для Glibc-2.39 но, к сожалению, выпущенные после + релиза Glibc-2.39. Редакторы LFS публикуют рекомендации по + безопасности, если в ветку добавлено какое-либо исправление + безопасности, но для других недавно добавленных патчей не + будет предпринято никаких действий. Вы можете + самостоятельно просмотреть патчи и включить некоторые из + них, если посчитаете их важными. +

+
+
+
+ GMP (6.3.0) - 2,046 + KB: +
+
+

+ Домашняя страница: https://www.gnu.org/software/gmp/ +

+

+ Ссылка на загрузку: https://ftp.gnu.org/gnu/gmp/gmp-6.3.0.tar.xz +

+

+ Контрольная сумма MD5: 956dc04e864001a9c22429f761f2c283 +

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

+ Домашняя страница: https://www.gnu.org/software/gperf/ +

+

+ Ссылка на загрузку: https://ftp.gnu.org/gnu/gperf/gperf-3.1.tar.gz +

+

+ Контрольная сумма MD5: 9e251c0a618ad0824b51117d5d9db87e +

+
+
+ Grep (3.11) - 1,664 + KB: +
+
+

+ Домашняя страница: https://www.gnu.org/software/grep/ +

+

+ Ссылка на загрузку: https://ftp.gnu.org/gnu/grep/grep-3.11.tar.xz +

+

+ Контрольная сумма MD5: 7c9bbd74492131245f7cdb291fa142c0 +

+
+
+ Groff (1.23.0) - 7,259 + KB: +
+
+

+ Домашняя страница: https://www.gnu.org/software/groff/ +

+

+ Ссылка на загрузку: https://ftp.gnu.org/gnu/groff/groff-1.23.0.tar.gz +

+

+ Контрольная сумма MD5: 5e4f40315a22bb8a158748e7d5094c7d +

+
+
+ GRUB (2.12) - 6,524 + KB: +
+
+

+ Домашняя страница: https://www.gnu.org/software/grub/ +

+

+ Ссылка на загрузку: https://ftp.gnu.org/gnu/grub/grub-2.12.tar.xz +

+

+ Контрольная сумма MD5: 60c564b1bdc39d8e43b3aab4bc0fb140 +

+
+
+ Gzip (1.13) - 819 + KB: +
+
+

+ Домашняя страница: https://www.gnu.org/software/gzip/ +

+

+ Ссылка на загрузку: https://ftp.gnu.org/gnu/gzip/gzip-1.13.tar.xz +

+

+ Контрольная сумма MD5: d5c9fc9441288817a4a0be2da0249e29 +

+
+
+ Iana-Etc (20240125) - 589 KB: +
+
+

+ Домашняя страница: https://www.iana.org/protocols +

+

+ Ссылка на загрузку: + https://github.com/Mic92/iana-etc/releases/download/20240125/iana-etc-20240125.tar.gz +

+

+ Контрольная сумма MD5: aed66d04de615d76c70890233081e584 +

+
+
+ Inetutils (2.5) - 1,632 + KB: +
+
+

+ Домашняя страница: https://www.gnu.org/software/inetutils/ +

+

+ Ссылка на загрузку: https://ftp.gnu.org/gnu/inetutils/inetutils-2.5.tar.xz +

+

+ Контрольная сумма MD5: 9e5a6dfd2d794dc056a770e8ad4a9263 +

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

+ Домашняя страница: https://freedesktop.org/wiki/Software/intltool +

+

+ Ссылка на загрузку: + https://launchpad.net/intltool/trunk/0.51.0/+download/intltool-0.51.0.tar.gz +

+

+ Контрольная сумма MD5: 12e517cac2b57a0121cda351570f1e63 +

+
+
+ IPRoute2 (6.7.0) - 900 + KB: +
+
+

+ Домашняя страница: https://www.kernel.org/pub/linux/utils/net/iproute2/ +

+

+ Ссылка на загрузку: + https://www.kernel.org/pub/linux/utils/net/iproute2/iproute2-6.7.0.tar.xz +

+

+ Контрольная сумма MD5: 35d8277d1469596b7edc07a51470a033 +

+
+
+ Jinja2 (3.1.3) - 264 + KB: +
+
+

+ Домашняя страница: https://jinja.palletsprojects.com/en/3.1.x/ +

+

+ Ссылка на загрузку: + https://pypi.org/packages/source/J/Jinja2/Jinja2-3.1.3.tar.gz +

+

+ Контрольная сумма MD5: caf5418c851eac59e70a78d9730d4cea +

+
+
+ Kbd (2.6.4) - 1,470 + KB: +
+
+

+ Домашняя страница: https://kbd-project.org/ +

+

+ Ссылка на загрузку: + https://www.kernel.org/pub/linux/utils/kbd/kbd-2.6.4.tar.xz +

+

+ Контрольная сумма MD5: e2fd7adccf6b1e98eb1ae8d5a1ce5762 +

+
+
+ Kmod (31) - 558 + KB: +
+
+

+ Домашняя страница: https://github.com/kmod-project/kmod +

+

+ Ссылка на загрузку: + https://www.kernel.org/pub/linux/utils/kernel/kmod/kmod-31.tar.xz +

+

+ Контрольная сумма MD5: 6165867e1836d51795a11ea4762ff66a +

+
+
+ Less (643) - 579 + KB: +
+
+

+ Домашняя страница: https://www.greenwoodsoftware.com/less/ +

+

+ Ссылка на загрузку: https://www.greenwoodsoftware.com/less/less-643.tar.gz +

+

+ Контрольная сумма MD5: cf05e2546a3729492b944b4874dd43dd +

+
+
+ LFS-Bootscripts (20230728) - 33 KB: +
+
+

+ Ссылка на загрузку: + https://mirror.linuxfromscratch.ru/lfs/downloads/12.1/lfs-bootscripts-20230728.tar.xz +

+

+ Контрольная сумма MD5: c37ac1c5dbb57fb326d9c32c8f8b49c7 +

+
+
+ Libcap (2.69) - 185 + KB: +
+
+

+ Домашняя страница: https://sites.google.com/site/fullycapable/ +

+

+ Ссылка на загрузку: + https://www.kernel.org/pub/linux/libs/security/linux-privs/libcap2/libcap-2.69.tar.xz +

+

+ Контрольная сумма MD5: 4667bacb837f9ac4adb4a1a0266f4b65 +

+
+
+ Libffi (3.4.4) - 1,331 + KB: +
+
+

+ Домашняя страница: https://sourceware.org/libffi/ +

+

+ Ссылка на загрузку: + https://github.com/libffi/libffi/releases/download/v3.4.4/libffi-3.4.4.tar.gz +

+

+ Контрольная сумма MD5: 0da1a5ed7786ac12dcbaf0d499d8a049 +

+
+
+ Libpipeline (1.5.7) - 956 KB: +
+
+

+ Домашняя страница: https://libpipeline.nongnu.org/ +

+

+ Ссылка на загрузку: + https://download.savannah.gnu.org/releases/libpipeline/libpipeline-1.5.7.tar.gz +

+

+ Контрольная сумма MD5: 1a48b5771b9f6c790fb4efdb1ac71342 +

+
+
+ Libtool (2.4.7) - 996 + KB: +
+
+

+ Домашняя страница: https://www.gnu.org/software/libtool/ +

+

+ Ссылка на загрузку: https://ftp.gnu.org/gnu/libtool/libtool-2.4.7.tar.xz +

+

+ Контрольная сумма MD5: 2fc0b6ddcd66a89ed6e45db28fa44232 +

+
+
+ Libxcrypt (4.4.36) - 610 + KB: +
+
+

+ Домашняя страница: https://github.com/besser82/libxcrypt/ +

+

+ Ссылка на загрузку: + https://github.com/besser82/libxcrypt/releases/download/v4.4.36/libxcrypt-4.4.36.tar.xz +

+

+ Контрольная сумма MD5: b84cd4104e08c975063ec6c4d0372446 +

+
+
+ Linux (6.7.4) - 138,130 + KB: +
+
+

+ Домашняя страница: https://www.kernel.org/ +

+

+ Ссылка на загрузку: + https://www.kernel.org/pub/linux/kernel/v6.x/linux-6.7.4.tar.xz +

+

+ Контрольная сумма MD5: 370e1b6155ae63133380e421146619e0 +

+
+ [Примечание] +

+ Примечание +

+

+ Ядро Linux обновляется достаточно часто из-за обнаружения + уязвимостей в системе безопасности. Можно использовать + последнюю стабильную версию ядра, если на странице с + ошибками и рекомендациями по безопасности не указано иное. +

+

+ Для пользователей, у которых ограниченный или + тарифицируемый выход в интернет, и которые хотят обновить + ядро Linux, можно скачать базовую версию ядра, а затем + применить к ней патчи, которые могут быть загружены + отдельно. Это может сэкономить немного времени или + стоимость при обновлению до следующих версий. +

+
+
+
+ M4 (1.4.19) - 1,617 + KB: +
+
+

+ Домашняя страница: https://www.gnu.org/software/m4/ +

+

+ Ссылка на загрузку: https://ftp.gnu.org/gnu/m4/m4-1.4.19.tar.xz +

+

+ Контрольная сумма MD5: 0d90823e1426f1da2fd872df0311298d +

+
+
+ Make (4.4.1) - 2,300 + KB: +
+
+

+ Домашняя страница: https://www.gnu.org/software/make/ +

+

+ Ссылка на загрузку: https://ftp.gnu.org/gnu/make/make-4.4.1.tar.gz +

+

+ Контрольная сумма MD5: c8469a3713cbbe04d955d4ae4be23eeb +

+
+
+ Man-DB (2.12.0) - 1,941 + KB: +
+
+

+ Домашняя страница: https://www.nongnu.org/man-db/ +

+

+ Ссылка на загрузку: + https://download.savannah.gnu.org/releases/man-db/man-db-2.12.0.tar.xz +

+

+ Контрольная сумма MD5: 67e0052fa200901b314fad7b68c9db27 +

+
+
+ Man-pages (6.06) - 2,116 + KB: +
+
+

+ Домашняя страница: https://www.kernel.org/doc/man-pages/ +

+

+ Ссылка на загрузку: + https://www.kernel.org/pub/linux/docs/man-pages/man-pages-6.06.tar.xz +

+

+ Контрольная сумма MD5: 26b39e38248144156d437e1e10cb20bf +

+
+
+ MarkupSafe (2.1.5) - 19 + KB: +
+
+

+ Домашняя страница: https://palletsprojects.com/p/markupsafe/ +

+

+ Ссылка на загрузку: + https://pypi.org/packages/source/M/MarkupSafe/MarkupSafe-2.1.5.tar.gz +

+

+ Контрольная сумма MD5: 8fe7227653f2fb9b1ffe7f9f2058998a +

+
+
+ Meson (1.3.2) - 2,172 + KB: +
+
+

+ Домашняя страница: https://mesonbuild.com +

+

+ Ссылка на загрузку: + https://github.com/mesonbuild/meson/releases/download/1.3.2/meson-1.3.2.tar.gz +

+

+ Контрольная сумма MD5: 2d0ebd3a24249617b1c4d30026380cf8 +

+
+
+ MPC (1.3.1) - 756 + KB: +
+
+

+ Домашняя страница: https://www.multiprecision.org/ +

+

+ Ссылка на загрузку: https://ftp.gnu.org/gnu/mpc/mpc-1.3.1.tar.gz +

+

+ Контрольная сумма MD5: 5c9bc658c9fd0f940e8e3e0f09530c62 +

+
+
+ MPFR (4.2.1) - 1,459 + KB: +
+
+

+ Домашняя страница: https://www.mpfr.org/ +

+

+ Ссылка на загрузку: https://ftp.gnu.org/gnu/mpfr/mpfr-4.2.1.tar.xz +

+

+ Контрольная сумма MD5: 523c50c6318dde6f9dc523bc0244690a +

+
+
+ Ncurses (6.4-20230520) - 2,156 KB: +
+
+

+ Домашняя страница: https://www.gnu.org/software/ncurses/ +

+

+ Ссылка на загрузку: + https://anduin.linuxfromscratch.org/LFS/ncurses-6.4-20230520.tar.xz +

+

+ Контрольная сумма MD5: c5367e829b6d9f3f97b280bb3e6bfbc3 +

+
+
+ Ninja (1.11.1) - 225 + KB: +
+
+

+ Домашняя страница: https://ninja-build.org/ +

+

+ Ссылка на загрузку: + https://github.com/ninja-build/ninja/archive/v1.11.1/ninja-1.11.1.tar.gz +

+

+ Контрольная сумма MD5: 32151c08211d7ca3c1d832064f6939b0 +

+
+
+ OpenSSL (3.2.1) - 17,318 + KB: +
+
+

+ Домашняя страница: https://www.openssl.org/ +

+

+ Ссылка на загрузку: https://www.openssl.org/source/openssl-3.2.1.tar.gz +

+

+ Контрольная сумма MD5: c239213887804ba00654884918b37441 +

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

+ Домашняя страница: https://savannah.gnu.org/projects/patch/ +

+

+ Ссылка на загрузку: https://ftp.gnu.org/gnu/patch/patch-2.7.6.tar.xz +

+

+ Контрольная сумма MD5: 78ad9937e4caadcba1526ef1853730d5 +

+
+
+ Perl (5.38.2) - 13,359 + KB: +
+
+

+ Домашняя страница: https://www.perl.org/ +

+

+ Ссылка на загрузку: https://www.cpan.org/src/5.0/perl-5.38.2.tar.xz +

+

+ Контрольная сумма MD5: d3957d75042918a23ec0abac4a2b7e0a +

+
+
+ Pkgconf (2.1.1) - 305 + KB: +
+
+

+ Домашняя страница: http://pkgconf.org/ +

+

+ Ссылка на загрузку: + https://distfiles.ariadne.space/pkgconf/pkgconf-2.1.1.tar.xz +

+

+ Контрольная сумма MD5: bc29d74c2483197deb9f1f3b414b7918 +

+
+
+ Procps (4.0.4) - 1,369 + KB: +
+
+

+ Домашняя страница: https://gitlab.com/procps-ng/procps/ +

+

+ Ссылка на загрузку: + https://sourceforge.net/projects/procps-ng/files/Production/procps-ng-4.0.4.tar.xz +

+

+ Контрольная сумма MD5: 2f747fc7df8ccf402d03e375c565cf96 +

+
+
+ Psmisc (23.6) - 415 + KB: +
+
+

+ Домашняя страница: https://gitlab.com/psmisc/psmisc +

+

+ Ссылка на загрузку: + https://sourceforge.net/projects/psmisc/files/psmisc/psmisc-23.6.tar.xz +

+

+ Контрольная сумма MD5: ed3206da1184ce9e82d607dc56c52633 +

+
+
+ Python (3.12.2) - 20,109 + KB: +
+
+

+ Домашняя страница: https://www.python.org/ +

+

+ Ссылка на загрузку: + https://www.python.org/ftp/python/3.12.2/Python-3.12.2.tar.xz +

+

+ Контрольная сумма MD5: e7c178b97bf8f7ccd677b94d614f7b3c +

+
+
+ Python Documentation (3.12.2) - 8,065 KB: +
+
+

+ Ссылка на загрузку: + https://www.python.org/ftp/python/doc/3.12.2/python-3.12.2-docs-html.tar.bz2 +

+

+ Контрольная сумма MD5: 8a6310f6288e7f60c3565277ec3b5279 +

+
+
+ Readline (8.2) - 2,973 + KB: +
+
+

+ Домашняя страница: https://tiswww.case.edu/php/chet/readline/rltop.html +

+

+ Ссылка на загрузку: https://ftp.gnu.org/gnu/readline/readline-8.2.tar.gz +

+

+ Контрольная сумма MD5: 4aa1b31be779e6b84f9a96cb66bc50f6 +

+
+
+ Sed (4.9) - 1,365 + KB: +
+
+

+ Домашняя страница: https://www.gnu.org/software/sed/ +

+

+ Ссылка на загрузку: https://ftp.gnu.org/gnu/sed/sed-4.9.tar.xz +

+

+ Контрольная сумма MD5: 6aac9b2dbafcd5b7a67a8a9bcb8036c3 +

+
+
+ Setuptools (69.1.0) - 2,168 KB: +
+
+

+ Домашняя страница: https://pypi.org/project/setuptools/ +

+

+ Ссылка на загрузку: + https://pypi.org/packages/source/s/setuptools/setuptools-69.1.0.tar.gz +

+

+ Контрольная сумма MD5: 6f6eb780ce12c90d81ce243747ed7ab0 +

+
+
+ Shadow (4.14.5) - 1,765 + KB: +
+
+

+ Домашняя страница: https://github.com/shadow-maint/shadow/ +

+

+ Ссылка на загрузку: + https://github.com/shadow-maint/shadow/releases/download/4.14.5/shadow-4.14.5.tar.xz +

+

+ Контрольная сумма MD5: 452b0e59f08bf618482228ba3732d0ae +

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

+ Домашняя страница: https://www.infodrom.org/projects/sysklogd/ +

+

+ Ссылка на загрузку: + https://www.infodrom.org/projects/sysklogd/download/sysklogd-1.5.1.tar.gz +

+

+ Контрольная сумма MD5: c70599ab0d037fde724f7210c2c8d7f8 +

+
+
+ Systemd (255) - 14,516 + KB: +
+
+

+ Домашняя страница: https://www.freedesktop.org/wiki/Software/systemd/ +

+

+ Ссылка на загрузку: + https://github.com/systemd/systemd/archive/v255/systemd-255.tar.gz +

+

+ Контрольная сумма MD5: 521cda27409a9edf0370c128fae3e690 +

+
+
+ Systemd Man Pages(255) - 652 KB: +
+
+

+ Домашняя страница: https://www.freedesktop.org/wiki/Software/systemd/ +

+

+ Ссылка на загрузку: + https://anduin.linuxfromscratch.org/LFS/systemd-man-pages-255.tar.xz +

+

+ Контрольная сумма MD5: 1ebe54d7a80f9abf8f2d14ddfeb2432d +

+
+ [Примечание] +

+ Примечание +

+

+ Команда Linux From Scratch генерирует собственный архив + справочных страниц, используя исходный код systemd. Это + делается для того, чтобы избежать ненужных зависимостей. +

+
+
+
+ Sysvinit (3.08) - 263 + KB: +
+
+

+ Домашняя страница: https://savannah.nongnu.org/projects/sysvinit +

+

+ Ссылка на загрузку: + https://github.com/slicer69/sysvinit/releases/download/3.08/sysvinit-3.08.tar.xz +

+

+ Контрольная сумма MD5: 81a05f28d7b67533cfc778fcadea168c +

+
+
+ Tar (1.35) - 2,263 + KB: +
+
+

+ Домашняя страница: https://www.gnu.org/software/tar/ +

+

+ Ссылка на загрузку: https://ftp.gnu.org/gnu/tar/tar-1.35.tar.xz +

+

+ Контрольная сумма MD5: a2d8042658cfd8ea939e6d911eaf4152 +

+
+
+ Tcl (8.6.13) - 10,581 + KB: +
+
+

+ Домашняя страница: http://tcl.sourceforge.net/ +

+

+ Ссылка на загрузку: https://downloads.sourceforge.net/tcl/tcl8.6.13-src.tar.gz +

+

+ Контрольная сумма MD5: 0e4358aade2f5db8a8b6f2f6d9481ec2 +

+
+
+ Tcl Documentation (8.6.13) - 1,165 KB: +
+
+

+ Ссылка на загрузку: + https://downloads.sourceforge.net/tcl/tcl8.6.13-html.tar.gz +

+

+ Контрольная сумма MD5: 4452f2f6d557f5598cca17b786d6eb68 +

+
+
+ Texinfo (7.1) - 5,416 + KB: +
+
+

+ Домашняя страница: https://www.gnu.org/software/texinfo/ +

+

+ Ссылка на загрузку: https://ftp.gnu.org/gnu/texinfo/texinfo-7.1.tar.xz +

+

+ Контрольная сумма MD5: edd9928b4a3f82674bcc3551616eef3b +

+
+
+ Time Zone Data (2024a) - 444 KB: +
+
+

+ Домашняя страница: https://www.iana.org/time-zones +

+

+ Ссылка на загрузку: + https://www.iana.org/time-zones/repository/releases/tzdata2024a.tar.gz +

+

+ Контрольная сумма MD5: 2349edd8335245525cc082f2755d5bf4 +

+
+
+ Udev-lfs Tarball (udev-lfs-20230818) - + 10 KB: +
+
+

+ Ссылка на загрузку: + https://anduin.linuxfromscratch.org/LFS/udev-lfs-20230818.tar.xz +

+

+ Контрольная сумма MD5: acd4360d8a5c3ef320b9db88d275dae6 +

+
+
+ Util-linux (2.39.3) - 8,327 KB: +
+
+

+ Домашняя страница: + https://git.kernel.org/pub/scm/utils/util-linux/util-linux.git/ +

+

+ Ссылка на загрузку: + https://www.kernel.org/pub/linux/utils/util-linux/v2.39/util-linux-2.39.3.tar.xz +

+

+ Контрольная сумма MD5: f3591e6970c017bb4bcd24ae762a98f5 +

+
+
+ Vim (9.1.0041) - 17,224 + KB: +
+
+

+ Домашняя страница: https://www.vim.org +

+

+ Ссылка на загрузку: + https://github.com/vim/vim/archive/v9.1.0041/vim-9.1.0041.tar.gz +

+

+ Контрольная сумма MD5: 79dfe62be5d347b1325cbd5ce2a1f9b3 +

+
+ [Примечание] +

+ Примечание +

+

+ Версия vim меняется ежедневно. Чтобы получить последнюю + версию, перейдите на https://github.com/vim/vim/tags. +

+
+
+
+ Wheel (0.42.0) - 97 + KB: +
+
+

+ Домашняя страница: https://pypi.org/project/wheel/ +

+

+ Ссылка на загрузку: + https://pypi.org/packages/source/w/wheel/wheel-0.42.0.tar.gz +

+

+ Контрольная сумма MD5: 802ad6e5f9336fcb1c76b7593f0cd22d +

+
+
+ XML::Parser (2.47) - 276 + KB: +
+
+

+ Домашняя страница: https://github.com/chorny/XML-Parser +

+

+ Ссылка на загрузку: + https://cpan.metacpan.org/authors/id/T/TO/TODDR/XML-Parser-2.47.tar.gz +

+

+ Контрольная сумма MD5: 89a8e82cfd2ad948b349c0a69c494463 +

+
+
+ Xz Utils (5.4.6) - 1,645 + KB: +
+
+

+ Домашняя страница: https://tukaani.org/xz +

+

+ Ссылка на загрузку: + https://github.com/tukaani-project/xz/releases/download/v5.4.6/xz-5.4.6.tar.xz +

+

+ Контрольная сумма MD5: 7ade7bd1181a731328f875bec62a9377 +

+
+
+ Zlib (1.3.1) - 1,478 + KB: +
+
+

+ Домашняя страница: https://zlib.net/ +

+

+ Ссылка на загрузку: https://zlib.net/fossils/zlib-1.3.1.tar.gz +

+

+ Контрольная сумма MD5: 9855b6d802d7fe5b7bd5b196a2271655 +

+
+
+ Zstd (1.5.5) - 2,314 + KB: +
+
+

+ Домашняя страница: https://facebook.github.io/zstd/ +

+

+ Ссылка на загрузку: + https://github.com/facebook/zstd/releases/download/v1.5.5/zstd-1.5.5.tar.gz +

+

+ Контрольная сумма MD5: 63251602329a106220e0a5ad26ba656f +

+
+
+
+
+

+ Общий размер пакетов: примерно 504 MB +

+
+ + + diff --git a/lfs-12.1-sysv/chapter03/patches.html b/lfs-12.1-sysv/chapter03/patches.html new file mode 100644 index 0000000..877910b --- /dev/null +++ b/lfs-12.1-sysv/chapter03/patches.html @@ -0,0 +1,209 @@ + + + + + + 3.3. Необходимые патчи + + + + + + + + +

+ 3.3. + Необходимые патчи +

+
+

+ В дополнение к пакетам требуется несколько патчей. Эти патчи + исправляют ошибки в пакетах, которые должны быть исправлены + сопровождающим. Патчи также вносят небольшие изменения, облегчающие + работу с пакетами. Для создания системы LFS потребуются следующие + исправления: +

+
+
+
+
+ Bash Upstream Fixes Patch - 5.9 KB: +
+
+

+ Ссылка на загрузку: + https://mirror.linuxfromscratch.ru/patches/lfs/12.1/bash-5.2.21-upstream_fixes-1.patch +

+

+ Контрольная сумма MD5: 2d1691a629c558e894dbb78ee6bf34ef +

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

+ Ссылка на загрузку: + https://mirror.linuxfromscratch.ru/patches/lfs/12.1/bzip2-1.0.8-install_docs-1.patch +

+

+ Контрольная сумма MD5: 6a5ac7e89b791aae556de0f745916f7f +

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

+ Ссылка на загрузку: + https://mirror.linuxfromscratch.ru/patches/lfs/12.1/coreutils-9.4-i18n-1.patch +

+

+ Контрольная сумма MD5: cca7dc8c73147444e77bc45d210229bb +

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

+ Ссылка на загрузку: + https://mirror.linuxfromscratch.ru/patches/lfs/12.1/glibc-2.39-fhs-1.patch +

+

+ Контрольная сумма MD5: 9a5997c3452909b1769918c759eff8a2 +

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

+ Ссылка на загрузку: + https://mirror.linuxfromscratch.ru/patches/lfs/12.1/kbd-2.6.4-backspace-1.patch +

+

+ Контрольная сумма MD5: f75cca16a38da6caa7d52151f7136895 +

+
+
+ Readline Upstream Fix Patch - 13 KB: +
+
+

+ Ссылка на загрузку: + https://mirror.linuxfromscratch.ru/patches/lfs/12.1/readline-8.2-upstream_fixes-3.patch +

+

+ Контрольная сумма MD5: 9ed497b6cb8adcb8dbda9dee9ebce791 +

+
+
+ Sysvinit Consolidated Patch - 2.5 KB: +
+
+

+ Ссылка на загрузку: + https://mirror.linuxfromscratch.ru/patches/lfs/12.1/sysvinit-3.08-consolidated-1.patch +

+

+ Контрольная сумма MD5: 17ffccbb8e18c39e8cedc32046f3a475 +

+
+
+
+
+

+ Общий размер этих патчей: примерно 203.8 KB +

+

+ Помимо указанных выше обязательных исправлений, существует ряд + необязательных патчей, созданных сообществом LFS. Эти необязательные + исправления решают незначительные проблемы или включают функции, + которые не включены по умолчанию. Не стесняйтесь просматривать базу + данных исправлений, расположенную по адресу https://mirror.linuxfromscratch.ru/patches/downloads/, + и применять патчи, необходимые вашей системе. +

+
+ + + diff --git a/lfs-12.1-sysv/chapter04/aboutsbus.html b/lfs-12.1-sysv/chapter04/aboutsbus.html new file mode 100644 index 0000000..9535fd5 --- /dev/null +++ b/lfs-12.1-sysv/chapter04/aboutsbus.html @@ -0,0 +1,137 @@ + + + + + + 4.5. О SBU (Стандартная единица времени сборки) + + + + + + + + +

+ 4.5. О SBU + (Стандартная единица времени сборки) +

+
+

+ Многие люди хотели бы знать заранее, сколько примерно времени + потребуется для компиляции и установки каждого пакета. Поскольку + Linux From Scratch может быть собран на различных системах, + невозможно дать точную оценку времени. Сборка самого большого пакета + (gcc) займет около 5 минут на быстрых системах, но может занять + несколько дней на более медленных компьютерах! Вместо фактического + времени в книге используется показатель "стандартная единица времени + сборки" (SBU). +

+

+ Показатель SBU рассчитывается следующим образом. Первым пакетом, + который нужно скомпилировать, является binutils в Глава 5. Время, необходимое + для компиляции этого пакета с использованием одного ядра, будет + называться стандартной единицей времени сборки или SBU. Время + компиляции остальных пакетов будет рассчитано относительно этого + времени. +

+

+ Например, рассмотрим пакет, время компиляции которого составляет 4,5 + SBU. Это означает, что если вашей системе потребовалось 10 минут для + компиляции и сборки первого прохода binutils, то для сборки этого + пакета потребуется примерно 45 + минут. К счастью, в большинстве случаев, время сборки меньше, чем у + binutils. +

+

+ В целом, величина SBU не совсем точна, поскольку она зависит от + многих факторов, включая версию GCC хост-системы. Она приведены + здесь, чтобы дать оценку того, сколько времени может потребоваться + для сборки пакета, но в некоторых случаях цифры могут отличаться на + десятки минут. +

+
+ [Примечание] +

+ Примечание +

+

+ Когда используется несколько ядер, единицы измерения SBU будут + различаться еще больше, чем обычно. В некоторых случаях make просто + завершится ошибкой. Анализ выходных данных процесса сборки также + будет более сложным, поскольку строки разных потоков будут + чередоваться. Если вы столкнулись с проблемой на этапе сборки, + вернитесь к сборке на одном ядре, чтобы проанализировать сообщения + об ошибках. +

+

+ Представленные здесь значения времени основаны на замерах при + использовании четырех ядер (-j4). Время, указанное в главе 8, также + включает время выполнения регрессионных тестов для пакета, если не + указано иное. +

+
+
+ + + diff --git a/lfs-12.1-sysv/chapter04/abouttestsuites.html b/lfs-12.1-sysv/chapter04/abouttestsuites.html new file mode 100644 index 0000000..fca4099 --- /dev/null +++ b/lfs-12.1-sysv/chapter04/abouttestsuites.html @@ -0,0 +1,132 @@ + + + + + + 4.6. О наборах тестов + + + + + + + + +

+ 4.6. О наборах тестов +

+
+

+ Большинство пакетов предоставляют набор тестов. Запуск набора тестов + для только что собранного пакета — хорошая идея, потому что он может + обеспечить «проверку + работоспособности», указывающую, что все скомпилировано + правильно. Набор тестов, который проходит свой набор проверок, обычно + доказывает, что пакет работает так, как задумал разработчик. Однако + это не гарантирует, что пакет полностью без ошибок. +

+

+ Некоторые наборы тестов более важны, чем другие. Например, наборы + тестов для основных инструментов — GCC, binutils и glibc — имеют + первостепенное значение из-за их центральной роли в правильно + функционирующей системе. Выполнение наборов тестов для GCC и glibc + может занять очень много времени, особенно на медленном оборудовании, + но их выполнение настоятельно рекомендуется. +

+
+ [Примечание] +

+ Примечание +

+

+ Запуск наборов тестов, описанных в Глава 5 и Глава 6, + не имеет смысла, поскольку программы компилируются с помощью + кросс-компилятора, они, вероятно, не могут работать на хосте + сборки. +

+
+

+ Распространенной проблемой при запуске наборов тестов для binutils и + GCC является нехватка псевдотерминалов (PTY). Это может привести к + большому количеству неудачных тестов. Причин может быть несколько, но + наиболее вероятная причина заключается в том, что в хост-системе + неправильно настроена файловая система devpts. Этот вопрос более подробно обсуждается на + странице https://mirror.linuxfromscratch.ru/lfs/faq.html#no-ptys. +

+

+ Иногда наборы тестов не работают, по причинам, о которых знают + разработчики и которые они считают некритичными. Просмотрите журналы, + расположенные по адресу https://mirror.linuxfromscratch.ru/lfs/build-logs/12.1/, + чтобы проверить, ожидаются ли сбои. Этот сайт актуален для всех + наборов тестов, описанных в книге. +

+
+ + + diff --git a/lfs-12.1-sysv/chapter04/addinguser.html b/lfs-12.1-sysv/chapter04/addinguser.html new file mode 100644 index 0000000..2e49b22 --- /dev/null +++ b/lfs-12.1-sysv/chapter04/addinguser.html @@ -0,0 +1,209 @@ + + + + + + 4.3. Создание пользователя LFS + + + + + + + + +

+ 4.3. + Создание пользователя LFS +

+
+

+ При входе в систему под учетной записью root допущение одной ошибки может привести к + повреждению или разрушению системы. Поэтому пакеты в следующих двух + главах собираются из-под учетной записи непривилегированного + пользователя. Вы можете использовать свое собственное имя + пользователя, но чтобы упростить настройку рабочей среды, создайте + нового пользователя с именем lfs, + который является членом одноименной группы и выполняйте команды + из-под этой учетной записи в процессе установки. От имени + пользователя root выполните следующие + команды, чтобы добавить нового пользователя: +

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

+ Значение параметров командной строки: +

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

+ Устанавливает bash оболочкой по умолчанию + для пользователя lfs. +

+
+
+ -g + lfs +
+
+

+ Эта опция добавляет пользователя lfs в группу lfs. +

+
+
+ -m +
+
+

+ Создает домашний каталог для пользователя lfs. +

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

+ Этот параметр предотвращает возможное копирование файлов из + предустановленного набора каталогов (по умолчанию /etc/skel) путем изменения местоположения + ввода на специальное null-устройство. +

+
+
+ lfs +
+
+

+ Это имя нового пользователя. +

+
+
+
+

+ Если вы хотите войти в систему как lfs или переключиться на lfs из учетной записи непривилегированного + пользователя (в отличие от переключения на пользователя lfs при входе в систему как root, для которого не требуется пароль + пользователя lfs), вам необходимо + установить пароль для lfs. Выполните + следующую команду от имени пользователя root, чтобы установить пароль: +

+
passwd lfs
+

+ Предоставьте пользователю lfs полный + доступ ко всем каталогам в папке $LFS, + назначив lfs владельцем: +

+
chown -v lfs $LFS/{usr{,/*},lib,var,etc,bin,sbin,tools}
+case $(uname -m) in
+  x86_64) chown -v lfs $LFS/lib64 ;;
+esac
+
+ [Примечание] +

+ Примечание +

+

+ В некоторых хост-системах следующая команда не выполняется должным + образом и приостанавливает вход пользователя lfs в фоновом режиме. Если подсказка "lfs:~$" + не появляется сразу, ввод команды fg устранит проблему. +

+
+

+ Затем запустите оболочку, работающую от имени пользователя + lfs. Это можно сделать, войдя в + систему как lfs на виртуальной + консоли или с помощью следующей команды замены/переключения + пользователя: +

+
su - lfs
+

+ Аргумент «-» передает значение + команде su для запуска + оболочки входа в систему, а не обычной оболочки. Разница между этими + двумя типами оболочек подробно описана в bash(1) и info bash. +

+
+ + + diff --git a/lfs-12.1-sysv/chapter04/chapter04.html b/lfs-12.1-sysv/chapter04/chapter04.html new file mode 100644 index 0000000..3f9b0c7 --- /dev/null +++ b/lfs-12.1-sysv/chapter04/chapter04.html @@ -0,0 +1,108 @@ + + + + + + Глава 4. Заключительный этап подготовки + + + + + + + + +

+ 4. + Заключительный этап подготовки +

+
+ +
+ + + diff --git a/lfs-12.1-sysv/chapter04/creatingminlayout.html b/lfs-12.1-sysv/chapter04/creatingminlayout.html new file mode 100644 index 0000000..59c1189 --- /dev/null +++ b/lfs-12.1-sysv/chapter04/creatingminlayout.html @@ -0,0 +1,142 @@ + + + + + + 4.2. Создание ограниченной иерархии папок в файловой системе LFS + + + + + + + + +

+ 4.2. Создание ограниченной иерархии + папок в файловой системе LFS +

+
+

+ В этом разделе мы начинаем заполнять файловую систему LFS элементами, + которые будут основой конечной системы Linux. Первым шагом является + создание ограниченной иерархии каталогов, чтобы программы, + скомпилированные в Глава 6 + (а также glibc и libstdc++ в Глава 5), могли быть + установлены в их конечном расположении. Это необходимо для того, + чтобы эти временные программы были перезаписаны при сборке + окончательных версий в Глава 8. +

+

+ Создайте необходимую иерархию каталогов, выполнив следующую команду + от имени root: +

+
mkdir -pv $LFS/{etc,var} $LFS/usr/{bin,lib,sbin}
+
+for i in bin lib sbin; do
+  ln -sv usr/$i $LFS/$i
+done
+
+case $(uname -m) in
+  x86_64) mkdir -pv $LFS/lib64 ;;
+esac
+

+ Программы в Глава 6 + будут скомпилированы с помощью кросс-компилятора (более подробная + информация приведена в разделе Технические + примечания по сборочным инструментам). Чтобы отделить + кросс-компилятор от других программ, он будет установлен в + специальный каталог. Создайте этот каталог с помощью следующей + команды: +

+
mkdir -pv $LFS/tools
+
+ [Примечание] +

+ Примечание +

+

+ Редакторы LFS намеренно решили не использовать каталог /usr/lib64. В процессе сборки предпринимается ряд + шагов, чтобы убедиться, что набор инструментов не будет его + использовать. Если по какой-либо причине этот каталог появится (это + может произойти, если вы допустили ошибку, следуя инструкциям, или + потому что вы установили бинарный пакет, создавший его после сборки + LFS), это может привести к поломке вашей системы. Вы должны быть + уверены, что этого каталога не существует. +

+
+
+ + + diff --git a/lfs-12.1-sysv/chapter04/introduction.html b/lfs-12.1-sysv/chapter04/introduction.html new file mode 100644 index 0000000..c5838f1 --- /dev/null +++ b/lfs-12.1-sysv/chapter04/introduction.html @@ -0,0 +1,92 @@ + + + + + + 4.1. Введение + + + + + + + + +

+ 4.1. + Введение +

+
+

+ В этой главе мы выполним несколько дополнительных настроек для + подготовки к сборке временной системы. Мы создадим несколько + каталогов в $LFS (в котором установим + временные инструменты), добавим непривилегированного пользователя и + настроим окружение для этого пользователя. Кроме этого, будут даны + пояснения по стандартной единице времени сборки, или «SBU», которую мы + используем для измерения времени необходимого для сборки пакетов LFS, + и предоставим некоторую информацию о наборах тестов. +

+
+ + + diff --git a/lfs-12.1-sysv/chapter04/settingenvironment.html b/lfs-12.1-sysv/chapter04/settingenvironment.html new file mode 100644 index 0000000..e6a883e --- /dev/null +++ b/lfs-12.1-sysv/chapter04/settingenvironment.html @@ -0,0 +1,404 @@ + + + + + + 4.4. Настройка окружения + + + + + + + + +

+ 4.4. + Настройка окружения +

+
+

+ Настроим хорошо работающее окружение, создав два новых файла запуска + для оболочки bash. + Войдя в систему как пользователь lfs, + введите следующую команду, чтобы создать новый .bash_profile: +

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

+ При входе в систему под учетной записью пользователя lfs или при переключении на lfs, используя команду su с опцией «-», начальная оболочка + представляет собой оболочку login, которая читает данные из + /etc/profile хоста (который, вероятно, + содержит некоторые настройки и переменные среды), а затем + .bash_profile. Команда exec env -i.../bin/bash в файле + .bash_profile заменяет запущенную + оболочку новой, не содержащей переменные среды, за исключением + переменных HOME, TERM, и PS1. Это + гарантирует, что никакие нежелательные и потенциально опасные + переменные среды из хост-системы не попадут в среду сборки. +

+

+ Новый экземпляр оболочки представляет собой non-login оболочку, которая не считывает и + не выполняет содержимое файлов /etc/profile и .bash_profile, а вместо этого выполняет чтение из + файла .bashrc. Создайте файл + .bashrc: +

+
cat > ~/.bashrc << "EOF"
+set +h
+umask 022
+LFS=/mnt/lfs
+LC_ALL=POSIX
+LFS_TGT=$(uname -m)-lfs-linux-gnu
+PATH=/usr/bin
+if [ ! -L /bin ]; then PATH=/bin:$PATH; fi
+PATH=$LFS/tools/bin:$PATH
+CONFIG_SITE=$LFS/usr/share/config.site
+export LFS LC_ALL LFS_TGT PATH CONFIG_SITE
+EOF
+
+

+ Значение настроек в .bashrc +

+
+
+ set + +h +
+
+

+ Команда set +h + отключает хэш-функцию bash. Хеширование является + полезной функцией —bash использует хеш-таблицу + для запоминания полного пути к исполняемому файлу, чтобы + избежать многократного поиска одного и того же исполняемого + файла в переменной окружения PATH. + Однако новые инструменты требуется использовать сразу же после + их установки. Отключение хэш-функции, заставляет оболочку + искать переменную окружения PATH, + всякий раз, когда программу необходимо запустить. Таким + образом, оболочка найдет вновь скомпилированные инструменты в + $LFS/tools/bin, как только они + станут доступны, не запоминая предыдущую версию той же + программы, предоставленную хост-дистрибутивом, в /usr/bin или /bin. +

+
+
+ umask + 022 +
+
+

+ Установка значения пользовательской маски создания файлов + (umask) 022 гарантирует, что вновь созданные файлы и каталоги + доступны для записи только их владельцу, но будут доступны для + чтения и выполнения остальным пользователям (при условии, что + системный вызов open(2) использует + режимы по умолчанию, новые файлы получат разрешения 644, а + каталоги 755). +

+
+
+ LFS=/mnt/lfs +
+
+

+ Переменная окружения LFS должна + указывать на выбранную точку монтирования. +

+
+
+ LC_ALL=POSIX +
+
+

+ Переменная LC_ALL управляет + локализацией определенных программ, и формирует сообщения в + соответствии с локализацией указанной страны. Установка в + LC_ALL значения «POSIX» или + «C» (они + эквивалентны) гарантирует, что все будет работать должным + образом в среде кросс-компиляции. +

+
+
+ LFS_TGT=$(uname + -m)-lfs-linux-gnu +
+
+

+ Переменная LFS_TGT устанавливает + нестандартное, но совместимое описание компьютера для + использования при создании кросс-компилятора и компоновщика, а + также при кросс-компиляции временного набора инструментов. + Дополнительная информация об этом представлена в Технические + примечания по сборочным инструментам. +

+
+
+ PATH=/usr/bin +
+
+

+ Многие современные дистрибутивы Linux объединили /bin и /usr/bin. В этом случае стандартной + переменной PATH необходимо + установить значение /usr/bin/ для + окружения из Глава 6. + Когда это не так, следующая строка добавит /bin к пути. +

+
+
+ if [ ! -L /bin ]; + then PATH=/bin:$PATH; fi +
+
+

+ Если /bin не является + символической ссылкой, то его необходимо добавить в переменную + PATH. +

+
+
+ PATH=$LFS/tools/bin:$PATH +
+
+

+ Поместив $LFS/tools/bin перед + стандартным PATH, кросс-компилятор, + установленный в начале Глава 5, будет + обнаружен оболочкой сразу после его установки. Это, в сочетании + с отключением хеширования, ограничивает риск использования + компилятора хоста вместо кросс-компилятора. +

+
+
+ CONFIG_SITE=$LFS/usr/share/config.site +
+
+

+ В Глава 5 и Глава 6, + если эта переменная не задана, сценарии configure могут попытаться + загрузить элементы конфигурации, специфичные для некоторых + дистрибутивов, из /usr/share/config.site в хост-системе. + Переопределите её, чтобы предотвратить потенциальное влияние + хоста. +

+
+
+ export + ... +
+
+

+ Приведенные выше команды установили некоторые переменные, чтобы + сделать их видимыми в любых вложенных оболочках, мы + экспортируем их. +

+
+
+
+
+ [Важно] +

+ Важно +

+

+ Некоторые коммерческие дистрибутивы добавляют недокументированный + экземпляр /etc/bash.bashrc для + инициализации bash. + Этот файл потенциально может изменить среду пользователя + lfs таким образом, что это может + повлиять на сборку важных пакетов LFS. Чтобы убедиться, что + пользовательская среда lfs чиста, + проверьте наличие файла /etc/bash.bashrc и, если он есть, переименуйте + его. От имени пользователя root, + запустите: +

+
[ ! -e /etc/bash.bashrc ] || mv -v /etc/bash.bashrc /etc/bash.bashrc.NOUSE
+

+ Когда пользователь lfs больше не + нужен (в начале + Глава 7 ) вы можете безопасно восстановить /etc/bash.bashrc (по желанию). +

+

+ Обратите внимание, что пакет LFS Bash, который мы создадим в + Раздел 8.35, «Bash-5.2.21», не + настроен на загрузку или выполнение /etc/bash.bashrc, поэтому этот файл бесполезен в + готовой системе LFS. +

+
+

+ Для многих современных систем с несколькими процессорами (или ядрами) + время компиляции пакета можно сократить, выполнив «параллельную сборку», либо + установив переменную среды, либо сообщив программе make, сколько ядер задействовать + для сборки. Например, процессор Intel Core i9-13900K имеет 8 ядер P + (производительность) и 16 ядер E (энергоэффективность), ядро P может + одновременно запускать два потока, поэтому каждое ядро P моделируется + ядром Linux как два логических ядра. В результате получается 32 + логических ядра. Очевидный способ задействовать все эти логические + ядра - разрешить make + создавать до 32 заданий сборки. Это можно сделать, передав параметр + -j32 команде make: +

+
make -j32
+

+ Или установите переменную окружения MAKEFLAGS, и ее содержимое будет автоматически + использоваться make в + качестве параметров командной строки: +

+
export MAKEFLAGS=-j32
+
+ [Важно] +

+ Важно +

+

+ Никогда не передавайте параметр -j без номера в make и не устанавливайте такой + параметр в MAKEFLAGS. Иначе make будет создавать бесконечные + задания сборки, что вызовет проблемы со стабильностью системы. +

+
+

+ Чтобы использовать все логические ядра, доступные для сборки пакетов + в Глава 5 и Глава 6, + укажите параметр MAKEFLAGS в .bashrc сейчас: +

+
cat >> ~/.bashrc << "EOF"
+export MAKEFLAGS=-j$(nproc)
+EOF
+

+ Замените $(nproc) + количеством логических ядер, которые вы хотите использовать, если вы + планируете использовать не все логические ядра. +

+

+ Наконец, чтобы убедиться, что среда полностью подготовлена для сборки + временных инструментов, перечитайте только что созданный профиль + пользователя: +

+
source ~/.bash_profile
+
+ + + diff --git a/lfs-12.1-sysv/chapter05/binutils-pass1.html b/lfs-12.1-sysv/chapter05/binutils-pass1.html new file mode 100644 index 0000000..95194a3 --- /dev/null +++ b/lfs-12.1-sysv/chapter05/binutils-pass1.html @@ -0,0 +1,265 @@ + + + + + + 5.2. Binutils-2.42 - Проход 1 + + + + + + + + +

+ 5.2. + Binutils-2.42 - Проход 1 +

+
+
+

+ Пакет Binutils содержит компоновщик, ассемблер и другие инструменты + для работы с объектными файлами. +

+
+
+
+ Приблизительное время сборки: + 1 SBU +
+
+ Требуемое дисковое + пространство: 663 MB +
+
+
+
+
+

+ 5.2.1. Установка кросс-пакета Binutils +

+
+ [Примечание] +

+ Примечание +

+

+ Вернитесь назад и перечитайте примечания в разделе Общие инструкции по + компиляции. Понимание информации, помеченной как важная, + может впоследствии избавить вас от многих проблем. +

+
+

+ Очень важно, чтобы Binutils был скомпилированным первым, потому что + и Glibc, и GCC выполняют различные тесты на доступных компоновщике + и ассемблере, чтобы определить, какие из их функций следует + включить. +

+

+ В документации пакета Binutils рекомендуется выполнять сборку в + отдельном каталоге, создадим его: +

+
mkdir -v build
+cd       build
+
+ [Примечание] +

+ Примечание +

+

+ Для того, чтобы значения SBU, перечисленные в остальной части + книги, были вам полезны, измерьте время, необходимое для сборки + этого пакета, начиная с настройки и заканчивая установкой. Чтобы + добиться этого, оберните команды сборки командой time: time { ../configure ... && make + && make install; }. +

+
+

+ Теперь подготовьте Binutils к компиляции: +

+
../configure --prefix=$LFS/tools \
+             --with-sysroot=$LFS \
+             --target=$LFS_TGT   \
+             --disable-nls       \
+             --enable-gprofng=no \
+             --disable-werror    \
+             --enable-default-hash-style=gnu
+
+

+ Значение параметров настройки: +

+
+
+ --prefix=$LFS/tools +
+
+

+ Указывает сценарию configure подготовить к установке пакет + Binutils в каталог $LFS/tools. +

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

+ Для кросс-компляции указывает системе сборки искать в $LFS + библиотеки целевой системы, если необходимо. +

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

+ Поскольку название машины в значении переменной LFS_TGT может отличаться от значения, которое + возвращает сценарий config.guess, этот аргумент + укажет сценарию configure как настроить + систему сборки пакета Binutils для создания + кросс-компоновщика. +

+
+
+ --disable-nls +
+
+

+ Этот параметр отключает интернационализацию, так как i18n не + требуется для временных инструментов. +

+
+
+ --enable-gprofng=no +
+
+

+ Этот параметр отключает сборку gprofng, который не нужен для + временного инструментария. +

+
+
+ --disable-werror +
+
+

+ Этот параметр предотвращает остановку сборки в случае + появления предупреждений от компилятора хоста. +

+
+
+ --enable-default-hash-style=gnu +
+
+

+ По умолчанию компоновщик генерирует как хеш-таблицу в стиле + GNU, так и классическую хеш-таблицу ELF для общих библиотек и + динамически связанных исполняемых файлов. Хеш-таблицы + необходимы только для динамического компоновщика, + выполняющего поиск символов. В LFS динамический компоновщик + (предоставляемый пакетом Glibc) всегда будет использовать + хеш-таблицу в стиле GNU, к которой запросы выполняются + быстрее. Так что классическая хеш-таблица ELF совершенно + бесполезна. Этот параметр указывает компоновщику по умолчанию + генерировать только хеш-таблицу в стиле GNU, поэтому мы можем + избежать траты времени на создание классической хеш-таблицы + ELF при сборке пакетов или не тратить дисковое пространство + для ее хранения. +

+
+
+
+

+ Скомпилируйте пакет: +

+
make
+

+ Установите пакет: +

+
make install
+
+
+

+ Подробная информация об этом пакете находится в Раздел 8.19.2, + «Содержимое пакета Binutils.» +

+
+
+ + + diff --git a/lfs-12.1-sysv/chapter05/chapter05.html b/lfs-12.1-sysv/chapter05/chapter05.html new file mode 100644 index 0000000..9c06653 --- /dev/null +++ b/lfs-12.1-sysv/chapter05/chapter05.html @@ -0,0 +1,110 @@ + + + + + + Глава 5. Сборка кросс-тулчейна + + + + + + + + +

+ 5. Сборка + кросс-тулчейна +

+
+ +
+ + + diff --git a/lfs-12.1-sysv/chapter05/gcc-libstdc++.html b/lfs-12.1-sysv/chapter05/gcc-libstdc++.html new file mode 100644 index 0000000..a9eb128 --- /dev/null +++ b/lfs-12.1-sysv/chapter05/gcc-libstdc++.html @@ -0,0 +1,214 @@ + + + + + + 5.6. Libstdc++ из GCC-13.2.0 + + + + + + + + +

+ 5.6. Libstdc++ + из GCC-13.2.0 +

+
+
+

+ Libstdc++ — это стандартная библиотека C++. Она нужна для + компиляции кода C++ (часть GCC написана на C++), когда мы собирали + GCC-Проход 1, нам пришлось + отложить её установку, потому что она зависит от библиотеки Glibc, + которой еще не было в целевом каталоге. +

+
+
+
+ Приблизительное время сборки: + 0.2 SBU +
+
+ Требуемое дисковое + пространство: 1.1 GB +
+
+
+
+
+

+ 5.6.1. Установка библиотеки Libstdc++ +

+
+ [Примечание] +

+ Примечание +

+

+ Libstdc++ является частью + исходников GCC. Сначала вы должны распаковать архив GCC и перейти + в каталог gcc-13.2.0. +

+
+

+ Создайте отдельный каталог сборки для libstdc++ и перейдите в него: +

+
mkdir -v build
+cd       build
+

+ Подготовьте libstdc++ к компиляции: +

+
../libstdc++-v3/configure           \
+    --host=$LFS_TGT                 \
+    --build=$(../config.guess)      \
+    --prefix=/usr                   \
+    --disable-multilib              \
+    --disable-nls                   \
+    --disable-libstdcxx-pch         \
+    --with-gxx-include-dir=/tools/$LFS_TGT/include/c++/13.2.0
+
+

+ Значение параметров настройки: +

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

+ Указывает, что должен использоваться кросс-компилятор, + который мы только что собрали, вместо того, который находится + в /usr/bin. +

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

+ Этот аргумент предотвращает установку предварительно + скомпилированных include-файлов, которые на данном этапе не + нужны. +

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

+ Указывает каталог установки для include-файлов. Поскольку + libstdc++ является стандартной библиотекой C++ для LFS, этот + каталог должен соответствовать местоположению, в котором + компилятор C++ ($LFS_TGT-g++) будет искать + стандартные включаемые файлы C++. При обычной сборке эта + информация автоматически передается в Libstdc++ при + выполнении configure из каталога + верхнего уровня. В нашем случае эта информация должна быть + указана явно. Компилятор C++ добавит путь sysroot + $LFS (указанный при сборке GCC + Проход 1) к пути поиска include-файлов, поэтому фактически он + будет искать в $LFS/tools/$LFS_TGT/include/c++/13.2.0. + Комбинация переменной DESTDIR (в приведенной ниже + команде make + install) и этого аргумента обеспечивает + установку заголовочных файлов туда. +

+
+
+
+

+ Скомпилируйте Libstdc++, выполнив: +

+
make
+

+ Установите библиотеку: +

+
make DESTDIR=$LFS install
+

+ Удалите архивные файлы libtool, поскольку они потенциально опасны + при кросс-компиляции: +

+
rm -v $LFS/usr/lib/lib{stdc++{,exp,fs},supc++}.la
+
+
+

+ Подробная информация об этом пакете приведена в Раздел 8.28.2, «Содержимое + пакета GCC.» +

+
+
+ + + diff --git a/lfs-12.1-sysv/chapter05/gcc-pass1.html b/lfs-12.1-sysv/chapter05/gcc-pass1.html new file mode 100644 index 0000000..ffe0d93 --- /dev/null +++ b/lfs-12.1-sysv/chapter05/gcc-pass1.html @@ -0,0 +1,332 @@ + + + + + + 5.3. GCC-13.2.0 - Проход 1 + + + + + + + + +

+ 5.3. + GCC-13.2.0 - Проход 1 +

+
+
+

+ Пакет GCC содержит коллекцию компиляторов GNU, которая включает + компиляторы C и C++. +

+
+
+
+ Приблизительное время сборки: + 3.8 SBU +
+
+ Требуемое дисковое + пространство: 4.1 GB +
+
+
+
+
+

+ 5.3.1. Установка кросс-пакета GCC +

+

+ Для GCC требуются пакеты GMP, MPFR и MPC. Поскольку эти пакеты + могут отсутствовать в дистрибутиве вашего хоста, они будут собраны + с помощью GCC. Распакуйте каждый пакет в исходный каталог GCC и + переименуйте получившиеся каталоги, чтобы процедуры сборки GCC + использовали их автоматически: +

+
+ [Примечание] +

+ Примечание +

+

+ В этой главе часто возникают недоразумения, хотя применяются те + же процедуры, что и в любой другой главе, следуйте инструкции + которую получили ранее (Инструкции по + сборке пакетов). Сначала распакуйте пакет gcc-13.2.0 из + архива, а затем перейдите в созданный каталог. Только после этого + следует приступить к приведенным ниже инструкциям. +

+
+
tar -xf ../mpfr-4.2.1.tar.xz
+mv -v mpfr-4.2.1 mpfr
+tar -xf ../gmp-6.3.0.tar.xz
+mv -v gmp-6.3.0 gmp
+tar -xf ../mpc-1.3.1.tar.gz
+mv -v mpc-1.3.1 mpc
+

+ На хостах x86_64 измените имя каталога по умолчанию для 64-битных + библиотек на «lib»: +

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

+ В документации к GCC рекомендуется собирать GCC в отдельном + каталоге: +

+
mkdir -v build
+cd       build
+

+ Подготовьте GCC к компиляции: +

+
../configure                  \
+    --target=$LFS_TGT         \
+    --prefix=$LFS/tools       \
+    --with-glibc-version=2.39 \
+    --with-sysroot=$LFS       \
+    --with-newlib             \
+    --without-headers         \
+    --enable-default-pie      \
+    --enable-default-ssp      \
+    --disable-nls             \
+    --disable-shared          \
+    --disable-multilib        \
+    --disable-threads         \
+    --disable-libatomic       \
+    --disable-libgomp         \
+    --disable-libquadmath     \
+    --disable-libssp          \
+    --disable-libvtv          \
+    --disable-libstdcxx       \
+    --enable-languages=c,c++
+
+

+ Значение параметров настройки: +

+
+
+ --with-glibc-version=2.39 +
+
+

+ Этот параметр указывает версию Glibc, которая будет + использоваться на целевой системе. Он не имеет отношения к + libc хост-дистрибутива, потому что все, скомпилированное в + этом разделе, будет выполняться в среде chroot, которая + изолирована от libc хост-дистрибутива. +

+
+
+ --with-newlib +
+
+

+ Поскольку работающая библиотека C еще недоступна, это + гарантирует, что константа inhibit_libc будет определена при + сборке libgcc. Это предотвращает компиляцию любого кода, + требующего поддержки libc. +

+
+
+ --without-headers +
+
+

+ При создании полного кросс-компилятора GCC требует наличия + стандартных заголовков, совместимых с целевой системой. Для + наших целей эти заголовки не понадобятся. Этот параметр + предотвращает их поиск GCC. +

+
+
+ --enable-default-pie и + --enable-default-ssp +
+
+

+ Эти параметры позволяют GCC по умолчанию компилировать + программы с некоторые функциями усиливающими безопасность + (более подробная информация о них приведена в примечание о PIE и + SSP в Главе 8). На данном этапе это не является строго + обязательным, поскольку компилятор будет создавать только + временные исполняемые файлы. Но лучше, чтобы временные пакеты + были максимально приближены к тем, что будут в готовой + системе LFS. +

+
+
+ --disable-shared +
+
+

+ Этот параметр заставляет GCC статически связывать свои + внутренние библиотеки. Он необходим потому что общие + библиотеки требуют Glibc, который еще не установлен в целевой + системе. +

+
+
+ --disable-multilib +
+
+

+ На x86_64, LFS не поддерживает конфигурацию multilib. Этот + аргумент никак не влияет на работу с архитектурой x86. +

+
+
+ --disable-threads, --disable-libatomic, + --disable-libgomp, --disable-libquadmath, --disable-libssp, + --disable-libvtv, --disable-libstdcxx +
+
+

+ Эти аргументы отключают поддержку расширений для работы с + многопоточностью, libatomic, libgomp, libquadmath, libssp, + libvtv и стандартной библиотеки C++ соответственно. Эти + функции могут не скомпилироваться при сборке + кросс-компилятора и не нужны для задач кросс-компиляции + временной libc +

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

+ Этот параметр обеспечивает сборку только компиляторов C и + C++. Это единственные языки, которые нужны сейчас. +

+
+
+
+

+ Скомпилируйте GCC, выполнив: +

+
make
+

+ Установите пакет: +

+
make install
+

+ Во время сборки GCC установил пару внутренних системных + заголовочных файлов. Обычно один из файлов limits.h, включает соответствующие системные + ограничения limits.h, в данном случае + $LFS/usr/include/limits.h. Однако во + время сборки GCC $LFS/usr/include/limits.h не существует, поэтому + только что установленный внутренний заголовочный файл является + частичным, автономным файлом и не включает расширенные функции + системного файла. Этого достаточно для сборки Glibc, но полный + внутренний заголовочный файл понадобится позже. Создайте полную + версию внутреннего заголовочного файла с помощью команды, + идентичной той, что система сборки GCC использует обычно: +

+
+ [Примечание] +

+ Примечание +

+

+ В приведенной ниже команде показан пример подстановки вложенных + команд, используя два метода: обратные кавычки и конструкцию + $(). Его можно было бы переписать, + используя один и тот же метод для обеих замен, но сделано так, + чтобы продемонстрировать, как их можно использовать одновременно. + В целом метод $() предпочтительнее. +

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

+ Подробная информация об этом пакете находится в Раздел 8.28.2, «Содержимое + пакета GCC.» +

+
+
+ + + diff --git a/lfs-12.1-sysv/chapter05/glibc.html b/lfs-12.1-sysv/chapter05/glibc.html new file mode 100644 index 0000000..4c5d12f --- /dev/null +++ b/lfs-12.1-sysv/chapter05/glibc.html @@ -0,0 +1,374 @@ + + + + + + 5.5. Glibc-2.39 + + + + + + + + +

+ 5.5. Glibc-2.39 +

+
+
+

+ Пакет Glibc содержит основную библиотеку C. Эта библиотека + предоставляет основные процедуры для выделения памяти, поиска в + каталогах, открытия и закрытия файлов, чтения и записи файлов, + обработки строк, сопоставления с образцом, арифметики и так далее +

+
+
+
+ Приблизительное время сборки: + 1.5 SBU +
+
+ Требуемое дисковое + пространство: 846 MB +
+
+
+
+
+

+ 5.5.1. Установка пакета Glibc +

+

+ Во-первых, создайте символическую ссылку для соответствия + требованиям LSB. Кроме того, для совместимости с x86_64 создайте + символическую ссылку, необходимую для правильной работы загрузчика + динамической библиотеки: +

+
case $(uname -m) in
+    i?86)   ln -sfv ld-linux.so.2 $LFS/lib/ld-lsb.so.3
+    ;;
+    x86_64) ln -sfv ../lib/ld-linux-x86-64.so.2 $LFS/lib64
+            ln -sfv ../lib/ld-linux-x86-64.so.2 $LFS/lib64/ld-lsb-x86-64.so.3
+    ;;
+esac
+
+ [Примечание] +

+ Примечание +

+

+ Приведенная выше команда верна. Команда ln имеет несколько вариантов + синтаксиса, поэтому обязательно ознакомьтесь с info coreutils ln и ln(1), + прежде чем сообщать об ошибке. +

+
+

+ Некоторые программы, использующие Glibc, применяют несовместимый с + FHS каталог /var/db для хранения + своих данных времени выполнения. Установите следующий патч, чтобы + такие программы хранили свои данные в местах, совместимых с FHS: +

+
patch -Np1 -i ../glibc-2.39-fhs-1.patch
+

+ В документации к Glibc рекомендуется собирать Glibc в отдельном + каталоге: +

+
mkdir -v build
+cd       build
+

+ Убедитесь, что утилиты ldconfig and sln установлены в /usr/sbin: +

+
echo "rootsbindir=/usr/sbin" > configparms
+

+ Затем подготовьте Glibc к компиляции: +

+
../configure                             \
+      --prefix=/usr                      \
+      --host=$LFS_TGT                    \
+      --build=$(../scripts/config.guess) \
+      --enable-kernel=4.19               \
+      --with-headers=$LFS/usr/include    \
+      --disable-nscd                     \
+      libc_cv_slibdir=/usr/lib
+
+

+ Значение параметров настройки: +

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

+ Комбинация этих опций указывает на то, что система сборки + Glibc настраивается на кросс-компиляцию с использованием + кросс-компоновщика и кросс-компилятора в $LFS/tools. +

+
+
+ --enable-kernel=4.19 +
+
+

+ Этот параметр позволяет Glibc выполнять компиляцию библиотеки + с поддержкой ядра 4.19 и более поздних версий. Поддержка + более старых ядер не включена. +

+
+
+ --with-headers=$LFS/usr/include +
+
+

+ Этот аргумент позволяет скомпилировать библиотеку с + заголовочными файлами, недавно установленными в каталоге + $LFS/usr/include, таким образом, пакету будет известно, какие + функции есть у ядра, чтобы оптимизировать себя. +

+
+
+ libc_cv_slibdir=/usr/lib +
+
+

+ Этот аргумент гарантирует, что библиотека будет установлена в + /usr/lib вместо стандартного /lib64 на 64-битных машинах. +

+
+
+ --disable-nscd +
+
+

+ Параметр отключает сборку демона кэша службы имен, который + больше не используется. +

+
+
+
+

+ На этом этапе может появиться следующее предупреждение: +

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

+ Отсутствующая или несовместимая программа msgfmt, как правило, безвредна. + msgfmt является + частью пакета Gettext, который должен предоставлять + хост-дистрибутив. +

+
+ [Примечание] +

+ Примечание +

+

+ Поступали сообщения о том, что этот пакет может не + компилироваться при «параллельной сборке». Если это произойдет, + повторно запустите команду make с параметром -j1. +

+
+

+ Скомпилируйте пакет: +

+
make
+

+ Установите пакет: +

+
+ [Предупреждение] +

+ Предупреждение +

+

+ Если переменная LFS настроена + неправильно, и, несмотря на рекомендации, вы выполняете сборку от + имени пользователя root, + следующая команда установит только что собранный Glibc в вашу + хост-систему, что, скорее всего, сделает её непригодной для + использования. Поэтому дважды проверьте, правильность настройки + среды и что вы вошли в систему не под учетной записью + root, прежде чем запускать + следующую команду. +

+
+
make DESTDIR=$LFS install
+
+

+ Значение опции make + install: +

+
+
+ DESTDIR=$LFS +
+
+

+ Переменная make DESTDIR + используется почти всеми пакетами для определения места + установки пакета. Если она не задана, по умолчанию для + установки используется корневой каталог (/). Здесь мы указываем, что пакет должен + быть установлен в $LFS, который станет корневым каталогом в + Раздел 7.4, «Вход в + окружение Chroot». +

+
+
+
+

+ Исправьте жестко запрограммированный путь к исполняемому загрузчику + в ldd: +

+
sed '/RTLDLIST=/s@/usr@@g' -i $LFS/usr/bin/ldd
+
+ [Внимание] +

+ Внимание +

+

+ На этом этапе необходимо остановиться и убедиться, что основные + функции (компиляция и компоновка) нового кросс-тулчейна работают + должным образом. Чтобы выполнить проверку работоспособности, + выполните следующие команды: +

+
echo 'int main(){}' | $LFS_TGT-gcc -xc -
+readelf -l a.out | grep ld-linux
+

+ Если все работает правильно, ошибок быть не должно и вывод + последней команды будет иметь вид: +

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

+ Обратите внимание, что для 32-разрядных машин имя интерпретатора + будет /lib/ld-linux.so.2. +

+

+ Если выходные данные отображаются не так, как указано выше, или + их вообще нет, значит, что-то сделано неправильно. Разберитесь с + проблемой и повторите шаги выше, чтобы исправить ее. Эта проблема + должна быть решена, прежде чем вы продолжите. +

+

+ Как только все будет хорошо, удалите тестовый файл: +

+
rm -v a.out
+
+
+ [Примечание] +

+ Примечание +

+

+ Сборка пакетов в следующей главе послужит дополнительной + проверкой правильности сборки временного кросс-тулчейна. Если + какой-либо пакет, особенно Binutils или GCC, не удается собрать, + это указывает на то, что что-то пошло не так с установленными + ранее Binutils, GCC, или Glibc. +

+
+
+
+

+ Подробная информация об этом пакете находится в Раздел 8.5.3, «Содержимое + пакета Glibc.» +

+
+
+ + + diff --git a/lfs-12.1-sysv/chapter05/introduction.html b/lfs-12.1-sysv/chapter05/introduction.html new file mode 100644 index 0000000..a95c471 --- /dev/null +++ b/lfs-12.1-sysv/chapter05/introduction.html @@ -0,0 +1,94 @@ + + + + + + 5.1. Введение + + + + + + + + +

+ 5.1. + Введение +

+
+

+ В этой главе дано описание, как создать кросс-компилятор и связанные + с ним инструменты. Несмотря на то, что на данном этапе + кросс-компиляция имитируется, принципы его работы те же, что и для + настоящего кросс-тулчейна. +

+

+ Программы, скомпилированные в этой главе, будут установлены в каталог + $LFS/tools, чтобы они были отделены от + файлов, установленных в следующих главах. Библиотеки, же, + устанавливаются на свое постоянное место, поскольку они относятся к + системе, которую мы хотим создать. +

+
+ + + diff --git a/lfs-12.1-sysv/chapter05/linux-headers.html b/lfs-12.1-sysv/chapter05/linux-headers.html new file mode 100644 index 0000000..089f331 --- /dev/null +++ b/lfs-12.1-sysv/chapter05/linux-headers.html @@ -0,0 +1,315 @@ + + + + + + 5.4. Заголовочные файлы Linux-6.7.4 API + + + + + + + + +

+ 5.4. + Заголовочные файлы Linux-6.7.4 API +

+
+
+

+ Заголовочные файлы Linux API (в linux-6.7.4.tar.xz) предоставляют + API ядра для использования Glibc. +

+
+
+
+ Приблизительное время сборки: + менее 0.1 SBU +
+
+ Требуемое дисковое + пространство: 1.5 GB +
+
+
+
+
+

+ 5.4.1. Установка заголовочных файлов +

+

+ Ядро Linux должно предоставлять интерфейс прикладного + программирования (API) для использования системной библиотекой C + (Glibc в LFS). Это делается путем установки заголовочных файлов C, + которые поставляются в архиве с исходным кодом ядра Linux. +

+

+ Убедитесь, что в пакете нет устаревших файлов: +

+
make mrproper
+

+ Теперь извлеките видимые пользователю заголовочные файлы ядра из + исходного кода. Рекомендуемый способ make «headers_install» + использовать нельзя, так как для этого требуется rsync, который может быть недоступен. + Заголовочные файлы сначала помещаются в /usr, а затем копируются в нужное место. +

+
make headers
+find usr/include -type f ! -name '*.h' -delete
+cp -rv usr/include $LFS/usr
+
+
+

+ 5.4.2. Содержимое заголовочных файлов + Linux API +

+
+
+
+ Установленные заголовочные + файлы:: /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 +
+
+ Созданные каталоги:: + /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 +
+
+
+
+

+ Краткое описание +

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

+ /usr/include/asm/*.h +

+
+

+ Заголовочные файлы Linux API ASM +

+
+

+ /usr/include/asm-generic/*.h +

+
+

+ Заголовочные файлы Linux API ASM Generic +

+
+

+ /usr/include/drm/*.h +

+
+

+ Заголовочные файлы Linux API DRM +

+
+

+ /usr/include/linux/*.h +

+
+

+ Заголовочные файлы Linux API Linux +

+
+

+ /usr/include/misc/*.h +

+
+

+ Заголовочные файлы Linux API Miscellaneous +

+
+

+ /usr/include/mtd/*.h +

+
+

+ Заголовочные файлы API MTD +

+
+

+ /usr/include/rdma/*.h +

+
+

+ Заголовочные файлы Linux API RDMA +

+
+

+ /usr/include/scsi/*.h +

+
+

+ Заголовочные файлы Linux API SCSI +

+
+

+ /usr/include/sound/*.h +

+
+

+ Заголовочные файлы Linux API Sound +

+
+

+ /usr/include/video/*.h +

+
+

+ Заголовочные файлы Linux API Video +

+
+

+ /usr/include/xen/*.h +

+
+

+ Заголовочные файлы Linux API Xen +

+
+
+
+
+ + + diff --git a/lfs-12.1-sysv/chapter06/bash.html b/lfs-12.1-sysv/chapter06/bash.html new file mode 100644 index 0000000..ca62712 --- /dev/null +++ b/lfs-12.1-sysv/chapter06/bash.html @@ -0,0 +1,153 @@ + + + + + + 6.4. Bash-5.2.21 + + + + + + + + +

+ 6.4. Bash-5.2.21 +

+
+
+

+ Пакет Bash содержит Bourne-Again Shell. +

+
+
+
+ Приблизительное время сборки: + 0.2 SBU +
+
+ Требуемое дисковое + пространство: 67 MB +
+
+
+
+
+

+ 6.4.1. Установка пакета Bash +

+

+ Подготовьте Bash к компиляции: +

+
./configure --prefix=/usr                      \
+            --build=$(sh support/config.guess) \
+            --host=$LFS_TGT                    \
+            --without-bash-malloc
+
+

+ Значение параметров настройки: +

+
+
+ --without-bash-malloc +
+
+

+ Этот параметр отключает использование функции распределения + памяти (malloc) Bash, которая, + как известно, вызывает ошибки сегментации. Если опция + отключена, Bash будет использовать функции malloc из Glibc, которые более стабильны. +

+
+
+
+

+ Скомпилируйте пакет: +

+
make
+

+ Установите пакет: +

+
make DESTDIR=$LFS install
+

+ Создайте символическую ссылку для программ, которые используют + sh как оболочку: +

+
ln -sv bash $LFS/bin/sh
+
+
+

+ Подробная информация об этом пакете находится в Раздел 8.35.2, «Содержимое + пакета Bash.» +

+
+
+ + + diff --git a/lfs-12.1-sysv/chapter06/binutils-pass2.html b/lfs-12.1-sysv/chapter06/binutils-pass2.html new file mode 100644 index 0000000..aa97a0f --- /dev/null +++ b/lfs-12.1-sysv/chapter06/binutils-pass2.html @@ -0,0 +1,182 @@ + + + + + + 6.17. Binutils-2.42 - Проход 2 + + + + + + + + +

+ 6.17. Binutils-2.42 - Проход 2 +

+
+
+

+ Пакет Binutils содержит компоновщик, ассемблер и другие инструменты + для работы с объектными файлами. +

+
+
+
+ Приблизительное время сборки: + 0.5 SBU +
+
+ Требуемое дисковое + пространство: 537 MB +
+
+
+
+
+

+ 6.17.1. Установка пакета Binutils +

+

+ Система сборки Binutils использует содержащуюся в пакете копию + libtool для линковки с внутренними статическими библиотеками, но + копии libiberty и zlib, поставляемые с пакетом, не используют + libtool. Это несоответствие может привести к тому, что созданные + двоичные файлы будут ошибочно связаны с библиотеками из основного + дистрибутива. Решение этой проблемы: +

+
sed '6009s/$add_dir//' -i ltmain.sh
+

+ Создайте отдельный каталог для сборки: +

+
mkdir -v build
+cd       build
+

+ Подготовьте Binutils к компиляции: +

+
../configure                   \
+    --prefix=/usr              \
+    --build=$(../config.guess) \
+    --host=$LFS_TGT            \
+    --disable-nls              \
+    --enable-shared            \
+    --enable-gprofng=no        \
+    --disable-werror           \
+    --enable-64-bit-bfd        \
+    --enable-default-hash-style=gnu
+
+

+ Значение новых параметров настройки: +

+
+
+ --enable-shared +
+
+

+ Собирает libbfd как разделяемую + библиотеку +

+
+
+ --enable-64-bit-bfd +
+
+

+ Включает 64-разрядную поддержку (на хостах с меньшим размером + слова). В 64-разрядных системах это может и не понадобиться, + но вреда от этого не будет +

+
+
+
+

+ Скомпилируйте пакет: +

+
make
+

+ Установите пакет: +

+
make DESTDIR=$LFS install
+

+ Удалите архивные файлы libtool, поскольку они потенциально опасны + при кросс-компиляции, также удалите ненужные статические библиотеки +

+
rm -v $LFS/usr/lib/lib{bfd,ctf,ctf-nobfd,opcodes,sframe}.{a,la}
+
+
+

+ Подробная информация об этом пакете находится в Раздел 8.19.2, + «Содержимое пакета Binutils.» +

+
+
+ + + diff --git a/lfs-12.1-sysv/chapter06/chapter06.html b/lfs-12.1-sysv/chapter06/chapter06.html new file mode 100644 index 0000000..0291a0c --- /dev/null +++ b/lfs-12.1-sysv/chapter06/chapter06.html @@ -0,0 +1,145 @@ + + + + + + Глава 6. Кросс-Компиляция временных инструментов + + + + + + + + +

+ 6. + Кросс-Компиляция временных инструментов +

+
+
+

+ Содержание +

+ +
+
+ + + diff --git a/lfs-12.1-sysv/chapter06/coreutils.html b/lfs-12.1-sysv/chapter06/coreutils.html new file mode 100644 index 0000000..3f6f7d4 --- /dev/null +++ b/lfs-12.1-sysv/chapter06/coreutils.html @@ -0,0 +1,157 @@ + + + + + + 6.5. Coreutils-9.4 + + + + + + + + +

+ 6.5. + Coreutils-9.4 +

+
+
+

+ Пакет Coreutils содержит основные утилиты, необходимые каждой + операционной системе. +

+
+
+
+ Приблизительное время сборки: + 0.3 SBU +
+
+ Требуемое дисковое + пространство: 173 MB +
+
+
+
+
+

+ 6.5.1. Установка пакета Coreutils +

+

+ Подготовьте Coreutils к компиляции: +

+
./configure --prefix=/usr                     \
+            --host=$LFS_TGT                   \
+            --build=$(build-aux/config.guess) \
+            --enable-install-program=hostname \
+            --enable-no-install-program=kill,uptime
+
+

+ Значение параметров настройки: +

+
+
+ --enable-install-program=hostname +
+
+

+ Этот параметр позволяет создать и установить двоичный файл + hostname – по + умолчанию он отключен, но требуется для набора тестов Perl. +

+
+
+
+

+ Скомпилируйте пакет: +

+
make
+

+ Установите пакет: +

+
make DESTDIR=$LFS install
+

+ Переместите программы в их конечное местоположение. Хотя во + временной среде в этом нет необходимости, мы должны это сделать, + потому что некоторые программы жестко прописывают местоположение + исполняемых файлов: +

+
mv -v $LFS/usr/bin/chroot              $LFS/usr/sbin
+mkdir -pv $LFS/usr/share/man/man8
+mv -v $LFS/usr/share/man/man1/chroot.1 $LFS/usr/share/man/man8/chroot.8
+sed -i 's/"1"/"8"/'                    $LFS/usr/share/man/man8/chroot.8
+
+
+

+ Подробная информация об этом пакете находится в Раздел 8.57.2, + «Содержимое пакета Coreutils.» +

+
+
+ + + diff --git a/lfs-12.1-sysv/chapter06/diffutils.html b/lfs-12.1-sysv/chapter06/diffutils.html new file mode 100644 index 0000000..927148f --- /dev/null +++ b/lfs-12.1-sysv/chapter06/diffutils.html @@ -0,0 +1,126 @@ + + + + + + 6.6. Diffutils-3.10 + + + + + + + + +

+ 6.6. + Diffutils-3.10 +

+
+
+

+ Пакет Diffutils содержит программы, которые показывают различия + между файлами или каталогами. +

+
+
+
+ Приблизительное время сборки: + 0.1 SBU +
+
+ Требуемое дисковое + пространство: 29 MB +
+
+
+
+
+

+ 6.6.1. Установка пакета Diffutils +

+

+ Подготовьте Diffutils для компиляции: +

+
./configure --prefix=/usr   \
+            --host=$LFS_TGT \
+            --build=$(./build-aux/config.guess)
+

+ Скомпилируйте пакет: +

+
make
+

+ Установите пакет: +

+
make DESTDIR=$LFS install
+
+
+

+ Подробная информация об этом пакете находится в Раздел 8.59.2, + «Содержимое пакета Diffutils.» +

+
+
+ + + diff --git a/lfs-12.1-sysv/chapter06/file.html b/lfs-12.1-sysv/chapter06/file.html new file mode 100644 index 0000000..e61b689 --- /dev/null +++ b/lfs-12.1-sysv/chapter06/file.html @@ -0,0 +1,167 @@ + + + + + + 6.7. File-5.45 + + + + + + + + +

+ 6.7. File-5.45 +

+
+
+

+ Пакет File содержит утилиту для определения типа указанного файла + или файлов +

+
+
+
+ Приблизительное время сборки: + 0.1 SBU +
+
+ Требуемое дисковое + пространство: 37 MB +
+
+
+
+
+

+ 6.7.1. Установка пакета File +

+

+ Команда file на хосте + сборки должна быть той же версии, что и собираемая, чтобы создать + файл подписи. Выполните следующие команды, чтобы создать временную + копию команды file. +

+
mkdir build
+pushd build
+  ../configure --disable-bzlib      \
+               --disable-libseccomp \
+               --disable-xzlib      \
+               --disable-zlib
+  make
+popd
+
+

+ Значение новой опции настройки: +

+
+
+ --disable-* +
+
+

+ Сценарий конфигурации пытается использовать некоторые пакеты + из основного дистрибутива, если существуют соответствующие + файлы библиотек. Это может привести к сбою компиляции, если + файлы библиотек существует, но отсутствуют соответствующие + заголовочные файлы. Эти параметры предотвращают использование + ненужных возможностей хоста. +

+
+
+
+

+ Подготовьте файл для компиляции: +

+
./configure --prefix=/usr --host=$LFS_TGT --build=$(./config.guess)
+

+ Скомпилируйте пакет: +

+
make FILE_COMPILE=$(pwd)/build/src/file
+

+ Установите пакет: +

+
make DESTDIR=$LFS install
+

+ Удалите архивный файл libtool, поскольку он потенциально опасен при + кросс-компиляции: +

+
rm -v $LFS/usr/lib/libmagic.la
+
+
+

+ Подробная информация об этом пакете находится в Раздел 8.10.2, «Содержимое + пакета File.» +

+
+
+ + + diff --git a/lfs-12.1-sysv/chapter06/findutils.html b/lfs-12.1-sysv/chapter06/findutils.html new file mode 100644 index 0000000..1329b27 --- /dev/null +++ b/lfs-12.1-sysv/chapter06/findutils.html @@ -0,0 +1,131 @@ + + + + + + 6.8. Findutils-4.9.0 + + + + + + + + +

+ 6.8. + Findutils-4.9.0 +

+
+
+

+ Пакет Findutils содержит программы для поиска файлов. Эти программы + предназначены для поиска по всем файлам в дереве каталогов, а также + для создания, обслуживания и поиска в базе данных (часто быстрее, + чем рекурсивный поиск, но ненадежно, если база данных давно не + обновлялась).Findutils также предоставляет программу xargs, которую можно использовать + для запуска указанной команды для каждого файла, выбранного при + поиске. +

+
+
+
+ Приблизительное время сборки: + 0.1 SBU +
+
+ Требуемое дисковое + пространство: 42 MB +
+
+
+
+
+

+ 6.8.1. Установка пакета Findutils +

+

+ Подготовьте Findutils к компиляции: +

+
./configure --prefix=/usr                   \
+            --localstatedir=/var/lib/locate \
+            --host=$LFS_TGT                 \
+            --build=$(build-aux/config.guess)
+

+ Скомпилируйте пакет: +

+
make
+

+ Установите пакет: +

+
make DESTDIR=$LFS install
+
+
+

+ Подробная информация об этом пакете находится в Раздел 8.61.2, + «Содержимое пакета Findutils.» +

+
+
+ + + diff --git a/lfs-12.1-sysv/chapter06/gawk.html b/lfs-12.1-sysv/chapter06/gawk.html new file mode 100644 index 0000000..5c55964 --- /dev/null +++ b/lfs-12.1-sysv/chapter06/gawk.html @@ -0,0 +1,130 @@ + + + + + + 6.9. Gawk-5.3.0 + + + + + + + + +

+ 6.9. Gawk-5.3.0 +

+
+
+

+ Пакет Gawk содержит программы для работы с текстовыми файлами. +

+
+
+
+ Приблизительное время сборки: + 0.1 SBU +
+
+ Требуемое дисковое + пространство: 47 MB +
+
+
+
+
+

+ 6.9.1. Установка пакета Gawk +

+

+ Во-первых, убедитесь, что некоторые ненужные файлы не будут + установлены: +

+
sed -i 's/extras//' Makefile.in
+

+ Подготовьте Gawk к компиляции: +

+
./configure --prefix=/usr   \
+            --host=$LFS_TGT \
+            --build=$(build-aux/config.guess)
+

+ Скомпилируйте пакет: +

+
make
+

+ Установите пакет: +

+
make DESTDIR=$LFS install
+
+
+

+ Подробная информация об этом пакете находится в Раздел 8.60.2, «Содержимое + пакета Gawk.» +

+
+
+ + + diff --git a/lfs-12.1-sysv/chapter06/gcc-pass2.html b/lfs-12.1-sysv/chapter06/gcc-pass2.html new file mode 100644 index 0000000..a406e4d --- /dev/null +++ b/lfs-12.1-sysv/chapter06/gcc-pass2.html @@ -0,0 +1,273 @@ + + + + + + 6.18. GCC-13.2.0 - Проход 2 + + + + + + + + +

+ 6.18. + GCC-13.2.0 - Проход 2 +

+
+
+

+ Пакет GCC содержит коллекцию компиляторов GNU, которая включает + компиляторы C и C++. +

+
+
+
+ Приблизительное время сборки: + 4.4 SBU +
+
+ Требуемое дисковое + пространство: 4.8 GB +
+
+
+
+
+

+ 6.18.1. Установка пакета GCC +

+

+ Как и при первой сборке GCC, требуются пакеты GMP, MPFR и MPC. + Распакуйте архивы и переименуйте каталоги: +

+
tar -xf ../mpfr-4.2.1.tar.xz
+mv -v mpfr-4.2.1 mpfr
+tar -xf ../gmp-6.3.0.tar.xz
+mv -v gmp-6.3.0 gmp
+tar -xf ../mpc-1.3.1.tar.gz
+mv -v mpc-1.3.1 mpc
+

+ При сборке на x86_64 измените имя каталога по умолчанию для + 64-разрядных библиотек на «lib»: +

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

+ Переопределите правила сборки заголовочных файлов libgcc и + libstdc++, чтобы разрешить создание этих библиотек с поддержкой + потоков POSIX: +

+
sed '/thread_header =/s/@.*@/gthr-posix.h/' \
+    -i libgcc/Makefile.in libstdc++-v3/include/Makefile.in
+

+ Снова создайте отдельный каталог сборки: +

+
mkdir -v build
+cd       build
+

+ Перед началом сборки GCC не забудьте отключить все переменные + среды, которые переопределяют флаги оптимизации по умолчанию. +

+

+ Теперь подготовьте GCC к компиляции: +

+
../configure                                       \
+    --build=$(../config.guess)                     \
+    --host=$LFS_TGT                                \
+    --target=$LFS_TGT                              \
+    LDFLAGS_FOR_TARGET=-L$PWD/$LFS_TGT/libgcc      \
+    --prefix=/usr                                  \
+    --with-build-sysroot=$LFS                      \
+    --enable-default-pie                           \
+    --enable-default-ssp                           \
+    --disable-nls                                  \
+    --disable-multilib                             \
+    --disable-libatomic                            \
+    --disable-libgomp                              \
+    --disable-libquadmath                          \
+    --disable-libsanitizer                         \
+    --disable-libssp                               \
+    --disable-libvtv                               \
+    --enable-languages=c,c++
+
+

+ Значение новых параметров настройки: +

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

+ Обычно, использование --host гарантирует, что для + сборки GCC используется кросс-компилятор, и этот компилятор + знает, что он должен искать заголовочные файлы и библиотеки в + $LFS. Но сборочная система GCC + использует другие инструменты, которые не знают об этом + местоположении. Этот параметр необходим для того, чтобы они + могли найти нужные файлы в $LFS, а не на хосте. +

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

+ Поскольку мы выполняем кросс-компиляцию GCC, невозможно + создать целевые библиотеки (libgcc и libstdc++) с ранее скомпилированными + двоичными файлами GCC, потому что эти двоичные файлы не будут + работать на хост-дистрибутиве. Система сборки GCC по + умолчанию попытается использовать компиляторы C и C++ хоста в + качестве обходного пути. Сейчас не поддерживается создание + целевых библиотек GCC с помощью другой версии GCC, поэтому + использование компиляторов хоста может привести к сбою + сборки. Этот параметр гарантирует сборку библиотек с помощью + GCC собранного на первом проходе. +

+
+
+ LDFLAGS_FOR_TARGET=... +
+
+

+ Разрешить libstdc++ + использовать общую библиотеку libgcc, собранную на этом этапе, вместо + статической версии, собранной в GCC Проход 1. Это необходимо + для поддержки обработки исключений C++ +

+
+
+ --disable-libsanitizer +
+
+

+ Отключает библиотеки среды выполнения GCC sanitizer. Они не + нужны для временного набора инструментов. Этот параметр + необходим для сборки GCC без установки libcrypt для целевого объекта. В + GCC-Проход 1 это решалось с + помощью параметра --disable-libstdcxx, но теперь + мы должны передать его явно. +

+
+
+
+

+ Скомпилируйте пакет: +

+
make
+

+ Установите пакет: +

+
make DESTDIR=$LFS install
+

+ В качестве завершающего штриха создайте символическую ссылку на + утилиту. Многие программы и скрипты используют cc вместо gcc, чтобы сделать программы + более универсальными и, следовательно, для совместимости со всеми + типами UNIX-систем, где компилятор GNU C не всегда установлен. + Наличие cc оставляет + системному администратору право самостоятельно решать, какой + компилятор C устанавливать: +

+
ln -sv gcc $LFS/usr/bin/cc
+
+
+

+ Подробная информация об этом пакете находится в Раздел 8.28.2, «Содержимое + пакета GCC.» +

+
+
+ + + diff --git a/lfs-12.1-sysv/chapter06/grep.html b/lfs-12.1-sysv/chapter06/grep.html new file mode 100644 index 0000000..c568f37 --- /dev/null +++ b/lfs-12.1-sysv/chapter06/grep.html @@ -0,0 +1,122 @@ + + + + + + 6.10. Grep-3.11 + + + + + + + + +

+ 6.10. Grep-3.11 +

+
+
+

+ Пакет Grep содержит программы для поиска по содержимому файлов. +

+
+
+
+ Приблизительное время сборки: + 0.1 SBU +
+
+ Требуемое дисковое + пространство: 27 MB +
+
+
+
+
+

+ 6.10.1. Установка пакета Grep +

+

+ Подготовьте Grep к компиляции: +

+
./configure --prefix=/usr   \
+            --host=$LFS_TGT \
+            --build=$(./build-aux/config.guess)
+

+ Скомпилируйте пакет: +

+
make
+

+ Установите пакет: +

+
make DESTDIR=$LFS install
+
+
+

+ Подробная информация об этом пакете находится в Раздел 8.34.2, «Содержимое + пакета Grep.» +

+
+
+ + + diff --git a/lfs-12.1-sysv/chapter06/gzip.html b/lfs-12.1-sysv/chapter06/gzip.html new file mode 100644 index 0000000..3453831 --- /dev/null +++ b/lfs-12.1-sysv/chapter06/gzip.html @@ -0,0 +1,120 @@ + + + + + + 6.11. Gzip-1.13 + + + + + + + + +

+ 6.11. Gzip-1.13 +

+
+
+

+ Пакет Gzip содержит программы для сжатия и распаковки файлов. +

+
+
+
+ Приблизительное время сборки: + 0.1 SBU +
+
+ Требуемое дисковое + пространство: 11 MB +
+
+
+
+
+

+ 6.11.1. Установка пакета Gzip +

+

+ Подготовьте Gzip к компиляции: +

+
./configure --prefix=/usr --host=$LFS_TGT
+

+ Скомпилируйте пакет: +

+
make
+

+ Установите пакет: +

+
make DESTDIR=$LFS install
+
+
+

+ Подробная информация об этом пакете находится в Раздел 8.64.2, «Содержимое + пакета Gzip.» +

+
+
+ + + diff --git a/lfs-12.1-sysv/chapter06/introduction.html b/lfs-12.1-sysv/chapter06/introduction.html new file mode 100644 index 0000000..1806cb4 --- /dev/null +++ b/lfs-12.1-sysv/chapter06/introduction.html @@ -0,0 +1,103 @@ + + + + + + 6.1. Введение + + + + + + + + +

+ 6.1. Введение +

+
+

+ В этой главе рассказывается, как выполнить кросс-компиляцию базовых + утилит с использованием только что собранного кросс-тулчейна. Эти + утилиты установлены в свое конечное местоположение, но пока не могут + быть использованы. Выполняемые инструкции по-прежнему зависят от + инструментария хоста. Тем не менее, установленные библиотеки + используются при компоновке. +

+

+ Использование утилит станет возможным в следующей главе после входа в + среду «chroot». + Все пакеты из этой главы, должны быть собраны до того, как мы это + сделаем. Поэтому пока наша система зависима от хост-системы. +

+

+ Еще раз напомним, что неправильная настройка LFS вместе со сборкой от root может сделать ваш компьютер непригодным для + использования. Всю эту главу нужно выполнить от имени пользователя + lfs, в его рабочем окружении, как + описано в Раздел 4.4, «Настройка + окружения». +

+
+ + + diff --git a/lfs-12.1-sysv/chapter06/m4.html b/lfs-12.1-sysv/chapter06/m4.html new file mode 100644 index 0000000..a400713 --- /dev/null +++ b/lfs-12.1-sysv/chapter06/m4.html @@ -0,0 +1,126 @@ + + + + + + 6.2. M4-1.4.19 + + + + + + + + +

+ 6.2. M4-1.4.19 +

+
+
+

+ Пакет M4 содержит макропроцессор. +

+
+
+
+ Приблизительное время сборки: + 0.1 SBU +
+
+ Требуемое дисковое + пространство: 31 MB +
+
+
+
+
+

+ 6.2.1. Установка пакета M4 +

+

+ Подготовьте пакет M4 к компиляции: +

+
./configure --prefix=/usr   \
+            --host=$LFS_TGT \
+            --build=$(build-aux/config.guess)
+

+ Скомпилируйте пакет: +

+
make
+

+ Установите пакет: +

+
make DESTDIR=$LFS install
+
+
+

+ Подробная информация об этом пакете находится в Раздел 8.12.2, «Содержимое + пакета M4.» +

+
+
+ + + diff --git a/lfs-12.1-sysv/chapter06/make.html b/lfs-12.1-sysv/chapter06/make.html new file mode 100644 index 0000000..c979b68 --- /dev/null +++ b/lfs-12.1-sysv/chapter06/make.html @@ -0,0 +1,143 @@ + + + + + + 6.12. Make-4.4.1 + + + + + + + + +

+ 6.12. Make-4.4.1 +

+
+
+

+ Пакет Make содержит программу, управляющую генерацией исполняемых и + других файлов, из исходного кода. +

+
+
+
+ Приблизительное время сборки: + менее 0.1 SBU +
+
+ Требуемое дисковое + пространство: 15 MB +
+
+
+
+
+

+ 6.12.1. Установка пакета Make +

+

+ Подготовьте Make к компиляции: +

+
./configure --prefix=/usr   \
+            --without-guile \
+            --host=$LFS_TGT \
+            --build=$(build-aux/config.guess)
+
+

+ Значение новой опции настройки: +

+
+
+ --without-guile +
+
+

+ Несмотря на то, что мы выполняем кросс-компиляцию, configure + пытается использовать guile с узла сборки, если он его + находит. Это приводит к сбою компиляции, этот аргумент + предотвращает его использование. +

+
+
+
+

+ Скомпилируйте пакет: +

+
make
+

+ Установите пакет: +

+
make DESTDIR=$LFS install
+
+
+

+ Подробная информация об этом пакете находится в Раздел 8.68.2, «Содержимое + пакета Make.» +

+
+
+ + + diff --git a/lfs-12.1-sysv/chapter06/ncurses.html b/lfs-12.1-sysv/chapter06/ncurses.html new file mode 100644 index 0000000..245ff48 --- /dev/null +++ b/lfs-12.1-sysv/chapter06/ncurses.html @@ -0,0 +1,309 @@ + + + + + + 6.3. Ncurses-6.4-20230520 + + + + + + + + +

+ 6.3. + Ncurses-6.4-20230520 +

+
+
+

+ Пакет Ncurses содержит библиотеки для независимой от терминала + обработки ввода/вывода +

+
+
+
+ Приблизительное время сборки: + 0.3 SBU +
+
+ Требуемое дисковое + пространство: 51 MB +
+
+
+
+
+

+ 6.3.1. Установка пакета Ncurses +

+

+ Во-первых, убедитесь, что gawk найден первым во время + настройки: +

+
sed -i s/mawk// configure
+

+ Затем выполните следующие команды, чтобы собрать программу + «tic» на + хосте сборки: +

+
mkdir build
+pushd build
+  ../configure
+  make -C include
+  make -C progs tic
+popd
+

+ Подготовьте Ncurses к компиляции: +

+
./configure --prefix=/usr                \
+            --host=$LFS_TGT              \
+            --build=$(./config.guess)    \
+            --mandir=/usr/share/man      \
+            --with-manpage-format=normal \
+            --with-shared                \
+            --without-normal             \
+            --with-cxx-shared            \
+            --without-debug              \
+            --without-ada                \
+            --disable-stripping          \
+            --enable-widec
+
+

+ Значение новых параметров настройки: +

+
+
+ --with-manpage-format=normal +
+
+

+ Этот аргумент предотвращает установку Ncurses сжатых страниц + руководства, это может произойти, если сам дистрибутив хоста + содержит сжатые страницы руководства. +

+
+
+ --with-shared +
+
+

+ Этот аргумент позволяет Ncurses собирать и устанавливать + разделяемые библиотеки C. +

+
+
+ --without-normal +
+
+

+ Этот аргумент предотвращает сборку и установку статических + библиотек C. +

+
+
+ --without-debug +
+
+

+ Этот аргумент предотвращает сборку и установку отладочных + библиотек. +

+
+
+ --with-cxx-shared +
+
+

+ Это аргумент позволяет Ncurses собирать и устанавливать общие + привязки C++. А также предотвращает сборку и установку + статических привязок C++. +

+
+
+ --without-ada +
+
+

+ Этот аргумент гарантирует, что Ncurses будет собран без + поддержки компилятора Ada, который может присутствовать на + хосте, но будет недоступен, как только мы войдем в среду + chroot. +

+
+
+ --disable-stripping +
+
+

+ Этот аргумент не позволяет системе сборки использовать + программу strip + с хоста. Использование инструментов хоста в + кросс-компилируемой программе может привести к сбою. +

+
+
+ --enable-widec +
+
+

+ Этот аргумент указывает, что необходимо скомпилировать + библиотеки расширенных символов (такие как, libncursesw.so.6.4-20230520) вместо обычных + (таких как, libncurses.so.6.4-20230520). Эти библиотеки + расширенных символов можно использовать как в многобайтовой, + так и традиционной 8-битной локали, в то время как обычные + библиотеки корректно работают только в 8-битных локалях. + Библиотеки расширенных символов и обычные совместимы на + уровне исходного кода, но не совместимы в двоичном. +

+
+
+
+

+ Скомпилируйте пакет: +

+
make
+

+ Установите пакет: +

+
make DESTDIR=$LFS TIC_PATH=$(pwd)/build/progs/tic install
+ln -sv libncursesw.so $LFS/usr/lib/libncurses.so
+sed -e 's/^#if.*XOPEN.*$/#if 1/' \
+    -i $LFS/usr/include/curses.h
+
+

+ Значение параметров установки: +

+
+
+ TIC_PATH=$(pwd)/build/progs/tic +
+
+

+ Нам нужно передать путь до только что собранной программы + tic, которая + работает на сборочной машине, чтобы база данных терминала + была создана без ошибок. +

+
+
+ ln -sv + libncursesw.so + $LFS/usr/lib/libncurses.so +
+
+

+ Библиотека libncurses.so + необходима для нескольких пакетов, которые мы скоро соберем. + Мы создаем эту символическую ссылку, чтобы использовать + libncursesw.so в качестве + замены. +

+
+
+ sed -e + 's/^#if.*XOPEN.*$/#if 1/' ... +
+
+

+ Заголовочный файл curses.h + содержит определения различных структур данных Ncurses. С + разными определениями макросов препроцессора могут + использоваться два разных набора определений структуры + данных: 8-битное определение совместимо с libncurses.so, а определение расширенного + набора символов совместимо с libncursesw.so . Поскольку мы используем + libncursesw.so вместо + libncurses.so, отредактируйте + заголовочный файл, чтобы он всегда использовал определение + структуры данных расширенного набора символов, совместимое с + . libncursesw.so. +

+
+
+
+
+
+

+ Подробная информация об этом пакете находится в Раздел 8.29.2, «Содержимое + пакета Ncurses.» +

+
+
+ + + diff --git a/lfs-12.1-sysv/chapter06/patch.html b/lfs-12.1-sysv/chapter06/patch.html new file mode 100644 index 0000000..16863da --- /dev/null +++ b/lfs-12.1-sysv/chapter06/patch.html @@ -0,0 +1,125 @@ + + + + + + 6.13. Patch-2.7.6 + + + + + + + + +

+ 6.13. Patch-2.7.6 +

+
+
+

+ Пакет Patch содержит программу для изменения или создания файлов + путём наложение «патча», обычно, создаваемого программой + diff. +

+
+
+
+ Приблизительное время сборки: + 0.1 SBU +
+
+ Требуемое дисковое + пространство: 12 MB +
+
+
+
+
+

+ 6.13.1. Установка пакета Patch +

+

+ Подготовьте Patch к компиляции: +

+
./configure --prefix=/usr   \
+            --host=$LFS_TGT \
+            --build=$(build-aux/config.guess)
+

+ Скомпилируйте пакет: +

+
make
+

+ Установите пакет: +

+
make DESTDIR=$LFS install
+
+
+

+ Подробная информация об этом пакете находится в Раздел 8.69.2, «Содержимое + пакета Patch.» +

+
+
+ + + diff --git a/lfs-12.1-sysv/chapter06/sed.html b/lfs-12.1-sysv/chapter06/sed.html new file mode 100644 index 0000000..a027ffd --- /dev/null +++ b/lfs-12.1-sysv/chapter06/sed.html @@ -0,0 +1,122 @@ + + + + + + 6.14. Sed-4.9 + + + + + + + + +

+ 6.14. Sed-4.9 +

+
+
+

+ Пакет Sed содержит потоковый редактор текста +

+
+
+
+ Приблизительное время сборки: + 0.1 SBU +
+
+ Требуемое дисковое + пространство: 21 MB +
+
+
+
+
+

+ 6.14.1. Установка пакета Sed +

+

+ Подготовьте Sed к компиляции: +

+
./configure --prefix=/usr   \
+            --host=$LFS_TGT \
+            --build=$(./build-aux/config.guess)
+

+ Скомпилируйте пакет: +

+
make
+

+ Установите пакет: +

+
make DESTDIR=$LFS install
+
+
+

+ Подробная информация об этом пакете находится в Раздел 8.30.2, «Содержимое + пакета Sed.» +

+
+
+ + + diff --git a/lfs-12.1-sysv/chapter06/tar.html b/lfs-12.1-sysv/chapter06/tar.html new file mode 100644 index 0000000..d5ddb9d --- /dev/null +++ b/lfs-12.1-sysv/chapter06/tar.html @@ -0,0 +1,125 @@ + + + + + + 6.15. Tar-1.35 + + + + + + + + +

+ 6.15. Tar-1.35 +

+
+
+

+ Пакет Tar предоставляет возможность создавать tar архивы, а также + производить с ними различные манипуляции. Tar может распаковать + предварительно созданный архив, добавить или обновить файлы в нём, + вернуть список файлов в архиве. +

+
+
+
+ Приблизительное время сборки: + 0.1 SBU +
+
+ Требуемое дисковое + пространство: 42 MB +
+
+
+
+
+

+ 6.15.1. Установка пакета Tar +

+

+ Подготовьте Tar к компиляции: +

+
./configure --prefix=/usr                     \
+            --host=$LFS_TGT                   \
+            --build=$(build-aux/config.guess)
+

+ Скомпилируйте пакет: +

+
make
+

+ Установите пакет: +

+
make DESTDIR=$LFS install
+
+
+

+ Подробная информация об этом пакете находится в Раздел 8.70.2, «Содержимое + пакета Tar.» +

+
+
+ + + diff --git a/lfs-12.1-sysv/chapter06/xz.html b/lfs-12.1-sysv/chapter06/xz.html new file mode 100644 index 0000000..ca9c089 --- /dev/null +++ b/lfs-12.1-sysv/chapter06/xz.html @@ -0,0 +1,138 @@ + + + + + + 6.16. Xz-5.4.6 + + + + + + + + +

+ 6.16. Xz-5.4.6 +

+
+
+

+ Пакет Xz содержит программы для сжатия и распаковки файлов. Он + предоставляет возможности для lzma и более новых форматов сжатия + xz. Сжатие текстовых файлов с помощью xz дает лучший процент сжатия, + чем с традиционные gzip или bzip2. +

+
+
+
+ Приблизительное время сборки: + 0.1 SBU +
+
+ Требуемое дисковое + пространство: 22 MB +
+
+
+
+
+

+ 6.16.1. Установка пакета Xz +

+

+ Подготовьте Xz к компиляции: +

+
./configure --prefix=/usr                     \
+            --host=$LFS_TGT                   \
+            --build=$(build-aux/config.guess) \
+            --disable-static                  \
+            --docdir=/usr/share/doc/xz-5.4.6
+

+ Скомпилируйте пакет: +

+
make
+

+ Установите пакет: +

+
make DESTDIR=$LFS install
+

+ Удалите архивный файл libtool, поскольку он потенциально опасен при + кросс-компиляции: +

+
rm -v $LFS/usr/lib/liblzma.la
+
+
+

+ Подробная информация об этом пакете находится в Раздел 8.8.2, «Содержимое пакета + Xz.» +

+
+
+ + + diff --git a/lfs-12.1-sysv/chapter07/Python.html b/lfs-12.1-sysv/chapter07/Python.html new file mode 100644 index 0000000..d6e4439 --- /dev/null +++ b/lfs-12.1-sysv/chapter07/Python.html @@ -0,0 +1,186 @@ + + + + + + 7.10. Python-3.12.2 + + + + + + + + +

+ 7.10. Python-3.12.2 +

+
+
+

+ Пакет Python 3 содержит среду разработчика Python. Его можно + использовать для объектно-ориентированного программирования, + написания скриптов, прототипирования больших программ и разработка + целых приложений. Python — это интерпретируемый язык + программирования. +

+
+
+
+ Приблизительное время сборки: + 0.5 SBU +
+
+ Требуемое дисковое + пространство: 598 MB +
+
+
+
+
+

+ 7.10.1. Установка пакета Python +

+
+ [Примечание] +

+ Примечание +

+

+ Существует два пакета, имена которых начинаются с префикса + «python». + Сейчас необходимо распаковать файл Python-3.12.2.tar.xz (обратите внимание на + заглавную первую букву). +

+
+

+ Подготовка Python к компиляции: +

+
./configure --prefix=/usr   \
+            --enable-shared \
+            --without-ensurepip
+
+

+ Значение параметров настройки: +

+
+
+ --enable-shared +
+
+

+ Этот параметр отключает установку статичных библиотек. +

+
+
+ --without-ensurepip +
+
+

+ Этот параметр отключает установщик пакетов Python, который на + данном этапе не нужен. +

+
+
+
+

+ Скомпилируйте пакет: +

+
make
+
+ [Примечание] +

+ Примечание +

+

+ Некоторые модули Python 3 не могут быть собраны сейчас, потому + что зависимости еще не установлены. Для модуля ssl выводится сообщение Python требует OpenSSL 1.1.1 или новее. + Сообщение следует проигнорировать. Просто убедитесь, что команда + make верхнего + уровня не завершилась ошибкой. Дополнительные модули сейчас не + нужны, и они будут собраны в + Глава 8. +

+
+

+ Установите пакет: +

+
make install
+
+
+

+ Подробная информация об этом пакете находится в Раздел 8.51.2, + «Содержимое пакета Python 3.» +

+
+
+ + + diff --git a/lfs-12.1-sysv/chapter07/bison.html b/lfs-12.1-sysv/chapter07/bison.html new file mode 100644 index 0000000..aff296a --- /dev/null +++ b/lfs-12.1-sysv/chapter07/bison.html @@ -0,0 +1,142 @@ + + + + + + 7.8. Bison-3.8.2 + + + + + + + + +

+ 7.8. Bison-3.8.2 +

+
+
+

+ Пакет Bison содержит генератор синтаксического анализа. +

+
+
+
+ Приблизительное время сборки: + 0.2 SBU +
+
+ Требуемое дисковое + пространство: 57 MB +
+
+
+
+
+

+ 7.8.1. Установка пакета Bison +

+

+ Подготовьте Bison к компиляции: +

+
./configure --prefix=/usr \
+            --docdir=/usr/share/doc/bison-3.8.2
+
+

+ Значение нового параметра конфигурации: +

+
+
+ --docdir=/usr/share/doc/bison-3.8.2 +
+
+

+ Этот параметр указывает системе сборки установить + документацию к bison в каталог с версией пакета. +

+
+
+
+

+ Скомпилируйте пакет: +

+
make
+

+ Установите пакет: +

+
make install
+
+
+

+ Подробная информация об этом пакете находится в Раздел 8.33.2, «Содержимое + пакета Bison.» +

+
+
+ + + diff --git a/lfs-12.1-sysv/chapter07/changingowner.html b/lfs-12.1-sysv/chapter07/changingowner.html new file mode 100644 index 0000000..e21a812 --- /dev/null +++ b/lfs-12.1-sysv/chapter07/changingowner.html @@ -0,0 +1,119 @@ + + + + + + 7.2. Смена владельца + + + + + + + + +

+ 7.2. + Смена владельца +

+
+
+ [Примечание] +

+ Примечание +

+

+ Команды, приведенные в оставшейся части книги, должны выполняться + от имени пользователя root, а не + lfs. Дважды проверьте, что + переменная $LFS установлена в переменных + окружения пользователя root. +

+
+

+ В настоящее время вся иерархия каталогов в $LFS принадлежит пользователю lfs, существующему только на хост-системе. Если + права на файлы и каталоги внутри $LFS + оставить как есть, то они будут принадлежать ID пользователя без + существующей учетной записи. Это опасно, так как созданная позже + учетная запись, может получить такой же ID пользователя и стать + владельцем всех файлов в $LFS, тем + самым делая эти файлы уязвимыми для возможных злонамеренных + манипуляций. +

+

+ Для решения проблемы измените владельца каталогов $LFS/* на пользователя root, выполнив следующую команду: +

+
chown -R root:root $LFS/{usr,lib,var,etc,bin,sbin,tools}
+case $(uname -m) in
+  x86_64) chown -R root:root $LFS/lib64 ;;
+esac
+
+ + + diff --git a/lfs-12.1-sysv/chapter07/chapter07.html b/lfs-12.1-sysv/chapter07/chapter07.html new file mode 100644 index 0000000..ebcf204 --- /dev/null +++ b/lfs-12.1-sysv/chapter07/chapter07.html @@ -0,0 +1,134 @@ + + + + + + Глава 7. Вход в окружение Chroot и создание дополнительных временных + инструментов + + + + + + + + +

+ 7. Вход в окружение Chroot и + создание дополнительных временных инструментов +

+
+ +
+ + + diff --git a/lfs-12.1-sysv/chapter07/chroot.html b/lfs-12.1-sysv/chapter07/chroot.html new file mode 100644 index 0000000..1e05bb7 --- /dev/null +++ b/lfs-12.1-sysv/chapter07/chroot.html @@ -0,0 +1,170 @@ + + + + + + 7.4. Вход в окружение Chroot + + + + + + + + +

+ 7.4. Вход в + окружение Chroot +

+
+

+ Теперь, когда все пакеты, необходимые для сборки остальных + инструментов установлены в системе, пришло время войти в окружение + chroot и завершить установку временных инструментов. Эта среда также + будет использоваться для установки конечной системы. От имени + пользователя root выполните следующую + команду для входа в chroot, в которой на данный момент нет ничего, + кроме временных инструментов: +

+
chroot "$LFS" /usr/bin/env -i   \
+    HOME=/root                  \
+    TERM="$TERM"                \
+    PS1='(lfs chroot) \u:\w\$ ' \
+    PATH=/usr/bin:/usr/sbin     \
+    MAKEFLAGS="-j$(nproc)"      \
+    TESTSUITEFLAGS="-j$(nproc)" \
+    /bin/bash --login
+

+ Если вы не хотите использовать все доступные логические ядра, + замените параметр $(nproc) + количеством логических ядер, которые вы хотите использовать для + сборки пакетов в этой и последующих главах. На наборы тестов + некоторых пакетов (в частности Autoconf, Libtool и Tar) в Глава 8 + не влияет установка переменной MAKEFLAGS, + вместо этого они используют переменную среды TESTSUITEFLAGS. Мы также установили её здесь для + запуска тестов с поддержкой нескольких ядер. +

+

+ Параметр -i команды + env, очистит все + переменные в среде chroot. После этого переменные HOME, TERM, PS1 и PATH будут + установлены заново. Конструкция TERM=$TERM установит переменную TERM + внутри chroot в то же значение, что и вне chroot. Эта переменная + необходима для корректной работы таких программ как vim и less. Если понадобятся другие + переменные окружения, такие как CFLAGS или + CXXFLAGS, то это подходящее место для их + установки. +

+

+ С этого момента больше нет необходимости использовать переменную + LFS, поскольку вся работа будет ограничена + файловой системой LFS; команда chroot запускает оболочку Bash с + корневым каталогом (/), установленным в + $LFS. +

+

+ Обратите внимание, что каталог /tools/bin не указан в переменной окружения + PATH. Это означает, что кросс-тулчейн + больше не будет использоваться. +

+

+ Также обратите внимание, что в командной строке bash будет указано I have no name!. Это нормально, поскольку + файл /etc/passwd еще не создан. +

+
+ [Примечание] +

+ Примечание +

+

+ Важно, чтобы все команды в оставшейся части этой главы и следующих + главах выполнялись из среды chroot. Если вы покидаете эту среду по + какой-либо причине (например, при перезагрузке), убедитесь, что + файловые системы виртуального ядра смонтированы, как описано в + Раздел 7.3.1, + «Монтирование и заполнение /dev» и Раздел 7.3.2, + «Монтирование виртуальных файловых систем ядра», а затем + войдите в среду chroot для продолжения установки. +

+
+
+ + + diff --git a/lfs-12.1-sysv/chapter07/cleanup.html b/lfs-12.1-sysv/chapter07/cleanup.html new file mode 100644 index 0000000..7fc935f --- /dev/null +++ b/lfs-12.1-sysv/chapter07/cleanup.html @@ -0,0 +1,285 @@ + + + + + + 7.13. Очистка и сохранение временной системы + + + + + + + + +

+ 7.13. Очистка и + сохранение временной системы +

+
+
+

+ 7.13.1. Очистка +

+

+ Во-первых, удалите установленную документацию, чтобы предотвратить + ее попадание в конечную систему и сэкономить около 35 МБ места: +

+
rm -rf /usr/share/{info,man,doc}/*
+

+ Во-вторых, в современных системах Linux файлы .la библиотеки + libtool полезны только для libltdl. Никакие библиотеки в LFS не + загружаются с помощью libltdl. Известно, что некоторые файлы .la + могут привести к сбою во время сборки пакетов BLFS. Удалите эти + файлы сейчас: +

+
find /usr/{lib,libexec} -name \*.la -delete
+

+ Сейчас размер системы составляет около 3 ГБ, однако каталог /tools + больше не понадобится. Удалите его, чтобы освободить около 1 ГБ + дискового пространства: +

+
rm -rf /tools
+
+
+

+ 7.13.2. Резервное копирование +

+

+ На данный момент основные программы и библиотеки собраны, и ваша + система LFS находится в хорошем состоянии. Можно создать резервную + копию вашей системы для последующего повторного использования. В + случае фатальных сбоев в следующих главах часто оказывается, что + удалить все и начать заново (более осторожно) — лучший вариант + восстановления. К сожалению, все временные файлы также будут + удалены. Чтобы не тратить лишнее время на повторную сборку того, + что было успешно собрано, полезно создать резервную копию текущей + системы LFS. +

+
+ [Примечание] +

+ Примечание +

+

+ Все остальные шаги в этом разделе являются необязательными. Тем + не менее, как только вы начнете устанавливать пакеты в + Глава 8, временные файлы будут перезаписаны. Поэтому + рекомендуется создание резервной копии текущей системы, как + описано ниже. +

+
+

+ Следующие шаги выполняются вне среды chroot. Это означает, что + прежде чем продолжить вы должны покинуть среду chroot. Причиной + этого является то, что необходимо получить доступ к расположению + файловой системы за пределами среды chroot для хранения/чтения + архива резервных копий, который не должен размещаться в иерархии + $LFS. +

+

+ Если вы решили сделать резервную копию, покиньте среду chroot: +

+
exit
+
+ [Важно] +

+ Важно +

+

+ Все следующие инструкции выполняются пользователем root в вашей хост-системе. Будьте особенно + внимательны к командам, которые вы собираетесь запускать, + поскольку ошибки, допущенные здесь, могут изменить вашу + хост-систему. Имейте в виду, что переменная окружения + LFS по умолчанию установлена для + пользователя lfs, но может не + быть установлена для root. +

+

+ Всякий раз, когда команды должны выполняться от root, убедитесь, что вы установили переменную + LFS. +

+

+ Это обсуждалось в Раздел 2.6, «Установка + переменной $LFS». +

+
+

+ Перед созданием резервной копии размонтируйте виртуальные файловые + системы: +

+
mountpoint -q $LFS/dev/shm && umount $LFS/dev/shm
+umount $LFS/dev/pts
+umount $LFS/{sys,proc,run,dev}
+

+ Убедитесь, что у вас есть как минимум 1 ГБ свободного места на + диске (исходные tar-архивы будут включены в архив резервных копий) + в файловой системе, содержащей каталог, в котором вы создаете архив + резервных копий. +

+

+ Обратите внимание, что в приведенных ниже инструкциях указан + домашний каталог пользователя root + хост-системы, который обычно находится в корневой файловой системе. + Замените $HOME каталогом на ваш выбор, + если вы не хотите, чтобы резервная копия хранилась в домашнем + каталоге пользователя root. +

+

+ Создайте архив резервной копии, выполнив следующую команду: +

+
+ [Примечание] +

+ Примечание +

+

+ Поскольку архив резервной копии сжимается, процесс занимает + довольно много времени (более 10 минут) даже на достаточно + быстрой системе. +

+
+
cd $LFS
+tar -cJpf $HOME/lfs-temp-tools-12.1.tar.xz .
+
+ [Примечание] +

+ Примечание +

+

+ Если вы переходите к главе 8, не забудьте повторно войти в среду + chroot, как описано в разделе «Важно» ниже. +

+
+
+
+

+ 7.13.3. Восстановление +

+

+ В случае, если были допущены какие-либо ошибки и вам нужно начать + все сначала, вы можете использовать эту резервную копию для + восстановления системы и сэкономить время на восстановление. + Поскольку исходники находятся в папке $LFS, они также включены в архив резервной копии, + поэтому их не нужно загружать повторно. Убедившись, что переменная + $LFS настроена правильно, вы можете + восстановить резервную копию, выполнив следующие команды: +

+
+ [Предупреждение] +

+ Предупреждение +

+

+ Следующие команды чрезвычайно опасны. Если вы запустите команду + rm -rf ./* от имени + пользователя root и не перейдете + в каталог $LFS или переменная окружения LFS не будет установлена для пользователя + root, это уничтожит всю вашу + хост-систему. ВЫ ПРЕДУПРЕЖДЕНЫ. +

+
+
cd $LFS
+rm -rf ./*
+tar -xpf $HOME/lfs-temp-tools-12.1.tar.xz
+

+ Еще раз проверьте, правильно ли настроено окружение, и продолжайте + сборку остальной части системы. +

+
+ [Важно] +

+ Важно +

+

+ Если вы покинули среду chroot, чтобы создать резервную копию или + перезапустить сборку с помощью восстановления, не забудьте + проверить, что виртуальные файловые системы все еще смонтированы + (findmnt | grep + $LFS). Если они не смонтированы, перемонтируйте + их сейчас, как описано в Раздел 7.3, + «Подготовка виртуальных файловых систем ядра», и повторно + войдите в среду chroot (см. Раздел 7.4, «Вход в + окружение Chroot»), прежде чем продолжить. +

+
+
+
+ + + diff --git a/lfs-12.1-sysv/chapter07/createfiles.html b/lfs-12.1-sysv/chapter07/createfiles.html new file mode 100644 index 0000000..b775d46 --- /dev/null +++ b/lfs-12.1-sysv/chapter07/createfiles.html @@ -0,0 +1,261 @@ + + + + + + 7.6. Создание основных файлов и символических ссылок + + + + + + + + +

+ 7.6. + Создание основных файлов и символических ссылок +

+
+

+ Исторически сложилось, что Linux хранит список примонтированных + файловых систем в файле /etc/mtab. + Современные ядра хранят этот список внутри себя и предоставляют его + пользователю через файловую систему /proc. Чтобы удовлетворять требованиям утилит, + которые ожидают наличия /etc/mtab, + создайте следующую символическую ссылку: +

+
ln -sv /proc/self/mounts /etc/mtab
+

+ Создайте файл /etc/hosts, на который + будут ссылаться некоторые наборы тестов, а также один из файлов + конфигурации Perl: +

+
cat > /etc/hosts << EOF
+127.0.0.1  localhost $(hostname)
+::1        localhost
+EOF
+

+ Чтобы пользователь root мог войти в + систему и распознавался системой, в файлах /etc/passwd и /etc/group должны быть соответствующие записи. +

+

+ Создайте файл /etc/passwd выполнив + следующую команду: +

+
cat > /etc/passwd << "EOF"
+root:x:0:0:root:/root:/bin/bash
+bin:x:1:1:bin:/dev/null:/usr/bin/false
+daemon:x:6:6:Daemon User:/dev/null:/usr/bin/false
+messagebus:x:18:18:D-Bus Message Daemon User:/run/dbus:/usr/bin/false
+uuidd:x:80:80:UUID Generation Daemon User:/dev/null:/usr/bin/false
+nobody:x:65534:65534:Unprivileged User:/dev/null:/usr/bin/false
+EOF
+

+ Пароль пользователя root будет задан + позднее. +

+

+ Создайте файл /etc/group, выполнив + следующую команду: +

+
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:
+cdrom:x:15:
+adm:x:16:
+messagebus:x:18:
+input:x:24:
+mail:x:34:
+kvm:x:61:
+uuidd:x:80:
+wheel:x:97:
+users:x:999:
+nogroup:x:65534:
+EOF
+

+ Созданные группы не являются частью какого-либо стандарта — это + группы, определяемые частично требованиями конфигурации Udev в главе + 9, а частично общими соглашениями, используемыми в ряде существующих + дистрибутивов Linux. Кроме того, некоторые наборы тестов зависят от + конкретных пользователей или групп. Спецификация LSB (доступна по + адресу https://refspecs.linuxfoundation.org/lsb.shtml) + рекомендует, чтобы, помимо группы root с идентификатор (GID) 0 присутствовала + группа bin с GID 1. GID 5 широко + используется для группы tty, число 5 + также используется в /etc/fstab для файловой системы devpts. Все остальные имена групп и GID могут + свободно выбираться системным администратором, так как хорошо + написанные программы не зависят от номеров GID, а чаще используют + название группы. +

+

+ Идентификатор 65534 используется ядром для NFS и отдельных + пользовательских пространств имен для несопоставленных пользователей + и групп (они существуют на сервере NFS или родительском пространстве + имен пользователя, но «не + существует» на локальном компьютере или в отдельном + пространстве имен). Мы присваиваем nobody и nogroup + для того, чтобы избежать несопоставленных идентификаторов. Другие + дистрибутивы могут обрабатывать этот идентификатор по-разному, + поэтому любая переносимая программа не должна зависеть от этого + присвоения. +

+

+ Для некоторых тестов в Глава 8 + требуется обычный пользователь. Добавим такого пользователя здесь и + удалим эту учетную запись в конце главы. +

+
echo "tester:x:101:101::/home/tester:/bin/bash" >> /etc/passwd
+echo "tester:x:101:" >> /etc/group
+install -o tester -d /home/tester
+

+ Чтобы удалить приглашение «I + have no name!», запустите новую оболочку. Поскольку + файлы /etc/passwd и /etc/group были созданы, разрешение имен + пользователей и групп теперь будет работать: +

+
exec /usr/bin/bash --login
+

+ Программы login, + agetty, init (и другие) используют ряд + журналов для записи такой информации, как кто и когда входил в + систему. Однако эти программы не будут записывать данные в журналы, + если они еще не существуют. Инициализируйте журналы и предоставьте им + соответствующие разрешения: +

+
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
+

+ В файл /var/log/wtmp записываются все + входы и выходы из системы. В файл /var/log/lastlog записывается время последнего + входа каждого пользователя в систему. В файл /var/log/faillog записываются неудачные попытки + входа в систему. В файл /var/log/btmp + также записываются неудачные попытки входа в систему. +

+
+ [Примечание] +

+ Примечание +

+

+ В файл /run/utmp записываются + пользователи, которые в данный момент вошли в систему. Он создаётся + динамически, в процессе выполнения сценариев загрузки. +

+
+
+ [Примечание] +

+ Примечание +

+

+ Файлы utmp, wtmp, + btmp и lastlog используют для временных меток + 32-разрядные целые числа, значения счетчика достигнет максимума (2 + 147 483 647) 19 января 2038 года ("проблема 2038 года"). Многие + пакеты перестали их использовать, другие же, собираются прекратить + их использование. Вероятно, лучше считать их устаревшими. +

+
+
+ + + diff --git a/lfs-12.1-sysv/chapter07/creatingdirs.html b/lfs-12.1-sysv/chapter07/creatingdirs.html new file mode 100644 index 0000000..6199a24 --- /dev/null +++ b/lfs-12.1-sysv/chapter07/creatingdirs.html @@ -0,0 +1,172 @@ + + + + + + 7.5. Создание каталогов + + + + + + + + +

+ 7.5. + Создание каталогов +

+
+

+ Пришло время создать полную структуру каталогов в файловой системе + LFS. +

+
+ [Примечание] +

+ Примечание +

+

+ Некоторые из каталогов, упомянутых в этом разделе, возможно, уже + были созданы ранее с помощью явных инструкций или при установке + некоторых пакетов. Они повторяются ниже для полноты картины. +

+
+

+ Создайте несколько каталогов, которые не входили в ограниченный + набор, используемый в предыдущих главах, выполнив следующую команду: +

+
mkdir -pv /{boot,home,mnt,opt,srv}
+

+ Создайте необходимые подкаталоги, выполнив следующие команды: +

+
mkdir -pv /etc/{opt,sysconfig}
+mkdir -pv /lib/firmware
+mkdir -pv /media/{floppy,cdrom}
+mkdir -pv /usr/{,local/}{include,src}
+mkdir -pv /usr/local/{bin,lib,sbin}
+mkdir -pv /usr/{,local/}share/{color,dict,doc,info,locale,man}
+mkdir -pv /usr/{,local/}share/{misc,terminfo,zoneinfo}
+mkdir -pv /usr/{,local/}share/man/man{1..8}
+mkdir -pv /var/{cache,local,log,mail,opt,spool}
+mkdir -pv /var/lib/{color,misc,locate}
+
+ln -sfv /run /var/run
+ln -sfv /run/lock /var/lock
+
+install -dv -m 0750 /root
+install -dv -m 1777 /tmp /var/tmp
+

+ По умолчанию каталоги создаются с правами 755, но это нежелательно + делать для всех каталогов. В приведенных выше командах вносятся два + изменения — одно в домашний каталог пользователя root, а другое в каталоги для временных файлов. +

+

+ Первое изменение гарантирует, что никто не сможет войти в каталог + /root — точно так же, как обычный + пользователь сделал бы это со своим собственным домашним каталогом. + Второе изменение гарантирует, что любой пользователь может писать в + каталоги /tmp и /var/tmp, но не может удалять из них файлы другого + пользователя. Последнее запрещено так называемым «sticky bit (липким + битом)», старшим битом (1) в битовой маске 1777 +

+
+

+ 7.5.1. Примечание о соответствии требованиям FHS +

+

+ Это дерево каталогов основано на стандарте иерархии файловой + системы (FHS) (доступен по адресу https://refspecs.linuxfoundation.org/fhs.shtml). + FHS также указывает, что наличие некоторых каталогов необязательно, + например, /usr/local/games и + /usr/share/games. В LFS мы создаем + только те каталоги, которые действительно необходимы. Однако, не + стесняйтесь создавать дополнительные каталоги, если хотите. +

+
+ [Предупреждение] +

+ Предупреждение +

+

+ FHS не требует наличия каталога /usr/lib64, и редакторы LFS решили его не + использовать. Чтобы инструкции в LFS и BLFS работали корректно, + крайне важно, чтобы этот каталог не существовал. Время от времени + вам следует проверять, что он не существует, потому что его легко + создать непреднамеренно, и это, вероятно, приведет к поломке + вашей системы. +

+
+
+
+ + + diff --git a/lfs-12.1-sysv/chapter07/gettext.html b/lfs-12.1-sysv/chapter07/gettext.html new file mode 100644 index 0000000..2f17f22 --- /dev/null +++ b/lfs-12.1-sysv/chapter07/gettext.html @@ -0,0 +1,153 @@ + + + + + + 7.7. Gettext-0.22.4 + + + + + + + + +

+ 7.7. + Gettext-0.22.4 +

+
+
+

+ Пакет Gettext содержит утилиты для интернационализации и + локализации. Они позволяют компилировать программы с поддержкой NLS + (Native Language Support), позволяя им выводить сообщения на родном + языке пользователя. +

+
+
+
+ Приблизительное время сборки: + 1.1 SBU +
+
+ Требуемое дисковое + пространство: 306 MB +
+
+
+
+
+

+ 7.7.1. Установка пакета Gettext +

+

+ Для временного набора инструментов нам нужно установить только три + программы из пакета Gettext. +

+

+ Подготовьте Gettext к компиляции: +

+
./configure --disable-shared
+
+

+ Значение параметров настройки: +

+
+
+ --disable-shared +
+
+

+ В настоящее время нам не нужно устанавливать какие-либо общие + библиотеки Gettext, поэтому нет необходимости их собирать. +

+
+
+
+

+ Скомпилируйте пакет: +

+
make
+

+ Установите программы msgfmt, msgmerge, и xgettext programs: +

+
cp -v gettext-tools/src/{msgfmt,msgmerge,xgettext} /usr/bin
+
+
+

+ Подробная информация об этом пакете находится в Раздел 8.32.2, «Содержимое + пакета Gettext.» +

+
+
+ + + diff --git a/lfs-12.1-sysv/chapter07/introduction.html b/lfs-12.1-sysv/chapter07/introduction.html new file mode 100644 index 0000000..16eb636 --- /dev/null +++ b/lfs-12.1-sysv/chapter07/introduction.html @@ -0,0 +1,115 @@ + + + + + + 7.1. Введение + + + + + + + + +

+ 7.1. Введение +

+
+

+ В этой главе рассказывается, как собрать последние недостающие части + временной системы: инструменты, необходимые для сборки различных + пакетов. Теперь, когда все циклические зависимости устранены, для + сборки можно использовать среду «chroot», полностью изолированную от + операционной системы хоста (за исключением работающего ядра). +

+

+ Для правильной работы изолированной среды необходимо установить связь + с работающим ядром. Это делается с помощью так называемых + виртуальных файловых систем + ядра, которые будут смонтированы перед входом в среду + chroot. Вы можете проверить, смонтированы ли они, выполнив команду + findmnt. +

+

+ До Раздел 7.4, «Вход в окружение + Chroot» команды должны выполняться от имени root с установленной переменной LFS. После входа в chroot все команды выполняются от + имени root, к счастью, без доступа к + операционной системе компьютера, на котором вы собираете LFS. В любом + случае будьте осторожны, так как неверными командами легко разрушить + всю систему LFS. +

+
+ + + diff --git a/lfs-12.1-sysv/chapter07/kernfs.html b/lfs-12.1-sysv/chapter07/kernfs.html new file mode 100644 index 0000000..f30a70e --- /dev/null +++ b/lfs-12.1-sysv/chapter07/kernfs.html @@ -0,0 +1,207 @@ + + + + + + 7.3. Подготовка виртуальных файловых систем ядра + + + + + + + + +

+ 7.3. Подготовка + виртуальных файловых систем ядра +

+
+

+ Приложения, работающие в пользовательском пространстве, используют + различные файловые системы, созданные ядром, для взаимодействия с + самим ядром. Эти файловые системы являются виртуальными: для них не + используется дисковое пространство. Содержимое файловых систем + находится в памяти. Эти файловые системы должны быть смонтированы в + дереве каталогов $LFS, чтобы приложения могли найти их в среде + chroot. +

+

+ Начните с создания каталогов, в которые будут смонтированы эти + виртуальные файловые системы: +

+
mkdir -pv $LFS/{dev,proc,sys,run}
+
+

+ 7.3.1. + Монтирование и заполнение /dev +

+

+ Во время обычной загрузки ядро автоматически монтирует файловую + систему devtmpfs в каталог + /dev; ядро создает узлы устройств в + этой виртуальной файловой системе в процессе загрузки или при + первом обнаружении устройства, или доступе к нему. Демон udev может + изменять владельца или разрешения узлов устройств, созданных ядром, + или создавать новые узлы устройств или символические ссылки, чтобы + облегчить работу разработчиков дистрибутива или системных + администраторов. (Подробности смотрите в Раздел 9.3.2.2, «Создание + узла устройства».) Если ядро хоста поддерживает devtmpfs, мы можем просто смонтировать + devtmpfs в $LFS/dev и положиться на ядро для его заполнения. +

+

+ Но в некоторых ядрах хоста отсутствует поддержка devtmpfs, эти хост-дистрибутивы используют + разные методы для создания содержимого /dev. Таким образом, единственный независимый от + хоста способ заполнить каталог $LFS/dev - это привязка к каталогу /dev хост-системы. Связное монтирование - это + особый тип монтирования, который делает дерево каталога или файл + видимым в каком-либо другом месте. Для этого используйте следующую + команду: +

+
mount -v --bind /dev $LFS/dev
+
+
+

+ 7.3.2. + Монтирование виртуальных файловых систем ядра +

+

+ Теперь смонтируйте оставшиеся виртуальные файловые системы: +

+
mount -vt devpts devpts -o gid=5,mode=0620 $LFS/dev/pts
+mount -vt proc proc $LFS/proc
+mount -vt sysfs sysfs $LFS/sys
+mount -vt tmpfs tmpfs $LFS/run
+
+

+ Значение параметров монтирования для devpts: +

+
+
+ gid=5 +
+
+

+ Этот параметр гарантирует, что все узлы устройств, созданные + devpts, принадлежат группе с идентификатором 5. Это + идентификатор, который мы будем использовать позже для группы + tty. Мы используем + идентификатор группы вместо имени, поскольку хост-система + может использовать другой идентификатор для своей группы + tty. +

+
+
+ mode=0620 +
+
+

+ Этот параметр гарантирует, что все узлы устройств, созданные + devpts, будут иметь права 0620 (доступен для чтения и записи + пользователем, доступен для записи группе). Вместе с + вышеуказанной опцией это гарантирует, что devpts создаст узлы + устройств, соответствующие требованиям grantpt(), а это + означает, что вспомогательный файл Glibc pt_chown (который не + установлен по умолчанию) не требуется. +

+
+
+
+

+ В некоторых хост-системах /dev/shm + является символической ссылкой на каталог /run/shm. /run tmpfs был смонтирован выше, + поэтому сейчас необходимо только создать каталог с правильными + разрешениями. +

+

+ В других хост-системах /dev/shm + является точкой монтирования для tmpfs. В этом случае монтирование + /dev приведет только к созданию /dev/shm как каталога в среде + chroot. В этой ситуации мы должны явно смонтировать tmpfs: +

+
if [ -h $LFS/dev/shm ]; then
+  install -v -d -m 1777 $LFS$(realpath /dev/shm)
+else
+  mount -vt tmpfs -o nosuid,nodev tmpfs $LFS/dev/shm
+fi
+
+
+ + + diff --git a/lfs-12.1-sysv/chapter07/perl.html b/lfs-12.1-sysv/chapter07/perl.html new file mode 100644 index 0000000..3a32ac5 --- /dev/null +++ b/lfs-12.1-sysv/chapter07/perl.html @@ -0,0 +1,186 @@ + + + + + + 7.9. Perl-5.38.2 + + + + + + + + +

+ 7.9. Perl-5.38.2 +

+
+
+

+ Пакет Perl содержит практический язык для извлечения данных и + составления отчётов (Practical Extraction and Report Language). +

+
+
+
+ Приблизительное время сборки: + 0.6 SBU +
+
+ Требуемое дисковое + пространство: 280 MB +
+
+
+
+
+

+ 7.9.1. Установка пакета Perl +

+

+ Подготовьте Perl к компиляции: +

+
sh Configure -des                                        \
+             -Dprefix=/usr                               \
+             -Dvendorprefix=/usr                         \
+             -Duseshrplib                                \
+             -Dprivlib=/usr/lib/perl5/5.38/core_perl     \
+             -Darchlib=/usr/lib/perl5/5.38/core_perl     \
+             -Dsitelib=/usr/lib/perl5/5.38/site_perl     \
+             -Dsitearch=/usr/lib/perl5/5.38/site_perl    \
+             -Dvendorlib=/usr/lib/perl5/5.38/vendor_perl \
+             -Dvendorarch=/usr/lib/perl5/5.38/vendor_perl
+
+

+ Значение новых опций Configure: +

+
+
+ -des +
+
+

+ Это комбинация из трех параметров: -d использует значения по + умолчанию для всех элементов; -e обеспечивает выполнение всех + задач; -s отключает несущественные выходные данные. +

+
+
+ -Dvendorprefix=/usr +
+
+

+ Параметр гарантирует, что perl знает, как указать + пакетам, где они должны устанавливать свои модули Perl. +

+
+
+ -Duseshrplib +
+
+

+ Собрать библиотеку libperl, необходимую некоторым модулям + Perl, как общую библиотеку вместо статической. +

+
+
+ -Dprivlib,-Darchlib,-Dsitelib,... +
+
+

+ Эти настройки определяют, где Perl ищет установленные модули. + Редакторы LFS решили поместить их в структуру каталогов, + основанную на MAJOR.MINOR версии Perl (5.38), что позволяет + обновлять Perl до более новых уровней исправлений (уровень + исправления - это последняя разделенная точками часть в + строке полной версии, например 5.38.2) без необходимости + переустанавливать все модули. +

+
+
+
+

+ Скомпилируйте пакет: +

+
make
+

+ Установите пакет: +

+
make install
+
+
+

+ Подробная информация об этом пакете находится в Раздел 8.42.2, «Содержимое + пакета Perl.» +

+
+
+ + + diff --git a/lfs-12.1-sysv/chapter07/texinfo.html b/lfs-12.1-sysv/chapter07/texinfo.html new file mode 100644 index 0000000..40921ce --- /dev/null +++ b/lfs-12.1-sysv/chapter07/texinfo.html @@ -0,0 +1,125 @@ + + + + + + 7.11. Texinfo-7.1 + + + + + + + + +

+ 7.11. Texinfo-7.1 +

+
+
+

+ Пакет Texinfo содержит программы для чтения, записи и + преобразования информационных страниц. +

+
+
+
+ Приблизительное время сборки: + 0.2 SBU +
+
+ Требуемое дисковое + пространство: 130 MB +
+
+
+
+
+

+ 7.11.1. Установка пакета Texinfo +

+

+ Подготовьте Texinfo к компиляции: +

+
./configure --prefix=/usr
+

+ Скомпилируйте пакет: +

+
make
+

+ Установите пакет: +

+
make install
+
+
+

+ Подробная информация об этом пакете находится в Раздел 8.71.2, «Содержимое + пакета Texinfo.» +

+
+
+ + + diff --git a/lfs-12.1-sysv/chapter07/util-linux.html b/lfs-12.1-sysv/chapter07/util-linux.html new file mode 100644 index 0000000..9fe0cca --- /dev/null +++ b/lfs-12.1-sysv/chapter07/util-linux.html @@ -0,0 +1,213 @@ + + + + + + 7.12. Util-linux-2.39.3 + + + + + + + + +

+ 7.12. + Util-linux-2.39.3 +

+
+
+

+ Пакет Util-linux содержит различные служебные программы. Среди них + утилиты для работы с файловыми системами, консолями, разделами и + сообщениями. +

+
+
+
+ Приблизительное время сборки: + 0.2 SBU +
+
+ Требуемое дисковое + пространство: 172 MB +
+
+
+
+
+

+ 7.12.1. Установка пакета Util-linux +

+

+ FHS рекомендует использовать каталог /var/lib/hwclock вместо каталога /etc в качестве местоположения для файла + adjtime. Создайте этот каталог: +

+
mkdir -pv /var/lib/hwclock
+

+ Подготовьте Util-linux к компиляции: +

+
./configure --libdir=/usr/lib    \
+            --runstatedir=/run   \
+            --disable-chfn-chsh  \
+            --disable-login      \
+            --disable-nologin    \
+            --disable-su         \
+            --disable-setpriv    \
+            --disable-runuser    \
+            --disable-pylibmount \
+            --disable-static     \
+            --without-python     \
+            ADJTIME_PATH=/var/lib/hwclock/adjtime \
+            --docdir=/usr/share/doc/util-linux-2.39.3
+
+

+ Значение параметров настройки: +

+
+
+ ADJTIME_PATH=/var/lib/hwclock/adjtime +
+
+

+ Этот параметр устанавливает расположение файла для записи + информации об аппаратных часах в соответствии с FHS. Он не + обязателен для временного инструментария, но предотвращает + создание файла в другом месте, где файл не будет перезаписан + или удален при финальной сборке пакета util-linux. +

+
+
+ --libdir=/usr/lib +
+
+

+ Этот параметр гарантирует, что символические ссылки + .so, будут указывать на файл + общей библиотеки в том же каталоге (/usr/lib). +

+
+
+ --disable-* +
+
+

+ Этот параметр предотвращают появление предупреждений о сборке + компонентов, для которых требуются пакеты, отсутствующие или + еще не установленные в LFS. +

+
+
+ --without-python +
+
+

+ Этот параметр отключает использование Python. Это позволяет избежать попыток + создания ненужных привязок. +

+
+
+ --runstatedir=/run +
+
+

+ Этот параметр устанавливает расположение сокета, + используемого uuidd и libuuid. +

+
+
+
+

+ Скомпилируйте пакет: +

+
make
+

+ Установите пакет: +

+
make install
+
+
+

+ Подробная информация об этом пакете находится в Раздел 8.78.2, + «Содержимое пакета Util-linux.» +

+
+
+ + + diff --git a/lfs-12.1-sysv/chapter08/Python.html b/lfs-12.1-sysv/chapter08/Python.html new file mode 100644 index 0000000..da00221 --- /dev/null +++ b/lfs-12.1-sysv/chapter08/Python.html @@ -0,0 +1,384 @@ + + + + + + 8.51. Python-3.12.2 + + + + + + + + +

+ 8.51. + Python-3.12.2 +

+
+
+

+ Пакет Python 3 содержит среду разработчика Python. Его можно + использовать для объектно-ориентированного программирования, + написания скриптов, прототипирования больших программ и разработка + целых приложений. Python — это интерпретируемый язык + программирования. +

+
+
+
+ Приблизительное время сборки: + 1.8 SBU +
+
+ Требуемое дисковое + пространство: 485 MB +
+
+
+
+
+

+ 8.51.1. Установка пакета Python 3 +

+

+ Подготовьте Python к компиляции: +

+
./configure --prefix=/usr        \
+            --enable-shared      \
+            --with-system-expat  \
+            --enable-optimizations
+
+

+ Значение параметров настройки: +

+
+
+ --with-system-expat +
+
+

+ Этот параметр выполняет линковку с системной версией + Expat. +

+
+
+ --enable-optimizations +
+
+

+ Этот параметр позволяет выполнить обширные, но отнимающие + много времени, действия по оптимизации. Интерпретатор + собирается дважды; тесты, выполненные при первой сборке, + используются для улучшения финальной версии. +

+
+
+
+

+ Скомпилируйте пакет: +

+
make
+

+ Запускать тесты на этом этапе не рекомендуется. Известно, что тесты + зависают на неопределенный срок в неполной среде LFS. При желании + тесты можно запустить повторно в конце этой главы или при + переустановке Python 3 в BLFS. Чтобы запустить тесты, выполните + команду make test. +

+

+ Установите пакет: +

+
make install
+

+ В некоторых местах книги, мы используем команду pip3 для установки программ и + модулей Python 3 от имени пользователя root. Это противоречит рекомендации + разработчиков Python: устанавливать пакеты в виртуальную среду или + домашний каталог обычного пользователя (путем запуска pip3 от имени этого + пользователя). Поэтому всякий раз при использовании pip3 от имени пользователя + root появляется многострочное + предупреждение. +

+

+ Основная причина этой рекомендации — избежать конфликта с системным + менеджером пакетов (например, dpkg), но в LFS нет + общесистемного менеджера пакетов, так что это не проблема. Кроме + того, pip3 будет + пытаться проверять наличие новой версии при каждом запуске. + Поскольку разрешение доменных имен в среде chroot LFS еще не + настроено, он не сможет проверить наличие новой версии и выдаст + предупреждение. +

+

+ Как только мы загрузим систему LFS и настроим сетевое подключение, + pip3 выдаст + предупреждение, сообщающее пользователю о необходимости обновить + его с помощью предварительно собранного whl-файла в PyPI (всякий + раз, когда будет доступна новая версия). Но LFS считает + pip3 частью Python3, + поэтому его не следует обновлять отдельно. Кроме того, обновление + из whl-файла не соответствует цели проекта — собрать систему Linux + из исходного кода, поэтому предупреждение о новой версии + pip3 следует + игнорировать. По желанию, вы можете отключить все предупреждение, + создав следующий файл конфигурации: +

+
cat > /etc/pip.conf << EOF
+[global]
+root-user-action = ignore
+disable-pip-version-check = true
+EOF
+
+
+ [Важно] +

+ Важно +

+

+ В LFS и BLFS мы собираем и устанавливаем модули Python с помощью + команды pip3. + Убедитесь, что команда pip3 + install в обеих книгах запускаются от имени + пользователя root (если только + она не для виртуальной среды Python). Запуск pip3 install от имени + пользователя без полномочий root + может показаться нормальным, но это приведет к тому, что + установленный модуль будет недоступен для других пользователей. +

+

+ Команда pip3 + install по умолчанию не приведёт к автоматической + переустановке уже установленного модуля. Чтобы использовать + команду pip3 + install для обновления модуля (например, с + meson-0.61.3 до meson-0.62.0), добавьте параметр --upgrade в командную строку. Если + по какой-то причине необходимо понизить версию модуля или + переустановить ту же версию, используйте параметр --force-reinstall --no-deps. +

+
+

+ По желанию установите предварительно отформатированную + документацию: +

+
install -v -dm755 /usr/share/doc/python-3.12.2/html
+
+tar --no-same-owner \
+    -xvf ../python-3.12.2-docs-html.tar.bz2
+cp -R --no-preserve=mode python-3.12.2-docs-html/* \
+    /usr/share/doc/python-3.12.2/html
+
+

+ Значение команд установки документации: +

+
+
+ --no-same-owner + (tar) и --no-preserve=mode + (cp) +
+
+

+ Параметры обеспечивают, что установленные файлы имеют + корректные права и владельца файлов. Использование + tar без этих параметров + приведет к установке файлов с правами пользователя создавшего + архив и файлы будут иметь ограниченные разрешения. +

+
+
+
+
+
+

+ 8.51.2. + Содержимое пакета Python 3 +

+
+
+
+ Установленные программы: + 2to3, idle3, pip3, pydoc3, python3 и + python3-config +
+
+ Установленные библиотеки: + libpython3.12.so и libpython3.so +
+
+ Созданные каталоги: + /usr/include/python3.12, /usr/lib/python3 + и /usr/share/doc/python-3.12.2 +
+
+
+
+

+ Краткое описание +

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

+ 2to3 +

+
+

+ программа на Python, + которая читает файлы написанные на Python 2.x, применяет к ним серию + изменений и переводит их в валидный код Python 3.x. +

+
+

+ idle3 +

+
+

+ скрипт-обертка, который открывает графический редактор с + поддержкой Python. Для + запуска этого скрипта, перед установкой Python необходимо + установить Tk, чтобы + модуль Tkinter Python был собран. +

+
+

+ pip3 +

+
+

+ Установщик пакетов для Python. Вы можете использовать pip + для установки пакетов из каталога PyPI (Python Package + Index) и других источников. +

+
+

+ pydoc3 +

+
+

+ инструмент документации Python +

+
+

+ python3 +

+
+

+ это интерпретатор для Python, интерпретируемый, + интерактивный, объектно-ориентированный язык + программирования +

+
+
+
+
+ + + diff --git a/lfs-12.1-sysv/chapter08/aboutdebug.html b/lfs-12.1-sysv/chapter08/aboutdebug.html new file mode 100644 index 0000000..092e726 --- /dev/null +++ b/lfs-12.1-sysv/chapter08/aboutdebug.html @@ -0,0 +1,136 @@ + + + + + + 8.82. Об отладочных символах + + + + + + + + +

+ 8.82. Об + отладочных символах +

+
+

+ Большинство программ и библиотек по умолчанию компилируются с + отладочными символами (gcc с параметром -g). Это означает, что при отладке + программы или библиотеки, которые были скомпилированы с + использованием отладочной информации, отладчик может предоставить не + только адреса памяти, но и имена подпрограмм и переменных. +

+

+ Включение отладочных символов значительно увеличивает размер + программы или библиотеки. Ниже приведена информация по объему + пространства, занимаемого отладочными символами: +

+
+
    +
  • +

    + Двоичный файл bash с отладочными символами: + 1200 KB +

    +
  • +
  • +

    + Двоичный файл bash без отладочных символов: + 480 KB (на 60% меньше) +

    +
  • +
  • +

    + Файлы Glibc и GCC (/lib и + /usr/lib) с отладочными + символами: 87 MB +

    +
  • +
  • +

    + Файлы Glibc и GCC без отладочных символов: 16 MB (на 82% + меньше) +

    +
  • +
+
+

+ Размеры могут варьироваться в зависимости от используемого + компилятора и библиотеки Си, но программа, в которой были удалены + отладочные символы, обычно примерно на 50-80% меньше, чем ее аналог с + ними. Поскольку большинство пользователей никогда не будут + использовать отладчик в своем программном обеспечении, удаление + отладочных символов может освободить много места на диске. В + следующем разделе показано, как удалить все отладочные символы из + программ и библиотек. +

+
+ + + diff --git a/lfs-12.1-sysv/chapter08/acl.html b/lfs-12.1-sysv/chapter08/acl.html new file mode 100644 index 0000000..adce47b --- /dev/null +++ b/lfs-12.1-sysv/chapter08/acl.html @@ -0,0 +1,215 @@ + + + + + + 8.24. Acl-2.3.2 + + + + + + + + +

+ 8.24. Acl-2.3.2 +

+
+
+

+ Пакет Acl содержит утилиты для администрирования списков контроля + доступа, которые используются для определения расширенных + дискреционных прав доступа к файлам и каталогам. +

+
+
+
+ Приблизительное время сборки: + менее 0.1 SBU +
+
+ Требуемое дисковое + пространство: 6.3 MB +
+
+
+
+
+

+ 8.24.1. Установка пакета Acl +

+

+ Подготовьте Acl к компиляции: +

+
./configure --prefix=/usr         \
+            --disable-static      \
+            --docdir=/usr/share/doc/acl-2.3.2
+

+ Скомпилируйте пакет: +

+
make
+

+ Тесты Acl необходимо запускать в файловой системе, поддерживающей + списки контроля доступа, после сборки пакета Coreutils с использованием библиотек Acl. По + желанию вернитесь к этому пакету и запустите make check после того, как будет + собран пакет Coreutils. +

+

+ Установите пакет: +

+
make install
+
+
+

+ 8.24.2. Содержимое + пакета Acl +

+
+
+
+ Установленные программы: + chacl, getfacl, и setfacl +
+
+ Установленные библиотеки: + libacl.so +
+
+ Созданные каталоги: + /usr/include/acl и + /usr/share/doc/acl-2.3.2 +
+
+
+
+

+ Краткое описание +

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

+ chacl +

+
+

+ Изменяет список контроля доступа файла или каталога +

+
+

+ getfacl +

+
+

+ Получает списки контроля доступа файла +

+
+

+ setfacl +

+
+

+ Устанавливает списки контроля доступа к файлам +

+
+

+ libacl +

+
+

+ Содержит библиотечные функции для управления списками + контроля доступа. +

+
+
+
+
+ + + diff --git a/lfs-12.1-sysv/chapter08/attr.html b/lfs-12.1-sysv/chapter08/attr.html new file mode 100644 index 0000000..ab3f36b --- /dev/null +++ b/lfs-12.1-sysv/chapter08/attr.html @@ -0,0 +1,214 @@ + + + + + + 8.23. Attr-2.5.2 + + + + + + + + +

+ 8.23. Attr-2.5.2 +

+
+
+

+ Пакет Attr содержит утилиты для управления расширенными атрибутами + объектов файловой системы. +

+
+
+
+ Приблизительное время сборки: + менее 0.1 SBU +
+
+ Требуемое дисковое + пространство: 4.2 MB +
+
+
+
+
+

+ 8.23.1. Установка пакета Attr +

+

+ Подготовьте Attr к компиляции: +

+
./configure --prefix=/usr     \
+            --disable-static  \
+            --sysconfdir=/etc \
+            --docdir=/usr/share/doc/attr-2.5.2
+

+ Скомпилируйте пакет: +

+
make
+

+ Тесты необходимо запускать в файловой системе, которая поддерживает + расширенные атрибуты, например, ext2, ext3 или ext4. Чтобы + протестировать пакет, выполните: +

+
make check
+

+ Установите пакет: +

+
make install
+
+
+

+ 8.23.2. Содержимое + пакета Attr +

+
+
+
+ Установленные программы: + attr, getfattr, и setfattr +
+
+ Установленные библиотеки: + libattr.so +
+
+ Созданные каталоги: + /usr/include/attr и + /usr/share/doc/attr-2.5.2 +
+
+
+
+

+ Краткое описание +

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

+ attr +

+
+

+ Расширяет атрибуты объектов файловой системы +

+
+

+ getfattr +

+
+

+ Получает расширенные атрибуты объектов файловой системы +

+
+

+ setfattr +

+
+

+ Устанавливает расширенные атрибуты объектов файловой + системы +

+
+

+ libattr +

+
+

+ Содержит библиотечные функции для управления расширенными + атрибутами. +

+
+
+
+
+ + + diff --git a/lfs-12.1-sysv/chapter08/autoconf.html b/lfs-12.1-sysv/chapter08/autoconf.html new file mode 100644 index 0000000..3c2ee6b --- /dev/null +++ b/lfs-12.1-sysv/chapter08/autoconf.html @@ -0,0 +1,289 @@ + + + + + + 8.45. Autoconf-2.72 + + + + + + + + +

+ 8.45. + Autoconf-2.72 +

+
+
+

+ Пакет Autoconf содержит программы для создания сценариев оболочки, + которые могут автоматически настраивать исходный код. +

+
+
+
+ Приблизительное время сборки: + менее 0.1 SBU (около 0.5 SBU с + тестами) +
+
+ Требуемое дисковое + пространство: 25 MB +
+
+
+
+
+

+ 8.45.1. Установка пакета Autoconf +

+

+ Подготовьте Autoconf к компиляции: +

+
./configure --prefix=/usr
+

+ Скомпилируйте пакет: +

+
make
+

+ Чтобы протестировать пакет, выполните: +

+
make check
+

+ Установите пакет: +

+
make install
+
+
+

+ 8.45.2. + Содержимое пакета Autoconf +

+
+
+
+ Установленные программы: + autoconf, autoheader, autom4te, + autoreconf, autoscan, autoupdate, и ifnames +
+
+ Созданные каталоги: + /usr/share/autoconf +
+
+
+
+

+ Краткое описание +

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

+ autoconf +

+
+

+ Генерирует сценарии оболочки, которые автоматически + настраивают пакеты исходного кода программного + обеспечения для адаптации ко многим типам Unix-подобных + систем; создаваемые сценарии независимы—для их запуска не + требуется программа autoconf. +

+
+

+ autoheader +

+
+

+ Инструмент для создания файлов шаблонов операторов C + #define для + использования в configure +

+
+

+ autom4te +

+
+

+ Обертка для макропроцессора M4 +

+
+

+ autoreconf +

+
+

+ Автоматически запускает autoconf, autoheader, + aclocal, + automake, + gettextize + и libtoolize в правильном + порядке, чтобы сэкономить время, при внесении изменений в + файлы шаблонов autoconf и automake. +

+
+

+ autoscan +

+
+

+ Помогает создать файл configure.in для пакета программного + обеспечения; проверяет исходные файлы в дереве каталогов, + ищет в них распространенные проблемы с переносимостью и + создает файл configure.scan, который является + предварительным файлом configure.in для пакета. +

+
+

+ autoupdate +

+
+

+ Изменяет файл configure.in, + вызывающий макросы autoconf по их старым + именам для использования текущих имен макросов +

+
+

+ ifnames +

+
+

+ Помогает при написании файла configure.in для пакета; выводит + идентификаторы, которые использует пакет в условных + выражениях препроцессора C. (Если пакет уже был настроен + для некоторой переносимости, эта программа может помочь + определить, что нужно проверить сценарию configure. Он также + может заполнить пробелы в файле configure.in, сгенерированном командой + autoscan.) +

+
+
+
+
+ + + diff --git a/lfs-12.1-sysv/chapter08/automake.html b/lfs-12.1-sysv/chapter08/automake.html new file mode 100644 index 0000000..59638aa --- /dev/null +++ b/lfs-12.1-sysv/chapter08/automake.html @@ -0,0 +1,237 @@ + + + + + + 8.46. Automake-1.16.5 + + + + + + + + +

+ 8.46. + Automake-1.16.5 +

+
+
+

+ Пакет Automake содержит программы генерации Makefile для + использования с Autoconf. +

+
+
+
+ Приблизительное время сборки: + менее 0.1 SBU (около 1.6 SBU с + тестами) +
+
+ Требуемое дисковое + пространство: 115 MB +
+
+
+
+
+

+ 8.46.1. Установка пакета Automake +

+

+ Подготовьте Automake к компиляции: +

+
./configure --prefix=/usr --docdir=/usr/share/doc/automake-1.16.5
+

+ Скомпилируйте пакет: +

+
make
+

+ Использование четырех параллельных заданий ускоряет тестирование + даже на системах с меньшим количеством логических ядер из-за + внутренних задержек в отдельных тестах. Чтобы протестировать пакет, + выполните: +

+
make -j$(($(nproc)>4?$(nproc):4)) check
+

+ Замените $((...)) + количеством логических ядер, которые вы хотите использовать, если + вы не планируете использовать все. +

+

+ Известно, что тест t/subobj.sh не проходит. +

+

+ Установите пакет: +

+
make install
+
+
+

+ 8.46.2. + Содержимое пакета Automake +

+
+
+
+ Установленные программы: + aclocal, aclocal-1.16 (жестко связан с + aclocal), automake, и automake-1.16 (жестко связан с + automake) +
+
+ Созданные каталоги: + /usr/share/aclocal-1.16, + /usr/share/automake-1.16, и + /usr/share/doc/automake-1.16.5 +
+
+
+
+

+ Краткое описание +

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

+ aclocal +

+
+

+ Генерирует файлы aclocal.m4 + на основе содержимого файла configure.in +

+
+

+ aclocal-1.16 +

+
+

+ Жесткая ссылка на aclocal +

+
+

+ automake +

+
+

+ Инструмент для автоматического создания Makefile.in из файлов Makefile.am [Чтобы создать все файлы + Makefile.in запустите эту + программу в каталоге верхнего уровня. Сканируя файл + configure.in, он + автоматически находит все подходящие файлы Makefile.am и создает соответствующий + Makefile.in.] +

+
+

+ automake-1.16 +

+
+

+ Жесткая ссылка на automake +

+
+
+
+
+ + + diff --git a/lfs-12.1-sysv/chapter08/bash.html b/lfs-12.1-sysv/chapter08/bash.html new file mode 100644 index 0000000..f88fbe5 --- /dev/null +++ b/lfs-12.1-sysv/chapter08/bash.html @@ -0,0 +1,270 @@ + + + + + + 8.35. Bash-5.2.21 + + + + + + + + +

+ 8.35. Bash-5.2.21 +

+
+
+

+ Пакет Bash содержит Bourne-Again Shell. +

+
+
+
+ Приблизительное время сборки: + 1.2 SBU +
+
+ Требуемое дисковое + пространство: 52 MB +
+
+
+
+
+

+ 8.35.1. Установка пакета Bash +

+

+ Во-первых, исправьте некоторые проблемы, выявленные разработчиками: +

+
patch -Np1 -i ../bash-5.2.21-upstream_fixes-1.patch
+

+ Подготовьте Bash к компиляции: +

+
./configure --prefix=/usr             \
+            --without-bash-malloc     \
+            --with-installed-readline \
+            --docdir=/usr/share/doc/bash-5.2.21
+
+

+ Значение нового параметра настройки: +

+
+
+ --with-installed-readline +
+
+

+ Этот параметр указывает Bash использовать библиотеку + readline, которая уже + установлена в системе, а не собственную версию readline. +

+
+
+
+

+ Скомпилируйте пакет: +

+
make
+

+ Перейдите к разделу «Установка пакета», если не планируете + запускать тесты. +

+

+ Перед запуском тестов, убедитесь, что пользователь tester может писать в каталог с исходниками: +

+
chown -R tester .
+

+ Набор тестов пакета предназначен для запуска пользователем без + полномочий root, которому принадлежит терминал, подключенный к + стандартному вводу. Чтобы удовлетворить это требование, создайте + новый псевдотерминал с помощью Expect и запустите тесты от имени пользователя + tester: +

+
su -s /usr/bin/expect tester << "EOF"
+set timeout -1
+spawn make tests
+expect eof
+lassign [wait] _ _ _ value
+exit $value
+EOF
+

+ Набор тестов использует diff для определения разницы + между выводом тестового сценария и ожидаемым результатом. Любой + вывод diff (с + префиксом < и >) указывает на сбой теста, если нет + сообщение о том, что различия можно проигнорировать. Известно, что + один тест с именем run-builtins не + работает на некоторых хост-дистрибутивах, указывая на различия в + первой строке выходных данных. +

+

+ Установите пакет: +

+
make install
+

+ Запустите только что скомпилированную программу bash (заменив ту, которая + выполняется в данный момент): +

+
exec /usr/bin/bash --login
+
+
+

+ 8.35.2. Содержимое + пакета Bash +

+
+
+
+ Установленные программы: + bash, bashbug и sh (ссылка на + bash) +
+
+ Созданные каталоги: + /usr/include/bash, /usr/lib/bash, and + /usr/share/doc/bash-5.2.21 +
+
+
+
+

+ Краткое описание +

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

+ bash +

+
+

+ Широко распространенный командный интерпретатор. + Выполняет различные дополнения и подстановки в переданной + командной строке перед её выполнением, что делает этот + интерпретатор мощным инструментом +

+
+

+ bashbug +

+
+

+ Скрипт, помогающий пользователю составлять и отправлять + по почте отчеты об ошибках bash +

+
+

+ sh +

+
+

+ Симлинк на программу bash; при вызове + sh, + bash + пытается максимально точно имитировать поведение + sh, при + этом также соответствуя стандарту POSIX. +

+
+
+
+
+ + + diff --git a/lfs-12.1-sysv/chapter08/bc.html b/lfs-12.1-sysv/chapter08/bc.html new file mode 100644 index 0000000..528b4d0 --- /dev/null +++ b/lfs-12.1-sysv/chapter08/bc.html @@ -0,0 +1,214 @@ + + + + + + 8.13. Bc-6.7.5 + + + + + + + + +

+ 8.13. Bc-6.7.5 +

+
+
+

+ Пакет Bc содержит язык для обработки чисел произвольной точности. +

+
+
+
+ Приблизительное время сборки: + менее 0.1 SBU +
+
+ Требуемое дисковое + пространство: 7.8 MB +
+
+
+
+
+

+ 8.13.1. Установка пакета Bc +

+

+ Подготовьте Bc к компиляции: +

+
CC=gcc ./configure --prefix=/usr -G -O3 -r
+
+

+ Значение параметров настройки: +

+
+
+ CC=gcc +
+
+

+ Этот параметр определяет используемый компилятор +

+
+
+ -G +
+
+

+ Пропускает часть тестов, которые не будут работать, пока не + будет установлена программа bc. +

+
+
+ -O3 +
+
+

+ Указывает используемый уровень оптимизации. +

+
+
+ -r +
+
+

+ Включает использование Readline для улучшения функции + редактирования строк в bc. +

+
+
+
+

+ Скомпилируйте пакет: +

+
make
+

+ Чтобы протестировать bc, запустите: +

+
make test
+

+ Установите пакет: +

+
make install
+
+
+

+ 8.13.2. Содержимое + пакета Bc +

+
+
+
+ Установленные программы: + bc и dc +
+
+
+
+

+ Краткое описание +

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

+ bc +

+
+

+ Калькулятор командной строки +

+
+

+ dc +

+
+

+ Калькулятор командной строки с обратной польской нотацией +

+
+
+
+
+ + + diff --git a/lfs-12.1-sysv/chapter08/binutils.html b/lfs-12.1-sysv/chapter08/binutils.html new file mode 100644 index 0000000..e122a4f --- /dev/null +++ b/lfs-12.1-sysv/chapter08/binutils.html @@ -0,0 +1,642 @@ + + + + + + 8.19. Binutils-2.42 + + + + + + + + +

+ 8.19. + Binutils-2.42 +

+
+
+

+ Пакет Binutils содержит компоновщик, ассемблер и другие инструменты + для работы с объектными файлами. +

+
+
+
+ Приблизительное время сборки: + 2.2 SBU +
+
+ Требуемое дисковое + пространство: 2.7 GB +
+
+
+
+
+

+ 8.19.1. Установка пакета Binutils +

+

+ Документация Binutils рекомендует выполнять компиляцию в отдельном + каталоге: +

+
mkdir -v build
+cd       build
+

+ Подготовьте Binutils к компиляции: +

+
../configure --prefix=/usr       \
+             --sysconfdir=/etc   \
+             --enable-gold       \
+             --enable-ld=default \
+             --enable-plugins    \
+             --enable-shared     \
+             --disable-werror    \
+             --enable-64-bit-bfd \
+             --with-system-zlib  \
+             --enable-default-hash-style=gnu
+
+

+ Значение новых параметров настройки: +

+
+
+ --enable-gold +
+
+

+ Собирает компоновщик gold и устанавливает его как ld.gold + (вместе с компоновщиком по умолчанию). +

+
+
+ --enable-ld=default +
+
+

+ Собирает оригинальный компоновщик bfd и устанавливает его как + ld (компоновщик по умолчанию) и как ld.bfd +

+
+
+ --enable-plugins +
+
+

+ Включает поддержку плагинов для компоновщика. +

+
+
+ --with-system-zlib +
+
+

+ Указывает, что необходимо использовать установленную + библиотеку zlib вместо сборки собственной. +

+
+
+
+

+ Скомпилируйте пакет: +

+
make tooldir=/usr
+
+

+ Значение параметра make: +

+
+
+ tooldir=/usr +
+
+

+ Обычно для tooldir (каталога, в котором будут расположены + исполняемые файлы) установлено значение $(exec_prefix)/$(target_alias). Например, + машины x86_64 преобразуют это значение в /usr/x86_64-unknown-linux-gnu. Поскольку + это пользовательская система, то целевой каталог в + /usr не требуется. Параметр + $(exec_prefix)/$(target_alias) + использовался, если бы система применялась для + кросс-компиляции (например, при компиляции пакета на + компьютере Intel, который генерирует код, который может быть + выполнен на компьютерах PowerPC). +

+
+
+
+
+ [Важно] +

+ Важно +

+

+ Набор тестов для Binutils в этом разделе считается критически + важным. Ни в коем случае не пропускайте его. +

+
+

+ Выполните тестирование: +

+
make -k check
+

+ Чтобы получить список неудачных тестов, запустите: +

+
grep '^FAIL:' $(find -name '*.log')
+

+ Двенадцать тестов завершаются неудачно в наборе тестов gold, когда + GCC собирается с параметрами --enable-default-pie и --enable-default-ssp. +

+

+ Установите пакет: +

+
make tooldir=/usr install
+

+ Удалите бесполезные статические библиотеки: +

+
rm -fv /usr/lib/lib{bfd,ctf,ctf-nobfd,gprofng,opcodes,sframe}.a
+
+
+

+ 8.19.2. + Содержимое пакета Binutils +

+
+
+
+ Установленные программы: + addr2line, ar, as, c++filt, dwp, elfedit, + gprof, gprofng, ld, ld.bfd, ld.gold, nm, objcopy, objdump, + ranlib, readelf, size, strings и strip +
+
+ Установленные библиотеки: + libbfd.so, libctf.so, libctf-nobfd.so, + libgprofng.so, libopcodes.so и libsframe.so +
+
+ Созданные каталоги: + /usr/lib/ldscripts +
+
+
+
+

+ Краткое описание +

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

+ addr2line +

+
+

+ Переводит адреса программ в имена файлов и номера строк; + учитывая адрес и имя исполняемого файла, использует + отладочную информацию в исполняемом файле, для + определения файла исходного кода и номера строки, + ассоциированной с адресом +

+
+

+ ar +

+
+

+ Создаёт, изменяет и распаковывает архивы +

+
+

+ as +

+
+

+ Ассемблер, который собирает результат работы gcc в объектные файлы +

+
+

+ c++filt +

+
+

+ Используется компоновщиком для исправления символов C++ и + Java и предотвращения конфликтов перегруженных функций. +

+
+

+ dwp +

+
+

+ Утилита для упаковки DWARF +

+
+

+ elfedit +

+
+

+ Обновляет ELF заголовки в ELF файлах +

+
+

+ gprof +

+
+

+ Отображает в графическом виде информацию о профилировании +

+
+

+ gprofng +

+
+

+ Собирает и анализирует данные о производительности +

+
+

+ ld +

+
+

+ Компоновщик, который объединяет несколько объектных и + архивных файлов в один файл, перемещая их данные и + связывая символическими ссылками +

+
+

+ ld.gold +

+
+

+ Урезанная версия ld, которая поддерживает только формат + объектных файлов elf +

+
+

+ ld.bfd +

+
+

+ Жесткая ссылка на ld +

+
+

+ nm +

+
+

+ Выводит список символов, используемых в данном объектном + файле +

+
+

+ objcopy +

+
+

+ Преобразует один тип объектного файла в другой +

+
+

+ objdump +

+
+

+ Отображает информацию о данном объектном файле; можно + указать параметры, определяющие, какая конкретно + информация будет отображаться. Отображаемая информация + полезна для программистов, которые работают над + инструментами, используемыми при компиляции +

+
+

+ ranlib +

+
+

+ Создает индекс содержимого архива и сохраняет его в + архиве; в индексе перечислены все символы, определенные в + перемещаемых объектных файлах, содержащихся в архиве +

+
+

+ readelf +

+
+

+ Отображает информацию о двоичных файлах типа ELF +

+
+

+ size +

+
+

+ Отображает размеры секций и общий размер указанных + объектных файлов +

+
+

+ strings +

+
+

+ Выводит для каждого указанного файла последовательности + печатаемых символов, которые имеют по крайней мере + указанную длину (по умолчанию четыре); для объектных + файлов по умолчанию печатаются только строки из секций + инициализации и загрузки, в то время как для других + файлов он сканирует весь файл. +

+
+

+ strip +

+
+

+ Удаляет символы из объектных файлов +

+
+

+ libbfd +

+
+

+ Библиотека дескрипторов двоичных файлов +

+
+

+ libctf +

+
+

+ Библиотека отладки формата Compat ANSI-C Type +

+
+

+ libctf-nobfd +

+
+

+ Вариант libctf, не использующий функциональность libbfd. +

+
+

+ libgprofng +

+
+

+ Библиотека, содержащая большинство подпрограмм, + используемых gprofng +

+
+

+ libopcodes +

+
+

+ Библиотека для работы с опкодами—«читаемыми» + версиями инструкций для процессора. Используется для + сборки таких утилит как objdump +

+
+

+ libsframe +

+
+

+ Библиотека для поддержки обратной онлайн-трассировки с + использованием простого декодера разделов .sframe. +

+
+
+
+
+ + + diff --git a/lfs-12.1-sysv/chapter08/bison.html b/lfs-12.1-sysv/chapter08/bison.html new file mode 100644 index 0000000..524938c --- /dev/null +++ b/lfs-12.1-sysv/chapter08/bison.html @@ -0,0 +1,205 @@ + + + + + + 8.33. Bison-3.8.2 + + + + + + + + +

+ 8.33. Bison-3.8.2 +

+
+
+

+ Пакет Bison содержит генератор синтаксического анализа. +

+
+
+
+ Приблизительное время сборки: + 2.3 SBU +
+
+ Требуемое дисковое + пространство: 62 MB +
+
+
+
+
+

+ 8.33.1. Установка пакета Bison +

+

+ Подготовьте Bison к компиляции: +

+
./configure --prefix=/usr --docdir=/usr/share/doc/bison-3.8.2
+

+ Скомпилируйте пакет: +

+
make
+

+ Для тестирования пакета (около 5,5 SBU), выполните: +

+
make check
+

+ Установите пакет: +

+
make install
+
+
+

+ 8.33.2. Содержимое + пакета Bison +

+
+
+
+ Установленные программы: + bison и yacc +
+
+ Установленные библиотеки: + liby.a +
+
+ Созданные каталоги: + /usr/share/bison +
+
+
+
+

+ Краткое описание +

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

+ bison +

+
+

+ Генерирует из набора правил программу для анализа + структуры текстовых файлов; Bison является заменой Yacc + (Yet Another Compiler Compiler) +

+
+

+ yacc +

+
+

+ Обертка для bison, предназначенная + для программ, которые до сих пор вызывают yacc вместо + bison; он + вызывает bison с параметром + -y +

+
+

+ liby +

+
+

+ Библиотека Yacc, содержащая реализации Yacc-совместимых + функций yyerror и + main; обычно эта библиотека + не очень нужна, но требуется POSIX +

+
+
+
+
+ + + diff --git a/lfs-12.1-sysv/chapter08/bzip2.html b/lfs-12.1-sysv/chapter08/bzip2.html new file mode 100644 index 0000000..8432109 --- /dev/null +++ b/lfs-12.1-sysv/chapter08/bzip2.html @@ -0,0 +1,394 @@ + + + + + + 8.7. Bzip2-1.0.8 + + + + + + + + +

+ 8.7. Bzip2-1.0.8 +

+
+
+

+ Пакет Bzip2 содержит программы для сжатия и распаковки файлов. + Сжатие текстовых файлов с помощью bzip2 даёт больший процент + сжатия, чем традиционный gzip. +

+
+
+
+ Приблизительное время сборки: + менее 0.1 SBU +
+
+ Требуемое дисковое + пространство: 7.2 MB +
+
+
+
+
+

+ 8.7.1. Установка пакета Bzip2 +

+

+ Примените патч, который установит документацию для этого пакета: +

+
patch -Np1 -i ../bzip2-1.0.8-install_docs-1.patch
+

+ Следующая команда гарантирует установку символических ссылок с + относительным путём: +

+
sed -i 's@\(ln -s -f \)$(PREFIX)/bin/@\1@' Makefile
+

+ Убедитесь, что справочные страницы установлены в правильном месте: +

+
sed -i "s@(PREFIX)/man@(PREFIX)/share/man@g" Makefile
+

+ Подготовьте Bzip2 к компиляции: +

+
make -f Makefile-libbz2_so
+make clean
+
+

+ Значение параметра make: +

+
+
+ -f + Makefile-libbz2_so +
+
+

+ Этот параметр позволяет выполнить сборку, с использованием + другого Makefile, в данном + случае Makefile-libbz2_so, + который создает динамическую библиотеку libbz2.so и связывает с ней Bzip2. +

+
+
+
+

+ Скомпилируйте и протестируйте пакет: +

+
make
+

+ Установите пакет: +

+
make PREFIX=/usr install
+

+ Установите библиотеку: +

+
cp -av libbz2.so.* /usr/lib
+ln -sv libbz2.so.1.0.8 /usr/lib/libbz2.so
+

+ Установите общий бинарный файл bzip2 в каталог /usr/bin, и замените две копии bzip2 символическими ссылками: +

+
cp -v bzip2-shared /usr/bin/bzip2
+for i in /usr/bin/{bzcat,bunzip2}; do
+  ln -sfv bzip2 $i
+done
+

+ Удалите ненужную статическую библиотеку: +

+
rm -fv /usr/lib/libbz2.a
+
+
+

+ 8.7.2. Содержимое + пакета Bzip2 +

+
+
+
+ Установленные программы: + bunzip2 (ссылка на bzip2), bzcat (ссылка + на bzip2), bzcmp (ссылка на bzdiff), bzdiff, bzegrep (ссылка на + bzgrep), bzfgrep (ссылка на bzgrep), bzgrep, bzip2, + bzip2recover, bzless (ссылка на bzmore) и bzmore +
+
+ Установленные библиотеки: + libbz2.so +
+
+ Созданные каталоги: + /usr/share/doc/bzip2-1.0.8 +
+
+
+
+

+ Краткое описание +

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

+ bunzip2 +

+
+

+ Распаковывает bzip-файлы +

+
+

+ bzcat +

+
+

+ Распаковывает в поток стандартного вывода +

+
+

+ bzcmp +

+
+

+ Запускает программу cmp для bzip файлов +

+
+

+ bzdiff +

+
+

+ Запускает программу diff для bzip файлов +

+
+

+ bzegrep +

+
+

+ Запускает программу egrep для bzip файлов +

+
+

+ bzfgrep +

+
+

+ Запускает программу fgrep для bzip файлов +

+
+

+ bzgrep +

+
+

+ Запускает программу grep для bzip файлов +

+
+

+ bzip2 +

+
+

+ Сжимает файлы, используя алгоритм сжатия текста с блочной + сортировкой Барроуза — Уилера и кодирование Хафмана; + степень сжатия лучше, чем у более традиционных + архиваторов, использующих алгоритмы «Lempel-Ziv», + например gzip +

+
+

+ bzip2recover +

+
+

+ Пытается восстанавливать данные из поврежденных архивов +

+
+

+ bzless +

+
+

+ Запускает программу less для bzip файлов +

+
+

+ bzmore +

+
+

+ Запускает программу more для bzip файлов +

+
+

+ libbz2 +

+
+

+ Библиотека, реализующая сжатие данных без потерь с + использованием алгоритма Барроуза-Уилера. +

+
+
+
+
+ + + diff --git a/lfs-12.1-sysv/chapter08/chapter08.html b/lfs-12.1-sysv/chapter08/chapter08.html new file mode 100644 index 0000000..c0eef2c --- /dev/null +++ b/lfs-12.1-sysv/chapter08/chapter08.html @@ -0,0 +1,340 @@ + + + + + + Глава 8. Установка базового системного программного обеспечения + + + + + + + + +

+ 8. + Установка базового системного программного обеспечения +

+
+
+

+ Содержание +

+ +
+
+ + + diff --git a/lfs-12.1-sysv/chapter08/check.html b/lfs-12.1-sysv/chapter08/check.html new file mode 100644 index 0000000..554c3d3 --- /dev/null +++ b/lfs-12.1-sysv/chapter08/check.html @@ -0,0 +1,180 @@ + + + + + + 8.58. Check-0.15.2 + + + + + + + + +

+ 8.58. Check-0.15.2 +

+
+
+

+ Check - это фреймворк модульного тестирования для языка C. +

+
+
+
+ Приблизительное время сборки: + 0.1 SBU (около 1.6 SBU с тестами) +
+
+ Требуемое дисковое + пространство: 12 MB +
+
+
+
+
+

+ 8.58.1. Установка пакета Check +

+

+ Подготовить Check к компиляции: +

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

+ Соберите пакет: +

+
make
+

+ Когда компиляция будет завершена, запустите набор тестов: +

+
make check
+

+ Установите пакет: +

+
make docdir=/usr/share/doc/check-0.15.2 install
+
+
+

+ 8.58.2. Содержимое + пакета Check +

+
+
+
+ Установленные программы: + checkmk +
+
+ Установленные библиотеки: + libcheck.so +
+
+
+
+

+ Краткое описание +

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

+ checkmk +

+
+

+ Сценарий Awk для генерации unit-тестов C, для + использования с платформой модульного тестирования Check. +

+
+

+ libcheck.so +

+
+

+ Содержит функции, позволяющие вызывать Check из программы + тестирования. +

+
+
+
+
+ + + diff --git a/lfs-12.1-sysv/chapter08/cleanup.html b/lfs-12.1-sysv/chapter08/cleanup.html new file mode 100644 index 0000000..dad2d37 --- /dev/null +++ b/lfs-12.1-sysv/chapter08/cleanup.html @@ -0,0 +1,119 @@ + + + + + + 8.84. Очистка + + + + + + + + +

+ 8.84. Очистка +

+
+

+ Наконец, удалите некоторые лишние файлы, оставшиеся после запуска + тестов: +

+
rm -rf /tmp/*
+

+ Также в каталогах /usr/lib и /usr/libexec есть несколько файлов с + расширением .la. Это файлы «архива libtool». Как было сказано ранее, в + современной системе Linux файлы .la libtool необходимы только для + libltdl. Предполагается, что libltdl не будет загружать библиотеки в + LFS, кроме этого известно, что некоторые файлы .la могут нарушить + сборку пакетов BLFS. Удалите эти файлы сейчас: +

+
find /usr/lib /usr/libexec -name \*.la -delete
+

+ Дополнительные сведения об архивных файлах Libtool смотрите в книге + BLFS + "О файлах Libtool Archive (.la)". +

+

+ Компилятор, собранный в Глава 6 и + + Глава 7 все еще установлен, но больше не нужен. Удалите его + с помощью команды: +

+
find /usr -depth -name $(uname -m)-lfs-linux-gnu\* | xargs rm -rf
+

+ Наконец, удалите временную учетную запись пользователя 'tester', + созданную в начале предыдущей главы. +

+
userdel -r tester
+
+ + + diff --git a/lfs-12.1-sysv/chapter08/coreutils.html b/lfs-12.1-sysv/chapter08/coreutils.html new file mode 100644 index 0000000..3297290 --- /dev/null +++ b/lfs-12.1-sysv/chapter08/coreutils.html @@ -0,0 +1,1796 @@ + + + + + + 8.57. Coreutils-9.4 + + + + + + + + +

+ 8.57. + Coreutils-9.4 +

+
+
+

+ Пакет Coreutils содержит основные утилиты, необходимые каждой + операционной системе. +

+
+
+
+ Приблизительное время сборки: + 1 SBU +
+
+ Требуемое дисковое + пространство: 175 MB +
+
+
+
+
+

+ 8.57.1. Установка пакета Coreutils +

+

+ Стандарт POSIX требует, чтобы программы пакета Coreutils правильно + распознавали символы даже в случае, если используются многобайтовые + локали. Следующий патч исправляет несоответствие этому требованию, + а также другие ошибки, касающиеся интернационализации: +

+
patch -Np1 -i ../coreutils-9.4-i18n-1.patch
+
+ [Примечание] +

+ Примечание +

+

+ В этом патче было обнаружено много ошибок. Сообщая о новых + ошибках разработчикам Coreutils, сначала проверьте, + воспроизводятся ли эти ошибки без этого исправления. +

+
+

+ Исправьте уязвимость в утилите split: +

+
sed -e '/n_out += n_hold/,+4 s|.*bufsize.*|//&|' \
+    -i src/split.c
+

+ Теперь подготовьте Coreutils к компиляции: +

+
autoreconf -fiv
+FORCE_UNSAFE_CONFIGURE=1 ./configure \
+            --prefix=/usr            \
+            --enable-no-install-program=kill,uptime
+
+

+ Значение параметров настройки: +

+
+
+ autoreconf +
+
+

+ Патч для интернационализации изменил систему сборки пакета, + поэтому файлы конфигурации необходимо сгенерировать заново. +

+
+
+ FORCE_UNSAFE_CONFIGURE=1 +
+
+

+ Эта переменная среды позволяет собрать пакет от имени + пользователя root. +

+
+
+ --enable-no-install-program=kill,uptime +
+
+

+ Назначение этого параметра — запретить Coreutils + устанавливать программы, которые будут установлены другими + пакетами. +

+
+
+
+

+ Скомпилируйте пакет: +

+
make
+

+ Если вы не планируете запускать набор тестов, перейдите к разделу + «Установка + пакета». +

+

+ Теперь набор тестов готов к запуску. Сначала запустите тесты, + предназначенные для запуска от имени пользователя root: +

+
make NON_ROOT_USERNAME=tester check-root
+

+ Мы собираемся выполнить остальные тесты от имени пользователя + tester. Некоторые тесты требуют, + чтобы пользователь был членом более чем одной группы. Чтобы эти + тесты не были пропущены, добавьте временную группу и включите в неё + пользователя tester: +

+
groupadd -g 102 dummy -U tester
+

+ Исправьте некоторые разрешения, чтобы пользователь без полномочий + root мог компилировать и запускать + тесты: +

+
chown -R tester . 
+

+ Теперь запустите тесты: +

+
su tester -c "PATH=$PATH make RUN_EXPENSIVE_TESTS=yes check"
+

+ Удалить временную группу: +

+
groupdel dummy
+

+ Установите пакет: +

+
make install
+

+ Переместите программы туда, где они должны быть в соответствие со + спецификациями FHS: +

+
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"/' /usr/share/man/man8/chroot.8
+
+
+

+ 8.57.2. + Содержимое пакета Coreutils +

+
+
+
+ Установленные программы: + [, b2sum, base32, base64, basename, + basenc, 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 и + yes +
+
+ Установленные библиотеки: + libstdbuf.so (in + /usr/libexec/coreutils) +
+
+ Созданные каталоги: + /usr/libexec/coreutils +
+
+
+
+

+ Краткое описание +

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

+ [ +

+
+

+ Это команда /usr/bin/[, которая является синонимом + команды test +

+
+

+ base32 +

+
+

+ Кодирует и декодирует данные в соответствии со + спецификацией base32 (RFC 4648) +

+
+

+ base64 +

+
+

+ Кодирует и декодирует данные в соответствии со + спецификацией base64 (RFC 4648) +

+
+

+ b2sum +

+
+

+ Выводит или проверяет контрольные суммы BLAKE2 + (512-битные) +

+
+

+ basename +

+
+

+ Удаляет любой путь и заданный суффикс из имени файла +

+
+

+ basenc +

+
+

+ Кодирует или декодирует данные с использованием различных + алгоритмов +

+
+

+ cat +

+
+

+ Присоединяет файлы к стандартному выходному потоку +

+
+

+ chcon +

+
+

+ Изменяет контекст безопасности для файлов и каталогов +

+
+

+ chgrp +

+
+

+ Изменяет владельцев группы для файлов и директорий +

+
+

+ chmod +

+
+

+ Изменяет разрешения каждого файла на заданный режим; + режим может быть либо символьным представлением вносимых + изменений, либо восьмеричным числом, представляющим новые + разрешения. +

+
+

+ chown +

+
+

+ Изменяет принадлежность файлов и директорий пользователю + и/или группе +

+
+

+ chroot +

+
+

+ Запускает команду с указанным каталогом в качестве + корневого каталога / +

+
+

+ cksum +

+
+

+ Выводит контрольную сумму Cyclic Redundancy Check (CRC) и + количество байтов для каждого указанного файла. +

+
+

+ comm +

+
+

+ Сравнивает два отсортированных файла, выводя в три + столбца уникальные и общие строки. +

+
+

+ cp +

+
+

+ Копирует файлы +

+
+

+ csplit +

+
+

+ Разбивает заданный файл на несколько новых файлов, + разделяя их в соответствии с заданными шаблонами или + номерами строк и выводя количество байтов для каждого + нового файла. +

+
+

+ cut +

+
+

+ Выдает участки строк, выбирая части в соответствии с + заданными полями или позициями +

+
+

+ date +

+
+

+ Отображает текущее дату и время в заданном формате или + устанавливает системные дату и время +

+
+

+ dd +

+
+

+ Копирует файл, используя заданный размер блока и + количество, при необходимости выполняя преобразования на + нем. +

+
+

+ df +

+
+

+ Сообщает объем доступного (и используемого) дискового + пространства во всех смонтированных файловых системах или + только в файловых системах, содержащих выбранные файлы. +

+
+

+ dir +

+
+

+ Выводит содержимое заданного каталога (так же, как + команда ls) +

+
+

+ dircolors +

+
+

+ Выводит команды для установки переменной среды + LS_COLOR для изменения + цветовой схемы, используемой ls. +

+
+

+ dirname +

+
+

+ Извлекает часть(части) каталога из заданного(заданных) + имени(имён) +

+
+

+ du +

+
+

+ Сообщает объем дискового пространства, используемого + текущим каталогом, каждым из заданных каталогов (включая + все подкаталоги) или каждым из заданных файлов. +

+
+

+ echo +

+
+

+ Отображает указанные строки +

+
+

+ env +

+
+

+ Запускает команду в модифицированной среде окружения +

+
+

+ expand +

+
+

+ Конвертирует символы табуляции в пробелы +

+
+

+ expr +

+
+

+ Вычисляет выражения +

+
+

+ factor +

+
+

+ Выводит простые множители указанных целых чисел +

+
+

+ false +

+
+

+ Ничего не делает, указывает на неудачу; всегда + завершается с кодом состояния, указывающим на сбой +

+
+

+ fmt +

+
+

+ Форматирует абзацы в указанных файлах +

+
+

+ fold +

+
+

+ Выполняет перенос строк в указанных файлах +

+
+

+ groups +

+
+

+ Сообщает о принадлежности пользователя к группам +

+
+

+ head +

+
+

+ Выводит первые десять строк (или заданное количество + строк) каждого заданного файла. +

+
+

+ hostid +

+
+

+ Выводит числовой идентификатор хоста (в шестнадцатеричном + формате) +

+
+

+ id +

+
+

+ Выводит действующий идентификатор пользователя, + идентификатор группы и принадлежность к группам для + текущего или для указанного пользователя +

+
+

+ install +

+
+

+ Копирует файлы, одновременно устанавливая для них права + доступа, и, если возможно, устанавливая для них владельца + и группу +

+
+

+ join +

+
+

+ Объединяет строки, которые имеют идентичные объединяемые + поля в двух различных файлах +

+
+

+ link +

+
+

+ Создает жесткую ссылку (с указанным именем) на файл +

+
+

+ ln +

+
+

+ Создает жесткие или мягкие (символические) ссылки между + файлами +

+
+

+ logname +

+
+

+ Сообщает имя входа текущего пользователя +

+
+

+ ls +

+
+

+ Выводит список содержимого для каждого заданного каталога +

+
+

+ md5sum +

+
+

+ Выводит или проверяет контрольные суммы Message Digest 5 + (MD5) +

+
+

+ mkdir +

+
+

+ Создает директории с указанными именами +

+
+

+ mkfifo +

+
+

+ Создает "именованный канал" "первым пришел — первым ушел" + (FIFO), в нотации UNIX с заданными именами +

+
+

+ mknod +

+
+

+ Создает узлы устройств с заданными именами; узел + устройства представляет собой специальный символьный + файл, специальный файл блока или FIFO. +

+
+

+ mktemp +

+
+

+ Создает временные файлы безопасным способом; используется + в скриптах +

+
+

+ mv +

+
+

+ Перемещает или переименовывает файлы или каталоги +

+
+

+ nice +

+
+

+ Запускает программу с измененным приоритетом исполнения +

+
+

+ nl +

+
+

+ Нумерует строки в указанных файлах +

+
+

+ nohup +

+
+

+ Запускает команду, невосприимчивую к зависаниям, а ее + вывод перенаправляется в файл журнала +

+
+

+ nproc +

+
+

+ Выводит количество дочерних процессов, доступных для + процесса. +

+
+

+ numfmt +

+
+

+ Преобразует числа в или из удобочитаемых строк +

+
+

+ od +

+
+

+ Вывод дампа файла в восьмеричном и других форматах +

+
+

+ paste +

+
+

+ Объединяет указанные файлы, последовательно соединяя + соответствующие строки рядом друг с другом, разделенные + символами табуляции. +

+
+

+ pathchk +

+
+

+ Проверяет, являются ли имена файлов допустимыми или + переносимыми +

+
+

+ pinky +

+
+

+ Легковесный клиент типа finger; выдает некоторую + информацию о заданных пользователях +

+
+

+ pr +

+
+

+ Разбивает файлы для печати на страницы и столбцы +

+
+

+ printenv +

+
+

+ Выдает значения переменных окружения +

+
+

+ printf +

+
+

+ Выводит аргументы в соответствии с заданным форматом, + подобно функции C printf. +

+
+

+ ptx +

+
+

+ Создает перестановочный индекс по содержимому указанных + файлов с каждым ключевым словом в своем контексте +

+
+

+ pwd +

+
+

+ Сообщает имя текущего рабочего каталога +

+
+

+ readlink +

+
+

+ Выдает значение указанной символической ссылки +

+
+

+ realpath +

+
+

+ Возвращает приведенное к обычному виду полное имя файла +

+
+

+ rm +

+
+

+ Удаляет файлы или каталоги +

+
+

+ rmdir +

+
+

+ Удаляет каталоги, если они пусты +

+
+

+ runcon +

+
+

+ Запускает команду с указанным контекстом безопасности +

+
+

+ seq +

+
+

+ Выдает последовательность чисел из указанного диапазона с + указанным значением приращения +

+
+

+ sha1sum +

+
+

+ Выводит или проверяет контрольные суммы 160-битного + алгоритма безопасного хеширования 1 (SHA1) +

+
+

+ sha224sum +

+
+

+ Выводит или проверяет контрольные суммы 224-битного + алгоритма безопасного хеширования +

+
+

+ sha256sum +

+
+

+ Выводит или проверяет контрольные суммы 256-битного + алгоритма безопасного хеширования +

+
+

+ sha384sum +

+
+

+ Выводит или проверяет контрольные суммы 384-битного + алгоритма безопасного хеширования +

+
+

+ sha512sum +

+
+

+ Выводит или проверяет контрольные суммы 512-битного + алгоритма безопасного хеширования +

+
+

+ shred +

+
+

+ Многократно перезаписывает заданные файлы сложными + шаблонами, что затрудняет восстановление данных. +

+
+

+ shuf +

+
+

+ Перемешивает строки текста +

+
+

+ sleep +

+
+

+ Делает паузу на заданный промежуток времени +

+
+

+ sort +

+
+

+ Сортирует строки в указанных файлах +

+
+

+ split +

+
+

+ Разбивает заданный файл на несколько частей в + соответствии с указанным размером или количеством строк +

+
+

+ stat +

+
+

+ Отображает статус файла или файловой системы +

+
+

+ stdbuf +

+
+

+ Запускает команды с измененными операциями буферизации + для своих стандартных потоков. +

+
+

+ stty +

+
+

+ Устанавливает или сообщает настройки терминала +

+
+

+ sum +

+
+

+ Выводит контрольную сумму и количество блоков для каждого + заданного файла +

+
+

+ sync +

+
+

+ Сбрасывает буферы файловой системы; он принудительно + записывает измененные блоки на диск и обновляет суперблок +

+
+

+ tac +

+
+

+ Конкатенация содержимого указанных файлов в обратном + порядке +

+
+

+ tail +

+
+

+ Выводит последние десять строк (или заданное количество + строк) каждого указанного файла +

+
+

+ tee +

+
+

+ Считывает данные со стандартного потока ввода, записывает + как в стандартный вывод, так и в указанные файлы +

+
+

+ test +

+
+

+ Сравнивает значения и проверяет типы файловs +

+
+

+ timeout +

+
+

+ Запускает команду с ограничением по времени +

+
+

+ touch +

+
+

+ Изменяет временные метки файлов, устанавливая время + доступа и модификации данных файлов на текущее время; + несуществующие файлы создаются с нулевой длиной +

+
+

+ tr +

+
+

+ Переводит, сжимает и удаляет заданные символы из + стандартного потока +

+
+

+ true +

+
+

+ Ничего не делает, указывает на успешное выполнение + операции; он всегда завершается с кодом состояния, + указывающим на успех +

+
+

+ truncate +

+
+

+ Сжимает или расширяет файл до указанного размера +

+
+

+ tsort +

+
+

+ Выполняет топологическую сортировку; записывает полностью + упорядоченный список в соответствии с частичным + упорядочением в данном файле +

+
+

+ tty +

+
+

+ Сообщает имя файла терминала, подключенного к + стандартному вводу. +

+
+

+ uname +

+
+

+ Сообщает системную информацию +

+
+

+ unexpand +

+
+

+ Преобразует пробелы в табуляции +

+
+

+ uniq +

+
+

+ Удаляет все повторяющиеся копии уже имеющихся строк, + кроме одной +

+
+

+ unlink +

+
+

+ Удаляет указанный файл +

+
+

+ users +

+
+

+ Сообщает имена пользователей, вошедших в систему в данный + момент +

+
+

+ vdir +

+
+

+ То же, что ls + -l +

+
+

+ wc +

+
+

+ Сообщает количество строк, слов и байт для каждого + заданного файла, а также общее количество строк, если + указано более одного файла +

+
+

+ who +

+
+

+ Сообщает, кто вошел в систему +

+
+

+ whoami +

+
+

+ Сообщает имя пользователя, соответствующее идентификатору + текущего пользователя +

+
+

+ yes +

+
+

+ Повторно выводит y или + указанную строку, до тех пор, пока команда не будет + завершена с помощью kill +

+
+

+ libstdbuf +

+
+

+ Библиотека, используемая командой stdbuf +

+
+
+
+
+ + + diff --git a/lfs-12.1-sysv/chapter08/dejagnu.html b/lfs-12.1-sysv/chapter08/dejagnu.html new file mode 100644 index 0000000..e02e58a --- /dev/null +++ b/lfs-12.1-sysv/chapter08/dejagnu.html @@ -0,0 +1,184 @@ + + + + + + 8.17. DejaGNU-1.6.3 + + + + + + + + +

+ 8.17. + DejaGNU-1.6.3 +

+
+
+

+ Пакет DejaGnu содержит фреймворк + для запуска наборов тестов на инструментах GNU. Он написан на + expect, который в + свою очередь использует Tcl + (командный язык инструментов). +

+
+
+
+ Приблизительное время сборки: + 0.1 SBU +
+
+ Требуемое дисковое + пространство: 6.9 MB +
+
+
+
+
+

+ 8.17.1. Установка пакета DejaGNU +

+

+ Разработчики рекомендуют собирать DejaGNU в отдельном каталоге: +

+
mkdir -v build
+cd       build
+

+ Подготовьте DejaGNU к компиляции: +

+
../configure --prefix=/usr
+makeinfo --html --no-split -o doc/dejagnu.html ../doc/dejagnu.texi
+makeinfo --plaintext       -o doc/dejagnu.txt  ../doc/dejagnu.texi
+

+ Чтобы протестировать пакет, выполните: +

+
make check
+

+ Установите пакет: +

+
make install
+install -v -dm755  /usr/share/doc/dejagnu-1.6.3
+install -v -m644   doc/dejagnu.{html,txt} /usr/share/doc/dejagnu-1.6.3
+
+
+

+ 8.17.2. + Содержимое пакета DejaGNU +

+
+
+
+ Установленные программы: + dejagnu и runtest +
+
+
+
+

+ Short Descriptions +

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

+ dejagnu +

+
+

+ Вспомогательная программа запуска команд DejaGNU +

+
+

+ runtest +

+
+

+ Скрипт-обертка, который находит соответствующую оболочку + expect и + запускает DejaGnu +

+
+
+
+
+ + + diff --git a/lfs-12.1-sysv/chapter08/diffutils.html b/lfs-12.1-sysv/chapter08/diffutils.html new file mode 100644 index 0000000..e665448 --- /dev/null +++ b/lfs-12.1-sysv/chapter08/diffutils.html @@ -0,0 +1,201 @@ + + + + + + 8.59. Diffutils-3.10 + + + + + + + + +

+ 8.59. + Diffutils-3.10 +

+
+
+

+ Пакет Diffutils содержит программы, которые показывают различия + между файлами или каталогами. +

+
+
+
+ Приблизительное время сборки: + 0.3 SBU +
+
+ Требуемое дисковое + пространство: 36 MB +
+
+
+
+
+

+ 8.59.1. Установка пакета Diffutils +

+

+ Подготовьте Diffutils к компиляции: +

+
./configure --prefix=/usr
+

+ Скомпилируйте пакет: +

+
make
+

+ Чтобы протестровать пакет, выполните: +

+
make check
+

+ Установите пакет: +

+
make install
+
+
+

+ 8.59.2. + Содержимое пакета Diffutils +

+
+
+
+ Установленные программы: + cmp, diff, diff3, и sdiff +
+
+
+
+

+ Краткое описание +

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

+ cmp +

+
+

+ Сравнивает побайтно два файла и сообщает о любых + различиях +

+
+

+ diff +

+
+

+ Сравнивает два файла или каталога и сообщает, какие + строки отличаются +

+
+

+ diff3 +

+
+

+ Сравнивает три файла построчно +

+
+

+ sdiff +

+
+

+ Объединяет два файла и интерактивно выводит результат +

+
+
+
+
+ + + diff --git a/lfs-12.1-sysv/chapter08/e2fsprogs.html b/lfs-12.1-sysv/chapter08/e2fsprogs.html new file mode 100644 index 0000000..2021def --- /dev/null +++ b/lfs-12.1-sysv/chapter08/e2fsprogs.html @@ -0,0 +1,775 @@ + + + + + + 8.79. E2fsprogs-1.47.0 + + + + + + + + +

+ 8.79. + E2fsprogs-1.47.0 +

+
+
+

+ Пакет E2fsprogs содержит утилиты для работы с файловой системой + ext2. Также он поддерживает + журналируемые файловые системы ext3 + и ext4. +

+
+
+
+ Приблизительное время сборки: + 2.4 SBU на жестком диске, 0.4 SBU на SSD + диске +
+
+ Требуемое дисковое + пространство: 95 MB +
+
+
+
+
+

+ 8.79.1. Установка пакета E2fsprogs +

+

+ В документации к E2fsprogs рекомендуется выполнять сборку в + подкаталоге папки с исходниками: +

+
mkdir -v build
+cd       build
+

+ Подготовьте E2fsprogs к компиляции: +

+
../configure --prefix=/usr           \
+             --sysconfdir=/etc       \
+             --enable-elf-shlibs     \
+             --disable-libblkid      \
+             --disable-libuuid       \
+             --disable-uuidd         \
+             --disable-fsck
+
+

+ Значение параметров настройки: +

+
+
+ --enable-elf-shlibs +
+
+

+ Параметр создает общие библиотеки, которые используют + некоторые программы в этом пакете. +

+
+
+ --disable-* +
+
+

+ Эти параметры предотвращают сборку и установку библиотек + libuuid и libblkid, демона uuidd, и обертку для fsck, поскольку util-linux + устанавливает более свежие версии. +

+
+
+
+

+ Скомпилируйте пакет: +

+
make
+

+ Чтобы запустить тесты, выполните: +

+
make check
+

+ Известно, что один тест, с именем m_assume_storage_prezeroed, завершается ошибкой. +

+

+ Установите пакет: +

+
make install
+

+ Удалите ненужные статические библиотеки: +

+
rm -fv /usr/lib/{libcom_err,libe2p,libext2fs,libss}.a
+

+ Этот пакет устанавливает сжатый файл .info но не обновляет общесистемный файл + dir. Разархивируйте этот файл, а + затем обновите системный файл dir, + используя следующие команды: +

+
gunzip -v /usr/share/info/libext2fs.info.gz
+install-info --dir-file=/usr/share/info/dir /usr/share/info/libext2fs.info
+

+ По желанию, создайте и установите дополнительную документацию, + выполнив следующие команды: +

+
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
+
+
+

+ 8.79.2. Настройка + E2fsprogs +

+

+ Файл /etc/mke2fs.conf содержит + значения по умолчанию для различных параметров командной строки + mke2fs. Вы можете + отредактировать файл, чтобы значения по умолчанию соответствовали + вашим потребностям. Например, некоторые утилиты (не в LFS или BLFS) + не могут распознать файловую систему ext4 с включенным параметром metadata_csum_seed. Если вам нужна такая утилита, вы + можете удалить параметр из списка по умолчанию для ext4 с помощью команды: +

+
sed 's/metadata_csum_seed,//' -i /etc/mke2fs.conf
+

+ Подробности читайте на странице руководства mke2fs.conf(5). +

+
+
+

+ 8.79.3. + Содержимое пакета E2fsprogs +

+
+
+
+ Установленные программы: + badblocks, chattr, compile_et, debugfs, + dumpe2fs, e2freefrag, e2fsck, e2image, e2label, e2mmpstatus, + e2scrub, e2scrub_all, e2undo, e4crypt, e4defrag, filefrag, + fsck.ext2, fsck.ext3, fsck.ext4, logsave, lsattr, mk_cmds, + mke2fs, mkfs.ext2, mkfs.ext3, mkfs.ext4, mklost+found, + resize2fs и tune2fs +
+
+ Установленные библиотеки: + libcom_err.so, libe2p.so, libext2fs.so, и + libss.so +
+
+ Созданные каталоги: + /usr/include/e2p, /usr/include/et, + /usr/include/ext2fs, /usr/include/ss, /usr/lib/e2fsprogs, + /usr/share/et и /usr/share/ss +
+
+
+
+

+ Краткое описание +

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

+ badblocks +

+
+

+ Выполняет поиск поврежденных блоков на устройстве (обычно + на разделе диска) +

+
+

+ chattr +

+
+

+ Изменяет атрибуты файлов в файловых системах ext{234} +

+
+

+ compile_et +

+
+

+ Компилятор таблицы ошибок; конвертирует таблицу имен + кодов ошибок и сообщений в файл исходного кода на языке С + с тем, чтобы ее можно было использовать с библиотекой + com_err +

+
+

+ debugfs +

+
+

+ Отладчик файловой системы; его можно использовать для + проверки и изменения состояния файловых систем + ext{234} +

+
+

+ dumpe2fs +

+
+

+ Выводит информацию о суперблоке и группе блоков для + файловой системы, присутствующей на указанном устройстве. +

+
+

+ e2freefrag +

+
+

+ Сообщает информацию о фрагментации свободного + пространства +

+
+

+ e2fsck +

+
+

+ Используется для проверки и, при необходимости, + восстановления файловых систем ext{234} +

+
+

+ e2image +

+
+

+ Используется для сохранения важных данных файловых систем + ext{234} в файл +

+
+

+ e2label +

+
+

+ Отображает или изменяет метку файловой системы в файловой + системе ext{234} на + данном устройстве. +

+
+

+ e2mmpstatus +

+
+

+ Проверяет состояние MMP (Multiple Mount Protection - + защита от множественного монтирования) файловой системы + ext4 +

+
+

+ e2scrub +

+
+

+ Проверяет содержимое смонтированной файловой системы + ext{234} +

+
+

+ e2scrub_all +

+
+

+ Проверяет все смонтированные файловые системы + ext{234} на наличие + ошибок +

+
+

+ e2undo +

+
+

+ Воспроизводит журнал отмены (undo_log) для файловой + системы ext{234}, + обнаруженной на устройстве. [Это можно использовать для + отмены неудачной операции программой E2fsprogs.] +

+
+

+ e4crypt +

+
+

+ Утилита шифрования файловой системы Ext4 +

+
+

+ e4defrag +

+
+

+ Онлайн дефрагментатор для файловой системы ext4 +

+
+

+ filefrag +

+
+

+ Сообщает о том, насколько сильно может быть + фрагментирован конкретный файл +

+
+

+ fsck.ext2 +

+
+

+ По умолчанию проверяет файловые системы ext2 и является жесткой ссылкой на + e2fsck +

+
+

+ fsck.ext3 +

+
+

+ По умолчанию проверяет файловые системы ext3 и является жесткой ссылкой на + e2fsck +

+
+

+ fsck.ext4 +

+
+

+ По умолчанию проверяет файловые системы ext4 и является жесткой ссылкой на + e2fsck +

+
+

+ logsave +

+
+

+ Сохраняет вывод команды в файл журнала +

+
+

+ lsattr +

+
+

+ Перечисляет атрибуты файлов во второй расширенной + файловой системе. +

+
+

+ mk_cmds +

+
+

+ Преобразует таблицу имен команд и справочных сообщений в + исходный файл C, подходящий для использования с + библиотекой подсистемы libss +

+
+

+ mke2fs +

+
+

+ Создает файловую систему ext{234} на указанном устройстве +

+
+

+ mkfs.ext2 +

+
+

+ По умолчанию создает файловую систему ext2 и является жесткой ссылкой на + mke2fs +

+
+

+ mkfs.ext3 +

+
+

+ По умолчанию создает файловую систему ext3 и является жесткой ссылкой на + mke2fs +

+
+

+ mkfs.ext4 +

+
+

+ По умолчанию создает файловую систему ext4 и является жесткой ссылкой на + mke2fs +

+
+

+ mklost+found +

+
+

+ Используется для создания каталога lost+found в файловой системе + ext{234}; предварительно + выделяет дисковые блоки для этого каталога, чтобы + облегчить задачу e2fsck +

+
+

+ resize2fs +

+
+

+ Может использоваться для увеличения или уменьшения + файловой системы ext{234} +

+
+

+ tune2fs +

+
+

+ Позволяет настроить параметры для файловой системы + ext{234} +

+
+

+ libcom_err +

+
+

+ Стандартная процедура отображения ошибок +

+
+

+ libe2p +

+
+

+ Используется dumpe2fs, chattr, и lsattr +

+
+

+ libext2fs +

+
+

+ Содержит подпрограммы, позволяющие программам + пользовательского уровня управлять файловой системой + ext{234} +

+
+

+ libss +

+
+

+ Используется debugfs +

+
+
+
+
+ + + diff --git a/lfs-12.1-sysv/chapter08/expat.html b/lfs-12.1-sysv/chapter08/expat.html new file mode 100644 index 0000000..2ae3453 --- /dev/null +++ b/lfs-12.1-sysv/chapter08/expat.html @@ -0,0 +1,187 @@ + + + + + + 8.39. Expat-2.6.0 + + + + + + + + +

+ 8.39. Expat-2.6.0 +

+
+
+

+ Пакет Expat содержит потоковую библиотеку C для синтаксического + анализа XML +

+
+
+
+ Приблизительное время сборки: + 0.1 SBU +
+
+ Требуемое дисковое + пространство: 13 MB +
+
+
+
+
+

+ 8.39.1. Установка пакета Expat +

+

+ Подготовьте Expat к компиляции: +

+
./configure --prefix=/usr    \
+            --disable-static \
+            --docdir=/usr/share/doc/expat-2.6.0
+

+ Скомпилируйте пакет: +

+
make
+

+ Чтобы протестировать пакет, выполните: +

+
make check
+

+ Установите пакет: +

+
make install
+

+ По желанию установите документацию: +

+
install -v -m644 doc/*.{html,css} /usr/share/doc/expat-2.6.0
+
+
+

+ 8.39.2. Содержимое + пакета Expat +

+
+
+
+ Установленные программы: + xmlwf +
+
+ Установленные библиотеки: + libexpat.so +
+
+ Созданные каталоги: + /usr/share/doc/expat-2.6.0 +
+
+
+
+

+ Краткое описание +

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

+ xmlwf +

+
+

+ Утилита проверки правильности формирования XML документов +

+
+

+ libexpat +

+
+

+ Содержит функции API для синтаксического анализа XML +

+
+
+
+
+ + + diff --git a/lfs-12.1-sysv/chapter08/expect.html b/lfs-12.1-sysv/chapter08/expect.html new file mode 100644 index 0000000..bcab4a2 --- /dev/null +++ b/lfs-12.1-sysv/chapter08/expect.html @@ -0,0 +1,253 @@ + + + + + + 8.16. Expect-5.45.4 + + + + + + + + +

+ 8.16. + Expect-5.45.4 +

+
+
+

+ Пакет Expect содержит инструменты + для автоматизации работы интерактивных приложений, таких как + telnet, ftp, passwd, fsck, rlogin и tip, с помощью скриптовых + диалогов и макросов. Кроме того Expect полезен для тестирования перечисленных + выше приложений, а также для решения сложных задач взаимодействия с + другими средствами. Фреймворк DejaGnu написан на языке Expect. +

+
+
+
+ Приблизительное время сборки: + 0.2 SBU +
+
+ Требуемое дисковое + пространство: 3.9 MB +
+
+
+
+
+

+ 8.16.1. Установка пакета Expect +

+

+ Expect для работы необходим псевдотерминал(PTY). Убедитесь, что PTY + работают правильно в среде chroot, выполнив простой тест: +

+
python3 -c 'from pty import spawn; spawn(["echo", "ok"])'
+

+ Эта команда должна вывести ok. + Если вместо этого вывод содержит OSError: out of pty devices, то среда не + настроена для правильной работы PTY. Вам необходимо выйти из среды + chroot, ещё раз прочитать Раздел 7.3, + «Подготовка виртуальных файловых систем ядра» и убедиться, что + файловая система devpts (и другие + файловые системы виртуального ядра) смонтирована правильно. Затем + повторно войдите в среду chroot, следуя инструкции Раздел 7.4, «Вход в окружение + Chroot». Эту проблему необходимо решить, прежде чем вы + продолжите, иначе наборы тестов, зависимые от Expect (например, + наборы тестов Bash, Binutils, GCC, GDBM и, конечно, самого Expect), + потерпят фатальный сбой, а также могут произойти другие + незначительные сбои. +

+

+ Подготовьте Expect к компиляции: +

+
./configure --prefix=/usr           \
+            --with-tcl=/usr/lib     \
+            --enable-shared         \
+            --mandir=/usr/share/man \
+            --with-tclinclude=/usr/include
+
+

+ Значение параметров настройки: +

+
+
+ --with-tcl=/usr/lib +
+
+

+ Этот параметр необходим для указания configure где находится + скрипт tclConfig.sh. +

+
+
+ --with-tclinclude=/usr/include +
+
+

+ Этот параметр явно указывает Expect, где искать внутренние + заголовки Tcl. +

+
+
+
+

+ Соберите пакет: +

+
make
+

+ Чтобы протестировать пакет, выполните: +

+
make test
+

+ Установите пакет: +

+
make install
+ln -svf expect5.45.4/libexpect5.45.4.so /usr/lib
+
+
+

+ 8.16.2. + Содержимое пакета Expect +

+
+
+
+ Установленные программы: + expect +
+
+ Установленные библиотеки: + libexpect5.45.4.so +
+
+
+
+

+ Краткое описание +

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

+ expect +

+
+

+ Взаимодействует с другими интерактивными программами в + соответствии со сценарием +

+
+

+ libexpect-5.45.4.so +

+
+

+ Содержит функции, которые позволяют использовать Expect в + качестве расширения Tcl или непосредственно из C или C++ + (без Tcl). +

+
+
+
+
+ + + diff --git a/lfs-12.1-sysv/chapter08/file.html b/lfs-12.1-sysv/chapter08/file.html new file mode 100644 index 0000000..86ae824 --- /dev/null +++ b/lfs-12.1-sysv/chapter08/file.html @@ -0,0 +1,180 @@ + + + + + + 8.10. File-5.45 + + + + + + + + +

+ 8.10. File-5.45 +

+
+
+

+ Пакет File содержит утилиту для определения типа указанного файла + или файлов +

+
+
+
+ Приблизительное время сборки: + менее 0.1 SBU +
+
+ Требуемое дисковое + пространство: 17 MB +
+
+
+
+
+

+ 8.10.1. Установка пакета File +

+

+ Подготовьте File к компиляции: +

+
./configure --prefix=/usr
+

+ Скомпилируйте пакет: +

+
make
+

+ Чтобы протестировать пакет, выполните: +

+
make check
+

+ Установите пакет: +

+
make install
+
+
+

+ 8.10.2. Содержимое + пакета File +

+
+
+
+ Установленные программы: + file +
+
+ Установленные библиотеки: + libmagic.so +
+
+
+
+

+ Краткое описание +

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

+ file +

+
+

+ Пытается классифицировать каждый указанный файл; он + делает это, выполняя серию тестов—тесты файловой системы, + тесты магических чисел и языковые тесты. +

+
+

+ libmagic +

+
+

+ Содержит функции распознавания магических чисел + используемые программой file +

+
+
+
+
+ + + diff --git a/lfs-12.1-sysv/chapter08/findutils.html b/lfs-12.1-sysv/chapter08/findutils.html new file mode 100644 index 0000000..24e090e --- /dev/null +++ b/lfs-12.1-sysv/chapter08/findutils.html @@ -0,0 +1,238 @@ + + + + + + 8.61. Findutils-4.9.0 + + + + + + + + +

+ 8.61. + Findutils-4.9.0 +

+
+
+

+ Пакет Findutils содержит программы для поиска файлов. Эти программы + предназначены для поиска по всем файлам в дереве каталогов, а также + для создания, обслуживания и поиска в базе данных (часто быстрее, + чем рекурсивный поиск, но ненадежно, если база данных давно не + обновлялась).Findutils также предоставляет программу xargs, которую можно использовать + для запуска указанной команды для каждого файла, выбранного при + поиске. +

+
+
+
+ Приблизительное время сборки: + 0.4 SBU +
+
+ Требуемое дисковое + пространство: 51 MB +
+
+
+
+
+

+ 8.61.1. Установка пакета Findutils +

+

+ Подготовьте Findutils к компиляции: +

+
./configure --prefix=/usr --localstatedir=/var/lib/locate
+
+

+ Значение параметров настройки: +

+
+
+ --localstatedir +
+
+

+ Этот параметр перемещает базу данных команды locate в /var/lib/locate, что соответствует + расположению, совместимому со стандартом FHS. +

+
+
+
+

+ Скомпилируйте пакет: +

+
make
+

+ Чтобы протестировать пакет, выполните: +

+
chown -R tester .
+su tester -c "PATH=$PATH make check"
+

+ Установите пакет: +

+
make install
+
+
+

+ 8.61.2. + Содержимое пакета Findutils +

+
+
+
+ Installed programs: + Установленные программы +
+
+ Созданные каталоги: + /var/lib/locate +
+
+
+
+

+ Краткое описание +

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

+ find +

+
+

+ Выполняет поиск в заданных каталогах файлов, + соответствующих критериям +

+
+

+ locate +

+
+

+ Выполняет поиск по базе данных имен файлов и сообщает об + именах, которые содержат заданную строку или + соответствуют заданному шаблону. +

+
+

+ updatedb +

+
+

+ Обновляет базу данных locate; сканирует всю + файловую систему (включая другие файловые системы, + которые в настоящее время смонтированы, если не указано + иное) и записывает найденные имена файлов в базу данных +

+
+

+ xargs +

+
+

+ Может использоваться для применения заданной команды к + списку файлов +

+
+
+
+
+ + + diff --git a/lfs-12.1-sysv/chapter08/flex.html b/lfs-12.1-sysv/chapter08/flex.html new file mode 100644 index 0000000..0f1eb70 --- /dev/null +++ b/lfs-12.1-sysv/chapter08/flex.html @@ -0,0 +1,230 @@ + + + + + + 8.14. Flex-2.6.4 + + + + + + + + +

+ 8.14. Flex-2.6.4 +

+
+
+

+ Пакет Flex содержит инструмент для генерации программ, распознающих + заданные шаблоны в тексте +

+
+
+
+ Приблизительное время сборки: + 0.1 SBU +
+
+ Требуемое дисковое + пространство: 33 MB +
+
+
+
+
+

+ 8.14.1. Установка пакета Flex +

+

+ Подготовьте Flex к компиляции: +

+
./configure --prefix=/usr \
+            --docdir=/usr/share/doc/flex-2.6.4 \
+            --disable-static
+

+ Скомпилируйте пакет: +

+
make
+

+ Для тестирования пакета (около 0,5 SBU) выполните: +

+
make check
+

+ Установите пакет: +

+
make install
+

+ Некоторые программы пока не знают о flex и пытаются запустить его + предшественника - lex. Чтобы обеспечить их + работоспособность, создайте символическую ссылку lex, которая запускает + flex в режиме эмуляции lex, а также создайте + символическую ссылку на справочную страницу lex: +

+
ln -sv flex   /usr/bin/lex
+ln -sv flex.1 /usr/share/man/man1/lex.1
+
+
+

+ 8.14.2. Содержимое + пакета Flex +

+
+
+
+ Установленные программы: + flex, flex++ (ссылка на flex), и lex + (ссылка на flex) +
+
+ Установленные библиотеки: + libfl.so +
+
+ Созданные каталоги: + /usr/share/doc/flex-2.6.4 +
+
+
+
+

+ Краткое описание +

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

+ flex +

+
+

+ Инструмент для создания программ, распознающих текст по + шаблону; это позволяет гибко указывать правила поиска + паттернов, устраняя необходимость разработки + специализированной программы. +

+
+

+ flex++ +

+
+

+ Расширение flex используется для генерации кода и классов + C++. Является символической ссылкой на flex +

+
+

+ lex +

+
+

+ Символическая ссылка, запускает flex в режиме эмуляции + lex +

+
+

+ libfl +

+
+

+ Библиотека flex +

+
+
+
+
+ + + diff --git a/lfs-12.1-sysv/chapter08/flit-core.html b/lfs-12.1-sysv/chapter08/flit-core.html new file mode 100644 index 0000000..4136b9c --- /dev/null +++ b/lfs-12.1-sysv/chapter08/flit-core.html @@ -0,0 +1,196 @@ + + + + + + 8.52. Flit-Core-3.9.0 + + + + + + + + +

+ 8.52. + Flit-Core-3.9.0 +

+
+
+

+ Flit-core — это часть Flit, предназначенная для сборки дистрибутива + (инструмента для упаковки простых модулей Python). +

+
+
+
+ Приблизительное время сборки: + менее 0.1 SBU +
+
+ Требуемое дисковое + пространство: 1.6 MB +
+
+
+
+
+

+ 8.52.1. Установка пакета Flit-Core +

+

+ Соберите пакет: +

+
pip3 wheel -w dist --no-cache-dir --no-build-isolation --no-deps $PWD
+

+ Установите пакет: +

+
pip3 install --no-index --no-user --find-links dist flit_core
+
+

+ Значение параметров конфигурации и команд pip3: +

+
+
+ wheel +
+
+

+ Эта команда создает архив wheel для этого пакета. +

+
+
+ -w + dist +
+
+

+ Указывает pip поместить созданный архив в каталог + dist. +

+
+
+ --no-cache-dir +
+
+

+ Не позволяет pip копировать созданный wheel-пакет в каталог + /root/.cache/pip. +

+
+
+ install +
+
+

+ Эта команда устанавливает пакет. +

+
+
+ --no-build-isolation, --no-deps и --no-index +
+
+

+ Эти параметры предотвращают получение файлов из + онлайн-репозитория пакетов (PyPI). Если пакеты установлены в + правильном порядке, то нет необходимости загружать какие-либо + файлы; эти параметры усиливают безопасность в случае ошибки + пользователя. +

+
+
+ --find-links + dist +
+
+

+ Указывает pip искать архивы wheel в каталоге dist. +

+
+
+
+
+
+

+ 8.52.2. + Содержимое пакета Flit-Core +

+
+
+
+ Созданные каталоги: + /usr/lib/python3.12/site-packages/flit_core и + /usr/lib/python3.12/site-packages/flit_core-3.9.0.dist-info +
+
+
+
+
+ + + diff --git a/lfs-12.1-sysv/chapter08/gawk.html b/lfs-12.1-sysv/chapter08/gawk.html new file mode 100644 index 0000000..930ed58 --- /dev/null +++ b/lfs-12.1-sysv/chapter08/gawk.html @@ -0,0 +1,248 @@ + + + + + + 8.60. Gawk-5.3.0 + + + + + + + + +

+ 8.60. Gawk-5.3.0 +

+
+
+

+ Пакет Gawk содержит программы для работы с текстовыми файлами. +

+
+
+
+ Приблизительное время сборки: + 0.1 SBU +
+
+ Требуемое дисковое + пространство: 42 MB +
+
+
+
+
+

+ 8.60.1. Установка пакета Gawk +

+

+ Во-первых, отредактируйте Makefile, чтобы некоторые ненужные файлы + не были установлены +

+
sed -i 's/extras//' Makefile.in
+

+ Подготовьте Gawk к компиляции: +

+
./configure --prefix=/usr
+

+ Скомпилируйте пакет: +

+
make
+

+ Чтобы протестировать пакет, выполните: +

+
chown -R tester .
+su tester -c "PATH=$PATH make check"
+

+ Установите пакет: +

+
rm -f /usr/bin/gawk-5.3.0
+make install
+
+

+ Значение команды: +

+
+
+ rm -f + /usr/bin/gawk-5.3.0 +
+
+

+ Система сборки не будет пересоздавать жесткую ссылку + gawk-5.3.0, если она + существует. Удалите её, чтобы гарантировать, что предыдущая + жесткая ссылка, созданная в Раздел 6.9, «Gawk-5.3.0», будет + обновлена. +

+
+
+
+

+ В процессе установки уже создан awk в виде символической ссылки + на gawk, создайте + также символическую ссылку на справочную страницу: +

+
ln -sv gawk.1 /usr/share/man/man1/awk.1
+

+ По желанию, установите документацию: +

+
mkdir -pv                                   /usr/share/doc/gawk-5.3.0
+cp    -v doc/{awkforai.txt,*.{eps,pdf,jpg}} /usr/share/doc/gawk-5.3.0
+
+
+

+ 8.60.2. Содержимое + пакета Gawk +

+
+
+
+ Установленные программы: + awk (ссылка на gawk), gawk и + gawk-5.3.0 +
+
+ Установленные библиотеки: + filefuncs.so, fnmatch.so, fork.so, + inplace.so, intdiv.so, ordchr.so, readdir.so, readfile.so, + revoutput.so, revtwoway.so, rwarray.so и time.so (все в + /usr/lib/gawk) +
+
+ Созданные каталоги: + /usr/lib/gawk, /usr/libexec/awk, + /usr/share/awk и /usr/share/doc/gawk-5.3.0 +
+
+
+
+

+ Краткое описание +

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

+ awk +

+
+

+ Ссылка на gawk +

+
+

+ gawk +

+
+

+ Программа для работы с текстовыми файлами; это GNU + реализация awk +

+
+

+ gawk-5.3.0 +

+
+

+ Жесткая ссылка на gawk +

+
+
+
+
+ + + diff --git a/lfs-12.1-sysv/chapter08/gcc.html b/lfs-12.1-sysv/chapter08/gcc.html new file mode 100644 index 0000000..3f0f703 --- /dev/null +++ b/lfs-12.1-sysv/chapter08/gcc.html @@ -0,0 +1,908 @@ + + + + + + 8.28. GCC-13.2.0 + + + + + + + + +

+ 8.28. GCC-13.2.0 +

+
+
+

+ Пакет GCC содержит коллекцию компиляторов GNU, которая включает + компиляторы C и C++. +

+
+
+
+ Приблизительное время сборки: + 42 SBU (с тестами) +
+
+ Требуемое дисковое + пространство: 5.5 GB +
+
+
+
+
+

+ 8.28.1. Установка пакета GCC +

+

+ При сборке на x86_64 измените имя каталога по умолчанию для + 64-битных библиотек на «lib»: +

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

+ Документация GCC рекомендует собирать GCC в отдельном каталоге: +

+
mkdir -v build
+cd       build
+

+ Подготовьте GCC к компиляции: +

+
../configure --prefix=/usr            \
+             LD=ld                    \
+             --enable-languages=c,c++ \
+             --enable-default-pie     \
+             --enable-default-ssp     \
+             --disable-multilib       \
+             --disable-bootstrap      \
+             --disable-fixincludes    \
+             --with-system-zlib
+

+ GCC поддерживает семь различных языков программирования, но + предварительные условия для большинства из них еще не выполнены. + См. страницу + BLFS Book GCC для получения инструкций о том, как собрать все + языки, поддерживаемые GCC +

+
+

+ Значение новых параметров настройки: +

+
+
+ LD=ld +
+
+

+ Этот параметр указывает скрипту configure использовать ld, + установленный программой Binutils, собранной ранее в этой + главе, а не кросс версию, которая использовалась бы в + противном случае. +

+
+
+ --disable-fixincludes +
+
+

+ По умолчанию во время установки GCC некоторые системные + заголовки будут «исправлены» для использования с GCC. + Это не обязательно для современной системы Linux и + потенциально опасно, если пакет будет переустановлен после + установки GCC. Этот параметр не позволяет GCC «исправлять» + заголовки. +

+
+
+ --with-system-zlib +
+
+

+ Этот параметр указывает GCC ссылаться на установленную в + системе копию библиотеки Zlib, а не на собственную внутреннюю + копию. +

+
+
+
+
+ [Примечание] +

+ Примечание +

+

+ PIE (позиционно-независимые исполняемые файлы) — это двоичные + программы, которые можно загружать в любое место памяти. Без PIE + функция безопасности под названием ASLR (рандомизация размещения + адресного пространства) может применяться к общим библиотекам, но + не к самим исполняемым файлам. Включение PIE позволяет + использовать ASLR для исполняемых файлов в дополнение к общим + библиотекам и смягчает некоторые атаки, основанные на + фиксированных адресах конфиденциального кода или данных в + исполняемых файлах. +

+

+ SSP (Stack Smashing Protection - защита от разрушения стека) — + это метод, гарантирующий, что стек параметров не будет поврежден. + Повреждение стека может, например, изменить адрес возврата + подпрограммы, тем самым передав управление какому-то опасному + коду (существующему в программе или общих библиотеках или + каким-то образом внедренному злоумышленником). +

+
+

+ Скомпилируйте пакет: +

+
make
+
+ [Важно] +

+ Важно +

+

+ В этом разделе набор тестов для GCC считается важным, но занимает + много времени. Начинающим сборщикам не рекомендуется пропускать + его. Время выполнения тестов можно значительно сократить, добавив + -jx в приведенную ниже команду make + -k check, где x - количество ядер процессора в + вашей системе. +

+
+

+ Известно, что один набор тестов GCC переполняет стек по умолчанию, + поэтому увеличьте размер стека перед запуском тестов: +

+
ulimit -s 32768
+

+ Выполните тестирование под непривилегированным пользователем, но не + останавливайтесь на ошибках: +

+
chown -R tester .
+su tester -c "PATH=$PATH make -k check"
+

+ Чтобы получить сводку результатов набора тестов, выполните: +

+
../contrib/test_summary
+

+ Чтобы отфильтровать только итоговую сводку, передайте вывод через + pipe grep -A7 Summ. +

+

+ Результаты можно сравнить с результатами, размещенными на https://mirror.linuxfromscratch.ru/lfs/build-logs/12.1/ + и https://gcc.gnu.org/ml/gcc-testresults/. +

+

+ Известно, что восемь тестов gcc (из более чем 185 000): + pr56837.c и семь тестов из каталога + analyzer завершились неудачно. Также + провалился один тест libstdc++ (из более чем 15 000) — это + copy.cc. Известно, что для g++ 21 + тест (из примерно 250 000), 14 тестов «AddressSanitizer*» и 7 + тестов interception-malloc-test-1.C + завершились неудачно. Кроме того, несколько тестов из каталога + vect завершаются неудачно, если + оборудование не поддерживает AVX. +

+

+ Не всегда удается избежать неожиданных сбоев. Разработчики GCC + обычно знают об этих проблемах, но еще не решили их. Если + результаты теста не сильно отличаются от результатов по указанному + выше URL-адресу, можно продолжать. +

+

+ Установите пакет: +

+
make install
+

+ Каталог сборки GCC теперь принадлежит пользователю tester, и владелец каталога заголовочных файлов + (и его содержимого) указан неверно. Измените владельца на + пользователя и группу root: +

+
chown -v -R root:root \
+    /usr/lib/gcc/$(gcc -dumpmachine)/13.2.0/include{,-fixed}
+

+ Создайте символическую ссылку, требуемую FHS + по "историческим" причинам. +

+
ln -svr /usr/bin/cpp /usr/lib
+

+ Многие пакеты используют имя cc для вызова компилятора языка + Си. Мы уже создали cc + как символическую ссылку в GCC-Проход 2, теперь создайте + символическую ссылку на его справочную страницу: +

+
ln -sv gcc.1 /usr/share/man/man1/cc.1
+

+ Добавьте символическую ссылку совместимости, чтобы включить сборку + программ с оптимизацией времени компоновки (LTO): +

+
ln -sfv ../../libexec/gcc/$(gcc -dumpmachine)/13.2.0/liblto_plugin.so \
+        /usr/lib/bfd-plugins/
+

+ Теперь, когда наш окончательный набор инструментов готов, важно еще + раз убедиться, что компиляция и компоновка будут работать так, как + ожидалось. Мы сделаем это, выполнив проверку работоспособности: +

+
echo 'int main(){}' > dummy.c
+cc dummy.c -v -Wl,--verbose &> dummy.log
+readelf -l a.out | grep ': /lib'
+

+ Ошибок быть не должно, и вывод последней команды будет (с учетом + платформо-зависимых различий в имени динамического компоновщика): +

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

+ Теперь убедитесь, что мы настроили использование правильных + стартовых файлов: +

+
grep -E -o '/usr/lib.*/S?crt[1in].*succeeded' dummy.log
+

+ Вывод последней команды должен быть: +

+
/usr/lib/gcc/x86_64-pc-linux-gnu/13.2.0/../../../../lib/Scrt1.o succeeded
+/usr/lib/gcc/x86_64-pc-linux-gnu/13.2.0/../../../../lib/crti.o succeeded
+/usr/lib/gcc/x86_64-pc-linux-gnu/13.2.0/../../../../lib/crtn.o succeeded
+

+ В зависимости от архитектуры вашего компьютера вышеуказанные + параметры могут незначительно отличаться. Разница будет заключаться + в имени каталога после /usr/lib/gcc. + Здесь важно обратить внимание на то, что gcc нашел все три файла + crt*.o в каталоге /usr/lib. +

+

+ Убедитесь, что компилятор ищет правильные заголовочные файлы: +

+
grep -B4 '^ /usr/include' dummy.log
+

+ Эта команда должна вернуть следующий вывод: +

+
#include <...> search starts here:
+ /usr/lib/gcc/x86_64-pc-linux-gnu/13.2.0/include
+ /usr/local/include
+ /usr/lib/gcc/x86_64-pc-linux-gnu/13.2.0/include-fixed
+ /usr/include
+

+ Опять же, имя каталога может отличаться от указанного выше, в + зависимости от архитектуры вашей системы. +

+

+ Затем убедитесь, что новый компоновщик использует правильные пути + поиска: +

+
grep 'SEARCH.*/usr/lib' dummy.log |sed 's|; |\n|g'
+

+ Ссылки на пути, содержащие компоненты с '-linux-gnu', следует + игнорировать, но в противном случае вывод последней команды должен + быть таким: +

+
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");
+

+ 32-разрядная система может использовать несколько других каталогов. + Например, вот вывод с компьютера i686: +

+
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");
+

+ Затем убедитесь, что мы используем правильную libc: +

+
grep "/lib.*/libc.so.6 " dummy.log
+

+ Вывод последней команды должен быть: +

+
attempt to open /usr/lib/libc.so.6 succeeded
+

+ Убедитесь, что GCC использует правильный динамический компоновщик: +

+
grep found dummy.log
+

+ Вывод последней команды должен быть (с учетом различий в имени + динамического компоновщика, зависящих от платформы): +

+
found ld-linux-x86-64.so.2 at /usr/lib/ld-linux-x86-64.so.2
+

+ Если вывод выглядит не так, как показано выше, или вообще не + получен, значит, где-то серьезная ошибка. Изучите и повторите шаги, + чтобы выяснить, в чем проблема, и исправьте ее. Любые проблемы + должны быть решены, прежде чем вы продолжите процесс. +

+

+ Как только все заработает правильно, удалите тестовые файлы: +

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

+ Наконец, переместите файл: +

+
mkdir -pv /usr/share/gdb/auto-load/usr/lib
+mv -v /usr/lib/*gdb.py /usr/share/gdb/auto-load/usr/lib
+
+
+

+ 8.28.2. Содержимое + пакета GCC +

+
+
+
+ Установленные программы: + c++, cc (link to gcc), cpp, g++, gcc, + gcc-ar, gcc-nm, gcc-ranlib, gcov, gcov-dump, gcov-tool, и + lto-dump +
+
+ Установленные библиотеки: + libasan.{a,so}, libatomic.{a,so}, + libcc1.so, libgcc.a, libgcc_eh.a, libgcc_s.so, libgcov.a, + libgomp.{a,so}, libhwasan.{a,so}, libitm.{a,so}, + liblsan.{a,so}, liblto_plugin.so, libquadmath.{a,so}, + libssp.{a,so}, libssp_nonshared.a, libstdc++.{a,so}, + libstdc++exp.a, libstdc++fs.a, libsupc++.a, libtsan.{a,so} и + libubsan.{a,so} +
+
+ Созданные каталоги: + /usr/include/c++, /usr/lib/gcc, + /usr/libexec/gcc и /usr/share/gcc-13.2.0 +
+
+
+
+

+ Краткое описание +

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

+ c++ +

+
+

+ Компилятор С++ +

+
+

+ cc +

+
+

+ Компилятор C +

+
+

+ cpp +

+
+

+ Препроцессор C; он используется компилятором для + расширения инструкций #include, #define и подобные + директивы в исходных файлах +

+
+

+ g++ +

+
+

+ Компилятор C++ +

+
+

+ gcc +

+
+

+ Компилятор C +

+
+

+ gcc-ar +

+
+

+ Обертка над ar, добавляющая плагин + в командную строку. Эта программа используется только для + добавления "оптимизации времени компоновки" и бесполезна + с параметрами сборки по умолчанию. +

+
+

+ gcc-nm +

+
+

+ Обертка над nm, добавляющая плагин + в командную строку. Эта программа используется только для + добавления "оптимизации времени компоновки" и бесполезна + с параметрами сборки по умолчанию. +

+
+

+ gcc-ranlib +

+
+

+ Обертка над ranlib, добавляющая + плагин в командную строку. Эта программа используется + только для добавления "оптимизации времени компоновки" и + бесполезна с параметрами сборки по умолчанию. +

+
+

+ gcov +

+
+

+ Инструмент тестирования; он используется для анализа + программ, чтобы определить, где оптимизация будет иметь + наибольший эффект. +

+
+

+ gcov-dump +

+
+

+ Автономный инструмент для дампа профилей gcda and gcno +

+
+

+ gcov-tool +

+
+

+ Автономный инструмент обработки профиля gcda +

+
+

+ lto-dump +

+
+

+ Инструмент для создания дампа объектных файлов, созданных + GCC с включенным LTO. +

+
+

+ libasan +

+
+

+ Библиотека времени выполнения Address Sanitizer +

+
+

+ libatomic +

+
+

+ Встроенная библиотека времени выполнения GCC atomic +

+
+

+ libcc1 +

+
+

+ Библиотека, которая позволяет GDB использовать GCC +

+
+

+ libgcc +

+
+

+ Содержит средства поддержки времени исполнения для + gcc +

+
+

+ libgcov +

+
+

+ Эта библиотека компонуется с программой, когда в GCC + включено профилирование +

+
+

+ libgomp +

+
+

+ GNU реализация интерфейса OpenMP API мультиплатформенного + параллельного программирования для языков C/C++ и Fortran + с общим доступом к памяти +

+
+

+ libhwasan +

+
+

+ Библиотека времени выполнения Hardware-Assisted Address + Sanitizer (аппаратной очистки адресов) +

+
+

+ libitm +

+
+

+ Библиотека транзакционной памяти GNU +

+
+

+ liblsan +

+
+

+ Библиотека времени выполнения Leak Sanitizer (средств + защиты от утечек) +

+
+

+ liblto_plugin +

+
+

+ Плагин GCC LTO позволяет Binutils обрабатывать объектные + файлы, созданные GCC с включенным LTO. +

+
+

+ libquadmath +

+
+

+ API математической библиотеки GCC Quad Precision +

+
+

+ libssp +

+
+

+ Содержит подпрограммы, поддерживающие функциональность + защиты стека GCC. Обычно они не используются, потому что + Glibc также предоставляет эти подпрограммы. +

+
+

+ libstdc++ +

+
+

+ Стандартная библиотека C++ +

+
+

+ libstdc++exp +

+
+

+ Экспериментальная библиотека контрактов C++ +

+
+

+ libstdc++fs +

+
+

+ Библиотека файловой системы ISO/IEC TS 18822:2015 +

+
+

+ libsupc++ +

+
+

+ Предоставляет вспомогательные процедуры для языка + программирования C++ +

+
+

+ libtsan +

+
+

+ Библиотека времени выполнения Thread Sanitizer (средств + очистки потоков) +

+
+

+ libubsan +

+
+

+ Библиотека времени выполнения Undefined Behavior + Sanitizer (средств очистки неопределенного поведения) +

+
+
+
+
+ + + diff --git a/lfs-12.1-sysv/chapter08/gdbm.html b/lfs-12.1-sysv/chapter08/gdbm.html new file mode 100644 index 0000000..69b2e9f --- /dev/null +++ b/lfs-12.1-sysv/chapter08/gdbm.html @@ -0,0 +1,243 @@ + + + + + + 8.37. GDBM-1.23 + + + + + + + + +

+ 8.37. GDBM-1.23 +

+
+
+

+ Пакет GDBM содержит менеджер баз данных GNU. Это библиотека функций + базы данных, использующая расширяемое хеширование и работающая + аналогично стандартной СУБД UNIX. Библиотека предоставляет + примитивы для хранения пар ключ/значение, поиска и извлечения + данных по его ключу и удаления ключа вместе с его данными. +

+
+
+
+ Приблизительное время сборки: + менее 0.1 SBU +
+
+ Требуемое дисковое + пространство: 13 MB +
+
+
+
+
+

+ 8.37.1. Установка пакета GDBM +

+

+ Подготовьте GDBM к компиляции: +

+
./configure --prefix=/usr    \
+            --disable-static \
+            --enable-libgdbm-compat
+
+

+ Значение параметра configure: +

+
+
+ --enable-libgdbm-compat +
+
+

+ Этот параметр включает сборку библиотеки совместимости + libgdbm. Некоторым пакетам за пределами LFS могут + потребоваться более старые подпрограммы DBM, которые он + предоставляет. +

+
+
+
+

+ Скомпилируйте пакет: +

+
make
+

+ Чтобы протестировать пакет, выполните: +

+
make check
+

+ Установите пакет: +

+
make install
+
+
+

+ 8.37.2. Содержимое + пакета GDBM +

+
+
+
+ Установленные программы: + gdbm_dump, gdbm_load, и gdbmtool +
+
+ Установленные библиотеки: + libgdbm.so и libgdbm_compat.so +
+
+
+
+

+ Краткое описание +

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

+ gdbm_dump +

+
+

+ Сохраняет дамп базы данных GDBM в файл +

+
+

+ gdbm_load +

+
+

+ Восстанавливает базу данных GDBM из дампа. +

+
+

+ gdbmtool +

+
+

+ Проверяет и изменяет базу данных GDBM +

+
+

+ libgdbm +

+
+

+ Содержит функции для управления хэшированной базой данных +

+
+

+ libgdbm_compat +

+
+

+ Библиотека совместимости, содержащая более старые функции + DBM +

+
+
+
+
+ + + diff --git a/lfs-12.1-sysv/chapter08/gettext.html b/lfs-12.1-sysv/chapter08/gettext.html new file mode 100644 index 0000000..2ba912b --- /dev/null +++ b/lfs-12.1-sysv/chapter08/gettext.html @@ -0,0 +1,594 @@ + + + + + + 8.32. Gettext-0.22.4 + + + + + + + + +

+ 8.32. + Gettext-0.22.4 +

+
+
+

+ Пакет Gettext содержит утилиты для интернационализации и + локализации. Они позволяют компилировать программы с поддержкой NLS + (Native Language Support), позволяя им выводить сообщения на родном + языке пользователя. +

+
+
+
+ Приблизительное время сборки: + 1.4 SBU +
+
+ Требуемое дисковое + пространство: 250 MB +
+
+
+
+
+

+ 8.32.1. Установка пакета Gettext +

+

+ Подготовьте Gettext для компиляции: +

+
./configure --prefix=/usr    \
+            --disable-static \
+            --docdir=/usr/share/doc/gettext-0.22.4
+

+ Скомпилируйте пакет: +

+
make
+

+ Чтобы протестировать пакет (это занимает много времени, около 3 + SBU), выполните: +

+
make check
+

+ Установите пакет: +

+
make install
+chmod -v 0755 /usr/lib/preloadable_libintl.so
+
+
+

+ 8.32.2. + Содержимое пакета Gettext +

+
+
+
+ Установленные программы: + autopoint, envsubst, gettext, gettext.sh, + gettextize, msgattrib, msgcat, msgcmp, msgcomm, msgconv, msgen, + msgexec, msgfilter, msgfmt, msggrep, msginit, msgmerge, + msgunfmt, msguniq, ngettext, recode-sr-latin, и xgettext +
+
+ Установленные библиотеки: + libasprintf.so, libgettextlib.so, + libgettextpo.so, libgettextsrc.so, libtextstyle.so и + preloadable_libintl.so +
+
+ Созданные каталоги: + /usr/lib/gettext, + /usr/share/doc/gettext-0.22.4, /usr/share/gettext и + /usr/share/gettext-0.22.4 +
+
+
+
+

+ Краткое описание +

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

+ autopoint +

+
+

+ Копирует файлы стандартной инфраструктуры Gettext в пакет + с исходным кодом +

+
+

+ envsubst +

+
+

+ Подставляет переменные окружения в строки, используемые + командной оболочкой +

+
+

+ gettext +

+
+

+ Переводит сообщение с естественного языка на язык + пользователя, осуществляя для этого поиск уже сделанного + перевода в каталоге сообщений +

+
+

+ gettext.sh +

+
+

+ В основном служит библиотекой функций оболочки для + gettext. +

+
+

+ gettextize +

+
+

+ Копирует все стандартные файлы Gettext в указанный + каталог верхнего уровня пакета, чтобы начать его + интернационализацию. +

+
+

+ msgattrib +

+
+

+ Фильтрует сообщения каталога переводов в соответствии с + их атрибутами и управляет атрибутами +

+
+

+ msgcat +

+
+

+ Объединяет указанные файлы .po +

+
+

+ msgcmp +

+
+

+ Сравнивает два файла .po, + чтобы проверить, что оба содержат один и тот же набор + строк msgid +

+
+

+ msgcomm +

+
+

+ Находит сообщения, которые являются общими для указанных + файлов .po +

+
+

+ msgconv +

+
+

+ Преобразует каталог переводов в другую кодировку символов +

+
+

+ msgen +

+
+

+ Создает каталог переводов на английский язык +

+
+

+ msgexec +

+
+

+ Применяет команду ко всем переводам каталога переводов +

+
+

+ msgfilter +

+
+

+ Применяет фильтр ко всем переводам каталога переводов +

+
+

+ msgfmt +

+
+

+ Генерирует каталог двоичных сообщений из каталога + переводов +

+
+

+ msggrep +

+
+

+ Извлекает все сообщения каталога переводов, которые + соответствуют заданному шаблону или принадлежат + нескольким указанным исходным файлам +

+
+

+ msginit +

+
+

+ Создает новый файл .po, + инициализируя метаинформацию значениями из среды + пользователя. +

+
+

+ msgmerge +

+
+

+ Объединяет два необработанных перевода в один файл +

+
+

+ msgunfmt +

+
+

+ Декомпилирует каталог двоичных сообщений в необработанный + текст перевода +

+
+

+ msguniq +

+
+

+ Объединяет дублирующиеся переводы в каталоге переводов +

+
+

+ ngettext +

+
+

+ Отображает перевод текстового сообщения на родной язык, + грамматическая форма которого зависит от числа. +

+
+

+ recode-sr-latin +

+
+

+ Перекодирует сербский текст с кириллицы на латиницу. +

+
+

+ xgettext +

+
+

+ Извлекает переводимые строки сообщений из заданных + исходных файлов для создания первого шаблона перевода. +

+
+

+ libasprintf +

+
+

+ Определяет класс autosprintf, который делает + подпрограммы вывода в формате C пригодными для + использования в программах на C++ для использования со + строками <string> и потоками + <iostream> +

+
+

+ libgettextlib +

+
+

+ Содержит общие подпрограммы, используемые различными + программами Gettext; они не предназначены для общего + использования +

+
+

+ libgettextpo +

+
+

+ Используется для написания специализированных программ, + обрабатывающих файлы .po; + эта библиотека используется, когда стандартных + приложений, поставляемых с Gettext (таких как + msgcomm, + msgcmp, + msgattrib, + и msgen), + недостаточно. +

+
+

+ libgettextsrc +

+
+

+ Предоставляет общие подпрограммы, используемые различными + программами Gettext; они не предназначены для общего + использования +

+
+

+ libtextstyle +

+
+

+ Библиотека стилей текста +

+
+

+ preloadable_libintl +

+
+

+ Библиотека, предназначенная для использования LD_PRELOAD, + которая помогает libintl + записывать в журнал непереведённые сообщения +

+
+
+
+
+ + + diff --git a/lfs-12.1-sysv/chapter08/glibc.html b/lfs-12.1-sysv/chapter08/glibc.html new file mode 100644 index 0000000..277785f --- /dev/null +++ b/lfs-12.1-sysv/chapter08/glibc.html @@ -0,0 +1,1314 @@ + + + + + + 8.5. Glibc-2.39 + + + + + + + + +

+ 8.5. Glibc-2.39 +

+
+
+

+ Пакет Glibc содержит основную библиотеку C. Эта библиотека + предоставляет основные процедуры для выделения памяти, поиска в + каталогах, открытия и закрытия файлов, чтения и записи файлов, + обработки строк, сопоставления с образцом, арифметики и так далее +

+
+
+
+ Приблизительное время сборки: + 12 SBU +
+
+ Требуемое дисковое + пространство: 3.1 GB +
+
+
+
+
+

+ 8.5.1. Установка пакета Glibc +

+

+ Некоторые программы Glibc используют не совместимый с FHS каталог + /var/db для хранения своих данных во + время выполнения. Примените следующий патч, чтобы эти программы + хранили свои данные в каталогах, совместимых с FHS: +

+
patch -Np1 -i ../glibc-2.39-fhs-1.patch
+

+ Документация Glibc рекомендует выполнять компиляцию в отдельном + каталоге: +

+
mkdir -v build
+cd       build
+

+ Убедитесь, что утилиты ldconfig и sln будут установлены в + /usr/sbin: +

+
echo "rootsbindir=/usr/sbin" > configparms
+

+ Подготовьте Glibc к компиляции: +

+
../configure --prefix=/usr                            \
+             --disable-werror                         \
+             --enable-kernel=4.19                     \
+             --enable-stack-protector=strong          \
+             --disable-nscd                           \
+             libc_cv_slibdir=/usr/lib
+
+

+ Значение параметров настройки: +

+
+
+ --disable-werror +
+
+

+ Отключает параметр -Werror, передаваемый GCC. Это необходимо + для запуска набора тестов. +

+
+
+ --enable-kernel=4.19 +
+
+

+ Этот параметр сообщает системе сборки, что Glibc может + использоваться с ядрами старше 4.19. Это значение + используется для создание обходных путей на случай, если + системный вызов, представленный в более поздней версии, + нельзя будет использовать. +

+
+
+ --enable-stack-protector=strong +
+
+

+ Этот параметр повышает безопасность системы за счет + добавления дополнительного кода для проверки переполнения + буфера. Обратите внимание, что Glibc всегда явно + переопределяет параметры GCC по умолчанию, поэтому необходимо + всегда указывать эту опцию, несмотря на то, что мы уже + указали --enable-default-ssp для + GCC. +

+
+
+ --disable-nscd +
+
+

+ Параметр отключает сборку демона кэша службы имен, который + больше не используется. +

+
+
+ libc_cv_slibdir=/usr/lib +
+
+

+ Эта переменная устанавливает правильную библиотеку для всей + системы. Мы не хотим, чтобы использовалась lib64 +

+
+
+
+

+ Скомпилируйте пакет: +

+
make
+
+ [Важно] +

+ Важно +

+

+ В этом разделе набор тестов для Glibc считается критически + важным. Ни в коем случае не пропускайте его. +

+
+

+ Как правило, несколько тестов не проходят. Ошибки тестирования, + перечисленные ниже, можно игнорировать. +

+
make check
+

+ Вы можете увидеть, что ряд тестов завершились неудачей. Набор + тестов Glibc в некоторой степени зависит от хост-системы. Несколько + ошибок из более чем 5000 тестов можно игнорировать. Список наиболее + распространенных проблем последних версий LFS: +

+
+
    +
  • +

    + Известно, что io/tst-lchmod не работает в среде + chroot LFS. +

    +
  • +
  • +

    + Известно, что некоторые тесты, например nss/tst-nss-files-hosts-multi и + nptl/tst-thread-affinity* + завершаются неудачей из-за тайм-аута (особенно когда система + работает относительно медленно и/или набор тестов запущен в + несколько потоков). Эти тесты могут быть идентифицированы с + помощью следующей команды: +

    +
    grep "Timed out" -l $(find -name \*.out)
    +

    + Можно повторно запустить отдельный тест, увеличив таймаут с + помощью команды TIMEOUTFACTOR=<factor> make test + t=<test + name>. Например, TIMEOUTFACTOR=10 make test + t=nss/tst-nss-files-hosts-multi перезапустит + nss/tst-nss-files-hosts-multi, + увеличив начальный таймаут в 10 раз. +

    +
  • +
  • +

    + Кроме того, некоторые тесты могут завершиться неудачно при + использовании относительно старой модели процессора + (например, elf/tst-cpu-features-cpuinfo) или + версии ядра хоста (например, stdlib/tst-arc4random-thread). +

    +
  • +
+
+

+ На этапе установки Glibc будет жаловаться на отсутствие файла + /etc/ld.so.conf, хотя это безобидное + сообщение, предотвратить его появление можно с помощью команды: +

+
touch /etc/ld.so.conf
+

+ Исправьте Makefile, чтобы пропустить устаревшую проверку + работоспособности, которая завершается неудачей в современной + конфигурации Glibc: +

+
sed '/test-installation/s@$(PERL)@echo not running@' -i ../Makefile
+
+ [Важно] +

+ Важно +

+

+ При обновлении Glibc до новой минорной версии (например, с + Glibc-2.36 до Glibc-2.39) в работающей системе LFS вам необходимо + принять некоторые дополнительные меры предосторожности, чтобы + избежать поломки системы: +

+
+
    +
  • +

    + Обновление Glibc в системе LFS до версии 11.0 не + поддерживается. Пересоберите LFS, если вы используете такую + старую систему, но вам нужна более новая Glibc. +

    +
  • +
  • +

    + При обновлении системы LFS до версии 12.0 установите + Libxcrypt следуя + инструкции Раздел 8.26, + «Libxcrypt-4.4.36.». В дополнение к обычной установке + Libxcrypt, вы ДОЛЖНЫ следовать примечанию со страницы + Libxcrypt, чтобы установить libcrypt.so.1* (заменив libcrypt.so.1 из предыдущей установки + Glibc). +

    +
  • +
  • +

    + При обновлении системы LFS до версии 12.1 удалите программу + nscd: +

    +
    rm -f /usr/sbin/nscd
    +
  • +
  • +

    + Обновите ядро и перезагрузитесь, если оно старше 4.19 + (проверьте текущую версию с помощью uname -r) или, если вы + хотите обновить имеющееся ядро, выполните действия из + Раздел 10.3, «Linux-6.7.4.» +

    +
  • +
  • +

    + Обновите заголовочные файлы API ядра, если они старше 4.19 + (проверьте текущую версию с помощью cat + /usr/include/linux/version.h) или, если вы + просто хотите обновить их, следуйте Раздел 5.4, + «Заголовочные файлы Linux-6.7.4 API» (но удалив + $LFS из команды cp). +

    +
  • +
  • +

    + Выполните установку DESTDIR и + обновите общие библиотеки Glibc в системе с помощью одной + команды install: +

    +
    make DESTDIR=$PWD/dest install
    +install -vm755 dest/usr/lib/*.so.* /usr/lib
    +
  • +
+
+

+ Крайне важно строго следовать описанным выше шагам, если вы не + совсем понимаете, что делаете. Любое + неожиданное отклонение может сделать систему полностью + непригодной для использования. ВЫ ПРЕДУПРЕЖДЕНЫ. +

+

+ Затем продолжайте выполнять команды make install, sed для /usr/bin/ldd и команды для установки локалей. + Как только они будут выполнены, перезагрузите систему. +

+
+

+ Установите пакет: +

+
make install
+

+ Исправьте жестко заданный путь к исполняемому загрузчику в скрипте + ldd: +

+
sed '/RTLDLIST=/s@/usr@@g' -i /usr/bin/ldd
+

+ Затем установите локали, которые дадут возможность системе отвечать + на разных языках. Ни одна из локалей не требуется системе, но если + некоторые из них отсутствуют, то наборы тестов ряда пакетов будут + пропускать важные тестовые сценарии. +

+

+ Отдельные локали можно установить с помощью программы localedef. Например, вторая + команда localedef + приведенная ниже, объединяет определение независимой от набора + символов локали /usr/share/i18n/locales/cs_CZ с набором символов + /usr/share/i18n/charmaps/UTF-8.gz и + добавляет результат в файл /usr/lib/locale/locale-archive. Следующие + инструкции установят минимальный набор локалей, необходимый для + оптимального охвата тестов +

+
mkdir -pv /usr/lib/locale
+localedef -i C -f UTF-8 C.UTF-8
+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 ISO-8859-1 en_GB
+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_ES -f ISO-8859-15 es_ES@euro
+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 is_IS -f ISO-8859-1 is_IS
+localedef -i is_IS -f UTF-8 is_IS.UTF-8
+localedef -i it_IT -f ISO-8859-1 it_IT
+localedef -i it_IT -f ISO-8859-15 it_IT@euro
+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.SJIS 2> /dev/null || true
+localedef -i ja_JP -f UTF-8 ja_JP.UTF-8
+localedef -i nl_NL@euro -f ISO-8859-15 nl_NL@euro
+localedef -i ru_RU -f KOI8-R ru_RU.KOI8-R
+localedef -i ru_RU -f UTF-8 ru_RU.UTF-8
+localedef -i se_NO -f UTF-8 se_NO.UTF-8
+localedef -i ta_IN -f UTF-8 ta_IN.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
+localedef -i zh_TW -f UTF-8 zh_TW.UTF-8
+

+ Кроме того, установите локаль для вашей страны, языка и набора + символов. +

+

+ В качестве альтернативы, установите сразу все локали перечисленные + в файле glibc-2.39/localedata/SUPPORTED (он включает все + локали из списка выше и многие другие), выполнив команду: +

+
make localedata/install-locales
+

+ Затем используйте команду localedef для создания и + установки локалей, не перечисленных в файле glibc-2.39/localedata/SUPPORTED, когда они вам + понадобятся. Например, для некоторых тестов в этой главе + потребуются следующие две локали: +

+
localedef -i C -f UTF-8 C.UTF-8
+localedef -i ja_JP -f SHIFT_JIS ja_JP.SJIS 2> /dev/null || true
+
+ [Примечание] +

+ Примечание +

+

+ Glibc теперь использует libidn2 для разрешения + интернационализированных доменных имен. Если такая функция + необходима, то инструкцию по установке libidn2 можно найти на + странице + BLFS libidn2. +

+
+
+
+

+ 8.5.2. Настройка Glibc +

+
+

+ 8.5.2.1. Добавление nsswitch.conf +

+

+ Необходимо создать файл /etc/nsswitch.conf, потому что настроенный по + умолчанию Glibc плохо работает в сетевой среде. +

+

+ Создайте новый фай /etc/nsswitch.conf, выполнив следующие + действия: +

+
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
+
+
+

+ 8.5.2.2. Добавление данных о часовом поясе +

+

+ Установите и настройте часовой пояс следующим образом: +

+
tar -xf ../../tzdata2024a.tar.gz
+
+ZONEINFO=/usr/share/zoneinfo
+mkdir -pv $ZONEINFO/{posix,right}
+
+for tz in etcetera southamerica northamerica europe africa antarctica  \
+          asia australasia backward; 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
+
+

+ Значение команд zic: +

+
+
+ zic -L + /dev/null ... +
+
+

+ Создаёт часовые пояса posix без секунд координации. Обычно + их помещают как в zoneinfo + так и в zoneinfo/posix. + Часовые пояса POSIX должны быть прописаны в zoneinfo, иначе различные тесты будут + сообщать об ошибках. На встраиваемых системах с небольшим + диском, где часовые пояса никогда не будут обновляться, + можно сэкономить примерно 1.9 MB не используя каталог + posix, однако некоторые + приложения или наборы тестов могут вызывать сбои. +

+
+
+ zic -L + leapseconds ... +
+
+

+ Создаёт правильные часовые пояса с секундами координации. + На встраиваемых системах с небольшим диском, где часовые + пояса никогда не будут обновляться, а правильность времени + неважна, можно выиграть примерно 1.9 MB, исключив каталог + right. +

+
+
+ zic ... -p + ... +
+
+

+ Создаёт файл posixrules. + Используется New York, потому что POSIX требует, чтобы + правила перехода на летнее время соответствовали правилам + США. +

+
+
+
+

+ Один из способов определить местный часовой пояс — запустить + следующий скрипт: +

+
tzselect
+

+ После нескольких вопросов о местоположении скрипт выдаст + наименование часового пояса (например America/Edmonton). В файле + /usr/share/zoneinfo перечислены и + другие возможные часовые пояса, такие как Canada/Eastern или EST5EDT, которые не распознаются + скриптом, но могут быть использованы. +

+

+ Создайте файл /etc/localtime + выполнив: +

+
ln -sfv /usr/share/zoneinfo/<xxx> /etc/localtime
+

+ Замените <xxx> на + имя выбранного часового пояса (например, Europe/Moscow). +

+
+
+

+ 8.5.2.3. Настройка + динамического загрузчика +

+

+ По умолчанию, динамический загрузчик (/lib/ld-linux.so.2) ищет в каталоге + /usr/lib, нужные для работы + программ библиотеки. Однако, если библиотеки находятся в другом + каталоге, то его необходимо указать в файле /etc/ld.so.conf, чтобы динамический загрузчик + мог их найти. Два каталога - /usr/local/lib и /opt/lib часто используются для дополнительных + библиотек, поэтому добавьте их в пути поиска для динамического + загрузчика. +

+

+ Создайте новый файл /etc/ld.so.conf + выполнив: +

+
cat > /etc/ld.so.conf << "EOF"
+# Begin /etc/ld.so.conf
+/usr/local/lib
+/opt/lib
+
+EOF
+

+ Динамический загрузчик может выполнить поиск в каталоге и + включить содержимое найденных там файлов. Обычно такие файлы + состоят из одной строки и содержат путь к библиотеке. Чтобы + добавить эту возможность, выполните следующие команды: +

+
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
+
+
+
+

+ 8.5.3. Содержимое + пакета Glibc +

+
+
+
+ Установленные программы: + gencat, getconf, getent, iconv, + iconvconfig, ldconfig, ldd, lddlibc4, ld.so (symlink to + ld-linux-x86-64.so.2 or ld-linux.so.2), locale, localedef, + makedb, mtrace, pcprofiledump, pldd, sln, sotruss, sprof, + tzselect, xtrace, zdump и zic +
+
+ Установленные библиотеки: + ld-linux-x86-64.so.2, ld-linux.so.2, + libBrokenLocale.{a,so}, libanl.{a,so}, libc.{a,so}, + libc_nonshared.a, libc_malloc_debug.so, libdl.{a,so.2}, libg.a, + libm.{a,so}, libmcheck.a, libmemusage.so, libmvec.{a,so}, + libnsl.so.1, libnss_compat.so, libnss_dns.so, libnss_files.so, + libnss_hesiod.so, libpcprofile.so, libpthread.{a,so.0}, + libresolv.{a,so}, librt.{a,so.1}, libthread_db.so и + libutil.{a,so.1} +
+
+ Созданные каталоги: + /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/sys, /usr/lib/audit, + /usr/lib/gconv, /usr/lib/locale, /usr/libexec/getconf, + /usr/share/i18n, /usr/share/zoneinfo и /var/lib/nss_db +
+
+
+
+

+ Краткое описание +

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

+ gencat +

+
+

+ Создает каталоги сообщений +

+
+

+ getconf +

+
+

+ Отображает настройки системы для специфичных переменных + файловой системы +

+
+

+ getent +

+
+

+ Получает записи из административной базы данных +

+
+

+ iconv +

+
+

+ Выполняет преобразование набора символов +

+
+

+ iconvconfig +

+
+

+ Создает быстрозагружаемые файлы настроек модуля + iconv +

+
+

+ ldconfig +

+
+

+ Настраивает привязки времени выполнения динамического + компоновщика +

+
+

+ ldd +

+
+

+ Сообщает, какие общие библиотеки требуются каждой + программе или общей библиотеке +

+
+

+ lddlibc4 +

+
+

+ Помогает ldd работать с + объектными файлами. Он не существует на более новых + архитектурах, таких как x86_64 +

+
+

+ locale +

+
+

+ Выводит различную информацию о текущей локали +

+
+

+ localedef +

+
+

+ Компилирует спецификации локали +

+
+

+ makedb +

+
+

+ Создает простую базу данных на основе текстового ввода +

+
+

+ mtrace +

+
+

+ Читает и интерпретирует файл трассировки памяти; + отображает сводку в удобочитаемом формате +

+
+

+ pcprofiledump +

+
+

+ Создает дамп информации, генерируемой при профилировании + ПК +

+
+

+ pldd +

+
+

+ Перечисляет динамические общие объекты, используемые + запущенными процессами. +

+
+

+ sln +

+
+

+ Статически скомпонованная программа ln +

+
+

+ sotruss +

+
+

+ Отслеживает вызовы процедур общей библиотеки указанной + команды +

+
+

+ sprof +

+
+

+ Читает и отображает данные профилирования общих объектов. +

+
+

+ tzselect +

+
+

+ Запрашивает у пользователя информацию о текущем + местоположении системы и выводит описание + соответствующего часового пояса. +

+
+

+ xtrace +

+
+

+ Отслеживает выполнение программы, отображая выполняемую в + данный момент функцию +

+
+

+ zdump +

+
+

+ Выдает дамп часового пояса +

+
+

+ zic +

+
+

+ Компилятор часовых поясов +

+
+

+ ld-*.so +

+
+

+ Вспомогательная программа для исполняемых файлов общей + библиотеки +

+
+

+ libBrokenLocale +

+
+

+ Используется внутри Glibc как грубый хак для запуска + сломанных программ (например, некоторые приложения + Motif). Прочитайте комментарии в glibc-2.39/locale/broken_cur_max.c для + получения дополнительной информации +

+
+

+ libanl +

+
+

+ Библиотека-заглушка, не содержащая функций. Ранее это + была библиотека асинхронного поиска имен, функции которой + теперь находятся в libc +

+
+

+ libc +

+
+

+ Основная библиотека C +

+
+

+ libc_malloc_debug +

+
+

+ Включает проверку выделения памяти при предварительной + загрузке +

+
+

+ libdl +

+
+

+ Библиотека-заглушка, не содержащая функций. Ранее была + библиотекой интерфейса динамической компоновки, функции + которой теперь находятся в libc +

+
+

+ libg +

+
+

+ Библиотека-заглушка без функций. Раньше была библиотекой + среды выполнения для g++ +

+
+

+ libm +

+
+

+ Математическая библиотека +

+
+

+ libmvec +

+
+

+ Библиотека векторных математических вычислений, + подключаемая по мере необходимости при использовании + libm +

+
+

+ libmcheck +

+
+

+ Включает проверку выделения памяти при подключении к +

+
+

+ libmemusage +

+
+

+ Используется memusage для сбора + информации об использовании памяти программой +

+
+

+ libnsl +

+
+

+ Библиотека сетевых служб, которая в настоящее время + устарела +

+
+

+ libnss_* +

+
+

+ Модули Name Service Switch, содержащие функции для + разрешения имен хостов, имен пользователей, имен групп, + псевдонимов, служб, протоколов и т. д. Загружаются + libc в соответствии с + конфигурацией в /etc/nsswitch.conf +

+
+

+ libpcprofile +

+
+

+ Содержит функции профилирования, используемые для + отслеживания времени, потраченного процессором в + конкретных строках исходного кода +

+
+

+ libpthread +

+
+

+ Библиотека-заглушка, не содержащая функций. Ранее + содержала функции, обеспечивающие большинство + интерфейсов, заданных POSIX.1c Threads Extensions + (расширения реализации потоков) и интерфейсы семафоров, + указанных в POSIX.1b Real-time Extension (расширения + реального времени), теперь эти функции находятся в + libc +

+
+

+ libresolv +

+
+

+ Содержит функции создания, пересылки и интерпретации + пакетов, используемых на серверах доменных имен в сети + интернет +

+
+

+ librt +

+
+

+ Содержит функции, реализующие большую часть интерфейсов, + определяемых в POSIX.1b Real-time Extension (расширения + реального времени) +

+
+

+ libthread_db +

+
+

+ Содержит функции, полезные для сборки отладчиков для + многопоточных программ +

+
+

+ libutil +

+
+

+ Библиотека-заглушка, не содержащая функций. Ранее + содержал код для «стандартных» функций, используемых + во многих утилитах Unix. Эти функции теперь находятся в + libc +

+
+
+
+
+ + + diff --git a/lfs-12.1-sysv/chapter08/gmp.html b/lfs-12.1-sysv/chapter08/gmp.html new file mode 100644 index 0000000..9718745 --- /dev/null +++ b/lfs-12.1-sysv/chapter08/gmp.html @@ -0,0 +1,268 @@ + + + + + + 8.20. GMP-6.3.0 + + + + + + + + +

+ 8.20. GMP-6.3.0 +

+
+
+

+ Пакет GMP содержит математические библиотеки. Они содержат полезные + функции для арифметики с произвольной точностью. +

+
+
+
+ Приблизительное время сборки: + 0.3 SBU +
+
+ Требуемое дисковое + пространство: 54 MB +
+
+
+
+
+

+ 8.20.1. Установка пакета GMP +

+
+ [Примечание] +

+ Примечание +

+

+ Если вы выполняете сборку для 32-разрядной архитектуры x86, но + ваш процессор, способен выполнять 64-разрядный код, и вы указали в переменных окружения + CFLAGS, скрипт configure попытается + выполнить настройку для 64-разрядной системы и завершится + ошибкой. Чтобы избежать этого, необходимо вызвать команду + configure с приведенным ниже параметром +

+
ABI=32 ./configure ...
+
+
+ [Примечание] +

+ Примечание +

+

+ Настройки GMP по умолчанию собирают библиотеки, оптимизированные + для процессора хоста. Если требуются библиотеки, подходящие для + процессоров с меньшей производительностью, чем у процессора + хоста, можно собрать общие библиотеки, добавив параметр + --host=none-linux-gnu в команде + configure. +

+
+

+ Подготовьте GMP к компиляции: +

+
./configure --prefix=/usr    \
+            --enable-cxx     \
+            --disable-static \
+            --docdir=/usr/share/doc/gmp-6.3.0
+
+

+ Значение новых параметров настройки: +

+
+
+ --enable-cxx +
+
+

+ Этот параметр включает поддержку C++ +

+
+
+ --docdir=/usr/share/doc/gmp-6.3.0 +
+
+

+ Эта переменная указывает местоположение для документации. +

+
+
+
+

+ Скомпилируйте пакет и сгенерируйте HTML-документацию: +

+
make
+make html
+
+ [Важно] +

+ Важно +

+

+ Набор тестов для GMP в этом разделе считается критически важным. + Ни в коем случае не пропускайте его. +

+
+

+ Проверьте результаты: +

+
make check 2>&1 | tee gmp-check-log
+
+ [Внимание] +

+ Внимание +

+

+ Код в GMP сильно оптимизирован для процессора, на котором он + собран. Иногда код, определяющий процессор, неверно определяет + возможности системы, и в тестах или других приложениях, + использующих библиотеки gmp, возникают ошибки с сообщением + Illegal instruction. В этом + случае gmp следует переконфигурировать с параметром --host=none-linux-gnu и пересобрать. +

+
+

+ Убедитесь, что все 199 тестов в наборе пройдены. Проверьте + результат, выполнив следующую команду: +

+
awk '/# PASS:/{total+=$3} ; END{print total}' gmp-check-log
+

+ Установите пакет и его документацию: +

+
make install
+make install-html
+
+
+

+ 8.20.2. Содержимое + пакета GMP +

+
+
+
+ Установленные библиотеки: + libgmp.so и libgmpxx.so +
+
+ Созданные каталоги: + /usr/share/doc/gmp-6.3.0 +
+
+
+
+

+ Краткое описание +

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

+ libgmp +

+
+

+ Содержит точные математические функции +

+
+

+ libgmpxx +

+
+

+ Содержит точные математические функции C++ +

+
+
+
+
+ + + diff --git a/lfs-12.1-sysv/chapter08/gperf.html b/lfs-12.1-sysv/chapter08/gperf.html new file mode 100644 index 0000000..8ffce96 --- /dev/null +++ b/lfs-12.1-sysv/chapter08/gperf.html @@ -0,0 +1,163 @@ + + + + + + 8.38. Gperf-3.1 + + + + + + + + +

+ 8.38. Gperf-3.1 +

+
+
+

+ Gperf генерирует идеальную хэш-функцию из набора ключей. +

+
+
+
+ Приблизительное время сборки: + менее 0.1 SBU +
+
+ Требуемое дисковое + пространство: 6.1 MB +
+
+
+
+
+

+ 8.38.1. Установка пакета Gperf +

+

+ Подготовьте Gperf к компиляции: +

+
./configure --prefix=/usr --docdir=/usr/share/doc/gperf-3.1
+

+ Скомпилируйте пакет: +

+
make
+

+ Известно, что тесты завершаются ошибкой при одновременном + выполнении нескольких тестов (параметр -j больше 1). Для выполнения + тестов, запустите следующую команду: +

+
make -j1 check
+

+ Установите пакет: +

+
make install
+
+
+

+ 8.38.2. Содержимое + пакета Gperf +

+
+
+
+ Установленные программы: + gperf +
+
+ Созданные каталоги: + /usr/share/doc/gperf-3.1 +
+
+
+
+

+ Краткое описание +

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

+ gperf +

+
+

+ Генерирует идеальный хэш из набора ключей +

+
+
+
+
+ + + diff --git a/lfs-12.1-sysv/chapter08/grep.html b/lfs-12.1-sysv/chapter08/grep.html new file mode 100644 index 0000000..7508562 --- /dev/null +++ b/lfs-12.1-sysv/chapter08/grep.html @@ -0,0 +1,195 @@ + + + + + + 8.34. Grep-3.11 + + + + + + + + +

+ 8.34. Grep-3.11 +

+
+
+

+ Пакет Grep содержит программы для поиска по содержимому файлов. +

+
+
+
+ Приблизительное время сборки: + 0.4 SBU +
+
+ Требуемое дисковое + пространство: 39 MB +
+
+
+
+
+

+ 8.34.1. Установка пакета Grep +

+

+ Во-первых, удалите предупреждение об использовании egrep и fgrep, + которое приводит к сбою тестов некоторых пакетов: +

+
sed -i "s/echo/#echo/" src/egrep.sh
+

+ Подготовьте Grep к компиляции: +

+
./configure --prefix=/usr
+

+ Скомпилируйте пакет: +

+
make
+

+ Чтобы протестировать пакет, выполните: +

+
make check
+

+ Установите пакет: +

+
make install
+
+
+

+ 8.34.2. Содержимое + пакета Grep +

+
+
+
+ Установленные программы: + egrep, fgrep, и grep +
+
+
+
+

+ Краткое описание +

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

+ egrep +

+
+

+ Выводит строки, соответствующие расширенному регулярному + выражению. Команда устарела, вместо неё используйте + grep -E +

+
+

+ fgrep +

+
+

+ Выводит строки, соответствующие списку фиксированных + строк. Команда устарела, вместо неё используйте + grep -F +

+
+

+ grep +

+
+

+ Выводит строки, соответствующие простому регулярному + выражению +

+
+
+
+
+ + + diff --git a/lfs-12.1-sysv/chapter08/groff.html b/lfs-12.1-sysv/chapter08/groff.html new file mode 100644 index 0000000..58ef4db --- /dev/null +++ b/lfs-12.1-sysv/chapter08/groff.html @@ -0,0 +1,897 @@ + + + + + + 8.62. Groff-1.23.0 + + + + + + + + +

+ 8.62. Groff-1.23.0 +

+
+
+

+ Пакет Groff содержит программы для обработки и форматирования + текста и изображений. +

+
+
+
+ Приблизительное время сборки: + 0.2 SBU +
+
+ Требуемое дисковое + пространство: 107 MB +
+
+
+
+
+

+ 8.62.1. Установка пакета Groff +

+

+ Groff ожидает, что переменная окружения PAGE будет содержать размер бумаги по умолчанию. Для + пользователей из США подходит PAGE=letter. Для других стран больше + подойдет PAGE=A4. Хотя + формат бумаги по умолчанию настраивается во время компиляции, его + можно переопределить позже, записав «A4» или «letter» в файл + /etc/papersize. +

+

+ Подготовьте Groff к компиляции: +

+
PAGE=<paper_size> ./configure --prefix=/usr
+

+ Соберите пакет: +

+
make
+

+ Чтобы протестировать пакет, выполните: +

+
make check
+

+ Установите пакет: +

+
make install
+
+
+

+ 8.62.2. Содержимое + пакета Groff +

+
+
+
+ Установленные программы: + 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 и + troff +
+
+ Созданные каталоги: + /usr/lib/groff и + /usr/share/doc/groff-1.23.0, /usr/share/groff +
+
+
+
+

+ Краткое описание +

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

+ addftinfo +

+
+

+ Читает файл шрифта troff и добавляет некоторую + дополнительную информацию о метрике шрифта, используемую + системой groff. +

+
+

+ afmtodit +

+
+

+ Создаёт файл шрифта для использования с groff и grops +

+
+

+ chem +

+
+

+ Препроцессор Groff для создания диаграмм химических + структур +

+
+

+ eqn +

+
+

+ Компилирует описания уравнений, имеющихся внутри входных + файлов troff, которые понятны troff +

+
+

+ eqn2graph +

+
+

+ Преобразует a troff EQN (уравнение) во фрагмент + изображения +

+
+

+ gdiffmk +

+
+

+ Отображает различия между файлами groff/nroff/troff +

+
+

+ glilypond +

+
+

+ Преобразует ноты, записанные на языке lilypond в язык + groff +

+
+

+ gperl +

+
+

+ Препроцессор для groff, позволяющий вставлять код perl в + файлы groff +

+
+

+ gpinyin +

+
+

+ Препроцессор groff, позволяющий вставлять Pinyin (запись + звуков китайского языка с помощью латинского алфавита) в + файлы groff. +

+
+

+ grap2graph +

+
+

+ Преобразует диаграммы grap во фрагмент растрового + изображения (grap - это старый язык программирования Unix + для создания диаграмм) +

+
+

+ grn +

+
+

+ Препроцессор groff для файлов + gremlin +

+
+

+ grodvi +

+
+

+ Драйвер для groff, создающий + выходные файлы в формате TeX dvi +

+
+

+ groff +

+
+

+ Внешний интерфейс к системе форматирования документов + groff; обычно он запускает программу troff и постпроцессор, + соответствующий выбранному устройству +

+
+

+ groffer +

+
+

+ Отображает файлы groff и справочные страницы на + терминалах X и tty +

+
+

+ grog +

+
+

+ Читает файлы и пытается определить, какие из параметров + groff + -e, -man, -me, + -mm, -ms, -p, + -s, или -t требуются для печати файлов, и + указывает команду groff с этими + параметрами +

+
+

+ grolbp +

+
+

+ Драйвер groff для принтеров + Canon CAPSL (лазерные принтеры серий LBP-4 и LBP-8) +

+
+

+ grolj4 +

+
+

+ Драйвер для groff который выводит + результат в формате PCL5, подходящем для принтера HP + LaserJet 4 +

+
+

+ gropdf +

+
+

+ Переводит выходные данные GNU troff в формат PDF +

+
+

+ grops +

+
+

+ Переводит выходные данные GNU troff в формат + PostScript +

+
+

+ grotty +

+
+

+ Переводит вывод GNU troff в форму, + подходящую для устройств, подобных пишущим машинкам. +

+
+

+ hpftodit +

+
+

+ Создает файл шрифта для использования с groff -Tlj4 из файла + метрик шрифта для HP +

+
+

+ indxbib +

+
+

+ Создает инвертированный индекс для библиографических баз + данных для указанного файла, используемый с refer, lookbib, и lkbib +

+
+

+ lkbib +

+
+

+ Выполняет поиск в библиографических базах данных ссылок, + содержащих указанные ключи, и сообщает о любых найденных + ссылках +

+
+

+ lookbib +

+
+

+ Выводит приглашение при наличии стандартной ошибки (если + устройство стандартного ввода не является терминалом), + читает из устройства стандартного ввода строку, в которой + находится набор ключевых слов, ищет в библиографической + базе данных для указанного файла ссылки, содержащие эти + ключевые слова, выводит все ссылки, найденные в + стандартном выводе и повторяет этот процесс до тех пор, + пока не завершится входной поток +

+
+

+ mmroff +

+
+

+ Простой препроцессор для groff +

+
+

+ neqn +

+
+

+ Форматирует уравнения для их вывода в формате American + Standard Code for Information Interchange (ASCII) +

+
+

+ nroff +

+
+

+ Скрипт, который эмулирует команду nroff с помощью + groff +

+
+

+ pdfmom +

+
+

+ Это обертка над groff которая упрощает создание + PDF-документов из файлов, отформатированных с помощью + макросов mom. +

+
+

+ pdfroff +

+
+

+ Создает pdf-документы с помощью groff +

+
+

+ pfbtops +

+
+

+ Преобразует шрифт PostScript в формате .pfb в формат ASCII +

+
+

+ pic +

+
+

+ Компилирует описания изображений, вставленных во входные + файлы troff или TeX, в команды, понятные TeX или + troff +

+
+

+ pic2graph +

+
+

+ Преобразует диаграмму PIC во фрагмент изображения +

+
+

+ post-grohtml +

+
+

+ Переводит выходной поток GNU troff в HTML +

+
+

+ preconv +

+
+

+ Преобразует кодировку входных файлов в формат, понимаемый + GNU troff +

+
+

+ pre-grohtml +

+
+

+ Переводит выходной поток GNU troff в HTML +

+
+

+ refer +

+
+

+ Копирует содержимое файла в стандартный вывод, кроме тех + символов, которые расположены между .[ и .] и интерпретируются как + цитаты, и кроме строк между .R1 и .R2, которые интерпретируются + как команды, указывающие как цитаты должны быть + обработаны +

+
+

+ roff2dvi +

+
+

+ Преобразует файлы roff в формат DVI +

+
+

+ roff2html +

+
+

+ Преобразует файлы roff в формат HTML +

+
+

+ roff2pdf +

+
+

+ Преобразует файлы roff в формат PDF +

+
+

+ roff2ps +

+
+

+ Преобразует файлы roff в файлы ps +

+
+

+ roff2text +

+
+

+ Преобразует файлы roff в текстовые файлы +

+
+

+ roff2x +

+
+

+ Преобразует файлы roff в другие форматы +

+
+

+ soelim +

+
+

+ Читает файлы и заменяет строки вида .so file содержимым указанного + файла file +

+
+

+ tbl +

+
+

+ Компилирует описания таблиц, вставленные во входные файлы + troff, в команды, понимаемые troff +

+
+

+ tfmtodit +

+
+

+ Создает файл шрифта для использования с groff -Tdvi +

+
+

+ troff +

+
+

+ Полностью совместим с Unix troff; его следует + вызывать с помощью команды groff, которая также + будет запускать препроцессоры и постпроцессоры в + соответствующем порядке и с соответствующими параметрами +

+
+
+
+
+ + + diff --git a/lfs-12.1-sysv/chapter08/grub.html b/lfs-12.1-sysv/chapter08/grub.html new file mode 100644 index 0000000..f7b4bcf --- /dev/null +++ b/lfs-12.1-sysv/chapter08/grub.html @@ -0,0 +1,598 @@ + + + + + + 8.63. GRUB-2.12 + + + + + + + + +

+ 8.63. GRUB-2.12 +

+
+
+

+ Пакет GRUB содержит загрузчик операционной системы от проекта GNU + (GRand Unified Bootloader). +

+
+
+
+ Приблизительное время сборки: + 0.3 SBU +
+
+ Требуемое дисковое + пространство: 166 MB +
+
+
+
+
+

+ 8.63.1. Установка пакета GRUB +

+
+ [Примечание] +

+ Примечание +

+

+ Если ваша система поддерживает UEFI и вы хотите загрузить LFS с + UEFI, вы можете пропустить установку этого пакета в LFS и + установить GRUB с поддержкой UEFI (и его зависимости), следуя + инструкции + из BLFS. +

+
+
+ [Предупреждение] +

+ Предупреждение +

+

+ Сбросьте переменные окружения, которые могут повлиять на сборку: +

+
unset {C,CPP,CXX,LD}FLAGS
+

+ Не пытайтесь «настраивать» этот пакет с помощью + пользовательских флагов компиляции. Этот пакет является + загрузчиком. Низкоуровневые операции в исходном коде могут быть + нарушены из-за агрессивной оптимизации. +

+
+

+ Добавьте файл, отсутствующий в архиве релиза: +

+
echo depends bli part_gpt > grub-core/extra_deps.lst
+

+ Подготовьте GRUB к компиляции: +

+
./configure --prefix=/usr          \
+            --sysconfdir=/etc      \
+            --disable-efiemu       \
+            --disable-werror
+
+

+ Значение новых параметров настройки: +

+
+
+ --disable-werror +
+
+

+ Этот параметр позволяет завершить сборку с предупреждениями, + появившимися в более поздних версиях Flex. +

+
+
+ --disable-efiemu +
+
+

+ Этот параметр запрещает установку компонента, отключает + функции и некоторые программы тестирования, которые не нужны + для LFS. +

+
+
+
+

+ Скомпилируйте пакет: +

+
make
+

+ Запуск набора тестов не рекомендуется. Большинство тестов зависят + от пакетов, недоступных в ограниченной среде LFS. Если вы все равно + хотите запустить тесты, выполните make check. +

+

+ Установите пакет: +

+
make install
+mv -v /etc/bash_completion.d/grub /usr/share/bash-completion/completions
+

+ Создание загружаемой системы LFS с помощью GRUB будет обсуждаться в + Раздел 10.4, + «Использование GRUB для настройки процесса загрузки». +

+
+
+

+ 8.63.2. Содержимое + пакета GRUB +

+
+
+
+ Установленные программы: + 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 и + grub-syslinux2cfg +
+
+ Созданные каталоги: + /usr/lib/grub, /etc/grub.d, + /usr/share/grub и /boot/grub (при первом запуске + grub-install) +
+
+
+
+

+ Краткое описание +

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

+ grub-bios-setup +

+
+

+ Вспомогательная программа для grub-install +

+
+

+ grub-editenv +

+
+

+ Инструмент для редактирования блока окружения + (environment block) +

+
+

+ grub-file +

+
+

+ Проверяет, относится ли данный файл к указанному типу +

+
+

+ grub-fstest +

+
+

+ Инструмент для отладки драйвера файловой системы +

+
+

+ grub-glue-efi +

+
+

+ Объединяет 32-разрядные и 64-разрядные бинарные файлы в + один файл (для компьютеров Apple) +

+
+

+ grub-install +

+
+

+ Устанавливает GRUB на ваш диск +

+
+

+ grub-kbdcomp +

+
+

+ Скрипт, который преобразует макет xkb в макет, + распознаваемый GRUB +

+
+

+ grub-macbless +

+
+

+ Это аналог bless в стиле Mac для файловых систем HFS или + HFS+ (команда bless характерна для + компьютеров Apple; она делает устройство загрузочным) +

+
+

+ grub-menulst2cfg +

+
+

+ Преобразует GRUB Legacy menu.lst в grub.cfg для использования с GRUB 2 +

+
+

+ grub-mkconfig +

+
+

+ Генерирует файл grub.cfg +

+
+

+ grub-mkimage +

+
+

+ Создаёт загрузочный образ GRUB +

+
+

+ grub-mklayout +

+
+

+ Создаёт файл раскладки клавиатуры GRUB +

+
+

+ grub-mknetdir +

+
+

+ Подготавливает сетевой загрузочный каталог GRUB +

+
+

+ grub-mkpasswd-pbkdf2 +

+
+

+ Генерирует зашифрованный пароль PBKDF2 для использования + в меню загрузки +

+
+

+ grub-mkrelpath +

+
+

+ Создает имена системных путей относительно корня +

+
+

+ grub-mkrescue +

+
+

+ Создает загрузочный образ GRUB, подходящий для дискеты, + CDROM/DVD или USB-накопителя +

+
+

+ grub-mkstandalone +

+
+

+ Генерирует автономный образ +

+
+

+ grub-ofpathname +

+
+

+ Вспомогательная программа, которая выводит путь к + устройству GRUB +

+
+

+ grub-probe +

+
+

+ Проверяет информацию об устройстве для заданного пути или + устройства +

+
+

+ grub-reboot +

+
+

+ Устанавливает пункт меню в GRUB для загрузки по + умолчанию, только для следующей загрузки(однократно) +

+
+

+ grub-render-label +

+
+

+ Отображает .disk_label для компьютеров Apple Mac +

+
+

+ grub-script-check +

+
+

+ Проверяет скрипт настройки GRUB на наличие синтаксических + ошибок +

+
+

+ grub-set-default +

+
+

+ Устанавливает для GRUB загрузочную запись по умолчанию +

+
+

+ grub-sparc64-setup +

+
+

+ Вспомогательная программа для grub-setup +

+
+

+ grub-syslinux2cfg +

+
+

+ Преобразует файл конфигурации syslinux в формат grub.cfg +

+
+
+
+
+ + + diff --git a/lfs-12.1-sysv/chapter08/gzip.html b/lfs-12.1-sysv/chapter08/gzip.html new file mode 100644 index 0000000..5cb7b72 --- /dev/null +++ b/lfs-12.1-sysv/chapter08/gzip.html @@ -0,0 +1,365 @@ + + + + + + 8.64. Gzip-1.13 + + + + + + + + +

+ 8.64. Gzip-1.13 +

+
+
+

+ Пакет Gzip содержит программы для сжатия и распаковки файлов. +

+
+
+
+ Приблизительное время сборки: + 0.3 SBU +
+
+ Требуемое дисковое + пространство: 21 MB +
+
+
+
+
+

+ 8.64.1. Установка пакета Gzip +

+

+ Подготовьте Gzip к компиляции: +

+
./configure --prefix=/usr
+

+ Скомпилируйте пакет: +

+
make
+

+ Чтобы протестировать пакет, выполните: +

+
make check
+

+ Установите пакет: +

+
make install
+
+
+

+ 8.64.2. Содержимое + пакета Gzip +

+
+
+
+ Установленные программы: + gunzip, gzexe, gzip, uncompress (жесткая + ссылка на gunzip), zcat, zcmp, zdiff, zegrep, zfgrep, zforce, + zgrep, zless, zmore и znew +
+
+
+
+

+ Краткое описание +

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

+ gunzip +

+
+

+ Распаковывает gzip-файлы +

+
+

+ gzexe +

+
+

+ Создает самораспаковывающиеся исполняемые файлы +

+
+

+ gzip +

+
+

+ Сжимает файлы, используя алгоритм Lempel-Ziv (LZ77). +

+
+

+ uncompress +

+
+

+ Распаковывает сжатые файлы +

+
+

+ zcat +

+
+

+ Распаковывает указанные сжатые файлы в стандартный поток + вывода +

+
+

+ zcmp +

+
+

+ Запускает cmp для архивированных + файлов +

+
+

+ zdiff +

+
+

+ Запускает diff для архивированных + файлов +

+
+

+ zegrep +

+
+

+ Запускает egrep для + архивированных файлов +

+
+

+ zfgrep +

+
+

+ Запускает fgrep для + архивированных файлов +

+
+

+ zforce +

+
+

+ Принудительно устанавливает расширение .gz всем сжатым файлам, чтобы + gzip не + сжимал их снова; это может быть полезно, когда имена + файлов были обрезаны во время передачи файла +

+
+

+ zgrep +

+
+

+ Запускает grep для архивированных + файлов +

+
+

+ zless +

+
+

+ Запускает less для архивированных + файлов +

+
+

+ zmore +

+
+

+ Запускает more для архивированных + файлов +

+
+

+ znew +

+
+

+ Повторно сжимает файлы из формата compress в формат + gzip — из + .Z в .gz +

+
+
+
+
+ + + diff --git a/lfs-12.1-sysv/chapter08/iana-etc.html b/lfs-12.1-sysv/chapter08/iana-etc.html new file mode 100644 index 0000000..c342f06 --- /dev/null +++ b/lfs-12.1-sysv/chapter08/iana-etc.html @@ -0,0 +1,163 @@ + + + + + + 8.4. Iana-Etc-20240125 + + + + + + + + +

+ 8.4. + Iana-Etc-20240125 +

+
+
+

+ Пакет Iana-Etc предоставляет данные для сетевых служб и протоколов. +

+
+
+
+ Приблизительное время сборки: + менее 0.1 SBU +
+
+ Требуемое дисковое + пространство: 4.8 MB +
+
+
+
+
+

+ 8.4.1. Установка пакета Iana-Etc +

+

+ Для этого пакета необходимо лишь скопировать нужные файлы: +

+
cp services protocols /etc
+
+
+

+ 8.4.2. + Содержимое пакета Iana-Etc +

+
+
+
+ Установленные файлы: + /etc/protocols и /etc/services +
+
+
+
+

+ Краткое описание +

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

+ /etc/protocols +

+
+

+ Описывает различные интернет-протоколы DARPA, которые + доступны из подсистемы TCP/IP +

+
+

+ /etc/services +

+
+

+ Обеспечивает сопоставление понятных текстовых имен для + интернет-сервисов с назначенными им номерами портов и + типами протоколов. +

+
+
+
+
+ + + diff --git a/lfs-12.1-sysv/chapter08/inetutils.html b/lfs-12.1-sysv/chapter08/inetutils.html new file mode 100644 index 0000000..e76061a --- /dev/null +++ b/lfs-12.1-sysv/chapter08/inetutils.html @@ -0,0 +1,363 @@ + + + + + + 8.40. Inetutils-2.5 + + + + + + + + +

+ 8.40. + Inetutils-2.5 +

+
+
+

+ Пакет Inetutils содержит базовые программы для работы с сетью. +

+
+
+
+ Приблизительное время сборки: + 0.2 SBU +
+
+ Требуемое дисковое + пространство: 35 MB +
+
+
+
+
+

+ 8.40.1. Установка пакета Inetutils +

+

+ Подготовьте Inetutils к компиляции: +

+
./configure --prefix=/usr        \
+            --bindir=/usr/bin    \
+            --localstatedir=/var \
+            --disable-logger     \
+            --disable-whois      \
+            --disable-rcp        \
+            --disable-rexec      \
+            --disable-rlogin     \
+            --disable-rsh        \
+            --disable-servers
+
+

+ Значение параметров настройки: +

+
+
+ --disable-logger +
+
+

+ Параметр запрещает установку программы logger, используемой + скриптами для отправки сообщений системной службе логирования + (System Log Daemon). Не устанавливайте её, т.к. Util-linux + устанавливает более свежую версию. +

+
+
+ --disable-whois +
+
+

+ Этот параметр отключает сборку whois-клиента Inetutils, + который устарел. Инструкции для сборки более нового клиента + whois находятся + в книге BLFS. +

+
+
+ --disable-r* +
+
+

+ Отключает установку устаревших программ, которые не должны + использоваться по соображениям безопасности. Функционал этих + программы можно получить установкой пакета openssh из книги BLFS. +

+
+
+ --disable-servers +
+
+

+ Отключает установку различных сетевых серверов, входящих в + состав пакета Inetutils. Эти серверы считаются неподходящими + для базовой системы LFS. Некоторые из них небезопасны по + своей природе и считаются надежными только в доверенных + сетях. Обратите внимание, что для многих из них доступны + более качественные замены. +

+
+
+
+

+ Скомпилируйте пакет: +

+
make
+

+ Чтобы протестировать пакет, выполните:: +

+
make check
+

+ Установите пакет: +

+
make install
+

+ Переместите программу в правильное место: +

+
mv -v /usr/{,s}bin/ifconfig
+
+
+

+ 8.40.2. + Содержимое пакета Inetutils +

+
+
+
+ Установленные программы: + dnsdomainname, ftp, ifconfig, hostname, + ping, ping6, talk, telnet, tftp и traceroute +
+
+
+
+

+ Краткое описание +

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

+ dnsdomainname +

+
+

+ Показывает системное DNS имя +

+
+

+ ftp +

+
+

+ Программа для передачи файлов по протоколу FTP +

+
+

+ hostname +

+
+

+ Сообщает или задает имя хоста +

+
+

+ ifconfig +

+
+

+ Управляет сетевыми интерфейсами +

+
+

+ ping +

+
+

+ Отправляет пакеты эхо-запросов и сообщает, сколько + времени занимают ответы +

+
+

+ ping6 +

+
+

+ Версия ping + для сетей IPv6 +

+
+

+ talk +

+
+

+ Используется для общения с другими пользователями +

+
+

+ telnet +

+
+

+ Интерфейс к протоколу TELNET +

+
+

+ tftp +

+
+

+ Программа для передачи файлов по протоколу TFTP (Trivial + File Transfer Protocol — простой протокол передачи + файлов) +

+
+

+ traceroute +

+
+

+ Отслеживает маршрут, по которому проходят ваши пакеты от + хоста на которым вы работаете, к другому узлу сети, + показывая все промежуточные переходы (шлюзы) на этом + пути. +

+
+
+
+
+ + + diff --git a/lfs-12.1-sysv/chapter08/intltool.html b/lfs-12.1-sysv/chapter08/intltool.html new file mode 100644 index 0000000..7b3c06a --- /dev/null +++ b/lfs-12.1-sysv/chapter08/intltool.html @@ -0,0 +1,245 @@ + + + + + + 8.44. Intltool-0.51.0 + + + + + + + + +

+ 8.44. + Intltool-0.51.0 +

+
+
+

+ Intltool — это инструмент интернационализации, используемый для + извлечения переводимых строк из исходных файлов. +

+
+
+
+ Приблизительное время сборки: + менее 0.1 SBU +
+
+ Требуемое дисковое + пространство: 1.5 MB +
+
+
+
+
+

+ 8.44.1. Установка пакета Intltool +

+

+ Сначала исправьте предупреждение, вызываемое perl-5.22 и более + поздними версиями: +

+
sed -i 's:\\\${:\\\$\\{:' intltool-update.in
+
+ [Примечание] +

+ Примечание +

+

+ Приведенное выше регулярное выражение выглядит необычно из-за + множества слэшей. Что оно делает, так это добавляет обратную + косую черту перед правой фигурной скобкой в последовательности + '\${' в результате чего получается '\$\{'. +

+
+

+ Подготовьте Intltool к компиляции: +

+
./configure --prefix=/usr
+

+ Скомпилируйте пакет: +

+
make
+

+ Чтобы протестировать пакет, выполните: +

+
make check
+

+ Установите пакет: +

+
make install
+install -v -Dm644 doc/I18N-HOWTO /usr/share/doc/intltool-0.51.0/I18N-HOWTO
+
+
+

+ 8.44.2. + Содержимое пакета Intltool +

+
+
+
+ Установленные программы: + intltool-extract, intltool-merge, + intltool-prepare, intltool-update и intltoolize +
+
+ Созданные каталоги: + /usr/share/doc/intltool-0.51.0 и + /usr/share/intltool +
+
+
+
+

+ Краткое описание +

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

+ intltoolize +

+
+

+ Подготавливает пакет для использования intltool +

+
+

+ intltool-extract +

+
+

+ Генерирует заголовочные файлы, которые могут быть + прочитаны с помощью gettext +

+
+

+ intltool-merge +

+
+

+ Объединяет переведенные строки в файлы различных типов +

+
+

+ intltool-prepare +

+
+

+ Обновляет файлы pot и объединяет их с файлами перевода +

+
+

+ intltool-update +

+
+

+ Обновляет файлы шаблонов po и объединяет их с переводами +

+
+
+
+
+ + + diff --git a/lfs-12.1-sysv/chapter08/introduction.html b/lfs-12.1-sysv/chapter08/introduction.html new file mode 100644 index 0000000..475fb1f --- /dev/null +++ b/lfs-12.1-sysv/chapter08/introduction.html @@ -0,0 +1,174 @@ + + + + + + 8.1. Введение + + + + + + + + +

+ 8.1. + Введение +

+
+

+ В этой главе мы приступаем к сборке конечной системы LFS. +

+

+ Установка программного обеспечения проста. Хотя во многих случаях + инструкции по установке можно было бы сделать короче и универсальнее, + мы решили предоставить полные инструкции для каждого пакета, чтобы + свести к минимуму вероятность ошибок. Ключом к пониманию того, что + заставляет систему Linux работать, является знание того, для чего + используется каждый пакет и зачем он вам (или системе) может + понадобиться. +

+

+ Мы не рекомендуем использовать оптимизации. С ними программа может + работать немного быстрее, но также они могут вызвать сложности при + компиляции и проблемы при запуске программы. Если пакет не + компилируется при использовании оптимизации, попробуйте + скомпилировать его без оптимизации и посмотрите, решает ли это + проблему. Даже если пакет компилируется при использовании + оптимизации, существует риск, что он может быть скомпилирован + неправильно из-за сложных взаимодействий между кодом и инструментами + сборки. Также обратите внимание, что параметры -march и -mtune, не + тестировались со значениями отличными от указанных в книге. Это может + вызвать проблемы с пакетами набора инструментов (Binutils, GCC и + Glibc). Небольшие потенциальные плюсы, достигаемые за счет + оптимизации, часто перевешиваются рисками. Тем кто собирает LFS + впервые рекомендуется делать это без пользовательских оптимизаций. +

+

+ С другой стороны, мы сохраняем оптимизацию включенной в конфигурации + пакетов по умолчанию. Кроме того, иногда мы явно включаем + оптимизированную конфигурацию, предоставляемую пакетом, но не + включенную по умолчанию. Сопровождающие пакета уже протестировали эти + конфигурации и считают их безопасными, поэтому маловероятно, что они + сломают сборку. Как правило, конфигурация по умолчанию уже включает + параметры -O2 или -O3, поэтому результирующая система по-прежнему будет + работать очень быстро без какой-либо пользовательской оптимизации и в + то же время будет стабильной. +

+

+ Перед инструкцией по установке на каждой странице представлена + информация о пакете, включая краткое описание того, что он содержит, + примерное время, необходимое для сборки, и сколько места на диске + требуется в процессе сборки. После инструкции по установке идет + список программ и библиотек (вместе с кратким описанием), которые + устанавливает пакет. +

+
+ [Примечание] +

+ Примечание +

+

+ Для всех пакетов в Глава 8 + значения SBU и требуемое дисковое пространство указано с учетом + тестов. Значения SBU были рассчитаны с использованием четырех ядер + ЦП (-j4) для всех операций, если не указано иное. +

+
+
+

+ 8.1.1. О библиотеках +

+

+ Как правило, редакторы LFS не рекомендуют собирать и устанавливать + статические библиотеки. Большинство статических библиотек устарели + в современной системе Linux. Кроме того, линковка статической + библиотеки с программой может быть вредна. Если для устранения + проблемы безопасности требуется обновление библиотеки, все + программы, использующие статическую библиотеку, необходимо будет + повторно перелинковать с новой библиотекой. Поскольку использование + статических библиотек не всегда очевидно, соответствующие программы + (и процедуры, необходимые для линковки) могут быть даже неизвестны. +

+

+ В инструкциях этой главы мы удаляем или отключаем установку + большинства статических библиотек. Обычно это делается путем + передачи параметра --disable-static при + выполнении configure. + Иногда необходимо использовать альтернативные методы. В некоторых + случаях, в частности в пакетах Glibc и GCC, использование + статических библиотек остается важным элементом процесса сборки + пакетов. +

+

+ Более подробное обсуждение библиотек смотрите + Библиотеки: статические или общие? в книге BLFS. +

+
+
+ + + diff --git a/lfs-12.1-sysv/chapter08/iproute2.html b/lfs-12.1-sysv/chapter08/iproute2.html new file mode 100644 index 0000000..ab83f37 --- /dev/null +++ b/lfs-12.1-sysv/chapter08/iproute2.html @@ -0,0 +1,432 @@ + + + + + + 8.65. IPRoute2-6.7.0 + + + + + + + + +

+ 8.65. + IPRoute2-6.7.0 +

+
+
+

+ Пакет IPRoute2 содержит набор программ для базового и расширенного + администрирования сетей IPv4. +

+
+
+
+ Приблизительное время сборки: + 0.1 SBU +
+
+ Требуемое дисковое + пространство: 17 MB +
+
+
+
+
+

+ 8.65.1. Установка пакета IPRoute2 +

+

+ Программа arpd, + входящая в этот пакет, не будет собрана, поскольку зависит от + Berkeley DB, которая не установлена в LFS. Однако каталог и + справочная страница для arpd все равно будут установлены. + Предотвратить это можно, выполнив приведенные ниже команды. +

+
sed -i /ARPD/d Makefile
+rm -fv man/man8/arpd.8
+

+ Скомпилируйте пакет: +

+
make NETNS_RUN_DIR=/run/netns
+

+ Этот пакет не содержит рабочего набора тестов. +

+

+ Установите пакет: +

+
make SBINDIR=/usr/sbin install
+

+ По желанию, установите документацию: +

+
mkdir -pv             /usr/share/doc/iproute2-6.7.0
+cp -v COPYING README* /usr/share/doc/iproute2-6.7.0
+
+
+

+ 8.65.2. + Содержимое пакета IPRoute2 +

+
+
+
+ Установленные программы: + bridge, ctstat (ссылка на lnstat), genl, + ifstat, ip, lnstat, nstat, routel, rtacct, rtmon, rtpr, rtstat + (ссылка на lnstat), ss и tc +
+
+ Созданные каталоги: + /etc/iproute2, /usr/lib/tc и + /usr/share/doc/iproute2-6.7.0 +
+
+
+
+

+ Краткое описание +

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

+ bridge +

+
+

+ Настраивает сетевые мосты +

+
+

+ ctstat +

+
+

+ Утилита состояния подключения +

+
+

+ genl +

+
+

+ Универсальный интерфейс утилиты netlink +

+
+

+ ifstat +

+
+

+ Показывает статистику интерфейса, включая количество + переданных и полученных пакетов по интерфейсам. +

+
+

+ ip +

+
+

+ Основной исполняемый файл. Он имеет несколько различных + функций, в том числе эти: +

+

+ ip link <device> + позволяет пользователям просматривать состояние устройств + и вносить изменения +

+

+ ip addr + позволяет пользователям просматривать адреса и их + свойства, добавлять новые адреса и удалять старые +

+

+ ip neighbor + позволяет пользователям просматривать связи с соседями и + их свойства, добавлять новые записи и удалять старые +

+

+ ip rule + позволяет пользователям просматривать политики + маршрутизации и изменять их +

+

+ ip route + позволяет пользователям просматривать таблицу + маршрутизации и изменять правила таблицы маршрутизации +

+

+ ip tunnel + позволяет пользователям просматривать IP-туннели и их + свойства, а также изменять их +

+

+ ip maddr + позволяет пользователям просматривать multicast адреса и + их свойства и изменять их +

+

+ ip mroute + позволяет пользователям устанавливать, изменять или + удалять multicast маршрутизацию. +

+

+ ip monitor + позволяет пользователям постоянно отслеживать состояние + устройств, адресов и маршрутов +

+
+

+ lnstat +

+
+

+ Предоставляет сетевую статистику Linux; это обобщенная и + более полнофункциональная замена старой программы + rtstat +

+
+

+ nstat +

+
+

+ Отображает сетевую статистику +

+
+

+ routel +

+
+

+ Компонент ip + route для просмотра таблиц маршрутизации +

+
+

+ rtacct +

+
+

+ Отображает содержимое /proc/net/rt_acct +

+
+

+ rtmon +

+
+

+ Мониторит изменения таблицы маршрутизации +

+
+

+ rtpr +

+
+

+ Преобразует вывод ip + -o в удобочитаемую форму +

+
+

+ rtstat +

+
+

+ Утилита состояния маршрута +

+
+

+ ss +

+
+

+ Аналогично команде netstat показывает + активные соединения +

+
+

+ tc +

+
+

+ Управление трафиком для реализаций качества обслуживания + (QoS) и класса обслуживания (CoS) +

+

+ tc qdisc + позволяет пользователям настроить дисциплину обработки + очередей +

+

+ tc class + позволяет пользователям настраивать классы, на основе + планирования дисциплины обработки очередей +

+

+ tc filter + позволяет пользователям настроить фильтрацию пакетов + QOS/COS +

+

+ tc monitor + может использоваться для просмотра изменений, внесенных в + управление трафиком в ядре +

+
+
+
+
+ + + diff --git a/lfs-12.1-sysv/chapter08/jinja2.html b/lfs-12.1-sysv/chapter08/jinja2.html new file mode 100644 index 0000000..3617df8 --- /dev/null +++ b/lfs-12.1-sysv/chapter08/jinja2.html @@ -0,0 +1,128 @@ + + + + + + 8.74. Jinja2-3.1.3 + + + + + + + + +

+ 8.74. Jinja2-3.1.3 +

+
+
+

+ Jinja2 - это модуль Python, который реализует простой язык шаблонов + pythonic +

+
+
+
+ Приблизительное время сборки: + менее 0.1 SBU +
+
+ Требуемое дисковое + пространство: 3.2 MB +
+
+
+
+
+

+ 8.74.1. Установка пакета Jinja2 +

+

+ Соберите пакет: +

+
pip3 wheel -w dist --no-cache-dir --no-build-isolation --no-deps $PWD
+

+ Установите пакет: +

+
pip3 install --no-index --no-user --find-links dist Jinja2
+
+
+

+ 8.74.2. + Содержимое пакета Jinja2 +

+
+
+
+ Созданные каталоги: + /usr/lib/python3.12/site-packages/Jinja2-3.1.3.dist-info +
+
+
+
+
+ + + diff --git a/lfs-12.1-sysv/chapter08/kbd.html b/lfs-12.1-sysv/chapter08/kbd.html new file mode 100644 index 0000000..e296395 --- /dev/null +++ b/lfs-12.1-sysv/chapter08/kbd.html @@ -0,0 +1,586 @@ + + + + + + 8.66. Kbd-2.6.4 + + + + + + + + +

+ 8.66. Kbd-2.6.4 +

+
+
+

+ Пакет Kbd содержит файлы таблиц клавиш, консольные шрифты и утилиты + клавиатуры. +

+
+
+
+ Приблизительное время сборки: + 0.1 SBU +
+
+ Требуемое дисковое + пространство: 34 MB +
+
+
+
+
+

+ 8.66.1. Установка пакета Kbd +

+

+ Поведение клавиш backspace и delete не согласуется между + раскладками в пакете Kbd. Следующий патч исправляет эту проблему + для раскладок i386: +

+
patch -Np1 -i ../kbd-2.6.4-backspace-1.patch
+

+ После исправления клавиша backspace генерирует символ с кодом 127, + а клавиша delete генерирует хорошо известную + escape-последовательность. +

+

+ Удалите ненужную программу resizecons (она требуется + несуществующей svgalib для предоставления файлов видеорежима — для + нормального использования setfont, который правильно + определяет размеры консоли) вместе с ее справочной страницей. +

+
sed -i '/RESIZECONS_PROGS=/s/yes/no/' configure
+sed -i 's/resizecons.8 //' docs/man/man8/Makefile.in
+

+ Подготовьте Kbd для компиляции: +

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

+ Значение параметра configure: +

+
+
+ --disable-vlock +
+
+

+ Этот параметр предотвращает сборку утилиты vlock, поскольку + для неё требуется библиотека PAM, которая недоступна в среде + chroot. +

+
+
+
+

+ Скомпилируйте пакет: +

+
make
+

+ Чтобы протестировать пакет, выполните: +

+
make check
+

+ Установите пакет: +

+
make install
+
+ [Примечание] +

+ Примечание +

+

+ Для некоторых языков (например белорусского) пакет Kbd не + предоставляет подходящую раскладку, штатная раскладка + «by» + предполагает кодировку ISO-8859-5, а обычно используется + раскладка CP1251. Пользователи таких языков должны отдельно + загрузить рабочую раскладку. +

+
+

+ По желанию, установите документацию:: +

+
cp -R -v docs/doc -T /usr/share/doc/kbd-2.6.4
+
+
+

+ 8.66.2. Содержимое + пакета Kbd +

+
+
+
+ Установленные программы: + chvt, deallocvt, dumpkeys, fgconsole, + getkeycodes, kbdinfo, kbd_mode, kbdrate, loadkeys, loadunimap, + mapscrn, openvt, psfaddtable (ссылка на psfxtable), psfgettable + (ссылка на psfxtable), psfstriptable (ссылка на psfxtable), + psfxtable, setfont, setkeycodes, setleds, setmetamode, + setvtrgb, showconsolefont, showkey, unicode_start и + unicode_stop +
+
+ Созданные каталоги: + /usr/share/consolefonts, + /usr/share/consoletrans, /usr/share/keymaps, + /usr/share/doc/kbd-2.6.4 и /usr/share/unimaps +
+
+
+
+

+ Краткое описание +

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

+ chvt +

+
+

+ Изменяет используемый виртуальный терминал +

+
+

+ deallocvt +

+
+

+ Освобождает неиспользуемые виртуальные терминалы +

+
+

+ dumpkeys +

+
+

+ Создает дамп таблиц перевода клавиатуры +

+
+

+ fgconsole +

+
+

+ Выводит номер активного виртуального терминала +

+
+

+ getkeycodes +

+
+

+ Выводит таблицу ядра соответствия сканкода и кода клавиши +

+
+

+ kbdinfo +

+
+

+ Получает информацию о состоянии консоли +

+
+

+ kbd_mode +

+
+

+ Выводит или устанавливает режим клавиатуры +

+
+

+ kbdrate +

+
+

+ Устанавливает частоту повторных нажатий клавиш и задержки + клавиатуры +

+
+

+ loadkeys +

+
+

+ Загружает таблицу преобразования клавиатуры +

+
+

+ loadunimap +

+
+

+ Загружает таблицу ядра отображения символов юникода +

+
+

+ mapscrn +

+
+

+ Устаревшая программа, которая использовалась для загрузки + определяемой пользователем таблицы соответствия выводимых + символов в драйвер консоли; теперь эту функцию выполняет + setfont +

+
+

+ openvt +

+
+

+ Запускает программу на новом виртуальном терминале (VT) +

+
+

+ psfaddtable +

+
+

+ Добавляет таблицу символов Unicode в консольный шрифт. +

+
+

+ psfgettable +

+
+

+ Извлекает встроенную таблицу символов Unicode из + консольного шрифта. +

+
+

+ psfstriptable +

+
+

+ Удаляет встроенную таблицу символов Unicode из + консольного шрифта. +

+
+

+ psfxtable +

+
+

+ Обрабатывает таблицы символов Unicode для консольных + шрифтов. +

+
+

+ setfont +

+
+

+ Изменяет шрифты Enhanced Graphic Adapter (EGA) и Video + Graphics Array (VGA), используемые в консоли +

+
+

+ setkeycodes +

+
+

+ Загружает таблицу соответствия сканкодов ядра и кодов + клавиш; это удобно, если на клавиатуре есть нестандартные + клавиши +

+
+

+ setleds +

+
+

+ Устанавливает значения флагов клавиатуры и индикаторов + (обычно - светодиоды) +

+
+

+ setmetamode +

+
+

+ Определяет обработку метаклавиши на клавиатуре (обычно, + это клавиша Win) +

+
+

+ setvtrgb +

+
+

+ Устанавливает цветовую схему консоли для всех виртуальных + терминалов +

+
+

+ showconsolefont +

+
+

+ Показывает текущий шрифт экрана консоли EGA/VGA +

+
+

+ showkey +

+
+

+ Показывает сканкоды, код клавиши и код ASCII для клавиш, + нажатых на клавиатуре +

+
+

+ unicode_start +

+
+

+ Переводит клавиатуру и консоль в режим UNICODE. [Не + используйте эту программу, если вы не используете файл + раскладки для кодировки ISO-8859-1. Для других кодировок + эта утилита выдает неправильные результаты]. +

+
+

+ unicode_stop +

+
+

+ Возвращает клавиатуру и консоль из режима UNICODE +

+
+
+
+
+ + + diff --git a/lfs-12.1-sysv/chapter08/kmod.html b/lfs-12.1-sysv/chapter08/kmod.html new file mode 100644 index 0000000..8590a93 --- /dev/null +++ b/lfs-12.1-sysv/chapter08/kmod.html @@ -0,0 +1,315 @@ + + + + + + 8.48. Kmod-31 + + + + + + + + +

+ 8.48. Kmod-31 +

+
+
+

+ Пакет Kmod содержит библиотеки и утилиты для загрузки модулей ядра. +

+
+
+
+ Приблизительное время сборки: + менее 0.1 SBU +
+
+ Требуемое дисковое + пространство: 12 MB +
+
+
+
+
+

+ 8.48.1. Установка пакета Kmod +

+

+ Подготовьте Kmod к компиляции: +

+
./configure --prefix=/usr          \
+            --sysconfdir=/etc      \
+            --with-openssl         \
+            --with-xz              \
+            --with-zstd            \
+            --with-zlib
+
+

+ Значение параметров настройки: +

+
+
+ --with-openssl +
+
+

+ Этот параметр позволяет Kmod обрабатывать сигнатуры PKCS7 для + модулей ядра. +

+
+
+ --with-xz, --with-zlib, и --with-zstd +
+
+

+ Эти параметры позволяют Kmod обрабатывать сжатые модули ядра. +

+
+
+
+

+ Скомпилируйте пакет: +

+
make
+

+ Набору тестов этого пакета необходимы необработанные заголовочные + файлы ядра (а не «очищенные», установленных ранее), это выходит + за рамки LFS. +

+

+ Установите пакет и создайте символические ссылки для совместимости + с Module-Init-Tools (пакетом, который ранее обрабатывал модули ядра + Linux): +

+
make install
+
+for target in depmod insmod modinfo modprobe rmmod; do
+  ln -sfv ../bin/kmod /usr/sbin/$target
+done
+
+ln -sfv kmod /usr/bin/lsmod
+
+
+

+ 8.48.2. Содержимое + пакета Kmod +

+
+
+
+ Установленные программы: + depmod (ссылка на kmod), insmod (ссылка + на kmod), kmod, lsmod (ссылка на kmod), modinfo (ссылка на + kmod), modprobe (ссылка на kmod) и rmmod (ссылка на + kmod) +
+
+ Установленные библиотеки: + libkmod.so +
+
+
+
+

+ Краткое описание +

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

+ depmod +

+
+

+ Создает файл зависимостей на основе символов найденных в + существующем наборе модулей; этот файл используется + программой modprobe для + автоматической загрузки необходимых модулей +

+
+

+ insmod +

+
+

+ Устанавливает загружаемый модуль в работающее ядро +

+
+

+ kmod +

+
+

+ Загружает и выгружает модули ядра +

+
+

+ lsmod +

+
+

+ Список загруженных в данный момент модулей +

+
+

+ modinfo +

+
+

+ Проверяет объектный файл, связанный с модулем ядра, и + отображает всю информацию, которую он смог собрать. +

+
+

+ modprobe +

+
+

+ Использует файл зависимостей, созданный depmod, для + автоматической загрузки соответствующих модулей +

+
+

+ rmmod +

+
+

+ Выгружает модули из работающего ядра +

+
+

+ libkmod +

+
+

+ Библиотека используемая другими программами для загрузки + и выгрузки модулей ядра +

+
+
+
+
+ + + diff --git a/lfs-12.1-sysv/chapter08/less.html b/lfs-12.1-sysv/chapter08/less.html new file mode 100644 index 0000000..6518582 --- /dev/null +++ b/lfs-12.1-sysv/chapter08/less.html @@ -0,0 +1,209 @@ + + + + + + 8.41. Less-643 + + + + + + + + +

+ 8.41. Less-643 +

+
+
+

+ Пакет Less содержит средство просмотра текстовых файлов +

+
+
+
+ Приблизительное время сборки: + менее 0.1 SBU +
+
+ Требуемое дисковое + пространство: 12 MB +
+
+
+
+
+

+ 8.41.1. Установка пакета Less +

+

+ Подготовьте Less к компиляции: +

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

+ Значение параметров настройки: +

+
+
+ --sysconfdir=/etc +
+
+

+ Этот параметр указывает программам, созданным пакетом, искать + файлы конфигурации в /etc. +

+
+
+
+

+ Скомпилируйте пакет: +

+
make
+

+ Чтобы протестировать пакет, выполните: +

+
make check
+

+ Установите пакет: +

+
make install
+
+
+

+ 8.41.2. Содержимое + пакета Less +

+
+
+
+ Установленные программы: + less, lessecho и lesskey +
+
+
+
+

+ Краткое описание +

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

+ less +

+
+

+ Просмотрщик файлов; отображает содержимое данного файла, + позволяя пользователю прокручивать файл, искать строки и + переходить к меткам +

+
+

+ lessecho +

+
+

+ Требуется для расширения метасимволов, таких как + * и ?, в именах файлов в системах + Unix +

+
+

+ lesskey +

+
+

+ Используется для привязки клавиш в программе less +

+
+
+
+
+ + + diff --git a/lfs-12.1-sysv/chapter08/libcap.html b/lfs-12.1-sysv/chapter08/libcap.html new file mode 100644 index 0000000..6cbb111 --- /dev/null +++ b/lfs-12.1-sysv/chapter08/libcap.html @@ -0,0 +1,258 @@ + + + + + + 8.25. Libcap-2.69 + + + + + + + + +

+ 8.25. Libcap-2.69 +

+
+
+

+ Пакет Libcap реализует интерфейсы пользовательского пространства + для возможностей POSIX 1003.1e, доступных в ядрах Linux. Эти + возможности разделяют полномочия суперпользователя root на набор + отдельных привилегий. +

+
+
+
+ Приблизительное время сборки: + менее 0.1 SBU +
+
+ Требуемое дисковое + пространство: 2.9 MB +
+
+
+
+
+

+ 8.25.1. Установка пакета Libcap +

+

+ Запретите установку статических библиотек: +

+
sed -i '/install -m.*STA/d' libcap/Makefile
+

+ Скомпилируйте пакет: +

+
make prefix=/usr lib=lib
+
+

+ Значение опции make: +

+
+
+ lib=lib +
+
+

+ Этот параметр устанавливает библиотеки в каталог /usr/lib, а не /usr/lib64 на x86_64. На x86 это никак не + влияет. +

+
+
+
+

+ Чтобы протестировать пакет, выполните: +

+
make test
+

+ Установите пакет: +

+
make prefix=/usr lib=lib install
+
+
+

+ 8.25.2. + Содержимое пакета Libcap +

+
+
+
+ Установленные программы: + capsh, getcap, getpcaps и setcap +
+
+ Установленные библиотеки: + libcap.so и libpsx.so +
+
+
+
+

+ Краткое описание +

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

+ capsh +

+
+

+ Обёртка к оболочке для исследования и ограничения + поддержки возможностей Linux +

+
+

+ getcap +

+
+

+ Проверяет возможности файлов +

+
+

+ getpcaps +

+
+

+ Отображает возможности запрашиваемого процесса + (процессов) +

+
+

+ setcap +

+
+

+ Устанавливает возможности файлов +

+
+

+ libcap +

+
+

+ Содержит функции для управления возможностями POSIX + 1003.1e. +

+
+

+ libpsx +

+
+

+ Содержит функции для поддержки семантики POSIX для + системных вызовов, связанных с библиотекой pthread +

+
+
+
+
+ + + diff --git a/lfs-12.1-sysv/chapter08/libelf.html b/lfs-12.1-sysv/chapter08/libelf.html new file mode 100644 index 0000000..df49966 --- /dev/null +++ b/lfs-12.1-sysv/chapter08/libelf.html @@ -0,0 +1,169 @@ + + + + + + 8.49. Libelf из Elfutils-0.190 + + + + + + + + +

+ 8.49. Libelf из + Elfutils-0.190 +

+
+
+

+ Libelf — это библиотека для обработки файлов ELF (Executable and + Linkable Format - формат исполняемых и связываемых файлов). +

+
+
+
+ Приблизительное время сборки: + 0.3 SBU +
+
+ Требуемое дисковое + пространство: 124 MB +
+
+
+
+
+

+ 8.49.1. Установка пакета Libelf +

+

+ Libelf является частью пакета elfutils-0.190. Используйте + elfutils-0.190.tar.bz2 в качестве исходного архива. +

+

+ Подготовьте Libelf к компиляции: +

+
./configure --prefix=/usr                \
+            --disable-debuginfod         \
+            --enable-libdebuginfod=dummy
+

+ Скомпилируйте пакет: +

+
make
+

+ Чтобы протестировать пакет, выполните: +

+
make check
+

+ Установите только Libelf: +

+
make -C libelf install
+install -vm644 config/libelf.pc /usr/lib/pkgconfig
+rm /usr/lib/libelf.a
+
+
+

+ 8.49.2. + Содержимое пакета Libelf +

+
+
+
+ Установленные библиотеки: + libelf.so +
+
+ Созданные каталоги: + /usr/include/elfutils +
+
+
+
+

+ Краткое описание +

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

+ libelf.so +

+
+

+ Содержит функции API для обработки объектных файлов ELF +

+
+
+
+
+ + + diff --git a/lfs-12.1-sysv/chapter08/libffi.html b/lfs-12.1-sysv/chapter08/libffi.html new file mode 100644 index 0000000..0c3c825 --- /dev/null +++ b/lfs-12.1-sysv/chapter08/libffi.html @@ -0,0 +1,210 @@ + + + + + + 8.50. Libffi-3.4.4 + + + + + + + + +

+ 8.50. Libffi-3.4.4 +

+
+
+

+ Библиотека Libffi предоставляет переносимый высокоуровневый + программный интерфейс для различных соглашений о вызовах. Это + позволяет программисту вызывать любую функцию, указанную в описании + интерфейса вызова во время выполнения. +

+

+ FFI расшифровывается как интерфейс внешних функций. FFI позволяет + программе, написанной на одном языке, вызывать программу, + написанную на другом языке. В частности, Libffi может обеспечить + связь между интерпретатором, таким как Perl или Python, и + подпрограммами общей библиотеки, написанными на C или C++. +

+
+
+
+ Приблизительное время сборки: + 1.8 SBU +
+
+ Требуемое дисковое + пространство: 11 MB +
+
+
+
+
+

+ 8.50.1. Установка пакета Libffi +

+
+ [Примечание] +

+ Примечание +

+

+ Как и GMP, Libffi собирается с учетом оптимизаций, специфичных + для используемого процессора. При сборке для другой системы + измените значение параметра --with-gcc-arch= в следующей + команде на имя архитектуры, полностью реализованной процессором в + этой системе. Если этого не сделать, все приложения, ссылающиеся + на libffi, будут вызывать ошибку + «Illegal Operation - + недопустимая операция». +

+
+

+ Подготовьте Libffi к компиляции: +

+
./configure --prefix=/usr          \
+            --disable-static       \
+            --with-gcc-arch=native
+
+

+ Значение параметров configure: +

+
+
+ --with-gcc-arch=native +
+
+

+ Убедитесь, что GCC оптимизируется для текущей системы. Если + значение не указано, то архитектура системы угадывается и + сгенерированный код может быть неправильным. Если + сгенерированный код будет скопирован из родной системы в + менее мощную, используйте архитектуру менее мощной системы в + качестве параметра. Дополнительные сведения об альтернативных + типах систем смотрите в + описании параметров x86 в руководстве GCC. +

+
+
+
+

+ Скомпилируйте пакет: +

+
make
+

+ Чтобы протестировать пакет, выполните: +

+
make check
+

+ Установите пакет: +

+
make install
+
+
+

+ 8.50.2. + Содержимое пакета Libffi +

+
+
+
+ Установленные библиотеки: + libffi.so +
+
+
+
+

+ Краткое описание +

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

+ libffi +

+
+

+ Содержит внешний интерфейс для API-функций +

+
+
+
+
+ + + diff --git a/lfs-12.1-sysv/chapter08/libpipeline.html b/lfs-12.1-sysv/chapter08/libpipeline.html new file mode 100644 index 0000000..4d5de75 --- /dev/null +++ b/lfs-12.1-sysv/chapter08/libpipeline.html @@ -0,0 +1,158 @@ + + + + + + 8.67. Libpipeline-1.5.7 + + + + + + + + +

+ 8.67. + Libpipeline-1.5.7 +

+
+
+

+ Пакет Libpipeline содержит библиотеку для гибкого и удобного + управления подпроцессами. +

+
+
+
+ Приблизительное время сборки: + 0.1 SBU +
+
+ Требуемое дисковое + пространство: 10 MB +
+
+
+
+
+

+ 8.67.1. Установка пакета Libpipeline +

+

+ Подготовьте Libpipeline к компиляции: +

+
./configure --prefix=/usr
+

+ Скомпилируйте пакет: +

+
make
+

+ Чтобы протестировать пакет, выполните: +

+
make check
+

+ Установите пакет: +

+
make install
+
+
+

+ 8.67.2. Содержимое пакета Libpipeline +

+
+
+
+ Установленные библиотеки: + libpipeline.so +
+
+
+
+

+ Краткое описание +

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

+ libpipeline +

+
+

+ Эта библиотека используется для безопасного построения + конвейеров между подпроцессами. +

+
+
+
+
+ + + diff --git a/lfs-12.1-sysv/chapter08/libtool.html b/lfs-12.1-sysv/chapter08/libtool.html new file mode 100644 index 0000000..2a15fe0 --- /dev/null +++ b/lfs-12.1-sysv/chapter08/libtool.html @@ -0,0 +1,211 @@ + + + + + + 8.36. Libtool-2.4.7 + + + + + + + + +

+ 8.36. + Libtool-2.4.7 +

+
+
+

+ Пакет Libtool содержит сценарий поддержки универсальной библиотеки + GNU. Это упрощает использование общих библиотек благодаря + согласованному переносимому интерфейсу. +

+
+
+
+ Приблизительное время сборки: + 0.6 SBU +
+
+ Требуемое дисковое + пространство: 45 MB +
+
+
+
+
+

+ 8.36.1. Установка пакета Libtool +

+

+ Подготовьте Libtool к компиляции: +

+
./configure --prefix=/usr
+

+ Скомпилируйте пакет: +

+
make
+

+ Чтобы протестировать пакет, выполните: +

+
make -k check
+

+ Известно, что пять тестов в среде сборки LFS завершаются неудачно + из-за циклической зависимости, но эти тесты проходят успешно, если + запустить их повторно после установки automake. Кроме того, в + grep-3.8 или более поздней версии два теста вызовут предупреждение + для регулярных выражений, несовместимых с POSIX и завершатся + ошибкой. +

+

+ Установите пакет: +

+
make install
+

+ Удалите ненужную статическую библиотеку: +

+
rm -fv /usr/lib/libltdl.a
+
+
+

+ 8.36.2. + Содержимое пакета Libtool +

+
+
+
+ Установленные программы: + libtool и libtoolize +
+
+ Установленные библиотеки: + libltdl.so +
+
+ Созданные каталоги: + /usr/include/libltdl и + /usr/share/libtool +
+
+
+
+

+ Краткое описание +

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

+ libtool +

+
+

+ Обеспечивает общие услуги поддержки при сборке библиотек +

+
+

+ libtoolize +

+
+

+ Предоставляет стандартный способ добавления поддержки + libtool в + пакет +

+
+

+ libltdl +

+
+

+ Скрывает различные проблемы, связанные с открытием + динамически загружаемых библиотек +

+
+
+
+
+ + + diff --git a/lfs-12.1-sysv/chapter08/libxcrypt.html b/lfs-12.1-sysv/chapter08/libxcrypt.html new file mode 100644 index 0000000..1241823 --- /dev/null +++ b/lfs-12.1-sysv/chapter08/libxcrypt.html @@ -0,0 +1,225 @@ + + + + + + 8.26. Libxcrypt-4.4.36 + + + + + + + + +

+ 8.26. + Libxcrypt-4.4.36 +

+
+
+

+ Пакет Libxcrypt содержит современную библиотеку для одностороннего + хэширования паролей. +

+
+
+
+ Приблизительное время сборки: + 0.1 SBU +
+
+ Требуемое дисковое + пространство: 15 MB +
+
+
+
+
+

+ 8.26.1. Установка пакета Libxcrypt +

+

+ Подготовьте Libxcrypt к компиляции: +

+
./configure --prefix=/usr                \
+            --enable-hashes=strong,glibc \
+            --enable-obsolete-api=no     \
+            --disable-static             \
+            --disable-failure-tokens
+
+

+ Значение новых параметров настройки: +

+
+
+ --enable-hashes=strong,glibc +
+
+

+ Создает хэши, используя надежные алгоритмы хэширования, + рекомендуемые для безопасности, и алгоритмы хэширования, + предоставляемые традиционной библиотекой Glibc libcrypt для совместимости. +

+
+
+ --enable-obsolete-api=no +
+
+

+ Отключает устаревшие функции API. Они не нужны для + современной системы Linux, собранной из исходного кода. +

+
+
+ --disable-failure-tokens +
+
+

+ Отключает признак токена сбоя. Он необходим для совместимости + с традиционными хэш-библиотеками некоторых платформ, но + система Linux, основанная на Glibc, в нем не нуждается. +

+
+
+
+

+ Скомпилируйте пакет: +

+
make
+

+ Чтобы протестировать пакет, выполните: +

+
make check
+

+ Установите пакет: +

+
make install
+
+ [Примечание] +

+ Примечание +

+

+ С помощью приведенных выше инструкций были отключены устаревшие + функции API, поскольку ни один пакет, установленный путем + компиляции из исходных кодов, не будет связываться с ними во + время выполнения. Однако известные двоичные приложения, которые + используют эти функции, требуют ABI версии 1. Если вам необходим + этот функционал для какого-либо приложения, предоставляемого + только в бинарном виде, или для совместимости с LSB, соберите + пакет заново с помощью следующих команд: +

+
make distclean
+./configure --prefix=/usr                \
+            --enable-hashes=strong,glibc \
+            --enable-obsolete-api=glibc  \
+            --disable-static             \
+            --disable-failure-tokens
+make
+cp -av --remove-destination .libs/libcrypt.so.1* /usr/lib
+
+
+
+

+ 8.26.2. + Содержимое пакета Libxcrypt +

+
+
+
+ Установленные библиотеки: + libcrypt.so +
+
+
+
+

+ Краткое описание +

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

+ libcrypt +

+
+

+ Содержит функции для хэширования паролей +

+
+
+
+
+ + + diff --git a/lfs-12.1-sysv/chapter08/m4.html b/lfs-12.1-sysv/chapter08/m4.html new file mode 100644 index 0000000..c845fd3 --- /dev/null +++ b/lfs-12.1-sysv/chapter08/m4.html @@ -0,0 +1,168 @@ + + + + + + 8.12. M4-1.4.19 + + + + + + + + +

+ 8.12. M4-1.4.19 +

+
+
+

+ Пакет M4 содержит макропроцессор. +

+
+
+
+ Приблизительное время сборки: + 0.3 SBU +
+
+ Требуемое дисковое + пространство: 49 MB +
+
+
+
+
+

+ 8.12.1. Установка пакета M4 +

+

+ Подготовьте M4 к компиляции: +

+
./configure --prefix=/usr
+

+ Скомпилируйте пакет: +

+
make
+

+ Чтобы протестировать пакет, выполните: +

+
make check
+

+ Установите пакет: +

+
make install
+
+
+

+ 8.12.2. Содержимое + пакета M4 +

+
+
+
+ Установленные программы: + m4 +
+
+
+
+

+ Краткое описание +

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

+ m4 +

+
+

+ Копирует указанные файлы, одновременно расширяя + содержащиеся в них макросы. Эти макросы являются либо + встроенными, либо определяемыми пользователем и могут + принимать любое количество аргументов. Помимо выполнения + макросов, m4 имеет встроенные + функции для включения указанных файлов, выполнения команд + Unix, выполнения целочисленной арифметики, + манипулирования текстом, рекурсии и т.д. Программа + m4 может + использоваться либо как интерфейс к компилятору, либо как + самостоятельный макропроцессор +

+
+
+
+
+ + + diff --git a/lfs-12.1-sysv/chapter08/make.html b/lfs-12.1-sysv/chapter08/make.html new file mode 100644 index 0000000..b3a537d --- /dev/null +++ b/lfs-12.1-sysv/chapter08/make.html @@ -0,0 +1,161 @@ + + + + + + 8.68. Make-4.4.1 + + + + + + + + +

+ 8.68. Make-4.4.1 +

+
+
+

+ Пакет Make содержит программу, управляющую генерацией исполняемых и + других файлов, из исходного кода. +

+
+
+
+ Приблизительное время сборки: + 0.5 SBU +
+
+ Требуемое дисковое + пространство: 13 MB +
+
+
+
+
+

+ 8.68.1. Установка пакета Make +

+

+ Подготовьте Make к компиляции: +

+
./configure --prefix=/usr
+

+ Скомпилируйте пакет: +

+
make
+

+ Чтобы протестировать пакет, выполните: +

+
chown -R tester .
+su tester -c "PATH=$PATH make check"
+

+ Установите пакет: +

+
make install
+
+
+

+ 8.68.2. Содержимое + пакета Make +

+
+
+
+ Установленные программы: + make +
+
+
+
+

+ Краткое описание +

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

+ make +

+
+

+ Автоматически определяет, какие части пакета необходимо + (пере)компилировать и запускает соответствующие команды. +

+
+
+
+
+ + + diff --git a/lfs-12.1-sysv/chapter08/man-db.html b/lfs-12.1-sysv/chapter08/man-db.html new file mode 100644 index 0000000..09d54d7 --- /dev/null +++ b/lfs-12.1-sysv/chapter08/man-db.html @@ -0,0 +1,761 @@ + + + + + + 8.76. Man-DB-2.12.0 + + + + + + + + +

+ 8.76. + Man-DB-2.12.0 +

+
+
+

+ Пакет Man-DB содержит программы для поиска и просмотра справочных + страниц. +

+
+
+
+ Приблизительное время сборки: + 0.2 SBU +
+
+ Требуемое дисковое + пространство: 41 MB +
+
+
+
+
+

+ 8.76.1. Установка пакета Man-DB +

+

+ Подготовьте Man-DB к компиляции: +

+
./configure --prefix=/usr                         \
+            --docdir=/usr/share/doc/man-db-2.12.0 \
+            --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=
+
+

+ Значение параметров настройки: +

+
+
+ --disable-setuid +
+
+

+ Отключает установку setuid пользователю man при сборке программы man. +

+
+
+ --enable-cache-owner=bin +
+
+

+ Изменяет владельца файлов общесистемного кэша на пользователя + bin. +

+
+
+ --with-... +
+
+

+ Эти три аргумента используются для настройки программ по + умолчанию. lynx + текстовый веб-браузер (см. инструкции по установке в книге + BLFS), vgrind + преобразует исходные коды программ во входные данные Groff, + grap удобен для + набора графов в документах Groff. Программы vgrind и grap обычно не нужны для + просмотра справочных страниц. Они не входят в состав книг LFS + или BLFS, но вы можете установить их самостоятельно после + сборки LFS. +

+
+
+ --with-systemd... +
+
+

+ Эти параметры предотвращают установку ненужных каталогов и + файлов systemd. +

+
+
+
+

+ Скомпилируйте пакет: +

+
make
+

+ Чтобы протестировать пакет, выполните: +

+
make check
+

+ Установите пакет: +

+
make install
+
+
+

+ 8.76.2. Не англоязычные страницы руководств в LFS +

+

+ В следующей таблице приведены наборы символов, в которых могут быть + закодированы страницы руководств пакета Man-DB, устанавливаемые в + директории /usr/share/man/<ll>. + Кроме этого, Man-DB правильно определяет, имеют ли справочные + страницы, установленные в этом каталоге, кодировку UTF-8. +

+
+ +

+ Таблица 8.1. Допустимые кодировки старых 8-битных страниц + руководств +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Язык (код) + + Кодировка + + Язык (код) + + Кодировка +
+ Датский (da) + + ISO-8859-1 + + Хорватский (hr) + + ISO-8859-2 +
+ Немецкий (de) + + ISO-8859-1 + + Венгерский (hu) + + ISO-8859-2 +
+ Английский (en) + + ISO-8859-1 + + Японский (ja) + + EUC-JP +
+ Испанский (es) + + ISO-8859-1 + + Корейский (ko) + + EUC-KR +
+ Эстонский (et) + + ISO-8859-1 + + Литовский (lt) + + ISO-8859-13 +
+ Финский (fi) + + ISO-8859-1 + + Латышский (lv) + + ISO-8859-13 +
+ Французский (fr) + + ISO-8859-1 + + Македонский (mk) + + ISO-8859-5 +
+ Ирландский (ga) + + ISO-8859-1 + + Польский (pl) + + ISO-8859-2 +
+ Галисийский (gl) + + ISO-8859-1 + + Румынский (ro) + + ISO-8859-2 +
+ Индонезийский (id) + + ISO-8859-1 + + Русский (ru) + + KOI8-R +
+ Исландский (is) + + ISO-8859-1 + + Словацкий (sk) + + ISO-8859-2 +
+ Итальянский (it) + + ISO-8859-1 + + Словенский (sl) + + ISO-8859-2 +
+ Норвежский букмол (nb) + + ISO-8859-1 + + Сербский латинский (sr@latin) + + ISO-8859-2 +
+ Голландский (nl) + + ISO-8859-1 + + Сербский (sr) + + ISO-8859-5 +
+ Норвежский нюнорск (nn) + + ISO-8859-1 + + Турецкий (tr) + + ISO-8859-9 +
+ Норвежский (no) + + ISO-8859-1 + + Украинский (uk) + + KOI8-U +
+ Португальский (pt) + + ISO-8859-1 + + Вьетнамский (vi) + + TCVN5712-1 +
+ Шведский (sv) + + ISO-8859-1 + + Упрощенный китайский (zh_CN) + + GBK +
+ Белорусский (be) + + CP1251 + + Упрощенный китайский, Сингапур (zh_SG) + + GBK +
+ Болгарский (bg) + + CP1251 + + Традиционный китайский, Гонконг (zh_HK) + + BIG5HKSCS +
+ Чешский (cs) + + ISO-8859-2 + + Традиционный китайский (zh_TW) + + BIG5 +
+ Греческий (el) + + ISO-8859-7 + +   + +   +
+
+

+
+ [Примечание] +

+ Примечание +

+

+ Страницы руководств на языках, которые не указаны в списке, не + поддерживаются. +

+
+
+
+

+ 8.76.3. + Содержимое пакета Man-DB +

+
+
+
+ Установленные программы: + accessdb, apropos (ссылка на whatis), + catman, lexgrog, man, man-recode, mandb, manpath, и + whatis +
+
+ Установленные библиотеки: + libman.so и libmandb.so (обе в + /usr/lib/man-db) +
+
+ Созданные каталоги: + /usr/lib/man-db, /usr/libexec/man-db и + /usr/share/doc/man-db-2.12.0 +
+
+
+
+

+ Краткое описание +

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

+ accessdb +

+
+

+ Выводит содержимое базы данных whatis в удобочитаемой + форме. +

+
+

+ apropos +

+
+

+ Выполняет поиск в базе данных whatis и отображает + краткое описание системных команд, содержащих заданную + строку +

+
+

+ catman +

+
+

+ Создает или обновляет предварительно отформатированные + страницы руководств +

+
+

+ lexgrog +

+
+

+ Отображает однострочную сводную информацию о данной + странице руководства +

+
+

+ man +

+
+

+ Форматирует и отображает запрошенную страницу руководства +

+
+

+ man-recode +

+
+

+ Преобразует страницы руководства в другую кодировку +

+
+

+ mandb +

+
+

+ Создает или обновляет базу данных whatis +

+
+

+ manpath +

+
+

+ Отображает содержимое переменной $MANPATH или (если + переменная $MANPATH не установлена) соответствующий путь + поиска, определяемый в настройках man.conf и в + пользовательском окружении +

+
+

+ whatis +

+
+

+ Выполняет поиск в базе данных whatis и отображает + краткие описания системных команд, в которых в описании + ключей указано искомое слово +

+
+

+ libman +

+
+

+ Включает поддержку man во время выполнения +

+
+

+ libmandb +

+
+

+ Включает поддержку man во время выполнения +

+
+
+
+
+ + + diff --git a/lfs-12.1-sysv/chapter08/man-pages.html b/lfs-12.1-sysv/chapter08/man-pages.html new file mode 100644 index 0000000..e51ddfe --- /dev/null +++ b/lfs-12.1-sysv/chapter08/man-pages.html @@ -0,0 +1,156 @@ + + + + + + 8.3. Man-pages-6.06 + + + + + + + + +

+ 8.3. + Man-pages-6.06 +

+
+
+

+ Пакет Man-pages содержит более 2400 справочных руководств. +

+
+
+
+ Приблизительное время сборки: + менее 0.1 SBU +
+
+ Требуемое дисковое + пространство: 33 MB +
+
+
+
+
+

+ 8.3.1. Установка пакета Man-pages +

+

+ Удалите две справочные страницы для функций хэширования паролей. + Libxcrypt предоставит улучшенную + версию этих справочных страниц: +

+
rm -v man3/crypt*
+

+ Установите пакет Man-pages выполнив команду: +

+
make prefix=/usr install
+
+
+

+ 8.3.2. + Содержимое пакета Man-pages +

+
+
+
+ Установленные файлы: + различные справочные страницы +
+
+
+
+

+ Краткое описание +

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

+ man pages +

+
+

+ Описывают функции языка программирования C, важные файлы + устройств и важные файлы конфигурации. +

+
+
+
+
+ + + diff --git a/lfs-12.1-sysv/chapter08/markupsafe.html b/lfs-12.1-sysv/chapter08/markupsafe.html new file mode 100644 index 0000000..a615f73 --- /dev/null +++ b/lfs-12.1-sysv/chapter08/markupsafe.html @@ -0,0 +1,128 @@ + + + + + + 8.73. MarkupSafe-2.1.5 + + + + + + + + +

+ 8.73. + MarkupSafe-2.1.5 +

+
+
+

+ MarkupSafe — это модуль Python, реализующий безопасное + использование строк в языках разметки XML/HTML/XHTML +

+
+
+
+ Приблизительное время сборки: + менее 0.1 SBU +
+
+ Требуемое дисковое + пространство: 508 KB +
+
+
+
+
+

+ 8.73.1. Установка пакета MarkupSafe +

+

+ Скомпилируйте MarkupSafe с помощью следующей команды: +

+
pip3 wheel -w dist --no-cache-dir --no-build-isolation --no-deps $PWD
+

+ С этим пакетом не поставляется тестов. +

+

+ Установите пакет: +

+
pip3 install --no-index --no-user --find-links dist Markupsafe
+
+
+

+ 8.73.2. + Содержимое пакета MarkupSafe +

+
+
+
+ Созданные каталоги: + /usr/lib/python3.12/site-packages/MarkupSafe-2.1.5.dist-info +
+
+
+
+
+ + + diff --git a/lfs-12.1-sysv/chapter08/meson.html b/lfs-12.1-sysv/chapter08/meson.html new file mode 100644 index 0000000..fcba2c8 --- /dev/null +++ b/lfs-12.1-sysv/chapter08/meson.html @@ -0,0 +1,192 @@ + + + + + + 8.56. Meson-1.3.2 + + + + + + + + +

+ 8.56. Meson-1.3.2 +

+
+
+

+ Meson — это система сборки с открытым исходным кодом, разработанная + таким образом, чтобы быть очень быстрой и максимально удобной для + пользователя. +

+
+
+
+ Приблизительное время сборки: + менее 0.1 SBU +
+
+ Требуемое дисковое + пространство: 42 MB +
+
+
+
+
+

+ 8.56.1. Установка пакета Meson +

+

+ Скомпилируйте Meson с помощью следующей команды: +

+
pip3 wheel -w dist --no-cache-dir --no-build-isolation --no-deps $PWD
+

+ Для набора тестов требуются некоторые пакеты, выходящие за рамки + LFS. +

+

+ Установите пакет: +

+
pip3 install --no-index --find-links dist meson
+install -vDm644 data/shell-completions/bash/meson /usr/share/bash-completion/completions/meson
+install -vDm644 data/shell-completions/zsh/_meson /usr/share/zsh/site-functions/_meson
+
+

+ Значение параметров установки: +

+
+
+ -w + dist +
+
+

+ Помещает собранный wheels в каталог dist. +

+
+
+ --find-links + dist +
+
+

+ Устанавливает wheels из каталога dist. +

+
+
+
+
+
+

+ 8.56.2. Содержимое + пакета Meson +

+
+
+
+ Установленные программы: + meson +
+
+ Созданные каталоги: + /usr/lib/python3.12/site-packages/meson-1.3.2.dist-info + и /usr/lib/python3.12/site-packages/mesonbuild +
+
+
+
+

+ Краткое описание +

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

+ meson +

+
+

+ Высокопроизводительная система сборки +

+
+
+
+
+ + + diff --git a/lfs-12.1-sysv/chapter08/mpc.html b/lfs-12.1-sysv/chapter08/mpc.html new file mode 100644 index 0000000..19cd64b --- /dev/null +++ b/lfs-12.1-sysv/chapter08/mpc.html @@ -0,0 +1,164 @@ + + + + + + 8.22. MPC-1.3.1 + + + + + + + + +

+ 8.22. MPC-1.3.1 +

+
+
+

+ Пакет MPC содержит библиотеку для арифметики комплексных чисел с + высокой точностью и правильным округлением результата. +

+
+
+
+ Приблизительное время сборки: + 0.1 SBU +
+
+ Требуемое дисковое + пространство: 22 MB +
+
+
+
+
+

+ 8.22.1. Установка пакета MPC +

+

+ Подготовьте MPC к компиляции: +

+
./configure --prefix=/usr    \
+            --disable-static \
+            --docdir=/usr/share/doc/mpc-1.3.1
+

+ Скомпилируйте пакет и сгенерируйте HTML-документацию: +

+
make
+make html
+

+ Чтобы протестировать пакет, выполните: +

+
make check
+

+ Установите пакет и документацию к нему: +

+
make install
+make install-html
+
+
+

+ 8.22.2. Содержимое + пакета MPC +

+
+
+
+ Установленные библиотеки: + libmpc.so +
+
+ Созданные каталоги: + /usr/share/doc/mpc-1.3.1 +
+
+
+
+

+ Краткое описание +

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

+ libmpc +

+
+

+ Содержит сложные математические функции +

+
+
+
+
+ + + diff --git a/lfs-12.1-sysv/chapter08/mpfr.html b/lfs-12.1-sysv/chapter08/mpfr.html new file mode 100644 index 0000000..42abb97 --- /dev/null +++ b/lfs-12.1-sysv/chapter08/mpfr.html @@ -0,0 +1,175 @@ + + + + + + 8.21. MPFR-4.2.1 + + + + + + + + +

+ 8.21. MPFR-4.2.1 +

+
+
+

+ Пакет MPFR содержит функции для двоичных вычислений с плавающей + запятой произвольной точности. +

+
+
+
+ Приблизительное время сборки: + 0.3 SBU +
+
+ Требуемое дисковое + пространство: 44 MB +
+
+
+
+
+

+ 8.21.1. Установка пакета MPFR +

+

+ Подготовьте MPFR к компиляции: +

+
./configure --prefix=/usr        \
+            --disable-static     \
+            --enable-thread-safe \
+            --docdir=/usr/share/doc/mpfr-4.2.1
+

+ Скомпилируйте пакет и сгенерируйте HTML-документацию: +

+
make
+make html
+
+ [Важно] +

+ Важно +

+

+ Набор тестов для MPFR в этом разделе считается критически важным. + Ни в коем случае не пропускайте его. +

+
+

+ Выполните тестирование и убедитесь, что все 198 тестов пройдены: +

+
make check
+

+ Установите пакет и документацию к нему: +

+
make install
+make install-html
+
+
+

+ 8.21.2. Содержимое + пакета MPFR +

+
+
+
+ Установленные библиотеки: + libmpfr.so +
+
+ Созданные каталоги: + /usr/share/doc/mpfr-4.2.1 +
+
+
+
+

+ Краткое описание +

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

+ libmpfr +

+
+

+ Содержит математические функции с произвольной точностью +

+
+
+
+
+ + + diff --git a/lfs-12.1-sysv/chapter08/ncurses.html b/lfs-12.1-sysv/chapter08/ncurses.html new file mode 100644 index 0000000..359af24 --- /dev/null +++ b/lfs-12.1-sysv/chapter08/ncurses.html @@ -0,0 +1,548 @@ + + + + + + 8.29. Ncurses-6.4-20230520 + + + + + + + + +

+ 8.29. + Ncurses-6.4-20230520 +

+
+
+

+ Пакет Ncurses содержит библиотеки для независимой от терминала + обработки ввода/вывода +

+
+
+
+ Приблизительное время сборки: + 0.2 SBU +
+
+ Требуемое дисковое + пространство: 45 MB +
+
+
+
+
+

+ 8.29.1. Установка пакета Ncurses +

+

+ Подготовьте Ncurses к компиляции: +

+
./configure --prefix=/usr           \
+            --mandir=/usr/share/man \
+            --with-shared           \
+            --without-debug         \
+            --without-normal        \
+            --with-cxx-shared       \
+            --enable-pc-files       \
+            --enable-widec          \
+            --with-pkg-config-libdir=/usr/lib/pkgconfig
+
+

+ Значение новых параметров настройки: +

+
+
+ --with-shared +
+
+

+ Этот параметр позволяет Ncurses собирать и устанавливать + общие библиотеки C. +

+
+
+ --without-normal +
+
+

+ Этот параметр отключает сборку и установку большинства + статических библиотек C. +

+
+
+ --without-debug +
+
+

+ Этот параметр предотвращает сборку и установку отладочных + библиотек. +

+
+
+ --with-cxx-shared +
+
+

+ Это аргумент позволяет Ncurses собирать и устанавливать общие + привязки C++. А также предотвращает сборку и установку + статических привязок C++. +

+
+
+ --enable-pc-files +
+
+

+ Этот параметр генерирует и устанавливает файлы .pc для + pkg-config. +

+
+
+ --enable-widec +
+
+

+ Этот параметр указывает, что при сборке пакета вместо обычных + библиотек (например, libncurses.so.6.4) будут использоваться + библиотеки с расширенным набором символов (например, + libncursesw.so.6.4). Библиотеки + с расширенным набором символов могут использоваться как с + многобайтовыми локалями, так и с традиционными 8-битовыми + локалями, тогда как обычные библиотеки работают только с + 8-битовыми локалями. Библиотеки с расширенным набором + символов и обычные библиотеки совместимы на уровне исходного + кода, но не совместимыми на уровне двоичного. +

+
+
+
+

+ Скомпилируйте пакет: +

+
make
+

+ У этого пакета есть набор тестов, но его можно запустить только + после того, как пакет будет установлен. Тесты находятся в каталоге + test/. Дополнительные сведения + смотрите в файле README в этом + каталоге. +

+

+ Установка этого пакета приведет к перезаписи libncursesw.so.6.4. Это может привести к сбою + процесса оболочки, который использует код и данные из файла + библиотеки. Установите пакет с помощью DESTDIR и правильно замените файл библиотеки с + помощью команды install(также отредактирован + заголовочный файл curses.h, чтобы + обеспечить использование ABI расширенного набора символов, как это + сделано в Раздел 6.3, + «Ncurses-6.4-20230520»). +

+
make DESTDIR=$PWD/dest install
+install -vm755 dest/usr/lib/libncursesw.so.6.4 /usr/lib
+rm -v  dest/usr/lib/libncursesw.so.6.4
+sed -e 's/^#if.*XOPEN.*$/#if 1/' \
+    -i dest/usr/include/curses.h
+cp -av dest/* /
+

+ Многие приложения ожидают, что компоновщик может найти библиотеки + Ncurses, не поддерживающие расширенный набор символов. Используя + трюк ниже, свяжите такие приложения с библиотеками расширенного + набора символов с помощью символических ссылок (обратите внимание, + что ссылки .so безопасны только в том + случае, если curses.h отредактирован + так, чтобы всегда использовать ABI расширенного набора символов): +

+
for lib in ncurses form panel menu ; do
+    ln -sfv lib${lib}w.so /usr/lib/lib${lib}.so
+    ln -sfv ${lib}w.pc    /usr/lib/pkgconfig/${lib}.pc
+done
+

+ Убедитесь, что старые приложения, которым нужна -lcurses для сборки, собираются правильно: +

+
ln -sfv libncursesw.so /usr/lib/libcurses.so
+

+ По желанию установите документацию Ncurses: +

+
cp -v -R doc -T /usr/share/doc/ncurses-6.4-20230520
+
+ [Примечание] +

+ Примечание +

+

+ С помощью приведенных выше инструкций не создаются библиотеки + Ncurses, не использующие расширенный набор символов, поскольку ни + один пакет, установленный путем компиляции из исходного кода, не + будет связан с ними во время выполнения. Тем не менее, известно + что некоторые бинарные приложения, которые связаны с библиотекой + Ncurses и не поддерживающие расширенный набор символов, требуют + наличия версии 5. Если вам необходимо иметь такие библиотеки + из-за какого-либо приложения, имеющегося только в бинарном виде, + или для обеспечения совместимости с LSB, соберите пакет с помощью + следующих команд: +

+
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
+
+
+
+

+ 8.29.2. + Содержимое пакета Ncurses +

+
+
+
+ Установленные программы: + captoinfo (ссылка на tic), clear, + infocmp, infotocap (ссылка на tic), ncursesw6-config, reset + (ссылка на tset), tabs, tic, toe, tput и tset +
+
+ Установленные библиотеки: + libcurses.so (символическая ссылка), + libform.so (символическая ссылка), libformw.so, libmenu.so + (символическая ссылка), libmenuw.so, libncurses.so + (символическая ссылка), libncursesw.so, libncurses++w.so, + libpanel.so (символическая ссылка) и libpanelw.so, +
+
+ Созданные каталоги: + /usr/share/tabset, /usr/share/terminfo и + /usr/share/doc/ncurses-6.4-20230520 +
+
+
+
+

+ Краткое описание +

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

+ captoinfo +

+
+

+ Преобразует описание termcap в описание terminfo +

+
+

+ clear +

+
+

+ Очищает экран, если это возможно +

+
+

+ infocmp +

+
+

+ Сравнивает или показывает описания terminfo +

+
+

+ infotocap +

+
+

+ Преобразует описание terminfo в описание termcap +

+
+

+ ncursesw6-config +

+
+

+ Предоставляет информацию о конфигурации пакету ncurses +

+
+

+ reset +

+
+

+ Повторно инициализирует терминал со значениями по + умолчанию +

+
+

+ tabs +

+
+

+ Очищает и устанавливает размеры табуляции в терминале +

+
+

+ tic +

+
+

+ Компилятор описания terminfo, преобразует файл terminfo + из исходного формата в двоичный, который необходим для + подпрограмм библиотеки ncurses [Файл terminfo содержит + информацию о возможностях конкретного терминала.] +

+
+

+ toe +

+
+

+ Выводит список всех доступных типов терминалов, для + каждого из которых указывается его имя и приводится + описание +

+
+

+ tput +

+
+

+ Позволяет использовать в командной оболочке настройки, + относящиеся к особенностям конкретного терминала; может + также использоваться для сброса или инициализации + терминала, либо для вывода полного имени терминала +

+
+

+ tset +

+
+

+ Может использоваться для инициализации терминалов +

+
+

+ libncursesw +

+
+

+ Содержит функции, отображающие различными способами текст + на экране терминала. Хорошим примером использования этих + функций является меню, отображаемое командой make menuconfig при + настройке ядра +

+
+

+ libncurses++w +

+
+

+ Содержит функции связывания C++ с другими библиотеками в + пакете +

+
+

+ libformw +

+
+

+ Содержит функции, реализующие формы +

+
+

+ libmenuw +

+
+

+ Содержит функции, реализующие меню +

+
+

+ libpanelw +

+
+

+ Содержит функции, реализующие панели +

+
+
+
+
+ + + diff --git a/lfs-12.1-sysv/chapter08/ninja.html b/lfs-12.1-sysv/chapter08/ninja.html new file mode 100644 index 0000000..c716e2b --- /dev/null +++ b/lfs-12.1-sysv/chapter08/ninja.html @@ -0,0 +1,208 @@ + + + + + + 8.55. Ninja-1.11.1 + + + + + + + + +

+ 8.55. Ninja-1.11.1 +

+
+
+

+ Ninja - небольшая система сборки ориентированная на скорость. +

+
+
+
+ Приблизительное время сборки: + 0.3 SBU +
+
+ Требуемое дисковое + пространство: 75 MB +
+
+
+
+
+

+ 8.55.1. Установка пакета Ninja +

+

+ При запуске ninja + обычно использует максимальное количество процессов параллельно. По + умолчанию это количество ядер в системе плюс два. В некоторых + случаях это может привести к перегреву процессора или нехватке + памяти в системе. Когда ninja вызывается из командной + строки, передача параметра -jN ограничит количество параллельных + процессов. Некоторые пакеты встраивают выполнение ninja и параметр -j не + передается. +

+

+ Использование приведенной ниже необязательной процедуры позволяет + пользователю ограничить количество параллельных процессов с помощью + переменной окружения NINJAJOBS. Пример, настройки: +

+
export NINJAJOBS=4
+

+ ограничит ninja + четырьмя параллельными процессами. +

+

+ По желанию, добавьте возможность использовать переменную окружения + NINJAJOBS, выполнив следующую команду: +

+
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
+

+ Соберите Ninja с помощью команды: +

+
python3 configure.py --bootstrap
+
+

+ Значение параметров сборки: +

+
+
+ --bootstrap +
+
+

+ Этот параметр перестраивает Ninja под текущую систему. +

+
+
+
+

+ Чтобы протестировать пакет, выполните: +

+
./ninja ninja_test
+./ninja_test --gtest_filter=-SubprocessTest.SetWithLots
+

+ Установите пакет: +

+
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
+
+
+

+ 8.55.2. Содержимое + пакета Ninja +

+
+
+
+ Установленные программы: + ninja +
+
+
+
+

+ Краткое описание +

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

+ ninja +

+
+

+ это система сборки Ninja +

+
+
+
+
+ + + diff --git a/lfs-12.1-sysv/chapter08/openssl.html b/lfs-12.1-sysv/chapter08/openssl.html new file mode 100644 index 0000000..133c93f --- /dev/null +++ b/lfs-12.1-sysv/chapter08/openssl.html @@ -0,0 +1,287 @@ + + + + + + 8.47. OpenSSL-3.2.1 + + + + + + + + +

+ 8.47. + OpenSSL-3.2.1 +

+
+
+

+ Пакет OpenSSL содержит инструменты управления и библиотеки, + относящиеся к криптографии. Они полезны для предоставления + криптографических функций другим пакетам, таким как OpenSSH, + приложениям электронной почты и веб-браузерам (для доступа к сайтам + по HTTPS). +

+
+
+
+ Приблизительное время сборки: + 1.8 SBU +
+
+ Требуемое дисковое + пространство: 805 MB +
+
+
+
+
+

+ 8.47.1. Установка пакета OpenSSL +

+

+ Подготовьте OpenSSL к компиляции: +

+
./config --prefix=/usr         \
+         --openssldir=/etc/ssl \
+         --libdir=lib          \
+         shared                \
+         zlib-dynamic
+

+ Скомпилируйте пакет: +

+
make
+

+ Чтобы протестировать пакет, выполните: +

+
HARNESS_JOBS=$(nproc) make test
+

+ Известно, что один тест, 30-test_afalg.t, завершится ошибкой, если + в ядре хоста не включен параметр CONFIG_CRYPTO_USER_API_SKCIPHER или отсутствуют + какие-либо опции, обеспечивающих реализацию AES с CBC (например, + комбинация CONFIG_CRYPTO_AES и + CONFIG_CRYPTO_CBC или CONFIG_CRYPTO_AES_NI_INTEL, если процессор + поддерживает AES-NI). В случае неудачи его можно смело + игнорировать. +

+

+ Установите пакет: +

+
sed -i '/INSTALL_LIBS/s/libcrypto.a libssl.a//' Makefile
+make MANSUFFIX=ssl install
+

+ Добавьте версию к имени каталога документации, чтобы структура + соответствовала другим пакетам: +

+
mv -v /usr/share/doc/openssl /usr/share/doc/openssl-3.2.1
+

+ По желанию, установите дополнительную документацию: +

+
cp -vfr doc/* /usr/share/doc/openssl-3.2.1
+
+ [Примечание] +

+ Примечание +

+

+ Вы должны обновить OpenSSL, когда будет выпущена новая версия, + исправляющая уязвимости. Начиная с OpenSSL 3.0.0, схема + управления версиями OpenSSL следует формату MAJOR.MINOR.PATCH. + Совместимость API/ABI гарантируется для одной и той же ОСНОВНОЙ + (MAJOR) версии. Поскольку LFS устанавливает только общие + библиотеки, нет необходимости перекомпилировать пакеты, которые + ссылаются на libcrypto.so или + libssl.so, при обновлении до версии с тем же ОСНОВНЫМ номером + версии. +

+

+ Все запущенные программы, связанные с этими библиотеками, после + обновления необходимо остановить и перезапустить. Для получения + более подробной информации ознакомьтесь с соответствующей записью + в Раздел 8.2.1, + «Проблемы с обновлением». +

+
+
+
+

+ 8.47.2. + Содержимое пакета OpenSSL +

+
+
+
+ Установленные программы: + c_rehash и openssl +
+
+ Установленные библиотеки: + libcrypto.so и libssl.so +
+
+ Созданные каталоги: + /etc/ssl, /usr/include/openssl, + /usr/lib/engines и /usr/share/doc/openssl-3.2.1 +
+
+
+
+

+ Краткое описание +

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

+ c_rehash +

+
+

+ это Perl скрипт, который + сканирует все файлы в каталоге и добавляет символические + ссылки к их хеш-значениям. Использование c_rehash считается + устаревшим и должно быть заменено командой openssl rehash +

+
+

+ openssl +

+
+

+ это инструмент командной строки для использования + различных криптографических функций библиотеки + OpenSSL из оболочки. Его + можно использовать для различных функций, которые + задокументированы в openssl(1) +

+
+

+ libcrypto.so +

+
+

+ реализует широкий спектр криптографических алгоритмов, + используемых в различных интернет-стандартах. Услуги, + предоставляемые этой библиотекой, используют OpenSSL-реализацию SSL, TLS и + S/MIME, а также для реализации OpenSSH, OpenPGP и других криптографических + стандартов. +

+
+

+ libssl.so +

+
+

+ реализует протокол безопасности транспортного уровня (TLS + v1). Он предоставляет богатый API, документацию по + которому можно найти в руководстве ssl(7) +

+
+
+
+
+ + + diff --git a/lfs-12.1-sysv/chapter08/patch.html b/lfs-12.1-sysv/chapter08/patch.html new file mode 100644 index 0000000..aa87bd6 --- /dev/null +++ b/lfs-12.1-sysv/chapter08/patch.html @@ -0,0 +1,165 @@ + + + + + + 8.69. Patch-2.7.6 + + + + + + + + +

+ 8.69. Patch-2.7.6 +

+
+
+

+ Пакет Patch содержит программу для изменения или создания файлов + путём наложение «патча», обычно, создаваемого программой + diff. +

+
+
+
+ Приблизительное время сборки: + 0.1 SBU +
+
+ Требуемое дисковое + пространство: 12 MB +
+
+
+
+
+

+ 8.69.1. Установка пакета Patch +

+

+ Подготовьте Patch к компиляции: +

+
./configure --prefix=/usr
+

+ Скомпилируйте пакет: +

+
make
+

+ Чтобы протестировать пакет, выполните: +

+
make check
+

+ Установите пакет: +

+
make install
+
+
+

+ 8.69.2. Содержимое + пакета Patch +

+
+
+
+ Установленные программы: + patch +
+
+
+
+

+ Краткое описание +

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

+ patch +

+
+

+ Изменяет файлы в соответствии с файлом исправления (патч + обычно представляет собой список отличий, создаваемый с + помощью программы diff. Применяя их к + исходным файлам, patch создает + исправленные версии.) +

+
+
+
+
+ + + diff --git a/lfs-12.1-sysv/chapter08/perl.html b/lfs-12.1-sysv/chapter08/perl.html new file mode 100644 index 0000000..56c1b8b --- /dev/null +++ b/lfs-12.1-sysv/chapter08/perl.html @@ -0,0 +1,692 @@ + + + + + + 8.42. Perl-5.38.2 + + + + + + + + +

+ 8.42. Perl-5.38.2 +

+
+
+

+ Пакет Perl содержит практический язык для извлечения данных и + составления отчётов (Practical Extraction and Report Language). +

+
+
+
+ Приблизительное время сборки: + 1.5 SBU +
+
+ Требуемое дисковое + пространство: 239 MB +
+
+
+
+
+

+ 8.42.1. Установка пакета Perl +

+

+ Эта версия Perl собирает модули Compress::Raw::Zlib и + Compress::Raw::BZip2. По умолчанию Perl будет использовать + внутреннюю копию исходников для сборки. Выполните следующую + команду, чтобы Perl использовал библиотеки, установленные в + системе: +

+
export BUILD_ZLIB=False
+export BUILD_BZIP2=0
+

+ Чтобы иметь полный контроль над настройкой Perl, вы можете удалить + параметры «-des» из следующей команды и вручную выбрать + способ сборки этого пакета. В качестве альтернативы, используйте + команду точно так, как указано ниже, чтобы использовать значения по + умолчанию, которые Perl определяет автоматически: +

+
sh Configure -des                                         \
+             -Dprefix=/usr                                \
+             -Dvendorprefix=/usr                          \
+             -Dprivlib=/usr/lib/perl5/5.38/core_perl      \
+             -Darchlib=/usr/lib/perl5/5.38/core_perl      \
+             -Dsitelib=/usr/lib/perl5/5.38/site_perl      \
+             -Dsitearch=/usr/lib/perl5/5.38/site_perl     \
+             -Dvendorlib=/usr/lib/perl5/5.38/vendor_perl  \
+             -Dvendorarch=/usr/lib/perl5/5.38/vendor_perl \
+             -Dman1dir=/usr/share/man/man1                \
+             -Dman3dir=/usr/share/man/man3                \
+             -Dpager="/usr/bin/less -isR"                 \
+             -Duseshrplib                                 \
+             -Dusethreads
+
+

+ Значение параметров Configure: +

+
+
+ -Dpager="/usr/bin/less + -isR" +
+
+

+ Параметр указывает использовать less вместо more. +

+
+
+ -Dman1dir=/usr/share/man/man1 + -Dman3dir=/usr/share/man/man3 +
+
+

+ Так как Groff еще не установлен, Configure не будет + создавать man-страницы для Perl. Эти параметры переопределяют + это поведение. +

+
+
+ -Dusethreads +
+
+

+ Собрать Perl с поддержкой потоков. +

+
+
+
+

+ Скомпилируйте пакет: +

+
make
+

+ Чтобы протестировать пакет (примерно 11 SBU), выполните: +

+
TEST_JOBS=$(nproc) make test_harness
+

+ Установка пакета и очистка: +

+
make install
+unset BUILD_ZLIB BUILD_BZIP2
+
+
+

+ 8.42.2. Содержимое + пакета Perl +

+
+
+
+ Установленные программы: + corelist, cpan, enc2xs, encguess, h2ph, + h2xs, instmodsh, json_pp, libnetcfg, perl, perl5.38.2 (жесткая + ссылка на perl), perlbug, perldoc, perlivp, perlthanks (жесткая + ссылка на perlbug), piconv, pl2pm, pod2html, pod2man, pod2text, + pod2usage, podchecker, podselect, prove, ptar, ptardiff, + ptargrep, shasum, splain, xsubpp и zipdetails +
+
+ Установленные библиотеки: + Список слишком большой для + перечисления +
+
+ Созданные каталоги: + /usr/lib/perl5 +
+
+
+
+

+ Краткое описание +

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

+ corelist +

+
+

+ Интерфейс командной строки для Module::CoreList +

+
+

+ cpan +

+
+

+ Позволяет получать из командной строки доступ к архиву + документации и программ Perl (Comprehensive Perl Archive + Network - CPAN) +

+
+

+ enc2xs +

+
+

+ Собирает расширение Perl для модуля Encode либо с + использование таблицы символов Unicode, либо с + использованием файлов кодирования Tcl +

+
+

+ encguess +

+
+

+ Определяет тип кодировки одного или нескольких файлов +

+
+

+ h2ph +

+
+

+ Конвертирует заголовочные файлы Си .h в заголовочные файлы Perl + .ph +

+
+

+ h2xs +

+
+

+ Конвертирует заголовочные файлы Си .h в расширения Perl +

+
+

+ instmodsh +

+
+

+ Сценарий оболочки для проверки установленных модулей + Perl; он может создать архив из установленного модуля. +

+
+

+ json_pp +

+
+

+ Преобразует данные между определенными входными и + выходными форматами +

+
+

+ libnetcfg +

+
+

+ Может использоваться для настройки Perl-модуля + libnet +

+
+

+ perl +

+
+

+ Объединяет лучшие возможности C, sed, awk и sh в одном языке +

+
+

+ perl5.38.2 +

+
+

+ Жесткая ссылка на perl +

+
+

+ perlbug +

+
+

+ Используется для создания отчетов об ошибках в Perl или + модулях, которые поставляются с ним, и отправки их по + почте +

+
+

+ perldoc +

+
+

+ Отображает часть документации в формате pod, которая + встроена в дерево установки Perl или в сценарий Perl +

+
+

+ perlivp +

+
+

+ Процедура проверки установки Perl; ее можно использовать + для проверки правильности установки Perl и его библиотек +

+
+

+ perlthanks +

+
+

+ Используется для создания сообщения-благодарности, + отсылаемого разработчикам Perl +

+
+

+ piconv +

+
+

+ Perl версия конвертера iconv, используемого + для кодирования символов +

+
+

+ pl2pm +

+
+

+ Инструмент для грубого конвертирования файлов + .pl Perl4 в модули + .pm Perl5 +

+
+

+ pod2html +

+
+

+ Преобразует файлы из формата pod в формат HTML +

+
+

+ pod2man +

+
+

+ Преобразует данные pod в форматированный входной поток + для *roff +

+
+

+ pod2text +

+
+

+ Преобразует данные pod в форматированный текст ASCII +

+
+

+ pod2usage +

+
+

+ Печатает в файл сообщения usage из встроенных документов + pod +

+
+

+ podchecker +

+
+

+ Проверяет синтаксис файлов документации формата pod +

+
+

+ podselect +

+
+

+ Отображает выбранные разделы документации pod +

+
+

+ prove +

+
+

+ Инструмент командной строки для выполнения тестов с + помощью модуля Test::Harness +

+
+

+ ptar +

+
+

+ Программа, похожая на tar, написанная на Perl +

+
+

+ ptardiff +

+
+

+ Программа на Perl для сравнения распакованного и + нераспакованного архивов +

+
+

+ ptargrep +

+
+

+ Программа на Perl для текстового поиска по шаблону внутри + tar-архива +

+
+

+ shasum +

+
+

+ Печатает или проверяет контрольные суммы SHA +

+
+

+ splain +

+
+

+ Включает подробные предупреждения для диагностики в Perl +

+
+

+ xsubpp +

+
+

+ Преобразует код Perl XS в код C +

+
+

+ zipdetails +

+
+

+ Отображает сведения о внутренней структуре Zip-файла +

+
+
+
+
+ + + diff --git a/lfs-12.1-sysv/chapter08/pkgconf.html b/lfs-12.1-sysv/chapter08/pkgconf.html new file mode 100644 index 0000000..c017df7 --- /dev/null +++ b/lfs-12.1-sysv/chapter08/pkgconf.html @@ -0,0 +1,208 @@ + + + + + + 8.18. Pkgconf-2.1.1 + + + + + + + + +

+ 8.18. + Pkgconf-2.1.1 +

+
+
+

+ Пакет pkgconf является преемником pkg-config и содержит инструмент, + который позволяет передавать пути установки или пути к библиотекам + для инструментов сборки на этапе настройки (configure) и + сборки(make) пакетов. +

+
+
+
+ Приблизительное время сборки: + менее 0.1 SBU +
+
+ Требуемое дисковое + пространство: 4.6 MB +
+
+
+
+
+

+ 8.18.1. Установка пакета Pkgconf +

+

+ Подготовьте Pkgconf к компиляции: +

+
./configure --prefix=/usr              \
+            --disable-static           \
+            --docdir=/usr/share/doc/pkgconf-2.1.1
+

+ Скомпилируйте пакет: +

+
make
+

+ Установите пакет: +

+
make install
+

+ Для обеспечения совместимости с исходным Pkg-config, создайте две + символические ссылки: +

+
ln -sv pkgconf   /usr/bin/pkg-config
+ln -sv pkgconf.1 /usr/share/man/man1/pkg-config.1
+
+
+

+ 8.18.2. + Содержимое пакета Pkgconf +

+
+
+
+ Установленные программы: + pkgconf, pkg-config (ссылка на pkgconf) и + bomtool +
+
+ Установленные библиотеки: + libpkgconf.so +
+
+ Созданные каталоги: + /usr/share/doc/pkgconf-2.1.1 +
+
+
+
+

+ Краткое описание +

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

+ pkgconf +

+
+

+ Возвращает метаданные указанной библиотеки или пакета +

+
+

+ bomtool +

+
+

+ Генерирует спецификацию программного обеспечения из + файлов pkg-config с расширением .pc +

+
+

+ libpkgconf +

+
+

+ Содержит большую часть функций pkgconf, позволяя другим + инструментам, таким как IDE и компиляторы, использовать + его фреймворки +

+
+
+
+
+ + + diff --git a/lfs-12.1-sysv/chapter08/pkgmgt.html b/lfs-12.1-sysv/chapter08/pkgmgt.html new file mode 100644 index 0000000..b8b3f94 --- /dev/null +++ b/lfs-12.1-sysv/chapter08/pkgmgt.html @@ -0,0 +1,539 @@ + + + + + + 8.2. Управление пакетами + + + + + + + + +

+ 8.2. Управление + пакетами +

+
+

+ Управление пакетами — часто cпрашиваемое дополнение к книге LFS. + Менеджер пакетов позволяет отслеживать установку файлов, упрощая + удаление и обновление пакетов. Хороший менеджер пакетов также будет + обрабатывать конфигурационные файлы, чтобы сохранить пользовательские + настройки при переустановке или обновлении пакета. Прежде чем вы + начнете задаваться вопросом, НЕТ—в этом разделе не будет ни + говориться, ни рекомендоваться какой-либо конкретный менеджер + пакетов. Что он действительно предоставляет, так это обзор наиболее + популярных методов и того, как они работают. Идеальным менеджером + пакетов для вас может быть один из этих методов или комбинация двух и + более методов. В этом разделе кратко упоминаются проблемы, которые + могут возникнуть при обновлении пакетов. +

+

+ Некоторые причины, по которым менеджер пакетов не упоминается в LFS + или BLFS представлены ниже: +

+
+
    +
  • +

    + Рассмотрение управления пакетами отвлекает внимание от целей + этих книг—обучения тому, как строится система Linux. +

    +
  • +
  • +

    + Существует множество решений для управления пакетами, каждое из + которых имеет свои сильные и слабые стороны. Трудно найти + такое, которое удовлетворит всех. +

    +
  • +
+
+

+ Есть несколько советов, написанных на тему управления пакетами. + Посетите проект Советы + возможно вы найдете решение, которое соответствует вашим + потребностям. +

+
+

+ 8.2.1. Проблемы с обновлением +

+

+ Менеджер пакетов упрощает обновление до более новых версий после их + выпуска. Как правило, инструкции в книгах LFS и BLFS можно + использовать для обновления до более новых версий. Вот некоторые + моменты, о которых следует помнить при обновлении пакетов, особенно + в работающей системе. +

+
+
    +
  • +

    + Если нужно обновить ядро Linux (например, с 5.10.17 до + 5.10.18 или 5.11.1), дополнительно пересобирать ничего не + нужно. Система продолжит нормально работать благодаря четко + определенной границе между ядром и пользовательским + пространством. В частности, заголовки Linux API не нужно + обновлять вместе с ядром. Вам просто нужно перезагрузить + систему, чтобы использовать обновленное ядро. +

    +
  • +
  • +

    + Если необходимо обновить Glibc до более новой версии + (например, с Glibc-2.36 до Glibc-2.39) необходимо выполнить + некоторые дополнительные действия, чтобы избежать поломки + системы. Подробности читайте в Раздел 8.5, + «Glibc-2.39». +

    +
  • +
  • +

    + Если пакет, содержащий общую библиотеку, обновляется и имя + библиотеки изменилось, то любые пакеты, динамически связанные + с библиотекой, необходимо перекомпилировать, чтобы связать с + более новой библиотекой. (Обратите внимание, что между + версией пакета и именем библиотеки нет никакой связи.) + Например, рассмотрим пакет foo-1.2.3, который устанавливает + общую библиотеку с именем libfoo.so.1. Предположим, вы обновили пакет + до более новой версии foo-1.2.4, которая устанавливает общую + библиотеку с именем libfoo.so.2, все пакеты, которые + динамически связаны с libfoo.so.1, должны быть перекомпилированы + для связи с libfoo.so.2, чтобы + использовать новую версию библиотеки. Вы не должны удалять + старые библиотеки, пока все зависимые пакеты не будут + перекомпилированы. +

    +
  • +
  • +

    + Если пакет (прямо или косвенно) связан как со старым, так и с + новым именем общей библиотеки (например, пакет ссылается как + на libfoo.so.2, так и на + libbar.so.1, в то время как + последний ссылается на libfoo.so.3), пакет может работать + неправильно, поскольку разные версии общей библиотеки + содержат несовместимые определения для некоторых имен + символов. Это может быть вызвано перекомпиляцией некоторых, + но не всех, пакетов, связанных со старой общей библиотекой, + после обновления пакета, предоставляющего общую библиотеку. + Чтобы избежать этой проблемы, пользователям необходимо как + можно скорее пересобрать каждый пакет, связанный с общей + библиотекой, с обновленной версией (например, с libfoo.so.2 + на libfoo.so.3). +

    +
  • +
  • +

    + Если пакет, содержащий общую библиотеку, обновляется, а имя + библиотеки не меняется, но уменьшается номер версии + файла библиотеки + (например, библиотека по-прежнему называется libfoo.so.1, но имя файла библиотеки + изменилось с libfoo.so.1.25 на + libfoo.so.1.24), следует + удалить файл библиотеки ранее установленной версии (в данном + случае libfoo.so.1.25). В + противном случае, команда ldconfig (запущенная + самостоятельно с помощью командной строки или при установке + какого-либо пакета) приведёт к сбросу символической ссылки + libfoo.so.1, которая будет + указывать на старый файл библиотеки, потому что кажется, что + она имеет «более + новую» версию, поскольку её номер версии + больше. Такая ситуация может произойти, если вам нужно + понизить версию пакета или авторы изменили схему управления + версиями файлов библиотеки. +

    +
  • +
  • +

    + Если пакет, содержащий общую библиотеку, обновляется, а имя + библиотеки не меняется, но устраняется серьезная проблема + (особенно уязвимость в системе безопасности), необходимо + перезапустить все работающие программы, связанные с общей + библиотекой. Следующая команда, запущенная от имени + пользователя root после + завершения обновления, выведет список программ, которые + использует старые версии этих библиотек (замените libfoo именем библиотеки): +

    +
    grep -l 'libfoo.*deleted' /proc/*/maps | tr -cd 0-9\\n | xargs -r ps u
    +

    + Если для доступа к системе используется OpenSSH и он связан с обновленной + библиотекой, вам необходимо перезапустить службу sshd, затем выйти из + системы, снова войти в систему и повторно выполнить + предыдущую команду, чтобы убедиться, что удаленные библиотеки + более не используются. +

    +
  • +
  • +

    + Если исполняемая программа или библиотека перезаписаны, + процессы, использующие код или данные из них, могут + завершиться сбоем. Правильный способ обновить программу или + общую библиотеку, не вызывая сбоя процесса, - это сначала + удалить его, а затем установить новую версию. Команда + install, + предоставляемая Coreutils, + уже реализовала это, и большинство пакетов используют ее для + установки двоичных файлов и библиотек. Это означает, что + большую часть времени вас не будет беспокоить эта проблема. + Однако процесс установки некоторых пакетов (в частности, + SpiderMonkey в BLFS) просто перезаписывает файл, если он + существует, и вызывает сбой. Поэтому безопаснее сохранить + свою работу и закрыть ненужные запущенные программы перед + обновлением пакета. +

    +
  • +
+
+
+
+

+ 8.2.2. Методы управления пакетами +

+

+ Ниже приведены некоторые распространенные методы управления + пакетами. Прежде чем принять решение о менеджере пакетов, проведите + исследование различных методов, особенно недостатки каждой + конкретной схемы. +

+
+

+ 8.2.2.1. Всё у меня в голове! +

+

+ Да, это метод управления пакетами. Некоторым людям не нужен + менеджер пакетов, потому что они хорошо знакомы с пакетами и + знают, какие файлы устанавливаются каждым пакетом. Некоторым + пользователям также не требуется какое-либо управление пакетами, + поскольку они планируют пересобирать всю систему при каждом + изменении пакета. +

+
+
+

+ 8.2.2.2. Установка в отдельные каталоги +

+

+ Это упрощенный метод управления пакетами, для которого не + требуется специальная программа управления. Каждый пакет + устанавливается в отдельный каталог. Например, пакет foo-1.1 + устанавливается в /opt/foo-1.1, а + символическая ссылка создается из /opt/foo в /opt/foo-1.1. Когда появляется новая версия + foo-1.2, она устанавливается в /opt/foo-1.2 и предыдущая символическая ссылка + заменяется символической ссылкой на новую версию. +

+

+ Переменные окружения, такие как PATH, + MANPATH, INFOPATH, PKG_CONFIG_PATH, CPPFLAGS, LDFLAGS и + файл конфигурации /etc/ld.so.conf, + возможно, потребуется расширить, включив соответствующие + подкаталоги в /opt/foo-x.y. +

+

+ Этот подход используется в книге BLFS для установки некоторых + очень больших пакетов, чтобы упростить их обновление. Если вы + устанавливаете много таких пакетов, эта схема становится + неуправляемой. Некоторые пакеты (например, заголовки Linux API и + Glibc) могут плохо работать с такой структурой. Никогда не используйте её в масштабах всей + системы. +

+
+
+

+ 8.2.2.3. Управление пакетами с использованием символических + ссылок +

+

+ Это разновидность предыдущей техники.Каждый пакет устанавливается + аналогично, но вместо создания символической ссылки на общее имя + пакета, каждому файлу создаётся символическая ссылка в иерархии + каталогов /usr. Это исключает + необходимость модификации значений переменных окружения. Хотя + такие ссылки могут быть созданы пользователем, многие менеджеры + пакетов используют именной такой подход. Наиболее популярные из + них - Stow, Epkg, Graft и Depot. +

+

+ Установку нужно сымитировать, чтобы пакет думал, что он + установлен в /usr, хотя на самом + деле он установлен в иерархии /usr/pkg. Установка таким способом обычно + является нетривиальной задачей. Например, предположим, что вы + устанавливаете пакет libfoo-1.1. Следующие инструкции могут + привести к неправильной установке пакета: +

+
./configure --prefix=/usr/pkg/libfoo/1.1
+make
+make install
+

+ Установка будет выполнена, но зависимые пакеты не смогут + ссылаться на libfoo. Если вы скомпилируете пакет, который + ссылается на libfoo, вы заметите, что он связан с /usr/pkg/libfoo/1.1/lib/libfoo.so.1 вместо + /usr/lib/libfoo.so.1, как вы + ожидаете. Правильный подход заключается в использовании + переменной DESTDIR для управления + установкой. Этот подход работает следующим образом: +

+
./configure --prefix=/usr
+make
+make DESTDIR=/usr/pkg/libfoo/1.1 install
+

+ Большинство пакетов поддерживают этот подход, но есть и такие, + которые этого не делают. Для несовместимых пакетов вам может + потребоваться либо установить пакет вручную, либо вы можете + установить проблемные пакеты в /opt. +

+
+
+

+ 8.2.2.4. На основе временной метки +

+

+ В этом методе файлу присваивается временная метка перед + установкой пакета. После установки простое использование команды + find с + соответствующими параметрами может создать журнал всех файлов, + установленных после создания файла с временной метки. Менеджером + пакетов, использующим этот подход, является install-log. +

+

+ Хотя преимущество этой схемы в том, что она проста, у нее есть + два недостатка. Если во время установки, файлы устанавливаются с + отметкой времени, отличной от текущего времени, эти файлы не + будут отслеживаться менеджером пакетов. Кроме того, эта схема + может использоваться только при установке пакетов по одному. + Журналы ненадежны, если два пакета устанавливаются одновременно + на двух разных консолях. +

+
+
+

+ 8.2.2.5. Отслеживание сценариев установки +

+

+ При таком подходе, записываются команды, выполняемые сценариями + установки. Есть два метода, которые можно использовать: +

+

+ Переменная среды LD_PRELOAD может быть + установлена так, чтобы она указывала на библиотеку, которую нужно + предварительно загрузить перед установкой. Во время установки эта + библиотека отслеживает устанавливаемые пакеты, присоединяясь к + различным исполняемым файлам, таким как cp, install, mv, и отслеживая системные + вызовы, изменяющие файловую систему. Чтобы этот подход работал, + все исполняемые файлы должны быть динамически связаны без битов + suid или sgid. Предварительная загрузка библиотеки может вызвать + некоторые нежелательные побочные эффекты во время установки. + Поэтому рекомендуется выполнить некоторые тесты, чтобы убедиться, + что менеджер пакетов ничего не сломает и что он регистрирует все + соответствующие файлы. +

+

+ Другой метод заключается в использовании strace, который регистрирует + все системные вызовы, сделанные во время выполнения сценариев + установки. +

+
+
+

+ 8.2.2.6. Создание архивов пакетов +

+

+ В этой схеме установка пакета имитируется в отдельном дереве, как + описано ранее в разделе управление пакетами с использованием + символических ссылок. После установки из установленных файлов + создается архив пакета. Затем этот архив используется для + установки пакета на локальный компьютер или даже на другие + компьютеры. +

+

+ Этот подход используется большинством менеджеров пакетов, + имеющихся в коммерческих дистрибутивах. Примерами менеджеров + пакетов, которые следуют этому подходу, являются RPM (который, + кстати, требуется согласно спецификации Linux Standard + Base Specification), pkg-utils, apt Debian и система Portage + Gentoo. Описание того, как использовать этот стиль управления + пакетами для систем LFS, находится по адресу + https://mirror.linuxfromscratch.ru/hints/downloads/files/fakeroot.txt. +

+

+ Создание файлов пакетов, содержащих информацию о зависимостях, + является сложной задачей и выходит за рамки LFS. +

+

+ Slackware использует систему на основе tar для архивов пакетов. Эта + система намеренно не обрабатывает зависимости пакетов, как это + делают более сложные менеджеры пакетов. Подробнее об управлении + пакетами Slackware см. https://www.slackbook.org/html/package-management.html. +

+
+
+

+ 8.2.2.7. Пользовательское управление пакетами +

+

+ Эта схема, уникальная для LFS, была разработана Маттиасом + Бенкманом и доступна в проекте Hints. + В этой схеме каждый пакет устанавливается отдельным пользователем + в стандартные папки. Файлы, принадлежащие пакету, легко + идентифицируются путем проверки идентификатора пользователя. + Особенности и недостатки этого подхода слишком сложны, чтобы + описывать их в этом разделе. Для получения более подробной + информации, пожалуйста, ознакомьтесь с советами по адресу + + https://mirror.linuxfromscratch.ru/hints/downloads/files/more_control_and_pkg_man.txt. +

+
+
+
+

+ 8.2.3. Развертывание LFS на нескольких системах +

+

+ Одним из преимуществ системы LFS является отсутствие файлов, + зависящих от положения файлов на диске. Клонировать сборку LFS на + другой компьютер с той же архитектурой, что и у базовой системы, + так же просто, как использовать tar для архивации раздела LFS, + содержащем корневой каталог (около 900 МБ в несжатом виде для + базовой сборки LFS), скопировать этот файл по сети или с помощью CD + / USB носителя в новую систему и распаковать его. После этого + необходимо изменить несколько конфигурационных файлов. Файлы, + которые, возможно, потребуется изменить представлены в списке ниже: + /etc/hosts, /etc/fstab, /etc/passwd, /etc/group, /etc/shadow, /etc/ld.so.conf, /etc/sysconfig/rc.site, /etc/sysconfig/network, и /etc/sysconfig/ifconfig.eth0. +

+

+ Возможно, потребуется собрать собственное ядро для новой системы в + зависимости от различий в системном оборудовании и исходной + конфигурации ядра. +

+
+ [Примечание] +

+ Примечание +

+

+ Поступали некоторые сообщения о проблемах при копировании между + похожими, но не идентичными архитектурами. Например, набор + инструкций для Intel не идентичен набору инструкций для + процессора AMD, и более поздние версии некоторых процессоров + могут содержать инструкции, недоступные в более ранних версиях. +

+
+

+ Наконец, новую систему необходимо сделать загрузочной так, как это + описано в Раздел 10.4, + «Использование GRUB для настройки процесса загрузки». +

+
+
+ + + diff --git a/lfs-12.1-sysv/chapter08/procps-ng.html b/lfs-12.1-sysv/chapter08/procps-ng.html new file mode 100644 index 0000000..e3fd465 --- /dev/null +++ b/lfs-12.1-sysv/chapter08/procps-ng.html @@ -0,0 +1,421 @@ + + + + + + 8.77. Procps-ng-4.0.4 + + + + + + + + +

+ 8.77. + Procps-ng-4.0.4 +

+
+
+

+ Пакет Procps-ng содержит программы для мониторинга процессов. +

+
+
+
+ Приблизительное время сборки: + 0.1 SBU +
+
+ Требуемое дисковое + пространство: 27 MB +
+
+
+
+
+

+ 8.77.1. Установка пакета Procps-ng +

+

+ Подготовьте Procps-ng к компиляции: +

+
./configure --prefix=/usr                           \
+            --docdir=/usr/share/doc/procps-ng-4.0.4 \
+            --disable-static                        \
+            --disable-kill
+
+

+ Значение параметра configure: +

+
+
+ --disable-kill +
+
+

+ Этот параметр отключает сборку команды kill; она будет установлена + из пакета Util-linux. +

+
+
+
+

+ Скомпилируйте пакет: +

+
make
+

+ Чтобы запустить набор тестов, выполните: +

+
make -k check
+

+ Известно, что тест ps with output flag + bsdtime,cputime,etime,etimes завершается неудачно, если ядро + хоста собрано с выключенным параметром CONFIG_BSD_PROCESS_ACCT. Также известно, что два + теста: pmap X with unreachable process + и pmap XX with unreachable process + иногда завершаются неудачно. +

+

+ Установите пакет: +

+
make install
+
+
+

+ 8.77.2. + Содержимое пакета Procps-ng +

+
+
+
+ Установленные программы: + free, pgrep, pidof, pkill, pmap, ps, + pwdx, slabtop, sysctl, tload, top, uptime, vmstat, w и + watch +
+
+ Установленные библиотеки: + libproc-2.so +
+
+ Созданные каталоги: + /usr/include/procps и + /usr/share/doc/procps-ng-4.0.4 +
+
+
+
+

+ Краткое описание +

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

+ free +

+
+

+ Сообщает объем свободной и используемой памяти (как + физической, так и файла подкачки) в системе. +

+
+

+ pgrep +

+
+

+ Выполняет поиск процессов на основе их имени и других + атрибутов +

+
+

+ pidof +

+
+

+ Сообщает PIDы указанных программ +

+
+

+ pkill +

+
+

+ Отправка сигналов процессам на основе их имени и других + атрибутов +

+
+

+ pmap +

+
+

+ Команда выводит детальную информацию об использование + оперативной памяти процессами +

+
+

+ ps +

+
+

+ Список запущенных процессов +

+
+

+ pwdx +

+
+

+ Сообщает текущий рабочий каталог процесса +

+
+

+ slabtop +

+
+

+ Отображает подробную информацию о кэш-памяти ядра в + режиме реального времени. +

+
+

+ sysctl +

+
+

+ Изменяет параметры ядра во время выполнения +

+
+

+ tload +

+
+

+ Выводит график текущей средней загрузки системы +

+
+

+ top +

+
+

+ Отображает список процессов, наиболее интенсивно + использующих ЦП; обеспечивает просмотр активности + процессора в режиме реального времени +

+
+

+ uptime +

+
+

+ Сообщает сколько времени работает система, сколько + пользователей вошли в систему и средние значения загрузки + системы. +

+
+

+ vmstat +

+
+

+ Сообщает статистику виртуальной памяти, содержащую + информацию о процессах, памяти, подкачке, блочном + вводе/выводе (IO), прерываниях и активности ЦП. +

+
+

+ w +

+
+

+ Показывает, какие пользователи в настоящее время вошли в + систему и с какого момента +

+
+

+ watch +

+
+

+ Выполняет заданную команду повторно, отображая первый + экран, заполненный ее выводом; это позволяет пользователю + наблюдать за изменениями с течением времени +

+
+

+ libproc-2 +

+
+

+ Содержит функции, используемые большинством программ в + этом пакете. +

+
+
+
+
+ + + diff --git a/lfs-12.1-sysv/chapter08/psmisc.html b/lfs-12.1-sysv/chapter08/psmisc.html new file mode 100644 index 0000000..149e35e --- /dev/null +++ b/lfs-12.1-sysv/chapter08/psmisc.html @@ -0,0 +1,249 @@ + + + + + + 8.31. Psmisc-23.6 + + + + + + + + +

+ 8.31. Psmisc-23.6 +

+
+
+

+ Пакет Psmisc содержит программы для отображения информации о + запущенных процессах. +

+
+
+
+ Приблизительное время сборки: + менее 0.1 SBU +
+
+ Требуемое дисковое + пространство: 6.6 MB +
+
+
+
+
+

+ 8.31.1. Установка пакета Psmisc +

+

+ Подготовьте Psmisc к компиляции: +

+
./configure --prefix=/usr
+

+ Скомпилируйте пакет: +

+
make
+

+ Чтобы протестировать пакет, выполните: +

+
make check
+

+ Установите пакет: +

+
make install
+
+
+

+ 8.31.2. + Содержимое пакета Psmisc +

+
+
+
+ Установленные программы: + fuser, killall, peekfd, prtstat, pslog, + pstree и pstree.x11 (ссылка на pstree) +
+
+
+
+

+ Краткое описание +

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

+ fuser +

+
+

+ Сообщает идентификаторы процессов (PID), которые + используют данные файлы или файловые системы. +

+
+

+ killall +

+
+

+ Уничтожает процессы по имени; посылает сигнал всем + процессам, выполняющим любую из заданных команд +

+
+

+ peekfd +

+
+

+ Просмотривает файловые дескрипторы запущенного процесса с + учетом его PID +

+
+

+ prtstat +

+
+

+ Выводит информацию о процессе +

+
+

+ pslog +

+
+

+ Сообщает текущий путь к журналам процесса +

+
+

+ pstree +

+
+

+ Отображает запущенные процессы в виде дерева +

+
+

+ pstree.x11 +

+
+

+ То же, что и pstree, за исключением + того, что он ожидает подтверждения перед выходом. +

+
+
+
+
+ + + diff --git a/lfs-12.1-sysv/chapter08/readline.html b/lfs-12.1-sysv/chapter08/readline.html new file mode 100644 index 0000000..19948dc --- /dev/null +++ b/lfs-12.1-sysv/chapter08/readline.html @@ -0,0 +1,238 @@ + + + + + + 8.11. Readline-8.2 + + + + + + + + +

+ 8.11. + Readline-8.2 +

+
+
+

+ Пакет Readline представляет собой набор библиотек, предлагающих + возможности редактирования прямо в командной строке и просмотра + истории команд. +

+
+
+
+ Приблизительное время сборки: + менее 0.1 SBU +
+
+ Требуемое дисковое + пространство: 16 MB +
+
+
+
+
+

+ 8.11.1. Установка пакета Readline +

+

+ Переустановка пакета Readline приводит к перемещению старых + библиотек в <libraryname>.old. Обычно это не вызывает + проблем, но в некоторых случаях могут возникать ошибки линковки с + ldconfig. Этого можно + избежать, выполнив следующие две команды sed: +

+
sed -i '/MV.*old/d' Makefile.in
+sed -i '/{OLDSUFF}/c:' support/shlib-install
+

+ Теперь устраните проблему, выявленную разработчиками: +

+
patch -Np1 -i ../readline-8.2-upstream_fixes-3.patch
+

+ Подготовьте Readline к компиляции: +

+
./configure --prefix=/usr    \
+            --disable-static \
+            --with-curses    \
+            --docdir=/usr/share/doc/readline-8.2
+
+

+ Значение нового параметра configure: +

+
+
+ --with-curses +
+
+

+ Этот параметр сообщает Readline, что он может найти функции + библиотеки termcap в библиотеке curses, а не в отдельной + библиотеке termcap. Это позволит сгенерировать корректный + файл readline.pc. +

+
+
+
+

+ Скомпилируйте пакет: +

+
make SHLIB_LIBS="-lncursesw"
+
+

+ Значение параметра make: +

+
+
+ SHLIB_LIBS="-lncursesw" +
+
+

+ Этот параметр принудительно линкует Readline с библиотекой + libncursesw. +

+
+
+
+

+ С этим пакетом не поставляется набор тестов. +

+

+ Установите пакет: +

+
make SHLIB_LIBS="-lncursesw" install
+

+ По желанию установите документацию: +

+
install -v -m644 doc/*.{ps,pdf,html,dvi} /usr/share/doc/readline-8.2
+
+
+

+ 8.11.2. + Содержимое пакета Readline +

+
+
+
+ Установленные библиотеки: + libhistory.so и libreadline.so +
+
+ Созданные каталоги: + /usr/include/readline и + /usr/share/doc/readline-8.2 +
+
+
+
+

+ Краткое описание +

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

+ libhistory +

+
+

+ Обеспечивает согласованный пользовательский интерфейс для + вызова строк из истории +

+
+

+ libreadline +

+
+

+ Предоставляет набор команд для управления текстом, + введенным в интерактивном сеансе программы. +

+
+
+
+
+ + + diff --git a/lfs-12.1-sysv/chapter08/sed.html b/lfs-12.1-sysv/chapter08/sed.html new file mode 100644 index 0000000..76ac41b --- /dev/null +++ b/lfs-12.1-sysv/chapter08/sed.html @@ -0,0 +1,165 @@ + + + + + + 8.30. Sed-4.9 + + + + + + + + +

+ 8.30. Sed-4.9 +

+
+
+

+ Пакет Sed содержит потоковый редактор текста +

+
+
+
+ Приблизительное время сборки: + 0.3 SBU +
+
+ Требуемое дисковое + пространство: 30 MB +
+
+
+
+
+

+ 8.30.1. Установка пакета Sed +

+

+ Подготовьте Sed к компиляции: +

+
./configure --prefix=/usr
+

+ Скомпилируйте пакет и сгенерируйте HTML-документацию: +

+
make
+make html
+

+ Чтобы протестировать пакет, выполните: +

+
chown -R tester .
+su tester -c "PATH=$PATH make check"
+

+ Установите пакет и документацию к нему: +

+
make install
+install -d -m755           /usr/share/doc/sed-4.9
+install -m644 doc/sed.html /usr/share/doc/sed-4.9
+
+
+

+ 8.30.2. Содержимое + пакета Sed +

+
+
+
+ Установленные программы: + sed +
+
+ Созданные каталоги: + /usr/share/doc/sed-4.9 +
+
+
+
+

+ Краткое описание +

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

+ sed +

+
+

+ Фильтрует и преобразует текстовые файлы за один проход +

+
+
+
+
+ + + diff --git a/lfs-12.1-sysv/chapter08/setuptools.html b/lfs-12.1-sysv/chapter08/setuptools.html new file mode 100644 index 0000000..4e05780 --- /dev/null +++ b/lfs-12.1-sysv/chapter08/setuptools.html @@ -0,0 +1,128 @@ + + + + + + 8.54. Setuptools-69.1.0 + + + + + + + + +

+ 8.54. + Setuptools-69.1.0 +

+
+
+

+ Пакет Setuptools это инструмент, используемый для загрузки, сборки, + установки, обновления и удаления пакетов Python. +

+
+
+
+ Приблизительное время сборки: + 0.1 SBU +
+
+ Требуемое дисковое + пространство: 20 MB +
+
+
+
+
+

+ 8.54.1. Установка пакета Setuptools +

+

+ Соберите пакет: +

+
pip3 wheel -w dist --no-cache-dir --no-build-isolation --no-deps $PWD
+

+ Установите пакет: +

+
pip3 install --no-index --find-links dist setuptools
+
+
+

+ 8.54.2. + Содержимое пакета Setuptools +

+
+
+
+ Созданные каталоги: + /usr/lib/python3.12/site-packages/_distutils_hack, + /usr/lib/python3.12/site-packages/pkg_resources, + /usr/lib/python3.12/site-packages/setuptools, and + /usr/lib/python3.12/site-packages/setuptools-69.1.0.dist-info +
+
+
+
+
+ + + diff --git a/lfs-12.1-sysv/chapter08/shadow.html b/lfs-12.1-sysv/chapter08/shadow.html new file mode 100644 index 0000000..7de24d3 --- /dev/null +++ b/lfs-12.1-sysv/chapter08/shadow.html @@ -0,0 +1,942 @@ + + + + + + 8.27. Shadow-4.14.5 + + + + + + + + +

+ 8.27. + Shadow-4.14.5 +

+
+
+

+ Пакет Shadow содержит программы для безопасной обработки паролей. +

+
+
+
+ Приблизительное время сборки: + 0.1 SBU +
+
+ Требуемое дисковое + пространство: 49 MB +
+
+
+
+
+

+ 8.27.1. Установка пакета Shadow +

+
+ [Примечание] +

+ Примечание +

+

+ Если вы хотите принудительно использовать надежные пароли, + обратитесь к инструкции + https://mirror.linuxfromscratch.ru/blfs/view/12.1/postlfs/cracklib.html + для установки CrackLib перед сборкой. Затем добавьте параметр + --with-libcrack в + приведенную ниже команду configure. +

+
+

+ Отключите установку groups и ее справочных страниц, + так как Coreutils предоставляет версию лучше. Кроме того, запретите + установку страниц руководств, так как они были установлены в + Раздел 8.3, «Man-pages-6.06»: +

+
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 / /'   {} \;
+

+ Вместо + используемого по умолчанию метода crypt, используйте более безопасный + метод шифрования паролей YESCRYPT, который также позволяет + использовать пароли длиннее 8 символов. Также необходимо изменить + устаревшее местоположение для почтовых ящиков пользователей + /var/spool/mail, которое Shadow + использует по умолчанию, на используемое в настоящее время + /var/mail. И удалите /bin и /sbin из + PATH, поскольку они являются просто + символическими ссылками на их аналоги в /usr. +

+
+ [Примечание] +

+ Примечание +

+

+ Если вы по какой-либо причине хотите включить /bin и/или /sbin + в PATH, измените PATH в файле .bashrc + после сборки LFS. +

+
+
sed -e 's:#ENCRYPT_METHOD DES:ENCRYPT_METHOD YESCRYPT:' \
+    -e 's:/var/spool/mail:/var/mail:'                 \
+    -e '/PATH=/{s@/sbin:@@;s@/bin:@@}'                \
+    -i etc/login.defs
+
+ [Примечание] +

+ Примечание +

+

+ Если вы решили собрать Shadow с поддержкой Cracklib, выполните + эту команду: +

+
sed -i 's:DICTPATH.*:DICTPATH\t/lib/cracklib/pw_dict:' etc/login.defs
+
+

+ Подготовьте Shadow к компиляции: +

+
touch /usr/bin/passwd
+./configure --sysconfdir=/etc \
+            --disable-static  \
+            --with-{b,yes}crypt \
+            --without-libbsd    \
+            --with-group-name-max-length=32
+
+

+ Значение новых параметров конфигурации: +

+
+
+ touch + /usr/bin/passwd +
+
+

+ Файл /usr/bin/passwd должен + существовать, потому что его местоположение жестко задано в + некоторых программах; если он не существует, скрипт установки + создаст его не в том месте. +

+
+
+ --with-{b,yes}crypt +
+
+

+ Оболочка расширяет это значение до двух параметров: + --with-bcrypt и + --with-yescrypt. Они + позволяют Shadow использовать алгоритмы Bcrypt и Yescrypt, + реализованные в Libxcrypt, + для хеширования паролей. Эти алгоритмы более безопасны (в + частности, гораздо более устойчивы к атакам с использованием + графических процессоров), чем традиционные алгоритмы SHA. +

+
+
+ --with-group-name-max-length=32 +
+
+

+ Максимально допустимая длина имени пользователя составляет 32 + символа. Сделайте такую же длину для названия группы. +

+
+
+ --without-libbsd +
+
+

+ Не используйте функцию readpassphrase из иблиотеки libbsd, + которой нет в LFS. Вместо этого используйте внутреннюю копию. +

+
+
+
+

+ Скомпилируйте пакет: +

+
make
+

+ С этим пакетом не поставляется набор тестов. +

+

+ Установите пакет: +

+
make exec_prefix=/usr install
+make -C man install-man
+
+
+

+ 8.27.2. Настройка Shadow +

+

+ Этот пакет содержит утилиты для добавления, изменения и удаления + пользователей и групп; установки и изменения их паролей; и + выполнения других задач администрирования. Полное объяснение того, + что означает password + shadowing, см. в файле doc/HOWTO в дереве распакованных + исходных текстов. При использовании Shadow имейте в виду, что + программы, которым необходимо проверять пароли (дисплейные + менеджеры, FTP-программы, демоны pop3 и т.д.), должны быть + совместимы с Shadow. То есть они должны уметь работать с теневыми + паролями. +

+

+ Чтобы включить поддержку теневых паролей, выполните следующую + команду:: +

+
pwconv
+

+ Чтобы включить использование теневых паролей для групп, запустите: +

+
grpconv
+

+ Конфигурация Shadow по умолчанию для утилиты useradd имеет несколько + особенностей, требующих пояснения. Во-первых, по умолчанию утилита + useradd создает + пользователя и группу с тем же названием, что и имя пользователя. + По умолчанию, идентификатора пользователя (UID) и идентификатора + группы (GID) начинаются с 1000. Это означает, что если вы не + передадите дополнительные параметры в useradd, каждый пользователь + будет членом уникальной группы в системе. Если такое поведение + нежелательно, вам нужно передать один из параметров -g или -N в useradd или изменить настройку + USERGROUPS_ENAB в файле + /etc/login.defs. Смотрите справочную + страницу useradd(8) для + получения дополнительной информации. +

+

+ Во-вторых, чтобы изменить параметры по умолчанию, необходимо + создать файл /etc/default/useradd и + настроить его в соответствии с вашими потребностями. Создайте его: +

+
mkdir -p /etc/default
+useradd -D --gid 999
+
+

+ Пояснения к параметрам /etc/default/useradd +

+
+
+ GROUP=999 +
+
+

+ Этот параметр задает начальный номер группы, используемых в + файле /etc/group. Значение 999 + берется из приведенного выше параметра --gid. Вы можете установить + любое значение. Обратите внимание, что useradd никогда не будет + повторно использовать UID или GID. Если номер, указанный в + этом параметре, уже используется будет выбран следующий + доступный номер. Также обратите внимание, что если в вашей + системе нет группы с идентификатором, равным этому номеру, + при первом использовании useradd без параметра + -g — вы получите + следующее сообщение об ошибке: useradd: unknown GID 999, даже если + учетная запись была создана правильно. Поэтому мы создали + группу users с этим + идентификатором в Раздел 7.6, + «Создание основных файлов и символических ссылок». +

+
+
+ CREATE_MAIL_SPOOL=yes +
+
+

+ Этот параметр заставит утилиту useradd создавать файл + почтового ящика для каждого нового пользователя. useradd сделает этот файл + принадлежащим группе mail с + правами доступа 0660. Если вы предпочитаете, не создавать эти + файлы, выполните следующую команду: +

+
sed -i '/MAIL/s/yes/no/' /etc/default/useradd
+
+
+
+
+
+

+ 8.27.3. Установка пароля пользователя root +

+

+ Придумайте пароль для root и + установите командой: +

+
passwd root
+
+
+

+ 8.27.4. + Содержимое пакета Shadow +

+
+
+
+ Установленные программы: + chage, chfn, chgpasswd, chpasswd, chsh, + expiry, faillog, getsubids, gpasswd, groupadd, groupdel, + groupmems, groupmod, grpck, grpconv, grpunconv, login, logoutd, + newgidmap, newgrp, newuidmap, newusers, nologin, passwd, pwck, + pwconv, pwunconv, sg (ссылка на newgrp), su, useradd, userdel, + usermod, vigr (ссылка на vipw) и vipw +
+
+ Установленные библиотеки: + libsubid.so +
+
+ Созданные каталоги: + /etc/default и /usr/include/shadow +
+
+
+
+

+ Краткое описание +

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

+ chage +

+
+

+ Используется для изменения максимального количества дней + между обязательными сменами пароля +

+
+

+ chfn +

+
+

+ Используется для изменения полного имени пользователя и + другой информации +

+
+

+ chgpasswd +

+
+

+ Используется для обновления паролей групп в пакетном + режиме. +

+
+

+ chpasswd +

+
+

+ Используется для обновления паролей пользователей в + пакетном режиме. +

+
+

+ chsh +

+
+

+ Используется для изменения оболочки входа для + пользователя. +

+
+

+ expiry +

+
+

+ Проверяет и применяет текущую политику истечения срока + действия пароля +

+
+

+ faillog +

+
+

+ Используется для проверки журнала неудачных попыток входа + в систему, для установки максимального количества + неудачных попыток до блокировки учетной записи и для + сброса счетчика неудачных попыток. +

+
+

+ getsubids +

+
+

+ Используется для перечисления подчиненных диапазонов + идентификаторов для пользователя +

+
+

+ gpasswd +

+
+

+ Используется для добавления и удаления пользователей и + администраторов в группы. +

+
+

+ groupadd +

+
+

+ Создает группу с указанным именем +

+
+

+ groupdel +

+
+

+ Удаляет группу с указанным именем +

+
+

+ groupmems +

+
+

+ Позволяет пользователю управлять своим собственным + списком членов группы без привилегий суперпользователя +

+
+

+ groupmod +

+
+

+ Используется для изменения имени группы или GID +

+
+

+ grpck +

+
+

+ Проверяет целостность файлов групп /etc/group и /etc/gshadow +

+
+

+ grpconv +

+
+

+ Создает или изменяет файл теневых групп, используя для + этого обычный файл групп +

+
+

+ grpunconv +

+
+

+ Обновляет /etc/group из + /etc/gshadow, а затем + удаляет последний +

+
+

+ login +

+
+

+ Используется системой для того, чтобы пользователь мог + войти в систему +

+
+

+ logoutd +

+
+

+ Это демон, используемый для обеспечения соблюдения + ограничений на время входа в систему и порты +

+
+

+ newgidmap +

+
+

+ Используется для сопоставления gid пространства имен + пользователя +

+
+

+ newgrp +

+
+

+ Используется для изменения GID во время сеанса входа в + систему +

+
+

+ newuidmap +

+
+

+ Используется для сопоставления uid пространства имен + пользователя +

+
+

+ newusers +

+
+

+ Используется для создания или изменения + последовательности учетных записей +

+
+

+ nologin +

+
+

+ Отображает сообщение о том, что учетная запись + недоступна; она предназначена для использования в + качестве оболочки по умолчанию для отключенных учетных + записей +

+
+

+ passwd +

+
+

+ Используется для изменения пароля для учетной записи + пользователя или группы. +

+
+

+ pwck +

+
+

+ Проверяет целостность файлов паролей /etc/passwd и /etc/shadow +

+
+

+ pwconv +

+
+

+ Создает или изменяет файл теневых паролей, используя для + этого обычный файл паролей +

+
+

+ pwunconv +

+
+

+ Обновляет /etc/passwd из + /etc/shadow а затем удаляет + последний +

+
+

+ sg +

+
+

+ Выполняет указанную команду в случае, если у пользователя + идентификатор группы GID совпадает с идентификатором + указанной группы +

+
+

+ su +

+
+

+ Запускает оболочку с заменой идентификаторов пользователя + и группы +

+
+

+ useradd +

+
+

+ Создает нового пользователя с указанным именем, либо + изменяет информацию, задаваемую по умолчанию для нового + пользователя +

+
+

+ userdel +

+
+

+ Удаляет учетную запись указанного пользователя +

+
+

+ usermod +

+
+

+ Используется для изменения имени пользователя, + идентификатора пользователя (UID), оболочки, группы, + домашнего каталога и т.д. +

+
+

+ vigr +

+
+

+ Редактирует файлы /etc/group или /etc/gshadow +

+
+

+ vipw +

+
+

+ Редактирует файлы /etc/passwd или /etc/shadow +

+
+

+ libsubid +

+
+

+ библиотека для обработки подчиненных диапазонов + идентификаторов пользователей и групп +

+
+
+
+
+ + + diff --git a/lfs-12.1-sysv/chapter08/stripping.html b/lfs-12.1-sysv/chapter08/stripping.html new file mode 100644 index 0000000..9832849 --- /dev/null +++ b/lfs-12.1-sysv/chapter08/stripping.html @@ -0,0 +1,224 @@ + + + + + + 8.83. Удаление отладочных символов + + + + + + + + +

+ 8.83. + Удаление отладочных символов +

+
+

+ Этот раздел является необязательным. Если предполагаемый пользователь + не является программистом и не планирует выполнять какую-либо отладку + системного программного обеспечения, размер системы можно уменьшить + примерно на 2 ГБ, удалив отладочные символы и некоторые ненужные + записи таблицы символов из двоичных файлов и библиотек. Это не + вызывает никаких неудобств для обычного пользователя Linux. +

+

+ Большинство людей, использующих приведенные ниже команды, не + испытывают никаких трудностей. Однако легко допустить опечатку и + сделать новую систему непригодной для использования. Поэтому перед + выполнением команды strip рекомендуется сделать + резервную копию системы LFS. +

+

+ Команда strip с + параметром --strip-unneeded + удаляет все отладочные символы из двоичного файла или библиотеки. + Кроме этого, она удаляет все записи таблицы символов, ненужные + компоновщику (для статических библиотек) или динамическому + компоновщику (для динамически подключаемых двоичных файлов и общих + библиотек). +

+

+ Отладочные символы из выбранных библиотек сжимаются с помощью + Zlib и сохраняются в отдельных + файлах. Эта отладочная информация необходима при выполнении + регрессионных тестов, с помощью + valgrind или + gdb позже, в BLFS. +

+

+ Обратите внимание, что команда strip перезапишет двоичный файл или + библиотеку, которую она обрабатывает. Это может привести к сбою + процессов, использующих код или данные из файла. Если это затронет + сам процесс, выполняющий strip, удаляемый двоичный файл или + библиотека могут быть уничтожены; это может сделать систему полностью + непригодной для использования. Чтобы избежать этого, мы скопируем + некоторые библиотеки и двоичные файлы в /tmp, очистим их и переустановим с помощью команды + install. Прочтите + статью Раздел 8.2.1, «Проблемы с + обновлением», чтобы понять, почему следует использовать команду + install здесь. +

+
+ [Примечание] +

+ Примечание +

+

+ Имя загрузчика ELF — ld-linux-x86-64.so.2 в 64-битных системах. и + ld-linux.so.2 в 32-битных системах. Конструкция ниже выбирает + правильное имя для текущей архитектуры, исключая всё, что + заканчивается на g, если приведенные + ниже команды уже были выполнены. +

+
+
+ [Важно] +

+ Важно +

+

+ Если есть какой-либо пакет, версия которого отличается от версии, + указанной в книге (либо в соответствии с рекомендациями по + безопасности, либо в соответствии с личными предпочтениями), может + потребоваться обновить имя файла библиотеки в save_usrlib или online_usrlib. В + противном случае система может стать полностью непригодной для + использования. +

+
+
save_usrlib="$(cd /usr/lib; ls ld-linux*[^g])
+             libc.so.6
+             libthread_db.so.1
+             libquadmath.so.0.0.0
+             libstdc++.so.6.0.32
+             libitm.so.1.0.0
+             libatomic.so.1.2.0"
+
+cd /usr/lib
+
+for LIB in $save_usrlib; do
+    objcopy --only-keep-debug --compress-debug-sections=zlib $LIB $LIB.dbg
+    cp $LIB /tmp/$LIB
+    strip --strip-unneeded /tmp/$LIB
+    objcopy --add-gnu-debuglink=$LIB.dbg /tmp/$LIB
+    install -vm755 /tmp/$LIB /usr/lib
+    rm /tmp/$LIB
+done
+
+online_usrbin="bash find strip"
+online_usrlib="libbfd-2.42.so
+               libsframe.so.1.0.0
+               libhistory.so.8.2
+               libncursesw.so.6.4-20230520
+               libm.so.6
+               libreadline.so.8.2
+               libz.so.1.3.1
+               libzstd.so.1.5.5
+               $(cd /usr/lib; find libnss*.so* -type f)"
+
+for BIN in $online_usrbin; do
+    cp /usr/bin/$BIN /tmp/$BIN
+    strip --strip-unneeded /tmp/$BIN
+    install -vm755 /tmp/$BIN /usr/bin
+    rm /tmp/$BIN
+done
+
+for LIB in $online_usrlib; do
+    cp /usr/lib/$LIB /tmp/$LIB
+    strip --strip-unneeded /tmp/$LIB
+    install -vm755 /tmp/$LIB /usr/lib
+    rm /tmp/$LIB
+done
+
+for i in $(find /usr/lib -type f -name \*.so* ! -name \*dbg) \
+         $(find /usr/lib -type f -name \*.a)                 \
+         $(find /usr/{bin,sbin,libexec} -type f); do
+    case "$online_usrbin $online_usrlib $save_usrlib" in
+        *$(basename $i)* )
+            ;;
+        * ) strip --strip-unneeded $i
+            ;;
+    esac
+done
+
+unset BIN LIB save_usrlib online_usrbin online_usrlib
+
+

+ Большое количество файлов будет помечено как ошибочные, потому что + формат файла не распознан. Эти предупреждения можно смело + игнорировать. Они указывают на то, что файлы являются скриптами, а не + двоичными файлами. +

+
+ + + diff --git a/lfs-12.1-sysv/chapter08/sysklogd.html b/lfs-12.1-sysv/chapter08/sysklogd.html new file mode 100644 index 0000000..f113c0a --- /dev/null +++ b/lfs-12.1-sysv/chapter08/sysklogd.html @@ -0,0 +1,208 @@ + + + + + + 8.80. Sysklogd-1.5.1 + + + + + + + + +

+ 8.80. + Sysklogd-1.5.1 +

+
+
+

+ Пакет Sysklogd содержит программы для логирования системных + сообщений, таких как сообщения ядра, когда происходят различные + события. +

+
+
+
+ Приблизительное время сборки: + менее 0.1 SBU +
+
+ Требуемое дисковое + пространство: 680 KB +
+
+
+
+
+

+ 8.80.1. Установка пакета Sysklogd +

+

+ Во-первых, устраните проблему, которая при некоторых условиях + вызывает в klogd ошибку сегментирования и исправьте устаревшую + программную конструкцию: +

+
sed -i '/Error loading kernel symbols/{n;n;d}' ksym_mod.c
+sed -i 's/union wait/int/' syslogd.c
+

+ Скомпилируйте пакет: +

+
make
+

+ Этот пакет не содержит набора тестов. +

+

+ Установите пакет: +

+
make BINDIR=/sbin install
+
+
+

+ 8.80.2. Настройка + Sysklogd +

+

+ Создайте новый файл /etc/syslog.conf, + выполнив следующую команду: +

+
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
+
+
+

+ 8.80.3. + Содержимое пакета Sysklogd +

+
+
+
+ Установленные программы: + klogd и syslogd +
+
+
+
+

+ Краткое описание +

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

+ klogd +

+
+

+ Системный демон для перехвата и регистрации сообщений + ядра +

+
+

+ syslogd +

+
+

+ Регистрирует сообщения системных программ для записи в + лог [Каждое регистрируемое сообщение содержит как минимум + время события, имя хоста, а также имя программы, но это + зависит от настроек службы логирования.] +

+
+
+
+
+ + + diff --git a/lfs-12.1-sysv/chapter08/sysvinit.html b/lfs-12.1-sysv/chapter08/sysvinit.html new file mode 100644 index 0000000..23f79bf --- /dev/null +++ b/lfs-12.1-sysv/chapter08/sysvinit.html @@ -0,0 +1,313 @@ + + + + + + 8.81. Sysvinit-3.08 + + + + + + + + +

+ 8.81. + Sysvinit-3.08 +

+
+
+

+ Пакет Sysvinit содержит программы для управления загрузкой, + выполнением и выключением системы. +

+
+
+
+ Приблизительное время сборки: + менее 0.1 SBU +
+
+ Требуемое дисковое + пространство: 3.5 MB +
+
+
+
+
+

+ 8.81.1. Установка пакета Sysvinit +

+

+ Сначала примените патч, который удаляет несколько программ, + установленных другими пакетами и исправляет предупреждение + компилятора: +

+
patch -Np1 -i ../sysvinit-3.08-consolidated-1.patch
+

+ Скомпилируйте пакет: +

+
make
+

+ С этим пакетом не поставляется набор тестов. +

+

+ Установите пакет: +

+
make install
+
+
+

+ 8.81.2. + Содержимое пакета Sysvinit +

+
+
+
+ Установленные программы: + bootlogd, fstab-decode, halt, init, + killall5, poweroff (ссылка на halt), reboot (ссылка на halt), + runlevel, shutdown и telinit (ссылка на init) +
+
+
+
+

+ Краткое описание +

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

+ bootlogd +

+
+

+ Логирует сообщения при загрузке системы +

+
+

+ fstab-decode +

+
+

+ Запускает команду с аргументами, заданными в fstab +

+
+

+ halt +

+
+

+ Обычно вызывает команду shutdown с параметром + -h, за + исключением случаев, когда уровень запуска уже равен 0, + тогда он посылает ядру сигнал на остановку системы; Кроме + этого отмечает в файле /var/log/wtmp, что система завершает + работу +

+
+

+ init +

+
+

+ Первый процесс, который запускается после инициализации + оборудования; init берет на себя процесс загрузки и + запускает все процессы, которые указанны в его файле + конфигурации +

+
+

+ killall5 +

+
+

+ Посылает сигнал всем процессам, за исключением процессов + в его собственном сеансе; он не завершит свою + родительскую оболочку +

+
+

+ poweroff +

+
+

+ Посылает ядру команду остановить систему и выключить + компьютер (смотрите команду halt) +

+
+

+ reboot +

+
+

+ Посылает ядру команду перезагрузить систему (смотрите + команду halt) +

+
+

+ runlevel +

+
+

+ Сообщает о предыдущем и текущем уровнях выполнения так, + как это указано в последней записи в файле /run/utmp +

+
+

+ shutdown +

+
+

+ Безопасно останавливает систему, отправляя сигналы всем + процессам и оповещая всех пользователей, находящихся в + системе +

+
+

+ telinit +

+
+

+ Сообщает init на какой уровень + выполнения перейти +

+
+
+
+
+ + + diff --git a/lfs-12.1-sysv/chapter08/tar.html b/lfs-12.1-sysv/chapter08/tar.html new file mode 100644 index 0000000..fb77a3e --- /dev/null +++ b/lfs-12.1-sysv/chapter08/tar.html @@ -0,0 +1,194 @@ + + + + + + 8.70. Tar-1.35 + + + + + + + + +

+ 8.70. Tar-1.35 +

+
+
+

+ Пакет Tar предоставляет возможность создавать tar архивы, а также + производить с ними различные манипуляции. Tar может распаковать + предварительно созданный архив, добавить или обновить файлы в нём, + вернуть список файлов в архиве. +

+
+
+
+ Приблизительное время сборки: + 0.5 SBU +
+
+ Требуемое дисковое + пространство: 43 MB +
+
+
+
+
+

+ 8.70.1. Установка пакета Tar +

+

+ Подготовьте Tar к компиляции: +

+
FORCE_UNSAFE_CONFIGURE=1  \
+./configure --prefix=/usr
+
+

+ Значение параметра configure: +

+
+
+ FORCE_UNSAFE_CONFIGURE=1 +
+
+

+ Этот параметр принудительно запускает тест для mknod от имени пользователя root. Обычно считается опасным запускать + этот тест от имени пользователя root, но, поскольку он выполняется в + системе, которая была собрана лишь частично, его + переопределение допустимо. +

+
+
+
+

+ Скомпилируйте пакет: +

+
make
+

+ Чтобы протестировать пакет, выполните: +

+
make check
+

+ Известно, что один тест, capabilities: binary store/restore, + завершается ошибкой при запуске, потому что в LFS отсутствует + selinux, он будет пропущен, если ядро хоста не поддерживает + расширенные атрибуты или метки безопасности файловой системы, + используемой для сборки LFS. +

+

+ Установите пакет: +

+
make install
+make -C doc install-html docdir=/usr/share/doc/tar-1.35
+
+
+

+ 8.70.2. Содержимое + пакета Tar +

+
+
+
+ Установленные программы: + tar +
+
+ Созданные каталоги: + /usr/share/doc/tar-1.35 +
+
+
+
+

+ Краткое описание +

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

+ tar +

+
+

+ Создает архивы, извлекает файлы и отображает содержимое + архивов, также известных как Тарболл. +

+
+
+
+
+ + + diff --git a/lfs-12.1-sysv/chapter08/tcl.html b/lfs-12.1-sysv/chapter08/tcl.html new file mode 100644 index 0000000..a09e33d --- /dev/null +++ b/lfs-12.1-sysv/chapter08/tcl.html @@ -0,0 +1,271 @@ + + + + + + 8.15. Tcl-8.6.13 + + + + + + + + +

+ 8.15. Tcl-8.6.13 +

+
+
+

+ Пакет Tcl содержит Tool Command + Language, надежный скриптовый язык общего назначения. Пакет + Expect написан на языке + Tcl (произносится как "тикл"). +

+
+
+
+ Приблизительное время сборки: + 2.7 SBU +
+
+ Требуемое дисковое + пространство: 89 MB +
+
+
+
+
+

+ 8.15.1. Установка пакета Tcl +

+

+ Этот пакет и следующие два (Expect и DejaGNU) устанавливаются для + поддержки возможности тестирования Binutils, GCC и других пакетов. + Установка трех пакетов для целей тестирования может показаться + избыточной, но вы будете чувствовать себя увереннее, когда знаете, + что наиболее важные инструменты работают правильно. +

+

+ Подготовьте Tcl к компиляции: +

+
SRCDIR=$(pwd)
+cd unix
+./configure --prefix=/usr           \
+            --mandir=/usr/share/man
+

+ Соберите пакет: +

+
make
+
+sed -e "s|$SRCDIR/unix|/usr/lib|" \
+    -e "s|$SRCDIR|/usr/include|"  \
+    -i tclConfig.sh
+
+sed -e "s|$SRCDIR/unix/pkgs/tdbc1.1.5|/usr/lib/tdbc1.1.5|" \
+    -e "s|$SRCDIR/pkgs/tdbc1.1.5/generic|/usr/include|"    \
+    -e "s|$SRCDIR/pkgs/tdbc1.1.5/library|/usr/lib/tcl8.6|" \
+    -e "s|$SRCDIR/pkgs/tdbc1.1.5|/usr/include|"            \
+    -i pkgs/tdbc1.1.5/tdbcConfig.sh
+
+sed -e "s|$SRCDIR/unix/pkgs/itcl4.2.3|/usr/lib/itcl4.2.3|" \
+    -e "s|$SRCDIR/pkgs/itcl4.2.3/generic|/usr/include|"    \
+    -e "s|$SRCDIR/pkgs/itcl4.2.3|/usr/include|"            \
+    -i pkgs/itcl4.2.3/itclConfig.sh
+
+unset SRCDIR
+

+ Различные инструкции «sed» после команды «make» удаляют ссылки на + каталог сборки из файлов конфигурации и заменяют их на созданные + каталоги. Это необязательно для остальной части LFS, но может + понадобиться в случае, когда пакет, собранный позже, использует + Tcl. +

+

+ Чтобы протестировать пакет, выполните: +

+
make test
+

+ Установите пакет: +

+
make install
+

+ Сделайте установленную библиотеку доступной для записи, чтобы позже + можно было удалить отладочные символы: +

+
chmod -v u+w /usr/lib/libtcl8.6.so
+

+ >Установите заголовочные файлы Tcl. Они потребуются для + следующего пакета - Expect. +

+
make install-private-headers
+

+ Теперь создайте необходимую символическую ссылку: +

+
ln -sfv tclsh8.6 /usr/bin/tclsh
+

+ Переименуйте справочную страницу, которая конфликтует со справочной + страницей Perl: +

+
mv /usr/share/man/man3/{Thread,Tcl_Thread}.3
+

+ При необходимости установите документацию, выполнив следующие + команды: +

+
cd ..
+tar -xf ../tcl8.6.13-html.tar.gz --strip-components=1
+mkdir -v -p /usr/share/doc/tcl-8.6.13
+cp -v -r  ./html/* /usr/share/doc/tcl-8.6.13
+
+
+

+ 8.15.2. Содержимое + пакета Tcl +

+
+
+
+ Установленные программы: + tclsh (ссылка на tclsh8.6) и + tclsh8.6 +
+
+ Установленные библиотеки: + libtcl8.6.so и libtclstub8.6.a +
+
+
+
+

+ Краткое описание +

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

+ tclsh8.6 +

+
+

+ Командная оболочка Tcl +

+
+

+ tclsh +

+
+

+ Ссылка на tclsh8.6 +

+
+

+ libtcl8.6.so +

+
+

+ Библиотека Tcl +

+
+

+ libtclstub8.6.a +

+
+

+ Библиотека-заглушка Tcl +

+
+
+
+
+ + + diff --git a/lfs-12.1-sysv/chapter08/texinfo.html b/lfs-12.1-sysv/chapter08/texinfo.html new file mode 100644 index 0000000..af1cc5b --- /dev/null +++ b/lfs-12.1-sysv/chapter08/texinfo.html @@ -0,0 +1,334 @@ + + + + + + 8.71. Texinfo-7.1 + + + + + + + + +

+ 8.71. + Texinfo-7.1 +

+
+
+

+ Пакет Texinfo содержит программы для чтения, записи и + преобразования информационных страниц. +

+
+
+
+ Приблизительное время сборки: + 0.3 SBU +
+
+ Требуемое дисковое + пространство: 139 MB +
+
+
+
+
+

+ 8.71.1. Установка пакета Texinfo +

+

+ Подготовьте Texinfo к компиляции: +

+
./configure --prefix=/usr
+

+ Скомпилируйте пакет: +

+
make
+

+ Чтобы протестировать пакет, выполните: +

+
make check
+

+ Установите пакет: +

+
make install
+

+ По желанию установите компоненты, входящие в пакет TeX:: +

+
make TEXMF=/usr/share/texmf install-tex
+
+

+ Значение параметра make: +

+
+
+ TEXMF=/usr/share/texmf +
+
+

+ Переменная makefile TEXMF содержит + расположение корня дерева TeX, это понадобится, если, + например, пакет TeX планируется установить позже. +

+
+
+
+

+ Система документации использует простой текстовый файл для хранения + списка пунктов меню. Файл находится в /usr/share/info/dir. К сожалению, из-за случайных + проблем в Makefile различных пакетов он иногда может не + синхронизироваться с информационными страницами, установленными в + системе. Если когда-либо потребуется пересоздать файл /usr/share/info/dir, следующие необязательные + команды решают эту задачу: +

+
pushd /usr/share/info
+  rm -v dir
+  for f in *
+    do install-info $f dir 2>/dev/null
+  done
+popd
+
+
+

+ 8.71.2. + Содержимое пакета Texinfo +

+
+
+
+ Установленные программы: + info, install-info, makeinfo (ссылка на + texi2any), pdftexi2dvi, pod2texi, texi2any, texi2dvi, texi2pdf, + и texindex +
+
+ Установленные библиотеки: + MiscXS.so, Parsetexi.so и XSParagraph.so + (все в /usr/lib/texinfo) +
+
+ Созданные каталоги: + /usr/share/texinfo и + /usr/lib/texinfo +
+
+
+
+

+ Краткое описание +

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

+ info +

+
+

+ Используется для чтения информационных страниц, которые + похожи на справочные страницы, но гораздо подробнее + описывают применение всех доступных параметров командной + строки [Например, сравните man bison и + info + bison.] +

+
+

+ install-info +

+
+

+ Используется для установки информационных страниц; он + обновляет записи в индексном файле команды info +

+
+

+ makeinfo +

+
+

+ Переводит исходные документы Texinfo в информационные + страницы, обычный текст или HTML. +

+
+

+ pdftexi2dvi +

+
+

+ Используется для форматирования документа Texinfo в файл + Portable Document Format (PDF). +

+
+

+ pod2texi +

+
+

+ Преобразует Pod в формат Texinfo +

+
+

+ texi2any +

+
+

+ Переводит исходную документацию Texinfo в различные + другие форматы. +

+
+

+ texi2dvi +

+
+

+ Используется для форматирования документа Texinfo в + независимый от устройства файл, который можно распечатать +

+
+

+ texi2pdf +

+
+

+ Используется для форматирования данного документа Texinfo + в файл Portable Document Format (PDF). +

+
+

+ texindex +

+
+

+ Используется для сортировки индексных файлов Texinfo. +

+
+
+
+
+ + + diff --git a/lfs-12.1-sysv/chapter08/udev.html b/lfs-12.1-sysv/chapter08/udev.html new file mode 100644 index 0000000..fff3127 --- /dev/null +++ b/lfs-12.1-sysv/chapter08/udev.html @@ -0,0 +1,406 @@ + + + + + + 8.75. Udev из Systemd-255 + + + + + + + + +

+ 8.75. Udev из + Systemd-255 +

+
+
+

+ Пакет Udev содержит программы для динамического создания узлов + устройств. +

+
+
+
+ Приблизительное время сборки: + 0.2 SBU +
+
+ Требуемое дисковое + пространство: 144 MB +
+
+
+
+
+

+ 8.75.1. Установка пакета Udev +

+

+ Udev является частью пакета systemd-255. Используйте файл + systemd-255.tar.xz в качестве исходного архива. +

+

+ Удалите две ненужные группы render + и sgx, из правил udev по умолчанию: +

+
sed -i -e 's/GROUP="render"/GROUP="video"/' \
+       -e 's/GROUP="sgx", //' rules.d/50-udev-default.rules.in
+

+ Удалите одно правило udev, требующее полной установки Systemd: +

+
sed '/systemd-sysctl/s/^/#/' -i rules.d/99-systemd.rules.in
+

+ Измените жестко заданные пути к файлам конфигурации сети для + автономной установки udev: +

+
sed '/NETWORK_DIRS/s/systemd/udev/' -i src/basic/path-lookup.h
+

+ Подготовьте Udev к компиляции: +

+
mkdir -p build
+cd       build
+
+meson setup \
+      --prefix=/usr                 \
+      --buildtype=release           \
+      -Dmode=release                \
+      -Ddev-kvm-mode=0660           \
+      -Dlink-udev-shared=false      \
+      -Dlogind=false                \
+      -Dvconsole=false              \
+      ..
+
+

+ Значение параметров meson: +

+
+
+ --buildtype=release +
+
+

+ Этот параметр переопределяет тип сборки по умолчанию + («debug»), который создает + неоптимизированные двоичные файлы. +

+
+
+ -Dmode=release +
+
+

+ Отключает некоторые функции, которые разработчики считают + экспериментальными. +

+
+
+ -Ddev-kvm-mode=0660 +
+
+

+ По умолчанию правило udev разрешает всем пользователям доступ + к /dev/kvm. Редакторы LFS + считают это опасным. Данная опция переопределяет разрешение + по умолчанию. +

+
+
+ -Dlink-udev-shared=false +
+
+

+ Эта опция запрещает udev связываться с внутренней общей + библиотекой systemd libsystemd-shared. Эта библиотека + предназначена для совместного использования многими + компонентами Systemd, и ее использование избыточно, когда + установлен только udev. +

+
+
+ -Dlogind=false + -Dvconsole=false +
+
+

+ Эти параметры предотвращают создание нескольких файлов правил + udev, принадлежащих другим компонентам Systemd, которые мы не + будем устанавливать. +

+
+
+
+

+ Получите список предоставляемых udev helpers и сохраните его в + переменной (экспортировать его не обязательно, но это упрощает + сборку от имени обычного пользователя или при использовании + менеджера пакетов): +

+
export udev_helpers=$(grep "'name' :" ../src/udev/meson.build | \
+                      awk '{print $3}' | tr -d ",'" | grep -v 'udevadm')
+

+ Соберите только компоненты, необходимые для udev: +

+
ninja udevadm systemd-hwdb \
+      $(ninja -n | grep -Eo '(src/(lib)?udev|rules.d|hwdb.d)/[^ ]*') \
+      $(realpath libudev.so --relative-to .)                         \
+      $udev_helpers
+

+ Установите пакет: +

+
install -vm755 -d {/usr/lib,/etc}/udev/{hwdb.d,rules.d,network}
+install -vm755 -d /usr/{lib,share}/pkgconfig
+install -vm755 udevadm                     /usr/bin/
+install -vm755 systemd-hwdb                /usr/bin/udev-hwdb
+ln      -svfn  ../bin/udevadm              /usr/sbin/udevd
+cp      -av    libudev.so{,*[0-9]}         /usr/lib/
+install -vm644 ../src/libudev/libudev.h    /usr/include/
+install -vm644 src/libudev/*.pc            /usr/lib/pkgconfig/
+install -vm644 src/udev/*.pc               /usr/share/pkgconfig/
+install -vm644 ../src/udev/udev.conf       /etc/udev/
+install -vm644 rules.d/* ../rules.d/README         /usr/lib/udev/rules.d/
+install -vm644 $(find ../rules.d/*.rules \
+                      -not -name '*power-switch*') /usr/lib/udev/rules.d/
+install -vm644 hwdb.d/*  ../hwdb.d/{*.hwdb,README} /usr/lib/udev/hwdb.d/
+install -vm755 $udev_helpers                       /usr/lib/udev
+install -vm644 ../network/99-default.link          /usr/lib/udev/network
+

+ Установите некоторые пользовательские правила и вспомогательные + файлы, полезные в среде LFS: +

+
tar -xvf ../../udev-lfs-20230818.tar.xz
+make -f udev-lfs-20230818/Makefile.lfs install
+

+ Установите справочные страницы: +

+
tar -xf ../../systemd-man-pages-255.tar.xz                            \
+    --no-same-owner --strip-components=1                              \
+    -C /usr/share/man --wildcards '*/udev*' '*/libudev*'              \
+                                  '*/systemd.link.5'                  \
+                                  '*/systemd-'{hwdb,udevd.service}.8
+
+sed 's|systemd/network|udev/network|'                                 \
+    /usr/share/man/man5/systemd.link.5                                \
+  > /usr/share/man/man5/udev.link.5
+
+sed 's/systemd\(\\\?-\)/udev\1/' /usr/share/man/man8/systemd-hwdb.8   \
+                               > /usr/share/man/man8/udev-hwdb.8
+
+sed 's|lib.*udevd|sbin/udevd|'                                        \
+    /usr/share/man/man8/systemd-udevd.service.8                       \
+  > /usr/share/man/man8/udevd.8
+
+rm /usr/share/man/man*/systemd*
+

+ Наконец, сбросьте значение переменной udev_helpers: +

+
unset udev_helpers
+
+
+

+ 8.75.2. Настройка Udev +

+

+ Информация об аппаратных устройствах хранится в каталогах + /etc/udev/hwdb.d и /usr/lib/udev/hwdb.d. Udev необходимо, чтобы эта информация была + скомпилирована в двоичную базу данных /etc/udev/hwdb.bin. Создайте исходную базу + данных: +

+
udev-hwdb update
+

+ Эту команду необходимо запускать каждый раз при обновлении + информации об оборудовании. +

+
+
+

+ 8.75.3. Содержимое + пакета Udev +

+
+
+
+ Установленные программы: + udevadm, udevd (символическая ссылка на + udevadm) и udev-hwdb +
+
+ Установленные библиотеки: + libudev.so +
+
+ Созданные каталоги: + /etc/udev и /usr/lib/udev +
+
+
+
+

+ Short Descriptions +

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

+ udevadm +

+
+

+ Универсальный инструмент администрирования udev: + управляет демоном udevd, предоставляет информацию из базы + данных Udev, отслеживает uevents, ожидает завершения + uevents, проверяет конфигурацию Udev и запускает uevents + для данного устройства +

+
+

+ udevd +

+
+

+ Демон, который прослушивает uevents в сокете netlink, + создает устройства и запускает настроенные внешние + программы в ответ на эти uevents +

+
+

+ udev-hwdb +

+
+

+ Обновляет или запрашивает базу данных оборудования +

+
+

+ libudev +

+
+

+ Библиотека для получения информации об устройствах udev +

+
+

+ /etc/udev +

+
+

+ Содержит файлы конфигурации Udev, разрешения для + устройств и правила именования устройств +

+
+
+
+
+ + + diff --git a/lfs-12.1-sysv/chapter08/util-linux.html b/lfs-12.1-sysv/chapter08/util-linux.html new file mode 100644 index 0000000..4990d47 --- /dev/null +++ b/lfs-12.1-sysv/chapter08/util-linux.html @@ -0,0 +1,1930 @@ + + + + + + 8.78. Util-linux-2.39.3 + + + + + + + + +

+ 8.78. + Util-linux-2.39.3 +

+
+
+

+ Пакет Util-linux содержит различные служебные программы. Среди них + утилиты для работы с файловыми системами, консолями, разделами и + сообщениями. +

+
+
+
+ Приблизительное время сборки: + 0.5 SBU +
+
+ Требуемое дисковое + пространство: 313 MB +
+
+
+
+
+

+ 8.78.1. Установка пакета Util-linux +

+

+ Сначала отключите проблемный тест: +

+
sed -i '/test_mkfds/s/^/#/' tests/helpers/Makemodule.am
+

+ Подготовьте Util-linux к компиляции: +

+
./configure --bindir=/usr/bin    \
+            --libdir=/usr/lib    \
+            --runstatedir=/run   \
+            --sbindir=/usr/sbin  \
+            --disable-chfn-chsh  \
+            --disable-login      \
+            --disable-nologin    \
+            --disable-su         \
+            --disable-setpriv    \
+            --disable-runuser    \
+            --disable-pylibmount \
+            --disable-static     \
+            --without-python     \
+            --without-systemd    \
+            --without-systemdsystemunitdir        \
+            ADJTIME_PATH=/var/lib/hwclock/adjtime \
+            --docdir=/usr/share/doc/util-linux-2.39.3
+

+ Параметры --disable и --without предотвращают появление + предупреждений о сборке компонентов, для которых требуются пакеты, + отсутствующие в LFS, или которые несовместимы с программами, + установленными другими пакетами. +

+

+ Скомпилируйте пакет: +

+
make
+

+ По желанию запустите набор тестов от имени пользователя без + полномочий root: +

+
+ [Предупреждение] +

+ Предупреждение +

+

+ Запуск набора тестов от имени пользователя root может повредить вашу систему. Чтобы + запустить тесты, опция CONFIG_SCSI_DEBUG для ядра должна быть + доступна в текущей работающей системе и должна быть собрана как + модуль. Включение её в ядро будет прерывать загрузку. Для полного + охвата тестами в систему необходимо установить другие пакеты из + BLFS. По желанию, этот тест можно запустить после загрузки в + готовую систему LFS: +

+
bash tests/run.sh --srcdir=$PWD --builddir=$PWD
+
+
chown -R tester .
+su tester -c "make -k check"
+

+ Тесты с жесткими ссылками + завершатся неудачей, если в ядре хоста не включена опция + CONFIG_CRYPTO_USER_API_HASH или не + включено никаких опций, обеспечивающих реализацию SHA256 (например, + CONFIG_CRYPTO_SHA256 или CONFIG_CRYPTO_SHA256_SSSE3, если процессор + поддерживает инструкции SSE3). Кроме того, известно, что два + подтеста из misc: mbsencode и один подтест из script: replay не + проходят. +

+

+ Установите пакет: +

+
make install
+
+
+

+ 8.78.2. + Содержимое пакета Util-linux +

+
+
+
+ Установленные программы: + addpart, agetty, blkdiscard, blkid, + blkzone, blockdev, cal, cfdisk, chcpu, chmem, choom, chrt, col, + colcrt, colrm, column, ctrlaltdel, delpart, dmesg, eject, + fallocate, fdisk, fincore, findfs, findmnt, flock, fsck, + fsck.cramfs, fsck.minix, fsfreeze, fstrim, getopt, hardlink, + hexdump, hwclock, i386 (ссылка на setarch), ionice, ipcmk, + ipcrm, ipcs, irqtop, isosize, kill, last, lastb (ссылка на + last), ldattach, linux32 (link to setarch), linux64 (ссылка на + setarch), logger, look, losetup, lsblk, lscpu, lsipc, lsirq, + lsfd, lslocks, lslogins, lsmem, lsns, mcookie, mesg, mkfs, + mkfs.bfs, mkfs.cramfs, mkfs.minix, mkswap, more, mount, + mountpoint, namei, nsenter, partx, pivot_root, prlimit, + readprofile, rename, renice, resizepart, rev, rfkill, rtcwake, + script, scriptlive, scriptreplay, setarch, setsid, setterm, + sfdisk, sulogin, swaplabel, swapoff, swapon, switch_root, + taskset, uclampset, ul, umount, uname26 (ссылка на setarch), + unshare, utmpdump, uuidd, uuidgen, uuidparse, wall, wdctl, + whereis, wipefs, x86_64 (ссылка на setarch) и zramctl +
+
+ Установленные библиотеки: + libblkid.so, libfdisk.so, libmount.so, + libsmartcols.so и libuuid.so +
+
+ Созданные каталоги: + /usr/include/blkid, + /usr/include/libfdisk, /usr/include/libmount, + /usr/include/libsmartcols, /usr/include/uuid, + /usr/share/doc/util-linux-2.39.3 и /var/lib/hwclock +
+
+
+
+

+ Краткое описание +

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

+ addpart +

+
+

+ Сообщает ядру Linux о новых разделах +

+
+

+ agetty +

+
+

+ Открывает порт tty, запрашивает имя для входа, а затем + вызывает программу login +

+
+

+ blkdiscard +

+
+

+ Очищает сектора на устройстве +

+
+

+ blkid +

+
+

+ Утилита командной строки для вывода атрибутов блочного + устройства +

+
+

+ blkzone +

+
+

+ Используется для управления зонированными блочными + системами хранения +

+
+

+ blockdev +

+
+

+ Позволяет пользователям вызывать ioctl блочного + устройства из командной строки +

+
+

+ cal +

+
+

+ Отображает простой календарь +

+
+

+ cfdisk +

+
+

+ Управляет таблицей разделов данного устройства +

+
+

+ chcpu +

+
+

+ Изменяет состояние процессоров +

+
+

+ chmem +

+
+

+ Настраивает память +

+
+

+ choom +

+
+

+ Отображает и регулирует оценки OOM-killer, используемые + для определения того, какой процесс следует завершить + первым, когда в Linux заканчивается память +

+
+

+ chrt +

+
+

+ Манипулирует атрибутами процесса в режиме реального + времени +

+
+

+ col +

+
+

+ Фильтрует обратные переносы строк из входного потока +

+
+

+ colcrt +

+
+

+ Фильтрует данные, выдаваемые командой nroff на терминалы, у + которых отсутствует ряд возможностей, например, + отображение перечеркнутых символов или верхних и нижних + индексов +

+
+

+ colrm +

+
+

+ Фильтрует вывод указанных столбцов +

+
+

+ column +

+
+

+ Форматирует заданный файл в несколько столбцов +

+
+

+ ctrlaltdel +

+
+

+ Устанавливает для комбинации символов Ctrl+Alt+Del + жесткую или мягкую перезагрузку +

+
+

+ delpart +

+
+

+ Запрашивает у ядра Linux удаление раздела +

+
+

+ dmesg +

+
+

+ Выводит загрузочные сообщения ядра +

+
+

+ eject +

+
+

+ Извлекает съемный носитель +

+
+

+ fallocate +

+
+

+ Предварительное выделение места под файл +

+
+

+ fdisk +

+
+

+ Манипулирует таблицей разделов указанного устройства +

+
+

+ fincore +

+
+

+ Подчитывает сколько страниц приложение хранит в памяти + ядра +

+
+

+ findfs +

+
+

+ Находит файловую систему по метке или универсальному + уникальному идентификатору (UUID) +

+
+

+ findmnt +

+
+

+ Представляет собой интерфейс командной строки к + библиотеке libmount для работы с файлами mountinfo, fstab + и mtab +

+
+

+ flock +

+
+

+ Осуществляет блокировку файла, а затем выполняет команду, + не снимая блокировку +

+
+

+ fsck +

+
+

+ Используется для проверки и, при необходимости, + восстановления файловых систем +

+
+

+ fsck.cramfs +

+
+

+ Выполняет проверку целостности файловой системы Cramfs на + данном устройстве +

+
+

+ fsck.minix +

+
+

+ Выполняет проверку целостности файловой системы Minix на + данном устройстве +

+
+

+ fsfreeze +

+
+

+ Очень простая программа-обертка для выполнение операций с + драйвером ядра FIFREEZE/FITHAW ioctl +

+
+

+ fstrim +

+
+

+ Освобождает неиспользованные блоки смонтированной + файловой системы +

+
+

+ getopt +

+
+

+ Разбирает параметры указанной командной строки +

+
+

+ hardlink +

+
+

+ Объединяет дубликаты файлов путем создания жестких ссылок +

+
+

+ hexdump +

+
+

+ Создает дамп указанного файла в шестнадцатеричном, + десятичном, восьмеричном или ascii-формате +

+
+

+ hwclock +

+
+

+ Читает или устанавливает значение аппаратных часов + системы, называемых также часами реального времени (RTC- + Real-Time Clock) или часами БИОС (BIOS - Basic + Input-Output System) +

+
+

+ i386 +

+
+

+ Символьная ссылка на setarch +

+
+

+ ionice +

+
+

+ Читает или устанавливает класс и приоритет обработки + ввода/вывода для программ +

+
+

+ ipcmk +

+
+

+ Создает различные ресурсы межпроцессного взаимодействия + (IPC) +

+
+

+ ipcrm +

+
+

+ Удаляет указанный ресурс межпроцессного взаимодействия + (IPC) +

+
+

+ ipcs +

+
+

+ Предоставляет информацию о состоянии IPC +

+
+

+ irqtop +

+
+

+ Отображает информацию о счетчике прерываний ядра в стиле + top(1) +

+
+

+ isosize +

+
+

+ Сообщает о размере файловой системы iso9660 +

+
+

+ kill +

+
+

+ Посылает сигналы процессам +

+
+

+ last +

+
+

+ Показывает, какие пользователи в последний раз входили (и + выходили), выполняя поиск в файле /var/log/wtmp; кроме этого показывает + информацию о загрузке системы, завершение работы и + изменениях уровня выполнения +

+
+

+ lastb +

+
+

+ Показывает неудачные попытки входа в систему, + зарегистрированные в /var/log/btmp +

+
+

+ ldattach +

+
+

+ Назначает устройству последовательного доступа алгоритм, + определяющий дисциплину обслуживания этого устройства +

+
+

+ linux32 +

+
+

+ Символическая ссылка на setarch +

+
+

+ linux64 +

+
+

+ Символическая ссылка на setarch +

+
+

+ logger +

+
+

+ Добавляет указанное сообщение в системный журнал +

+
+

+ look +

+
+

+ Отображает строки, начинающиеся с указанной + последовательности символов +

+
+

+ losetup +

+
+

+ Настраивает и управляет устройствами типа loop +

+
+

+ lsblk +

+
+

+ Выводит информацию обо всех или выбранных блочных + устройствах в древовидном формате +

+
+

+ lscpu +

+
+

+ Выводит информацию об архитектуре процессора +

+
+

+ lsfd +

+
+

+ Отображает информацию об открытых файлах; заменяет + lsof +

+
+

+ lsipc +

+
+

+ Выводит информацию об объектах IPC, которые в настоящее + время используются в системе +

+
+

+ lsirq +

+
+

+ Отображает информацию о счетчике прерываний ядра +

+
+

+ lslocks +

+
+

+ Отображает список всех заблокированных в настоящее время + файлов в системе +

+
+

+ lslogins +

+
+

+ Выводит информацию о пользователях, группах и системных + учетных записях +

+
+

+ lsmem +

+
+

+ Отображает диапазоны доступной памяти с указанием их + оперативного статуса +

+
+

+ lsns +

+
+

+ Отображает список пространств имен +

+
+

+ mcookie +

+
+

+ Генерирует для xauth магические куки + (128-битные случайные числа в шестнадцатеричном формате) +

+
+

+ mesg +

+
+

+ Определяет, могут ли другие пользователи отправлять + сообщения на терминал текущего пользователя +

+
+

+ mkfs +

+
+

+ Создает файловую систему на устройстве (обычно это раздел + жесткого диска) +

+
+

+ mkfs.bfs +

+
+

+ Создает файловую систему Santa Cruz Operations (SCO) bfs +

+
+

+ mkfs.cramfs +

+
+

+ Создает файловую систему cramfs +

+
+

+ mkfs.minix +

+
+

+ Создает файловую систему Minix +

+
+

+ mkswap +

+
+

+ Инициализирует данное устройство или файл для + использования в качестве области подкачки +

+
+

+ more +

+
+

+ Фильтр постраничного вывода текста +

+
+

+ mount +

+
+

+ Подключение файловой системы, находящейся на заданном + устройстве, к указанному каталогу в дереве файловой + системы +

+
+

+ mountpoint +

+
+

+ Проверяет, является ли каталог точкой монтирования +

+
+

+ namei +

+
+

+ Разделяет на составляющие путь к файлу или каталогу, + показывая информацию о типе каждого элемента +

+
+

+ nsenter +

+
+

+ Запускает программу в пространстве имен других процессов +

+
+

+ partx +

+
+

+ Сообщает ядру информацию о наличии и количестве разделов, + находящихся на диске +

+
+

+ pivot_root +

+
+

+ Делает данную файловую систему новой корневой файловой + системой текущего процесса +

+
+

+ prlimit +

+
+

+ Получает и устанавливает ограничения использования + ресурсов процесса +

+
+

+ readprofile +

+
+

+ Читает информацию о профилировании ядра +

+
+

+ rename +

+
+

+ Переименовывает заданные файлы, заменяя одну строку + другой +

+
+

+ renice +

+
+

+ Изменяет приоритет запущенных процессов +

+
+

+ resizepart +

+
+

+ Запрашивает у ядра Linux изменение размера раздела +

+
+

+ rev +

+
+

+ Меняет в указанном файле порядок строк на обратный +

+
+

+ rfkill +

+
+

+ Bнструмент командной строки для управления беспроводными + устройствами +

+
+

+ rtcwake +

+
+

+ Используется для перехода системы в спящий режим до + указанного времени пробуждения +

+
+

+ script +

+
+

+ Создает скрипт терминальной сессии +

+
+

+ scriptlive +

+
+

+ Перезапускает скрипт терминальной сессии, используя + информацию о времени +

+
+

+ scriptreplay +

+
+

+ Воспроизводит скрипт в соответствие с указанным временем + запуска +

+
+

+ setarch +

+
+

+ В окружении, используемом новой программой, изменяет + информацию об архитектуре и устанавливает флаги + персонализации +

+
+

+ setsid +

+
+

+ Запускает указанную программу в новом сеансе +

+
+

+ setterm +

+
+

+ Устанавливает атрибуты терминала +

+
+

+ sfdisk +

+
+

+ Управляет таблицей разделов диска +

+
+

+ sulogin +

+
+

+ Позволяет пользователю root входить в систему; обычно он + вызывается init, когда система + переходит в однопользовательский режим +

+
+

+ swaplabel +

+
+

+ Изменяет UUID и метку раздела подкачки +

+
+

+ swapoff +

+
+

+ Отключает устройства и файлы подкачки +

+
+

+ swapon +

+
+

+ Включает устройства и файлы, применяемые для раздела + подкачки, а также выводит список устройств и файлов, + используемых в данный момент +

+
+

+ switch_root +

+
+

+ Переключается на другую файловую систему и устанавливает + её в качестве корневой +

+
+

+ taskset +

+
+

+ Устанавливает привязку процессора к процессу +

+
+

+ uclampset +

+
+

+ Управляет атрибутами ограничения использования системы + или процесса +

+
+

+ ul +

+
+

+ Фильтр для преобразования символов подчеркивания в + escape-последовательности +

+
+

+ umount +

+
+

+ Размонтирует файловую систему из дерева ФС +

+
+

+ uname26 +

+
+

+ Символическая ссылка на setarch +

+
+

+ unshare +

+
+

+ Позволяет процессу (или потоку) отделить части своего + контекста выполнения, которые используются совместно с + другими процессами (или потоками) +

+
+

+ utmpdump +

+
+

+ Отображает содержимое указанного файла входа в систему в + удобном для пользователя формате +

+
+

+ uuidd +

+
+

+ Демон, используемый библиотекой UUID для создания + безопасных и гарантированно уникальных идентификаторов + UUID +

+
+

+ uuidgen +

+
+

+ Создает новые идентификаторы (UUID). Каждый новый UUID - + это случайная последовательность, которая, будет с очень + высокой вероятностью уникальной среди всех + идентификаторов, созданных как на локальной машине, так и + на любых других системах, в прошлом и будущем + (2128 или около 3,4 х 1038 + вариантов) +

+
+

+ uuidparse +

+
+

+ Утилита для анализа уникальных идентификаторов +

+
+

+ wall +

+
+

+ Отображает содержимое файла или, по умолчанию, его вывод + на терминалах всех пользователей, вошедших в систему в + данный момент +

+
+

+ wdctl +

+
+

+ Показывает статус аппаратного сторожевого таймера +

+
+

+ whereis +

+
+

+ Сообщает местоположение двоичного файла, исходного кода и + справочной страницы для указанной команды +

+
+

+ wipefs +

+
+

+ Стирает с устройства сигнатуру файловой системы +

+
+

+ x86_64 +

+
+

+ Символическая ссылка на setarch +

+
+

+ zramctl +

+
+

+ Программа для настройки и управления устройствами zram + (сжатый RAM-диск) +

+
+

+ libblkid +

+
+

+ Содержит подпрограммы для идентификации устройства и + извлечения токена +

+
+

+ libfdisk +

+
+

+ Содержит подпрограммы для управления таблицами разделов +

+
+

+ libmount +

+
+

+ Содержит подпрограммы для монтирования и размонтирования + блочных устройств +

+
+

+ libsmartcols +

+
+

+ Содержит подпрограммы для более удобного вывода на экран + информации в табличном виде +

+
+

+ libuuid +

+
+

+ Содержит подпрограммы для генерации уникальных + идентификаторов для объектов, которые могут быть доступны + за пределами локальной системы +

+
+
+
+
+ + + diff --git a/lfs-12.1-sysv/chapter08/vim.html b/lfs-12.1-sysv/chapter08/vim.html new file mode 100644 index 0000000..4d99020 --- /dev/null +++ b/lfs-12.1-sysv/chapter08/vim.html @@ -0,0 +1,449 @@ + + + + + + 8.72. Vim-9.1.0041 + + + + + + + + +

+ 8.72. Vim-9.1.0041 +

+
+
+

+ Пакет Vim содержит мощный текстовый редактор. +

+
+
+
+ Приблизительное время сборки: + 2.5 SBU +
+
+ Требуемое дисковое + пространство: 236 MB +
+
+
+
+ [Подсказка] +

+ Альтернативы Vim +

+

+ .Если вы предпочитаете другой текстовый редактор, например, + Emacs, Joe или Nano, обратитесь к + https://mirror.linuxfromscratch.ru/blfs/view/12.1/postlfs/editors.html + за рекомендациями по установке. +

+
+
+
+

+ 8.72.1. Установка пакета Vim +

+

+ Во-первых, измените расположение файла конфигурации vimrc на /etc: +

+
echo '#define SYS_VIMRC_FILE "/etc/vimrc"' >> src/feature.h
+

+ Подготовьте Vim к компиляции: +

+
./configure --prefix=/usr
+

+ Скомпилируйте пакет: +

+
make
+

+ Чтобы подготовить тесты, убедитесь, что пользователь tester может писать в исходное дерево: +

+
chown -R tester .
+

+ Теперь запустите тесты от имени пользователя tester: +

+
su tester -c "TERM=xterm-256color LANG=en_US.UTF-8 make -j1 test" \
+   &> vim-test.log
+

+ Набор тестов выводит на экран много двоичных данных. Это может + вызвать проблемы с настройками текущего терминала (особенно, когда + мы переопределяем переменную TERM, чтобы + удовлетворить некоторые требования набора тестов). Чтобы этого + избежать, перенаправьте вывод в файл журнала, как показано выше. + Тест пройден успешно, если лог по завершении содержит текст: + ALL DONE. +

+

+ Установите пакет: +

+
make install
+

+ Многие пользователи рефлекторно набирают vi вместо vim. Чтобы разрешить выполнение + vim, когда + пользователи вводят vi, создайте символическую ссылку + как для двоичного файла, так и для справочной страницы: +

+
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
+

+ По умолчанию документация Vim установливается в каталог + /usr/share/vim. Следующая + символическая ссылка позволяет получить доступ к документации через + каталог /usr/share/doc/vim-9.1.0041, + что согласуется с расположением документации остальных пакетов: +

+
ln -sv ../vim/vim91/doc /usr/share/doc/vim-9.1.0041
+

+ Если в LFS будет установлена система X Window, может потребоваться + перекомпилировать Vim после установки X. Vim поставляется с + графической версией редактора, для которой требуется установка X и + некоторых дополнительных библиотек. Для получения дополнительной + информации об этом процессе обратитесь к документации по Vim и + странице установки Vim в книге BLFS по адресу + https://mirror.linuxfromscratch.ru/blfs/view/12.1/postlfs/vim.html. +

+
+
+

+ 8.72.2. Настройка Vim +

+

+ По умолчанию vim + работает в режиме, несовместимом с vi. Это может показаться + необычным для пользователей, которые в прошлом использовали другие + редакторы. Параметр «nocompatible» включен ниже, чтобы подчеркнуть + тот факт, что используется новое поведение. Настройка также + напоминает тем, кто хотел бы перейти в режим «compatible», что + параметр должен быть первым в файле конфигурации. Это необходимо, + потому что изменяются другие параметры, и переопределения + происходят после этой настройки. Создайте файл конфигурации + vim по умолчанию, + выполнив следующие действия: +

+
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
+

+ Параметр set nocompatible + заставляет vim вести + себя более правильно (по умолчанию), чем vi-совместимый способ. + Удалите «no», + чтобы сохранить старое поведение vi. Параметр set backspace=2 позволяет удалять + символы через перенос строки, автоматические отступы и начало + вставки. Параметр syntax on + включает подсветку синтаксиса vim. Параметр set mouse= позволяет правильно + вставлять текст с помощью мыши при работе в chroot или через + удаленное соединение. Наконец, оператор if с параметром set background=dark корректирует + предположение vim о + цвете фона некоторых эмуляторов терминала. Это придает подсветке + лучшую цветовую схему для использования на черном фоне этих + программ. +

+

+ Документацию по другим доступным параметрам можно получить, + выполнив следующую команду: +

+
vim -c ':options'
+
+ [Примечание] +

+ Примечание +

+

+ По умолчанию vim устанавливает файлы проверки орфографии только + для английского языка. Для установки файлов проверки орфографии + других языков, скопируйте файлы .spl и, при необходимости, .sug для вашего языка и кодировки символов из + runtime/spell, сохраните их в + /usr/share/vim/vim91/spell/. +

+

+ Чтобы использовать эти файлы проверки орфографии, необходимо + указать параметры для vim в файле /etc/vimrc, пример: +

+
set spelllang=en,ru
+set spell
+

+ Дополнительные сведения смотрите в файле runtime/spell/README.txt. +

+
+
+
+

+ 8.72.3. Содержимое + пакета Vim +

+
+
+
+ Установленные программы: + ex (ссылка на vim), rview (ссылка на + vim), rvim (ссылка на vim), vi (ссылка на vim), view (ссылка на + vim), vim, vimdiff (ссылка на vim), vimtutor и xxd +
+
+ Созданные каталоги: + /usr/share/vim +
+
+
+
+

+ Краткое описание +

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

+ ex +

+
+

+ Запускает vim в режиме ex +

+
+

+ rview +

+
+

+ Это ограниченная версия view; никакие команды + оболочки не могут быть запущены, и view не может быть + приостановлен +

+
+

+ rvim +

+
+

+ Это ограниченная версия vim; никакие команды + оболочки не могут быть запущены, и vim не может быть + приостановлен +

+
+

+ vi +

+
+

+ Ссылка на vim +

+
+

+ view +

+
+

+ Запускает vim в режиме только для + чтения +

+
+

+ vim +

+
+

+ Сам редактор +

+
+

+ vimdiff +

+
+

+ Редактирует две или три версии файла с помощью + vim и + показывает различия +

+
+

+ vimtutor +

+
+

+ Обучает основным горячим клавишам и командам vim +

+
+

+ xxd +

+
+

+ Создает шестнадцатеричный дамп данного файла; он также + может выполнять обратную операцию, поэтому его можно + использовать для бинарных патчей +

+
+
+
+
+ + + diff --git a/lfs-12.1-sysv/chapter08/wheel.html b/lfs-12.1-sysv/chapter08/wheel.html new file mode 100644 index 0000000..8d30c28 --- /dev/null +++ b/lfs-12.1-sysv/chapter08/wheel.html @@ -0,0 +1,160 @@ + + + + + + 8.53. Wheel-0.42.0 + + + + + + + + +

+ 8.53. Wheel-0.42.0 +

+
+
+

+ Wheel — это библиотека Python, которая является эталонной + реализацией стандарта упаковки программ на языке Python. +

+
+
+
+ Приблизительное время сборки: + менее 0.1 SBU +
+
+ Требуемое дисковое + пространство: 1.5 MB +
+
+
+
+
+

+ 8.53.1. Установка пакета Wheel +

+

+ Скомпилируйте Wheel с помощью следующей команды: +

+
pip3 wheel -w dist --no-cache-dir --no-build-isolation --no-deps $PWD
+

+ Установите Wheel: +

+
pip3 install --no-index --find-links=dist wheel
+
+
+

+ 8.53.2. Содержимое + пакета Wheel +

+
+
+
+ Установленные программы: + wheel +
+
+ Созданные каталоги: + /usr/lib/python3.12/site-packages/wheel и + /usr/lib/python3.12/site-packages/wheel-0.42.0.dist-info +
+
+
+
+

+ Краткое описание +

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

+ wheel +

+
+

+ это утилита для распаковки, упаковки или преобразования + wheel-архивов +

+
+
+
+
+ + + diff --git a/lfs-12.1-sysv/chapter08/xml-parser.html b/lfs-12.1-sysv/chapter08/xml-parser.html new file mode 100644 index 0000000..e190c95 --- /dev/null +++ b/lfs-12.1-sysv/chapter08/xml-parser.html @@ -0,0 +1,159 @@ + + + + + + 8.43. XML::Parser-2.47 + + + + + + + + +

+ 8.43. + XML::Parser-2.47 +

+
+
+

+ Модуль XML::Parser представляет собой Perl-интерфейс к XML-парсеру + Джеймса Кларка Expat. +

+
+
+
+ Приблизительное время сборки: + менее 0.1 SBU +
+
+ Требуемое дисковое + пространство: 2.4 MB +
+
+
+
+
+

+ 8.43.1. Установка пакета XML::Parser +

+

+ Подготовьте XML::Parser к компиляции: +

+
perl Makefile.PL
+

+ Скомпилируйте пакет: +

+
make
+

+ Чтобы протестировать пакет, выполните: +

+
make test
+

+ Установите пакет: +

+
make install
+
+
+

+ 8.43.2. + Содержимое XML::Parser +

+
+
+
+ Установленный модуль: + Expat.so +
+
+
+
+

+ Краткое описание +

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

+ Expat +

+
+

+ предоставляет Perl интерфейс для Expat +

+
+
+
+
+ + + diff --git a/lfs-12.1-sysv/chapter08/xz.html b/lfs-12.1-sysv/chapter08/xz.html new file mode 100644 index 0000000..8588892 --- /dev/null +++ b/lfs-12.1-sysv/chapter08/xz.html @@ -0,0 +1,531 @@ + + + + + + 8.8. Xz-5.4.6 + + + + + + + + +

+ 8.8. Xz-5.4.6 +

+
+
+

+ Пакет Xz содержит программы для сжатия и распаковки файлов. Он + предоставляет возможности для lzma и более новых форматов сжатия + xz. Сжатие текстовых файлов с помощью xz дает лучший процент сжатия, + чем с традиционные gzip или bzip2. +

+
+
+
+ Приблизительное время сборки: + 0.1 SBU +
+
+ Требуемое дисковое + пространство: 25 MB +
+
+
+
+
+

+ 8.8.1. Установка пакета Xz +

+

+ Подготовьте Xz к компиляции: +

+
./configure --prefix=/usr    \
+            --disable-static \
+            --docdir=/usr/share/doc/xz-5.4.6
+

+ Скомпилируйте пакет: +

+
make
+

+ Чтобы протестировать пакет, выполните: +

+
make check
+

+ Установите пакет: +

+
make install
+
+
+

+ 8.8.2. Содержимое пакета + Xz +

+
+
+
+ Установленные программы: + lzcat (ссылка на xz), lzcmp (ссылка на + xzdiff), lzdiff (ссылка на xzdiff), lzegrep (ссылка на xzgrep), + lzfgrep (ссылка на xzgrep), lzgrep (ссылка на xzgrep), lzless + (ссылка на xzless), lzma (ссылка на xz), lzmadec, lzmainfo, + lzmore (ссылка на xzmore), unlzma (ссылка на xz), unxz (ссылка + на xz), xz, xzcat (ссылка на xz), xzcmp (ссылка на xzdiff), + xzdec, xzdiff, xzegrep (ссылка на xzgrep), xzfgrep (ссылка на + xzgrep), xzgrep, xzless и xzmore +
+
+ Установленные библиотеки: + liblzma.so +
+
+ Созданные каталоги: + /usr/include/lzma и + /usr/share/doc/xz-5.4.6 +
+
+
+
+

+ Краткое описание +

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

+ lzcat +

+
+

+ Распаковывает в стандартный поток вывода +

+
+

+ lzcmp +

+
+

+ Запускает cmp для файлов сжатых + LZMA +

+
+

+ lzdiff +

+
+

+ Запускает diff для файлов сжатых + LZMA +

+
+

+ lzegrep +

+
+

+ Запускает egrep для файлов сжатых + LZMA +

+
+

+ lzfgrep +

+
+

+ Запускает fgrep для файлов сжатых + LZMA +

+
+

+ lzgrep +

+
+

+ Запускает grep для файлов сжатых + LZMA +

+
+

+ lzless +

+
+

+ Запускает less для файлов сжатых + LZMA +

+
+

+ lzma +

+
+

+ Сжимает или распаковывает файлы в формате LZMA +

+
+

+ lzmadec +

+
+

+ Небольшой и быстрый декодер для файлов сжатых LZMA. +

+
+

+ lzmainfo +

+
+

+ Показывает информацию, хранящуюся в заголовке сжатого + файла LZMA +

+
+

+ lzmore +

+
+

+ Запускает more для файлов сжатых + LZMA +

+
+

+ unlzma +

+
+

+ Распаковывает файлы в формате LZMA +

+
+

+ unxz +

+
+

+ Распаковывает файлы в формате XZ +

+
+

+ xz +

+
+

+ Сжимает или распаковывает файлы в формате XZ. +

+
+

+ xzcat +

+
+

+ Распаковывает в стандартный поток вывода +

+
+

+ xzcmp +

+
+

+ Запускает cmp для сжатых XZ + файлов +

+
+

+ xzdec +

+
+

+ Небольшой и быстрый декодер для файлов сжатых XZ +

+
+

+ xzdiff +

+
+

+ Запускает diff для сжатых XZ + файлов +

+
+

+ xzegrep +

+
+

+ Запускает egrep для сжатых XZ + файлов +

+
+

+ xzfgrep +

+
+

+ Запускает fgrep для сжатых XZ + файлов +

+
+

+ xzgrep +

+
+

+ Запускает grep для сжатых XZ + файлов +

+
+

+ xzless +

+
+

+ Запускает less для сжатых XZ + файлов +

+
+

+ xzmore +

+
+

+ Запускает more для сжатых XZ + файлов +

+
+

+ liblzma +

+
+

+ Библиотека, реализующая сжатие данных без потерь с + блочной сортировкой с использованием алгоритма + Lempel-Ziv-Markov +

+
+
+
+
+ + + diff --git a/lfs-12.1-sysv/chapter08/zlib.html b/lfs-12.1-sysv/chapter08/zlib.html new file mode 100644 index 0000000..9b45ad0 --- /dev/null +++ b/lfs-12.1-sysv/chapter08/zlib.html @@ -0,0 +1,162 @@ + + + + + + 8.6. Zlib-1.3.1 + + + + + + + + +

+ 8.6. Zlib-1.3.1 +

+
+
+

+ Пакет Zlib содержит подпрограммы сжатия и распаковки, используемые + некоторыми программами. +

+
+
+
+ Приблизительное время сборки: + менее 0.1 SBU +
+
+ Требуемое дисковое + пространство: 6.4 MB +
+
+
+
+
+

+ 8.6.1. Установка пакета Zlib +

+

+ Подготовьте Zlib к компиляции: +

+
./configure --prefix=/usr
+

+ Скомпилируйте пакет: +

+
make
+

+ Чтобы протестировать пакет, выполните: +

+
make check
+

+ Установите пакет: +

+
make install
+

+ Удалите бесполезную статическую библиотеку: +

+
rm -fv /usr/lib/libz.a
+
+
+

+ 8.6.2. Содержимое + пакета Zlib +

+
+
+
+ Установленные библиотеки: + libz.so +
+
+
+
+

+ Краткое описание +

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

+ libz +

+
+

+ Содержит функции сжатия и распаковки, используемые + некоторыми программами. +

+
+
+
+
+ + + diff --git a/lfs-12.1-sysv/chapter08/zstd.html b/lfs-12.1-sysv/chapter08/zstd.html new file mode 100644 index 0000000..d3262e0 --- /dev/null +++ b/lfs-12.1-sysv/chapter08/zstd.html @@ -0,0 +1,224 @@ + + + + + + 8.9. Zstd-1.5.5 + + + + + + + + +

+ 8.9. Zstd-1.5.5 +

+
+
+

+ Zstandard — это алгоритм сжатия в реальном времени, обеспечивающий + высокую степень сжатия. Он предлагает очень широкий диапазон + компромиссов между сжатием и скоростью при поддержке очень быстрого + декодера. +

+
+
+
+ Приблизительное время сборки: + 0.5 SBU +
+
+ Требуемое дисковое + пространство: 77 MB +
+
+
+
+
+

+ 8.9.1. Установка пакета Zstd +

+

+ Скомпилируйте пакет: +

+
make prefix=/usr
+
+ [Примечание] +

+ Примечание +

+

+ В выходных данных теста есть несколько мест, выводящих сообщение + 'failed'. Они ожидаемы, и только 'FAIL' является фактическим + сбоем теста. Сбоев при тестировании быть не должно. +

+
+

+ Чтобы протестировать пакет, выполните: +

+
make check
+

+ Установите пакет: +

+
make prefix=/usr install
+

+ Удалите статическую библиотеку: +

+
rm -v /usr/lib/libzstd.a
+
+
+

+ 8.9.2. Содержимое + пакета Zstd +

+
+
+
+ Установленные программы: + zstd, zstdcat (ссылка на zstd), zstdgrep, + zstdless, zstdmt (ссылка на zstd) и unzstd (ссылка на + zstd) +
+
+ Установленные библиотеки: + libzstd.so +
+
+
+
+

+ Краткое описание +

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

+ zstd +

+
+

+ Сжимает или распаковывает файлы в формате ZSTD +

+
+

+ zstdgrep +

+
+

+ Запускает grep на сжатых ZSTD + файлах +

+
+

+ zstdless +

+
+

+ Запускает less на сжатых ZSTD + файлах +

+
+

+ libzstd +

+
+

+ Библиотека, реализующая сжатие данных без потерь, с + использованием алгоритма ZSTD +

+
+
+
+
+ + + diff --git a/lfs-12.1-sysv/chapter09/bootscripts.html b/lfs-12.1-sysv/chapter09/bootscripts.html new file mode 100644 index 0000000..ebcc945 --- /dev/null +++ b/lfs-12.1-sysv/chapter09/bootscripts.html @@ -0,0 +1,513 @@ + + + + + + 9.2. LFS-Bootscripts-20230728 + + + + + + + + +

+ 9.2. + LFS-Bootscripts-20230728 +

+
+
+

+ Пакет LFS-Bootscripts содержит набор скриптов для запуска/остановки + системы LFS при загрузке/завершении работы. Файлы конфигурации и + процедуры, необходимые для настройки /процесса загрузки, описаны в + следующих разделах. +

+
+
+
+ Приблизительное время сборки: + менее 0.1 SBU +
+
+ Требуемое дисковое + пространство: 244 KB +
+
+
+
+
+

+ 9.2.1. Установка пакета LFS-Bootscripts +

+

+ Установите пакет: +

+
make install
+
+
+

+ 9.2.2. + Содержимое пакета LFS-Bootscripts +

+
+
+
+ Установленные скрипты: + checkfs, cleanfs, console, functions, + halt, ifdown, ifup, localnet, modules, mountfs, mountvirtfs, + network, rc, reboot, sendsignals, setclock, ipv4-static, swap, + sysctl, sysklogd, template, udev и udev_retry +
+
+ Созданные каталоги: + /etc/rc.d, /etc/init.d (символическая + ссылка), /etc/sysconfig, /lib/services, /lib/lsb (символическая + ссылка) +
+
+
+
+

+ Краткое описание +

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

+ checkfs +

+
+

+ Проверяет целостность файловых систем перед их + монтированием (за исключением журналируемых и сетевых + файловых систем) +

+
+

+ cleanfs +

+
+

+ Удаляет файлы, которые не должны сохраняться между + перезагрузками, например, те, которые находятся в + директориях /run/ и + /var/lock/; скрипт + пересоздает /run/utmp и + удаляет файлы, которые, возможно, существуют /etc/nologin, /fastboot, и /forcefsck +

+
+

+ console +

+
+

+ Загружает правильную таблицу раскладок для требуемой + раскладки клавиатуры; он также устанавливает экранный + шрифт +

+
+

+ functions +

+
+

+ Содержит общие функции, такие как проверка ошибок и + состояния, которые используются несколькими загрузочными + скриптами +

+
+

+ halt +

+
+

+ Останавливает работу системы +

+
+

+ ifdown +

+
+

+ Останавливает сетевое устройство +

+
+

+ ifup +

+
+

+ Инициализирует сетевое устройство +

+
+

+ localnet +

+
+

+ Настраивает имя хоста системы и локальное устройство + loopback +

+
+

+ modules +

+
+

+ Загружает модули ядра из списка, который находится в + файле /etc/sysconfig/modules, используя + указанные там же аргументы +

+
+

+ mountfs +

+
+

+ Монтирует все файловые системы, кроме тех, которые + помечены как noauto или сетевых файловых + систем +

+
+

+ mountvirtfs +

+
+

+ Монтирует виртуальные файловые системы, такие как + proc +

+
+

+ network +

+
+

+ Выполняет настройку сетевых интерфейсов, например, + сетевых карт, и настаивает шлюз по-умолчанию (где это + применимо) +

+
+

+ rc +

+
+

+ Основной сценарий управления; он отвечает за запуск всех + остальных загрузочных скриптов один за другим, в + последовательности, определяемой именами символических + ссылок на другие скрипты. +

+
+

+ reboot +

+
+

+ Перезагружает систему +

+
+

+ sendsignals +

+
+

+ Обеспечивает завершение каждого процесса перед + перезагрузкой или остановкой системы. +

+
+

+ setclock +

+
+

+ Сбрасывает системные часы на местное время, если + аппаратные часы не установлены на всемирное + координированное время (UTC). +

+
+

+ ipv4-static +

+
+

+ Предоставляет функциональные возможности, необходимые для + назначения статического адреса сетевому интерфейсу. +

+
+

+ swap +

+
+

+ Включает и отключает файлы и разделы, используемые для + подкачки. +

+
+

+ sysctl +

+
+

+ Загружает в работающее ядро значения системных настроек + из файла /etc/sysctl.conf, + если этот файл существует +

+
+

+ sysklogd +

+
+

+ Запускает и останавливает демоны журналирования + сообщений, выдаваемых системой и ядром. +

+
+

+ template +

+
+

+ Шаблон для создания пользовательских загрузочных скриптов + для других демонов +

+
+

+ udev +

+
+

+ Подготавливает каталог /dev + и запускает демон udev +

+
+

+ udev_retry +

+
+

+ Повторяет неудачные попытки запуска udev uevents и + копирует сгенерированные файлы правил из /run/udev в /etc/udev/rules.d если требуется. +

+
+
+
+
+ + + diff --git a/lfs-12.1-sysv/chapter09/chapter09.html b/lfs-12.1-sysv/chapter09/chapter09.html new file mode 100644 index 0000000..0d7f3eb --- /dev/null +++ b/lfs-12.1-sysv/chapter09/chapter09.html @@ -0,0 +1,115 @@ + + + + + + Глава 9. Системные настройки + + + + + + + + +

+ 9. Системные настройки +

+
+ +
+ + + diff --git a/lfs-12.1-sysv/chapter09/etcshells.html b/lfs-12.1-sysv/chapter09/etcshells.html new file mode 100644 index 0000000..0b95e4a --- /dev/null +++ b/lfs-12.1-sysv/chapter09/etcshells.html @@ -0,0 +1,111 @@ + + + + + + 9.9. Создание файла /etc/shells + + + + + + + + +

+ 9.9. Создание + файла /etc/shells +

+
+

+ Файл shells содержит список оболочек + входа в систему. Приложения используют этот файл для определения + корректности оболочки. Для каждой оболочки должна присутствовать одна + строка, состоящая из пути к файлу оболочки относительно корня + структуры каталогов (/). +

+

+ Например, chsh + обращается к этому файлу, чтобы определить, может ли + непривилегированный пользователь изменить оболочку входа для своей + учетной записи. Если имя команды не указано в списке, пользователю + будет отказано в возможности изменять оболочки. +

+

+ Это обязательное условие для таких приложений, как GDM, которые не заполняют список пользователей, + если ему не удаётся найти /etc/shells, + или демонов FTP, которые традиционно запрещают доступ пользователям с + оболочками, не включенными в этот файл. +

+
cat > /etc/shells << "EOF"
+# Begin /etc/shells
+
+/bin/sh
+/bin/bash
+
+# End /etc/shells
+EOF
+
+ + + diff --git a/lfs-12.1-sysv/chapter09/inputrc.html b/lfs-12.1-sysv/chapter09/inputrc.html new file mode 100644 index 0000000..f1d2811 --- /dev/null +++ b/lfs-12.1-sysv/chapter09/inputrc.html @@ -0,0 +1,156 @@ + + + + + + 9.8. Создание файла /etc/inputrc + + + + + + + + +

+ 9.8. Создание + файла /etc/inputrc +

+
+

+ Файл inputrc это конфигурационный файл + библиотеки readline, который предоставляет возможности + редактирования, когда пользователь вводит строку с терминала. Он + работает путем преобразования ввода с клавиатуры в определенные + действия. Readline используется bash и большинством других оболочек, + а также многими другими приложениями. +

+

+ Большинство людей не нуждаются в специальных настройках, поэтому + приведенная ниже команда создает глобальный /etc/inputrc, используемый всеми, кто входит в + систему. Если позже вы решите, что вам нужно переопределить значения + по умолчанию для одного из пользователей, вы можете создать файл + .inputrc в домашнем каталоге + пользователя и указать в нём измененные настройки. +

+

+ Дополнительные сведения о редактировании файла inputrc см. в разделе info bash в секции Readline Init File. Также хорошим + источником информации является info + readline. +

+

+ Ниже приведен общий глобальный inputrc + с комментариями, объясняющими, что делают различные параметры. + Обратите внимание, что комментарии не могут находиться в той же + строке, что и команды. Создайте файл с помощью следующей команды: +

+
cat > /etc/inputrc << "EOF"
+# Begin /etc/inputrc
+# Modified by Chris Lynn <roryo@roryo.dynup.net>
+
+# Разрешить перенос приглашения оболочки на следующую строку
+set horizontal-scroll-mode Off
+
+# Разрешить 8-битный ввод
+set meta-flag On
+set input-meta On
+
+# Отключить обрезание восьмого бита в вводимых символах
+set convert-meta Off
+
+# Выводить на экран все восемь бит
+set output-meta On
+
+# Звуковой сигнал - none, visible или audible, соответственно никакого, видимый или слышимый
+set bell-style none
+
+# Нижеследующие команды привязывают escape-последовательности (первый аргумент)
+# к специфичным для Readline функциям (второй аргумент)
+"\eOd": backward-word
+"\eOc": forward-word
+
+# для консоли linux
+"\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
+
+# для xterm
+"\eOH": beginning-of-line
+"\eOF": end-of-line
+
+# для Konsole
+"\e[H": beginning-of-line
+"\e[F": end-of-line
+
+# End /etc/inputrc
+EOF
+
+ + + diff --git a/lfs-12.1-sysv/chapter09/introduction.html b/lfs-12.1-sysv/chapter09/introduction.html new file mode 100644 index 0000000..69b8cfc --- /dev/null +++ b/lfs-12.1-sysv/chapter09/introduction.html @@ -0,0 +1,182 @@ + + + + + + 9.1. Введение + + + + + + + + +

+ 9.1. + Введение +

+
+

+ Загрузка системы Linux включает в себя несколько задач. Процесс + должен монтировать как виртуальные, так и реальные файловые системы, + инициализировать устройства, активировать файл подкачки, проверять + целостность файловых систем, монтировать любые разделы или файл + подкачки, устанавливать системные часы, запускать сеть, запускать + требуемые системой службы и выполнять любые другие необходимые + пользователю задачи. Этот процесс должен быть организован таким + образом, чтобы задачи выполнялись в правильном порядке, но в то же + время как можно быстрее. +

+
+

+ 9.1.1. System V +

+

+ System V это классический процесс загрузки, который использовался в + Unix и Unix-подобных системах, таких как Linux с 1983 года. Он + состоит из небольшой программы init, которая настраивает базовые + программы, такие как login (через getty) и запускает + скрипт. Этот скрипт, обычно именуемый rc управляет выполнением + дополнительных сценариев, необходимых для инициализации системы. +

+

+ Программа init + управляется файлом /etc/inittab и + разделена по уровням выполнения, которые могут быть выбраны + пользователем. В LFS используются следующие уровни: +

+
+

+ 0 — выключение
+ 1 — Однопользовательский режим
+ 2 — Определяемый пользователем
+ 3 — Полный многопользовательский режим
+ 4 — Определяемый пользователем
+ 5 — Полный многопользовательский режим с дисплей-менеджером
+ + 6 — перезагрузка +

+
+

+ Уровень выполнения по умолчанию равен 3 или 5. +

+

+ Преимущества +

+
+
    +
  • +

    + Устоявшаяся, хорошо отлаженная система. +

    +
  • +
  • +

    + Легко настраивается. +

    +
  • +
+
+

+ Недостатки +

+
+
    +
  • +

    + Может загружаться медленнее. Загрузка базовой системы LFS в + среднем занимает 8-12 секунд, при этом время загрузки + измеряется от первого сообщения ядра до запроса на вход в + систему. Подключение к сети обычно устанавливается примерно + через 2 секунды после запроса на вход в систему. +

    +
  • +
  • +

    + Последовательная обработка задач загрузки. Это связано с + предыдущим пунктом. Задержка в работе любого процесса, + например, проверка файловой системы, приведет к задержке + всего процесса загрузки. +

    +
  • +
  • +

    + Напрямую не поддерживает дополнительные функции, такие как + контрольные группы (cgroups) и диспетчер системных ресурсов + для каждого пользователя. +

    +
  • +
  • +

    + Добавление init-скриптов требует ручных однотипных действий. +

    +
  • +
+
+
+
+ + + diff --git a/lfs-12.1-sysv/chapter09/locale.html b/lfs-12.1-sysv/chapter09/locale.html new file mode 100644 index 0000000..15d4163 --- /dev/null +++ b/lfs-12.1-sysv/chapter09/locale.html @@ -0,0 +1,256 @@ + + + + + + 9.7. Настройка системной локали + + + + + + + + +

+ 9.7. Настройка + системной локали +

+
+

+ Некоторые переменные окружения, необходимые для поддержки вашего + языка. Правильная их установка влияет на: +

+
+
    +
  • +

    + Выходные данные программ, переводятся на ваш родной язык +

    +
  • +
  • +

    + Правильную интерпретацию символов в буквы, цифры и другие + классы. Это необходимо для того, чтобы bash правильно принимал + не-ASCII символы, в командной строке в неанглоязычных языковых + системах +

    +
  • +
  • +

    + Правильную для страны сортировку по алфавиту +

    +
  • +
  • +

    + Подходящий формат бумаги по умолчанию +

    +
  • +
  • +

    + Правильное форматирование денежных значений, значений времени и + дат +

    +
  • +
+
+

+ Ниже замените <ll> + двухбуквенным кодом нужного вам языка (например en), а <CC> двухбуквенным кодом + соответствующей страны (например GB). + <charmap> нужно + заменить на каноническую кодировку для выбраной вами локали. Также + могут присутствовать необязательные модификаторы, такие как + @euro. +

+

+ Список всех локалей, поддерживаемых Glibc, можно получить, выполнив + следующую команду: +

+
locale -a
+

+ Таблицы символов могут иметь несколько синонимов. Например + ISO-8859-1 так же называют iso8859-1 и iso88591. + Некоторые приложения не могут корректно обрабатывать различные + синонимы (например UTF-8 должно быть + указано как UTF-8, а не utf8), поэтому в большинстве случаев безопаснее + всего выбрать каноническое имя для конкретной локали. Для определения + канонического имени локали выполните команду ниже, заменив <locale name> на вывод + locale -a для желаемой + локали (например en_GB.iso88591 в нашем + примере). +

+
LC_ALL=<locale name> locale charmap
+

+ Для локали en_GB.iso88591 приведенная + выше команда напечатает: +

+
ISO-8859-1
+

+ Окончательная настройка локали будет выглядеть так: en_GB.ISO-8859-1. Важно, чтобы локаль, найденная с + помощью приведенной выше методики, была проверена перед её + добавлением в файлы запуска Bash: +

+
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
+

+ Приведенные выше команды должны вывести название языка, кодировку + символов, используемую в локали, местную валюту и телефонный код + страны. Если какая-либо из команд завершается с сообщением об ошибке, + похожим на указанное ниже, это означает, что ваша локаль либо не была + установлена в Главе 8, либо не поддерживается стандартной установкой + Glibc. +

+
locale: Cannot set LC_* to default locale: No such file or directory
+

+ Если это произойдет, вам следует либо установить желаемую локаль с + помощью команды localedef, либо рассмотреть + возможность выбора другой локали. Дальнейшие инструкции не + предполагают таких сообщений об ошибках от Glibc. +

+

+ Другие пакеты также могут работать некорректно (но не всегда будут + отображать какие-либо сообщения об ошибках), если название локали не + соответствует их ожиданиям. В таких случаях изучите, какие ещё + дистрибутивы Linux поддерживают ваш язык, возможно, это даст + некоторую полезную информацию +

+

+ Программа оболочки /bin/bash (далее именуемая как + «оболочка») + использует начальный набор файлов, чтобы помочь создать среду для + запуска. Каждый файл имеет определенное назначение и может по-разному + влиять на вход в систему и интерактивное окружение. Файлы в каталоге + /etc содержат глобальные настройки. + Если в домашнем каталоге существуют эквивалентные файлы, они могут + переопределить глобальные настройки. +

+

+ Интерактивная оболочка входа запускается после успешного входа с + использованием /bin/login, прочитав файл + /etc/passwd. Интерактивная оболочка без + входа в систему запускается из командной строки (например, + [prompt]$/bin/bash). Неинтерактивная + оболочка обычно присутствует когда выполняется скрипт оболочки. Он + неинтерактивен, поскольку обрабатывает скрипт и не ожидает ввода + пользователем между командами. +

+

+ Создайте файл /etc/profile после того, как будут определены правильные настройки + локали, чтобы установить желаемый язык, но вместо этого + установите локаль C.UTF-8 при запуске + консоли Linux (чтобы программы не выводили символы, которые консоль + Linux не может отобразить): +

+
cat > /etc/profile << "EOF"
+# Begin /etc/profile
+
+for i in $(locale); do
+  unset ${i%=*}
+done
+
+if [[ "$TERM" = linux ]]; then
+  export LANG=C.UTF-8
+else
+  export LANG=<ll>_<CC>.<charmap><@modifiers>
+fi
+
+# End /etc/profile
+EOF
+

+ Локаль C (используемая по умолчанию) и + en_US (одна из рекомендуемых для + англоязычных пользователей в Соединенных Штатах) это разные локали. + C использует 7-битный набор символов + US-ASCII и обрабатывает байты с установленным старшим битом как + недопустимые символы. Вот почему, например, команда ls заменяет их вопросительными + знаками в этой локали. Кроме того, попытка отправить почту с такими + символами из Mutt или Pine приводит к тому что, отправляемые + сообщения не соответствуют RFC (кодировка в исходящей почте указана + как unknown 8-bit). Рекомендуется + использовать локаль C, если вы уверены, + что вам никогда не понадобятся 8-битные символы. +

+
+ + + diff --git a/lfs-12.1-sysv/chapter09/network.html b/lfs-12.1-sysv/chapter09/network.html new file mode 100644 index 0000000..c3cc258 --- /dev/null +++ b/lfs-12.1-sysv/chapter09/network.html @@ -0,0 +1,342 @@ + + + + + + 9.5. Настройка сети + + + + + + + + +

+ 9.5. Настройка + сети +

+
+
+

+ 9.5.1. Создание файлов конфигурации сетевого интерфейса +

+

+ Файлы в каталоге /etc/sysconfig/ + обычно определяют, какие интерфейсы запускаются и выключаются + сетевым скриптом. Этот каталог должен содержать файл для каждого + настраиваемого интерфейса, например ifconfig.xyz, где «xyz» описывает сетевую + карту. Имя интерфейса (например, eth0) обычно является подходящим. + Каждый файл содержит атрибуты одного интерфейса, такие как его + IP-адреса, маски подсетей и так далее. Имя файла должно быть + ifconfig. +

+
+ [Примечание] +

+ Примечание +

+

+ Если процедура именования из предыдущего раздела не + использовалась, udev будет назначать имена интерфейсов сетевых + карт на основе физических характеристик системы, например, + enp2s1. Если вы не знаете имя вашего интерфейса, вы всегда можете + запустить ip link + или ls + /sys/class/net после загрузки системы. +

+

+ Имена интерфейсов зависят от реализации и конфигурации демона + udev, работающего в системе. Демон udev для LFS (установленный в + Раздел 8.75, «Udev из + Systemd-255») не запустится, пока система LFS не будет + загружена. Таким образом, имена интерфейсов в системе LFS не + всегда можно определить, запустив эти команды в + хост-дистрибутиве, даже в среде + chroot. +

+
+

+ Следующая команда создает пример конфигурационного файла для + устройства eth0 со + статическим IP-адресом: +

+
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
+

+ Значения, выделенные курсивом, должны быть изменены в каждом файле, + чтобы правильно настроить интерфейсы. +

+

+ Если переменной ONBOOT присвоено + значение yes, сценарий загрузки сети + System V вызовет сетевую карту (NIC) в процессе загрузки системы. + Если задано значение, отличное от yes + сетевой адаптер будет проигнорирован сетевым скриптом и не будет + запущен автоматически. Интерфейсы можно запускать или останавливать + вручную с помощью команд ifup и ifdown. +

+

+ Переменная IFACE определяет имя сетевого + интерфейса, например, eth0. Она необходима для всех файлов + конфигураций сетевых устройств. Расширение файла должно + соответствовать этому значению. +

+

+ Переменная SERVICE определяет метод + получения IP-адреса. Пакет LFS-Bootscripts имеет модульный формат + назначения IP, а создание дополнительных файлов в каталоге + /lib/services/ позволит использовать + другие методы назначения IP. Переменная обычно используется для + протокола DHCP (Dynamic Host Configuration Protocol), который + рассматривается в книге BLFS +

+

+ Переменная GATEWAY должна содержать + IP-адрес шлюза по умолчанию, если таковой имеется. Если нет, то + закомментируйте эту строку. +

+

+ Переменная PREFIX указывает количество + бит, используемых в подсети. Каждый сегмент IP-адреса состоит из 8 + бит. Если маска подсети равна 255.255.255.0, то для указания номера + сети используются первые три сегмента (24 бита). Если сетевая маска + 255.255.255.240, подсеть использует первые 28 бит. Префиксы длиннее + 24 бит обычно используются DSL и кабельными интернет-провайдерами + (ISP). В этом примере (PREFIX=24) маска сети — 255.255.255.0. + Измените переменную PREFIX в + соответствии c конфигурацией вашей сети. Если этот параметр не + указан, то ПРЕФИКС по умолчанию равен 24. +

+

+ Для получения дополнительной информации смотрите справочную + страницу ifup. +

+
+
+

+ 9.5.2. Создание файла + /etc/resolv.conf +

+

+ Системе потребуются дополнительные настройки службы доменных имен + (DNS) для преобразования имен сети Интернет в IP-адреса и наоборот. + Это достигается путем указания IP-адреса DNS-сервера, доступного от + провайдера или администратора сети, в /etc/resolv.conf. Создайте файл, выполнив + следующие действия: +

+
cat > /etc/resolv.conf << "EOF"
+# Begin /etc/resolv.conf
+
+domain <Ваше доменное имя>
+nameserver <IP-адрес вашего основного DNS-сервера>
+nameserver <IP-адрес вашего дополнительного DNS-сервера>
+
+# End /etc/resolv.conf
+EOF
+

+ Оператор domain может быть опущен или + заменён оператором search. Смотрите + справочную страницу resolv.conf для получения подробной информации. +

+

+ Замените <IP-адрес вашего + основного DNS-сервера> адресом наиболее подходящего + DNS сервера. DNS серверов, может быть указано более одной записи + (дополнительные серверы необходимы для возможности резервного + переключения). Если вам нужен только один DNS-сервер, удалите + вторую строку nameserver из + файла. DNS-сервер также может выступать шлюзом в локальной сети. +

+
+ [Примечание] +

+ Примечание +

+

+ Адреса общедоступных DNS серверов Google - 8.8.8.8 и 8.8.4.4. +

+
+
+
+

+ 9.5.3. + Настройка имени хоста +

+

+ В процессе загрузки файл /etc/hostname используется для настройки имени + хоста системы. +

+

+ Создайте файл /etc/hostname и внесите + имя хоста, выполнив команду: +

+
echo "<lfs>" > /etc/hostname
+

+ <lfs> замените на + имя вашего компьютера. Не вносите сюда полное доменное имя(FQDN). + Эта информация помещается в файл /etc/hosts. +

+
+
+

+ 9.5.4. Настройка + файла /etc/hosts +

+

+ Выберите полное доменное имя (FQDN) и возможные псевдонимы для + использования в файле /etc/hosts. + Если вы используете статические IP-адреса, вам также необходимо + определиться с IP-адресом. Синтаксис для записи в файле hosts + следующий: +

+
IP_address myhost.example.org aliases
+

+ Если компьютер не должен быть виден в Интернете (т. е. нет + зарегистрированного домена и действительного блока назначенных + IP-адресов—у большинства пользователей этого нет), убедитесь, что + IP-адрес находится в диапазоне внутренних сетевых IP-адресов. + Допустимые диапазоны: +

+
Диапазон адресов локальной сети      Стандартный префикс
+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 может быть любым числом в диапазоне 16-31. y может быть любым + числом в диапазоне 0-255. +

+

+ Правильным IP адресом в локальной сети может быть 192.168.1.1. +

+

+ Если компьютер должен быть виден в Интернете, действительным полным + доменным именем может быть само имя домена или строка, полученная + путем объединения префикса (часто имени хоста) и домена с помощью + символа «.». + Кроме того, вам необходимо обратиться к администратору домена, + чтобы связать полное доменное имя и ваш общедоступный IP-адрес. +

+

+ Даже если компьютер не виден из Интернета, полное доменное имя все + равно необходимо для правильной работы некоторых программ, таких + как MTA. Для этих целей можно использовать специальное полное + доменное имя localhost.localdomain. +

+

+ Создайте файл /etc/hosts, выполнив + команду: +

+
cat > /etc/hosts << "EOF"
+# Begin /etc/hosts
+
+127.0.0.1 localhost.localdomain 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
+

+ Значения <192.168.1.1>, <FQDN>, и <HOSTNAME> должны быть + изменены в соответствии с предпочтениями пользователя или + требованиями сети (если имеется IP-адрес выданный сетевым/системным + администратором и машина подключена к существующей сети). + Необязательные параметры могут быть опущены. +

+
+
+ + + diff --git a/lfs-12.1-sysv/chapter09/symlinks.html b/lfs-12.1-sysv/chapter09/symlinks.html new file mode 100644 index 0000000..25c0faf --- /dev/null +++ b/lfs-12.1-sysv/chapter09/symlinks.html @@ -0,0 +1,430 @@ + + + + + + 9.4. Управление устройствами + + + + + + + + +

+ 9.4. + Управление устройствами +

+
+
+

+ 9.4.1. Сетевые устройства +

+

+ Udev по умолчанию присваивает имена сетевым устройствам в + соответствии с данными прошивки, BIOS'а или физическими + характеристиками, такими как шина, слот или MAC-адрес. Целью такого + соглашения об именовании является обеспечение того, чтобы сетевые + устройства именовались последовательно, а не основывались на + времени обнаружения сетевой карты. Например, в более старых версиях + Linux—на компьютере с двумя сетевыми картами производства Intel и + Realtek, сетевая карта производства Intel могла стать eth0, а карта + Realtek — eth1. Иногда после перезагрузки карты именовались + наоборот. +

+

+ В новой схеме именования, типичными именами сетевых устройств + являются enp5s0 или wlp3s0. Если такие имена для вас нежелательны, + то может быть реализована традиционная схема именования или своя + собственная. +

+
+

+ 9.4.1.1. Отключение постоянного присвоения имен в параметрах + загрузки ядра +

+

+ Традиционная схема именования - eth0, eth1, и так далее, может + быть включена путем добавления параметра net.ifnames=0 в командную + строку ядра. Это решение подходит для систем, которые имеют + только одно сетевое устройство каждого типа. Часто в ноутбуках + несколько сетевых устройств с именами eth0 и wlan0; в таких + ноутбуках также может использоваться этот метод. Командная строка + указывается в файле конфигурации GRUB. Подробности смотрите на + странице Раздел 10.4.4, + «Создание файла конфигурации GRUB». +

+
+
+

+ 9.4.1.2. Создание пользовательских правил Udev +

+

+ Схему именования можно настроить, создав пользовательские правила + udev. В состав книги включен скрипт, который генерирует начальные + правила. Чтобы их сгенерировать, выполните команду: +

+
bash /usr/lib/udev/init-net-rules.sh
+

+ Теперь, проверьте файл /etc/udev/rules.d/70-persistent-net.rules, + чтобы узнать какое имя с каким сетевым устройством сопоставлено: +

+
cat /etc/udev/rules.d/70-persistent-net.rules
+
+ [Примечание] +

+ Примечание +

+

+ В некоторых случаях, например, когда MAC-адреса были назначены + сетевой карте вручную или в виртуальной среде, такой как Qemu + или Xen, возможно, файл сетевых правил не будет сгенерирован, + поскольку адреса назначаются не последовательно. В таких + случаях, этот способ не применим. +

+
+

+ Файл начинается с блока комментариев, далее следуют две строки + для каждой сетевой карты (NIC). Первая строка представляет собой + описание с комментариями и содержит аппаратные идентификаторы + (например, поставщика PCI и идентификаторы устройств, если это + PCI-карта), а также информацию о драйвере (если его удалось + обнаружить). Ни идентификатор оборудования, ни драйвер не + используются для определения того, какое имя присвоить + интерфейсу; эта информация предназначена только для справки. + Вторая строка - это правило udev, которое соответствует этому + сетевому адаптеру и фактически присваивает ему имя. +

+

+ Все правила udev состоят из нескольких ключевых слов, разделенных + запятыми и необязательными пробелами. Ниже приведены ключевые + слова и пояснения по каждому из них: +

+
+
    +
  • +

    + SUBSYSTEM=="net" - указывает + Udev игнорировать устройства, которые не являются сетевыми + картами. +

    +
  • +
  • +

    + ACTION=="add" - указывает Udev + игнорировать правила для событий, отличных от добавления + (события "удалить" и "изменить" также происходят, но не + требуют переименования сетевых интерфейсов). +

    +
  • +
  • +

    + DRIVERS=="?*" - существует для + того, чтобы Udev проигнорировал подинтерфейсы VLAN или + моста (потому что эти подинтерфейсы не имеют драйверов). + Эти подинтерфейсы пропускаются, потому что назначенные им + имена будут конфликтовать с именами их родительских + устройств. +

    +
  • +
  • +

    + ATTR{address} - значением + этого ключевого слова является MAC-адрес сетевой карты. +

    +
  • +
  • +

    + ATTR{type}=="1" - этот ключ + гарантирует выполнение правила соответствующего только + основному интерфейсу, при использовании определенных + беспроводных драйверов, которые создают несколько + виртуальных интерфейсов. Дополнительные интерфейсы + пропускаются по той же причине, что и подинтерфейсы VLAN и + мост, в ином случае произошел бы конфликт имен. +

    +
  • +
  • +

    + NAME - значением этого + ключевого слова является имя, которое udev присвоит этому + интерфейсу. +

    +
  • +
+
+

+ Значение NAME является очень важным. + Прежде чем продолжить, убедитесь, что вы знаете, какое имя + назначено каждой из сетевых карт и обязательно используйте это + значение NAME при создании файлов + конфигурации сети. +

+

+ Даже если создан пользовательский файл правил udev, udev все + равно может назначить одно или несколько альтернативных имен для + сетевой карты на основе физических характеристик. Если + пользовательское правило udev переименовывает какой-либо сетевой + адаптер, используя имя, уже назначенное в качестве + альтернативного имени другого сетевого адаптера, это правило udev + не будет выполнено. Если возникает эта проблема, вы можете + создать файл конфигурации /etc/udev/network/99-default.link с пустой + альтернативной политикой назначения, переопределяющей файл + конфигурации по умолчанию /usr/lib/udev/network/99-default.link: +

+
sed -e '/^AlternativeNamesPolicy/s/=.*$/=/'  \
+    -i /usr/lib/udev/network/99-default.link \
+     > /etc/udev/network/99-default.link
+
+
+
+

+ 9.4.2. Символические ссылки CD-ROM +

+

+ Некоторое программное обеспечение, которое вы, возможно, захотите + установить позже (например, различные медиаплееры) ожидают, что + устройства /dev/cdrom или + /dev/dvd и символические ссылки на + CD-ROM или DVD-ROM устройства должны существовать. Кроме того, + может быть удобно использовать эти символические ссылки в + /etc/fstab. Udev поставляется с + файлом сценария, который будет генерировать правила для создания + этих символических ссылок, в зависимости от возможностей каждого + устройства, но вам нужно решить, какой из двух режимов работы вы + хотите использовать. +

+

+ Во-первых, скрипт может работать в режиме «by-path» (используется + по умолчанию для USB и FireWire устройств), где создаваемые им + правила зависят от физического пути к CD или DVD устройству. + Во-вторых, он может работать в режиме «by-id» (по умолчанию для + устройств IDE и SCSI), где создаваемые им правила зависят от строк + идентификации, хранящихся в самом устройстве CD или DVD. Путь + определяется сценарием Udev path_id, а идентификационные + строки считываются с оборудования командами ata_id или scsi_id, в зависимости от того, + какой тип устройства у вас есть. +

+

+ У каждого подхода есть свои преимущества; правильный подход к + использованию будет зависеть от того, какие изменения устройств + могут произойти. Если вы ожидаете, что физический путь к устройству + (порты и/или слоты, в который оно подключено), изменится, например, + потому, что вы планируете переместить диск в другой порт IDE или + другой разъем USB, то вы должны использовать режим «by-id». С другой + стороны, если вы ожидаете, что идентификация устройства изменится, + например, потому, что оно может выйти из строя, и вы замените его + другим устройством с теми же характеристиками и подключите к тем же + разъемам, тогда вы должны использовать режим «by-path». +

+

+ Если с вашим устройством возможен любой из вариантов, выберите тот, + который по вашему мнению случается чаще. +

+
+ [Важно] +

+ Важно +

+

+ Внешние устройства (например, привод компакт-дисков, подключенный + через USB) не следует подключать методом «by-path», потому что + каждый раз, когда устройство подключено в новый внешний порт, + изменится его физический путь. Все внешние устройства подвержены + этой проблеме, если при написании правил Udev применять режим + распознавания по их физическому пути. К тому же, эта проблема не + ограничивается CD и DVD-приводами. +

+
+

+ Если вы хотите увидеть значения, которые будут использовать скрипты + udev, то для требуемого устройства CD-ROM найдите соответствующий + каталог в /sys (например, это может + быть /sys/block/hdd) и выполните + команду, аналогичную следующей: +

+
udevadm test /sys/block/hdd
+

+ Обратите внимание на строки, содержащие вывод различных + идентификаторов *_id. Режим «by-id» будет использовать значение ID_SERIAL + если оно существует и не пустое, иначе будет использована + комбинация ID_MODEL и ID_REVISION. Режим «by-path» будет + использовать значение ID_PATH. +

+

+ Если режим по умолчанию не подходит для вашей ситуации, то в файл + /etc/udev/rules.d/83-cdrom-symlinks.rules можно + внести следующие изменения (где mode является одним из значений + «by-id» или + «by-path»): +

+
sed -e 's/"write_cd_rules"/"write_cd_rules mode"/' \
+    -i /etc/udev/rules.d/83-cdrom-symlinks.rules
+

+ Обратите внимание, что на данный момент, нет необходимости + создавать файлы правил или символические ссылки, так как вы + смонтировали каталог /dev хоста в + систему LFS, и мы предполагаем, что символические ссылки уже + существуют. Правила и символические ссылки будут создаваться при + первой загрузке LFS системы. +

+

+ Однако, если у вас есть несколько устройств CD-ROM, то + символические ссылки, сгенерированные в это время, могут указывать + на другие устройства, и иметь различия от хост системы, потому что + устройства не будут обнаружены в предсказуемом порядке. Назначения, + созданные при первой загрузке системы LFS, будут правильными, + проблема возникнет только в том случае, если символические ссылки в + обеих системах указывают на одно и то же устройство. Если + потребуется, проверьте (и, возможно, отредактируйте) + сгенерированные правила в файле /etc/udev/rules.d/70-persistent-cd.rules после + загрузки, чтобы убедиться, что назначенные символические ссылки + соответствуют тому, что вам нужно. +

+
+
+

+ 9.4.3. Работа с дубликатами устройств +

+

+ Как поясняется в Раздел 9.3, + «Взаимодействие с устройствами и модулями», порядок отображения + устройства с одинаковой функциональностью в /dev является, как правило, случайным. Например, + если у вас есть веб камера и TV тюнер, иногда /dev/video0 ссылается на камеру, а /dev/video1 ссылается на TV тюнер, а иногда, + например, после перезагрузки системы, порядок поменяется на + противоположный. Для всех классов оборудования, за исключением + звуковых и сетевых карт, это можно исправить, написав правила udev + для создания постоянных символических ссылок. Случай с сетевыми + картами описан отдельно в Раздел 9.5, «Настройка сети», + инструкции по настройке звуковых карт можно найти в + BLFS. +

+

+ Для каждого из ваших устройств, которые могут иметь такую проблему + (даже если проблема не существует в текущем дистрибутиве Linux ), + найдите соответствующий каталог в /sys/class или /sys/block. Для видеоустройств это может быть + /sys/class/video4linux/videoX. Определите атрибуты, + которые однозначно идентифицируют устройство (обычно это + идентификаторы поставщика и продукта и/или серийные номера): +

+
udevadm info -a -p /sys/class/video4linux/video0
+

+ Затем напишите правила, которые создают символические ссылки, + например: +

+
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
+

+ В результате устройства /dev/video0 и + /dev/video1 по-прежнему случайным + образом ссылаются на TV тюнер и веб-камеру (и, следовательно, + никогда не должны использоваться напрямую), но есть символические + ссылки /dev/tvtuner и /dev/webcam, которые всегда указывают на + правильное устройство. +

+
+
+ + + diff --git a/lfs-12.1-sysv/chapter09/udev.html b/lfs-12.1-sysv/chapter09/udev.html new file mode 100644 index 0000000..fdcde06 --- /dev/null +++ b/lfs-12.1-sysv/chapter09/udev.html @@ -0,0 +1,490 @@ + + + + + + 9.3. Взаимодействие с устройствами и модулями + + + + + + + + +

+ 9.3. Взаимодействие с + устройствами и модулями +

+
+

+ В Глава 8, + мы установили демон udev во время сборки udev . Прежде чем мы углубимся в детали того, как + работает udev, необходимо кратко рассказать о предыдущих методах + взаимодействия с устройствами. +

+

+ Системы Linux традиционно использовали метод статического создания + устройств, при котором огромное количество узлов устройств(иногда + буквально тысячи узлов) создавалось в /dev, независимо от того, существовали ли + соответствующие аппаратные устройства на самом деле. Обычно это + делалось с помощью скрипта MAKEDEV, который содержал ряд + вызовов команды mknod с + соответствующими основными и второстепенными номерами устройств, для + всех возможных вариантов, которые только могут существовать в мире. +

+

+ Используя метод udev, узлы устройств создаются только для тех + устройств, которые обнаружены ядром. Эти узлы устройств создаются + каждый раз при загрузке системы; они хранятся в файловой системе + devtmpfs (виртуальная файловая + система, которая полностью находится в оперативной памяти). Узлы не + занимают много места в памяти и их общий размер незначителен. +

+
+

+ 9.3.1. История +

+

+ В феврале 2000 года, новая файловая система devfs была принята в ветку ядра 2.3.46 и была + доступна на протяжении выпуска стабильных релизов ветки 2.4. Хотя + она и присутствовала в ядре, такой способ динамического создания + устройств никогда не получал поддержки от разработчиков ядра. +

+

+ Основная проблема с подходом, принятым devfs была связана с обработкой обнаружения, + создания и назначения имен устройствам. Проблема связанная с + именованием узлов была самой важной. Общепринято, что если имена + устройств можно настраивать, политика именования устройств должна + выбираться системными администраторами, а не навязываться + разработчиками. Файловая система devfs также страдала от состояния гонки, + присущего её архитектуре; оно не могло быть исправлено без + существенной переработки ядра. devfs долгое время была помечена как устаревшая + и, наконец, была удалена из ядра в июне 2006 года. +

+

+ При разработке нестабильной ветки ядра 2.5, позднее, выпущенной как + стабильный релиз 2.6, появилась новая виртуальная файловая система + sysfs. Задача этой файловой системы + заключалась в предоставление информации о конфигурации оборудования + системы процессам пользовательского пространства. С помощью этого + представления, видимого в пользовательском пространстве, стало + возможным разработать замену пользовательского пространства для + devfs. +

+
+
+

+ 9.3.2. Реализация Udev +

+
+

+ 9.3.2.1. Sysfs +

+

+ Краткое описание файловой системы sysfs было представлено выше. Можно задаться + вопросом, как sysfs получает + информацию об устройствах в системе, и о том, какие номера + устройств должны использоваться для них. Драйверы, + скомпилированные в ядро, регистрируют свои объекты в sysfs (внутри devtmpfs), по мере обнаружения ядром. Для + драйверов, которые скомпилированы в виде модулей, регистрация + происходит при его загрузке. После монтирования файловой системы + sysfs (в каталог /sys), данные, зарегистрированные драйверами, в + sysfs, станут доступны для + пользовательского пространства и udevd для обработки (включая + модификацию узлов устройств). +

+
+
+

+ 9.3.2.2. Создание узла + устройства +

+

+ Файлы устройств создаются ядром в файловой системе devtmpfs. Любой драйвер, которому необходимо + зарегистрировать узел устройства, будет использовать для этого + devtmpfs (через системный драйвер + ядра). Когда экземпляр devtmpfs + монтируется в каталог /dev, узел + устройства будет доступен в пользовательском пространстве с + фиксированным именем, разрешениями и владельцем. +

+

+ Через некоторое время, ядро отправит uevent в udevd. На основе правил, + которые указанны в файлах в каталогах /etc/udev/rules.d, /lib/udev/rules.d, и /run/udev/rules.d, udevd создаст дополнительные + символические ссылки на узлы устройств, или сменит разрешения, + владельца или группу, или изменит запись (имя) во внутренней базе + данных udevd для + этого объекта. +

+

+ Правила в этих трёх каталогах пронумерованы и используются + совместно. Если udevd не может найти правило + для устройства, он оставит права доступа и владельца на + devtmpfs, которые были + установлены изначально. +

+
+
+

+ 9.3.2.3. + Загрузка модуля +

+

+ Драйверы устройств, скомпилированные в виде модулей ядра могут + содержать встроенные псевдонимы. Псевдонимы можно увидеть + просмотрев вывод программы modinfo, обычно они связаны со + специфичными для шины идентификаторами устройств, которые + поддерживается модулем. Например, драйвер snd-fm801 подерживает PCI устройства с + идентификатором поставщика 0x1319 и идентификатором устройства + 0x0801, и имеет псевдоним pci:v00001319d00000801sv*sd*bc04sc01i*. Для + большинства устройств, драйвер шины экспортирует псевдонимы + драйвера, которые будет обрабатывать устройство через + sysfs. Например, файл + /sys/bus/pci/devices/0000:00:0d.0/modalias + может содержать строку pci:v00001319d00000801sv00001319sd00001319bc04sc01i00. + Правила по умолчанию, которые предоставлены Udev, заставят + udevd вызвать + /sbin/modprobe с + содержимым, которое находится в значении переменной окружения + MODALIAS uevent (которое должно + совпадать с содержимым файла modalias в sysfs), тем самым загружая все + модули, чьи псевдонимы совпадают в строке после расширения + подстановочных знаков +

+

+ В указанном примере, это означает, что в дополнение к + snd-fm801 будет загружен + устаревший (и нежелательный) драйвер forte, если он будет доступен. Ниже + приведены способы, как можно предотвратить загрузку нежелательных + драйверов. +

+

+ Само ядро также способно загружать модули для сетевых протоколов, + файловых систем и поддержки NLS по запросу. +

+
+
+

+ 9.3.2.4. Работа с устройствами с горячей заменой или + динамическими устройствами +

+

+ При подключении устройства, например, MP3-плеер, к универсальной + последовательной шине (USB), ядро распознает, что устройство + подключено, и генерирует событие uevent. Затем это событие + обрабатывается udevd, как было описано выше. +

+
+
+
+

+ 9.3.3. Проблемы с загрузкой модулей и созданием устройств +

+

+ Существует несколько возможных проблем, связанных с автоматическим + созданием узлов устройств. +

+
+

+ 9.3.3.1. Модуль ядра не загружается автоматически +

+

+ Udev загрузит модуль только в том случае, если у него есть + псевдоним, специфичный для шины, и драйвер шины правильно + экспортирует необходимые псевдонимы в sysfs. В других случаях следует организовать + загрузку модуля иными способами. Известно, что, начиная с версии + Linux-6.7.4, udev, выполняет загрузку правильно написанных + драйверов для INPUT, IDE, PCI, USB, SCSI, SERIO, и FireWire + устройств. +

+

+ Чтобы определить, имеет ли требуемый драйвер устройства + необходимую поддержку Udev, запустите modinfo с именем модуля в + качестве аргумента. Далее, попробуйте найти каталог устройства в + /sys/bus и проверьте, есть ли там + файл modalias. +

+

+ Если файл modalias существует в + sysfs, то драйвер, который + поддерживает устройство, может обращаться к нему напрямую, но не + имеет псевдонима, это ошибка в драйвере. Загрузите драйвер без + помощи Udev и ожидайте, что проблема будет исправлена позднее. +

+

+ Если же в каталоге /sys/bus нет + файла modalias, это означает, что + разработчики ядра еще не добавили поддержку modalias к этому типу шины. В Linux-6.7.4 это + относится к шиной ISA. Ожидайте, что эта проблема будет + исправлена в более поздних версиях ядра. +

+

+ Udev не предназначен для загрузки драйверов «обёрток», таких как + snd-pcm-oss и не + аппаратных драйверов, например, loop. +

+
+
+

+ 9.3.3.2. Модуль ядра не загружается автоматически и Udev не + предназначен для его загрузки +

+

+ Если модуль «обёртка» только расширяет функциональность, + предоставляемую каким-либо другим модулем (например модуль + snd-pcm-oss расширяет + функциональность модуля snd-pcm, давая возможность звуковым + картам быть доступными для OSS приложений), настройте + modprobe для + загрузки оболочки после того, как Udev загрузит обернутый модуль. + Для этого добавьте строку «softdep» в файл, который находится в + каталоге /etc/modprobe.d/<filename>.conf. + Например: +

+
softdep snd-pcm post: snd-pcm-oss
+

+ Обратите внимание, что команда «softdep» разрешает добавлять pre: зависимости, или одновременно pre: и post: + зависимости. Обратитесь к документации modprobe.d(5) + для изучения синтаксиса и возможностей «softdep». +

+

+ Если рассматриваемый модуль не является обёрткой, и полезен сам + по себе, настройте загрузочный скрипт modules, чтобы он + инициализировался при загрузке системы. Для этого добавьте имя + модуля в файл /etc/sysconfig/modules в отдельной строке. Этот + способ сработает и для модулей-обёрток, но не является + оптимальным. +

+
+
+

+ 9.3.3.3. Udev загружает какой-то нежелательный модуль +

+

+ Либо не создавайте модуль, либо занесите его в черный список в + файле /etc/modprobe.d/blacklist.conf, как это сделано + с модулем forte в примере + ниже: +

+
blacklist forte
+

+ Модули, занесенные в черный список, можно загрузить вручную с + помощью явной команды modprobe. +

+
+
+

+ 9.3.3.4. Udev неправильно создает устройство или делает + неправильную символическую ссылку +

+

+ Это обычно происходит, если правило неожиданно совпадает с другим + устройством. Например, плохо написанное поставщиком оборудования + правило может соответствовать как диску SCSI(искомое устройство), + так и универсальному устройству SCSI (неправильно). Найдите + ошибочное правило и исправьте его с помощью команды udevadm info. +

+
+
+

+ 9.3.3.5. Правило Udev работает ненадежно +

+

+ Это может быть проявлением предыдущей проблемы. В ином случае, + если правило использует атрибуты файловой системы sysfs, то это может быть проблемой + синхронизации ядра, которая будет исправлена в более поздних + версиях ядра. Но вы можете обойти проблему, создав правило, + которое ожидает используемый атрибут sysfs и добавляет его к файлу правил + /etc/udev/rules.d/10-wait_for_sysfs.rules + (создайте его, если файл не существует). Пожалуйста, сообщите в + списке рассылки разработчиков LFS, если это решение вам поможет. +

+
+
+

+ 9.3.3.6. Udev не создаёт устройство +

+

+ Во-первых, убедитесь, что драйвер встроен в ядро или уже загружен + как модуль, и, что udev не создает устройство с неправильным + именем. +

+

+ Если драйвер ядра не экспортирует свои данные в sysfs, udev не хватает информации, + необходимой для создания узла устройства. Это, вероятнее всего, + произойдет со сторонними драйверами, которых нет в дереве + исходного кода ядра. Создайте статический узел в каталоге + /usr/lib/udev/devices с + соответствующими старшим/младшим номерами (смотрите файл + devices.txt в документации к ядру или документации, + предоставленной сторонним поставщиком драйвера). Статический узел + будет скопирован в /dev с помощью + udev. +

+
+
+

+ 9.3.3.7. Порядок присвоения имен устройствам меняется случайным + образом после перезагрузки +

+

+ Это связано с тем, что udev обрабатывает события uevents и + загружает модули параллельно, а значит в непредсказуемом порядке. + Это никогда не будет «исправлено». Вы не должны полагаться на то + что имена устройств ядра стабильны. Вместо этого создайте свои + собственные правила, которые делают символические ссылки со + стабильными именами на основе некоторых неизменяемых атрибутов + устройства, таких как серийный номер или вывод различных утилит + *_id, установленных Udev. Смотрите Раздел 9.4, «Управление + устройствами» и Раздел 9.5, «Настройка сети» для + примера. +

+
+
+
+

+ 9.3.4. Полезная информация +

+

+ Дополнительную документацию можно получить на следующих сайтах: +

+
+ +
+
+
+ + + diff --git a/lfs-12.1-sysv/chapter09/usage.html b/lfs-12.1-sysv/chapter09/usage.html new file mode 100644 index 0000000..43c41a4 --- /dev/null +++ b/lfs-12.1-sysv/chapter09/usage.html @@ -0,0 +1,1081 @@ + + + + + + 9.6. Настройка и использование загрузочных скриптов System V + + + + + + + + +

+ 9.6. Настройка и + использование загрузочных скриптов System V +

+
+
+

+ 9.6.1. Как работают загрузочные скрипты System V? +

+

+ В этой версии LFS используется специальное средство загрузки под + названием SysVinit, основанное на наборе уровней выполнения + (run-levels). Процедура + загрузки может сильно отличаться от одной системы к другой; и тот + факт, что в конкретном дистрибутиве Linux все работало должным + образом, не гарантирует, что оно будут работать так же в LFS. LFS + работает по-своему, но соблюдает общепринятые стандарты. +

+

+ Существует альтернативная система загрузки, которая называется + systemd. Мы не будем + обсуждать этот вариант загрузки здесь. Для получения подробного + описания, посетите + https://www.linux.com/training-tutorials/understanding-and-using-systemd/. +

+

+ SysVinit (в дальнейшем именуемый «init») использует схему уровней выполнения. + Существует семь уровней выполнения, пронумерованных от 0 до 6. (На + самом деле уровней больше, но они предназначены для особых случаев + и обычно не используются. Подробности смотрите в руководстве + init(8)). Каждый из них + соответствует действиям, которые компьютер должен выполнить при + запуске и выключении. Уровень выполнения по умолчанию — 3. Ниже + приведено описание различных уровней в том виде, в каком они + реализованы в LFS: +

+
+

+ 0: выключение компьютера
+ 1: однопользовательский режим
+ 2: зарезервировано для настройки, в остальном аналогично 3
+ + 3: многопользовательский режим с поддержкой сети
+ + 4: зарезервировано для настройки, в остальном аналогично 3
+ + 5: то же, что и 4, обычно используется для входа в систему с графическим интерфейсом (например, 
+ + gdm от GNOME или lxdm от LXDE)
+ + 6: перезагрузка компьютера +

+
+
+ [Примечание] +

+ Примечание +

+

+ Раньше, много лет назад, уровень выполнения 2 обозначался как + «многопользовательский + режим без поддержки сети», тогда, несколько + пользователей могли подключаться к системе через последовательные + порты. В сегодняшних условиях это не имеет смысла, и мы + обозначаем этот уровень как «зарезервировано». +

+
+
+
+

+ 9.6.2. Настройка + Sysvinit +

+

+ Во время инициализации ядра первой запускаемой программой (если она + не переопределена в командной строке) является init. Эта программа считывает + файл инициализации /etc/inittab. + Создайте этот файл: +

+
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:S06:once:/sbin/sulogin
+s1:1:respawn:/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
+

+ Пояснения по содержимому этого файла инициализации находится на + справочной странице inittab. + Для LFS основной командой является rc. В приведенном выше файле + инициализации, rc + будет выполнять все сценарии, начинающиеся с символа S в каталоге + /etc/rc.d/rcS.d, за которыми следуют + все скрипты, начинающиеся с S в каталоге /etc/rc.d/rc?.d, где знак вопроса задается + значением initdefault. +

+

+ Для удобства, скрипт rc считывает библиотеку функций + из /lib/lsb/init-functions. Эта + библиотека также читает необязательный файл конфигурации + /etc/sysconfig/rc.site. В этот файл + можно поместить любой из параметров конфигурации системы, описанных + в последующих разделах, что позволяет объединить все параметры + системы в одном файле. +

+

+ Для удобства отладки скрипт functions также записывает весь вывод в + /run/var/bootlog. Поскольку каталог + /run является tmpfs, этот файл не + сохраняется при загрузке; однако его содержимое добавляется в файл + /var/log/boot.log по окончании + процесса загрузки. +

+
+

+ 9.6.2.1. Изменение + уровней выполнения +

+

+ Изменить уровень выполнения можно с помощью команды init <runlevel>, + где <runlevel> - + это целевой уровнем выполнения. Например, чтобы перезагрузить + компьютер, пользователь должен выполнить команду init 6, которая является + псевдонимом для команды reboot. Аналогично, init 0 + является псевдонимом для команды halt. +

+

+ В каталоге /etc/rc.d есть ещё + несколько каталогов, которые выглядят как rc?.d (где ? - номер уровня выполнения), все + они содержат ряд символических ссылок. Некоторые ссылки + начинаются с K, другие + начинаются с S, и все они + содержат две цифры после начальной буквы. K означает остановить + (убить) службу, а S означает запустить службу. Числа определяют + порядок выполнения сценариев от 00 до 99—чем меньше число, тем + раньше запускается скрипт. Когда init переключается на другой + уровень выполнения, соответствующие службы либо запускаются, либо + останавливаются, в зависимости от выбранного уровня выполнения. +

+

+ Реальные скрипты находятся в каталоге /etc/rc.d/init.d. Они выполняют фактическую + работу, и символические ссылки указывают на них. Ссылки К и S + указывают на один и тот же скрипт в /etc/rc.d/init.d. Это связано с тем, что + скрипты могут вызываться с разными параметрами, такими как + start, stop, restart, reload, и status. Когда встречается ссылка K, + соответствующий скрипт запускается с аргументом stop. Когда встречается S-ссылка, + соответствующий скрипт запускается с аргументом start. +

+

+ Ниже приведено описание к аргументам скриптов: +

+
+
+
+ start +
+
+

+ Служба запущена. +

+
+
+ stop +
+
+

+ Служба остановлена. +

+
+
+ restart +
+
+

+ Служба остановлена и снова запущена. +

+
+
+ reload +
+
+

+ Конфигурация сервиса обновлена. Используется после + изменения файла конфигурации службы, когда перезапуск не + требуется. +

+
+
+ status +
+
+

+ Сообщает, запущена ли служба и с какими ИД процессов. +

+
+
+
+

+ Не стесняйтесь изменять работу процесса загрузки (в конце концов, + это ваша собственная система LFS). Приведенные здесь файлы + являются примером того, как это можно сделать. +

+
+
+
+

+ 9.6.3. Загрузочные скрипты Udev +

+

+ Инит-скрипт /etc/rc.d/init.d/udev + запускает udevd, + который инициализирует все устройства "холодного подключения", + которые уже были созданы ядром, и ожидает выполнения всех правил. + Скрипт также отключает обработчик uevent по умолчанию /sbin/hotplug. Это сделано потому, что ядру + больше не нужно обращаться к внешнему бинарному файлу. Вместо этого + udevd будет + прослушивать сокет netlink на предмет событий, которые вызывает + ядро. +

+

+ Инит-скрипт /etc/rc.d/init.d/udev_retry + решает задачу повторного запуска событий для подсистем, правила + которых могут зависеть от файловых систем, которые не монтируются + до запуска скрипта mountfs (в частности, его + вызывают /usr и /var). Этот скрипт запускается после скрипта + mountfs, поэтому эти + правила (при повторном запуске) должны сработать во второй раз. Он + настраивается в файле /etc/sysconfig/udev_retry; любые слова в этом + файле, кроме комментариев, являются именами подсистем, которые + запускаются при повторной попытке. Чтобы найти подсистему + устройства, используйте udevadm info + --attribute-walk <device>, где <device> + - это абсолютный путь в /dev или /sys, такой как /dev/sr0 или + /sys/class/rtc. +

+

+ Для получения информации о загрузке модуля ядра и udev смотрите + Раздел 9.3.2.3, «Загрузка + модуля». +

+
+
+

+ 9.6.4. Настройка + системного времени +

+

+ Скрипт setclock + считывает время с аппаратных часов, также известных как часы BIOS + или CMOS (Complementary Metal Oxide Semiconductor). Если на + аппаратных часах установлено время UTC (всемирное скоординированное + время), этот скрипт преобразует полученное значение в локальное + время, используя файл /etc/localtime + (который сообщает программе hwclock, в какой временной зоне + находится пользователь). Невозможно определить, установленное на + аппаратных часах время UTC или же локальное, поэтому необходимо + указать его вручную. +

+

+ Скрипт setclock + запускается системой udev при + загрузке, когда ядро определяет возможности аппаратного + обеспечения. Также его можно запустить вручную с параметром stop, + чтобы сохранить системное время в аппаратные часы CMOS. +

+

+ Если Вы не можете вспомнить, установлено на аппаратных часах UTC + или локальное время, запустите команду hwclock --localtime --show. Она + отобразит текущее время в соответствии с аппаратными часами. Если + оно совпадает с тем, что показывают ваши настенные/наручные часы, + значит на часах CMOS установлено локальное время. Если вывод + hwclock не совпадает + с локальным временем, скорее всего, это UTC. Проверьте это, добавив + или вычитая нужное количество часов для вашего часового пояса ко + времени, отображаемому hwclock. Например, если ваш + часовой пояс это MSK, также известный как GMT +0300, то нужно + вычесть три часа из локального времени. +

+

+ Измените значение переменной UTC ниже на + 0 (ноль), если на + аппаратных часах установлено НЕ UTC. +

+

+ Создайте новый файл /etc/sysconfig/clock выполнив: +

+
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
+

+ Хороший совет, объясняющий, как обращаться с временем в LFS, + доступен по адресу + https://mirror.linuxfromscratch.ru/hints/downloads/files/time.txt. + Там объясняются такие вопросы, как часовые пояса, UTC и переменная + окружения TZ. +

+
+ [Примечание] +

+ Примечание +

+

+ Параметры CLOCKPARAMS и UTC также могут быть указаны в файле + /etc/sysconfig/rc.site. +

+
+
+
+

+ 9.6.5. + Настройка консоли Linux +

+

+ Эта секция описывает настройку скрипта console, который устанавливает + раскладку клавиатуры, шрифт консоли и уровень подробности + информации, выводимой ядром на консоль. Если Вы не планируете + использовать символы, не соответствующие стандарту ASCII (например, + знак копирайта, символы фунта и евро), и собираетесь печатать + только в английской раскладке, то можете пропустить большую часть + секции. Без файла конфигурации (или эквивалентных настроек в + rc.site), скрипт console не будет ничего делать. +

+

+ Скрипт console + считывает конфигурацию из файла /etc/sysconfig/console. Решите для себя, какую + раскладку клавиатуры и какой шрифт намерены использовать. В этом + также могут помочь различные HOWTO для конкретных языков; смотрите + https://tldp.org/HOWTO/HOWTO-INDEX/other-lang.html. + Если вы все еще сомневаетесь, посмотрите в каталогах /usr/share/keymaps и /usr/share/consolefonts допустимые раскладки и + экранные шрифты. Прочтите справочные страницы loadkeys(1) и + setfont(8), чтобы + определить правильные аргументы для этих программ. +

+

+ Файл /etc/sysconfig/console должен + содержать строки вида: ПЕРЕМЕННАЯ=значение. Допустимы следующие переменные: +

+
+
+
+ LOGLEVEL +
+
+

+ Эта переменная задает уровень подробности сообщений, + посылаемых ядром на системную консоль. Значение этой + переменной передается в качестве аргумента утилите + dmesg -n. + Допустимы уровни от 1(нет + сообщений) до 8. По умолчанию + 7, что является довольно + подробным. +

+
+
+ KEYMAP +
+
+

+ Эта переменная указывает аргументы для программы loadkeys, обычно это имя + загружаемой раскладки, например, it. Если эта переменная не установлена, + загрузочный скрипт не будет запускать программу loadkeys, и + будет использоваться раскладка по умолчанию. Обратите + внимание, что некоторые раскладки имеют несколько версий с + одним и тем же именем (cz и его варианты в qwerty/ и qwertz/, + es в olpc/ и qwerty/ и trf в fgGIod/ и qwerty/). В этих + случаях также следует указать родительский каталог (например, + qwerty/es), чтобы обеспечить загрузку правильной раскладки. +

+
+
+ KEYMAP_CORRECTIONS +
+
+

+ Эта (крайне редко используемая) переменная задает аргументы + для второго вызова программы loadkeys. Она полезна, если + стандартная раскладка вас не совсем устраивает и необходимо + внести небольшую корректировку. Например, чтобы добавить + символ евро в раскладку, которая его не содержит, присвойте + этой переменной значение euro2. +

+
+
+ FONT +
+
+

+ Эта переменная определяет аргументы для программы + setfont. Обычно + она включает в себя имя шрифта -m и имя загружаемой таблицы символов. + Например, чтобы загрузить шрифт «lat1-16» вместе с + таблицей символов «8859-1» (подходит для США), установите + эту переменную в lat1-16 -m + 8859-1. В режиме UTF-8 ядро использует таблицу + символов для преобразования 8-битных кодов клавиш в UTF-8, + поэтому аргумент параметра "-m" должен быть установлен на + кодировку соответствующих кодов клавиш в раскладке. +

+
+
+ UNICODE +
+
+

+ Присвойте этой переменной значение 1, yes или + true, чтобы переключить консоль + в режим UTF-8. Это полезно при использовании локали, + основанной на UTF-8, и не рекомендуется в иных случаях. +

+
+
+ LEGACY_CHARSET +
+
+

+ Для многих раскладок клавиатуры в пакете Kbd не существует + готового Unicode-варианта. Скрипт console будет на лету + конвертировать имеющуюся раскладку в UTF-8, если присвоить + этой переменной имя доступной не-UTF-8 раскладки. +

+
+
+
+

+ Несколько примеров: +

+
+
    +
  • +

    + Мы будем использовать C.UTF-8 в + качестве локали для интерактивных сеансов в консоли Linux в + Раздел 9.7, «Настройка + системной локали,», поэтому нам следует установить + значение переменной UNICODE в + 1. Консольные шрифты, + поставляемые пакетом Kbd, + содержащие глифы для всех символов сообщений программы в + C.UTF-8 являются LatArCyrHeb*.psfu.gz, LatGrkCyr*.psfu.gz, Lat2-Terminus16.psfu.gz и pancyrillic.f16.psfu.gz из каталога + /usr/share/consolefonts (в + других поставляемых консольных шрифтах отсутствуют глифы + некоторых символов Unicode, таких как левые/правые кавычки и + английское тире). Поэтому установите один из них, например + Lat2-Terminus16.psfu.gz, в + качестве шрифта консоли по умолчанию: +

    +
    cat > /etc/sysconfig/console << "EOF"
    +# Begin /etc/sysconfig/console
    +
    +UNICODE="1"
    +FONT="Lat2-Terminus16"
    +
    +# End /etc/sysconfig/console
    +EOF
    +
  • +
  • +

    + Для русскоязычных пользователей может подойти такой вариант: +

    +
    cat > /etc/sysconfig/console << "EOF"
    +# Begin /etc/sysconfig/console
    +
    +UNICODE="1"
    +KEYMAP="ruwin_alt_sh-UTF-8"
    +FONT="cyr-sun16"
    +
    +# End /etc/sysconfig/console
    +EOF
    +
    + [Примечание] +

    + Примечание +

    +

    + Для поиска нужной раскладки, выполните команду: + find /usr/share/keymaps -type + f +

    +

    + ruwin_alt-UTF-8 - переключение + раскладки по Alt. +

    +

    + ruwin_alt_sh-UTF-8 - + переключение раскладки по Alt+Shift. +

    +

    + ruwin_cplk-UTF-8 - + переключение раскладки по Caps Lock. +

    +

    + ruwin_ct_sh-UTF-8 - + переключение раскладки по Ctrl+Shift. +

    +

    + ruwin_ctrl-UTF-8 - + переключение раскладки по Ctrl. +

    +

    + Посмотреть список доступных шрифтов можно с помощью + следующей команды: ls + /usr/share/consolefonts +

    +
    +
  • +
  • +

    + Для не-Unicode настройки необходимы только переменные KEYMAP + и FONT. Например, для польских пользователей может подойти + такой вариант: +

    +
    cat > /etc/sysconfig/console << "EOF"
    +# Begin /etc/sysconfig/console
    +
    +KEYMAP="pl2"
    +FONT="lat2a-16 -m 8859-2"
    +
    +# End /etc/sysconfig/console
    +EOF
    +
  • +
  • +

    + Как упоминалось выше, иногда бывает необходимо + подкорректировать раскладку. Следующий пример добавляет + символ евро к немецкой раскладке: +

    +
    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
    +
  • +
  • +

    + Ниже приведен пример с поддержкой Unicode для болгарского + языка, где существует стандартная раскладка UTF-8: +

    +
    cat > /etc/sysconfig/console << "EOF"
    +# Begin /etc/sysconfig/console
    +
    +UNICODE="1"
    +KEYMAP="bg_bds-utf8"
    +FONT="LatArCyrHeb-16"
    +
    +# End /etc/sysconfig/console
    +EOF
    +
  • +
  • +

    + Из-за использования 512-символьного шрифта LatArCyrHeb-16 в + предыдущем примере, яркие цвета больше не доступны в консоли + Linux, если используется фреймбуфер. Если Вы хотите + использовать яркие цвета без фреймбуфера и можете обходиться + без символов, не относящихся к вашему языку, тогда можно + использовать специфичный для вашего языка 256-символьный + шрифт, как показано ниже: +

    +
    cat > /etc/sysconfig/console << "EOF"
    +# Begin /etc/sysconfig/console
    +
    +UNICODE="1"
    +KEYMAP="bg_bds-utf8"
    +FONT="cyr-sun16"
    +
    +# End /etc/sysconfig/console
    +EOF
    +
  • +
  • +

    + Следующий пример демонстрирует автоматическое преобразование + раскладки из ISO-8859-15 в UTF-8 и включает "мертвые" клавиши + в режиме Unicode: +

    +
    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
    +
  • +
  • +

    + Некоторые раскладки включают в себя "мертвые" клавиши (то + есть клавиши, нажатие которых само по себе не приводит к + появлению на экране символа, но которые влияют на символ, + генерируемый следующей клавишей) или определяют слияние + символов (например: «нажмите Ctrl+. A E чтобы получить Æ» в + раскладке по умолчанию). Linux-6.7.4 правильно интерпретирует + "мертвые" клавиши и слияния, только когда исходные символы + имеют 8-битные коды. Эта особенность не влияет на раскладки + для европейских языков, поскольку в них "сливаются" два + ASCII-символа или добавляются подчеркивания к неподчеркнутым + ASCII-символам. Однако, в режиме UTF-8 могут быть проблемы, + например, для греческого языка, когда необходимо подчеркнуть + символ α. Решением в этой ситуации будет отказ от + использования UTF-8 или установка графической системы X + Window, не имеющих подобных ограничений. +

    +
  • +
  • +

    + Для китайского, японского, корейского и некоторых других + языков невозможно настроить консоль Linux так, чтобы она + отображала все необходимые символы. Пользователи, которым + требуются эти языки, должны установить систему X Window, + шрифты, покрывающие необходимый диапазон символов, и + правильный метод ввода (например, SCIM поддерживает большое + число разнообразных языков). +

    +
  • +
+
+
+ [Примечание] +

+ Примечание +

+

+ Файл /etc/sysconfig/console + управляет только локализацией текстовой консоли Linux. Он никак + не влияет на настройки раскладки клавиатуры и шрифтов в системе X + Window, в сессиях SSH или на последовательном терминале. В этих + ситуациях ограничения, описанные в двух расположенных выше + абзацах, не применяются. +

+
+
+
+

+ 9.6.6. Создание файлов при загрузке +

+

+ Иногда необходимо создавать файлы во время загрузки. Например, + часто требуется каталог /tmp/.ICE-unix . Это можно сделать, создав запись + в скрипте /etc/sysconfig/createfiles. + Формат этого файла описан в комментариях файла конфигурации по + умолчанию. +

+
+
+

+ 9.6.7. + Настройка скрипта Sysklogd +

+

+ Скрипт sysklogd вызывает программу + syslogd как часть + инициализации System V. Параметр -m + 0 отключает периодическую (по умолчанию - каждые 20 + минут) запись временных меток в файлы журналов, производимую + syslogd. Если Вам + необходимо включить периодическую запись временных меток, + отредактируйте файл /etc/sysconfig/rc.site и присвойте переменной + SYSKLOGD_PARMS требуемое значение. Например, чтобы сбросить все + параметры, присвойте переменной пустое значение: +

+
SYSKLOGD_PARMS=
+

+ Дополнительные параметры смотрите в man syslogd. +

+
+
+

+ 9.6.8. Файл + rc.site +

+

+ Необязательный файл /etc/sysconfig/rc.site содержит настройки, + автоматически применяемые всеми загрузочными скриптами. Этот файл + может содержать парамеры, обычно указываемые в файлах hostname, console и + clock из каталога /etc/sysconfig/. Если значение одной и той же + переменной присваивается, как в одном из этих файлов, так и в + rc.site, приоритет имеет значение из + специализированного файла. +

+

+ rc.site также содержит параметры, + которые могут настраивать другие аспекты процесса загрузки. + Установка переменной IPROMPT позволит выборочно запускать + загрузочные скрипты. Другие параметры описаны в комментариях к + файлу. Версия файла по умолчанию выглядит следующим образом: +

+
# 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@lists.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 set 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=
+
+
+
+

+ 9.6.8.1. Настройка скриптов загрузки и завершения работы +

+

+ Загрузочные скрипты LFS загружают и завершают работу системы + довольно эффективно, но есть несколько настроек, которые вы + можете внести в файл rc.site, чтобы еще больше повысить скорость + и настроить сообщения в соответствии с вашими предпочтениями. + Чтобы сделать это, измените настройки в приведенном выше файле + /etc/sysconfig/rc.site. +

+
+
    +
  • +

    + Во время работы загрузочного скрипта udev происходит вызов udev settle, для + завершения которого требуется некоторое время. Это время + может и не потребоваться в зависимости от конфигурации + устройств в системе. Если у вас имеются только простые + разделы и одна сетевая карта, процессу загрузки, вероятно, + не нужно будет ждать завершения работы этой команды. Чтобы + пропустить её, установите переменную OMIT_UDEV_SETTLE=y. +

    +
  • +
  • +

    + Скрипт загрузки udev_retry + также по умолчанию запускает udev settle. Команда + необходима только тогда, когда каталог /var смонтирован в отдельный раздел. Это + связано с тем, что часам нужен доступ к файлу /var/lib/hwclock/adjtime. Для других + настроек также может потребоваться дождаться завершения + udev, но в большинстве случаев в этом нет необходимости. + Пропустите команду, установив переменную + OMIT_UDEV_RETRY_SETTLE=y. +

    +
  • +
  • +

    + По умолчанию проверка файловой системы выполняется в + "тихом" режиме. Это может показаться задержкой во время + процесса загрузки. Чтобы включить вывод fsck, установите + переменную VERBOSE_FSCK=y. +

    +
  • +
  • +

    + При перезагрузке вы, возможно, захотите полностью + пропустить проверку файловой системы, fsck. Чтобы сделать это, + либо создайте файл /fastboot, + либо перезагрузите систему командой /sbin/shutdown -f -r now. + С другой стороны, вы можете принудительно проверить все + файловые системы, создав /forcefsck или запустив shutdown с параметром + -F вместо + -f. +

    +

    + Установка переменной FASTBOOT=y отключит fsck во время процесса + загрузки до тех пор, пока она не будет удалена. Это не + рекомендуется делать на постоянной основе. +

    +
  • +
  • +

    + Обычно все файлы в каталоге /tmp удаляются во время загрузки. В + зависимости от количества имеющихся файлов или каталогов + это может привести к заметной задержке в процессе загрузки. + Чтобы пропустить удаление этих файлов, установите + переменную SKIPTMPCLEAN=y. +

    +
  • +
  • +

    + Во время завершения работы, init отправляет сигнал + TERM каждой запущенной программе (например, agetty), + ожидает установленное время (по умолчанию 3 секунды), затем + посылает каждому процессу сигнал завершения(KILL) и снова + ждёт. Этот процесс повторяется в сценарии sendsignals для любых + процессов, которые не завершаются их собственными + скриптами. Задержка для init может быть + установлена путем передачи параметра. Например, чтобы + устранить задержку в init, передайте параметр + -t0 при выключении или перезагрузке (например, /sbin/shutdown -t0 -r + now). Задержку для скрипта sendsignals можно + пропустить, установив параметр KILLDELAY=0. +

    +
  • +
+
+
+
+
+ + + diff --git a/lfs-12.1-sysv/chapter10/chapter10.html b/lfs-12.1-sysv/chapter10/chapter10.html new file mode 100644 index 0000000..9497f7e --- /dev/null +++ b/lfs-12.1-sysv/chapter10/chapter10.html @@ -0,0 +1,101 @@ + + + + + + Глава 10. Делаем систему LFS загрузочной + + + + + + + + +

+ 10. Делаем систему + LFS загрузочной +

+
+ +
+ + + diff --git a/lfs-12.1-sysv/chapter10/fstab.html b/lfs-12.1-sysv/chapter10/fstab.html new file mode 100644 index 0000000..add2432 --- /dev/null +++ b/lfs-12.1-sysv/chapter10/fstab.html @@ -0,0 +1,191 @@ + + + + + + 10.2. Создание файла /etc/fstab + + + + + + + + +

+ 10.2. Создание + файла /etc/fstab +

+
+

+ Файл /etc/fstab используется некоторыми + программами для определения того, какие файловые системы должны + монтироваться по умолчанию, в каком порядке и какие из них должны + быть проверены (на наличие ошибок целостности) перед монтированием. + Создайте новую таблицу файловых систем следующим образом: +

+
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
+tmpfs          /dev/shm     tmpfs    nosuid,nodev        0     0
+cgroup2        /sys/fs/cgroup cgroup2  nosuid,noexec,nodev 0     0
+
+# End /etc/fstab
+EOF
+

+ Замените <xxx>, + <yyy>, и <fff> подходящими для системы + значениями, например, sda2, + sda5, и ext4. Для получения подробной информации о + параметрах в этом файле, смотрите fstab(5). +

+

+ Файловым системам операционных систем MS DOS и Windows (таким как + vfat, ntfs, smbfs, cifs, iso9660, udf) требуется специальная опция + utf8, чтобы не-ASCII символы в именах файлов интерпретировались + правильно. Для локалей, отличных от UTF-8, значение iocharset должно быть таким же, как набор символов + локали и настроено так, чтобы ядро понимало его. Это будет работать, + если соответствующее определение набора символов (находится в разделе + File systems -> Native Language Support при настройке ядра) было + скомпилировано в ядро или собрано как модуль. Однако, если набор + символов локали — UTF-8, параметр iocharset=utf8 сделает файловую систему + чувствительной к регистру. Чтобы исправить это, используйте + специальную опцию utf8 вместо + iocharset=utf8 для локалей UTF-8. + Параметр «codepage» также необходим для файловых систем + vfat и smbfs. Он должен быть установлен на номер кодовой страницы, + используемый в MS-DOS в вашей стране. Например, для монтирования + флешек пользователь локали ru_RU.KOI8-R должен установить следующие + значения в группе параметров строки монтирования в /etc/fstab: +

+
noauto,user,quiet,showexec,codepage=866,iocharset=koi8r
+

+ Соответствующий фрагмент параметров для пользователей ru_RU.UTF-8 + выглядит следующим образом: +

+
noauto,user,quiet,showexec,codepage=866,utf8
+

+ Обратите внимание, что iocharset + используется по умолчанию для iso8859-1 + (которая сохраняет файловую систему нечувствительной к регистру), а + параметр utf8 указывает ядру, что нужно + преобразовать имена файлов с использованием UTF-8, чтобы их можно + было интерпретировать в локали UTF-8. +

+

+ Также возможно указать значения кодовой страницы по умолчанию и + iocharset для некоторых файловых систем во время настройки ядра. + Соответствующие параметры называются «Default NLS Option» + (CONFIG_NLS_DEFAULT), «Default Remote NLS Option» + (CONFIG_SMB_NLS_DEFAULT), «Default codepage for FAT» + (CONFIG_FAT_DEFAULT_CODEPAGE) и + «Default iocharset for + FAT» (CONFIG_FAT_DEFAULT_IOCHARSET). Нет возможности + указать эти параметры для файловой системы ntfs во время компиляции + ядра. +

+

+ Для некоторых типов жестких дисков можно сделать файловую систему + ext3 более устойчивой к сбоям питания. Чтобы сделать это, добавьте + параметр barrier=1 к соответствующей + записи в /etc/fstab. Чтобы проверить, + поддерживает ли диск эту опцию, запустите + hdparm на соответствуюшем разделе. Например, если: +

+
hdparm -I /dev/sda | grep NCQ
+

+ возвращает непустой вывод, опция поддерживается. +

+

+ Примечание: разделы на основе управления логическими томами (LVM) не + могут использовать параметр barrier. +

+
+ + + diff --git a/lfs-12.1-sysv/chapter10/grub.html b/lfs-12.1-sysv/chapter10/grub.html new file mode 100644 index 0000000..e13115c --- /dev/null +++ b/lfs-12.1-sysv/chapter10/grub.html @@ -0,0 +1,354 @@ + + + + + + 10.4. Использование GRUB для настройки процесса загрузки + + + + + + + + +

+ 10.4. + Использование GRUB для настройки процесса загрузки +

+
+
+ [Примечание] +

+ Примечание +

+

+ Если ваша система поддерживает UEFI и вы хотите загрузить LFS с + помощью UEFI, вам следует пропустить инструкции на этой странице, + но все равно изучить синтаксис grub.cfg и способ указания раздела в файле с этой + страницы, а также настроить GRUB с поддержкой UEFI используя + инструкции, приведенные на + странице BLFS. +

+
+
+

+ 10.4.1. Введение +

+
+ [Предупреждение] +

+ Предупреждение +

+

+ При неправильной настройке GRUB ваша система перестанет + загружаться без вспомогательно загрузочного CD-ROM или + USB-накопителя. Для загрузки системы LFS этот раздел + необязателен. Вы можете просто использовать существующий + загрузчик, например Grub-Legacy, GRUB2 или LILO. +

+
+

+ Убедитесь, что аварийный загрузочный диск готов к «спасению» компьютера, + если он перестанет загружаться. Если у вас еще нет загрузочного + диска, вы можете создать его. Для этого необходимо перейти в раздел + BLFS и установить программу xorriso из пакета + libisoburn. +

+
cd /tmp
+grub-mkrescue --output=grub-img.iso
+xorriso -as cdrecord -v dev=/dev/cdrw blank=as_needed grub-img.iso
+
+
+

+ 10.4.2. Соглашения об именовании GRUB +

+

+ GRUB использует собственную структуру именования дисков и разделов + в виде (hdn,m), где + n — номер жесткого диска, а + m — номер раздела. Номера + жестких дисков начинаются с нуля, а номера разделов начинаются с + единицы для обычных разделов (с пяти для расширенных разделов). + Обратите внимание, что это отличается от более ранних версий, где + оба номера начинались с нуля. Например, раздел sda1 это (hd0,1) в GRUB, а sdb3 (hd1,3). В отличие от Linux, GRUB не + считает приводы CD-ROM жесткими дисками. Например, если + используемый CD-привода определяется как hdb, а второй жесткий диск как hdc, этот второй жесткий диск все равно будет + (hd1). +

+
+
+

+ 10.4.3. Настройка +

+

+ GRUB записывает данные на первый физический сектор жесткого диска. + Эта область не является частью какой-либо файловой системы. + Программа в загрузочном разделе имеет доступ к модулям GRUB + расположенным по умолчанию в /boot/grub/. +

+

+ Расположение загрузочного раздела - это выбор пользователя, который + влияет на конфигурацию. Одна из рекомендаций заключается в том, + чтобы иметь отдельный небольшой раздел (примерно 200 МБ) + исключительно для загрузочной информации. В этом случае каждая + сборка, будь то LFS или другой дистрибутив, может обращаться к тем + же загрузочным файлам, а доступ может быть получен из любой + загруженной системы. Если вы решите так сделать, вам необходимо + примонтировать отдельный раздел, переместить все файлы из текущего + каталога /boot (например, ядро Linux, + которое вы создали на предыдущем этапе) в новый раздел. Затем нужно + отмонтировать раздел и примонтировать его заново в каталог + /boot. Когда вы это сделаете, + обязательно обновите данные в файле /etc/fstab. +

+

+ Оставить /boot на текущем разделе LFS + это тоже рабочее решение, но его настройка для загрузки нескольких + систем сложнее. +

+

+ Используя информацию выше, определите соответствующие точки + монтирования для корневого раздела (или загрузочного раздела, если + используется отдельный). В следующем примере предполагается, что + корневым (или отдельным загрузочным) разделом является sda2. +

+

+ Установите файлы GRUB в каталог /boot/grub и настройте загрузочный сектор: +

+
+ [Предупреждение] +

+ Предупреждение +

+

+ Следующая команда перезапишет текущий загрузчик. Не выполняйте + эту команду, если это не нужно, например, если вы используете + сторонний менеджер загрузки для управления главной загрузочной + записью (MBR). +

+
+
grub-install /dev/sda
+
+ [Примечание] +

+ Примечание +

+

+ Если система была загружена с использованием UEFI, grub-install попытается + установить файлы для x86_64-efi, но эти файлы не были + установлены в + Глава 8. Если это так, добавьте --target i386-pc к приведенной выше команде. +

+
+
+
+

+ 10.4.4. Создание файла + конфигурации GRUB +

+

+ Создайте файл /boot/grub/grub.cfg: +

+
cat > /boot/grub/grub.cfg << "EOF"
+# Begin /boot/grub/grub.cfg
+set default=0
+set timeout=5
+
+insmod part_gpt
+insmod ext2
+set root=(hd0,2)
+
+menuentry "GNU/Linux, Linux 6.7.4-lfs-12.1" {
+        linux   /boot/vmlinuz-6.7.4-lfs-12.1 root=/dev/sda2 ro
+}
+EOF
+

+ Команды insmod + загружают модули GRUB с именами + part_gpt и ext2. Несмотря на название, ext2 фактически поддерживаются файловые системы + ext2, ext3 и ext4. + Команда grub-install + встроила некоторые модули в основной образ GRUB (установленный в MBR или раздел GRUB + BIOS) для доступа к другим модулям (в /boot/grub/i386-pc), поэтому в стандартной + конфигурации эти два модуля уже встроены и эти две команды + insmod ничего не + будут делать. В любом случае, от них нет никакого вреда, но они + могут понадобиться в некоторых редких конфигурациях. +

+
+ [Примечание] +

+ Примечание +

+

+ С точки зрения GRUB, файлы ядра + относятся к используемому разделу. Если вы используется отдельный + раздел /boot, удалите /boot из приведенной выше строки + linux. Вам также + потребуется изменить строку set + root так, чтобы она указывала на загрузочный раздел. +

+
+
+ [Примечание] +

+ Примечание +

+

+ Наименование раздела для GRUB может измениться, если вы добавили + или удалили некоторые диски (это могут быть как съемные диски, + так и USB-устройства). Изменение может привести к сбою загрузки, + потому что grub.cfg ссылается на + «старые» + указатели. Чтобы не столкнуться с этой проблемой, необходимо + использовать UUID раздела и файловой системы вместо указателя + GRUB для указания устройства. Запустите команду lsblk -o + UUID,PARTUUID,PATH,MOUNTPOINT, чтобы посмотреть + UUID ваших файловых систем (в столбце UUID) и разделов (в столбце PARTUUID). Затем замените set root=(hdx,y) на search + --set=root --fs-uuid <UUID + файловой системы, в которой установлено + ядро>, и замените root=/dev/sda2 на root=PARTUUID=<UUID + раздела, в котором собрана LFS>. +

+

+ Обратите внимание, что UUID раздела и UUID файловой системы на + этом разделе это совершенно разные вещи. Некоторые онлайн-ресурсы + могут предлагать вам использовать root=UUID=<UUID + файловой системы> вместо root=PARTUUID=<UUID + раздела>, но для этого требуется initramfs, + которая не рассматривается в LFS. +

+

+ Имя узла устройства для раздела в /dev также может измениться (хотя это менее + вероятно, чем изменение указателя GRUB). Вы можете заменить пути + к узлам устройств, таким как /dev/sda1 на PARTUUID=<UUID + раздела>, в /etc/fstab, чтобы избежать потенциального сбоя + загрузки в случае, если имя узла устройства изменилось. +

+
+

+ GRUB - чрезвычайно мощная программа, предоставляющая огромное + количество вариантов загрузки с самых разных устройств, работающих + систем и типов разделов. Существует также множество опций + настройки, таких как графические экраны-заставки, воспроизведение + звука, ввод с помощью мыши и т. д., детали этих опций выходят за + рамки этой инструкции. +

+
+ [Внимание] +

+ Внимание +

+

+ Существует команда grub-mkconfig, которая может автоматически + записывать файл конфигурации. Она использует набор скриптов из + каталога /etc/grub.d/ и уничтожит любые сделанные вами настройки. + Эти скрипты предназначены в первую очередь для обычных + дистрибутивов и не рекомендуются для LFS. Если вы устанавливаете + коммерческий дистрибутив Linux, есть вероятность, что эта + программа будет запущена. Обязательно создайте резервную копию + файла grub.cfg. +

+
+
+
+ + + diff --git a/lfs-12.1-sysv/chapter10/introduction.html b/lfs-12.1-sysv/chapter10/introduction.html new file mode 100644 index 0000000..75ad21d --- /dev/null +++ b/lfs-12.1-sysv/chapter10/introduction.html @@ -0,0 +1,87 @@ + + + + + + 10.1. Введение + + + + + + + + +

+ 10.1. Введение +

+
+

+ Пришло время сделать систему LFS загрузочной. В этой главе + обсуждается создание файла /etc/fstab, + сборка ядра для новой системы и установка загрузчика GRUB, чтобы + система LFS могла быть выбрана для загрузки при запуске. +

+
+ + + diff --git a/lfs-12.1-sysv/chapter10/kernel.html b/lfs-12.1-sysv/chapter10/kernel.html new file mode 100644 index 0000000..bb6908f --- /dev/null +++ b/lfs-12.1-sysv/chapter10/kernel.html @@ -0,0 +1,756 @@ + + + + + + 10.3. Linux-6.7.4 + + + + + + + + +

+ 10.3. + Linux-6.7.4 +

+
+
+

+ Этот пакет содержит ядро Linux. +

+
+
+
+ Приблизительное время сборки: + 0.6 - 20.4 SBU (обычно около 1.4 + SBU) +
+
+ Требуемое дисковое + пространство: 1.8 - 10.6 GB + (обычно около 2 GB) +
+
+
+
+
+

+ 10.3.1. Установка ядра +

+

+ Сборка ядра состоит из нескольких этапов—настройка, компиляция и + установка. Ознакомьтесь с файлом README в дереве исходных текстов, чтобы узнать об + альтернативных способах настройки ядра. +

+
+ [Важно] +

+ Важно +

+

+ Сборка ядра Linux в первый раз — одна из самых сложных задач в + LFS. Правильный выбор параметров зависит от конкретного + оборудования для целевой системы и ваших потребностей. Для ядра + доступно почти 12 000 элементов конфигурации, хотя для + большинства компьютеров требуется только около трети из них. + Редакторы LFS рекомендуют пользователям, не знакомым с этим + процессом, внимательно следовать описанным ниже процедурам. + Главная цель сейчас состоит в том, чтобы довести первоначальную + систему до состояния, когда вы сможете войти в систему из + командной строки при последующей перезагрузке в Раздел 11.3, «Перезагрузка + системы». Вопросы оптимизация и кастомизация второстепенны. +

+

+ Для получения общей информации о конфигурации ядра смотрите + + https://mirror.linuxfromscratch.ru/hints/downloads/files/kernel-configuration.txt. + Дополнительную информацию о настройке и сборке ядра можно найти + по адресу https://anduin.linuxfromscratch.org/LFS/kernel-nutshell/. + Эти ссылки немного устарели, но все же дают разумное + представление о процессе. +

+

+ Если ничего не помогает, вы можете обратиться за помощью в список + рассылки lfs-support. + Обратите внимание, что подписка необходима для того, чтобы + рассылка не содержала спама. +

+
+

+ Подготовьте пакет к компиляции, выполнив следующую команду: +

+
make mrproper
+

+ Выполнение этой команды гарантирует, что дерево исходников будет + абсолютно чистым. Разработчики ядра рекомендуют запускать эту + команду перед каждой компиляцией. Не следует полагаться на то, что + дерево исходных текстов ядра будет чистым после распаковки. +

+

+ Существует несколько способов настройки параметров ядра. Обычно это + делается с помощью псевдографического интерфейса, например так: +

+
make menuconfig
+
+

+ Значения необязательных переменных окружения + make: +

+
+
+ LANG=<переменная_LANG_хоста> + LC_ALL= +
+
+

+ Устанавливает значение локали на то, которое используется на + хосте. Это может понадобиться для правильного отображения + интерфейса menuconfig с помощью ncurses в текстовой консоли + Linux с UTF-8. +

+

+ Если это необходимо, обязательно замените значение <переменной_LANG> на + значение переменной $LANG вашего + хоста. В качестве альтернативы вы можете использовать + значения переменных $LC_ALL или + $LC_CTYPE. +

+
+
+ make + menuconfig +
+
+

+ Эта команда запускает интерфейс на основе ncurses. Для + использования других (графических) интерфейсов, выполните + make help. +

+
+
+
+
+ [Примечание] +

+ Примечание +

+

+ Хорошей отправной точкой для настройки ядра, может стать запуск + команды make + defconfig. В результате её выполнения будет + создана базовая конфигурация с учётом архитектуры системы. +

+

+ Обязательно включите/отключите/настройте следующие параметры, + иначе система может работать некорректно или вообще не + загружаться: +

+
General setup --->
+  [ ] Compile the kernel with warnings as errors                        [WERROR]
+  CPU/Task time and stats accounting --->
+    [*] Pressure stall information tracking                                [PSI]
+    [ ]   Require boot parameter to enable pressure stall information tracking
+                                                     ...  [PSI_DEFAULT_DISABLED]
+  < > Enable kernel headers through /sys/kernel/kheaders.tar.xz      [IKHEADERS]
+  [*] Control Group support --->                                       [CGROUPS]
+    [*] Memory controller                                                [MEMCG]
+  [ ] Configure standard kernel features (expert users) --->            [EXPERT]
+
+Processor type and features --->
+  [*] Build a relocatable kernel                                   [RELOCATABLE]
+  [*]   Randomize the address of the kernel image (KASLR)       [RANDOMIZE_BASE]
+
+General architecture-dependent options --->
+  [*] Stack Protector buffer overflow detection                 [STACKPROTECTOR]
+  [*]   Strong Stack Protector                           [STACKPROTECTOR_STRONG]
+
+Device Drivers --->
+  Generic Driver Options --->
+    [ ] Support for uevent helper                                [UEVENT_HELPER]
+    [*] Maintain a devtmpfs filesystem to mount at /dev               [DEVTMPFS]
+    [*]   Automount devtmpfs at /dev, after the kernel mounted the rootfs
+                                                           ...  [DEVTMPFS_MOUNT]
+  Graphics support --->
+    < /*/M> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) --->
+                                                                      ...  [DRM]
+    # If [DRM] is selected as * or M, this must be selected:
+    [ /*]   Enable legacy fbdev support for your modesetting driver
+                                                      ...  [DRM_FBDEV_EMULATION]
+    Console display driver support --->
+      # If [DRM] is selected as * or M, this must be selected:
+      [ /*] Framebuffer Console support                    [FRAMEBUFFER_CONSOLE]
+

+ Включите некоторые дополнительные функции, если вы собираете + 64-битную систему. Если вы используете menuconfig, включите их в + следующем порядке: сначала CONFIG_PCI_MSI, затем CONFIG_IRQ_REMAP, и, наконец, + CONFIG_X86_X2APIC, потому + что параметр отображается только после выбора его зависимости. +

+
Processor type and features --->
+  [*] Support x2apic                                                [X86_X2APIC]
+
+Device Drivers --->
+  [*] PCI support --->                                                     [PCI]
+    [*] Message Signaled Interrupts (MSI and MSI-X)                    [PCI_MSI]
+  [*] IOMMU Hardware Support --->                                [IOMMU_SUPPORT]
+    [*] Support for Interrupt Remapping                              [IRQ_REMAP]
+

+ Если вы создаете 32-разрядную систему, работающую на оборудовании + с объемом оперативной памяти более 4 ГБ, измените конфигурацию + таким образом, чтобы ядро могло использовать до 64 ГБ оперативной + памяти: +

+
Processor type and features --->
+  High Memory Support --->
+    (X) 64GB                                                        [HIGHMEM64G]
+

+ Если раздел для системы LFS находится на NVME SSD (то есть узлом + устройства для раздела является /dev/nvme*, а не /dev/sd*), включите параметр NVME support, + иначе система LFS не будет загружаться: +

+
Device Drivers --->
+  NVME Support --->
+    <*> NVM Express block device                                  [BLK_DEV_NVME]
+
+

+ Есть несколько других параметров, которые могут понадобиться в + зависимости от особенностей системы. Для получения списка + необходимых опций для пакетов BLFS смотрите + Список опций ядра BLFS. +

+
+ [Примечание] +

+ Примечание +

+

+ Если ваша хост поддерживает UEFI и вы хотите загрузить LFS с + помощью него, вам необходимо настроить некоторые параметры ядра, + следуя инструкции + на странице BLFS, даже если вы + будете использовать загрузчик UEFI из основного + дистрибутива. +

+
+
+

+ Пояснения для выбранных выше параметров ядра: +

+
+
+ Randomize the + address of the kernel image (KASLR) +
+
+

+ Включите ASLR для образа ядра, чтобы уменьшить вероятность + некоторых атак, основанных на фиксированных адресах + конфиденциальных данных или кода в ядре. +

+
+
+ Compile the + kernel with warnings as errors +
+
+

+ Включение этого параметра может привести к сбою сборки, если + компилятор и/или конфигурация отличается от конфигурации ядра + разработчиков. +

+
+
+ Enable kernel + headers through /sys/kernel/kheaders.tar.xz +
+
+

+ Для сборки ядра с этим параметром необходим пакет + cpio. + cpio не + устанавливается в LFS. +

+
+
+ Configure + standard kernel features (expert users) +
+
+

+ Эта опция приведет к отображению некоторых параметров в + интерфейсе конфигурации, но изменение этих параметров может + быть опасным. Не используйте её, если вы не знаете, что + делаете. +

+
+
+ Strong Stack + Protector +
+
+

+ Включите SSP для ядра. Мы включили его для всего + пользовательского пространства с помощью --enable-default-ssp, настроив + GCC, но ядро не использует настройки GCC по умолчанию для + SSP. Мы включаем это явно здесь. +

+
+
+ Support for + uevent helper +
+
+

+ Включение этого параметра может вызвать сбои при управление + устройствами через Udev. +

+
+
+ Maintain a + devtmpfs +
+
+

+ С помощью этого параметра узлы устройств создаются + автоматически и заполняются самим ядром, даже без запуска + Udev. Udev будет работать поверх, управляя разрешениями и + добавляя необходимые символические ссылки. Этот элемент + конфигурации необходим всем пользователям Udev. +

+
+
+ Automount + devtmpfs at /dev +
+
+

+ Этот параметр позволит смонтировать представление ядра + устройств в /dev при переключении на корневую файловую + систему непосредственно перед запуском init. +

+
+
+ Enable legacy + fbdev support for your modesetting driver и + Framebuffer Console + support +
+
+

+ Они необходимы для отображения консоли Linux на графическом + процессоре, управляемом драйвером DRI (Direct Rendering + Infrastructure - инфраструктура прямого рендеринга). Если + CONFIG_DRM (Direct Rendering + Manager - диспетчер прямого рендеринга) включен, вам также + следует включить эти две опции, иначе вы увидите пустой экран + после загрузки драйвера DRI. +

+
+
+ Support + x2apic +
+
+

+ Поддержка запуска 64-разрядного контроллера прерываний для + x86 процессоров в режиме x2APIC. x2APIC может быть включен в + BIOS на системах x86 и у ядра собранного без этой опции будет + kernel panic при загрузке. Эта опция не окажет никакого + эффекта, но и не причиняет вреда, если x2APIC отключен в + BIOS. +

+
+
+
+

+ В качестве альтернативы, в некоторых ситуациях может быть уместно + использование команды make + oldconfig. Смотрите файл README для получения дополнительной информации. +

+

+ По желанию, вы можете пропустить настройку ядра, скопировав + конфигурационный файл ядра .config, + из хост системы(если он доступен) в каталог куда было распаковано + ядро linux-6.7.4. Однако, мы не + рекомендуем этот вариант. Намного лучше изучить все параметры меню + и создать конфигурацию ядра с нуля. +

+

+ Скомпилируйте образ ядра и модули: +

+
make
+

+ При использовании модулей, могут потребоваться файлы конфигурации, + которые расположены в каталоге /etc/modprobe.d. Информация о модулях и + конфигурации ядра находится в Раздел 9.3, + «Взаимодействие с устройствами и модулями» и в документации к + ядру linux-6.7.4/Documentation. Кроме + этого, стоит ознакомиться с руководством modprobe.d(5). +

+

+ Если поддержка модулей не была отключена в параметрах ядра, + установите модули с помощью: +

+
make modules_install
+

+ После окончания компиляции, необходимо выполнить еще несколько + шагов для завершения установки ядра. Некоторые файлы должны быть + скопированы в каталог /boot. +

+
+ [Внимание] +

+ Внимание +

+

+ Если вы решили использовать отдельный /boot раздел для системы LFS (возможно, общий + раздел /boot с хост-дистрибутивом), + скопированные ниже файлы должны быть помещены туда. Самый простой + способ сделать это — сначала создать запись для /boot в /etc/fstab (подробности читайте в предыдущем + разделе), затем выполните следующую команду от имени пользователя + root в среде chroot: +

+
mount /boot
+

+ Путь к узлу устройства в команде опущен, поскольку mount может прочитать его из + /etc/fstab. +

+
+

+ Путь к образу ядра может различаться в зависимости от используемой + платформы. Имя файла, может быть произвольным, но начинаться должно + с vmlinuz для обеспечения + совместимости с автоматической настройкой процесса загрузки, + описанного в следующем разделе. Следующая команда предполагает + архитектуру x86: +

+
cp -iv arch/x86/boot/bzImage /boot/vmlinuz-6.7.4-lfs-12.1
+

+ System.map - это символьный файл для + ядра. Он содержит точки входа каждой функции в API ядра, а также + адреса структур данных для запущенного ядра. Он используется в + качестве ресурса при исследовании проблем с ядром. Выполните + следующую команду для установки файла: +

+
cp -iv System.map /boot/System.map-6.7.4
+

+ Файл конфигурации ядра .config + создается на шаге make + menuconfig и содержит все параметры ядра, которое + было скомпилировано только что. Рекомендуется сохранить этот файл + на будущее: +

+
cp -iv .config /boot/config-6.7.4
+

+ Установите документацию ядра: +

+
cp -r Documentation -T /usr/share/doc/linux-6.7.4
+

+ Важно отметить, что файлы в каталоге с исходным кодом ядра не + принадлежат пользователю root. Всякий раз, когда пакет + распаковывается от имени пользователя root (как это и выполнялось внутри среды + chroot), файлы имеют те идентификаторы пользователя и группы, + которые были присвоены при распаковке. Обычно это не вызывает + проблем для других устанавливаемых пакетов, так как каталог с + исходниками удаляется после установки пакета. Однако исходный код + ядра Linux часто сохраняется в течение длительного времени. Из-за + этого существует вероятность того, что идентификатор пользователя, + используемый при распаковке, будет назначен другому пользователю. В + таком случае, этот пользователь будет иметь доступ на запись в этот + каталог. +

+
+ [Примечание] +

+ Примечание +

+

+ В ряде случаев требуется обновить конфигурацию ядра для пакетов, + которые будут установлены позже в BLFS. В отличии от других + пакетов, нет необходимости удалять дерево исходного кода ядра + после установки только что собранного ядра. +

+

+ Если вы планируете оставить каталог с исходным кодом ядра, + выполните команду chown -R 0:0 + * находясь в каталоге linux-6.7.4, чтобы все файлы принадлежали + пользователю root. +

+
+
+ [Предупреждение] +

+ Предупреждение +

+

+ Иногда, в документации к ядру, рекомендуют создать символическую + ссылку /usr/src/linux указывающую + на каталог с исходниками ядра. Эта рекомендация относится к ядрам + до версии 2.6 и не должна + выполняться в системе LFS, так как это может вызвать проблемы с + пакетами, которые вы, возможно, захотите собрать, когда ваша + базовая система LFS будет готова. +

+
+
+ [Предупреждение] +

+ Предупреждение +

+

+ Заголовочные файлы в системном каталоге include (/usr/include) всегда используются те, которые + применялись при компиляции Glibc, то есть подготовленные + заголовочные файлы, установленные в Раздел 5.4, + «Заголовочные файлы Linux-6.7.4 API». Поэтому их никогда не следует заменять на чистые + заголовочные файлы ядра или любые другие подготовленные + заголовочные файлы. +

+
+
+
+

+ 10.3.2. Настройка + порядка загрузки модулей Linux +

+

+ В большинстве случаев модули Linux загружаются автоматически, но + иногда требуется определенный порядок. Программа, которая загружает + модули, modprobe или + insmod, использует + файл /etc/modprobe.d/usb.conf как раз + для этой цели. Этот файл должен быть заполнен таким образом, что + если USB-драйверы (ehci_hcd, ohci_hcd и uhci_hcd) были собраны в + виде модулей, то они будут загружены в правильном порядке; ehci_hcd + должен быть загружен до ohci_hcd и uhci_hcd для того, чтобы + избежать предупреждений во время загрузки. +

+

+ Создайте новый файл /etc/modprobe.d/usb.conf, выполнив следующую + команду: +

+
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
+
+
+

+ 10.3.3. + Содержимое пакета Linux +

+
+
+
+ Установленные файлы: + config-6.7.4, vmlinuz-6.7.4-lfs-12.1, и + System.map-6.7.4 +
+
+ Созданные каталоги: + /lib/modules, + /usr/share/doc/linux-6.7.4 +
+
+
+
+

+ Краткое описание +

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

+ config-6.7.4 +

+
+

+ Содержит в себе все параметры конфигурации ядра +

+
+

+ vmlinuz-6.7.4-lfs-12.1 +

+
+

+ Ядро системы Linux. При включении компьютера ядро — это + первая загружаемая часть операционной системы. Оно + обнаруживает и инициализирует все компоненты аппаратного + обеспечения компьютера, делает их доступными в виде + дерева каталогов с файлами для доступа к ним программ и + превращает один процессор в мультизадачную машину, + способную выполнять множество программ как будто + одновременно. +

+
+

+ System.map-6.7.4 +

+
+

+ Список адресов и символов; файл содержит точки входа и + адреса всех функций и структур данных в ядре +

+
+
+
+
+ + + diff --git a/lfs-12.1-sysv/chapter11/afterlfs.html b/lfs-12.1-sysv/chapter11/afterlfs.html new file mode 100644 index 0000000..032f06f --- /dev/null +++ b/lfs-12.1-sysv/chapter11/afterlfs.html @@ -0,0 +1,347 @@ + + + + + + 11.5. Начало работы после сборки LFS + + + + + + + + +

+ 11.5. Начало работы после сборки + LFS +

+
+
+

+ 11.5.1. Что делать дальше? +

+

+ Теперь, когда LFS собрана и у вас есть загружаемая система, + необходимо решить, что же делать дальше? Следующий шаг - + определиться, как использовать систему. Как правило, следует + учитывать две широкие категории: рабочая станция или сервер. + Действительно, эти категории не являются взаимоисключающими. + Приложения, необходимые для каждой категории, можно объединить в + одну систему, но пока давайте рассмотрим их по отдельности. +

+

+ Сервер — более простая категория. Как правило, это веб-сервер, + такой как + Apache, и сервер баз данных, например, + MariaDB. Однако возможны и другие варианты. К этой же категории + относятся операционные системы для встраиваемых устройств. +

+

+ Рабочая станция же, гораздо сложнее. Обычно для нее требуется среда + рабочего стола, например, LXDE, + XFCE, + KDE, + или + Gnome основанные на базовом + графическом окружении и наборе графических приложений, таких + как + веб-браузер Firefox, + почтовый клиент Thunderbird, или + пакет офисных приложений LibreOffice. Для этих приложений + требуется множество (может быть несколько сотен, в зависимости от + ваших потребностей) пакетов вспомогательных приложений и библиотек. +

+

+ В дополнение к вышесказанному, существует набор приложений для + управления системой. Все эти приложения есть в справочнике BLFS, но + не все пакеты необходимы в каждом конкретном окружении. Например + + клиент dhcpcd, обычно не требуется на серверах или + управление параметрами беспроводных сетей - полезно только для + ноутбуков и других портативных систем. +

+
+
+

+ 11.5.2. Работа в базовой среде LFS +

+

+ Когда вы впервые загружаетесь в LFS, у вас есть все необходимые + инструменты для сборки дополнительных пакетов. К сожалению, набор + программ пользовательского окружения довольно скудный. Есть + несколько способов исправить это: +

+
+

+ 11.5.2.1. Работа с хоста LFS в chroot +

+

+ Этот метод обеспечивает полноценную графическую среду, в которой + доступен полнофункциональный браузер и возможности + копирования/вставки. Также он позволяет использовать приложения + хоста, такие как wget, для загрузки исходных текстов пакетов в + каталог, доступный при работе в среде chroot. +

+

+ Чтобы правильно собрать пакеты в chroot, вам необходимо не забыть + смонтировать виртуальные файловые системы, если они еще не + смонтированы. Один из способов сделать это — создать скрипт в + ХОСТОВОЙ системе: +

+
cat > ~/mount-virt.sh << "EOF"
+#!/bin/bash
+
+function mountbind
+{
+   if ! mountpoint $LFS/$1 >/dev/null; then
+     $SUDO mount --bind /$1 $LFS/$1
+     echo $LFS/$1 mounted
+   else
+     echo $LFS/$1 already mounted
+   fi
+}
+
+function mounttype
+{
+   if ! mountpoint $LFS/$1 >/dev/null; then
+     $SUDO mount -t $2 $3 $4 $5 $LFS/$1
+     echo $LFS/$1 mounted
+   else
+     echo $LFS/$1 already mounted
+   fi
+}
+
+if [ $EUID -ne 0 ]; then
+  SUDO=sudo
+else
+  SUDO=""
+fi
+
+if [ x$LFS == x ]; then
+  echo "LFS not set"
+  exit 1
+fi
+
+mountbind dev
+mounttype dev/pts devpts devpts -o gid=5,mode=620
+mounttype proc    proc   proc
+mounttype sys     sysfs  sysfs
+mounttype run     tmpfs  run
+if [ -h $LFS/dev/shm ]; then
+  install -v -d -m 1777 $LFS$(realpath /dev/shm)
+else
+  mounttype dev/shm tmpfs tmpfs -o nosuid,nodev
+fi 
+
+#mountbind usr/src
+#mountbind boot
+#mountbind home
+EOF
+

+ Обратите внимание, что последние три команды в скрипте + закомментированы. Они пригодятся, если эти каталоги монтируются + как отдельные разделы в хост-системе и будут монтироваться при + загрузке завершенной системы LFS/BLFS. +

+

+ Скрипт можно запустить с помощью bash ~/mount-virt.sh либо от + имени обычного пользователя (рекомендуется), либо от имени + root. При запуске от имени + обычного пользователя в хост-системе требуется sudo. +

+

+ Еще одна проблема, на которую указывает скрипт, заключается в + том, где хранить загруженные файлы пакетов. Это местоположение + является произвольным. Оно может находиться в домашнем каталоге + обычного пользователя, таком как ~/sources, или в глобальном + каталоге /usr/src. Наша рекомендация - не смешивать источники + BLFS и источники LFS в (из среды chroot) /sources. В любом + случае, пакеты должны быть доступны внутри среды chroot. +

+

+ Последняя удобная функция, представленная здесь, предназначена + для упрощения процесса входа в среду chroot. Это можно сделать с + помощью псевдонима, помещенного в пользовательский файл ~/.bashrc + в хост-системе: +

+
alias lfs='sudo /usr/sbin/chroot /mnt/lfs /usr/bin/env -i HOME=/root TERM="$TERM" PS1="\u:\w\\\\$ "
+PATH=/bin:/usr/bin:/sbin:/usr/sbin /bin/bash --login'
+

+ Этот псевдоним немного сложен для восприятия из-за кавычек и + слэшей. Всё это должно быть в одной строке. Вышеуказанная команда + была разделена на две части для презентационных целей. +

+
+
+

+ 11.5.2.2. Работа удаленно по ssh +

+

+ Этот метод также предоставляет полноценную графическую среду, но + сначала требует установки + sshd в системе LFS, обычно в chroot. Кроме этого потребуется + второй компьютер. Преимущество этого метода в том, что он прост, + поскольку не требует сложной среды chroot. Он также использует + собранное вами ядро LFS для всех дополнительных пакетов и + по-прежнему предоставляет полную систему для установки пакетов. +

+

+ Вы можете использовать команду scp для загрузки исходных + текстов пакетов, которые будут собраны в системе LFS. Если вместо + этого вы хотите загрузить исходные тексты непосредственно в + систему LFS, установите + libtasn1, + p11-kit, + make-ca и + wget в chroot (или загрузите их исходники с помощью + scp после загрузки + системы LFS). +

+
+
+

+ 11.5.2.3. Работа из командной строки LFS +

+

+ Этот метод требует установки + libtasn1, + p11-kit, + make-ca, + wget, + gpm и + links (или + lynx) в chroot, а затем перезагрузки в новую систему LFS. На + данный момент система по умолчанию имеет шесть виртуальных + консолей. Переключать консоли так же просто, как использовать + комбинации клавиш Alt+Fx , где Fx это клавиши от F1 до F6. Комбинации Alt+ и Alt+ также переключают консоль. +

+

+ На этом этапе вы можете войти в две разные виртуальные консоли и + запустить браузер links или lynx в одной консоли и bash в другой. + GPM позволяет копировать команды из браузера с помощью левой + кнопки мыши, переключать консоли и вставлять их в другую консоль. +

+
+ [Примечание] +

+ Примечание +

+

+ Вместо примечания: переключение виртуальных консолей также + может быть выполнено из экземпляра X Window с помощью + комбинации клавиш Ctrl+Alt+Fx ,но операция копирования + мышью не работает между графическим интерфейсом и виртуальной + консолью. Вы можете вернуться к дисплею X Window с помощью + комбинации Ctrl+Alt+Fx ,где Fx обычно F1, но может быть F7. +

+
+
+
+
+ + + diff --git a/lfs-12.1-sysv/chapter11/chapter11.html b/lfs-12.1-sysv/chapter11/chapter11.html new file mode 100644 index 0000000..8223be6 --- /dev/null +++ b/lfs-12.1-sysv/chapter11/chapter11.html @@ -0,0 +1,100 @@ + + + + + + Глава 11. Заключение + + + + + + + + +

+ 11. Заключение +

+
+ +
+ + + diff --git a/lfs-12.1-sysv/chapter11/getcounted.html b/lfs-12.1-sysv/chapter11/getcounted.html new file mode 100644 index 0000000..314e6bb --- /dev/null +++ b/lfs-12.1-sysv/chapter11/getcounted.html @@ -0,0 +1,89 @@ + + + + + + 11.2. Вступите в ряды пользователей LFS + + + + + + + + +

+ 11.2. + Вступите в ряды пользователей LFS +

+
+

+ Теперь, когда вы закончили изучение книги LFS, хотите добавить себя в + список пользователей LFS? Перейдите по ссылке https://www.linuxfromscratch.org/cgi-bin/lfscounter.php + и зарегистрируйтесь. Введите ваше имя и версию LFS, которую вы + использовали. +

+

+ Давайте выполним перезагрузку в систему LFS. +

+
+ + + diff --git a/lfs-12.1-sysv/chapter11/reboot.html b/lfs-12.1-sysv/chapter11/reboot.html new file mode 100644 index 0000000..86ec276 --- /dev/null +++ b/lfs-12.1-sysv/chapter11/reboot.html @@ -0,0 +1,217 @@ + + + + + + 11.3. Перезагрузка системы + + + + + + + + +

+ 11.3. Перезагрузка + системы +

+
+

+ Теперь, когда все программное обеспечение установлено, пришло время + перезагрузить ваш компьютер. Однако есть несколько вещей, которые + нужно проверить. Вот некоторые предложения: +

+
+
    +
  • +

    + Установить + прошивки, если они необходимы для правильной работы вашего + оборудования. +

    +
  • +
  • +

    + Убедитесь, что установлен пароль для пользователя root. +

    +
  • +
  • +

    + На данном этапе также уместно ознакомиться со следующими + конфигурационными файлами. +

    +
    +
      +
    • +

      + /etc/bashrc +

      +
    • +
    • +

      + /etc/dircolors +

      +
    • +
    • +

      + /etc/fstab +

      +
    • +
    • +

      + /etc/hosts +

      +
    • +
    • +

      + /etc/inputrc +

      +
    • +
    • +

      + /etc/profile +

      +
    • +
    • +

      + /etc/resolv.conf +

      +
    • +
    • +

      + /etc/vimrc +

      +
    • +
    • +

      + /root/.bash_profile +

      +
    • +
    • +

      + /root/.bashrc +

      +
    • +
    • +

      + /etc/sysconfig/ifconfig.eth0 +

      +
    • +
    +
    +
  • +
+
+

+ Теперь, после всего, давайте перейдём к первой загрузке нашей новой + системы LFS. Для начала, выйдем из chroot-окружения: +

+
logout
+

+ Затем размонтируйте виртуальные файловые системы: +

+
umount -v $LFS/dev/pts
+mountpoint -q $LFS/dev/shm && umount -v $LFS/dev/shm
+umount -v $LFS/dev
+umount -v $LFS/run
+umount -v $LFS/proc
+umount -v $LFS/sys
+

+ Если было создано несколько разделов, размонтируйте их перед + размонтированием основного, вот так: +

+
umount -v $LFS/home
+umount -v $LFS/usr
+

+ Размонтируйте саму файловую систему LFS: +

+
umount -v $LFS
+

+ Теперь, выполните перезагрузку системы. +

+

+ Предполагается, что загрузчик GRUB был настроен ранее, поэтому пункт + меню LFS 12.1 будет загружен + автоматически. +

+

+ После завершения перезагрузки, система LFS будет готова к + использованию. Вы увидите простую подсказку «login: ». На этом этапе вы + можете перейти к книге BLFS, + где вы установите дополнительное программное обеспечение в + соответствии с вашими потребностями. +

+

+ Если перезагрузка завершилась неудачей, самое время устранить эти + неполадки. Советы по решению проблем с начальной загрузкой, смотрите + на странице https://www.linuxfromscratch.org/lfs/troubleshooting.html. +

+
+ + + diff --git a/lfs-12.1-sysv/chapter11/theend.html b/lfs-12.1-sysv/chapter11/theend.html new file mode 100644 index 0000000..06e79ce --- /dev/null +++ b/lfs-12.1-sysv/chapter11/theend.html @@ -0,0 +1,126 @@ + + + + + + 11.1. Заключение + + + + + + + + +

+ 11.1. Заключение +

+
+

+ Отлично! Новая система LFS установлена! Желаем успехов в работе с + вашей новой, блестящей, самостоятельно собранной Linux системой. +

+

+ Может быть хорошей идеей создать файл /etc/lfs-release. Имея этот файл, вам (и нам, если + вам в какой-то момент понадобится обратиться за помощью) будет проще + узнать, какая версия LFS установлена в системе. Создайте этот файл, + выполнив следующую команду: +

+
echo 12.1 > /etc/lfs-release
+

+ Следующие два файла, содержащие описание установленной системы, могут + использоваться пакетами, устанавливаемыми позже, либо в бинарном + виде, либо путем их сборки. +

+

+ Первый показывает статус вашей новой системы по отношению к стандарту + LSB. Чтобы создать этот файл, выполните: +

+
cat > /etc/lsb-release << "EOF"
+DISTRIB_ID="Linux From Scratch"
+DISTRIB_RELEASE="12.1"
+DISTRIB_CODENAME="<your name here>"
+DISTRIB_DESCRIPTION="Linux From Scratch"
+EOF
+

+ Второй содержит примерно ту же информацию и используется systemd и + некоторыми графическими средами рабочего стола. Чтобы создать этот + файл, выполните: +

+
cat > /etc/os-release << "EOF"
+NAME="Linux From Scratch"
+VERSION="12.1"
+ID=lfs
+PRETTY_NAME="Linux From Scratch 12.1"
+VERSION_CODENAME="<your name here>"
+HOME_URL="https://mirror.linuxfromscratch.ru/lfs/"
+EOF
+

+ Обязательно настройте значения 'DISTRIB_CODENAME' и + 'VERSION_CODENAME', чтобы сделать название вашей новой системы + уникальным. +

+
+ + + diff --git a/lfs-12.1-sysv/chapter11/whatnow.html b/lfs-12.1-sysv/chapter11/whatnow.html new file mode 100644 index 0000000..d9148ca --- /dev/null +++ b/lfs-12.1-sysv/chapter11/whatnow.html @@ -0,0 +1,171 @@ + + + + + + 11.4. Дополнительные ресурсы + + + + + + + + +

+ 11.4. + Дополнительные ресурсы +

+
+

+ Благодарим за прочтение книги LFS. Мы надеемся, что эта книга была + полезна и вы узнали больше о процессе создания системы с нуля. +

+

+ Теперь, когда система LFS установлена, вы можете задаться вопросом + «Что дальше?» + Чтобы ответить на этот вопрос, мы составили для вас список ресурсов. +

+
+
    +
  • +

    + Обслуживание +

    +

    + Для всего программного обеспечения регулярно появляются + сообщения об ошибках и уведомления безопасности. Поскольку + система LFS компилируется из исходного кода, вы должны быть в + курсе таких отчетов. Существует несколько онлайн-ресурсов, + которые отслеживают такие отчеты, некоторые из них приведены + ниже: +

    +
    + +
    +
  • +
  • +

    + Советы LFS +

    +

    + Советы LFS представляют собой коллекцию обучающих материалов, + собранную добровольцами сообщества LFS. Советы доступны по + адресу https://mirror.linuxfromscratch.ru/hints/downloads/files/. +

    +
  • +
  • +

    + Списки рассылки +

    +

    + Существует несколько списков рассылки LFS, на которые вы можете + подписаться, если нуждаетесь в помощи, хотите быть в курсе + последних событий, хотите внести свой вклад в проект и многое + другое. Посетите Глава 1 - Списки рассылки для + получения дополнительной информации. +

    +
  • +
  • +

    + Проект документации по Linux (TLDP) +

    +

    + Целью проекта TLDP является сотрудничество по всем вопросам + связанным с документацией по Linux. TLDP содержит большую + коллекцию инструкций, руководств и справочных страниц. Она + расположена по адресу https://tldp.org/. +

    +
  • +
+
+
+ + + diff --git a/lfs-12.1-sysv/images/caution.png b/lfs-12.1-sysv/images/caution.png new file mode 100644 index 0000000..5b7809c Binary files /dev/null and b/lfs-12.1-sysv/images/caution.png differ diff --git a/lfs-12.1-sysv/images/chevron-bottom.png b/lfs-12.1-sysv/images/chevron-bottom.png new file mode 100644 index 0000000..a1a3bce Binary files /dev/null and b/lfs-12.1-sysv/images/chevron-bottom.png differ diff --git a/lfs-12.1-sysv/images/chevron-left.png b/lfs-12.1-sysv/images/chevron-left.png new file mode 100644 index 0000000..f16a3ab Binary files /dev/null and b/lfs-12.1-sysv/images/chevron-left.png differ diff --git a/lfs-12.1-sysv/images/chevron-right.png b/lfs-12.1-sysv/images/chevron-right.png new file mode 100644 index 0000000..b8d9362 Binary files /dev/null and b/lfs-12.1-sysv/images/chevron-right.png differ diff --git a/lfs-12.1-sysv/images/chevron-top.png b/lfs-12.1-sysv/images/chevron-top.png new file mode 100644 index 0000000..d9c01ba Binary files /dev/null and b/lfs-12.1-sysv/images/chevron-top.png differ diff --git a/lfs-12.1-sysv/images/grid-three-up.png b/lfs-12.1-sysv/images/grid-three-up.png new file mode 100644 index 0000000..c3f70a2 Binary files /dev/null and b/lfs-12.1-sysv/images/grid-three-up.png differ diff --git a/lfs-12.1-sysv/images/important.png b/lfs-12.1-sysv/images/important.png new file mode 100644 index 0000000..12c90f6 Binary files /dev/null and b/lfs-12.1-sysv/images/important.png differ diff --git a/lfs-12.1-sysv/images/menu.png b/lfs-12.1-sysv/images/menu.png new file mode 100644 index 0000000..6de4e43 Binary files /dev/null and b/lfs-12.1-sysv/images/menu.png differ diff --git a/lfs-12.1-sysv/images/note.png b/lfs-12.1-sysv/images/note.png new file mode 100644 index 0000000..f14464d Binary files /dev/null and b/lfs-12.1-sysv/images/note.png differ diff --git a/lfs-12.1-sysv/images/tip.png b/lfs-12.1-sysv/images/tip.png new file mode 100644 index 0000000..5c4aab3 Binary files /dev/null and b/lfs-12.1-sysv/images/tip.png differ diff --git a/lfs-12.1-sysv/images/tux.png b/lfs-12.1-sysv/images/tux.png new file mode 100644 index 0000000..8aae132 Binary files /dev/null and b/lfs-12.1-sysv/images/tux.png differ diff --git a/lfs-12.1-sysv/images/warning.png b/lfs-12.1-sysv/images/warning.png new file mode 100644 index 0000000..1c33db8 Binary files /dev/null and b/lfs-12.1-sysv/images/warning.png differ diff --git a/lfs-12.1-sysv/index.html b/lfs-12.1-sysv/index.html new file mode 100644 index 0000000..44dc770 --- /dev/null +++ b/lfs-12.1-sysv/index.html @@ -0,0 +1,919 @@ + + + + + + Линукс с нуля + + + + + + + +
+
+
+
+

+ Линукс с нуля +

+
+
+

+ Версия 12.1 +

+
+
+

+ Дата публикации 1 марта 2024 +

+
+
+
+
+

+ Создатель: Gerard + Beekmans +

+
+
+

+ Главный редактор: Bruce + Dubbs +

+
+
+

+ Автор перевода: Владимир + Перцев +

+
+
+
+
+ +
+
+
+
+
+

+ Содержание +

+ +
+
+ + + diff --git a/lfs-12.1-sysv/legalnotice.html b/lfs-12.1-sysv/legalnotice.html new file mode 100644 index 0000000..0aca299 --- /dev/null +++ b/lfs-12.1-sysv/legalnotice.html @@ -0,0 +1,44 @@ + + + + + + Юридическое уведомление + + + + + + + +
+

+ Все права защищены. +

+

+ Эта книга распространяется на условиях Лицензия Creative Commons. +

+

+ Инструкции для компьютера могут быть извлечены из книги на условиях + Лицензия MIT. +

+

+ Linux® является зарегистрированным + товарным знаком Линуса Торвальдса. +

+
+ + + diff --git a/lfs-12.1-sysv/longindex.html b/lfs-12.1-sysv/longindex.html new file mode 100644 index 0000000..68571f0 --- /dev/null +++ b/lfs-12.1-sysv/longindex.html @@ -0,0 +1,5713 @@ + + + + + + Предметный указатель + + + + + + + + +
+
+
+
+

+ Предметный указатель +

+
+
+
+
+

+ Пакеты +

+ +

+ Программы +

+ +

+ Библиотеки +

+ +

+ Скрипты +

+ +

+ Разное +

+ +
+
+ + + diff --git a/lfs-12.1-sysv/md5sums b/lfs-12.1-sysv/md5sums new file mode 100644 index 0000000..2766596 --- /dev/null +++ b/lfs-12.1-sysv/md5sums @@ -0,0 +1,93 @@ +590765dee95907dbc3c856f7255bd669 acl-2.3.2.tar.xz +227043ec2f6ca03c0948df5517f9c927 attr-2.5.2.tar.gz +1be79f7106ab6767f18391c5e22be701 autoconf-2.72.tar.xz +4017e96f89fca45ca946f1c5db6be714 automake-1.16.5.tar.xz +ad5b38410e3bf0e9bcc20e2765f5e3f9 bash-5.2.21.tar.gz +e249b1f86f886d6fb71c15f72b65dd3d bc-6.7.5.tar.xz +a075178a9646551379bfb64040487715 binutils-2.42.tar.xz +c28f119f405a2304ff0a7ccdcc629713 bison-3.8.2.tar.xz +67e051268d0c475ea773822f7500d0e5 bzip2-1.0.8.tar.gz +50fcafcecde5a380415b12e9c574e0b2 check-0.15.2.tar.gz +459e9546074db2834eefe5421f250025 coreutils-9.4.tar.xz +68c5208c58236eba447d7d6d1326b821 dejagnu-1.6.3.tar.gz +2745c50f6f4e395e7b7d52f902d075bf diffutils-3.10.tar.xz +6b4f18a33873623041857b4963641ee9 e2fsprogs-1.47.0.tar.gz +79ad698e61a052bea79e77df6a08bc4b elfutils-0.190.tar.bz2 +bd169cb11f4b9bdfddadf9e88a5c4d4b expat-2.6.0.tar.xz +00fce8de158422f5ccd2666512329bd2 expect5.45.4.tar.gz +26b2a96d4e3a8938827a1e572afd527a file-5.45.tar.gz +4a4a547e888a944b2f3af31d789a1137 findutils-4.9.0.tar.xz +2882e3179748cc9f9c23ec593d6adc8d flex-2.6.4.tar.gz +3bc52f1952b9a78361114147da63c35b flit_core-3.9.0.tar.gz +97c5a7d83f91a7e1b2035ebbe6ac7abd gawk-5.3.0.tar.xz +e0e48554cc6e4f261d55ddee9ab69075 gcc-13.2.0.tar.xz +8551961e36bf8c70b7500d255d3658ec gdbm-1.23.tar.gz +2d8507d003ef3ddd1c172707ffa97ed8 gettext-0.22.4.tar.xz +be81e87f72b5ea2c0ffe2bedfeb680c6 glibc-2.39.tar.xz +956dc04e864001a9c22429f761f2c283 gmp-6.3.0.tar.xz +9e251c0a618ad0824b51117d5d9db87e gperf-3.1.tar.gz +7c9bbd74492131245f7cdb291fa142c0 grep-3.11.tar.xz +5e4f40315a22bb8a158748e7d5094c7d groff-1.23.0.tar.gz +60c564b1bdc39d8e43b3aab4bc0fb140 grub-2.12.tar.xz +d5c9fc9441288817a4a0be2da0249e29 gzip-1.13.tar.xz +aed66d04de615d76c70890233081e584 iana-etc-20240125.tar.gz +9e5a6dfd2d794dc056a770e8ad4a9263 inetutils-2.5.tar.xz +12e517cac2b57a0121cda351570f1e63 intltool-0.51.0.tar.gz +35d8277d1469596b7edc07a51470a033 iproute2-6.7.0.tar.xz +caf5418c851eac59e70a78d9730d4cea Jinja2-3.1.3.tar.gz +e2fd7adccf6b1e98eb1ae8d5a1ce5762 kbd-2.6.4.tar.xz +6165867e1836d51795a11ea4762ff66a kmod-31.tar.xz +cf05e2546a3729492b944b4874dd43dd less-643.tar.gz +c37ac1c5dbb57fb326d9c32c8f8b49c7 lfs-bootscripts-20230728.tar.xz +4667bacb837f9ac4adb4a1a0266f4b65 libcap-2.69.tar.xz +0da1a5ed7786ac12dcbaf0d499d8a049 libffi-3.4.4.tar.gz +1a48b5771b9f6c790fb4efdb1ac71342 libpipeline-1.5.7.tar.gz +2fc0b6ddcd66a89ed6e45db28fa44232 libtool-2.4.7.tar.xz +b84cd4104e08c975063ec6c4d0372446 libxcrypt-4.4.36.tar.xz +370e1b6155ae63133380e421146619e0 linux-6.7.4.tar.xz +0d90823e1426f1da2fd872df0311298d m4-1.4.19.tar.xz +c8469a3713cbbe04d955d4ae4be23eeb make-4.4.1.tar.gz +67e0052fa200901b314fad7b68c9db27 man-db-2.12.0.tar.xz +26b39e38248144156d437e1e10cb20bf man-pages-6.06.tar.xz +8fe7227653f2fb9b1ffe7f9f2058998a MarkupSafe-2.1.5.tar.gz +2d0ebd3a24249617b1c4d30026380cf8 meson-1.3.2.tar.gz +5c9bc658c9fd0f940e8e3e0f09530c62 mpc-1.3.1.tar.gz +523c50c6318dde6f9dc523bc0244690a mpfr-4.2.1.tar.xz +c5367e829b6d9f3f97b280bb3e6bfbc3 ncurses-6.4-20230520.tar.xz +32151c08211d7ca3c1d832064f6939b0 ninja-1.11.1.tar.gz +c239213887804ba00654884918b37441 openssl-3.2.1.tar.gz +78ad9937e4caadcba1526ef1853730d5 patch-2.7.6.tar.xz +d3957d75042918a23ec0abac4a2b7e0a perl-5.38.2.tar.xz +bc29d74c2483197deb9f1f3b414b7918 pkgconf-2.1.1.tar.xz +2f747fc7df8ccf402d03e375c565cf96 procps-ng-4.0.4.tar.xz +ed3206da1184ce9e82d607dc56c52633 psmisc-23.6.tar.xz +e7c178b97bf8f7ccd677b94d614f7b3c Python-3.12.2.tar.xz +8a6310f6288e7f60c3565277ec3b5279 python-3.12.2-docs-html.tar.bz2 +4aa1b31be779e6b84f9a96cb66bc50f6 readline-8.2.tar.gz +6aac9b2dbafcd5b7a67a8a9bcb8036c3 sed-4.9.tar.xz +6f6eb780ce12c90d81ce243747ed7ab0 setuptools-69.1.0.tar.gz +452b0e59f08bf618482228ba3732d0ae shadow-4.14.5.tar.xz +c70599ab0d037fde724f7210c2c8d7f8 sysklogd-1.5.1.tar.gz +521cda27409a9edf0370c128fae3e690 systemd-255.tar.gz +1ebe54d7a80f9abf8f2d14ddfeb2432d systemd-man-pages-255.tar.xz +81a05f28d7b67533cfc778fcadea168c sysvinit-3.08.tar.xz +a2d8042658cfd8ea939e6d911eaf4152 tar-1.35.tar.xz +0e4358aade2f5db8a8b6f2f6d9481ec2 tcl8.6.13-src.tar.gz +4452f2f6d557f5598cca17b786d6eb68 tcl8.6.13-html.tar.gz +edd9928b4a3f82674bcc3551616eef3b texinfo-7.1.tar.xz +2349edd8335245525cc082f2755d5bf4 tzdata2024a.tar.gz +acd4360d8a5c3ef320b9db88d275dae6 udev-lfs-20230818.tar.xz +f3591e6970c017bb4bcd24ae762a98f5 util-linux-2.39.3.tar.xz +79dfe62be5d347b1325cbd5ce2a1f9b3 vim-9.1.0041.tar.gz +802ad6e5f9336fcb1c76b7593f0cd22d wheel-0.42.0.tar.gz +89a8e82cfd2ad948b349c0a69c494463 XML-Parser-2.47.tar.gz +7ade7bd1181a731328f875bec62a9377 xz-5.4.6.tar.xz +9855b6d802d7fe5b7bd5b196a2271655 zlib-1.3.1.tar.gz +63251602329a106220e0a5ad26ba656f zstd-1.5.5.tar.gz +2d1691a629c558e894dbb78ee6bf34ef bash-5.2.21-upstream_fixes-1.patch +6a5ac7e89b791aae556de0f745916f7f bzip2-1.0.8-install_docs-1.patch +cca7dc8c73147444e77bc45d210229bb coreutils-9.4-i18n-1.patch +9a5997c3452909b1769918c759eff8a2 glibc-2.39-fhs-1.patch +f75cca16a38da6caa7d52151f7136895 kbd-2.6.4-backspace-1.patch +9ed497b6cb8adcb8dbda9dee9ebce791 readline-8.2-upstream_fixes-3.patch +17ffccbb8e18c39e8cedc32046f3a475 sysvinit-3.08-consolidated-1.patch diff --git a/lfs-12.1-sysv/part1.html b/lfs-12.1-sysv/part1.html new file mode 100644 index 0000000..c406b53 --- /dev/null +++ b/lfs-12.1-sysv/part1.html @@ -0,0 +1,103 @@ + + + + + + Часть I. Введение + + + + + + + + +

+ I. Введение +

+
+ +
+ + + diff --git a/lfs-12.1-sysv/part2.html b/lfs-12.1-sysv/part2.html new file mode 100644 index 0000000..1b70f9d --- /dev/null +++ b/lfs-12.1-sysv/part2.html @@ -0,0 +1,158 @@ + + + + + + Часть II. Подготовка к сборке + + + + + + + + +

+ II. Подготовка к сборке +

+
+ +
+ + + diff --git a/lfs-12.1-sysv/part3.html b/lfs-12.1-sysv/part3.html new file mode 100644 index 0000000..aad5460 --- /dev/null +++ b/lfs-12.1-sysv/part3.html @@ -0,0 +1,240 @@ + + + + + + Часть III. Сборка кросс-компилятора и набора временных + инструментов + + + + + + + + +

+ III. Сборка кросс-компилятора и набора + временных инструментов +

+
+
+

+ Содержание +

+ +
+
+ + + diff --git a/lfs-12.1-sysv/part4.html b/lfs-12.1-sysv/part4.html new file mode 100644 index 0000000..e29d09e --- /dev/null +++ b/lfs-12.1-sysv/part4.html @@ -0,0 +1,425 @@ + + + + + + Часть IV. Сборка системы LFS + + + + + + + + +

+ IV. Сборка системы LFS +

+
+
+

+ Содержание +

+ +
+
+ + + diff --git a/lfs-12.1-sysv/part5.html b/lfs-12.1-sysv/part5.html new file mode 100644 index 0000000..ca2ac3a --- /dev/null +++ b/lfs-12.1-sysv/part5.html @@ -0,0 +1,200 @@ + + + + + + Часть V. Приложения + + + + + + + + +

+ V. Приложения +

+
+ +
+ + + diff --git a/lfs-12.1-sysv/partintro/generalinstructions.html b/lfs-12.1-sysv/partintro/generalinstructions.html new file mode 100644 index 0000000..f43b6ea --- /dev/null +++ b/lfs-12.1-sysv/partintro/generalinstructions.html @@ -0,0 +1,282 @@ + + + + + + Общие инструкции по компиляции + + + + + + + + +

+ iii. Общие инструкции по компиляции +

+
+
+ [Внимание] +

+ Внимание +

+

+ В процессе разработки LFS инструкции в книге часто изменяются, + чтобы адаптироваться к обновлению пакета или использовать + преимущества новых функций из обновленных пакетов. Смешение + инструкций разных версий книги LFS может привести к незначительным + поломкам. Такого рода проблемы обычно являются результатом + повторного использования некоторых скриптов, созданных для + предыдущей версии LFS. Такое повторное использование настоятельно + не рекомендуется. Если вы по какой-либо причине повторно + используете скрипты из предыдущей версии LFS, вам нужно быть очень + осторожным при обновлении скриптов, чтобы они соответствовали + текущей версии книги LFS. +

+
+

+ При сборке пакетов в инструкциях делается несколько допущений: +

+
+
    +
  • +

    + На некоторые пакеты необходимо наложить патчи перед + компиляцией, метод используется тогда, когда исправление + необходимо для решения проблем сборки. Патчи часто требуются + как в этой, так и в следующих главах, но иногда, когда один и + тот же пакет собирается более одного раза, патч требуется не + сразу. Поэтому не беспокойтесь, если инструкции для скачанного + патча отсутствуют. Предупреждающие сообщения о смещении (offset) или размытии (fuzz) также могут + появляться при применении патча. Не обращайте внимания на эти + предупреждения, патч все равно успешно применен. +

    +
  • +
  • +

    + Во время компиляции большинства пакетов на экране будут + отображаться предупреждения. Это нормально, и их можно смело + игнорировать. Предупреждения появляются, например, когда + используется устаревший, недопустимый синтаксис C или C++. + Стандарты C меняются довольно часто, и некоторые пакеты все еще + используют более старый стандарт. Это не является серьезной + проблемой, но вызывает появление предупреждений. +

    +
  • +
  • +

    + Проверьте в последний раз, что переменная среды LFS настроена правильно: +

    +
    echo $LFS
    +

    + Убедитесь, что в выводе указан путь к точке монтирования + раздела LFS, то есть /mnt/lfs, + как в примере из этой книги. +

    +
  • +
  • +

    + Наконец, необходимо подчеркнуть два важных момента: +

    +
    + [Важно] +

    + Важно +

    +

    + Инструкции по сборке предполагают, что все Требования к + хост-системе, включая символические ссылки, установлены + правильно: +

    +
    +
      +
    • +

      + bash это + используемая оболочка. +

      +
    • +
    • +

      + sh это + символическая ссылка на bash. +

      +
    • +
    • +

      + /usr/bin/awk это + символическая ссылка на gawk. +

      +
    • +
    • +

      + /usr/bin/yacc это + символическая ссылка на bison или небольшой + скрипт, который выполняет bison +

      +
    • +
    +
    +
    +
    + [Важно] +

    + Важно +

    +

    + Вот краткое описание процесса сборки: +

    +
    +
      +
    1. +

      + Поместите все исходники и патчи в каталог, который + будет доступен из среды chroot, например, /mnt/lfs/sources/. +

      +
    2. +
    3. +

      + Перейдите в каталог /mnt/lfs/sources/. +

      +
    4. +
    5. +

      + Для каждого + пакета: +

      +
      +
        +
      1. +

        + С помощью программы tar извлеките + пакет для сборки. В Глава 5 + и + Глава 6 убедитесь, что при извлечении + пакета вы залогинены под пользователем lfs. +

        +

        + Не используйте никаких методов, кроме команды + tar, для + извлечения исходного кода. Примечательно, что + использование команды cp -R для + копирования дерева исходного кода в другое место + может привести к уничтожению ссылок и меток + времени в дереве исходного кода и привести к сбою + сборки. +

        +
      2. +
      3. +

        + Перейдите в каталог, созданный при извлечении + пакета. +

        +
      4. +
      5. +

        + Следуйте инструкциям по сборке пакета. +

        +
      6. +
      7. +

        + Вернитесь в исходный каталог, когда сборка будет + завершена. +

        +
      8. +
      9. +

        + Удалите извлеченный каталог, если не указано + иное. +

        +
      10. +
      +
      +
    6. +
    +
    +
    +
  • +
+
+
+ + + diff --git a/lfs-12.1-sysv/partintro/introduction.html b/lfs-12.1-sysv/partintro/introduction.html new file mode 100644 index 0000000..e1deaae --- /dev/null +++ b/lfs-12.1-sysv/partintro/introduction.html @@ -0,0 +1,112 @@ + + + + + + Введение + + + + + + + + +

+ i. Введение +

+
+

+ Эта часть разделена на три этапа: во-первых, сборка кросс-компилятора + и связанных с ним библиотек; во-вторых, использование этого набора + инструментов для сборки нескольких утилит таким образом, чтобы + изолировать их от основного дистрибутива; в-третьих, вход в среду + chroot (что ещё больше улучшает изоляцию от хоста), и сборка + оставшихся инструментов, необходимых для создания конечной системы. +

+
+ [Важно] +

+ Важно +

+

+ Именно здесь начинается настоящая работа по сборке новой системы. + Требуется очень тщательно следить за тем, чтобы инструкции + выполнялись точно так, как они приведены в книге. Вы должны + попытаться понять, что они делают, и каким бы ни было ваше желание + скорее закончить сборку, вам следует воздержаться от слепого набора + команд. Читайте документацию, если вы что-то не понимаете. Кроме + того, следите за результатом выполнения команд, отправляя лог в + файл с помощью утилиты tee. Это упрощает отладку, если + что-то пойдет не так. +

+
+

+ Следующий раздел представляет собой техническое введение в процесс + сборки, а следующий за ним, содержит очень важные общие инструкции по + компиляции. +

+
+ + + diff --git a/lfs-12.1-sysv/partintro/partintro.html b/lfs-12.1-sysv/partintro/partintro.html new file mode 100644 index 0000000..8fb2f39 --- /dev/null +++ b/lfs-12.1-sysv/partintro/partintro.html @@ -0,0 +1,102 @@ + + + + + + Важный предварительный материал + + + + + + + + +

+ Важный + предварительный материал +

+
+ +
+ + + diff --git a/lfs-12.1-sysv/partintro/toolchaintechnotes.html b/lfs-12.1-sysv/partintro/toolchaintechnotes.html new file mode 100644 index 0000000..f969bb1 --- /dev/null +++ b/lfs-12.1-sysv/partintro/toolchaintechnotes.html @@ -0,0 +1,743 @@ + + + + + + Технические примечания по сборочным инструментам + + + + + + + + +

+ ii. Технические примечания по + сборочным инструментам +

+
+

+ В этом разделе объясняются причины и некоторые технические детали, + лежащие в основе сборки пакетов. Не обязательно сразу понимать все, + что содержится в этом разделе. Большая часть этой информации станет + более понятной после выполнения фактической сборки. Возвращайтесь и + перечитывайте этот раздел в любое время по ходу сборки. +

+

+ Основная задача Глава 5 и Глава 6 + состоит в том, чтобы создать временную область, содержащую заведомо + исправный набор инструментов, которые можно изолировать от + хост-системы. Использовании команды chroot в последующих главах, + обеспечит чистую и безотказную сборку целевой системы LFS. Процесс + сборки разработан таким образом, чтобы свести к минимуму риски для + новых читателей и в то же время обеспечить наибольшую образовательную + ценность. +

+

+ Сборка инструментария основана на процессе кросс-компиляции. Кросс-компиляция обычно + используется для сборки компилятора и его инструментов для машины, + отличной от той, которая используется для сборки. Строго говоря, это + не требуется для LFS, так как машина, на которой будет работать новая + система, та же, что и используемая для сборки. Но у кросс-компиляции + есть большое преимущество, заключающееся в том, что все, что + подвергается кросс-компиляции, не будет зависеть от окружения хоста. +

+
+

+ О кросс-компиляции +

+
+ [Примечание] +

+ Примечание +

+

+ Книга LFS не является руководством и не содержит общего + руководства по созданию кросс (или собственного) тулчейна. Не + используйте команды из книги для кросс-тулчейна, который + планируете использовать для каких-либо других целей, кроме + создания LFS, если у вас нет полного понимания, что вы делаете. +

+
+

+ Кросс-компиляция включает в себя некоторые концепции, которые сами + по себе заслуживают отдельного раздела. Хотя этот раздел можно + пропустить при первом чтении, возвращение к нему позже будет + полезно для полного понимания процесса. +

+

+ Давайте определим некоторые термины, используемые в этом контексте. +

+
+
+
+ сборщик +
+
+

+ это машина, на которой мы собираем программы. Обратите + внимание, что этот компьютер упоминается как «хост» в других + разделах. +

+
+
+ хост +
+
+

+ это машина/система, на которой будут выполняться встроенные + программы. Обратите внимание, что используемое здесь значение + слова «хост» отличается от того, которое + применяется в других разделах. +

+
+
+ цель +
+
+

+ используется только для компиляторов. Это машина, для которой + компилятор создает код. Он может отличаться как от + «сборщика», так и от «хоста». +

+
+
+
+

+ В качестве примера представим следующий сценарий (иногда называемый + «канадским + крестом»): у нас есть компилятор на медленной машине, + назовем ее машиной A и компилятор ccA. У нас также есть быстрая + машина (B), но без компилятора, и мы хотим создать код для другой + медленной машины (C). Чтобы собрать компилятор для машины C, у нас + будет три этапа: +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Этап + + Сборщик + + Хост + + Цель + + Действие +
+ 1 + + A + + A + + B + + Сборка кросс-компилятора cc1 с использованием ccA на машине + A +
+ 2 + + A + + B + + C + + Сборка кросс-компилятора cc2 с использованием cc1 на машине + A +
+ 3 + + B + + C + + C + + Сборка компилятора ccC с использованием cc2 на машине B +
+
+

+ Затем все другие программы, необходимые для машины C, могут быть + скомпилированы с помощью cc2 на быстрой машине B. Обратите + внимание, что до тех пор, пока B не может запускать программы, + собранные для C, нет способа протестировать программы, пока не + будет запущена сама машина C. Например, чтобы запустить набор + тестов на ccC мы можем добавить четвертый этап: +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Этап + + Сборщик + + Хост + + Цель + + Действие +
+ 4 + + C + + C + + C + + Пересобрать и протестировать ccC, используя ccC на машине C +
+
+

+ В приведенном выше примере только cc1 и cc2 являются + кросс-компиляторами, то есть они создают код для машины, отличной + от той, на которой они выполняются. Компиляторы ccA и ccC создают + код для машины, на которой они выполняются. Такие компиляторы + называются нативными + компиляторами. +

+
+
+

+ Реализация кросс-компиляции + для LFS +

+
+ [Примечание] +

+ Примечание +

+

+ Все кросс-компилируемые пакеты в этой книге используют систему + сборки на основе autoconf. Система сборки на основе autoconf + принимает типы систем вида cpu-vendor-kernel-os, называемые + системным триплетом. Поскольку поле vendor часто не содержит + значения, autoconf позволяет вам опустить его. +

+

+ Проницательный читатель может задаться вопросом, почему название + «триплет» + применяется к имени из четырех компонентов. Поле kernel и поле os + ранее применялись как единый элемент: «system». Такая форма с + тремя полями все еще актуальна для некоторых систем, например, + x86_64-unknown-freebsd. Но две + системы могут использовать одно и то же ядро и все же быть + слишком разными, чтобы использовать одинаковый триплет для их + описания. Например, Android, работающий на мобильном телефоне + полностью отличается от Ubuntu, работающей на ARM64 сервере, хотя + они оба работают на одном и том же типе процессора (ARM64) и с + одним ядром (Linux). +

+

+ Без слоя эмуляции вы не сможете запустить исполняемый файл c + сервера на мобильном телефоне и наоборот. Итак, поле «system» было разделено + на поля kernel и os, чтобы однозначно их интерпретировать. В + нашем примере Android обозначается как aarch64-unknown-linux-android, а Ubuntu + aarch64-unknown-linux-gnu. +

+

+ Слово «триплет» сохранилось в лексиконе. Простой + способ определить триплет вашей машины — запустить скрипт + config.guess, + который входит в исходный код многих пакетов. Распакуйте + исходники binutils и запустите скрипт: ./config.guess, обратите + внимание на вывод. Например, для 32-разрядного процессора Intel + вывод будет i686-pc-linux-gnu. В 64-битной системе + это будет x86_64-pc-linux-gnu. В большинстве + систем Linux используют еще более простую команду gcc -dumpmachine, которая + предоставит вам аналогичную информацию. +

+

+ Вы также должны знать имя динамического компоновщика платформы, + часто называемого динамическим загрузчиком (не путать со + стандартным компоновщиком ld, который является частью + binutils). Динамический компоновщик, предоставляемый glibc, + находит и загружает общие библиотеки, необходимые программе, + подготавливает программу к запуску, а затем запускает ее. Имя + динамического компоновщика для 32-разрядной машины Intel — + ld-linux.so.2, а для 64-разрядных + систем — ld-linux-x86-64.so.2. + Надежный способ определить имя динамического компоновщика — + проверить случайный двоичный файл из хост-системы, выполнив + следующую команду: readelf -l + <имя исполняемого файла> | grep interpreter + и зафиксировать результат. Официальный источник, охватывающий все + платформы, находится в файле shlib-versions в корне дерева исходного кода + glibc. +

+
+

+ Чтобы сымитировать кросс-компиляцию в LFS, имя триплета хоста + немного подкорректировали, изменив поле "vendor" в переменной + LFS_TGT таким образом, чтобы оно + указывало "lfs". Мы также используем параметр --with-sysroot при сборке + кросс-компоновщика и кросс-компилятора, чтобы сообщить им, где + найти необходимые файлы хоста. Это гарантирует, что ни одна из + программ, входящих в Глава 6, + не сможет ссылаться на библиотеки на машине сборки. Для корректной + работы, обязательны всего два этапа, еще один рекомендуется для + тестирования: +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Этап + + Сборщик + + Хост + + Цель + + Действие +
+ 1 + + ПК + + ПК + + LFS + + Сборка кросс-компилятора cc1 с использованием cc-pc на ПК +
+ 2 + + ПК + + LFS + + LFS + + Сборка компилятора cc-lfs с использованием cc1 на ПК +
+ 3 + + LFS + + LFS + + LFS + + Пересборка и тестирование cc-lfs, используя cc-lfs в lfs +
+
+

+ В приведенной выше таблице «ПК» означает, что команды выполняются на + компьютере с использованием уже установленного дистрибутива. + «В lfs» + означает, что команды выполняются в chroot-окружении. +

+

+ Это еще не конец истории. Язык С - это не просто компилятор; также + он определяет стандартную библиотеку. В этой книге используется + библиотека GNU C под названием glibc (есть альтернативный вариант - + "musl"). Эта библиотека должна быть скомпилирована для машины lfs, + то есть с использованием кросс-компилятора cc1. Но сам компилятор + использует внутреннюю библиотеку, реализующую сложные инструкции, + недоступные в наборе инструкций ассемблера. Эта внутренняя + библиотека называется libgcc, и для полноценной работы ее + необходимо связать с библиотекой glibc! Кроме того, стандартная + библиотека для C++ (libstdc++) также должна быть связана с glibc. + Решение этой проблемы курицы и яйца состоит в том, чтобы сначала + собрать деградированную libgcc на основе cc1, в которой отсутствуют + некоторые функциональные возможности, такие как потоки и обработка + исключений, затем собрать glibc с использованием этого + деградированного компилятора (сама glibc не деградирована), а затем + собрать libstdc++. В этой последней библиотеке будет не хватать + некоторых функциональных возможностей libgcc. +

+

+ Выводом из предыдущего абзаца является то, что cc1 не может собрать + полнофункциональную libstdc++ с деградированной libgcc, но это + единственный компилятор, доступный для сборки библиотек C/C++ на + этапе 2. Есть две причины, по которым мы не используем сразу + компилятор cc-lfs, собранный на этапе 2, для сборки этих библиотек. +

+
+
    +
  • +

    + Вообще говоря, cc-lfs не может работать на ПК (хост-системе). + Хотя триплеты для ПК и LFS совместимы друг с другом, + исполняемый файл для lfs должен зависеть от glibc-2.39; + хост-дистрибутив может использовать либо другую реализацию + libc (например, musl), либо предыдущий выпуск glibc + (например, glibc-2.13). +

    +
  • +
  • +

    + Даже если cc-lfs может работать на ПК, его использование на + ПК сопряжено с риском привязки к библиотекам ПК, так как + cc-lfs является родным компилятором. +

    +
  • +
+
+

+ Поэтому, когда мы собираем gcc этап 2, мы даем указание системе + сборки пересобрать libgcc и libstdc++ с помощью cc1, но мы + связываем libstdc++ с новой пересобранной libgcc вместо старой, + деградированной. Это делает пересобранную библиотеку libstdc++ + полностью функциональной. +

+

+ В Глава 8 + (или «этап + 3») собраны все пакеты, необходимые для системы LFS. + Даже если пакет уже был установлен в системе LFS в предыдущей + главе, мы все равно пересобираем пакет. Основная причина пересборки + этих пакетов состоит в том, чтобы сделать их стабильными: если мы + переустанавливаем пакет LFS в готовой системе LFS, содержимое + пакета должно совпадать с содержимым того же пакета при первой + установке в Глава 8. + Временные пакеты, установленные в Глава 6 + или + Глава 7 не могут удовлетворять этому требованию, потому + что некоторые из них собраны без необязательных зависимостей и + autoconf не может выполнить некоторые проверки функций в Глава 6 + из-за кросс-компиляции, в результате чего во временных пакетах + отсутствуют дополнительные функции или используются не оптимальные + процедуры кода. Кроме того, второстепенной причиной для пересборки + пакетов является выполнение тестов. +

+
+
+

+ Другие детали + процесса +

+

+ Кросс-компилятор будет установлен в отдельный каталог $LFS/tools, так как он не будет частью конечной + системы. +

+

+ Сначала устанавливается Binutils, потому что во время выполнения + команды configure gcc + и glibc выполняются различные тесты функций на ассемблере и + компоновщике, чтобы определить, какие программные функции следует + включить или отключить. Это важнее, чем может показаться на первый + взгляд. Неправильно настроенный gcc или glibc может привести к + незначительной поломке сборочных инструментов, где последствия + такой поломки могут проявиться ближе к концу сборки всего + дистрибутива. Сбой тестов обычно выявляет эту ошибку до того, как + будет выполнено много дополнительной работы. +

+

+ Binutils устанавливает свой ассемблер и компоновщик в двух местах: + $LFS/tools/bin и $LFS/tools/$LFS_TGT/bin. Инструменты в одном + месте жестко связаны с другими. Важным аспектом компоновщика + является порядок поиска в библиотеке. Подробную информацию можно + получить от ld, + передав ей флаг --verbose. + Например, $LFS_TGT-ld --verbose | + grep SEARCH покажет текущие пути поиска и их + порядок. Он показывает, какие файлы связаны с помощью ld, путем компиляции фиктивной + программы и передачи параметра --verbose компоновщику. Например, + $LFS_TGT-gcc dummy.c -Wl,--verbose + 2>&1 | grep succeeded покажет все файлы, + успешно открытые во время компоновки. +

+

+ Следующий устанавливаемый пакет — gcc. Пример того, что можно + увидеть во время запуска configure: +

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

+ Это важно по причинам, упомянутым выше. Также здесь + демонстрируется, что сценарий настройки gcc не просматривает + значения переменной PATH, чтобы найти, какие инструменты + использовать. Однако во время фактической работы самого + gcc не обязательно + используются одни и те же пути поиска. Чтобы узнать, какой + стандартный компоновщик будет использовать gcc, запустите: $LFS_TGT-gcc -print-prog-name=ld. +

+

+ Подробную информацию можно получить из gcc, передав ему параметр + -v при компиляции фиктивной + программы. Например, gcc -v + dummy.c покажет подробную информацию об этапах + препроцессора, компиляции и сборки, включая указанные в + gcc пути поиска и их + порядок. +

+

+ Далее устанавливаются очищенные заголовочные файлы Linux API. Они + позволяют стандартной библиотеке C (Glibc) взаимодействовать с + функциями, предоставляемыми ядром Linux. +

+

+ Следующий устанавливаемый пакет — glibc. Наиболее важными при + сборке glibc являются компилятор, бинарные инструменты и + заголовочные файлы ядра. С компилятором, как правило, не бывает + проблем, поскольку glibc всегда будет использовать компилятор, + указанный в параметре --host, переданный скрипту configure; + например, в нашем случае компилятором будет $LFS_TGT-gcc. С бинарными + инструментами и заголовки ядра может быть немного сложнее. Поэтому + мы не рискуем и используем доступные параметры конфигурации, чтобы + обеспечить правильный выбор. После запуска configure проверьте содержимое + файла config.make в каталоге + сборки на наличие всех важных + деталей. Обратите внимание на использование опции CC="$LFS_TGT-gcc" (с переменной + $LFS_TGT) для управления используемыми + бинарными инструментами и использование флагов -nostdinc и -isystem для управления включаемым + путем поиска компилятора. Эти пункты подчеркивают важный аспект + пакета glibc — он очень самодостаточен с точки зрения своего + механизма сборки и, как правило, не полагается на значения по + умолчанию. +

+

+ Как было сказано выше, затем компилируется стандартная библиотека + C++, а затем в Глава 6 + все остальные программы, которым необходимо разрешить проблему + циклических зависимостей во время сборки. На этапе установки всех + этих пакетов используется переменная DESTDIR, для принудительной + установки в файловую систему LFS. +

+

+ В конце Глава 6 + устанавливается собственный компилятор lfs. Сначала собирается + binutils с той же переменной DESTDIR, + что и другие программы, затем повторно собирается gcc, без сборки + некоторых некритических библиотек. Из-за какой-то странной логики в + сценарии настройки GCC CC_FOR_TARGET + заканчивается как cc, + когда хост совпадает с целью, но отличается от системы сборки. + Поэтому значение CC_FOR_TARGET=$LFS_TGT-gcc явно + указывается в параметрах конфигурации. +

+

+ После входа в среду chroot в + Глава 7 первой задачей является установка libstdc++. Затем + выполняется установка временных программ, необходимых для + правильной работы тулчейна. С этого момента основной набор + инструментов является самодостаточным и автономным. В Глава 8 + собираются, тестируются и устанавливаются окончательные версии всех + пакетов, необходимых для полнофункциональной системы. +

+
+
+ + + diff --git a/lfs-12.1-sysv/prologue/architecture.html b/lfs-12.1-sysv/prologue/architecture.html new file mode 100644 index 0000000..8951731 --- /dev/null +++ b/lfs-12.1-sysv/prologue/architecture.html @@ -0,0 +1,126 @@ + + + + + + Целевые архитектуры LFS + + + + + + + + +

+ iii. Целевые + архитектуры LFS +

+
+

+ Основными целевыми архитектурами LFS являются процессоры AMD/Intel + x86 (32-разрядные) и x86_64 (64-разрядные). Однако, известно, что + инструкции, приведенные в этой книге, с некоторыми изменениями + работают с процессорами Power PC и ARM. Для создания системы, + использующей один из этих процессоров, основным предварительным + условием, в дополнение к описанным на следующей странице, является + существующая система Linux, например, собранная ранее LFS, Ubuntu, + Red Hat/Fedora, SuSE или другой дистрибутив, ориентированный на + имеющуюся у вас архитектуру. Также обратите внимание, что + 32-разрядный дистрибутив можно установить и использовать в качестве + хост-системы на 64-разрядном компьютере AMD/Intel. +

+

+ При сборке LFS выигрыш от сборки на 64-битной системе по сравнению с + 32-битной системой минимален. Например, в тестовой сборке LFS-9.1 в + системе на базе процессора Core i7-4790 с использованием 4 ядер были + получены следующие статистические данные: +

+
Архитектура     Время сборки    Размер сборки
+x86             239.9 минут     3.6 ГБ
+x64             233.2 минут     4.4 ГБ
+

+ Как видите, на том же оборудовании 64-битная сборка всего на 3% + быстрее и на 22% больше, чем 32-битная. Если вы планируете + использовать LFS в качестве LAMP-сервера или брандмауэра, + 32-разрядной сборки может быть достаточно. С другой стороны, для + сборки и/или запуска некоторых пакетов в BLFS теперь требуется более + 4 ГБ ОЗУ, поэтому, если вы планируете использовать LFS в качестве + настольной ОС, авторы LFS рекомендуют собирать 64-битную систему. +

+

+ По умолчанию 64-разрядная сборка LFS, считается «чистой» 64-разрядной + системой. То есть она поддерживает только 64-разрядные исполняемые + файлы. Сборка «multilib» системы требует компиляции многих + программ дважды - один раз для 32-битной и один раз для 64-битной. + Напрямую в книге данная опция не поддерживается, потому что это будет + только мешать образовательной цели этой книги, предлагающей + инструкции, необходимые для сборки базовой системы. Некоторые + редакторы LFS/BLFS поддерживают ответвление LFS для multilib, которое + доступно по адресу https://book.linuxfromscratch.ru/12.1-ml/systemv. + Но это более продвинутая тема. +

+
+ + + diff --git a/lfs-12.1-sysv/prologue/audience.html b/lfs-12.1-sysv/prologue/audience.html new file mode 100644 index 0000000..ace05ce --- /dev/null +++ b/lfs-12.1-sysv/prologue/audience.html @@ -0,0 +1,129 @@ + + + + + + Аудитория, на которую рассчитана эта книга + + + + + + + + +

+ ii. Аудитория, на которую + рассчитана эта книга +

+
+

+ Есть много причин, по которым вы хотели бы прочитать эту книгу. Один + из вопросов, который задают многие люди, звучит так: «Зачем тратить время на сборку + Linux-системы вручную с нуля, если можно просто загрузить и + установить существующую?» +

+

+ Одной из важных целей существования этого проекта является помощь в + изучении того, как работает система Linux изнутри. Создание системы + LFS помогает продемонстрировать, что заставляет работать Linux, как + все работает вместе и зависит друг от друга. Одна из лучших вещей, + которую может дать этот учебный опыт, — это возможность настроить + систему Linux в соответствии с вашими уникальными потребностями. +

+

+ Другое ключевое преимущество - LFS предоставляет более глубокий + контроль, не полагаясь на чью-либо реализацию Linux. С LFS вы + находитесь в кресле водителя, и Вы управляете каждым аспектом системы. +

+

+ LFS позволяет создавать очень компактные системы Linux. При установке + обычных дистрибутивов вам часто приходится устанавливать очень много + программ, которые, вероятно, никогда не используются. Эти программы + тратят ресурсы впустую. Вы можете возразить, что с сегодняшними + жесткими дисками и процессорами такие ресурсы не имеют значения. + Иногда, однако, вы все еще ограничены размером. Подумайте о + загрузочных компакт-дисках, USB-накопителях и встраиваемых системах. + Это области, в которых LFS может быть полезным. +

+

+ Ещё одним преимуществом собственной сборки Linux является + безопасность. При компиляции каждого компонента системы из исходных + кодов вы можете всё проверить и применить необходимые патчи. Больше + не нужно ждать, когда кто-то другой скомпилирует пакет с требуемыми + исправлениями. Если вы не изучите патч и не примените его + самостоятельно, нет гарантий, что новый пакет будет собран корректно + и устранит проблему. +

+

+ Цель Linux From Scratch — создать законченную и пригодную для + использования систему базового уровня. Если вы не хотите создавать + свою собственную систему Linux с нуля, вы, тем не менее, можете + извлечь пользу из информации, содержащейся в этой книге. +

+

+ Есть много других веских причин для создания собственной системы LFS. + В конце концов, образование, безусловно, является самой важной из + них. Продолжая работать с LFS, вы откроете для себя силу, которую + действительно приносят информация и знания. +

+
+ + + diff --git a/lfs-12.1-sysv/prologue/errata.html b/lfs-12.1-sysv/prologue/errata.html new file mode 100644 index 0000000..fbce3d3 --- /dev/null +++ b/lfs-12.1-sysv/prologue/errata.html @@ -0,0 +1,102 @@ + + + + + + Ошибки и рекомендации по безопасности + + + + + + + + +

+ ix. Ошибки и рекомендации по + безопасности +

+
+

+ Программное обеспечение, используемое для создания системы LFS, + постоянно обновляется и совершенствуется. Предупреждения безопасности + и исправления ошибок могут появиться после выхода книги LFS. Чтобы + проверить, нуждаются ли пакеты или инструкции в этом выпуске LFS в + каких-либо изменениях для устранения уязвимостей в системе + безопасности или исправления других ошибок, посетите https://mirror.linuxfromscratch.ru/lfs/errata/12.1/, + прежде чем приступить к сборке. Вы должны внести требуемые изменения + и применить их к соответствующему разделу книги по мере сборки + системы LFS. +

+

+ Кроме того, редакторы Linux From Scratch ведут список уязвимостей + безопасности, обнаруженных после выхода книги. Чтобы проверить + наличие каких-либо известных уязвимостей безопасности, посетите + https://mirror.linuxfromscratch.ru/lfs/advisories/, + прежде чем продолжить сборку. И, если вы будете использовать систему + LFS в качестве реальной настольной или серверной системы, вам следует + обращаться к рекомендациям и устранять любые уязвимости в системе + безопасности, даже когда система LFS полностью собрана. +

+
+ + + diff --git a/lfs-12.1-sysv/prologue/foreword.html b/lfs-12.1-sysv/prologue/foreword.html new file mode 100644 index 0000000..19b629c --- /dev/null +++ b/lfs-12.1-sysv/prologue/foreword.html @@ -0,0 +1,154 @@ + + + + + + Предисловие + + + + + + + + +

+ i. Предисловие +

+
+

+ Мой путь к изучению и лучшему пониманию Linux начался еще в 1998 + году. Я только что установил свой первый дистрибутив Linux и быстро + увлекся его концепцией и философией. +

+

+ У задачи может быть несколько вариантов решения. То же самое можно + сказать и о дистрибутивах Linux. Многие из них существовали годами. + Некоторые всё еще существуют, некоторые превратились во что-то иное, + а некоторые остались только в наших воспоминаниях. Все они выполняют + задачи по-разному, чтобы удовлетворить потребности своей целевой + аудитории. И я понял - раз существует так много всевозможных способов + добиться поставленной цели, мне больше не нужно ограничивать себя + какой-то одной реализацией. До появления Linux мы просто мирились с + проблемами в других операционных системах, поскольку у нас не было + выбора. Что есть, то есть, нравилось нам это или нет. С Linux + появился выбор. Если вам что-то не понравилось, вы можете изменить + это, к тому же, это всецело поощряется. +

+

+ Я попробовал разные дистрибутивы, но так и не смог ни на одном + остановиться. Oни были отличными системами сами по себе. Это больше + не было вопросом правильно или неправильно. Это стало делом личного + вкуса. При всём разнообразии выбора не было ни одного дистрибутива, + который был для меня идеален. Поэтому я решил создать свою + собственную Linux-систему, которая бы полностью соответствовала моим + личным предпочтениям. +

+

+ Чтобы создать свою собственную систему, я решил скомпилировать всё из + исходного кода вместо использования предварительно скомпилированных + пакетов. Эта «идеальная» Linux-система должна была иметь + сильные стороны других систем без их недостатков. Сначала эта мысль + казалась пугающей. Но я придерживался идеи, что такая система должна + быть создана. +

+

+ Разобравшись с такими проблемами, как циклические зависимости и + ошибки во время компиляции, я, наконец, создал собственную систему + Linux. Она была полностью работоспособна и вполне пригодна для + использования, как и любая другая Linux-система того времени. Но это + было мое собственное творение. Было очень приятно собрать такую + систему самому. Единственное, что было бы лучше, это создавать каждую + часть программного обеспечения самостоятельно. Это было следующее, к + чему я стремился +

+

+ Когда я поделился своими идеями и опытом с другими членами сообщества + Linux, стал очевиден явный интерес к ним. Вскоре стало понятно, что + такие специально созданные Linux-системы служат не только для + удовлетворения специфических потребностей пользователей, но и + являются идеальной возможностью для обучения программистов и + системных администраторов, чтобы улучшить их (существующие) навыки + работы с Linux. Так родился проект Linux + From Scratch. +

+

+ Книга Linux From Scratch является ядром этого проекта. В ней + содержится информация и инструкции, необходимые для разработки и + создания собственной системы. Хотя эта книга представляет шаблон, + который позволит создать правильно работающую систему, вы можете + изменить инструкции по своему усмотрению, что отчасти является важной + частью этого проекта. Вы всё контролируете; мы просто протягиваем + руку помощи, чтобы вы начали свой собственный путь. +

+

+ Я искренне надеюсь, что вы прекрасно проведете время, работая над + своей собственной системой Linux From Scratch, и оцените ее + многочисленные преимущества. +

+
+

+ --
+ Gerard Beekmans
+ gerard@linuxfromscratch.org +

+
+
+ + + diff --git a/lfs-12.1-sysv/prologue/organization.html b/lfs-12.1-sysv/prologue/organization.html new file mode 100644 index 0000000..551d130 --- /dev/null +++ b/lfs-12.1-sysv/prologue/organization.html @@ -0,0 +1,134 @@ + + + + + + Структура + + + + + + + + +

+ viii. Структура +

+
+

+ Эта книга разделена на несколько частей. +

+
+

+ Часть I - Введение +

+

+ Эта часть содержит важные замечания о том, как выполнить установку + LFS. Также здесь представлена метаинформация о книге +

+
+
+

+ Часть II - Подготовка к сборке +

+

+ Часть II описывает, как подготовиться к процессу сборки — создать + разделы, загрузить пакеты и выполнить компиляцию временных + инструментов. +

+
+
+

+ Часть III - Создание кросс-тулчейна LFS и временных инструментов +

+

+ Часть III содержит инструкции по созданию инструментов, необходимых + для создания конечной системы LFS. +

+
+
+

+ Часть IV - Сборка системы LFS +

+

+ Часть IV проводит читателя через сборку системы LFS—компиляцию и + установку всех пакетов один за другим, настройку сценариев загрузки + и установку ядра. Полученная в результате система Linux является + основой, на которой можно собрать другое программное обеспечение + для расширения системы по желанию. В конце этой книги есть простой + в использовании справочник со списком всех программ, библиотек и + важных файлов, которые были установлены. +

+
+
+

+ Часть V - Приложения +

+

+ Часть V содержит информацию о самой книге, включая акронимы и + термины, благодарности, зависимости пакетов, список загрузочных + сценариев LFS, лицензии на распространение книги и исчерпывающий + указатель пакетов, программ, библиотек и сценариев. +

+
+
+ + + diff --git a/lfs-12.1-sysv/prologue/package-choices.html b/lfs-12.1-sysv/prologue/package-choices.html new file mode 100644 index 0000000..11be888 --- /dev/null +++ b/lfs-12.1-sysv/prologue/package-choices.html @@ -0,0 +1,856 @@ + + + + + + Информация о пакетах, используемых в этой книге + + + + + + + + +

+ vi. Информация о пакетах, + используемых в этой книге +

+
+

+ Целью LFS является создание законченной и пригодной для использования + базовой системы, которая содержит все пакеты, необходимые для её + функционирования, состоящую при этом из относительно небольшого + набора программ, и возможности которой можно расширять в зависимости + от потребностей пользователя. Это не означает, что LFS является самой + маленькой из возможных систем. В систему включено несколько важных + пакетов, которые не являются обязательными. Приведенный ниже список + объясняет почему в книгу включен тот или иной пакет. +

+
+
    +
  • +

    + Acl +

    +

    + Access Control List или ACL — список управления доступом, + который определяет, кто или что может получать доступ к объекту + (программе, процессу или файлу), и какие именно операции + разрешено или запрещено выполнять субъекту (пользователю, + группе пользователей).Данный пакет содержит утилиты для + администрирования списков управления доступом, которые + используются для определения дискреционных прав доступа к + файлам и каталогам. +

    +
  • +
  • +

    + Attr +

    +

    + Этот пакет содержит программы для управления расширенными + атрибутами объектов файловой системы. +

    +
  • +
  • +

    + Autoconf +

    +

    + Этот пакет содержит программы для создания сценариев оболочки, + которые могут выполнять автоматическую настройку исходного кода + из шаблона разработчика. Он часто необходим для повторной + компиляции пакета после обновления процедур сборки. +

    +
  • +
  • +

    + Automake +

    +

    + Этот пакет содержит программы для создания Make-файлов из + шаблона. Он также необходим для повторной компиляции пакета + после обновления процедур сборки. +

    +
  • +
  • +

    + Bash +

    +

    + Этот пакет удовлетворяет требования LSB по предоставлению + интерфейса Bourne Shell для системы. Он был выбран среди других + пакетов оболочки из-за его повсеместного использования и + широких возможностей. +

    +
  • +
  • +

    + Bc +

    +

    + Этот пакет предоставляет язык числовой обработки произвольной + точности. Он необходимым для сборки ядра Linux +

    +
  • +
  • +

    + Binutils +

    +

    + Этот пакет содержит компоновщик, ассемблер и другие инструменты + для работы с объектными файлами. Программы в этом пакете + необходимы для компиляции большинства пакетов в системе LFS. +

    +
  • +
  • +

    + Bison +

    +

    + Этот пакет содержит GNU-версию yacc (Yet Another Compiler + Compiler), необходимого для сборки некоторых пакетов в LFS. +

    +
  • +
  • +

    + Bzip2 +

    +

    + Этот пакет содержит программы для сжатия и распаковки файлов. + Используется для распаковки множества пакетов LFS. +

    +
  • +
  • +

    + Check +

    +

    + Этот пакет содержит тестовую обвязку для других программ. +

    +
  • +
  • +

    + Coreutils +

    +

    + Этот пакет содержит ряд программ для просмотра файлов и + каталогов, и управления ими. Эти программы необходимы для + управления файлами через командную строку и для сборки каждого + пакета в LFS. +

    +
  • +
  • +

    + DejaGNU +

    +

    + Этот пакет предоставляет фреймворк для тестирования других + программ. +

    +
  • +
  • +

    + Diffutils +

    +

    + Этот пакет содержит программы, которые показывают различия + между файлами или каталогами. Их можно использовать для + создания патчей, а также они применяются во многих процедурах + сборки +

    +
  • +
  • +

    + E2fsprogs +

    +

    + Этот пакет содержит утилиты для работы с файловыми системами + ext2, ext3 и ext4. Это наиболее распространенные и тщательно + протестированные файловые системы, поддерживаемые Linux +

    +
  • +
  • +

    + Expat +

    +

    + Этот пакет содержит небольшую библиотеку разбора XML.Она + необходима для модуля Perl XML::Parser. +

    +
  • +
  • +

    + Expect +

    +

    + Этот пакет содержит инструменты для автоматизации и + тестирования, и является расширением к скриптовому языку Tcl, + для многих интерактивных приложений. Он обычно используется для + тестирования других пакетов. +

    +
  • +
  • +

    + File +

    +

    + Этот пакет содержит утилиту для определения типа файла или + файлов. Некоторым пакетам она нужна в сценариях сборки. +

    +
  • +
  • +

    + Findutils +

    +

    + Этот пакет предоставляет программы для поиска файлов. Он + используется во многих сценариях сборки пакетов. +

    +
  • +
  • +

    + Flex +

    +

    + Этот пакет содержит утилиту для генерации программ, + распознающих шаблоны в тексте. Это версия GNU программы lex + (лексический анализатор). Пакет необходим для сборки некоторых + пакетов LFS. +

    +
  • +
  • +

    + Gawk +

    +

    + Этот пакет содержит программы для работы с текстовыми файлами. + Это GNU версия awk (Aho-Weinberg-Kernighan). Он используется во + многих сценариях сборки пакетов. +

    +
  • +
  • +

    + GCC +

    +

    + Это коллекция компиляторов Gnu. Он содержит компиляторы C и + C++, а также несколько других компиляторов, поддержка которых + не предусмотрена в LFS. +

    +
  • +
  • +

    + GDBM +

    +

    + Этот пакет содержит библиотеку GNU Database Manager. Он + используется пакетом Man-DB +

    +
  • +
  • +

    + Gettext +

    +

    + Этот пакет содержит утилиты и библиотеки для + интернационализации и локализации многочисленных пакетов. +

    +
  • +
  • +

    + Glibc +

    +

    + Этот пакет содержит основную библиотеку C. Программы Linux не + будут работать без неё. +

    +
  • +
  • +

    + GMP +

    +

    + Этот пакет содержит математические библиотеки, предоставляющие + полезные функции для вычислений с плавающей точкой. Требуется + для сборки GCC. +

    +
  • +
  • +

    + Gperf +

    +

    + Этот пакет содержит программу, которая генерирует идеальную + хеш-функцию из набора ключей. Необходим для пакета Udev . +

    +
  • +
  • +

    + Grep +

    +

    + Этот пакет содержит программы для поиска по файлам. Пакет + используется в скриптах сборки большинства пакетов. +

    +
  • +
  • +

    + Groff +

    +

    + Этот пакет содержит программы для обработки и форматирования + текста. Одной из важнейших функций этих программ является + форматирование man страниц. +

    +
  • +
  • +

    + GRUB +

    +

    + Это загрузчик операционной системы (GRand Unified Bootloader). + Самый гибкий из нескольких доступных загрузчиков. +

    +
  • +
  • +

    + Gzip +

    +

    + Этот пакет содержит программы для сжатия и распаковки файлов. + Он необходим для распаковки множества пакетов в LFS. +

    +
  • +
  • +

    + Iana-etc +

    +

    + Этот пакет предоставляет данные для сетевых служб и протоколов. + Он необходим для обеспечения правильных сетевых возможностей. +

    +
  • +
  • +

    + Inetutils +

    +

    + Этот пакет содержит программы для базового сетевого + администрирования. +

    +
  • +
  • +

    + Intltool +

    +

    + Этот пакет содержит инструменты для извлечения переводимых + строк из исходных файлов. +

    +
  • +
  • +

    + IProute2 +

    +

    + Этот пакет содержит программы для базовой и расширенной работы + в сетях IPv4 и IPv6. Он был выбран среди других + распространенных пакетов сетевых инструментов (net-tools) из-за + его поддержки IPv6. +

    +
  • +
  • +

    + Kbd +

    +

    + Этот пакет содержит таблицы раскладок, утилиты управления + клавиатурой для неамериканских клавиатур, кроме этого, с ним + поставляется большой набор консольных шрифтов. +

    +
  • +
  • +

    + Kmod +

    +

    + Этот пакет содержит программы, необходимые для + администрирования модулей ядра Linux. +

    +
  • +
  • +

    + Less +

    +

    + Этот пакет содержит очень хороший просмотрщик текстовых файлов, + который позволяет использовать прокрутку верх/вниз при + просмотре. Многие пакеты используют его для постраничного + вывода. +

    +
  • +
  • +

    + Libcap +

    +

    + Этот пакет реализует интерфейсы пользовательского пространства + для возможностей POSIX 1003.1e, доступных в ядре Linux. +

    +
  • +
  • +

    + Libelf +

    +

    + Проект elfutils предоставляет библиотеки и инструменты для + файлов ELF и данных DWARF. Большинство утилит в этом пакете + доступны в других пакетах, но эта библиотека необходима для + сборки ядра Linux с использованием стандартной (и наиболее + эффективной) конфигурации. +

    +
  • +
  • +

    + Libffi +

    +

    + Этот пакет реализует переносимый программный интерфейс высокого + уровня для различных соглашений о вызовах. Некоторые программы + могут не знать во время компиляции, какие аргументы должны быть + переданы в функцию. Например, интерпретатору во время + выполнения может быть сообщено о количестве и типах аргументов, + используемых для вызова данной функции. Libffi можно + использовать как мост от интерпретатора к скомпилированному + коду. +

    +
  • +
  • +

    + Libpipeline +

    +

    + Пакет Libpipeline содержит библиотеку для гибкого и удобного + управления конвейерами подпроцессов. Она необходима для Man-DB. +

    +
  • +
  • +

    + Libtool +

    +

    + Этот пакет содержит сценарий поддержки универсальной библиотеки + GNU. Он объединяет сложность использования общих библиотек в + согласованный переносимый интерфейс. Библиотека необходима + наборам тестов в других пакетах LFS. +

    +
  • +
  • +

    + Libxcrypt +

    +

    + Этот пакет предоставляет библиотеку libcrypt, необходимую различным пакетам (в + частности, Shadow) для хеширования паролей. Он заменяет + устаревшую реализацию libcrypt + в Glibc. +

    +
  • +
  • +

    + Linux Kernel +

    +

    + Этот пакет является ядром операционной системой. +

    +
  • +
  • +

    + M4 +

    +

    + Этот пакет содержит текстовый макропроцессор, полезный в + качестве инструмента сборки для других программ. +

    +
  • +
  • +

    + Make +

    +

    + Этот пакет содержит программу для управления сборкой пакетов. + При сборке она необходима почти для каждого пакета в LFS. +

    +
  • +
  • +

    + Man-DB +

    +

    + Этот пакет содержит программы для поиска и просмотра справочных + страниц. Он был выбран вместо пакета man из-за превосходных возможностей + интернационализации. Содержит man. +

    +
  • +
  • +

    + Man-pages +

    +

    + Этот пакет представляет собой содержимое основных справочных + страниц Linux. +

    +
  • +
  • +

    + Meson +

    +

    + Этот пакет предоставляет программный инструмент для + автоматизации создания программного обеспечения. Основная цель + Meson — свести к минимуму количество времени, которое + разработчики программного обеспечения должны тратить на + настройку своей системы сборки. Требуется для сборки Systemd, а + также многих пакетов BLFS. +

    +
  • +
  • +

    + MPC +

    +

    + Этот пакет содержит функции для арифметики комплексных чисел. + Необходим GCC. +

    +
  • +
  • +

    + MPFR +

    +

    + Этот пакет содержит функции для арифметики с произвольной + точностью. Необходим GCC. +

    +
  • +
  • +

    + Ninja +

    +

    + Этот пакет предоставляет небольшую систему сборки, + ориентированную на скорость. Он предназначен для того, чтобы + его входные файлы генерировались системой сборки более высокого + уровня, и для максимально быстрого запуска сборок. Необходим + для Meson. +

    +
  • +
  • +

    + Ncurses +

    +

    + Этот пакет содержит библиотеки для независимой от терминала + обработки символьных экранов. Он часто используется для + управления курсором в меню. Необходим ряду пакетов в LFS. +

    +
  • +
  • +

    + Openssl +

    +

    + Этот пакет содержит инструменты управления и библиотеки, + относящиеся к криптографии. Они предоставляют криптографические + функций другим пакетам, включая ядро Linux. +

    +
  • +
  • +

    + Patch +

    +

    + Этот пакет содержит программу для изменения или создания файлов + путем применения файла patch, обычно создаваемого + программой diff. Он необходим + процедуре сборки для некоторых пакетов LFS. +

    +
  • +
  • +

    + Perl +

    +

    + Этот пакет является интерпретатором языка PERL. Он необходим + для установки и тестирования некоторых пакетов LFS. +

    +
  • +
  • +

    + Pkgconf +

    +

    + Этот пакет содержит программу, которая помогает настраивать + флаги компилятора и компоновщика для библиотек разработки. + Программа может быть использована в качестве замены + pkg-config, + который необходим системе сборки многих пакетов. Он + поддерживается более активно и развивается немного быстрее, чем + оригинальный пакет Pkg-config. +

    +
  • +
  • +

    + Procps-NG +

    +

    + Этот пакет содержит программы для мониторинга процессов. Набор + полезен для системного администрирования, а также используются + загрузочными сценариями LFS. +

    +
  • +
  • +

    + Psmisc +

    +

    + Этот пакет содержит программы для отображения информации о + запущенных процессах. Этот набор программ полезен для + системного администрирования. +

    +
  • +
  • +

    + Python 3 +

    +

    + Этот пакет предоставляет интерпретируемый язык + программирования, философия которого делает упор на + удобочитаемость кода. +

    +
  • +
  • +

    + Readline +

    +

    + Этот пакет представляет собой набор библиотек, предлагающих + возможности редактирования командной строки и средства для + работы с историей команд. Используется командным + интерпретатором Bash. +

    +
  • +
  • +

    + Sed +

    +

    + Этот пакет позволяет редактировать текст, не открывая его в + текстовом редакторе. Он необходим сценариям настройки многих + пакетов LFS. +

    +
  • +
  • +

    + Shadow +

    +

    + Этот пакет содержит программы для безопасной обработки паролей. +

    +
  • +
  • +

    + Sysklogd +

    +

    + Этот пакет содержит программы для регистрации системных + сообщений, которые генерируются ядром или процессами демона при + возникновении необычных событий. +

    +
  • +
  • +

    + Sysvinit +

    +

    + Этот пакет содержит систему инициализации init, родительской элемент всех остальных + процессов в работающей системе Linux. +

    +
  • +
  • +

    + Udev +

    +

    + Этот пакет представляет собой диспетчер устройств. Он + контролирует разрешения, имена и символические ссылки устройств + в каталоге /dev, когда устройства добавляются или удаляются из + системы. +

    +
  • +
  • +

    + Tar +

    +

    + Этот пакет предоставляет возможность архивирования и извлечения + практически всех пакетов, используемых в LFS. +

    +
  • +
  • +

    + Tcl +

    +

    + Этот пакет содержит командный язык инструментов, используется + во многих наборах тестов. +

    +
  • +
  • +

    + Texinfo +

    +

    + Этот пакет предоставляет программы для чтения, записи и + преобразования информационных страниц. Используется в + процедурах установки многих пакетов LFS. +

    +
  • +
  • +

    + Util-linux +

    +

    + Этот пакет содержит различные служебные программы. Среди них + утилиты для работы с файловыми системами, консолями, разделами + и сообщениями. +

    +
  • +
  • +

    + Vim +

    +

    + Этот пакет содержит редактор. Его выбрали из-за совместимости с + классическим редактором vi и огромного количества возможностей. + Редактор является очень личным выбором для каждого + пользователя. По желанию можно заменить любым другим + редактором. +

    +
  • +
  • +

    + Wheel +

    +

    + Этот пакет содержит модуль Python, который представляет собой + эталонную реализацию механизма упаковки Python. +

    +
  • +
  • +

    + XML::Parser +

    +

    + Этот пакет представляет собой модуль Perl, который + взаимодействует с Expat. +

    +
  • +
  • +

    + XZ Utils +

    +

    + Этот пакет содержит программы для сжатия и распаковки файлов. + Он обеспечивает высокое сжатие и используется для распаковки + пакетов в формате XZ или LZMA. +

    +
  • +
  • +

    + Zlib +

    +

    + Этот пакет содержит процедуры сжатия и распаковки, используемые + некоторыми программами. +

    +
  • +
  • +

    + Zstd +

    +

    + Этот пакет содержит процедуры сжатия и распаковки, используемые + некоторыми программами. Он обеспечивает высокие коэффициенты + сжатия и очень широкий диапазон компромиссов между сжатием и + скоростью. +

    +
  • +
+
+
+ + + diff --git a/lfs-12.1-sysv/prologue/preface.html b/lfs-12.1-sysv/prologue/preface.html new file mode 100644 index 0000000..dfc81bd --- /dev/null +++ b/lfs-12.1-sysv/prologue/preface.html @@ -0,0 +1,93 @@ + + + + + + Предисловие + + + + + + + + +

+ Предисловие +

+
+ +
+ + + diff --git a/lfs-12.1-sysv/prologue/prerequisites.html b/lfs-12.1-sysv/prologue/prerequisites.html new file mode 100644 index 0000000..bfd8c2a --- /dev/null +++ b/lfs-12.1-sysv/prologue/prerequisites.html @@ -0,0 +1,131 @@ + + + + + + Предпосылки + + + + + + + + +

+ iv. Предпосылки +

+
+

+ Создание системы LFS — непростая задача. Это требует определенного + уровня знаний системного администрирования Unix для решения проблем и + правильного выполнения перечисленных команд. В частности, как + абсолютный минимум, Вы должны уметь пользоваться командной оболочкой + для копирования или перемещения файлов и каталогов, просмотра + содержимого каталогов и файлов и изменения текущего каталога. Также + ожидается, что у вас есть достаточные знания об использовании и + установке программного обеспечения в Linux. +

+

+ Поскольку книга LFS предполагает наличие хотя бы этого базового уровня навыков, + различные форумы поддержки LFS вряд ли смогут предоставить вам + большую помощь в этих вопросах. Вы обнаружите, что ваши вопросы, + касающиеся таких базовых знаний, скорее всего, останутся без ответа + (или вас просто направят к списку основных материалов для + предварительного ознакомления). +

+

+ Перед созданием системы LFS мы настоятельно рекомендуем прочитать + следующие статьи: +

+
+
    +
  • +

    + HOWTO по сборке программного обеспечения https://tldp.org/HOWTO/Software-Building-HOWTO.html +

    +

    + Это исчерпывающее руководство по сборке и установке + «универсальных» программ Unix под Linux. + Несмотря на то что руководство написано достаточно давно, оно + по-прежнему дает хороший обзор основных методов, применяемых + для сборки и установки программного обеспечения. +

    +
  • +
  • +

    + Руководство для начинающих по установке из исходников + https://moi.vonos.net/linux/beginners-installing-from-source/ +

    +

    + В этом руководстве содержится хороший обзор основных навыков и + методов, необходимых для сборки программ из исходного кода +

    +
  • +
+
+
+ + + diff --git a/lfs-12.1-sysv/prologue/standards.html b/lfs-12.1-sysv/prologue/standards.html new file mode 100644 index 0000000..417c24a --- /dev/null +++ b/lfs-12.1-sysv/prologue/standards.html @@ -0,0 +1,377 @@ + + + + + + LFS и стандарты + + + + + + + + +

+ v. LFS и стандарты +

+
+

+ Структура LFS максимально соответствует стандартам Linux. Первичными + стандартами являются: +

+
+
    +
  • +

    + POSIX.1-2008. +

    +
  • +
  • +

    + Filesystem + Hierarchy Standard (FHS) Version 3.0 +

    +
  • +
  • +

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

    +

    + LSB имеет четыре отдельных стандарта: Core, Desktop, Runtime + Languages и Imaging. Некоторые части спецификаций Core и + Desktop зависят от архитектуры. Есть также две области не + являющиеся обязательными: Gtk3 и Graphics. LFS старается + соответствовать стандартам LSB, для архитектур IA32 (32-bit + x86) или AMD64 (x86_64), рассмотренных в предыдущем разделе. +

    +
    + [Примечание] +

    + Примечание +

    +

    + Многие не согласны с требованиями LSB. Основные цели + стандартов - быть уверенным в том, что проприетарное ПО будет + правильно установлено и сможет корректно работать на + совместимой системе. Поскольку в LFS установка программ идёт + из исходных кодов, у пользователя имеется полный контроль над + тем, какие пакеты ему необходимы, вы можете не устанавливать + некоторые пакеты, определяемые в LSB. +

    +
    +
  • +
+
+

+ Создать законченную систему, которая пройдет сертификационные тесты + LSB «с нуля», + возможно, но этого нельзя сделать без установки множества + дополнительных пакетов, которые выходят за рамки этой книги. Однако, + инструкции по их установке можно найти в книге BLFS. +

+
+

+ Пакеты LFS, которые необходимы для удовлетворения требований LSB +

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

+ 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: +

+
+

+ Нет +

+
+

+ LSB Runtime + Languages: +

+
+

+ Perl, Python +

+
+

+ LSB + Imaging: +

+
+

+ Нет +

+
+

+ LSB Gtk3 и + LSB Graphics (Необязательные): +

+
+

+ Нет +

+
+
+
+

+ Пакеты, поставляемые BLFS, необходимые для удовлетворения + требований LSB +

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

+ LSB + Core: +

+
+

+ At, Batch (часть At), Cpio, Ed, Fcrontab, LSB-Tools, NSPR, + NSS, PAM, Pax, Sendmail (или Postfix, или 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: +

+
+

+ Libxml2, Libxslt +

+
+

+ LSB + Imaging: +

+
+

+ CUPS, Cups-filters, Ghostscript, SANE +

+
+

+ LSB Gtk3 и + LSB Graphics (Необязательные): +

+
+

+ GTK3+ +

+
+
+
+

+ Пакеты, не поставляемые LFS или BLFS, необходимые для + удовлетворения требований LSB +

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

+ LSB + Core: +

+
+

+ Нет +

+
+

+ LSB + Desktop: +

+
+

+ Qt4 (но предоставляется Qt5) +

+
+

+ LSB Runtime + Languages: +

+
+

+ Нет +

+
+

+ LSB + Imaging: +

+
+

+ Нет +

+
+

+ LSB Gtk3 и + LSB Graphics (Необязательные): +

+
+

+ Нет +

+
+
+
+ + + diff --git a/lfs-12.1-sysv/prologue/typography.html b/lfs-12.1-sysv/prologue/typography.html new file mode 100644 index 0000000..6521f62 --- /dev/null +++ b/lfs-12.1-sysv/prologue/typography.html @@ -0,0 +1,197 @@ + + + + + + Оформление + + + + + + + + +

+ vii. Оформление +

+
+

+ Чтобы облегчить понимание, в этой книге используются условные + обозначения. Этот раздел содержит примеры оформления, используемые в + Linux From Scratch. +

+
./configure --prefix=/usr
+

+ Такое оформление предназначено для ввода именно так, как показано, + если иное не сказано в тексте рядом. Это оформление также + используется в разделах пояснений, чтобы указать, на какую команду + ссылается. +

+

+ В некоторых случаях логическая строка расширяется до двух или более + физических строк с обратной косой чертой в конце строки. +

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

+ Обратите внимание, что за обратной косой чертой должен следовать + перевод строки. Другие символы, такие как пробелы или символы + табуляции, приведут к неправильным результатам. +

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

+ Такое оформление (текст фиксированной ширины) показывает вывод на + экран, как правило, в результате выполнения команд. Этот формат также + используется для отображения имен файлов, таких как /etc/ld.so.conf. +

+
+ [Примечание] +

+ Примечание +

+

+ Пожалуйста, настройте свой браузер для отображения текста + фиксированной ширины с хорошим моноширинным шрифтом, с помощью + которого вы сможете четко различать символы Il1 или O0. +

+
+

+ Акцент +

+

+ Эта форма текста используется в книге для нескольких целей. Его + основная цель — подчеркнуть важные моменты. +

+

+ https://mirror.linuxfromscratch.ru/ +

+

+ Этот формат используется для гиперссылок как на сайт сообщества LFS, + так и на внешние ресурсы. Может включать справочную информацию, места + загрузки и веб-сайты. +

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

+ Этот формат используется при создании файлов конфигурации. Первая + команда указывает системе создать файл $LFS/etc/group из всего, что введено далее, пока не + встретится последовательность End Of File (EOF). Поэтому весь этот + раздел обычно печатается как есть. +

+

+ <ЗАМЕНЯЕМЫЙ ТЕКСТ> +

+

+ Этот формат используется для текста, который не должен быть напечатан + так, как отображается, или для операций копирования и вставки. +

+

+ [НЕОБЯЗАТЕЛЬНЫЙ ТЕКСТ] +

+

+ Этот формат используется для текста, который является необязательным. +

+

+ passwd(5) +

+

+ Этот формат используется для ссылки на определенную страницу + руководства (man). Число в скобках указывает на конкретный раздел + внутри руководств. Например, у passwd есть две справочные + страницы. В соответствии с инструкциями по установке LFS эти две + справочные страницы будут расположены в /usr/share/man/man1/passwd.1 и /usr/share/man/man5/passwd.5. Когда в книге + используется passwd(5), имеется в + виду конкретно /usr/share/man/man5/passwd.5. man passwd напечатает первую + найденную справочную страницу, совпадающую с «passwd» - это будет + /usr/share/man/man1/passwd.1. В этом + примере вам нужно будет запустить man 5 + passwd, чтобы прочитать указанную страницу. Обратите + внимание, что большинство справочных страниц не имеют повторяющихся + страниц в разных разделах. Поэтому обычно достаточно man <имя + программы>. В книге LFS ссылки на + справочные страницы также являются гиперссылками, поэтому нажатие на + такую ссылку откроет справочную страницу, в формате HTML, со + страниц + руководства Arch Linux. +

+
+ + + diff --git a/lfs-12.1-sysv/scripts/apds01.html b/lfs-12.1-sysv/scripts/apds01.html new file mode 100644 index 0000000..92aab74 --- /dev/null +++ b/lfs-12.1-sysv/scripts/apds01.html @@ -0,0 +1,313 @@ + + + + + + D.1. /etc/rc.d/init.d/rc + + + + + + + + +

+ D.1. /etc/rc.d/init.d/rc +

+
+

+ Скрипт rc это первый скрипт, + вызываемый системой инициализации init и инициирующий процесс загрузки. +

+
#!/bin/bash
+########################################################################
+# Begin rc
+#
+# Description : Main Run Level Control Script
+#
+# Authors     : Gerard Beekmans  - gerard@linuxfromscratch.org
+#             : DJ Lucas - dj@linuxfromscratch.org
+# Updates     : Bruce Dubbs - bdubbs@linuxfromscratch.org
+#             : Pierre Labastie - pierre@linuxfromscratch.org
+#
+# Version     : LFS 7.0
+#
+# Notes       : Updates March 24th, 2022: new semantics of S/K files
+#               - Instead of testing that S scripts were K scripts in the
+#                 previous runlevel, test that they were not S scripts
+#               - Instead of testing that K scripts were S scripts in the
+#                 previous runlevel, test that they were not K scripts
+#               - S scripts in runlevel 0 or 6 are now run with
+#                "script start" (was "script stop" previously).
+########################################################################
+
+. /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@lists.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 /run/interactive ] && source /run/interactive
+
+# Stop all services marked as K, except if marked as K in the previous
+# runlevel: it is the responsibility of the script to not try to kill
+# a non running service
+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]}
+      [ -e /etc/rc.d/rc${previous}.d/K[0-9][0-9]$suffix ] && continue
+
+      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 services marked as S in this runlevel, except if marked as
+# S in the previous runlevel
+# it is the responsibility of the script to not try to start an already running
+# service
+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]}
+      [ -e /etc/rc.d/rc${previous}.d/S[0-9][0-9]$suffix ] && continue
+   fi
+
+   check_script_status
+   if [ "${SCRIPT_STAT}" == "1" ]; then
+      SCRIPT_STAT="0"
+      continue
+   fi
+
+   run ${i} start
+
+   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\"" > /run/interactive
+else
+    rm -f /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
+
+
+ + + diff --git a/lfs-12.1-sysv/scripts/apds02.html b/lfs-12.1-sysv/scripts/apds02.html new file mode 100644 index 0000000..86207d0 --- /dev/null +++ b/lfs-12.1-sysv/scripts/apds02.html @@ -0,0 +1,892 @@ + + + + + + D.2. /lib/lsb/init-functions + + + + + + + + +

+ D.2. + /lib/lsb/init-functions +

+
+
#!/bin/sh
+########################################################################
+#
+# Begin /lib/lsb/init-funtions
+#
+# Description : Run Level Control Functions
+#
+# Authors     : Gerard Beekmans - gerard@linuxfromscratch.org
+#             : DJ Lucas - dj@linuxfromscratch.org
+# Update      : Bruce Dubbs - bdubbs@linuxfromscratch.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) responsibility
+        # 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) responsibility
+    # 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.
+
+            progname=${program##*/}
+
+            if [[ -e "/run/${progname}.pid" ]]; then
+                pidfile="/run/${progname}.pid"
+                rm -f "${pidfile}"
+            fi
+
+            # 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 "/run/${progname}.pid" ]; then
+                rm -f "/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 "/run/${progname}.pid" ]; then
+            pidfile="/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 "/run/${base}.pid" ]; then
+         /bin/echo -e "${WARNING}${1} is not running but" \
+            "/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 failure 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} ]                                            #
+#                                                                              #
+# 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 of -{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
+
+
+ + + diff --git a/lfs-12.1-sysv/scripts/apds03.html b/lfs-12.1-sysv/scripts/apds03.html new file mode 100644 index 0000000..48dbdb5 --- /dev/null +++ b/lfs-12.1-sysv/scripts/apds03.html @@ -0,0 +1,186 @@ + + + + + + D.3. /etc/rc.d/init.d/mountvirtfs + + + + + + + + +

+ D.3. + /etc/rc.d/init.d/mountvirtfs +

+
+
#!/bin/sh
+########################################################################
+# Begin mountvirtfs
+#
+# Description : Ensure proc, sysfs, run, and dev are mounted
+#
+# Authors     : Gerard Beekmans - gerard@linuxfromscratch.org
+#               DJ Lucas - dj@linuxfromscratch.org
+# Update      : Bruce Dubbs - bdubbs@linuxfromscratch.org
+#               Xi Ruoyao - xry111@xry111.site
+#
+# Version     : LFS 12.0
+#
+########################################################################
+
+### BEGIN INIT INFO
+# Provides:            mountvirtfs
+# Required-Start:      $first
+# Should-Start:
+# Required-Stop:
+# Should-Stop:
+# Default-Start:       S
+# Default-Stop:
+# Short-Description:   Mounts various special fs needed at start
+# Description:         Mounts /sys and /proc virtual (kernel) filesystems.
+#                      Mounts /run (tmpfs) and /dev (devtmpfs).
+#                      This is done only if they are not already mounted.
+#                      with the kernel config proposed in the book, dev
+#                      should be automatically mounted by the kernel.
+# 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 
+      chmod 1777 /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
+
+      mkdir -p /dev/shm
+      log_info_msg2 " ${INFO}/dev/shm"
+      mount -o nosuid,nodev /dev/shm || failed=1
+
+      mkdir -p /sys/fs/cgroup
+      log_info_msg2 " ${INFO}/sys/fs/cgroup"
+      mount -o nosuid,noexec,nodev /sys/fs/cgroup || failed=1
+
+      (exit ${failed})
+      evaluate_retval
+      if [ "${failed}" = 1 ]; then
+         exit 1
+      fi
+
+      log_info_msg "Create symlinks in /dev targeting /proc: ${INFO}/dev/stdin"
+      ln -sf /proc/self/fd/0 /dev/stdin  || failed=1
+
+      log_info_msg2 " ${INFO}/dev/stdout"
+      ln -sf /proc/self/fd/1 /dev/stdout || failed=1
+
+      log_info_msg2 " ${INFO}/dev/stderr"
+      ln -sf /proc/self/fd/2 /dev/stderr || failed=1
+
+      log_info_msg2 " ${INFO}/dev/fd"
+      ln -sf /proc/self/fd   /dev/fd     || failed=1
+
+      if [ -e /proc/kcore ]; then
+         log_info_msg2 " ${INFO}/dev/core"
+         ln -sf /proc/kcore  /dev/core   || failed=1
+      fi
+
+      (exit ${failed})
+      evaluate_retval
+      exit $failed
+      ;;
+
+   *)
+      echo "Usage: ${0} {start}"
+      exit 1
+      ;;
+esac
+
+# End mountvirtfs
+
+
+ + + diff --git a/lfs-12.1-sysv/scripts/apds04.html b/lfs-12.1-sysv/scripts/apds04.html new file mode 100644 index 0000000..75fc3f8 --- /dev/null +++ b/lfs-12.1-sysv/scripts/apds04.html @@ -0,0 +1,163 @@ + + + + + + D.4. /etc/rc.d/init.d/modules + + + + + + + + +

+ D.4. /etc/rc.d/init.d/modules +

+
+
#!/bin/sh
+########################################################################
+# Begin modules
+#
+# Description : Module auto-loading script
+#
+# Authors     : Zack Winkles
+#               DJ Lucas - dj@linuxfromscratch.org
+# Update      : Bruce Dubbs - bdubbs@linuxfromscratch.org
+#
+# Version     : LFS 7.0
+#
+########################################################################
+
+### BEGIN INIT INFO
+# Provides:            modules
+# Required-Start:      mountvirtfs
+# 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
+      grep -E -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
+
+
+ + + diff --git a/lfs-12.1-sysv/scripts/apds05.html b/lfs-12.1-sysv/scripts/apds05.html new file mode 100644 index 0000000..9677241 --- /dev/null +++ b/lfs-12.1-sysv/scripts/apds05.html @@ -0,0 +1,158 @@ + + + + + + D.5. /etc/rc.d/init.d/udev + + + + + + + + +

+ 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@linuxfromscratch.org
+# Update      : Bruce Dubbs - bdubbs@linuxfromscratch.org
+#               Xi Ruoyao - xry111@xry111.site
+#
+# Version     : LFS 12.0
+#
+########################################################################
+
+### BEGIN INIT INFO
+# Provides:            udev $time
+# Required-Start:      localnet
+# 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 start
+      fi
+
+      # Start the udev daemon to continually watch for, and act on,
+      # uevents
+      SYSTEMD_LOG_TARGET=kmsg /sbin/udevd --daemon
+
+      # Now traverse /sys in order to "coldplug" devices that have
+      # already been discovered
+      /bin/udevadm trigger --action=add    --type=subsystems
+      /bin/udevadm trigger --action=add    --type=devices
+      /bin/udevadm trigger --action=change --type=devices
+
+      # Now wait for udevd to process the uevents we triggered
+      if ! is_true "$OMIT_UDEV_SETTLE"; then
+         /bin/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
+
+
+ + + diff --git a/lfs-12.1-sysv/scripts/apds06.html b/lfs-12.1-sysv/scripts/apds06.html new file mode 100644 index 0000000..54dd869 --- /dev/null +++ b/lfs-12.1-sysv/scripts/apds06.html @@ -0,0 +1,144 @@ + + + + + + D.6. /etc/rc.d/init.d/swap + + + + + + + + +

+ D.6. /etc/rc.d/init.d/swap +

+
+
#!/bin/sh
+########################################################################
+# Begin swap
+#
+# Description : Swap Control Script
+#
+# Authors     : Gerard Beekmans - gerard@linuxfromscratch.org
+#               DJ Lucas - dj@linuxfromscratch.org
+# Update      : Bruce Dubbs - bdubbs@linuxfromscratch.org
+#
+# Version     : LFS 7.0
+#
+########################################################################
+
+### BEGIN INIT INFO
+# Provides:            swap
+# Required-Start:      udev
+# Should-Start:        modules
+# Required-Stop:       localnet
+# Should-Stop:         $local_fs
+# Default-Start:       S
+# Default-Stop:        0 6
+# Short-Description:   Activates and deactivates swap partitions.
+# Description:         Activates and deactivates 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
+
+
+ + + diff --git a/lfs-12.1-sysv/scripts/apds07.html b/lfs-12.1-sysv/scripts/apds07.html new file mode 100644 index 0000000..510512d --- /dev/null +++ b/lfs-12.1-sysv/scripts/apds07.html @@ -0,0 +1,144 @@ + + + + + + D.7. /etc/rc.d/init.d/setclock + + + + + + + + +

+ D.7. /etc/rc.d/init.d/setclock +

+
+
#!/bin/sh
+########################################################################
+# Begin setclock
+#
+# Description : Setting Linux Clock
+#
+# Authors     : Gerard Beekmans - gerard@linuxfromscratch.org
+#               DJ Lucas - dj@linuxfromscratch.org
+# Update      : Bruce Dubbs - bdubbs@linuxfromscratch.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
+### 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
+
+
+ + + diff --git a/lfs-12.1-sysv/scripts/apds08.html b/lfs-12.1-sysv/scripts/apds08.html new file mode 100644 index 0000000..7309ce0 --- /dev/null +++ b/lfs-12.1-sysv/scripts/apds08.html @@ -0,0 +1,230 @@ + + + + + + D.8. /etc/rc.d/init.d/checkfs + + + + + + + + +

+ D.8. /etc/rc.d/init.d/checkfs +

+
+
#!/bin/sh
+########################################################################
+# Begin checkfs
+#
+# Description : File System Check
+#
+# Authors     : Gerard Beekmans - gerard@linuxfromscratch.org
+#               A. Luebke - luebke@users.sourceforge.net
+#               DJ Lucas - dj@linuxfromscratch.org
+# Update      : Bruce Dubbs - bdubbs@linuxfromscratch.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
+# Should-Start:
+# Required-Stop:
+# Should-Stop:
+# Default-Start:       S
+# Default-Stop:
+# Short-Description:   Checks local filesystems before mounting.
+# Description:         Checks local filesystems 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 start
+      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 "
+         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 start
+      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
+
+
+ + + diff --git a/lfs-12.1-sysv/scripts/apds09.html b/lfs-12.1-sysv/scripts/apds09.html new file mode 100644 index 0000000..0fc86d7 --- /dev/null +++ b/lfs-12.1-sysv/scripts/apds09.html @@ -0,0 +1,164 @@ + + + + + + D.9. /etc/rc.d/init.d/mountfs + + + + + + + + +

+ D.9. /etc/rc.d/init.d/mountfs +

+
+
#!/bin/sh
+########################################################################
+# Begin mountfs
+#
+# Description : File System Mount Script
+#
+# Authors     : Gerard Beekmans - gerard@linuxfromscratch.org
+#               DJ Lucas - dj@linuxfromscratch.org
+# Update      : Bruce Dubbs - bdubbs@linuxfromscratch.org
+#
+# Version     : LFS 7.0
+#
+########################################################################
+
+### BEGIN INIT INFO
+# Provides:            $local_fs
+# Required-Start:      udev checkfs
+# Should-Start:        modules
+# Required-Stop:       localnet
+# 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..."
+      failed=0
+      mount --all --test-opts no_netdev >/dev/null || failed=1
+      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 devices 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
+      if [ -r /etc/mdadm.conf ]; then
+         log_info_msg "Mark arrays as clean..."
+         mdadm --wait-clean --scan
+         evaluate_retval
+      fi
+      ;;
+
+   *)
+      echo "Usage: ${0} {start|stop}"
+      exit 1
+      ;;
+esac
+
+# End mountfs
+
+
+ + + diff --git a/lfs-12.1-sysv/scripts/apds10.html b/lfs-12.1-sysv/scripts/apds10.html new file mode 100644 index 0000000..5cb58ee --- /dev/null +++ b/lfs-12.1-sysv/scripts/apds10.html @@ -0,0 +1,155 @@ + + + + + + D.10. /etc/rc.d/init.d/udev_retry + + + + + + + + +

+ 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@linuxfromscratch.org
+# Update      : Bruce Dubbs - bdubbs@linuxfromscratch.org
+#               Bryan Kadzban -
+#
+# Version     : LFS 7.0
+#
+########################################################################
+
+### BEGIN INIT INFO
+# Provides:            udev_retry
+# Required-Start:      udev
+# Should-Start:        $local_fs cleanfs
+# 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..."
+
+      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
+            /bin/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
+         /bin/udevadm settle
+      fi
+
+      evaluate_retval
+      ;;
+
+   *)
+      echo "Usage ${0} {start}"
+      exit 1
+      ;;
+esac
+
+exit 0
+
+# End udev_retry
+
+
+ + + diff --git a/lfs-12.1-sysv/scripts/apds11.html b/lfs-12.1-sysv/scripts/apds11.html new file mode 100644 index 0000000..dee7e30 --- /dev/null +++ b/lfs-12.1-sysv/scripts/apds11.html @@ -0,0 +1,203 @@ + + + + + + D.11. /etc/rc.d/init.d/cleanfs + + + + + + + + +

+ D.11. /etc/rc.d/init.d/cleanfs +

+
+
#!/bin/sh
+########################################################################
+# Begin cleanfs
+#
+# Description : Clean file system
+#
+# Authors     : Gerard Beekmans - gerard@linuxfromscratch.org
+#               DJ Lucas - dj@linuxfromscratch.org
+# Update      : Bruce Dubbs - bdubbs@linuxfromscratch.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 /run, /var/lock, and
+#                      optionally, /tmp.  cleanfs also creates /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
+
+      > /run/utmp
+
+      if grep -q '^utmp:' /etc/group ; then
+         chmod 664 /run/utmp
+         chgrp utmp /run/utmp
+      fi
+
+      (exit ${failed})
+      evaluate_retval
+
+      if grep -E -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
+
+
+ + + diff --git a/lfs-12.1-sysv/scripts/apds12.html b/lfs-12.1-sysv/scripts/apds12.html new file mode 100644 index 0000000..94dfed8 --- /dev/null +++ b/lfs-12.1-sysv/scripts/apds12.html @@ -0,0 +1,188 @@ + + + + + + D.12. /etc/rc.d/init.d/console + + + + + + + + +

+ D.12. /etc/rc.d/init.d/console +

+
+
#!/bin/sh
+########################################################################
+# Begin console
+#
+# Description : Sets keymap and screen font
+#
+# Authors     : Gerard Beekmans - gerard@linuxfromscratch.org
+#               Alexander E. Patrakov
+#               DJ Lucas - dj@linuxfromscratch.org
+# Update      : Bruce Dubbs - bdubbs@linuxfromscratch.org
+#
+# Version     : LFS 7.0
+#
+########################################################################
+
+### BEGIN INIT INFO
+# Provides:            console
+# Required-Start:      $local_fs
+# Should-Start:        udev_retry
+# 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
+
+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
+
+
+ + + diff --git a/lfs-12.1-sysv/scripts/apds13.html b/lfs-12.1-sysv/scripts/apds13.html new file mode 100644 index 0000000..447c2cc --- /dev/null +++ b/lfs-12.1-sysv/scripts/apds13.html @@ -0,0 +1,151 @@ + + + + + + D.13. /etc/rc.d/init.d/localnet + + + + + + + + +

+ D.13. /etc/rc.d/init.d/localnet +

+
+
#!/bin/sh
+########################################################################
+# Begin localnet
+#
+# Description : Loopback device
+#
+# Authors     : Gerard Beekmans  - gerard@linuxfromscratch.org
+#               DJ Lucas - dj@linuxfromscratch.org
+# Update      : Bruce Dubbs - bdubbs@linuxfromscratch.org
+#
+# Version     : LFS 7.0
+#
+########################################################################
+
+### BEGIN INIT INFO
+# Provides:            localnet
+# Required-Start:      mountvirtfs
+# Should-Start:        modules
+# 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
+
+
+ + + diff --git a/lfs-12.1-sysv/scripts/apds14.html b/lfs-12.1-sysv/scripts/apds14.html new file mode 100644 index 0000000..0dcac46 --- /dev/null +++ b/lfs-12.1-sysv/scripts/apds14.html @@ -0,0 +1,136 @@ + + + + + + D.14. /etc/rc.d/init.d/sysctl + + + + + + + + +

+ 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@linuxfromscratch.org)
+#               Matthew Burgress (matthew@linuxfromscratch.org)
+#               DJ Lucas - dj@linuxfromscratch.org
+# Update      : Bruce Dubbs - bdubbs@linuxfromscratch.org
+#
+# Version     : LFS 7.0
+#
+########################################################################
+
+### BEGIN INIT INFO
+# Provides:            sysctl
+# Required-Start:      mountvirtfs
+# Should-Start:        console
+# 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
+
+
+ + + diff --git a/lfs-12.1-sysv/scripts/apds15.html b/lfs-12.1-sysv/scripts/apds15.html new file mode 100644 index 0000000..ec7187b --- /dev/null +++ b/lfs-12.1-sysv/scripts/apds15.html @@ -0,0 +1,160 @@ + + + + + + D.15. /etc/rc.d/init.d/sysklogd + + + + + + + + +

+ D.15. /etc/rc.d/init.d/sysklogd +

+
+
#!/bin/sh
+########################################################################
+# Begin sysklogd
+#
+# Description : Sysklogd loader
+#
+# Authors     : Gerard Beekmans - gerard@linuxfromscratch.org
+#               DJ Lucas - dj@linuxfromscratch.org
+# Update      : Bruce Dubbs - bdubbs@linuxfromscratch.org
+#
+# Version     : LFS 7.0
+#
+########################################################################
+
+### BEGIN INIT INFO
+# Provides:            $syslog
+# Required-Start:      $first localnet
+# Should-Start:
+# Required-Stop:       $local_fs
+# Should-Stop:         sendsignals
+# Default-Start:       2 3 4 5
+# Default-Stop:        0 1 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
+
+. /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
+
+
+ + + diff --git a/lfs-12.1-sysv/scripts/apds16.html b/lfs-12.1-sysv/scripts/apds16.html new file mode 100644 index 0000000..af71ade --- /dev/null +++ b/lfs-12.1-sysv/scripts/apds16.html @@ -0,0 +1,171 @@ + + + + + + D.16. /etc/rc.d/init.d/network + + + + + + + + +

+ D.16. /etc/rc.d/init.d/network +

+
+
#!/bin/sh
+########################################################################
+# Begin network
+#
+# Description : Network Control Script
+#
+# Authors     : Gerard Beekmans - gerard@linuxfromscratch.org
+#               Nathan Coulson - nathan@linuxfromscratch.org
+#               Kevin P. Fleming - kpfleming@linuxfromscratch.org
+#               DJ Lucas - dj@linuxfromscratch.org
+# Update      : Bruce Dubbs - bdubbs@linuxfromscratch.org
+#
+# Version     : LFS 7.0
+#
+########################################################################
+
+### BEGIN INIT INFO
+# Provides:            $network
+# Required-Start:      $local_fs localnet swap
+# Should-Start:        $syslog firewalld iptables nftables
+# Required-Stop:       $local_fs localnet swap
+# Should-Stop:         $syslog firewalld iptables nftables
+# Default-Start:       2 3 4 5
+# Default-Stop:        0 1 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)
+      # if the default route exists, network is already configured
+      if ip route | grep -q "^default"; then return 0; fi
+      # 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
+
+         # See if interface exists
+         if [ ! -e /sys/class/net/$interface ]; then continue; fi
+
+         # Is interface UP?
+         ip link show $interface 2>/dev/null | grep -q "state UP"
+         if [ $? -ne 0 ];  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
+
+
+ + + diff --git a/lfs-12.1-sysv/scripts/apds17.html b/lfs-12.1-sysv/scripts/apds17.html new file mode 100644 index 0000000..df76262 --- /dev/null +++ b/lfs-12.1-sysv/scripts/apds17.html @@ -0,0 +1,151 @@ + + + + + + D.17. /etc/rc.d/init.d/sendsignals + + + + + + + + +

+ D.17. + /etc/rc.d/init.d/sendsignals +

+
+
#!/bin/sh
+########################################################################
+# Begin sendsignals
+#
+# Description : Sendsignals Script
+#
+# Authors     : Gerard Beekmans - gerard@linuxfromscratch.org
+#               DJ Lucas - dj@linuxfromscratch.org
+# Update      : Bruce Dubbs - bdubbs@linuxfromscratch.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)
+      omit=$(pidof mdmon)
+      [ -n "$omit" ] && omit="-o $omit"
+
+      log_info_msg "Sending all processes the TERM signal..."
+      killall5 -15 $omit
+      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 $omit
+      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
+
+
+ + + diff --git a/lfs-12.1-sysv/scripts/apds18.html b/lfs-12.1-sysv/scripts/apds18.html new file mode 100644 index 0000000..49d2f96 --- /dev/null +++ b/lfs-12.1-sysv/scripts/apds18.html @@ -0,0 +1,129 @@ + + + + + + D.18. /etc/rc.d/init.d/reboot + + + + + + + + +

+ D.18. + /etc/rc.d/init.d/reboot +

+
+
#!/bin/sh
+########################################################################
+# Begin reboot
+#
+# Description : Reboot Scripts
+#
+# Authors     : Gerard Beekmans - gerard@linuxfromscratch.org
+#               DJ Lucas - dj@linuxfromscratch.org
+# Updates     : Bruce Dubbs - bdubbs@linuxfromscratch.org
+#             : Pierre Labastie - pierre@linuxfromscratch.org
+#
+# Version     : LFS 7.0
+#
+# Notes       : Update March 24th, 2022: change "stop" to "start".
+#               Add the $last facility to Required-start
+#
+########################################################################
+
+### BEGIN INIT INFO
+# Provides:            reboot
+# Required-Start:      $last
+# 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
+   start)
+      log_info_msg "Restarting system..."
+      reboot -d -f -i
+      ;;
+
+   *)
+      echo "Usage: ${0} {start}"
+      exit 1
+      ;;
+
+esac
+
+# End reboot
+
+
+ + + diff --git a/lfs-12.1-sysv/scripts/apds19.html b/lfs-12.1-sysv/scripts/apds19.html new file mode 100644 index 0000000..c18f637 --- /dev/null +++ b/lfs-12.1-sysv/scripts/apds19.html @@ -0,0 +1,124 @@ + + + + + + D.19. /etc/rc.d/init.d/halt + + + + + + + + +

+ D.19. /etc/rc.d/init.d/halt +

+
+
#!/bin/sh
+########################################################################
+# Begin halt
+#
+# Description : Halt Script
+#
+# Authors     : Gerard Beekmans - gerard@linuxfromscratch.org
+#               DJ Lucas - dj@linuxfromscratch.org
+# Update      : Bruce Dubbs - bdubbs@linuxfromscratch.org
+#             : Pierre Labastie - pierre@linuxfromscratch.org
+#
+# Version     : LFS 7.0
+#
+# Notes       : Update March 24th, 2022: change "stop" to "start".
+#               Add the $last facility to Required-start
+#
+########################################################################
+
+### BEGIN INIT INFO
+# Provides:            halt
+# Required-Start:      $last
+# 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
+   start)
+      halt -d -f -i -p
+      ;;
+
+   *)
+      echo "Usage: {start}"
+      exit 1
+      ;;
+esac
+
+# End halt
+
+
+ + + diff --git a/lfs-12.1-sysv/scripts/apds20.html b/lfs-12.1-sysv/scripts/apds20.html new file mode 100644 index 0000000..ff92ee7 --- /dev/null +++ b/lfs-12.1-sysv/scripts/apds20.html @@ -0,0 +1,150 @@ + + + + + + D.20. /etc/rc.d/init.d/template + + + + + + + + +

+ 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..."
+    # if it is possible to use start_daemon
+      start_daemon fully_qualified_path
+    # if it is not possible to use start_daemon
+    # (command to start the daemon is not simple enough)
+      if ! pidofproc daemon_name_as_reported_by_ps >/dev/null; then
+         command_to_start_the_service
+      fi
+      evaluate_retval
+      ;;
+
+   stop)
+      log_info_msg "Stopping..."
+    # if it is possible to use killproc
+      killproc fully_qualified_path
+    # if it is not possible to use killproc
+    # (the daemon shouldn't be stopped by killing it)
+      if pidofproc daemon_name_as_reported_by_ps >/dev/null; then
+         command_to_stop_the_service
+      fi
+      evaluate_retval
+      ;;
+
+   restart)
+      ${0} stop
+      sleep 1
+      ${0} start
+      ;;
+
+   *)
+      echo "Usage: ${0} {start|stop|restart}"
+      exit 1
+      ;;
+esac
+
+exit 0
+
+# End scriptname
+
+
+ + + diff --git a/lfs-12.1-sysv/scripts/apds21.html b/lfs-12.1-sysv/scripts/apds21.html new file mode 100644 index 0000000..f9383f8 --- /dev/null +++ b/lfs-12.1-sysv/scripts/apds21.html @@ -0,0 +1,100 @@ + + + + + + D.21. /etc/sysconfig/modules + + + + + + + + +

+ 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
+
+
+ + + diff --git a/lfs-12.1-sysv/scripts/apds22.html b/lfs-12.1-sysv/scripts/apds22.html new file mode 100644 index 0000000..1a365a5 --- /dev/null +++ b/lfs-12.1-sysv/scripts/apds22.html @@ -0,0 +1,114 @@ + + + + + + D.22. /etc/sysconfig/createfiles + + + + + + + + +

+ 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 device
+#                       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
+
+
+ + + diff --git a/lfs-12.1-sysv/scripts/apds23.html b/lfs-12.1-sysv/scripts/apds23.html new file mode 100644 index 0000000..34b630e --- /dev/null +++ b/lfs-12.1-sysv/scripts/apds23.html @@ -0,0 +1,100 @@ + + + + + + D.23. /etc/sysconfig/udev-retry + + + + + + + + +

+ 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
+
+
+ + + diff --git a/lfs-12.1-sysv/scripts/apds24.html b/lfs-12.1-sysv/scripts/apds24.html new file mode 100644 index 0000000..5190249 --- /dev/null +++ b/lfs-12.1-sysv/scripts/apds24.html @@ -0,0 +1,229 @@ + + + + + + D.24. /sbin/ifup + + + + + + + + +

+ D.24. /sbin/ifup +

+
+
#!/bin/sh
+########################################################################
+# Begin /sbin/ifup
+#
+# Description : Interface Up
+#
+# Authors     : Nathan Coulson - nathan@linuxfromscratch.org
+#               Kevin P. Fleming - kpfleming@linuxfromscratch.org
+# Update      : Bruce Dubbs - bdubbs@linuxfromscratch.org
+#               DJ Lucas - dj@linuxfromscratch.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()
+{
+  log_info_msg "Bringing up the ${1} interface..."
+
+  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 "Interface ${IFACE} doesn't exist."
+     exit 1
+  fi
+
+  evaluate_retval
+}
+
+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
+
+if [ ! -r "${file}" ]; then
+   log_failure_msg "Unable to bring up ${1} interface! ${file} is missing or cannot be accessed."
+   exit 1
+fi
+
+.  $file
+
+if [ "$IFACE" = "" ]; then
+   log_failure_msg "Unable to bring up ${1} interface! ${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
+   exit 0
+fi
+
+# Bring up the interface
+if [ "$VIRTINT" != "yes" ]; then
+   up ${IFACE}
+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
+
+# Set link up virtual interfaces
+if [ "${VIRTINT}" == "yes" ]; then
+   up ${IFACE}
+fi
+
+# Bring up any additional interface components
+for I in $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_warning_msg "Gateway already setup; skipping."
+   else
+      log_info_msg "Adding default gateway ${GATEWAY} to the ${IFACE} interface..."
+      ip route add default via ${GATEWAY} dev ${IFACE}
+      evaluate_retval
+   fi
+fi
+
+# End /sbin/ifup
+
+
+ + + diff --git a/lfs-12.1-sysv/scripts/apds25.html b/lfs-12.1-sysv/scripts/apds25.html new file mode 100644 index 0000000..f70eb99 --- /dev/null +++ b/lfs-12.1-sysv/scripts/apds25.html @@ -0,0 +1,179 @@ + + + + + + D.25. /sbin/ifdown + + + + + + + + +

+ D.25. /sbin/ifdown +

+
+
#!/bin/bash
+########################################################################
+# Begin /sbin/ifdown
+#
+# Description : Interface Down
+#
+# Authors     : Nathan Coulson - nathan@linuxfromscratch.org
+#               Kevin P. Fleming - kpfleming@linuxfromscratch.org
+# Update      : Bruce Dubbs - bdubbs@linuxfromscratch.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
+
+
+ + + diff --git a/lfs-12.1-sysv/scripts/apds26.html b/lfs-12.1-sysv/scripts/apds26.html new file mode 100644 index 0000000..b9c3093 --- /dev/null +++ b/lfs-12.1-sysv/scripts/apds26.html @@ -0,0 +1,161 @@ + + + + + + D.26. /lib/services/ipv4-static + + + + + + + + +

+ D.26. + /lib/services/ipv4-static +

+
+
#!/bin/sh
+########################################################################
+# Begin /lib/services/ipv4-static
+#
+# Description : IPV4 Static Boot Script
+#
+# Authors     : Nathan Coulson - nathan@linuxfromscratch.org
+#               Kevin P. Fleming - kpfleming@linuxfromscratch.org
+# Update      : Bruce Dubbs - bdubbs@linuxfromscratch.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
+         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
+
+
+ + + diff --git a/lfs-12.1-sysv/scripts/apds27.html b/lfs-12.1-sysv/scripts/apds27.html new file mode 100644 index 0000000..b4ff88b --- /dev/null +++ b/lfs-12.1-sysv/scripts/apds27.html @@ -0,0 +1,180 @@ + + + + + + D.27. /lib/services/ipv4-static-route + + + + + + + + +

+ 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@linuxfromscratch.org
+# Update      : Bruce Dubbs - bdubbs@linuxfromscratch.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
+
+
+ + + diff --git a/lfs-12.1-sysv/scripts/apes01.html b/lfs-12.1-sysv/scripts/apes01.html new file mode 100644 index 0000000..a442e53 --- /dev/null +++ b/lfs-12.1-sysv/scripts/apes01.html @@ -0,0 +1,90 @@ + + + + + + E.1. 55-lfs.rules + + + + + + + + +

+ 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"
+
+
+
+ + + diff --git a/lfs-12.1-sysv/scripts/scripts.html b/lfs-12.1-sysv/scripts/scripts.html new file mode 100644 index 0000000..9292b5e --- /dev/null +++ b/lfs-12.1-sysv/scripts/scripts.html @@ -0,0 +1,91 @@ + + + + + + Приложение D. Скрипты загрузки и настройки системы-20230728 + + + + + + + + +

+ D. Скрипты загрузки и настройки + системы-20230728 +

+
+

+ Скрипты в приложении перечислены с указанием каталога, в котором они + обычно находятся. Порядок такой: /etc/rc.d/init.d, /etc/sysconfig, /etc/sysconfig/network-devices, и /etc/sysconfig/network-devices/services. В каждом + разделе файлы перечислены в том порядке, в котором они обычно + вызываются. +

+
+ + + diff --git a/lfs-12.1-sysv/scripts/udev-rules.html b/lfs-12.1-sysv/scripts/udev-rules.html new file mode 100644 index 0000000..3b8f65b --- /dev/null +++ b/lfs-12.1-sysv/scripts/udev-rules.html @@ -0,0 +1,85 @@ + + + + + + Приложение E. Правила настройки Udev + + + + + + + + +

+ E. Правила настройки Udev +

+
+

+ Правила в этом приложении перечислены для удобства. Установка обычно + выполняются с помощью инструкций приведенных в Раздел 8.75, «Udev из + Systemd-255». +

+
+ + + diff --git a/lfs-12.1-sysv/stylesheets/lfs-print.css b/lfs-12.1-sysv/stylesheets/lfs-print.css new file mode 100644 index 0000000..75f05d4 --- /dev/null +++ b/lfs-12.1-sysv/stylesheets/lfs-print.css @@ -0,0 +1,14 @@ +@import url(lfs.css); + +.navfooter, .headerlinks { + display: none; +} + +div.navheader { + position: absolute; +} + +div.navheader ul, +div.navheader ul{ + display: none; +} diff --git a/lfs-12.1-sysv/stylesheets/lfs.css b/lfs-12.1-sysv/stylesheets/lfs.css new file mode 100644 index 0000000..24bd150 --- /dev/null +++ b/lfs-12.1-sysv/stylesheets/lfs.css @@ -0,0 +1,663 @@ +/* Global settings */ +body { + font-family: verdana, tahoma, arial, sans-serif; + text-align: left; + background: #fff; + color: #222; + margin: 1em; + padding: 0; + font-size: 1em; + line-height: 1.2em; +} + + +/* Links */ +a:link { color: #22b; } +a.ulink:link { font-weight: bold; color: #55f; } +a:visited { color: #7e4988 ! important; } +a:hover, a:focus { color: #d30e08 ! important; } +a:active { color: #6b77b1 ! important;} + + +/* Book titlepage */ +.book .titlepage { + background: #f5f6f7; + margin: 0px auto; + padding: 0 1em; +} + +.book hr { + background: #dbddec; + height: .3em; + border: 0px; + margin: 0 -1em; + padding: 0; +} + +div.dedication { + padding-left: 1em; +} + +/* Section titles */ +h1.sect1, h1.preface, h1.part, h1.chapter, h1.appendix, .glossary h1, .index h1 + { + background: #f5f6f7; + border-bottom: .1em solid #dbddec; + margin-bottom:1em; + margin-top: 0; + padding: .4em; +} + +/* Scrolling parts + The header is taller for sect1 and chapter pages than on the + other pages. Since we want fixed boxes, their top has to be calculated + by trial and errors to fit below the static header box.*/ + +div.sect1, div.chapter, div.appendix, div.wrap { + top: 11.55em; +} +div.preface, div.part, .index div.index { + top: 10.15em; +} +div.sect1, div.appendix, div.preface, div.part, div.chapter, div.wrap, .index div.index { +/* padding-left: .3em;*/ + overflow:auto; + height: auto; + position: fixed; + left:1em; + right:1em; + bottom: 1em; + border-bottom: 1em solid #dbddec; +} + +div.important ul { + padding-left: 1.5em; + list-style-type: disc; +} + +div.important ul li p { + margin: 0px; + padding: 0px 0.6em; +} + +.package, .kernel, .installation, .commands, .testing, .configuration, .content { + padding: 0 .5em .2em 0; + margin: 0; +} + +.lfs .package { + background: #f5f6f7; + border-bottom: 0.2em solid #dbddec; + padding-top: .1em; +/* margin-top: 0;*/ +} +/* +.lfs .package p:first-child { + margin-top: 0; +}*/ + +.lfs .configuration { + background: #fefefe; + border-top: 0.2em solid #dbddec; +} + +.lfs .content { + background: #f5f6f7; + border-top: 0.2em solid #dbddec; + border-bottom: 0.2em solid #dbddec; + padding-bottom: .1em; + margin-bottom: .5em; +} + +/* Headers */ +h1, h2, h3, h4, h5, h6, b, .strong { + color: #000; + font-weight: bold; + line-height: 1em; +} + +h1 { + font-size: 173%; + text-align: center; +} + +.book h1 { + margin: 0; + padding: 0.4em; +} + +.wrap h1 { + background: #f5f6f7; + margin: 0; + padding: .4em; +} + +h1.title sup { + font-size: small; +} + +h2 { + font-size: 144%; +} + +.book h2.subtitle { + text-align: center; + background: #dbddec; + margin: 0; + padding: 0.2em; +} + +.appendix h2 { + font-size: 133%; + margin-top: .8em; + margin-bottom: 0.2em; +} + +h3 { + font-size: 120%; +} + +h4 { + font-size: 110%; +} + +.package h4, h5, h6 { + font-size: 100%; + font-style: italic; +} + + +/* Navigation */ +div.navheader, div.navfooter { + background: #ecedef; + margin: 0; + padding: 0.1em .5em; +} + +div.navheader { + border-bottom: .1em solid #dbddec; +} + +/* no need for a footer now that the header is always visible */ +div.navfooter { + display:none; +} + +/* Except for the first page (TOC), where the bottom is the only + place where navigation is displayed. */ + +div.book + div.navfooter { + display:block +} + +div.navheader h4 { + margin-top: .4em; + margin-bottom: 0; + text-align: center; +} + +div.navheader h3 { + margin-top: .2em; + margin-bottom: 0; + text-align: center; +} + +div.navheader ul, div.navfooter ul { + padding: .2em .5em .5em .5em; /*top right bottom left*/ + margin: .5em 0; + position: relative; + background: #dbddec; +} + +div.navheader ul li, div.navfooter ul li { + display: inline; + width: 40%; +} + +div.navheader ul li.prev, div.navfooter ul li.prev { + position: absolute; + display: block; + left: 0; + text-align: left; + padding: 0.2em 1em; + margin-left: .4em; +} + +div.navheader ul li.next, div.navfooter ul li.next { + position: absolute; + display: block; + text-align: right; + right: 0; + padding: 0.2em 1em; + margin-right: .4em; +} + +div.navheader ul li.prev p, div.navfooter ul li.prev p, +div.navheader ul li.next p, div.navfooter ul li.next p { + padding: 0; + margin: .1em 0; +} + +div.navheader ul li.home, div.navheader ul li.up, +div.navfooter ul li.home, div.navfooter ul li.up { + text-align: center; + padding: 0; + margin: 0 auto; + display: block; + color: #dbddec; +} + + +/* TOC */ +div.toc ul, div.index ul, div.navheader ul, div.navfooter ul { + list-style: none; +} + +div.toc { + padding-left: 1em; +} + +.book li.preface, .part li.appendix { + margin-left: 1em; +} + +.part li.preface { + margin-left: 0em; +} + +div.toc h3 { + margin: 1em 0 .3em 0; +} + +li.appendix h3, li.glossary h3, li.index h3 { + margin: .5em +} + +div.toc h4 { + margin: .6em 0 .2em 0; +} + +li.chapter h4 a { + display: block; + margin-bottom: .4em +} + +.dummy { + display: block; + font-weight: bold; + font-size: 110%; + margin: .6em 0 .2em 0; +} + +span.blue { + color: #2ac; +} + +/* Index */ +.item { + float: left; + margin-right: 1em +} + +.secitem { + font-weight: normal; + float: left; + margin-right: 1em +} + +.indexref { + display: block; +} + +.item + .indexref { + margin-left: 20em; +} + +.secitem + .indexref { + margin-left: 19em; +} + + +/* Admonitions */ +div.admon img { + padding: .3em; +} + +div.admon h3 { + display: inline; + margin-left: 2em; +} + +div.admon p { + margin-left: .5em; + padding-bottom: .4em; +} + +div.admon pre { + margin: 0.5em 3em; +} + +div.note, div.tip { + background-color: #fffff6; + border: 2px solid #dbddec; + width: 90%; + margin: .5em auto; +} + +div.important, div.warning, div.caution { + background-color: #fffff6; + border: medium solid #400; + width: 90%; + margin: .5em auto; + color: #600; +} + +div.important h3, div.warning h3, div.caution h3 { + color: #900; +} + +div.important em, div.warning em, div.caution em { + color: #000; + font-weight: bold; +} + + +/* table */ +.table p.title { + text-align: center; + margin-top: 0; + margin-bottom: .3em; +} + +.table table, .informaltable { + margin-left: auto; + margin-right: auto; +} + +.table table th, .table table td { + padding: 0.2em 2em 0.2em 2em; + text-align: left; +} + +.revhistory { + padding-left: 1em; +} + +.revhistory th { + line-height: 2em; + text-align: left; +} + +.revhistory td { + padding-right: 1em; +} + + +/* variablelist as table */ +.variablelist table { + width: auto; + margin: 0 1em 0 1em; +} + +.variablelist td { + vertical-align: top; +} + +.variablelist td span, td p { + margin: 0.25em; +} + + +/* variablelist as list */ +dl { + padding-left: 1em +} + +dt { + font-weight: bold; + margin-left: 1em; +} + +dd { + margin-bottom: .6em; + margin-left: 1em; +} + +dd p { + margin-top: 0; + margin-bottom: 0; + padding-top: 0; + padding-bottom: 0; +} + +div.materials dt { + display: list-item; +} + +div.materials dd { + margin-left: 0; + padding-left: 0; +} + + +/* segmentedlist */ +.appendix .segmentedlist { + padding-left: 1em; +} + +.package .seg { + margin-bottom: 1em; + margin-top: 0em; + clear: left; +} + +.content .seg { + margin-bottom: .4em; + margin-top: .4em; + clear: left; +} +/*default 14.5*/ +.segtitle { + float: left; + padding-left: 1em; + width: 21em; +} + +.content .segtitle { + width: 12em; +} +/*default 14*/ +.package .segbody { + display: block; + padding-left: 22em; +} +/*default 16*/ +.appendix .segbody{ + display: block; + padding-left: 22em; +} + +.content .segbody { + display: block; + padding-left: 13em; +} + +.content table tr td:first-child +{ + width: 9em; + padding-right: 0px; +} + +.content table tr td:first-child p +{ + padding-right: 0px; +} + +/* itemizedlist */ +ul { + padding-left: 1em +} + +.itemizedlist ul { + margin-left: 1em +} + +.itemizedlist li ul { + margin-bottom: 1.2em; +} + +.itemizedlist li ul li p { + margin-top: .5em; + margin-bottom: .5em; +} + +.itemizedlist li ul li:first-child p:first-child { + margin-top: -.6em; +} + +ul.compact { + list-style: none; +} + +.blfs ul.compact { + list-style: disc; +} + +ul.compact li { + margin: 0em; + padding: 0em; +} + +ul.compact li p { + padding: 0.3em; + margin: 0em; +} + +.blfs ul.compact li p { + background-color: #f0fff0; +} + +/* orderedlist */ +ol { + list-style: decimal; +} + +ol ol { + list-style: lower-alpha; +} + +ol ol ol { + list-style: lower-roman; +} + +ol.compact li { + margin: 0em; + padding: 0em; +} + +ol.compact li p { + padding: 0.3em; + margin: 0em; +} + + +/* Indented blocks */ +p, blockquote { + padding-left: 1em; + padding-right: 1em; +} + + +/* Monospaced elements */ +tt, code, kbd, pre, .command { + font-family: monospace; +} + +.systemitem { + font-style: italic; +} + +pre { + background-color: #e5e5e5; + border: 1px solid #050505; + padding: .5em 1em; + margin: 0 2em .5em 2em; + font-weight: bold; +} + +pre.userinput { + color: #101310; +} + +pre.root { + color: #101310; + border: 1px solid #11a; +} + +pre.screen { + color: #000; + background-color: #e9e9e9; + font-weight: normal; +} + +.literal, .prompt { + font-weight: normal; +} + + +/* Mixed tags */ +p.usernotes { + margin-left: -1em; + font-size: small; + font-weight: bold; + font-style: italic; +} + +.underlined { + text-decoration: underline; +} + + +/* Last edited info */ +p.updated { + font-size: small; + font-weight: bold; + font-style: italic; +} + + +/* Special colored blocks */ + /* OrangeRed4 */ +.feature-ssp { + color: #8B2500; +} + + /* RoyalBlue3 */ +.feature-aslr { + color: #3A5FCD; +} + + /* NavyBlue */ +.feature-pax { + color: #000080; +} + + /* VioletRed */ +.feature-hardened_tmp { + color: #d02090; +} + + /* PaleTurquoise4 */ +.feature-warnings { + color: #668b8b; +} + + /* RosyBrown */ +.feature-misc { + color: #bc8f8f; +} + + /* Sienna*/ +.feature-blowfish { + color: #8E6B23 +} diff --git a/lfs-12.1-sysv/wget-list b/lfs-12.1-sysv/wget-list new file mode 100644 index 0000000..f9e4b20 --- /dev/null +++ b/lfs-12.1-sysv/wget-list @@ -0,0 +1,95 @@ +https://download.savannah.gnu.org/releases/acl/acl-2.3.2.tar.xz +https://download.savannah.gnu.org/releases/attr/attr-2.5.2.tar.gz +https://ftp.gnu.org/gnu/autoconf/autoconf-2.72.tar.xz +https://ftp.gnu.org/gnu/automake/automake-1.16.5.tar.xz +https://ftp.gnu.org/gnu/bash/bash-5.2.21.tar.gz +https://github.com/gavinhoward/bc/releases/download/6.7.5/bc-6.7.5.tar.xz +https://sourceware.org/pub/binutils/releases/binutils-2.42.tar.xz +https://ftp.gnu.org/gnu/bison/bison-3.8.2.tar.xz +https://www.sourceware.org/pub/bzip2/bzip2-1.0.8.tar.gz +https://github.com/libcheck/check/releases/download/0.15.2/check-0.15.2.tar.gz +https://ftp.gnu.org/gnu/coreutils/coreutils-9.4.tar.xz +https://dbus.freedesktop.org/releases/dbus/dbus-1.14.10.tar.xz +https://ftp.gnu.org/gnu/dejagnu/dejagnu-1.6.3.tar.gz +https://ftp.gnu.org/gnu/diffutils/diffutils-3.10.tar.xz +https://downloads.sourceforge.net/project/e2fsprogs/e2fsprogs/v1.47.0/e2fsprogs-1.47.0.tar.gz +https://sourceware.org/ftp/elfutils/0.190/elfutils-0.190.tar.bz2 +https://prdownloads.sourceforge.net/expat/expat-2.6.0.tar.xz +https://prdownloads.sourceforge.net/expect/expect5.45.4.tar.gz +https://astron.com/pub/file/file-5.45.tar.gz +https://ftp.gnu.org/gnu/findutils/findutils-4.9.0.tar.xz +https://github.com/westes/flex/releases/download/v2.6.4/flex-2.6.4.tar.gz +https://pypi.org/packages/source/f/flit-core/flit_core-3.9.0.tar.gz +https://ftp.gnu.org/gnu/gawk/gawk-5.3.0.tar.xz +https://ftp.gnu.org/gnu/gcc/gcc-13.2.0/gcc-13.2.0.tar.xz +https://ftp.gnu.org/gnu/gdbm/gdbm-1.23.tar.gz +https://ftp.gnu.org/gnu/gettext/gettext-0.22.4.tar.xz +https://ftp.gnu.org/gnu/glibc/glibc-2.39.tar.xz +https://ftp.gnu.org/gnu/gmp/gmp-6.3.0.tar.xz +https://ftp.gnu.org/gnu/gperf/gperf-3.1.tar.gz +https://ftp.gnu.org/gnu/grep/grep-3.11.tar.xz +https://ftp.gnu.org/gnu/groff/groff-1.23.0.tar.gz +https://ftp.gnu.org/gnu/grub/grub-2.12.tar.xz +https://ftp.gnu.org/gnu/gzip/gzip-1.13.tar.xz +https://github.com/Mic92/iana-etc/releases/download/20240125/iana-etc-20240125.tar.gz +https://ftp.gnu.org/gnu/inetutils/inetutils-2.5.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-6.7.0.tar.xz +https://pypi.org/packages/source/J/Jinja2/Jinja2-3.1.3.tar.gz +https://www.kernel.org/pub/linux/utils/kbd/kbd-2.6.4.tar.xz +https://www.kernel.org/pub/linux/utils/kernel/kmod/kmod-31.tar.xz +https://www.greenwoodsoftware.com/less/less-643.tar.gz +https://mirror.linuxfromscratch.ru/lfs/downloads/12.1/lfs-bootscripts-20230728.tar.xz +https://www.kernel.org/pub/linux/libs/security/linux-privs/libcap2/libcap-2.69.tar.xz +https://github.com/libffi/libffi/releases/download/v3.4.4/libffi-3.4.4.tar.gz +https://download.savannah.gnu.org/releases/libpipeline/libpipeline-1.5.7.tar.gz +https://ftp.gnu.org/gnu/libtool/libtool-2.4.7.tar.xz +https://github.com/besser82/libxcrypt/releases/download/v4.4.36/libxcrypt-4.4.36.tar.xz +https://www.kernel.org/pub/linux/kernel/v6.x/linux-6.7.4.tar.xz +https://ftp.gnu.org/gnu/m4/m4-1.4.19.tar.xz +https://ftp.gnu.org/gnu/make/make-4.4.1.tar.gz +https://download.savannah.gnu.org/releases/man-db/man-db-2.12.0.tar.xz +https://www.kernel.org/pub/linux/docs/man-pages/man-pages-6.06.tar.xz +https://pypi.org/packages/source/M/MarkupSafe/MarkupSafe-2.1.5.tar.gz +https://github.com/mesonbuild/meson/releases/download/1.3.2/meson-1.3.2.tar.gz +https://ftp.gnu.org/gnu/mpc/mpc-1.3.1.tar.gz +https://ftp.gnu.org/gnu/mpfr/mpfr-4.2.1.tar.xz +https://anduin.linuxfromscratch.org/LFS/ncurses-6.4-20230520.tar.xz +https://github.com/ninja-build/ninja/archive/v1.11.1/ninja-1.11.1.tar.gz +https://www.openssl.org/source/openssl-3.2.1.tar.gz +https://ftp.gnu.org/gnu/patch/patch-2.7.6.tar.xz +https://www.cpan.org/src/5.0/perl-5.38.2.tar.xz +https://distfiles.ariadne.space/pkgconf/pkgconf-2.1.1.tar.xz +https://sourceforge.net/projects/procps-ng/files/Production/procps-ng-4.0.4.tar.xz +https://sourceforge.net/projects/psmisc/files/psmisc/psmisc-23.6.tar.xz +https://www.python.org/ftp/python/3.12.2/Python-3.12.2.tar.xz +https://www.python.org/ftp/python/doc/3.12.2/python-3.12.2-docs-html.tar.bz2 +https://ftp.gnu.org/gnu/readline/readline-8.2.tar.gz +https://ftp.gnu.org/gnu/sed/sed-4.9.tar.xz +https://pypi.org/packages/source/s/setuptools/setuptools-69.1.0.tar.gz +https://github.com/shadow-maint/shadow/releases/download/4.14.5/shadow-4.14.5.tar.xz +https://www.infodrom.org/projects/sysklogd/download/sysklogd-1.5.1.tar.gz +https://github.com/systemd/systemd/archive/v255/systemd-255.tar.gz +https://anduin.linuxfromscratch.org/LFS/systemd-man-pages-255.tar.xz +https://github.com/slicer69/sysvinit/releases/download/3.08/sysvinit-3.08.tar.xz +https://ftp.gnu.org/gnu/tar/tar-1.35.tar.xz +https://downloads.sourceforge.net/tcl/tcl8.6.13-src.tar.gz +https://downloads.sourceforge.net/tcl/tcl8.6.13-html.tar.gz +https://ftp.gnu.org/gnu/texinfo/texinfo-7.1.tar.xz +https://www.iana.org/time-zones/repository/releases/tzdata2024a.tar.gz +https://anduin.linuxfromscratch.org/LFS/udev-lfs-20230818.tar.xz +https://www.kernel.org/pub/linux/utils/util-linux/v2.39/util-linux-2.39.3.tar.xz +https://github.com/vim/vim/archive/v9.1.0041/vim-9.1.0041.tar.gz +https://pypi.org/packages/source/w/wheel/wheel-0.42.0.tar.gz +https://cpan.metacpan.org/authors/id/T/TO/TODDR/XML-Parser-2.47.tar.gz +https://github.com/tukaani-project/xz/releases/download/v5.4.6/xz-5.4.6.tar.xz +https://zlib.net/fossils/zlib-1.3.1.tar.gz +https://github.com/facebook/zstd/releases/download/v1.5.5/zstd-1.5.5.tar.gz +https://mirror.linuxfromscratch.ru/patches/lfs/12.1/bash-5.2.21-upstream_fixes-1.patch +https://mirror.linuxfromscratch.ru/patches/lfs/12.1/bzip2-1.0.8-install_docs-1.patch +https://mirror.linuxfromscratch.ru/patches/lfs/12.1/coreutils-9.4-i18n-1.patch +https://mirror.linuxfromscratch.ru/patches/lfs/12.1/glibc-2.39-fhs-1.patch +https://mirror.linuxfromscratch.ru/patches/lfs/12.1/kbd-2.6.4-backspace-1.patch +https://mirror.linuxfromscratch.ru/patches/lfs/12.1/readline-8.2-upstream_fixes-3.patch +https://mirror.linuxfromscratch.ru/patches/lfs/12.1/sysvinit-3.08-consolidated-1.patch +https://mirror.linuxfromscratch.ru/patches/lfs/12.1/systemd-255-upstream_fixes-1.patch diff --git a/lfs-12.1-sysv/wget-list-sysv b/lfs-12.1-sysv/wget-list-sysv new file mode 100644 index 0000000..5908072 --- /dev/null +++ b/lfs-12.1-sysv/wget-list-sysv @@ -0,0 +1,93 @@ +https://download.savannah.gnu.org/releases/acl/acl-2.3.2.tar.xz +https://download.savannah.gnu.org/releases/attr/attr-2.5.2.tar.gz +https://ftp.gnu.org/gnu/autoconf/autoconf-2.72.tar.xz +https://ftp.gnu.org/gnu/automake/automake-1.16.5.tar.xz +https://ftp.gnu.org/gnu/bash/bash-5.2.21.tar.gz +https://github.com/gavinhoward/bc/releases/download/6.7.5/bc-6.7.5.tar.xz +https://sourceware.org/pub/binutils/releases/binutils-2.42.tar.xz +https://ftp.gnu.org/gnu/bison/bison-3.8.2.tar.xz +https://www.sourceware.org/pub/bzip2/bzip2-1.0.8.tar.gz +https://github.com/libcheck/check/releases/download/0.15.2/check-0.15.2.tar.gz +https://ftp.gnu.org/gnu/coreutils/coreutils-9.4.tar.xz +https://ftp.gnu.org/gnu/dejagnu/dejagnu-1.6.3.tar.gz +https://ftp.gnu.org/gnu/diffutils/diffutils-3.10.tar.xz +https://downloads.sourceforge.net/project/e2fsprogs/e2fsprogs/v1.47.0/e2fsprogs-1.47.0.tar.gz +https://sourceware.org/ftp/elfutils/0.190/elfutils-0.190.tar.bz2 +https://prdownloads.sourceforge.net/expat/expat-2.6.0.tar.xz +https://prdownloads.sourceforge.net/expect/expect5.45.4.tar.gz +https://astron.com/pub/file/file-5.45.tar.gz +https://ftp.gnu.org/gnu/findutils/findutils-4.9.0.tar.xz +https://github.com/westes/flex/releases/download/v2.6.4/flex-2.6.4.tar.gz +https://pypi.org/packages/source/f/flit-core/flit_core-3.9.0.tar.gz +https://ftp.gnu.org/gnu/gawk/gawk-5.3.0.tar.xz +https://ftp.gnu.org/gnu/gcc/gcc-13.2.0/gcc-13.2.0.tar.xz +https://ftp.gnu.org/gnu/gdbm/gdbm-1.23.tar.gz +https://ftp.gnu.org/gnu/gettext/gettext-0.22.4.tar.xz +https://ftp.gnu.org/gnu/glibc/glibc-2.39.tar.xz +https://ftp.gnu.org/gnu/gmp/gmp-6.3.0.tar.xz +https://ftp.gnu.org/gnu/gperf/gperf-3.1.tar.gz +https://ftp.gnu.org/gnu/grep/grep-3.11.tar.xz +https://ftp.gnu.org/gnu/groff/groff-1.23.0.tar.gz +https://ftp.gnu.org/gnu/grub/grub-2.12.tar.xz +https://ftp.gnu.org/gnu/gzip/gzip-1.13.tar.xz +https://github.com/Mic92/iana-etc/releases/download/20240125/iana-etc-20240125.tar.gz +https://ftp.gnu.org/gnu/inetutils/inetutils-2.5.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-6.7.0.tar.xz +https://pypi.org/packages/source/J/Jinja2/Jinja2-3.1.3.tar.gz +https://www.kernel.org/pub/linux/utils/kbd/kbd-2.6.4.tar.xz +https://www.kernel.org/pub/linux/utils/kernel/kmod/kmod-31.tar.xz +https://www.greenwoodsoftware.com/less/less-643.tar.gz +https://mirror.linuxfromscratch.ru/lfs/downloads/12.1/lfs-bootscripts-20230728.tar.xz +https://www.kernel.org/pub/linux/libs/security/linux-privs/libcap2/libcap-2.69.tar.xz +https://github.com/libffi/libffi/releases/download/v3.4.4/libffi-3.4.4.tar.gz +https://download.savannah.gnu.org/releases/libpipeline/libpipeline-1.5.7.tar.gz +https://ftp.gnu.org/gnu/libtool/libtool-2.4.7.tar.xz +https://github.com/besser82/libxcrypt/releases/download/v4.4.36/libxcrypt-4.4.36.tar.xz +https://www.kernel.org/pub/linux/kernel/v6.x/linux-6.7.4.tar.xz +https://ftp.gnu.org/gnu/m4/m4-1.4.19.tar.xz +https://ftp.gnu.org/gnu/make/make-4.4.1.tar.gz +https://download.savannah.gnu.org/releases/man-db/man-db-2.12.0.tar.xz +https://www.kernel.org/pub/linux/docs/man-pages/man-pages-6.06.tar.xz +https://pypi.org/packages/source/M/MarkupSafe/MarkupSafe-2.1.5.tar.gz +https://github.com/mesonbuild/meson/releases/download/1.3.2/meson-1.3.2.tar.gz +https://ftp.gnu.org/gnu/mpc/mpc-1.3.1.tar.gz +https://ftp.gnu.org/gnu/mpfr/mpfr-4.2.1.tar.xz +https://anduin.linuxfromscratch.org/LFS/ncurses-6.4-20230520.tar.xz +https://github.com/ninja-build/ninja/archive/v1.11.1/ninja-1.11.1.tar.gz +https://www.openssl.org/source/openssl-3.2.1.tar.gz +https://ftp.gnu.org/gnu/patch/patch-2.7.6.tar.xz +https://www.cpan.org/src/5.0/perl-5.38.2.tar.xz +https://distfiles.ariadne.space/pkgconf/pkgconf-2.1.1.tar.xz +https://sourceforge.net/projects/procps-ng/files/Production/procps-ng-4.0.4.tar.xz +https://sourceforge.net/projects/psmisc/files/psmisc/psmisc-23.6.tar.xz +https://www.python.org/ftp/python/3.12.2/Python-3.12.2.tar.xz +https://www.python.org/ftp/python/doc/3.12.2/python-3.12.2-docs-html.tar.bz2 +https://ftp.gnu.org/gnu/readline/readline-8.2.tar.gz +https://ftp.gnu.org/gnu/sed/sed-4.9.tar.xz +https://pypi.org/packages/source/s/setuptools/setuptools-69.1.0.tar.gz +https://github.com/shadow-maint/shadow/releases/download/4.14.5/shadow-4.14.5.tar.xz +https://www.infodrom.org/projects/sysklogd/download/sysklogd-1.5.1.tar.gz +https://github.com/systemd/systemd/archive/v255/systemd-255.tar.gz +https://anduin.linuxfromscratch.org/LFS/systemd-man-pages-255.tar.xz +https://github.com/slicer69/sysvinit/releases/download/3.08/sysvinit-3.08.tar.xz +https://ftp.gnu.org/gnu/tar/tar-1.35.tar.xz +https://downloads.sourceforge.net/tcl/tcl8.6.13-src.tar.gz +https://downloads.sourceforge.net/tcl/tcl8.6.13-html.tar.gz +https://ftp.gnu.org/gnu/texinfo/texinfo-7.1.tar.xz +https://www.iana.org/time-zones/repository/releases/tzdata2024a.tar.gz +https://anduin.linuxfromscratch.org/LFS/udev-lfs-20230818.tar.xz +https://www.kernel.org/pub/linux/utils/util-linux/v2.39/util-linux-2.39.3.tar.xz +https://github.com/vim/vim/archive/v9.1.0041/vim-9.1.0041.tar.gz +https://pypi.org/packages/source/w/wheel/wheel-0.42.0.tar.gz +https://cpan.metacpan.org/authors/id/T/TO/TODDR/XML-Parser-2.47.tar.gz +https://github.com/tukaani-project/xz/releases/download/v5.4.6/xz-5.4.6.tar.xz +https://zlib.net/fossils/zlib-1.3.1.tar.gz +https://github.com/facebook/zstd/releases/download/v1.5.5/zstd-1.5.5.tar.gz +https://mirror.linuxfromscratch.ru/patches/lfs/12.1/bash-5.2.21-upstream_fixes-1.patch +https://mirror.linuxfromscratch.ru/patches/lfs/12.1/bzip2-1.0.8-install_docs-1.patch +https://mirror.linuxfromscratch.ru/patches/lfs/12.1/coreutils-9.4-i18n-1.patch +https://mirror.linuxfromscratch.ru/patches/lfs/12.1/glibc-2.39-fhs-1.patch +https://mirror.linuxfromscratch.ru/patches/lfs/12.1/kbd-2.6.4-backspace-1.patch +https://mirror.linuxfromscratch.ru/patches/lfs/12.1/readline-8.2-upstream_fixes-3.patch +https://mirror.linuxfromscratch.ru/patches/lfs/12.1/sysvinit-3.08-consolidated-1.patch -- cgit v1.2.3