├── .gitignore ├── ABOUT.md ├── INSTALL.md ├── LICENSE ├── Makefile ├── README.md ├── appendices ├── acknowledgments.xml ├── acronymlist.xml ├── creat-comm.xml ├── dependencies.xml ├── license.xml ├── mit-lic.xml ├── scripts.xml └── udev-rules.xml ├── aux-file-data.sh ├── bootscripts ├── ChangeLog ├── Makefile ├── README └── lfs │ ├── init.d │ ├── checkfs │ ├── cleanfs │ ├── console │ ├── halt │ ├── localnet │ ├── modules │ ├── mountfs │ ├── mountvirtfs │ ├── network │ ├── rc │ ├── reboot │ ├── sendsignals │ ├── setclock │ ├── swap │ ├── sysctl │ ├── sysklogd │ ├── template │ ├── udev │ └── udev_retry │ ├── lib │ └── services │ │ ├── init-functions │ │ ├── ipv4-static │ │ └── ipv4-static-route │ ├── sbin │ ├── ifdown │ ├── ifup │ └── ifup.8 │ └── sysconfig │ ├── createfiles │ ├── modules │ ├── rc.site │ └── udev_retry ├── chapter01 ├── askforhelp.xml ├── changelog.xml ├── chapter01.xml ├── how.xml ├── resources.xml └── whatsnew.xml ├── chapter02 ├── aboutlfs.xml ├── chapter02.xml ├── creatingfilesystem.xml ├── creatingpartition.xml ├── hostreqs.xml ├── introduction.xml ├── mounting.xml └── stages.xml ├── chapter03 ├── chapter03.xml ├── introduction.xml ├── packages.xml └── patches.xml ├── chapter04 ├── aboutsbus.xml ├── abouttestsuites.xml ├── addinguser.xml ├── chapter04.xml ├── creatingminlayout.xml ├── introduction.xml └── settingenviron.xml ├── chapter05 ├── binutils-pass1.xml ├── chapter05.xml ├── gcc-pass1.xml ├── glibc.xml ├── introduction.xml ├── libstdc++.xml └── linux-headers.xml ├── chapter06 ├── bash.xml ├── binutils-pass2.xml ├── chapter06.xml ├── coreutils.xml ├── diffutils.xml ├── file.xml ├── findutils.xml ├── gawk.xml ├── gcc-pass2.xml ├── grep.xml ├── gzip.xml ├── introduction.xml ├── m4.xml ├── make.xml ├── ncurses.xml ├── patch.xml ├── sed.xml ├── tar.xml └── xz.xml ├── chapter07 ├── bison.xml ├── changingowner.xml ├── chapter07.xml ├── chroot.xml ├── cleanup.xml ├── createfiles.xml ├── creatingdirs.xml ├── gettext.xml ├── introduction.xml ├── kernfs.xml ├── perl.xml ├── python.xml ├── texinfo.xml └── util-linux.xml ├── chapter08 ├── aboutdebug.xml ├── acl.xml ├── attr.xml ├── autoconf.xml ├── automake.xml ├── bash.xml ├── bc.xml ├── binutils.xml ├── bison.xml ├── bzip2.xml ├── chapter08.xml ├── check.xml ├── cleanup.xml ├── coreutils.xml ├── dbus.xml ├── dejagnu.xml ├── diffutils.xml ├── e2fsprogs.xml ├── expat.xml ├── expect.xml ├── file.xml ├── findutils.xml ├── flex.xml ├── flit-core.xml ├── gawk.xml ├── gcc.xml ├── gdbm.xml ├── gettext.xml ├── glibc.xml ├── gmp.xml ├── gperf.xml ├── grep.xml ├── groff.xml ├── grub.xml ├── gzip.xml ├── iana-etc.xml ├── inetutils.xml ├── intltool.xml ├── introduction.xml ├── iproute2.xml ├── jinja2.xml ├── kbd.xml ├── kmod.xml ├── less.xml ├── libcap.xml ├── libelf.xml ├── libffi.xml ├── libpipeline.xml ├── libtool.xml ├── libxcrypt.xml ├── lz4.xml ├── m4.xml ├── make.xml ├── man-db.xml ├── man-pages.xml ├── markupsafe.xml ├── meson.xml ├── mpc.xml ├── mpfr.xml ├── ncurses.xml ├── ninja.xml ├── openssl.xml ├── patch.xml ├── perl.xml ├── pkgconf.xml ├── pkgmgt.xml ├── procps.xml ├── psmisc.xml ├── python.xml ├── readline.xml ├── sed.xml ├── setuptools.xml ├── shadow.xml ├── stripping.xml ├── sysklogd.xml ├── systemd.xml ├── sysvinit.xml ├── tar.xml ├── tcl.xml ├── texinfo.xml ├── udev.xml ├── util-linux.xml ├── vim.xml ├── wheel.xml ├── xml-parser.xml ├── xz.xml ├── zlib.xml └── zstd.xml ├── chapter09 ├── bootscripts.xml ├── chapter09.xml ├── clock.xml ├── consoled.xml ├── etcshells.xml ├── inputrc.xml ├── introduction.xml ├── introductiond.xml ├── locale.xml ├── network.xml ├── networkd.xml ├── symlinks.xml ├── systemd-custom.xml ├── udev.xml └── usage.xml ├── chapter10 ├── chapter10.xml ├── fstab.xml ├── grub.xml ├── introduction.xml ├── kernel.xml └── kernel │ ├── .gitignore │ ├── Makefile │ ├── highmem.toml │ ├── highmem.xml │ ├── kernel-config.py │ ├── kernel.version │ ├── kernel_version.py │ ├── nvme.toml │ ├── nvme.xml │ ├── systemd.toml │ ├── systemd.xml │ ├── sysv.toml │ ├── sysv.xml │ ├── x2apic.toml │ └── x2apic.xml ├── chapter11 ├── afterlfs.xml ├── chapter11.xml ├── getcounted.xml ├── reboot.xml ├── theend.xml └── whatnow.xml ├── gen-changelog.py ├── general.ent ├── git-version.sh ├── images ├── caution.png ├── chevron-bottom.png ├── chevron-left.png ├── chevron-right.png ├── chevron-top.png ├── grid-three-up.png ├── important.png ├── menu.png ├── note.png ├── tip.png ├── tux.png └── warning.png ├── index.xml ├── lfs-latest-git.php ├── lfs-latest.php ├── make-aux-files.sh ├── obfuscate.sh ├── packages.ent ├── part3intro ├── generalinstructions.xml ├── introduction.xml ├── part3intro.xml └── toolchaintechnotes.xml ├── patches.ent ├── pdf-fixups.sh ├── pdf ├── change_config.py ├── config.xml └── fonts │ ├── Liberation │ ├── LiberationSans-Bold.ttf │ ├── LiberationSans-BoldItalic.ttf │ ├── LiberationSans-Italic.ttf │ ├── LiberationSans-Regular.ttf │ └── SIL Open Font License.txt │ ├── PT-Astra-Sans │ ├── OFL.txt │ ├── pt-astra-sans_bold-italic.ttf │ ├── pt-astra-sans_bold.ttf │ ├── pt-astra-sans_italic.ttf │ └── pt-astra-sans_regular.ttf │ ├── PT-Astra-Serif │ ├── OFL.txt │ ├── pt-astra-serif_bold-italic.ttf │ ├── pt-astra-serif_bold.ttf │ ├── pt-astra-serif_italic.ttf │ └── pt-astra-serif_regular.ttf │ └── Roboto_Mono │ ├── LICENSE.txt │ ├── RobotoMono-Bold.ttf │ ├── RobotoMono-BoldItalic.ttf │ ├── RobotoMono-Italic.ttf │ ├── RobotoMono-Light.ttf │ ├── RobotoMono-LightItalic.ttf │ ├── RobotoMono-Medium.ttf │ ├── RobotoMono-MediumItalic.ttf │ ├── RobotoMono-Regular.ttf │ ├── RobotoMono-Thin.ttf │ └── RobotoMono-ThinItalic.ttf ├── process-scripts.sh ├── prologue ├── architecture.xml ├── audience.xml ├── bookinfo.xml ├── dedication.xml ├── errata.xml ├── foreword.xml ├── organization.xml ├── preface.xml ├── prerequisites.xml ├── standards.xml ├── typography.xml └── why.xml ├── stylesheets ├── dump-commands.xsl ├── lfs-chunked.xsl ├── lfs-nochunks.xsl ├── lfs-pdf.xsl ├── lfs-xsl │ ├── chunk-master.xsl │ ├── chunk-slave.xsl │ ├── chunkfast.xsl │ ├── common.xsl │ ├── lfs-l10n.xml │ ├── lfs-print.css │ ├── lfs.css │ ├── lfs.css.new │ ├── nochunks.xsl │ ├── pdf.xsl │ ├── pdf │ │ ├── lfs-admon.xsl │ │ ├── lfs-index.xsl │ │ ├── lfs-lists.xsl │ │ ├── lfs-mixed.xsl │ │ ├── lfs-pagesetup.xsl │ │ └── lfs-xref.xsl │ ├── profile.xsl │ └── xhtml │ │ ├── lfs-admon.xsl │ │ ├── lfs-index.xsl │ │ ├── lfs-legalnotice.xsl │ │ ├── lfs-mixed.xsl │ │ ├── lfs-navigational.xsl │ │ ├── lfs-sections.xsl │ │ ├── lfs-titles.xsl │ │ ├── lfs-toc.xsl │ │ └── lfs-xref.xsl ├── md5sum.xsl ├── patcheslist.xsl └── wget-list.xsl ├── tidy.conf └── udev-lfs ├── 55-lfs.rules ├── 55-lfs.txt ├── ChangeLog ├── Makefile.lfs ├── README ├── contrib └── debian │ ├── 81-cdrom.rules │ ├── 83-cdrom-symlinks.rules │ └── write_cd_aliases ├── init-net-rules.sh ├── rule_generator.functions ├── write_cd_rules └── write_net_rules /.gitignore: -------------------------------------------------------------------------------- 1 | lfs-bootscripts-*.tar.xz 2 | lfs-*.tar.xz 3 | conditional.ent 4 | version.ent 5 | appendices/*.script 6 | *.swp 7 | fop.log 8 | -------------------------------------------------------------------------------- /ABOUT.md: -------------------------------------------------------------------------------- 1 | # LFS-RU 2 | ## Перевод книги Linux From Scratch на русский язык 3 | 4 | ## История изменений 5 | ### 01.03.2024 6 | - Сделан перевод книги LFS 12.1 7 | 8 | ### 10.10.2023 9 | - Запущен [репозиторий](https://repo.linuxfromscratch.ru) исходного кода пакетов LFS 10 | 11 | ### 04.10.2023 12 | - Сделаны первые сборки книги LFS 12.0-multilib в форматах html и pdf 13 | 14 | ### 02.09.2023 15 | - Сделан перевод книги LFS 12.0 16 | 17 | ### 01.08.2023 18 | - Сделан перевод книги LFS 11.3 19 | 20 | ### 15.06.2023 21 | - Сделан перевод книги LFS 11.2 22 | 23 | ### 25.05.2023 24 | - Сделаны первые сборки книги LFS 11.2 в форматах html и pdf 25 | 26 | ### 12.03.2023 27 | - Запущена страница переводов LFS на русский язык [book.linuxfromscratch.ru](https://book.linuxfromscratch.ru) 28 | 29 | ### 10.05.2022 30 | - Запущено зеркало сайта [LFS](http://www.linuxfromscratch.org) в России [mirror.linuxfromscratch.ru](https://mirror.linuxfromscratch.ru) 31 | 32 | ### 03.03.2022 33 | - Запущен сайт о проекте LFS на русском [linuxfromscratch.ru](https://linuxfromscratch.ru) 34 | -------------------------------------------------------------------------------- /INSTALL.md: -------------------------------------------------------------------------------- 1 | Инструкции по конвертации книги LFS в другие форматы 2 | 3 | После того, как был загружен исходный код этой книги, необходимо настроить 4 | программное обеспечение, для того, чтобы вы могли выполнить конвертацию 5 | исходного кода в формате XML в другой формат, например - в HTML, TXT или PDF. 6 | 7 | Нет необходимости изучать этот документ, если Вас интересует только изменение 8 | исходного кода XML и отправка его фрагментов в списки рассылок lfs-book или 9 | lfs-dev. Вместо этого, Вам следует прочитать руководство редактора LFS. 10 | Посетите официальный сайт LFS http://www.linuxfromscratch.org, или одно из 11 | зеркал, для получения дополнительной информации. 12 | 13 | ------------------------------------------------------------------------------- 14 | 15 | Если необходимо выполнить конвертацию книги из XML в HTML, установите 16 | следующие пакеты: 17 | 18 | * libxml2 19 | - https://www.linuxfromscratch.org/blfs/view/svn/general/libxml2.html 20 | 21 | * libxslt 22 | - https://www.linuxfromscratch.org/blfs/view/svn/general/libxslt.html 23 | 24 | * DocBook 4.5 XML DTD 25 | - https://www.linuxfromscratch.org/blfs/view/svn/pst/docbook.html 26 | 27 | * DocBook XSL Stylesheets 28 | - https://www.linuxfromscratch.org/blfs/view/svn/pst/docbook-xsl.html 29 | 30 | * HTMLTidy 31 | - https://www.linuxfromscratch.org/blfs/view/svn/general/tidy-html5.html 32 | 33 | ------------------------------------------------------------------------------- 34 | 35 | Если необходимо выполнить конвертацию книги из XML в TXT, установите 36 | перечисленные выше пакеты, а затем установите следующие: 37 | 38 | * lynx 39 | - https://www.linuxfromscratch.org/blfs/view/svn/basicnet/lynx.html 40 | 41 | ------------------------------------------------------------------------------- 42 | 43 | Если необходимо выполнить конвертацию книги из XML в PDF, установите 44 | перечисленные выше пакеты (кроме lynx), а затем установите следующие: 45 | 46 | * JDK 47 | - https://www.linuxfromscratch.org/blfs/view/svn/general/openjdk.html 48 | 49 | * FOP and JAI 50 | - https://www.linuxfromscratch.org/blfs/view/svn/pst/fop.html 51 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2022 Vladimir 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | LFS Book README 2 | 3 | В этом документе содержится информация о том, как выполнить преобразование 4 | книги из XML формата в другой формат (например, HTML, PDF, PS и TXT). Для 5 | начала, если вы ещё этого не сделали, пожалуйста, откройте и прочитайте 6 | информацию, представленную в файле INSTALL, чтобы установить необходимое 7 | программное обеспечение. Если вы уже выполнили все шаги в файле INSTALL, 8 | ознакомьтесь с примерами того, как выполнить преобразование файлов в другие 9 | форматы. 10 | 11 | Во всех примерах необходимо указание аргумента REV=systemd, если требуется 12 | сборка редакции systemd. 13 | 14 | XML в XHTML: 15 | ------------- 16 | make BASEDIR=/path/to/output/location 17 | 18 | 19 | XML в одностраничный XHTML (nochunks): 20 | ------------------------------------ 21 | make BASEDIR=/path/to/output/location nochunks 22 | 23 | 24 | XML в TXT: 25 | ---------- 26 | Следуйте инструкциям для nochunks и затем запустите: 27 | lynx -dump /path/to/nochunks > /path/to/output 28 | 29 | 30 | XML в PDF: 31 | ----------- 32 | make BASEDIR=/path/to/output/location pdf 33 | 34 | 35 | Сделать сборку всех версий (TXT по умолчанию не создается): 36 | ----------- 37 | make BASEDIR=/path/to/output/location all 38 | -------------------------------------------------------------------------------- /appendices/license.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | %general-entities; 6 | ]> 7 | 8 | 9 | 10 | 11 | 12 | Лицензии LFS 13 | 14 | Настоящая книга распространяется на условиях лицензии Creative Commons 15 | Attribution-NonCommercial-ShareAlike 2.0 License. 16 | 17 | Инструкции, предназначенные для использования на компьютере, могут 18 | использоваться отдельно от книги на условиях лицензии MIT. 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /appendices/mit-lic.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | %general-entities; 6 | ]> 7 | 8 | 9 | 10 | 11 | Лицензия MIT 12 | 13 | Copyright © ©rightdate; Gerard Beekmans 14 | 15 | Permission is hereby granted, free of charge, to any person obtaining a copy 16 | of this software and associated documentation files (the "Software"), to deal 17 | in the Software without restriction, including without limitation the rights 18 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 19 | copies of the Software, and to permit persons to whom the Software is 20 | furnished to do so, subject to the following conditions: 21 | 22 | The above copyright notice and this permission notice shall be included in 23 | all copies or substantial portions of the Software. 24 | 25 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 26 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 27 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 28 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 29 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 30 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 31 | THE SOFTWARE. 32 | 33 | 34 | -------------------------------------------------------------------------------- /appendices/udev-rules.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | %general-entities; 7 | ]> 8 | 9 | 10 | 11 | 12 | 13 | Правила настройки Udev 14 | 15 | Правила в этом приложении перечислены для удобства. Установка 16 | обычно выполняются с помощью инструкций приведенных в . 17 | 18 | 19 | 55-lfs.rules 20 | &lfs-rules; 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /aux-file-data.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | if [ $# -lt 1 ] ; then 4 | echo "This script needs the location of the xml file to update" 5 | exit 1 6 | fi 7 | 8 | FILE=$1 9 | 10 | ./make-aux-files.sh 11 | 12 | # Bootscript data 13 | bootscripts=$(ls lfs-bootscripts*.xz) 14 | base=$(basename $bootscripts .tar.xz) 15 | bootsize=$(ls -l --block-size=1024 $bootscripts | cut -f5 -d" ") 16 | bootmd5=$(md5sum $bootscripts | cut -f1 -d" ") 17 | 18 | # Figure installed size of bootscripts 19 | TOPDIR=$(pwd) 20 | TMP_DIR=$(mktemp -d /tmp/lfsbootfiles.XXXXXX) 21 | pushd $TMP_DIR > /dev/null 22 | tar -xf $TOPDIR/$bootscripts 23 | bootinstallsize=$(du -sk $TMP_DIR | cut -f1) 24 | popd > /dev/null 25 | rm -rf $TMP_DIR 26 | 27 | sed -i -e s/BOOTSCRIPTS-SIZE/$bootsize/ \ 28 | -e s/BOOTSCRIPTS-INSTALL-KB/$bootinstallsize/ \ 29 | -e s/BOOTSCRIPTS-MD5SUM/$bootmd5/ $FILE 30 | 31 | -------------------------------------------------------------------------------- /bootscripts/ChangeLog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Poltern/lfs-ru/07d6d16cf47786f3e21d075d9defab577481b28f/bootscripts/ChangeLog -------------------------------------------------------------------------------- /bootscripts/README: -------------------------------------------------------------------------------- 1 | Network Configuration: 2 | Script Files: 3 | /etc/rc.d/init.d/* 4 | /sbin/ifup 5 | /sbin/ifdown 6 | /lib/lsb/* 7 | 8 | Configuration Files: 9 | /etc/sysconfig/ifconfig.* 10 | Note: ifconfig.* files will be processed 11 | in alphanumerical order on boot, and reversed on shutdown. 12 | - IFACE : The interface that is being configured (e.g. eth0) 13 | - SERVICE: Which script to run in services directory. 14 | - ONBOOT : If set to yes, this interface will be started on bootup 15 | 16 | /etc/sysconfig/network 17 | - HOSTNAME: Value of the system's hostname (From LFS Book) 18 | This value may also be set in /etc/sysconfig/rc.site 19 | 20 | Additional Configuration: 21 | SERVICE ipv4-static: 22 | - IP : Static IP Address 23 | - GATEWAY : Specifies the IP Address of the gateway server 24 | - PREFIX : CIDR prefix of IP Address, defaults to 24 if not set 25 | - PEER : IP Address of peer (for point-to-point connections and tunnels) 26 | - BROADCAST: Broadcast address 27 | 28 | SERVICE ipv4-static-route: 29 | - TYPE : network (default type if not specified), default, host or unreachable 30 | - IP : IP Address of target (for network, host and unreachable) 31 | - PREFIX : CIDR prefix of target (for network, host and unreachable) 32 | - GATEWAY: IP Address of gateway to reach target (for network and default) 33 | 34 | 35 | SetClock configuration: 36 | 37 | Configuration Files: 38 | /etc/sysconfig/clock or /etc/sysconfig/rc.site 39 | - UTC: 1 assumes hwclock is in UTC 40 | 0 assumes hwclock is in local time 41 | - CLOCKPARAMS: any additional options to be passed to hwclock 42 | 43 | CleanFS configuration: 44 | Script Files: 45 | /etc/rc.d/init.d/cleanfs 46 | 47 | Configuration Files: 48 | /etc/sysconfig/rc.site 49 | - SKIPTMPCLEAN: skips cleaning of /tmp directory 50 | 51 | /etc/sysconfig/createfiles 52 | Each line is parsed, using space as a deliminator. 53 | [NAME] [TYPE] [PERMISSIONS] [USER] [GROUP] 54 | The below fields are currently only used on dev type. 55 | ([DEV TYPE] [MAJOR#] [MINOR#]) 56 | Name: 57 | File/Directory/Device name 58 | Type: 59 | dir: creates a directory 60 | file: creates a file 61 | dev: creates a device 62 | Permissions: 63 | chmod the created file 64 | User/Group: 65 | chown the created file/dir to this user/group 66 | Dev Type: 67 | char: character [needs MAJOR#, MINOR#] 68 | block: block [needs MAJOR#, MINOR#] 69 | pipe: pipe 70 | Major#: 71 | Used by character and block devices. 72 | Minor#: 73 | Used by character and block devices. 74 | 75 | -------------------------------------------------------------------------------- /bootscripts/lfs/init.d/halt: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | ######################################################################## 3 | # Begin halt 4 | # 5 | # Description : Halt Script 6 | # 7 | # Authors : Gerard Beekmans - gerard@linuxfromscratch.org 8 | # DJ Lucas - dj@linuxfromscratch.org 9 | # Update : Bruce Dubbs - bdubbs@linuxfromscratch.org 10 | # : Pierre Labastie - pierre@linuxfromscratch.org 11 | # 12 | # Version : LFS 7.0 13 | # 14 | # Notes : Update March 24th, 2022: change "stop" to "start". 15 | # Add the $last facility to Required-start 16 | # 17 | ######################################################################## 18 | 19 | ### BEGIN INIT INFO 20 | # Provides: halt 21 | # Required-Start: $last 22 | # Should-Start: 23 | # Required-Stop: 24 | # Should-Stop: 25 | # Default-Start: 0 26 | # Default-Stop: 27 | # Short-Description: Halts the system. 28 | # Description: Halts the System. 29 | # X-LFS-Provided-By: LFS 30 | ### END INIT INFO 31 | 32 | case "${1}" in 33 | start) 34 | halt -d -f -i -p 35 | ;; 36 | 37 | *) 38 | echo "Usage: {start}" 39 | exit 1 40 | ;; 41 | esac 42 | 43 | # End halt 44 | -------------------------------------------------------------------------------- /bootscripts/lfs/init.d/localnet: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | ######################################################################## 3 | # Begin localnet 4 | # 5 | # Description : Loopback device 6 | # 7 | # Authors : Gerard Beekmans - gerard@linuxfromscratch.org 8 | # DJ Lucas - dj@linuxfromscratch.org 9 | # Update : Bruce Dubbs - bdubbs@linuxfromscratch.org 10 | # 11 | # Version : LFS 7.0 12 | # 13 | ######################################################################## 14 | 15 | ### BEGIN INIT INFO 16 | # Provides: localnet 17 | # Required-Start: mountvirtfs 18 | # Should-Start: modules 19 | # Required-Stop: 20 | # Should-Stop: 21 | # Default-Start: S 22 | # Default-Stop: 0 6 23 | # Short-Description: Starts the local network. 24 | # Description: Sets the hostname of the machine and starts the 25 | # loopback interface. 26 | # X-LFS-Provided-By: LFS 27 | ### END INIT INFO 28 | 29 | . /lib/lsb/init-functions 30 | [ -r /etc/sysconfig/network ] && . /etc/sysconfig/network 31 | [ -r /etc/hostname ] && HOSTNAME=`cat /etc/hostname` 32 | 33 | case "${1}" in 34 | start) 35 | log_info_msg "Bringing up the loopback interface..." 36 | ip addr add 127.0.0.1/8 label lo dev lo 37 | ip link set lo up 38 | evaluate_retval 39 | 40 | log_info_msg "Setting hostname to ${HOSTNAME}..." 41 | hostname ${HOSTNAME} 42 | evaluate_retval 43 | ;; 44 | 45 | stop) 46 | log_info_msg "Bringing down the loopback interface..." 47 | ip link set lo down 48 | evaluate_retval 49 | ;; 50 | 51 | restart) 52 | ${0} stop 53 | sleep 1 54 | ${0} start 55 | ;; 56 | 57 | status) 58 | echo "Hostname is: $(hostname)" 59 | ip link show lo 60 | ;; 61 | 62 | *) 63 | echo "Usage: ${0} {start|stop|restart|status}" 64 | exit 1 65 | ;; 66 | esac 67 | 68 | exit 0 69 | 70 | # End localnet 71 | -------------------------------------------------------------------------------- /bootscripts/lfs/init.d/modules: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | ######################################################################## 3 | # Begin modules 4 | # 5 | # Description : Module auto-loading script 6 | # 7 | # Authors : Zack Winkles 8 | # DJ Lucas - dj@linuxfromscratch.org 9 | # Update : Bruce Dubbs - bdubbs@linuxfromscratch.org 10 | # 11 | # Version : LFS 7.0 12 | # 13 | ######################################################################## 14 | 15 | ### BEGIN INIT INFO 16 | # Provides: modules 17 | # Required-Start: mountvirtfs 18 | # Should-Start: 19 | # Required-Stop: 20 | # Should-Stop: 21 | # Default-Start: S 22 | # Default-Stop: 23 | # Short-Description: Loads required modules. 24 | # Description: Loads modules listed in /etc/sysconfig/modules. 25 | # X-LFS-Provided-By: LFS 26 | ### END INIT INFO 27 | 28 | # Assure that the kernel has module support. 29 | [ -e /proc/modules ] || exit 0 30 | 31 | . /lib/lsb/init-functions 32 | 33 | case "${1}" in 34 | start) 35 | # Exit if there's no modules file or there are no 36 | # valid entries 37 | [ -r /etc/sysconfig/modules ] || exit 0 38 | grep -E -qv '^($|#)' /etc/sysconfig/modules || exit 0 39 | 40 | log_info_msg "Loading modules:" 41 | 42 | # Only try to load modules if the user has actually given us 43 | # some modules to load. 44 | 45 | while read module args; do 46 | 47 | # Ignore comments and blank lines. 48 | case "$module" in 49 | ""|"#"*) continue ;; 50 | esac 51 | 52 | # Attempt to load the module, passing any arguments provided. 53 | modprobe ${module} ${args} >/dev/null 54 | 55 | # Print the module name if successful, otherwise take note. 56 | if [ $? -eq 0 ]; then 57 | log_info_msg2 " ${module}" 58 | else 59 | failedmod="${failedmod} ${module}" 60 | fi 61 | done < /etc/sysconfig/modules 62 | 63 | # Print a message about successfully loaded modules on the correct line. 64 | log_success_msg2 65 | 66 | # Print a failure message with a list of any modules that 67 | # may have failed to load. 68 | if [ -n "${failedmod}" ]; then 69 | log_failure_msg "Failed to load modules:${failedmod}" 70 | exit 1 71 | fi 72 | ;; 73 | 74 | *) 75 | echo "Usage: ${0} {start}" 76 | exit 1 77 | ;; 78 | esac 79 | 80 | exit 0 81 | 82 | # End modules 83 | -------------------------------------------------------------------------------- /bootscripts/lfs/init.d/mountfs: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | ######################################################################## 3 | # Begin mountfs 4 | # 5 | # Description : File System Mount Script 6 | # 7 | # Authors : Gerard Beekmans - gerard@linuxfromscratch.org 8 | # DJ Lucas - dj@linuxfromscratch.org 9 | # Update : Bruce Dubbs - bdubbs@linuxfromscratch.org 10 | # 11 | # Version : LFS 7.0 12 | # 13 | ######################################################################## 14 | 15 | ### BEGIN INIT INFO 16 | # Provides: $local_fs 17 | # Required-Start: udev checkfs 18 | # Should-Start: modules 19 | # Required-Stop: localnet 20 | # Should-Stop: 21 | # Default-Start: S 22 | # Default-Stop: 0 6 23 | # Short-Description: Mounts/unmounts local filesystems defined in /etc/fstab. 24 | # Description: Remounts root filesystem read/write and mounts all 25 | # remaining local filesystems defined in /etc/fstab on 26 | # start. Remounts root filesystem read-only and unmounts 27 | # remaining filesystems on stop. 28 | # X-LFS-Provided-By: LFS 29 | ### END INIT INFO 30 | 31 | . /lib/lsb/init-functions 32 | 33 | case "${1}" in 34 | start) 35 | log_info_msg "Remounting root file system in read-write mode..." 36 | mount --options remount,rw / >/dev/null 37 | evaluate_retval 38 | 39 | # Remove fsck-related file system watermarks. 40 | rm -f /fastboot /forcefsck 41 | 42 | # Make sure /dev/pts exists 43 | mkdir -p /dev/pts 44 | 45 | # This will mount all filesystems that do not have _netdev in 46 | # their option list. _netdev denotes a network filesystem. 47 | 48 | log_info_msg "Mounting remaining file systems..." 49 | failed=0 50 | mount --all --test-opts no_netdev >/dev/null || failed=1 51 | evaluate_retval 52 | exit $failed 53 | ;; 54 | 55 | stop) 56 | # Don't unmount virtual file systems like /run 57 | log_info_msg "Unmounting all other currently mounted file systems..." 58 | # Ensure any loop devices are removed 59 | losetup -D 60 | umount --all --detach-loop --read-only \ 61 | --types notmpfs,nosysfs,nodevtmpfs,noproc,nodevpts >/dev/null 62 | evaluate_retval 63 | 64 | # Make sure / is mounted read only (umount bug) 65 | mount --options remount,ro / 66 | 67 | # Make all LVM volume groups unavailable, if appropriate 68 | # This fails if swap or / are on an LVM partition 69 | #if [ -x /sbin/vgchange ]; then /sbin/vgchange -an > /dev/null; fi 70 | if [ -r /etc/mdadm.conf ]; then 71 | log_info_msg "Mark arrays as clean..." 72 | mdadm --wait-clean --scan 73 | evaluate_retval 74 | fi 75 | ;; 76 | 77 | *) 78 | echo "Usage: ${0} {start|stop}" 79 | exit 1 80 | ;; 81 | esac 82 | 83 | # End mountfs 84 | -------------------------------------------------------------------------------- /bootscripts/lfs/init.d/network: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | ######################################################################## 3 | # Begin network 4 | # 5 | # Description : Network Control Script 6 | # 7 | # Authors : Gerard Beekmans - gerard@linuxfromscratch.org 8 | # Nathan Coulson - nathan@linuxfromscratch.org 9 | # Kevin P. Fleming - kpfleming@linuxfromscratch.org 10 | # DJ Lucas - dj@linuxfromscratch.org 11 | # Update : Bruce Dubbs - bdubbs@linuxfromscratch.org 12 | # 13 | # Version : LFS 7.0 14 | # 15 | ######################################################################## 16 | 17 | ### BEGIN INIT INFO 18 | # Provides: $network 19 | # Required-Start: $local_fs localnet swap 20 | # Should-Start: $syslog firewalld iptables nftables 21 | # Required-Stop: $local_fs localnet swap 22 | # Should-Stop: $syslog firewalld iptables nftables 23 | # Default-Start: 2 3 4 5 24 | # Default-Stop: 0 1 6 25 | # Short-Description: Starts and configures network interfaces. 26 | # Description: Starts and configures network interfaces. 27 | # X-LFS-Provided-By: LFS 28 | ### END INIT INFO 29 | 30 | case "${1}" in 31 | start) 32 | # if the default route exists, network is already configured 33 | if ip route | grep -q "^default"; then return 0; fi 34 | # Start all network interfaces 35 | for file in /etc/sysconfig/ifconfig.* 36 | do 37 | interface=${file##*/ifconfig.} 38 | 39 | # Skip if $file is * (because nothing was found) 40 | if [ "${interface}" = "*" ]; then continue; fi 41 | 42 | /sbin/ifup ${interface} 43 | done 44 | ;; 45 | 46 | stop) 47 | # Unmount any network mounted file systems 48 | umount --all --force --types nfs,cifs,nfs4 49 | 50 | # Reverse list 51 | net_files="" 52 | for file in /etc/sysconfig/ifconfig.* 53 | do 54 | net_files="${file} ${net_files}" 55 | done 56 | 57 | # Stop all network interfaces 58 | for file in ${net_files} 59 | do 60 | interface=${file##*/ifconfig.} 61 | 62 | # Skip if $file is * (because nothing was found) 63 | if [ "${interface}" = "*" ]; then continue; fi 64 | 65 | # See if interface exists 66 | if [ ! -e /sys/class/net/$interface ]; then continue; fi 67 | 68 | # Is interface UP? 69 | ip link show $interface 2>/dev/null | grep -q "state UP" 70 | if [ $? -ne 0 ]; then continue; fi 71 | 72 | /sbin/ifdown ${interface} 73 | done 74 | ;; 75 | 76 | restart) 77 | ${0} stop 78 | sleep 1 79 | ${0} start 80 | ;; 81 | 82 | *) 83 | echo "Usage: ${0} {start|stop|restart}" 84 | exit 1 85 | ;; 86 | esac 87 | 88 | exit 0 89 | 90 | # End network 91 | -------------------------------------------------------------------------------- /bootscripts/lfs/init.d/reboot: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | ######################################################################## 3 | # Begin reboot 4 | # 5 | # Description : Reboot Scripts 6 | # 7 | # Authors : Gerard Beekmans - gerard@linuxfromscratch.org 8 | # DJ Lucas - dj@linuxfromscratch.org 9 | # Updates : Bruce Dubbs - bdubbs@linuxfromscratch.org 10 | # : Pierre Labastie - pierre@linuxfromscratch.org 11 | # 12 | # Version : LFS 7.0 13 | # 14 | # Notes : Update March 24th, 2022: change "stop" to "start". 15 | # Add the $last facility to Required-start 16 | # 17 | ######################################################################## 18 | 19 | ### BEGIN INIT INFO 20 | # Provides: reboot 21 | # Required-Start: $last 22 | # Should-Start: 23 | # Required-Stop: 24 | # Should-Stop: 25 | # Default-Start: 6 26 | # Default-Stop: 27 | # Short-Description: Reboots the system. 28 | # Description: Reboots the System. 29 | # X-LFS-Provided-By: LFS 30 | ### END INIT INFO 31 | 32 | . /lib/lsb/init-functions 33 | 34 | case "${1}" in 35 | start) 36 | log_info_msg "Restarting system..." 37 | reboot -d -f -i 38 | ;; 39 | 40 | *) 41 | echo "Usage: ${0} {start}" 42 | exit 1 43 | ;; 44 | 45 | esac 46 | 47 | # End reboot 48 | -------------------------------------------------------------------------------- /bootscripts/lfs/init.d/sendsignals: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | ######################################################################## 3 | # Begin sendsignals 4 | # 5 | # Description : Sendsignals Script 6 | # 7 | # Authors : Gerard Beekmans - gerard@linuxfromscratch.org 8 | # DJ Lucas - dj@linuxfromscratch.org 9 | # Update : Bruce Dubbs - bdubbs@linuxfromscratch.org 10 | # 11 | # Version : LFS 7.0 12 | # 13 | ######################################################################## 14 | 15 | ### BEGIN INIT INFO 16 | # Provides: sendsignals 17 | # Required-Start: 18 | # Should-Start: 19 | # Required-Stop: $local_fs swap localnet 20 | # Should-Stop: 21 | # Default-Start: 22 | # Default-Stop: 0 6 23 | # Short-Description: Attempts to kill remaining processes. 24 | # Description: Attempts to kill remaining processes. 25 | # X-LFS-Provided-By: LFS 26 | ### END INIT INFO 27 | 28 | . /lib/lsb/init-functions 29 | 30 | case "${1}" in 31 | stop) 32 | omit=$(pidof mdmon) 33 | [ -n "$omit" ] && omit="-o $omit" 34 | 35 | log_info_msg "Sending all processes the TERM signal..." 36 | killall5 -15 $omit 37 | error_value=${?} 38 | 39 | sleep ${KILLDELAY} 40 | 41 | if [ "${error_value}" = 0 -o "${error_value}" = 2 ]; then 42 | log_success_msg 43 | else 44 | log_failure_msg 45 | fi 46 | 47 | log_info_msg "Sending all processes the KILL signal..." 48 | killall5 -9 $omit 49 | error_value=${?} 50 | 51 | sleep ${KILLDELAY} 52 | 53 | if [ "${error_value}" = 0 -o "${error_value}" = 2 ]; then 54 | log_success_msg 55 | else 56 | log_failure_msg 57 | fi 58 | ;; 59 | 60 | *) 61 | echo "Usage: ${0} {stop}" 62 | exit 1 63 | ;; 64 | 65 | esac 66 | 67 | exit 0 68 | 69 | # End sendsignals 70 | -------------------------------------------------------------------------------- /bootscripts/lfs/init.d/setclock: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | ######################################################################## 3 | # Begin setclock 4 | # 5 | # Description : Setting Linux Clock 6 | # 7 | # Authors : Gerard Beekmans - gerard@linuxfromscratch.org 8 | # DJ Lucas - dj@linuxfromscratch.org 9 | # Update : Bruce Dubbs - bdubbs@linuxfromscratch.org 10 | # 11 | # Version : LFS 7.0 12 | # 13 | ######################################################################## 14 | 15 | ### BEGIN INIT INFO 16 | # Provides: 17 | # Required-Start: 18 | # Should-Start: modules 19 | # Required-Stop: 20 | # Should-Stop: $syslog 21 | # Default-Start: S 22 | # Default-Stop: 23 | # Short-Description: Stores and restores time from the hardware clock 24 | # Description: On boot, system time is obtained from hwclock. The 25 | # hardware clock can also be set on shutdown. 26 | # X-LFS-Provided-By: LFS 27 | ### END INIT INFO 28 | 29 | . /lib/lsb/init-functions 30 | 31 | [ -r /etc/sysconfig/clock ] && . /etc/sysconfig/clock 32 | 33 | 34 | case "${UTC}" in 35 | yes|true|1) 36 | CLOCKPARAMS="${CLOCKPARAMS} --utc" 37 | ;; 38 | 39 | no|false|0) 40 | CLOCKPARAMS="${CLOCKPARAMS} --localtime" 41 | ;; 42 | 43 | esac 44 | 45 | case ${1} in 46 | start) 47 | hwclock --hctosys ${CLOCKPARAMS} >/dev/null 48 | ;; 49 | 50 | stop) 51 | log_info_msg "Setting hardware clock..." 52 | hwclock --systohc ${CLOCKPARAMS} >/dev/null 53 | evaluate_retval 54 | ;; 55 | 56 | *) 57 | echo "Usage: ${0} {start|stop}" 58 | exit 1 59 | ;; 60 | 61 | esac 62 | 63 | exit 0 64 | -------------------------------------------------------------------------------- /bootscripts/lfs/init.d/swap: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | ######################################################################## 3 | # Begin swap 4 | # 5 | # Description : Swap Control Script 6 | # 7 | # Authors : Gerard Beekmans - gerard@linuxfromscratch.org 8 | # DJ Lucas - dj@linuxfromscratch.org 9 | # Update : Bruce Dubbs - bdubbs@linuxfromscratch.org 10 | # 11 | # Version : LFS 7.0 12 | # 13 | ######################################################################## 14 | 15 | ### BEGIN INIT INFO 16 | # Provides: swap 17 | # Required-Start: udev 18 | # Should-Start: modules 19 | # Required-Stop: localnet 20 | # Should-Stop: $local_fs 21 | # Default-Start: S 22 | # Default-Stop: 0 6 23 | # Short-Description: Activates and deactivates swap partitions. 24 | # Description: Activates and deactivates swap partitions defined in 25 | # /etc/fstab. 26 | # X-LFS-Provided-By: LFS 27 | ### END INIT INFO 28 | 29 | . /lib/lsb/init-functions 30 | 31 | case "${1}" in 32 | start) 33 | log_info_msg "Activating all swap files/partitions..." 34 | swapon -a 35 | evaluate_retval 36 | ;; 37 | 38 | stop) 39 | log_info_msg "Deactivating all swap files/partitions..." 40 | swapoff -a 41 | evaluate_retval 42 | ;; 43 | 44 | restart) 45 | ${0} stop 46 | sleep 1 47 | ${0} start 48 | ;; 49 | 50 | status) 51 | log_success_msg "Retrieving swap status." 52 | swapon -s 53 | ;; 54 | 55 | *) 56 | echo "Usage: ${0} {start|stop|restart|status}" 57 | exit 1 58 | ;; 59 | esac 60 | 61 | exit 0 62 | 63 | # End swap 64 | -------------------------------------------------------------------------------- /bootscripts/lfs/init.d/sysctl: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | ######################################################################## 3 | # Begin sysctl 4 | # 5 | # Description : File uses /etc/sysctl.conf to set kernel runtime 6 | # parameters 7 | # 8 | # Authors : Nathan Coulson (nathan@linuxfromscratch.org) 9 | # Matthew Burgress (matthew@linuxfromscratch.org) 10 | # DJ Lucas - dj@linuxfromscratch.org 11 | # Update : Bruce Dubbs - bdubbs@linuxfromscratch.org 12 | # 13 | # Version : LFS 7.0 14 | # 15 | ######################################################################## 16 | 17 | ### BEGIN INIT INFO 18 | # Provides: sysctl 19 | # Required-Start: mountvirtfs 20 | # Should-Start: console 21 | # Required-Stop: 22 | # Should-Stop: 23 | # Default-Start: S 24 | # Default-Stop: 25 | # Short-Description: Makes changes to the proc filesystem 26 | # Description: Makes changes to the proc filesystem as defined in 27 | # /etc/sysctl.conf. See 'man sysctl(8)'. 28 | # X-LFS-Provided-By: LFS 29 | ### END INIT INFO 30 | 31 | . /lib/lsb/init-functions 32 | 33 | case "${1}" in 34 | start) 35 | if [ -f "/etc/sysctl.conf" ]; then 36 | log_info_msg "Setting kernel runtime parameters..." 37 | sysctl -q -p 38 | evaluate_retval 39 | fi 40 | ;; 41 | 42 | status) 43 | sysctl -a 44 | ;; 45 | 46 | *) 47 | echo "Usage: ${0} {start|status}" 48 | exit 1 49 | ;; 50 | esac 51 | 52 | exit 0 53 | 54 | # End sysctl 55 | -------------------------------------------------------------------------------- /bootscripts/lfs/init.d/sysklogd: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | ######################################################################## 3 | # Begin sysklogd 4 | # 5 | # Description : Sysklogd loader 6 | # 7 | # Authors : Gerard Beekmans - gerard@linuxfromscratch.org 8 | # DJ Lucas - dj@linuxfromscratch.org 9 | # Update : Bruce Dubbs - bdubbs@linuxfromscratch.org 10 | # Update : Bruce Dubbs - bdubbs@linuxfromscratch.org LFS12.1 11 | # Remove kernel log daemon. The functionality has been 12 | # merged with syslogd. 13 | # 14 | # Version : LFS 7.0 15 | # 16 | ######################################################################## 17 | 18 | ### BEGIN INIT INFO 19 | # Provides: $syslog 20 | # Required-Start: $first localnet 21 | # Should-Start: 22 | # Required-Stop: $local_fs 23 | # Should-Stop: sendsignals 24 | # Default-Start: 2 3 4 5 25 | # Default-Stop: 0 1 6 26 | # Short-Description: Starts system log daemon. 27 | # Description: Starts system log daemon. 28 | # /etc/fstab. 29 | # X-LFS-Provided-By: LFS 30 | ### END INIT INFO 31 | 32 | . /lib/lsb/init-functions 33 | 34 | case "${1}" in 35 | start) 36 | log_info_msg "Starting system log daemon..." 37 | parms=${SYSKLOGD_PARMS-'-m 0'} 38 | start_daemon /sbin/syslogd $parms 39 | evaluate_retval 40 | ;; 41 | 42 | stop) 43 | log_info_msg "Stopping system log daemon..." 44 | killproc /sbin/syslogd 45 | evaluate_retval 46 | ;; 47 | 48 | reload) 49 | log_info_msg "Reloading system log daemon config file..." 50 | pid=`pidofproc syslogd` 51 | kill -HUP "${pid}" 52 | evaluate_retval 53 | ;; 54 | 55 | restart) 56 | ${0} stop 57 | sleep 1 58 | ${0} start 59 | ;; 60 | 61 | status) 62 | statusproc /sbin/syslogd 63 | ;; 64 | 65 | *) 66 | echo "Usage: ${0} {start|stop|reload|restart|status}" 67 | exit 1 68 | ;; 69 | esac 70 | 71 | exit 0 72 | 73 | # End sysklogd 74 | -------------------------------------------------------------------------------- /bootscripts/lfs/init.d/template: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | ######################################################################## 3 | # Begin scriptname 4 | # 5 | # Description : 6 | # 7 | # Authors : 8 | # 9 | # Version : LFS x.x 10 | # 11 | # Notes : 12 | # 13 | ######################################################################## 14 | 15 | ### BEGIN INIT INFO 16 | # Provides: template 17 | # Required-Start: 18 | # Should-Start: 19 | # Required-Stop: 20 | # Should-Stop: 21 | # Default-Start: 22 | # Default-Stop: 23 | # Short-Description: 24 | # Description: 25 | # X-LFS-Provided-By: 26 | ### END INIT INFO 27 | 28 | . /lib/lsb/init-functions 29 | 30 | case "${1}" in 31 | start) 32 | log_info_msg "Starting..." 33 | # if it is possible to use start_daemon 34 | start_daemon fully_qualified_path 35 | # if it is not possible to use start_daemon 36 | # (command to start the daemon is not simple enough) 37 | if ! pidofproc daemon_name_as_reported_by_ps >/dev/null; then 38 | command_to_start_the_service 39 | fi 40 | evaluate_retval 41 | ;; 42 | 43 | stop) 44 | log_info_msg "Stopping..." 45 | # if it is possible to use killproc 46 | killproc fully_qualified_path 47 | # if it is not possible to use killproc 48 | # (the daemon shouldn't be stopped by killing it) 49 | if pidofproc daemon_name_as_reported_by_ps >/dev/null; then 50 | command_to_stop_the_service 51 | fi 52 | evaluate_retval 53 | ;; 54 | 55 | restart) 56 | ${0} stop 57 | sleep 1 58 | ${0} start 59 | ;; 60 | 61 | *) 62 | echo "Usage: ${0} {start|stop|restart}" 63 | exit 1 64 | ;; 65 | esac 66 | 67 | exit 0 68 | 69 | # End scriptname 70 | -------------------------------------------------------------------------------- /bootscripts/lfs/init.d/udev: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | ######################################################################## 3 | # Begin udev 4 | # 5 | # Description : Udev cold-plugging script 6 | # 7 | # Authors : Zack Winkles, Alexander E. Patrakov 8 | # DJ Lucas - dj@linuxfromscratch.org 9 | # Update : Bruce Dubbs - bdubbs@linuxfromscratch.org 10 | # Xi Ruoyao - xry111@xry111.site 11 | # 12 | # Version : LFS 12.0 13 | # 14 | ######################################################################## 15 | 16 | ### BEGIN INIT INFO 17 | # Provides: udev $time 18 | # Required-Start: localnet 19 | # Should-Start: modules 20 | # Required-Stop: 21 | # Should-Stop: 22 | # Default-Start: S 23 | # Default-Stop: 24 | # Short-Description: Populates /dev with device nodes. 25 | # Description: Mounts a tempfs on /dev and starts the udevd daemon. 26 | # Device nodes are created as defined by udev. 27 | # X-LFS-Provided-By: LFS 28 | ### END INIT INFO 29 | 30 | . /lib/lsb/init-functions 31 | 32 | case "${1}" in 33 | start) 34 | log_info_msg "Populating /dev with device nodes... " 35 | if ! grep -q '[[:space:]]sysfs' /proc/mounts; then 36 | log_failure_msg2 37 | msg="FAILURE:\n\nUnable to create " 38 | msg="${msg}devices without a SysFS filesystem\n\n" 39 | msg="${msg}After you press Enter, this system " 40 | msg="${msg}will be halted and powered off.\n\n" 41 | log_info_msg "$msg" 42 | log_info_msg "Press Enter to continue..." 43 | wait_for_user 44 | /etc/rc.d/init.d/halt start 45 | fi 46 | 47 | # Start the udev daemon to continually watch for, and act on, 48 | # uevents 49 | SYSTEMD_LOG_TARGET=kmsg /sbin/udevd --daemon 50 | 51 | # Now traverse /sys in order to "coldplug" devices that have 52 | # already been discovered 53 | /bin/udevadm trigger --action=add --type=subsystems 54 | /bin/udevadm trigger --action=add --type=devices 55 | /bin/udevadm trigger --action=change --type=devices 56 | 57 | # Now wait for udevd to process the uevents we triggered 58 | if ! is_true "$OMIT_UDEV_SETTLE"; then 59 | /bin/udevadm settle 60 | fi 61 | 62 | # If any LVM based partitions are on the system, ensure they 63 | # are activated so they can be used. 64 | if [ -x /sbin/vgchange ]; then /sbin/vgchange -a y >/dev/null; fi 65 | 66 | log_success_msg2 67 | ;; 68 | 69 | *) 70 | echo "Usage ${0} {start}" 71 | exit 1 72 | ;; 73 | esac 74 | 75 | exit 0 76 | 77 | # End udev 78 | -------------------------------------------------------------------------------- /bootscripts/lfs/init.d/udev_retry: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | ######################################################################## 3 | # Begin udev_retry 4 | # 5 | # Description : Udev cold-plugging script (retry) 6 | # 7 | # Authors : Alexander E. Patrakov 8 | # DJ Lucas - dj@linuxfromscratch.org 9 | # Update : Bruce Dubbs - bdubbs@linuxfromscratch.org 10 | # Bryan Kadzban - 11 | # 12 | # Version : LFS 7.0 13 | # 14 | ######################################################################## 15 | 16 | ### BEGIN INIT INFO 17 | # Provides: udev_retry 18 | # Required-Start: udev 19 | # Should-Start: $local_fs cleanfs 20 | # Required-Stop: 21 | # Should-Stop: 22 | # Default-Start: S 23 | # Default-Stop: 24 | # Short-Description: Replays failed uevents and creates additional devices. 25 | # Description: Replays any failed uevents that were skipped due to 26 | # slow hardware initialization, and creates those needed 27 | # device nodes 28 | # X-LFS-Provided-By: LFS 29 | ### END INIT INFO 30 | 31 | . /lib/lsb/init-functions 32 | 33 | case "${1}" in 34 | start) 35 | log_info_msg "Retrying failed uevents, if any..." 36 | 37 | rundir=/run/udev 38 | # From Debian: "copy the rules generated before / was mounted 39 | # read-write": 40 | 41 | for file in ${rundir}/tmp-rules--*; do 42 | dest=${file##*tmp-rules--} 43 | [ "$dest" = '*' ] && break 44 | cat $file >> /etc/udev/rules.d/$dest 45 | rm -f $file 46 | done 47 | 48 | # Re-trigger the uevents that may have failed, 49 | # in hope they will succeed now 50 | /bin/sed -e 's/#.*$//' /etc/sysconfig/udev_retry | /bin/grep -v '^$' | \ 51 | while read line ; do 52 | for subsystem in $line ; do 53 | /bin/udevadm trigger --subsystem-match=$subsystem --action=add 54 | done 55 | done 56 | 57 | # Now wait for udevd to process the uevents we triggered 58 | if ! is_true "$OMIT_UDEV_RETRY_SETTLE"; then 59 | /bin/udevadm settle 60 | fi 61 | 62 | evaluate_retval 63 | ;; 64 | 65 | *) 66 | echo "Usage ${0} {start}" 67 | exit 1 68 | ;; 69 | esac 70 | 71 | exit 0 72 | 73 | # End udev_retry 74 | -------------------------------------------------------------------------------- /bootscripts/lfs/lib/services/ipv4-static: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | ######################################################################## 3 | # Begin /lib/services/ipv4-static 4 | # 5 | # Description : IPV4 Static Boot Script 6 | # 7 | # Authors : Nathan Coulson - nathan@linuxfromscratch.org 8 | # Kevin P. Fleming - kpfleming@linuxfromscratch.org 9 | # Update : Bruce Dubbs - bdubbs@linuxfromscratch.org 10 | # 11 | # Version : LFS 7.0 12 | # 13 | ######################################################################## 14 | 15 | . /lib/lsb/init-functions 16 | . ${IFCONFIG} 17 | 18 | if [ -z "${IP}" ]; then 19 | log_failure_msg "\nIP variable missing from ${IFCONFIG}, cannot continue." 20 | exit 1 21 | fi 22 | 23 | if [ -z "${PREFIX}" -a -z "${PEER}" ]; then 24 | log_warning_msg "\nPREFIX variable missing from ${IFCONFIG}, assuming 24." 25 | PREFIX=24 26 | args="${args} ${IP}/${PREFIX}" 27 | 28 | elif [ -n "${PREFIX}" -a -n "${PEER}" ]; then 29 | log_failure_msg "\nPREFIX and PEER both specified in ${IFCONFIG}, cannot continue." 30 | exit 1 31 | 32 | elif [ -n "${PREFIX}" ]; then 33 | args="${args} ${IP}/${PREFIX}" 34 | 35 | elif [ -n "${PEER}" ]; then 36 | args="${args} ${IP} peer ${PEER}" 37 | fi 38 | 39 | if [ -n "${LABEL}" ]; then 40 | args="${args} label ${LABEL}" 41 | fi 42 | 43 | if [ -n "${BROADCAST}" ]; then 44 | args="${args} broadcast ${BROADCAST}" 45 | fi 46 | 47 | case "${2}" in 48 | up) 49 | if [ "$(ip addr show ${1} 2>/dev/null | grep ${IP}/)" = "" ]; then 50 | log_info_msg "Adding IPv4 address ${IP} to the ${1} interface..." 51 | ip addr add ${args} dev ${1} 52 | evaluate_retval 53 | else 54 | log_warning_msg "Cannot add IPv4 address ${IP} to ${1}. Already present." 55 | fi 56 | ;; 57 | 58 | down) 59 | if [ "$(ip addr show ${1} 2>/dev/null | grep ${IP}/)" != "" ]; then 60 | log_info_msg "Removing IPv4 address ${IP} from the ${1} interface..." 61 | ip addr del ${args} dev ${1} 62 | evaluate_retval 63 | fi 64 | 65 | if [ -n "${GATEWAY}" ]; then 66 | # Only remove the gateway if there are no remaining ipv4 addresses 67 | if [ "$(ip addr show ${1} 2>/dev/null | grep 'inet ')" != "" ]; then 68 | log_info_msg "Removing default gateway..." 69 | ip route del default 70 | evaluate_retval 71 | fi 72 | fi 73 | ;; 74 | 75 | *) 76 | echo "Usage: ${0} [interface] {up|down}" 77 | exit 1 78 | ;; 79 | esac 80 | 81 | # End /lib/services/ipv4-static 82 | -------------------------------------------------------------------------------- /bootscripts/lfs/lib/services/ipv4-static-route: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | ######################################################################## 3 | # Begin /lib/services/ipv4-static-route 4 | # 5 | # Description : IPV4 Static Route Script 6 | # 7 | # Authors : Kevin P. Fleming - kpfleming@linuxfromscratch.org 8 | # DJ Lucas - dj@linuxfromscratch.org 9 | # Update : Bruce Dubbs - bdubbs@linuxfromscratch.org 10 | # 11 | # Version : LFS 7.0 12 | # 13 | ######################################################################## 14 | 15 | . /lib/lsb/init-functions 16 | . ${IFCONFIG} 17 | 18 | case "${TYPE}" in 19 | ("" | "network") 20 | need_ip=1 21 | need_gateway=1 22 | ;; 23 | 24 | ("default") 25 | need_gateway=1 26 | args="${args} default" 27 | desc="default" 28 | ;; 29 | 30 | ("host") 31 | need_ip=1 32 | ;; 33 | 34 | ("unreachable") 35 | need_ip=1 36 | args="${args} unreachable" 37 | desc="unreachable " 38 | ;; 39 | 40 | (*) 41 | log_failure_msg "Unknown route type (${TYPE}) in ${IFCONFIG}, cannot continue." 42 | exit 1 43 | ;; 44 | esac 45 | 46 | if [ -n "${GATEWAY}" ]; then 47 | MSG="The GATEWAY variable cannot be set in ${IFCONFIG} for static routes.\n" 48 | log_failure_msg "$MSG Use STATIC_GATEWAY only, cannot continue" 49 | exit 1 50 | fi 51 | 52 | if [ -n "${need_ip}" ]; then 53 | if [ -z "${IP}" ]; then 54 | log_failure_msg "IP variable missing from ${IFCONFIG}, cannot continue." 55 | exit 1 56 | fi 57 | 58 | if [ -z "${PREFIX}" ]; then 59 | log_failure_msg "PREFIX variable missing from ${IFCONFIG}, cannot continue." 60 | exit 1 61 | fi 62 | 63 | args="${args} ${IP}/${PREFIX}" 64 | desc="${desc}${IP}/${PREFIX}" 65 | fi 66 | 67 | if [ -n "${need_gateway}" ]; then 68 | if [ -z "${STATIC_GATEWAY}" ]; then 69 | log_failure_msg "STATIC_GATEWAY variable missing from ${IFCONFIG}, cannot continue." 70 | exit 1 71 | fi 72 | args="${args} via ${STATIC_GATEWAY}" 73 | fi 74 | 75 | if [ -n "${SOURCE}" ]; then 76 | args="${args} src ${SOURCE}" 77 | fi 78 | 79 | case "${2}" in 80 | up) 81 | log_info_msg "Adding '${desc}' route to the ${1} interface..." 82 | ip route add ${args} dev ${1} 83 | evaluate_retval 84 | ;; 85 | 86 | down) 87 | log_info_msg "Removing '${desc}' route from the ${1} interface..." 88 | ip route del ${args} dev ${1} 89 | evaluate_retval 90 | ;; 91 | 92 | *) 93 | echo "Usage: ${0} [interface] {up|down}" 94 | exit 1 95 | ;; 96 | esac 97 | 98 | # End /lib/services/ipv4-static-route 99 | -------------------------------------------------------------------------------- /bootscripts/lfs/sysconfig/createfiles: -------------------------------------------------------------------------------- 1 | ######################################################################## 2 | # Begin /etc/sysconfig/createfiles 3 | # 4 | # Description : Createfiles script config file 5 | # 6 | # Authors : 7 | # 8 | # Version : 00.00 9 | # 10 | # Notes : The syntax of this file is as follows: 11 | # if type is equal to "file" or "dir" 12 | # 13 | # if type is equal to "dev" 14 | # 15 | # 16 | # 17 | # is the name of the file which is to be created 18 | # is either file, dir, or dev. 19 | # file creates a new file 20 | # dir creates a new directory 21 | # dev creates a new device 22 | # is either block, char or pipe 23 | # block creates a block device 24 | # char creates a character device 25 | # pipe creates a pipe, this will ignore the and 26 | # fields 27 | # and are the major and minor numbers used for 28 | # the device. 29 | ######################################################################## 30 | 31 | # End /etc/sysconfig/createfiles 32 | -------------------------------------------------------------------------------- /bootscripts/lfs/sysconfig/modules: -------------------------------------------------------------------------------- 1 | ######################################################################## 2 | # Begin /etc/sysconfig/modules 3 | # 4 | # Description : Module auto-loading configuration 5 | # 6 | # Authors : 7 | # 8 | # Version : 00.00 9 | # 10 | # Notes : The syntax of this file is as follows: 11 | # [ ...] 12 | # 13 | # Each module should be on its own line, and any options that you want 14 | # passed to the module should follow it. The line deliminator is either 15 | # a space or a tab. 16 | ######################################################################## 17 | 18 | # End /etc/sysconfig/modules 19 | -------------------------------------------------------------------------------- /bootscripts/lfs/sysconfig/udev_retry: -------------------------------------------------------------------------------- 1 | ######################################################################## 2 | # Begin /etc/sysconfig/udev_retry 3 | # 4 | # Description : udev_retry script configuration 5 | # 6 | # Authors : 7 | # 8 | # Version : 00.00 9 | # 10 | # Notes : Each subsystem that may need to be re-triggered after mountfs 11 | # runs should be listed in this file. Probable subsystems to be 12 | # listed here are rtc (due to /var/lib/hwclock/adjtime) and sound 13 | # (due to both /var/lib/alsa/asound.state and /usr/sbin/alsactl). 14 | # Entries are whitespace-separated. 15 | ######################################################################## 16 | 17 | rtc 18 | 19 | # End /etc/sysconfig/udev_retry 20 | -------------------------------------------------------------------------------- /chapter01/chapter01.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | %general-entities; 6 | ]> 7 | 8 | 9 | 10 | 11 | 12 | Введение 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /chapter02/chapter02.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | %general-entities; 6 | ]> 7 | 8 | 9 | 10 | 11 | 12 | Подготовка хост-системы 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /chapter02/introduction.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | %general-entities; 6 | ]> 7 | 8 | 9 | 10 | 11 | Введение 12 | 13 | В этой главе проверяются и, при необходимости, устанавливаются основные 14 | инструменты, необходимые для сборки LFS. Затем подготавливается раздел, 15 | в котором будет размещаться система LFS. Мы создадим сам раздел, создадим на 16 | нем файловую систему и смонтируем его. 17 | 18 | 19 | -------------------------------------------------------------------------------- /chapter03/chapter03.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | %general-entities; 6 | ]> 7 | 8 | 9 | 10 | 11 | 12 | Пакеты и патчи 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /chapter04/abouttestsuites.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | %general-entities; 6 | ]> 7 | 8 | 9 | 10 | 11 | О наборах тестов 12 | 13 | Большинство пакетов предоставляют набор тестов. Запуск набора тестов для 14 | только что собранного пакета — хорошая идея, потому что он может обеспечить 15 | проверку работоспособности, указывающую, что все скомпилировано 16 | правильно. Набор тестов, который проходит свой набор проверок, обычно доказывает, 17 | что пакет работает так, как задумал разработчик. Однако это не гарантирует, 18 | что пакет полностью без ошибок. 19 | 20 | Некоторые наборы тестов более важны, чем другие. Например, наборы тестов 21 | для основных инструментов — GCC, binutils и glibc — имеют первостепенное 22 | значение из-за их центральной роли в правильно функционирующей системе. 23 | Выполнение наборов тестов для GCC и glibc может занять очень много времени, 24 | особенно на медленном оборудовании, но их выполнение настоятельно рекомендуется. 25 | 26 | 27 | Запуск наборов тестов, описанных в 28 | и , не имеет смысла, поскольку 29 | программы компилируются с помощью кросс-компилятора, они, вероятно, не могут 30 | работать на хосте сборки. 31 | 32 | 33 | Распространенной проблемой при запуске наборов тестов для binutils и GCC 34 | является нехватка псевдотерминалов (PTY). Это может привести к большому количеству 35 | неудачных тестов. Причин может быть несколько, но наиболее вероятная причина 36 | заключается в том, что в хост-системе неправильно настроена файловая система 37 | devpts. Этот вопрос более подробно 38 | обсуждается на странице . 39 | 40 | Иногда наборы тестов не работают, по причинам, о которых знают разработчики 41 | и которые они считают некритичными. Просмотрите журналы, расположенные по адресу 42 | , чтобы проверить, ожидаются ли сбои. Этот сайт 43 | актуален для всех наборов тестов, описанных в книге. 44 | 45 | 46 | -------------------------------------------------------------------------------- /chapter04/chapter04.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | %general-entities; 6 | ]> 7 | 8 | 9 | 10 | 11 | 12 | Заключительный этап подготовки 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /chapter04/creatingminlayout.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | %general-entities; 6 | ]> 7 | 8 | 9 | 10 | 11 | Создание ограниченной иерархии папок в файловой системе LFS 12 | 13 | В этом разделе мы начинаем заполнять файловую систему LFS элементами, которые 14 | будут основой конечной системы Linux. Первым шагом является создание ограниченной 15 | иерархии каталогов, чтобы программы, скомпилированные в (а также glibc и libstdc++ в ), могли быть установлены в их конечном расположении. 18 | Это необходимо для того, чтобы эти временные программы были перезаписаны при сборке 19 | окончательных версий в . 20 | 21 | Создайте необходимую иерархию каталогов, выполнив следующую команду от имени 22 | root: 23 | 24 | mkdir -pv $LFS/{etc,var} $LFS/usr/{bin,lib,sbin} 25 | 26 | for i in bin lib sbin; do 27 | ln -sv usr/$i $LFS/$i 28 | done 29 | 30 | case $(uname -m) in 31 | x86_64) mkdir -pv $LFS/lib64 ;; 32 | esac 33 | 34 | Программы в будут скомпилированы 35 | с помощью кросс-компилятора (более подробная информация приведена в разделе ). Чтобы отделить кросс-компилятор от других 37 | программ, он будет установлен в специальный каталог. Создайте этот каталог с 38 | помощью следующей команды: 39 | 40 | mkdir -pv $LFS/tools 41 | 42 | 43 | 44 | Редакторы LFS намеренно решили не использовать каталог 45 | /usr/lib64. В процессе сборки предпринимается 46 | ряд шагов, чтобы убедиться, что набор инструментов не будет его использовать. Если 47 | по какой-либо причине этот каталог появится (это может произойти, если вы допустили 48 | ошибку, следуя инструкциям, или потому что вы установили бинарный пакет, создавший 49 | его после сборки LFS), это может привести к поломке вашей системы. Вы должны быть 50 | уверены, что этого каталога не существует. 51 | 52 | 53 | 54 | 55 | -------------------------------------------------------------------------------- /chapter04/introduction.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | %general-entities; 6 | ]> 7 | 8 | 9 | 10 | 11 | Введение 12 | 13 | В этой главе мы выполним несколько дополнительных настроек для подготовки к 14 | сборке временной системы. Мы создадим несколько каталогов в 15 | $LFS (в котором установим временные 16 | инструменты), добавим непривилегированного пользователя и настроим окружение 17 | для этого пользователя. Кроме этого, будут даны пояснения по стандартной 18 | единице времени сборки, или SBU, которую мы используем для 19 | измерения времени необходимого для сборки пакетов LFS, и предоставим некоторую 20 | информацию о наборах тестов. 21 | 22 | 23 | -------------------------------------------------------------------------------- /chapter05/chapter05.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | %general-entities; 6 | ]> 7 | 8 | 9 | 10 | 11 | 12 | Сборка кросс-тулчейна 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /chapter05/introduction.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | %general-entities; 6 | ]> 7 | 8 | 9 | 10 | 11 | Введение 12 | 13 | В этой главе дано описание, как создать кросс-компилятор и связанные с 14 | ним инструменты. Несмотря на то, что на данном этапе кросс-компиляция имитируется, 15 | принципы его работы те же, что и для настоящего кросс-тулчейна. 16 | 17 | Программы, скомпилированные в этой главе, будут установлены в каталог 18 | $LFS/tools, чтобы они были отделены 19 | от файлов, установленных в следующих главах. Библиотеки, же, устанавливаются 20 | на свое постоянное место, поскольку они относятся к системе, которую мы хотим создать. 21 | 22 | 23 | -------------------------------------------------------------------------------- /chapter06/bash.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | %general-entities; 6 | ]> 7 | 8 | 9 | 10 | 11 | 12 | bash 13 | &bash-version; 14 |
&bash-url;
15 |
16 | 17 | Bash-&bash-version; 18 | 19 | 20 | Bash 21 | tools 22 | 23 | 24 | 25 | 26 | 27 | <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" 28 | href="../chapter08/bash.xml" 29 | xpointer="xpointer(/sect1/sect2[1]/para[1])"/> 30 | 31 | <segmentedlist> 32 | <segtitle>&buildtime;</segtitle> 33 | <segtitle>&diskspace;</segtitle> 34 | 35 | <seglistitem> 36 | <seg>&bash-tmp-sbu;</seg> 37 | <seg>&bash-tmp-du;</seg> 38 | </seglistitem> 39 | </segmentedlist> 40 | 41 | </sect2> 42 | 43 | <sect2 role="installation"> 44 | <title>Установка пакета Bash 45 | 46 | Подготовьте Bash к компиляции: 47 | 48 | ./configure --prefix=/usr \ 49 | --build=$(sh support/config.guess) \ 50 | --host=$LFS_TGT \ 51 | --without-bash-malloc 52 | 53 | 54 | Значение параметров настройки: 55 | 56 | 57 | --without-bash-malloc 58 | 59 | Этот параметр отключает использование функции распределения 60 | памяти (malloc) Bash, которая, как известно, 61 | вызывает ошибки сегментации. Если опция отключена, Bash будет 62 | использовать функции malloc из Glibc, которые более стабильны. 63 | 64 | 65 | 66 | 67 | 68 | Скомпилируйте пакет: 69 | 70 | make 71 | 72 | Установите пакет: 73 | 74 | make DESTDIR=$LFS install 75 | 76 | Создайте символическую ссылку для программ, которые используют 77 | sh как оболочку: 78 | 79 | ln -sv bash $LFS/bin/sh 80 | 81 | 82 | 83 | 84 | 85 | 86 | <para>Подробная информация об этом пакете находится в 87 | <xref linkend="contents-bash" role="."/></para> 88 | 89 | </sect2> 90 | 91 | </sect1> 92 | -------------------------------------------------------------------------------- /chapter06/chapter06.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" 3 | "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [ 4 | <!ENTITY % general-entities SYSTEM "../general.ent"> 5 | %general-entities; 6 | ]> 7 | 8 | <chapter id="chapter-temporary-tools" xreflabel="Глава 6"> 9 | <?dbhtml dir="chapter06"?> 10 | <?dbhtml filename="chapter06.html"?> 11 | 12 | <title>Кросс-Компиляция временных инструментов 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /chapter06/diffutils.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | %general-entities; 6 | ]> 7 | 8 | 9 | 10 | 11 | 12 | diffutils 13 | &diffutils-version; 14 |
&diffutils-url;
15 |
16 | 17 | Diffutils-&diffutils-version; 18 | 19 | 20 | Diffutils 21 | tools 22 | 23 | 24 | 25 | 26 | 27 | <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" 28 | href="../chapter08/diffutils.xml" 29 | xpointer="xpointer(/sect1/sect2[1]/para[1])"/> 30 | 31 | <segmentedlist> 32 | <segtitle>&buildtime;</segtitle> 33 | <segtitle>&diskspace;</segtitle> 34 | 35 | <seglistitem> 36 | <seg>&diffutils-tmp-sbu;</seg> 37 | <seg>&diffutils-tmp-du;</seg> 38 | </seglistitem> 39 | </segmentedlist> 40 | 41 | </sect2> 42 | 43 | <sect2 role="installation"> 44 | <title>Установка пакета Diffutils 45 | 46 | Подготовьте Diffutils для компиляции: 47 | 48 | ./configure --prefix=/usr \ 49 | --host=$LFS_TGT \ 50 | --build=$(./build-aux/config.guess) 51 | 52 | Скомпилируйте пакет: 53 | 54 | make 55 | 56 | Установите пакет: 57 | 58 | make DESTDIR=$LFS install 59 | 60 | 61 | 62 | 63 | 64 | 65 | <para>Подробная информация об этом пакете находится в 66 | <xref linkend="contents-diffutils" role="."/></para> 67 | 68 | </sect2> 69 | 70 | </sect1> 71 | -------------------------------------------------------------------------------- /chapter06/findutils.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" 3 | "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [ 4 | <!ENTITY % general-entities SYSTEM "../general.ent"> 5 | %general-entities; 6 | ]> 7 | 8 | <sect1 id="ch-tools-findutils" role="wrap"> 9 | <?dbhtml filename="findutils.html"?> 10 | 11 | <sect1info condition="script"> 12 | <productname>findutils</productname> 13 | <productnumber>&findutils-version;</productnumber> 14 | <address>&findutils-url;</address> 15 | </sect1info> 16 | 17 | <title>Findutils-&findutils-version; 18 | 19 | 20 | Findutils 21 | tools 22 | 23 | 24 | 25 | 26 | 27 | <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" 28 | href="../chapter08/findutils.xml" 29 | xpointer="xpointer(/sect1/sect2[1]/para[1])"/> 30 | 31 | <segmentedlist> 32 | <segtitle>&buildtime;</segtitle> 33 | <segtitle>&diskspace;</segtitle> 34 | 35 | <seglistitem> 36 | <seg>&findutils-tmp-sbu;</seg> 37 | <seg>&findutils-tmp-du;</seg> 38 | </seglistitem> 39 | </segmentedlist> 40 | 41 | </sect2> 42 | 43 | <sect2 role="installation"> 44 | <title>Установка пакета Findutils 45 | 46 | Подготовьте Findutils к компиляции: 47 | 48 | ./configure --prefix=/usr \ 49 | --localstatedir=/var/lib/locate \ 50 | --host=$LFS_TGT \ 51 | --build=$(build-aux/config.guess) 52 | 53 | Скомпилируйте пакет: 54 | 55 | make 56 | 57 | Установите пакет: 58 | 59 | make DESTDIR=$LFS install 60 | 61 | 62 | 63 | 64 | 65 | 66 | <para>Подробная информация об этом пакете находится в 67 | <xref linkend="contents-findutils" role="."/></para> 68 | 69 | </sect2> 70 | 71 | </sect1> 72 | -------------------------------------------------------------------------------- /chapter06/gawk.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" 3 | "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [ 4 | <!ENTITY % general-entities SYSTEM "../general.ent"> 5 | %general-entities; 6 | ]> 7 | 8 | <sect1 id="ch-tools-gawk" role="wrap"> 9 | <?dbhtml filename="gawk.html"?> 10 | 11 | <sect1info condition="script"> 12 | <productname>gawk</productname> 13 | <productnumber>&gawk-version;</productnumber> 14 | <address>&gawk-url;</address> 15 | </sect1info> 16 | 17 | <title>Gawk-&gawk-version; 18 | 19 | 20 | Gawk 21 | tools 22 | 23 | 24 | 25 | 26 | 27 | <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" 28 | href="../chapter08/gawk.xml" 29 | xpointer="xpointer(/sect1/sect2[1]/para[1])"/> 30 | 31 | <segmentedlist> 32 | <segtitle>&buildtime;</segtitle> 33 | <segtitle>&diskspace;</segtitle> 34 | 35 | <seglistitem> 36 | <seg>&gawk-tmp-sbu;</seg> 37 | <seg>&gawk-tmp-du;</seg> 38 | </seglistitem> 39 | </segmentedlist> 40 | 41 | </sect2> 42 | 43 | <sect2 role="installation"> 44 | <title>Установка пакета Gawk 45 | 46 | Во-первых, убедитесь, что некоторые ненужные файлы не будут установлены: 47 | 48 | sed -i 's/extras//' Makefile.in 49 | 50 | Подготовьте Gawk к компиляции: 51 | 52 | ./configure --prefix=/usr \ 53 | --host=$LFS_TGT \ 54 | --build=$(build-aux/config.guess) 55 | 56 | Скомпилируйте пакет: 57 | 58 | make 59 | 60 | Установите пакет: 61 | 62 | make DESTDIR=$LFS install 63 | 64 | 65 | 66 | 67 | 68 | 69 | <para>Подробная информация об этом пакете находится в 70 | <xref linkend="contents-gawk" role="."/></para> 71 | 72 | </sect2> 73 | 74 | </sect1> 75 | -------------------------------------------------------------------------------- /chapter06/grep.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" 3 | "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [ 4 | <!ENTITY % general-entities SYSTEM "../general.ent"> 5 | %general-entities; 6 | ]> 7 | 8 | <sect1 id="ch-tools-grep" role="wrap"> 9 | <?dbhtml filename="grep.html"?> 10 | 11 | <sect1info condition="script"> 12 | <productname>grep</productname> 13 | <productnumber>&grep-version;</productnumber> 14 | <address>&grep-url;</address> 15 | </sect1info> 16 | 17 | <title>Grep-&grep-version; 18 | 19 | 20 | Grep 21 | tools 22 | 23 | 24 | 25 | 26 | 27 | <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" 28 | href="../chapter08/grep.xml" 29 | xpointer="xpointer(/sect1/sect2[1]/para[1])"/> 30 | 31 | <segmentedlist> 32 | <segtitle>&buildtime;</segtitle> 33 | <segtitle>&diskspace;</segtitle> 34 | 35 | <seglistitem> 36 | <seg>&grep-tmp-sbu;</seg> 37 | <seg>&grep-tmp-du;</seg> 38 | </seglistitem> 39 | </segmentedlist> 40 | 41 | </sect2> 42 | 43 | <sect2 role="installation"> 44 | <title>Установка пакета Grep 45 | 46 | Подготовьте Grep к компиляции: 47 | 48 | 49 | ./configure --prefix=/usr \ 50 | --host=$LFS_TGT \ 51 | --build=$(./build-aux/config.guess) 52 | 53 | Скомпилируйте пакет: 54 | 55 | make 56 | 57 | Установите пакет: 58 | 59 | make DESTDIR=$LFS install 60 | 61 | 62 | 63 | 64 | 65 | 66 | <para>Подробная информация об этом пакете находится в 67 | <xref linkend="contents-grep" role="."/></para> 68 | 69 | </sect2> 70 | 71 | </sect1> 72 | -------------------------------------------------------------------------------- /chapter06/gzip.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" 3 | "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [ 4 | <!ENTITY % general-entities SYSTEM "../general.ent"> 5 | %general-entities; 6 | ]> 7 | 8 | <sect1 id="ch-tools-gzip" role="wrap"> 9 | <?dbhtml filename="gzip.html"?> 10 | 11 | <sect1info condition="script"> 12 | <productname>gzip</productname> 13 | <productnumber>&gzip-version;</productnumber> 14 | <address>&gzip-url;</address> 15 | </sect1info> 16 | 17 | <title>Gzip-&gzip-version; 18 | 19 | 20 | Gzip 21 | tools 22 | 23 | 24 | 25 | 26 | 27 | <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" 28 | href="../chapter08/gzip.xml" 29 | xpointer="xpointer(/sect1/sect2[1]/para[1])"/> 30 | 31 | <segmentedlist> 32 | <segtitle>&buildtime;</segtitle> 33 | <segtitle>&diskspace;</segtitle> 34 | 35 | <seglistitem> 36 | <seg>&gzip-tmp-sbu;</seg> 37 | <seg>&gzip-tmp-du;</seg> 38 | </seglistitem> 39 | </segmentedlist> 40 | 41 | </sect2> 42 | 43 | <sect2 role="installation"> 44 | <title>Установка пакета Gzip 45 | 46 | Подготовьте Gzip к компиляции: 47 | 48 | ./configure --prefix=/usr --host=$LFS_TGT 49 | 50 | Скомпилируйте пакет: 51 | 52 | make 53 | 54 | Установите пакет: 55 | 56 | make DESTDIR=$LFS install 57 | 58 | 59 | 60 | 61 | 62 | 63 | <para>Подробная информация об этом пакете находится в 64 | <xref linkend="contents-gzip" role="."/></para> 65 | 66 | </sect2> 67 | 68 | </sect1> 69 | -------------------------------------------------------------------------------- /chapter06/introduction.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" 3 | "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [ 4 | <!ENTITY % general-entities SYSTEM "../general.ent"> 5 | %general-entities; 6 | ]> 7 | 8 | <sect1 id="ch-tools-introduction-cross"> 9 | <?dbhtml filename="introduction.html"?> 10 | 11 | <title>Введение 12 | 13 | В этой главе рассказывается, как выполнить кросс-компиляцию базовых 14 | утилит с использованием только что собранного кросс-тулчейна. Эти утилиты 15 | установлены в свое конечное местоположение, но пока не могут быть использованы. 16 | Выполняемые инструкции по-прежнему зависят от инструментария хоста. Тем не менее, 17 | установленные библиотеки используются при компоновке. 18 | 19 | Использование утилит станет возможным в следующей главе после входа в 20 | среду chroot. Все пакеты из этой главы, должны быть 21 | собраны до того, как мы это сделаем. Поэтому пока наша система зависима от хост-системы. 22 | 23 | Еще раз напомним, что неправильная настройка LFS вместе со 24 | сборкой от root может сделать ваш 25 | компьютер непригодным для использования. Всю эту главу нужно выполнить от имени пользователя lfs, в его рабочем окружении, как описано в 27 | . 28 | 29 |
30 | -------------------------------------------------------------------------------- /chapter06/m4.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | %general-entities; 6 | ]> 7 | 8 | 9 | 10 | 11 | 12 | m4 13 | &m4-version; 14 |
&m4-url;
15 |
16 | 17 | M4-&m4-version; 18 | 19 | 20 | M4 21 | tools 22 | 23 | 24 | 25 | 26 | 27 | <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" 28 | href="../chapter08/m4.xml" 29 | xpointer="xpointer(/sect1/sect2[1]/para[1])"/> 30 | 31 | <segmentedlist> 32 | <segtitle>&buildtime;</segtitle> 33 | <segtitle>&diskspace;</segtitle> 34 | 35 | <seglistitem> 36 | <seg>&m4-tmp-sbu;</seg> 37 | <seg>&m4-tmp-du;</seg> 38 | </seglistitem> 39 | </segmentedlist> 40 | 41 | </sect2> 42 | 43 | <sect2 role="installation"> 44 | <title>Установка пакета M4 45 | 51 | Подготовьте пакет M4 к компиляции: 52 | 53 | ./configure --prefix=/usr \ 54 | --host=$LFS_TGT \ 55 | --build=$(build-aux/config.guess) 56 | 57 | Скомпилируйте пакет: 58 | 59 | make 60 | 61 | Установите пакет: 62 | 63 | make DESTDIR=$LFS install 64 | 65 | 66 | 67 | 68 | 69 | <para>Подробная информация об этом пакете находится в 70 | <xref linkend="contents-m4" role="."/></para> 71 | 72 | </sect2> 73 | 74 | </sect1> 75 | -------------------------------------------------------------------------------- /chapter06/make.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" 3 | "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [ 4 | <!ENTITY % general-entities SYSTEM "../general.ent"> 5 | %general-entities; 6 | ]> 7 | <sect1 id="ch-tools-make" role="wrap"> 8 | <?dbhtml filename="make.html"?> 9 | 10 | <sect1info condition="script"> 11 | <productname>make</productname> 12 | <productnumber>&make-version;</productnumber> 13 | <address>&make-url;</address> 14 | </sect1info> 15 | 16 | <title>Make-&make-version; 17 | 18 | 19 | Make 20 | tools 21 | 22 | 23 | 24 | 25 | 26 | <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" 27 | href="../chapter08/make.xml" 28 | xpointer="xpointer(/sect1/sect2[1]/para[1])"/> 29 | 30 | <segmentedlist> 31 | <segtitle>&buildtime;</segtitle> 32 | <segtitle>&diskspace;</segtitle> 33 | 34 | <seglistitem> 35 | <seg>&make-tmp-sbu;</seg> 36 | <seg>&make-tmp-du;</seg> 37 | </seglistitem> 38 | </segmentedlist> 39 | 40 | </sect2> 41 | 42 | <sect2 role="installation"> 43 | <title>Установка пакета Make 44 | 45 | Подготовьте Make к компиляции: 46 | 47 | ./configure --prefix=/usr \ 48 | --without-guile \ 49 | --host=$LFS_TGT \ 50 | --build=$(build-aux/config.guess) 51 | 52 | 53 | Значение новой опции настройки: 54 | 55 | 56 | --without-guile 57 | 58 | Несмотря на то, что мы выполняем кросс-компиляцию, configure 59 | пытается использовать guile с узла сборки, если он его находит. Это 60 | приводит к сбою компиляции, этот аргумент предотвращает его использование. 61 | 62 | 63 | 64 | 65 | Скомпилируйте пакет: 66 | 67 | make 68 | 69 | Установите пакет: 70 | 71 | make DESTDIR=$LFS install 72 | 73 | 74 | 75 | 76 | 77 | 78 | <para>Подробная информация об этом пакете находится в 79 | <xref linkend="contents-make" role="."/></para> 80 | 81 | </sect2> 82 | 83 | </sect1> 84 | -------------------------------------------------------------------------------- /chapter06/patch.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" 3 | "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [ 4 | <!ENTITY % general-entities SYSTEM "../general.ent"> 5 | %general-entities; 6 | ]> 7 | 8 | <sect1 id="ch-tools-patch" role="wrap"> 9 | <?dbhtml filename="patch.html"?> 10 | 11 | <sect1info condition="script"> 12 | <productname>patch</productname> 13 | <productnumber>&patch-version;</productnumber> 14 | <address>&patch-url;</address> 15 | </sect1info> 16 | 17 | <title>Patch-&patch-version; 18 | 19 | 20 | Patch 21 | tools 22 | 23 | 24 | 25 | 26 | 27 | <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" 28 | href="../chapter08/patch.xml" 29 | xpointer="xpointer(/sect1/sect2[1]/para[1])"/> 30 | 31 | <segmentedlist> 32 | <segtitle>&buildtime;</segtitle> 33 | <segtitle>&diskspace;</segtitle> 34 | 35 | <seglistitem> 36 | <seg>&patch-tmp-sbu;</seg> 37 | <seg>&patch-tmp-du;</seg> 38 | </seglistitem> 39 | </segmentedlist> 40 | 41 | </sect2> 42 | 43 | <sect2 role="installation"> 44 | <title>Установка пакета Patch 45 | 46 | Подготовьте Patch к компиляции: 47 | 48 | 49 | ./configure --prefix=/usr \ 50 | --host=$LFS_TGT \ 51 | --build=$(build-aux/config.guess) 52 | 53 | Скомпилируйте пакет: 54 | 55 | make 56 | 57 | Установите пакет: 58 | 59 | make DESTDIR=$LFS install 60 | 61 | 62 | 63 | 64 | 65 | 66 | <para>Подробная информация об этом пакете находится в 67 | <xref linkend="contents-patch" role="."/></para> 68 | 69 | </sect2> 70 | 71 | </sect1> 72 | -------------------------------------------------------------------------------- /chapter06/sed.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" 3 | "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [ 4 | <!ENTITY % general-entities SYSTEM "../general.ent"> 5 | %general-entities; 6 | ]> 7 | 8 | <sect1 id="ch-tools-sed" role="wrap"> 9 | <?dbhtml filename="sed.html"?> 10 | 11 | <sect1info condition="script"> 12 | <productname>sed</productname> 13 | <productnumber>&sed-version;</productnumber> 14 | <address>&sed-url;</address> 15 | </sect1info> 16 | 17 | <title>Sed-&sed-version; 18 | 19 | 20 | Sed 21 | tools 22 | 23 | 24 | 25 | 26 | 27 | <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" 28 | href="../chapter08/sed.xml" 29 | xpointer="xpointer(/sect1/sect2[1]/para[1])"/> 30 | 31 | <segmentedlist> 32 | <segtitle>&buildtime;</segtitle> 33 | <segtitle>&diskspace;</segtitle> 34 | 35 | <seglistitem> 36 | <seg>&sed-tmp-sbu;</seg> 37 | <seg>&sed-tmp-du;</seg> 38 | </seglistitem> 39 | </segmentedlist> 40 | 41 | </sect2> 42 | 43 | <sect2 role="installation"> 44 | <title>Установка пакета Sed 45 | 46 | Подготовьте Sed к компиляции: 47 | 48 | ./configure --prefix=/usr \ 49 | --host=$LFS_TGT \ 50 | --build=$(./build-aux/config.guess) 51 | 52 | Скомпилируйте пакет: 53 | 54 | make 55 | 56 | Установите пакет: 57 | 58 | make DESTDIR=$LFS install 59 | 60 | 61 | 62 | 63 | 64 | 65 | <para>Подробная информация об этом пакете находится в 66 | <xref linkend="contents-sed" role="."/></para> 67 | 68 | </sect2> 69 | 70 | </sect1> 71 | -------------------------------------------------------------------------------- /chapter06/tar.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" 3 | "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [ 4 | <!ENTITY % general-entities SYSTEM "../general.ent"> 5 | %general-entities; 6 | ]> 7 | 8 | <sect1 id="ch-tools-tar" role="wrap"> 9 | <?dbhtml filename="tar.html"?> 10 | 11 | <sect1info condition="script"> 12 | <productname>tar</productname> 13 | <productnumber>&tar-version;</productnumber> 14 | <address>&tar-url;</address> 15 | </sect1info> 16 | 17 | <title>Tar-&tar-version; 18 | 19 | 20 | Tar 21 | tools 22 | 23 | 24 | 25 | 26 | 27 | <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" 28 | href="../chapter08/tar.xml" 29 | xpointer="xpointer(/sect1/sect2[1]/para[1])"/> 30 | 31 | <segmentedlist> 32 | <segtitle>&buildtime;</segtitle> 33 | <segtitle>&diskspace;</segtitle> 34 | 35 | <seglistitem> 36 | <seg>&tar-tmp-sbu;</seg> 37 | <seg>&tar-tmp-du;</seg> 38 | </seglistitem> 39 | </segmentedlist> 40 | 41 | </sect2> 42 | 43 | <sect2 role="installation"> 44 | <title>Установка пакета Tar 45 | 46 | Подготовьте Tar к компиляции: 47 | 48 | ./configure --prefix=/usr \ 49 | --host=$LFS_TGT \ 50 | --build=$(build-aux/config.guess) 51 | 52 | Скомпилируйте пакет: 53 | 54 | make 55 | 56 | Установите пакет: 57 | 58 | make DESTDIR=$LFS install 59 | 60 | 61 | 62 | 63 | 64 | 65 | <para>Подробная информация об этом пакете находится в <xref linkend="contents-tar" role="."/></para> 66 | 67 | </sect2> 68 | 69 | </sect1> 70 | -------------------------------------------------------------------------------- /chapter06/xz.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" 3 | "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [ 4 | <!ENTITY % general-entities SYSTEM "../general.ent"> 5 | %general-entities; 6 | ]> 7 | 8 | <sect1 id="ch-tools-xz" role="wrap"> 9 | <?dbhtml filename="xz.html"?> 10 | 11 | <sect1info condition="script"> 12 | <productname>xz</productname> 13 | <productnumber>&xz-version;</productnumber> 14 | <address>&xz-url;</address> 15 | </sect1info> 16 | 17 | <title>Xz-&xz-version; 18 | 19 | 20 | Xz 21 | tools 22 | 23 | 24 | 25 | 26 | 27 | <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" 28 | href="../chapter08/xz.xml" 29 | xpointer="xpointer(/sect1/sect2[1]/para[1])"/> 30 | 31 | <segmentedlist> 32 | <segtitle>&buildtime;</segtitle> 33 | <segtitle>&diskspace;</segtitle> 34 | 35 | <seglistitem> 36 | <seg>&xz-tmp-sbu;</seg> 37 | <seg>&xz-tmp-du;</seg> 38 | </seglistitem> 39 | </segmentedlist> 40 | 41 | </sect2> 42 | 43 | <sect2 role="installation"> 44 | <title>Установка пакета Xz 45 | 46 | Подготовьте Xz к компиляции: 47 | 48 | ./configure --prefix=/usr \ 49 | --host=$LFS_TGT \ 50 | --build=$(build-aux/config.guess) \ 51 | --disable-static \ 52 | --docdir=/usr/share/doc/xz-&xz-version; 53 | 54 | Скомпилируйте пакет: 55 | 56 | make 57 | 58 | Установите пакет: 59 | 60 | make DESTDIR=$LFS install 61 | 62 | Удалите архивный файл libtool, поскольку он потенциально опасен при кросс-компиляции: 63 | 64 | rm -v $LFS/usr/lib/liblzma.la 65 | 66 | 67 | 68 | 69 | 70 | <para>Подробная информация об этом пакете находится в <xref linkend="contents-xz" role="."/></para> 71 | 72 | </sect2> 73 | 74 | </sect1> 75 | -------------------------------------------------------------------------------- /chapter07/bison.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" 3 | "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [ 4 | <!ENTITY % general-entities SYSTEM "../general.ent"> 5 | %general-entities; 6 | ]> 7 | 8 | <sect1 id="ch-tools-bison" role="wrap"> 9 | <?dbhtml filename="bison.html"?> 10 | 11 | <sect1info condition="script"> 12 | <productname>bison</productname> 13 | <productnumber>&bison-version;</productnumber> 14 | <address>&bison-url;</address> 15 | </sect1info> 16 | 17 | <title>Bison-&bison-version; 18 | 19 | 20 | Bison 21 | tools 22 | 23 | 24 | 25 | 26 | 27 | <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" 28 | href="../chapter08/bison.xml" 29 | xpointer="xpointer(/sect1/sect2[1]/para[1])"/> 30 | 31 | <segmentedlist> 32 | <segtitle>&buildtime;</segtitle> 33 | <segtitle>&diskspace;</segtitle> 34 | 35 | <seglistitem> 36 | <seg>&bison-tmp-sbu;</seg> 37 | <seg>&bison-tmp-du;</seg> 38 | </seglistitem> 39 | </segmentedlist> 40 | 41 | </sect2> 42 | 43 | <sect2 role="installation"> 44 | <title>Установка пакета Bison 45 | 46 | Подготовьте Bison к компиляции: 47 | 48 | ./configure --prefix=/usr \ 49 | --docdir=/usr/share/doc/bison-&bison-version; 50 | 51 | 52 | Значение нового параметра конфигурации: 53 | 54 | 55 | --docdir=/usr/share/doc/bison-&bison-version; 56 | 57 | Этот параметр указывает системе сборки установить документацию к 58 | bison в каталог с версией пакета. 59 | 60 | 61 | 62 | 63 | 64 | Скомпилируйте пакет: 65 | 66 | make 67 | 68 | Установите пакет: 69 | 70 | make install 71 | 72 | 73 | 74 | 75 | 76 | 77 | <para>Подробная информация об этом пакете находится в 78 | <xref linkend="contents-bison" role="."/></para> 79 | 80 | </sect2> 81 | 82 | </sect1> 83 | -------------------------------------------------------------------------------- /chapter07/changingowner.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" 3 | "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [ 4 | <!ENTITY % general-entities SYSTEM "../general.ent"> 5 | %general-entities; 6 | ]> 7 | 8 | <sect1 id="ch-tools-changingowner"> 9 | <?dbhtml filename="changingowner.html"?> 10 | 11 | <title>Смена владельца 12 | 13 | 14 | Команды, приведенные в оставшейся части книги, должны выполняться от 15 | имени пользователя root, а не 16 | lfs. Дважды проверьте, что переменная 17 | $LFS установлена в переменных окружения пользователя 18 | root. 19 | 20 | 21 | В настоящее время вся иерархия каталогов в $LFS принадлежит пользователю 23 | lfs, существующему только на хост-системе. 24 | Если права на файлы и каталоги внутри $LFS оставить 25 | как есть, то они будут принадлежать ID пользователя без существующей учетной записи. Это опасно, 26 | так как созданная позже учетная запись, может получить такой же ID пользователя и 27 | стать владельцем всех файлов в $LFS, тем самым 28 | делая эти файлы уязвимыми для возможных злонамеренных манипуляций. 29 | 30 | Для решения проблемы измените владельца каталогов 31 | $LFS/* на пользователя 32 | root, выполнив следующую команду: 33 | 34 | chown --from lfs -R root:root $LFS/{usr,lib,var,etc,bin,sbin,tools} 35 | case $(uname -m) in 36 | x86_64) chown --from lfs -R root:root $LFS/lib64 ;; 37 | esac 38 | 39 |
40 | -------------------------------------------------------------------------------- /chapter07/chapter07.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | %general-entities; 6 | ]> 7 | 8 | 9 | 10 | 11 | 12 | Вход в окружение Chroot и создание дополнительных временных инструментов 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 32 | 33 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /chapter07/gettext.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | %general-entities; 6 | ]> 7 | 8 | 9 | 10 | 11 | 12 | gettext 13 | &gettext-version; 14 |
&gettext-url;
15 |
16 | 17 | Gettext-&gettext-version; 18 | 19 | 20 | Gettext 21 | tools 22 | 23 | 24 | 25 | 26 | 27 | <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" 28 | href="../chapter08/gettext.xml" 29 | xpointer="xpointer(/sect1/sect2[1]/para[1])"/> 30 | 31 | <segmentedlist> 32 | <segtitle>&buildtime;</segtitle> 33 | <segtitle>&diskspace;</segtitle> 34 | 35 | <seglistitem> 36 | <seg>&gettext-tmp-sbu;</seg> 37 | <seg>&gettext-tmp-du;</seg> 38 | </seglistitem> 39 | </segmentedlist> 40 | 41 | </sect2> 42 | 43 | <sect2 role="installation"> 44 | <title>Установка пакета Gettext 45 | 46 | Для временного набора инструментов нам нужно установить только три 47 | программы из пакета Gettext. 48 | 49 | Подготовьте Gettext к компиляции: 50 | 51 | ./configure --disable-shared 52 | 53 | 54 | Значение параметров настройки: 55 | 56 | 57 | --disable-shared 58 | 59 | В настоящее время нам не нужно устанавливать какие-либо общие 60 | библиотеки Gettext, поэтому нет необходимости их собирать. 61 | 62 | 63 | 64 | 65 | 66 | Скомпилируйте пакет: 67 | 68 | make 69 | 70 | Установите программы msgfmt, msgmerge, и 71 | xgettext programs: 72 | 73 | cp -v gettext-tools/src/{msgfmt,msgmerge,xgettext} /usr/bin 74 | 75 | 76 | 77 | 78 | 79 | 80 | <para>Подробная информация об этом пакете находится в <xref linkend="contents-gettext" role="."/></para> 81 | 82 | </sect2> 83 | 84 | </sect1> 85 | -------------------------------------------------------------------------------- /chapter07/introduction.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" 3 | "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [ 4 | <!ENTITY % general-entities SYSTEM "../general.ent"> 5 | %general-entities; 6 | ]> 7 | 8 | <sect1 id="ch-tools-introduction-chroot"> 9 | <?dbhtml filename="introduction.html"?> 10 | 11 | <title>Введение 12 | 13 | В этой главе рассказывается, как собрать последние недостающие части 14 | временной системы: инструменты, необходимые для сборки различных пакетов. Теперь, 15 | когда все циклические зависимости устранены, для сборки можно использовать среду 16 | chroot, полностью изолированную от операционной системы хоста 17 | (за исключением работающего ядра). 18 | 19 | 20 | Для правильной работы изолированной среды необходимо установить связь с 21 | работающим ядром. Это делается с помощью так называемых виртуальных файловых 22 | систем ядра, которые будут смонтированы перед входом в среду chroot. 23 | Вы можете проверить, смонтированы ли они, выполнив команду findmnt. 24 | 25 | До команды должны выполняться от имени 26 | root с установленной переменной 27 | LFS. После входа в chroot все команды выполняются от имени &root;, 28 | к счастью, без доступа к операционной системе компьютера, на котором вы собираете LFS. 29 | В любом случае будьте осторожны, так как неверными командами легко разрушить всю 30 | систему LFS. 31 | 32 |
33 | -------------------------------------------------------------------------------- /chapter07/texinfo.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | %general-entities; 6 | ]> 7 | 8 | 9 | 10 | 11 | 12 | texinfo 13 | &texinfo-version; 14 |
&texinfo-url;
15 |
16 | 17 | Texinfo-&texinfo-version; 18 | 19 | 20 | Texinfo 21 | temporary 22 | 23 | 24 | 25 | 26 | 27 | <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" 28 | href="../chapter08/texinfo.xml" 29 | xpointer="xpointer(/sect1/sect2[1]/para[1])"/> 30 | 31 | <segmentedlist> 32 | <segtitle>&buildtime;</segtitle> 33 | <segtitle>&diskspace;</segtitle> 34 | 35 | <seglistitem> 36 | <seg>&texinfo-tmp-sbu;</seg> 37 | <seg>&texinfo-tmp-du;</seg> 38 | </seglistitem> 39 | </segmentedlist> 40 | 41 | </sect2> 42 | 43 | <sect2 role="installation"> 44 | <title>Установка пакета Texinfo 45 | 46 | Подготовьте Texinfo к компиляции: 47 | 48 | ./configure --prefix=/usr 49 | 50 | Скомпилируйте пакет: 51 | 52 | make 53 | 54 | Установите пакет: 55 | 56 | make install 57 | 58 | 59 | 60 | 61 | 62 | 63 | <para>Подробная информация об этом пакете находится в <xref linkend="contents-texinfo" role="."/></para> 64 | 65 | </sect2> 66 | 67 | </sect1> 68 | -------------------------------------------------------------------------------- /chapter08/aboutdebug.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" 3 | "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [ 4 | <!ENTITY % general-entities SYSTEM "../general.ent"> 5 | %general-entities; 6 | ]> 7 | 8 | <sect1 id="ch-system-aboutdebug"> 9 | <?dbhtml filename="aboutdebug.html"?> 10 | 11 | <title>Об отладочных символах 12 | 13 | Большинство программ и библиотек по умолчанию компилируются с 14 | отладочными символами (gcc с параметром -g). 15 | Это означает, что при отладке программы или библиотеки, которые были скомпилированы 16 | с использованием отладочной информации, отладчик может предоставить не только 17 | адреса памяти, но и имена подпрограмм и переменных. 18 | 19 | Включение отладочных символов значительно увеличивает размер 20 | программы или библиотеки. Ниже приведена информация по 21 | объему пространства, занимаемого отладочными символами: 22 | 23 | 24 | 25 | Двоичный файл bash с отладочными символами: 26 | 1200 KB 27 | 28 | 29 | Двоичный файл bash без отладочных символов: 30 | 480 KB (на 60% меньше) 31 | 32 | 33 | Файлы Glibc и GCC (/lib 34 | и /usr/lib) с отладочными символами: 87 MB 35 | 36 | 37 | Файлы Glibc и GCC без отладочных символов: 16 MB (на 82% меньше) 38 | 39 | 40 | 41 | Размеры могут варьироваться в зависимости от используемого компилятора и 42 | библиотеки Си, но программа, в которой были удалены отладочные символы, обычно 43 | примерно на 50-80% меньше, чем ее аналог с ними. 44 | Поскольку большинство пользователей никогда не будут использовать отладчик 45 | в своем программном обеспечении, удаление отладочных символов может 46 | освободить много места на диске. В следующем разделе показано, как удалить все 47 | отладочные символы из программ и библиотек. 48 | 49 |
50 | -------------------------------------------------------------------------------- /chapter08/cleanup.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | %general-entities; 6 | ]> 7 | 8 | 9 | 10 | 11 | Очистка 12 | 13 | Наконец, удалите некоторые лишние файлы, оставшиеся после запуска тестов: 14 | 15 | rm -rf /tmp/{*,.*} 16 | 17 | Также в каталогах /usr/lib и /usr/libexec есть несколько файлов с 18 | расширением .la. Это файлы архива libtool. Как было сказано ранее, 19 | в современной системе Linux файлы .la libtool необходимы только для libltdl. 20 | Предполагается, что libltdl не будет загружать библиотеки в LFS, кроме этого 21 | известно, что некоторые файлы .la могут нарушить сборку пакетов BLFS. Удалите 22 | эти файлы сейчас: 23 | 24 | find /usr/lib /usr/libexec -name \*.la -delete 25 | 26 | Дополнительные сведения об архивных файлах Libtool смотрите в книге BLFS "О файлах Libtool Archive (.la)". 28 | 29 | Компилятор, собранный в и 30 | все еще установлен, но больше 31 | не нужен. Удалите его с помощью команды: 32 | 33 | find /usr -depth -name $(uname -m)-lfs-linux-gnu\* | xargs rm -rf 34 | 35 | Наконец, удалите временную учетную запись пользователя 'tester', 36 | созданную в начале предыдущей главы. 37 | 38 | userdel -r tester 39 | 40 | -------------------------------------------------------------------------------- /chapter08/gperf.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | %general-entities; 6 | ]> 7 | 8 | 9 | 10 | 11 | 12 | gperf 13 | &gperf-version; 14 |
&gperf-url;
15 |
16 | 17 | Gperf-&gperf-version; 18 | 19 | 20 | Gperf 21 | 22 | 23 | 24 | 25 | 26 | <para>Gperf генерирует идеальную хэш-функцию из набора ключей.</para> 27 | 28 | <segmentedlist> 29 | <segtitle>&buildtime;</segtitle> 30 | <segtitle>&diskspace;</segtitle> 31 | 32 | <seglistitem> 33 | <seg>&gperf-fin-sbu;</seg> 34 | <seg>&gperf-fin-du;</seg> 35 | </seglistitem> 36 | </segmentedlist> 37 | 38 | </sect2> 39 | 40 | <sect2 role="installation"> 41 | <title>Установка пакета Gperf 42 | 43 | Подготовьте Gperf к компиляции: 44 | 45 | ./configure --prefix=/usr --docdir=/usr/share/doc/gperf-&gperf-version; 46 | 47 | Скомпилируйте пакет: 48 | 49 | make 50 | 51 | Известно, что тесты завершаются ошибкой при одновременном выполнении 52 | нескольких тестов (параметр -j больше 1). Для выполнения тестов, запустите следующую команду: 53 | 54 | make -j1 check 55 | 56 | Установите пакет: 57 | 58 | make install 59 | 60 | 61 | 62 | 63 | Содержимое пакета Gperf 64 | 65 | 66 | Установленные программы 67 | Созданные каталоги 68 | 69 | 70 | gperf 71 | /usr/share/doc/gperf-&gperf-version; 72 | 73 | 74 | 75 | 76 | Краткое описание 77 | 78 | 79 | 80 | 81 | gperf 82 | 83 | Генерирует идеальный хэш из набора ключей 84 | 85 | gperf 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 |
95 | -------------------------------------------------------------------------------- /chapter08/jinja2.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | %general-entities; 6 | ]> 7 | 8 | 9 | 10 | 11 | 12 | jinja2 13 | &jinja2-version; 14 |
&jinja2-url;
15 |
16 | 17 | Jinja2-&jinja2-version; 18 | 19 | 20 | Jinja2 21 | 22 | 23 | 24 | 25 | 26 | <para>Jinja2 - это модуль Python, который реализует простой язык шаблонов pythonic</para> 27 | 28 | <segmentedlist> 29 | <segtitle>&buildtime;</segtitle> 30 | <segtitle>&diskspace;</segtitle> 31 | <seglistitem> 32 | <seg>&jinja2-fin-sbu;</seg> 33 | <seg>&jinja2-fin-du;</seg> 34 | </seglistitem> 35 | </segmentedlist> 36 | 37 | </sect2> 38 | 39 | <sect2 role="installation"> 40 | <title>Установка пакета Jinja2 41 | 42 | Соберите пакет: 43 | 44 | pip3 wheel -w dist --no-cache-dir --no-build-isolation --no-deps $PWD 45 | 46 | Установите пакет: 47 | 48 | pip3 install --no-index --no-user --find-links dist Jinja2 49 | 50 | 51 | 52 | 53 | Содержимое пакета Jinja2 54 | 55 | 56 | Созданные каталоги 57 | 58 | 59 | 60 | /usr/lib/python&python-minor;/site-packages/Jinja2-&jinja2-version;.dist-info 61 | 62 | 63 | 64 | 65 | 66 | 67 |
68 | 69 | -------------------------------------------------------------------------------- /chapter08/libpipeline.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | %general-entities; 6 | ]> 7 | 8 | 9 | 10 | 11 | 12 | libpipeline 13 | &libpipeline-version; 14 |
&libpipeline-url;
15 |
16 | 17 | Libpipeline-&libpipeline-version; 18 | 19 | 20 | Libpipeline 21 | 22 | 23 | 24 | 25 | 26 | <para>Пакет Libpipeline содержит библиотеку для гибкого и удобного управления 27 | подпроцессами.</para> 28 | 29 | <segmentedlist> 30 | <segtitle>&buildtime;</segtitle> 31 | <segtitle>&diskspace;</segtitle> 32 | 33 | <seglistitem> 34 | <seg>&libpipeline-fin-sbu;</seg> 35 | <seg>&libpipeline-fin-du;</seg> 36 | </seglistitem> 37 | </segmentedlist> 38 | 39 | </sect2> 40 | 41 | <sect2 role="installation"> 42 | <title>Установка пакета Libpipeline 43 | 44 | Подготовьте Libpipeline к компиляции: 45 | 46 | ./configure --prefix=/usr 47 | 48 | Скомпилируйте пакет: 49 | 50 | make 51 | 52 | Чтобы протестировать пакет, выполните: 53 | 54 | make check 55 | 56 | Установите пакет: 57 | 58 | make install 59 | 60 | 61 | 62 | 63 | Содержимое пакета Libpipeline 64 | 65 | 66 | Установленные библиотеки 67 | 68 | 69 | libpipeline.so 70 | 71 | 72 | 73 | 74 | Краткое описание 75 | 76 | 77 | 78 | 79 | libpipeline 80 | 81 | Эта библиотека используется для безопасного построения конвейеров между 82 | подпроцессами. 83 | 84 | libpipeline 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 |
93 | -------------------------------------------------------------------------------- /chapter08/make.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | %general-entities; 6 | ]> 7 | 8 | 9 | 10 | 11 | 12 | make 13 | &make-version; 14 |
&make-url;
15 |
16 | 17 | Make-&make-version; 18 | 19 | 20 | Make 21 | 22 | 23 | 24 | 25 | 26 | <para>Пакет Make содержит программу, управляющую генерацией исполняемых и других файлов, 27 | из исходного кода.</para> 28 | 29 | <segmentedlist> 30 | <segtitle>&buildtime;</segtitle> 31 | <segtitle>&diskspace;</segtitle> 32 | 33 | <seglistitem> 34 | <seg>&make-fin-sbu;</seg> 35 | <seg>&make-fin-du;</seg> 36 | </seglistitem> 37 | </segmentedlist> 38 | 39 | </sect2> 40 | 41 | <sect2 role="installation"> 42 | <title>Установка пакета Make 43 | 44 | Подготовьте Make к компиляции: 45 | 46 | ./configure --prefix=/usr 47 | 48 | Скомпилируйте пакет: 49 | 50 | make 51 | 52 | 54 | Чтобы протестировать пакет, выполните: 55 | 56 | chown -R tester . 57 | su tester -c "PATH=$PATH make check" 58 | 59 | Установите пакет: 60 | 61 | make install 62 | 63 | 64 | 65 | 66 | 67 | Содержимое пакета Make 68 | 69 | 70 | Установленные программы 71 | 72 | 73 | make 74 | 75 | 76 | 77 | 78 | Краткое описание 79 | 80 | 81 | 82 | 83 | make 84 | 85 | Автоматически определяет, какие части пакета необходимо (пере)компилировать 86 | и запускает соответствующие команды. 87 | 88 | make 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 |
98 | -------------------------------------------------------------------------------- /chapter08/man-pages.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | %general-entities; 6 | ]> 7 | 8 | 9 | 10 | 11 | 12 | man-pages 13 | &man-pages-version; 14 |
&man-pages-url;
15 |
16 | 17 | Man-pages-&man-pages-version; 18 | 19 | 20 | Man-pages 21 | 22 | 23 | 24 | 25 | 26 | <para>Пакет Man-pages содержит более 2400 справочных руководств.</para> 27 | 28 | <segmentedlist> 29 | <segtitle>&buildtime;</segtitle> 30 | <segtitle>&diskspace;</segtitle> 31 | 32 | <seglistitem> 33 | <seg>&man-pages-fin-sbu;</seg> 34 | <seg>&man-pages-fin-du;</seg> 35 | </seglistitem> 36 | </segmentedlist> 37 | 38 | </sect2> 39 | 40 | <sect2 role="installation"> 41 | <title>Установка пакета Man-pages 42 | 43 | Удалите две справочные страницы для функций хэширования паролей. 44 | Libxcrypt предоставит улучшенную версию этих справочных 45 | страниц: 46 | 47 | rm -v man3/crypt* 48 | 49 | Установите пакет Man-pages выполнив команду: 50 | 51 | make prefix=/usr install 52 | 53 | 54 | 55 | 56 | Содержимое пакета Man-pages 57 | 58 | 59 | Установленные файлы 60 | 61 | 62 | различные справочные страницы 63 | 64 | 65 | 66 | 67 | Краткое описание 68 | 69 | 70 | 71 | 72 | man pages 73 | 74 | Описывают функции языка программирования C, важные файлы устройств и важные файлы конфигурации. 75 | 76 | man pages 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 |
86 | -------------------------------------------------------------------------------- /chapter08/markupsafe.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | %general-entities; 6 | ]> 7 | 8 | 9 | 10 | 11 | 12 | markupsafe 13 | &markupsafe-version; 14 |
&markupsafe-url;
15 |
16 | 17 | MarkupSafe-&markupsafe-version; 18 | 19 | 20 | MarkupSafe 21 | 22 | 23 | 24 | 25 | 26 | <para>MarkupSafe — это модуль Python, реализующий безопасное использование строк в языках разметки XML/HTML/XHTML</para> 27 | 28 | <segmentedlist> 29 | <segtitle>&buildtime;</segtitle> 30 | <segtitle>&diskspace;</segtitle> 31 | <seglistitem> 32 | <seg>&markupsafe-fin-sbu;</seg> 33 | <seg>&markupsafe-fin-du;</seg> 34 | </seglistitem> 35 | </segmentedlist> 36 | 37 | </sect2> 38 | 39 | <sect2 role="installation"> 40 | <title>Установка пакета MarkupSafe 41 | 42 | Скомпилируйте MarkupSafe с помощью следующей команды: 43 | 44 | pip3 wheel -w dist --no-cache-dir --no-build-isolation --no-deps $PWD 45 | 46 | С этим пакетом не поставляется тестов. 47 | 48 | Установите пакет: 49 | 50 | pip3 install --no-index --no-user --find-links dist Markupsafe 51 | 52 | 53 | 54 | 55 | Содержимое пакета MarkupSafe 56 | 57 | 58 | Созданные каталоги 59 | 60 | 61 | 62 | /usr/lib/python&python-minor;/site-packages/MarkupSafe-&markupsafe-version;.dist-info 63 | 64 | 65 | 66 | 67 | 68 | 69 |
70 | 71 | -------------------------------------------------------------------------------- /chapter08/setuptools.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | %general-entities; 6 | ]> 7 | 8 | 9 | 10 | 11 | 12 | setuptools 13 | &setuptools-version; 14 |
&setuptools-url;
15 |
16 | 17 | Setuptools-&setuptools-version; 18 | 19 | 20 | Setuptools 21 | 22 | 23 | 24 | 25 | 26 | <para>Пакет Setuptools это инструмент, используемый для загрузки, сборки, установки, 27 | обновления и удаления пакетов Python.</para> 28 | 29 | <segmentedlist> 30 | <segtitle>&buildtime;</segtitle> 31 | <segtitle>&diskspace;</segtitle> 32 | <seglistitem> 33 | <seg>&setuptools-fin-sbu;</seg> 34 | <seg>&setuptools-fin-du;</seg> 35 | </seglistitem> 36 | </segmentedlist> 37 | 38 | </sect2> 39 | 40 | <sect2 role="installation"> 41 | <title>Установка пакета Setuptools 42 | 43 | Соберите пакет: 44 | 45 | pip3 wheel -w dist --no-cache-dir --no-build-isolation --no-deps $PWD 46 | 47 | Установите пакет: 48 | 49 | pip3 install --no-index --find-links dist setuptools 50 | 51 | 52 | 53 | Содержимое пакета Setuptools 54 | 55 | 56 | Созданные каталоги 57 | 58 | 59 | 60 | /usr/lib/python&python-minor;/site-packages/_distutils_hack, 61 | /usr/lib/python&python-minor;/site-packages/pkg_resources, 62 | /usr/lib/python&python-minor;/site-packages/setuptools, and 63 | /usr/lib/python&python-minor;/site-packages/setuptools-&setuptools-version;.dist-info 64 | 65 | 66 | 67 | 68 | 69 | 70 |
71 | 72 | -------------------------------------------------------------------------------- /chapter08/wheel.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | %general-entities; 6 | ]> 7 | 8 | 9 | 10 | 11 | 12 | wheel 13 | &wheel-version; 14 |
&wheel-url;
15 |
16 | 17 | Wheel-&wheel-version; 18 | 19 | 20 | wheel 21 | 22 | 23 | 24 | 25 | 26 | <para>Wheel — это библиотека Python, которая является эталонной реализацией 27 | стандарта упаковки программ на языке Python.</para> 28 | 29 | <segmentedlist> 30 | <segtitle>&buildtime;</segtitle> 31 | <segtitle>&diskspace;</segtitle> 32 | <seglistitem> 33 | <seg>&wheel-fin-sbu;</seg> 34 | <seg>&wheel-fin-du;</seg> 35 | </seglistitem> 36 | </segmentedlist> 37 | 38 | </sect2> 39 | 40 | <sect2 role="installation"> 41 | <title>Установка пакета Wheel 42 | 43 | Скомпилируйте Wheel с помощью следующей команды: 44 | 45 | pip3 wheel -w dist --no-cache-dir --no-build-isolation --no-deps $PWD 46 | 47 | Установите Wheel: 48 | 49 | pip3 install --no-index --find-links=dist wheel 50 | 51 | 52 | 53 | 54 | Содержимое пакета Wheel 55 | 56 | 57 | Установленные программы 58 | Созданные каталоги 59 | 60 | 61 | wheel 62 | 63 | /usr/lib/python&python-minor;/site-packages/wheel и 64 | /usr/lib/python&python-minor;/site-packages/wheel-&wheel-version;.dist-info 65 | 66 | 67 | 68 | 69 | 70 | Краткое описание 71 | 72 | 73 | 74 | 75 | wheel 76 | 77 | 78 | это утилита для распаковки, упаковки или преобразования wheel-архивов 79 | 80 | 81 | wheel 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 |
90 | 91 | -------------------------------------------------------------------------------- /chapter08/xml-parser.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | %general-entities; 6 | ]> 7 | 8 | 9 | 10 | 11 | 12 | xml-parser 13 | &xml-parser-version; 14 |
&xml-parser-url;
15 |
16 | 17 | XML::Parser-&xml-parser-version; 18 | 19 | 20 | XML::Parser 21 | 22 | 23 | 24 | 25 | 26 | <para>Модуль XML::Parser представляет собой Perl-интерфейс к XML-парсеру Джеймса Кларка Expat.</para> 27 | 28 | <segmentedlist> 29 | <segtitle>&buildtime;</segtitle> 30 | <segtitle>&diskspace;</segtitle> 31 | 32 | <seglistitem> 33 | <seg>&xml-parser-fin-sbu;</seg> 34 | <seg>&xml-parser-fin-du;</seg> 35 | </seglistitem> 36 | </segmentedlist> 37 | 38 | </sect2> 39 | 40 | <sect2 role="installation"> 41 | <title>Установка пакета XML::Parser 42 | 43 | Подготовьте XML::Parser к компиляции: 44 | 45 | perl Makefile.PL 46 | 47 | Скомпилируйте пакет: 48 | 49 | make 50 | 51 | Чтобы протестировать пакет, выполните: 52 | 53 | make test 54 | 55 | Установите пакет: 56 | 57 | make install 58 | 59 | 60 | 61 | 62 | Содержимое XML::Parser 63 | 64 | 65 | Установленный модуль 66 | 67 | 68 | Expat.so 69 | 70 | 71 | 72 | 73 | Краткое описание 74 | 75 | 76 | 77 | 78 | Expat 79 | 80 | предоставляет Perl интерфейс для Expat 81 | 82 | Expat 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 |
92 | -------------------------------------------------------------------------------- /chapter08/zlib.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | %general-entities; 6 | ]> 7 | 8 | 9 | 10 | 11 | 12 | zlib 13 | &zlib-version; 14 |
&zlib-url;
15 |
16 | 17 | Zlib-&zlib-version; 18 | 19 | 20 | Zlib 21 | 22 | 23 | 24 | 25 | 26 | <para>Пакет Zlib содержит подпрограммы сжатия и распаковки, используемые некоторыми программами.</para> 27 | 28 | <segmentedlist> 29 | <segtitle>&buildtime;</segtitle> 30 | <segtitle>&diskspace;</segtitle> 31 | 32 | <seglistitem> 33 | <seg>&zlib-fin-sbu;</seg> 34 | <seg>&zlib-fin-du;</seg> 35 | </seglistitem> 36 | </segmentedlist> 37 | 38 | </sect2> 39 | 40 | <sect2 role="installation"> 41 | <title>Установка пакета Zlib 42 | 43 | Подготовьте Zlib к компиляции: 44 | 45 | ./configure --prefix=/usr 46 | 47 | Скомпилируйте пакет: 48 | 49 | make 50 | 51 | Чтобы протестировать пакет, выполните: 52 | 53 | make check 54 | 55 | Установите пакет: 56 | 57 | make install 58 | 59 | Удалите бесполезную статическую библиотеку: 60 | 61 | rm -fv /usr/lib/libz.a 62 | 63 | 64 | 65 | 66 | Содержимое пакета Zlib 67 | 68 | 69 | Установленные библиотеки 70 | 71 | 72 | libz.so 73 | 74 | 75 | 76 | 77 | Краткое описание 78 | 79 | 80 | 81 | 82 | libz 83 | 84 | Содержит функции сжатия и распаковки, используемые некоторыми программами. 85 | 86 | libz 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 |
96 | -------------------------------------------------------------------------------- /chapter09/chapter09.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | %general-entities; 6 | ]> 7 | 8 | 9 | 10 | 11 | 12 | Системные настройки 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | -------------------------------------------------------------------------------- /chapter09/etcshells.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | %general-entities; 6 | ]> 7 | 8 | 9 | 10 | 11 | Создание файла /etc/shells 12 | 13 | 14 | /etc/shells 15 | 16 | 17 | Файл shells содержит список оболочек входа в систему. Приложения 18 | используют этот файл для определения корректности оболочки. Для каждой оболочки должна присутствовать 19 | одна строка, состоящая из пути к файлу оболочки относительно корня структуры каталогов (/). 20 | 21 | Например, chsh обращается к этому файлу, чтобы определить, может ли 22 | непривилегированный пользователь изменить оболочку входа для своей учетной записи. Если имя 23 | команды не указано в списке, пользователю будет отказано в возможности изменять оболочки. 24 | 25 | Это обязательное условие для таких приложений, как GDM, которые 26 | не заполняют список пользователей, если ему не удаётся найти /etc/shells, 27 | или демонов FTP, которые традиционно запрещают доступ пользователям с оболочками, не включенными 28 | в этот файл. 29 | 30 | cat > /etc/shells << "EOF" 31 | # Begin /etc/shells 32 | 33 | /bin/sh 34 | /bin/bash 35 | 36 | # End /etc/shells 37 | EOF 38 | 39 | 40 | -------------------------------------------------------------------------------- /chapter09/introductiond.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | %general-entities; 6 | ]> 7 | 8 | 9 | 10 | 11 | Введение 12 | 13 | В этой главе рассматриваются конфигурационные файлы и службы systemd. 14 | Во-первых, представлены общие конфигурационные файлы, необходимые для настройки сети 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | Во-вторых, обсуждаются вопросы, касающиеся правильной настройки устройств. 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | В-третьих, представлены настройки системных часов и раскладки клавиатуры. 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | В-четвертых, представлено краткое описание сценариев и конфигурационных 51 | файлов, используемых при входе пользователя в систему 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | И, наконец, обсуждается настройка поведения systemd. 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | -------------------------------------------------------------------------------- /chapter10/chapter10.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | %general-entities; 6 | ]> 7 | 8 | 9 | 10 | 11 | 12 | Делаем систему LFS загрузочной 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /chapter10/introduction.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | %general-entities; 6 | ]> 7 | 8 | 9 | 10 | 11 | Введение 12 | 13 | Пришло время сделать систему LFS загрузочной. В этой главе обсуждается создание 14 | файла /etc/fstab, сборка ядра для новой системы и установка 15 | загрузчика GRUB, чтобы система LFS могла быть выбрана для загрузки при запуске. 16 | 17 | 18 | -------------------------------------------------------------------------------- /chapter10/kernel/.gitignore: -------------------------------------------------------------------------------- 1 | __pycache__ 2 | s-kernel-version 3 | -------------------------------------------------------------------------------- /chapter10/kernel/Makefile: -------------------------------------------------------------------------------- 1 | INPUT = $(wildcard *.toml) 2 | OUTPUT = $(patsubst %.toml, %.xml, $(INPUT)) 3 | 4 | ifeq ($(KERNEL_TREE),) 5 | $(error "must set KERNEL_TREE=/path/to/kernel/source") 6 | endif 7 | 8 | all: $(OUTPUT) 9 | 10 | kernel.version: s-kernel-version; @true 11 | 12 | .PHONY: s-kernel-version 13 | s-kernel-version: 14 | ./kernel_version.py $(KERNEL_TREE) > tmp-kernel.version 15 | if ! diff tmp-kernel.version kernel.version ; then \ 16 | mv tmp-kernel.version kernel.version; \ 17 | else \ 18 | rm tmp-kernel.version; \ 19 | fi 20 | touch s-kernel-version 21 | 22 | %.xml.tmp: %.toml kernel-config.py kernel_version.py kernel.version 23 | ./kernel-config.py $(KERNEL_TREE) $< > $@ 24 | 25 | %.xml: %.xml.tmp 26 | mv $< $@ 27 | -------------------------------------------------------------------------------- /chapter10/kernel/highmem.toml: -------------------------------------------------------------------------------- 1 | HIGHMEM64G='X' 2 | -------------------------------------------------------------------------------- /chapter10/kernel/highmem.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | Processor type and features ---> 7 | High Memory Support ---> 8 | (X) 64GB [HIGHMEM64G] 9 | -------------------------------------------------------------------------------- /chapter10/kernel/kernel.version: -------------------------------------------------------------------------------- 1 | 6.12.1 2 | -------------------------------------------------------------------------------- /chapter10/kernel/kernel_version.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | 3 | def kernel_version(path): 4 | version = None 5 | patchlevel = None 6 | sublevel = None 7 | 8 | with open(path + 'Makefile') as f: 9 | for line in f: 10 | if line.startswith('VERSION ='): 11 | version = line[len('VERSION ='):].strip() 12 | elif line.startswith('PATCHLEVEL ='): 13 | patchlevel = line[len('PATCHLEVEL ='):].strip() 14 | elif line.startswith('SUBLEVEL ='): 15 | sublevel = line[len('SUBLEVEL ='):].strip() 16 | 17 | assert(version and patchlevel and sublevel) 18 | return '.'.join([version, patchlevel, sublevel]) 19 | 20 | if __name__ == '__main__': 21 | from sys import argv 22 | 23 | path = argv[1] 24 | if path[:-1] != '/': 25 | path += '/' 26 | 27 | print(kernel_version(path)) 28 | -------------------------------------------------------------------------------- /chapter10/kernel/nvme.toml: -------------------------------------------------------------------------------- 1 | BLK_DEV_NVME='*' 2 | -------------------------------------------------------------------------------- /chapter10/kernel/nvme.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | Device Drivers ---> 7 | NVME Support ---> 8 | <*> NVM Express block device [BLK_DEV_NVME] 9 | -------------------------------------------------------------------------------- /chapter10/kernel/systemd.toml: -------------------------------------------------------------------------------- 1 | # This part should be sync with sysv.toml 2 | WERROR=' ' 3 | PSI='*' 4 | PSI_DEFAULT_DISABLED=' ' 5 | IKHEADERS=' ' 6 | CGROUPS='*' 7 | MEMCG='*' 8 | EXPERT=' ' 9 | RELOCATABLE='*' 10 | RANDOMIZE_BASE='*' 11 | STACKPROTECTOR='*' 12 | STACKPROTECTOR_STRONG='*' 13 | UEVENT_HELPER=' ' 14 | DEVTMPFS='*' 15 | DEVTMPFS_MOUNT='*' 16 | SYSFB_SIMPLEFB='*' 17 | DRM='*' 18 | DRM_PANIC='*' 19 | DRM_PANIC_SCREEN='kmsg' 20 | DRM_FBDEV_EMULATION='*' 21 | DRM_SIMPLEDRM='*' 22 | FRAMEBUFFER_CONSOLE='*' 23 | NET='*' 24 | INET='*' 25 | IPV6='*' 26 | FW_LOADER=' *' 27 | FW_LOADER_USER_HELPER=' ' 28 | DMIID='*' 29 | INOTIFY_USER='*' 30 | TMPFS='*' 31 | TMPFS_POSIX_ACL='*' 32 | CGROUP_SCHED='* ' 33 | 34 | revision='systemd' 35 | 36 | [RT_GROUP_SCHED] 37 | value = ' ' 38 | comment = 'This may cause some systemd features malfunction' 39 | -------------------------------------------------------------------------------- /chapter10/kernel/sysv.toml: -------------------------------------------------------------------------------- 1 | WERROR=' ' 2 | PSI='*' 3 | PSI_DEFAULT_DISABLED=' ' 4 | IKHEADERS=' ' 5 | CGROUPS='*' 6 | MEMCG='*' 7 | EXPERT=' ' 8 | RELOCATABLE='*' 9 | RANDOMIZE_BASE='*' 10 | STACKPROTECTOR='*' 11 | STACKPROTECTOR_STRONG='*' 12 | UEVENT_HELPER=' ' 13 | DEVTMPFS='*' 14 | DEVTMPFS_MOUNT='*' 15 | SYSFB_SIMPLEFB='*' 16 | DRM='*' 17 | DRM_PANIC='*' 18 | DRM_PANIC_SCREEN='kmsg' 19 | DRM_FBDEV_EMULATION='*' 20 | DRM_SIMPLEDRM='*' 21 | FRAMEBUFFER_CONSOLE='*' 22 | 23 | revision='sysv' 24 | -------------------------------------------------------------------------------- /chapter10/kernel/x2apic.toml: -------------------------------------------------------------------------------- 1 | X86_X2APIC='*' 2 | PCI='*' 3 | PCI_MSI='*' 4 | IOMMU_SUPPORT='*' 5 | IRQ_REMAP='*' 6 | -------------------------------------------------------------------------------- /chapter10/kernel/x2apic.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | Processor type and features ---> 7 | [*] Support x2apic [X86_X2APIC] 8 | 9 | Device Drivers ---> 10 | [*] PCI support ---> [PCI] 11 | [*] Message Signaled Interrupts (MSI and MSI-X) [PCI_MSI] 12 | [*] IOMMU Hardware Support ---> [IOMMU_SUPPORT] 13 | [*] Support for Interrupt Remapping [IRQ_REMAP] 14 | -------------------------------------------------------------------------------- /chapter11/chapter11.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | %general-entities; 6 | ]> 7 | 8 | 9 | 10 | 11 | 12 | Заключение 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /chapter11/getcounted.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | %general-entities; 6 | ]> 7 | 8 | 9 | 10 | 11 | Вступите в ряды пользователей LFS 12 | 13 | Теперь, когда вы закончили изучение книги LFS, хотите добавить себя в список 14 | пользователей LFS? Перейдите по ссылке 15 | и зарегистрируйтесь. Введите ваше имя и версию LFS, которую вы использовали. 16 | 17 | Давайте выполним перезагрузку в систему LFS. 18 | 19 | 20 | -------------------------------------------------------------------------------- /chapter11/theend.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | %general-entities; 6 | ]> 7 | 8 | 9 | 10 | 11 | Заключение 12 | 13 | 14 | /etc/lfs-release 15 | 16 | 17 | 18 | /etc/lsb-release 19 | 20 | 21 | 22 | /etc/os-release 23 | 24 | 25 | Отлично! Новая система LFS установлена! Желаем успехов в работе с вашей новой, 26 | блестящей, самостоятельно собранной Linux системой. 27 | 28 | Может быть хорошей идеей создать файл 29 | /etc/lfs-release. Имея этот файл, вам (и нам, если вам в какой-то 30 | момент понадобится обратиться за помощью) будет проще узнать, какая версия LFS 31 | установлена в системе. Создайте этот файл, выполнив следующую команду: 32 | 33 | echo &version; > /etc/lfs-release 34 | 35 | Следующие два файла, содержащие описание установленной системы, могут использоваться 36 | пакетами, устанавливаемыми позже, либо в бинарном виде, либо путем их сборки. 37 | 38 | Первый показывает статус вашей новой системы по отношению к стандарту LSB. Чтобы создать 39 | этот файл, выполните: 40 | 41 | cat > /etc/lsb-release << "EOF" 42 | DISTRIB_ID="Linux From Scratch" 43 | DISTRIB_RELEASE="&version;" 44 | DISTRIB_CODENAME="<your name here>" 45 | DISTRIB_DESCRIPTION="Linux From Scratch" 46 | EOF 47 | 48 | Второй содержит примерно ту же информацию и используется 49 | systemd и некоторыми графическими средами рабочего стола. Чтобы создать 50 | этот файл, выполните: 51 | 52 | cat > /etc/os-release << "EOF" 53 | NAME="Linux From Scratch" 54 | VERSION="&version;" 55 | ID=lfs 56 | PRETTY_NAME="Linux From Scratch &version;" 57 | VERSION_CODENAME="<your name here>" 58 | HOME_URL="&lfs-root-ru;" 59 | EOF 60 | 61 | Обязательно настройте значения 'DISTRIB_CODENAME' и 'VERSION_CODENAME', 62 | чтобы сделать название вашей новой системы уникальным. 63 | 64 | 65 | -------------------------------------------------------------------------------- /git-version.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | if [ "$1" = sysv ]; then 4 | SYSV="INCLUDE" 5 | SYSTEMD="IGNORE " 6 | elif [ "$1" = systemd ]; then 7 | SYSV="IGNORE " 8 | SYSTEMD="INCLUDE" 9 | else 10 | echo You must provide either \"sysv\" or \"systemd\" as argument 11 | exit 1 12 | fi 13 | 14 | echo "" > conditional.ent 15 | echo "" >> conditional.ent 16 | 17 | if [ -e LFS-RELEASE ]; then 18 | exit 0 19 | fi 20 | 21 | if ! git status > /dev/null; then 22 | # Either it's not a git repository or git is unavailable. 23 | # Just workaround. 24 | echo " version.ent 25 | echo "" >> version.ent 26 | echo "]]>" >> version.ent 27 | echo "> version.ent 28 | echo "" >> version.ent 29 | echo "]]>" >> version.ent 30 | echo "" >> version.ent 31 | echo "" >> version.ent 32 | exit 0 33 | fi 34 | 35 | export LC_ALL=ru_RU.utf8 36 | export TZ=Europe/Moscow 37 | 38 | commit_date=$(git show -s --format=format:"%cd" --date=local) 39 | 40 | year=$(date --date "$commit_date" "+%Y") 41 | month=$(date --date "$commit_date" "+%B") 42 | month_digit=$(date --date "$commit_date" "+%m") 43 | day=$(date --date "$commit_date" "+%d" | sed 's/^0//') 44 | 45 | case $day in 46 | "1" | "21" | "31" ) suffix="st";; 47 | "2" | "22" ) suffix="nd";; 48 | "3" | "23" ) suffix="rd";; 49 | * ) suffix="th";; 50 | esac 51 | 52 | full_date="$day $month $year" 53 | 54 | sha="$(git describe --abbrev=1)" 55 | rev=$(echo "$sha" | sed 's/-g[^-]*$//') 56 | version="$rev" 57 | versiond="$rev-systemd" 58 | 59 | if [ "$(git diff HEAD | wc -l)" != "0" ]; then 60 | version="$version-wip" 61 | versiond="$versiond-wip" 62 | fi 63 | 64 | echo " version.ent 65 | echo "" >> version.ent 66 | echo "]]>" >> version.ent 67 | echo "> version.ent 68 | echo "" >> version.ent 69 | echo "]]>" >> version.ent 70 | echo "" >> version.ent 71 | echo "" >> version.ent 72 | 73 | [ -z "$DIST" ] || echo $version > "$DIST" 74 | -------------------------------------------------------------------------------- /images/caution.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Poltern/lfs-ru/07d6d16cf47786f3e21d075d9defab577481b28f/images/caution.png -------------------------------------------------------------------------------- /images/chevron-bottom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Poltern/lfs-ru/07d6d16cf47786f3e21d075d9defab577481b28f/images/chevron-bottom.png -------------------------------------------------------------------------------- /images/chevron-left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Poltern/lfs-ru/07d6d16cf47786f3e21d075d9defab577481b28f/images/chevron-left.png -------------------------------------------------------------------------------- /images/chevron-right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Poltern/lfs-ru/07d6d16cf47786f3e21d075d9defab577481b28f/images/chevron-right.png -------------------------------------------------------------------------------- /images/chevron-top.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Poltern/lfs-ru/07d6d16cf47786f3e21d075d9defab577481b28f/images/chevron-top.png -------------------------------------------------------------------------------- /images/grid-three-up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Poltern/lfs-ru/07d6d16cf47786f3e21d075d9defab577481b28f/images/grid-three-up.png -------------------------------------------------------------------------------- /images/important.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Poltern/lfs-ru/07d6d16cf47786f3e21d075d9defab577481b28f/images/important.png -------------------------------------------------------------------------------- /images/menu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Poltern/lfs-ru/07d6d16cf47786f3e21d075d9defab577481b28f/images/menu.png -------------------------------------------------------------------------------- /images/note.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Poltern/lfs-ru/07d6d16cf47786f3e21d075d9defab577481b28f/images/note.png -------------------------------------------------------------------------------- /images/tip.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Poltern/lfs-ru/07d6d16cf47786f3e21d075d9defab577481b28f/images/tip.png -------------------------------------------------------------------------------- /images/tux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Poltern/lfs-ru/07d6d16cf47786f3e21d075d9defab577481b28f/images/tux.png -------------------------------------------------------------------------------- /images/warning.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Poltern/lfs-ru/07d6d16cf47786f3e21d075d9defab577481b28f/images/warning.png -------------------------------------------------------------------------------- /index.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | %general-entities; 5 | ]> 6 | 7 | 8 | 9 | 10 | 13 | 14 | 15 | 16 | Введение 17 | 18 | 19 | 20 | 21 | 22 | Подготовка к сборке 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | Сборка кросс-компилятора и набора временных инструментов 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | Сборка системы LFS 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | Приложения 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | -------------------------------------------------------------------------------- /lfs-latest.php: -------------------------------------------------------------------------------- 1 | lfs-latest-git.php -------------------------------------------------------------------------------- /make-aux-files.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | rm -f lfs-bootscripts*.tar.?z* 4 | 5 | # Get base file name and move bootscripts directory to that name 6 | version=`grep "ENTITY lfs-bootscripts-version" packages.ent | head -n1| cut -d'"' -f2` 7 | mv bootscripts lfs-bootscripts-$version 8 | 9 | # Create the tarball and clean up 10 | tar -cJf lfs-bootscripts-$version.tar.xz --exclude .svn lfs-bootscripts-$version 11 | mv lfs-bootscripts-$version bootscripts 12 | 13 | #rm -f udev-config*.bz2 14 | 15 | # Get file name and move udev config directory to that name 16 | #version=`grep "ENTITY udev-config " packages.ent |cut -d'"' -f2` 17 | #mv udev-config $version 18 | 19 | # Create the tarball and clean up 20 | #tar -cjf $version.tar.bz2 --exclude .svn $version 21 | #mv $version udev-config 22 | 23 | -------------------------------------------------------------------------------- /obfuscate.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # obfuscate.sh 4 | # obfuscate email addresses in XML/HTML 5 | # Script written (and slight perl modification) by Archaic 6 | # Modified from "sed -i" to old style "sed -e" by Manuel Canales 7 | # to prevent hangs on very long files, like nonchunked books. 8 | # Original Perl expression by Anderson Lizardo 9 | # Released under the GNU General Public License 10 | # 11 | # This script currently only seeks out mailto: addresses. If those same 12 | # addresses also appear in plaintext, we need to obfuscate those as well. 13 | # 14 | # This script was made for a very specific purpose so I was a bit lazy in 15 | # writing the regex's. 16 | # 17 | # Please send comments, enhancements, etc. to the above address 18 | 19 | #set -e # Bail on all errors 20 | 21 | # First, ensure that we are given a file to process 22 | # if [ $# -lt 1 ]; then 23 | # echo -e "\nYou must provide an input file." 24 | # exit 1 25 | # fi 26 | 27 | # Nothing like a backup plan! 28 | #cp "$1" "$1".bak 29 | 30 | for i in `grep -o '"mailto:.*@.*"' ${1} |sed -e 's|^"mailto:||' -e 's|"$||'`; do 31 | link=`echo $i | perl -pe 's/[^\n]/"\\\&#".ord($&)."\;"/ge'` 32 | plaintext=`echo $i | sed -e 's|@| AT |' -e 's|\.| D0T |g'` 33 | cp ${1}{,.tmp} 34 | sed -e "s|mailto:$i|mailto:$link|" \ 35 | -e "s|$i|$plaintext|" ${1}.tmp > ${1} 36 | rm ${1}.tmp 37 | done 38 | #rm $FILE.tmp 39 | #exit 0 40 | -------------------------------------------------------------------------------- /part3intro/introduction.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | %general-entities; 6 | ]> 7 | 8 | 9 | 10 | 11 | Введение 12 | 13 | Эта часть разделена на три этапа: во-первых, сборка кросс-компилятора и 14 | связанных с ним библиотек; во-вторых, использование этого набора инструментов 15 | для сборки нескольких утилит таким образом, чтобы изолировать их от основного 16 | дистрибутива; в-третьих, вход в среду chroot (что ещё больше улучшает 17 | изоляцию от хоста), и сборка оставшихся инструментов, необходимых для 18 | создания конечной системы. 19 | 20 | Именно здесь начинается настоящая работа по сборке новой 21 | системы. Требуется очень тщательно следить за тем, чтобы инструкции выполнялись 22 | точно так, как они приведены в книге. Вы должны попытаться понять, что они делают, 23 | и каким бы ни было ваше желание скорее закончить сборку, вам следует воздержаться от 24 | слепого набора команд. Читайте документацию, если вы что-то не понимаете. Кроме 25 | того, следите за результатом выполнения команд, отправляя лог в файл 26 | с помощью утилиты tee. Это упрощает отладку, если что-то 27 | пойдет не так. 28 | 29 | Следующий раздел представляет собой техническое введение в процесс сборки, а следующий 30 | за ним, содержит очень важные общие инструкции по компиляции. 31 | 32 | 33 | -------------------------------------------------------------------------------- /part3intro/part3intro.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | %general-entities; 6 | ]> 7 | 8 | 9 | 10 | 11 | 12 | Важный предварительный материал 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /patches.ent: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 34 | 35 | 36 | 37 | 42 | 43 | 44 | 45 | 50 | -------------------------------------------------------------------------------- /pdf-fixups.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | if [ $# -lt 1 ] ; then 4 | echo "This script needs the location of the fo file to update" 5 | exit 1 6 | fi 7 | 8 | 9 | FILE=$1 10 | 11 | LINE=$( grep -n "DO NOT EDIT" $FILE | cut -f1 -d: ) 12 | LINE=$(( LINE - 1 )) 13 | 14 | # Not needed 15 | #sed -i -e "$LINE s/monospace/&\" font-size=\"9pt/" $FILE 16 | sed -i -e "s/monospace/&\" font-size=\"9pt/g" $FILE 17 | 18 | # Break a block of code at the right place 19 | sed -i -e 's@gcc --version@&@' $FILE 20 | -------------------------------------------------------------------------------- /pdf/change_config.py: -------------------------------------------------------------------------------- 1 | import os 2 | import argparse 3 | 4 | 5 | parser = argparse.ArgumentParser(description='Change links in configuration file') 6 | parser.add_argument('base_file', type=str, help='path to base file (project_dir/pdf)') 7 | parser.add_argument('new_file', type=str, help='path to new file') 8 | 9 | args = parser.parse_args() 10 | 11 | user_name = os.environ["USER"] 12 | home_dir = "home" 13 | tmp_dir = "tmp" 14 | 15 | 16 | def change_config_file(): 17 | old_xml_file = open(args.base_file, "r", encoding="utf-8") 18 | xml_file = "" 19 | 20 | for line in old_xml_file: 21 | split_str = line.split('=') 22 | 23 | if split_str[0].endswith("embed-url"): 24 | start_loc = split_str[1][:9] 25 | end_loc = split_str[1][9:] 26 | split_str[1] = "{}{}/{}/{}/{}".format(start_loc, home_dir, user_name, tmp_dir, end_loc) 27 | 28 | xml_file += '='.join(split_str) 29 | else: 30 | xml_file += line 31 | 32 | old_xml_file.close() 33 | 34 | return xml_file 35 | 36 | 37 | def create_new_config_file(file): 38 | new_xml_file = open(args.new_file, "w", encoding="utf-8") 39 | 40 | new_xml_file.writelines(file) 41 | 42 | new_xml_file.close() 43 | 44 | 45 | create_new_config_file(change_config_file()) 46 | 47 | -------------------------------------------------------------------------------- /pdf/fonts/Liberation/LiberationSans-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Poltern/lfs-ru/07d6d16cf47786f3e21d075d9defab577481b28f/pdf/fonts/Liberation/LiberationSans-Bold.ttf -------------------------------------------------------------------------------- /pdf/fonts/Liberation/LiberationSans-BoldItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Poltern/lfs-ru/07d6d16cf47786f3e21d075d9defab577481b28f/pdf/fonts/Liberation/LiberationSans-BoldItalic.ttf -------------------------------------------------------------------------------- /pdf/fonts/Liberation/LiberationSans-Italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Poltern/lfs-ru/07d6d16cf47786f3e21d075d9defab577481b28f/pdf/fonts/Liberation/LiberationSans-Italic.ttf -------------------------------------------------------------------------------- /pdf/fonts/Liberation/LiberationSans-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Poltern/lfs-ru/07d6d16cf47786f3e21d075d9defab577481b28f/pdf/fonts/Liberation/LiberationSans-Regular.ttf -------------------------------------------------------------------------------- /pdf/fonts/PT-Astra-Sans/pt-astra-sans_bold-italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Poltern/lfs-ru/07d6d16cf47786f3e21d075d9defab577481b28f/pdf/fonts/PT-Astra-Sans/pt-astra-sans_bold-italic.ttf -------------------------------------------------------------------------------- /pdf/fonts/PT-Astra-Sans/pt-astra-sans_bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Poltern/lfs-ru/07d6d16cf47786f3e21d075d9defab577481b28f/pdf/fonts/PT-Astra-Sans/pt-astra-sans_bold.ttf -------------------------------------------------------------------------------- /pdf/fonts/PT-Astra-Sans/pt-astra-sans_italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Poltern/lfs-ru/07d6d16cf47786f3e21d075d9defab577481b28f/pdf/fonts/PT-Astra-Sans/pt-astra-sans_italic.ttf -------------------------------------------------------------------------------- /pdf/fonts/PT-Astra-Sans/pt-astra-sans_regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Poltern/lfs-ru/07d6d16cf47786f3e21d075d9defab577481b28f/pdf/fonts/PT-Astra-Sans/pt-astra-sans_regular.ttf -------------------------------------------------------------------------------- /pdf/fonts/PT-Astra-Serif/pt-astra-serif_bold-italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Poltern/lfs-ru/07d6d16cf47786f3e21d075d9defab577481b28f/pdf/fonts/PT-Astra-Serif/pt-astra-serif_bold-italic.ttf -------------------------------------------------------------------------------- /pdf/fonts/PT-Astra-Serif/pt-astra-serif_bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Poltern/lfs-ru/07d6d16cf47786f3e21d075d9defab577481b28f/pdf/fonts/PT-Astra-Serif/pt-astra-serif_bold.ttf -------------------------------------------------------------------------------- /pdf/fonts/PT-Astra-Serif/pt-astra-serif_italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Poltern/lfs-ru/07d6d16cf47786f3e21d075d9defab577481b28f/pdf/fonts/PT-Astra-Serif/pt-astra-serif_italic.ttf -------------------------------------------------------------------------------- /pdf/fonts/PT-Astra-Serif/pt-astra-serif_regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Poltern/lfs-ru/07d6d16cf47786f3e21d075d9defab577481b28f/pdf/fonts/PT-Astra-Serif/pt-astra-serif_regular.ttf -------------------------------------------------------------------------------- /pdf/fonts/Roboto_Mono/RobotoMono-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Poltern/lfs-ru/07d6d16cf47786f3e21d075d9defab577481b28f/pdf/fonts/Roboto_Mono/RobotoMono-Bold.ttf -------------------------------------------------------------------------------- /pdf/fonts/Roboto_Mono/RobotoMono-BoldItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Poltern/lfs-ru/07d6d16cf47786f3e21d075d9defab577481b28f/pdf/fonts/Roboto_Mono/RobotoMono-BoldItalic.ttf -------------------------------------------------------------------------------- /pdf/fonts/Roboto_Mono/RobotoMono-Italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Poltern/lfs-ru/07d6d16cf47786f3e21d075d9defab577481b28f/pdf/fonts/Roboto_Mono/RobotoMono-Italic.ttf -------------------------------------------------------------------------------- /pdf/fonts/Roboto_Mono/RobotoMono-Light.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Poltern/lfs-ru/07d6d16cf47786f3e21d075d9defab577481b28f/pdf/fonts/Roboto_Mono/RobotoMono-Light.ttf -------------------------------------------------------------------------------- /pdf/fonts/Roboto_Mono/RobotoMono-LightItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Poltern/lfs-ru/07d6d16cf47786f3e21d075d9defab577481b28f/pdf/fonts/Roboto_Mono/RobotoMono-LightItalic.ttf -------------------------------------------------------------------------------- /pdf/fonts/Roboto_Mono/RobotoMono-Medium.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Poltern/lfs-ru/07d6d16cf47786f3e21d075d9defab577481b28f/pdf/fonts/Roboto_Mono/RobotoMono-Medium.ttf -------------------------------------------------------------------------------- /pdf/fonts/Roboto_Mono/RobotoMono-MediumItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Poltern/lfs-ru/07d6d16cf47786f3e21d075d9defab577481b28f/pdf/fonts/Roboto_Mono/RobotoMono-MediumItalic.ttf -------------------------------------------------------------------------------- /pdf/fonts/Roboto_Mono/RobotoMono-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Poltern/lfs-ru/07d6d16cf47786f3e21d075d9defab577481b28f/pdf/fonts/Roboto_Mono/RobotoMono-Regular.ttf -------------------------------------------------------------------------------- /pdf/fonts/Roboto_Mono/RobotoMono-Thin.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Poltern/lfs-ru/07d6d16cf47786f3e21d075d9defab577481b28f/pdf/fonts/Roboto_Mono/RobotoMono-Thin.ttf -------------------------------------------------------------------------------- /pdf/fonts/Roboto_Mono/RobotoMono-ThinItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Poltern/lfs-ru/07d6d16cf47786f3e21d075d9defab577481b28f/pdf/fonts/Roboto_Mono/RobotoMono-ThinItalic.ttf -------------------------------------------------------------------------------- /process-scripts.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Boot scripts 4 | for s in bootscripts/lfs/init.d/* \ 5 | bootscripts/lfs/sysconfig/* \ 6 | bootscripts/lfs/lib/services/* \ 7 | bootscripts/lfs/sbin/* \ 8 | udev-lfs/*.rules 9 | do 10 | script=$(basename $s) 11 | 12 | # Skip directories 13 | [ $script == 'network-devices' ] && continue 14 | #[ $script == 'services' ] && continue 15 | 16 | # Disambiguate duplicate file names 17 | [ $s == 'bootscripts/lfs/sysconfig/rc' ] && script='rc-sysinit'; 18 | [ $s == 'bootscripts/lfs/sysconfig/modules' ] && script='modules-sysinit'; 19 | [ $s == 'bootscripts/lfs/sysconfig/udev_retry' ] && script='config-udev-retry'; 20 | 21 | sed -e 's/\&/\&\;/g' -e 's//\>\;/g' \ 22 | -e "s/'/\&apos\;/g" -e 's/"/\"\;/g' -e 's/\t/ /g' \ 23 | $s > appendices/${script}.script 24 | done 25 | -------------------------------------------------------------------------------- /prologue/architecture.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | %general-entities; 6 | ]> 7 | 8 | 9 | 10 | 11 | Целевые архитектуры LFS 12 | 13 | Основными целевыми архитектурами LFS являются процессоры AMD/Intel x86 14 | (32-разрядные) и x86_64 (64-разрядные). Однако, известно, что 15 | инструкции, приведенные в этой книге, с некоторыми изменениями работают с процессорами 16 | Power PC и ARM. Для создания системы, использующей один из этих процессоров, 17 | основным предварительным условием, в дополнение к описанным на следующей 18 | странице, является существующая система Linux, например, собранная ранее LFS, 19 | Ubuntu, Red Hat/Fedora, SuSE или другой дистрибутив, 20 | ориентированный на имеющуюся у вас архитектуру. Также обратите внимание, что 21 | 32-разрядный дистрибутив можно установить и использовать в качестве 22 | хост-системы на 64-разрядном компьютере AMD/Intel. 23 | 24 | При сборке LFS выигрыш от сборки на 64-битной системе по сравнению с 25 | 32-битной системой минимален. Например, в тестовой сборке LFS-9.1 в системе 26 | на базе процессора Core i7-4790 с использованием 4 ядер были получены 27 | следующие статистические данные: 28 | 29 | Архитектура Время сборки Размер сборки 30 | x86 239.9 минут 3.6 ГБ 31 | x64 233.2 минут 4.4 ГБ 32 | 33 | Как видите, на том же оборудовании 64-битная сборка всего на 3% быстрее 34 | и на 22% больше, чем 32-битная. Если вы планируете использовать LFS в качестве 35 | LAMP-сервера или брандмауэра, 32-разрядной сборки может быть достаточно. С 36 | другой стороны, для сборки и/или запуска некоторых пакетов в BLFS теперь 37 | требуется более 4 ГБ ОЗУ, поэтому, если вы планируете использовать LFS в 38 | качестве настольной ОС, авторы LFS рекомендуют собирать 64-битную систему. 39 | 40 | По умолчанию 64-разрядная сборка LFS, считается чистой 41 | 64-разрядной системой. То есть она поддерживает только 64-разрядные 42 | исполняемые файлы. Сборка multilib системы требует компиляции 43 | многих программ дважды - один раз для 32-битной и один раз для 64-битной. 44 | Напрямую в книге данная опция не поддерживается, потому что это будет только 45 | мешать образовательной цели этой книги, предлагающей инструкции, необходимые 46 | для сборки базовой системы. Некоторые редакторы LFS/BLFS поддерживают 47 | ответвление LFS для multilib, которое доступно по адресу , но это 49 | более продвинутая тема. 50 | 51 | 52 | -------------------------------------------------------------------------------- /prologue/audience.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | %general-entities; 6 | ]> 7 | 8 | 9 | 10 | 11 | Аудитория, на которую рассчитана эта книга 12 | 13 | Есть множество причин, почему вам стоило бы прочитать эту книгу. Один из 14 | вопросов, который задают пользователи, звучит так: Зачем тратить время на 15 | сборку Linux-системы вручную с нуля, если можно просто загрузить и установить 16 | существующую? 17 | 18 | Важной целью существования этого проекта является помощь в 19 | изучении того, как работает система Linux изнутри. Создание системы LFS 20 | помогает продемонстрировать, что заставляет работать Linux, как все работает 21 | вместе и зависит друг от друга. Одна из лучших вещей, которую может дать этот 22 | учебный опыт, — это возможность настроить систему Linux в соответствии с 23 | вашими уникальными потребностями. 24 | 25 | Другое ключевое преимущество - LFS предоставляет более глубокий 26 | контроль, не полагаясь на чью-либо реализацию Linux. С LFS вы находитесь в 27 | кресле водителя, и Вы управляете каждым аспектом системы. 28 | 29 | LFS позволяет создавать очень компактные системы Linux. При установке 30 | обычных дистрибутивов вам часто приходится устанавливать очень много программ, 31 | которые, вероятно, никогда не используются. Эти программы тратят ресурсы впустую. Вы 32 | можете возразить, что с сегодняшними жесткими дисками и процессорами такие 33 | ресурсы не имеют значения. Иногда, однако, вы все еще ограничены размером. 34 | Подумайте о загрузочных компакт-дисках, USB-накопителях и встраиваемых системах. 35 | Это области, в которых LFS может быть полезным. 36 | 37 | Ещё одним преимуществом собственной сборки Linux является безопасность. 38 | При компиляции каждого компонента системы из исходного кода вы можете всё 39 | проверить и применить необходимые патчи. Больше не нужно ждать, когда 40 | кто-то другой скомпилирует пакет с требуемыми исправлениями. Если вы не 41 | изучите патч и не примените его самостоятельно, нет гарантий, что новый пакет 42 | будет собран корректно и устранит проблему. 43 | 44 | Цель Linux From Scratch — создать законченную и пригодную для 45 | использования систему базового уровня. Если вы не хотите создавать свою 46 | собственную систему Linux с нуля, вы, тем не менее, можете извлечь пользу 47 | из информации, содержащейся в этой книге. 48 | 49 | Есть много других веских причин для создания собственной системы LFS. 50 | В конце концов, образование, безусловно, является самой важной из них. 51 | Продолжая работать с LFS, вы откроете для себя силу, которую действительно 52 | приносят информация и знания. 53 | 54 | 55 | 56 | -------------------------------------------------------------------------------- /prologue/bookinfo.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | %general-entities; 6 | ]> 7 | 8 | 9 | Линукс с нуля 10 | Версия &version; 11 | Дата публикации &releasedate; 12 | 13 | 14 | 15 | Создатель: Gerard 16 | Beekmans 17 | 18 | 19 | Главный редактор: Bruce 20 | Dubbs 21 | 22 | 23 | 24 | Редактор: Douglas R. 25 | Reno 26 | 27 | 28 | Редактор: DJ 29 | Lucas 30 | 31 | 32 | Автор перевода: Владимир 33 | Перцев 34 | 35 | 36 | 37 | 38 | ©rightdate; 39 | Gerard Beekmans 40 | 41 | 42 | 43 | 44 | 45 | 46 | Все права защищены. 47 | 48 | Эта книга распространяется на условиях . 49 | Инструкции для компьютера могут быть извлечены из книги на условиях 50 | . 51 | 52 | Linux является зарегистрированным товарным знаком 53 | Линуса Торвальдса. 54 | 55 | 56 | 57 | 58 | -------------------------------------------------------------------------------- /prologue/dedication.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | %general-entities; 6 | ]> 7 | 8 | 9 | Посвящение 10 | Эта книга посвящена 11 | 12 | -------------------------------------------------------------------------------- /prologue/errata.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | %general-entities; 6 | ]> 7 | 8 | 9 | 10 | 11 | Ошибки и рекомендации по безопасности 12 | 13 | Программное обеспечение, используемое для создания системы LFS, постоянно 14 | обновляется и совершенствуется. Предупреждения безопасности и исправления ошибок 15 | могут появиться после выхода книги LFS. Чтобы проверить, нуждаются ли пакеты или 16 | инструкции в этом выпуске LFS в каких-либо изменениях для устранения уязвимостей в 17 | системе безопасности или исправления других ошибок, посетите , 18 | прежде чем приступить к сборке. Вы должны внести требуемые изменения и применить их 19 | к соответствующему разделу книги по мере сборки системы LFS. 20 | 21 | Кроме того, редакторы Linux From Scratch ведут список уязвимостей безопасности, 22 | обнаруженных после выхода книги. Чтобы проверить наличие каких-либо 23 | известных уязвимостей безопасности, посетите , прежде чем продолжить 24 | сборку. И, если вы будете использовать систему LFS в качестве реальной настольной или 25 | серверной системы, вам следует обращаться к рекомендациям и устранять любые уязвимости 26 | в системе безопасности, даже когда система LFS полностью собрана. 27 | 28 | 29 | -------------------------------------------------------------------------------- /prologue/organization.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | %general-entities; 6 | ]> 7 | 8 | 9 | 10 | 11 | Структура 12 | 13 | Эта книга разделена на несколько частей. 14 | 15 | 16 | Часть I - Введение 17 | 18 | Эта часть содержит важные замечания о том, как выполнить установку LFS. 19 | Также здесь представлена метаинформация о книге 20 | 21 | 22 | 23 | Часть II - Подготовка к сборке 24 | 25 | Часть II описывает, как подготовиться к процессу сборки — создать разделы, 26 | загрузить пакеты и выполнить компиляцию временных инструментов. 27 | 28 | 29 | 30 | Часть III - Создание кросс-тулчейна LFS и временных инструментов 31 | 32 | Часть III содержит инструкции по созданию инструментов, необходимых для 33 | создания конечной системы LFS. 34 | 35 | 36 | 37 | Часть IV - Сборка системы LFS 38 | 39 | Часть IV проводит читателя через сборку системы LFS—компиляцию и 40 | установку всех пакетов один за другим, настройку сценариев загрузки и установку 41 | ядра. Полученная в результате система Linux является основой, на которой можно 42 | собрать другое программное обеспечение для расширения возможностей системы. В 43 | конце этой книги есть простой в использовании справочник со списком всех программ, 44 | библиотек и важных файлов, которые были установлены. 45 | 46 | 47 | 48 | Часть V - Приложения 49 | 50 | Часть V содержит информацию о самой книге, включая акронимы и термины, 51 | благодарности, зависимости пакетов, список загрузочных сценариев LFS, лицензии 52 | на распространение книги и исчерпывающий указатель пакетов, программ, библиотек 53 | и сценариев. 54 | 55 | 56 | 57 | -------------------------------------------------------------------------------- /prologue/preface.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | %general-entities; 6 | ]> 7 | 8 | 9 | 10 | 11 | 12 | Предисловие 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /prologue/prerequisites.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | %general-entities; 6 | ]> 7 | 8 | 9 | 10 | 11 | Требования к уровню подготовки 12 | 13 | Создание системы LFS — непростая задача. Это требует определенного 14 | уровня знаний системного администрирования Unix для решения проблем и 15 | правильного выполнения перечисленных команд. В частности, как абсолютный 16 | минимум, Вы должны уметь пользоваться командной оболочкой для копирования 17 | или перемещения файлов и каталогов, просмотра содержимого каталогов и файлов 18 | и изменения текущего каталога. Также ожидается, что у вас есть достаточные 19 | знания об использовании и установке программного обеспечения в Linux. 20 | 21 | Поскольку книга LFS предполагает наличие хотя бы этого 22 | базового уровня навыков, различные форумы поддержки LFS вряд ли смогут 23 | предоставить вам большую помощь в этих вопросах. Вы обнаружите, что ваши 24 | вопросы, касающиеся таких базовых знаний, скорее всего, останутся без 25 | ответа (или вас просто направят к списку основных материалов для 26 | предварительного ознакомления). 27 | 28 | Перед созданием системы LFS мы настоятельно рекомендуем прочитать следующие 29 | статьи: 30 | 31 | 32 | 33 | HOWTO по сборке программного обеспечения 34 | 35 | 36 | Это исчерпывающее руководство по сборке и установке 37 | универсальных программ Unix под Linux. 38 | Несмотря на то что руководство написано достаточно давно, оно по-прежнему дает 39 | хороший обзор основных методов, применяемых для сборки и установки программного 40 | обеспечения. 41 | 42 | 43 | 44 | Руководство для начинающих по установке из исходников 45 | 46 | 47 | В этом руководстве содержится хороший обзор основных навыков и 48 | методов, необходимых для сборки программ из исходного кода 49 | 50 | 61 | 62 | 63 | 64 | -------------------------------------------------------------------------------- /stylesheets/lfs-chunked.xsl: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 8 | 9 | 10 | 11 | lfs 12 | 13 | 14 | -------------------------------------------------------------------------------- /stylesheets/lfs-nochunks.xsl: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 8 | 9 | 10 | 11 | lfs 12 | 13 | 14 | -------------------------------------------------------------------------------- /stylesheets/lfs-pdf.xsl: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 8 | 9 | 10 | 11 | lfs 12 | 13 | 14 | -------------------------------------------------------------------------------- /stylesheets/lfs-xsl/chunk-master.xsl: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | -------------------------------------------------------------------------------- /stylesheets/lfs-xsl/chunk-slave.xsl: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | book toc,title 45 | preface toc 46 | part toc 47 | chapter toc 48 | appendix nop 49 | sect1 nop 50 | sect2 nop 51 | sect3 nop 52 | sect4 nop 53 | sect5 nop 54 | section nop 55 | 56 | 57 | 58 | 1 59 | 60 | 61 | 3 62 | 63 | 64 | -------------------------------------------------------------------------------- /stylesheets/lfs-xsl/lfs-print.css: -------------------------------------------------------------------------------- 1 | @import url(lfs.css); 2 | 3 | .navfooter, .headerlinks { 4 | display: none; 5 | } 6 | 7 | div.navheader { 8 | position: absolute; 9 | } 10 | 11 | div.navheader ul, 12 | div.navheader ul{ 13 | display: none; 14 | } 15 | -------------------------------------------------------------------------------- /stylesheets/lfs-xsl/profile.xsl: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | 8 | 9 | 10 | 11 | 12 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 24 | 25 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | -------------------------------------------------------------------------------- /stylesheets/lfs-xsl/xhtml/lfs-admon.xsl: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 15 | ../images/ 16 | 17 | 18 | 19 | 20 | 24 | 25 | 26 | 27 | 28 | Note 29 | Warning 30 | Caution 31 | Tip 32 | Important 33 | Note 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 |
42 | [{$alt}] 43 | 44 | 45 | 46 | 47 |

