УДК 004.451Linux
ББК 32.973.26-018.2
Б60
Б60 Бикманс Ж.
Linux с нуля. Версия 7.3 / пер. с англ. Ромоданов Н. А. – М.: ДМК
Пресс, 2016. – 428 с.: ил. (Серия «Linux From Scratch»)
ISBN 978-5-97060-225-6
Если вы мечтаете собрать свою собственную операционную систему,
то книга «Linux с нуля» – именно для вас. Из нее вы узнаете, как
подготовить нужный для сборки набор инструментальных средств,
откуда и какие взять для этого исходные коды программ, как собрать
их в виде пакетов и заставить их вместе работать как единое целое,
управляющее вашим компьютером. Книга подробно расскажет вам,
как конкретно подготовить каждый из пакетов, из которых собирается
система, проведет вас через лабиринты системных и пользовательских
настроек, и, конечно, подскажет, где и как искать решения в случае,
если что-то пойдет не так, как ожидалось. Система, которую вы соберете,
станет не только вашей гордостью, но и, без всякого сомнения,
послужит для вас той основой, на которой вы будете и дальше познавать
увлекательный мир операционных систем Linux.
УДК 004.451Linux
ББК 32.973.26-018.2
Все права зарезервированы. Настоящая книга издана под лицензией Creative
Commons License. Инструкции, предназначенные для использования на компьютере,
могут использоваться под лицензией MIT отдельно от книги.
Linux® является зарегистрированной торговой маркой Linus Torvalds.
Все права защищены. Любая часть этой книги не может быть воспроизведена
в какой бы то ни было форме и какими бы то ни было средствами без письменного
разрешения владельцев авторских прав.
Материал, изложенный в данной книге, многократно проверен. Но, поскольку
вероятность технических ошибок все равно существует, издательство не может гарантировать
абсолютную точность и правильность приводимых сведений. В связи с этим
издательство не несет ответственности за возможные ошибки, связанные с использованием
книги.
ISBN 978-1-84968-112-4 (англ.)
ISBN 978-5-97060-225-6 (рус.)
© 1999-2013 Gerard Beekmans
© Оформление, перевод на русский язык
ДМК Пресс, 2016
Стр.5
ОГЛАВЛЕНИЕ
Предисловие .......................................................... 11
Аудитория ..................................................................................... 12
Целевая архитектура проекта LFS ................................................. 14
Проект LFS и стандарты ................................................................ 15
Обоснование использования пакетов, которые приведены в книге 17
Предварительные требования ....................................................... 24
Требование к хост-системе ........................................................... 25
Типографские соглашения ............................................................ 27
Структура книги ............................................................................ 29
Возможные проблемы ................................................................... 30
ЧАСТЬ I.
Введение ................................................................31
Глава 1. Введение .....................................................32
1.1. Как собрать систему LFS ......................................................... 32
1.2. Что изменилось по сравнению с предыдущей версией? ......... 34
1.3. Список изменений .................................................................. 35
1.4. Ресурсы .................................................................................. 43
1.5. Помощь .................................................................................. 44
ЧАСТЬ II.
Подготовка к сборке ..................................................47
Глава 2. Подготовка нового раздела ............................48
2.1. Введение ................................................................................ 48
2.2. Создание нового раздела ....................................................... 48
2.3. Создание в разделе файловой системы ................................. 51
2.4. Монтирование нового раздела ............................................... 53
Глава 3. Пакеты и патчи .............................................55
3.1. Введение ................................................................................ 55
3.2. Все пакеты .............................................................................. 56
3.3. Необходимые патчи ................................................................ 64
Глава 4. Последние приготовления ..............................66
4.1. О переменной $LFS ................................................................ 66
4.2. Создание каталога $LFS/tools ................................................. 66
Стр.6
6
Оглавление
4.3. Добавление пользователя LFS ................................................ 67
4.4. Настройка среды окружения ................................................... 69
4.5. О единице измерения времени SBU ....................................... 71
4.6. О наборах тестов .................................................................... 72
Глава 5. Создание временной версии системы ..............74
5.1. Введение ................................................................................ 74
5.2. Технические замечания об инструментальном наборе ............ 74
5.3. Общие инструкции, касающиеся компиляции ......................... 78
5.4. Пакет Binutils-2.23.1 – первый проход ..................................... 80
5.5. Пакет GCC-4.7.2 – первый проход ........................................... 82
5.6. Заголовки Linux-2.6.37 Linux-3.8.1 API ..................................... 86
5.7. Пакет Glibc-2.17 ...................................................................... 87
5.8. Пакет Binutils-2.23.1 – второй проход ...................................... 90
5.9. Пакет GCC-4.7.2 – второй проход ........................................... 92
5.10. Пакет Tcl-8.6.0 ...................................................................... 96
5.11. Пакет Expect-5.45 ................................................................. 97
5.12. Пакет DejaGNU-1.5 ................................................................ 99
5.13. Пакет Check-0.9.9 ............................................................... 100
5.14. Пакет Ncurses-5.9 ............................................................... 101
5.15. Пакет Bash-4.2 .................................................................... 102
5.16. Пакет Bzip2-1.0.6 ................................................................ 103
5.17. Пакет Coreutils-8.21 ............................................................ 103
5.18. Пакет Diffutils-3.2 ................................................................ 104
5.19. Пакет File-5.13 .................................................................... 105
5.20. Пакет Findutils-4.4.2 ............................................................ 105
5.21. Пакет Gawk-4.0.2 ................................................................ 106
5.22. Пакет Gettext-0.18.2 ............................................................ 107
5.23. Пакет Grep-2.14 .................................................................. 108
5.24. Пакет Gzip-1.5 ..................................................................... 108
5.25. Пакет M4-1.4.16 .................................................................. 109
5.26. Пакет Make-3.82 ................................................................. 110
5.27. Пакет Patch-2.7.1 ................................................................ 110
5.28. Пакет Perl-5.16.2 ................................................................. 111
5.29. Пакет Sed-4.2.2 ................................................................... 112
5.30. Пакет Tar-1.26 ..................................................................... 112
5.31. Пакет Texinfo-5.0 ................................................................. 113
5.32. Пакет Xz-5.0.4 ..................................................................... 114
5.33. Удаление ненужных файлов ................................................ 114
5.34. Смена владельца ................................................................ 115
ЧАСТЬ III.
Сборка системы LFS ................................................117
Глава 6. Установка программ базовой системы............118
Стр.7
Оглавление
7
6.1. Введение .............................................................................. 118
6.2. Подготовка виртуальных файловых систем ядра ................... 119
6.3. Управление пакетами ........................................................... 121
6.4. Переход в среду chroot ......................................................... 126
6.5. Создание каталогов .............................................................. 127
6.6. Создание важных файлов и символических ссылок .............. 129
6.7. Заголовки Linux-3.8.1 API ...................................................... 131
6.8. Пакет Man-pages-3.47 .......................................................... 132
6.9. Пакет Glibc-2.17 ................................................................... 133
6.10. Перенастройка инструментального набора ........................ 143
6.11. Пакет Zlib-1.2.7 ................................................................... 145
6.12. Пакет File-5.13 .................................................................... 146
6.13. Пакет Binutils-2.23.1 ............................................................ 147
6.14. Пакет GMP-5.1.1 ................................................................. 150
6.15. Пакет MPFR-3.1.1 ................................................................ 152
6.16. Пакет MPC-1.0.1 ................................................................. 153
6.17. Пакет GCC-4.7.2.................................................................. 154
6.18. Пакет Sed-4.2.2 ................................................................... 161
6.19. Пакет Bzip2-1.0.6 ................................................................ 162
6.20. Пакет Pkg-config-0.28 ......................................................... 164
6.21.Пакет Ncurses-5.9 ................................................................ 165
6.22. Пакет Util-linux-2.22.2 .......................................................... 168
6.23. Пакет Psmisc-22.20 ............................................................. 174
6.24. Пакет Procps-ng-3.3.6 ......................................................... 175
6.25. Пакет E2fsprogs-1.42.7 ........................................................ 178
6.26. Пакет Shadow-4.1.5.1 .......................................................... 182
6.27. Пакет Coreutils-8.21 ............................................................ 187
6.28. Пакет Iana-Etc-2.30 ............................................................. 195
6.29. Пакет M4-1.4.16 .................................................................. 195
6.30. Пакет Bison-2.7 ................................................................... 196
6.31. Пакет Grep-2.14 .................................................................. 197
6.32. Пакет Readline-6.2 .............................................................. 198
6.33. Пакет Bash-4.2 .................................................................... 200
6.34. Пакет Libtool-2.4.2 ............................................................... 201
6.35. Пакет GDBM-1.10 ................................................................ 202
6.36. Пакет Inetutils-1.9.1 ............................................................. 203
6.37. Пакет Perl-5.16.2 ................................................................. 206
6.38. Пакет Autoconf-2.69 ............................................................ 210
6.39. Пакет Automake-1.13.1 ........................................................ 211
6.40. Пакет Diffutils-3.2 ................................................................ 213
6.41. Пакет Gawk-4.0.2 ................................................................ 214
6.42. Пакет Findutils-4.4.2 ............................................................ 215
6.43. Пакет Flex-2.5.37 ................................................................. 217
6.44. Пакет Gettext-0.18.2 ............................................................ 218
Стр.8
8
Оглавление
6.45. Пакет Groff-1.22.2 ............................................................... 221
6.46. Пакет Xz-5.0.4 ..................................................................... 225
6.47. Пакет GRUB-2.00 ................................................................ 227
6.48. Пакет Less-451 .................................................................... 229
6.49. Пакет Gzip-1.5 ..................................................................... 230
6.50. Пакет IPRoute2-3.8.0 ........................................................... 231
6.51. Пакет Kbd-1.15.5 ................................................................. 234
6.52. Пакет Kmod-12 .................................................................... 237
6.53. Пакет Libpipeline-1.2.2 ......................................................... 239
6.54. Пакет Make-3.82 ................................................................. 240
6.55. Пакет Man-DB-2.6.3 ............................................................ 241
6.56. Пакет Patch-2.7.1 ................................................................ 244
6.57. Пакет Sysklogd-1.5 .............................................................. 244
6.58. Пакет Sysvinit-2.88dsf .......................................................... 246
6.59. Пакет Tar-1.26 ..................................................................... 248
6.60. Пакет Texinfo-5.0 ................................................................. 249
6.61. Пакет Udev-197 (Берем из пакета systemd-197) .................. 251
6.62. Пакет Vim-7.3 ...................................................................... 253
6.63. Об отладочных символах ..................................................... 257
6.64. Снова стираем все ненужное .............................................. 257
6.65. Окончательное приведение системы в порядок .................. 258
Глава 7. Настройка скриптов загрузки системы ...........260
7.1. Введение .............................................................................. 260
7.2. Общие вопросы конфигурирования сети .............................. 261
7.3. Настройка файла /etc/hosts .................................................. 266
7.4. Управление устройствами и модулями в системе LFS ........... 267
7.5. Создание пользовательских символических ссылок
на устройства ........................................................................ 274
7.6. Пакет LFS-Bootscripts-20130123 ........................................... 277
7.7. Как работают скрипты загрузки системы .............................. 279
7.8. Конфигурирование имени хоста системы ............................. 283
7.9. Конфигурирование скрипта setclock ..................................... 283
7.10. Конфигурирование консоли Linux ....................................... 284
7.11. Конфигурирование скрипта sysklogd .................................. 288
7.12. Файл rc.site ......................................................................... 289
7.13. Файлы запуска командной оболочки Bash ........................... 292
7.14. Создание файла /etc/inputrc ............................................... 296
Глава 8. Делаем систему LFS загружаемой .................298
8.1. Введение .............................................................................. 298
8.2. Создание файла /etc/fstab .................................................... 298
8.3. Пакет Linux-3.8.1 ................................................................... 300
8.4. Использование загрузчика GRUB для настройки
процесса загрузки ................................................................ 305
Стр.9
Оглавление
9
Глава 9. Завершение ...............................................308
9.1. Результат .............................................................................. 308
9.2. Зарегистрируем систему ...................................................... 308
9.3. Перезагрузка системы .......................................................... 309
9.4. А что дальше? ....................................................................... 311
ЧАСТЬ IV.
Приложения ..........................................................313
Приложение А. Сокращения и терминология ...............314
Приложение В. Благодарности .................................319
Приложение C. Зависимости ....................................323
Приложение D. Загрузочные и конфигурационные
скрипты версии 20130123........................................335
D.1. Скрипт /etc/rc.d/init.d/rc ....................................................... 335
D.2. Скрипт /lib/lsb/init-functions .................................................. 340
D.3. Скрипт /etc/rc.d/init.d/functions ............................................ 357
D.4. Скрипт/etc/rc.d/init.d/mountvirtfs .......................................... 374
D.5. Скрипт /etc/rc.d/init.d/modules ............................................. 375
D.6. Скрипт /etc/rc.d/init.d/udev ................................................... 377
D.7. Скрипт /etc/rc.d/init.d/swap .................................................. 379
D.8. Скрипт /etc/rc.d/init.d/setclock ............................................. 380
D.9. Скрипт /etc/rc.d/init.d/checkfs .............................................. 382
D.10. Скрипт /etc/rc.d/init.d/mountfs ............................................ 385
D.11. Скрипт /etc/rc.d/init.d/udev_retry ........................................ 387
D.12. Скрипт /etc/rc.d/init.d/cleanfs ............................................. 388
D.13. Скрипт /etc/rc.d/init.d/console ............................................ 391
D.14. Скрипт /etc/rc.d/init.d/localnet ............................................ 394
D.15. Скрипт /etc/rc.d/init.d/sysctl ............................................... 395
D.16. Скрипт /etc/rc.d/init.d/sysklogd ........................................... 396
D.17. Скрипт /etc/rc.d/init.d/network ............................................ 398
D.18. Скрипт /etc/rc.d/init.d/sendsignals ...................................... 400
D.19. Скрипт /etc/rc.d/init.d/reboot .............................................. 401
D.20. Скрипт /etc/rc.d/init.d/halt .................................................. 402
D.21. Скрипт /etc/rc.d/init.d/template ........................................... 403
D.22. Скрипт /etc/sysconfig/modules............................................ 405
D.23. Скрипт /etc/sysconfig/createfiles ......................................... 405
D.24. Скрипт /etc/sysconfig/udev-retry ......................................... 406
D.25. Скрипт /sbin/ifup................................................................. 406
D.26. Скрипт /sbin/ifdown ............................................................ 409
D.27. Скрипт /lib/services/ipv4-static ............................................ 412
D.28. Скрипт /lib/services/ipv4-static-route ................................... 413
Стр.10
10
Оглавление
Приложение E. Конфигурационные правила udev .........416
E.1. Правила 55-lfs.rules .............................................................. 416
Приложение F. Лицензии LFS ....................................417
F.1. Лицензия Creative Commons .................................................. 417
F.2. Лицензия MIT ........................................................................ 426
Стр.11