Linux From Scratch
Добавить в закладки К обложке
- Пролог - Страница 1
- Кому эта книга будет интересна - Страница 2
- Кому будет неинтересно читать эту книгу - Страница 3
- Организация - Страница 4
- Часть 1 – Вступление - Страница 5
- Часть 2 – Установка базовой системы LFS - Страница 6
- Часть 3 – Приложения - Страница 7
- Часть I – Вступление - Страница 8
- Как мы будем работать - Страница 9
- Условные обозначения, используемые в книге - Страница 10
- Версия книги - Страница 11
- Зеркала - Страница 12
- Changelog - Страница 13
- Списки рассылки и архивы - Страница 18
- Сервер новостей - Страница 20
- FAQ - Страница 21
- Как с нами связаться - Страница 22
- Глава 2. Важная информация - Страница 23
- Про SBU - Страница 24
- Где хранить загруженные программы - Страница 25
- Как инсталлировать программы - Страница 26
- Поддерживаемые платформы - Страница 27
- Как попросить о помощи - Страница 28
- II. Часть II – Установка системы LFS - Страница 29
- Необходимые пакеты - Страница 30
- Глава 4. Готовим новый раздел - Страница 31
- Создаем новый раздел - Страница 32
- Создаем файловую систему на новом разделе - Страница 33
- Монтируем раздел - Страница 34
- Глава 5. Подготовка системы LFS - Страница 35
- Почему мы используем статические ссылки? - Страница 36
- Создаем директорию $LFS/static - Страница 37
- Установка всех компонентов в режиме непривилегированного пользователя - Страница 38
- Установка Bash-2.05a - Страница 39
- Установка Binutils-2.13 - Страница 40
- Установка Bzip2-1.0.2 - Страница 42
- Установка Diffutils-2.8.1 - Страница 43
- Установка Fileutils-4.1 - Страница 44
- Установка Findutils-4.1 - Страница 46
- Установка Gawk-3.1.1 - Страница 47
- Установка GCC-3.2 - Страница 48
- Установка Grep-2.5 - Страница 50
- Установка Gzip-1.2.4a - Страница 51
- Установка Make-3.79.1 - Страница 52
- Установка Patch-2.5.4 - Страница 53
- Установка Sed-3.02 - Страница 54
- Установка Sh-utils-2.0 - Страница 55
- Установка Tar-1.13 - Страница 56
- Установка Texinfo-4.2 - Страница 57
- Установка Textutils-2.1 - Страница 58
- Установка Util-linux-2.11u - Страница 59
- Глава 6. Установка основных компонентов системы - Страница 60
- Отладочные символы - Страница 61
- Вход в среду chroot - Страница 62
- Изменение прав - Страница 63
- Создание директорий - Страница 64
- Монтирование файловой системы proc - Страница 65
- Создание символической ссылки mtab - Страница 66
- Создание символических ссылок bash и sh - Страница 67
- Создание файлов passwd и group - Страница 68
- Создание устройств (Makedev-1.7) - Страница 69
- Установка Linux-2.4.19 - Страница 70
- Установка Man-pages-1.52 - Страница 72
- Установка Glibc-2.2.5 - Страница 73
- Установка Zlib-1.1.4 - Страница 77
- Установка Findutils-4.1 - Страница 78
- Установка Gawk-3.1.1 - Страница 79
- Установка Ncurses-5.2 - Страница 80
- Установка Vim-6.1 - Страница 81
- Установка Bison-1.35 - Страница 82
- Установка Less-374 - Страница 83
- Установка Groff-1.18 - Страница 84
- Установка Textutils-2.1 - Страница 86
- Установка Sed-3.02 - Страница 87
- Установка Flex-2.5.4a - Страница 88
- Установка Binutils-2.13 - Страница 89
- Установка Fileutils-4.1 - Страница 91
- Установка Sh-utils-2.0 - Страница 92
- Установка Gettext-0.11.5 - Страница 93
- Установка Net-tools-1.60 - Страница 94
- Установка Perl-5.8.0 - Страница 95
- Установка руководства по потокам Linux, вер. 2.2.5 - Страница 96
- Установка M4-1.4 - Страница 97
- Установка Texinfo-4.2 - Страница 98
- Установка Autoconf-2.53 - Страница 99
- Установка Automake-1.6.3 - Страница 100
- Установка Bash-2.05a - Страница 101
- Установка File-3.39 - Страница 102
- Установка Libtool-1.4.2 - Страница 103
- Установка Bin86-0.16.3 - Страница 104
- Установка Bzip2-1.0.2 - Страница 105
- Установка Ed-0.2 - Страница 106
- Установка Kbd-1.06 - Страница 107
- Установка Diffutils-2.8.1 - Страница 108
- Установка E2fsprogs-1.27 - Страница 109
- Установка Grep-2.5 - Страница 110
- Установка Gzip-1.2.4a - Страница 111
- Установка Man-1.5k - Страница 112
- Установка Lilo-22.2 - Страница 113
- Установка Make-3.79.1 - Страница 114
- Установка Modutils-2.4.19 - Страница 115
- Установка Netkit-base-0.17 - Страница 116
- Установка Patch-2.5.4 - Страница 117
- Установка Procinfo-18 - Страница 118
- Установка Procps-2.0.7 - Страница 119
- Установка Psmisc-21 - Страница 120
- Установка Shadow-4.0.3 - Страница 121
- Установка Sysklogd-1.4.1 - Страница 123
- Установка Sysvinit-2.84 - Страница 124
- Установка Tar-1.13 - Страница 125
- Установка Util-linux-2.11u - Страница 126
- Установка LFS-Bootscripts-1.10 - Страница 128
- Конфигурация основных программ - Страница 129
- Глава 7. Конфигурация загрузочных скриптов - Страница 131
- Как взаимодействует процесс загрузки со скриптами? - Страница 132
- Настройка скрипта setclock - Страница 133
- Что надо для загрузки loadkeys скриптов? - Страница 134
- Настройка скрипта sysklogd - Страница 135
- Конфигурация скриптов localnet. - Страница 136
- Cоздание файла /etc/hosts - Страница 137
- Настройка сетевых скриптов - Страница 138
- Глава 8. Делаем систему LFS загрузочной. - Страница 139
- Создание файла /etc/fstab - Страница 140
- Установка ядра Linux-2.4.19 - Страница 141
- Делаем систему LFS загрузочной. - Страница 142
- Глава 9. Заключение. - Страница 143
- Вписываем себя в пользователи LFS - Страница 144
- Перезагрузка системы - Страница 145
- III. Часть III – Приложения - Страница 146
- Autoconf - Страница 147
- Automake - Страница 148
- Bash - Страница 149
- Bin86 - Страница 150
- Binutils - Страница 151
- Bison - Страница 152
- Bzip2 - Страница 153
- Diffutils - Страница 154
- E2fsprogs - Страница 155
- Ed - Страница 156
- File - Страница 157
- Fileutils - Страница 158
- Findutils - Страница 159
- Flex - Страница 160
- Gawk - Страница 161
- GCC - Страница 162
- Gettext - Страница 163
- Glibc - Страница 164
- Grep - Страница 166
- Groff - Страница 167
- Gzip - Страница 168
- Kbd - Страница 169
- Less - Страница 170
- LFS-Bootscripts - Страница 171
- Libtool - Страница 172
- Lilo - Страница 173
- Linux (ядро) - Страница 174
- M4 - Страница 175
- Make - Страница 176
- MAKEDEV - Страница 177
- Man - Страница 178
- Man-pages - Страница 179
- Modutils - Страница 180
- Ncurses - Страница 181
- Netkit-base - Страница 182
- Net-tools - Страница 183
- Patch - Страница 184
- Perl - Страница 185
- Procinfo - Страница 186
- Procps - Страница 187
- Psmisc - Страница 188
- Sed - Страница 189
- Shadow - Страница 190
- Sh-utils - Страница 191
- Sysklogd - Страница 192
- Sysvinit - Страница 193
- Tar - Страница 194
- Texinfo - Страница 195
- Textutils - Страница 196
- Util-linux - Страница 197
- Vim - Страница 199
- Zlib - Страница 200
- Приложение B. Ресурсы - Страница 201
- Книги - Страница 202
- HOWTO и руководства - Страница 203
- Прочее - Страница 204
Почему мы используем статические ссылки?
(Спасибо Plasmatic'у за разъяснение этого вопроса в одном из списков рассылки LFS.)
При компиляции программы, вместо того, чтобы при создании нового файла каждый раз переписывать все функции работы с ядром, аппаратными средствами, файлами, все базовые функции хранятся в библиотеках. glibc, которую мы установим позже, является одной из главных библиотек такого рода. Она содержит код для всех основных функций, таких как открытие файлов, печать информации на экран, получение ввода от пользователя. После компиляции программы эти библиотеки связываются ссылками с новой программой, чтобы она могла использовать любую функцию этих библиотек.
Однако такие библиотеки могут оказаться довольно большими (например, libc.a обычно занимает 2.5 MB), и держать отдельную копию каждой библиотеки прикрепленной к программе не очень то и логично. Представьте себе простую команду вроде ls с лишними 2.5 MB, прикрепленными к ней! Вместо того, чтобы делать библиотеку частью программы, или связывать статической ссылкой, библиотеку можно хранить в отдельном файле, который будет подгружаться по мере необходимости. Это называется динамическими ссылками, т.к. библиотека загружается и выгружается динамически, по мере необходимости программы.
Итак, у нас есть файл размером 1 KB и файл размером 2.5 MB. Пока мы не сэкономили дискового пространства (разве что освободили оперативную память до того, как библиотека понадобится). Настоящая выгода от использования динамических ссылок состоит в том, что нам необходимо хранить лишь одну копию библиотеки. Если ls и rm используют одну и ту же библиотеку, то нам не нужно иметь две копии этой библиотеки. Обе команды могут пользоваться кодом из одного файла. Также и с оперативной памятью – две программы используют один код вместо того, чтобы загружать в память его дубликаты. Таким образом экономится не только место на диске, но и драгоценная оперативная память.
Если динамические ссылки позволяют сэкономить столько места, почему же мы везде используем статические ссылки? Потому что, когда вы входите в новую (и далекую от совершенства) систему LFS с помощью команды chroot, динамические библиотеки будут недоступны, т.к. они находятся в дереве старого дистрибутива (например в /usr/lib). Эти каталоги будут недоступны из корневой директории системы LFS ($LFS).
Для того чтобы скомпилированные программы работали в среде chroot, при компиляции убедитесь, что библиотеки связаны статическими ссылками, отсюда возникают опции –enable-static-link, –disable-shared, и -static в Главе 5. Первое, что описывает Глава 6, это компиляция основных библиотек системы, glibc. После этого, мы перекомпилируем все программы, собранные в Главе 5, но в этот раз с динамическими ссылками, чтобы воспользоваться всеми преимуществами экономии дискового пространства.
Именно поэтому мы и используем эти странные опции -static. Если скомпилировать пакеты без них, вы довольно быстро увидите, что случится, после того как вы войдете в парализованную систему LFS при помощи команды chroot.
Для получения более детальной информации по динамически связанным библиотекам, обратитесь к книгам и Linux-ориентированным сайтам по программированию.
- 1
- 2
- 3
- 4
- 5
- 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
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
- 100
- 101
- 102
- 103
- 104
- 105
- 106
- 107
- 108
- 109
- 110
- 111
- 112
- 113
- 114
- 115
- 116
- 117
- 118
- 119
- 120
- 121
- 122
- 123
- 124
- 125
- 126
- 127
- 128
- 129
- 130
- 131
- 132
- 133
- 134
- 135
- 136
- 137
- 138
- 139
- 140
- 141
- 142
- 143
- 144
- 145
- 146
- 147
- 148
- 149
- 150
- 151
- 152
- 153
- 154
- 155
- 156
- 157
- 158
- 159
- 160
- 161
- 162
- 163
- 164
- 165
- 166
- 167
- 168
- 169
- 170
- 171
- 172
- 173
- 174
- 175
- 176
- 177
- 178
- 179
- 180
- 181
- 182
- 183
- 184
- 185
- 186
- 187
- 188
- 189
- 190
- 191
- 192
- 193
- 194
- 195
- 196
- 197
- 198
- 199
- 200
- 201
- 202
- 203
- 204