From 2203e654b389586650d553251b04544a34f189bf Mon Sep 17 00:00:00 2001 From: Sn4il Date: Mon, 2 Sep 2024 15:54:35 +0300 Subject: LFS 12.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 - 248 files changed, 134410 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 (limited to 'lfs-12.1-sysv') 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 -- cgit v1.2.3