├── .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 |
30 |
31 |
32 | &buildtime;
33 | &diskspace;
34 |
35 |
36 | &bash-tmp-sbu;
37 | &bash-tmp-du;
38 |
39 |
40 |
41 |
42 |
43 |
44 | Установка пакета 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 | Подробная информация об этом пакете находится в
87 |
88 |
89 |
90 |
91 |
92 |
--------------------------------------------------------------------------------
/chapter06/chapter06.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 |
--------------------------------------------------------------------------------
/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 |
30 |
31 |
32 | &buildtime;
33 | &diskspace;
34 |
35 |
36 | &diffutils-tmp-sbu;
37 | &diffutils-tmp-du;
38 |
39 |
40 |
41 |
42 |
43 |
44 | Установка пакета 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 | Подробная информация об этом пакете находится в
66 |
67 |
68 |
69 |
70 |
71 |
--------------------------------------------------------------------------------
/chapter06/findutils.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 | %general-entities;
6 | ]>
7 |
8 |
9 |
10 |
11 |
12 | findutils
13 | &findutils-version;
14 | &findutils-url;
15 |
16 |
17 | Findutils-&findutils-version;
18 |
19 |
20 | Findutils
21 | tools
22 |
23 |
24 |
25 |
26 |
27 |
30 |
31 |
32 | &buildtime;
33 | &diskspace;
34 |
35 |
36 | &findutils-tmp-sbu;
37 | &findutils-tmp-du;
38 |
39 |
40 |
41 |
42 |
43 |
44 | Установка пакета 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 | Подробная информация об этом пакете находится в
67 |
68 |
69 |
70 |
71 |
72 |
--------------------------------------------------------------------------------
/chapter06/gawk.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 | %general-entities;
6 | ]>
7 |
8 |
9 |
10 |
11 |
12 | gawk
13 | &gawk-version;
14 | &gawk-url;
15 |
16 |
17 | Gawk-&gawk-version;
18 |
19 |
20 | Gawk
21 | tools
22 |
23 |
24 |
25 |
26 |
27 |
30 |
31 |
32 | &buildtime;
33 | &diskspace;
34 |
35 |
36 | &gawk-tmp-sbu;
37 | &gawk-tmp-du;
38 |
39 |
40 |
41 |
42 |
43 |
44 | Установка пакета 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 | Подробная информация об этом пакете находится в
70 |
71 |
72 |
73 |
74 |
75 |
--------------------------------------------------------------------------------
/chapter06/grep.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 | %general-entities;
6 | ]>
7 |
8 |
9 |
10 |
11 |
12 | grep
13 | &grep-version;
14 | &grep-url;
15 |
16 |
17 | Grep-&grep-version;
18 |
19 |
20 | Grep
21 | tools
22 |
23 |
24 |
25 |
26 |
27 |
30 |
31 |
32 | &buildtime;
33 | &diskspace;
34 |
35 |
36 | &grep-tmp-sbu;
37 | &grep-tmp-du;
38 |
39 |
40 |
41 |
42 |
43 |
44 | Установка пакета 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 | Подробная информация об этом пакете находится в
67 |
68 |
69 |
70 |
71 |
72 |
--------------------------------------------------------------------------------
/chapter06/gzip.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 | %general-entities;
6 | ]>
7 |
8 |
9 |
10 |
11 |
12 | gzip
13 | &gzip-version;
14 | &gzip-url;
15 |
16 |
17 | Gzip-&gzip-version;
18 |
19 |
20 | Gzip
21 | tools
22 |
23 |
24 |
25 |
26 |
27 |
30 |
31 |
32 | &buildtime;
33 | &diskspace;
34 |
35 |
36 | &gzip-tmp-sbu;
37 | &gzip-tmp-du;
38 |
39 |
40 |
41 |
42 |
43 |
44 | Установка пакета 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 | Подробная информация об этом пакете находится в
64 |
65 |
66 |
67 |
68 |
69 |
--------------------------------------------------------------------------------
/chapter06/introduction.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 | %general-entities;
6 | ]>
7 |
8 |
9 |
10 |
11 | Введение
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 |
30 |
31 |
32 | &buildtime;
33 | &diskspace;
34 |
35 |
36 | &m4-tmp-sbu;
37 | &m4-tmp-du;
38 |
39 |
40 |
41 |
42 |
43 |
44 | Установка пакета 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 | Подробная информация об этом пакете находится в
70 |
71 |
72 |
73 |
74 |
75 |
--------------------------------------------------------------------------------
/chapter06/make.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 | %general-entities;
6 | ]>
7 |
8 |
9 |
10 |
11 | make
12 | &make-version;
13 | &make-url;
14 |
15 |
16 | Make-&make-version;
17 |
18 |
19 | Make
20 | tools
21 |
22 |
23 |
24 |
25 |
26 |
29 |
30 |
31 | &buildtime;
32 | &diskspace;
33 |
34 |
35 | &make-tmp-sbu;
36 | &make-tmp-du;
37 |
38 |
39 |
40 |
41 |
42 |
43 | Установка пакета 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 | Подробная информация об этом пакете находится в
79 |
80 |
81 |
82 |
83 |
84 |
--------------------------------------------------------------------------------
/chapter06/patch.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 | %general-entities;
6 | ]>
7 |
8 |
9 |
10 |
11 |
12 | patch
13 | &patch-version;
14 | &patch-url;
15 |
16 |
17 | Patch-&patch-version;
18 |
19 |
20 | Patch
21 | tools
22 |
23 |
24 |
25 |
26 |
27 |
30 |
31 |
32 | &buildtime;
33 | &diskspace;
34 |
35 |
36 | &patch-tmp-sbu;
37 | &patch-tmp-du;
38 |
39 |
40 |
41 |
42 |
43 |
44 | Установка пакета 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 | Подробная информация об этом пакете находится в
67 |
68 |
69 |
70 |
71 |
72 |
--------------------------------------------------------------------------------
/chapter06/sed.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 | %general-entities;
6 | ]>
7 |
8 |
9 |
10 |
11 |
12 | sed
13 | &sed-version;
14 | &sed-url;
15 |
16 |
17 | Sed-&sed-version;
18 |
19 |
20 | Sed
21 | tools
22 |
23 |
24 |
25 |
26 |
27 |
30 |
31 |
32 | &buildtime;
33 | &diskspace;
34 |
35 |
36 | &sed-tmp-sbu;
37 | &sed-tmp-du;
38 |
39 |
40 |
41 |
42 |
43 |
44 | Установка пакета 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 | Подробная информация об этом пакете находится в
66 |
67 |
68 |
69 |
70 |
71 |
--------------------------------------------------------------------------------
/chapter06/tar.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 | %general-entities;
6 | ]>
7 |
8 |
9 |
10 |
11 |
12 | tar
13 | &tar-version;
14 | &tar-url;
15 |
16 |
17 | Tar-&tar-version;
18 |
19 |
20 | Tar
21 | tools
22 |
23 |
24 |
25 |
26 |
27 |
30 |
31 |
32 | &buildtime;
33 | &diskspace;
34 |
35 |
36 | &tar-tmp-sbu;
37 | &tar-tmp-du;
38 |
39 |
40 |
41 |
42 |
43 |
44 | Установка пакета 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 | Подробная информация об этом пакете находится в
66 |
67 |
68 |
69 |
70 |
--------------------------------------------------------------------------------
/chapter06/xz.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 | %general-entities;
6 | ]>
7 |
8 |
9 |
10 |
11 |
12 | xz
13 | &xz-version;
14 | &xz-url;
15 |
16 |
17 | Xz-&xz-version;
18 |
19 |
20 | Xz
21 | tools
22 |
23 |
24 |
25 |
26 |
27 |
30 |
31 |
32 | &buildtime;
33 | &diskspace;
34 |
35 |
36 | &xz-tmp-sbu;
37 | &xz-tmp-du;
38 |
39 |
40 |
41 |
42 |
43 |
44 | Установка пакета 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 | Подробная информация об этом пакете находится в
71 |
72 |
73 |
74 |
75 |
--------------------------------------------------------------------------------
/chapter07/bison.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 | %general-entities;
6 | ]>
7 |
8 |
9 |
10 |
11 |
12 | bison
13 | &bison-version;
14 | &bison-url;
15 |
16 |
17 | Bison-&bison-version;
18 |
19 |
20 | Bison
21 | tools
22 |
23 |
24 |
25 |
26 |
27 |
30 |
31 |
32 | &buildtime;
33 | &diskspace;
34 |
35 |
36 | &bison-tmp-sbu;
37 | &bison-tmp-du;
38 |
39 |
40 |
41 |
42 |
43 |
44 | Установка пакета 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 | Подробная информация об этом пакете находится в
78 |
79 |
80 |
81 |
82 |
83 |
--------------------------------------------------------------------------------
/chapter07/changingowner.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 | %general-entities;
6 | ]>
7 |
8 |
9 |
10 |
11 | Смена владельца
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 |
30 |
31 |
32 | &buildtime;
33 | &diskspace;
34 |
35 |
36 | &gettext-tmp-sbu;
37 | &gettext-tmp-du;
38 |
39 |
40 |
41 |
42 |
43 |
44 | Установка пакета 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 | Подробная информация об этом пакете находится в
81 |
82 |
83 |
84 |
85 |
--------------------------------------------------------------------------------
/chapter07/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 | систем ядра, которые будут смонтированы перед входом в среду 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 |
30 |
31 |
32 | &buildtime;
33 | &diskspace;
34 |
35 |
36 | &texinfo-tmp-sbu;
37 | &texinfo-tmp-du;
38 |
39 |
40 |
41 |
42 |
43 |
44 | Установка пакета 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 | Подробная информация об этом пакете находится в
64 |
65 |
66 |
67 |
68 |
--------------------------------------------------------------------------------
/chapter08/aboutdebug.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 | %general-entities;
6 | ]>
7 |
8 |
9 |
10 |
11 | Об отладочных символах
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 | Gperf генерирует идеальную хэш-функцию из набора ключей.
27 |
28 |
29 | &buildtime;
30 | &diskspace;
31 |
32 |
33 | &gperf-fin-sbu;
34 | &gperf-fin-du;
35 |
36 |
37 |
38 |
39 |
40 |
41 | Установка пакета 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 | Jinja2 - это модуль Python, который реализует простой язык шаблонов pythonic
27 |
28 |
29 | &buildtime;
30 | &diskspace;
31 |
32 | &jinja2-fin-sbu;
33 | &jinja2-fin-du;
34 |
35 |
36 |
37 |
38 |
39 |
40 | Установка пакета 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 | Пакет Libpipeline содержит библиотеку для гибкого и удобного управления
27 | подпроцессами.
28 |
29 |
30 | &buildtime;
31 | &diskspace;
32 |
33 |
34 | &libpipeline-fin-sbu;
35 | &libpipeline-fin-du;
36 |
37 |
38 |
39 |
40 |
41 |
42 | Установка пакета 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 | Пакет Make содержит программу, управляющую генерацией исполняемых и других файлов,
27 | из исходного кода.
28 |
29 |
30 | &buildtime;
31 | &diskspace;
32 |
33 |
34 | &make-fin-sbu;
35 | &make-fin-du;
36 |
37 |
38 |
39 |
40 |
41 |
42 | Установка пакета 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 | Пакет Man-pages содержит более 2400 справочных руководств.
27 |
28 |
29 | &buildtime;
30 | &diskspace;
31 |
32 |
33 | &man-pages-fin-sbu;
34 | &man-pages-fin-du;
35 |
36 |
37 |
38 |
39 |
40 |
41 | Установка пакета 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 | MarkupSafe — это модуль Python, реализующий безопасное использование строк в языках разметки XML/HTML/XHTML
27 |
28 |
29 | &buildtime;
30 | &diskspace;
31 |
32 | &markupsafe-fin-sbu;
33 | &markupsafe-fin-du;
34 |
35 |
36 |
37 |
38 |
39 |
40 | Установка пакета 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 | Пакет Setuptools это инструмент, используемый для загрузки, сборки, установки,
27 | обновления и удаления пакетов Python.
28 |
29 |
30 | &buildtime;
31 | &diskspace;
32 |
33 | &setuptools-fin-sbu;
34 | &setuptools-fin-du;
35 |
36 |
37 |
38 |
39 |
40 |
41 | Установка пакета 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 | Wheel — это библиотека Python, которая является эталонной реализацией
27 | стандарта упаковки программ на языке Python.
28 |
29 |
30 | &buildtime;
31 | &diskspace;
32 |
33 | &wheel-fin-sbu;
34 | &wheel-fin-du;
35 |
36 |
37 |
38 |
39 |
40 |
41 | Установка пакета 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 | Модуль XML::Parser представляет собой Perl-интерфейс к XML-парсеру Джеймса Кларка Expat.
27 |
28 |
29 | &buildtime;
30 | &diskspace;
31 |
32 |
33 | &xml-parser-fin-sbu;
34 | &xml-parser-fin-du;
35 |
36 |
37 |
38 |
39 |
40 |
41 | Установка пакета 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 | Пакет Zlib содержит подпрограммы сжатия и распаковки, используемые некоторыми программами.
27 |
28 |
29 | &buildtime;
30 | &diskspace;
31 |
32 |
33 | &zlib-fin-sbu;
34 | &zlib-fin-du;
35 |
36 |
37 |
38 |
39 |
40 |
41 | Установка пакета 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' -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 |
--------------------------------------------------------------------------------