From 2203e654b389586650d553251b04544a34f189bf Mon Sep 17 00:00:00 2001 From: Sn4il Date: Mon, 2 Sep 2024 15:54:35 +0300 Subject: LFS 12.2 --- index.html | 2 +- lfs-12.1-sysv/LFS-BOOK.html | 59294 -------------------- lfs-12.1-sysv/LFS-BOOK.pdf | Bin 2954195 -> 0 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 1250 -> 0 bytes lfs-12.1-sysv/images/chevron-bottom.png | Bin 213 -> 0 bytes lfs-12.1-sysv/images/chevron-left.png | Bin 211 -> 0 bytes lfs-12.1-sysv/images/chevron-right.png | Bin 191 -> 0 bytes lfs-12.1-sysv/images/chevron-top.png | Bin 204 -> 0 bytes lfs-12.1-sysv/images/grid-three-up.png | Bin 146 -> 0 bytes lfs-12.1-sysv/images/important.png | Bin 722 -> 0 bytes lfs-12.1-sysv/images/menu.png | Bin 158 -> 0 bytes lfs-12.1-sysv/images/note.png | Bin 229 -> 0 bytes lfs-12.1-sysv/images/tip.png | Bin 449 -> 0 bytes lfs-12.1-sysv/images/tux.png | Bin 11026 -> 0 bytes lfs-12.1-sysv/images/warning.png | Bin 1241 -> 0 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 - lfs-12.2-sysv/LFS-BOOK.html | 59512 +++++++++++++++++++++ lfs-12.2-sysv/LFS-BOOK.pdf | Bin 0 -> 2965382 bytes lfs-12.2-sysv/appendices/acknowledgments.html | 621 + lfs-12.2-sysv/appendices/acronymlist.html | 1087 + lfs-12.2-sysv/appendices/creat-comm.html | 579 + lfs-12.2-sysv/appendices/dependencies.html | 4293 ++ lfs-12.2-sysv/appendices/licenses.html | 88 + lfs-12.2-sysv/appendices/mit.html | 106 + lfs-12.2-sysv/chapter01/askforhelp.html | 263 + lfs-12.2-sysv/chapter01/changelog.html | 1101 + lfs-12.2-sysv/chapter01/chapter01.html | 101 + lfs-12.2-sysv/chapter01/how.html | 183 + lfs-12.2-sysv/chapter01/resources.html | 148 + lfs-12.2-sysv/chapter01/whatsnew.html | 346 + lfs-12.2-sysv/chapter02/aboutlfs.html | 156 + lfs-12.2-sysv/chapter02/chapter02.html | 110 + lfs-12.2-sysv/chapter02/creatingfilesystem.html | 166 + lfs-12.2-sysv/chapter02/creatingpartition.html | 343 + lfs-12.2-sysv/chapter02/hostreqs.html | 392 + lfs-12.2-sysv/chapter02/introduction.html | 87 + lfs-12.2-sysv/chapter02/mounting.html | 171 + lfs-12.2-sysv/chapter02/stages.html | 195 + lfs-12.2-sysv/chapter03/chapter03.html | 97 + lfs-12.2-sysv/chapter03/introduction.html | 199 + lfs-12.2-sysv/chapter03/packages.html | 1773 + lfs-12.2-sysv/chapter03/patches.html | 194 + lfs-12.2-sysv/chapter04/aboutsbus.html | 184 + lfs-12.2-sysv/chapter04/abouttestsuites.html | 132 + lfs-12.2-sysv/chapter04/addinguser.html | 209 + lfs-12.2-sysv/chapter04/chapter04.html | 108 + lfs-12.2-sysv/chapter04/creatingminlayout.html | 142 + lfs-12.2-sysv/chapter04/introduction.html | 92 + lfs-12.2-sysv/chapter04/settingenvironment.html | 404 + lfs-12.2-sysv/chapter05/binutils-pass1.html | 282 + lfs-12.2-sysv/chapter05/chapter05.html | 110 + lfs-12.2-sysv/chapter05/gcc-libstdc++.html | 214 + lfs-12.2-sysv/chapter05/gcc-pass1.html | 332 + lfs-12.2-sysv/chapter05/glibc.html | 374 + lfs-12.2-sysv/chapter05/introduction.html | 94 + lfs-12.2-sysv/chapter05/linux-headers.html | 315 + lfs-12.2-sysv/chapter06/bash.html | 152 + lfs-12.2-sysv/chapter06/binutils-pass2.html | 183 + lfs-12.2-sysv/chapter06/chapter06.html | 145 + lfs-12.2-sysv/chapter06/coreutils.html | 157 + lfs-12.2-sysv/chapter06/diffutils.html | 126 + lfs-12.2-sysv/chapter06/file.html | 167 + lfs-12.2-sysv/chapter06/findutils.html | 131 + lfs-12.2-sysv/chapter06/gawk.html | 130 + lfs-12.2-sysv/chapter06/gcc-pass2.html | 273 + lfs-12.2-sysv/chapter06/grep.html | 122 + lfs-12.2-sysv/chapter06/gzip.html | 120 + lfs-12.2-sysv/chapter06/introduction.html | 103 + lfs-12.2-sysv/chapter06/m4.html | 124 + lfs-12.2-sysv/chapter06/make.html | 143 + lfs-12.2-sysv/chapter06/ncurses.html | 289 + lfs-12.2-sysv/chapter06/patch.html | 125 + lfs-12.2-sysv/chapter06/sed.html | 122 + lfs-12.2-sysv/chapter06/tar.html | 125 + lfs-12.2-sysv/chapter06/xz.html | 138 + lfs-12.2-sysv/chapter07/Python.html | 186 + lfs-12.2-sysv/chapter07/bison.html | 142 + lfs-12.2-sysv/chapter07/changingowner.html | 119 + lfs-12.2-sysv/chapter07/chapter07.html | 134 + lfs-12.2-sysv/chapter07/chroot.html | 170 + lfs-12.2-sysv/chapter07/cleanup.html | 285 + lfs-12.2-sysv/chapter07/createfiles.html | 266 + lfs-12.2-sysv/chapter07/creatingdirs.html | 173 + lfs-12.2-sysv/chapter07/gettext.html | 153 + lfs-12.2-sysv/chapter07/introduction.html | 115 + lfs-12.2-sysv/chapter07/kernfs.html | 207 + lfs-12.2-sysv/chapter07/perl.html | 186 + lfs-12.2-sysv/chapter07/texinfo.html | 125 + lfs-12.2-sysv/chapter07/util-linux.html | 214 + lfs-12.2-sysv/chapter08/Python.html | 395 + lfs-12.2-sysv/chapter08/aboutdebug.html | 136 + lfs-12.2-sysv/chapter08/acl.html | 215 + lfs-12.2-sysv/chapter08/attr.html | 214 + lfs-12.2-sysv/chapter08/autoconf.html | 289 + lfs-12.2-sysv/chapter08/automake.html | 233 + lfs-12.2-sysv/chapter08/bash.html | 266 + lfs-12.2-sysv/chapter08/bc.html | 214 + lfs-12.2-sysv/chapter08/binutils.html | 643 + lfs-12.2-sysv/chapter08/bison.html | 205 + lfs-12.2-sysv/chapter08/bzip2.html | 394 + lfs-12.2-sysv/chapter08/chapter08.html | 343 + lfs-12.2-sysv/chapter08/check.html | 180 + lfs-12.2-sysv/chapter08/cleanup.html | 120 + lfs-12.2-sysv/chapter08/coreutils.html | 1801 + lfs-12.2-sysv/chapter08/dejagnu.html | 184 + lfs-12.2-sysv/chapter08/diffutils.html | 201 + lfs-12.2-sysv/chapter08/e2fsprogs.html | 775 + lfs-12.2-sysv/chapter08/expat.html | 187 + lfs-12.2-sysv/chapter08/expect.html | 260 + lfs-12.2-sysv/chapter08/file.html | 180 + lfs-12.2-sysv/chapter08/findutils.html | 238 + lfs-12.2-sysv/chapter08/flex.html | 230 + lfs-12.2-sysv/chapter08/flit-core.html | 196 + lfs-12.2-sysv/chapter08/gawk.html | 248 + lfs-12.2-sysv/chapter08/gcc.html | 911 + lfs-12.2-sysv/chapter08/gdbm.html | 243 + lfs-12.2-sysv/chapter08/gettext.html | 594 + lfs-12.2-sysv/chapter08/glibc.html | 1315 + lfs-12.2-sysv/chapter08/gmp.html | 268 + lfs-12.2-sysv/chapter08/gperf.html | 163 + lfs-12.2-sysv/chapter08/grep.html | 195 + lfs-12.2-sysv/chapter08/groff.html | 897 + lfs-12.2-sysv/chapter08/grub.html | 599 + lfs-12.2-sysv/chapter08/gzip.html | 365 + lfs-12.2-sysv/chapter08/iana-etc.html | 163 + lfs-12.2-sysv/chapter08/inetutils.html | 369 + lfs-12.2-sysv/chapter08/intltool.html | 245 + lfs-12.2-sysv/chapter08/introduction.html | 174 + lfs-12.2-sysv/chapter08/iproute2.html | 432 + lfs-12.2-sysv/chapter08/jinja2.html | 128 + lfs-12.2-sysv/chapter08/kbd.html | 586 + lfs-12.2-sysv/chapter08/kmod.html | 330 + lfs-12.2-sysv/chapter08/less.html | 209 + lfs-12.2-sysv/chapter08/libcap.html | 258 + lfs-12.2-sysv/chapter08/libelf.html | 169 + lfs-12.2-sysv/chapter08/libffi.html | 210 + lfs-12.2-sysv/chapter08/libpipeline.html | 158 + lfs-12.2-sysv/chapter08/libtool.html | 211 + lfs-12.2-sysv/chapter08/libxcrypt.html | 225 + lfs-12.2-sysv/chapter08/lz4.html | 217 + lfs-12.2-sysv/chapter08/m4.html | 168 + lfs-12.2-sysv/chapter08/make.html | 161 + lfs-12.2-sysv/chapter08/man-db.html | 761 + lfs-12.2-sysv/chapter08/man-pages.html | 156 + lfs-12.2-sysv/chapter08/markupsafe.html | 128 + lfs-12.2-sysv/chapter08/meson.html | 192 + lfs-12.2-sysv/chapter08/mpc.html | 164 + lfs-12.2-sysv/chapter08/mpfr.html | 175 + lfs-12.2-sysv/chapter08/ncurses.html | 527 + lfs-12.2-sysv/chapter08/ninja.html | 209 + lfs-12.2-sysv/chapter08/openssl.html | 287 + lfs-12.2-sysv/chapter08/patch.html | 165 + lfs-12.2-sysv/chapter08/perl.html | 691 + lfs-12.2-sysv/chapter08/pkgconf.html | 208 + lfs-12.2-sysv/chapter08/pkgmgt.html | 539 + lfs-12.2-sysv/chapter08/procps-ng.html | 419 + lfs-12.2-sysv/chapter08/psmisc.html | 249 + lfs-12.2-sysv/chapter08/readline.html | 242 + lfs-12.2-sysv/chapter08/sed.html | 163 + lfs-12.2-sysv/chapter08/setuptools.html | 128 + lfs-12.2-sysv/chapter08/shadow.html | 955 + lfs-12.2-sysv/chapter08/stripping.html | 224 + lfs-12.2-sysv/chapter08/sysklogd.html | 195 + lfs-12.2-sysv/chapter08/sysvinit.html | 313 + lfs-12.2-sysv/chapter08/tar.html | 194 + lfs-12.2-sysv/chapter08/tcl.html | 293 + lfs-12.2-sysv/chapter08/texinfo.html | 334 + lfs-12.2-sysv/chapter08/udev.html | 405 + lfs-12.2-sysv/chapter08/util-linux.html | 1929 + lfs-12.2-sysv/chapter08/vim.html | 449 + lfs-12.2-sysv/chapter08/wheel.html | 160 + lfs-12.2-sysv/chapter08/xml-parser.html | 159 + lfs-12.2-sysv/chapter08/xz.html | 531 + lfs-12.2-sysv/chapter08/zlib.html | 162 + lfs-12.2-sysv/chapter08/zstd.html | 224 + lfs-12.2-sysv/chapter09/bootscripts.html | 513 + lfs-12.2-sysv/chapter09/chapter09.html | 115 + lfs-12.2-sysv/chapter09/etcshells.html | 111 + lfs-12.2-sysv/chapter09/inputrc.html | 156 + lfs-12.2-sysv/chapter09/introduction.html | 182 + lfs-12.2-sysv/chapter09/locale.html | 256 + lfs-12.2-sysv/chapter09/network.html | 342 + lfs-12.2-sysv/chapter09/symlinks.html | 430 + lfs-12.2-sysv/chapter09/udev.html | 490 + lfs-12.2-sysv/chapter09/usage.html | 1081 + lfs-12.2-sysv/chapter10/chapter10.html | 101 + lfs-12.2-sysv/chapter10/fstab.html | 191 + lfs-12.2-sysv/chapter10/grub.html | 354 + lfs-12.2-sysv/chapter10/introduction.html | 87 + lfs-12.2-sysv/chapter10/kernel.html | 757 + lfs-12.2-sysv/chapter11/afterlfs.html | 347 + lfs-12.2-sysv/chapter11/chapter11.html | 100 + lfs-12.2-sysv/chapter11/getcounted.html | 89 + lfs-12.2-sysv/chapter11/reboot.html | 217 + lfs-12.2-sysv/chapter11/theend.html | 126 + lfs-12.2-sysv/chapter11/whatnow.html | 171 + lfs-12.2-sysv/images/caution.png | Bin 0 -> 1250 bytes lfs-12.2-sysv/images/chevron-bottom.png | Bin 0 -> 213 bytes lfs-12.2-sysv/images/chevron-left.png | Bin 0 -> 211 bytes lfs-12.2-sysv/images/chevron-right.png | Bin 0 -> 191 bytes lfs-12.2-sysv/images/chevron-top.png | Bin 0 -> 204 bytes lfs-12.2-sysv/images/grid-three-up.png | Bin 0 -> 146 bytes lfs-12.2-sysv/images/important.png | Bin 0 -> 722 bytes lfs-12.2-sysv/images/menu.png | Bin 0 -> 158 bytes lfs-12.2-sysv/images/note.png | Bin 0 -> 229 bytes lfs-12.2-sysv/images/tip.png | Bin 0 -> 449 bytes lfs-12.2-sysv/images/tux.png | Bin 0 -> 11026 bytes lfs-12.2-sysv/images/warning.png | Bin 0 -> 1241 bytes lfs-12.2-sysv/index.html | 923 + lfs-12.2-sysv/legalnotice.html | 44 + lfs-12.2-sysv/lfs-bootscripts-20240825.tar.xz | Bin 0 -> 34112 bytes lfs-12.2-sysv/longindex.html | 5737 ++ lfs-12.2-sysv/md5sums | 93 + lfs-12.2-sysv/part1.html | 103 + lfs-12.2-sysv/part2.html | 158 + lfs-12.2-sysv/part3.html | 240 + lfs-12.2-sysv/part4.html | 428 + lfs-12.2-sysv/part5.html | 200 + lfs-12.2-sysv/partintro/generalinstructions.html | 281 + lfs-12.2-sysv/partintro/introduction.html | 112 + lfs-12.2-sysv/partintro/partintro.html | 102 + lfs-12.2-sysv/partintro/toolchaintechnotes.html | 738 + lfs-12.2-sysv/prologue/architecture.html | 126 + lfs-12.2-sysv/prologue/audience.html | 129 + lfs-12.2-sysv/prologue/errata.html | 102 + lfs-12.2-sysv/prologue/foreword.html | 155 + lfs-12.2-sysv/prologue/organization.html | 134 + lfs-12.2-sysv/prologue/package-choices.html | 855 + lfs-12.2-sysv/prologue/preface.html | 93 + lfs-12.2-sysv/prologue/prerequisites.html | 132 + lfs-12.2-sysv/prologue/standards.html | 378 + lfs-12.2-sysv/prologue/typography.html | 197 + lfs-12.2-sysv/scripts/apds01.html | 313 + lfs-12.2-sysv/scripts/apds02.html | 944 + lfs-12.2-sysv/scripts/apds03.html | 186 + lfs-12.2-sysv/scripts/apds04.html | 163 + lfs-12.2-sysv/scripts/apds05.html | 158 + lfs-12.2-sysv/scripts/apds06.html | 144 + lfs-12.2-sysv/scripts/apds07.html | 144 + lfs-12.2-sysv/scripts/apds08.html | 230 + lfs-12.2-sysv/scripts/apds09.html | 164 + lfs-12.2-sysv/scripts/apds10.html | 155 + lfs-12.2-sysv/scripts/apds11.html | 203 + lfs-12.2-sysv/scripts/apds12.html | 188 + lfs-12.2-sysv/scripts/apds13.html | 151 + lfs-12.2-sysv/scripts/apds14.html | 136 + lfs-12.2-sysv/scripts/apds15.html | 154 + lfs-12.2-sysv/scripts/apds16.html | 171 + lfs-12.2-sysv/scripts/apds17.html | 151 + lfs-12.2-sysv/scripts/apds18.html | 129 + lfs-12.2-sysv/scripts/apds19.html | 124 + lfs-12.2-sysv/scripts/apds20.html | 150 + lfs-12.2-sysv/scripts/apds21.html | 100 + lfs-12.2-sysv/scripts/apds22.html | 114 + lfs-12.2-sysv/scripts/apds23.html | 100 + lfs-12.2-sysv/scripts/apds24.html | 229 + lfs-12.2-sysv/scripts/apds25.html | 179 + lfs-12.2-sysv/scripts/apds26.html | 161 + lfs-12.2-sysv/scripts/apds27.html | 180 + lfs-12.2-sysv/scripts/apes01.html | 90 + lfs-12.2-sysv/scripts/scripts.html | 91 + lfs-12.2-sysv/scripts/udev-rules.html | 85 + lfs-12.2-sysv/stylesheets/lfs-print.css | 14 + lfs-12.2-sysv/stylesheets/lfs.css | 663 + lfs-12.2-sysv/wget-list | 94 + lfs-12.2-sysv/wget-list-sysv | 94 + 499 files changed, 134922 insertions(+), 134411 deletions(-) delete mode 100644 lfs-12.1-sysv/LFS-BOOK.html delete mode 100644 lfs-12.1-sysv/LFS-BOOK.pdf delete mode 100644 lfs-12.1-sysv/appendices/acknowledgments.html delete mode 100644 lfs-12.1-sysv/appendices/acronymlist.html delete mode 100644 lfs-12.1-sysv/appendices/creat-comm.html delete mode 100644 lfs-12.1-sysv/appendices/dependencies.html delete mode 100644 lfs-12.1-sysv/appendices/licenses.html delete mode 100644 lfs-12.1-sysv/appendices/mit.html delete mode 100644 lfs-12.1-sysv/chapter01/askforhelp.html delete mode 100644 lfs-12.1-sysv/chapter01/changelog.html delete mode 100644 lfs-12.1-sysv/chapter01/chapter01.html delete mode 100644 lfs-12.1-sysv/chapter01/how.html delete mode 100644 lfs-12.1-sysv/chapter01/resources.html delete mode 100644 lfs-12.1-sysv/chapter01/whatsnew.html delete mode 100644 lfs-12.1-sysv/chapter02/aboutlfs.html delete mode 100644 lfs-12.1-sysv/chapter02/chapter02.html delete mode 100644 lfs-12.1-sysv/chapter02/creatingfilesystem.html delete mode 100644 lfs-12.1-sysv/chapter02/creatingpartition.html delete mode 100644 lfs-12.1-sysv/chapter02/hostreqs.html delete mode 100644 lfs-12.1-sysv/chapter02/introduction.html delete mode 100644 lfs-12.1-sysv/chapter02/mounting.html delete mode 100644 lfs-12.1-sysv/chapter02/stages.html delete mode 100644 lfs-12.1-sysv/chapter03/chapter03.html delete mode 100644 lfs-12.1-sysv/chapter03/introduction.html delete mode 100644 lfs-12.1-sysv/chapter03/packages.html delete mode 100644 lfs-12.1-sysv/chapter03/patches.html delete mode 100644 lfs-12.1-sysv/chapter04/aboutsbus.html delete mode 100644 lfs-12.1-sysv/chapter04/abouttestsuites.html delete mode 100644 lfs-12.1-sysv/chapter04/addinguser.html delete mode 100644 lfs-12.1-sysv/chapter04/chapter04.html delete mode 100644 lfs-12.1-sysv/chapter04/creatingminlayout.html delete mode 100644 lfs-12.1-sysv/chapter04/introduction.html delete mode 100644 lfs-12.1-sysv/chapter04/settingenvironment.html delete mode 100644 lfs-12.1-sysv/chapter05/binutils-pass1.html delete mode 100644 lfs-12.1-sysv/chapter05/chapter05.html delete mode 100644 lfs-12.1-sysv/chapter05/gcc-libstdc++.html delete mode 100644 lfs-12.1-sysv/chapter05/gcc-pass1.html delete mode 100644 lfs-12.1-sysv/chapter05/glibc.html delete mode 100644 lfs-12.1-sysv/chapter05/introduction.html delete mode 100644 lfs-12.1-sysv/chapter05/linux-headers.html delete mode 100644 lfs-12.1-sysv/chapter06/bash.html delete mode 100644 lfs-12.1-sysv/chapter06/binutils-pass2.html delete mode 100644 lfs-12.1-sysv/chapter06/chapter06.html delete mode 100644 lfs-12.1-sysv/chapter06/coreutils.html delete mode 100644 lfs-12.1-sysv/chapter06/diffutils.html delete mode 100644 lfs-12.1-sysv/chapter06/file.html delete mode 100644 lfs-12.1-sysv/chapter06/findutils.html delete mode 100644 lfs-12.1-sysv/chapter06/gawk.html delete mode 100644 lfs-12.1-sysv/chapter06/gcc-pass2.html delete mode 100644 lfs-12.1-sysv/chapter06/grep.html delete mode 100644 lfs-12.1-sysv/chapter06/gzip.html delete mode 100644 lfs-12.1-sysv/chapter06/introduction.html delete mode 100644 lfs-12.1-sysv/chapter06/m4.html delete mode 100644 lfs-12.1-sysv/chapter06/make.html delete mode 100644 lfs-12.1-sysv/chapter06/ncurses.html delete mode 100644 lfs-12.1-sysv/chapter06/patch.html delete mode 100644 lfs-12.1-sysv/chapter06/sed.html delete mode 100644 lfs-12.1-sysv/chapter06/tar.html delete mode 100644 lfs-12.1-sysv/chapter06/xz.html delete mode 100644 lfs-12.1-sysv/chapter07/Python.html delete mode 100644 lfs-12.1-sysv/chapter07/bison.html delete mode 100644 lfs-12.1-sysv/chapter07/changingowner.html delete mode 100644 lfs-12.1-sysv/chapter07/chapter07.html delete mode 100644 lfs-12.1-sysv/chapter07/chroot.html delete mode 100644 lfs-12.1-sysv/chapter07/cleanup.html delete mode 100644 lfs-12.1-sysv/chapter07/createfiles.html delete mode 100644 lfs-12.1-sysv/chapter07/creatingdirs.html delete mode 100644 lfs-12.1-sysv/chapter07/gettext.html delete mode 100644 lfs-12.1-sysv/chapter07/introduction.html delete mode 100644 lfs-12.1-sysv/chapter07/kernfs.html delete mode 100644 lfs-12.1-sysv/chapter07/perl.html delete mode 100644 lfs-12.1-sysv/chapter07/texinfo.html delete mode 100644 lfs-12.1-sysv/chapter07/util-linux.html delete mode 100644 lfs-12.1-sysv/chapter08/Python.html delete mode 100644 lfs-12.1-sysv/chapter08/aboutdebug.html delete mode 100644 lfs-12.1-sysv/chapter08/acl.html delete mode 100644 lfs-12.1-sysv/chapter08/attr.html delete mode 100644 lfs-12.1-sysv/chapter08/autoconf.html delete mode 100644 lfs-12.1-sysv/chapter08/automake.html delete mode 100644 lfs-12.1-sysv/chapter08/bash.html delete mode 100644 lfs-12.1-sysv/chapter08/bc.html delete mode 100644 lfs-12.1-sysv/chapter08/binutils.html delete mode 100644 lfs-12.1-sysv/chapter08/bison.html delete mode 100644 lfs-12.1-sysv/chapter08/bzip2.html delete mode 100644 lfs-12.1-sysv/chapter08/chapter08.html delete mode 100644 lfs-12.1-sysv/chapter08/check.html delete mode 100644 lfs-12.1-sysv/chapter08/cleanup.html delete mode 100644 lfs-12.1-sysv/chapter08/coreutils.html delete mode 100644 lfs-12.1-sysv/chapter08/dejagnu.html delete mode 100644 lfs-12.1-sysv/chapter08/diffutils.html delete mode 100644 lfs-12.1-sysv/chapter08/e2fsprogs.html delete mode 100644 lfs-12.1-sysv/chapter08/expat.html delete mode 100644 lfs-12.1-sysv/chapter08/expect.html delete mode 100644 lfs-12.1-sysv/chapter08/file.html delete mode 100644 lfs-12.1-sysv/chapter08/findutils.html delete mode 100644 lfs-12.1-sysv/chapter08/flex.html delete mode 100644 lfs-12.1-sysv/chapter08/flit-core.html delete mode 100644 lfs-12.1-sysv/chapter08/gawk.html delete mode 100644 lfs-12.1-sysv/chapter08/gcc.html delete mode 100644 lfs-12.1-sysv/chapter08/gdbm.html delete mode 100644 lfs-12.1-sysv/chapter08/gettext.html delete mode 100644 lfs-12.1-sysv/chapter08/glibc.html delete mode 100644 lfs-12.1-sysv/chapter08/gmp.html delete mode 100644 lfs-12.1-sysv/chapter08/gperf.html delete mode 100644 lfs-12.1-sysv/chapter08/grep.html delete mode 100644 lfs-12.1-sysv/chapter08/groff.html delete mode 100644 lfs-12.1-sysv/chapter08/grub.html delete mode 100644 lfs-12.1-sysv/chapter08/gzip.html delete mode 100644 lfs-12.1-sysv/chapter08/iana-etc.html delete mode 100644 lfs-12.1-sysv/chapter08/inetutils.html delete mode 100644 lfs-12.1-sysv/chapter08/intltool.html delete mode 100644 lfs-12.1-sysv/chapter08/introduction.html delete mode 100644 lfs-12.1-sysv/chapter08/iproute2.html delete mode 100644 lfs-12.1-sysv/chapter08/jinja2.html delete mode 100644 lfs-12.1-sysv/chapter08/kbd.html delete mode 100644 lfs-12.1-sysv/chapter08/kmod.html delete mode 100644 lfs-12.1-sysv/chapter08/less.html delete mode 100644 lfs-12.1-sysv/chapter08/libcap.html delete mode 100644 lfs-12.1-sysv/chapter08/libelf.html delete mode 100644 lfs-12.1-sysv/chapter08/libffi.html delete mode 100644 lfs-12.1-sysv/chapter08/libpipeline.html delete mode 100644 lfs-12.1-sysv/chapter08/libtool.html delete mode 100644 lfs-12.1-sysv/chapter08/libxcrypt.html delete mode 100644 lfs-12.1-sysv/chapter08/m4.html delete mode 100644 lfs-12.1-sysv/chapter08/make.html delete mode 100644 lfs-12.1-sysv/chapter08/man-db.html delete mode 100644 lfs-12.1-sysv/chapter08/man-pages.html delete mode 100644 lfs-12.1-sysv/chapter08/markupsafe.html delete mode 100644 lfs-12.1-sysv/chapter08/meson.html delete mode 100644 lfs-12.1-sysv/chapter08/mpc.html delete mode 100644 lfs-12.1-sysv/chapter08/mpfr.html delete mode 100644 lfs-12.1-sysv/chapter08/ncurses.html delete mode 100644 lfs-12.1-sysv/chapter08/ninja.html delete mode 100644 lfs-12.1-sysv/chapter08/openssl.html delete mode 100644 lfs-12.1-sysv/chapter08/patch.html delete mode 100644 lfs-12.1-sysv/chapter08/perl.html delete mode 100644 lfs-12.1-sysv/chapter08/pkgconf.html delete mode 100644 lfs-12.1-sysv/chapter08/pkgmgt.html delete mode 100644 lfs-12.1-sysv/chapter08/procps-ng.html delete mode 100644 lfs-12.1-sysv/chapter08/psmisc.html delete mode 100644 lfs-12.1-sysv/chapter08/readline.html delete mode 100644 lfs-12.1-sysv/chapter08/sed.html delete mode 100644 lfs-12.1-sysv/chapter08/setuptools.html delete mode 100644 lfs-12.1-sysv/chapter08/shadow.html delete mode 100644 lfs-12.1-sysv/chapter08/stripping.html delete mode 100644 lfs-12.1-sysv/chapter08/sysklogd.html delete mode 100644 lfs-12.1-sysv/chapter08/sysvinit.html delete mode 100644 lfs-12.1-sysv/chapter08/tar.html delete mode 100644 lfs-12.1-sysv/chapter08/tcl.html delete mode 100644 lfs-12.1-sysv/chapter08/texinfo.html delete mode 100644 lfs-12.1-sysv/chapter08/udev.html delete mode 100644 lfs-12.1-sysv/chapter08/util-linux.html delete mode 100644 lfs-12.1-sysv/chapter08/vim.html delete mode 100644 lfs-12.1-sysv/chapter08/wheel.html delete mode 100644 lfs-12.1-sysv/chapter08/xml-parser.html delete mode 100644 lfs-12.1-sysv/chapter08/xz.html delete mode 100644 lfs-12.1-sysv/chapter08/zlib.html delete mode 100644 lfs-12.1-sysv/chapter08/zstd.html delete mode 100644 lfs-12.1-sysv/chapter09/bootscripts.html delete mode 100644 lfs-12.1-sysv/chapter09/chapter09.html delete mode 100644 lfs-12.1-sysv/chapter09/etcshells.html delete mode 100644 lfs-12.1-sysv/chapter09/inputrc.html delete mode 100644 lfs-12.1-sysv/chapter09/introduction.html delete mode 100644 lfs-12.1-sysv/chapter09/locale.html delete mode 100644 lfs-12.1-sysv/chapter09/network.html delete mode 100644 lfs-12.1-sysv/chapter09/symlinks.html delete mode 100644 lfs-12.1-sysv/chapter09/udev.html delete mode 100644 lfs-12.1-sysv/chapter09/usage.html delete mode 100644 lfs-12.1-sysv/chapter10/chapter10.html delete mode 100644 lfs-12.1-sysv/chapter10/fstab.html delete mode 100644 lfs-12.1-sysv/chapter10/grub.html delete mode 100644 lfs-12.1-sysv/chapter10/introduction.html delete mode 100644 lfs-12.1-sysv/chapter10/kernel.html delete mode 100644 lfs-12.1-sysv/chapter11/afterlfs.html delete mode 100644 lfs-12.1-sysv/chapter11/chapter11.html delete mode 100644 lfs-12.1-sysv/chapter11/getcounted.html delete mode 100644 lfs-12.1-sysv/chapter11/reboot.html delete mode 100644 lfs-12.1-sysv/chapter11/theend.html delete mode 100644 lfs-12.1-sysv/chapter11/whatnow.html delete mode 100644 lfs-12.1-sysv/images/caution.png delete mode 100644 lfs-12.1-sysv/images/chevron-bottom.png delete mode 100644 lfs-12.1-sysv/images/chevron-left.png delete mode 100644 lfs-12.1-sysv/images/chevron-right.png delete mode 100644 lfs-12.1-sysv/images/chevron-top.png delete mode 100644 lfs-12.1-sysv/images/grid-three-up.png delete mode 100644 lfs-12.1-sysv/images/important.png delete mode 100644 lfs-12.1-sysv/images/menu.png delete mode 100644 lfs-12.1-sysv/images/note.png delete mode 100644 lfs-12.1-sysv/images/tip.png delete mode 100644 lfs-12.1-sysv/images/tux.png delete mode 100644 lfs-12.1-sysv/images/warning.png delete mode 100644 lfs-12.1-sysv/index.html delete mode 100644 lfs-12.1-sysv/legalnotice.html delete mode 100644 lfs-12.1-sysv/longindex.html delete mode 100644 lfs-12.1-sysv/md5sums delete mode 100644 lfs-12.1-sysv/part1.html delete mode 100644 lfs-12.1-sysv/part2.html delete mode 100644 lfs-12.1-sysv/part3.html delete mode 100644 lfs-12.1-sysv/part4.html delete mode 100644 lfs-12.1-sysv/part5.html delete mode 100644 lfs-12.1-sysv/partintro/generalinstructions.html delete mode 100644 lfs-12.1-sysv/partintro/introduction.html delete mode 100644 lfs-12.1-sysv/partintro/partintro.html delete mode 100644 lfs-12.1-sysv/partintro/toolchaintechnotes.html delete mode 100644 lfs-12.1-sysv/prologue/architecture.html delete mode 100644 lfs-12.1-sysv/prologue/audience.html delete mode 100644 lfs-12.1-sysv/prologue/errata.html delete mode 100644 lfs-12.1-sysv/prologue/foreword.html delete mode 100644 lfs-12.1-sysv/prologue/organization.html delete mode 100644 lfs-12.1-sysv/prologue/package-choices.html delete mode 100644 lfs-12.1-sysv/prologue/preface.html delete mode 100644 lfs-12.1-sysv/prologue/prerequisites.html delete mode 100644 lfs-12.1-sysv/prologue/standards.html delete mode 100644 lfs-12.1-sysv/prologue/typography.html delete mode 100644 lfs-12.1-sysv/scripts/apds01.html delete mode 100644 lfs-12.1-sysv/scripts/apds02.html delete mode 100644 lfs-12.1-sysv/scripts/apds03.html delete mode 100644 lfs-12.1-sysv/scripts/apds04.html delete mode 100644 lfs-12.1-sysv/scripts/apds05.html delete mode 100644 lfs-12.1-sysv/scripts/apds06.html delete mode 100644 lfs-12.1-sysv/scripts/apds07.html delete mode 100644 lfs-12.1-sysv/scripts/apds08.html delete mode 100644 lfs-12.1-sysv/scripts/apds09.html delete mode 100644 lfs-12.1-sysv/scripts/apds10.html delete mode 100644 lfs-12.1-sysv/scripts/apds11.html delete mode 100644 lfs-12.1-sysv/scripts/apds12.html delete mode 100644 lfs-12.1-sysv/scripts/apds13.html delete mode 100644 lfs-12.1-sysv/scripts/apds14.html delete mode 100644 lfs-12.1-sysv/scripts/apds15.html delete mode 100644 lfs-12.1-sysv/scripts/apds16.html delete mode 100644 lfs-12.1-sysv/scripts/apds17.html delete mode 100644 lfs-12.1-sysv/scripts/apds18.html delete mode 100644 lfs-12.1-sysv/scripts/apds19.html delete mode 100644 lfs-12.1-sysv/scripts/apds20.html delete mode 100644 lfs-12.1-sysv/scripts/apds21.html delete mode 100644 lfs-12.1-sysv/scripts/apds22.html delete mode 100644 lfs-12.1-sysv/scripts/apds23.html delete mode 100644 lfs-12.1-sysv/scripts/apds24.html delete mode 100644 lfs-12.1-sysv/scripts/apds25.html delete mode 100644 lfs-12.1-sysv/scripts/apds26.html delete mode 100644 lfs-12.1-sysv/scripts/apds27.html delete mode 100644 lfs-12.1-sysv/scripts/apes01.html delete mode 100644 lfs-12.1-sysv/scripts/scripts.html delete mode 100644 lfs-12.1-sysv/scripts/udev-rules.html delete mode 100644 lfs-12.1-sysv/stylesheets/lfs-print.css delete mode 100644 lfs-12.1-sysv/stylesheets/lfs.css delete mode 100644 lfs-12.1-sysv/wget-list delete mode 100644 lfs-12.1-sysv/wget-list-sysv create mode 100644 lfs-12.2-sysv/LFS-BOOK.html create mode 100644 lfs-12.2-sysv/LFS-BOOK.pdf create mode 100644 lfs-12.2-sysv/appendices/acknowledgments.html create mode 100644 lfs-12.2-sysv/appendices/acronymlist.html create mode 100644 lfs-12.2-sysv/appendices/creat-comm.html create mode 100644 lfs-12.2-sysv/appendices/dependencies.html create mode 100644 lfs-12.2-sysv/appendices/licenses.html create mode 100644 lfs-12.2-sysv/appendices/mit.html create mode 100644 lfs-12.2-sysv/chapter01/askforhelp.html create mode 100644 lfs-12.2-sysv/chapter01/changelog.html create mode 100644 lfs-12.2-sysv/chapter01/chapter01.html create mode 100644 lfs-12.2-sysv/chapter01/how.html create mode 100644 lfs-12.2-sysv/chapter01/resources.html create mode 100644 lfs-12.2-sysv/chapter01/whatsnew.html create mode 100644 lfs-12.2-sysv/chapter02/aboutlfs.html create mode 100644 lfs-12.2-sysv/chapter02/chapter02.html create mode 100644 lfs-12.2-sysv/chapter02/creatingfilesystem.html create mode 100644 lfs-12.2-sysv/chapter02/creatingpartition.html create mode 100644 lfs-12.2-sysv/chapter02/hostreqs.html create mode 100644 lfs-12.2-sysv/chapter02/introduction.html create mode 100644 lfs-12.2-sysv/chapter02/mounting.html create mode 100644 lfs-12.2-sysv/chapter02/stages.html create mode 100644 lfs-12.2-sysv/chapter03/chapter03.html create mode 100644 lfs-12.2-sysv/chapter03/introduction.html create mode 100644 lfs-12.2-sysv/chapter03/packages.html create mode 100644 lfs-12.2-sysv/chapter03/patches.html create mode 100644 lfs-12.2-sysv/chapter04/aboutsbus.html create mode 100644 lfs-12.2-sysv/chapter04/abouttestsuites.html create mode 100644 lfs-12.2-sysv/chapter04/addinguser.html create mode 100644 lfs-12.2-sysv/chapter04/chapter04.html create mode 100644 lfs-12.2-sysv/chapter04/creatingminlayout.html create mode 100644 lfs-12.2-sysv/chapter04/introduction.html create mode 100644 lfs-12.2-sysv/chapter04/settingenvironment.html create mode 100644 lfs-12.2-sysv/chapter05/binutils-pass1.html create mode 100644 lfs-12.2-sysv/chapter05/chapter05.html create mode 100644 lfs-12.2-sysv/chapter05/gcc-libstdc++.html create mode 100644 lfs-12.2-sysv/chapter05/gcc-pass1.html create mode 100644 lfs-12.2-sysv/chapter05/glibc.html create mode 100644 lfs-12.2-sysv/chapter05/introduction.html create mode 100644 lfs-12.2-sysv/chapter05/linux-headers.html create mode 100644 lfs-12.2-sysv/chapter06/bash.html create mode 100644 lfs-12.2-sysv/chapter06/binutils-pass2.html create mode 100644 lfs-12.2-sysv/chapter06/chapter06.html create mode 100644 lfs-12.2-sysv/chapter06/coreutils.html create mode 100644 lfs-12.2-sysv/chapter06/diffutils.html create mode 100644 lfs-12.2-sysv/chapter06/file.html create mode 100644 lfs-12.2-sysv/chapter06/findutils.html create mode 100644 lfs-12.2-sysv/chapter06/gawk.html create mode 100644 lfs-12.2-sysv/chapter06/gcc-pass2.html create mode 100644 lfs-12.2-sysv/chapter06/grep.html create mode 100644 lfs-12.2-sysv/chapter06/gzip.html create mode 100644 lfs-12.2-sysv/chapter06/introduction.html create mode 100644 lfs-12.2-sysv/chapter06/m4.html create mode 100644 lfs-12.2-sysv/chapter06/make.html create mode 100644 lfs-12.2-sysv/chapter06/ncurses.html create mode 100644 lfs-12.2-sysv/chapter06/patch.html create mode 100644 lfs-12.2-sysv/chapter06/sed.html create mode 100644 lfs-12.2-sysv/chapter06/tar.html create mode 100644 lfs-12.2-sysv/chapter06/xz.html create mode 100644 lfs-12.2-sysv/chapter07/Python.html create mode 100644 lfs-12.2-sysv/chapter07/bison.html create mode 100644 lfs-12.2-sysv/chapter07/changingowner.html create mode 100644 lfs-12.2-sysv/chapter07/chapter07.html create mode 100644 lfs-12.2-sysv/chapter07/chroot.html create mode 100644 lfs-12.2-sysv/chapter07/cleanup.html create mode 100644 lfs-12.2-sysv/chapter07/createfiles.html create mode 100644 lfs-12.2-sysv/chapter07/creatingdirs.html create mode 100644 lfs-12.2-sysv/chapter07/gettext.html create mode 100644 lfs-12.2-sysv/chapter07/introduction.html create mode 100644 lfs-12.2-sysv/chapter07/kernfs.html create mode 100644 lfs-12.2-sysv/chapter07/perl.html create mode 100644 lfs-12.2-sysv/chapter07/texinfo.html create mode 100644 lfs-12.2-sysv/chapter07/util-linux.html create mode 100644 lfs-12.2-sysv/chapter08/Python.html create mode 100644 lfs-12.2-sysv/chapter08/aboutdebug.html create mode 100644 lfs-12.2-sysv/chapter08/acl.html create mode 100644 lfs-12.2-sysv/chapter08/attr.html create mode 100644 lfs-12.2-sysv/chapter08/autoconf.html create mode 100644 lfs-12.2-sysv/chapter08/automake.html create mode 100644 lfs-12.2-sysv/chapter08/bash.html create mode 100644 lfs-12.2-sysv/chapter08/bc.html create mode 100644 lfs-12.2-sysv/chapter08/binutils.html create mode 100644 lfs-12.2-sysv/chapter08/bison.html create mode 100644 lfs-12.2-sysv/chapter08/bzip2.html create mode 100644 lfs-12.2-sysv/chapter08/chapter08.html create mode 100644 lfs-12.2-sysv/chapter08/check.html create mode 100644 lfs-12.2-sysv/chapter08/cleanup.html create mode 100644 lfs-12.2-sysv/chapter08/coreutils.html create mode 100644 lfs-12.2-sysv/chapter08/dejagnu.html create mode 100644 lfs-12.2-sysv/chapter08/diffutils.html create mode 100644 lfs-12.2-sysv/chapter08/e2fsprogs.html create mode 100644 lfs-12.2-sysv/chapter08/expat.html create mode 100644 lfs-12.2-sysv/chapter08/expect.html create mode 100644 lfs-12.2-sysv/chapter08/file.html create mode 100644 lfs-12.2-sysv/chapter08/findutils.html create mode 100644 lfs-12.2-sysv/chapter08/flex.html create mode 100644 lfs-12.2-sysv/chapter08/flit-core.html create mode 100644 lfs-12.2-sysv/chapter08/gawk.html create mode 100644 lfs-12.2-sysv/chapter08/gcc.html create mode 100644 lfs-12.2-sysv/chapter08/gdbm.html create mode 100644 lfs-12.2-sysv/chapter08/gettext.html create mode 100644 lfs-12.2-sysv/chapter08/glibc.html create mode 100644 lfs-12.2-sysv/chapter08/gmp.html create mode 100644 lfs-12.2-sysv/chapter08/gperf.html create mode 100644 lfs-12.2-sysv/chapter08/grep.html create mode 100644 lfs-12.2-sysv/chapter08/groff.html create mode 100644 lfs-12.2-sysv/chapter08/grub.html create mode 100644 lfs-12.2-sysv/chapter08/gzip.html create mode 100644 lfs-12.2-sysv/chapter08/iana-etc.html create mode 100644 lfs-12.2-sysv/chapter08/inetutils.html create mode 100644 lfs-12.2-sysv/chapter08/intltool.html create mode 100644 lfs-12.2-sysv/chapter08/introduction.html create mode 100644 lfs-12.2-sysv/chapter08/iproute2.html create mode 100644 lfs-12.2-sysv/chapter08/jinja2.html create mode 100644 lfs-12.2-sysv/chapter08/kbd.html create mode 100644 lfs-12.2-sysv/chapter08/kmod.html create mode 100644 lfs-12.2-sysv/chapter08/less.html create mode 100644 lfs-12.2-sysv/chapter08/libcap.html create mode 100644 lfs-12.2-sysv/chapter08/libelf.html create mode 100644 lfs-12.2-sysv/chapter08/libffi.html create mode 100644 lfs-12.2-sysv/chapter08/libpipeline.html create mode 100644 lfs-12.2-sysv/chapter08/libtool.html create mode 100644 lfs-12.2-sysv/chapter08/libxcrypt.html create mode 100644 lfs-12.2-sysv/chapter08/lz4.html create mode 100644 lfs-12.2-sysv/chapter08/m4.html create mode 100644 lfs-12.2-sysv/chapter08/make.html create mode 100644 lfs-12.2-sysv/chapter08/man-db.html create mode 100644 lfs-12.2-sysv/chapter08/man-pages.html create mode 100644 lfs-12.2-sysv/chapter08/markupsafe.html create mode 100644 lfs-12.2-sysv/chapter08/meson.html create mode 100644 lfs-12.2-sysv/chapter08/mpc.html create mode 100644 lfs-12.2-sysv/chapter08/mpfr.html create mode 100644 lfs-12.2-sysv/chapter08/ncurses.html create mode 100644 lfs-12.2-sysv/chapter08/ninja.html create mode 100644 lfs-12.2-sysv/chapter08/openssl.html create mode 100644 lfs-12.2-sysv/chapter08/patch.html create mode 100644 lfs-12.2-sysv/chapter08/perl.html create mode 100644 lfs-12.2-sysv/chapter08/pkgconf.html create mode 100644 lfs-12.2-sysv/chapter08/pkgmgt.html create mode 100644 lfs-12.2-sysv/chapter08/procps-ng.html create mode 100644 lfs-12.2-sysv/chapter08/psmisc.html create mode 100644 lfs-12.2-sysv/chapter08/readline.html create mode 100644 lfs-12.2-sysv/chapter08/sed.html create mode 100644 lfs-12.2-sysv/chapter08/setuptools.html create mode 100644 lfs-12.2-sysv/chapter08/shadow.html create mode 100644 lfs-12.2-sysv/chapter08/stripping.html create mode 100644 lfs-12.2-sysv/chapter08/sysklogd.html create mode 100644 lfs-12.2-sysv/chapter08/sysvinit.html create mode 100644 lfs-12.2-sysv/chapter08/tar.html create mode 100644 lfs-12.2-sysv/chapter08/tcl.html create mode 100644 lfs-12.2-sysv/chapter08/texinfo.html create mode 100644 lfs-12.2-sysv/chapter08/udev.html create mode 100644 lfs-12.2-sysv/chapter08/util-linux.html create mode 100644 lfs-12.2-sysv/chapter08/vim.html create mode 100644 lfs-12.2-sysv/chapter08/wheel.html create mode 100644 lfs-12.2-sysv/chapter08/xml-parser.html create mode 100644 lfs-12.2-sysv/chapter08/xz.html create mode 100644 lfs-12.2-sysv/chapter08/zlib.html create mode 100644 lfs-12.2-sysv/chapter08/zstd.html create mode 100644 lfs-12.2-sysv/chapter09/bootscripts.html create mode 100644 lfs-12.2-sysv/chapter09/chapter09.html create mode 100644 lfs-12.2-sysv/chapter09/etcshells.html create mode 100644 lfs-12.2-sysv/chapter09/inputrc.html create mode 100644 lfs-12.2-sysv/chapter09/introduction.html create mode 100644 lfs-12.2-sysv/chapter09/locale.html create mode 100644 lfs-12.2-sysv/chapter09/network.html create mode 100644 lfs-12.2-sysv/chapter09/symlinks.html create mode 100644 lfs-12.2-sysv/chapter09/udev.html create mode 100644 lfs-12.2-sysv/chapter09/usage.html create mode 100644 lfs-12.2-sysv/chapter10/chapter10.html create mode 100644 lfs-12.2-sysv/chapter10/fstab.html create mode 100644 lfs-12.2-sysv/chapter10/grub.html create mode 100644 lfs-12.2-sysv/chapter10/introduction.html create mode 100644 lfs-12.2-sysv/chapter10/kernel.html create mode 100644 lfs-12.2-sysv/chapter11/afterlfs.html create mode 100644 lfs-12.2-sysv/chapter11/chapter11.html create mode 100644 lfs-12.2-sysv/chapter11/getcounted.html create mode 100644 lfs-12.2-sysv/chapter11/reboot.html create mode 100644 lfs-12.2-sysv/chapter11/theend.html create mode 100644 lfs-12.2-sysv/chapter11/whatnow.html create mode 100644 lfs-12.2-sysv/images/caution.png create mode 100644 lfs-12.2-sysv/images/chevron-bottom.png create mode 100644 lfs-12.2-sysv/images/chevron-left.png create mode 100644 lfs-12.2-sysv/images/chevron-right.png create mode 100644 lfs-12.2-sysv/images/chevron-top.png create mode 100644 lfs-12.2-sysv/images/grid-three-up.png create mode 100644 lfs-12.2-sysv/images/important.png create mode 100644 lfs-12.2-sysv/images/menu.png create mode 100644 lfs-12.2-sysv/images/note.png create mode 100644 lfs-12.2-sysv/images/tip.png create mode 100644 lfs-12.2-sysv/images/tux.png create mode 100644 lfs-12.2-sysv/images/warning.png create mode 100644 lfs-12.2-sysv/index.html create mode 100644 lfs-12.2-sysv/legalnotice.html create mode 100644 lfs-12.2-sysv/lfs-bootscripts-20240825.tar.xz create mode 100644 lfs-12.2-sysv/longindex.html create mode 100644 lfs-12.2-sysv/md5sums create mode 100644 lfs-12.2-sysv/part1.html create mode 100644 lfs-12.2-sysv/part2.html create mode 100644 lfs-12.2-sysv/part3.html create mode 100644 lfs-12.2-sysv/part4.html create mode 100644 lfs-12.2-sysv/part5.html create mode 100644 lfs-12.2-sysv/partintro/generalinstructions.html create mode 100644 lfs-12.2-sysv/partintro/introduction.html create mode 100644 lfs-12.2-sysv/partintro/partintro.html create mode 100644 lfs-12.2-sysv/partintro/toolchaintechnotes.html create mode 100644 lfs-12.2-sysv/prologue/architecture.html create mode 100644 lfs-12.2-sysv/prologue/audience.html create mode 100644 lfs-12.2-sysv/prologue/errata.html create mode 100644 lfs-12.2-sysv/prologue/foreword.html create mode 100644 lfs-12.2-sysv/prologue/organization.html create mode 100644 lfs-12.2-sysv/prologue/package-choices.html create mode 100644 lfs-12.2-sysv/prologue/preface.html create mode 100644 lfs-12.2-sysv/prologue/prerequisites.html create mode 100644 lfs-12.2-sysv/prologue/standards.html create mode 100644 lfs-12.2-sysv/prologue/typography.html create mode 100644 lfs-12.2-sysv/scripts/apds01.html create mode 100644 lfs-12.2-sysv/scripts/apds02.html create mode 100644 lfs-12.2-sysv/scripts/apds03.html create mode 100644 lfs-12.2-sysv/scripts/apds04.html create mode 100644 lfs-12.2-sysv/scripts/apds05.html create mode 100644 lfs-12.2-sysv/scripts/apds06.html create mode 100644 lfs-12.2-sysv/scripts/apds07.html create mode 100644 lfs-12.2-sysv/scripts/apds08.html create mode 100644 lfs-12.2-sysv/scripts/apds09.html create mode 100644 lfs-12.2-sysv/scripts/apds10.html create mode 100644 lfs-12.2-sysv/scripts/apds11.html create mode 100644 lfs-12.2-sysv/scripts/apds12.html create mode 100644 lfs-12.2-sysv/scripts/apds13.html create mode 100644 lfs-12.2-sysv/scripts/apds14.html create mode 100644 lfs-12.2-sysv/scripts/apds15.html create mode 100644 lfs-12.2-sysv/scripts/apds16.html create mode 100644 lfs-12.2-sysv/scripts/apds17.html create mode 100644 lfs-12.2-sysv/scripts/apds18.html create mode 100644 lfs-12.2-sysv/scripts/apds19.html create mode 100644 lfs-12.2-sysv/scripts/apds20.html create mode 100644 lfs-12.2-sysv/scripts/apds21.html create mode 100644 lfs-12.2-sysv/scripts/apds22.html create mode 100644 lfs-12.2-sysv/scripts/apds23.html create mode 100644 lfs-12.2-sysv/scripts/apds24.html create mode 100644 lfs-12.2-sysv/scripts/apds25.html create mode 100644 lfs-12.2-sysv/scripts/apds26.html create mode 100644 lfs-12.2-sysv/scripts/apds27.html create mode 100644 lfs-12.2-sysv/scripts/apes01.html create mode 100644 lfs-12.2-sysv/scripts/scripts.html create mode 100644 lfs-12.2-sysv/scripts/udev-rules.html create mode 100644 lfs-12.2-sysv/stylesheets/lfs-print.css create mode 100644 lfs-12.2-sysv/stylesheets/lfs.css create mode 100644 lfs-12.2-sysv/wget-list create mode 100644 lfs-12.2-sysv/wget-list-sysv diff --git a/index.html b/index.html index 6d38b8e..fe8e6ba 100644 --- a/index.html +++ b/index.html @@ -81,7 +81,7 @@
  • Зеркало русского перевода Linux From Scratch:
    - Версия 12.1 без SystemD + Версия 12.2 без SystemD
  • diff --git a/lfs-12.1-sysv/LFS-BOOK.html b/lfs-12.1-sysv/LFS-BOOK.html deleted file mode 100644 index 439d3b0..0000000 --- a/lfs-12.1-sysv/LFS-BOOK.html +++ /dev/null @@ -1,59294 +0,0 @@ - - - - - - Линукс с нуля - - - - - -
    -
    -
    -
    -

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

    -
    -
    -

    - Версия 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 deleted file mode 100644 index 475f8fd..0000000 Binary files a/lfs-12.1-sysv/LFS-BOOK.pdf and /dev/null differ diff --git a/lfs-12.1-sysv/appendices/acknowledgments.html b/lfs-12.1-sysv/appendices/acknowledgments.html deleted file mode 100644 index 4fadc09..0000000 --- a/lfs-12.1-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.1-sysv/appendices/acronymlist.html b/lfs-12.1-sysv/appendices/acronymlist.html deleted file mode 100644 index 2d8bda8..0000000 --- a/lfs-12.1-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.1-sysv/appendices/creat-comm.html b/lfs-12.1-sysv/appendices/creat-comm.html deleted file mode 100644 index 7a519f1..0000000 --- a/lfs-12.1-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.1-sysv/appendices/dependencies.html b/lfs-12.1-sysv/appendices/dependencies.html deleted file mode 100644 index af98142..0000000 --- a/lfs-12.1-sysv/appendices/dependencies.html +++ /dev/null @@ -1,4239 +0,0 @@ - - - - - - Приложение 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 deleted file mode 100644 index 1484731..0000000 --- a/lfs-12.1-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.1-sysv/appendices/mit.html b/lfs-12.1-sysv/appendices/mit.html deleted file mode 100644 index c587a42..0000000 --- a/lfs-12.1-sysv/appendices/mit.html +++ /dev/null @@ -1,106 +0,0 @@ - - - - - - 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 deleted file mode 100644 index be55c09..0000000 --- a/lfs-12.1-sysv/chapter01/askforhelp.html +++ /dev/null @@ -1,263 +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.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 deleted file mode 100644 index 8fbed91..0000000 --- a/lfs-12.1-sysv/chapter01/changelog.html +++ /dev/null @@ -1,1242 +0,0 @@ - - - - - - 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 deleted file mode 100644 index f8756a9..0000000 --- a/lfs-12.1-sysv/chapter01/chapter01.html +++ /dev/null @@ -1,101 +0,0 @@ - - - - - - Глава 1. Введение - - - - - - - - -

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

    -
    - -
    - - - diff --git a/lfs-12.1-sysv/chapter01/how.html b/lfs-12.1-sysv/chapter01/how.html deleted file mode 100644 index 9984dfd..0000000 --- a/lfs-12.1-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.1-sysv/chapter01/resources.html b/lfs-12.1-sysv/chapter01/resources.html deleted file mode 100644 index d9cd9da..0000000 --- a/lfs-12.1-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.1-sysv/chapter01/whatsnew.html b/lfs-12.1-sysv/chapter01/whatsnew.html deleted file mode 100644 index b237943..0000000 --- a/lfs-12.1-sysv/chapter01/whatsnew.html +++ /dev/null @@ -1,356 +0,0 @@ - - - - - - 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 deleted file mode 100644 index 4530d9f..0000000 --- a/lfs-12.1-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.1-sysv/chapter02/chapter02.html b/lfs-12.1-sysv/chapter02/chapter02.html deleted file mode 100644 index fa5690e..0000000 --- a/lfs-12.1-sysv/chapter02/chapter02.html +++ /dev/null @@ -1,110 +0,0 @@ - - - - - - Глава 2. Подготовка хост-системы - - - - - - - - -

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

    -
    - -
    - - - diff --git a/lfs-12.1-sysv/chapter02/creatingfilesystem.html b/lfs-12.1-sysv/chapter02/creatingfilesystem.html deleted file mode 100644 index 56eec58..0000000 --- a/lfs-12.1-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.1-sysv/chapter02/creatingpartition.html b/lfs-12.1-sysv/chapter02/creatingpartition.html deleted file mode 100644 index 1724548..0000000 --- a/lfs-12.1-sysv/chapter02/creatingpartition.html +++ /dev/null @@ -1,343 +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.1-sysv/chapter02/hostreqs.html b/lfs-12.1-sysv/chapter02/hostreqs.html deleted file mode 100644 index 589da18..0000000 --- a/lfs-12.1-sysv/chapter02/hostreqs.html +++ /dev/null @@ -1,392 +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.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 deleted file mode 100644 index 0183f5d..0000000 --- a/lfs-12.1-sysv/chapter02/introduction.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - 2.1. Введение - - - - - - - - -

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

    -
    -

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

    -
    - - - diff --git a/lfs-12.1-sysv/chapter02/mounting.html b/lfs-12.1-sysv/chapter02/mounting.html deleted file mode 100644 index d602dbd..0000000 --- a/lfs-12.1-sysv/chapter02/mounting.html +++ /dev/null @@ -1,171 +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.1-sysv/chapter02/stages.html b/lfs-12.1-sysv/chapter02/stages.html deleted file mode 100644 index aa6f7fe..0000000 --- a/lfs-12.1-sysv/chapter02/stages.html +++ /dev/null @@ -1,195 +0,0 @@ - - - - - - 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 deleted file mode 100644 index 8496ca6..0000000 --- a/lfs-12.1-sysv/chapter03/chapter03.html +++ /dev/null @@ -1,97 +0,0 @@ - - - - - - Глава 3. Пакеты и патчи - - - - - - - - -

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

    -
    -
    -

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

    - -
    -
    - - - diff --git a/lfs-12.1-sysv/chapter03/introduction.html b/lfs-12.1-sysv/chapter03/introduction.html deleted file mode 100644 index 7f8bc2b..0000000 --- a/lfs-12.1-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.1-sysv/chapter03/packages.html b/lfs-12.1-sysv/chapter03/packages.html deleted file mode 100644 index d9e9d4d..0000000 --- a/lfs-12.1-sysv/chapter03/packages.html +++ /dev/null @@ -1,1754 +0,0 @@ - - - - - - 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 deleted file mode 100644 index 877910b..0000000 --- a/lfs-12.1-sysv/chapter03/patches.html +++ /dev/null @@ -1,209 +0,0 @@ - - - - - - 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 deleted file mode 100644 index 9535fd5..0000000 --- a/lfs-12.1-sysv/chapter04/aboutsbus.html +++ /dev/null @@ -1,137 +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 хост-системы. Она приведены - здесь, чтобы дать оценку того, сколько времени может потребоваться - для сборки пакета, но в некоторых случаях цифры могут отличаться на - десятки минут. -

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

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

    -

    - Когда используется несколько ядер, единицы измерения SBU будут - различаться еще больше, чем обычно. В некоторых случаях make просто - завершится ошибкой. Анализ выходных данных процесса сборки также - будет более сложным, поскольку строки разных потоков будут - чередоваться. Если вы столкнулись с проблемой на этапе сборки, - вернитесь к сборке на одном ядре, чтобы проанализировать сообщения - об ошибках. -

    -

    - Представленные здесь значения времени основаны на замерах при - использовании четырех ядер (-j4). Время, указанное в главе 8, также - включает время выполнения регрессионных тестов для пакета, если не - указано иное. -

    -
    -
    - - - diff --git a/lfs-12.1-sysv/chapter04/abouttestsuites.html b/lfs-12.1-sysv/chapter04/abouttestsuites.html deleted file mode 100644 index fca4099..0000000 --- a/lfs-12.1-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.1/, - чтобы проверить, ожидаются ли сбои. Этот сайт актуален для всех - наборов тестов, описанных в книге. -

    -
    - - - diff --git a/lfs-12.1-sysv/chapter04/addinguser.html b/lfs-12.1-sysv/chapter04/addinguser.html deleted file mode 100644 index 2e49b22..0000000 --- a/lfs-12.1-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.1-sysv/chapter04/chapter04.html b/lfs-12.1-sysv/chapter04/chapter04.html deleted file mode 100644 index 3f9b0c7..0000000 --- a/lfs-12.1-sysv/chapter04/chapter04.html +++ /dev/null @@ -1,108 +0,0 @@ - - - - - - Глава 4. Заключительный этап подготовки - - - - - - - - -

    - 4. - Заключительный этап подготовки -

    -
    - -
    - - - diff --git a/lfs-12.1-sysv/chapter04/creatingminlayout.html b/lfs-12.1-sysv/chapter04/creatingminlayout.html deleted file mode 100644 index 59c1189..0000000 --- a/lfs-12.1-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.1-sysv/chapter04/introduction.html b/lfs-12.1-sysv/chapter04/introduction.html deleted file mode 100644 index c5838f1..0000000 --- a/lfs-12.1-sysv/chapter04/introduction.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - 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 deleted file mode 100644 index e6a883e..0000000 --- a/lfs-12.1-sysv/chapter04/settingenvironment.html +++ /dev/null @@ -1,404 +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.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 deleted file mode 100644 index 95194a3..0000000 --- a/lfs-12.1-sysv/chapter05/binutils-pass1.html +++ /dev/null @@ -1,265 +0,0 @@ - - - - - - 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 deleted file mode 100644 index 9c06653..0000000 --- a/lfs-12.1-sysv/chapter05/chapter05.html +++ /dev/null @@ -1,110 +0,0 @@ - - - - - - Глава 5. Сборка кросс-тулчейна - - - - - - - - -

    - 5. Сборка - кросс-тулчейна -

    -
    - -
    - - - diff --git a/lfs-12.1-sysv/chapter05/gcc-libstdc++.html b/lfs-12.1-sysv/chapter05/gcc-libstdc++.html deleted file mode 100644 index a9eb128..0000000 --- a/lfs-12.1-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++{,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 deleted file mode 100644 index ffe0d93..0000000 --- a/lfs-12.1-sysv/chapter05/gcc-pass1.html +++ /dev/null @@ -1,332 +0,0 @@ - - - - - - 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 deleted file mode 100644 index 4c5d12f..0000000 --- a/lfs-12.1-sysv/chapter05/glibc.html +++ /dev/null @@ -1,374 +0,0 @@ - - - - - - 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 deleted file mode 100644 index a95c471..0000000 --- a/lfs-12.1-sysv/chapter05/introduction.html +++ /dev/null @@ -1,94 +0,0 @@ - - - - - - 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 deleted file mode 100644 index 089f331..0000000 --- a/lfs-12.1-sysv/chapter05/linux-headers.html +++ /dev/null @@ -1,315 +0,0 @@ - - - - - - 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 deleted file mode 100644 index ca62712..0000000 --- a/lfs-12.1-sysv/chapter06/bash.html +++ /dev/null @@ -1,153 +0,0 @@ - - - - - - 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 deleted file mode 100644 index aa97a0f..0000000 --- a/lfs-12.1-sysv/chapter06/binutils-pass2.html +++ /dev/null @@ -1,182 +0,0 @@ - - - - - - 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 deleted file mode 100644 index 0291a0c..0000000 --- a/lfs-12.1-sysv/chapter06/chapter06.html +++ /dev/null @@ -1,145 +0,0 @@ - - - - - - Глава 6. Кросс-Компиляция временных инструментов - - - - - - - - -

    - 6. - Кросс-Компиляция временных инструментов -

    -
    -
    -

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

    - -
    -
    - - - diff --git a/lfs-12.1-sysv/chapter06/coreutils.html b/lfs-12.1-sysv/chapter06/coreutils.html deleted file mode 100644 index 3f6f7d4..0000000 --- a/lfs-12.1-sysv/chapter06/coreutils.html +++ /dev/null @@ -1,157 +0,0 @@ - - - - - - 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 deleted file mode 100644 index 927148f..0000000 --- a/lfs-12.1-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.59.2, - «Содержимое пакета Diffutils.» -

    -
    -
    - - - diff --git a/lfs-12.1-sysv/chapter06/file.html b/lfs-12.1-sysv/chapter06/file.html deleted file mode 100644 index e61b689..0000000 --- a/lfs-12.1-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.1-sysv/chapter06/findutils.html b/lfs-12.1-sysv/chapter06/findutils.html deleted file mode 100644 index 1329b27..0000000 --- a/lfs-12.1-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.61.2, - «Содержимое пакета Findutils.» -

    -
    -
    - - - diff --git a/lfs-12.1-sysv/chapter06/gawk.html b/lfs-12.1-sysv/chapter06/gawk.html deleted file mode 100644 index 5c55964..0000000 --- a/lfs-12.1-sysv/chapter06/gawk.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - 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 deleted file mode 100644 index a406e4d..0000000 --- a/lfs-12.1-sysv/chapter06/gcc-pass2.html +++ /dev/null @@ -1,273 +0,0 @@ - - - - - - 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 deleted file mode 100644 index c568f37..0000000 --- a/lfs-12.1-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.1-sysv/chapter06/gzip.html b/lfs-12.1-sysv/chapter06/gzip.html deleted file mode 100644 index 3453831..0000000 --- a/lfs-12.1-sysv/chapter06/gzip.html +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - 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 deleted file mode 100644 index 1806cb4..0000000 --- a/lfs-12.1-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.1-sysv/chapter06/m4.html b/lfs-12.1-sysv/chapter06/m4.html deleted file mode 100644 index a400713..0000000 --- a/lfs-12.1-sysv/chapter06/m4.html +++ /dev/null @@ -1,126 +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.1-sysv/chapter06/make.html b/lfs-12.1-sysv/chapter06/make.html deleted file mode 100644 index c979b68..0000000 --- a/lfs-12.1-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.68.2, «Содержимое - пакета Make.» -

    -
    -
    - - - diff --git a/lfs-12.1-sysv/chapter06/ncurses.html b/lfs-12.1-sysv/chapter06/ncurses.html deleted file mode 100644 index 245ff48..0000000 --- a/lfs-12.1-sysv/chapter06/ncurses.html +++ /dev/null @@ -1,309 +0,0 @@ - - - - - - 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 deleted file mode 100644 index 16863da..0000000 --- a/lfs-12.1-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.69.2, «Содержимое - пакета Patch.» -

    -
    -
    - - - diff --git a/lfs-12.1-sysv/chapter06/sed.html b/lfs-12.1-sysv/chapter06/sed.html deleted file mode 100644 index a027ffd..0000000 --- a/lfs-12.1-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.1-sysv/chapter06/tar.html b/lfs-12.1-sysv/chapter06/tar.html deleted file mode 100644 index d5ddb9d..0000000 --- a/lfs-12.1-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.70.2, «Содержимое - пакета Tar.» -

    -
    -
    - - - diff --git a/lfs-12.1-sysv/chapter06/xz.html b/lfs-12.1-sysv/chapter06/xz.html deleted file mode 100644 index ca9c089..0000000 --- a/lfs-12.1-sysv/chapter06/xz.html +++ /dev/null @@ -1,138 +0,0 @@ - - - - - - 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 deleted file mode 100644 index d6e4439..0000000 --- a/lfs-12.1-sysv/chapter07/Python.html +++ /dev/null @@ -1,186 +0,0 @@ - - - - - - 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 deleted file mode 100644 index aff296a..0000000 --- a/lfs-12.1-sysv/chapter07/bison.html +++ /dev/null @@ -1,142 +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.1-sysv/chapter07/changingowner.html b/lfs-12.1-sysv/chapter07/changingowner.html deleted file mode 100644 index e21a812..0000000 --- a/lfs-12.1-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.1-sysv/chapter07/chapter07.html b/lfs-12.1-sysv/chapter07/chapter07.html deleted file mode 100644 index ebcf204..0000000 --- a/lfs-12.1-sysv/chapter07/chapter07.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - - Глава 7. Вход в окружение Chroot и создание дополнительных временных - инструментов - - - - - - - - -

    - 7. Вход в окружение Chroot и - создание дополнительных временных инструментов -

    -
    - -
    - - - diff --git a/lfs-12.1-sysv/chapter07/chroot.html b/lfs-12.1-sysv/chapter07/chroot.html deleted file mode 100644 index 1e05bb7..0000000 --- a/lfs-12.1-sysv/chapter07/chroot.html +++ /dev/null @@ -1,170 +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     \
    -    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 deleted file mode 100644 index 7fc935f..0000000 --- a/lfs-12.1-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.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 deleted file mode 100644 index b775d46..0000000 --- a/lfs-12.1-sysv/chapter07/createfiles.html +++ /dev/null @@ -1,261 +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:
    -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 deleted file mode 100644 index 6199a24..0000000 --- a/lfs-12.1-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.1-sysv/chapter07/gettext.html b/lfs-12.1-sysv/chapter07/gettext.html deleted file mode 100644 index 2f17f22..0000000 --- a/lfs-12.1-sysv/chapter07/gettext.html +++ /dev/null @@ -1,153 +0,0 @@ - - - - - - 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 deleted file mode 100644 index 16eb636..0000000 --- a/lfs-12.1-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.1-sysv/chapter07/kernfs.html b/lfs-12.1-sysv/chapter07/kernfs.html deleted file mode 100644 index f30a70e..0000000 --- a/lfs-12.1-sysv/chapter07/kernfs.html +++ /dev/null @@ -1,207 +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 -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 deleted file mode 100644 index 3a32ac5..0000000 --- a/lfs-12.1-sysv/chapter07/perl.html +++ /dev/null @@ -1,186 +0,0 @@ - - - - - - 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 deleted file mode 100644 index 40921ce..0000000 --- a/lfs-12.1-sysv/chapter07/texinfo.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - - - 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 deleted file mode 100644 index 9fe0cca..0000000 --- a/lfs-12.1-sysv/chapter07/util-linux.html +++ /dev/null @@ -1,213 +0,0 @@ - - - - - - 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 deleted file mode 100644 index da00221..0000000 --- a/lfs-12.1-sysv/chapter08/Python.html +++ /dev/null @@ -1,384 +0,0 @@ - - - - - - 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 deleted file mode 100644 index 092e726..0000000 --- a/lfs-12.1-sysv/chapter08/aboutdebug.html +++ /dev/null @@ -1,136 +0,0 @@ - - - - - - 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 deleted file mode 100644 index adce47b..0000000 --- a/lfs-12.1-sysv/chapter08/acl.html +++ /dev/null @@ -1,215 +0,0 @@ - - - - - - 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 deleted file mode 100644 index ab3f36b..0000000 --- a/lfs-12.1-sysv/chapter08/attr.html +++ /dev/null @@ -1,214 +0,0 @@ - - - - - - 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 deleted file mode 100644 index 3c2ee6b..0000000 --- a/lfs-12.1-sysv/chapter08/autoconf.html +++ /dev/null @@ -1,289 +0,0 @@ - - - - - - 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 deleted file mode 100644 index 59638aa..0000000 --- a/lfs-12.1-sysv/chapter08/automake.html +++ /dev/null @@ -1,237 +0,0 @@ - - - - - - 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 deleted file mode 100644 index f88fbe5..0000000 --- a/lfs-12.1-sysv/chapter08/bash.html +++ /dev/null @@ -1,270 +0,0 @@ - - - - - - 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 deleted file mode 100644 index 528b4d0..0000000 --- a/lfs-12.1-sysv/chapter08/bc.html +++ /dev/null @@ -1,214 +0,0 @@ - - - - - - 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 deleted file mode 100644 index e122a4f..0000000 --- a/lfs-12.1-sysv/chapter08/binutils.html +++ /dev/null @@ -1,642 +0,0 @@ - - - - - - 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 deleted file mode 100644 index 524938c..0000000 --- a/lfs-12.1-sysv/chapter08/bison.html +++ /dev/null @@ -1,205 +0,0 @@ - - - - - - 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 deleted file mode 100644 index 8432109..0000000 --- a/lfs-12.1-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.1-sysv/chapter08/chapter08.html b/lfs-12.1-sysv/chapter08/chapter08.html deleted file mode 100644 index c0eef2c..0000000 --- a/lfs-12.1-sysv/chapter08/chapter08.html +++ /dev/null @@ -1,340 +0,0 @@ - - - - - - Глава 8. Установка базового системного программного обеспечения - - - - - - - - -

    - 8. - Установка базового системного программного обеспечения -

    -
    -
    -

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

    - -
    -
    - - - diff --git a/lfs-12.1-sysv/chapter08/check.html b/lfs-12.1-sysv/chapter08/check.html deleted file mode 100644 index 554c3d3..0000000 --- a/lfs-12.1-sysv/chapter08/check.html +++ /dev/null @@ -1,180 +0,0 @@ - - - - - - 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 deleted file mode 100644 index dad2d37..0000000 --- a/lfs-12.1-sysv/chapter08/cleanup.html +++ /dev/null @@ -1,119 +0,0 @@ - - - - - - 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 deleted file mode 100644 index 3297290..0000000 --- a/lfs-12.1-sysv/chapter08/coreutils.html +++ /dev/null @@ -1,1796 +0,0 @@ - - - - - - 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 deleted file mode 100644 index e02e58a..0000000 --- a/lfs-12.1-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 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 deleted file mode 100644 index e665448..0000000 --- a/lfs-12.1-sysv/chapter08/diffutils.html +++ /dev/null @@ -1,201 +0,0 @@ - - - - - - 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 deleted file mode 100644 index 2021def..0000000 --- a/lfs-12.1-sysv/chapter08/e2fsprogs.html +++ /dev/null @@ -1,775 +0,0 @@ - - - - - - 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 deleted file mode 100644 index 2ae3453..0000000 --- a/lfs-12.1-sysv/chapter08/expat.html +++ /dev/null @@ -1,187 +0,0 @@ - - - - - - 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 deleted file mode 100644 index bcab4a2..0000000 --- a/lfs-12.1-sysv/chapter08/expect.html +++ /dev/null @@ -1,253 +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 для работы необходим псевдотерминал(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 deleted file mode 100644 index 86ae824..0000000 --- a/lfs-12.1-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.1-sysv/chapter08/findutils.html b/lfs-12.1-sysv/chapter08/findutils.html deleted file mode 100644 index 24e090e..0000000 --- a/lfs-12.1-sysv/chapter08/findutils.html +++ /dev/null @@ -1,238 +0,0 @@ - - - - - - 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 deleted file mode 100644 index 0f1eb70..0000000 --- a/lfs-12.1-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.1-sysv/chapter08/flit-core.html b/lfs-12.1-sysv/chapter08/flit-core.html deleted file mode 100644 index 4136b9c..0000000 --- a/lfs-12.1-sysv/chapter08/flit-core.html +++ /dev/null @@ -1,196 +0,0 @@ - - - - - - 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 deleted file mode 100644 index 930ed58..0000000 --- a/lfs-12.1-sysv/chapter08/gawk.html +++ /dev/null @@ -1,248 +0,0 @@ - - - - - - 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 deleted file mode 100644 index 3f0f703..0000000 --- a/lfs-12.1-sysv/chapter08/gcc.html +++ /dev/null @@ -1,908 +0,0 @@ - - - - - - 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 deleted file mode 100644 index 69b2e9f..0000000 --- a/lfs-12.1-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.1-sysv/chapter08/gettext.html b/lfs-12.1-sysv/chapter08/gettext.html deleted file mode 100644 index 2ba912b..0000000 --- a/lfs-12.1-sysv/chapter08/gettext.html +++ /dev/null @@ -1,594 +0,0 @@ - - - - - - 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 deleted file mode 100644 index 277785f..0000000 --- a/lfs-12.1-sysv/chapter08/glibc.html +++ /dev/null @@ -1,1314 +0,0 @@ - - - - - - 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 deleted file mode 100644 index 9718745..0000000 --- a/lfs-12.1-sysv/chapter08/gmp.html +++ /dev/null @@ -1,268 +0,0 @@ - - - - - - 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 deleted file mode 100644 index 8ffce96..0000000 --- a/lfs-12.1-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.1-sysv/chapter08/grep.html b/lfs-12.1-sysv/chapter08/grep.html deleted file mode 100644 index 7508562..0000000 --- a/lfs-12.1-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.1-sysv/chapter08/groff.html b/lfs-12.1-sysv/chapter08/groff.html deleted file mode 100644 index 58ef4db..0000000 --- a/lfs-12.1-sysv/chapter08/groff.html +++ /dev/null @@ -1,897 +0,0 @@ - - - - - - 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 deleted file mode 100644 index f7b4bcf..0000000 --- a/lfs-12.1-sysv/chapter08/grub.html +++ /dev/null @@ -1,598 +0,0 @@ - - - - - - 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 deleted file mode 100644 index 5cb7b72..0000000 --- a/lfs-12.1-sysv/chapter08/gzip.html +++ /dev/null @@ -1,365 +0,0 @@ - - - - - - 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 deleted file mode 100644 index c342f06..0000000 --- a/lfs-12.1-sysv/chapter08/iana-etc.html +++ /dev/null @@ -1,163 +0,0 @@ - - - - - - 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 deleted file mode 100644 index e76061a..0000000 --- a/lfs-12.1-sysv/chapter08/inetutils.html +++ /dev/null @@ -1,363 +0,0 @@ - - - - - - 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 deleted file mode 100644 index 7b3c06a..0000000 --- a/lfs-12.1-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.1-sysv/chapter08/introduction.html b/lfs-12.1-sysv/chapter08/introduction.html deleted file mode 100644 index 475fb1f..0000000 --- a/lfs-12.1-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.1-sysv/chapter08/iproute2.html b/lfs-12.1-sysv/chapter08/iproute2.html deleted file mode 100644 index ab83f37..0000000 --- a/lfs-12.1-sysv/chapter08/iproute2.html +++ /dev/null @@ -1,432 +0,0 @@ - - - - - - 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 deleted file mode 100644 index 3617df8..0000000 --- a/lfs-12.1-sysv/chapter08/jinja2.html +++ /dev/null @@ -1,128 +0,0 @@ - - - - - - 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 deleted file mode 100644 index e296395..0000000 --- a/lfs-12.1-sysv/chapter08/kbd.html +++ /dev/null @@ -1,586 +0,0 @@ - - - - - - 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 deleted file mode 100644 index 8590a93..0000000 --- a/lfs-12.1-sysv/chapter08/kmod.html +++ /dev/null @@ -1,315 +0,0 @@ - - - - - - 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 deleted file mode 100644 index 6518582..0000000 --- a/lfs-12.1-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.1-sysv/chapter08/libcap.html b/lfs-12.1-sysv/chapter08/libcap.html deleted file mode 100644 index 6cbb111..0000000 --- a/lfs-12.1-sysv/chapter08/libcap.html +++ /dev/null @@ -1,258 +0,0 @@ - - - - - - 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 deleted file mode 100644 index df49966..0000000 --- a/lfs-12.1-sysv/chapter08/libelf.html +++ /dev/null @@ -1,169 +0,0 @@ - - - - - - 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 deleted file mode 100644 index 0c3c825..0000000 --- a/lfs-12.1-sysv/chapter08/libffi.html +++ /dev/null @@ -1,210 +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.1-sysv/chapter08/libpipeline.html b/lfs-12.1-sysv/chapter08/libpipeline.html deleted file mode 100644 index 4d5de75..0000000 --- a/lfs-12.1-sysv/chapter08/libpipeline.html +++ /dev/null @@ -1,158 +0,0 @@ - - - - - - 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 deleted file mode 100644 index 2a15fe0..0000000 --- a/lfs-12.1-sysv/chapter08/libtool.html +++ /dev/null @@ -1,211 +0,0 @@ - - - - - - 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 deleted file mode 100644 index 1241823..0000000 --- a/lfs-12.1-sysv/chapter08/libxcrypt.html +++ /dev/null @@ -1,225 +0,0 @@ - - - - - - 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 deleted file mode 100644 index c845fd3..0000000 --- a/lfs-12.1-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.1-sysv/chapter08/make.html b/lfs-12.1-sysv/chapter08/make.html deleted file mode 100644 index b3a537d..0000000 --- a/lfs-12.1-sysv/chapter08/make.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - 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 deleted file mode 100644 index 09d54d7..0000000 --- a/lfs-12.1-sysv/chapter08/man-db.html +++ /dev/null @@ -1,761 +0,0 @@ - - - - - - 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 deleted file mode 100644 index e51ddfe..0000000 --- a/lfs-12.1-sysv/chapter08/man-pages.html +++ /dev/null @@ -1,156 +0,0 @@ - - - - - - 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 deleted file mode 100644 index a615f73..0000000 --- a/lfs-12.1-sysv/chapter08/markupsafe.html +++ /dev/null @@ -1,128 +0,0 @@ - - - - - - 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 deleted file mode 100644 index fcba2c8..0000000 --- a/lfs-12.1-sysv/chapter08/meson.html +++ /dev/null @@ -1,192 +0,0 @@ - - - - - - 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 deleted file mode 100644 index 19cd64b..0000000 --- a/lfs-12.1-sysv/chapter08/mpc.html +++ /dev/null @@ -1,164 +0,0 @@ - - - - - - 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 deleted file mode 100644 index 42abb97..0000000 --- a/lfs-12.1-sysv/chapter08/mpfr.html +++ /dev/null @@ -1,175 +0,0 @@ - - - - - - 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 deleted file mode 100644 index 359af24..0000000 --- a/lfs-12.1-sysv/chapter08/ncurses.html +++ /dev/null @@ -1,548 +0,0 @@ - - - - - - 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 deleted file mode 100644 index c716e2b..0000000 --- a/lfs-12.1-sysv/chapter08/ninja.html +++ /dev/null @@ -1,208 +0,0 @@ - - - - - - 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 deleted file mode 100644 index 133c93f..0000000 --- a/lfs-12.1-sysv/chapter08/openssl.html +++ /dev/null @@ -1,287 +0,0 @@ - - - - - - 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 deleted file mode 100644 index aa87bd6..0000000 --- a/lfs-12.1-sysv/chapter08/patch.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - 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 deleted file mode 100644 index 56c1b8b..0000000 --- a/lfs-12.1-sysv/chapter08/perl.html +++ /dev/null @@ -1,692 +0,0 @@ - - - - - - 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 deleted file mode 100644 index c017df7..0000000 --- a/lfs-12.1-sysv/chapter08/pkgconf.html +++ /dev/null @@ -1,208 +0,0 @@ - - - - - - 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 deleted file mode 100644 index b8b3f94..0000000 --- a/lfs-12.1-sysv/chapter08/pkgmgt.html +++ /dev/null @@ -1,539 +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 не нужно - обновлять вместе с ядром. Вам просто нужно перезагрузить - систему, чтобы использовать обновленное ядро. -

      -
    • -
    • -

      - Если необходимо обновить 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 deleted file mode 100644 index e3fd465..0000000 --- a/lfs-12.1-sysv/chapter08/procps-ng.html +++ /dev/null @@ -1,421 +0,0 @@ - - - - - - 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 deleted file mode 100644 index 149e35e..0000000 --- a/lfs-12.1-sysv/chapter08/psmisc.html +++ /dev/null @@ -1,249 +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.1-sysv/chapter08/readline.html b/lfs-12.1-sysv/chapter08/readline.html deleted file mode 100644 index 19948dc..0000000 --- a/lfs-12.1-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_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 deleted file mode 100644 index 76ac41b..0000000 --- a/lfs-12.1-sysv/chapter08/sed.html +++ /dev/null @@ -1,165 +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 -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 deleted file mode 100644 index 4e05780..0000000 --- a/lfs-12.1-sysv/chapter08/setuptools.html +++ /dev/null @@ -1,128 +0,0 @@ - - - - - - 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 deleted file mode 100644 index 7de24d3..0000000 --- a/lfs-12.1-sysv/chapter08/shadow.html +++ /dev/null @@ -1,942 +0,0 @@ - - - - - - 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 deleted file mode 100644 index 9832849..0000000 --- a/lfs-12.1-sysv/chapter08/stripping.html +++ /dev/null @@ -1,224 +0,0 @@ - - - - - - 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 deleted file mode 100644 index f113c0a..0000000 --- a/lfs-12.1-sysv/chapter08/sysklogd.html +++ /dev/null @@ -1,208 +0,0 @@ - - - - - - 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 deleted file mode 100644 index 23f79bf..0000000 --- a/lfs-12.1-sysv/chapter08/sysvinit.html +++ /dev/null @@ -1,313 +0,0 @@ - - - - - - 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 deleted file mode 100644 index fb77a3e..0000000 --- a/lfs-12.1-sysv/chapter08/tar.html +++ /dev/null @@ -1,194 +0,0 @@ - - - - - - 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 deleted file mode 100644 index a09e33d..0000000 --- a/lfs-12.1-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.1-sysv/chapter08/texinfo.html b/lfs-12.1-sysv/chapter08/texinfo.html deleted file mode 100644 index af1cc5b..0000000 --- a/lfs-12.1-sysv/chapter08/texinfo.html +++ /dev/null @@ -1,334 +0,0 @@ - - - - - - 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 deleted file mode 100644 index fff3127..0000000 --- a/lfs-12.1-sysv/chapter08/udev.html +++ /dev/null @@ -1,406 +0,0 @@ - - - - - - 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 deleted file mode 100644 index 4990d47..0000000 --- a/lfs-12.1-sysv/chapter08/util-linux.html +++ /dev/null @@ -1,1930 +0,0 @@ - - - - - - 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 deleted file mode 100644 index 4d99020..0000000 --- a/lfs-12.1-sysv/chapter08/vim.html +++ /dev/null @@ -1,449 +0,0 @@ - - - - - - 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 deleted file mode 100644 index 8d30c28..0000000 --- a/lfs-12.1-sysv/chapter08/wheel.html +++ /dev/null @@ -1,160 +0,0 @@ - - - - - - 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 deleted file mode 100644 index e190c95..0000000 --- a/lfs-12.1-sysv/chapter08/xml-parser.html +++ /dev/null @@ -1,159 +0,0 @@ - - - - - - 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 deleted file mode 100644 index 8588892..0000000 --- a/lfs-12.1-sysv/chapter08/xz.html +++ /dev/null @@ -1,531 +0,0 @@ - - - - - - 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 deleted file mode 100644 index 9b45ad0..0000000 --- a/lfs-12.1-sysv/chapter08/zlib.html +++ /dev/null @@ -1,162 +0,0 @@ - - - - - - 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 deleted file mode 100644 index d3262e0..0000000 --- a/lfs-12.1-sysv/chapter08/zstd.html +++ /dev/null @@ -1,224 +0,0 @@ - - - - - - 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 deleted file mode 100644 index ebcc945..0000000 --- a/lfs-12.1-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.1-sysv/chapter09/chapter09.html b/lfs-12.1-sysv/chapter09/chapter09.html deleted file mode 100644 index 0d7f3eb..0000000 --- a/lfs-12.1-sysv/chapter09/chapter09.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - Глава 9. Системные настройки - - - - - - - - -

    - 9. Системные настройки -

    -
    - -
    - - - diff --git a/lfs-12.1-sysv/chapter09/etcshells.html b/lfs-12.1-sysv/chapter09/etcshells.html deleted file mode 100644 index 0b95e4a..0000000 --- a/lfs-12.1-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.1-sysv/chapter09/inputrc.html b/lfs-12.1-sysv/chapter09/inputrc.html deleted file mode 100644 index f1d2811..0000000 --- a/lfs-12.1-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.1-sysv/chapter09/introduction.html b/lfs-12.1-sysv/chapter09/introduction.html deleted file mode 100644 index 69b8cfc..0000000 --- a/lfs-12.1-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.1-sysv/chapter09/locale.html b/lfs-12.1-sysv/chapter09/locale.html deleted file mode 100644 index 15d4163..0000000 --- a/lfs-12.1-sysv/chapter09/locale.html +++ /dev/null @@ -1,256 +0,0 @@ - - - - - - 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 deleted file mode 100644 index c3cc258..0000000 --- a/lfs-12.1-sysv/chapter09/network.html +++ /dev/null @@ -1,342 +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.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 deleted file mode 100644 index 25c0faf..0000000 --- a/lfs-12.1-sysv/chapter09/symlinks.html +++ /dev/null @@ -1,430 +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 при создании файлов - конфигурации сети. -

    -

    - Даже если создан пользовательский файл правил 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 deleted file mode 100644 index fdcde06..0000000 --- a/lfs-12.1-sysv/chapter09/udev.html +++ /dev/null @@ -1,490 +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.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 deleted file mode 100644 index 43c41a4..0000000 --- a/lfs-12.1-sysv/chapter09/usage.html +++ /dev/null @@ -1,1081 +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 раскладки. -

    -
    -
    -
    -

    - Несколько примеров: -

    -
    -
      -
    • -

      - Мы будем использовать 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 deleted file mode 100644 index 9497f7e..0000000 --- a/lfs-12.1-sysv/chapter10/chapter10.html +++ /dev/null @@ -1,101 +0,0 @@ - - - - - - Глава 10. Делаем систему LFS загрузочной - - - - - - - - -

    - 10. Делаем систему - LFS загрузочной -

    -
    - -
    - - - diff --git a/lfs-12.1-sysv/chapter10/fstab.html b/lfs-12.1-sysv/chapter10/fstab.html deleted file mode 100644 index add2432..0000000 --- a/lfs-12.1-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. Для получения подробной информации о - параметрах в этом файле, смотрите 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 deleted file mode 100644 index e13115c..0000000 --- a/lfs-12.1-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.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 deleted file mode 100644 index 75ad21d..0000000 --- a/lfs-12.1-sysv/chapter10/introduction.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - 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 deleted file mode 100644 index bb6908f..0000000 --- a/lfs-12.1-sysv/chapter10/kernel.html +++ /dev/null @@ -1,756 +0,0 @@ - - - - - - 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 deleted file mode 100644 index 032f06f..0000000 --- a/lfs-12.1-sysv/chapter11/afterlfs.html +++ /dev/null @@ -1,347 +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
    -  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 deleted file mode 100644 index 8223be6..0000000 --- a/lfs-12.1-sysv/chapter11/chapter11.html +++ /dev/null @@ -1,100 +0,0 @@ - - - - - - Глава 11. Заключение - - - - - - - - -

    - 11. Заключение -

    -
    - -
    - - - diff --git a/lfs-12.1-sysv/chapter11/getcounted.html b/lfs-12.1-sysv/chapter11/getcounted.html deleted file mode 100644 index 314e6bb..0000000 --- a/lfs-12.1-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.1-sysv/chapter11/reboot.html b/lfs-12.1-sysv/chapter11/reboot.html deleted file mode 100644 index 86ec276..0000000 --- a/lfs-12.1-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 -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 deleted file mode 100644 index 06e79ce..0000000 --- a/lfs-12.1-sysv/chapter11/theend.html +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - 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 deleted file mode 100644 index d9148ca..0000000 --- a/lfs-12.1-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.1-sysv/images/caution.png b/lfs-12.1-sysv/images/caution.png deleted file mode 100644 index 5b7809c..0000000 Binary files a/lfs-12.1-sysv/images/caution.png and /dev/null differ diff --git a/lfs-12.1-sysv/images/chevron-bottom.png b/lfs-12.1-sysv/images/chevron-bottom.png deleted file mode 100644 index a1a3bce..0000000 Binary files a/lfs-12.1-sysv/images/chevron-bottom.png and /dev/null differ diff --git a/lfs-12.1-sysv/images/chevron-left.png b/lfs-12.1-sysv/images/chevron-left.png deleted file mode 100644 index f16a3ab..0000000 Binary files a/lfs-12.1-sysv/images/chevron-left.png and /dev/null differ diff --git a/lfs-12.1-sysv/images/chevron-right.png b/lfs-12.1-sysv/images/chevron-right.png deleted file mode 100644 index b8d9362..0000000 Binary files a/lfs-12.1-sysv/images/chevron-right.png and /dev/null differ diff --git a/lfs-12.1-sysv/images/chevron-top.png b/lfs-12.1-sysv/images/chevron-top.png deleted file mode 100644 index d9c01ba..0000000 Binary files a/lfs-12.1-sysv/images/chevron-top.png and /dev/null differ diff --git a/lfs-12.1-sysv/images/grid-three-up.png b/lfs-12.1-sysv/images/grid-three-up.png deleted file mode 100644 index c3f70a2..0000000 Binary files a/lfs-12.1-sysv/images/grid-three-up.png and /dev/null differ diff --git a/lfs-12.1-sysv/images/important.png b/lfs-12.1-sysv/images/important.png deleted file mode 100644 index 12c90f6..0000000 Binary files a/lfs-12.1-sysv/images/important.png and /dev/null differ diff --git a/lfs-12.1-sysv/images/menu.png b/lfs-12.1-sysv/images/menu.png deleted file mode 100644 index 6de4e43..0000000 Binary files a/lfs-12.1-sysv/images/menu.png and /dev/null differ diff --git a/lfs-12.1-sysv/images/note.png b/lfs-12.1-sysv/images/note.png deleted file mode 100644 index f14464d..0000000 Binary files a/lfs-12.1-sysv/images/note.png and /dev/null differ diff --git a/lfs-12.1-sysv/images/tip.png b/lfs-12.1-sysv/images/tip.png deleted file mode 100644 index 5c4aab3..0000000 Binary files a/lfs-12.1-sysv/images/tip.png and /dev/null differ diff --git a/lfs-12.1-sysv/images/tux.png b/lfs-12.1-sysv/images/tux.png deleted file mode 100644 index 8aae132..0000000 Binary files a/lfs-12.1-sysv/images/tux.png and /dev/null differ diff --git a/lfs-12.1-sysv/images/warning.png b/lfs-12.1-sysv/images/warning.png deleted file mode 100644 index 1c33db8..0000000 Binary files a/lfs-12.1-sysv/images/warning.png and /dev/null differ diff --git a/lfs-12.1-sysv/index.html b/lfs-12.1-sysv/index.html deleted file mode 100644 index 44dc770..0000000 --- a/lfs-12.1-sysv/index.html +++ /dev/null @@ -1,919 +0,0 @@ - - - - - - Линукс с нуля - - - - - - - -
    -
    -
    -
    -

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

    -
    -
    -

    - Версия 12.1 -

    -
    -
    -

    - Дата публикации 1 марта 2024 -

    -
    -
    -
    -
    -

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

    -
    -
    -

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

    -
    -
    -

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

    -
    -
    -
    -
    - -
    -
    -
    -
    -
    -

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

    - -
    -
    - - - diff --git a/lfs-12.1-sysv/legalnotice.html b/lfs-12.1-sysv/legalnotice.html deleted file mode 100644 index 0aca299..0000000 --- a/lfs-12.1-sysv/legalnotice.html +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - Юридическое уведомление - - - - - - - -
    -

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

    -

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

    -

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

    -

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

    -
    - - - diff --git a/lfs-12.1-sysv/longindex.html b/lfs-12.1-sysv/longindex.html deleted file mode 100644 index 68571f0..0000000 --- a/lfs-12.1-sysv/longindex.html +++ /dev/null @@ -1,5713 +0,0 @@ - - - - - - Предметный указатель - - - - - - - - -
    -
    -
    -
    -

    - Предметный указатель -

    -
    -
    -
    -
    -

    - Пакеты -

    - -

    - Программы -

    - -

    - Библиотеки -

    - -

    - Скрипты -

    - -

    - Разное -

    - -
    -
    - - - diff --git a/lfs-12.1-sysv/md5sums b/lfs-12.1-sysv/md5sums deleted file mode 100644 index 2766596..0000000 --- a/lfs-12.1-sysv/md5sums +++ /dev/null @@ -1,93 +0,0 @@ -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 deleted file mode 100644 index c406b53..0000000 --- a/lfs-12.1-sysv/part1.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - Часть I. Введение - - - - - - - - -

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

    -
    - -
    - - - diff --git a/lfs-12.1-sysv/part2.html b/lfs-12.1-sysv/part2.html deleted file mode 100644 index 1b70f9d..0000000 --- a/lfs-12.1-sysv/part2.html +++ /dev/null @@ -1,158 +0,0 @@ - - - - - - Часть II. Подготовка к сборке - - - - - - - - -

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

    -
    - -
    - - - diff --git a/lfs-12.1-sysv/part3.html b/lfs-12.1-sysv/part3.html deleted file mode 100644 index aad5460..0000000 --- a/lfs-12.1-sysv/part3.html +++ /dev/null @@ -1,240 +0,0 @@ - - - - - - Часть III. Сборка кросс-компилятора и набора временных - инструментов - - - - - - - - -

    - III. Сборка кросс-компилятора и набора - временных инструментов -

    -
    -
    -

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

    - -
    -
    - - - diff --git a/lfs-12.1-sysv/part4.html b/lfs-12.1-sysv/part4.html deleted file mode 100644 index e29d09e..0000000 --- a/lfs-12.1-sysv/part4.html +++ /dev/null @@ -1,425 +0,0 @@ - - - - - - Часть IV. Сборка системы LFS - - - - - - - - -

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

    -
    -
    -

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

    - -
    -
    - - - diff --git a/lfs-12.1-sysv/part5.html b/lfs-12.1-sysv/part5.html deleted file mode 100644 index ca2ac3a..0000000 --- a/lfs-12.1-sysv/part5.html +++ /dev/null @@ -1,200 +0,0 @@ - - - - - - Часть V. Приложения - - - - - - - - -

    - V. Приложения -

    -
    - -
    - - - diff --git a/lfs-12.1-sysv/partintro/generalinstructions.html b/lfs-12.1-sysv/partintro/generalinstructions.html deleted file mode 100644 index f43b6ea..0000000 --- a/lfs-12.1-sysv/partintro/generalinstructions.html +++ /dev/null @@ -1,282 +0,0 @@ - - - - - - Общие инструкции по компиляции - - - - - - - - -

    - 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 deleted file mode 100644 index e1deaae..0000000 --- a/lfs-12.1-sysv/partintro/introduction.html +++ /dev/null @@ -1,112 +0,0 @@ - - - - - - Введение - - - - - - - - -

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

    -
    -

    - Эта часть разделена на три этапа: во-первых, сборка кросс-компилятора - и связанных с ним библиотек; во-вторых, использование этого набора - инструментов для сборки нескольких утилит таким образом, чтобы - изолировать их от основного дистрибутива; в-третьих, вход в среду - chroot (что ещё больше улучшает изоляцию от хоста), и сборка - оставшихся инструментов, необходимых для создания конечной системы. -

    -
    - [Важно] -

    - Важно -

    -

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

    -
    -

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

    -
    - - - diff --git a/lfs-12.1-sysv/partintro/partintro.html b/lfs-12.1-sysv/partintro/partintro.html deleted file mode 100644 index 8fb2f39..0000000 --- a/lfs-12.1-sysv/partintro/partintro.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - - - Важный предварительный материал - - - - - - - - -

    - Важный - предварительный материал -

    -
    - -
    - - - diff --git a/lfs-12.1-sysv/partintro/toolchaintechnotes.html b/lfs-12.1-sysv/partintro/toolchaintechnotes.html deleted file mode 100644 index f969bb1..0000000 --- a/lfs-12.1-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.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 deleted file mode 100644 index 8951731..0000000 --- a/lfs-12.1-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://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 deleted file mode 100644 index ace05ce..0000000 --- a/lfs-12.1-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.1-sysv/prologue/errata.html b/lfs-12.1-sysv/prologue/errata.html deleted file mode 100644 index fbce3d3..0000000 --- a/lfs-12.1-sysv/prologue/errata.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - - - Ошибки и рекомендации по безопасности - - - - - - - - -

    - 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 deleted file mode 100644 index 19b629c..0000000 --- a/lfs-12.1-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.1-sysv/prologue/organization.html b/lfs-12.1-sysv/prologue/organization.html deleted file mode 100644 index 551d130..0000000 --- a/lfs-12.1-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.1-sysv/prologue/package-choices.html b/lfs-12.1-sysv/prologue/package-choices.html deleted file mode 100644 index 11be888..0000000 --- a/lfs-12.1-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.1-sysv/prologue/preface.html b/lfs-12.1-sysv/prologue/preface.html deleted file mode 100644 index dfc81bd..0000000 --- a/lfs-12.1-sysv/prologue/preface.html +++ /dev/null @@ -1,93 +0,0 @@ - - - - - - Предисловие - - - - - - - - -

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

    -
    - -
    - - - diff --git a/lfs-12.1-sysv/prologue/prerequisites.html b/lfs-12.1-sysv/prologue/prerequisites.html deleted file mode 100644 index bfd8c2a..0000000 --- a/lfs-12.1-sysv/prologue/prerequisites.html +++ /dev/null @@ -1,131 +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.1-sysv/prologue/standards.html b/lfs-12.1-sysv/prologue/standards.html deleted file mode 100644 index 417c24a..0000000 --- a/lfs-12.1-sysv/prologue/standards.html +++ /dev/null @@ -1,377 +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.1-sysv/prologue/typography.html b/lfs-12.1-sysv/prologue/typography.html deleted file mode 100644 index 6521f62..0000000 --- a/lfs-12.1-sysv/prologue/typography.html +++ /dev/null @@ -1,197 +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 <имя - программы>. В книге LFS ссылки на - справочные страницы также являются гиперссылками, поэтому нажатие на - такую ссылку откроет справочную страницу, в формате HTML, со - страниц - руководства Arch Linux. -

    -
    - - - diff --git a/lfs-12.1-sysv/scripts/apds01.html b/lfs-12.1-sysv/scripts/apds01.html deleted file mode 100644 index 92aab74..0000000 --- a/lfs-12.1-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.1-sysv/scripts/apds02.html b/lfs-12.1-sysv/scripts/apds02.html deleted file mode 100644 index 86207d0..0000000 --- a/lfs-12.1-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.1-sysv/scripts/apds03.html b/lfs-12.1-sysv/scripts/apds03.html deleted file mode 100644 index 48dbdb5..0000000 --- a/lfs-12.1-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.1-sysv/scripts/apds04.html b/lfs-12.1-sysv/scripts/apds04.html deleted file mode 100644 index 75fc3f8..0000000 --- a/lfs-12.1-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.1-sysv/scripts/apds05.html b/lfs-12.1-sysv/scripts/apds05.html deleted file mode 100644 index 9677241..0000000 --- a/lfs-12.1-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 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 deleted file mode 100644 index 54dd869..0000000 --- a/lfs-12.1-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.1-sysv/scripts/apds07.html b/lfs-12.1-sysv/scripts/apds07.html deleted file mode 100644 index 510512d..0000000 --- a/lfs-12.1-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.1-sysv/scripts/apds08.html b/lfs-12.1-sysv/scripts/apds08.html deleted file mode 100644 index 7309ce0..0000000 --- a/lfs-12.1-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 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 deleted file mode 100644 index 0fc86d7..0000000 --- a/lfs-12.1-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.1-sysv/scripts/apds10.html b/lfs-12.1-sysv/scripts/apds10.html deleted file mode 100644 index 5cb58ee..0000000 --- a/lfs-12.1-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.1-sysv/scripts/apds11.html b/lfs-12.1-sysv/scripts/apds11.html deleted file mode 100644 index dee7e30..0000000 --- a/lfs-12.1-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.1-sysv/scripts/apds12.html b/lfs-12.1-sysv/scripts/apds12.html deleted file mode 100644 index 94dfed8..0000000 --- a/lfs-12.1-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.1-sysv/scripts/apds13.html b/lfs-12.1-sysv/scripts/apds13.html deleted file mode 100644 index 447c2cc..0000000 --- a/lfs-12.1-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.1-sysv/scripts/apds14.html b/lfs-12.1-sysv/scripts/apds14.html deleted file mode 100644 index 0dcac46..0000000 --- a/lfs-12.1-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.1-sysv/scripts/apds15.html b/lfs-12.1-sysv/scripts/apds15.html deleted file mode 100644 index ec7187b..0000000 --- a/lfs-12.1-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.1-sysv/scripts/apds16.html b/lfs-12.1-sysv/scripts/apds16.html deleted file mode 100644 index af71ade..0000000 --- a/lfs-12.1-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.1-sysv/scripts/apds17.html b/lfs-12.1-sysv/scripts/apds17.html deleted file mode 100644 index df76262..0000000 --- a/lfs-12.1-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.1-sysv/scripts/apds18.html b/lfs-12.1-sysv/scripts/apds18.html deleted file mode 100644 index 49d2f96..0000000 --- a/lfs-12.1-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.1-sysv/scripts/apds19.html b/lfs-12.1-sysv/scripts/apds19.html deleted file mode 100644 index c18f637..0000000 --- a/lfs-12.1-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.1-sysv/scripts/apds20.html b/lfs-12.1-sysv/scripts/apds20.html deleted file mode 100644 index ff92ee7..0000000 --- a/lfs-12.1-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.1-sysv/scripts/apds21.html b/lfs-12.1-sysv/scripts/apds21.html deleted file mode 100644 index f9383f8..0000000 --- a/lfs-12.1-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.1-sysv/scripts/apds22.html b/lfs-12.1-sysv/scripts/apds22.html deleted file mode 100644 index 1a365a5..0000000 --- a/lfs-12.1-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.1-sysv/scripts/apds23.html b/lfs-12.1-sysv/scripts/apds23.html deleted file mode 100644 index 34b630e..0000000 --- a/lfs-12.1-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.1-sysv/scripts/apds24.html b/lfs-12.1-sysv/scripts/apds24.html deleted file mode 100644 index 5190249..0000000 --- a/lfs-12.1-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.1-sysv/scripts/apds25.html b/lfs-12.1-sysv/scripts/apds25.html deleted file mode 100644 index f70eb99..0000000 --- a/lfs-12.1-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.1-sysv/scripts/apds26.html b/lfs-12.1-sysv/scripts/apds26.html deleted file mode 100644 index b9c3093..0000000 --- a/lfs-12.1-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.1-sysv/scripts/apds27.html b/lfs-12.1-sysv/scripts/apds27.html deleted file mode 100644 index b4ff88b..0000000 --- a/lfs-12.1-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.1-sysv/scripts/apes01.html b/lfs-12.1-sysv/scripts/apes01.html deleted file mode 100644 index a442e53..0000000 --- a/lfs-12.1-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.1-sysv/scripts/scripts.html b/lfs-12.1-sysv/scripts/scripts.html deleted file mode 100644 index 9292b5e..0000000 --- a/lfs-12.1-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.1-sysv/scripts/udev-rules.html b/lfs-12.1-sysv/scripts/udev-rules.html deleted file mode 100644 index 3b8f65b..0000000 --- a/lfs-12.1-sysv/scripts/udev-rules.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - Приложение 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 deleted file mode 100644 index 75f05d4..0000000 --- a/lfs-12.1-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.1-sysv/stylesheets/lfs.css b/lfs-12.1-sysv/stylesheets/lfs.css deleted file mode 100644 index 24bd150..0000000 --- a/lfs-12.1-sysv/stylesheets/lfs.css +++ /dev/null @@ -1,663 +0,0 @@ -/* 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 deleted file mode 100644 index f9e4b20..0000000 --- a/lfs-12.1-sysv/wget-list +++ /dev/null @@ -1,95 +0,0 @@ -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 deleted file mode 100644 index 5908072..0000000 --- a/lfs-12.1-sysv/wget-list-sysv +++ /dev/null @@ -1,93 +0,0 @@ -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 diff --git a/lfs-12.2-sysv/LFS-BOOK.html b/lfs-12.2-sysv/LFS-BOOK.html new file mode 100644 index 0000000..7d826b4 --- /dev/null +++ b/lfs-12.2-sysv/LFS-BOOK.html @@ -0,0 +1,59512 @@ + + + + + + Линукс с нуля + + + + + +
    +
    +
    +
    +

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

    +
    +
    +

    + Версия 12.2 +

    +
    +
    +

    + Дата публикации 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.2-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 +

      +

      + Этот пакет содержит основные справочные(man) страницы + 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.2/, + прежде чем приступить к сборке. Вы должны внести требуемые + изменения и применить их к соответствующему разделу книги по мере + сборки системы 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. + Что нового с момента последнего релиза +

    +
    +
    +
    +
    +

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

    +
    +

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

    +
      +
    • +

      + Automake-1.17 +

      +
    • +
    • +

      + Bash-5.2.32 +

      +
    • +
    • +

      + Bc-6.7.6 +

      +
    • +
    • +

      + Binutils-2.43.1 +

      +
    • +
    • +

      + Coreutils-9.5 +

      +
    • +
    • +

      + E2fsprogs-1.47.1 +

      +
    • +
    • +

      + Expat-2.6.2 +

      +
    • +
    • +

      + Findutils-4.10.0 +

      +
    • +
    • +

      + GCC-14.2.0 +

      +
    • +
    • +

      + GDBM-1.24 +

      +
    • +
    • +

      + Gettext-0.22.5 +

      +
    • +
    • +

      + Glibc-2.40 +

      +
    • +
    • +

      + Iana-Etc-20240806 +

      +
    • +
    • +

      + IPRoute2-6.10.0 +

      +
    • +
    • +

      + Jinja2-3.1.4 +

      +
    • +
    • +

      + Kmod-33 +

      +
    • +
    • +

      + Less-661 +

      +
    • +
    • +

      + Libcap-2.70 +

      +
    • +
    • +

      + Libelf из Elfutils-0.191 +

      +
    • +
    • +

      + Libffi-3.4.6 +

      +
    • +
    • +

      + Linux-6.10.5 +

      +
    • +
    • +

      + Lz4-1.10.0 +

      +
    • +
    • +

      + Man-DB-2.12.1 +

      +
    • +
    • +

      + Man-pages-6.9.1 +

      +
    • +
    • +

      + Meson-1.5.1 +

      +
    • +
    • +

      + Ncurses-6.5 +

      +
    • +
    • +

      + Ninja-1.12.1 +

      +
    • +
    • +

      + OpenSSL-3.3.1 +

      +
    • +
    • +

      + Perl-5.40.0 +

      +
    • +
    • +

      + Pkgconf-2.3.0 +

      +
    • +
    • +

      + Psmisc-23.7 +

      +
    • +
    • +

      + Python-3.12.5 +

      +
    • +
    • +

      + Readline-8.2.13 +

      +
    • +
    • +

      + Setuptools-72.2.0 +

      +
    • +
    • +

      + Shadow-4.16.0 +

      +
    • +
    • +

      + Sysklogd-2.6.1 +

      +
    • +
    • +

      + Systemd-256.4 +

      +
    • +
    • +

      + SysVinit-3.10 +

      +
    • +
    • +

      + Tcl-8.6.14 +

      +
    • +
    • +

      + Udev из Systemd-256.4 +

      +
    • +
    • +

      + Util-linux-2.40.2 +

      +
    • +
    • +

      + Vim-9.1.0660 +

      +
    • +
    • +

      + Wheel-0.44.0 +

      +
    • +
    • +

      + Xz-5.6.2 +

      +
    • +
    • +

      + Zstd-1.5.6 +

      +
    • +
    +
    +
    +

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

    +
      +
    • +

      + Lz4-1.10.0 +

      +
    • +
    +
    +
    +

    + Удалены: +

    +
      +
    • +

      + bash-5.2.21-upstream_fixes-1.patch +

      +
    • +
    • +

      + readline-8.2-upstream_fixes-3.patch +

      +
    • +
    +
    +
    +
    +
    +
    +

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

    +
    +
    +
    +
    +

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

    +

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

    +
    +

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

    +
      +
    • +

      + 2024-08-23 +

      +
      +
        +
      • +

        + [xry111] - Update to lfs-bootscripts-20240825. Only + trivial non-functional changes. +

        +
      • +
      +
      +
    • +
    • +

      + 2024-08-23 +

      +
      +
        +
      • +

        + [xry111] - Update to lfs-bootscripts-20240823, to + fix an issue causing VT 2-6 not affected by the + FONT= setting in /etc/sysconfig/console. +

        +
      • +
      +
      +
    • +
    • +

      + 2024-08-17 +

      +
      +
        +
      • +

        + [bdubbs] - Update to setuptools-72.2.0. Fixes + + #5542. +

        +
      • +
      • +

        + [bdubbs] - Update to kmod-33. Fixes + #5540. +

        +
      • +
      • +

        + [bdubbs] - Update to binutils-2.43.1. Fixes + + #5543. +

        +
      • +
      • +

        + [bdubbs] - Update to linux-6.10.5. Fixes + #5541. +

        +
      • +
      +
      +
    • +
    • +

      + 2024-08-15 +

      +
      +
        +
      • +

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

        +
      • +
      • +

        + [bdubbs] - Update to pkgconf-2.3.0. Fixes + #5537. +

        +
      • +
      • +

        + [bdubbs] - Update to python3-3.12.5. Fixes + + #5538. +

        +
      • +
      • +

        + [bdubbs] - Update to linux-6.10.4. Fixes + #5539. +

        +
      • +
      +
      +
    • +
    • +

      + 2024-08-05 +

      +
      +
        +
      • +

        + [bdubbs] - Update to bash-5.2.32. Fixes + #5532. +

        +
      • +
      • +

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

        +
      • +
      • +

        + [bdubbs] - Update to vim-9.1.0660. Addresses + + #4500. +

        +
      • +
      • +

        + [bdubbs] - Update to binutils-2.43. Fixes + #5535. +

        +
      • +
      • +

        + [bdubbs] - Update to linux-6.10.3. Fixes + #5534. +

        +
      • +
      • +

        + [bdubbs] - Update to readline-8.2.13. Fixes + + #5533. +

        +
      • +
      • +

        + [bdubbs] - Update to wheel-0.44.0. Fixes + #5536. +

        +
      • +
      +
      +
    • +
    • +

      + 2024-08-01 +

      +
      +
        +
      • +

        + [bdubbs] - Update to gcc-14.2.0. Fixes + #5530. +

        +
      • +
      • +

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

        +
      • +
      • +

        + [bdubbs] - Update to glibc-2.40. Fixes + #5529. +

        +
      • +
      • +

        + [bdubbs] - Update to iproute2-6.10.0. Fixes + + #5523. +

        +
      • +
      • +

        + [bdubbs] - Update to linux-6.10.2. Fixes + #5521. +

        +
      • +
      • +

        + [bdubbs] - Update to lz4-1.10.0. Fixes + #5526. +

        +
      • +
      • +

        + [bdubbs] - Update to meson-1.5.1. Fixes + #5527. +

        +
      • +
      • +

        + [bdubbs] - Update to setuptools-72.1.0. Fixes + + #5531. +

        +
      • +
      • +

        + [bdubbs] - Update to sysklogd-2.6.1. Fixes + + #5522. +

        +
      • +
      • +

        + [bdubbs] - Update to sysvinit-3.10. Fixes + #5528. +

        +
      • +
      +
      +
    • +
    • +

      + 2024-07-15 +

      +
      +
        +
      • +

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

        +
      • +
      • +

        + [bdubbs] - Update to vim-9.1.0580. Addresses + + #4500. +

        +
      • +
      • +

        + [bdubbs] - Update to automake-1.17. Fixes + #5520. +

        +
      • +
      • +

        + [bdubbs] - Update to gdbm-1.24. Fixes + #5515. +

        +
      • +
      • +

        + [bdubbs] - Update to linux-6.9.9. Fixes + #5517. +

        +
      • +
      • +

        + [bdubbs] - Update to less-661. Fixes + #5513. +

        +
      • +
      • +

        + [bdubbs] - Update to meson-1.5.0. Fixes + #5519. +

        +
      • +
      • +

        + [bdubbs] - Update to setuptools-70.3.0. Fixes + + #5514. +

        +
      • +
      • +

        + [bdubbs] - Update to util-linux-2.40.2. Fixes + + #5516. +

        +
      • +
      +
      +
    • +
    • +

      + 2024-07-01 +

      +
      +
        +
      • +

        + [bdubbs] - Update lfs-bootscripts to only output + escape sequences to a terminal. +

        +
      • +
      +
      +
    • +
    • +

      + 2024-07-01 +

      +
      +
        +
      • +

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

        +
      • +
      • +

        + [bdubbs] - Update to bc-6.7.6. Fixes + #5506. +

        +
      • +
      • +

        + [bdubbs] - Update to man-pages-6.9.1. Fixes + + #5507. +

        +
      • +
      • +

        + [bdubbs] - Update to linux-6.9.7. Fixes + #5508. +

        +
      • +
      • +

        + [bdubbs] - Update to sysklogd-2.5.2. Fixes + + #5509. +

        +
      • +
      • +

        + [bdubbs] - Update to shadow-4.16.0. Fixes + #5510. +

        +
      • +
      • +

        + [bdubbs] - Update to setuptools-70.1.1. Fixes + + #5512. +

        +
      • +
      +
      +
    • +
    • +

      + 2024-06-15 +

      +
      +
        +
      • +

        + [bdubbs] - Update to vim-9.1.0478. Addresses + + #4500. +

        +
      • +
      • +

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

        +
      • +
      • +

        + [bdubbs] - Update to python3-3.12.4. Fixes + + #5502. +

        +
      • +
      • +

        + [bdubbs] - Update to perl-5.40.0. Fixes + #5503. +

        +
      • +
      • +

        + [bdubbs] - Update to openssl-3.3.1 (Security fix). + Fixes + #5500. +

        +
      • +
      • +

        + [bdubbs] - Update to linux-6.9.4. Fixes + #5505. +

        +
      • +
      • +

        + [bdubbs] - Update to findutils-4.10.0. Fixes + + #5499. +

        +
      • +
      +
      +
    • +
    • +

      + 2024-05-31 +

      +
      +
        +
      • +

        + [bdubbs] - Update to meson-1.4.1. Fixes + #5498. +

        +
      • +
      • +

        + [bdubbs] - Update to xz-5.6.2. Fixes + #5471. +

        +
      • +
      • +

        + [bdubbs] - Add linux-6.9.x compatibility + instructions to udev. + Fixes + #5496. +

        +
      • +
      • +

        + [bdubbs] - Update to setuptools-70.0.0 (python + module). Fixes + #5491. +

        +
      • +
      • +

        + [bdubbs] - Update to ninja-1.12.1. Fixes + #5489. +

        +
      • +
      • +

        + [bdubbs] - Update to man-pages-6.8. Fixes + #5494. +

        +
      • +
      • +

        + [bdubbs] - Update to linux-6.9.3. Fixes + #5491. +

        +
      • +
      • +

        + [bdubbs] - Update to libcap-2.70. Fixes + #5493. +

        +
      • +
      • +

        + [bdubbs] - Update to iproute2-6.9.0. Fixes + + #5492. +

        +
      • +
      • +

        + [bdubbs] - Update to e2fsprogs-1.47.1. Fixes + + #5495. +

        +
      • +
      +
      +
    • +
    • +

      + 2024-05-13 +

      +
      +
        +
      • +

        + [xry111] - Synchronize coreutils i18n patch from + Fedora to fix a build failure on 32-bit x86 and an + alarming compiler warning on both 32-bit x86 and + x86_64 with GCC 14.1 or later. +

        +
      • +
      +
      +
    • +
    • +

      + 2024-05-11 +

      +
      +
        +
      • +

        + [bdubbs] - Update to vim-9.1.0405. Addresses + + #4500. +

        +
      • +
      • +

        + [bdubbs] - Update to util-linux-2.40.1. Fixes + + #5482. +

        +
      • +
      • +

        + [bdubbs] - Update to linux-6.8.9. Fixes + #5484. +

        +
      • +
      • +

        + [bdubbs] - Update to jinja2-3.1.4 (Python module). + Fixes + #5485. +

        +
      • +
      • +

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

        +
      • +
      • +

        + [bdubbs] - Update to gcc-14.1.0. Fixes + #5486. +

        +
      • +
      +
      +
    • +
    • +

      + 2024-05-01 +

      +
      +
        +
      • +

        + [bdubbs] - Add security fix to glibc. Fixes + + #5481. +

        +
      • +
      • +

        + [bdubbs] - Update to linux-6.8.8. Fixes + #5480. +

        +
      • +
      • +

        + [bdubbs] - Update to ncurses-6.5. Fixes + #5483. +

        +
      • +
      +
      +
    • +
    • +

      + 2024-04-16 +

      +
      +
        +
      • +

        + [bdubbs] - Make minor change to ifup script output + text. +

        +
      • +
      +
      +
    • +
    • +

      + 2024-04-15 +

      +
      +
        +
      • +

        + [bdubbs] - Update to setuptools-69.5.1. Fixes + + #5478. +

        +
      • +
      • +

        + [bdubbs] - Update to python3-3.12.3. Fixes + + #5476. +

        +
      • +
      • +

        + [bdubbs] - Update to openssl-3.3.0. Fixes + #5475. +

        +
      • +
      • +

        + [bdubbs] - Update to ninja-1.12.0. Fixes + #5477. +

        +
      • +
      • +

        + [bdubbs] - Update to man-db-2.12.1. Fixes + #5474. +

        +
      • +
      • +

        + [bdubbs] - Update to linux-6.8.6. Fixes + #5472. +

        +
      • +
      • +

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

        +
      • +
      • +

        + [bdubbs] - Update to vim-9.1.0330. Addresses + + #4500. +

        +
      • +
      +
      +
    • +
    • +

      + 2024-03-31 +

      +
      +
        +
      • +

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

        +
      • +
      • +

        + [bdubbs] - Update to zstd-1.5.6. Fixes + #5468. +

        +
      • +
      • +

        + [bdubbs] - Update to util-linux-2.40. Fixes + + #5430. +

        +
      • +
      • +

        + [bdubbs] - Update to shadow-4.15.1. Fixes + #5465. +

        +
      • +
      • +

        + [bdubbs] - Update to pkgconf-2.2.0. Fixes + #5469. +

        +
      • +
      • +

        + [bdubbs] - Update to linux-6.8.2. Fixes + #5467. +

        +
      • +
      • +

        + [bdubbs] - Update to coreutils-9.5. Fixes + #5470. +

        +
      • +
      +
      +
    • +
    • +

      + 2024-03-29 +

      +
      +
        +
      • +

        + [bdubbs] - Revert to xz-5.4.6 due to upstream + compromise. +

        +
      • +
      +
      +
    • +
    • +

      + 2024-03-25 +

      +
      +
        +
      • +

        + [timtas] - Update to sysvinit-3.09. Fixes + #5466. +

        +
      • +
      +
      +
    • +
    • +

      + 2024-03-19 +

      +
      +
        +
      • +

        + [renodr] - Update to iproute2-6.8.0. Fixes + + #5458. +

        +
      • +
      • +

        + [renodr] - Update to man-pages-6.7. Fixes + #5464. +

        +
      • +
      • +

        + [renodr] - Update to Linux-6.8.1. Fixes + #5453. +

        +
      • +
      • +

        + [renodr] - Added LZ4 to the book. Fixes + #5463. +

        +
      • +
      +
      +
    • +
    • +

      + 2024-03-15 +

      +
      +
        +
      • +

        + [bdubbs] - Update to wheel-0.43.0. Fixes + #5459. +

        +
      • +
      • +

        + [bdubbs] - Update to setuptools-69.2.0 (Python + module). Fixes + #5462. +

        +
      • +
      • +

        + [bdubbs] - Update to meson-1.4.0. Fixes + #5460. +

        +
      • +
      • +

        + [bdubbs] - Update to expat-2.6.2 (Security fix). + Fixes + #5461. +

        +
      • +
      • +

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

        +
      • +
      • +

        + [bdubbs] - Update to vim-9.1.0161. Addresses + + #4500. +

        +
      • +
      • +

        + [bdubbs] - Update to xz-5.6.1. Fixes + #5457. +

        +
      • +
      • +

        + [bdubbs] - Update to shadow-4.15.0. Fixes + #5456. +

        +
      • +
      • +

        + [bdubbs] - Update to psmisc-23.7. Fixes + #5454. +

        +
      • +
      • +

        + [bdubbs] - Update to kmod-32. Fixes + #5455. +

        +
      • +
      • +

        + [bdubbs] - Update to elfutils-0.191. Fixes + + #5451. +

        +
      • +
      +
      +
    • +
    • +

      + 2024-03-02 +

      +
      +
        +
      • +

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

        +
      • +
      • +

        + [bdubbs] - Update to vim-9.1.0145. Addresses + + #4500. +

        +
      • +
      • +

        + [bdubbs] - Update to xz-5.6.0. Fixes + #5447. +

        +
      • +
      • +

        + [bdubbs] - Update to tcl-8.6.14. Fixes + #5448. +

        +
      • +
      • +

        + [bdubbs] - Update to shadow-4.14.6. Fixes + #5450. +

        +
      • +
      • +

        + [bdubbs] - Update to setuptools-69.1.1. Fixes + + #5446. +

        +
      • +
      • +

        + [bdubbs] - Update to linux-6.7.7. Fixes + #5444. +

        +
      • +
      • +

        + [bdubbs] - Update to libffi-3.4.6. Fixes + #5443. +

        +
      • +
      • +

        + [bdubbs] - Update to gettext-0.22.5. Fixes + + #5445. +

        +
      • +
      • +

        + [bdubbs] - Update to expat-2.6.1. Fixes + #5449. +

        +
      • +
      +
      +
    • +
    • +

      + 2024-03-01 +

      +
      +
        +
      • +

        + [bdubbs] - LFS-12.1 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.2) +

      +
    • +
    • +

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

      +
    • +
    • +

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

      +
    • +
    • +

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

      +
    • +
    • +

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

      +
    • +
    • +

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

      +
    • +
    +
    +
    +

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

    +

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

    +
    +
    +
    +

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

    +

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

    +
    +
    +

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

    +

    + Как вывод на экран, так и содержимое различных файлов полезны + для определения причины проблем компиляции. Вывод экрана из + скрипта configure и запуска + make может быть + полезен. Необязательно включать весь вывод целиком, но + обязательно включите всю необходимую информацию. Ниже + приведен пример информации, которая должна быть включена в + экранный вывод make: +

    +
    gcc -D ALIASPATH=\"/mnt/lfs/usr/share/locale:.\"
    +-D LOCALEDIR=\"/mnt/lfs/usr/share/locale\"
    +-D LIBDIR=\"/mnt/lfs/usr/lib\"
    +-D INCLUDEDIR=\"/mnt/lfs/usr/include\" -D HAVE_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.43.1 не рекомендуется, так как она не + тестировалась) +

      +
    • +
    • +

      + 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++ (версии выше + 14.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, 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
    +

    + Сделайте этот каталог доступным для записи и установите sticky + bit (дословно "липкий бит"). Атрибут «Sticky bit» + означает, что даже если несколько пользователей имеют право на + запись в каталог, только владелец файла может удалить файл в + таком каталоге. Следующая команда активирует режимы записи и + sticky bit: +

    +
    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.17) - 1,614 KB: +
    +
    +

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

    +

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

    +

    + Контрольная сумма MD5: 7ab3a02318fee6f5bd42adfc369abf10 +

    +
    +
    + Bash (5.2.32) - 10,697 KB: +
    +
    +

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

    +

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

    +

    + Контрольная сумма MD5: f204835b2e06c06e37b5ad776ff907f4 +

    +
    +
    + Bc (6.7.6) - 463 + KB: +
    +
    +

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

    +

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

    +

    + Контрольная сумма MD5: a47aa5e4e7395fbcd159a9228613b97b +

    +
    +
    + Binutils (2.43.1) - 27,514 KB: +
    +
    +

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

    +

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

    +

    + Контрольная сумма MD5: 9202d02925c30969d1917e4bad5a2320 +

    +
    +
    + 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.5) - 5,867 KB: +
    +
    +

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

    +

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

    +

    + Контрольная сумма MD5: e99adfa059a63db3503cc71f3d151e31 +

    +
    +
    + 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.1) - 9,720 KB: +
    +
    +

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

    +

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

    +

    + Контрольная сумма MD5: 75e6d1353cbe6d5728a98fb0267206cb +

    +
    +
    + Elfutils (0.191) - 9,092 KB: +
    +
    +

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

    +

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

    +

    + Контрольная сумма MD5: 636547248fb3fae58ec48030298d3ef7 +

    +
    +
    + Expat (2.6.2) - 474 KB: +
    +
    +

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

    +

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

    +

    + Контрольная сумма MD5: 0cb75c8feb842c0794ba89666b762a2d +

    +
    +
    + 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.10.0) - 2,189 KB: +
    +
    +

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

    +

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

    +

    + Контрольная сумма MD5: 870cfd71c07d37ebe56f9f4aaf4ad872 +

    +
    +
    + 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 (14.2.0) - 90,144 KB: +
    +
    +

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

    +

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

    +

    + Контрольная сумма MD5: 2268420ba02dc01821960e274711bde0 +

    +
    +
    + GDBM (1.24) - 1,168 KB: +
    +
    +

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

    +

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

    +

    + Контрольная сумма MD5: c780815649e52317be48331c1773e987 +

    +
    +
    + Gettext (0.22.5) - 10,031 KB: +
    +
    +

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

    +

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

    +

    + Контрольная сумма MD5: 3ae5580599d84be93e6213930facb2db +

    +
    +
    + Glibc (2.40) - 18,313 KB: +
    +
    +

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

    +

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

    +

    + Контрольная сумма MD5: b390feef233022114950317f10c4fa97 +

    +
    +

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

    +

    + Разработчики Glibc поддерживают + Git ветку содержащую исправления, которые + заслуживают внимания для Glibc-2.40 но, к сожалению, + выпущенные после релиза Glibc-2.40. Редакторы 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 (20240806) - 590 KB: +
    +
    +

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

    +

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

    +

    + Контрольная сумма MD5: ea3c37c00d22f1159fc3b7d988de8476 +

    +
    +
    + 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.10.0) - 900 KB: +
    +
    +

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

    +

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

    +

    + Контрольная сумма MD5: 6282e47de9c5b230e83537fba7181c9c +

    +
    +
    + Jinja2 (3.1.4) - 235 KB: +
    +
    +

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

    +

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

    +

    + Контрольная сумма MD5: 02ca9a6364c92e83d14b037bef4732bc +

    +
    +
    + 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 (33) - 503 + KB: +
    +
    +

    + Домашняя страница: https://github.com/kmod-project/kmod +

    +

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

    +

    + Контрольная сумма MD5: c451c4aa61521adbe8af147f498046f8 +

    +
    +
    + Less (661) - 634 + KB: +
    +
    +

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

    +

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

    +

    + Контрольная сумма MD5: 44f54b6313c5d71fa1ac224d8d84766a +

    +
    +
    + LFS-Bootscripts (20240825) - + 34 KB: +
    +
    +

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

    +

    + Контрольная сумма MD5: e121b5920071ae9a1351f3f44f8b1e77 +

    +
    +
    + Libcap (2.70) - 187 KB: +
    +
    +

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

    +

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

    +

    + Контрольная сумма MD5: df0e20c6eeca849347b87d5d6a8870c0 +

    +
    +
    + Libffi (3.4.6) - 1,360 KB: +
    +
    +

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

    +

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

    +

    + Контрольная сумма MD5: b9cac6c5997dca2b3787a59ede34e0eb +

    +
    +
    + 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.10.5) - 141,739 KB: +
    +
    +

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

    +

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

    +

    + Контрольная сумма MD5: 276ef1f11ed3713ec5d6f506ff55ac12 +

    +
    +

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

    +

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

    +

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

    +
    +
    +
    + Lz4 (1.10.0) - 379 + KB: +
    +
    +

    + Домашняя страница: https://lz4.org/ +

    +

    + Ссылка на загрузку: + https://github.com/lz4/lz4/releases/download/v1.10.0/lz4-1.10.0.tar.gz +

    +

    + Контрольная сумма MD5: dead9f5f1966d9ae56e1e32761e4e675 +

    +
    +
    + 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.1) - 1,994 KB: +
    +
    +

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

    +

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

    +

    + Контрольная сумма MD5: 7b044e5020aab89db41ac7ee59d6d84a +

    +
    +
    + Man-pages (6.9.1) - 1,821 KB: +
    +
    +

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

    +

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

    +

    + Контрольная сумма MD5: 4d56775b6cce4edf1e496249e7c01c1a +

    +
    +
    + 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.5.1) - 2,205 KB: +
    +
    +

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

    +

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

    +

    + Контрольная сумма MD5: c4f2b3e5ea632685f61ba1b833c4905c +

    +
    +
    + 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.5) - 2,156 KB: +
    +
    +

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

    +

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

    +

    + Контрольная сумма MD5: ac2d2629296f04c8537ca706b6977687 +

    +
    +
    + Ninja (1.12.1) - 235 KB: +
    +
    +

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

    +

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

    +

    + Контрольная сумма MD5: 6288992b05e593a391599692e2f7e490 +

    +
    +
    + OpenSSL (3.3.1) - 17,633 KB: +
    +
    +

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

    +

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

    +

    + Контрольная сумма MD5: 8a4342b399c18f870ca6186299195984 +

    +
    +
    + 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.40.0) - 13,481 KB: +
    +
    +

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

    +

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

    +

    + Контрольная сумма MD5: cfe14ef0709b9687f9c514042e8e1e82 +

    +
    +
    + Pkgconf (2.3.0) - 309 KB: +
    +
    +

    + Домашняя страница: https://github.com/pkgconf/pkgconf +

    +

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

    +

    + Контрольная сумма MD5: 833363e77b5bed0131c7bc4cc6f7747b +

    +
    +
    + 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.7) - 423 KB: +
    +
    +

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

    +

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

    +

    + Контрольная сумма MD5: 53eae841735189a896d614cba440eb10 +

    +
    +
    + Python (3.12.5) - 19,944 KB: +
    +
    +

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

    +

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

    +

    + Контрольная сумма MD5: 02c7d269e077f4034963bba6befdc715 +

    +
    +
    + Python Documentation (3.12.5) - + 8,188 KB: +
    +
    +

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

    +

    + Контрольная сумма MD5: 52274d813236ca4a972fb6988480dc56 +

    +
    +
    + Readline (8.2.13) - 2,974 KB: +
    +
    +

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

    +

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

    +

    + Контрольная сумма MD5: 05080bf3801e6874bb115cd6700b708f +

    +
    +
    + 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 (72.2.0) - 2,363 KB: +
    +
    +

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

    +

    + Ссылка на загрузку: + https://pypi.org/packages/source/s/setuptools/setuptools-72.2.0.tar.gz +

    +

    + Контрольная сумма MD5: 2e0ffd0f6fc632a11442b79d9b1c68bd +

    +
    +
    + Shadow (4.16.0) - 2,154 KB: +
    +
    +

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

    +

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

    +

    + Контрольная сумма MD5: eb70bad3316d08f0d3bb3d4bbeccb3b4 +

    +
    +
    + Sysklogd (2.6.1) - 452 KB: +
    +
    +

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

    +

    + Ссылка на загрузку: + https://github.com/troglobit/sysklogd/releases/download/v2.6.1/sysklogd-2.6.1.tar.gz +

    +

    + Контрольная сумма MD5: dcf0836a0fcc6568efaad230850d9c86 +

    +
    +
    + Systemd (256.4) - 15,291 KB: +
    +
    +

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

    +

    + Ссылка на загрузку: + https://github.com/systemd/systemd/archive/v256.4/systemd-256.4.tar.gz +

    +

    + Контрольная сумма MD5: 03bd1ff158ec0bc55428c77a8f8495bd +

    +
    +
    + Systemd Man Pages (256.4) - + 676 KB: +
    +
    +

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

    +

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

    +

    + Контрольная сумма MD5: 8dbcf0ff0d8e5e9d3565f9d2fc153310 +

    +
    +

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

    +

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

    +
    +
    +
    + SysVinit (3.10) - 235 KB: +
    +
    +

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

    +

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

    +

    + Контрольная сумма MD5: b8fbe11062cf16d3b6a3709b7f6978d2 +

    +
    +
    + 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.14) - 11,355 KB: +
    +
    +

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

    +

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

    +

    + Контрольная сумма MD5: c30b57c6051be28fa928d09aca82841e +

    +
    +
    + Tcl Documentation (8.6.14) - + 1,167 KB: +
    +
    +

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

    +

    + Контрольная сумма MD5: 5467198f8d57c54835bf80b98ffb0170 +

    +
    +
    + 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.40.2) - 8,648 KB: +
    +
    +

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

    +

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

    +

    + Контрольная сумма MD5: 88faefc8fefced097e58142077a3d14e +

    +
    +
    + Vim (9.1.0660) - 17,629 KB: +
    +
    +

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

    +

    + Ссылка на загрузку: + https://github.com/vim/vim/archive/v9.1.0660/vim-9.1.0660.tar.gz +

    +

    + Контрольная сумма MD5: c512a99b3704f193be1a181cc644b2b2 +

    +
    +

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

    +

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

    +
    +
    +
    + Wheel (0.44.0) - 99 KB: +
    +
    +

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

    +

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

    +

    + Контрольная сумма MD5: 440ff4fe51579b7ed16f02af8f8d9494 +

    +
    +
    + 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.6.2) - 1,277 KB: +
    +
    +

    + Домашняя страница: https://tukaani.org/xz +

    +

    + Ссылка на загрузку: + https://github.com//tukaani-project/xz/releases/download/v5.6.2/xz-5.6.2.tar.xz +

    +

    + Контрольная сумма MD5: bbf73fb28425cebb854328599f85c4cf +

    +
    +
    + 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.6) - 2,351 KB: +
    +
    +

    + Домашняя страница: https://facebook.github.io/zstd/ +

    +

    + Ссылка на загрузку: + https://github.com/facebook/zstd/releases/download/v1.5.6/zstd-1.5.6.tar.gz +

    +

    + Контрольная сумма MD5: 5a473726b3445d0e5d6296afd1ab6854 +

    +
    +
    +
    +
    +

    + Общий размер пакетов: примерно 517 MB +

    +
    +
    +
    +
    +

    + 3.3. Необходимые патчи +

    +
    +
    +
    +
    +

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

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

    + Ссылка на загрузку: + https://mirror.linuxfromscratch.ru/patches/lfs/12.2/bzip2-1.0.8-install_docs-1.patch +

    +

    + Контрольная сумма MD5: 6a5ac7e89b791aae556de0f745916f7f +

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

    + Ссылка на загрузку: + https://mirror.linuxfromscratch.ru/patches/lfs/12.2/coreutils-9.5-i18n-2.patch +

    +

    + Контрольная сумма MD5: 58961caf5bbdb02462591fa506c73b6d +

    +
    +
    + Expect GCC14 Patch - 7.8 KB: +
    +
    +

    + Download: + https://mirror.linuxfromscratch.ru/patches/lfs/12.2/expect-5.45.4-gcc14-1.patch +

    +

    + MD5 sum: 0b8b5ac411d011263ad40b0664c669f0 +

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

    + Ссылка на загрузку: + https://mirror.linuxfromscratch.ru/patches/lfs/12.2/glibc-2.40-fhs-1.patch +

    +

    + Контрольная сумма MD5: 9a5997c3452909b1769918c759eff8a2 +

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

    + Ссылка на загрузку: + https://mirror.linuxfromscratch.ru/patches/lfs/12.2/kbd-2.6.4-backspace-1.patch +

    +

    + Контрольная сумма MD5: f75cca16a38da6caa7d52151f7136895 +

    +
    +
    + SysVinit Consolidated Patch - + 2.5 KB: +
    +
    +

    + Ссылка на загрузку: + https://mirror.linuxfromscratch.ru/patches/lfs/12.2/sysvinit-3.10-consolidated-1.patch +

    +

    + Контрольная сумма MD5: 17ffccbb8e18c39e8cedc32046f3a475 +

    +
    +
    +
    +
    +

    + Общий размер этих патчей: примерно 190.7 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.36, «Bash-5.2.32», не + настроен на загрузку или выполнение /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. Это означает, что если вашей системе + потребовалось 4 минуты для компиляции и сборки первого прохода + binutils, то для сборки этого пакета потребуется примерно 18 минут. К счастью, в + большинстве случаев, время сборки меньше, чем у binutils. +

    +

    + В целом, величина SBU не совсем точна, поскольку она зависит от + множества факторов, начиная от версии GCC хост-системы. Она + приведены здесь, чтобы дать оценку того, сколько времени может + потребоваться для сборки пакета, но в некоторых случаях цифры + могут отличаться на десятки минут. +

    +

    + В современных материнских платах есть возможность управлять + тактовой частотой процессора. Это можно сделать с помощью + команды, такой как, powerprofilesctl. Данная + возможность отсутствует в LFS, но может быть доступна в + хост-дистрибутиве. После сборки LFS управление + производительностью и электропитанием можно добавить в систему + с помощью инструкций, описанных на странице + BLFS power-profiles-daemon. +

    +

    + Перед измерением времени сборки любого пакета рекомендуется + задействовать профиль энергопотребления системы, настроенный на + максимальную производительность (и максимальное + энергопотребление). +

    +

    + В противном случае измеренное значение SBU может быть неточным, + поскольку система может по-разному реагировать на сборку + binutils-pass1 или других + пакетов. +

    +

    + Имейте в виду, что даже если для обоих пакетов используется + один и тот же профиль, все равно могут возникнуть существенные + неточности, поскольку система может реагировать медленнее, если + система простаивает при запуске процедуры сборки. Установка для + профиля питания режима «производительность» сведет к минимуму эту + проблему. И, очевидно, это также ускорит сборку LFS. +

    +

    + Если powerprofilesctl доступен, + введите команду powerprofilesctl + set performance, чтобы выбрать профиль + производительность. Некоторые + дистрибутивы для управления профилями предоставляют команду + tuned-adm вместо + powerprofilesctl, + в этих дистрибутивах введите команду tuned-adm profile + throughput-performance, чтобы выбрать профиль + производительность. +

    +
    +

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

    +

    + Когда используется несколько ядер, единицы измерения SBU + будут различаться еще больше, чем обычно. В некоторых случаях + make просто завершится ошибкой. Анализ выходных данных + процесса сборки также будет более сложным, поскольку строки + разных потоков будут чередоваться. Если вы столкнулись с + проблемой на этапе сборки, вернитесь к сборке на одном ядре, + чтобы проанализировать сообщения об ошибках. +

    +

    + Представленные здесь значения времени для всех пакетов (за + исключением binutils-pass1, + который собирается на одном ядре) рассчитаны при + использовании четырех ядер (-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.2/, + чтобы проверить, ожидаются ли сбои. Этот сайт актуален для всех + наборов тестов, описанных в книге. +

    +
    +
    +
    +
    +
    +
    +

    + Часть 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 и зафиксировать результат. + Официальный источник, охватывающий все платформы, находится + на вики-странице + 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.40; хост-дистрибутив может использовать либо + другую реализацию 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 всегда использует параметры, передаваемые скрипту + configure, которые указаны в --host, например, в нашем + случае компилятором будет $LFS_TGT-gcc, а + инструментом readelf будет $LFS_TGT-readelf. С + заголовочными файлами ядра может быть немного сложнее. + Поэтому мы не рискуем и используем доступный параметр + configure, чтобы обеспечить правильный выбор. После + выполнения команды configure проверьте + содержимое файла config.make в + каталоге build на наличие всех + нужных параметров. Эти элементы подчеркивают важный аспект + пакета 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.43.1 - Проход + 1 +

    +
    +
    +
    +
    +
    +

    + Пакет Binutils содержит компоновщик, ассемблер и другие + инструменты для работы с объектными файлами. +

    +
    +
    +
    + Приблизительное время + сборки: 1 SBU +
    +
    + Требуемое дисковое + пространство: 677 + 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-new-dtags  \
    +             --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-new-dtags +
    +
    +

    + Этот параметр заставляет компоновщик использовать тег + «runpath» для встраивания путей + поиска библиотек в исполняемые файлы и общие библиотеки + вместо традиционного тега «rpath». Это + упрощает отладку динамически подключаемых исполняемых + файлов и устраняет потенциальные проблемы в наборах + тестов некоторых пакетов. +

    +
    +
    + --enable-default-hash-style=gnu +
    +
    +

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

    +
    +
    +
    +

    + Скомпилируйте пакет: +

    +
    make
    +

    + Установите пакет: +

    +
    make install
    +
    +
    +

    + Подробная информация об этом пакете находится в Раздел 8.20.2, + «Содержимое пакета Binutils.» +

    +
    +
    +
    +
    +
    +

    + 5.3. GCC-14.2.0 - Проход 1 +

    +
    +
    +
    +
    +
    +

    + Пакет GCC содержит коллекцию компиляторов GNU, которая + включает компиляторы C и C++. +

    +
    +
    +
    + Приблизительное время + сборки: 3.2 SBU +
    +
    + Требуемое дисковое + пространство: 4.9 + GB +
    +
    +
    +
    +
    +

    + 5.3.1. Установка кросс-пакета GCC +

    +

    + Для GCC требуются пакеты GMP, MPFR и MPC. Поскольку эти + пакеты могут отсутствовать в дистрибутиве вашего хоста, они + будут собраны с помощью GCC. Распакуйте каждый пакет в + исходный каталог GCC и переименуйте получившиеся каталоги, + чтобы процедуры сборки GCC использовали их автоматически: +

    +
    +

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

    +

    + В этой главе часто возникают недоразумения, хотя + применяются те же процедуры, что и в любой другой главе, + следуйте инструкции которую получили ранее (Инструкции по сборке пакетов). + Сначала распакуйте пакет gcc-14.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.40 \
    +    --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.40 +
    +
    +

    + Этот параметр указывает версию 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.29.2, + «Содержимое пакета GCC.» +

    +
    +
    +
    +
    +
    +

    + 5.4. Заголовочные файлы + Linux-6.10.5 API +

    +
    +
    +
    +
    +
    +

    + Заголовочные файлы Linux API (в linux-6.10.5.tar.xz) + предоставляют API ядра для использования Glibc. +

    +
    +
    +
    + Приблизительное время + сборки: менее 0.1 + SBU +
    +
    + Требуемое дисковое + пространство: 1.6 + 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.40 +

    +
    +
    +
    +
    +
    +

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

    +
    +
    +
    + Приблизительное время + сборки: 1.3 SBU +
    +
    + Требуемое дисковое + пространство: 828 + 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.40-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-14.2.0 +

    +
    +
    +
    +
    +
    +

    + Libstdc++ — это стандартная библиотека C++. Она нужна для + компиляции кода C++ (часть GCC написана на C++), когда мы + собирали GCC-Проход 1, нам пришлось + отложить её установку, потому что она зависит от библиотеки + Glibc, которой еще не было в целевом каталоге. +

    +
    +
    +
    + Приблизительное время + сборки: 0.2 SBU +
    +
    + Требуемое дисковое + пространство: 1.2 + GB +
    +
    +
    +
    +
    +

    + 5.6.1. Установка библиотеки Libstdc++ +

    +
    +

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

    +

    + Libstdc++ является частью + исходников GCC. Сначала вы должны распаковать архив GCC и + перейти в каталог gcc-14.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++/14.2.0
    +
    +

    + Значение параметров настройки: +

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

    + Указывает, что должен использоваться кросс-компилятор, + который мы только что собрали, вместо того, который + находится в /usr/bin. +

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

    + Этот аргумент предотвращает установку предварительно + скомпилированных include-файлов, которые на данном + этапе не нужны. +

    +
    +
    + --with-gxx-include-dir=/tools/$LFS_TGT/include/c++/14.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++/14.2.0. + Комбинация переменной DESTDIR (в приведенной + ниже команде make + install) и этого аргумента обеспечивает + установку заголовочных файлов туда. +

    +
    +
    +
    +

    + Скомпилируйте Libstdc++, выполнив: +

    +
    make
    +

    + Установите библиотеку: +

    +
    make DESTDIR=$LFS install
    +

    + Удалите архивные файлы libtool, поскольку они потенциально + опасны при кросс-компиляции: +

    +
    rm -v $LFS/usr/lib/lib{stdc++{,exp,fs},supc++}.la
    +
    +
    +

    + Подробная информация об этом пакете приведена в Раздел 8.29.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.13.2, + «Содержимое пакета M4.» +

    +
    +
    +
    +
    +
    +

    + 6.3. + Ncurses-6.5 +

    +
    +
    +
    +
    +
    +

    + Пакет Ncurses содержит библиотеки для независимой от + терминала обработки ввода/вывода +

    +
    +
    +
    + Приблизительное время + сборки: 0.4 SBU +
    +
    + Требуемое дисковое + пространство: 53 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
    +
    +

    + Значение новых параметров настройки: +

    +
    +
    + --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 с хоста. + Использование инструментов хоста в кросс-компилируемой + программе может привести к сбою. +

    +
    +
    +
    +

    + Скомпилируйте пакет: +

    +
    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.30.2, + «Содержимое пакета Ncurses.» +

    +
    +
    +
    +
    +
    +

    + 6.4. + Bash-5.2.32 +

    +
    +
    +
    +
    +
    +

    + Пакет 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              \
    +            bash_cv_strtold_broken=no
    +
    +

    + Значение параметров настройки: +

    +
    +
    + --without-bash-malloc +
    +
    +

    + Этот параметр отключает использование функции + распределения памяти (malloc) Bash, которая, как известно, + вызывает ошибки сегментации. Если опция отключена, Bash + будет использовать функции malloc из Glibc, которые более + стабильны. +

    +
    +
    +
    +

    + Скомпилируйте пакет: +

    +
    make
    +

    + Установите пакет: +

    +
    make DESTDIR=$LFS install
    +

    + Создайте символическую ссылку для программ, которые + используют sh + как оболочку: +

    +
    ln -sv bash $LFS/bin/sh
    +
    +
    +

    + Подробная информация об этом пакете находится в Раздел 8.36.2, + «Содержимое пакета Bash.» +

    +
    +
    +
    +
    +
    +

    + 6.5. Coreutils-9.5 +

    +
    +
    +
    +
    +
    +

    + Пакет Coreutils содержит основные утилиты, необходимые каждой + операционной системе. +

    +
    +
    +
    + Приблизительное время + сборки: 0.3 SBU +
    +
    + Требуемое дисковое + пространство: 175 + 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.58.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.60.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.11.2, + «Содержимое пакета File.» +

    +
    +
    +
    +
    +
    +

    + 6.8. Findutils-4.10.0 +

    +
    +
    +
    +
    +
    +

    + Пакет Findutils содержит программы для поиска файлов. Эти + программы предназначены для поиска по всем файлам в дереве + каталогов, а также для создания, обслуживания и поиска в базе + данных (часто быстрее, чем рекурсивный поиск, но ненадежно, + если база данных давно не обновлялась).Findutils также + предоставляет программу xargs, которую можно + использовать для запуска указанной команды для каждого файла, + выбранного при поиске. +

    +
    +
    +
    + Приблизительное время + сборки: 0.2 SBU +
    +
    + Требуемое дисковое + пространство: 48 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.62.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.61.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.35.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.65.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.69.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.70.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.31.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.71.2, + «Содержимое пакета Tar.» +

    +
    +
    +
    +
    +
    +

    + 6.16. Xz-5.6.2 +

    +
    +
    +
    +
    +
    +

    + Пакет Xz содержит программы для сжатия и распаковки файлов. + Он предоставляет возможности для lzma и более новых форматов + сжатия xz. Сжатие текстовых файлов с помощью xz дает лучший процент + сжатия, чем с традиционные gzip или bzip2. +

    +
    +
    +
    + Приблизительное время + сборки: 0.1 SBU +
    +
    + Требуемое дисковое + пространство: 20 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.6.2
    +

    + Скомпилируйте пакет: +

    +
    make
    +

    + Установите пакет: +

    +
    make DESTDIR=$LFS install
    +

    + Удалите архивный файл libtool, поскольку он потенциально + опасен при кросс-компиляции: +

    +
    rm -v $LFS/usr/lib/liblzma.la
    +
    +
    +

    + Подробная информация об этом пакете находится в Раздел 8.8.2, «Содержимое + пакета Xz.» +

    +
    +
    +
    +
    +
    +

    + 6.17. Binutils-2.43.1 - + Проход 2 +

    +
    +
    +
    +
    +
    +

    + Пакет Binutils содержит компоновщик, ассемблер и другие + инструменты для работы с объектными файлами. +

    +
    +
    +
    + Приблизительное время + сборки: 0.4 SBU +
    +
    + Требуемое дисковое + пространство: 549 + 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-new-dtags         \
    +    --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.20.2, + «Содержимое пакета Binutils.» +

    +
    +
    +
    +
    +
    +

    + 6.18. GCC-14.2.0 - Проход 2 +

    +
    +
    +
    +
    +
    +

    + Пакет GCC содержит коллекцию компиляторов GNU, которая + включает компиляторы C и C++. +

    +
    +
    +
    + Приблизительное время + сборки: 4.2 SBU +
    +
    + Требуемое дисковое + пространство: 5.5 + 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++, поскольку она была собрана + без поддержки libc +

    +
    +
    + --disable-libsanitizer +
    +
    +

    + Отключает библиотеки среды выполнения GCC sanitizer. + Они не нужны для временного набора инструментов. В + GCC-Проход 1 это + решалось с помощью параметра --disable-libstdcxx, но + теперь мы должны передать его явно. +

    +
    +
    +
    +

    + Скомпилируйте пакет: +

    +
    make
    +

    + Установите пакет: +

    +
    make DESTDIR=$LFS install
    +

    + В качестве завершающего штриха создайте символическую ссылку + на утилиту. Многие программы и скрипты используют + cc вместо + gcc, чтобы + сделать программы более универсальными и, следовательно, для + совместимости со всеми типами UNIX-систем, где компилятор GNU + C не всегда установлен. Наличие cc оставляет системному + администратору право самостоятельно решать, какой компилятор + C устанавливать: +

    +
    ln -sv gcc $LFS/usr/bin/cc
    +
    +
    +

    + Подробная информация об этом пакете находится в Раздел 8.29.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 --from lfs -R root:root $LFS/{usr,lib,var,etc,bin,sbin,tools}
    +case $(uname -m) in
    +  x86_64) chown --from lfs -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/lib/locale
    +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 для того, чтобы + избежать несопоставленных идентификаторов. Другие дистрибутивы + могут обрабатывать этот идентификатор по-разному, поэтому любая + переносимая программа не должна зависеть от этого присвоения. +

    +

    + Для некоторых пакетов требуется локаль. +

    +
    localedef -i C -f UTF-8 C.UTF-8
    +

    + Для некоторых тестов в + Глава 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.5 +

    +
    +
    +
    +
    +
    +

    + Пакет Gettext содержит утилиты для интернационализации и + локализации. Они позволяют компилировать программы с + поддержкой NLS (Native Language Support), позволяя им + выводить сообщения на родном языке пользователя. +

    +
    +
    +
    + Приблизительное время + сборки: 1.1 SBU +
    +
    + Требуемое дисковое + пространство: 321 + 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.33.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.34.2, + «Содержимое пакета Bison.» +

    +
    +
    +
    +
    +
    +

    + 7.9. + Perl-5.40.0 +

    +
    +
    +
    +
    +
    +

    + Пакет Perl содержит практический язык для извлечения данных и + составления отчётов (Practical Extraction and Report + Language). +

    +
    +
    +
    + Приблизительное время + сборки: 0.6 SBU +
    +
    + Требуемое дисковое + пространство: 285 + MB +
    +
    +
    +
    +
    +

    + 7.9.1. Установка пакета Perl +

    +

    + Подготовьте Perl к компиляции: +

    +
    sh Configure -des                                         \
    +             -D prefix=/usr                               \
    +             -D vendorprefix=/usr                         \
    +             -D useshrplib                                \
    +             -D privlib=/usr/lib/perl5/5.40/core_perl     \
    +             -D archlib=/usr/lib/perl5/5.40/core_perl     \
    +             -D sitelib=/usr/lib/perl5/5.40/site_perl     \
    +             -D sitearch=/usr/lib/perl5/5.40/site_perl    \
    +             -D vendorlib=/usr/lib/perl5/5.40/vendor_perl \
    +             -D vendorarch=/usr/lib/perl5/5.40/vendor_perl
    +
    +

    + Значение новых опций Configure: +

    +
    +
    + -des +
    +
    +

    + Это комбинация из трех параметров: -d использует + значения по умолчанию для всех элементов; -e + обеспечивает выполнение всех задач; -s отключает + несущественные выходные данные. +

    +
    +
    + -D + vendorprefix=/usr +
    +
    +

    + Параметр гарантирует, что perl знает, как + указать пакетам, где они должны устанавливать свои + модули Perl. +

    +
    +
    + -D + useshrplib +
    +
    +

    + Собрать библиотеку libperl, необходимую некоторым + модулям Perl, как общую библиотеку вместо статической. +

    +
    +
    + -D + privlib,-D archlib,-D sitelib,... +
    +
    +

    + Эти настройки определяют, где Perl ищет установленные + модули. Редакторы LFS решили поместить их в структуру + каталогов, основанную на MAJOR.MINOR версии Perl + (5.40), что позволяет обновлять Perl до более новых + уровней исправлений (уровень исправления - это + последняя разделенная точками часть в строке полной + версии, например 5.40.0) без необходимости + переустанавливать все модули. +

    +
    +
    +
    +

    + Скомпилируйте пакет: +

    +
    make
    +

    + Установите пакет: +

    +
    make install
    +
    +
    +

    + Подробная информация об этом пакете находится в Раздел 8.43.2, + «Содержимое пакета Perl.» +

    +
    +
    +
    +
    +
    +

    + 7.10. + Python-3.12.5 +

    +
    +
    +
    +
    +
    +

    + Пакет Python 3 содержит среду разработчика Python. Его можно + использовать для объектно-ориентированного программирования, + написания скриптов, прототипирования больших программ и + разработка целых приложений. Python — это интерпретируемый + язык программирования. +

    +
    +
    +
    + Приблизительное время + сборки: 0.4 SBU +
    +
    + Требуемое дисковое + пространство: 603 + MB +
    +
    +
    +
    +
    +

    + 7.10.1. Установка пакета Python +

    +
    +

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

    +

    + Существует два пакета, имена которых начинаются с префикса + «python». Сейчас необходимо + распаковать файл Python-3.12.5.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.52.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.72.2, + «Содержимое пакета Texinfo.» +

    +
    +
    +
    +
    +
    +

    + 7.12. Util-linux-2.40.2 +

    +
    +
    +
    +
    +
    +

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

    +
    +
    +
    + Приблизительное время + сборки: 0.2 SBU +
    +
    + Требуемое дисковое + пространство: 180 + 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      \
    +            --disable-liblastlog2 \
    +            --without-python      \
    +            ADJTIME_PATH=/var/lib/hwclock/adjtime \
    +            --docdir=/usr/share/doc/util-linux-2.40.2
    +
    +

    + Значение параметров настройки: +

    +
    +
    + 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.79.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.2.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.2.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.40) необходимо + выполнить некоторые дополнительные действия, чтобы + избежать поломки системы. Подробности читайте в + Раздел 8.5, «Glibc-2.40». +

      +
    • +
    • +

      + Если пакет, содержащий общую библиотеку, обновляется и + имя библиотеки изменилось, то любые пакеты, динамически + связанные с библиотекой, необходимо перекомпилировать, + чтобы связать с более новой библиотекой. (Обратите + внимание, что между версией пакета и именем библиотеки + нет никакой связи.) Например, рассмотрим пакет + 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.9.1 +

    +
    +
    +
    +
    +
    +

    + Пакет Man-pages содержит более 2400 справочных руководств. +

    +
    +
    +
    + Приблизительное время + сборки: 0.1 SBU +
    +
    + Требуемое дисковое + пространство: 52 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-20240806 +

    +
    +
    +
    +
    +
    +

    + Пакет 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.40 +

    +
    +
    +
    +
    +
    +

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

    +
    +
    +
    + Приблизительное время + сборки: 12 SBU +
    +
    + Требуемое дисковое + пространство: 3.1 + GB +
    +
    +
    +
    +
    +

    + 8.5.1. Установка пакета Glibc +

    +

    + Некоторые программы Glibc используют не совместимый с FHS + каталог /var/db для хранения + своих данных во время выполнения. Примените следующий патч, + чтобы эти программы хранили свои данные в каталогах, + совместимых с FHS: +

    +
    patch -Np1 -i ../glibc-2.40-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" $(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.40) в работающей системе LFS вам + необходимо принять некоторые дополнительные меры + предосторожности, чтобы избежать поломки системы: +

    +
    +
      +
    • +

      + Обновление Glibc в системе LFS до версии 11.0 не + поддерживается. Пересоберите LFS, если вы используете + такую старую систему, но вам нужна более новая Glibc. +

      +
    • +
    • +

      + При обновлении системы LFS до версии 12.0 установите + Libxcrypt следуя + инструкции Раздел 8.27, + «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.10.5.» +

      +
    • +
    • +

      + Обновите заголовочные файлы API ядра, если они старше + 4.19 (проверьте текущую версию с помощью cat + /usr/include/linux/version.h) или, + если вы просто хотите обновить их, следуйте Раздел 5.4, + «Заголовочные файлы Linux-6.10.5 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. Следующие + инструкции установят минимальный набор локалей, необходимый + для оптимального охвата тестов +

    +
    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.40/localedata/SUPPORTED (он + включает все локали из списка выше и многие другие), выполнив + команду: +

    +
    make localedata/install-locales
    +

    + Затем используйте команду localedef для создания и + установки локалей, не перечисленных в файле glibc-2.40/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.40/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.6.2 +

    +
    +
    +
    +
    +
    +

    + Пакет Xz содержит программы для сжатия и распаковки файлов. + Он предоставляет возможности для lzma и более новых форматов + сжатия xz. Сжатие текстовых файлов с помощью xz дает лучший процент + сжатия, чем с традиционные gzip или bzip2. +

    +
    +
    +
    + Приблизительное время + сборки: 0.1 SBU +
    +
    + Требуемое дисковое + пространство: 21 MB +
    +
    +
    +
    +
    +

    + 8.8.1. Установка пакета Xz +

    +

    + Подготовьте Xz к компиляции: +

    +
    ./configure --prefix=/usr    \
    +            --disable-static \
    +            --docdir=/usr/share/doc/xz-5.6.2
    +

    + Скомпилируйте пакет: +

    +
    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.6.2 +
    +
    +
    +
    +

    + Краткое описание +

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

    + 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. + Lz4-1.10.0 +

    +
    +
    +
    +
    +
    +

    + Lz4 - это алгоритм сжатия без потерь, обеспечивающий скорость + сжатия более 500 МБ/с на ядро. Он оснащен чрезвычайно быстрым + декодером со скоростью несколько ГБ/с. Lz4 может работать с + Zstandard, позволяя обоим алгоритмам быстрее сжимать данные. +

    +
    +
    +
    + Приблизительное время + сборки: 0.1 SBU +
    +
    + Требуемое дисковое + пространство: 4.2 + MB +
    +
    +
    +
    +
    +

    + 8.9.1. Установка пакета Lz4 +

    +

    + Скомпилируйте пакет: +

    +
    make BUILD_STATIC=no PREFIX=/usr
    +

    + Чтобы протестировать пакет, выполните: +

    +
    make -j1 check
    +

    + Установите пакет: +

    +
    make BUILD_STATIC=no PREFIX=/usr install
    +
    +
    +

    + 8.9.2. + Содержимое пакета Lz4 +

    +
    +
    +
    + Установленные + программы: lz4, lz4c + (ссылка на lz4), lz4cat (ссылка на lz4) и unlz4 (ссылка + на lz4) +
    +
    + Установленные + библиотеки: liblz4.so +
    +
    +
    +
    +

    + Краткое описание +

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

    + lz4 +

    +
    +

    + Сжимает или распаковывает файлы, используя алгоритм + LZ4 +

    +
    +

    + lz4c +

    +
    +

    + Сжимает файлы, используя LZ4 +

    +
    +

    + lz4cat +

    +
    +

    + Выводит содержимое файла, сжатого с использованием + LZ4 +

    +
    +

    + unlz4 +

    +
    +

    + Распаковывает файлы, используя LZ4 +

    +
    +

    + liblz4 +

    +
    +

    + Библиотека, реализующая сжатие данных без потерь с + использованием алгоритма LZ4 +

    +
    +
    +
    +
    +
    +
    +
    +

    + 8.10. + Zstd-1.5.6 +

    +
    +
    +
    +
    +
    +

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

    +
    +
    +
    + Приблизительное время + сборки: 0.4 SBU +
    +
    + Требуемое дисковое + пространство: 84 MB +
    +
    +
    +
    +
    +

    + 8.10.1. Установка пакета Zstd +

    +

    + Скомпилируйте пакет: +

    +
    make prefix=/usr
    +
    +

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

    +

    + В выходных данных теста есть несколько мест, выводящих + сообщение 'failed'. Они ожидаемы, и только 'FAIL' является + фактическим сбоем теста. Сбоев при тестировании быть не + должно. +

    +
    +

    + Чтобы протестировать пакет, выполните: +

    +
    make check
    +

    + Установите пакет: +

    +
    make prefix=/usr install
    +

    + Удалите статическую библиотеку: +

    +
    rm -v /usr/lib/libzstd.a
    +
    +
    +

    + 8.10.2. + Содержимое пакета Zstd +

    +
    +
    +
    + Установленные + программы: zstd, zstdcat + (ссылка на zstd), zstdgrep, zstdless, zstdmt (ссылка на + zstd) и unzstd (ссылка на zstd) +
    +
    + Установленные + библиотеки: libzstd.so +
    +
    +
    +
    +

    + Краткое описание +

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

    + zstd +

    +
    +

    + Сжимает или распаковывает файлы в формате ZSTD +

    +
    +

    + zstdgrep +

    +
    +

    + Запускает grep на сжатых + ZSTD файлах +

    +
    +

    + zstdless +

    +
    +

    + Запускает less на сжатых + ZSTD файлах +

    +
    +

    + libzstd +

    +
    +

    + Библиотека, реализующая сжатие данных без потерь, с + использованием алгоритма ZSTD +

    +
    +
    +
    +
    +
    +
    +
    +

    + 8.11. + File-5.45 +

    +
    +
    +
    +
    +
    +

    + Пакет File содержит утилиту для определения типа указанного + файла или файлов +

    +
    +
    +
    + Приблизительное время + сборки: менее 0.1 + SBU +
    +
    + Требуемое дисковое + пространство: 17 MB +
    +
    +
    +
    +
    +

    + 8.11.1. Установка пакета File +

    +

    + Подготовьте File к компиляции: +

    +
    ./configure --prefix=/usr
    +

    + Скомпилируйте пакет: +

    +
    make
    +

    + Чтобы протестировать пакет, выполните: +

    +
    make check
    +

    + Установите пакет: +

    +
    make install
    +
    +
    +

    + 8.11.2. + Содержимое пакета File +

    +
    +
    +
    + Установленные + программы: file +
    +
    + Установленные + библиотеки: libmagic.so +
    +
    +
    +
    +

    + Краткое описание +

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

    + file +

    +
    +

    + Пытается классифицировать каждый указанный файл; он + делает это, выполняя серию тестов—тесты файловой + системы, тесты магических чисел и языковые тесты. +

    +
    +

    + libmagic +

    +
    +

    + Содержит функции распознавания магических чисел + используемые программой file +

    +
    +
    +
    +
    +
    +
    +
    +

    + 8.12. Readline-8.2.13 +

    +
    +
    +
    +
    +
    +

    + Пакет Readline представляет собой набор библиотек, + предлагающих возможности редактирования прямо в командной + строке и просмотра истории команд. +

    +
    +
    +
    + Приблизительное время + сборки: менее 0.1 + SBU +
    +
    + Требуемое дисковое + пространство: 16 MB +
    +
    +
    +
    +
    +

    + 8.12.1. Установка пакета Readline +

    +

    + Переустановка пакета Readline приводит к перемещению старых + библиотек в <libraryname>.old. Обычно это не вызывает + проблем, но в некоторых случаях могут возникать ошибки + линковки с ldconfig. Этого можно + избежать, выполнив следующие две команды sed: +

    +
    sed -i '/MV.*old/d' Makefile.in
    +sed -i '/{OLDSUFF}/c:' support/shlib-install
    +

    + Запретите использование библиотеки поиска списка жестко + запрограммированных путей (rpath) в общих библиотеках. Этому + пакету не требуется rpath для установки в стандартное + местоположение, кроме того, rpath иногда может вызывать + нежелательные эффекты или даже проблемы с безопасностью: +

    +
    sed -i 's/-Wl,-rpath,[^ ]*//' support/shobj-conf
    +

    + Подготовьте Readline к компиляции: +

    +
    ./configure --prefix=/usr    \
    +            --disable-static \
    +            --with-curses    \
    +            --docdir=/usr/share/doc/readline-8.2.13
    +
    +

    + Значение нового параметра 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.13
    +
    +
    +

    + 8.12.2. Содержимое пакета Readline +

    +
    +
    +
    + Установленные + библиотеки: libhistory.so + и libreadline.so +
    +
    + Созданные каталоги: + /usr/include/readline и + /usr/share/doc/readline-8.2.13 +
    +
    +
    +
    +

    + Краткое описание +

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

    + libhistory +

    +
    +

    + Обеспечивает согласованный пользовательский + интерфейс для вызова строк из истории +

    +
    +

    + libreadline +

    +
    +

    + Предоставляет набор команд для управления текстом, + введенным в интерактивном сеансе программы. +

    +
    +
    +
    +
    +
    +
    +
    +

    + 8.13. + M4-1.4.19 +

    +
    +
    +
    +
    +
    +

    + Пакет M4 содержит макропроцессор. +

    +
    +
    +
    + Приблизительное время + сборки: 0.3 SBU +
    +
    + Требуемое дисковое + пространство: 48 MB +
    +
    +
    +
    +
    +

    + 8.13.1. Установка пакета M4 +

    +

    + Подготовьте M4 к компиляции: +

    +
    ./configure --prefix=/usr
    +

    + Скомпилируйте пакет: +

    +
    make
    +

    + Чтобы протестировать пакет, выполните: +

    +
    make check
    +

    + Установите пакет: +

    +
    make install
    +
    +
    +

    + 8.13.2. Содержимое + пакета M4 +

    +
    +
    +
    + Установленные + программы: m4 +
    +
    +
    +
    +

    + Краткое описание +

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

    + m4 +

    +
    +

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

    +
    +
    +
    +
    +
    +
    +
    +

    + 8.14. Bc-6.7.6 +

    +
    +
    +
    +
    +
    +

    + Пакет Bc содержит язык для обработки чисел произвольной + точности. +

    +
    +
    +
    + Приблизительное время + сборки: менее 0.1 + SBU +
    +
    + Требуемое дисковое + пространство: 7.8 + MB +
    +
    +
    +
    +
    +

    + 8.14.1. Установка пакета Bc +

    +

    + Подготовьте Bc к компиляции: +

    +
    CC=gcc ./configure --prefix=/usr -G -O3 -r
    +
    +

    + Значение параметров настройки: +

    +
    +
    + CC=gcc +
    +
    +

    + Этот параметр определяет используемый компилятор +

    +
    +
    + -G +
    +
    +

    + Пропускает часть тестов, которые не будут работать, + пока не будет установлена программа bc. +

    +
    +
    + -O3 +
    +
    +

    + Указывает используемый уровень оптимизации. +

    +
    +
    + -r +
    +
    +

    + Включает использование Readline для улучшения функции + редактирования строк в bc. +

    +
    +
    +
    +

    + Скомпилируйте пакет: +

    +
    make
    +

    + Чтобы протестировать пакет, выполните: +

    +
    make test
    +

    + Установите пакет: +

    +
    make install
    +
    +
    +

    + 8.14.2. Содержимое + пакета Bc +

    +
    +
    +
    + Установленные + программы: bc и dc +
    +
    +
    +
    +

    + Краткое описание +

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

    + bc +

    +
    +

    + Калькулятор командной строки +

    +
    +

    + dc +

    +
    +

    + Калькулятор командной строки с обратной польской + нотацией +

    +
    +
    +
    +
    +
    +
    +
    +

    + 8.15. + Flex-2.6.4 +

    +
    +
    +
    +
    +
    +

    + Пакет Flex содержит инструмент для генерации программ, + распознающих заданные шаблоны в тексте +

    +
    +
    +
    + Приблизительное время + сборки: 0.1 SBU +
    +
    + Требуемое дисковое + пространство: 33 MB +
    +
    +
    +
    +
    +

    + 8.15.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.15.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.16. + Tcl-8.6.14 +

    +
    +
    +
    +
    +
    +

    + Пакет Tcl содержит Tool + Command Language, надежный скриптовый язык общего назначения. + Пакет Expect написан на + языке Tcl (произносится как + "тикл"). +

    +
    +
    +
    + Приблизительное время + сборки: 3.2 SBU +
    +
    + Требуемое дисковое + пространство: 91 MB +
    +
    +
    +
    +
    +

    + 8.16.1. Установка пакета Tcl +

    +

    + Этот пакет и следующие два (Expect и DejaGNU) устанавливаются + для поддержки возможности тестирования Binutils, GCC и других + пакетов. Установка трех пакетов для целей тестирования может + показаться избыточной, но вы будете чувствовать себя + увереннее, когда знаете, что наиболее важные инструменты + работают правильно. +

    +

    + Подготовьте Tcl к компиляции: +

    +
    SRCDIR=$(pwd)
    +cd unix
    +./configure --prefix=/usr           \
    +            --mandir=/usr/share/man \
    +            --disable-rpath
    +
    +

    + Значение новых параметров конфигурации: +

    +
    +
    + --disable-rpath +
    +
    +

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

    +
    +
    +
    +

    + Соберите пакет: +

    +
    make
    +
    +sed -e "s|$SRCDIR/unix|/usr/lib|" \
    +    -e "s|$SRCDIR|/usr/include|"  \
    +    -i tclConfig.sh
    +
    +sed -e "s|$SRCDIR/unix/pkgs/tdbc1.1.7|/usr/lib/tdbc1.1.7|" \
    +    -e "s|$SRCDIR/pkgs/tdbc1.1.7/generic|/usr/include|"    \
    +    -e "s|$SRCDIR/pkgs/tdbc1.1.7/library|/usr/lib/tcl8.6|" \
    +    -e "s|$SRCDIR/pkgs/tdbc1.1.7|/usr/include|"            \
    +    -i pkgs/tdbc1.1.7/tdbcConfig.sh
    +
    +sed -e "s|$SRCDIR/unix/pkgs/itcl4.2.4|/usr/lib/itcl4.2.4|" \
    +    -e "s|$SRCDIR/pkgs/itcl4.2.4/generic|/usr/include|"    \
    +    -e "s|$SRCDIR/pkgs/itcl4.2.4|/usr/include|"            \
    +    -i pkgs/itcl4.2.4/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.14-html.tar.gz --strip-components=1
    +mkdir -v -p /usr/share/doc/tcl-8.6.14
    +cp -v -r  ./html/* /usr/share/doc/tcl-8.6.14
    +
    +
    +

    + 8.16.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.17. + Expect-5.45.4 +

    +
    +
    +
    +
    +
    +

    + Пакет Expect содержит + инструменты для автоматизации работы интерактивных + приложений, таких как telnet, ftp, passwd, fsck, rlogin и tip, с помощью скриптовых + диалогов и макросов. Кроме того Expect полезен для тестирования + перечисленных выше приложений, а также для решения сложных + задач взаимодействия с другими средствами. Фреймворк + DejaGnu написан на языке + Expect. +

    +
    +
    +
    + Приблизительное время + сборки: 0.2 SBU +
    +
    + Требуемое дисковое + пространство: 3.9 + MB +
    +
    +
    +
    +
    +

    + 8.17.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), потерпят фатальный сбой, а также + могут произойти другие незначительные сбои. +

    +

    + Теперь внесите некоторые изменения, чтобы разрешить + использование пакета с gcc-14.1 или более поздней версией: +

    +
    patch -Np1 -i ../expect-5.45.4-gcc14-1.patch
    +

    + Подготовьте Expect к компиляции: +

    +
    ./configure --prefix=/usr           \
    +            --with-tcl=/usr/lib     \
    +            --enable-shared         \
    +            --disable-rpath         \
    +            --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.17.2. + Содержимое пакета Expect +

    +
    +
    +
    + Установленные + программы: expect +
    +
    + Установленные + библиотеки: libexpect5.45.4.so +
    +
    +
    +
    +

    + Краткое описание +

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

    + expect +

    +
    +

    + Взаимодействует с другими интерактивными + программами в соответствии со сценарием +

    +
    +

    + libexpect-5.45.4.so +

    +
    +

    + Содержит функции, которые позволяют использовать + Expect в качестве расширения Tcl или + непосредственно из C или C++ (без Tcl). +

    +
    +
    +
    +
    +
    +
    +
    +

    + 8.18. DejaGNU-1.6.3 +

    +
    +
    +
    +
    +
    +

    + Пакет DejaGnu содержит + фреймворк для запуска наборов тестов на инструментах GNU. Он + написан на expect, который в свою + очередь использует Tcl + (командный язык инструментов). +

    +
    +
    +
    + Приблизительное время + сборки: менее 0.1 + SBU +
    +
    + Требуемое дисковое + пространство: 6.9 + MB +
    +
    +
    +
    +
    +

    + 8.18.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.18.2. + Содержимое пакета DejaGNU +

    +
    +
    +
    + Установленные + программы: dejagnu и + runtest +
    +
    +
    +
    +

    + Short Descriptions +

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

    + dejagnu +

    +
    +

    + Вспомогательная программа запуска команд DejaGNU +

    +
    +

    + runtest +

    +
    +

    + Скрипт-обертка, который находит соответствующую + оболочку expect и + запускает DejaGnu +

    +
    +
    +
    +
    +
    +
    +
    +

    + 8.19. Pkgconf-2.3.0 +

    +
    +
    +
    +
    +
    +

    + Пакет pkgconf является преемником pkg-config и содержит + инструмент, который позволяет передавать пути установки или + пути к библиотекам для инструментов сборки на этапе настройки + (configure) и сборки(make) пакетов. +

    +
    +
    +
    + Приблизительное время + сборки: менее 0.1 + SBU +
    +
    + Требуемое дисковое + пространство: 4.7 + MB +
    +
    +
    +
    +
    +

    + 8.19.1. Установка пакета Pkgconf +

    +

    + Подготовьте Pkgconf к компиляции: +

    +
    ./configure --prefix=/usr              \
    +            --disable-static           \
    +            --docdir=/usr/share/doc/pkgconf-2.3.0
    +

    + Скомпилируйте пакет: +

    +
    make
    +

    + Установите пакет: +

    +
    make install
    +

    + Для обеспечения совместимости с исходным Pkg-config, создайте + две символические ссылки: +

    +
    ln -sv pkgconf   /usr/bin/pkg-config
    +ln -sv pkgconf.1 /usr/share/man/man1/pkg-config.1
    +
    +
    +

    + 8.19.2. + Содержимое пакета Pkgconf +

    +
    +
    +
    + Установленные + программы: pkgconf, + pkg-config (ссылка на pkgconf) и bomtool +
    +
    + Установленные + библиотеки: libpkgconf.so +
    +
    + Созданные каталоги: + /usr/share/doc/pkgconf-2.3.0 +
    +
    +
    +
    +

    + Краткое описание +

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

    + pkgconf +

    +
    +

    + Возвращает метаданные указанной библиотеки или + пакета +

    +
    +

    + bomtool +

    +
    +

    + Генерирует спецификацию программного обеспечения из + файлов pkg-config с расширением .pc +

    +
    +

    + libpkgconf +

    +
    +

    + Содержит большую часть функций pkgconf, позволяя + другим инструментам, таким как IDE и компиляторы, + использовать его фреймворки +

    +
    +
    +
    +
    +
    +
    +
    +

    + 8.20. Binutils-2.43.1 +

    +
    +
    +
    +
    +
    +

    + Пакет Binutils содержит компоновщик, ассемблер и другие + инструменты для работы с объектными файлами. +

    +
    +
    +
    + Приблизительное время + сборки: 2.0 SBU +
    +
    + Требуемое дисковое + пространство: 2.7 + GB +
    +
    +
    +
    +
    +

    + 8.20.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 \
    +             --enable-new-dtags  \
    +             --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.20.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.21. + GMP-6.3.0 +

    +
    +
    +
    +
    +
    +

    + Пакет GMP содержит математические библиотеки. Они содержат + полезные функции для арифметики с произвольной точностью. +

    +
    +
    +
    + Приблизительное время + сборки: 0.3 SBU +
    +
    + Требуемое дисковое + пространство: 54 MB +
    +
    +
    +
    +
    +

    + 8.21.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.21.2. + Содержимое пакета GMP +

    +
    +
    +
    + Установленные + библиотеки: libgmp.so и + libgmpxx.so +
    +
    + Созданные каталоги: + /usr/share/doc/gmp-6.3.0 +
    +
    +
    +
    +

    + Краткое описание +

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

    + libgmp +

    +
    +

    + Содержит точные математические функции +

    +
    +

    + libgmpxx +

    +
    +

    + Содержит точные математические функции C++ +

    +
    +
    +
    +
    +
    +
    +
    +

    + 8.22. + MPFR-4.2.1 +

    +
    +
    +
    +
    +
    +

    + Пакет MPFR содержит функции для двоичных вычислений с + плавающей запятой произвольной точности. +

    +
    +
    +
    + Приблизительное время + сборки: 0.2 SBU +
    +
    + Требуемое дисковое + пространство: 43 MB +
    +
    +
    +
    +
    +

    + 8.22.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.22.2. + Содержимое пакета MPFR +

    +
    +
    +
    + Установленные + библиотеки: libmpfr.so +
    +
    + Созданные каталоги: + /usr/share/doc/mpfr-4.2.1 +
    +
    +
    +
    +

    + Краткое описание +

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

    + libmpfr +

    +
    +

    + Содержит математические функции с произвольной + точностью +

    +
    +
    +
    +
    +
    +
    +
    +

    + 8.23. + MPC-1.3.1 +

    +
    +
    +
    +
    +
    +

    + Пакет MPC содержит библиотеку для арифметики комплексных + чисел с высокой точностью и правильным округлением + результата. +

    +
    +
    +
    + Приблизительное время + сборки: 0.1 SBU +
    +
    + Требуемое дисковое + пространство: 22 MB +
    +
    +
    +
    +
    +

    + 8.23.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.23.2. + Содержимое пакета MPC +

    +
    +
    +
    + Установленные + библиотеки: libmpc.so +
    +
    + Созданные каталоги: + /usr/share/doc/mpc-1.3.1 +
    +
    +
    +
    +

    + Краткое описание +

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

    + libmpc +

    +
    +

    + Содержит сложные математические функции +

    +
    +
    +
    +
    +
    +
    +
    +

    + 8.24. + Attr-2.5.2 +

    +
    +
    +
    +
    +
    +

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

    +
    +
    +
    + Приблизительное время + сборки: менее 0.1 + SBU +
    +
    + Требуемое дисковое + пространство: 4.1 + MB +
    +
    +
    +
    +
    +

    + 8.24.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.24.2. + Содержимое пакета Attr +

    +
    +
    +
    + Установленные + программы: attr, getfattr, + и setfattr +
    +
    + Установленные + библиотеки: libattr.so +
    +
    + Созданные каталоги: + /usr/include/attr и + /usr/share/doc/attr-2.5.2 +
    +
    +
    +
    +

    + Краткое описание +

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

    + attr +

    +
    +

    + Расширяет атрибуты объектов файловой системы +

    +
    +

    + getfattr +

    +
    +

    + Получает расширенные атрибуты объектов файловой + системы +

    +
    +

    + setfattr +

    +
    +

    + Устанавливает расширенные атрибуты объектов + файловой системы +

    +
    +

    + libattr +

    +
    +

    + Содержит библиотечные функции для управления + расширенными атрибутами. +

    +
    +
    +
    +
    +
    +
    +
    +

    + 8.25. + Acl-2.3.2 +

    +
    +
    +
    +
    +
    +

    + Пакет Acl содержит утилиты для администрирования списков + контроля доступа, которые используются для определения + расширенных дискреционных прав доступа к файлам и каталогам. +

    +
    +
    +
    + Приблизительное время + сборки: менее 0.1 + SBU +
    +
    + Требуемое дисковое + пространство: 6.3 + MB +
    +
    +
    +
    +
    +

    + 8.25.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.25.2. + Содержимое пакета Acl +

    +
    +
    +
    + Установленные + программы: chacl, getfacl, + и setfacl +
    +
    + Установленные + библиотеки: libacl.so +
    +
    + Созданные каталоги: + /usr/include/acl и + /usr/share/doc/acl-2.3.2 +
    +
    +
    +
    +

    + Краткое описание +

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

    + chacl +

    +
    +

    + Изменяет список контроля доступа файла или каталога +

    +
    +

    + getfacl +

    +
    +

    + Получает списки контроля доступа файла +

    +
    +

    + setfacl +

    +
    +

    + Устанавливает списки контроля доступа к файлам +

    +
    +

    + libacl +

    +
    +

    + Содержит библиотечные функции для управления + списками контроля доступа. +

    +
    +
    +
    +
    +
    +
    +
    +

    + 8.26. + Libcap-2.70 +

    +
    +
    +
    +
    +
    +

    + Пакет Libcap реализует интерфейсы пользовательского + пространства для возможностей POSIX 1003.1e, доступных в + ядрах Linux. Эти возможности разделяют полномочия + суперпользователя root на набор отдельных привилегий. +

    +
    +
    +
    + Приблизительное время + сборки: менее 0.1 + SBU +
    +
    + Требуемое дисковое + пространство: 2.9 + MB +
    +
    +
    +
    +
    +

    + 8.26.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.26.2. + Содержимое пакета Libcap +

    +
    +
    +
    + Установленные + программы: capsh, getcap, + getpcaps и setcap +
    +
    + Установленные + библиотеки: libcap.so и + libpsx.so +
    +
    +
    +
    +

    + Краткое описание +

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

    + capsh +

    +
    +

    + Обёртка к оболочке для исследования и ограничения + поддержки возможностей Linux +

    +
    +

    + getcap +

    +
    +

    + Проверяет возможности файлов +

    +
    +

    + getpcaps +

    +
    +

    + Отображает возможности запрашиваемого процесса + (процессов) +

    +
    +

    + setcap +

    +
    +

    + Устанавливает возможности файлов +

    +
    +

    + libcap +

    +
    +

    + Содержит функции для управления возможностями POSIX + 1003.1e. +

    +
    +

    + libpsx +

    +
    +

    + Содержит функции для поддержки семантики POSIX для + системных вызовов, связанных с библиотекой pthread +

    +
    +
    +
    +
    +
    +
    +
    +

    + 8.27. Libxcrypt-4.4.36 +

    +
    +
    +
    +
    +
    +

    + Пакет Libxcrypt содержит современную библиотеку для + одностороннего хэширования паролей. +

    +
    +
    +
    + Приблизительное время + сборки: 0.1 SBU +
    +
    + Требуемое дисковое + пространство: 12 MB +
    +
    +
    +
    +
    +

    + 8.27.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.27.2. Содержимое пакета Libxcrypt +

    +
    +
    +
    + Установленные + библиотеки: libcrypt.so +
    +
    +
    +
    +

    + Краткое описание +

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

    + libcrypt +

    +
    +

    + Содержит функции для хэширования паролей +

    +
    +
    +
    +
    +
    +
    +
    +

    + 8.28. + Shadow-4.16.0 +

    +
    +
    +
    +
    +
    +

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

    +
    +
    +
    + Приблизительное время + сборки: 0.1 SBU +
    +
    + Требуемое дисковое + пространство: 112 + MB +
    +
    +
    +
    +
    +

    + 8.28.1. Установка пакета Shadow +

    +
    +

    + Важно +

    +

    + Если вы установили Linux-PAM, вам следует перейти + на страницу BLFS shadow вместо этой страницы, чтобы + собрать (пересобрать, или обновить) shadow. +

    +
    +
    +

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

    +

    + Если вы хотите принудительно использовать надежные пароли, + обратитесь к инструкции + https://mirror.linuxfromscratch.ru/blfs/view/12.2/postlfs/cracklib.html + для установки CrackLib перед сборкой. Затем добавьте + параметр --with-libcrack в приведенную + ниже команду configure. +

    +
    +

    + Отключите установку groups и ее справочных + страниц, так как Coreutils предоставляет версию лучше. Кроме + того, запретите установку страниц руководств, так как они + были установлены в Раздел 8.3, + «Man-pages-6.9.1»: +

    +
    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.28.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.28.3. Установка пароля пользователя root +

    +

    + Придумайте пароль для root и установите командой: +

    +
    passwd root
    +
    +
    +

    + 8.28.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.29. + GCC-14.2.0 +

    +
    +
    +
    +
    +
    +

    + Пакет GCC содержит коллекцию компиляторов GNU, которая + включает компиляторы C и C++. +

    +
    +
    +
    + Приблизительное время + сборки: 46 SBU (с + тестами) +
    +
    + Требуемое дисковое + пространство: 6.3 + GB +
    +
    +
    +
    +
    +

    + 8.29.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     \
    +             --enable-host-pie        \
    +             --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 может потребоваться больше места в стеке для компиляции + некоторых сложных шаблонов кода. В качестве меры + предосторожности для хост-дистрибутивов с жестким + ограничением стека явно установите неограниченный жесткий + предел. В большинстве хост-дистрибутивов (и в собранной LFS) + жесткий предел по умолчанию неограничен, но нет ничего + плохого в том, чтобы установить его явно. Также нет + необходимости изменять мягкий предел размера стека, поскольку + GCC автоматически установит для него соответствующее + значение, если это значение не превышает жесткий предел: +

    +
    ulimit -s -H unlimited
    +

    + Теперь удалите/исправьте несколько известных ошибок + тестирования: +

    +
    sed -e '/cpython/d'               -i ../gcc/testsuite/gcc.dg/plugin/plugin.exp
    +sed -e 's/no-pic /&-no-pie /'     -i ../gcc/testsuite/gcc.target/i386/pr113689-1.c
    +sed -e 's/300000/(1|300000)/'     -i ../libgomp/testsuite/libgomp.c-c++-common/pr109062.c
    +sed -e 's/{ target nonpic } //' \
    +    -e '/GOTPCREL/d'              -i ../gcc/testsuite/gcc.target/i386/fentryname3.c
    +

    + Выполните тестирование от имени непривилегированного + пользователя, но не останавливайтесь на ошибках: +

    +
    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.2/ + и https://gcc.gnu.org/ml/gcc-testresults/. +

    +

    + Не всегда удается избежать неожиданных сбоев. В некоторых + случаях неудачное завершение тестов - это следствие их + выполнения на конкретном оборудовании системы. Если + результаты теста не сильно отличаются от результатов по + указанному выше URL-адресу, можно продолжать. +

    +

    + Установите пакет: +

    +
    make install
    +

    + Каталог сборки GCC теперь принадлежит пользователю + tester, и владелец каталога + заголовочных файлов (и его содержимого) указан неверно. + Измените владельца на пользователя и группу root: +

    +
    chown -v -R root:root \
    +    /usr/lib/gcc/$(gcc -dumpmachine)/14.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)/14.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/14.2.0/../../../../lib/Scrt1.o succeeded
    +/usr/lib/gcc/x86_64-pc-linux-gnu/14.2.0/../../../../lib/crti.o succeeded
    +/usr/lib/gcc/x86_64-pc-linux-gnu/14.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/14.2.0/include
    + /usr/local/include
    + /usr/lib/gcc/x86_64-pc-linux-gnu/14.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.29.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-14.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.30. Ncurses-6.5 +

    +
    +
    +
    +
    +
    +

    + Пакет Ncurses содержит библиотеки для независимой от + терминала обработки ввода/вывода +

    +
    +
    +
    + Приблизительное время + сборки: 0.2 SBU +
    +
    + Требуемое дисковое + пространство: 46 MB +
    +
    +
    +
    +
    +

    + 8.30.1. Установка пакета Ncurses +

    +

    + Подготовьте Ncurses к компиляции: +

    +
    ./configure --prefix=/usr           \
    +            --mandir=/usr/share/man \
    +            --with-shared           \
    +            --without-debug         \
    +            --without-normal        \
    +            --with-cxx-shared       \
    +            --enable-pc-files       \
    +            --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. +

    +
    +
    +
    +

    + Скомпилируйте пакет: +

    +
    make
    +

    + У этого пакета есть набор тестов, но его можно запустить + только после того, как пакет будет установлен. Тесты + находятся в каталоге test/. + Дополнительные сведения смотрите в файле README в этом каталоге. +

    +

    + Установка этого пакета приведет к перезаписи libncursesw.so.6.5. Это может привести к + сбою процесса оболочки, который использует код и данные из + файла библиотеки. Установите пакет с помощью DESTDIR и правильно замените файл библиотеки + с помощью команды install(также + отредактирован заголовочный файл curses.h, чтобы обеспечить использование + ABI расширенного набора символов, как это сделано в Раздел 6.3, «Ncurses-6.5»). +

    +
    make DESTDIR=$PWD/dest install
    +install -vm755 dest/usr/lib/libncursesw.so.6.5 /usr/lib
    +rm -v  dest/usr/lib/libncursesw.so.6.5
    +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.5
    +
    +

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

    +

    + С помощью приведенных выше инструкций не создаются + библиотеки 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.30.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.5 +
    +
    +
    +
    +

    + Краткое описание +

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

    + 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.31. + Sed-4.9 +

    +
    +
    +
    +
    +
    +

    + Пакет Sed содержит потоковый редактор текста +

    +
    +
    +
    + Приблизительное время + сборки: 0.3 SBU +
    +
    + Требуемое дисковое + пространство: 30 MB +
    +
    +
    +
    +
    +

    + 8.31.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.31.2. + Содержимое пакета Sed +

    +
    +
    +
    + Установленные + программы: sed +
    +
    + Созданные каталоги: + /usr/share/doc/sed-4.9 +
    +
    +
    +
    +

    + Краткое описание +

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

    + sed +

    +
    +

    + Фильтрует и преобразует текстовые файлы за один + проход +

    +
    +
    +
    +
    +
    +
    +
    +

    + 8.32. + Psmisc-23.7 +

    +
    +
    +
    +
    +
    +

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

    +
    +
    +
    + Приблизительное время + сборки: менее 0.1 + SBU +
    +
    + Требуемое дисковое + пространство: 6.7 + MB +
    +
    +
    +
    +
    +

    + 8.32.1. Установка пакета Psmisc +

    +

    + Подготовьте Psmisc к компиляции: +

    +
    ./configure --prefix=/usr
    +

    + Скомпилируйте пакет: +

    +
    make
    +

    + Чтобы протестировать пакет, выполните: +

    +
    make check
    +

    + Установите пакет: +

    +
    make install
    +
    +
    +

    + 8.32.2. + Содержимое пакета Psmisc +

    +
    +
    +
    + Установленные + программы: fuser, killall, + peekfd, prtstat, pslog, pstree и pstree.x11 (ссылка на + pstree) +
    +
    +
    +
    +

    + Краткое описание +

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

    + fuser +

    +
    +

    + Сообщает идентификаторы процессов (PID), которые + используют данные файлы или файловые системы. +

    +
    +

    + killall +

    +
    +

    + Уничтожает процессы по имени; посылает сигнал всем + процессам, выполняющим любую из заданных команд +

    +
    +

    + peekfd +

    +
    +

    + Просмотривает файловые дескрипторы запущенного + процесса с учетом его PID +

    +
    +

    + prtstat +

    +
    +

    + Выводит информацию о процессе +

    +
    +

    + pslog +

    +
    +

    + Сообщает текущий путь к журналам процесса +

    +
    +

    + pstree +

    +
    +

    + Отображает запущенные процессы в виде дерева +

    +
    +

    + pstree.x11 +

    +
    +

    + То же, что и pstree, за + исключением того, что он ожидает подтверждения + перед выходом. +

    +
    +
    +
    +
    +
    +
    +
    +

    + 8.33. Gettext-0.22.5 +

    +
    +
    +
    +
    +
    +

    + Пакет Gettext содержит утилиты для интернационализации и + локализации. Они позволяют компилировать программы с + поддержкой NLS (Native Language Support), позволяя им + выводить сообщения на родном языке пользователя. +

    +
    +
    +
    + Приблизительное время + сборки: 1.6 SBU +
    +
    + Требуемое дисковое + пространство: 260 + MB +
    +
    +
    +
    +
    +

    + 8.33.1. Установка пакета Gettext +

    +

    + Подготовьте Gettext для компиляции: +

    +
    ./configure --prefix=/usr    \
    +            --disable-static \
    +            --docdir=/usr/share/doc/gettext-0.22.5
    +

    + Скомпилируйте пакет: +

    +
    make
    +

    + Чтобы протестировать пакет (это занимает много времени, около + 3 SBU), выполните: +

    +
    make check
    +

    + Установите пакет: +

    +
    make install
    +chmod -v 0755 /usr/lib/preloadable_libintl.so
    +
    +
    +

    + 8.33.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.5, /usr/share/gettext и + /usr/share/gettext-0.22.5 +
    +
    +
    +
    +

    + Краткое описание +

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

    + 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.34. + Bison-3.8.2 +

    +
    +
    +
    +
    +
    +

    + Пакет Bison содержит генератор синтаксического анализа. +

    +
    +
    +
    + Приблизительное время + сборки: 2.2 SBU +
    +
    + Требуемое дисковое + пространство: 62 MB +
    +
    +
    +
    +
    +

    + 8.34.1. Установка пакета Bison +

    +

    + Подготовьте Bison к компиляции: +

    +
    ./configure --prefix=/usr --docdir=/usr/share/doc/bison-3.8.2
    +

    + Скомпилируйте пакет: +

    +
    make
    +

    + Для тестирования пакета (около 5,5 SBU), выполните: +

    +
    make check
    +

    + Установите пакет: +

    +
    make install
    +
    +
    +

    + 8.34.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.35. + Grep-3.11 +

    +
    +
    +
    +
    +
    +

    + Пакет Grep содержит программы для поиска по содержимому + файлов. +

    +
    +
    +
    + Приблизительное время + сборки: 0.4 SBU +
    +
    + Требуемое дисковое + пространство: 39 MB +
    +
    +
    +
    +
    +

    + 8.35.1. Установка пакета Grep +

    +

    + Во-первых, удалите предупреждение об использовании egrep и + fgrep, которое приводит к сбою тестов некоторых пакетов: +

    +
    sed -i "s/echo/#echo/" src/egrep.sh
    +

    + Подготовьте Grep к компиляции: +

    +
    ./configure --prefix=/usr
    +

    + Скомпилируйте пакет: +

    +
    make
    +

    + Чтобы протестировать пакет, выполните: +

    +
    make check
    +

    + Установите пакет: +

    +
    make install
    +
    +
    +

    + 8.35.2. + Содержимое пакета Grep +

    +
    +
    +
    + Установленные + программы: egrep, fgrep, и + grep +
    +
    +
    +
    +

    + Краткое описание +

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

    + egrep +

    +
    +

    + Выводит строки, соответствующие расширенному + регулярному выражению. Команда устарела, вместо неё + используйте grep + -E +

    +
    +

    + fgrep +

    +
    +

    + Выводит строки, соответствующие списку + фиксированных строк. Команда устарела, вместо неё + используйте grep + -F +

    +
    +

    + grep +

    +
    +

    + Выводит строки, соответствующие простому + регулярному выражению +

    +
    +
    +
    +
    +
    +
    +
    +

    + 8.36. + Bash-5.2.32 +

    +
    +
    +
    +
    +
    +

    + Пакет Bash содержит Bourne-Again Shell. +

    +
    +
    +
    + Приблизительное время + сборки: 1.2 SBU +
    +
    + Требуемое дисковое + пространство: 52 MB +
    +
    +
    +
    +
    +

    + 8.36.1. Установка пакета Bash +

    +

    + Подготовьте Bash к компиляции: +

    +
    ./configure --prefix=/usr             \
    +            --without-bash-malloc     \
    +            --with-installed-readline \
    +            bash_cv_strtold_broken=no \
    +            --docdir=/usr/share/doc/bash-5.2.32
    +
    +

    + Значение нового параметра настройки: +

    +
    +
    + --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.36.2. + Содержимое пакета Bash +

    +
    +
    +
    + Установленные + программы: bash, bashbug и + sh (ссылка на bash) +
    +
    + Созданные каталоги: + /usr/include/bash, /usr/lib/bash, + and /usr/share/doc/bash-5.2.32 +
    +
    +
    +
    +

    + Краткое описание +

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

    + bash +

    +
    +

    + Широко распространенный командный интерпретатор. + Выполняет различные дополнения и подстановки в + переданной командной строке перед её выполнением, + что делает этот интерпретатор мощным инструментом +

    +
    +

    + bashbug +

    +
    +

    + Скрипт, помогающий пользователю составлять и + отправлять по почте отчеты об ошибках bash +

    +
    +

    + sh +

    +
    +

    + Симлинк на программу bash; при вызове + sh, + bash + пытается максимально точно имитировать поведение + sh, + при этом также соответствуя стандарту POSIX. +

    +
    +
    +
    +
    +
    +
    +
    +

    + 8.37. Libtool-2.4.7 +

    +
    +
    +
    +
    +
    +

    + Пакет Libtool содержит сценарий поддержки универсальной + библиотеки GNU. Это упрощает использование общих библиотек + благодаря согласованному переносимому интерфейсу. +

    +
    +
    +
    + Приблизительное время + сборки: 0.8 SBU +
    +
    + Требуемое дисковое + пространство: 45 MB +
    +
    +
    +
    +
    +

    + 8.37.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.37.2. + Содержимое пакета Libtool +

    +
    +
    +
    + Установленные + программы: libtool и + libtoolize +
    +
    + Установленные + библиотеки: libltdl.so +
    +
    + Созданные каталоги: + /usr/include/libltdl и + /usr/share/libtool +
    +
    +
    +
    +

    + Краткое описание +

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

    + libtool +

    +
    +

    + Обеспечивает общие услуги поддержки при сборке + библиотек +

    +
    +

    + libtoolize +

    +
    +

    + Предоставляет стандартный способ добавления + поддержки libtool в пакет +

    +
    +

    + libltdl +

    +
    +

    + Скрывает различные проблемы, связанные с открытием + динамически загружаемых библиотек +

    +
    +
    +
    +
    +
    +
    +
    +

    + 8.38. + GDBM-1.24 +

    +
    +
    +
    +
    +
    +

    + Пакет GDBM содержит менеджер баз данных GNU. Это библиотека + функций базы данных, использующая расширяемое хеширование и + работающая аналогично стандартной СУБД UNIX. Библиотека + предоставляет примитивы для хранения пар ключ/значение, + поиска и извлечения данных по его ключу и удаления ключа + вместе с его данными. +

    +
    +
    +
    + Приблизительное время + сборки: менее 0.1 + SBU +
    +
    + Требуемое дисковое + пространство: 13 MB +
    +
    +
    +
    +
    +

    + 8.38.1. Установка пакета GDBM +

    +

    + Подготовьте GDBM к компиляции: +

    +
    ./configure --prefix=/usr    \
    +            --disable-static \
    +            --enable-libgdbm-compat
    +
    +

    + Значение параметра configure: +

    +
    +
    + --enable-libgdbm-compat +
    +
    +

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

    +
    +
    +
    +

    + Скомпилируйте пакет: +

    +
    make
    +

    + Чтобы протестировать пакет, выполните: +

    +
    make check
    +

    + Установите пакет: +

    +
    make install
    +
    +
    +

    + 8.38.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.39. + Gperf-3.1 +

    +
    +
    +
    +
    +
    +

    + Gperf генерирует идеальную хэш-функцию из набора ключей. +

    +
    +
    +
    + Приблизительное время + сборки: менее 0.1 + SBU +
    +
    + Требуемое дисковое + пространство: 6.1 + MB +
    +
    +
    +
    +
    +

    + 8.39.1. Установка пакета Gperf +

    +

    + Подготовьте Gperf к компиляции: +

    +
    ./configure --prefix=/usr --docdir=/usr/share/doc/gperf-3.1
    +

    + Скомпилируйте пакет: +

    +
    make
    +

    + Известно, что тесты завершаются ошибкой при одновременном + выполнении нескольких тестов (параметр -j больше 1). Для + выполнения тестов, запустите следующую команду: +

    +
    make -j1 check
    +

    + Установите пакет: +

    +
    make install
    +
    +
    +

    + 8.39.2. + Содержимое пакета Gperf +

    +
    +
    +
    + Установленные + программы: gperf +
    +
    + Созданные каталоги: + /usr/share/doc/gperf-3.1 +
    +
    +
    +
    +

    + Краткое описание +

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

    + gperf +

    +
    +

    + Генерирует идеальный хэш из набора ключей +

    +
    +
    +
    +
    +
    +
    +
    +

    + 8.40. + Expat-2.6.2 +

    +
    +
    +
    +
    +
    +

    + Пакет Expat содержит потоковую библиотеку C для + синтаксического анализа XML +

    +
    +
    +
    + Приблизительное время + сборки: 0.1 SBU +
    +
    + Требуемое дисковое + пространство: 13 MB +
    +
    +
    +
    +
    +

    + 8.40.1. Установка пакета Expat +

    +

    + Подготовьте Expat к компиляции: +

    +
    ./configure --prefix=/usr    \
    +            --disable-static \
    +            --docdir=/usr/share/doc/expat-2.6.2
    +

    + Скомпилируйте пакет: +

    +
    make
    +

    + Чтобы протестировать пакет, выполните: +

    +
    make check
    +

    + Установите пакет: +

    +
    make install
    +

    + По желанию установите документацию: +

    +
    install -v -m644 doc/*.{html,css} /usr/share/doc/expat-2.6.2
    +
    +
    +

    + 8.40.2. + Содержимое пакета Expat +

    +
    +
    +
    + Установленные + программы: xmlwf +
    +
    + Установленные + библиотеки: libexpat.so +
    +
    + Созданные каталоги: + /usr/share/doc/expat-2.6.2 +
    +
    +
    +
    +

    + Краткое описание +

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

    + xmlwf +

    +
    +

    + Утилита проверки правильности формирования XML + документов +

    +
    +

    + libexpat +

    +
    +

    + Содержит функции API для синтаксического анализа + XML +

    +
    +
    +
    +
    +
    +
    +
    +

    + 8.41. Inetutils-2.5 +

    +
    +
    +
    +
    +
    +

    + Пакет Inetutils содержит базовые программы для работы с + сетью. +

    +
    +
    +
    + Приблизительное время + сборки: 0.2 SBU +
    +
    + Требуемое дисковое + пространство: 35 MB +
    +
    +
    +
    +
    +

    + 8.41.1. Установка пакета Inetutils +

    +

    + Сначала внесите некоторые изменения, чтобы сборку пакета с + помощью gcc-14.1 или более поздней версии: +

    +
    sed -i 's/def HAVE_TERMCAP_TGETENT/ 1/' telnet/telnet.c
    +

    + Подготовьте 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.41.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.42. + Less-661 +

    +
    +
    +
    +
    +
    +

    + Пакет Less содержит средство просмотра текстовых файлов +

    +
    +
    +
    + Приблизительное время + сборки: менее 0.1 + SBU +
    +
    + Требуемое дисковое + пространство: 14 MB +
    +
    +
    +
    +
    +

    + 8.42.1. Установка пакета Less +

    +

    + Подготовьте Less к компиляции: +

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

    + Значение параметров настройки: +

    +
    +
    + --sysconfdir=/etc +
    +
    +

    + Этот параметр указывает программам, созданным пакетом, + искать файлы конфигурации в /etc. +

    +
    +
    +
    +

    + Скомпилируйте пакет: +

    +
    make
    +

    + Чтобы протестировать пакет, выполните: +

    +
    make check
    +

    + Установите пакет: +

    +
    make install
    +
    +
    +

    + 8.42.2. + Содержимое пакета Less +

    +
    +
    +
    + Установленные + программы: less, lessecho + и lesskey +
    +
    +
    +
    +

    + Краткое описание +

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

    + less +

    +
    +

    + Просмотрщик файлов; отображает содержимое данного + файла, позволяя пользователю прокручивать файл, + искать строки и переходить к меткам +

    +
    +

    + lessecho +

    +
    +

    + Требуется для расширения метасимволов, таких как + * и + ?, в именах + файлов в системах Unix +

    +
    +

    + lesskey +

    +
    +

    + Используется для привязки клавиш в программе + less +

    +
    +
    +
    +
    +
    +
    +
    +

    + 8.43. + Perl-5.40.0 +

    +
    +
    +
    +
    +
    +

    + Пакет Perl содержит практический язык для извлечения данных и + составления отчётов (Practical Extraction and Report + Language). +

    +
    +
    +
    + Приблизительное время + сборки: 1.4 SBU +
    +
    + Требуемое дисковое + пространство: 245 + MB +
    +
    +
    +
    +
    +

    + 8.43.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                                          \
    +             -D prefix=/usr                                \
    +             -D vendorprefix=/usr                          \
    +             -D privlib=/usr/lib/perl5/5.40/core_perl      \
    +             -D archlib=/usr/lib/perl5/5.40/core_perl      \
    +             -D sitelib=/usr/lib/perl5/5.40/site_perl      \
    +             -D sitearch=/usr/lib/perl5/5.40/site_perl     \
    +             -D vendorlib=/usr/lib/perl5/5.40/vendor_perl  \
    +             -D vendorarch=/usr/lib/perl5/5.40/vendor_perl \
    +             -D man1dir=/usr/share/man/man1                \
    +             -D man3dir=/usr/share/man/man3                \
    +             -D pager="/usr/bin/less -isR"                 \
    +             -D useshrplib                                 \
    +             -D usethreads
    +
    +

    + Значение параметров Configure: +

    +
    +
    + -D + pager="/usr/bin/less -isR" +
    +
    +

    + Параметр указывает использовать less вместо + more. +

    +
    +
    + -D + man1dir=/usr/share/man/man1 -D + man3dir=/usr/share/man/man3 +
    +
    +

    + Так как Groff еще не установлен, Configure не будет + создавать man-страницы для Perl. Эти параметры + переопределяют это поведение. +

    +
    +
    + -D + usethreads +
    +
    +

    + Собрать Perl с поддержкой потоков. +

    +
    +
    +
    +

    + Скомпилируйте пакет: +

    +
    make
    +

    + Чтобы протестировать пакет (примерно 11 SBU), выполните: +

    +
    TEST_JOBS=$(nproc) make test_harness
    +

    + Установка пакета и очистка: +

    +
    make install
    +unset BUILD_ZLIB BUILD_BZIP2
    +
    +
    +

    + 8.43.2. + Содержимое пакета Perl +

    +
    +
    +
    + Установленные + программы: corelist, cpan, + enc2xs, encguess, h2ph, h2xs, instmodsh, json_pp, + libnetcfg, perl, perl5.40.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.40.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.44. XML::Parser-2.47 +

    +
    +
    +
    +
    +
    +

    + Модуль XML::Parser представляет собой Perl-интерфейс к + XML-парсеру Джеймса Кларка Expat. +

    +
    +
    +
    + Приблизительное время + сборки: менее 0.1 + SBU +
    +
    + Требуемое дисковое + пространство: 2.4 + MB +
    +
    +
    +
    +
    +

    + 8.44.1. Установка пакета XML::Parser +

    +

    + Подготовьте XML::Parser к компиляции: +

    +
    perl Makefile.PL
    +

    + Скомпилируйте пакет: +

    +
    make
    +

    + Чтобы протестировать пакет, выполните: +

    +
    make test
    +

    + Установите пакет: +

    +
    make install
    +
    +
    +

    + 8.44.2. Содержимое XML::Parser +

    +
    +
    +
    + Установленный модуль: + Expat.so +
    +
    +
    +
    +

    + Краткое описание +

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

    + Expat +

    +
    +

    + предоставляет Perl интерфейс для Expat +

    +
    +
    +
    +
    +
    +
    +
    +

    + 8.45. Intltool-0.51.0 +

    +
    +
    +
    +
    +
    +

    + Intltool — это инструмент интернационализации, используемый + для извлечения переводимых строк из исходных файлов. +

    +
    +
    +
    + Приблизительное время + сборки: менее 0.1 + SBU +
    +
    + Требуемое дисковое + пространство: 1.5 + MB +
    +
    +
    +
    +
    +

    + 8.45.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.45.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.46. Autoconf-2.72 +

    +
    +
    +
    +
    +
    +

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

    +
    +
    +
    + Приблизительное время + сборки: менее 0.1 SBU + (около 1.8 SBU с тестами) +
    +
    + Требуемое дисковое + пространство: 25 MB +
    +
    +
    +
    +
    +

    + 8.46.1. Установка пакета Autoconf +

    +

    + Подготовьте Autoconf к компиляции: +

    +
    ./configure --prefix=/usr
    +

    + Скомпилируйте пакет: +

    +
    make
    +

    + Чтобы протестировать пакет, выполните: +

    +
    make check
    +

    + Установите пакет: +

    +
    make install
    +
    +
    +

    + 8.46.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.47. Automake-1.17 +

    +
    +
    +
    +
    +
    +

    + Пакет Automake содержит программы генерации Makefile для + использования с Autoconf. +

    +
    +
    +
    + Приблизительное время + сборки: менее 0.1 SBU + (около 1.6 SBU с тестами) +
    +
    + Требуемое дисковое + пространство: 121 + MB +
    +
    +
    +
    +
    +

    + 8.47.1. Установка пакета Automake +

    +

    + Подготовьте Automake к компиляции: +

    +
    ./configure --prefix=/usr --docdir=/usr/share/doc/automake-1.17
    +

    + Скомпилируйте пакет: +

    +
    make
    +

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

    +
    make -j$(($(nproc)>4?$(nproc):4)) check
    +

    + Замените $((...)) + количеством логических ядер, которые вы хотите использовать, + если вы не планируете использовать все. +

    +

    + Установите пакет: +

    +
    make install
    +
    +
    +

    + 8.47.2. Содержимое пакета Automake +

    +
    +
    +
    + Установленные + программы: aclocal, + aclocal-1.17 (жестко связан с aclocal), automake, и + automake-1.17 (жестко связан с automake) +
    +
    + Созданные каталоги: + /usr/share/aclocal-1.17, + /usr/share/automake-1.17, и + /usr/share/doc/automake-1.17 +
    +
    +
    +
    +

    + Краткое описание +

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

    + aclocal +

    +
    +

    + Генерирует файлы aclocal.m4 на основе содержимого + файла configure.in +

    +
    +

    + aclocal-1.17 +

    +
    +

    + Жесткая ссылка на aclocal +

    +
    +

    + automake +

    +
    +

    + Инструмент для автоматического создания + Makefile.in из файлов + Makefile.am [Чтобы + создать все файлы Makefile.in запустите эту + программу в каталоге верхнего уровня. Сканируя файл + configure.in, он + автоматически находит все подходящие файлы + Makefile.am и создает + соответствующий Makefile.in.] +

    +
    +

    + automake-1.17 +

    +
    +

    + Жесткая ссылка на automake +

    +
    +
    +
    +
    +
    +
    +
    +

    + 8.48. OpenSSL-3.3.1 +

    +
    +
    +
    +
    +
    +

    + Пакет OpenSSL содержит инструменты управления и библиотеки, + относящиеся к криптографии. Они полезны для предоставления + криптографических функций другим пакетам, таким как OpenSSH, + приложениям электронной почты и веб-браузерам (для доступа к + сайтам по HTTPS). +

    +
    +
    +
    + Приблизительное время + сборки: 1.7 SBU +
    +
    + Требуемое дисковое + пространство: 883 + MB +
    +
    +
    +
    +
    +

    + 8.48.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.3.1
    +

    + По желанию, установите дополнительную документацию: +

    +
    cp -vfr doc/* /usr/share/doc/openssl-3.3.1
    +
    +

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

    +

    + Вы должны обновить OpenSSL, когда будет выпущена новая + версия, исправляющая уязвимости. Начиная с OpenSSL 3.0.0, + схема управления версиями OpenSSL следует формату + MAJOR.MINOR.PATCH. Совместимость API/ABI гарантируется для + одной и той же ОСНОВНОЙ (MAJOR) версии. Поскольку LFS + устанавливает только общие библиотеки, нет необходимости + перекомпилировать пакеты, которые ссылаются на libcrypto.so или libssl.so, при + обновлении до версии с тем же ОСНОВНЫМ номером + версии. +

    +

    + Все запущенные программы, связанные с этими библиотеками, + после обновления необходимо остановить и перезапустить. Для + получения более подробной информации ознакомьтесь с + соответствующей записью в Раздел 8.2.1, + «Проблемы с обновлением». +

    +
    +
    +
    +

    + 8.48.2. + Содержимое пакета OpenSSL +

    +
    +
    +
    + Установленные + программы: c_rehash и + openssl +
    +
    + Установленные + библиотеки: libcrypto.so и + libssl.so +
    +
    + Созданные каталоги: + /etc/ssl, /usr/include/openssl, + /usr/lib/engines и /usr/share/doc/openssl-3.3.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.49. + Kmod-33 +

    +
    +
    +
    +
    +
    +

    + Пакет Kmod содержит библиотеки и утилиты для загрузки модулей + ядра. +

    +
    +
    +
    + Приблизительное время + сборки: менее 0.1 + SBU +
    +
    + Требуемое дисковое + пространство: 11 MB +
    +
    +
    +
    +
    +

    + 8.49.1. Установка пакета Kmod +

    +

    + Подготовьте Kmod к компиляции: +

    +
    ./configure --prefix=/usr     \
    +            --sysconfdir=/etc \
    +            --with-openssl    \
    +            --with-xz         \
    +            --with-zstd       \
    +            --with-zlib       \
    +            --disable-manpages
    +
    +

    + Значение параметров настройки: +

    +
    +
    + --with-openssl +
    +
    +

    + Этот параметр позволяет Kmod обрабатывать сигнатуры + PKCS7 для модулей ядра. +

    +
    +
    + --with-xz, --with-zlib и --with-zstd +
    +
    +

    + Эти параметры позволяют Kmod обрабатывать сжатые модули + ядра. +

    +
    +
    + --disable-manpages +
    +
    +

    + Эта опция отключает генерацию справочных страниц, для + которых требуется внешняя программа. +

    +
    +
    +
    +

    + Скомпилируйте пакет: +

    +
    make
    +

    + Набору тестов этого пакета необходимы необработанные + заголовочные файлы ядра (а не «очищенные», + установленные ранее), но это выходит за рамки LFS. +

    +

    + Установите пакет и восстановите некоторые символические + ссылки для совместимости с Module-Init-Tools (пакетом, + который ранее обрабатывал модули ядра Linux). Система сборки + создаст все эти символические ссылки в /usr/bin, но здесь нам нужна только команда + lsmod, а все + остальные символические ссылки должны вести в /usr/sbin: +

    +
    make install
    +
    +for target in depmod insmod modinfo modprobe rmmod; do
    +  ln -sfv ../bin/kmod /usr/sbin/$target
    +  rm -fv /usr/bin/$target
    +done
    +
    +
    +

    + 8.49.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.50. + Libelf из Elfutils-0.191 +

    +
    +
    +
    +
    +
    +

    + Libelf — это библиотека для обработки файлов ELF (Executable + and Linkable Format - формат исполняемых и связываемых + файлов). +

    +
    +
    +
    + Приблизительное время + сборки: 0.3 SBU +
    +
    + Требуемое дисковое + пространство: 127 + MB +
    +
    +
    +
    +
    +

    + 8.50.1. Установка пакета Libelf +

    +

    + Libelf является частью пакета elfutils-0.191. Используйте + elfutils-0.191.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.50.2. Содержимое пакета Libelf +

    +
    +
    +
    + Установленные + библиотеки: libelf.so +
    +
    + Созданные каталоги: + /usr/include/elfutils +
    +
    +
    +
    +

    + Краткое описание +

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

    + libelf.so +

    +
    +

    + Содержит функции API для обработки объектных файлов + ELF +

    +
    +
    +
    +
    +
    +
    +
    +

    + 8.51. + Libffi-3.4.6 +

    +
    +
    +
    +
    +
    +

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

    +

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

    +
    +
    +
    + Приблизительное время + сборки: 1.7 SBU +
    +
    + Требуемое дисковое + пространство: 11 MB +
    +
    +
    +
    +
    +

    + 8.51.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.51.2. + Содержимое пакета Libffi +

    +
    +
    +
    + Установленные + библиотеки: libffi.so +
    +
    +
    +
    +

    + Краткое описание +

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

    + libffi +

    +
    +

    + Содержит внешний интерфейс для API-функций +

    +
    +
    +
    +
    +
    +
    +
    +

    + 8.52. + Python-3.12.5 +

    +
    +
    +
    +
    +
    +

    + Пакет Python 3 содержит среду разработчика Python. Его можно + использовать для объектно-ориентированного программирования, + написания скриптов, прототипирования больших программ и + разработка целых приложений. Python — это интерпретируемый + язык программирования. +

    +
    +
    +
    + Приблизительное время + сборки: 2.2 SBU +
    +
    + Требуемое дисковое + пространство: 530 + MB +
    +
    +
    +
    +
    +

    + 8.52.1. Установка пакета Python 3 +

    +

    + Подготовьте Python к компиляции: +

    +
    ./configure --prefix=/usr        \
    +            --enable-shared      \
    +            --with-system-expat  \
    +            --enable-optimizations
    +
    +

    + Значение параметров настройки: +

    +
    +
    + --with-system-expat +
    +
    +

    + Этот параметр выполняет линковку с системной версией + Expat. +

    +
    +
    + --enable-optimizations +
    +
    +

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

    +
    +
    +
    +

    + Скомпилируйте пакет: +

    +
    make
    +

    + Известно, что некоторые тесты Python иногда зависают на + неопределенный срок. Чтобы протестировать пакет, запустите + набор тестов, установив 2-минутный лимит времени для каждого + тестового примера: +

    +
    make test TESTOPTS="--timeout 120"
    +

    + На медленной системе вам может потребоваться ещё увеличить + ограничение по времени, и 1 SBU (измеряется при сборке + Binutils - Проход 1 с использованием одного ядра ЦП) должно + быть достаточно. В процессе выполнения некоторых тестов + бывают сбои, поэтому набор тестов автоматически перезапускает + неудачно завершённые тесты. Если сначала тест не пройден, но + пройден при повторном запуске, его следует считать + пройденным. +

    +

    + Установите пакет: +

    +
    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.5/html
    +
    +tar --no-same-owner \
    +    -xvf ../python-3.12.5-docs-html.tar.bz2
    +cp -R --no-preserve=mode python-3.12.5-docs-html/* \
    +    /usr/share/doc/python-3.12.5/html
    +
    +

    + Значение команд установки документации: +

    +
    +
    + --no-same-owner (tar) и --no-preserve=mode (cp) +
    +
    +

    + Параметры обеспечивают, что установленные файлы имеют + корректные права и владельца файлов. Использование + tar без этих + параметров приведет к установке файлов с правами + пользователя создавшего архив и файлы будут иметь + ограниченные разрешения. +

    +
    +
    +
    +
    +
    +

    + 8.52.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.5 +
    +
    +
    +
    +

    + Краткое описание +

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

    + 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.53. Flit-Core-3.9.0 +

    +
    +
    +
    +
    +
    +

    + Flit-core — это часть Flit, предназначенная для сборки + дистрибутива (инструмента для упаковки простых модулей + Python). +

    +
    +
    +
    + Приблизительное время + сборки: менее 0.1 + SBU +
    +
    + Требуемое дисковое + пространство: 1.6 + MB +
    +
    +
    +
    +
    +

    + 8.53.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.53.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.54. + Wheel-0.44.0 +

    +
    +
    +
    +
    +
    +

    + Wheel — это библиотека Python, которая является эталонной + реализацией стандарта упаковки программ на языке Python. +

    +
    +
    +
    + Приблизительное время + сборки: менее 0.1 + SBU +
    +
    + Требуемое дисковое + пространство: 1.5 + MB +
    +
    +
    +
    +
    +

    + 8.54.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.54.2. + Содержимое пакета Wheel +

    +
    +
    +
    + Установленные + программы: wheel +
    +
    + Созданные каталоги: + /usr/lib/python3.12/site-packages/wheel и + /usr/lib/python3.12/site-packages/wheel-0.44.0.dist-info +
    +
    +
    +
    +

    + Краткое описание +

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

    + wheel +

    +
    +

    + это утилита для распаковки, упаковки или + преобразования wheel-архивов +

    +
    +
    +
    +
    +
    +
    +
    +

    + 8.55. Setuptools-72.2.0 +

    +
    +
    +
    +
    +
    +

    + Пакет Setuptools это инструмент, используемый для загрузки, + сборки, установки, обновления и удаления пакетов Python. +

    +
    +
    +
    + Приблизительное время + сборки: менее 0.1 + SBU +
    +
    + Требуемое дисковое + пространство: 35 MB +
    +
    +
    +
    +
    +

    + 8.55.1. Установка пакета Setuptools +

    +

    + Соберите пакет: +

    +
    pip3 wheel -w dist --no-cache-dir --no-build-isolation --no-deps $PWD
    +

    + Установите пакет: +

    +
    pip3 install --no-index --find-links dist setuptools
    +
    +
    +

    + 8.55.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-72.2.0.dist-info +
    +
    +
    +
    +
    +
    +
    +
    +

    + 8.56. + Ninja-1.12.1 +

    +
    +
    +
    +
    +
    +

    + Ninja - небольшая система сборки ориентированная на скорость. +

    +
    +
    +
    + Приблизительное время + сборки: 0.2 SBU +
    +
    + Требуемое дисковое + пространство: 37 MB +
    +
    +
    +
    +
    +

    + 8.56.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 под текущую систему. +

    +
    +
    +
    +

    + Тесты этого пакета не могут быть выполнены в среде chroot, + так как для них требуется + cmake. +

    +

    + Установите пакет: +

    +
    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.56.2. + Содержимое пакета Ninja +

    +
    +
    +
    + Установленные + программы: ninja +
    +
    +
    +
    +

    + Краткое описание +

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

    + ninja +

    +
    +

    + это система сборки Ninja +

    +
    +
    +
    +
    +
    +
    +
    +

    + 8.57. + Meson-1.5.1 +

    +
    +
    +
    +
    +
    +

    + Meson — это система сборки с открытым исходным кодом, + разработанная таким образом, чтобы быть очень быстрой и + максимально удобной для пользователя. +

    +
    +
    +
    + Приблизительное время + сборки: менее 0.1 + SBU +
    +
    + Требуемое дисковое + пространство: 43 MB +
    +
    +
    +
    +
    +

    + 8.57.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.57.2. + Содержимое пакета Meson +

    +
    +
    +
    + Установленные + программы: meson +
    +
    + Созданные каталоги: + /usr/lib/python3.12/site-packages/meson-1.5.1.dist-info + и /usr/lib/python3.12/site-packages/mesonbuild +
    +
    +
    +
    +

    + Краткое описание +

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

    + meson +

    +
    +

    + Высокопроизводительная система сборки +

    +
    +
    +
    +
    +
    +
    +
    +

    + 8.58. Coreutils-9.5 +

    +
    +
    +
    +
    +
    +

    + Пакет Coreutils содержит основные утилиты, необходимые каждой + операционной системе. +

    +
    +
    +
    + Приблизительное время + сборки: 1.1 SBU +
    +
    + Требуемое дисковое + пространство: 173 + MB +
    +
    +
    +
    +
    +

    + 8.58.1. Установка пакета Coreutils +

    +

    + Стандарт POSIX требует, чтобы программы пакета Coreutils + правильно распознавали символы даже в случае, если + используются многобайтовые локали. Следующий патч исправляет + несоответствие этому требованию, а также другие ошибки, + касающиеся интернационализации: +

    +
    patch -Np1 -i ../coreutils-9.5-i18n-2.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 -R tester . 
    +

    + Теперь запустите тесты (используя /dev/null для стандартного ввода, иначе два + теста могут быть не пройдены при сборке LFS в графическом + терминале, или сеансе SSH, или GNU Screen, поскольку + стандартный ввод подключен к PTY из хост-дистрибутива, а узел + устройства для такого PTY недоступен из среды chroot LFS): +

    +
    su tester -c "PATH=$PATH make -k RUN_EXPENSIVE_TESTS=yes check" \
    +   < /dev/null
    +

    + Удалить временную группу: +

    +
    groupdel dummy
    +

    + Известно, что два теста, tests/cp/preserve-mode.sh и tests/mv/acl.sh, завершаются неудачно в + среде chroot, но проходят успешно в собранной системе. +

    +

    + Установите пакет: +

    +
    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.58.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.59. + Check-0.15.2 +

    +
    +
    +
    +
    +
    +

    + Check - это фреймворк модульного тестирования для языка C. +

    +
    +
    +
    + Приблизительное время + сборки: 0.1 SBU (около 2.1 + SBU с тестами) +
    +
    + Требуемое дисковое + пространство: 11 MB +
    +
    +
    +
    +
    +

    + 8.59.1. Установка пакета Check +

    +

    + Подготовить Check к компиляции: +

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

    + Соберите пакет: +

    +
    make
    +

    + Когда компиляция будет завершена, запустите набор тестов: +

    +
    make check
    +

    + Установите пакет: +

    +
    make docdir=/usr/share/doc/check-0.15.2 install
    +
    +
    +

    + 8.59.2. + Содержимое пакета Check +

    +
    +
    +
    + Установленные + программы: checkmk +
    +
    + Установленные + библиотеки: libcheck.so +
    +
    +
    +
    +

    + Краткое описание +

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

    + checkmk +

    +
    +

    + Сценарий Awk для генерации unit-тестов C, для + использования с платформой модульного тестирования + Check. +

    +
    +

    + libcheck.so +

    +
    +

    + Содержит функции, позволяющие вызывать Check из + программы тестирования. +

    +
    +
    +
    +
    +
    +
    +
    +

    + 8.60. Diffutils-3.10 +

    +
    +
    +
    +
    +
    +

    + Пакет Diffutils содержит программы, которые показывают + различия между файлами или каталогами. +

    +
    +
    +
    + Приблизительное время + сборки: 0.3 SBU +
    +
    + Требуемое дисковое + пространство: 42 MB +
    +
    +
    +
    +
    +

    + 8.60.1. Установка пакета Diffutils +

    +

    + Подготовьте Diffutils к компиляции: +

    +
    ./configure --prefix=/usr
    +

    + Скомпилируйте пакет: +

    +
    make
    +

    + Чтобы протестровать пакет, выполните: +

    +
    make check
    +

    + Установите пакет: +

    +
    make install
    +
    +
    +

    + 8.60.2. Содержимое пакета Diffutils +

    +
    +
    +
    + Установленные + программы: cmp, diff, + diff3, и sdiff +
    +
    +
    +
    +

    + Краткое описание +

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

    + cmp +

    +
    +

    + Сравнивает побайтно два файла и сообщает о любых + различиях +

    +
    +

    + diff +

    +
    +

    + Сравнивает два файла или каталога и сообщает, какие + строки отличаются +

    +
    +

    + diff3 +

    +
    +

    + Сравнивает три файла построчно +

    +
    +

    + sdiff +

    +
    +

    + Объединяет два файла и интерактивно выводит + результат +

    +
    +
    +
    +
    +
    +
    +
    +

    + 8.61. + Gawk-5.3.0 +

    +
    +
    +
    +
    +
    +

    + Пакет Gawk содержит программы для работы с текстовыми + файлами. +

    +
    +
    +
    + Приблизительное время + сборки: 0.2 SBU +
    +
    + Требуемое дисковое + пространство: 42 MB +
    +
    +
    +
    +
    +

    + 8.61.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.61.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.62. Findutils-4.10.0 +

    +
    +
    +
    +
    +
    +

    + Пакет Findutils содержит программы для поиска файлов. Эти + программы предназначены для поиска по всем файлам в дереве + каталогов, а также для создания, обслуживания и поиска в базе + данных (часто быстрее, чем рекурсивный поиск, но ненадежно, + если база данных давно не обновлялась).Findutils также + предоставляет программу xargs, которую можно + использовать для запуска указанной команды для каждого файла, + выбранного при поиске. +

    +
    +
    +
    + Приблизительное время + сборки: 0.7 SBU +
    +
    + Требуемое дисковое + пространство: 62 MB +
    +
    +
    +
    +
    +

    + 8.62.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.62.2. Содержимое пакета Findutils +

    +
    +
    +
    + Installed programs: + Установленные программы +
    +
    + Созданные каталоги: + /var/lib/locate +
    +
    +
    +
    +

    + Краткое описание +

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

    + find +

    +
    +

    + Выполняет поиск в заданных каталогах файлов, + соответствующих критериям +

    +
    +

    + locate +

    +
    +

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

    +
    +

    + updatedb +

    +
    +

    + Обновляет базу данных locate; сканирует + всю файловую систему (включая другие файловые + системы, которые в настоящее время смонтированы, + если не указано иное) и записывает найденные имена + файлов в базу данных +

    +
    +

    + xargs +

    +
    +

    + Может использоваться для применения заданной + команды к списку файлов +

    +
    +
    +
    +
    +
    +
    +
    +

    + 8.63. + Groff-1.23.0 +

    +
    +
    +
    +
    +
    +

    + Пакет Groff содержит программы для обработки и форматирования + текста и изображений. +

    +
    +
    +
    + Приблизительное время + сборки: 0.2 SBU +
    +
    + Требуемое дисковое + пространство: 107 + MB +
    +
    +
    +
    +
    +

    + 8.63.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.63.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.64. + GRUB-2.12 +

    +
    +
    +
    +
    +
    +

    + Пакет GRUB содержит загрузчик операционной системы от проекта + GNU (GRand Unified Bootloader). +

    +
    +
    +
    + Приблизительное время + сборки: 0.3 SBU +
    +
    + Требуемое дисковое + пространство: 166 + MB +
    +
    +
    +
    +
    +

    + 8.64.1. Установка пакета GRUB +

    +
    +

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

    +

    + Если ваша система поддерживает UEFI и вы хотите загрузить + LFS с UEFI, вам необходимо установить GRUB с поддержкой + UEFI (и его зависимости), следуя инструкциям на + страница BLFS. Вы можете пропустить установку этого + пакета или установить его и пакет из BLFS (на странице 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.64.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.65. + Gzip-1.13 +

    +
    +
    +
    +
    +
    +

    + Пакет Gzip содержит программы для сжатия и распаковки файлов. +

    +
    +
    +
    + Приблизительное время + сборки: 0.3 SBU +
    +
    + Требуемое дисковое + пространство: 21 MB +
    +
    +
    +
    +
    +

    + 8.65.1. Установка пакета Gzip +

    +

    + Подготовьте Gzip к компиляции: +

    +
    ./configure --prefix=/usr
    +

    + Скомпилируйте пакет: +

    +
    make
    +

    + Чтобы протестировать пакет, выполните: +

    +
    make check
    +

    + Установите пакет: +

    +
    make install
    +
    +
    +

    + 8.65.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.66. IPRoute2-6.10.0 +

    +
    +
    +
    +
    +
    +

    + Пакет IPRoute2 содержит набор программ для базового и + расширенного администрирования сетей IPv4. +

    +
    +
    +
    + Приблизительное время + сборки: 0.1 SBU +
    +
    + Требуемое дисковое + пространство: 17 MB +
    +
    +
    +
    +
    +

    + 8.66.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.10.0
    +cp -v COPYING README* /usr/share/doc/iproute2-6.10.0
    +
    +
    +

    + 8.66.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.10.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.67. + Kbd-2.6.4 +

    +
    +
    +
    +
    +
    +

    + Пакет Kbd содержит файлы таблиц клавиш, консольные шрифты и + утилиты клавиатуры. +

    +
    +
    +
    + Приблизительное время + сборки: 0.1 SBU +
    +
    + Требуемое дисковое + пространство: 34 MB +
    +
    +
    +
    +
    +

    + 8.67.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.67.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.68. Libpipeline-1.5.7 +

    +
    +
    +
    +
    +
    +

    + Пакет Libpipeline содержит библиотеку для гибкого и удобного + управления подпроцессами. +

    +
    +
    +
    + Приблизительное время + сборки: 0.1 SBU +
    +
    + Требуемое дисковое + пространство: 9.7 + MB +
    +
    +
    +
    +
    +

    + 8.68.1. Установка пакета Libpipeline +

    +

    + Подготовьте Libpipeline к компиляции: +

    +
    ./configure --prefix=/usr
    +

    + Скомпилируйте пакет: +

    +
    make
    +

    + Чтобы протестировать пакет, выполните: +

    +
    make check
    +

    + Установите пакет: +

    +
    make install
    +
    +
    +

    + 8.68.2. Содержимое пакета + Libpipeline +

    +
    +
    +
    + Установленные + библиотеки: libpipeline.so +
    +
    +
    +
    +

    + Краткое описание +

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

    + libpipeline +

    +
    +

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

    +
    +
    +
    +
    +
    +
    +
    +

    + 8.69. + Make-4.4.1 +

    +
    +
    +
    +
    +
    +

    + Пакет Make содержит программу, управляющую генерацией + исполняемых и других файлов, из исходного кода. +

    +
    +
    +
    + Приблизительное время + сборки: 0.7 SBU +
    +
    + Требуемое дисковое + пространство: 13 MB +
    +
    +
    +
    +
    +

    + 8.69.1. Установка пакета Make +

    +

    + Подготовьте Make к компиляции: +

    +
    ./configure --prefix=/usr
    +

    + Скомпилируйте пакет: +

    +
    make
    +

    + Чтобы протестировать пакет, выполните: +

    +
    chown -R tester .
    +su tester -c "PATH=$PATH make check"
    +

    + Установите пакет: +

    +
    make install
    +
    +
    +

    + 8.69.2. + Содержимое пакета Make +

    +
    +
    +
    + Установленные + программы: make +
    +
    +
    +
    +

    + Краткое описание +

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

    + make +

    +
    +

    + Автоматически определяет, какие части пакета + необходимо (пере)компилировать и запускает + соответствующие команды. +

    +
    +
    +
    +
    +
    +
    +
    +

    + 8.70. + Patch-2.7.6 +

    +
    +
    +
    +
    +
    +

    + Пакет Patch содержит программу для изменения или создания + файлов путём наложение «патча», обычно, создаваемого программой + diff. +

    +
    +
    +
    + Приблизительное время + сборки: 0.2 SBU +
    +
    + Требуемое дисковое + пространство: 12 MB +
    +
    +
    +
    +
    +

    + 8.70.1. Установка пакета Patch +

    +

    + Подготовьте Patch к компиляции: +

    +
    ./configure --prefix=/usr
    +

    + Скомпилируйте пакет: +

    +
    make
    +

    + Чтобы протестировать пакет, выполните: +

    +
    make check
    +

    + Установите пакет: +

    +
    make install
    +
    +
    +

    + 8.70.2. + Содержимое пакета Patch +

    +
    +
    +
    + Установленные + программы: patch +
    +
    +
    +
    +

    + Краткое описание +

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

    + patch +

    +
    +

    + Изменяет файлы в соответствии с файлом исправления + (патч обычно представляет собой список отличий, + создаваемый с помощью программы diff. Применяя их + к исходным файлам, patch создает + исправленные версии.) +

    +
    +
    +
    +
    +
    +
    +
    +

    + 8.71. + Tar-1.35 +

    +
    +
    +
    +
    +
    +

    + Пакет Tar предоставляет возможность создавать tar архивы, а + также производить с ними различные манипуляции. Tar может + распаковать предварительно созданный архив, добавить или + обновить файлы в нём, вернуть список файлов в архиве. +

    +
    +
    +
    + Приблизительное время + сборки: 0.7 SBU +
    +
    + Требуемое дисковое + пространство: 43 MB +
    +
    +
    +
    +
    +

    + 8.71.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.71.2. + Содержимое пакета Tar +

    +
    +
    +
    + Установленные + программы: tar +
    +
    + Созданные каталоги: + /usr/share/doc/tar-1.35 +
    +
    +
    +
    +

    + Краткое описание +

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

    + tar +

    +
    +

    + Создает архивы, извлекает файлы и отображает + содержимое архивов, также известных как Тарболл. +

    +
    +
    +
    +
    +
    +
    +
    +

    + 8.72. Texinfo-7.1 +

    +
    +
    +
    +
    +
    +

    + Пакет Texinfo содержит программы для чтения, записи и + преобразования информационных страниц. +

    +
    +
    +
    + Приблизительное время + сборки: 0.3 SBU +
    +
    + Требуемое дисковое + пространство: 139 + MB +
    +
    +
    +
    +
    +

    + 8.72.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.72.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.73. + Vim-9.1.0660 +

    +
    +
    +
    +
    +
    +

    + Пакет Vim содержит мощный текстовый редактор. +

    +
    +
    +
    + Приблизительное время + сборки: 2.9 SBU +
    +
    + Требуемое дисковое + пространство: 245 + MB +
    +
    +
    +
    +

    + Альтернативы Vim +

    +

    + Если вы предпочитаете другой текстовый редактор, например, + Emacs, Joe или Nano, обратитесь к + https://mirror.linuxfromscratch.ru/blfs/view/12.2/postlfs/editors.html + за рекомендациями по установке. +

    +
    +
    +
    +

    + 8.73.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.0660, что + согласуется с расположением документации остальных пакетов: +

    +
    ln -sv ../vim/vim91/doc /usr/share/doc/vim-9.1.0660
    +

    + Если в LFS будет установлена система X Window, может + потребоваться перекомпилировать Vim после установки X. Vim + поставляется с графической версией редактора, для которой + требуется установка X и некоторых дополнительных библиотек. + Для получения дополнительной информации об этом процессе + обратитесь к документации по Vim и странице установки Vim в + книге BLFS по адресу + https://mirror.linuxfromscratch.ru/blfs/view/12.2/postlfs/vim.html. +

    +
    +
    +

    + 8.73.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.73.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.74. MarkupSafe-2.1.5 +

    +
    +
    +
    +
    +
    +

    + MarkupSafe — это модуль Python, реализующий безопасное + использование строк в языках разметки XML/HTML/XHTML +

    +
    +
    +
    + Приблизительное время + сборки: менее 0.1 + SBU +
    +
    + Требуемое дисковое + пространство: 508 + KB +
    +
    +
    +
    +
    +

    + 8.74.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.74.2. Содержимое пакета + MarkupSafe +

    +
    +
    +
    + Созданные каталоги: + /usr/lib/python3.12/site-packages/MarkupSafe-2.1.5.dist-info +
    +
    +
    +
    +
    +
    +
    +
    +

    + 8.75. + Jinja2-3.1.4 +

    +
    +
    +
    +
    +
    +

    + Jinja2 - это модуль Python, который реализует простой язык + шаблонов pythonic +

    +
    +
    +
    + Приблизительное время + сборки: менее 0.1 + SBU +
    +
    + Требуемое дисковое + пространство: 2.5 + MB +
    +
    +
    +
    +
    +

    + 8.75.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.75.2. + Содержимое пакета Jinja2 +

    +
    +
    +
    + Созданные каталоги: + /usr/lib/python3.12/site-packages/Jinja2-3.1.4.dist-info +
    +
    +
    +
    +
    +
    +
    +
    +

    + 8.76. Udev + из Systemd-256.4 +

    +
    +
    +
    +
    +
    +

    + Пакет Udev содержит программы для динамического создания + узлов устройств. +

    +
    +
    +
    + Приблизительное время + сборки: 0.2 SBU +
    +
    + Требуемое дисковое + пространство: 144 + MB +
    +
    +
    +
    +
    +

    + 8.76.1. Установка пакета Udev +

    +

    + Udev является частью пакета systemd-256.4. Используйте файл + systemd-256.4.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       \
    +      -D mode=release           \
    +      -D dev-kvm-mode=0660      \
    +      -D link-udev-shared=false \
    +      -D logind=false           \
    +      -D vconsole=false
    +
    +

    + Значение параметров meson: +

    +
    +
    + --buildtype=release +
    +
    +

    + Этот параметр переопределяет тип сборки по умолчанию + («debug»), который создает + неоптимизированные двоичные файлы. +

    +
    +
    + -D + mode=release +
    +
    +

    + Отключает некоторые функции, которые разработчики + считают экспериментальными. +

    +
    +
    + -D + dev-kvm-mode=0660 +
    +
    +

    + По умолчанию правило udev разрешает всем пользователям + доступ к /dev/kvm. + Редакторы LFS считают это опасным. Данная опция + переопределяет разрешение по умолчанию. +

    +
    +
    + -D + link-udev-shared=false +
    +
    +

    + Эта опция запрещает udev связываться с внутренней общей + библиотекой systemd libsystemd-shared. Эта библиотека + предназначена для совместного использования многими + компонентами Systemd, и ее использование избыточно, + когда установлен только udev. +

    +
    +
    + -D + logind=false -D vconsole=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-256.4.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.76.2. Настройка Udev +

    +

    + Информация об аппаратных устройствах хранится в каталогах + /etc/udev/hwdb.d и /usr/lib/udev/hwdb.d. Udev необходимо, чтобы эта информация + была скомпилирована в двоичную базу данных /etc/udev/hwdb.bin. Создайте исходную базу + данных: +

    +
    udev-hwdb update
    +

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

    +
    +
    +

    + 8.76.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.77. + Man-DB-2.12.1 +

    +
    +
    +
    +
    +
    +

    + Пакет Man-DB содержит программы для поиска и просмотра + справочных страниц. +

    +
    +
    +
    + Приблизительное время + сборки: 0.3 SBU +
    +
    + Требуемое дисковое + пространство: 43 MB +
    +
    +
    +
    +
    +

    + 8.77.1. Установка пакета Man-DB +

    +

    + Подготовьте Man-DB к компиляции: +

    +
    ./configure --prefix=/usr                         \
    +            --docdir=/usr/share/doc/man-db-2.12.1 \
    +            --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.77.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.77.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.1 +
    +
    +
    +
    +

    + Краткое описание +

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

    + accessdb +

    +
    +

    + Выводит содержимое базы данных whatis в + удобочитаемой форме. +

    +
    +

    + apropos +

    +
    +

    + Выполняет поиск в базе данных whatis и + отображает краткое описание системных команд, + содержащих заданную строку +

    +
    +

    + catman +

    +
    +

    + Создает или обновляет предварительно + отформатированные страницы руководств +

    +
    +

    + lexgrog +

    +
    +

    + Отображает однострочную сводную информацию о данной + странице руководства +

    +
    +

    + man +

    +
    +

    + Форматирует и отображает запрошенную страницу + руководства +

    +
    +

    + man-recode +

    +
    +

    + Преобразует страницы руководства в другую кодировку +

    +
    +

    + mandb +

    +
    +

    + Создает или обновляет базу данных whatis +

    +
    +

    + manpath +

    +
    +

    + Отображает содержимое переменной $MANPATH или (если + переменная $MANPATH не установлена) соответствующий + путь поиска, определяемый в настройках man.conf и в + пользовательском окружении +

    +
    +

    + whatis +

    +
    +

    + Выполняет поиск в базе данных whatis и + отображает краткие описания системных команд, в + которых в описании ключей указано искомое слово +

    +
    +

    + libman +

    +
    +

    + Включает поддержку man во время + выполнения +

    +
    +

    + libmandb +

    +
    +

    + Включает поддержку man во время + выполнения +

    +
    +
    +
    +
    +
    +
    +
    +

    + 8.78. + Procps-ng-4.0.4 +

    +
    +
    +
    +
    +
    +

    + Пакет Procps-ng содержит программы для мониторинга процессов. +

    +
    +
    +
    + Приблизительное время + сборки: 0.1 SBU +
    +
    + Требуемое дисковое + пространство: 26 MB +
    +
    +
    +
    +
    +

    + 8.78.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
    +

    + Чтобы запустить набор тестов, выполните: +

    +
    chown -R tester .
    +su tester -c "PATH=$PATH make check"
    +

    + Известно, что тест ps with output flag + bsdtime,cputime,etime,etimes завершается неудачно, + если ядро хоста собрано с выключенным параметром CONFIG_BSD_PROCESS_ACCT +

    +

    + Установите пакет: +

    +
    make install
    +
    +
    +

    + 8.78.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.79. Util-linux-2.40.2 +

    +
    +
    +
    +
    +
    +

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

    +
    +
    +
    + Приблизительное время + сборки: 0.5 SBU +
    +
    + Требуемое дисковое + пространство: 315 + MB +
    +
    +
    +
    +
    +

    + 8.79.1. Установка пакета Util-linux +

    +

    + Подготовьте 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-liblastlog2 \
    +            --disable-static      \
    +            --without-python      \
    +            --without-systemd     \
    +            --without-systemdsystemunitdir        \
    +            ADJTIME_PATH=/var/lib/hwclock/adjtime \
    +            --docdir=/usr/share/doc/util-linux-2.40.2
    +

    + Параметры --disable и --without предотвращают появление + предупреждений о сборке компонентов, для которых требуются + пакеты, отсутствующие в LFS, или которые несовместимы с + программами, установленными другими пакетами. +

    +

    + Скомпилируйте пакет: +

    +
    make
    +

    + По желанию создайте фиктивный файл /etc/fstab для выполнения двух тестов и + запустите набор тестов от имени пользователя без полномочий + root: +

    +
    +

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

    +

    + Запуск набора тестов от имени пользователя root может повредить вашу систему. + Чтобы запустить тесты, опция CONFIG_SCSI_DEBUG для ядра + должна быть доступна в текущей работающей системе и должна + быть собрана как модуль. Включение её в ядро будет + прерывать загрузку. Для полного охвата тестами в систему + необходимо установить другие пакеты из BLFS. По желанию, + этот тест можно запустить после загрузки в готовую систему + LFS: +

    +
    bash tests/run.sh --srcdir=$PWD --builddir=$PWD
    +
    +
    touch /etc/fstab
    +chown -R tester .
    +su tester -c "make -k check"
    +

    + Тесты с жесткими + ссылками завершатся неудачей, если в ядре хоста + не включена опция CONFIG_CRYPTO_USER_API_HASH или не включено + никаких опций, обеспечивающих реализацию SHA256 (например, + CONFIG_CRYPTO_SHA256 или + CONFIG_CRYPTO_SHA256_SSSE3, если + процессор поддерживает инструкции SSE3). Кроме того, тест + lsfd: inotify завершится неудачно, если опция ядра + CONFIG_NETLINK_DIAG не включена. +

    +

    + Установите пакет: +

    +
    make install
    +
    +
    +

    + 8.79.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.40.2 и + /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.80. E2fsprogs-1.47.1 +

    +
    +
    +
    +
    +
    +

    + Пакет E2fsprogs содержит утилиты для работы с файловой + системой ext2. Также он + поддерживает журналируемые файловые системы ext3 и ext4. +

    +
    +
    +
    + Приблизительное время + сборки: 2.4 SBU на жестком + диске, 0.5 SBU на SSD диске +
    +
    + Требуемое дисковое + пространство: 98 MB +
    +
    +
    +
    +
    +

    + 8.80.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.80.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.80.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.81. Sysklogd-2.6.1 +

    +
    +
    +
    +
    +
    +

    + Пакет Sysklogd содержит программы для логирования системных + сообщений, таких как сообщения ядра, когда происходят + различные события. +

    +
    +
    +
    + Приблизительное время + сборки: менее 0.1 + SBU +
    +
    + Требуемое дисковое + пространство: 3.9 + MB +
    +
    +
    +
    +
    +

    + 8.81.1. Установка пакета Sysklogd +

    +

    + Подготовьте пакет к компиляции: +

    +
    ./configure --prefix=/usr      \
    +            --sysconfdir=/etc  \
    +            --runstatedir=/run \
    +            --without-logger
    +

    + Скомпилируйте пакет: +

    +
    make
    +

    + Этот пакет не содержит набора тестов. +

    +

    + Установите пакет: +

    +
    make install
    +
    +
    +

    + 8.81.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 *
    +
    +# Do not open any internet ports.
    +secure_mode 2
    +
    +# End /etc/syslog.conf
    +EOF
    +
    +
    +

    + 8.81.3. Содержимое пакета Sysklogd +

    +
    +
    +
    + Установленные + программы: syslogd +
    +
    +
    +
    +

    + Краткое описание +

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

    + syslogd +

    +
    +

    + Регистрирует сообщения системных программ для + записи в лог [Каждое регистрируемое сообщение + содержит как минимум время события, имя хоста, а + также имя программы, но это зависит от настроек + службы логирования.] +

    +
    +
    +
    +
    +
    +
    +
    +

    + 8.82. SysVinit-3.10 +

    +
    +
    +
    +
    +
    +

    + Пакет SysVinit содержит программы для управления загрузкой, + выполнением и выключением системы. +

    +
    +
    +
    + Приблизительное время + сборки: менее 0.1 + SBU +
    +
    + Требуемое дисковое + пространство: 2.8 + MB +
    +
    +
    +
    +
    +

    + 8.82.1. Установка пакета SysVinit +

    +

    + Сначала примените патч, который удаляет несколько программ, + установленных другими пакетами и исправляет предупреждение + компилятора: +

    +
    patch -Np1 -i ../sysvinit-3.10-consolidated-1.patch
    +

    + Скомпилируйте пакет: +

    +
    make
    +

    + С этим пакетом не поставляется набор тестов. +

    +

    + Установите пакет: +

    +
    make install
    +
    +
    +

    + 8.82.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.83. Об отладочных символах +

    +
    +
    +
    +
    +

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

    +

    + Включение отладочных символов значительно увеличивает размер + программы или библиотеки. Ниже приведена информация по объему + пространства, занимаемого отладочными символами: +

    +
    +
      +
    • +

      + Двоичный файл bash с отладочными + символами: 1200 KB +

      +
    • +
    • +

      + Двоичный файл bash без отладочных + символов: 480 KB (на 60% меньше) +

      +
    • +
    • +

      + Файлы Glibc и GCC (/lib и + /usr/lib) с отладочными + символами: 87 MB +

      +
    • +
    • +

      + Файлы Glibc и GCC без отладочных символов: 16 MB (на 82% + меньше) +

      +
    • +
    +
    +

    + Размеры могут варьироваться в зависимости от используемого + компилятора и библиотеки Си, но программа, в которой были + удалены отладочные символы, обычно примерно на 50-80% меньше, + чем ее аналог с ними. Поскольку большинство пользователей + никогда не будут использовать отладчик в своем программном + обеспечении, удаление отладочных символов может освободить + много места на диске. В следующем разделе показано, как удалить + все отладочные символы из программ и библиотек. +

    +
    +
    +
    +
    +

    + 8.84. Удаление отладочных + символов +

    +
    +
    +
    +
    +

    + Этот раздел является необязательным. Если предполагаемый + пользователь не является программистом и не планирует выполнять + какую-либо отладку системного программного обеспечения, размер + системы можно уменьшить примерно на 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.33
    +             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.43.1.so
    +               libsframe.so.1.0.0
    +               libhistory.so.8.2
    +               libncursesw.so.6.5
    +               libm.so.6
    +               libreadline.so.8.2
    +               libz.so.1.3.1
    +               libzstd.so.1.5.6
    +               $(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.85. Очистка +

    +
    +
    +
    +
    +

    + Наконец, удалите некоторые лишние файлы, оставшиеся после + запуска тестов: +

    +
    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-20240825 +

    +
    +
    +
    +
    +
    +

    + Пакет LFS-Bootscripts содержит набор скриптов для + запуска/остановки системы LFS при загрузке/завершении работы. + Файлы конфигурации и процедуры, необходимые для настройки + /процесса загрузки, описаны в следующих разделах. +

    +
    +
    +
    + Приблизительное время + сборки: менее 0.1 + SBU +
    +
    + Требуемое дисковое + пространство: 248 + 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.10.5, udev, выполняет + загрузку правильно написанных драйверов для INPUT, IDE, + PCI, USB, SCSI, SERIO, и FireWire устройств. +

    +

    + Чтобы определить, имеет ли требуемый драйвер устройства + необходимую поддержку Udev, запустите modinfo с именем модуля в + качестве аргумента. Далее, попробуйте найти каталог + устройства в /sys/bus и + проверьте, есть ли там файл modalias. +

    +

    + Если файл modalias существует + в sysfs, то драйвер, + который поддерживает устройство, может обращаться к нему + напрямую, но не имеет псевдонима, это ошибка в драйвере. + Загрузите драйвер без помощи Udev и ожидайте, что проблема + будет исправлена позднее. +

    +

    + Если же в каталоге /sys/bus + нет файла modalias, это + означает, что разработчики ядра еще не добавили поддержку + modalias к этому типу шины. В + Linux-6.10.5 это относится к шиной 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/=.*$/=/'  \
    +       /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.76, «Udev + из Systemd-256.4») не запустится, пока система 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.10.5 правильно интерпретирует "мертвые" клавиши + и слияния, только когда исходные символы имеют 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.10.5 +

    +
    +
    +
    +
    +
    +

    + Этот пакет содержит ядро Linux. +

    +
    +
    +
    + Приблизительное время + сборки: 0.4 - 32 SBU + (обычно около 2.5 SBU) +
    +
    + Требуемое дисковое + пространство: 1.7 - 14 GB + (обычно около 2.3 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.10.5. Однако, мы не рекомендуем + этот вариант. Намного лучше изучить все параметры меню и + создать конфигурацию ядра с нуля. +

    +

    + Скомпилируйте образ ядра и модули: +

    +
    make
    +

    + При использовании модулей, могут потребоваться файлы + конфигурации, которые расположены в каталоге /etc/modprobe.d. Информация о модулях и + конфигурации ядра находится в Раздел 9.3, + «Взаимодействие с устройствами и модулями» и в + документации к ядру linux-6.10.5/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.10.5-lfs-12.2
    +

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

    +
    cp -iv System.map /boot/System.map-6.10.5
    +

    + Файл конфигурации ядра .config + создается на шаге make + menuconfig и содержит все параметры ядра, + которое было скомпилировано только что. Рекомендуется + сохранить этот файл на будущее: +

    +
    cp -iv .config /boot/config-6.10.5
    +

    + Установите документацию ядра: +

    +
    cp -r Documentation -T /usr/share/doc/linux-6.10.5
    +

    + Важно отметить, что файлы в каталоге с исходным кодом ядра не + принадлежат пользователю root. Всякий раз, когда пакет + распаковывается от имени пользователя root (как это и выполнялось внутри + среды chroot), файлы имеют те идентификаторы пользователя и + группы, которые были присвоены при распаковке. Обычно это не + вызывает проблем для других устанавливаемых пакетов, так как + каталог с исходниками удаляется после установки пакета. + Однако исходный код ядра Linux часто сохраняется в течение + длительного времени. Из-за этого существует вероятность того, + что идентификатор пользователя, используемый при распаковке, + будет назначен другому пользователю. В таком случае, этот + пользователь будет иметь доступ на запись в этот каталог. +

    +
    +

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

    +

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

    +

    + Если вы планируете оставить каталог с исходным кодом ядра, + выполните команду chown -R + 0:0 * находясь в каталоге linux-6.10.5, чтобы все файлы + принадлежали пользователю root. +

    +
    +
    +

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

    +

    + Иногда, в документации к ядру, рекомендуют создать + символическую ссылку /usr/src/linux указывающую на каталог с + исходниками ядра. Эта рекомендация относится к ядрам до + версии 2.6 и не + должна выполняться в системе LFS, так как это + может вызвать проблемы с пакетами, которые вы, возможно, + захотите собрать, когда ваша базовая система LFS будет + готова. +

    +
    +
    +

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

    +

    + Заголовочные файлы в системном каталоге include (/usr/include) всегда используются те, которые + применялись при компиляции Glibc, то есть подготовленные + заголовочные файлы, установленные в Раздел 5.4, + «Заголовочные файлы Linux-6.10.5 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.10.5, + vmlinuz-6.10.5-lfs-12.2, и System.map-6.10.5 +
    +
    + Созданные каталоги: + /lib/modules, + /usr/share/doc/linux-6.10.5 +
    +
    +
    +
    +

    + Краткое описание +

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

    + config-6.10.5 +

    +
    +

    + Содержит в себе все параметры конфигурации ядра +

    +
    +

    + vmlinuz-6.10.5-lfs-12.2 +

    +
    +

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

    +
    +

    + System.map-6.10.5 +

    +
    +

    + Список адресов и символов; файл содержит точки + входа и адреса всех функций и структур данных в + ядре +

    +
    +
    +
    +
    +
    +
    +
    +

    + 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.10.5-lfs-12.2" {
    +        linux   /boot/vmlinuz-6.10.5-lfs-12.2 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.2 > /etc/lfs-release
    +

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

    +

    + Первый показывает статус вашей новой системы по отношению к + стандарту LSB. Чтобы создать этот файл, выполните: +

    +
    cat > /etc/lsb-release << "EOF"
    +DISTRIB_ID="Linux From Scratch"
    +DISTRIB_RELEASE="12.2"
    +DISTRIB_CODENAME="<your name here>"
    +DISTRIB_DESCRIPTION="Linux From Scratch"
    +EOF
    +

    + Второй содержит примерно ту же информацию и используется + systemd и некоторыми графическими средами рабочего стола. Чтобы + создать этот файл, выполните: +

    +
    cat > /etc/os-release << "EOF"
    +NAME="Linux From Scratch"
    +VERSION="12.2"
    +ID=lfs
    +PRETTY_NAME="Linux From Scratch 12.2"
    +VERSION_CODENAME="<your name here>"
    +HOME_URL="https://linuxfromscratch.ru/"
    +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.2 + будет загружен автоматически. +

    +

    + После завершения перезагрузки, система LFS будет готова к + использованию. Вы увидите простую подсказку «login: ». На этом + этапе вы можете перейти к книге + BLFS, где вы установите дополнительное программное + обеспечение в соответствии с вашими потребностями. +

    +

    + Если перезагрузка завершилась неудачей, самое время устранить + эти неполадки. Советы по решению проблем с начальной загрузкой, + смотрите на странице https://mirror.linuxfromscratch.ru/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, Diffutils, + 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, 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, Pkgconf и + 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, Pkgconf, Sed, Xz и + Zlib +
    +
    +
    +
    + +
    +
    + Требуется во время + выполнения: Glibc, Xz и + Zlib +
    +
    +
    +
    + +
    +
    + Набор тестов зависит от: + Набор тестов недоступен +
    +
    +
    +
    + +
    +
    + Должен быть установлен до: + Udev +
    +
    +
    +
    + +
    +
    + Необязательные зависимости: + scdoc (для + справочных страниц) +
    +
    +
    +

    + 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 +
    +
    +
    +
    + +
    +
    + Набор тестов зависит от: + Нет +
    +
    +
    +
    + +
    +
    + Должен быть установлен до: + 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) и + Rust-bindgen +
    +
    +
    +

    + Linux API Headers +

    +
    + +
    +
    + Установка зависит от: + Bash, Binutils, Coreutils, Findutils, + GCC, Glibc, Grep, Gzip, Make, Perl и Sed +
    +
    +
    +
    + +
    +
    + Требуется во время + выполнения: Нет +
    +
    +
    +
    + +
    +
    + Набор тестов зависит от: + Набор тестов недоступен +
    +
    +
    +
    + +
    +
    + Должен быть установлен до: + Нет +
    +
    +
    +
    + +
    +
    + Необязательные зависимости: + Нет +
    +
    +
    +

    + Lz4 +

    +
    + +
    +
    + Установка зависит от: + Bash, Binutils, Coreutils, GCC, Glibc и + Make +
    +
    +
    +
    + +
    +
    + Требуется во время + выполнения: Glibc +
    +
    +
    +
    + +
    +
    + Набор тестов зависит от: + Python +
    +
    +
    +
    + +
    +
    + Должен быть установлен до: + Zstd +
    +
    +
    +
    + +
    +
    + Необязательные зависимости: + Нет +
    +
    +
    +

    + 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 и Sed +
    +
    +
    +
    + +
    +
    + Требуется во время + выполнения: Нет +
    +
    +
    +
    + +
    +
    + Набор тестов зависит от: + Набор тестов недоступен +
    +
    +
    +
    + +
    +
    + Должен быть установлен до: + Нет +
    +
    +
    +
    + +
    +
    + Необязательные зависимости: + Нет +
    +
    +
    +

    + 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 +
    +
    +
    +
    + +
    +
    + Набор тестов зависит от: + + cmake +
    +
    +
    +
    + +
    +
    + Должен быть установлен до: + 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, + Lz4, Make, Xz и Zlib +
    +
    +
    +
    + +
    +
    + Требуется во время + выполнения: Glibc +
    +
    +
    +
    + +
    +
    + Набор тестов зависит от: + Нет +
    +
    +
    +
    + +
    +
    + Должен быть установлен до: + Binutils, GCC, Libelf и Udev +
    +
    +
    +
    + +
    +
    + Необязательные зависимости: + Нет +
    +
    +
    +
    +
    +
    +
    +

    + Приложение D. Скрипты + загрузки и настройки системы-20240825 +

    +
    +
    +
    +
    +

    + Скрипты в приложении перечислены с указанием каталога, в котором + они обычно находятся. Порядок такой: /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
    +
    +# If HEADLESS is set, use that.  
    +# If file descriptor 1 or 2 (stdout and stderr) is not open or
    +# does not refer to a terminal, consider the script headless.
    +[ ! -t 1 -o ! -t 2 ] && HEADLESS=${HEADLESS:-yes}
    +
    +if [ "x$HEADLESS" != "xyes" ]
    +then 
    +  ## Screen Dimensions
    +  # Find current screen size
    +  if [ -z "${COLUMNS}" ]; then
    +    COLUMNS=$(stty size)
    +    COLUMNS=${COLUMNS##* }
    +  fi
    +else
    +   COLUMNS=80
    +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}"`
    +    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()
    +{
    +    if [ "x$HEADLESS" != "xyes" ]
    +    then 
    +      /bin/echo -n -e "${BMPREFIX}${@}"
    +      /bin/echo -e "${CURS_ZERO}${SUCCESS_PREFIX}${SET_COL}${SUCCESS_SUFFIX}"
    +    else
    +      logmessage=`echo "${@}" | sed 's/\\\033[^a-zA-Z]*.//g'`
    +      /bin/echo -e "${logmessage} OK" 
    +    fi
    +    # 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()
    +{
    +    if [ "x$HEADLESS" != "xyes" ]
    +    then 
    +      /bin/echo -n -e "${BMPREFIX}${@}"
    +      /bin/echo -e "${CURS_ZERO}${SUCCESS_PREFIX}${SET_COL}${SUCCESS_SUFFIX}"
    +    else
    +      echo " OK" 
    +    fi
    +
    +    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()
    +{
    +    if [ "x$HEADLESS" != "xyes" ]
    +    then 
    +      /bin/echo -n -e "${BMPREFIX}${@}"
    +      /bin/echo -e "${CURS_ZERO}${FAILURE_PREFIX}${SET_COL}${FAILURE_SUFFIX}"
    +    else
    +      logmessage=`echo "${@}" | sed 's/\\\033[^a-zA-Z]*.//g'`
    +      /bin/echo -e "${logmessage} FAIL"
    +    fi
    +
    +    # 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()
    +{
    +    if [ "x$HEADLESS" != "xyes" ]
    +    then 
    +      /bin/echo -n -e "${BMPREFIX}${@}"
    +      /bin/echo -e "${CURS_ZERO}${FAILURE_PREFIX}${SET_COL}${FAILURE_SUFFIX}"
    +    else
    +      echo "FAIL"
    +    fi
    +
    +    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()
    +{
    +    if [ "x$HEADLESS" != "xyes" ]
    +    then
    +      /bin/echo -n -e "${BMPREFIX}${@}"
    +      /bin/echo -e "${CURS_ZERO}${WARNING_PREFIX}${SET_COL}${WARNING_SUFFIX}"
    +    else
    +      logmessage=`echo "${@}" | sed 's/\\\033[^a-zA-Z]*.//g'`
    +      /bin/echo -e "${logmessage} WARN"
    +    fi 
    +
    +    # 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()
    +{
    +    if [ "x$HEADLESS" != "xyes" ]
    +    then
    +      /bin/echo -n -e "${BMPREFIX}${@}"
    +      /bin/echo -e "${CURS_ZERO}${SKIP_PREFIX}${SET_COL}${SKIP_SUFFIX}"
    +    else
    +      logmessage=`echo "${@}" | sed 's/\\\033[^a-zA-Z]*.//g'`
    +      /bin/echo "SKIP"
    +    fi
    +
    +    # 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()
    +{
    +    if [ "x$HEADLESS" != "xyes" ]
    +    then
    +      /bin/echo -n -e "${BMPREFIX}${@}"
    +    else
    +      logmessage=`echo "${@}" | sed 's/\\\033[^a-zA-Z]*.//g'`
    +      /bin/echo -n -e "${logmessage}"
    +    fi
    +
    +    # 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()
    +{
    +    if [ "x$HEADLESS" != "xyes" ]
    +    then
    +      /bin/echo -n -e "${@}"
    +    else
    +      logmessage=`echo "${@}" | sed 's/\\\033[^a-zA-Z]*.//g'`
    +      /bin/echo -n -e "${logmessage}"
    +    fi
    +
    +    # 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 -sfn /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/fbcon ] && 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
    +# Update      : Bruce Dubbs - bdubbs AT linuxfromscratch D0T org LFS12.1
    +#               Remove kernel log daemon.  The functionality has been
    +#               merged with syslogd. 
    +#
    +# 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 system log daemon.
    +# Description:         Starts system log daemon.
    +#                      /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
    +      ;;
    +
    +   stop)
    +      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
    +      ;;
    +
    +   *)
    +      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.76, «Udev из + Systemd-256.4». +

    +
    +
    +
    +

    + 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.2-sysv/LFS-BOOK.pdf b/lfs-12.2-sysv/LFS-BOOK.pdf new file mode 100644 index 0000000..3cb30d7 Binary files /dev/null and b/lfs-12.2-sysv/LFS-BOOK.pdf differ diff --git a/lfs-12.2-sysv/appendices/acknowledgments.html b/lfs-12.2-sysv/appendices/acknowledgments.html new file mode 100644 index 0000000..e148328 --- /dev/null +++ b/lfs-12.2-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.2-sysv/appendices/acronymlist.html b/lfs-12.2-sysv/appendices/acronymlist.html new file mode 100644 index 0000000..e8356c9 --- /dev/null +++ b/lfs-12.2-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.2-sysv/appendices/creat-comm.html b/lfs-12.2-sysv/appendices/creat-comm.html new file mode 100644 index 0000000..30e982a --- /dev/null +++ b/lfs-12.2-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.2-sysv/appendices/dependencies.html b/lfs-12.2-sysv/appendices/dependencies.html new file mode 100644 index 0000000..44b3a0a --- /dev/null +++ b/lfs-12.2-sysv/appendices/dependencies.html @@ -0,0 +1,4293 @@ + + + + + + Приложение 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, Diffutils, 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, 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, Pkgconf и 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, Pkgconf, Sed, Xz и + Zlib +
    +
    +
    +
    + +
    +
    + Требуется во время выполнения: + Glibc, Xz и Zlib +
    +
    +
    +
    + +
    +
    + Набор тестов зависит от: + Набор тестов недоступен +
    +
    +
    +
    + +
    +
    + Должен быть установлен до: + Udev +
    +
    +
    +
    + +
    +
    + Необязательные зависимости: + scdoc (для справочных + страниц) +
    +
    +
    +

    + 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 +
    +
    +
    +
    + +
    +
    + Набор тестов зависит от: + Нет +
    +
    +
    +
    + +
    +
    + Должен быть установлен до: + 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) и + Rust-bindgen +
    +
    +
    +

    + Linux + API Headers +

    +
    + +
    +
    + Установка зависит от: + Bash, Binutils, Coreutils, Findutils, GCC, + Glibc, Grep, Gzip, Make, Perl и Sed +
    +
    +
    +
    + +
    +
    + Требуется во время выполнения: + Нет +
    +
    +
    +
    + +
    +
    + Набор тестов зависит от: + Набор тестов недоступен +
    +
    +
    +
    + +
    +
    + Должен быть установлен до: + Нет +
    +
    +
    +
    + +
    +
    + Необязательные зависимости: + Нет +
    +
    +
    +

    + Lz4 +

    +
    + +
    +
    + Установка зависит от: + Bash, Binutils, Coreutils, GCC, Glibc и + Make +
    +
    +
    +
    + +
    +
    + Требуется во время выполнения: + Glibc +
    +
    +
    +
    + +
    +
    + Набор тестов зависит от: + Python +
    +
    +
    +
    + +
    +
    + Должен быть установлен до: + Zstd +
    +
    +
    +
    + +
    +
    + Необязательные зависимости: + Нет +
    +
    +
    +

    + 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 и Sed +
    +
    +
    +
    + +
    +
    + Требуется во время выполнения: + Нет +
    +
    +
    +
    + +
    +
    + Набор тестов зависит от: + Набор тестов недоступен +
    +
    +
    +
    + +
    +
    + Должен быть установлен до: + Нет +
    +
    +
    +
    + +
    +
    + Необязательные зависимости: + Нет +
    +
    +
    +

    + 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 +
    +
    +
    +
    + +
    +
    + Набор тестов зависит от: + + cmake +
    +
    +
    +
    + +
    +
    + Должен быть установлен до: + 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, Lz4, + Make, Xz и Zlib +
    +
    +
    +
    + +
    +
    + Требуется во время выполнения: + Glibc +
    +
    +
    +
    + +
    +
    + Набор тестов зависит от: + Нет +
    +
    +
    +
    + +
    +
    + Должен быть установлен до: + Binutils, GCC, Libelf и Udev +
    +
    +
    +
    + +
    +
    + Необязательные зависимости: + Нет +
    +
    +
    +
    + + + diff --git a/lfs-12.2-sysv/appendices/licenses.html b/lfs-12.2-sysv/appendices/licenses.html new file mode 100644 index 0000000..746245f --- /dev/null +++ b/lfs-12.2-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.2-sysv/appendices/mit.html b/lfs-12.2-sysv/appendices/mit.html new file mode 100644 index 0000000..ddeb2bb --- /dev/null +++ b/lfs-12.2-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.2-sysv/chapter01/askforhelp.html b/lfs-12.2-sysv/chapter01/askforhelp.html new file mode 100644 index 0000000..cf442c1 --- /dev/null +++ b/lfs-12.2-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.2) +

      +
    • +
    • +

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

      +
    • +
    • +

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

      +
    • +
    • +

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

      +
    • +
    • +

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

      +
    • +
    • +

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

      +
    • +
    +
    +
    + [Примечание] +

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

    +

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

    +
    +
    +
    +

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

    +

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

    +
    +
    +

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

    +

    + Как вывод на экран, так и содержимое различных файлов полезны для + определения причины проблем компиляции. Вывод экрана из скрипта + configure и запуска + make может быть + полезен. Необязательно включать весь вывод целиком, но обязательно + включите всю необходимую информацию. Ниже приведен пример + информации, которая должна быть включена в экранный вывод + make: +

    +
    gcc -D ALIASPATH=\"/mnt/lfs/usr/share/locale:.\"
    +-D LOCALEDIR=\"/mnt/lfs/usr/share/locale\"
    +-D LIBDIR=\"/mnt/lfs/usr/lib\"
    +-D INCLUDEDIR=\"/mnt/lfs/usr/include\" -D HAVE_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.2-sysv/chapter01/changelog.html b/lfs-12.2-sysv/chapter01/changelog.html new file mode 100644 index 0000000..8a744f4 --- /dev/null +++ b/lfs-12.2-sysv/chapter01/changelog.html @@ -0,0 +1,1101 @@ + + + + + + 1.3. Журнал изменений + + + + + + + + +

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

    +
    +

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

    +

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

    +
    +

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

    +
      +
    • +

      + 2024-08-23 +

      +
      +
        +
      • +

        + [xry111] - Update to lfs-bootscripts-20240825. Only + trivial non-functional changes. +

        +
      • +
      +
      +
    • +
    • +

      + 2024-08-23 +

      +
      +
        +
      • +

        + [xry111] - Update to lfs-bootscripts-20240823, to fix an + issue causing VT 2-6 not affected by the FONT= setting in + /etc/sysconfig/console. +

        +
      • +
      +
      +
    • +
    • +

      + 2024-08-17 +

      +
      +
        +
      • +

        + [bdubbs] - Update to setuptools-72.2.0. Fixes #5542. +

        +
      • +
      • +

        + [bdubbs] - Update to kmod-33. Fixes #5540. +

        +
      • +
      • +

        + [bdubbs] - Update to binutils-2.43.1. Fixes #5543. +

        +
      • +
      • +

        + [bdubbs] - Update to linux-6.10.5. Fixes #5541. +

        +
      • +
      +
      +
    • +
    • +

      + 2024-08-15 +

      +
      +
        +
      • +

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

        +
      • +
      • +

        + [bdubbs] - Update to pkgconf-2.3.0. Fixes #5537. +

        +
      • +
      • +

        + [bdubbs] - Update to python3-3.12.5. Fixes #5538. +

        +
      • +
      • +

        + [bdubbs] - Update to linux-6.10.4. Fixes #5539. +

        +
      • +
      +
      +
    • +
    • +

      + 2024-08-05 +

      +
      +
        +
      • +

        + [bdubbs] - Update to bash-5.2.32. Fixes #5532. +

        +
      • +
      • +

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

        +
      • +
      • +

        + [bdubbs] - Update to vim-9.1.0660. Addresses #4500. +

        +
      • +
      • +

        + [bdubbs] - Update to binutils-2.43. Fixes #5535. +

        +
      • +
      • +

        + [bdubbs] - Update to linux-6.10.3. Fixes #5534. +

        +
      • +
      • +

        + [bdubbs] - Update to readline-8.2.13. Fixes #5533. +

        +
      • +
      • +

        + [bdubbs] - Update to wheel-0.44.0. Fixes #5536. +

        +
      • +
      +
      +
    • +
    • +

      + 2024-08-01 +

      +
      +
        +
      • +

        + [bdubbs] - Update to gcc-14.2.0. Fixes #5530. +

        +
      • +
      • +

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

        +
      • +
      • +

        + [bdubbs] - Update to glibc-2.40. Fixes #5529. +

        +
      • +
      • +

        + [bdubbs] - Update to iproute2-6.10.0. Fixes #5523. +

        +
      • +
      • +

        + [bdubbs] - Update to linux-6.10.2. Fixes #5521. +

        +
      • +
      • +

        + [bdubbs] - Update to lz4-1.10.0. Fixes #5526. +

        +
      • +
      • +

        + [bdubbs] - Update to meson-1.5.1. Fixes #5527. +

        +
      • +
      • +

        + [bdubbs] - Update to setuptools-72.1.0. Fixes #5531. +

        +
      • +
      • +

        + [bdubbs] - Update to sysklogd-2.6.1. Fixes #5522. +

        +
      • +
      • +

        + [bdubbs] - Update to sysvinit-3.10. Fixes #5528. +

        +
      • +
      +
      +
    • +
    • +

      + 2024-07-15 +

      +
      +
        +
      • +

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

        +
      • +
      • +

        + [bdubbs] - Update to vim-9.1.0580. Addresses #4500. +

        +
      • +
      • +

        + [bdubbs] - Update to automake-1.17. Fixes #5520. +

        +
      • +
      • +

        + [bdubbs] - Update to gdbm-1.24. Fixes #5515. +

        +
      • +
      • +

        + [bdubbs] - Update to linux-6.9.9. Fixes #5517. +

        +
      • +
      • +

        + [bdubbs] - Update to less-661. Fixes #5513. +

        +
      • +
      • +

        + [bdubbs] - Update to meson-1.5.0. Fixes #5519. +

        +
      • +
      • +

        + [bdubbs] - Update to setuptools-70.3.0. Fixes #5514. +

        +
      • +
      • +

        + [bdubbs] - Update to util-linux-2.40.2. Fixes #5516. +

        +
      • +
      +
      +
    • +
    • +

      + 2024-07-01 +

      +
      +
        +
      • +

        + [bdubbs] - Update lfs-bootscripts to only output escape + sequences to a terminal. +

        +
      • +
      +
      +
    • +
    • +

      + 2024-07-01 +

      +
      +
        +
      • +

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

        +
      • +
      • +

        + [bdubbs] - Update to bc-6.7.6. Fixes #5506. +

        +
      • +
      • +

        + [bdubbs] - Update to man-pages-6.9.1. Fixes #5507. +

        +
      • +
      • +

        + [bdubbs] - Update to linux-6.9.7. Fixes #5508. +

        +
      • +
      • +

        + [bdubbs] - Update to sysklogd-2.5.2. Fixes #5509. +

        +
      • +
      • +

        + [bdubbs] - Update to shadow-4.16.0. Fixes #5510. +

        +
      • +
      • +

        + [bdubbs] - Update to setuptools-70.1.1. Fixes #5512. +

        +
      • +
      +
      +
    • +
    • +

      + 2024-06-15 +

      +
      +
        +
      • +

        + [bdubbs] - Update to vim-9.1.0478. Addresses #4500. +

        +
      • +
      • +

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

        +
      • +
      • +

        + [bdubbs] - Update to python3-3.12.4. Fixes #5502. +

        +
      • +
      • +

        + [bdubbs] - Update to perl-5.40.0. Fixes #5503. +

        +
      • +
      • +

        + [bdubbs] - Update to openssl-3.3.1 (Security fix). Fixes + #5500. +

        +
      • +
      • +

        + [bdubbs] - Update to linux-6.9.4. Fixes #5505. +

        +
      • +
      • +

        + [bdubbs] - Update to findutils-4.10.0. Fixes #5499. +

        +
      • +
      +
      +
    • +
    • +

      + 2024-05-31 +

      +
      +
        +
      • +

        + [bdubbs] - Update to meson-1.4.1. Fixes #5498. +

        +
      • +
      • +

        + [bdubbs] - Update to xz-5.6.2. Fixes #5471. +

        +
      • +
      • +

        + [bdubbs] - Add linux-6.9.x compatibility instructions to + udev. Fixes #5496. +

        +
      • +
      • +

        + [bdubbs] - Update to setuptools-70.0.0 (python module). + Fixes #5491. +

        +
      • +
      • +

        + [bdubbs] - Update to ninja-1.12.1. Fixes #5489. +

        +
      • +
      • +

        + [bdubbs] - Update to man-pages-6.8. Fixes #5494. +

        +
      • +
      • +

        + [bdubbs] - Update to linux-6.9.3. Fixes #5491. +

        +
      • +
      • +

        + [bdubbs] - Update to libcap-2.70. Fixes #5493. +

        +
      • +
      • +

        + [bdubbs] - Update to iproute2-6.9.0. Fixes #5492. +

        +
      • +
      • +

        + [bdubbs] - Update to e2fsprogs-1.47.1. Fixes #5495. +

        +
      • +
      +
      +
    • +
    • +

      + 2024-05-13 +

      +
      +
        +
      • +

        + [xry111] - Synchronize coreutils i18n patch from Fedora + to fix a build failure on 32-bit x86 and an alarming + compiler warning on both 32-bit x86 and x86_64 with GCC + 14.1 or later. +

        +
      • +
      +
      +
    • +
    • +

      + 2024-05-11 +

      +
      +
        +
      • +

        + [bdubbs] - Update to vim-9.1.0405. Addresses #4500. +

        +
      • +
      • +

        + [bdubbs] - Update to util-linux-2.40.1. Fixes #5482. +

        +
      • +
      • +

        + [bdubbs] - Update to linux-6.8.9. Fixes #5484. +

        +
      • +
      • +

        + [bdubbs] - Update to jinja2-3.1.4 (Python module). Fixes + #5485. +

        +
      • +
      • +

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

        +
      • +
      • +

        + [bdubbs] - Update to gcc-14.1.0. Fixes #5486. +

        +
      • +
      +
      +
    • +
    • +

      + 2024-05-01 +

      +
      +
        +
      • +

        + [bdubbs] - Add security fix to glibc. Fixes #5481. +

        +
      • +
      • +

        + [bdubbs] - Update to linux-6.8.8. Fixes #5480. +

        +
      • +
      • +

        + [bdubbs] - Update to ncurses-6.5. Fixes #5483. +

        +
      • +
      +
      +
    • +
    • +

      + 2024-04-16 +

      +
      +
        +
      • +

        + [bdubbs] - Make minor change to ifup script output text. +

        +
      • +
      +
      +
    • +
    • +

      + 2024-04-15 +

      +
      +
        +
      • +

        + [bdubbs] - Update to setuptools-69.5.1. Fixes #5478. +

        +
      • +
      • +

        + [bdubbs] - Update to python3-3.12.3. Fixes #5476. +

        +
      • +
      • +

        + [bdubbs] - Update to openssl-3.3.0. Fixes #5475. +

        +
      • +
      • +

        + [bdubbs] - Update to ninja-1.12.0. Fixes #5477. +

        +
      • +
      • +

        + [bdubbs] - Update to man-db-2.12.1. Fixes #5474. +

        +
      • +
      • +

        + [bdubbs] - Update to linux-6.8.6. Fixes #5472. +

        +
      • +
      • +

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

        +
      • +
      • +

        + [bdubbs] - Update to vim-9.1.0330. Addresses #4500. +

        +
      • +
      +
      +
    • +
    • +

      + 2024-03-31 +

      +
      +
        +
      • +

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

        +
      • +
      • +

        + [bdubbs] - Update to zstd-1.5.6. Fixes #5468. +

        +
      • +
      • +

        + [bdubbs] - Update to util-linux-2.40. Fixes #5430. +

        +
      • +
      • +

        + [bdubbs] - Update to shadow-4.15.1. Fixes #5465. +

        +
      • +
      • +

        + [bdubbs] - Update to pkgconf-2.2.0. Fixes #5469. +

        +
      • +
      • +

        + [bdubbs] - Update to linux-6.8.2. Fixes #5467. +

        +
      • +
      • +

        + [bdubbs] - Update to coreutils-9.5. Fixes #5470. +

        +
      • +
      +
      +
    • +
    • +

      + 2024-03-29 +

      +
      +
        +
      • +

        + [bdubbs] - Revert to xz-5.4.6 due to upstream compromise. +

        +
      • +
      +
      +
    • +
    • +

      + 2024-03-25 +

      +
      +
        +
      • +

        + [timtas] - Update to sysvinit-3.09. Fixes #5466. +

        +
      • +
      +
      +
    • +
    • +

      + 2024-03-19 +

      +
      +
        +
      • +

        + [renodr] - Update to iproute2-6.8.0. Fixes #5458. +

        +
      • +
      • +

        + [renodr] - Update to man-pages-6.7. Fixes #5464. +

        +
      • +
      • +

        + [renodr] - Update to Linux-6.8.1. Fixes #5453. +

        +
      • +
      • +

        + [renodr] - Added LZ4 to the book. Fixes #5463. +

        +
      • +
      +
      +
    • +
    • +

      + 2024-03-15 +

      +
      +
        +
      • +

        + [bdubbs] - Update to wheel-0.43.0. Fixes #5459. +

        +
      • +
      • +

        + [bdubbs] - Update to setuptools-69.2.0 (Python module). + Fixes #5462. +

        +
      • +
      • +

        + [bdubbs] - Update to meson-1.4.0. Fixes #5460. +

        +
      • +
      • +

        + [bdubbs] - Update to expat-2.6.2 (Security fix). Fixes + #5461. +

        +
      • +
      • +

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

        +
      • +
      • +

        + [bdubbs] - Update to vim-9.1.0161. Addresses #4500. +

        +
      • +
      • +

        + [bdubbs] - Update to xz-5.6.1. Fixes #5457. +

        +
      • +
      • +

        + [bdubbs] - Update to shadow-4.15.0. Fixes #5456. +

        +
      • +
      • +

        + [bdubbs] - Update to psmisc-23.7. Fixes #5454. +

        +
      • +
      • +

        + [bdubbs] - Update to kmod-32. Fixes #5455. +

        +
      • +
      • +

        + [bdubbs] - Update to elfutils-0.191. Fixes #5451. +

        +
      • +
      +
      +
    • +
    • +

      + 2024-03-02 +

      +
      +
        +
      • +

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

        +
      • +
      • +

        + [bdubbs] - Update to vim-9.1.0145. Addresses #4500. +

        +
      • +
      • +

        + [bdubbs] - Update to xz-5.6.0. Fixes #5447. +

        +
      • +
      • +

        + [bdubbs] - Update to tcl-8.6.14. Fixes #5448. +

        +
      • +
      • +

        + [bdubbs] - Update to shadow-4.14.6. Fixes #5450. +

        +
      • +
      • +

        + [bdubbs] - Update to setuptools-69.1.1. Fixes #5446. +

        +
      • +
      • +

        + [bdubbs] - Update to linux-6.7.7. Fixes #5444. +

        +
      • +
      • +

        + [bdubbs] - Update to libffi-3.4.6. Fixes #5443. +

        +
      • +
      • +

        + [bdubbs] - Update to gettext-0.22.5. Fixes #5445. +

        +
      • +
      • +

        + [bdubbs] - Update to expat-2.6.1. Fixes #5449. +

        +
      • +
      +
      +
    • +
    • +

      + 2024-03-01 +

      +
      +
        +
      • +

        + [bdubbs] - LFS-12.1 released. +

        +
      • +
      +
      +
    • +
    +
    +
    + + + diff --git a/lfs-12.2-sysv/chapter01/chapter01.html b/lfs-12.2-sysv/chapter01/chapter01.html new file mode 100644 index 0000000..580ac11 --- /dev/null +++ b/lfs-12.2-sysv/chapter01/chapter01.html @@ -0,0 +1,101 @@ + + + + + + Глава 1. Введение + + + + + + + + +

    + 1. Введение +

    +
    + +
    + + + diff --git a/lfs-12.2-sysv/chapter01/how.html b/lfs-12.2-sysv/chapter01/how.html new file mode 100644 index 0000000..f0b1aff --- /dev/null +++ b/lfs-12.2-sysv/chapter01/how.html @@ -0,0 +1,183 @@ + + + + + + 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.2-sysv/chapter01/resources.html b/lfs-12.2-sysv/chapter01/resources.html new file mode 100644 index 0000000..d669b6d --- /dev/null +++ b/lfs-12.2-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.2-sysv/chapter01/whatsnew.html b/lfs-12.2-sysv/chapter01/whatsnew.html new file mode 100644 index 0000000..ef79c3e --- /dev/null +++ b/lfs-12.2-sysv/chapter01/whatsnew.html @@ -0,0 +1,346 @@ + + + + + + 1.2. Что нового с момента последнего релиза + + + + + + + + +

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

    +
    +

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

    +
    +

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

    +
      +
    • +

      + Automake-1.17 +

      +
    • +
    • +

      + Bash-5.2.32 +

      +
    • +
    • +

      + Bc-6.7.6 +

      +
    • +
    • +

      + Binutils-2.43.1 +

      +
    • +
    • +

      + Coreutils-9.5 +

      +
    • +
    • +

      + E2fsprogs-1.47.1 +

      +
    • +
    • +

      + Expat-2.6.2 +

      +
    • +
    • +

      + Findutils-4.10.0 +

      +
    • +
    • +

      + GCC-14.2.0 +

      +
    • +
    • +

      + GDBM-1.24 +

      +
    • +
    • +

      + Gettext-0.22.5 +

      +
    • +
    • +

      + Glibc-2.40 +

      +
    • +
    • +

      + Iana-Etc-20240806 +

      +
    • +
    • +

      + IPRoute2-6.10.0 +

      +
    • +
    • +

      + Jinja2-3.1.4 +

      +
    • +
    • +

      + Kmod-33 +

      +
    • +
    • +

      + Less-661 +

      +
    • +
    • +

      + Libcap-2.70 +

      +
    • +
    • +

      + Libelf из Elfutils-0.191 +

      +
    • +
    • +

      + Libffi-3.4.6 +

      +
    • +
    • +

      + Linux-6.10.5 +

      +
    • +
    • +

      + Lz4-1.10.0 +

      +
    • +
    • +

      + Man-DB-2.12.1 +

      +
    • +
    • +

      + Man-pages-6.9.1 +

      +
    • +
    • +

      + Meson-1.5.1 +

      +
    • +
    • +

      + Ncurses-6.5 +

      +
    • +
    • +

      + Ninja-1.12.1 +

      +
    • +
    • +

      + OpenSSL-3.3.1 +

      +
    • +
    • +

      + Perl-5.40.0 +

      +
    • +
    • +

      + Pkgconf-2.3.0 +

      +
    • +
    • +

      + Psmisc-23.7 +

      +
    • +
    • +

      + Python-3.12.5 +

      +
    • +
    • +

      + Readline-8.2.13 +

      +
    • +
    • +

      + Setuptools-72.2.0 +

      +
    • +
    • +

      + Shadow-4.16.0 +

      +
    • +
    • +

      + Sysklogd-2.6.1 +

      +
    • +
    • +

      + Systemd-256.4 +

      +
    • +
    • +

      + SysVinit-3.10 +

      +
    • +
    • +

      + Tcl-8.6.14 +

      +
    • +
    • +

      + Udev из Systemd-256.4 +

      +
    • +
    • +

      + Util-linux-2.40.2 +

      +
    • +
    • +

      + Vim-9.1.0660 +

      +
    • +
    • +

      + Wheel-0.44.0 +

      +
    • +
    • +

      + Xz-5.6.2 +

      +
    • +
    • +

      + Zstd-1.5.6 +

      +
    • +
    +
    +
    +

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

    +
      +
    • +

      + Lz4-1.10.0 +

      +
    • +
    +
    +
    +

    + Удалены: +

    +
      +
    • +

      + bash-5.2.21-upstream_fixes-1.patch +

      +
    • +
    • +

      + readline-8.2-upstream_fixes-3.patch +

      +
    • +
    +
    +
    + + + diff --git a/lfs-12.2-sysv/chapter02/aboutlfs.html b/lfs-12.2-sysv/chapter02/aboutlfs.html new file mode 100644 index 0000000..9de7280 --- /dev/null +++ b/lfs-12.2-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.2-sysv/chapter02/chapter02.html b/lfs-12.2-sysv/chapter02/chapter02.html new file mode 100644 index 0000000..4197830 --- /dev/null +++ b/lfs-12.2-sysv/chapter02/chapter02.html @@ -0,0 +1,110 @@ + + + + + + Глава 2. Подготовка хост-системы + + + + + + + + +

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

    +
    + +
    + + + diff --git a/lfs-12.2-sysv/chapter02/creatingfilesystem.html b/lfs-12.2-sysv/chapter02/creatingfilesystem.html new file mode 100644 index 0000000..940a1f0 --- /dev/null +++ b/lfs-12.2-sysv/chapter02/creatingfilesystem.html @@ -0,0 +1,166 @@ + + + + + + 2.5. Создание файловой системы на разделе + + + + + + + + +

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

    +
    +

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

    +

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

    +
    +
    +
    + ext2 +
    +
    +

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

    +
    +
    + ext3 +
    +
    +

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

    +
    +
    + ext4 +
    +
    +

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

    +
    +
    +
    +

    + Другие файловые системы, включая FAT32, NTFS, 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.2-sysv/chapter02/creatingpartition.html b/lfs-12.2-sysv/chapter02/creatingpartition.html new file mode 100644 index 0000000..421d083 --- /dev/null +++ b/lfs-12.2-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.2-sysv/chapter02/hostreqs.html b/lfs-12.2-sysv/chapter02/hostreqs.html new file mode 100644 index 0000000..9b70ab4 --- /dev/null +++ b/lfs-12.2-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.43.1 не рекомендуется, так как она не + тестировалась) +

      +
    • +
    • +

      + 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++ (версии выше 14.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.2-sysv/chapter02/introduction.html b/lfs-12.2-sysv/chapter02/introduction.html new file mode 100644 index 0000000..e057987 --- /dev/null +++ b/lfs-12.2-sysv/chapter02/introduction.html @@ -0,0 +1,87 @@ + + + + + + 2.1. Введение + + + + + + + + +

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

    +
    +

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

    +
    + + + diff --git a/lfs-12.2-sysv/chapter02/mounting.html b/lfs-12.2-sysv/chapter02/mounting.html new file mode 100644 index 0000000..5c57c3b --- /dev/null +++ b/lfs-12.2-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.2-sysv/chapter02/stages.html b/lfs-12.2-sysv/chapter02/stages.html new file mode 100644 index 0000000..74dfa31 --- /dev/null +++ b/lfs-12.2-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.2-sysv/chapter03/chapter03.html b/lfs-12.2-sysv/chapter03/chapter03.html new file mode 100644 index 0000000..149d655 --- /dev/null +++ b/lfs-12.2-sysv/chapter03/chapter03.html @@ -0,0 +1,97 @@ + + + + + + Глава 3. Пакеты и патчи + + + + + + + + +

    + 3. Пакеты и патчи +

    +
    +
    +

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

    + +
    +
    + + + diff --git a/lfs-12.2-sysv/chapter03/introduction.html b/lfs-12.2-sysv/chapter03/introduction.html new file mode 100644 index 0000000..084320c --- /dev/null +++ b/lfs-12.2-sysv/chapter03/introduction.html @@ -0,0 +1,199 @@ + + + + + + 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
    +

    + Сделайте этот каталог доступным для записи и установите sticky bit + (дословно "липкий бит"). Атрибут «Sticky bit» означает, что даже если несколько + пользователей имеют право на запись в каталог, только владелец файла + может удалить файл в таком каталоге. Следующая команда активирует + режимы записи и sticky bit: +

    +
    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.2-sysv/chapter03/packages.html b/lfs-12.2-sysv/chapter03/packages.html new file mode 100644 index 0000000..4798ea9 --- /dev/null +++ b/lfs-12.2-sysv/chapter03/packages.html @@ -0,0 +1,1773 @@ + + + + + + 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.17) - 1,614 + KB: +
    +
    +

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

    +

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

    +

    + Контрольная сумма MD5: 7ab3a02318fee6f5bd42adfc369abf10 +

    +
    +
    + Bash (5.2.32) - 10,697 + KB: +
    +
    +

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

    +

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

    +

    + Контрольная сумма MD5: f204835b2e06c06e37b5ad776ff907f4 +

    +
    +
    + Bc (6.7.6) - 463 + KB: +
    +
    +

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

    +

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

    +

    + Контрольная сумма MD5: a47aa5e4e7395fbcd159a9228613b97b +

    +
    +
    + Binutils (2.43.1) - 27,514 KB: +
    +
    +

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

    +

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

    +

    + Контрольная сумма MD5: 9202d02925c30969d1917e4bad5a2320 +

    +
    +
    + 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.5) - 5,867 + KB: +
    +
    +

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

    +

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

    +

    + Контрольная сумма MD5: e99adfa059a63db3503cc71f3d151e31 +

    +
    +
    + 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.1) - 9,720 KB: +
    +
    +

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

    +

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

    +

    + Контрольная сумма MD5: 75e6d1353cbe6d5728a98fb0267206cb +

    +
    +
    + Elfutils (0.191) - 9,092 + KB: +
    +
    +

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

    +

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

    +

    + Контрольная сумма MD5: 636547248fb3fae58ec48030298d3ef7 +

    +
    +
    + Expat (2.6.2) - 474 + KB: +
    +
    +

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

    +

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

    +

    + Контрольная сумма MD5: 0cb75c8feb842c0794ba89666b762a2d +

    +
    +
    + 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.10.0) - 2,189 KB: +
    +
    +

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

    +

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

    +

    + Контрольная сумма MD5: 870cfd71c07d37ebe56f9f4aaf4ad872 +

    +
    +
    + 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 (14.2.0) - 90,144 + KB: +
    +
    +

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

    +

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

    +

    + Контрольная сумма MD5: 2268420ba02dc01821960e274711bde0 +

    +
    +
    + GDBM (1.24) - 1,168 + KB: +
    +
    +

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

    +

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

    +

    + Контрольная сумма MD5: c780815649e52317be48331c1773e987 +

    +
    +
    + Gettext (0.22.5) - 10,031 KB: +
    +
    +

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

    +

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

    +

    + Контрольная сумма MD5: 3ae5580599d84be93e6213930facb2db +

    +
    +
    + Glibc (2.40) - 18,313 + KB: +
    +
    +

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

    +

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

    +

    + Контрольная сумма MD5: b390feef233022114950317f10c4fa97 +

    +
    + [Примечание] +

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

    +

    + Разработчики Glibc поддерживают + Git ветку содержащую исправления, которые заслуживают + внимания для Glibc-2.40 но, к сожалению, выпущенные после + релиза Glibc-2.40. Редакторы 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 (20240806) - 590 KB: +
    +
    +

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

    +

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

    +

    + Контрольная сумма MD5: ea3c37c00d22f1159fc3b7d988de8476 +

    +
    +
    + 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.10.0) - 900 + KB: +
    +
    +

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

    +

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

    +

    + Контрольная сумма MD5: 6282e47de9c5b230e83537fba7181c9c +

    +
    +
    + Jinja2 (3.1.4) - 235 + KB: +
    +
    +

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

    +

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

    +

    + Контрольная сумма MD5: 02ca9a6364c92e83d14b037bef4732bc +

    +
    +
    + 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 (33) - 503 + KB: +
    +
    +

    + Домашняя страница: https://github.com/kmod-project/kmod +

    +

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

    +

    + Контрольная сумма MD5: c451c4aa61521adbe8af147f498046f8 +

    +
    +
    + Less (661) - 634 + KB: +
    +
    +

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

    +

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

    +

    + Контрольная сумма MD5: 44f54b6313c5d71fa1ac224d8d84766a +

    +
    +
    + LFS-Bootscripts (20240825) - 34 KB: +
    +
    +

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

    +

    + Контрольная сумма MD5: e121b5920071ae9a1351f3f44f8b1e77 +

    +
    +
    + Libcap (2.70) - 187 + KB: +
    +
    +

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

    +

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

    +

    + Контрольная сумма MD5: df0e20c6eeca849347b87d5d6a8870c0 +

    +
    +
    + Libffi (3.4.6) - 1,360 + KB: +
    +
    +

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

    +

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

    +

    + Контрольная сумма MD5: b9cac6c5997dca2b3787a59ede34e0eb +

    +
    +
    + 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.10.5) - 141,739 + KB: +
    +
    +

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

    +

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

    +

    + Контрольная сумма MD5: 276ef1f11ed3713ec5d6f506ff55ac12 +

    +
    + [Примечание] +

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

    +

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

    +

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

    +
    +
    +
    + Lz4 (1.10.0) - 379 + KB: +
    +
    +

    + Домашняя страница: https://lz4.org/ +

    +

    + Ссылка на загрузку: + https://github.com/lz4/lz4/releases/download/v1.10.0/lz4-1.10.0.tar.gz +

    +

    + Контрольная сумма MD5: dead9f5f1966d9ae56e1e32761e4e675 +

    +
    +
    + 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.1) - 1,994 + KB: +
    +
    +

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

    +

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

    +

    + Контрольная сумма MD5: 7b044e5020aab89db41ac7ee59d6d84a +

    +
    +
    + Man-pages (6.9.1) - 1,821 KB: +
    +
    +

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

    +

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

    +

    + Контрольная сумма MD5: 4d56775b6cce4edf1e496249e7c01c1a +

    +
    +
    + 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.5.1) - 2,205 + KB: +
    +
    +

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

    +

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

    +

    + Контрольная сумма MD5: c4f2b3e5ea632685f61ba1b833c4905c +

    +
    +
    + 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.5) - 2,156 + KB: +
    +
    +

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

    +

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

    +

    + Контрольная сумма MD5: ac2d2629296f04c8537ca706b6977687 +

    +
    +
    + Ninja (1.12.1) - 235 + KB: +
    +
    +

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

    +

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

    +

    + Контрольная сумма MD5: 6288992b05e593a391599692e2f7e490 +

    +
    +
    + OpenSSL (3.3.1) - 17,633 + KB: +
    +
    +

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

    +

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

    +

    + Контрольная сумма MD5: 8a4342b399c18f870ca6186299195984 +

    +
    +
    + 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.40.0) - 13,481 + KB: +
    +
    +

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

    +

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

    +

    + Контрольная сумма MD5: cfe14ef0709b9687f9c514042e8e1e82 +

    +
    +
    + Pkgconf (2.3.0) - 309 + KB: +
    +
    +

    + Домашняя страница: https://github.com/pkgconf/pkgconf +

    +

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

    +

    + Контрольная сумма MD5: 833363e77b5bed0131c7bc4cc6f7747b +

    +
    +
    + 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.7) - 423 + KB: +
    +
    +

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

    +

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

    +

    + Контрольная сумма MD5: 53eae841735189a896d614cba440eb10 +

    +
    +
    + Python (3.12.5) - 19,944 + KB: +
    +
    +

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

    +

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

    +

    + Контрольная сумма MD5: 02c7d269e077f4034963bba6befdc715 +

    +
    +
    + Python Documentation (3.12.5) - 8,188 KB: +
    +
    +

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

    +

    + Контрольная сумма MD5: 52274d813236ca4a972fb6988480dc56 +

    +
    +
    + Readline (8.2.13) - 2,974 KB: +
    +
    +

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

    +

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

    +

    + Контрольная сумма MD5: 05080bf3801e6874bb115cd6700b708f +

    +
    +
    + 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 (72.2.0) - 2,363 KB: +
    +
    +

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

    +

    + Ссылка на загрузку: + https://pypi.org/packages/source/s/setuptools/setuptools-72.2.0.tar.gz +

    +

    + Контрольная сумма MD5: 2e0ffd0f6fc632a11442b79d9b1c68bd +

    +
    +
    + Shadow (4.16.0) - 2,154 + KB: +
    +
    +

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

    +

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

    +

    + Контрольная сумма MD5: eb70bad3316d08f0d3bb3d4bbeccb3b4 +

    +
    +
    + Sysklogd (2.6.1) - 452 + KB: +
    +
    +

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

    +

    + Ссылка на загрузку: + https://github.com/troglobit/sysklogd/releases/download/v2.6.1/sysklogd-2.6.1.tar.gz +

    +

    + Контрольная сумма MD5: dcf0836a0fcc6568efaad230850d9c86 +

    +
    +
    + Systemd (256.4) - 15,291 + KB: +
    +
    +

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

    +

    + Ссылка на загрузку: + https://github.com/systemd/systemd/archive/v256.4/systemd-256.4.tar.gz +

    +

    + Контрольная сумма MD5: 03bd1ff158ec0bc55428c77a8f8495bd +

    +
    +
    + Systemd Man Pages (256.4) - 676 KB: +
    +
    +

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

    +

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

    +

    + Контрольная сумма MD5: 8dbcf0ff0d8e5e9d3565f9d2fc153310 +

    +
    + [Примечание] +

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

    +

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

    +
    +
    +
    + SysVinit (3.10) - 235 + KB: +
    +
    +

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

    +

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

    +

    + Контрольная сумма MD5: b8fbe11062cf16d3b6a3709b7f6978d2 +

    +
    +
    + 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.14) - 11,355 + KB: +
    +
    +

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

    +

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

    +

    + Контрольная сумма MD5: c30b57c6051be28fa928d09aca82841e +

    +
    +
    + Tcl Documentation (8.6.14) - 1,167 KB: +
    +
    +

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

    +

    + Контрольная сумма MD5: 5467198f8d57c54835bf80b98ffb0170 +

    +
    +
    + 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.40.2) - 8,648 KB: +
    +
    +

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

    +

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

    +

    + Контрольная сумма MD5: 88faefc8fefced097e58142077a3d14e +

    +
    +
    + Vim (9.1.0660) - 17,629 + KB: +
    +
    +

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

    +

    + Ссылка на загрузку: + https://github.com/vim/vim/archive/v9.1.0660/vim-9.1.0660.tar.gz +

    +

    + Контрольная сумма MD5: c512a99b3704f193be1a181cc644b2b2 +

    +
    + [Примечание] +

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

    +

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

    +
    +
    +
    + Wheel (0.44.0) - 99 + KB: +
    +
    +

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

    +

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

    +

    + Контрольная сумма MD5: 440ff4fe51579b7ed16f02af8f8d9494 +

    +
    +
    + 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.6.2) - 1,277 + KB: +
    +
    +

    + Домашняя страница: https://tukaani.org/xz +

    +

    + Ссылка на загрузку: + https://github.com//tukaani-project/xz/releases/download/v5.6.2/xz-5.6.2.tar.xz +

    +

    + Контрольная сумма MD5: bbf73fb28425cebb854328599f85c4cf +

    +
    +
    + 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.6) - 2,351 + KB: +
    +
    +

    + Домашняя страница: https://facebook.github.io/zstd/ +

    +

    + Ссылка на загрузку: + https://github.com/facebook/zstd/releases/download/v1.5.6/zstd-1.5.6.tar.gz +

    +

    + Контрольная сумма MD5: 5a473726b3445d0e5d6296afd1ab6854 +

    +
    +
    +
    +
    +

    + Общий размер пакетов: примерно 517 MB +

    +
    + + + diff --git a/lfs-12.2-sysv/chapter03/patches.html b/lfs-12.2-sysv/chapter03/patches.html new file mode 100644 index 0000000..9786e33 --- /dev/null +++ b/lfs-12.2-sysv/chapter03/patches.html @@ -0,0 +1,194 @@ + + + + + + 3.3. Необходимые патчи + + + + + + + + +

    + 3.3. + Необходимые патчи +

    +
    +

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

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

    + Ссылка на загрузку: + https://mirror.linuxfromscratch.ru/patches/lfs/12.2/bzip2-1.0.8-install_docs-1.patch +

    +

    + Контрольная сумма MD5: 6a5ac7e89b791aae556de0f745916f7f +

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

    + Ссылка на загрузку: + https://mirror.linuxfromscratch.ru/patches/lfs/12.2/coreutils-9.5-i18n-2.patch +

    +

    + Контрольная сумма MD5: 58961caf5bbdb02462591fa506c73b6d +

    +
    +
    + Expect GCC14 Patch - 7.8 + KB: +
    +
    +

    + Download: + https://mirror.linuxfromscratch.ru/patches/lfs/12.2/expect-5.45.4-gcc14-1.patch +

    +

    + MD5 sum: 0b8b5ac411d011263ad40b0664c669f0 +

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

    + Ссылка на загрузку: + https://mirror.linuxfromscratch.ru/patches/lfs/12.2/glibc-2.40-fhs-1.patch +

    +

    + Контрольная сумма MD5: 9a5997c3452909b1769918c759eff8a2 +

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

    + Ссылка на загрузку: + https://mirror.linuxfromscratch.ru/patches/lfs/12.2/kbd-2.6.4-backspace-1.patch +

    +

    + Контрольная сумма MD5: f75cca16a38da6caa7d52151f7136895 +

    +
    +
    + SysVinit Consolidated Patch - 2.5 KB: +
    +
    +

    + Ссылка на загрузку: + https://mirror.linuxfromscratch.ru/patches/lfs/12.2/sysvinit-3.10-consolidated-1.patch +

    +

    + Контрольная сумма MD5: 17ffccbb8e18c39e8cedc32046f3a475 +

    +
    +
    +
    +
    +

    + Общий размер этих патчей: примерно 190.7 KB +

    +

    + Помимо указанных выше обязательных исправлений, существует ряд + необязательных патчей, созданных сообществом LFS. Эти необязательные + исправления решают незначительные проблемы или включают функции, + которые не включены по умолчанию. Не стесняйтесь просматривать базу + данных исправлений, расположенную по адресу https://mirror.linuxfromscratch.ru/patches/downloads/, + и применять патчи, необходимые вашей системе. +

    +
    + + + diff --git a/lfs-12.2-sysv/chapter04/aboutsbus.html b/lfs-12.2-sysv/chapter04/aboutsbus.html new file mode 100644 index 0000000..82bd9b9 --- /dev/null +++ b/lfs-12.2-sysv/chapter04/aboutsbus.html @@ -0,0 +1,184 @@ + + + + + + 4.5. О SBU (Стандартная единица времени сборки) + + + + + + + + +

    + 4.5. О SBU + (Стандартная единица времени сборки) +

    +
    +

    + Многие люди хотели бы знать заранее, сколько примерно времени + потребуется для компиляции и установки каждого пакета. Поскольку + Linux From Scratch может быть собран на различных системах, + невозможно дать точную оценку времени. Сборка самого большого пакета + (gcc) займет около 5 минут на быстрых системах, но может занять + несколько дней на более медленных компьютерах! Вместо фактического + времени в книге используется показатель "стандартная единица времени + сборки" (SBU). +

    +

    + Показатель SBU рассчитывается следующим образом. Первым пакетом, + который нужно скомпилировать, является binutils в Глава 5. Время, необходимое + для компиляции этого пакета с использованием одного ядра, будет + называться стандартной единицей времени сборки или SBU. Время + компиляции остальных пакетов будет рассчитано относительно этого + времени. +

    +

    + Например, рассмотрим пакет, время компиляции которого составляет 4,5 + SBU. Это означает, что если вашей системе потребовалось 4 минуты для + компиляции и сборки первого прохода binutils, то для сборки этого + пакета потребуется примерно 18 + минут. К счастью, в большинстве случаев, время сборки меньше, чем у + binutils. +

    +

    + В целом, величина SBU не совсем точна, поскольку она зависит от + множества факторов, начиная от версии GCC хост-системы. Она приведены + здесь, чтобы дать оценку того, сколько времени может потребоваться + для сборки пакета, но в некоторых случаях цифры могут отличаться на + десятки минут. +

    +

    + В современных материнских платах есть возможность управлять тактовой + частотой процессора. Это можно сделать с помощью команды, такой как, + powerprofilesctl. + Данная возможность отсутствует в LFS, но может быть доступна в + хост-дистрибутиве. После сборки LFS управление производительностью и + электропитанием можно добавить в систему с помощью инструкций, + описанных на странице + BLFS power-profiles-daemon. +

    +

    + Перед измерением времени сборки любого пакета рекомендуется + задействовать профиль энергопотребления системы, настроенный на + максимальную производительность (и максимальное энергопотребление). +

    +

    + В противном случае измеренное значение SBU может быть неточным, + поскольку система может по-разному реагировать на сборку binutils-pass1 или других + пакетов. +

    +

    + Имейте в виду, что даже если для обоих пакетов используется один и + тот же профиль, все равно могут возникнуть существенные неточности, + поскольку система может реагировать медленнее, если система + простаивает при запуске процедуры сборки. Установка для профиля + питания режима «производительность» сведет к минимуму эту + проблему. И, очевидно, это также ускорит сборку LFS. +

    +

    + Если powerprofilesctl + доступен, введите команду powerprofilesctl set performance, + чтобы выбрать профиль производительность. Некоторые дистрибутивы для + управления профилями предоставляют команду tuned-adm вместо powerprofilesctl, в этих + дистрибутивах введите команду tuned-adm + profile throughput-performance, чтобы выбрать профиль + производительность. +

    +
    + [Примечание] +

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

    +

    + Когда используется несколько ядер, единицы измерения SBU будут + различаться еще больше, чем обычно. В некоторых случаях make просто + завершится ошибкой. Анализ выходных данных процесса сборки также + будет более сложным, поскольку строки разных потоков будут + чередоваться. Если вы столкнулись с проблемой на этапе сборки, + вернитесь к сборке на одном ядре, чтобы проанализировать сообщения + об ошибках. +

    +

    + Представленные здесь значения времени для всех пакетов (за + исключением binutils-pass1, который + собирается на одном ядре) рассчитаны при использовании четырех ядер + (-j4). Время, указанное в главе 8, также включает время выполнения + регрессионных тестов для пакета, если не указано иное. +

    +
    +
    + + + diff --git a/lfs-12.2-sysv/chapter04/abouttestsuites.html b/lfs-12.2-sysv/chapter04/abouttestsuites.html new file mode 100644 index 0000000..694809e --- /dev/null +++ b/lfs-12.2-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.2/, + чтобы проверить, ожидаются ли сбои. Этот сайт актуален для всех + наборов тестов, описанных в книге. +

    +
    + + + diff --git a/lfs-12.2-sysv/chapter04/addinguser.html b/lfs-12.2-sysv/chapter04/addinguser.html new file mode 100644 index 0000000..871c9f0 --- /dev/null +++ b/lfs-12.2-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.2-sysv/chapter04/chapter04.html b/lfs-12.2-sysv/chapter04/chapter04.html new file mode 100644 index 0000000..4aeb69b --- /dev/null +++ b/lfs-12.2-sysv/chapter04/chapter04.html @@ -0,0 +1,108 @@ + + + + + + Глава 4. Заключительный этап подготовки + + + + + + + + +

    + 4. + Заключительный этап подготовки +

    +
    + +
    + + + diff --git a/lfs-12.2-sysv/chapter04/creatingminlayout.html b/lfs-12.2-sysv/chapter04/creatingminlayout.html new file mode 100644 index 0000000..ff6e1d2 --- /dev/null +++ b/lfs-12.2-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.2-sysv/chapter04/introduction.html b/lfs-12.2-sysv/chapter04/introduction.html new file mode 100644 index 0000000..63acdf2 --- /dev/null +++ b/lfs-12.2-sysv/chapter04/introduction.html @@ -0,0 +1,92 @@ + + + + + + 4.1. Введение + + + + + + + + +

    + 4.1. + Введение +

    +
    +

    + В этой главе мы выполним несколько дополнительных настроек для + подготовки к сборке временной системы. Мы создадим несколько + каталогов в $LFS (в котором установим + временные инструменты), добавим непривилегированного пользователя и + настроим окружение для этого пользователя. Кроме этого, будут даны + пояснения по стандартной единице времени сборки, или «SBU», которую мы + используем для измерения времени необходимого для сборки пакетов LFS, + и предоставим некоторую информацию о наборах тестов. +

    +
    + + + diff --git a/lfs-12.2-sysv/chapter04/settingenvironment.html b/lfs-12.2-sysv/chapter04/settingenvironment.html new file mode 100644 index 0000000..9cacc02 --- /dev/null +++ b/lfs-12.2-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.36, «Bash-5.2.32», не + настроен на загрузку или выполнение /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.2-sysv/chapter05/binutils-pass1.html b/lfs-12.2-sysv/chapter05/binutils-pass1.html new file mode 100644 index 0000000..fc7cd08 --- /dev/null +++ b/lfs-12.2-sysv/chapter05/binutils-pass1.html @@ -0,0 +1,282 @@ + + + + + + 5.2. Binutils-2.43.1 - Проход 1 + + + + + + + + +

    + 5.2. + Binutils-2.43.1 - Проход 1 +

    +
    +
    +

    + Пакет Binutils содержит компоновщик, ассемблер и другие инструменты + для работы с объектными файлами. +

    +
    +
    +
    + Приблизительное время сборки: + 1 SBU +
    +
    + Требуемое дисковое + пространство: 677 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-new-dtags  \
    +             --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-new-dtags +
    +
    +

    + Этот параметр заставляет компоновщик использовать тег + «runpath» для встраивания путей поиска + библиотек в исполняемые файлы и общие библиотеки вместо + традиционного тега «rpath». Это упрощает отладку + динамически подключаемых исполняемых файлов и устраняет + потенциальные проблемы в наборах тестов некоторых пакетов. +

    +
    +
    + --enable-default-hash-style=gnu +
    +
    +

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

    +
    +
    +
    +

    + Скомпилируйте пакет: +

    +
    make
    +

    + Установите пакет: +

    +
    make install
    +
    +
    +

    + Подробная информация об этом пакете находится в Раздел 8.20.2, + «Содержимое пакета Binutils.» +

    +
    +
    + + + diff --git a/lfs-12.2-sysv/chapter05/chapter05.html b/lfs-12.2-sysv/chapter05/chapter05.html new file mode 100644 index 0000000..59cc3ac --- /dev/null +++ b/lfs-12.2-sysv/chapter05/chapter05.html @@ -0,0 +1,110 @@ + + + + + + Глава 5. Сборка кросс-тулчейна + + + + + + + + +

    + 5. Сборка + кросс-тулчейна +

    +
    + +
    + + + diff --git a/lfs-12.2-sysv/chapter05/gcc-libstdc++.html b/lfs-12.2-sysv/chapter05/gcc-libstdc++.html new file mode 100644 index 0000000..cd4082d --- /dev/null +++ b/lfs-12.2-sysv/chapter05/gcc-libstdc++.html @@ -0,0 +1,214 @@ + + + + + + 5.6. Libstdc++ из GCC-14.2.0 + + + + + + + + +

    + 5.6. Libstdc++ + из GCC-14.2.0 +

    +
    +
    +

    + Libstdc++ — это стандартная библиотека C++. Она нужна для + компиляции кода C++ (часть GCC написана на C++), когда мы собирали + GCC-Проход 1, нам пришлось + отложить её установку, потому что она зависит от библиотеки Glibc, + которой еще не было в целевом каталоге. +

    +
    +
    +
    + Приблизительное время сборки: + 0.2 SBU +
    +
    + Требуемое дисковое + пространство: 1.2 GB +
    +
    +
    +
    +
    +

    + 5.6.1. Установка библиотеки Libstdc++ +

    +
    + [Примечание] +

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

    +

    + Libstdc++ является частью + исходников GCC. Сначала вы должны распаковать архив GCC и перейти + в каталог gcc-14.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++/14.2.0
    +
    +

    + Значение параметров настройки: +

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

    + Указывает, что должен использоваться кросс-компилятор, + который мы только что собрали, вместо того, который находится + в /usr/bin. +

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

    + Этот аргумент предотвращает установку предварительно + скомпилированных include-файлов, которые на данном этапе не + нужны. +

    +
    +
    + --with-gxx-include-dir=/tools/$LFS_TGT/include/c++/14.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++/14.2.0. + Комбинация переменной DESTDIR (в приведенной ниже + команде make + install) и этого аргумента обеспечивает + установку заголовочных файлов туда. +

    +
    +
    +
    +

    + Скомпилируйте Libstdc++, выполнив: +

    +
    make
    +

    + Установите библиотеку: +

    +
    make DESTDIR=$LFS install
    +

    + Удалите архивные файлы libtool, поскольку они потенциально опасны + при кросс-компиляции: +

    +
    rm -v $LFS/usr/lib/lib{stdc++{,exp,fs},supc++}.la
    +
    +
    +

    + Подробная информация об этом пакете приведена в Раздел 8.29.2, «Содержимое + пакета GCC.» +

    +
    +
    + + + diff --git a/lfs-12.2-sysv/chapter05/gcc-pass1.html b/lfs-12.2-sysv/chapter05/gcc-pass1.html new file mode 100644 index 0000000..97b8075 --- /dev/null +++ b/lfs-12.2-sysv/chapter05/gcc-pass1.html @@ -0,0 +1,332 @@ + + + + + + 5.3. GCC-14.2.0 - Проход 1 + + + + + + + + +

    + 5.3. + GCC-14.2.0 - Проход 1 +

    +
    +
    +

    + Пакет GCC содержит коллекцию компиляторов GNU, которая включает + компиляторы C и C++. +

    +
    +
    +
    + Приблизительное время сборки: + 3.2 SBU +
    +
    + Требуемое дисковое + пространство: 4.9 GB +
    +
    +
    +
    +
    +

    + 5.3.1. Установка кросс-пакета GCC +

    +

    + Для GCC требуются пакеты GMP, MPFR и MPC. Поскольку эти пакеты + могут отсутствовать в дистрибутиве вашего хоста, они будут собраны + с помощью GCC. Распакуйте каждый пакет в исходный каталог GCC и + переименуйте получившиеся каталоги, чтобы процедуры сборки GCC + использовали их автоматически: +

    +
    + [Примечание] +

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

    +

    + В этой главе часто возникают недоразумения, хотя применяются те + же процедуры, что и в любой другой главе, следуйте инструкции + которую получили ранее (Инструкции по + сборке пакетов). Сначала распакуйте пакет gcc-14.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.40 \
    +    --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.40 +
    +
    +

    + Этот параметр указывает версию 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.29.2, «Содержимое + пакета GCC.» +

    +
    +
    + + + diff --git a/lfs-12.2-sysv/chapter05/glibc.html b/lfs-12.2-sysv/chapter05/glibc.html new file mode 100644 index 0000000..5b50dc2 --- /dev/null +++ b/lfs-12.2-sysv/chapter05/glibc.html @@ -0,0 +1,374 @@ + + + + + + 5.5. Glibc-2.40 + + + + + + + + +

    + 5.5. Glibc-2.40 +

    +
    +
    +

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

    +
    +
    +
    + Приблизительное время сборки: + 1.3 SBU +
    +
    + Требуемое дисковое + пространство: 828 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.40-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.2-sysv/chapter05/introduction.html b/lfs-12.2-sysv/chapter05/introduction.html new file mode 100644 index 0000000..cd72263 --- /dev/null +++ b/lfs-12.2-sysv/chapter05/introduction.html @@ -0,0 +1,94 @@ + + + + + + 5.1. Введение + + + + + + + + +

    + 5.1. + Введение +

    +
    +

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

    +

    + Программы, скомпилированные в этой главе, будут установлены в каталог + $LFS/tools, чтобы они были отделены от + файлов, установленных в следующих главах. Библиотеки, же, + устанавливаются на свое постоянное место, поскольку они относятся к + системе, которую мы хотим создать. +

    +
    + + + diff --git a/lfs-12.2-sysv/chapter05/linux-headers.html b/lfs-12.2-sysv/chapter05/linux-headers.html new file mode 100644 index 0000000..a6f4570 --- /dev/null +++ b/lfs-12.2-sysv/chapter05/linux-headers.html @@ -0,0 +1,315 @@ + + + + + + 5.4. Заголовочные файлы Linux-6.10.5 API + + + + + + + + +

    + 5.4. + Заголовочные файлы Linux-6.10.5 API +

    +
    +
    +

    + Заголовочные файлы Linux API (в linux-6.10.5.tar.xz) предоставляют + API ядра для использования Glibc. +

    +
    +
    +
    + Приблизительное время сборки: + менее 0.1 SBU +
    +
    + Требуемое дисковое + пространство: 1.6 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.2-sysv/chapter06/bash.html b/lfs-12.2-sysv/chapter06/bash.html new file mode 100644 index 0000000..3444195 --- /dev/null +++ b/lfs-12.2-sysv/chapter06/bash.html @@ -0,0 +1,152 @@ + + + + + + 6.4. Bash-5.2.32 + + + + + + + + +

    + 6.4. Bash-5.2.32 +

    +
    +
    +

    + Пакет 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              \
    +            bash_cv_strtold_broken=no
    +
    +

    + Значение параметров настройки: +

    +
    +
    + --without-bash-malloc +
    +
    +

    + Этот параметр отключает использование функции распределения + памяти (malloc) Bash, которая, + как известно, вызывает ошибки сегментации. Если опция + отключена, Bash будет использовать функции malloc из Glibc, которые более стабильны. +

    +
    +
    +
    +

    + Скомпилируйте пакет: +

    +
    make
    +

    + Установите пакет: +

    +
    make DESTDIR=$LFS install
    +

    + Создайте символическую ссылку для программ, которые используют + sh как оболочку: +

    +
    ln -sv bash $LFS/bin/sh
    +
    +
    +

    + Подробная информация об этом пакете находится в Раздел 8.36.2, «Содержимое + пакета Bash.» +

    +
    +
    + + + diff --git a/lfs-12.2-sysv/chapter06/binutils-pass2.html b/lfs-12.2-sysv/chapter06/binutils-pass2.html new file mode 100644 index 0000000..52fb10b --- /dev/null +++ b/lfs-12.2-sysv/chapter06/binutils-pass2.html @@ -0,0 +1,183 @@ + + + + + + 6.17. Binutils-2.43.1 - Проход 2 + + + + + + + + +

    + 6.17. Binutils-2.43.1 - Проход 2 +

    +
    +
    +

    + Пакет Binutils содержит компоновщик, ассемблер и другие инструменты + для работы с объектными файлами. +

    +
    +
    +
    + Приблизительное время сборки: + 0.4 SBU +
    +
    + Требуемое дисковое + пространство: 549 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-new-dtags         \
    +    --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.20.2, + «Содержимое пакета Binutils.» +

    +
    +
    + + + diff --git a/lfs-12.2-sysv/chapter06/chapter06.html b/lfs-12.2-sysv/chapter06/chapter06.html new file mode 100644 index 0000000..5d1dfee --- /dev/null +++ b/lfs-12.2-sysv/chapter06/chapter06.html @@ -0,0 +1,145 @@ + + + + + + Глава 6. Кросс-Компиляция временных инструментов + + + + + + + + +

    + 6. + Кросс-Компиляция временных инструментов +

    +
    +
    +

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

    + +
    +
    + + + diff --git a/lfs-12.2-sysv/chapter06/coreutils.html b/lfs-12.2-sysv/chapter06/coreutils.html new file mode 100644 index 0000000..d071333 --- /dev/null +++ b/lfs-12.2-sysv/chapter06/coreutils.html @@ -0,0 +1,157 @@ + + + + + + 6.5. Coreutils-9.5 + + + + + + + + +

    + 6.5. + Coreutils-9.5 +

    +
    +
    +

    + Пакет Coreutils содержит основные утилиты, необходимые каждой + операционной системе. +

    +
    +
    +
    + Приблизительное время сборки: + 0.3 SBU +
    +
    + Требуемое дисковое + пространство: 175 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.58.2, + «Содержимое пакета Coreutils.» +

    +
    +
    + + + diff --git a/lfs-12.2-sysv/chapter06/diffutils.html b/lfs-12.2-sysv/chapter06/diffutils.html new file mode 100644 index 0000000..2c9e9ee --- /dev/null +++ b/lfs-12.2-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.60.2, + «Содержимое пакета Diffutils.» +

    +
    +
    + + + diff --git a/lfs-12.2-sysv/chapter06/file.html b/lfs-12.2-sysv/chapter06/file.html new file mode 100644 index 0000000..7390695 --- /dev/null +++ b/lfs-12.2-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.11.2, «Содержимое + пакета File.» +

    +
    +
    + + + diff --git a/lfs-12.2-sysv/chapter06/findutils.html b/lfs-12.2-sysv/chapter06/findutils.html new file mode 100644 index 0000000..a83ad34 --- /dev/null +++ b/lfs-12.2-sysv/chapter06/findutils.html @@ -0,0 +1,131 @@ + + + + + + 6.8. Findutils-4.10.0 + + + + + + + + +

    + 6.8. + Findutils-4.10.0 +

    +
    +
    +

    + Пакет Findutils содержит программы для поиска файлов. Эти программы + предназначены для поиска по всем файлам в дереве каталогов, а также + для создания, обслуживания и поиска в базе данных (часто быстрее, + чем рекурсивный поиск, но ненадежно, если база данных давно не + обновлялась).Findutils также предоставляет программу xargs, которую можно использовать + для запуска указанной команды для каждого файла, выбранного при + поиске. +

    +
    +
    +
    + Приблизительное время сборки: + 0.2 SBU +
    +
    + Требуемое дисковое + пространство: 48 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.62.2, + «Содержимое пакета Findutils.» +

    +
    +
    + + + diff --git a/lfs-12.2-sysv/chapter06/gawk.html b/lfs-12.2-sysv/chapter06/gawk.html new file mode 100644 index 0000000..aba4959 --- /dev/null +++ b/lfs-12.2-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.61.2, «Содержимое + пакета Gawk.» +

    +
    +
    + + + diff --git a/lfs-12.2-sysv/chapter06/gcc-pass2.html b/lfs-12.2-sysv/chapter06/gcc-pass2.html new file mode 100644 index 0000000..5024ef9 --- /dev/null +++ b/lfs-12.2-sysv/chapter06/gcc-pass2.html @@ -0,0 +1,273 @@ + + + + + + 6.18. GCC-14.2.0 - Проход 2 + + + + + + + + +

    + 6.18. + GCC-14.2.0 - Проход 2 +

    +
    +
    +

    + Пакет GCC содержит коллекцию компиляторов GNU, которая включает + компиляторы C и C++. +

    +
    +
    +
    + Приблизительное время сборки: + 4.2 SBU +
    +
    + Требуемое дисковое + пространство: 5.5 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++, поскольку она была собрана без поддержки libc +

    +
    +
    + --disable-libsanitizer +
    +
    +

    + Отключает библиотеки среды выполнения GCC sanitizer. Они не + нужны для временного набора инструментов. В GCC-Проход 1 это решалось с + помощью параметра --disable-libstdcxx, но теперь + мы должны передать его явно. +

    +
    +
    +
    +

    + Скомпилируйте пакет: +

    +
    make
    +

    + Установите пакет: +

    +
    make DESTDIR=$LFS install
    +

    + В качестве завершающего штриха создайте символическую ссылку на + утилиту. Многие программы и скрипты используют cc вместо gcc, чтобы сделать программы + более универсальными и, следовательно, для совместимости со всеми + типами UNIX-систем, где компилятор GNU C не всегда установлен. + Наличие cc оставляет + системному администратору право самостоятельно решать, какой + компилятор C устанавливать: +

    +
    ln -sv gcc $LFS/usr/bin/cc
    +
    +
    +

    + Подробная информация об этом пакете находится в Раздел 8.29.2, «Содержимое + пакета GCC.» +

    +
    +
    + + + diff --git a/lfs-12.2-sysv/chapter06/grep.html b/lfs-12.2-sysv/chapter06/grep.html new file mode 100644 index 0000000..df9cb71 --- /dev/null +++ b/lfs-12.2-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.35.2, «Содержимое + пакета Grep.» +

    +
    +
    + + + diff --git a/lfs-12.2-sysv/chapter06/gzip.html b/lfs-12.2-sysv/chapter06/gzip.html new file mode 100644 index 0000000..9367844 --- /dev/null +++ b/lfs-12.2-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.65.2, «Содержимое + пакета Gzip.» +

    +
    +
    + + + diff --git a/lfs-12.2-sysv/chapter06/introduction.html b/lfs-12.2-sysv/chapter06/introduction.html new file mode 100644 index 0000000..c809c43 --- /dev/null +++ b/lfs-12.2-sysv/chapter06/introduction.html @@ -0,0 +1,103 @@ + + + + + + 6.1. Введение + + + + + + + + +

    + 6.1. Введение +

    +
    +

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

    +

    + Использование утилит станет возможным в следующей главе после входа в + среду «chroot». + Все пакеты из этой главы, должны быть собраны до того, как мы это + сделаем. Поэтому пока наша система зависима от хост-системы. +

    +

    + Еще раз напомним, что неправильная настройка LFS вместе со сборкой от root может сделать ваш компьютер непригодным для + использования. Всю эту главу нужно выполнить от имени пользователя + lfs, в его рабочем окружении, как + описано в Раздел 4.4, «Настройка + окружения». +

    +
    + + + diff --git a/lfs-12.2-sysv/chapter06/m4.html b/lfs-12.2-sysv/chapter06/m4.html new file mode 100644 index 0000000..576cd4e --- /dev/null +++ b/lfs-12.2-sysv/chapter06/m4.html @@ -0,0 +1,124 @@ + + + + + + 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.13.2, «Содержимое + пакета M4.» +

    +
    +
    + + + diff --git a/lfs-12.2-sysv/chapter06/make.html b/lfs-12.2-sysv/chapter06/make.html new file mode 100644 index 0000000..a738fa0 --- /dev/null +++ b/lfs-12.2-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.69.2, «Содержимое + пакета Make.» +

    +
    +
    + + + diff --git a/lfs-12.2-sysv/chapter06/ncurses.html b/lfs-12.2-sysv/chapter06/ncurses.html new file mode 100644 index 0000000..e4daa03 --- /dev/null +++ b/lfs-12.2-sysv/chapter06/ncurses.html @@ -0,0 +1,289 @@ + + + + + + 6.3. Ncurses-6.5 + + + + + + + + +

    + 6.3. Ncurses-6.5 +

    +
    +
    +

    + Пакет Ncurses содержит библиотеки для независимой от терминала + обработки ввода/вывода +

    +
    +
    +
    + Приблизительное время сборки: + 0.4 SBU +
    +
    + Требуемое дисковое + пространство: 53 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
    +
    +

    + Значение новых параметров настройки: +

    +
    +
    + --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 + с хоста. Использование инструментов хоста в + кросс-компилируемой программе может привести к сбою. +

    +
    +
    +
    +

    + Скомпилируйте пакет: +

    +
    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.30.2, «Содержимое + пакета Ncurses.» +

    +
    +
    + + + diff --git a/lfs-12.2-sysv/chapter06/patch.html b/lfs-12.2-sysv/chapter06/patch.html new file mode 100644 index 0000000..4f109c5 --- /dev/null +++ b/lfs-12.2-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.70.2, «Содержимое + пакета Patch.» +

    +
    +
    + + + diff --git a/lfs-12.2-sysv/chapter06/sed.html b/lfs-12.2-sysv/chapter06/sed.html new file mode 100644 index 0000000..dd71645 --- /dev/null +++ b/lfs-12.2-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.31.2, «Содержимое + пакета Sed.» +

    +
    +
    + + + diff --git a/lfs-12.2-sysv/chapter06/tar.html b/lfs-12.2-sysv/chapter06/tar.html new file mode 100644 index 0000000..c130f8c --- /dev/null +++ b/lfs-12.2-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.71.2, «Содержимое + пакета Tar.» +

    +
    +
    + + + diff --git a/lfs-12.2-sysv/chapter06/xz.html b/lfs-12.2-sysv/chapter06/xz.html new file mode 100644 index 0000000..9e2b494 --- /dev/null +++ b/lfs-12.2-sysv/chapter06/xz.html @@ -0,0 +1,138 @@ + + + + + + 6.16. Xz-5.6.2 + + + + + + + + +

    + 6.16. Xz-5.6.2 +

    +
    +
    +

    + Пакет Xz содержит программы для сжатия и распаковки файлов. Он + предоставляет возможности для lzma и более новых форматов сжатия + xz. Сжатие текстовых файлов с помощью xz дает лучший процент сжатия, + чем с традиционные gzip или bzip2. +

    +
    +
    +
    + Приблизительное время сборки: + 0.1 SBU +
    +
    + Требуемое дисковое + пространство: 20 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.6.2
    +

    + Скомпилируйте пакет: +

    +
    make
    +

    + Установите пакет: +

    +
    make DESTDIR=$LFS install
    +

    + Удалите архивный файл libtool, поскольку он потенциально опасен при + кросс-компиляции: +

    +
    rm -v $LFS/usr/lib/liblzma.la
    +
    +
    +

    + Подробная информация об этом пакете находится в Раздел 8.8.2, «Содержимое пакета + Xz.» +

    +
    +
    + + + diff --git a/lfs-12.2-sysv/chapter07/Python.html b/lfs-12.2-sysv/chapter07/Python.html new file mode 100644 index 0000000..5912260 --- /dev/null +++ b/lfs-12.2-sysv/chapter07/Python.html @@ -0,0 +1,186 @@ + + + + + + 7.10. Python-3.12.5 + + + + + + + + +

    + 7.10. Python-3.12.5 +

    +
    +
    +

    + Пакет Python 3 содержит среду разработчика Python. Его можно + использовать для объектно-ориентированного программирования, + написания скриптов, прототипирования больших программ и разработка + целых приложений. Python — это интерпретируемый язык + программирования. +

    +
    +
    +
    + Приблизительное время сборки: + 0.4 SBU +
    +
    + Требуемое дисковое + пространство: 603 MB +
    +
    +
    +
    +
    +

    + 7.10.1. Установка пакета Python +

    +
    + [Примечание] +

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

    +

    + Существует два пакета, имена которых начинаются с префикса + «python». + Сейчас необходимо распаковать файл Python-3.12.5.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.52.2, + «Содержимое пакета Python 3.» +

    +
    +
    + + + diff --git a/lfs-12.2-sysv/chapter07/bison.html b/lfs-12.2-sysv/chapter07/bison.html new file mode 100644 index 0000000..ae67c9a --- /dev/null +++ b/lfs-12.2-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.34.2, «Содержимое + пакета Bison.» +

    +
    +
    + + + diff --git a/lfs-12.2-sysv/chapter07/changingowner.html b/lfs-12.2-sysv/chapter07/changingowner.html new file mode 100644 index 0000000..f9a30fc --- /dev/null +++ b/lfs-12.2-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 --from lfs -R root:root $LFS/{usr,lib,var,etc,bin,sbin,tools}
    +case $(uname -m) in
    +  x86_64) chown --from lfs -R root:root $LFS/lib64 ;;
    +esac
    +
    + + + diff --git a/lfs-12.2-sysv/chapter07/chapter07.html b/lfs-12.2-sysv/chapter07/chapter07.html new file mode 100644 index 0000000..16d075b --- /dev/null +++ b/lfs-12.2-sysv/chapter07/chapter07.html @@ -0,0 +1,134 @@ + + + + + + Глава 7. Вход в окружение Chroot и создание дополнительных временных + инструментов + + + + + + + + +

    + 7. Вход в окружение Chroot и + создание дополнительных временных инструментов +

    +
    + +
    + + + diff --git a/lfs-12.2-sysv/chapter07/chroot.html b/lfs-12.2-sysv/chapter07/chroot.html new file mode 100644 index 0000000..e02272c --- /dev/null +++ b/lfs-12.2-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.2-sysv/chapter07/cleanup.html b/lfs-12.2-sysv/chapter07/cleanup.html new file mode 100644 index 0000000..cc8c9c1 --- /dev/null +++ b/lfs-12.2-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.2.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.2.tar.xz
    +

    + Еще раз проверьте, правильно ли настроено окружение, и продолжайте + сборку остальной части системы. +

    +
    + [Важно] +

    + Важно +

    +

    + Если вы покинули среду chroot, чтобы создать резервную копию или + перезапустить сборку с помощью восстановления, не забудьте + проверить, что виртуальные файловые системы все еще смонтированы + (findmnt | grep + $LFS). Если они не смонтированы, перемонтируйте + их сейчас, как описано в Раздел 7.3, + «Подготовка виртуальных файловых систем ядра», и повторно + войдите в среду chroot (см. Раздел 7.4, «Вход в + окружение Chroot»), прежде чем продолжить. +

    +
    +
    +
    + + + diff --git a/lfs-12.2-sysv/chapter07/createfiles.html b/lfs-12.2-sysv/chapter07/createfiles.html new file mode 100644 index 0000000..588c103 --- /dev/null +++ b/lfs-12.2-sysv/chapter07/createfiles.html @@ -0,0 +1,266 @@ + + + + + + 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 + для того, чтобы избежать несопоставленных идентификаторов. Другие + дистрибутивы могут обрабатывать этот идентификатор по-разному, + поэтому любая переносимая программа не должна зависеть от этого + присвоения. +

    +

    + Для некоторых пакетов требуется локаль. +

    +
    localedef -i C -f UTF-8 C.UTF-8
    +

    + Для некоторых тестов в Глава 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.2-sysv/chapter07/creatingdirs.html b/lfs-12.2-sysv/chapter07/creatingdirs.html new file mode 100644 index 0000000..6bf9fdf --- /dev/null +++ b/lfs-12.2-sysv/chapter07/creatingdirs.html @@ -0,0 +1,173 @@ + + + + + + 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/lib/locale
    +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.2-sysv/chapter07/gettext.html b/lfs-12.2-sysv/chapter07/gettext.html new file mode 100644 index 0000000..b57e580 --- /dev/null +++ b/lfs-12.2-sysv/chapter07/gettext.html @@ -0,0 +1,153 @@ + + + + + + 7.7. Gettext-0.22.5 + + + + + + + + +

    + 7.7. + Gettext-0.22.5 +

    +
    +
    +

    + Пакет Gettext содержит утилиты для интернационализации и + локализации. Они позволяют компилировать программы с поддержкой NLS + (Native Language Support), позволяя им выводить сообщения на родном + языке пользователя. +

    +
    +
    +
    + Приблизительное время сборки: + 1.1 SBU +
    +
    + Требуемое дисковое + пространство: 321 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.33.2, «Содержимое + пакета Gettext.» +

    +
    +
    + + + diff --git a/lfs-12.2-sysv/chapter07/introduction.html b/lfs-12.2-sysv/chapter07/introduction.html new file mode 100644 index 0000000..a93eaf4 --- /dev/null +++ b/lfs-12.2-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.2-sysv/chapter07/kernfs.html b/lfs-12.2-sysv/chapter07/kernfs.html new file mode 100644 index 0000000..8023295 --- /dev/null +++ b/lfs-12.2-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.2-sysv/chapter07/perl.html b/lfs-12.2-sysv/chapter07/perl.html new file mode 100644 index 0000000..59aa8c1 --- /dev/null +++ b/lfs-12.2-sysv/chapter07/perl.html @@ -0,0 +1,186 @@ + + + + + + 7.9. Perl-5.40.0 + + + + + + + + +

    + 7.9. Perl-5.40.0 +

    +
    +
    +

    + Пакет Perl содержит практический язык для извлечения данных и + составления отчётов (Practical Extraction and Report Language). +

    +
    +
    +
    + Приблизительное время сборки: + 0.6 SBU +
    +
    + Требуемое дисковое + пространство: 285 MB +
    +
    +
    +
    +
    +

    + 7.9.1. Установка пакета Perl +

    +

    + Подготовьте Perl к компиляции: +

    +
    sh Configure -des                                         \
    +             -D prefix=/usr                               \
    +             -D vendorprefix=/usr                         \
    +             -D useshrplib                                \
    +             -D privlib=/usr/lib/perl5/5.40/core_perl     \
    +             -D archlib=/usr/lib/perl5/5.40/core_perl     \
    +             -D sitelib=/usr/lib/perl5/5.40/site_perl     \
    +             -D sitearch=/usr/lib/perl5/5.40/site_perl    \
    +             -D vendorlib=/usr/lib/perl5/5.40/vendor_perl \
    +             -D vendorarch=/usr/lib/perl5/5.40/vendor_perl
    +
    +

    + Значение новых опций Configure: +

    +
    +
    + -des +
    +
    +

    + Это комбинация из трех параметров: -d использует значения по + умолчанию для всех элементов; -e обеспечивает выполнение всех + задач; -s отключает несущественные выходные данные. +

    +
    +
    + -D + vendorprefix=/usr +
    +
    +

    + Параметр гарантирует, что perl знает, как указать + пакетам, где они должны устанавливать свои модули Perl. +

    +
    +
    + -D + useshrplib +
    +
    +

    + Собрать библиотеку libperl, необходимую некоторым модулям + Perl, как общую библиотеку вместо статической. +

    +
    +
    + -D privlib,-D + archlib,-D sitelib,... +
    +
    +

    + Эти настройки определяют, где Perl ищет установленные модули. + Редакторы LFS решили поместить их в структуру каталогов, + основанную на MAJOR.MINOR версии Perl (5.40), что позволяет + обновлять Perl до более новых уровней исправлений (уровень + исправления - это последняя разделенная точками часть в + строке полной версии, например 5.40.0) без необходимости + переустанавливать все модули. +

    +
    +
    +
    +

    + Скомпилируйте пакет: +

    +
    make
    +

    + Установите пакет: +

    +
    make install
    +
    +
    +

    + Подробная информация об этом пакете находится в Раздел 8.43.2, «Содержимое + пакета Perl.» +

    +
    +
    + + + diff --git a/lfs-12.2-sysv/chapter07/texinfo.html b/lfs-12.2-sysv/chapter07/texinfo.html new file mode 100644 index 0000000..b758490 --- /dev/null +++ b/lfs-12.2-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.72.2, «Содержимое + пакета Texinfo.» +

    +
    +
    + + + diff --git a/lfs-12.2-sysv/chapter07/util-linux.html b/lfs-12.2-sysv/chapter07/util-linux.html new file mode 100644 index 0000000..7724122 --- /dev/null +++ b/lfs-12.2-sysv/chapter07/util-linux.html @@ -0,0 +1,214 @@ + + + + + + 7.12. Util-linux-2.40.2 + + + + + + + + +

    + 7.12. + Util-linux-2.40.2 +

    +
    +
    +

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

    +
    +
    +
    + Приблизительное время сборки: + 0.2 SBU +
    +
    + Требуемое дисковое + пространство: 180 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      \
    +            --disable-liblastlog2 \
    +            --without-python      \
    +            ADJTIME_PATH=/var/lib/hwclock/adjtime \
    +            --docdir=/usr/share/doc/util-linux-2.40.2
    +
    +

    + Значение параметров настройки: +

    +
    +
    + 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.79.2, + «Содержимое пакета Util-linux.» +

    +
    +
    + + + diff --git a/lfs-12.2-sysv/chapter08/Python.html b/lfs-12.2-sysv/chapter08/Python.html new file mode 100644 index 0000000..c85ec03 --- /dev/null +++ b/lfs-12.2-sysv/chapter08/Python.html @@ -0,0 +1,395 @@ + + + + + + 8.52. Python-3.12.5 + + + + + + + + +

    + 8.52. + Python-3.12.5 +

    +
    +
    +

    + Пакет Python 3 содержит среду разработчика Python. Его можно + использовать для объектно-ориентированного программирования, + написания скриптов, прототипирования больших программ и разработка + целых приложений. Python — это интерпретируемый язык + программирования. +

    +
    +
    +
    + Приблизительное время сборки: + 2.2 SBU +
    +
    + Требуемое дисковое + пространство: 530 MB +
    +
    +
    +
    +
    +

    + 8.52.1. Установка пакета Python 3 +

    +

    + Подготовьте Python к компиляции: +

    +
    ./configure --prefix=/usr        \
    +            --enable-shared      \
    +            --with-system-expat  \
    +            --enable-optimizations
    +
    +

    + Значение параметров настройки: +

    +
    +
    + --with-system-expat +
    +
    +

    + Этот параметр выполняет линковку с системной версией + Expat. +

    +
    +
    + --enable-optimizations +
    +
    +

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

    +
    +
    +
    +

    + Скомпилируйте пакет: +

    +
    make
    +

    + Известно, что некоторые тесты Python иногда зависают на + неопределенный срок. Чтобы протестировать пакет, запустите набор + тестов, установив 2-минутный лимит времени для каждого тестового + примера: +

    +
    make test TESTOPTS="--timeout 120"
    +

    + На медленной системе вам может потребоваться ещё увеличить + ограничение по времени, и 1 SBU (измеряется при сборке Binutils - + Проход 1 с использованием одного ядра ЦП) должно быть достаточно. В + процессе выполнения некоторых тестов бывают сбои, поэтому набор + тестов автоматически перезапускает неудачно завершённые тесты. Если + сначала тест не пройден, но пройден при повторном запуске, его + следует считать пройденным. +

    +

    + Установите пакет: +

    +
    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.5/html
    +
    +tar --no-same-owner \
    +    -xvf ../python-3.12.5-docs-html.tar.bz2
    +cp -R --no-preserve=mode python-3.12.5-docs-html/* \
    +    /usr/share/doc/python-3.12.5/html
    +
    +

    + Значение команд установки документации: +

    +
    +
    + --no-same-owner + (tar) и --no-preserve=mode + (cp) +
    +
    +

    + Параметры обеспечивают, что установленные файлы имеют + корректные права и владельца файлов. Использование + tar без этих параметров + приведет к установке файлов с правами пользователя создавшего + архив и файлы будут иметь ограниченные разрешения. +

    +
    +
    +
    +
    +
    +

    + 8.52.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.5 +
    +
    +
    +
    +

    + Краткое описание +

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

    + 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.2-sysv/chapter08/aboutdebug.html b/lfs-12.2-sysv/chapter08/aboutdebug.html new file mode 100644 index 0000000..db2f477 --- /dev/null +++ b/lfs-12.2-sysv/chapter08/aboutdebug.html @@ -0,0 +1,136 @@ + + + + + + 8.83. Об отладочных символах + + + + + + + + +

    + 8.83. Об + отладочных символах +

    +
    +

    + Большинство программ и библиотек по умолчанию компилируются с + отладочными символами (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.2-sysv/chapter08/acl.html b/lfs-12.2-sysv/chapter08/acl.html new file mode 100644 index 0000000..e87194c --- /dev/null +++ b/lfs-12.2-sysv/chapter08/acl.html @@ -0,0 +1,215 @@ + + + + + + 8.25. Acl-2.3.2 + + + + + + + + +

    + 8.25. Acl-2.3.2 +

    +
    +
    +

    + Пакет Acl содержит утилиты для администрирования списков контроля + доступа, которые используются для определения расширенных + дискреционных прав доступа к файлам и каталогам. +

    +
    +
    +
    + Приблизительное время сборки: + менее 0.1 SBU +
    +
    + Требуемое дисковое + пространство: 6.3 MB +
    +
    +
    +
    +
    +

    + 8.25.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.25.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.2-sysv/chapter08/attr.html b/lfs-12.2-sysv/chapter08/attr.html new file mode 100644 index 0000000..ad0325c --- /dev/null +++ b/lfs-12.2-sysv/chapter08/attr.html @@ -0,0 +1,214 @@ + + + + + + 8.24. Attr-2.5.2 + + + + + + + + +

    + 8.24. Attr-2.5.2 +

    +
    +
    +

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

    +
    +
    +
    + Приблизительное время сборки: + менее 0.1 SBU +
    +
    + Требуемое дисковое + пространство: 4.1 MB +
    +
    +
    +
    +
    +

    + 8.24.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.24.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.2-sysv/chapter08/autoconf.html b/lfs-12.2-sysv/chapter08/autoconf.html new file mode 100644 index 0000000..fb75312 --- /dev/null +++ b/lfs-12.2-sysv/chapter08/autoconf.html @@ -0,0 +1,289 @@ + + + + + + 8.46. Autoconf-2.72 + + + + + + + + +

    + 8.46. + Autoconf-2.72 +

    +
    +
    +

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

    +
    +
    +
    + Приблизительное время сборки: + менее 0.1 SBU (около 1.8 SBU с + тестами) +
    +
    + Требуемое дисковое + пространство: 25 MB +
    +
    +
    +
    +
    +

    + 8.46.1. Установка пакета Autoconf +

    +

    + Подготовьте Autoconf к компиляции: +

    +
    ./configure --prefix=/usr
    +

    + Скомпилируйте пакет: +

    +
    make
    +

    + Чтобы протестировать пакет, выполните: +

    +
    make check
    +

    + Установите пакет: +

    +
    make install
    +
    +
    +

    + 8.46.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.2-sysv/chapter08/automake.html b/lfs-12.2-sysv/chapter08/automake.html new file mode 100644 index 0000000..db7e729 --- /dev/null +++ b/lfs-12.2-sysv/chapter08/automake.html @@ -0,0 +1,233 @@ + + + + + + 8.47. Automake-1.17 + + + + + + + + +

    + 8.47. + Automake-1.17 +

    +
    +
    +

    + Пакет Automake содержит программы генерации Makefile для + использования с Autoconf. +

    +
    +
    +
    + Приблизительное время сборки: + менее 0.1 SBU (около 1.6 SBU с + тестами) +
    +
    + Требуемое дисковое + пространство: 121 MB +
    +
    +
    +
    +
    +

    + 8.47.1. Установка пакета Automake +

    +

    + Подготовьте Automake к компиляции: +

    +
    ./configure --prefix=/usr --docdir=/usr/share/doc/automake-1.17
    +

    + Скомпилируйте пакет: +

    +
    make
    +

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

    +
    make -j$(($(nproc)>4?$(nproc):4)) check
    +

    + Замените $((...)) + количеством логических ядер, которые вы хотите использовать, если + вы не планируете использовать все. +

    +

    + Установите пакет: +

    +
    make install
    +
    +
    +

    + 8.47.2. + Содержимое пакета Automake +

    +
    +
    +
    + Установленные программы: + aclocal, aclocal-1.17 (жестко связан с + aclocal), automake, и automake-1.17 (жестко связан с + automake) +
    +
    + Созданные каталоги: + /usr/share/aclocal-1.17, + /usr/share/automake-1.17, и /usr/share/doc/automake-1.17 +
    +
    +
    +
    +

    + Краткое описание +

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

    + aclocal +

    +
    +

    + Генерирует файлы aclocal.m4 + на основе содержимого файла configure.in +

    +
    +

    + aclocal-1.17 +

    +
    +

    + Жесткая ссылка на aclocal +

    +
    +

    + automake +

    +
    +

    + Инструмент для автоматического создания Makefile.in из файлов Makefile.am [Чтобы создать все файлы + Makefile.in запустите эту + программу в каталоге верхнего уровня. Сканируя файл + configure.in, он + автоматически находит все подходящие файлы Makefile.am и создает соответствующий + Makefile.in.] +

    +
    +

    + automake-1.17 +

    +
    +

    + Жесткая ссылка на automake +

    +
    +
    +
    +
    + + + diff --git a/lfs-12.2-sysv/chapter08/bash.html b/lfs-12.2-sysv/chapter08/bash.html new file mode 100644 index 0000000..ed0e083 --- /dev/null +++ b/lfs-12.2-sysv/chapter08/bash.html @@ -0,0 +1,266 @@ + + + + + + 8.36. Bash-5.2.32 + + + + + + + + +

    + 8.36. Bash-5.2.32 +

    +
    +
    +

    + Пакет Bash содержит Bourne-Again Shell. +

    +
    +
    +
    + Приблизительное время сборки: + 1.2 SBU +
    +
    + Требуемое дисковое + пространство: 52 MB +
    +
    +
    +
    +
    +

    + 8.36.1. Установка пакета Bash +

    +

    + Подготовьте Bash к компиляции: +

    +
    ./configure --prefix=/usr             \
    +            --without-bash-malloc     \
    +            --with-installed-readline \
    +            bash_cv_strtold_broken=no \
    +            --docdir=/usr/share/doc/bash-5.2.32
    +
    +

    + Значение нового параметра настройки: +

    +
    +
    + --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.36.2. Содержимое + пакета Bash +

    +
    +
    +
    + Установленные программы: + bash, bashbug и sh (ссылка на + bash) +
    +
    + Созданные каталоги: + /usr/include/bash, /usr/lib/bash, and + /usr/share/doc/bash-5.2.32 +
    +
    +
    +
    +

    + Краткое описание +

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

    + bash +

    +
    +

    + Широко распространенный командный интерпретатор. + Выполняет различные дополнения и подстановки в переданной + командной строке перед её выполнением, что делает этот + интерпретатор мощным инструментом +

    +
    +

    + bashbug +

    +
    +

    + Скрипт, помогающий пользователю составлять и отправлять + по почте отчеты об ошибках bash +

    +
    +

    + sh +

    +
    +

    + Симлинк на программу bash; при вызове + sh, + bash + пытается максимально точно имитировать поведение + sh, при + этом также соответствуя стандарту POSIX. +

    +
    +
    +
    +
    + + + diff --git a/lfs-12.2-sysv/chapter08/bc.html b/lfs-12.2-sysv/chapter08/bc.html new file mode 100644 index 0000000..0805dd5 --- /dev/null +++ b/lfs-12.2-sysv/chapter08/bc.html @@ -0,0 +1,214 @@ + + + + + + 8.14. Bc-6.7.6 + + + + + + + + +

    + 8.14. Bc-6.7.6 +

    +
    +
    +

    + Пакет Bc содержит язык для обработки чисел произвольной точности. +

    +
    +
    +
    + Приблизительное время сборки: + менее 0.1 SBU +
    +
    + Требуемое дисковое + пространство: 7.8 MB +
    +
    +
    +
    +
    +

    + 8.14.1. Установка пакета Bc +

    +

    + Подготовьте Bc к компиляции: +

    +
    CC=gcc ./configure --prefix=/usr -G -O3 -r
    +
    +

    + Значение параметров настройки: +

    +
    +
    + CC=gcc +
    +
    +

    + Этот параметр определяет используемый компилятор +

    +
    +
    + -G +
    +
    +

    + Пропускает часть тестов, которые не будут работать, пока не + будет установлена программа bc. +

    +
    +
    + -O3 +
    +
    +

    + Указывает используемый уровень оптимизации. +

    +
    +
    + -r +
    +
    +

    + Включает использование Readline для улучшения функции + редактирования строк в bc. +

    +
    +
    +
    +

    + Скомпилируйте пакет: +

    +
    make
    +

    + Чтобы протестировать пакет, выполните: +

    +
    make test
    +

    + Установите пакет: +

    +
    make install
    +
    +
    +

    + 8.14.2. Содержимое + пакета Bc +

    +
    +
    +
    + Установленные программы: + bc и dc +
    +
    +
    +
    +

    + Краткое описание +

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

    + bc +

    +
    +

    + Калькулятор командной строки +

    +
    +

    + dc +

    +
    +

    + Калькулятор командной строки с обратной польской нотацией +

    +
    +
    +
    +
    + + + diff --git a/lfs-12.2-sysv/chapter08/binutils.html b/lfs-12.2-sysv/chapter08/binutils.html new file mode 100644 index 0000000..f484736 --- /dev/null +++ b/lfs-12.2-sysv/chapter08/binutils.html @@ -0,0 +1,643 @@ + + + + + + 8.20. Binutils-2.43.1 + + + + + + + + +

    + 8.20. + Binutils-2.43.1 +

    +
    +
    +

    + Пакет Binutils содержит компоновщик, ассемблер и другие инструменты + для работы с объектными файлами. +

    +
    +
    +
    + Приблизительное время сборки: + 2.0 SBU +
    +
    + Требуемое дисковое + пространство: 2.7 GB +
    +
    +
    +
    +
    +

    + 8.20.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 \
    +             --enable-new-dtags  \
    +             --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.20.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.2-sysv/chapter08/bison.html b/lfs-12.2-sysv/chapter08/bison.html new file mode 100644 index 0000000..50fe853 --- /dev/null +++ b/lfs-12.2-sysv/chapter08/bison.html @@ -0,0 +1,205 @@ + + + + + + 8.34. Bison-3.8.2 + + + + + + + + +

    + 8.34. Bison-3.8.2 +

    +
    +
    +

    + Пакет Bison содержит генератор синтаксического анализа. +

    +
    +
    +
    + Приблизительное время сборки: + 2.2 SBU +
    +
    + Требуемое дисковое + пространство: 62 MB +
    +
    +
    +
    +
    +

    + 8.34.1. Установка пакета Bison +

    +

    + Подготовьте Bison к компиляции: +

    +
    ./configure --prefix=/usr --docdir=/usr/share/doc/bison-3.8.2
    +

    + Скомпилируйте пакет: +

    +
    make
    +

    + Для тестирования пакета (около 5,5 SBU), выполните: +

    +
    make check
    +

    + Установите пакет: +

    +
    make install
    +
    +
    +

    + 8.34.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.2-sysv/chapter08/bzip2.html b/lfs-12.2-sysv/chapter08/bzip2.html new file mode 100644 index 0000000..3298fdc --- /dev/null +++ b/lfs-12.2-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.2-sysv/chapter08/chapter08.html b/lfs-12.2-sysv/chapter08/chapter08.html new file mode 100644 index 0000000..5bbd44a --- /dev/null +++ b/lfs-12.2-sysv/chapter08/chapter08.html @@ -0,0 +1,343 @@ + + + + + + Глава 8. Установка базового системного программного обеспечения + + + + + + + + +

    + 8. + Установка базового системного программного обеспечения +

    +
    +
    +

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

    + +
    +
    + + + diff --git a/lfs-12.2-sysv/chapter08/check.html b/lfs-12.2-sysv/chapter08/check.html new file mode 100644 index 0000000..36fe116 --- /dev/null +++ b/lfs-12.2-sysv/chapter08/check.html @@ -0,0 +1,180 @@ + + + + + + 8.59. Check-0.15.2 + + + + + + + + +

    + 8.59. Check-0.15.2 +

    +
    +
    +

    + Check - это фреймворк модульного тестирования для языка C. +

    +
    +
    +
    + Приблизительное время сборки: + 0.1 SBU (около 2.1 SBU с тестами) +
    +
    + Требуемое дисковое + пространство: 11 MB +
    +
    +
    +
    +
    +

    + 8.59.1. Установка пакета Check +

    +

    + Подготовить Check к компиляции: +

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

    + Соберите пакет: +

    +
    make
    +

    + Когда компиляция будет завершена, запустите набор тестов: +

    +
    make check
    +

    + Установите пакет: +

    +
    make docdir=/usr/share/doc/check-0.15.2 install
    +
    +
    +

    + 8.59.2. Содержимое + пакета Check +

    +
    +
    +
    + Установленные программы: + checkmk +
    +
    + Установленные библиотеки: + libcheck.so +
    +
    +
    +
    +

    + Краткое описание +

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

    + checkmk +

    +
    +

    + Сценарий Awk для генерации unit-тестов C, для + использования с платформой модульного тестирования Check. +

    +
    +

    + libcheck.so +

    +
    +

    + Содержит функции, позволяющие вызывать Check из программы + тестирования. +

    +
    +
    +
    +
    + + + diff --git a/lfs-12.2-sysv/chapter08/cleanup.html b/lfs-12.2-sysv/chapter08/cleanup.html new file mode 100644 index 0000000..97276c0 --- /dev/null +++ b/lfs-12.2-sysv/chapter08/cleanup.html @@ -0,0 +1,120 @@ + + + + + + 8.85. Очистка + + + + + + + + +

    + 8.85. Очистка +

    +
    +

    + Наконец, удалите некоторые лишние файлы, оставшиеся после запуска + тестов: +

    +
    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.2-sysv/chapter08/coreutils.html b/lfs-12.2-sysv/chapter08/coreutils.html new file mode 100644 index 0000000..d6d4972 --- /dev/null +++ b/lfs-12.2-sysv/chapter08/coreutils.html @@ -0,0 +1,1801 @@ + + + + + + 8.58. Coreutils-9.5 + + + + + + + + +

    + 8.58. + Coreutils-9.5 +

    +
    +
    +

    + Пакет Coreutils содержит основные утилиты, необходимые каждой + операционной системе. +

    +
    +
    +
    + Приблизительное время сборки: + 1.1 SBU +
    +
    + Требуемое дисковое + пространство: 173 MB +
    +
    +
    +
    +
    +

    + 8.58.1. Установка пакета Coreutils +

    +

    + Стандарт POSIX требует, чтобы программы пакета Coreutils правильно + распознавали символы даже в случае, если используются многобайтовые + локали. Следующий патч исправляет несоответствие этому требованию, + а также другие ошибки, касающиеся интернационализации: +

    +
    patch -Np1 -i ../coreutils-9.5-i18n-2.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 -R tester . 
    +

    + Теперь запустите тесты (используя /dev/null для стандартного ввода, иначе два теста + могут быть не пройдены при сборке LFS в графическом терминале, или + сеансе SSH, или GNU Screen, поскольку стандартный ввод подключен к + PTY из хост-дистрибутива, а узел устройства для такого PTY + недоступен из среды chroot LFS): +

    +
    su tester -c "PATH=$PATH make -k RUN_EXPENSIVE_TESTS=yes check" \
    +   < /dev/null
    +

    + Удалить временную группу: +

    +
    groupdel dummy
    +

    + Известно, что два теста, tests/cp/preserve-mode.sh и tests/mv/acl.sh, завершаются неудачно в среде + chroot, но проходят успешно в собранной системе. +

    +

    + Установите пакет: +

    +
    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.58.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.2-sysv/chapter08/dejagnu.html b/lfs-12.2-sysv/chapter08/dejagnu.html new file mode 100644 index 0000000..895517c --- /dev/null +++ b/lfs-12.2-sysv/chapter08/dejagnu.html @@ -0,0 +1,184 @@ + + + + + + 8.18. DejaGNU-1.6.3 + + + + + + + + +

    + 8.18. + DejaGNU-1.6.3 +

    +
    +
    +

    + Пакет DejaGnu содержит фреймворк + для запуска наборов тестов на инструментах GNU. Он написан на + expect, который в + свою очередь использует Tcl + (командный язык инструментов). +

    +
    +
    +
    + Приблизительное время сборки: + менее 0.1 SBU +
    +
    + Требуемое дисковое + пространство: 6.9 MB +
    +
    +
    +
    +
    +

    + 8.18.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.18.2. + Содержимое пакета DejaGNU +

    +
    +
    +
    + Установленные программы: + dejagnu и runtest +
    +
    +
    +
    +

    + Short Descriptions +

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

    + dejagnu +

    +
    +

    + Вспомогательная программа запуска команд DejaGNU +

    +
    +

    + runtest +

    +
    +

    + Скрипт-обертка, который находит соответствующую оболочку + expect и + запускает DejaGnu +

    +
    +
    +
    +
    + + + diff --git a/lfs-12.2-sysv/chapter08/diffutils.html b/lfs-12.2-sysv/chapter08/diffutils.html new file mode 100644 index 0000000..ff7f150 --- /dev/null +++ b/lfs-12.2-sysv/chapter08/diffutils.html @@ -0,0 +1,201 @@ + + + + + + 8.60. Diffutils-3.10 + + + + + + + + +

    + 8.60. + Diffutils-3.10 +

    +
    +
    +

    + Пакет Diffutils содержит программы, которые показывают различия + между файлами или каталогами. +

    +
    +
    +
    + Приблизительное время сборки: + 0.3 SBU +
    +
    + Требуемое дисковое + пространство: 42 MB +
    +
    +
    +
    +
    +

    + 8.60.1. Установка пакета Diffutils +

    +

    + Подготовьте Diffutils к компиляции: +

    +
    ./configure --prefix=/usr
    +

    + Скомпилируйте пакет: +

    +
    make
    +

    + Чтобы протестровать пакет, выполните: +

    +
    make check
    +

    + Установите пакет: +

    +
    make install
    +
    +
    +

    + 8.60.2. + Содержимое пакета Diffutils +

    +
    +
    +
    + Установленные программы: + cmp, diff, diff3, и sdiff +
    +
    +
    +
    +

    + Краткое описание +

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

    + cmp +

    +
    +

    + Сравнивает побайтно два файла и сообщает о любых + различиях +

    +
    +

    + diff +

    +
    +

    + Сравнивает два файла или каталога и сообщает, какие + строки отличаются +

    +
    +

    + diff3 +

    +
    +

    + Сравнивает три файла построчно +

    +
    +

    + sdiff +

    +
    +

    + Объединяет два файла и интерактивно выводит результат +

    +
    +
    +
    +
    + + + diff --git a/lfs-12.2-sysv/chapter08/e2fsprogs.html b/lfs-12.2-sysv/chapter08/e2fsprogs.html new file mode 100644 index 0000000..dd7043c --- /dev/null +++ b/lfs-12.2-sysv/chapter08/e2fsprogs.html @@ -0,0 +1,775 @@ + + + + + + 8.80. E2fsprogs-1.47.1 + + + + + + + + +

    + 8.80. + E2fsprogs-1.47.1 +

    +
    +
    +

    + Пакет E2fsprogs содержит утилиты для работы с файловой системой + ext2. Также он поддерживает + журналируемые файловые системы ext3 + и ext4. +

    +
    +
    +
    + Приблизительное время сборки: + 2.4 SBU на жестком диске, 0.5 SBU на SSD + диске +
    +
    + Требуемое дисковое + пространство: 98 MB +
    +
    +
    +
    +
    +

    + 8.80.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.80.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.80.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.2-sysv/chapter08/expat.html b/lfs-12.2-sysv/chapter08/expat.html new file mode 100644 index 0000000..78fc7a3 --- /dev/null +++ b/lfs-12.2-sysv/chapter08/expat.html @@ -0,0 +1,187 @@ + + + + + + 8.40. Expat-2.6.2 + + + + + + + + +

    + 8.40. Expat-2.6.2 +

    +
    +
    +

    + Пакет Expat содержит потоковую библиотеку C для синтаксического + анализа XML +

    +
    +
    +
    + Приблизительное время сборки: + 0.1 SBU +
    +
    + Требуемое дисковое + пространство: 13 MB +
    +
    +
    +
    +
    +

    + 8.40.1. Установка пакета Expat +

    +

    + Подготовьте Expat к компиляции: +

    +
    ./configure --prefix=/usr    \
    +            --disable-static \
    +            --docdir=/usr/share/doc/expat-2.6.2
    +

    + Скомпилируйте пакет: +

    +
    make
    +

    + Чтобы протестировать пакет, выполните: +

    +
    make check
    +

    + Установите пакет: +

    +
    make install
    +

    + По желанию установите документацию: +

    +
    install -v -m644 doc/*.{html,css} /usr/share/doc/expat-2.6.2
    +
    +
    +

    + 8.40.2. Содержимое + пакета Expat +

    +
    +
    +
    + Установленные программы: + xmlwf +
    +
    + Установленные библиотеки: + libexpat.so +
    +
    + Созданные каталоги: + /usr/share/doc/expat-2.6.2 +
    +
    +
    +
    +

    + Краткое описание +

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

    + xmlwf +

    +
    +

    + Утилита проверки правильности формирования XML документов +

    +
    +

    + libexpat +

    +
    +

    + Содержит функции API для синтаксического анализа XML +

    +
    +
    +
    +
    + + + diff --git a/lfs-12.2-sysv/chapter08/expect.html b/lfs-12.2-sysv/chapter08/expect.html new file mode 100644 index 0000000..5c02507 --- /dev/null +++ b/lfs-12.2-sysv/chapter08/expect.html @@ -0,0 +1,260 @@ + + + + + + 8.17. Expect-5.45.4 + + + + + + + + +

    + 8.17. + Expect-5.45.4 +

    +
    +
    +

    + Пакет Expect содержит инструменты + для автоматизации работы интерактивных приложений, таких как + telnet, ftp, passwd, fsck, rlogin и tip, с помощью скриптовых + диалогов и макросов. Кроме того Expect полезен для тестирования перечисленных + выше приложений, а также для решения сложных задач взаимодействия с + другими средствами. Фреймворк DejaGnu написан на языке Expect. +

    +
    +
    +
    + Приблизительное время сборки: + 0.2 SBU +
    +
    + Требуемое дисковое + пространство: 3.9 MB +
    +
    +
    +
    +
    +

    + 8.17.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), + потерпят фатальный сбой, а также могут произойти другие + незначительные сбои. +

    +

    + Теперь внесите некоторые изменения, чтобы разрешить использование + пакета с gcc-14.1 или более поздней версией: +

    +
    patch -Np1 -i ../expect-5.45.4-gcc14-1.patch
    +

    + Подготовьте Expect к компиляции: +

    +
    ./configure --prefix=/usr           \
    +            --with-tcl=/usr/lib     \
    +            --enable-shared         \
    +            --disable-rpath         \
    +            --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.17.2. + Содержимое пакета Expect +

    +
    +
    +
    + Установленные программы: + expect +
    +
    + Установленные библиотеки: + libexpect5.45.4.so +
    +
    +
    +
    +

    + Краткое описание +

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

    + expect +

    +
    +

    + Взаимодействует с другими интерактивными программами в + соответствии со сценарием +

    +
    +

    + libexpect-5.45.4.so +

    +
    +

    + Содержит функции, которые позволяют использовать Expect в + качестве расширения Tcl или непосредственно из C или C++ + (без Tcl). +

    +
    +
    +
    +
    + + + diff --git a/lfs-12.2-sysv/chapter08/file.html b/lfs-12.2-sysv/chapter08/file.html new file mode 100644 index 0000000..d594877 --- /dev/null +++ b/lfs-12.2-sysv/chapter08/file.html @@ -0,0 +1,180 @@ + + + + + + 8.11. File-5.45 + + + + + + + + +

    + 8.11. File-5.45 +

    +
    +
    +

    + Пакет File содержит утилиту для определения типа указанного файла + или файлов +

    +
    +
    +
    + Приблизительное время сборки: + менее 0.1 SBU +
    +
    + Требуемое дисковое + пространство: 17 MB +
    +
    +
    +
    +
    +

    + 8.11.1. Установка пакета File +

    +

    + Подготовьте File к компиляции: +

    +
    ./configure --prefix=/usr
    +

    + Скомпилируйте пакет: +

    +
    make
    +

    + Чтобы протестировать пакет, выполните: +

    +
    make check
    +

    + Установите пакет: +

    +
    make install
    +
    +
    +

    + 8.11.2. Содержимое + пакета File +

    +
    +
    +
    + Установленные программы: + file +
    +
    + Установленные библиотеки: + libmagic.so +
    +
    +
    +
    +

    + Краткое описание +

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

    + file +

    +
    +

    + Пытается классифицировать каждый указанный файл; он + делает это, выполняя серию тестов—тесты файловой системы, + тесты магических чисел и языковые тесты. +

    +
    +

    + libmagic +

    +
    +

    + Содержит функции распознавания магических чисел + используемые программой file +

    +
    +
    +
    +
    + + + diff --git a/lfs-12.2-sysv/chapter08/findutils.html b/lfs-12.2-sysv/chapter08/findutils.html new file mode 100644 index 0000000..6c40c07 --- /dev/null +++ b/lfs-12.2-sysv/chapter08/findutils.html @@ -0,0 +1,238 @@ + + + + + + 8.62. Findutils-4.10.0 + + + + + + + + +

    + 8.62. + Findutils-4.10.0 +

    +
    +
    +

    + Пакет Findutils содержит программы для поиска файлов. Эти программы + предназначены для поиска по всем файлам в дереве каталогов, а также + для создания, обслуживания и поиска в базе данных (часто быстрее, + чем рекурсивный поиск, но ненадежно, если база данных давно не + обновлялась).Findutils также предоставляет программу xargs, которую можно использовать + для запуска указанной команды для каждого файла, выбранного при + поиске. +

    +
    +
    +
    + Приблизительное время сборки: + 0.7 SBU +
    +
    + Требуемое дисковое + пространство: 62 MB +
    +
    +
    +
    +
    +

    + 8.62.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.62.2. + Содержимое пакета Findutils +

    +
    +
    +
    + Installed programs: + Установленные программы +
    +
    + Созданные каталоги: + /var/lib/locate +
    +
    +
    +
    +

    + Краткое описание +

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

    + find +

    +
    +

    + Выполняет поиск в заданных каталогах файлов, + соответствующих критериям +

    +
    +

    + locate +

    +
    +

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

    +
    +

    + updatedb +

    +
    +

    + Обновляет базу данных locate; сканирует всю + файловую систему (включая другие файловые системы, + которые в настоящее время смонтированы, если не указано + иное) и записывает найденные имена файлов в базу данных +

    +
    +

    + xargs +

    +
    +

    + Может использоваться для применения заданной команды к + списку файлов +

    +
    +
    +
    +
    + + + diff --git a/lfs-12.2-sysv/chapter08/flex.html b/lfs-12.2-sysv/chapter08/flex.html new file mode 100644 index 0000000..2cc0ff5 --- /dev/null +++ b/lfs-12.2-sysv/chapter08/flex.html @@ -0,0 +1,230 @@ + + + + + + 8.15. Flex-2.6.4 + + + + + + + + +

    + 8.15. Flex-2.6.4 +

    +
    +
    +

    + Пакет Flex содержит инструмент для генерации программ, распознающих + заданные шаблоны в тексте +

    +
    +
    +
    + Приблизительное время сборки: + 0.1 SBU +
    +
    + Требуемое дисковое + пространство: 33 MB +
    +
    +
    +
    +
    +

    + 8.15.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.15.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.2-sysv/chapter08/flit-core.html b/lfs-12.2-sysv/chapter08/flit-core.html new file mode 100644 index 0000000..d50e823 --- /dev/null +++ b/lfs-12.2-sysv/chapter08/flit-core.html @@ -0,0 +1,196 @@ + + + + + + 8.53. Flit-Core-3.9.0 + + + + + + + + +

    + 8.53. + Flit-Core-3.9.0 +

    +
    +
    +

    + Flit-core — это часть Flit, предназначенная для сборки дистрибутива + (инструмента для упаковки простых модулей Python). +

    +
    +
    +
    + Приблизительное время сборки: + менее 0.1 SBU +
    +
    + Требуемое дисковое + пространство: 1.6 MB +
    +
    +
    +
    +
    +

    + 8.53.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.53.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.2-sysv/chapter08/gawk.html b/lfs-12.2-sysv/chapter08/gawk.html new file mode 100644 index 0000000..0f3ae87 --- /dev/null +++ b/lfs-12.2-sysv/chapter08/gawk.html @@ -0,0 +1,248 @@ + + + + + + 8.61. Gawk-5.3.0 + + + + + + + + +

    + 8.61. Gawk-5.3.0 +

    +
    +
    +

    + Пакет Gawk содержит программы для работы с текстовыми файлами. +

    +
    +
    +
    + Приблизительное время сборки: + 0.2 SBU +
    +
    + Требуемое дисковое + пространство: 42 MB +
    +
    +
    +
    +
    +

    + 8.61.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.61.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.2-sysv/chapter08/gcc.html b/lfs-12.2-sysv/chapter08/gcc.html new file mode 100644 index 0000000..6579968 --- /dev/null +++ b/lfs-12.2-sysv/chapter08/gcc.html @@ -0,0 +1,911 @@ + + + + + + 8.29. GCC-14.2.0 + + + + + + + + +

    + 8.29. GCC-14.2.0 +

    +
    +
    +

    + Пакет GCC содержит коллекцию компиляторов GNU, которая включает + компиляторы C и C++. +

    +
    +
    +
    + Приблизительное время сборки: + 46 SBU (с тестами) +
    +
    + Требуемое дисковое + пространство: 6.3 GB +
    +
    +
    +
    +
    +

    + 8.29.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     \
    +             --enable-host-pie        \
    +             --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 может потребоваться больше места в стеке для компиляции + некоторых сложных шаблонов кода. В качестве меры предосторожности + для хост-дистрибутивов с жестким ограничением стека явно установите + неограниченный жесткий предел. В большинстве хост-дистрибутивов (и + в собранной LFS) жесткий предел по умолчанию неограничен, но нет + ничего плохого в том, чтобы установить его явно. Также нет + необходимости изменять мягкий предел размера стека, поскольку GCC + автоматически установит для него соответствующее значение, если это + значение не превышает жесткий предел: +

    +
    ulimit -s -H unlimited
    +

    + Теперь удалите/исправьте несколько известных ошибок тестирования: +

    +
    sed -e '/cpython/d'               -i ../gcc/testsuite/gcc.dg/plugin/plugin.exp
    +sed -e 's/no-pic /&-no-pie /'     -i ../gcc/testsuite/gcc.target/i386/pr113689-1.c
    +sed -e 's/300000/(1|300000)/'     -i ../libgomp/testsuite/libgomp.c-c++-common/pr109062.c
    +sed -e 's/{ target nonpic } //' \
    +    -e '/GOTPCREL/d'              -i ../gcc/testsuite/gcc.target/i386/fentryname3.c
    +

    + Выполните тестирование от имени непривилегированного пользователя, + но не останавливайтесь на ошибках: +

    +
    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.2/ + и https://gcc.gnu.org/ml/gcc-testresults/. +

    +

    + Не всегда удается избежать неожиданных сбоев. В некоторых случаях + неудачное завершение тестов - это следствие их выполнения на + конкретном оборудовании системы. Если результаты теста не сильно + отличаются от результатов по указанному выше URL-адресу, можно + продолжать. +

    +

    + Установите пакет: +

    +
    make install
    +

    + Каталог сборки GCC теперь принадлежит пользователю tester, и владелец каталога заголовочных файлов + (и его содержимого) указан неверно. Измените владельца на + пользователя и группу root: +

    +
    chown -v -R root:root \
    +    /usr/lib/gcc/$(gcc -dumpmachine)/14.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)/14.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/14.2.0/../../../../lib/Scrt1.o succeeded
    +/usr/lib/gcc/x86_64-pc-linux-gnu/14.2.0/../../../../lib/crti.o succeeded
    +/usr/lib/gcc/x86_64-pc-linux-gnu/14.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/14.2.0/include
    + /usr/local/include
    + /usr/lib/gcc/x86_64-pc-linux-gnu/14.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.29.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-14.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.2-sysv/chapter08/gdbm.html b/lfs-12.2-sysv/chapter08/gdbm.html new file mode 100644 index 0000000..f9c5bef --- /dev/null +++ b/lfs-12.2-sysv/chapter08/gdbm.html @@ -0,0 +1,243 @@ + + + + + + 8.38. GDBM-1.24 + + + + + + + + +

    + 8.38. GDBM-1.24 +

    +
    +
    +

    + Пакет GDBM содержит менеджер баз данных GNU. Это библиотека функций + базы данных, использующая расширяемое хеширование и работающая + аналогично стандартной СУБД UNIX. Библиотека предоставляет + примитивы для хранения пар ключ/значение, поиска и извлечения + данных по его ключу и удаления ключа вместе с его данными. +

    +
    +
    +
    + Приблизительное время сборки: + менее 0.1 SBU +
    +
    + Требуемое дисковое + пространство: 13 MB +
    +
    +
    +
    +
    +

    + 8.38.1. Установка пакета GDBM +

    +

    + Подготовьте GDBM к компиляции: +

    +
    ./configure --prefix=/usr    \
    +            --disable-static \
    +            --enable-libgdbm-compat
    +
    +

    + Значение параметра configure: +

    +
    +
    + --enable-libgdbm-compat +
    +
    +

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

    +
    +
    +
    +

    + Скомпилируйте пакет: +

    +
    make
    +

    + Чтобы протестировать пакет, выполните: +

    +
    make check
    +

    + Установите пакет: +

    +
    make install
    +
    +
    +

    + 8.38.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.2-sysv/chapter08/gettext.html b/lfs-12.2-sysv/chapter08/gettext.html new file mode 100644 index 0000000..6ef07a6 --- /dev/null +++ b/lfs-12.2-sysv/chapter08/gettext.html @@ -0,0 +1,594 @@ + + + + + + 8.33. Gettext-0.22.5 + + + + + + + + +

    + 8.33. + Gettext-0.22.5 +

    +
    +
    +

    + Пакет Gettext содержит утилиты для интернационализации и + локализации. Они позволяют компилировать программы с поддержкой NLS + (Native Language Support), позволяя им выводить сообщения на родном + языке пользователя. +

    +
    +
    +
    + Приблизительное время сборки: + 1.6 SBU +
    +
    + Требуемое дисковое + пространство: 260 MB +
    +
    +
    +
    +
    +

    + 8.33.1. Установка пакета Gettext +

    +

    + Подготовьте Gettext для компиляции: +

    +
    ./configure --prefix=/usr    \
    +            --disable-static \
    +            --docdir=/usr/share/doc/gettext-0.22.5
    +

    + Скомпилируйте пакет: +

    +
    make
    +

    + Чтобы протестировать пакет (это занимает много времени, около 3 + SBU), выполните: +

    +
    make check
    +

    + Установите пакет: +

    +
    make install
    +chmod -v 0755 /usr/lib/preloadable_libintl.so
    +
    +
    +

    + 8.33.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.5, /usr/share/gettext и + /usr/share/gettext-0.22.5 +
    +
    +
    +
    +

    + Краткое описание +

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

    + 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.2-sysv/chapter08/glibc.html b/lfs-12.2-sysv/chapter08/glibc.html new file mode 100644 index 0000000..cf09649 --- /dev/null +++ b/lfs-12.2-sysv/chapter08/glibc.html @@ -0,0 +1,1315 @@ + + + + + + 8.5. Glibc-2.40 + + + + + + + + +

    + 8.5. Glibc-2.40 +

    +
    +
    +

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

    +
    +
    +
    + Приблизительное время сборки: + 12 SBU +
    +
    + Требуемое дисковое + пространство: 3.1 GB +
    +
    +
    +
    +
    +

    + 8.5.1. Установка пакета Glibc +

    +

    + Некоторые программы Glibc используют не совместимый с FHS каталог + /var/db для хранения своих данных во + время выполнения. Примените следующий патч, чтобы эти программы + хранили свои данные в каталогах, совместимых с FHS: +

    +
    patch -Np1 -i ../glibc-2.40-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" $(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.40) в работающей системе LFS вам необходимо + принять некоторые дополнительные меры предосторожности, чтобы + избежать поломки системы: +

    +
    +
      +
    • +

      + Обновление Glibc в системе LFS до версии 11.0 не + поддерживается. Пересоберите LFS, если вы используете такую + старую систему, но вам нужна более новая Glibc. +

      +
    • +
    • +

      + При обновлении системы LFS до версии 12.0 установите + Libxcrypt следуя + инструкции Раздел 8.27, + «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.10.5.» +

      +
    • +
    • +

      + Обновите заголовочные файлы API ядра, если они старше 4.19 + (проверьте текущую версию с помощью cat + /usr/include/linux/version.h) или, если вы + просто хотите обновить их, следуйте Раздел 5.4, + «Заголовочные файлы Linux-6.10.5 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. Следующие + инструкции установят минимальный набор локалей, необходимый для + оптимального охвата тестов +

    +
    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.40/localedata/SUPPORTED (он включает все + локали из списка выше и многие другие), выполнив команду: +

    +
    make localedata/install-locales
    +

    + Затем используйте команду localedef для создания и + установки локалей, не перечисленных в файле glibc-2.40/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.40/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.2-sysv/chapter08/gmp.html b/lfs-12.2-sysv/chapter08/gmp.html new file mode 100644 index 0000000..3fb015f --- /dev/null +++ b/lfs-12.2-sysv/chapter08/gmp.html @@ -0,0 +1,268 @@ + + + + + + 8.21. GMP-6.3.0 + + + + + + + + +

    + 8.21. GMP-6.3.0 +

    +
    +
    +

    + Пакет GMP содержит математические библиотеки. Они содержат полезные + функции для арифметики с произвольной точностью. +

    +
    +
    +
    + Приблизительное время сборки: + 0.3 SBU +
    +
    + Требуемое дисковое + пространство: 54 MB +
    +
    +
    +
    +
    +

    + 8.21.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.21.2. Содержимое + пакета GMP +

    +
    +
    +
    + Установленные библиотеки: + libgmp.so и libgmpxx.so +
    +
    + Созданные каталоги: + /usr/share/doc/gmp-6.3.0 +
    +
    +
    +
    +

    + Краткое описание +

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

    + libgmp +

    +
    +

    + Содержит точные математические функции +

    +
    +

    + libgmpxx +

    +
    +

    + Содержит точные математические функции C++ +

    +
    +
    +
    +
    + + + diff --git a/lfs-12.2-sysv/chapter08/gperf.html b/lfs-12.2-sysv/chapter08/gperf.html new file mode 100644 index 0000000..aee9d88 --- /dev/null +++ b/lfs-12.2-sysv/chapter08/gperf.html @@ -0,0 +1,163 @@ + + + + + + 8.39. Gperf-3.1 + + + + + + + + +

    + 8.39. Gperf-3.1 +

    +
    +
    +

    + Gperf генерирует идеальную хэш-функцию из набора ключей. +

    +
    +
    +
    + Приблизительное время сборки: + менее 0.1 SBU +
    +
    + Требуемое дисковое + пространство: 6.1 MB +
    +
    +
    +
    +
    +

    + 8.39.1. Установка пакета Gperf +

    +

    + Подготовьте Gperf к компиляции: +

    +
    ./configure --prefix=/usr --docdir=/usr/share/doc/gperf-3.1
    +

    + Скомпилируйте пакет: +

    +
    make
    +

    + Известно, что тесты завершаются ошибкой при одновременном + выполнении нескольких тестов (параметр -j больше 1). Для выполнения + тестов, запустите следующую команду: +

    +
    make -j1 check
    +

    + Установите пакет: +

    +
    make install
    +
    +
    +

    + 8.39.2. Содержимое + пакета Gperf +

    +
    +
    +
    + Установленные программы: + gperf +
    +
    + Созданные каталоги: + /usr/share/doc/gperf-3.1 +
    +
    +
    +
    +

    + Краткое описание +

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

    + gperf +

    +
    +

    + Генерирует идеальный хэш из набора ключей +

    +
    +
    +
    +
    + + + diff --git a/lfs-12.2-sysv/chapter08/grep.html b/lfs-12.2-sysv/chapter08/grep.html new file mode 100644 index 0000000..498f9d2 --- /dev/null +++ b/lfs-12.2-sysv/chapter08/grep.html @@ -0,0 +1,195 @@ + + + + + + 8.35. Grep-3.11 + + + + + + + + +

    + 8.35. Grep-3.11 +

    +
    +
    +

    + Пакет Grep содержит программы для поиска по содержимому файлов. +

    +
    +
    +
    + Приблизительное время сборки: + 0.4 SBU +
    +
    + Требуемое дисковое + пространство: 39 MB +
    +
    +
    +
    +
    +

    + 8.35.1. Установка пакета Grep +

    +

    + Во-первых, удалите предупреждение об использовании egrep и fgrep, + которое приводит к сбою тестов некоторых пакетов: +

    +
    sed -i "s/echo/#echo/" src/egrep.sh
    +

    + Подготовьте Grep к компиляции: +

    +
    ./configure --prefix=/usr
    +

    + Скомпилируйте пакет: +

    +
    make
    +

    + Чтобы протестировать пакет, выполните: +

    +
    make check
    +

    + Установите пакет: +

    +
    make install
    +
    +
    +

    + 8.35.2. Содержимое + пакета Grep +

    +
    +
    +
    + Установленные программы: + egrep, fgrep, и grep +
    +
    +
    +
    +

    + Краткое описание +

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

    + egrep +

    +
    +

    + Выводит строки, соответствующие расширенному регулярному + выражению. Команда устарела, вместо неё используйте + grep -E +

    +
    +

    + fgrep +

    +
    +

    + Выводит строки, соответствующие списку фиксированных + строк. Команда устарела, вместо неё используйте + grep -F +

    +
    +

    + grep +

    +
    +

    + Выводит строки, соответствующие простому регулярному + выражению +

    +
    +
    +
    +
    + + + diff --git a/lfs-12.2-sysv/chapter08/groff.html b/lfs-12.2-sysv/chapter08/groff.html new file mode 100644 index 0000000..ba486dc --- /dev/null +++ b/lfs-12.2-sysv/chapter08/groff.html @@ -0,0 +1,897 @@ + + + + + + 8.63. Groff-1.23.0 + + + + + + + + +

    + 8.63. Groff-1.23.0 +

    +
    +
    +

    + Пакет Groff содержит программы для обработки и форматирования + текста и изображений. +

    +
    +
    +
    + Приблизительное время сборки: + 0.2 SBU +
    +
    + Требуемое дисковое + пространство: 107 MB +
    +
    +
    +
    +
    +

    + 8.63.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.63.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.2-sysv/chapter08/grub.html b/lfs-12.2-sysv/chapter08/grub.html new file mode 100644 index 0000000..8d570c1 --- /dev/null +++ b/lfs-12.2-sysv/chapter08/grub.html @@ -0,0 +1,599 @@ + + + + + + 8.64. GRUB-2.12 + + + + + + + + +

    + 8.64. GRUB-2.12 +

    +
    +
    +

    + Пакет GRUB содержит загрузчик операционной системы от проекта GNU + (GRand Unified Bootloader). +

    +
    +
    +
    + Приблизительное время сборки: + 0.3 SBU +
    +
    + Требуемое дисковое + пространство: 166 MB +
    +
    +
    +
    +
    +

    + 8.64.1. Установка пакета GRUB +

    +
    + [Примечание] +

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

    +

    + Если ваша система поддерживает UEFI и вы хотите загрузить LFS с + UEFI, вам необходимо установить GRUB с поддержкой UEFI (и его + зависимости), следуя инструкциям на + страница BLFS. Вы можете пропустить установку этого пакета + или установить его и пакет из BLFS (на странице 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.64.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.2-sysv/chapter08/gzip.html b/lfs-12.2-sysv/chapter08/gzip.html new file mode 100644 index 0000000..1f6b947 --- /dev/null +++ b/lfs-12.2-sysv/chapter08/gzip.html @@ -0,0 +1,365 @@ + + + + + + 8.65. Gzip-1.13 + + + + + + + + +

    + 8.65. Gzip-1.13 +

    +
    +
    +

    + Пакет Gzip содержит программы для сжатия и распаковки файлов. +

    +
    +
    +
    + Приблизительное время сборки: + 0.3 SBU +
    +
    + Требуемое дисковое + пространство: 21 MB +
    +
    +
    +
    +
    +

    + 8.65.1. Установка пакета Gzip +

    +

    + Подготовьте Gzip к компиляции: +

    +
    ./configure --prefix=/usr
    +

    + Скомпилируйте пакет: +

    +
    make
    +

    + Чтобы протестировать пакет, выполните: +

    +
    make check
    +

    + Установите пакет: +

    +
    make install
    +
    +
    +

    + 8.65.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.2-sysv/chapter08/iana-etc.html b/lfs-12.2-sysv/chapter08/iana-etc.html new file mode 100644 index 0000000..468278e --- /dev/null +++ b/lfs-12.2-sysv/chapter08/iana-etc.html @@ -0,0 +1,163 @@ + + + + + + 8.4. Iana-Etc-20240806 + + + + + + + + +

    + 8.4. + Iana-Etc-20240806 +

    +
    +
    +

    + Пакет 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.2-sysv/chapter08/inetutils.html b/lfs-12.2-sysv/chapter08/inetutils.html new file mode 100644 index 0000000..ebf5989 --- /dev/null +++ b/lfs-12.2-sysv/chapter08/inetutils.html @@ -0,0 +1,369 @@ + + + + + + 8.41. Inetutils-2.5 + + + + + + + + +

    + 8.41. + Inetutils-2.5 +

    +
    +
    +

    + Пакет Inetutils содержит базовые программы для работы с сетью. +

    +
    +
    +
    + Приблизительное время сборки: + 0.2 SBU +
    +
    + Требуемое дисковое + пространство: 35 MB +
    +
    +
    +
    +
    +

    + 8.41.1. Установка пакета Inetutils +

    +

    + Сначала внесите некоторые изменения, чтобы сборку пакета с помощью + gcc-14.1 или более поздней версии: +

    +
    sed -i 's/def HAVE_TERMCAP_TGETENT/ 1/' telnet/telnet.c
    +

    + Подготовьте 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.41.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.2-sysv/chapter08/intltool.html b/lfs-12.2-sysv/chapter08/intltool.html new file mode 100644 index 0000000..48dfd25 --- /dev/null +++ b/lfs-12.2-sysv/chapter08/intltool.html @@ -0,0 +1,245 @@ + + + + + + 8.45. Intltool-0.51.0 + + + + + + + + +

    + 8.45. + Intltool-0.51.0 +

    +
    +
    +

    + Intltool — это инструмент интернационализации, используемый для + извлечения переводимых строк из исходных файлов. +

    +
    +
    +
    + Приблизительное время сборки: + менее 0.1 SBU +
    +
    + Требуемое дисковое + пространство: 1.5 MB +
    +
    +
    +
    +
    +

    + 8.45.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.45.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.2-sysv/chapter08/introduction.html b/lfs-12.2-sysv/chapter08/introduction.html new file mode 100644 index 0000000..5635efd --- /dev/null +++ b/lfs-12.2-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.2-sysv/chapter08/iproute2.html b/lfs-12.2-sysv/chapter08/iproute2.html new file mode 100644 index 0000000..a1e97b5 --- /dev/null +++ b/lfs-12.2-sysv/chapter08/iproute2.html @@ -0,0 +1,432 @@ + + + + + + 8.66. IPRoute2-6.10.0 + + + + + + + + +

    + 8.66. + IPRoute2-6.10.0 +

    +
    +
    +

    + Пакет IPRoute2 содержит набор программ для базового и расширенного + администрирования сетей IPv4. +

    +
    +
    +
    + Приблизительное время сборки: + 0.1 SBU +
    +
    + Требуемое дисковое + пространство: 17 MB +
    +
    +
    +
    +
    +

    + 8.66.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.10.0
    +cp -v COPYING README* /usr/share/doc/iproute2-6.10.0
    +
    +
    +

    + 8.66.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.10.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.2-sysv/chapter08/jinja2.html b/lfs-12.2-sysv/chapter08/jinja2.html new file mode 100644 index 0000000..2a41cb5 --- /dev/null +++ b/lfs-12.2-sysv/chapter08/jinja2.html @@ -0,0 +1,128 @@ + + + + + + 8.75. Jinja2-3.1.4 + + + + + + + + +

    + 8.75. Jinja2-3.1.4 +

    +
    +
    +

    + Jinja2 - это модуль Python, который реализует простой язык шаблонов + pythonic +

    +
    +
    +
    + Приблизительное время сборки: + менее 0.1 SBU +
    +
    + Требуемое дисковое + пространство: 2.5 MB +
    +
    +
    +
    +
    +

    + 8.75.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.75.2. + Содержимое пакета Jinja2 +

    +
    +
    +
    + Созданные каталоги: + /usr/lib/python3.12/site-packages/Jinja2-3.1.4.dist-info +
    +
    +
    +
    +
    + + + diff --git a/lfs-12.2-sysv/chapter08/kbd.html b/lfs-12.2-sysv/chapter08/kbd.html new file mode 100644 index 0000000..83a14aa --- /dev/null +++ b/lfs-12.2-sysv/chapter08/kbd.html @@ -0,0 +1,586 @@ + + + + + + 8.67. Kbd-2.6.4 + + + + + + + + +

    + 8.67. Kbd-2.6.4 +

    +
    +
    +

    + Пакет Kbd содержит файлы таблиц клавиш, консольные шрифты и утилиты + клавиатуры. +

    +
    +
    +
    + Приблизительное время сборки: + 0.1 SBU +
    +
    + Требуемое дисковое + пространство: 34 MB +
    +
    +
    +
    +
    +

    + 8.67.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.67.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.2-sysv/chapter08/kmod.html b/lfs-12.2-sysv/chapter08/kmod.html new file mode 100644 index 0000000..d381631 --- /dev/null +++ b/lfs-12.2-sysv/chapter08/kmod.html @@ -0,0 +1,330 @@ + + + + + + 8.49. Kmod-33 + + + + + + + + +

    + 8.49. Kmod-33 +

    +
    +
    +

    + Пакет Kmod содержит библиотеки и утилиты для загрузки модулей ядра. +

    +
    +
    +
    + Приблизительное время сборки: + менее 0.1 SBU +
    +
    + Требуемое дисковое + пространство: 11 MB +
    +
    +
    +
    +
    +

    + 8.49.1. Установка пакета Kmod +

    +

    + Подготовьте Kmod к компиляции: +

    +
    ./configure --prefix=/usr     \
    +            --sysconfdir=/etc \
    +            --with-openssl    \
    +            --with-xz         \
    +            --with-zstd       \
    +            --with-zlib       \
    +            --disable-manpages
    +
    +

    + Значение параметров настройки: +

    +
    +
    + --with-openssl +
    +
    +

    + Этот параметр позволяет Kmod обрабатывать сигнатуры PKCS7 для + модулей ядра. +

    +
    +
    + --with-xz, --with-zlib и --with-zstd +
    +
    +

    + Эти параметры позволяют Kmod обрабатывать сжатые модули ядра. +

    +
    +
    + --disable-manpages +
    +
    +

    + Эта опция отключает генерацию справочных страниц, для которых + требуется внешняя программа. +

    +
    +
    +
    +

    + Скомпилируйте пакет: +

    +
    make
    +

    + Набору тестов этого пакета необходимы необработанные заголовочные + файлы ядра (а не «очищенные», установленные ранее), но это + выходит за рамки LFS. +

    +

    + Установите пакет и восстановите некоторые символические ссылки для + совместимости с Module-Init-Tools (пакетом, который ранее + обрабатывал модули ядра Linux). Система сборки создаст все эти + символические ссылки в /usr/bin, но + здесь нам нужна только команда lsmod, а все остальные + символические ссылки должны вести в /usr/sbin: +

    +
    make install
    +
    +for target in depmod insmod modinfo modprobe rmmod; do
    +  ln -sfv ../bin/kmod /usr/sbin/$target
    +  rm -fv /usr/bin/$target
    +done
    +
    +
    +

    + 8.49.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.2-sysv/chapter08/less.html b/lfs-12.2-sysv/chapter08/less.html new file mode 100644 index 0000000..19509fe --- /dev/null +++ b/lfs-12.2-sysv/chapter08/less.html @@ -0,0 +1,209 @@ + + + + + + 8.42. Less-661 + + + + + + + + +

    + 8.42. Less-661 +

    +
    +
    +

    + Пакет Less содержит средство просмотра текстовых файлов +

    +
    +
    +
    + Приблизительное время сборки: + менее 0.1 SBU +
    +
    + Требуемое дисковое + пространство: 14 MB +
    +
    +
    +
    +
    +

    + 8.42.1. Установка пакета Less +

    +

    + Подготовьте Less к компиляции: +

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

    + Значение параметров настройки: +

    +
    +
    + --sysconfdir=/etc +
    +
    +

    + Этот параметр указывает программам, созданным пакетом, искать + файлы конфигурации в /etc. +

    +
    +
    +
    +

    + Скомпилируйте пакет: +

    +
    make
    +

    + Чтобы протестировать пакет, выполните: +

    +
    make check
    +

    + Установите пакет: +

    +
    make install
    +
    +
    +

    + 8.42.2. Содержимое + пакета Less +

    +
    +
    +
    + Установленные программы: + less, lessecho и lesskey +
    +
    +
    +
    +

    + Краткое описание +

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

    + less +

    +
    +

    + Просмотрщик файлов; отображает содержимое данного файла, + позволяя пользователю прокручивать файл, искать строки и + переходить к меткам +

    +
    +

    + lessecho +

    +
    +

    + Требуется для расширения метасимволов, таких как + * и ?, в именах файлов в системах + Unix +

    +
    +

    + lesskey +

    +
    +

    + Используется для привязки клавиш в программе less +

    +
    +
    +
    +
    + + + diff --git a/lfs-12.2-sysv/chapter08/libcap.html b/lfs-12.2-sysv/chapter08/libcap.html new file mode 100644 index 0000000..c1e0844 --- /dev/null +++ b/lfs-12.2-sysv/chapter08/libcap.html @@ -0,0 +1,258 @@ + + + + + + 8.26. Libcap-2.70 + + + + + + + + +

    + 8.26. Libcap-2.70 +

    +
    +
    +

    + Пакет Libcap реализует интерфейсы пользовательского пространства + для возможностей POSIX 1003.1e, доступных в ядрах Linux. Эти + возможности разделяют полномочия суперпользователя root на набор + отдельных привилегий. +

    +
    +
    +
    + Приблизительное время сборки: + менее 0.1 SBU +
    +
    + Требуемое дисковое + пространство: 2.9 MB +
    +
    +
    +
    +
    +

    + 8.26.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.26.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.2-sysv/chapter08/libelf.html b/lfs-12.2-sysv/chapter08/libelf.html new file mode 100644 index 0000000..357909d --- /dev/null +++ b/lfs-12.2-sysv/chapter08/libelf.html @@ -0,0 +1,169 @@ + + + + + + 8.50. Libelf из Elfutils-0.191 + + + + + + + + +

    + 8.50. Libelf из + Elfutils-0.191 +

    +
    +
    +

    + Libelf — это библиотека для обработки файлов ELF (Executable and + Linkable Format - формат исполняемых и связываемых файлов). +

    +
    +
    +
    + Приблизительное время сборки: + 0.3 SBU +
    +
    + Требуемое дисковое + пространство: 127 MB +
    +
    +
    +
    +
    +

    + 8.50.1. Установка пакета Libelf +

    +

    + Libelf является частью пакета elfutils-0.191. Используйте + elfutils-0.191.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.50.2. + Содержимое пакета Libelf +

    +
    +
    +
    + Установленные библиотеки: + libelf.so +
    +
    + Созданные каталоги: + /usr/include/elfutils +
    +
    +
    +
    +

    + Краткое описание +

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

    + libelf.so +

    +
    +

    + Содержит функции API для обработки объектных файлов ELF +

    +
    +
    +
    +
    + + + diff --git a/lfs-12.2-sysv/chapter08/libffi.html b/lfs-12.2-sysv/chapter08/libffi.html new file mode 100644 index 0000000..b3f7d9e --- /dev/null +++ b/lfs-12.2-sysv/chapter08/libffi.html @@ -0,0 +1,210 @@ + + + + + + 8.51. Libffi-3.4.6 + + + + + + + + +

    + 8.51. Libffi-3.4.6 +

    +
    +
    +

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

    +

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

    +
    +
    +
    + Приблизительное время сборки: + 1.7 SBU +
    +
    + Требуемое дисковое + пространство: 11 MB +
    +
    +
    +
    +
    +

    + 8.51.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.51.2. + Содержимое пакета Libffi +

    +
    +
    +
    + Установленные библиотеки: + libffi.so +
    +
    +
    +
    +

    + Краткое описание +

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

    + libffi +

    +
    +

    + Содержит внешний интерфейс для API-функций +

    +
    +
    +
    +
    + + + diff --git a/lfs-12.2-sysv/chapter08/libpipeline.html b/lfs-12.2-sysv/chapter08/libpipeline.html new file mode 100644 index 0000000..2480ece --- /dev/null +++ b/lfs-12.2-sysv/chapter08/libpipeline.html @@ -0,0 +1,158 @@ + + + + + + 8.68. Libpipeline-1.5.7 + + + + + + + + +

    + 8.68. + Libpipeline-1.5.7 +

    +
    +
    +

    + Пакет Libpipeline содержит библиотеку для гибкого и удобного + управления подпроцессами. +

    +
    +
    +
    + Приблизительное время сборки: + 0.1 SBU +
    +
    + Требуемое дисковое + пространство: 9.7 MB +
    +
    +
    +
    +
    +

    + 8.68.1. Установка пакета Libpipeline +

    +

    + Подготовьте Libpipeline к компиляции: +

    +
    ./configure --prefix=/usr
    +

    + Скомпилируйте пакет: +

    +
    make
    +

    + Чтобы протестировать пакет, выполните: +

    +
    make check
    +

    + Установите пакет: +

    +
    make install
    +
    +
    +

    + 8.68.2. Содержимое пакета Libpipeline +

    +
    +
    +
    + Установленные библиотеки: + libpipeline.so +
    +
    +
    +
    +

    + Краткое описание +

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

    + libpipeline +

    +
    +

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

    +
    +
    +
    +
    + + + diff --git a/lfs-12.2-sysv/chapter08/libtool.html b/lfs-12.2-sysv/chapter08/libtool.html new file mode 100644 index 0000000..abca931 --- /dev/null +++ b/lfs-12.2-sysv/chapter08/libtool.html @@ -0,0 +1,211 @@ + + + + + + 8.37. Libtool-2.4.7 + + + + + + + + +

    + 8.37. + Libtool-2.4.7 +

    +
    +
    +

    + Пакет Libtool содержит сценарий поддержки универсальной библиотеки + GNU. Это упрощает использование общих библиотек благодаря + согласованному переносимому интерфейсу. +

    +
    +
    +
    + Приблизительное время сборки: + 0.8 SBU +
    +
    + Требуемое дисковое + пространство: 45 MB +
    +
    +
    +
    +
    +

    + 8.37.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.37.2. + Содержимое пакета Libtool +

    +
    +
    +
    + Установленные программы: + libtool и libtoolize +
    +
    + Установленные библиотеки: + libltdl.so +
    +
    + Созданные каталоги: + /usr/include/libltdl и + /usr/share/libtool +
    +
    +
    +
    +

    + Краткое описание +

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

    + libtool +

    +
    +

    + Обеспечивает общие услуги поддержки при сборке библиотек +

    +
    +

    + libtoolize +

    +
    +

    + Предоставляет стандартный способ добавления поддержки + libtool в + пакет +

    +
    +

    + libltdl +

    +
    +

    + Скрывает различные проблемы, связанные с открытием + динамически загружаемых библиотек +

    +
    +
    +
    +
    + + + diff --git a/lfs-12.2-sysv/chapter08/libxcrypt.html b/lfs-12.2-sysv/chapter08/libxcrypt.html new file mode 100644 index 0000000..03550e2 --- /dev/null +++ b/lfs-12.2-sysv/chapter08/libxcrypt.html @@ -0,0 +1,225 @@ + + + + + + 8.27. Libxcrypt-4.4.36 + + + + + + + + +

    + 8.27. + Libxcrypt-4.4.36 +

    +
    +
    +

    + Пакет Libxcrypt содержит современную библиотеку для одностороннего + хэширования паролей. +

    +
    +
    +
    + Приблизительное время сборки: + 0.1 SBU +
    +
    + Требуемое дисковое + пространство: 12 MB +
    +
    +
    +
    +
    +

    + 8.27.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.27.2. + Содержимое пакета Libxcrypt +

    +
    +
    +
    + Установленные библиотеки: + libcrypt.so +
    +
    +
    +
    +

    + Краткое описание +

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

    + libcrypt +

    +
    +

    + Содержит функции для хэширования паролей +

    +
    +
    +
    +
    + + + diff --git a/lfs-12.2-sysv/chapter08/lz4.html b/lfs-12.2-sysv/chapter08/lz4.html new file mode 100644 index 0000000..672a0d9 --- /dev/null +++ b/lfs-12.2-sysv/chapter08/lz4.html @@ -0,0 +1,217 @@ + + + + + + 8.9. Lz4-1.10.0 + + + + + + + + +

    + 8.9. Lz4-1.10.0 +

    +
    +
    +

    + Lz4 - это алгоритм сжатия без потерь, обеспечивающий скорость + сжатия более 500 МБ/с на ядро. Он оснащен чрезвычайно быстрым + декодером со скоростью несколько ГБ/с. Lz4 может работать с + Zstandard, позволяя обоим алгоритмам быстрее сжимать данные. +

    +
    +
    +
    + Приблизительное время сборки: + 0.1 SBU +
    +
    + Требуемое дисковое + пространство: 4.2 MB +
    +
    +
    +
    +
    +

    + 8.9.1. Установка пакета Lz4 +

    +

    + Скомпилируйте пакет: +

    +
    make BUILD_STATIC=no PREFIX=/usr
    +

    + Чтобы протестировать пакет, выполните: +

    +
    make -j1 check
    +

    + Установите пакет: +

    +
    make BUILD_STATIC=no PREFIX=/usr install
    +
    +
    +

    + 8.9.2. Содержимое + пакета Lz4 +

    +
    +
    +
    + Установленные программы: + lz4, lz4c (ссылка на lz4), lz4cat (ссылка + на lz4) и unlz4 (ссылка на lz4) +
    +
    + Установленные библиотеки: + liblz4.so +
    +
    +
    +
    +

    + Краткое описание +

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

    + lz4 +

    +
    +

    + Сжимает или распаковывает файлы, используя алгоритм LZ4 +

    +
    +

    + lz4c +

    +
    +

    + Сжимает файлы, используя LZ4 +

    +
    +

    + lz4cat +

    +
    +

    + Выводит содержимое файла, сжатого с использованием LZ4 +

    +
    +

    + unlz4 +

    +
    +

    + Распаковывает файлы, используя LZ4 +

    +
    +

    + liblz4 +

    +
    +

    + Библиотека, реализующая сжатие данных без потерь с + использованием алгоритма LZ4 +

    +
    +
    +
    +
    + + + diff --git a/lfs-12.2-sysv/chapter08/m4.html b/lfs-12.2-sysv/chapter08/m4.html new file mode 100644 index 0000000..a94abaa --- /dev/null +++ b/lfs-12.2-sysv/chapter08/m4.html @@ -0,0 +1,168 @@ + + + + + + 8.13. M4-1.4.19 + + + + + + + + +

    + 8.13. M4-1.4.19 +

    +
    +
    +

    + Пакет M4 содержит макропроцессор. +

    +
    +
    +
    + Приблизительное время сборки: + 0.3 SBU +
    +
    + Требуемое дисковое + пространство: 48 MB +
    +
    +
    +
    +
    +

    + 8.13.1. Установка пакета M4 +

    +

    + Подготовьте M4 к компиляции: +

    +
    ./configure --prefix=/usr
    +

    + Скомпилируйте пакет: +

    +
    make
    +

    + Чтобы протестировать пакет, выполните: +

    +
    make check
    +

    + Установите пакет: +

    +
    make install
    +
    +
    +

    + 8.13.2. Содержимое + пакета M4 +

    +
    +
    +
    + Установленные программы: + m4 +
    +
    +
    +
    +

    + Краткое описание +

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

    + m4 +

    +
    +

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

    +
    +
    +
    +
    + + + diff --git a/lfs-12.2-sysv/chapter08/make.html b/lfs-12.2-sysv/chapter08/make.html new file mode 100644 index 0000000..9272cfa --- /dev/null +++ b/lfs-12.2-sysv/chapter08/make.html @@ -0,0 +1,161 @@ + + + + + + 8.69. Make-4.4.1 + + + + + + + + +

    + 8.69. Make-4.4.1 +

    +
    +
    +

    + Пакет Make содержит программу, управляющую генерацией исполняемых и + других файлов, из исходного кода. +

    +
    +
    +
    + Приблизительное время сборки: + 0.7 SBU +
    +
    + Требуемое дисковое + пространство: 13 MB +
    +
    +
    +
    +
    +

    + 8.69.1. Установка пакета Make +

    +

    + Подготовьте Make к компиляции: +

    +
    ./configure --prefix=/usr
    +

    + Скомпилируйте пакет: +

    +
    make
    +

    + Чтобы протестировать пакет, выполните: +

    +
    chown -R tester .
    +su tester -c "PATH=$PATH make check"
    +

    + Установите пакет: +

    +
    make install
    +
    +
    +

    + 8.69.2. Содержимое + пакета Make +

    +
    +
    +
    + Установленные программы: + make +
    +
    +
    +
    +

    + Краткое описание +

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

    + make +

    +
    +

    + Автоматически определяет, какие части пакета необходимо + (пере)компилировать и запускает соответствующие команды. +

    +
    +
    +
    +
    + + + diff --git a/lfs-12.2-sysv/chapter08/man-db.html b/lfs-12.2-sysv/chapter08/man-db.html new file mode 100644 index 0000000..f7a0c9e --- /dev/null +++ b/lfs-12.2-sysv/chapter08/man-db.html @@ -0,0 +1,761 @@ + + + + + + 8.77. Man-DB-2.12.1 + + + + + + + + +

    + 8.77. + Man-DB-2.12.1 +

    +
    +
    +

    + Пакет Man-DB содержит программы для поиска и просмотра справочных + страниц. +

    +
    +
    +
    + Приблизительное время сборки: + 0.3 SBU +
    +
    + Требуемое дисковое + пространство: 43 MB +
    +
    +
    +
    +
    +

    + 8.77.1. Установка пакета Man-DB +

    +

    + Подготовьте Man-DB к компиляции: +

    +
    ./configure --prefix=/usr                         \
    +            --docdir=/usr/share/doc/man-db-2.12.1 \
    +            --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.77.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.77.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.1 +
    +
    +
    +
    +

    + Краткое описание +

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

    + 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.2-sysv/chapter08/man-pages.html b/lfs-12.2-sysv/chapter08/man-pages.html new file mode 100644 index 0000000..d39ba40 --- /dev/null +++ b/lfs-12.2-sysv/chapter08/man-pages.html @@ -0,0 +1,156 @@ + + + + + + 8.3. Man-pages-6.9.1 + + + + + + + + +

    + 8.3. + Man-pages-6.9.1 +

    +
    +
    +

    + Пакет Man-pages содержит более 2400 справочных руководств. +

    +
    +
    +
    + Приблизительное время сборки: + 0.1 SBU +
    +
    + Требуемое дисковое + пространство: 52 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.2-sysv/chapter08/markupsafe.html b/lfs-12.2-sysv/chapter08/markupsafe.html new file mode 100644 index 0000000..0a07b23 --- /dev/null +++ b/lfs-12.2-sysv/chapter08/markupsafe.html @@ -0,0 +1,128 @@ + + + + + + 8.74. MarkupSafe-2.1.5 + + + + + + + + +

    + 8.74. + MarkupSafe-2.1.5 +

    +
    +
    +

    + MarkupSafe — это модуль Python, реализующий безопасное + использование строк в языках разметки XML/HTML/XHTML +

    +
    +
    +
    + Приблизительное время сборки: + менее 0.1 SBU +
    +
    + Требуемое дисковое + пространство: 508 KB +
    +
    +
    +
    +
    +

    + 8.74.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.74.2. + Содержимое пакета MarkupSafe +

    +
    +
    +
    + Созданные каталоги: + /usr/lib/python3.12/site-packages/MarkupSafe-2.1.5.dist-info +
    +
    +
    +
    +
    + + + diff --git a/lfs-12.2-sysv/chapter08/meson.html b/lfs-12.2-sysv/chapter08/meson.html new file mode 100644 index 0000000..7e51185 --- /dev/null +++ b/lfs-12.2-sysv/chapter08/meson.html @@ -0,0 +1,192 @@ + + + + + + 8.57. Meson-1.5.1 + + + + + + + + +

    + 8.57. Meson-1.5.1 +

    +
    +
    +

    + Meson — это система сборки с открытым исходным кодом, разработанная + таким образом, чтобы быть очень быстрой и максимально удобной для + пользователя. +

    +
    +
    +
    + Приблизительное время сборки: + менее 0.1 SBU +
    +
    + Требуемое дисковое + пространство: 43 MB +
    +
    +
    +
    +
    +

    + 8.57.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.57.2. Содержимое + пакета Meson +

    +
    +
    +
    + Установленные программы: + meson +
    +
    + Созданные каталоги: + /usr/lib/python3.12/site-packages/meson-1.5.1.dist-info + и /usr/lib/python3.12/site-packages/mesonbuild +
    +
    +
    +
    +

    + Краткое описание +

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

    + meson +

    +
    +

    + Высокопроизводительная система сборки +

    +
    +
    +
    +
    + + + diff --git a/lfs-12.2-sysv/chapter08/mpc.html b/lfs-12.2-sysv/chapter08/mpc.html new file mode 100644 index 0000000..710af18 --- /dev/null +++ b/lfs-12.2-sysv/chapter08/mpc.html @@ -0,0 +1,164 @@ + + + + + + 8.23. MPC-1.3.1 + + + + + + + + +

    + 8.23. MPC-1.3.1 +

    +
    +
    +

    + Пакет MPC содержит библиотеку для арифметики комплексных чисел с + высокой точностью и правильным округлением результата. +

    +
    +
    +
    + Приблизительное время сборки: + 0.1 SBU +
    +
    + Требуемое дисковое + пространство: 22 MB +
    +
    +
    +
    +
    +

    + 8.23.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.23.2. Содержимое + пакета MPC +

    +
    +
    +
    + Установленные библиотеки: + libmpc.so +
    +
    + Созданные каталоги: + /usr/share/doc/mpc-1.3.1 +
    +
    +
    +
    +

    + Краткое описание +

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

    + libmpc +

    +
    +

    + Содержит сложные математические функции +

    +
    +
    +
    +
    + + + diff --git a/lfs-12.2-sysv/chapter08/mpfr.html b/lfs-12.2-sysv/chapter08/mpfr.html new file mode 100644 index 0000000..945e3c9 --- /dev/null +++ b/lfs-12.2-sysv/chapter08/mpfr.html @@ -0,0 +1,175 @@ + + + + + + 8.22. MPFR-4.2.1 + + + + + + + + +

    + 8.22. MPFR-4.2.1 +

    +
    +
    +

    + Пакет MPFR содержит функции для двоичных вычислений с плавающей + запятой произвольной точности. +

    +
    +
    +
    + Приблизительное время сборки: + 0.2 SBU +
    +
    + Требуемое дисковое + пространство: 43 MB +
    +
    +
    +
    +
    +

    + 8.22.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.22.2. Содержимое + пакета MPFR +

    +
    +
    +
    + Установленные библиотеки: + libmpfr.so +
    +
    + Созданные каталоги: + /usr/share/doc/mpfr-4.2.1 +
    +
    +
    +
    +

    + Краткое описание +

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

    + libmpfr +

    +
    +

    + Содержит математические функции с произвольной точностью +

    +
    +
    +
    +
    + + + diff --git a/lfs-12.2-sysv/chapter08/ncurses.html b/lfs-12.2-sysv/chapter08/ncurses.html new file mode 100644 index 0000000..38e1723 --- /dev/null +++ b/lfs-12.2-sysv/chapter08/ncurses.html @@ -0,0 +1,527 @@ + + + + + + 8.30. Ncurses-6.5 + + + + + + + + +

    + 8.30. + Ncurses-6.5 +

    +
    +
    +

    + Пакет Ncurses содержит библиотеки для независимой от терминала + обработки ввода/вывода +

    +
    +
    +
    + Приблизительное время сборки: + 0.2 SBU +
    +
    + Требуемое дисковое + пространство: 46 MB +
    +
    +
    +
    +
    +

    + 8.30.1. Установка пакета Ncurses +

    +

    + Подготовьте Ncurses к компиляции: +

    +
    ./configure --prefix=/usr           \
    +            --mandir=/usr/share/man \
    +            --with-shared           \
    +            --without-debug         \
    +            --without-normal        \
    +            --with-cxx-shared       \
    +            --enable-pc-files       \
    +            --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. +

    +
    +
    +
    +

    + Скомпилируйте пакет: +

    +
    make
    +

    + У этого пакета есть набор тестов, но его можно запустить только + после того, как пакет будет установлен. Тесты находятся в каталоге + test/. Дополнительные сведения + смотрите в файле README в этом + каталоге. +

    +

    + Установка этого пакета приведет к перезаписи libncursesw.so.6.5. Это может привести к сбою + процесса оболочки, который использует код и данные из файла + библиотеки. Установите пакет с помощью DESTDIR и правильно замените файл библиотеки с + помощью команды install(также отредактирован + заголовочный файл curses.h, чтобы + обеспечить использование ABI расширенного набора символов, как это + сделано в Раздел 6.3, «Ncurses-6.5»). +

    +
    make DESTDIR=$PWD/dest install
    +install -vm755 dest/usr/lib/libncursesw.so.6.5 /usr/lib
    +rm -v  dest/usr/lib/libncursesw.so.6.5
    +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.5
    +
    + [Примечание] +

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

    +

    + С помощью приведенных выше инструкций не создаются библиотеки + 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.30.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.5 +
    +
    +
    +
    +

    + Краткое описание +

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

    + 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.2-sysv/chapter08/ninja.html b/lfs-12.2-sysv/chapter08/ninja.html new file mode 100644 index 0000000..e5f44b7 --- /dev/null +++ b/lfs-12.2-sysv/chapter08/ninja.html @@ -0,0 +1,209 @@ + + + + + + 8.56. Ninja-1.12.1 + + + + + + + + +

    + 8.56. Ninja-1.12.1 +

    +
    +
    +

    + Ninja - небольшая система сборки ориентированная на скорость. +

    +
    +
    +
    + Приблизительное время сборки: + 0.2 SBU +
    +
    + Требуемое дисковое + пространство: 37 MB +
    +
    +
    +
    +
    +

    + 8.56.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 под текущую систему. +

    +
    +
    +
    +

    + Тесты этого пакета не могут быть выполнены в среде chroot, так как + для них требуется + cmake. +

    +

    + Установите пакет: +

    +
    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.56.2. Содержимое + пакета Ninja +

    +
    +
    +
    + Установленные программы: + ninja +
    +
    +
    +
    +

    + Краткое описание +

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

    + ninja +

    +
    +

    + это система сборки Ninja +

    +
    +
    +
    +
    + + + diff --git a/lfs-12.2-sysv/chapter08/openssl.html b/lfs-12.2-sysv/chapter08/openssl.html new file mode 100644 index 0000000..b6e012e --- /dev/null +++ b/lfs-12.2-sysv/chapter08/openssl.html @@ -0,0 +1,287 @@ + + + + + + 8.48. OpenSSL-3.3.1 + + + + + + + + +

    + 8.48. + OpenSSL-3.3.1 +

    +
    +
    +

    + Пакет OpenSSL содержит инструменты управления и библиотеки, + относящиеся к криптографии. Они полезны для предоставления + криптографических функций другим пакетам, таким как OpenSSH, + приложениям электронной почты и веб-браузерам (для доступа к сайтам + по HTTPS). +

    +
    +
    +
    + Приблизительное время сборки: + 1.7 SBU +
    +
    + Требуемое дисковое + пространство: 883 MB +
    +
    +
    +
    +
    +

    + 8.48.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.3.1
    +

    + По желанию, установите дополнительную документацию: +

    +
    cp -vfr doc/* /usr/share/doc/openssl-3.3.1
    +
    + [Примечание] +

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

    +

    + Вы должны обновить OpenSSL, когда будет выпущена новая версия, + исправляющая уязвимости. Начиная с OpenSSL 3.0.0, схема + управления версиями OpenSSL следует формату MAJOR.MINOR.PATCH. + Совместимость API/ABI гарантируется для одной и той же ОСНОВНОЙ + (MAJOR) версии. Поскольку LFS устанавливает только общие + библиотеки, нет необходимости перекомпилировать пакеты, которые + ссылаются на libcrypto.so или + libssl.so, при обновлении до версии с тем же ОСНОВНЫМ номером + версии. +

    +

    + Все запущенные программы, связанные с этими библиотеками, после + обновления необходимо остановить и перезапустить. Для получения + более подробной информации ознакомьтесь с соответствующей записью + в Раздел 8.2.1, + «Проблемы с обновлением». +

    +
    +
    +
    +

    + 8.48.2. + Содержимое пакета OpenSSL +

    +
    +
    +
    + Установленные программы: + c_rehash и openssl +
    +
    + Установленные библиотеки: + libcrypto.so и libssl.so +
    +
    + Созданные каталоги: + /etc/ssl, /usr/include/openssl, + /usr/lib/engines и /usr/share/doc/openssl-3.3.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.2-sysv/chapter08/patch.html b/lfs-12.2-sysv/chapter08/patch.html new file mode 100644 index 0000000..37397c7 --- /dev/null +++ b/lfs-12.2-sysv/chapter08/patch.html @@ -0,0 +1,165 @@ + + + + + + 8.70. Patch-2.7.6 + + + + + + + + +

    + 8.70. Patch-2.7.6 +

    +
    +
    +

    + Пакет Patch содержит программу для изменения или создания файлов + путём наложение «патча», обычно, создаваемого программой + diff. +

    +
    +
    +
    + Приблизительное время сборки: + 0.2 SBU +
    +
    + Требуемое дисковое + пространство: 12 MB +
    +
    +
    +
    +
    +

    + 8.70.1. Установка пакета Patch +

    +

    + Подготовьте Patch к компиляции: +

    +
    ./configure --prefix=/usr
    +

    + Скомпилируйте пакет: +

    +
    make
    +

    + Чтобы протестировать пакет, выполните: +

    +
    make check
    +

    + Установите пакет: +

    +
    make install
    +
    +
    +

    + 8.70.2. Содержимое + пакета Patch +

    +
    +
    +
    + Установленные программы: + patch +
    +
    +
    +
    +

    + Краткое описание +

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

    + patch +

    +
    +

    + Изменяет файлы в соответствии с файлом исправления (патч + обычно представляет собой список отличий, создаваемый с + помощью программы diff. Применяя их к + исходным файлам, patch создает + исправленные версии.) +

    +
    +
    +
    +
    + + + diff --git a/lfs-12.2-sysv/chapter08/perl.html b/lfs-12.2-sysv/chapter08/perl.html new file mode 100644 index 0000000..b9668e9 --- /dev/null +++ b/lfs-12.2-sysv/chapter08/perl.html @@ -0,0 +1,691 @@ + + + + + + 8.43. Perl-5.40.0 + + + + + + + + +

    + 8.43. Perl-5.40.0 +

    +
    +
    +

    + Пакет Perl содержит практический язык для извлечения данных и + составления отчётов (Practical Extraction and Report Language). +

    +
    +
    +
    + Приблизительное время сборки: + 1.4 SBU +
    +
    + Требуемое дисковое + пространство: 245 MB +
    +
    +
    +
    +
    +

    + 8.43.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                                          \
    +             -D prefix=/usr                                \
    +             -D vendorprefix=/usr                          \
    +             -D privlib=/usr/lib/perl5/5.40/core_perl      \
    +             -D archlib=/usr/lib/perl5/5.40/core_perl      \
    +             -D sitelib=/usr/lib/perl5/5.40/site_perl      \
    +             -D sitearch=/usr/lib/perl5/5.40/site_perl     \
    +             -D vendorlib=/usr/lib/perl5/5.40/vendor_perl  \
    +             -D vendorarch=/usr/lib/perl5/5.40/vendor_perl \
    +             -D man1dir=/usr/share/man/man1                \
    +             -D man3dir=/usr/share/man/man3                \
    +             -D pager="/usr/bin/less -isR"                 \
    +             -D useshrplib                                 \
    +             -D usethreads
    +
    +

    + Значение параметров Configure: +

    +
    +
    + -D + pager="/usr/bin/less -isR" +
    +
    +

    + Параметр указывает использовать less вместо more. +

    +
    +
    + -D + man1dir=/usr/share/man/man1 -D + man3dir=/usr/share/man/man3 +
    +
    +

    + Так как Groff еще не установлен, Configure не будет + создавать man-страницы для Perl. Эти параметры переопределяют + это поведение. +

    +
    +
    + -D + usethreads +
    +
    +

    + Собрать Perl с поддержкой потоков. +

    +
    +
    +
    +

    + Скомпилируйте пакет: +

    +
    make
    +

    + Чтобы протестировать пакет (примерно 11 SBU), выполните: +

    +
    TEST_JOBS=$(nproc) make test_harness
    +

    + Установка пакета и очистка: +

    +
    make install
    +unset BUILD_ZLIB BUILD_BZIP2
    +
    +
    +

    + 8.43.2. Содержимое + пакета Perl +

    +
    +
    +
    + Установленные программы: + corelist, cpan, enc2xs, encguess, h2ph, + h2xs, instmodsh, json_pp, libnetcfg, perl, perl5.40.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.40.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.2-sysv/chapter08/pkgconf.html b/lfs-12.2-sysv/chapter08/pkgconf.html new file mode 100644 index 0000000..834ed01 --- /dev/null +++ b/lfs-12.2-sysv/chapter08/pkgconf.html @@ -0,0 +1,208 @@ + + + + + + 8.19. Pkgconf-2.3.0 + + + + + + + + +

    + 8.19. + Pkgconf-2.3.0 +

    +
    +
    +

    + Пакет pkgconf является преемником pkg-config и содержит инструмент, + который позволяет передавать пути установки или пути к библиотекам + для инструментов сборки на этапе настройки (configure) и + сборки(make) пакетов. +

    +
    +
    +
    + Приблизительное время сборки: + менее 0.1 SBU +
    +
    + Требуемое дисковое + пространство: 4.7 MB +
    +
    +
    +
    +
    +

    + 8.19.1. Установка пакета Pkgconf +

    +

    + Подготовьте Pkgconf к компиляции: +

    +
    ./configure --prefix=/usr              \
    +            --disable-static           \
    +            --docdir=/usr/share/doc/pkgconf-2.3.0
    +

    + Скомпилируйте пакет: +

    +
    make
    +

    + Установите пакет: +

    +
    make install
    +

    + Для обеспечения совместимости с исходным Pkg-config, создайте две + символические ссылки: +

    +
    ln -sv pkgconf   /usr/bin/pkg-config
    +ln -sv pkgconf.1 /usr/share/man/man1/pkg-config.1
    +
    +
    +

    + 8.19.2. + Содержимое пакета Pkgconf +

    +
    +
    +
    + Установленные программы: + pkgconf, pkg-config (ссылка на pkgconf) и + bomtool +
    +
    + Установленные библиотеки: + libpkgconf.so +
    +
    + Созданные каталоги: + /usr/share/doc/pkgconf-2.3.0 +
    +
    +
    +
    +

    + Краткое описание +

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

    + pkgconf +

    +
    +

    + Возвращает метаданные указанной библиотеки или пакета +

    +
    +

    + bomtool +

    +
    +

    + Генерирует спецификацию программного обеспечения из + файлов pkg-config с расширением .pc +

    +
    +

    + libpkgconf +

    +
    +

    + Содержит большую часть функций pkgconf, позволяя другим + инструментам, таким как IDE и компиляторы, использовать + его фреймворки +

    +
    +
    +
    +
    + + + diff --git a/lfs-12.2-sysv/chapter08/pkgmgt.html b/lfs-12.2-sysv/chapter08/pkgmgt.html new file mode 100644 index 0000000..ddc3326 --- /dev/null +++ b/lfs-12.2-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.40) необходимо выполнить + некоторые дополнительные действия, чтобы избежать поломки + системы. Подробности читайте в Раздел 8.5, + «Glibc-2.40». +

      +
    • +
    • +

      + Если пакет, содержащий общую библиотеку, обновляется и имя + библиотеки изменилось, то любые пакеты, динамически связанные + с библиотекой, необходимо перекомпилировать, чтобы связать с + более новой библиотекой. (Обратите внимание, что между + версией пакета и именем библиотеки нет никакой связи.) + Например, рассмотрим пакет 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.2-sysv/chapter08/procps-ng.html b/lfs-12.2-sysv/chapter08/procps-ng.html new file mode 100644 index 0000000..fcd8c75 --- /dev/null +++ b/lfs-12.2-sysv/chapter08/procps-ng.html @@ -0,0 +1,419 @@ + + + + + + 8.78. Procps-ng-4.0.4 + + + + + + + + +

    + 8.78. + Procps-ng-4.0.4 +

    +
    +
    +

    + Пакет Procps-ng содержит программы для мониторинга процессов. +

    +
    +
    +
    + Приблизительное время сборки: + 0.1 SBU +
    +
    + Требуемое дисковое + пространство: 26 MB +
    +
    +
    +
    +
    +

    + 8.78.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
    +

    + Чтобы запустить набор тестов, выполните: +

    +
    chown -R tester .
    +su tester -c "PATH=$PATH make check"
    +

    + Известно, что тест ps with output flag + bsdtime,cputime,etime,etimes завершается неудачно, если ядро + хоста собрано с выключенным параметром CONFIG_BSD_PROCESS_ACCT +

    +

    + Установите пакет: +

    +
    make install
    +
    +
    +

    + 8.78.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.2-sysv/chapter08/psmisc.html b/lfs-12.2-sysv/chapter08/psmisc.html new file mode 100644 index 0000000..7057b85 --- /dev/null +++ b/lfs-12.2-sysv/chapter08/psmisc.html @@ -0,0 +1,249 @@ + + + + + + 8.32. Psmisc-23.7 + + + + + + + + +

    + 8.32. Psmisc-23.7 +

    +
    +
    +

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

    +
    +
    +
    + Приблизительное время сборки: + менее 0.1 SBU +
    +
    + Требуемое дисковое + пространство: 6.7 MB +
    +
    +
    +
    +
    +

    + 8.32.1. Установка пакета Psmisc +

    +

    + Подготовьте Psmisc к компиляции: +

    +
    ./configure --prefix=/usr
    +

    + Скомпилируйте пакет: +

    +
    make
    +

    + Чтобы протестировать пакет, выполните: +

    +
    make check
    +

    + Установите пакет: +

    +
    make install
    +
    +
    +

    + 8.32.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.2-sysv/chapter08/readline.html b/lfs-12.2-sysv/chapter08/readline.html new file mode 100644 index 0000000..ceaaaa6 --- /dev/null +++ b/lfs-12.2-sysv/chapter08/readline.html @@ -0,0 +1,242 @@ + + + + + + 8.12. Readline-8.2.13 + + + + + + + + +

    + 8.12. + Readline-8.2.13 +

    +
    +
    +

    + Пакет Readline представляет собой набор библиотек, предлагающих + возможности редактирования прямо в командной строке и просмотра + истории команд. +

    +
    +
    +
    + Приблизительное время сборки: + менее 0.1 SBU +
    +
    + Требуемое дисковое + пространство: 16 MB +
    +
    +
    +
    +
    +

    + 8.12.1. Установка пакета Readline +

    +

    + Переустановка пакета Readline приводит к перемещению старых + библиотек в <libraryname>.old. Обычно это не вызывает + проблем, но в некоторых случаях могут возникать ошибки линковки с + ldconfig. Этого можно + избежать, выполнив следующие две команды sed: +

    +
    sed -i '/MV.*old/d' Makefile.in
    +sed -i '/{OLDSUFF}/c:' support/shlib-install
    +

    + Запретите использование библиотеки поиска списка жестко + запрограммированных путей (rpath) в общих библиотеках. Этому пакету + не требуется rpath для установки в стандартное местоположение, + кроме того, rpath иногда может вызывать нежелательные эффекты или + даже проблемы с безопасностью: +

    +
    sed -i 's/-Wl,-rpath,[^ ]*//' support/shobj-conf
    +

    + Подготовьте Readline к компиляции: +

    +
    ./configure --prefix=/usr    \
    +            --disable-static \
    +            --with-curses    \
    +            --docdir=/usr/share/doc/readline-8.2.13
    +
    +

    + Значение нового параметра 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.13
    +
    +
    +

    + 8.12.2. + Содержимое пакета Readline +

    +
    +
    +
    + Установленные библиотеки: + libhistory.so и libreadline.so +
    +
    + Созданные каталоги: + /usr/include/readline и + /usr/share/doc/readline-8.2.13 +
    +
    +
    +
    +

    + Краткое описание +

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

    + libhistory +

    +
    +

    + Обеспечивает согласованный пользовательский интерфейс для + вызова строк из истории +

    +
    +

    + libreadline +

    +
    +

    + Предоставляет набор команд для управления текстом, + введенным в интерактивном сеансе программы. +

    +
    +
    +
    +
    + + + diff --git a/lfs-12.2-sysv/chapter08/sed.html b/lfs-12.2-sysv/chapter08/sed.html new file mode 100644 index 0000000..7e8cac0 --- /dev/null +++ b/lfs-12.2-sysv/chapter08/sed.html @@ -0,0 +1,163 @@ + + + + + + 8.31. Sed-4.9 + + + + + + + + +

    + 8.31. Sed-4.9 +

    +
    +
    +

    + Пакет Sed содержит потоковый редактор текста +

    +
    +
    +
    + Приблизительное время сборки: + 0.3 SBU +
    +
    + Требуемое дисковое + пространство: 30 MB +
    +
    +
    +
    +
    +

    + 8.31.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.31.2. Содержимое + пакета Sed +

    +
    +
    +
    + Установленные программы: + sed +
    +
    + Созданные каталоги: + /usr/share/doc/sed-4.9 +
    +
    +
    +
    +

    + Краткое описание +

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

    + sed +

    +
    +

    + Фильтрует и преобразует текстовые файлы за один проход +

    +
    +
    +
    +
    + + + diff --git a/lfs-12.2-sysv/chapter08/setuptools.html b/lfs-12.2-sysv/chapter08/setuptools.html new file mode 100644 index 0000000..c0f41ea --- /dev/null +++ b/lfs-12.2-sysv/chapter08/setuptools.html @@ -0,0 +1,128 @@ + + + + + + 8.55. Setuptools-72.2.0 + + + + + + + + +

    + 8.55. + Setuptools-72.2.0 +

    +
    +
    +

    + Пакет Setuptools это инструмент, используемый для загрузки, сборки, + установки, обновления и удаления пакетов Python. +

    +
    +
    +
    + Приблизительное время сборки: + менее 0.1 SBU +
    +
    + Требуемое дисковое + пространство: 35 MB +
    +
    +
    +
    +
    +

    + 8.55.1. Установка пакета Setuptools +

    +

    + Соберите пакет: +

    +
    pip3 wheel -w dist --no-cache-dir --no-build-isolation --no-deps $PWD
    +

    + Установите пакет: +

    +
    pip3 install --no-index --find-links dist setuptools
    +
    +
    +

    + 8.55.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-72.2.0.dist-info +
    +
    +
    +
    +
    + + + diff --git a/lfs-12.2-sysv/chapter08/shadow.html b/lfs-12.2-sysv/chapter08/shadow.html new file mode 100644 index 0000000..4197613 --- /dev/null +++ b/lfs-12.2-sysv/chapter08/shadow.html @@ -0,0 +1,955 @@ + + + + + + 8.28. Shadow-4.16.0 + + + + + + + + +

    + 8.28. + Shadow-4.16.0 +

    +
    +
    +

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

    +
    +
    +
    + Приблизительное время сборки: + 0.1 SBU +
    +
    + Требуемое дисковое + пространство: 112 MB +
    +
    +
    +
    +
    +

    + 8.28.1. Установка пакета Shadow +

    +
    + [Важно] +

    + Важно +

    +

    + Если вы установили Linux-PAM, вам следует перейти + на страницу BLFS shadow вместо этой страницы, чтобы собрать + (пересобрать, или обновить) shadow. +

    +
    +
    + [Примечание] +

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

    +

    + Если вы хотите принудительно использовать надежные пароли, + обратитесь к инструкции + https://mirror.linuxfromscratch.ru/blfs/view/12.2/postlfs/cracklib.html + для установки CrackLib перед сборкой. Затем добавьте параметр + --with-libcrack в + приведенную ниже команду configure. +

    +
    +

    + Отключите установку groups и ее справочных страниц, + так как Coreutils предоставляет версию лучше. Кроме того, запретите + установку страниц руководств, так как они были установлены в + Раздел 8.3, «Man-pages-6.9.1»: +

    +
    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.28.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.28.3. Установка пароля пользователя root +

    +

    + Придумайте пароль для root и + установите командой: +

    +
    passwd root
    +
    +
    +

    + 8.28.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.2-sysv/chapter08/stripping.html b/lfs-12.2-sysv/chapter08/stripping.html new file mode 100644 index 0000000..54c8779 --- /dev/null +++ b/lfs-12.2-sysv/chapter08/stripping.html @@ -0,0 +1,224 @@ + + + + + + 8.84. Удаление отладочных символов + + + + + + + + +

    + 8.84. + Удаление отладочных символов +

    +
    +

    + Этот раздел является необязательным. Если предполагаемый пользователь + не является программистом и не планирует выполнять какую-либо отладку + системного программного обеспечения, размер системы можно уменьшить + примерно на 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.33
    +             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.43.1.so
    +               libsframe.so.1.0.0
    +               libhistory.so.8.2
    +               libncursesw.so.6.5
    +               libm.so.6
    +               libreadline.so.8.2
    +               libz.so.1.3.1
    +               libzstd.so.1.5.6
    +               $(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.2-sysv/chapter08/sysklogd.html b/lfs-12.2-sysv/chapter08/sysklogd.html new file mode 100644 index 0000000..0404d09 --- /dev/null +++ b/lfs-12.2-sysv/chapter08/sysklogd.html @@ -0,0 +1,195 @@ + + + + + + 8.81. Sysklogd-2.6.1 + + + + + + + + +

    + 8.81. + Sysklogd-2.6.1 +

    +
    +
    +

    + Пакет Sysklogd содержит программы для логирования системных + сообщений, таких как сообщения ядра, когда происходят различные + события. +

    +
    +
    +
    + Приблизительное время сборки: + менее 0.1 SBU +
    +
    + Требуемое дисковое + пространство: 3.9 MB +
    +
    +
    +
    +
    +

    + 8.81.1. Установка пакета Sysklogd +

    +

    + Подготовьте пакет к компиляции: +

    +
    ./configure --prefix=/usr      \
    +            --sysconfdir=/etc  \
    +            --runstatedir=/run \
    +            --without-logger
    +

    + Скомпилируйте пакет: +

    +
    make
    +

    + Этот пакет не содержит набора тестов. +

    +

    + Установите пакет: +

    +
    make install
    +
    +
    +

    + 8.81.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 *
    +
    +# Do not open any internet ports.
    +secure_mode 2
    +
    +# End /etc/syslog.conf
    +EOF
    +
    +
    +

    + 8.81.3. + Содержимое пакета Sysklogd +

    +
    +
    +
    + Установленные программы: + syslogd +
    +
    +
    +
    +

    + Краткое описание +

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

    + syslogd +

    +
    +

    + Регистрирует сообщения системных программ для записи в + лог [Каждое регистрируемое сообщение содержит как минимум + время события, имя хоста, а также имя программы, но это + зависит от настроек службы логирования.] +

    +
    +
    +
    +
    + + + diff --git a/lfs-12.2-sysv/chapter08/sysvinit.html b/lfs-12.2-sysv/chapter08/sysvinit.html new file mode 100644 index 0000000..e31cbcb --- /dev/null +++ b/lfs-12.2-sysv/chapter08/sysvinit.html @@ -0,0 +1,313 @@ + + + + + + 8.82. SysVinit-3.10 + + + + + + + + +

    + 8.82. + SysVinit-3.10 +

    +
    +
    +

    + Пакет SysVinit содержит программы для управления загрузкой, + выполнением и выключением системы. +

    +
    +
    +
    + Приблизительное время сборки: + менее 0.1 SBU +
    +
    + Требуемое дисковое + пространство: 2.8 MB +
    +
    +
    +
    +
    +

    + 8.82.1. Установка пакета SysVinit +

    +

    + Сначала примените патч, который удаляет несколько программ, + установленных другими пакетами и исправляет предупреждение + компилятора: +

    +
    patch -Np1 -i ../sysvinit-3.10-consolidated-1.patch
    +

    + Скомпилируйте пакет: +

    +
    make
    +

    + С этим пакетом не поставляется набор тестов. +

    +

    + Установите пакет: +

    +
    make install
    +
    +
    +

    + 8.82.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.2-sysv/chapter08/tar.html b/lfs-12.2-sysv/chapter08/tar.html new file mode 100644 index 0000000..211b17e --- /dev/null +++ b/lfs-12.2-sysv/chapter08/tar.html @@ -0,0 +1,194 @@ + + + + + + 8.71. Tar-1.35 + + + + + + + + +

    + 8.71. Tar-1.35 +

    +
    +
    +

    + Пакет Tar предоставляет возможность создавать tar архивы, а также + производить с ними различные манипуляции. Tar может распаковать + предварительно созданный архив, добавить или обновить файлы в нём, + вернуть список файлов в архиве. +

    +
    +
    +
    + Приблизительное время сборки: + 0.7 SBU +
    +
    + Требуемое дисковое + пространство: 43 MB +
    +
    +
    +
    +
    +

    + 8.71.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.71.2. Содержимое + пакета Tar +

    +
    +
    +
    + Установленные программы: + tar +
    +
    + Созданные каталоги: + /usr/share/doc/tar-1.35 +
    +
    +
    +
    +

    + Краткое описание +

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

    + tar +

    +
    +

    + Создает архивы, извлекает файлы и отображает содержимое + архивов, также известных как Тарболл. +

    +
    +
    +
    +
    + + + diff --git a/lfs-12.2-sysv/chapter08/tcl.html b/lfs-12.2-sysv/chapter08/tcl.html new file mode 100644 index 0000000..0b1860f --- /dev/null +++ b/lfs-12.2-sysv/chapter08/tcl.html @@ -0,0 +1,293 @@ + + + + + + 8.16. Tcl-8.6.14 + + + + + + + + +

    + 8.16. Tcl-8.6.14 +

    +
    +
    +

    + Пакет Tcl содержит Tool Command + Language, надежный скриптовый язык общего назначения. Пакет + Expect написан на языке + Tcl (произносится как "тикл"). +

    +
    +
    +
    + Приблизительное время сборки: + 3.2 SBU +
    +
    + Требуемое дисковое + пространство: 91 MB +
    +
    +
    +
    +
    +

    + 8.16.1. Установка пакета Tcl +

    +

    + Этот пакет и следующие два (Expect и DejaGNU) устанавливаются для + поддержки возможности тестирования Binutils, GCC и других пакетов. + Установка трех пакетов для целей тестирования может показаться + избыточной, но вы будете чувствовать себя увереннее, когда знаете, + что наиболее важные инструменты работают правильно. +

    +

    + Подготовьте Tcl к компиляции: +

    +
    SRCDIR=$(pwd)
    +cd unix
    +./configure --prefix=/usr           \
    +            --mandir=/usr/share/man \
    +            --disable-rpath
    +
    +

    + Значение новых параметров конфигурации: +

    +
    +
    + --disable-rpath +
    +
    +

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

    +
    +
    +
    +

    + Соберите пакет: +

    +
    make
    +
    +sed -e "s|$SRCDIR/unix|/usr/lib|" \
    +    -e "s|$SRCDIR|/usr/include|"  \
    +    -i tclConfig.sh
    +
    +sed -e "s|$SRCDIR/unix/pkgs/tdbc1.1.7|/usr/lib/tdbc1.1.7|" \
    +    -e "s|$SRCDIR/pkgs/tdbc1.1.7/generic|/usr/include|"    \
    +    -e "s|$SRCDIR/pkgs/tdbc1.1.7/library|/usr/lib/tcl8.6|" \
    +    -e "s|$SRCDIR/pkgs/tdbc1.1.7|/usr/include|"            \
    +    -i pkgs/tdbc1.1.7/tdbcConfig.sh
    +
    +sed -e "s|$SRCDIR/unix/pkgs/itcl4.2.4|/usr/lib/itcl4.2.4|" \
    +    -e "s|$SRCDIR/pkgs/itcl4.2.4/generic|/usr/include|"    \
    +    -e "s|$SRCDIR/pkgs/itcl4.2.4|/usr/include|"            \
    +    -i pkgs/itcl4.2.4/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.14-html.tar.gz --strip-components=1
    +mkdir -v -p /usr/share/doc/tcl-8.6.14
    +cp -v -r  ./html/* /usr/share/doc/tcl-8.6.14
    +
    +
    +

    + 8.16.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.2-sysv/chapter08/texinfo.html b/lfs-12.2-sysv/chapter08/texinfo.html new file mode 100644 index 0000000..c5643be --- /dev/null +++ b/lfs-12.2-sysv/chapter08/texinfo.html @@ -0,0 +1,334 @@ + + + + + + 8.72. Texinfo-7.1 + + + + + + + + +

    + 8.72. + Texinfo-7.1 +

    +
    +
    +

    + Пакет Texinfo содержит программы для чтения, записи и + преобразования информационных страниц. +

    +
    +
    +
    + Приблизительное время сборки: + 0.3 SBU +
    +
    + Требуемое дисковое + пространство: 139 MB +
    +
    +
    +
    +
    +

    + 8.72.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.72.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.2-sysv/chapter08/udev.html b/lfs-12.2-sysv/chapter08/udev.html new file mode 100644 index 0000000..9b018a9 --- /dev/null +++ b/lfs-12.2-sysv/chapter08/udev.html @@ -0,0 +1,405 @@ + + + + + + 8.76. Udev из Systemd-256.4 + + + + + + + + +

    + 8.76. Udev из + Systemd-256.4 +

    +
    +
    +

    + Пакет Udev содержит программы для динамического создания узлов + устройств. +

    +
    +
    +
    + Приблизительное время сборки: + 0.2 SBU +
    +
    + Требуемое дисковое + пространство: 144 MB +
    +
    +
    +
    +
    +

    + 8.76.1. Установка пакета Udev +

    +

    + Udev является частью пакета systemd-256.4. Используйте файл + systemd-256.4.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       \
    +      -D mode=release           \
    +      -D dev-kvm-mode=0660      \
    +      -D link-udev-shared=false \
    +      -D logind=false           \
    +      -D vconsole=false
    +
    +

    + Значение параметров meson: +

    +
    +
    + --buildtype=release +
    +
    +

    + Этот параметр переопределяет тип сборки по умолчанию + («debug»), который создает + неоптимизированные двоичные файлы. +

    +
    +
    + -D + mode=release +
    +
    +

    + Отключает некоторые функции, которые разработчики считают + экспериментальными. +

    +
    +
    + -D + dev-kvm-mode=0660 +
    +
    +

    + По умолчанию правило udev разрешает всем пользователям доступ + к /dev/kvm. Редакторы LFS + считают это опасным. Данная опция переопределяет разрешение + по умолчанию. +

    +
    +
    + -D + link-udev-shared=false +
    +
    +

    + Эта опция запрещает udev связываться с внутренней общей + библиотекой systemd libsystemd-shared. Эта библиотека + предназначена для совместного использования многими + компонентами Systemd, и ее использование избыточно, когда + установлен только udev. +

    +
    +
    + -D logind=false + -D vconsole=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-256.4.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.76.2. Настройка Udev +

    +

    + Информация об аппаратных устройствах хранится в каталогах + /etc/udev/hwdb.d и /usr/lib/udev/hwdb.d. Udev необходимо, чтобы эта информация была + скомпилирована в двоичную базу данных /etc/udev/hwdb.bin. Создайте исходную базу + данных: +

    +
    udev-hwdb update
    +

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

    +
    +
    +

    + 8.76.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.2-sysv/chapter08/util-linux.html b/lfs-12.2-sysv/chapter08/util-linux.html new file mode 100644 index 0000000..3703921 --- /dev/null +++ b/lfs-12.2-sysv/chapter08/util-linux.html @@ -0,0 +1,1929 @@ + + + + + + 8.79. Util-linux-2.40.2 + + + + + + + + +

    + 8.79. + Util-linux-2.40.2 +

    +
    +
    +

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

    +
    +
    +
    + Приблизительное время сборки: + 0.5 SBU +
    +
    + Требуемое дисковое + пространство: 315 MB +
    +
    +
    +
    +
    +

    + 8.79.1. Установка пакета Util-linux +

    +

    + Подготовьте 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-liblastlog2 \
    +            --disable-static      \
    +            --without-python      \
    +            --without-systemd     \
    +            --without-systemdsystemunitdir        \
    +            ADJTIME_PATH=/var/lib/hwclock/adjtime \
    +            --docdir=/usr/share/doc/util-linux-2.40.2
    +

    + Параметры --disable и --without предотвращают появление + предупреждений о сборке компонентов, для которых требуются пакеты, + отсутствующие в LFS, или которые несовместимы с программами, + установленными другими пакетами. +

    +

    + Скомпилируйте пакет: +

    +
    make
    +

    + По желанию создайте фиктивный файл /etc/fstab для выполнения двух тестов и запустите + набор тестов от имени пользователя без полномочий root: +

    +
    + [Предупреждение] +

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

    +

    + Запуск набора тестов от имени пользователя root может повредить вашу систему. Чтобы + запустить тесты, опция CONFIG_SCSI_DEBUG для ядра должна быть + доступна в текущей работающей системе и должна быть собрана как + модуль. Включение её в ядро будет прерывать загрузку. Для полного + охвата тестами в систему необходимо установить другие пакеты из + BLFS. По желанию, этот тест можно запустить после загрузки в + готовую систему LFS: +

    +
    bash tests/run.sh --srcdir=$PWD --builddir=$PWD
    +
    +
    touch /etc/fstab
    +chown -R tester .
    +su tester -c "make -k check"
    +

    + Тесты с жесткими ссылками + завершатся неудачей, если в ядре хоста не включена опция + CONFIG_CRYPTO_USER_API_HASH или не + включено никаких опций, обеспечивающих реализацию SHA256 (например, + CONFIG_CRYPTO_SHA256 или CONFIG_CRYPTO_SHA256_SSSE3, если процессор + поддерживает инструкции SSE3). Кроме того, тест lsfd: inotify + завершится неудачно, если опция ядра CONFIG_NETLINK_DIAG не включена. +

    +

    + Установите пакет: +

    +
    make install
    +
    +
    +

    + 8.79.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.40.2 и /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.2-sysv/chapter08/vim.html b/lfs-12.2-sysv/chapter08/vim.html new file mode 100644 index 0000000..78bbe33 --- /dev/null +++ b/lfs-12.2-sysv/chapter08/vim.html @@ -0,0 +1,449 @@ + + + + + + 8.73. Vim-9.1.0660 + + + + + + + + +

    + 8.73. Vim-9.1.0660 +

    +
    +
    +

    + Пакет Vim содержит мощный текстовый редактор. +

    +
    +
    +
    + Приблизительное время сборки: + 2.9 SBU +
    +
    + Требуемое дисковое + пространство: 245 MB +
    +
    +
    +
    + [Подсказка] +

    + Альтернативы Vim +

    +

    + Если вы предпочитаете другой текстовый редактор, например, Emacs, + Joe или Nano, обратитесь к + https://mirror.linuxfromscratch.ru/blfs/view/12.2/postlfs/editors.html + за рекомендациями по установке. +

    +
    +
    +
    +

    + 8.73.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.0660, + что согласуется с расположением документации остальных пакетов: +

    +
    ln -sv ../vim/vim91/doc /usr/share/doc/vim-9.1.0660
    +

    + Если в LFS будет установлена система X Window, может потребоваться + перекомпилировать Vim после установки X. Vim поставляется с + графической версией редактора, для которой требуется установка X и + некоторых дополнительных библиотек. Для получения дополнительной + информации об этом процессе обратитесь к документации по Vim и + странице установки Vim в книге BLFS по адресу + https://mirror.linuxfromscratch.ru/blfs/view/12.2/postlfs/vim.html. +

    +
    +
    +

    + 8.73.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.73.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.2-sysv/chapter08/wheel.html b/lfs-12.2-sysv/chapter08/wheel.html new file mode 100644 index 0000000..d5a11e4 --- /dev/null +++ b/lfs-12.2-sysv/chapter08/wheel.html @@ -0,0 +1,160 @@ + + + + + + 8.54. Wheel-0.44.0 + + + + + + + + +

    + 8.54. Wheel-0.44.0 +

    +
    +
    +

    + Wheel — это библиотека Python, которая является эталонной + реализацией стандарта упаковки программ на языке Python. +

    +
    +
    +
    + Приблизительное время сборки: + менее 0.1 SBU +
    +
    + Требуемое дисковое + пространство: 1.5 MB +
    +
    +
    +
    +
    +

    + 8.54.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.54.2. Содержимое + пакета Wheel +

    +
    +
    +
    + Установленные программы: + wheel +
    +
    + Созданные каталоги: + /usr/lib/python3.12/site-packages/wheel и + /usr/lib/python3.12/site-packages/wheel-0.44.0.dist-info +
    +
    +
    +
    +

    + Краткое описание +

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

    + wheel +

    +
    +

    + это утилита для распаковки, упаковки или преобразования + wheel-архивов +

    +
    +
    +
    +
    + + + diff --git a/lfs-12.2-sysv/chapter08/xml-parser.html b/lfs-12.2-sysv/chapter08/xml-parser.html new file mode 100644 index 0000000..63f1272 --- /dev/null +++ b/lfs-12.2-sysv/chapter08/xml-parser.html @@ -0,0 +1,159 @@ + + + + + + 8.44. XML::Parser-2.47 + + + + + + + + +

    + 8.44. + XML::Parser-2.47 +

    +
    +
    +

    + Модуль XML::Parser представляет собой Perl-интерфейс к XML-парсеру + Джеймса Кларка Expat. +

    +
    +
    +
    + Приблизительное время сборки: + менее 0.1 SBU +
    +
    + Требуемое дисковое + пространство: 2.4 MB +
    +
    +
    +
    +
    +

    + 8.44.1. Установка пакета XML::Parser +

    +

    + Подготовьте XML::Parser к компиляции: +

    +
    perl Makefile.PL
    +

    + Скомпилируйте пакет: +

    +
    make
    +

    + Чтобы протестировать пакет, выполните: +

    +
    make test
    +

    + Установите пакет: +

    +
    make install
    +
    +
    +

    + 8.44.2. + Содержимое XML::Parser +

    +
    +
    +
    + Установленный модуль: + Expat.so +
    +
    +
    +
    +

    + Краткое описание +

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

    + Expat +

    +
    +

    + предоставляет Perl интерфейс для Expat +

    +
    +
    +
    +
    + + + diff --git a/lfs-12.2-sysv/chapter08/xz.html b/lfs-12.2-sysv/chapter08/xz.html new file mode 100644 index 0000000..bc57cf9 --- /dev/null +++ b/lfs-12.2-sysv/chapter08/xz.html @@ -0,0 +1,531 @@ + + + + + + 8.8. Xz-5.6.2 + + + + + + + + +

    + 8.8. Xz-5.6.2 +

    +
    +
    +

    + Пакет Xz содержит программы для сжатия и распаковки файлов. Он + предоставляет возможности для lzma и более новых форматов сжатия + xz. Сжатие текстовых файлов с помощью xz дает лучший процент сжатия, + чем с традиционные gzip или bzip2. +

    +
    +
    +
    + Приблизительное время сборки: + 0.1 SBU +
    +
    + Требуемое дисковое + пространство: 21 MB +
    +
    +
    +
    +
    +

    + 8.8.1. Установка пакета Xz +

    +

    + Подготовьте Xz к компиляции: +

    +
    ./configure --prefix=/usr    \
    +            --disable-static \
    +            --docdir=/usr/share/doc/xz-5.6.2
    +

    + Скомпилируйте пакет: +

    +
    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.6.2 +
    +
    +
    +
    +

    + Краткое описание +

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

    + 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.2-sysv/chapter08/zlib.html b/lfs-12.2-sysv/chapter08/zlib.html new file mode 100644 index 0000000..d042963 --- /dev/null +++ b/lfs-12.2-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.2-sysv/chapter08/zstd.html b/lfs-12.2-sysv/chapter08/zstd.html new file mode 100644 index 0000000..2af98df --- /dev/null +++ b/lfs-12.2-sysv/chapter08/zstd.html @@ -0,0 +1,224 @@ + + + + + + 8.10. Zstd-1.5.6 + + + + + + + + +

    + 8.10. Zstd-1.5.6 +

    +
    +
    +

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

    +
    +
    +
    + Приблизительное время сборки: + 0.4 SBU +
    +
    + Требуемое дисковое + пространство: 84 MB +
    +
    +
    +
    +
    +

    + 8.10.1. Установка пакета Zstd +

    +

    + Скомпилируйте пакет: +

    +
    make prefix=/usr
    +
    + [Примечание] +

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

    +

    + В выходных данных теста есть несколько мест, выводящих сообщение + 'failed'. Они ожидаемы, и только 'FAIL' является фактическим + сбоем теста. Сбоев при тестировании быть не должно. +

    +
    +

    + Чтобы протестировать пакет, выполните: +

    +
    make check
    +

    + Установите пакет: +

    +
    make prefix=/usr install
    +

    + Удалите статическую библиотеку: +

    +
    rm -v /usr/lib/libzstd.a
    +
    +
    +

    + 8.10.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.2-sysv/chapter09/bootscripts.html b/lfs-12.2-sysv/chapter09/bootscripts.html new file mode 100644 index 0000000..0f63b9f --- /dev/null +++ b/lfs-12.2-sysv/chapter09/bootscripts.html @@ -0,0 +1,513 @@ + + + + + + 9.2. LFS-Bootscripts-20240825 + + + + + + + + +

    + 9.2. + LFS-Bootscripts-20240825 +

    +
    +
    +

    + Пакет LFS-Bootscripts содержит набор скриптов для запуска/остановки + системы LFS при загрузке/завершении работы. Файлы конфигурации и + процедуры, необходимые для настройки /процесса загрузки, описаны в + следующих разделах. +

    +
    +
    +
    + Приблизительное время сборки: + менее 0.1 SBU +
    +
    + Требуемое дисковое + пространство: 248 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.2-sysv/chapter09/chapter09.html b/lfs-12.2-sysv/chapter09/chapter09.html new file mode 100644 index 0000000..5be54b1 --- /dev/null +++ b/lfs-12.2-sysv/chapter09/chapter09.html @@ -0,0 +1,115 @@ + + + + + + Глава 9. Системные настройки + + + + + + + + +

    + 9. Системные настройки +

    +
    + +
    + + + diff --git a/lfs-12.2-sysv/chapter09/etcshells.html b/lfs-12.2-sysv/chapter09/etcshells.html new file mode 100644 index 0000000..c26d1a0 --- /dev/null +++ b/lfs-12.2-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.2-sysv/chapter09/inputrc.html b/lfs-12.2-sysv/chapter09/inputrc.html new file mode 100644 index 0000000..a81e496 --- /dev/null +++ b/lfs-12.2-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.2-sysv/chapter09/introduction.html b/lfs-12.2-sysv/chapter09/introduction.html new file mode 100644 index 0000000..a25f989 --- /dev/null +++ b/lfs-12.2-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.2-sysv/chapter09/locale.html b/lfs-12.2-sysv/chapter09/locale.html new file mode 100644 index 0000000..f0dabad --- /dev/null +++ b/lfs-12.2-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.2-sysv/chapter09/network.html b/lfs-12.2-sysv/chapter09/network.html new file mode 100644 index 0000000..a87d9ed --- /dev/null +++ b/lfs-12.2-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.76, «Udev из + Systemd-256.4») не запустится, пока система 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.2-sysv/chapter09/symlinks.html b/lfs-12.2-sysv/chapter09/symlinks.html new file mode 100644 index 0000000..95d9b42 --- /dev/null +++ b/lfs-12.2-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/=.*$/=/'  \
    +       /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.2-sysv/chapter09/udev.html b/lfs-12.2-sysv/chapter09/udev.html new file mode 100644 index 0000000..82b8bec --- /dev/null +++ b/lfs-12.2-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.10.5, udev, выполняет загрузку правильно написанных + драйверов для INPUT, IDE, PCI, USB, SCSI, SERIO, и FireWire + устройств. +

    +

    + Чтобы определить, имеет ли требуемый драйвер устройства + необходимую поддержку Udev, запустите modinfo с именем модуля в + качестве аргумента. Далее, попробуйте найти каталог устройства в + /sys/bus и проверьте, есть ли там + файл modalias. +

    +

    + Если файл modalias существует в + sysfs, то драйвер, который + поддерживает устройство, может обращаться к нему напрямую, но не + имеет псевдонима, это ошибка в драйвере. Загрузите драйвер без + помощи Udev и ожидайте, что проблема будет исправлена позднее. +

    +

    + Если же в каталоге /sys/bus нет + файла modalias, это означает, что + разработчики ядра еще не добавили поддержку modalias к этому типу шины. В Linux-6.10.5 это + относится к шиной 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.2-sysv/chapter09/usage.html b/lfs-12.2-sysv/chapter09/usage.html new file mode 100644 index 0000000..cd9a64d --- /dev/null +++ b/lfs-12.2-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.10.5 правильно + интерпретирует "мертвые" клавиши и слияния, только когда + исходные символы имеют 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.2-sysv/chapter10/chapter10.html b/lfs-12.2-sysv/chapter10/chapter10.html new file mode 100644 index 0000000..e0e1339 --- /dev/null +++ b/lfs-12.2-sysv/chapter10/chapter10.html @@ -0,0 +1,101 @@ + + + + + + Глава 10. Делаем систему LFS загрузочной + + + + + + + + +

    + 10. Делаем систему + LFS загрузочной +

    +
    + +
    + + + diff --git a/lfs-12.2-sysv/chapter10/fstab.html b/lfs-12.2-sysv/chapter10/fstab.html new file mode 100644 index 0000000..81b7bbd --- /dev/null +++ b/lfs-12.2-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.2-sysv/chapter10/grub.html b/lfs-12.2-sysv/chapter10/grub.html new file mode 100644 index 0000000..c9c3252 --- /dev/null +++ b/lfs-12.2-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.10.5-lfs-12.2" {
    +        linux   /boot/vmlinuz-6.10.5-lfs-12.2 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.2-sysv/chapter10/introduction.html b/lfs-12.2-sysv/chapter10/introduction.html new file mode 100644 index 0000000..1ea79d4 --- /dev/null +++ b/lfs-12.2-sysv/chapter10/introduction.html @@ -0,0 +1,87 @@ + + + + + + 10.1. Введение + + + + + + + + +

    + 10.1. Введение +

    +
    +

    + Пришло время сделать систему LFS загрузочной. В этой главе + обсуждается создание файла /etc/fstab, + сборка ядра для новой системы и установка загрузчика GRUB, чтобы + система LFS могла быть выбрана для загрузки при запуске. +

    +
    + + + diff --git a/lfs-12.2-sysv/chapter10/kernel.html b/lfs-12.2-sysv/chapter10/kernel.html new file mode 100644 index 0000000..fb54931 --- /dev/null +++ b/lfs-12.2-sysv/chapter10/kernel.html @@ -0,0 +1,757 @@ + + + + + + 10.3. Linux-6.10.5 + + + + + + + + +

    + 10.3. + Linux-6.10.5 +

    +
    +
    +

    + Этот пакет содержит ядро Linux. +

    +
    +
    +
    + Приблизительное время сборки: + 0.4 - 32 SBU (обычно около 2.5 + SBU) +
    +
    + Требуемое дисковое + пространство: 1.7 - 14 GB + (обычно около 2.3 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.10.5. Однако, мы не + рекомендуем этот вариант. Намного лучше изучить все параметры меню + и создать конфигурацию ядра с нуля. +

    +

    + Скомпилируйте образ ядра и модули: +

    +
    make
    +

    + При использовании модулей, могут потребоваться файлы конфигурации, + которые расположены в каталоге /etc/modprobe.d. Информация о модулях и + конфигурации ядра находится в Раздел 9.3, + «Взаимодействие с устройствами и модулями» и в документации к + ядру linux-6.10.5/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.10.5-lfs-12.2
    +

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

    +
    cp -iv System.map /boot/System.map-6.10.5
    +

    + Файл конфигурации ядра .config + создается на шаге make + menuconfig и содержит все параметры ядра, которое + было скомпилировано только что. Рекомендуется сохранить этот файл + на будущее: +

    +
    cp -iv .config /boot/config-6.10.5
    +

    + Установите документацию ядра: +

    +
    cp -r Documentation -T /usr/share/doc/linux-6.10.5
    +

    + Важно отметить, что файлы в каталоге с исходным кодом ядра не + принадлежат пользователю root. Всякий раз, когда пакет + распаковывается от имени пользователя root (как это и выполнялось внутри среды + chroot), файлы имеют те идентификаторы пользователя и группы, + которые были присвоены при распаковке. Обычно это не вызывает + проблем для других устанавливаемых пакетов, так как каталог с + исходниками удаляется после установки пакета. Однако исходный код + ядра Linux часто сохраняется в течение длительного времени. Из-за + этого существует вероятность того, что идентификатор пользователя, + используемый при распаковке, будет назначен другому пользователю. В + таком случае, этот пользователь будет иметь доступ на запись в этот + каталог. +

    +
    + [Примечание] +

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

    +

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

    +

    + Если вы планируете оставить каталог с исходным кодом ядра, + выполните команду chown -R 0:0 + * находясь в каталоге linux-6.10.5, чтобы все файлы принадлежали + пользователю root. +

    +
    +
    + [Предупреждение] +

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

    +

    + Иногда, в документации к ядру, рекомендуют создать символическую + ссылку /usr/src/linux указывающую + на каталог с исходниками ядра. Эта рекомендация относится к ядрам + до версии 2.6 и не должна + выполняться в системе LFS, так как это может вызвать проблемы с + пакетами, которые вы, возможно, захотите собрать, когда ваша + базовая система LFS будет готова. +

    +
    +
    + [Предупреждение] +

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

    +

    + Заголовочные файлы в системном каталоге include (/usr/include) всегда используются те, которые + применялись при компиляции Glibc, то есть подготовленные + заголовочные файлы, установленные в Раздел 5.4, + «Заголовочные файлы Linux-6.10.5 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.10.5, vmlinuz-6.10.5-lfs-12.2, и + System.map-6.10.5 +
    +
    + Созданные каталоги: + /lib/modules, + /usr/share/doc/linux-6.10.5 +
    +
    +
    +
    +

    + Краткое описание +

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

    + config-6.10.5 +

    +
    +

    + Содержит в себе все параметры конфигурации ядра +

    +
    +

    + vmlinuz-6.10.5-lfs-12.2 +

    +
    +

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

    +
    +

    + System.map-6.10.5 +

    +
    +

    + Список адресов и символов; файл содержит точки входа и + адреса всех функций и структур данных в ядре +

    +
    +
    +
    +
    + + + diff --git a/lfs-12.2-sysv/chapter11/afterlfs.html b/lfs-12.2-sysv/chapter11/afterlfs.html new file mode 100644 index 0000000..30a539f --- /dev/null +++ b/lfs-12.2-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.2-sysv/chapter11/chapter11.html b/lfs-12.2-sysv/chapter11/chapter11.html new file mode 100644 index 0000000..79b1bd2 --- /dev/null +++ b/lfs-12.2-sysv/chapter11/chapter11.html @@ -0,0 +1,100 @@ + + + + + + Глава 11. Заключение + + + + + + + + +

    + 11. Заключение +

    +
    + +
    + + + diff --git a/lfs-12.2-sysv/chapter11/getcounted.html b/lfs-12.2-sysv/chapter11/getcounted.html new file mode 100644 index 0000000..753b780 --- /dev/null +++ b/lfs-12.2-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.2-sysv/chapter11/reboot.html b/lfs-12.2-sysv/chapter11/reboot.html new file mode 100644 index 0000000..8ea4d16 --- /dev/null +++ b/lfs-12.2-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.2 будет загружен + автоматически. +

    +

    + После завершения перезагрузки, система LFS будет готова к + использованию. Вы увидите простую подсказку «login: ». На этом этапе вы + можете перейти к книге BLFS, + где вы установите дополнительное программное обеспечение в + соответствии с вашими потребностями. +

    +

    + Если перезагрузка завершилась неудачей, самое время устранить эти + неполадки. Советы по решению проблем с начальной загрузкой, смотрите + на странице https://mirror.linuxfromscratch.ru/lfs/troubleshooting.html. +

    +
    + + + diff --git a/lfs-12.2-sysv/chapter11/theend.html b/lfs-12.2-sysv/chapter11/theend.html new file mode 100644 index 0000000..539b12a --- /dev/null +++ b/lfs-12.2-sysv/chapter11/theend.html @@ -0,0 +1,126 @@ + + + + + + 11.1. Заключение + + + + + + + + +

    + 11.1. Заключение +

    +
    +

    + Отлично! Новая система LFS установлена! Желаем успехов в работе с + вашей новой, блестящей, самостоятельно собранной Linux системой. +

    +

    + Может быть хорошей идеей создать файл /etc/lfs-release. Имея этот файл, вам (и нам, если + вам в какой-то момент понадобится обратиться за помощью) будет проще + узнать, какая версия LFS установлена в системе. Создайте этот файл, + выполнив следующую команду: +

    +
    echo 12.2 > /etc/lfs-release
    +

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

    +

    + Первый показывает статус вашей новой системы по отношению к стандарту + LSB. Чтобы создать этот файл, выполните: +

    +
    cat > /etc/lsb-release << "EOF"
    +DISTRIB_ID="Linux From Scratch"
    +DISTRIB_RELEASE="12.2"
    +DISTRIB_CODENAME="<your name here>"
    +DISTRIB_DESCRIPTION="Linux From Scratch"
    +EOF
    +

    + Второй содержит примерно ту же информацию и используется systemd и + некоторыми графическими средами рабочего стола. Чтобы создать этот + файл, выполните: +

    +
    cat > /etc/os-release << "EOF"
    +NAME="Linux From Scratch"
    +VERSION="12.2"
    +ID=lfs
    +PRETTY_NAME="Linux From Scratch 12.2"
    +VERSION_CODENAME="<your name here>"
    +HOME_URL="https://linuxfromscratch.ru/"
    +EOF
    +

    + Обязательно настройте значения 'DISTRIB_CODENAME' и + 'VERSION_CODENAME', чтобы сделать название вашей новой системы + уникальным. +

    +
    + + + diff --git a/lfs-12.2-sysv/chapter11/whatnow.html b/lfs-12.2-sysv/chapter11/whatnow.html new file mode 100644 index 0000000..6974e22 --- /dev/null +++ b/lfs-12.2-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.2-sysv/images/caution.png b/lfs-12.2-sysv/images/caution.png new file mode 100644 index 0000000..5b7809c Binary files /dev/null and b/lfs-12.2-sysv/images/caution.png differ diff --git a/lfs-12.2-sysv/images/chevron-bottom.png b/lfs-12.2-sysv/images/chevron-bottom.png new file mode 100644 index 0000000..a1a3bce Binary files /dev/null and b/lfs-12.2-sysv/images/chevron-bottom.png differ diff --git a/lfs-12.2-sysv/images/chevron-left.png b/lfs-12.2-sysv/images/chevron-left.png new file mode 100644 index 0000000..f16a3ab Binary files /dev/null and b/lfs-12.2-sysv/images/chevron-left.png differ diff --git a/lfs-12.2-sysv/images/chevron-right.png b/lfs-12.2-sysv/images/chevron-right.png new file mode 100644 index 0000000..b8d9362 Binary files /dev/null and b/lfs-12.2-sysv/images/chevron-right.png differ diff --git a/lfs-12.2-sysv/images/chevron-top.png b/lfs-12.2-sysv/images/chevron-top.png new file mode 100644 index 0000000..d9c01ba Binary files /dev/null and b/lfs-12.2-sysv/images/chevron-top.png differ diff --git a/lfs-12.2-sysv/images/grid-three-up.png b/lfs-12.2-sysv/images/grid-three-up.png new file mode 100644 index 0000000..c3f70a2 Binary files /dev/null and b/lfs-12.2-sysv/images/grid-three-up.png differ diff --git a/lfs-12.2-sysv/images/important.png b/lfs-12.2-sysv/images/important.png new file mode 100644 index 0000000..12c90f6 Binary files /dev/null and b/lfs-12.2-sysv/images/important.png differ diff --git a/lfs-12.2-sysv/images/menu.png b/lfs-12.2-sysv/images/menu.png new file mode 100644 index 0000000..6de4e43 Binary files /dev/null and b/lfs-12.2-sysv/images/menu.png differ diff --git a/lfs-12.2-sysv/images/note.png b/lfs-12.2-sysv/images/note.png new file mode 100644 index 0000000..f14464d Binary files /dev/null and b/lfs-12.2-sysv/images/note.png differ diff --git a/lfs-12.2-sysv/images/tip.png b/lfs-12.2-sysv/images/tip.png new file mode 100644 index 0000000..5c4aab3 Binary files /dev/null and b/lfs-12.2-sysv/images/tip.png differ diff --git a/lfs-12.2-sysv/images/tux.png b/lfs-12.2-sysv/images/tux.png new file mode 100644 index 0000000..8aae132 Binary files /dev/null and b/lfs-12.2-sysv/images/tux.png differ diff --git a/lfs-12.2-sysv/images/warning.png b/lfs-12.2-sysv/images/warning.png new file mode 100644 index 0000000..1c33db8 Binary files /dev/null and b/lfs-12.2-sysv/images/warning.png differ diff --git a/lfs-12.2-sysv/index.html b/lfs-12.2-sysv/index.html new file mode 100644 index 0000000..360c304 --- /dev/null +++ b/lfs-12.2-sysv/index.html @@ -0,0 +1,923 @@ + + + + + + Линукс с нуля + + + + + + + +
    +
    +
    +
    +

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

    +
    +
    +

    + Версия 12.2 +

    +
    +
    +

    + Дата публикации 1 сентября 2024 +

    +
    +
    +
    +
    +

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

    +
    +
    +

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

    +
    +
    +

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

    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +

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

    + +
    +
    + + + diff --git a/lfs-12.2-sysv/legalnotice.html b/lfs-12.2-sysv/legalnotice.html new file mode 100644 index 0000000..7d14429 --- /dev/null +++ b/lfs-12.2-sysv/legalnotice.html @@ -0,0 +1,44 @@ + + + + + + Юридическое уведомление + + + + + + + +
    +

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

    +

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

    +

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

    +

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

    +
    + + + diff --git a/lfs-12.2-sysv/lfs-bootscripts-20240825.tar.xz b/lfs-12.2-sysv/lfs-bootscripts-20240825.tar.xz new file mode 100644 index 0000000..1ebd148 Binary files /dev/null and b/lfs-12.2-sysv/lfs-bootscripts-20240825.tar.xz differ diff --git a/lfs-12.2-sysv/longindex.html b/lfs-12.2-sysv/longindex.html new file mode 100644 index 0000000..49650a0 --- /dev/null +++ b/lfs-12.2-sysv/longindex.html @@ -0,0 +1,5737 @@ + + + + + + Предметный указатель + + + + + + + + +
    +
    +
    +
    +

    + Предметный указатель +

    +
    +
    +
    +
    +

    + Пакеты +

    + +

    + Программы +

    + +

    + Библиотеки +

    + +

    + Скрипты +

    + +

    + Разное +

    + +
    +
    + + + diff --git a/lfs-12.2-sysv/md5sums b/lfs-12.2-sysv/md5sums new file mode 100644 index 0000000..31a3b8f --- /dev/null +++ b/lfs-12.2-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 +7ab3a02318fee6f5bd42adfc369abf10 automake-1.17.tar.xz +f204835b2e06c06e37b5ad776ff907f4 bash-5.2.32.tar.gz +a47aa5e4e7395fbcd159a9228613b97b bc-6.7.6.tar.xz +9202d02925c30969d1917e4bad5a2320 binutils-2.43.1.tar.xz +c28f119f405a2304ff0a7ccdcc629713 bison-3.8.2.tar.xz +67e051268d0c475ea773822f7500d0e5 bzip2-1.0.8.tar.gz +50fcafcecde5a380415b12e9c574e0b2 check-0.15.2.tar.gz +e99adfa059a63db3503cc71f3d151e31 coreutils-9.5.tar.xz +68c5208c58236eba447d7d6d1326b821 dejagnu-1.6.3.tar.gz +2745c50f6f4e395e7b7d52f902d075bf diffutils-3.10.tar.xz +75e6d1353cbe6d5728a98fb0267206cb e2fsprogs-1.47.1.tar.gz +636547248fb3fae58ec48030298d3ef7 elfutils-0.191.tar.bz2 +0cb75c8feb842c0794ba89666b762a2d expat-2.6.2.tar.xz +00fce8de158422f5ccd2666512329bd2 expect5.45.4.tar.gz +26b2a96d4e3a8938827a1e572afd527a file-5.45.tar.gz +870cfd71c07d37ebe56f9f4aaf4ad872 findutils-4.10.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 +2268420ba02dc01821960e274711bde0 gcc-14.2.0.tar.xz +c780815649e52317be48331c1773e987 gdbm-1.24.tar.gz +3ae5580599d84be93e6213930facb2db gettext-0.22.5.tar.xz +b390feef233022114950317f10c4fa97 glibc-2.40.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 +ea3c37c00d22f1159fc3b7d988de8476 iana-etc-20240806.tar.gz +9e5a6dfd2d794dc056a770e8ad4a9263 inetutils-2.5.tar.xz +12e517cac2b57a0121cda351570f1e63 intltool-0.51.0.tar.gz +6282e47de9c5b230e83537fba7181c9c iproute2-6.10.0.tar.xz +02ca9a6364c92e83d14b037bef4732bc jinja2-3.1.4.tar.gz +e2fd7adccf6b1e98eb1ae8d5a1ce5762 kbd-2.6.4.tar.xz +c451c4aa61521adbe8af147f498046f8 kmod-33.tar.xz +44f54b6313c5d71fa1ac224d8d84766a less-661.tar.gz +e121b5920071ae9a1351f3f44f8b1e77 lfs-bootscripts-20240825.tar.xz +df0e20c6eeca849347b87d5d6a8870c0 libcap-2.70.tar.xz +b9cac6c5997dca2b3787a59ede34e0eb libffi-3.4.6.tar.gz +1a48b5771b9f6c790fb4efdb1ac71342 libpipeline-1.5.7.tar.gz +2fc0b6ddcd66a89ed6e45db28fa44232 libtool-2.4.7.tar.xz +b84cd4104e08c975063ec6c4d0372446 libxcrypt-4.4.36.tar.xz +276ef1f11ed3713ec5d6f506ff55ac12 linux-6.10.5.tar.xz +dead9f5f1966d9ae56e1e32761e4e675 lz4-1.10.0.tar.gz +0d90823e1426f1da2fd872df0311298d m4-1.4.19.tar.xz +c8469a3713cbbe04d955d4ae4be23eeb make-4.4.1.tar.gz +7b044e5020aab89db41ac7ee59d6d84a man-db-2.12.1.tar.xz +4d56775b6cce4edf1e496249e7c01c1a man-pages-6.9.1.tar.xz +8fe7227653f2fb9b1ffe7f9f2058998a MarkupSafe-2.1.5.tar.gz +c4f2b3e5ea632685f61ba1b833c4905c meson-1.5.1.tar.gz +5c9bc658c9fd0f940e8e3e0f09530c62 mpc-1.3.1.tar.gz +523c50c6318dde6f9dc523bc0244690a mpfr-4.2.1.tar.xz +ac2d2629296f04c8537ca706b6977687 ncurses-6.5.tar.gz +6288992b05e593a391599692e2f7e490 ninja-1.12.1.tar.gz +8a4342b399c18f870ca6186299195984 openssl-3.3.1.tar.gz +78ad9937e4caadcba1526ef1853730d5 patch-2.7.6.tar.xz +cfe14ef0709b9687f9c514042e8e1e82 perl-5.40.0.tar.xz +833363e77b5bed0131c7bc4cc6f7747b pkgconf-2.3.0.tar.xz +2f747fc7df8ccf402d03e375c565cf96 procps-ng-4.0.4.tar.xz +53eae841735189a896d614cba440eb10 psmisc-23.7.tar.xz +02c7d269e077f4034963bba6befdc715 Python-3.12.5.tar.xz +52274d813236ca4a972fb6988480dc56 python-3.12.5-docs-html.tar.bz2 +05080bf3801e6874bb115cd6700b708f readline-8.2.13.tar.gz +6aac9b2dbafcd5b7a67a8a9bcb8036c3 sed-4.9.tar.xz +2e0ffd0f6fc632a11442b79d9b1c68bd setuptools-72.2.0.tar.gz +eb70bad3316d08f0d3bb3d4bbeccb3b4 shadow-4.16.0.tar.xz +dcf0836a0fcc6568efaad230850d9c86 sysklogd-2.6.1.tar.gz +03bd1ff158ec0bc55428c77a8f8495bd systemd-256.4.tar.gz +8dbcf0ff0d8e5e9d3565f9d2fc153310 systemd-man-pages-256.4.tar.xz +b8fbe11062cf16d3b6a3709b7f6978d2 sysvinit-3.10.tar.xz +a2d8042658cfd8ea939e6d911eaf4152 tar-1.35.tar.xz +c30b57c6051be28fa928d09aca82841e tcl8.6.14-src.tar.gz +5467198f8d57c54835bf80b98ffb0170 tcl8.6.14-html.tar.gz +edd9928b4a3f82674bcc3551616eef3b texinfo-7.1.tar.xz +2349edd8335245525cc082f2755d5bf4 tzdata2024a.tar.gz +acd4360d8a5c3ef320b9db88d275dae6 udev-lfs-20230818.tar.xz +88faefc8fefced097e58142077a3d14e util-linux-2.40.2.tar.xz +c512a99b3704f193be1a181cc644b2b2 vim-9.1.0660.tar.gz +440ff4fe51579b7ed16f02af8f8d9494 wheel-0.44.0.tar.gz +89a8e82cfd2ad948b349c0a69c494463 XML-Parser-2.47.tar.gz +bbf73fb28425cebb854328599f85c4cf xz-5.6.2.tar.xz +9855b6d802d7fe5b7bd5b196a2271655 zlib-1.3.1.tar.gz +5a473726b3445d0e5d6296afd1ab6854 zstd-1.5.6.tar.gz +6a5ac7e89b791aae556de0f745916f7f bzip2-1.0.8-install_docs-1.patch +58961caf5bbdb02462591fa506c73b6d coreutils-9.5-i18n-2.patch +0b8b5ac411d011263ad40b0664c669f0 expect-5.45.4-gcc14-1.patch +9a5997c3452909b1769918c759eff8a2 glibc-2.40-fhs-1.patch +f75cca16a38da6caa7d52151f7136895 kbd-2.6.4-backspace-1.patch +17ffccbb8e18c39e8cedc32046f3a475 sysvinit-3.10-consolidated-1.patch diff --git a/lfs-12.2-sysv/part1.html b/lfs-12.2-sysv/part1.html new file mode 100644 index 0000000..c734053 --- /dev/null +++ b/lfs-12.2-sysv/part1.html @@ -0,0 +1,103 @@ + + + + + + Часть I. Введение + + + + + + + + +

    + I. Введение +

    +
    + +
    + + + diff --git a/lfs-12.2-sysv/part2.html b/lfs-12.2-sysv/part2.html new file mode 100644 index 0000000..a5e7f83 --- /dev/null +++ b/lfs-12.2-sysv/part2.html @@ -0,0 +1,158 @@ + + + + + + Часть II. Подготовка к сборке + + + + + + + + +

    + II. Подготовка к сборке +

    +
    + +
    + + + diff --git a/lfs-12.2-sysv/part3.html b/lfs-12.2-sysv/part3.html new file mode 100644 index 0000000..1f49c1b --- /dev/null +++ b/lfs-12.2-sysv/part3.html @@ -0,0 +1,240 @@ + + + + + + Часть III. Сборка кросс-компилятора и набора временных + инструментов + + + + + + + + +

    + III. Сборка кросс-компилятора и набора + временных инструментов +

    +
    +
    +

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

    + +
    +
    + + + diff --git a/lfs-12.2-sysv/part4.html b/lfs-12.2-sysv/part4.html new file mode 100644 index 0000000..18e6e7d --- /dev/null +++ b/lfs-12.2-sysv/part4.html @@ -0,0 +1,428 @@ + + + + + + Часть IV. Сборка системы LFS + + + + + + + + +

    + IV. Сборка системы LFS +

    +
    +
    +

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

    + +
    +
    + + + diff --git a/lfs-12.2-sysv/part5.html b/lfs-12.2-sysv/part5.html new file mode 100644 index 0000000..d0f580e --- /dev/null +++ b/lfs-12.2-sysv/part5.html @@ -0,0 +1,200 @@ + + + + + + Часть V. Приложения + + + + + + + + +

    + V. Приложения +

    +
    + +
    + + + diff --git a/lfs-12.2-sysv/partintro/generalinstructions.html b/lfs-12.2-sysv/partintro/generalinstructions.html new file mode 100644 index 0000000..02a6a96 --- /dev/null +++ b/lfs-12.2-sysv/partintro/generalinstructions.html @@ -0,0 +1,281 @@ + + + + + + Общие инструкции по компиляции + + + + + + + + +

    + 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.2-sysv/partintro/introduction.html b/lfs-12.2-sysv/partintro/introduction.html new file mode 100644 index 0000000..8c48411 --- /dev/null +++ b/lfs-12.2-sysv/partintro/introduction.html @@ -0,0 +1,112 @@ + + + + + + Введение + + + + + + + + +

    + i. Введение +

    +
    +

    + Эта часть разделена на три этапа: во-первых, сборка кросс-компилятора + и связанных с ним библиотек; во-вторых, использование этого набора + инструментов для сборки нескольких утилит таким образом, чтобы + изолировать их от основного дистрибутива; в-третьих, вход в среду + chroot (что ещё больше улучшает изоляцию от хоста), и сборка + оставшихся инструментов, необходимых для создания конечной системы. +

    +
    + [Важно] +

    + Важно +

    +

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

    +
    +

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

    +
    + + + diff --git a/lfs-12.2-sysv/partintro/partintro.html b/lfs-12.2-sysv/partintro/partintro.html new file mode 100644 index 0000000..96c169f --- /dev/null +++ b/lfs-12.2-sysv/partintro/partintro.html @@ -0,0 +1,102 @@ + + + + + + Важный предварительный материал + + + + + + + + +

    + Важный + предварительный материал +

    +
    + +
    + + + diff --git a/lfs-12.2-sysv/partintro/toolchaintechnotes.html b/lfs-12.2-sysv/partintro/toolchaintechnotes.html new file mode 100644 index 0000000..a94c80e --- /dev/null +++ b/lfs-12.2-sysv/partintro/toolchaintechnotes.html @@ -0,0 +1,738 @@ + + + + + + Технические примечания по сборочным инструментам + + + + + + + + +

    + 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 + и зафиксировать результат. Официальный источник, охватывающий все + платформы, находится на вики-странице + 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.40; + хост-дистрибутив может использовать либо другую реализацию + 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 всегда использует + параметры, передаваемые скрипту configure, которые указаны в + --host, например, в нашем + случае компилятором будет $LFS_TGT-gcc, а инструментом + readelf будет + $LFS_TGT-readelf. С + заголовочными файлами ядра может быть немного сложнее. Поэтому мы + не рискуем и используем доступный параметр configure, чтобы + обеспечить правильный выбор. После выполнения команды configure проверьте содержимое + файла config.make в каталоге + build на наличие всех нужных + параметров. Эти элементы подчеркивают важный аспект пакета 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.2-sysv/prologue/architecture.html b/lfs-12.2-sysv/prologue/architecture.html new file mode 100644 index 0000000..4cbf5c0 --- /dev/null +++ b/lfs-12.2-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.2-ml/systemv, + но это более продвинутая тема. +

    +
    + + + diff --git a/lfs-12.2-sysv/prologue/audience.html b/lfs-12.2-sysv/prologue/audience.html new file mode 100644 index 0000000..0251fd4 --- /dev/null +++ b/lfs-12.2-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.2-sysv/prologue/errata.html b/lfs-12.2-sysv/prologue/errata.html new file mode 100644 index 0000000..dc19dc6 --- /dev/null +++ b/lfs-12.2-sysv/prologue/errata.html @@ -0,0 +1,102 @@ + + + + + + Ошибки и рекомендации по безопасности + + + + + + + + +

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

    +
    +

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

    +

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

    +
    + + + diff --git a/lfs-12.2-sysv/prologue/foreword.html b/lfs-12.2-sysv/prologue/foreword.html new file mode 100644 index 0000000..aea0d01 --- /dev/null +++ b/lfs-12.2-sysv/prologue/foreword.html @@ -0,0 +1,155 @@ + + + + + + Предисловие + + + + + + + + +

    + 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.2-sysv/prologue/organization.html b/lfs-12.2-sysv/prologue/organization.html new file mode 100644 index 0000000..e9cccc9 --- /dev/null +++ b/lfs-12.2-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.2-sysv/prologue/package-choices.html b/lfs-12.2-sysv/prologue/package-choices.html new file mode 100644 index 0000000..b668fc4 --- /dev/null +++ b/lfs-12.2-sysv/prologue/package-choices.html @@ -0,0 +1,855 @@ + + + + + + Информация о пакетах, используемых в этой книге + + + + + + + + +

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

      +

      + Этот пакет содержит основные справочные(man) страницы 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.2-sysv/prologue/preface.html b/lfs-12.2-sysv/prologue/preface.html new file mode 100644 index 0000000..ed1c973 --- /dev/null +++ b/lfs-12.2-sysv/prologue/preface.html @@ -0,0 +1,93 @@ + + + + + + Предисловие + + + + + + + + +

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

    +
    + +
    + + + diff --git a/lfs-12.2-sysv/prologue/prerequisites.html b/lfs-12.2-sysv/prologue/prerequisites.html new file mode 100644 index 0000000..e103b00 --- /dev/null +++ b/lfs-12.2-sysv/prologue/prerequisites.html @@ -0,0 +1,132 @@ + + + + + + Требования к уровню подготовки + + + + + + + + +

    + 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.2-sysv/prologue/standards.html b/lfs-12.2-sysv/prologue/standards.html new file mode 100644 index 0000000..1c239b9 --- /dev/null +++ b/lfs-12.2-sysv/prologue/standards.html @@ -0,0 +1,378 @@ + + + + + + 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.2-sysv/prologue/typography.html b/lfs-12.2-sysv/prologue/typography.html new file mode 100644 index 0000000..39fc19f --- /dev/null +++ b/lfs-12.2-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.2-sysv/scripts/apds01.html b/lfs-12.2-sysv/scripts/apds01.html new file mode 100644 index 0000000..35abfd1 --- /dev/null +++ b/lfs-12.2-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.2-sysv/scripts/apds02.html b/lfs-12.2-sysv/scripts/apds02.html new file mode 100644 index 0000000..cd13b83 --- /dev/null +++ b/lfs-12.2-sysv/scripts/apds02.html @@ -0,0 +1,944 @@ + + + + + + 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
    +
    +# If HEADLESS is set, use that.  
    +# If file descriptor 1 or 2 (stdout and stderr) is not open or
    +# does not refer to a terminal, consider the script headless.
    +[ ! -t 1 -o ! -t 2 ] && HEADLESS=${HEADLESS:-yes}
    +
    +if [ "x$HEADLESS" != "xyes" ]
    +then 
    +  ## Screen Dimensions
    +  # Find current screen size
    +  if [ -z "${COLUMNS}" ]; then
    +    COLUMNS=$(stty size)
    +    COLUMNS=${COLUMNS##* }
    +  fi
    +else
    +   COLUMNS=80
    +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}"`
    +    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()
    +{
    +    if [ "x$HEADLESS" != "xyes" ]
    +    then 
    +      /bin/echo -n -e "${BMPREFIX}${@}"
    +      /bin/echo -e "${CURS_ZERO}${SUCCESS_PREFIX}${SET_COL}${SUCCESS_SUFFIX}"
    +    else
    +      logmessage=`echo "${@}" | sed 's/\\\033[^a-zA-Z]*.//g'`
    +      /bin/echo -e "${logmessage} OK" 
    +    fi
    +    # 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()
    +{
    +    if [ "x$HEADLESS" != "xyes" ]
    +    then 
    +      /bin/echo -n -e "${BMPREFIX}${@}"
    +      /bin/echo -e "${CURS_ZERO}${SUCCESS_PREFIX}${SET_COL}${SUCCESS_SUFFIX}"
    +    else
    +      echo " OK" 
    +    fi
    +
    +    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()
    +{
    +    if [ "x$HEADLESS" != "xyes" ]
    +    then 
    +      /bin/echo -n -e "${BMPREFIX}${@}"
    +      /bin/echo -e "${CURS_ZERO}${FAILURE_PREFIX}${SET_COL}${FAILURE_SUFFIX}"
    +    else
    +      logmessage=`echo "${@}" | sed 's/\\\033[^a-zA-Z]*.//g'`
    +      /bin/echo -e "${logmessage} FAIL"
    +    fi
    +
    +    # 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()
    +{
    +    if [ "x$HEADLESS" != "xyes" ]
    +    then 
    +      /bin/echo -n -e "${BMPREFIX}${@}"
    +      /bin/echo -e "${CURS_ZERO}${FAILURE_PREFIX}${SET_COL}${FAILURE_SUFFIX}"
    +    else
    +      echo "FAIL"
    +    fi
    +
    +    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()
    +{
    +    if [ "x$HEADLESS" != "xyes" ]
    +    then
    +      /bin/echo -n -e "${BMPREFIX}${@}"
    +      /bin/echo -e "${CURS_ZERO}${WARNING_PREFIX}${SET_COL}${WARNING_SUFFIX}"
    +    else
    +      logmessage=`echo "${@}" | sed 's/\\\033[^a-zA-Z]*.//g'`
    +      /bin/echo -e "${logmessage} WARN"
    +    fi 
    +
    +    # 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()
    +{
    +    if [ "x$HEADLESS" != "xyes" ]
    +    then
    +      /bin/echo -n -e "${BMPREFIX}${@}"
    +      /bin/echo -e "${CURS_ZERO}${SKIP_PREFIX}${SET_COL}${SKIP_SUFFIX}"
    +    else
    +      logmessage=`echo "${@}" | sed 's/\\\033[^a-zA-Z]*.//g'`
    +      /bin/echo "SKIP"
    +    fi
    +
    +    # 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()
    +{
    +    if [ "x$HEADLESS" != "xyes" ]
    +    then
    +      /bin/echo -n -e "${BMPREFIX}${@}"
    +    else
    +      logmessage=`echo "${@}" | sed 's/\\\033[^a-zA-Z]*.//g'`
    +      /bin/echo -n -e "${logmessage}"
    +    fi
    +
    +    # 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()
    +{
    +    if [ "x$HEADLESS" != "xyes" ]
    +    then
    +      /bin/echo -n -e "${@}"
    +    else
    +      logmessage=`echo "${@}" | sed 's/\\\033[^a-zA-Z]*.//g'`
    +      /bin/echo -n -e "${logmessage}"
    +    fi
    +
    +    # 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.2-sysv/scripts/apds03.html b/lfs-12.2-sysv/scripts/apds03.html new file mode 100644 index 0000000..27392ac --- /dev/null +++ b/lfs-12.2-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 -sfn /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.2-sysv/scripts/apds04.html b/lfs-12.2-sysv/scripts/apds04.html new file mode 100644 index 0000000..c791f9b --- /dev/null +++ b/lfs-12.2-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.2-sysv/scripts/apds05.html b/lfs-12.2-sysv/scripts/apds05.html new file mode 100644 index 0000000..d55d40f --- /dev/null +++ b/lfs-12.2-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.2-sysv/scripts/apds06.html b/lfs-12.2-sysv/scripts/apds06.html new file mode 100644 index 0000000..c9b40ae --- /dev/null +++ b/lfs-12.2-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.2-sysv/scripts/apds07.html b/lfs-12.2-sysv/scripts/apds07.html new file mode 100644 index 0000000..cb3f2a1 --- /dev/null +++ b/lfs-12.2-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.2-sysv/scripts/apds08.html b/lfs-12.2-sysv/scripts/apds08.html new file mode 100644 index 0000000..ac01ffe --- /dev/null +++ b/lfs-12.2-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.2-sysv/scripts/apds09.html b/lfs-12.2-sysv/scripts/apds09.html new file mode 100644 index 0000000..d3091be --- /dev/null +++ b/lfs-12.2-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.2-sysv/scripts/apds10.html b/lfs-12.2-sysv/scripts/apds10.html new file mode 100644 index 0000000..84f83fc --- /dev/null +++ b/lfs-12.2-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.2-sysv/scripts/apds11.html b/lfs-12.2-sysv/scripts/apds11.html new file mode 100644 index 0000000..a00f0f3 --- /dev/null +++ b/lfs-12.2-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.2-sysv/scripts/apds12.html b/lfs-12.2-sysv/scripts/apds12.html new file mode 100644 index 0000000..d2cfbed --- /dev/null +++ b/lfs-12.2-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/fbcon ] && 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.2-sysv/scripts/apds13.html b/lfs-12.2-sysv/scripts/apds13.html new file mode 100644 index 0000000..0d0e787 --- /dev/null +++ b/lfs-12.2-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.2-sysv/scripts/apds14.html b/lfs-12.2-sysv/scripts/apds14.html new file mode 100644 index 0000000..7bb5369 --- /dev/null +++ b/lfs-12.2-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.2-sysv/scripts/apds15.html b/lfs-12.2-sysv/scripts/apds15.html new file mode 100644 index 0000000..94f9b44 --- /dev/null +++ b/lfs-12.2-sysv/scripts/apds15.html @@ -0,0 +1,154 @@ + + + + + + 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
    +# Update      : Bruce Dubbs - bdubbs@linuxfromscratch.org LFS12.1
    +#               Remove kernel log daemon.  The functionality has been
    +#               merged with syslogd. 
    +#
    +# 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 system log daemon.
    +# Description:         Starts system log daemon.
    +#                      /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
    +      ;;
    +
    +   stop)
    +      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
    +      ;;
    +
    +   *)
    +      echo "Usage: ${0} {start|stop|reload|restart|status}"
    +      exit 1
    +      ;;
    +esac
    +
    +exit 0
    +
    +# End sysklogd
    +
    +
    + + + diff --git a/lfs-12.2-sysv/scripts/apds16.html b/lfs-12.2-sysv/scripts/apds16.html new file mode 100644 index 0000000..fa30a66 --- /dev/null +++ b/lfs-12.2-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.2-sysv/scripts/apds17.html b/lfs-12.2-sysv/scripts/apds17.html new file mode 100644 index 0000000..cf6016a --- /dev/null +++ b/lfs-12.2-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.2-sysv/scripts/apds18.html b/lfs-12.2-sysv/scripts/apds18.html new file mode 100644 index 0000000..ea089af --- /dev/null +++ b/lfs-12.2-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.2-sysv/scripts/apds19.html b/lfs-12.2-sysv/scripts/apds19.html new file mode 100644 index 0000000..b81ca94 --- /dev/null +++ b/lfs-12.2-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.2-sysv/scripts/apds20.html b/lfs-12.2-sysv/scripts/apds20.html new file mode 100644 index 0000000..2ba3091 --- /dev/null +++ b/lfs-12.2-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.2-sysv/scripts/apds21.html b/lfs-12.2-sysv/scripts/apds21.html new file mode 100644 index 0000000..cdb5f6c --- /dev/null +++ b/lfs-12.2-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.2-sysv/scripts/apds22.html b/lfs-12.2-sysv/scripts/apds22.html new file mode 100644 index 0000000..52f3225 --- /dev/null +++ b/lfs-12.2-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.2-sysv/scripts/apds23.html b/lfs-12.2-sysv/scripts/apds23.html new file mode 100644 index 0000000..a2d9a13 --- /dev/null +++ b/lfs-12.2-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.2-sysv/scripts/apds24.html b/lfs-12.2-sysv/scripts/apds24.html new file mode 100644 index 0000000..4b496a6 --- /dev/null +++ b/lfs-12.2-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.2-sysv/scripts/apds25.html b/lfs-12.2-sysv/scripts/apds25.html new file mode 100644 index 0000000..f7a6a4c --- /dev/null +++ b/lfs-12.2-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.2-sysv/scripts/apds26.html b/lfs-12.2-sysv/scripts/apds26.html new file mode 100644 index 0000000..03bfde1 --- /dev/null +++ b/lfs-12.2-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.2-sysv/scripts/apds27.html b/lfs-12.2-sysv/scripts/apds27.html new file mode 100644 index 0000000..fa3091a --- /dev/null +++ b/lfs-12.2-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.2-sysv/scripts/apes01.html b/lfs-12.2-sysv/scripts/apes01.html new file mode 100644 index 0000000..28c00d7 --- /dev/null +++ b/lfs-12.2-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.2-sysv/scripts/scripts.html b/lfs-12.2-sysv/scripts/scripts.html new file mode 100644 index 0000000..c987918 --- /dev/null +++ b/lfs-12.2-sysv/scripts/scripts.html @@ -0,0 +1,91 @@ + + + + + + Приложение D. Скрипты загрузки и настройки системы-20240825 + + + + + + + + +

    + D. Скрипты загрузки и настройки + системы-20240825 +

    +
    +

    + Скрипты в приложении перечислены с указанием каталога, в котором они + обычно находятся. Порядок такой: /etc/rc.d/init.d, /etc/sysconfig, /etc/sysconfig/network-devices, и /etc/sysconfig/network-devices/services. В каждом + разделе файлы перечислены в том порядке, в котором они обычно + вызываются. +

    +
    + + + diff --git a/lfs-12.2-sysv/scripts/udev-rules.html b/lfs-12.2-sysv/scripts/udev-rules.html new file mode 100644 index 0000000..64acdba --- /dev/null +++ b/lfs-12.2-sysv/scripts/udev-rules.html @@ -0,0 +1,85 @@ + + + + + + Приложение E. Правила настройки Udev + + + + + + + + +

    + E. Правила настройки Udev +

    +
    +

    + Правила в этом приложении перечислены для удобства. Установка обычно + выполняются с помощью инструкций приведенных в Раздел 8.76, «Udev из + Systemd-256.4». +

    +
    + + + diff --git a/lfs-12.2-sysv/stylesheets/lfs-print.css b/lfs-12.2-sysv/stylesheets/lfs-print.css new file mode 100644 index 0000000..75f05d4 --- /dev/null +++ b/lfs-12.2-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.2-sysv/stylesheets/lfs.css b/lfs-12.2-sysv/stylesheets/lfs.css new file mode 100644 index 0000000..24bd150 --- /dev/null +++ b/lfs-12.2-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.2-sysv/wget-list b/lfs-12.2-sysv/wget-list new file mode 100644 index 0000000..d78422e --- /dev/null +++ b/lfs-12.2-sysv/wget-list @@ -0,0 +1,94 @@ +https://repo.linuxfromscratch.ru/lfs/12.2/acl-2.3.2.tar.xz +https://repo.linuxfromscratch.ru/lfs/12.2/attr-2.5.2.tar.gz +https://repo.linuxfromscratch.ru/lfs/12.2/autoconf-2.72.tar.xz +https://repo.linuxfromscratch.ru/lfs/12.2/automake-1.17.tar.xz +https://repo.linuxfromscratch.ru/lfs/12.2/bash-5.2.32.tar.gz +https://repo.linuxfromscratch.ru/lfs/12.2/bc-6.7.6.tar.xz +https://repo.linuxfromscratch.ru/lfs/12.2/binutils-2.43.1.tar.xz +https://repo.linuxfromscratch.ru/lfs/12.2/bison-3.8.2.tar.xz +https://repo.linuxfromscratch.ru/lfs/12.2/bzip2-1.0.8-install_docs-1.patch +https://repo.linuxfromscratch.ru/lfs/12.2/bzip2-1.0.8.tar.gz +https://repo.linuxfromscratch.ru/lfs/12.2/check-0.15.2.tar.gz +https://repo.linuxfromscratch.ru/lfs/12.2/coreutils-9.5-i18n-2.patch +https://repo.linuxfromscratch.ru/lfs/12.2/coreutils-9.5.tar.xz +https://repo.linuxfromscratch.ru/lfs/12.2/dbus-1.14.10.tar.xz +https://repo.linuxfromscratch.ru/lfs/12.2/dejagnu-1.6.3.tar.gz +https://repo.linuxfromscratch.ru/lfs/12.2/diffutils-3.10.tar.xz +https://repo.linuxfromscratch.ru/lfs/12.2/e2fsprogs-1.47.1.tar.gz +https://repo.linuxfromscratch.ru/lfs/12.2/elfutils-0.191.tar.bz2 +https://repo.linuxfromscratch.ru/lfs/12.2/expat-2.6.2.tar.xz +https://repo.linuxfromscratch.ru/lfs/12.2/expect-5.45.4-gcc14-1.patch +https://repo.linuxfromscratch.ru/lfs/12.2/expect5.45.4.tar.gz +https://repo.linuxfromscratch.ru/lfs/12.2/file-5.45.tar.gz +https://repo.linuxfromscratch.ru/lfs/12.2/findutils-4.10.0.tar.xz +https://repo.linuxfromscratch.ru/lfs/12.2/flex-2.6.4.tar.gz +https://repo.linuxfromscratch.ru/lfs/12.2/flit_core-3.9.0.tar.gz +https://repo.linuxfromscratch.ru/lfs/12.2/gawk-5.3.0.tar.xz +https://repo.linuxfromscratch.ru/lfs/12.2/gcc-14.2.0.tar.xz +https://repo.linuxfromscratch.ru/lfs/12.2/gdbm-1.24.tar.gz +https://repo.linuxfromscratch.ru/lfs/12.2/gettext-0.22.5.tar.xz +https://repo.linuxfromscratch.ru/lfs/12.2/glibc-2.40-fhs-1.patch +https://repo.linuxfromscratch.ru/lfs/12.2/glibc-2.40.tar.xz +https://repo.linuxfromscratch.ru/lfs/12.2/gmp-6.3.0.tar.xz +https://repo.linuxfromscratch.ru/lfs/12.2/gperf-3.1.tar.gz +https://repo.linuxfromscratch.ru/lfs/12.2/grep-3.11.tar.xz +https://repo.linuxfromscratch.ru/lfs/12.2/groff-1.23.0.tar.gz +https://repo.linuxfromscratch.ru/lfs/12.2/grub-2.12.tar.xz +https://repo.linuxfromscratch.ru/lfs/12.2/gzip-1.13.tar.xz +https://repo.linuxfromscratch.ru/lfs/12.2/iana-etc-20240806.tar.gz +https://repo.linuxfromscratch.ru/lfs/12.2/inetutils-2.5.tar.xz +https://repo.linuxfromscratch.ru/lfs/12.2/intltool-0.51.0.tar.gz +https://repo.linuxfromscratch.ru/lfs/12.2/iproute2-6.10.0.tar.xz +https://repo.linuxfromscratch.ru/lfs/12.2/jinja2-3.1.4.tar.gz +https://repo.linuxfromscratch.ru/lfs/12.2/kbd-2.6.4-backspace-1.patch +https://repo.linuxfromscratch.ru/lfs/12.2/kbd-2.6.4.tar.xz +https://repo.linuxfromscratch.ru/lfs/12.2/kmod-33.tar.xz +https://repo.linuxfromscratch.ru/lfs/12.2/less-661.tar.gz +https://repo.linuxfromscratch.ru/lfs/12.2/lfs-bootscripts-20240825.tar.xz +https://repo.linuxfromscratch.ru/lfs/12.2/libcap-2.70.tar.xz +https://repo.linuxfromscratch.ru/lfs/12.2/libffi-3.4.6.tar.gz +https://repo.linuxfromscratch.ru/lfs/12.2/libpipeline-1.5.7.tar.gz +https://repo.linuxfromscratch.ru/lfs/12.2/libtool-2.4.7.tar.xz +https://repo.linuxfromscratch.ru/lfs/12.2/libxcrypt-4.4.36.tar.xz +https://repo.linuxfromscratch.ru/lfs/12.2/linux-6.10.5.tar.xz +https://repo.linuxfromscratch.ru/lfs/12.2/lz4-1.10.0.tar.gz +https://repo.linuxfromscratch.ru/lfs/12.2/m4-1.4.19.tar.xz +https://repo.linuxfromscratch.ru/lfs/12.2/make-4.4.1.tar.gz +https://repo.linuxfromscratch.ru/lfs/12.2/man-db-2.12.1.tar.xz +https://repo.linuxfromscratch.ru/lfs/12.2/man-pages-6.9.1.tar.xz +https://repo.linuxfromscratch.ru/lfs/12.2/MarkupSafe-2.1.5.tar.gz +https://repo.linuxfromscratch.ru/lfs/12.2/meson-1.5.1.tar.gz +https://repo.linuxfromscratch.ru/lfs/12.2/mpc-1.3.1.tar.gz +https://repo.linuxfromscratch.ru/lfs/12.2/mpfr-4.2.1.tar.xz +https://repo.linuxfromscratch.ru/lfs/12.2/ncurses-6.5.tar.gz +https://repo.linuxfromscratch.ru/lfs/12.2/ninja-1.12.1.tar.gz +https://repo.linuxfromscratch.ru/lfs/12.2/openssl-3.3.1.tar.gz +https://repo.linuxfromscratch.ru/lfs/12.2/patch-2.7.6.tar.xz +https://repo.linuxfromscratch.ru/lfs/12.2/perl-5.40.0.tar.xz +https://repo.linuxfromscratch.ru/lfs/12.2/pkgconf-2.3.0.tar.xz +https://repo.linuxfromscratch.ru/lfs/12.2/procps-ng-4.0.4.tar.xz +https://repo.linuxfromscratch.ru/lfs/12.2/psmisc-23.7.tar.xz +https://repo.linuxfromscratch.ru/lfs/12.2/python-3.12.5-docs-html.tar.bz2 +https://repo.linuxfromscratch.ru/lfs/12.2/Python-3.12.5.tar.xz +https://repo.linuxfromscratch.ru/lfs/12.2/readline-8.2.13.tar.gz +https://repo.linuxfromscratch.ru/lfs/12.2/sed-4.9.tar.xz +https://repo.linuxfromscratch.ru/lfs/12.2/setuptools-72.2.0.tar.gz +https://repo.linuxfromscratch.ru/lfs/12.2/shadow-4.16.0.tar.xz +https://repo.linuxfromscratch.ru/lfs/12.2/sysklogd-2.6.1.tar.gz +https://repo.linuxfromscratch.ru/lfs/12.2/systemd-256.4.tar.gz +https://repo.linuxfromscratch.ru/lfs/12.2/systemd-man-pages-256.4.tar.xz +https://repo.linuxfromscratch.ru/lfs/12.2/sysvinit-3.10-consolidated-1.patch +https://repo.linuxfromscratch.ru/lfs/12.2/sysvinit-3.10.tar.xz +https://repo.linuxfromscratch.ru/lfs/12.2/tar-1.35.tar.xz +https://repo.linuxfromscratch.ru/lfs/12.2/tcl8.6.14-html.tar.gz +https://repo.linuxfromscratch.ru/lfs/12.2/tcl8.6.14-src.tar.gz +https://repo.linuxfromscratch.ru/lfs/12.2/texinfo-7.1.tar.xz +https://repo.linuxfromscratch.ru/lfs/12.2/tzdata2024a.tar.gz +https://repo.linuxfromscratch.ru/lfs/12.2/udev-lfs-20230818.tar.xz +https://repo.linuxfromscratch.ru/lfs/12.2/util-linux-2.40.2.tar.xz +https://repo.linuxfromscratch.ru/lfs/12.2/vim-9.1.0660.tar.gz +https://repo.linuxfromscratch.ru/lfs/12.2/wheel-0.44.0.tar.gz +https://repo.linuxfromscratch.ru/lfs/12.2/XML-Parser-2.47.tar.gz +https://repo.linuxfromscratch.ru/lfs/12.2/xz-5.6.2.tar.xz +https://repo.linuxfromscratch.ru/lfs/12.2/zlib-1.3.1.tar.gz +https://repo.linuxfromscratch.ru/lfs/12.2/zstd-1.5.6.tar.gz diff --git a/lfs-12.2-sysv/wget-list-sysv b/lfs-12.2-sysv/wget-list-sysv new file mode 100644 index 0000000..d78422e --- /dev/null +++ b/lfs-12.2-sysv/wget-list-sysv @@ -0,0 +1,94 @@ +https://repo.linuxfromscratch.ru/lfs/12.2/acl-2.3.2.tar.xz +https://repo.linuxfromscratch.ru/lfs/12.2/attr-2.5.2.tar.gz +https://repo.linuxfromscratch.ru/lfs/12.2/autoconf-2.72.tar.xz +https://repo.linuxfromscratch.ru/lfs/12.2/automake-1.17.tar.xz +https://repo.linuxfromscratch.ru/lfs/12.2/bash-5.2.32.tar.gz +https://repo.linuxfromscratch.ru/lfs/12.2/bc-6.7.6.tar.xz +https://repo.linuxfromscratch.ru/lfs/12.2/binutils-2.43.1.tar.xz +https://repo.linuxfromscratch.ru/lfs/12.2/bison-3.8.2.tar.xz +https://repo.linuxfromscratch.ru/lfs/12.2/bzip2-1.0.8-install_docs-1.patch +https://repo.linuxfromscratch.ru/lfs/12.2/bzip2-1.0.8.tar.gz +https://repo.linuxfromscratch.ru/lfs/12.2/check-0.15.2.tar.gz +https://repo.linuxfromscratch.ru/lfs/12.2/coreutils-9.5-i18n-2.patch +https://repo.linuxfromscratch.ru/lfs/12.2/coreutils-9.5.tar.xz +https://repo.linuxfromscratch.ru/lfs/12.2/dbus-1.14.10.tar.xz +https://repo.linuxfromscratch.ru/lfs/12.2/dejagnu-1.6.3.tar.gz +https://repo.linuxfromscratch.ru/lfs/12.2/diffutils-3.10.tar.xz +https://repo.linuxfromscratch.ru/lfs/12.2/e2fsprogs-1.47.1.tar.gz +https://repo.linuxfromscratch.ru/lfs/12.2/elfutils-0.191.tar.bz2 +https://repo.linuxfromscratch.ru/lfs/12.2/expat-2.6.2.tar.xz +https://repo.linuxfromscratch.ru/lfs/12.2/expect-5.45.4-gcc14-1.patch +https://repo.linuxfromscratch.ru/lfs/12.2/expect5.45.4.tar.gz +https://repo.linuxfromscratch.ru/lfs/12.2/file-5.45.tar.gz +https://repo.linuxfromscratch.ru/lfs/12.2/findutils-4.10.0.tar.xz +https://repo.linuxfromscratch.ru/lfs/12.2/flex-2.6.4.tar.gz +https://repo.linuxfromscratch.ru/lfs/12.2/flit_core-3.9.0.tar.gz +https://repo.linuxfromscratch.ru/lfs/12.2/gawk-5.3.0.tar.xz +https://repo.linuxfromscratch.ru/lfs/12.2/gcc-14.2.0.tar.xz +https://repo.linuxfromscratch.ru/lfs/12.2/gdbm-1.24.tar.gz +https://repo.linuxfromscratch.ru/lfs/12.2/gettext-0.22.5.tar.xz +https://repo.linuxfromscratch.ru/lfs/12.2/glibc-2.40-fhs-1.patch +https://repo.linuxfromscratch.ru/lfs/12.2/glibc-2.40.tar.xz +https://repo.linuxfromscratch.ru/lfs/12.2/gmp-6.3.0.tar.xz +https://repo.linuxfromscratch.ru/lfs/12.2/gperf-3.1.tar.gz +https://repo.linuxfromscratch.ru/lfs/12.2/grep-3.11.tar.xz +https://repo.linuxfromscratch.ru/lfs/12.2/groff-1.23.0.tar.gz +https://repo.linuxfromscratch.ru/lfs/12.2/grub-2.12.tar.xz +https://repo.linuxfromscratch.ru/lfs/12.2/gzip-1.13.tar.xz +https://repo.linuxfromscratch.ru/lfs/12.2/iana-etc-20240806.tar.gz +https://repo.linuxfromscratch.ru/lfs/12.2/inetutils-2.5.tar.xz +https://repo.linuxfromscratch.ru/lfs/12.2/intltool-0.51.0.tar.gz +https://repo.linuxfromscratch.ru/lfs/12.2/iproute2-6.10.0.tar.xz +https://repo.linuxfromscratch.ru/lfs/12.2/jinja2-3.1.4.tar.gz +https://repo.linuxfromscratch.ru/lfs/12.2/kbd-2.6.4-backspace-1.patch +https://repo.linuxfromscratch.ru/lfs/12.2/kbd-2.6.4.tar.xz +https://repo.linuxfromscratch.ru/lfs/12.2/kmod-33.tar.xz +https://repo.linuxfromscratch.ru/lfs/12.2/less-661.tar.gz +https://repo.linuxfromscratch.ru/lfs/12.2/lfs-bootscripts-20240825.tar.xz +https://repo.linuxfromscratch.ru/lfs/12.2/libcap-2.70.tar.xz +https://repo.linuxfromscratch.ru/lfs/12.2/libffi-3.4.6.tar.gz +https://repo.linuxfromscratch.ru/lfs/12.2/libpipeline-1.5.7.tar.gz +https://repo.linuxfromscratch.ru/lfs/12.2/libtool-2.4.7.tar.xz +https://repo.linuxfromscratch.ru/lfs/12.2/libxcrypt-4.4.36.tar.xz +https://repo.linuxfromscratch.ru/lfs/12.2/linux-6.10.5.tar.xz +https://repo.linuxfromscratch.ru/lfs/12.2/lz4-1.10.0.tar.gz +https://repo.linuxfromscratch.ru/lfs/12.2/m4-1.4.19.tar.xz +https://repo.linuxfromscratch.ru/lfs/12.2/make-4.4.1.tar.gz +https://repo.linuxfromscratch.ru/lfs/12.2/man-db-2.12.1.tar.xz +https://repo.linuxfromscratch.ru/lfs/12.2/man-pages-6.9.1.tar.xz +https://repo.linuxfromscratch.ru/lfs/12.2/MarkupSafe-2.1.5.tar.gz +https://repo.linuxfromscratch.ru/lfs/12.2/meson-1.5.1.tar.gz +https://repo.linuxfromscratch.ru/lfs/12.2/mpc-1.3.1.tar.gz +https://repo.linuxfromscratch.ru/lfs/12.2/mpfr-4.2.1.tar.xz +https://repo.linuxfromscratch.ru/lfs/12.2/ncurses-6.5.tar.gz +https://repo.linuxfromscratch.ru/lfs/12.2/ninja-1.12.1.tar.gz +https://repo.linuxfromscratch.ru/lfs/12.2/openssl-3.3.1.tar.gz +https://repo.linuxfromscratch.ru/lfs/12.2/patch-2.7.6.tar.xz +https://repo.linuxfromscratch.ru/lfs/12.2/perl-5.40.0.tar.xz +https://repo.linuxfromscratch.ru/lfs/12.2/pkgconf-2.3.0.tar.xz +https://repo.linuxfromscratch.ru/lfs/12.2/procps-ng-4.0.4.tar.xz +https://repo.linuxfromscratch.ru/lfs/12.2/psmisc-23.7.tar.xz +https://repo.linuxfromscratch.ru/lfs/12.2/python-3.12.5-docs-html.tar.bz2 +https://repo.linuxfromscratch.ru/lfs/12.2/Python-3.12.5.tar.xz +https://repo.linuxfromscratch.ru/lfs/12.2/readline-8.2.13.tar.gz +https://repo.linuxfromscratch.ru/lfs/12.2/sed-4.9.tar.xz +https://repo.linuxfromscratch.ru/lfs/12.2/setuptools-72.2.0.tar.gz +https://repo.linuxfromscratch.ru/lfs/12.2/shadow-4.16.0.tar.xz +https://repo.linuxfromscratch.ru/lfs/12.2/sysklogd-2.6.1.tar.gz +https://repo.linuxfromscratch.ru/lfs/12.2/systemd-256.4.tar.gz +https://repo.linuxfromscratch.ru/lfs/12.2/systemd-man-pages-256.4.tar.xz +https://repo.linuxfromscratch.ru/lfs/12.2/sysvinit-3.10-consolidated-1.patch +https://repo.linuxfromscratch.ru/lfs/12.2/sysvinit-3.10.tar.xz +https://repo.linuxfromscratch.ru/lfs/12.2/tar-1.35.tar.xz +https://repo.linuxfromscratch.ru/lfs/12.2/tcl8.6.14-html.tar.gz +https://repo.linuxfromscratch.ru/lfs/12.2/tcl8.6.14-src.tar.gz +https://repo.linuxfromscratch.ru/lfs/12.2/texinfo-7.1.tar.xz +https://repo.linuxfromscratch.ru/lfs/12.2/tzdata2024a.tar.gz +https://repo.linuxfromscratch.ru/lfs/12.2/udev-lfs-20230818.tar.xz +https://repo.linuxfromscratch.ru/lfs/12.2/util-linux-2.40.2.tar.xz +https://repo.linuxfromscratch.ru/lfs/12.2/vim-9.1.0660.tar.gz +https://repo.linuxfromscratch.ru/lfs/12.2/wheel-0.44.0.tar.gz +https://repo.linuxfromscratch.ru/lfs/12.2/XML-Parser-2.47.tar.gz +https://repo.linuxfromscratch.ru/lfs/12.2/xz-5.6.2.tar.xz +https://repo.linuxfromscratch.ru/lfs/12.2/zlib-1.3.1.tar.gz +https://repo.linuxfromscratch.ru/lfs/12.2/zstd-1.5.6.tar.gz -- cgit v1.2.3