48 | 49 |

50 | 51 |
52 |
53 | 54 |
55 | -------------------------------------------------------------------------------- /stylesheets/md5sum.xsl: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 18 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | -------------------------------------------------------------------------------- /stylesheets/patcheslist.xsl: -------------------------------------------------------------------------------- 1 | 2 | 4 | %general-entities; 5 | ]> 6 | 7 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | #! /bin/bash 19 | 20 | function copy 21 | { 22 | cp $1 $2 >>copyerrs 2>&1 23 | } 24 | 25 | umask 002 26 | 27 | # Create dest.dir if it doesn't exist 28 | # Remove old patches 29 | # Copy the patches 30 | # Ensure correct ownership 31 | install -d -m 775 -g lfswww 32 | 33 | && 34 | cd 35 | 36 | && 37 | rm -f *.patch copyerrs && 38 | 39 | 40 | 41 | 42 | chgrp lfswww *.patch && 43 | if [ `wc -l copyerrs | sed 's/ *//' | cut -f1 -d' '` -gt 0 ]; then 44 | mail -s "Missing LFS patches" lfs-book@lists.linuxfromscratch.org < copyerrs 45 | fi 46 | 47 | exit 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 57 | 58 | 60 | 61 | 62 | - 63 | 64 | 65 | copy /srv/www/www.linuxfromscratch.org/patches/downloads/ 66 | 67 | / 68 | 69 | . 70 | 71 | 72 | 73 | 74 | 75 | -------------------------------------------------------------------------------- /stylesheets/wget-list.xsl: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 19 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /tidy.conf: -------------------------------------------------------------------------------- 1 | indent-spaces: 2 2 | wrap: 78 3 | tab-size: 8 4 | write-back: yes 5 | markup: yes 6 | indent: yes 7 | uppercase-tags: no 8 | logical-emphasis: no 9 | tidy-mark: no 10 | numeric-entities: no 11 | show-warnings: no 12 | quiet: yes 13 | newline: LF 14 | -------------------------------------------------------------------------------- /udev-lfs/55-lfs.rules: -------------------------------------------------------------------------------- 1 | # /etc/udev/rules.d/55-lfs.rules: Rule definitions for LFS. 2 | 3 | # Core kernel devices 4 | 5 | # This causes the system clock to be set as soon as /dev/rtc becomes available. 6 | SUBSYSTEM=="rtc", ACTION=="add", MODE="0644", RUN+="/etc/rc.d/init.d/setclock start" 7 | KERNEL=="rtc", ACTION=="add", MODE="0644", RUN+="/etc/rc.d/init.d/setclock start" 8 | 9 | -------------------------------------------------------------------------------- /udev-lfs/55-lfs.txt: -------------------------------------------------------------------------------- 1 | Purpose of rules file: 2 | 3 | Most of the rules installed by Udev itself create devices with the correct 4 | properties. This file contains rules that have not been merged upstream yet. 5 | 6 | Description of rules: 7 | 8 | By default, Udev creates device nodes with UID 0, GID 0, and permissions 0660. 9 | 10 | The RTC-related rule causes the setclock bootscript to be run as soon as the 11 | RTC device has been created by Udev, meaning that times in log files, for 12 | example, are as accurate as possible as quickly as possible. 13 | 14 | A word of caution: A comma must separate each part of the rule. A rule can span 15 | multiple lines if the newline is escaped by a backslash. 16 | -------------------------------------------------------------------------------- /udev-lfs/Makefile.lfs: -------------------------------------------------------------------------------- 1 | # Custom systemd Makefile that installs udev rules for LFS 2 | # Bruce Dubbs 2014-04-02 3 | 4 | # vim: tabstop=3 5 | 6 | VERSION=20230818 7 | SHELL=/bin/bash 8 | 9 | ifeq ($(V),) 10 | VB = @ 11 | else 12 | VB = 13 | endif 14 | 15 | all: 16 | @echo "Use the install target" 17 | 18 | install: 19 | @mkdir -pv $(DESTDIR)/usr/lib/udev/rules.d \ 20 | $(DESTDIR)/etc/udev/rules.d \ 21 | $(DESTDIR)/usr/share/doc/udev-$(VERSION)/lfs 22 | 23 | # Copy rules 24 | @cp -v udev-lfs-$(VERSION)/*.rules $(DESTDIR)/etc/udev/rules.d 25 | @cp -v udev-lfs-$(VERSION)/init-net-rules.sh \ 26 | udev-lfs-$(VERSION)/write_net_rules \ 27 | udev-lfs-$(VERSION)/rule_generator.functions $(DESTDIR)/usr/lib/udev 28 | 29 | # Copy documentation 30 | @cp -v udev-lfs-$(VERSION)/README $(DESTDIR)/usr/share/doc/udev-$(VERSION)/lfs 31 | @cp -v udev-lfs-$(VERSION)/*.txt $(DESTDIR)/usr/share/doc/udev-$(VERSION)/lfs 32 | -------------------------------------------------------------------------------- /udev-lfs/README: -------------------------------------------------------------------------------- 1 | The udev-lfs set of files is a customization of systemd. 2 | In 2012, udev was merged with systemd and a build methodology 3 | incompatible with LFS. These files add custom udev rules 4 | for LFS. 5 | 6 | These files are distributed in the form of a tar file available 7 | from the LFS file mirrors. The tarball is created with: 8 | 9 | mkdir /tmp/udev-lfs-$VERSION 10 | cp -av * /tmp/udev-lfs-$VERSION 11 | tar -jcf /tmp/udev-lfs-$VERSION.tar.bz2 -C /tmp udev-lfs-$VERSION 12 | 13 | Makefile.lfs - The LFS Makefile. Installs udev rules for LFS. 14 | 15 | contrib - Useful rules from debian 16 | contrib/debian 17 | contrib/debian/write_cd_aliases 18 | 19 | 55-lfs.rules - LFS custom rules 20 | write_net_rules - Scripts for LFS rules 21 | write_cd_rules 22 | rule_generator.functions 23 | 24 | 55-lfs.txt - Documentation for LFS installed rules 25 | 26 | ChangeLog - Log of changes to 55-lfs-rules 27 | 28 | init-net-rules.sh - A script for establishing persistent network 29 | rules before the first LFS boot 30 | 31 | -------------------------------------------------------------------------------- /udev-lfs/contrib/debian/81-cdrom.rules: -------------------------------------------------------------------------------- 1 | # /etc/udev/rules.d/81-cdrom.rules: Set CD-ROM permissions and get device capabilities 2 | 3 | ACTION=="add", SUBSYSTEM=="block", ENV{ID_TYPE}=="cd", IMPORT{program}="cdrom_id --export $tempnode", GROUP="cdrom" 4 | -------------------------------------------------------------------------------- /udev-lfs/contrib/debian/83-cdrom-symlinks.rules: -------------------------------------------------------------------------------- 1 | # /etc/udev/rules.d/83-cdrom-symlinks.rules: Determine CD drive capability. 2 | 3 | ACTION!="add", GOTO="cd_aliases_generator_end" 4 | SUBSYSTEM!="block", GOTO="cd_aliases_generator_end" 5 | ENV{GENERATED}=="?*", GOTO="cd_aliases_generator_end" 6 | 7 | # Fail the uevent if the autogenerated rules cannot be saved 8 | ENV{ID_CDROM}=="?*", PROGRAM="/bin/grep -c ' / [^[:space:]]* rw' /proc/mounts", RESULT!="2", RUN+="/bin/false", GOTO="cd_aliases_generator_end" 9 | 10 | ENV{ID_CDROM}=="?*", PROGRAM="write_cd_aliases", SYMLINK+="%c" 11 | 12 | LABEL="cd_aliases_generator_end" 13 | --------------------------------------------------------------------------------