Инструменты пользователя

Инструменты сайта

  • Показать исходный текст
  • История страницы
  • Ссылки сюда
  • Оставить на чай
  • Экспорт в PDF
  • Наверх

  • software:linux_server:lfs-example:chapter01

    Часть I. Введение

    1. Введение

    1.1. Как собрать систему LFS

    Система LFS будет собрана с использованием уже установленного дистрибутива Linux (например, Debian, OpenMandriva, Fedora или openSUSE). Существующая система Linux (хост) будет использоваться в качестве отправной точки для предоставления необходимых программ, включая компилятор, компоновщик и оболочку, для создания новой системы. Выберите опцию «разработка» во время установки дистрибутива, чтобы получить доступ к этим инструментам.

    Примечание Существует множество способов установки дистрибутива Linux, и значения по умолчанию обычно не оптимальны для сборки системы LFS. Предложения по настройке дистрибутива смотрите: https://mirror.linuxfromscratch.ru/hints/downloads/files/partitioning-for-lfs.txt.

    В качестве альтернативы установке отдельного дистрибутива на свой компьютер вы можете использовать LiveCD другого дистрибутива.

    Глава 2 этой книги содержит информацию, о том, как создать новые разделы Linux и файловую систему, где будет скомпилирована и установлена новая система LFS. Глава 3 содержит информацию, о том, какие пакеты и исправления необходимо загрузить для сборки системы LFS и как их хранить на файловой системе. Глава 4 освещает вопросы настройки рабочего окружения. Пожалуйста, внимательно прочитайте Глава 4, так как в ней объясняется несколько важных моментов, о которых вам необходимо знать, прежде чем вы начнёте работать со следующими главами.

    Глава 5 содержит информацию об установке первоначального набора инструментов (binutils, gcc и glibc) с использованием методов кросс-компиляции для изоляции новых инструментов от хост-системы.

    Глава 6 рассказывает, как выполнить кросс-компиляцию базовых утилит с использованием только что собранного временного набора инструментов.

    В Главе 7 будет осуществлен переход в среду chroot, где мы будет использовать новые инструменты для сборки остальных инструментов, необходимых для создания конечной системы.

    Эта попытка изолировать новую систему от основного дистрибутива поначалу может показаться чрезмерной. Полное техническое обоснование того, почему это сделано именно так, приведено в разделе Технические примечания по сборочным инструментам.

    В Главе 8 будет собрана полноценная система LFS. Еще одно преимущество среды chroot заключается в том, что она позволяет вам продолжать использовать хост-систему во время сборки LFS. Ожидая завершения компиляции пакетов, вы можете продолжать пользоваться своим компьютером в обычном режиме.

    Чтобы завершить установку, в Главе 9 происходит настройка базовой конфигурации системы, в Главе 10 настраиваются ядро и загрузчик. Глава 11 содержит информацию о том как расширить возможности системы LFS. После выполнения шагов, описанных в этой главе, компьютер будет готов к загрузке в новую систему LFS.

    Здесь описан процесс сборки системы в двух словах. Подробная информация о каждом шаге обсуждается в следующих главах и описаниях пакетов. Элементы, которые кажутся сложными сейчас, будут разъяснены позже, и все встанет на свои места, по мере прочтения книги.

    1.2. Что нового с момента последнего релиза

    Ниже приводится список пакетов, обновленных с точки зрения выпуска книг.

    Обновления:

    • Acl-2.3.2
    • Attr-2.5.2
    • Autoconf-2.72
    • Bash-5.2.21
    • Bc-6.7.5
    • Binutils-2.42
    • Coreutils-9.4
    • D-Bus-1.14.10
    • Expat-2.6.0
    • Gawk-5.3.0
    • Gettext-0.22.4
    • Glibc-2.39
    • GRUB-2.12
    • Gzip-1.13
    • Iana-Etc-20240125
    • Inetutils-2.5
    • IPRoute2-6.7.0
    • Jinja2-3.1.3
    • Kbd-2.6.4
    • Kmod-31
    • Libelf из Elfutils-0.190
    • Linux-6.7.4
    • Man-DB-2.12.0
    • Man-pages-6.06
    • MarkupSafe-2.1.5
    • Meson-1.3.2
    • MPFR-4.2.1
    • Ncurses-6.4-20230520
    • OpenSSL-3.2.1
    • Perl-5.38.2
    • Pkgconf-2.1.1
    • Procps-ng-4.0.4
    • Python-3.12.2
    • Setuptools-69.1.0
    • Shadow-4.14.5
    • Texinfo-7.1
    • Tzdata-2024a
    • Util-Linux-2.39.3
    • Vim-9.1.0041
    • wheel-0.42.0
    • XML::Parser-2.47
    • Xz-5.4.6
    • Zlib-1.3.1

    Добавления:

    • bash-5.2.21-upstream_fixes-1.patch
    • readline-8.2-upstream_fixes-3.patch
    • setuptools-69.1.0
    • systemd-255-upstream_fixes-1.patch

    Удалены:

    • glibc-2.38-memalign_fix-1.patch
    • grub-2.06-upstream_fixes-1.patch
    • readline-8.2-upstream_fix-1.patch

    1.3. Журнал

    Эта версия 12.1-systemd книги Linux From Scratch от 1 марта 2024 года. Если эта книга будет больше шести месяцев, возможно, уже будет доступна более новая, улучшенная версия. Чтобы узнать это, проверьте одно из зеркал https://mirror.linuxfromscratch.ru/mirrors.html .

    Ниже приводится список изменений, внесенных с момента оформления книги.

    Список изменений:

    14 февраля 2024 г.

    • [bdubbs] - Обновление до мезон-1.3.2. Исправления №5442 .

    2024-02-12

    • [bdubbs] - Обновление до Shadow-4.14.5. Исправления №5437 .
    • [bdubbs] — обновление до setuptools-69.1.0 (модуль Python). Исправления №5439 .
    • [bdubbs] — Обновление до Python-3.12.2. Исправления №5434 .
    • [bdubbs] — Обновление до pkgconf-2.1.1. Исправления №5432 .
    • [bdubbs] — обновление до MarkupSafe-2.1.5 (модуль Python). Исправления №5431 .
    • [bdubbs] — Обновление man-pages-6.06. Исправления №5438 .
    • [bdubbs] — Обновление до expat-2.6.0. Исправления №5435 .
    • [bdubbs] — Обновление до Linux-6.7.4. Исправления №5433 .

    2024-02-10

    • [xry111] — исправлена ​​ошибка, из-за которой systemd прерывал запуск systemd-analyze на экземпляре модуля systemd.

    2024-02-02

    • [xry111] — Обновление до tzdata-2024a. Исправления №5428 .
    • [xry111] — Обновление до glibc-2.39 (исправление безопасности). Исправления №5426 .
    • [xry111] — Обновление до Linux-6.7.3. Исправления №5427 .

    2024-02-01

    • [bdubbs] — Обновление до openssl-3.2.1 (исправление безопасности). Исправления №5425 .
    • [bdubbs] — Обновление до zlib-1.3.1. Исправления №5419 .
    • [bdubbs] — Обновление до xz-5.4.6. Исправления №5423 .
    • [bdubbs] — Обновление до Linux-6.7.2. Исправления №5422 .
    • [bdubbs] — Обновление до iana-etc-20240125. Адрес №5006 .
    • [bdubbs] — Обновление до binutils-2.42. Исправления №5424 .
    • [bdubbs] — Обновление до acl-2.3.2. Исправления №5421 .
    • [bdubbs] — Обновление исходных исправлений для readline-8.2. Исправления №5420 .
    • [bdubbs] — применить исправление исходной версии для bash-5.2.21. Исправления №5420 .

    2024-01-21

    • [xry111] — применить исправление исходной версии для регрессии pkgconf-2.1.0. Исправления №5414 .
    • [xry111] — Обновление до jinja2-3.1.3 (исправление безопасности). Исправления №5411 .
    • [xry111] — Обновление до bc-6.7.5. Исправления №5408 .
    • [xry111] — Обновление до attr-2.5.2. Исправления №5412 .
    • [xry111] — Обновление до ncurses-6.4-20230520 (исправление безопасности). Исправления №5416 .
    • [xry111] — Обновление до markupsafe-2.1.4. Исправления №5418 .
    • [xry111] — Обновление до Linux-6.7.1. Исправления №5406 .
    • [xry111] — Обновление до iproute2-6.7.0. Исправления №5410 .
    • [xry111] — Обновление до vim-9.1.0041. Адрес №4500 .
    • [xry111] — Обновление до iana-etc-20240117. Адрес №5006 .
    • [xry111] - Обновление до Shadow-4.14.3. Исправления №5413 .
    • [xry111] — исправление CVE-2024-0684 для coreutils-9.4. Исправления №5417 .

    2024-01-18

    • [xry111] — отредактируйте заголовок ncurses, чтобы всегда использовать ABI расширенных символов, совместимый с libncursesw.so, поскольку с его помощью мы подделываем 8-битный libncurses.so. Исправления №5415 .

    09.01.2024

    • [renodr] — исправить определение локали C.UTF-8. Исправления №5409 .

    2023-12-31

    • [xry111] — Добавьте –enable-default-hash-style=gnu для настройки binutils. Исправления №5401 .
    • [xry111] — исправление CVE-2023-7008 для systemd-255. Исправления №5405 .
    • [xry111] — Обновление до iana-etc-20231205. Адрес №5006 .
    • [xry111] — Обновление до tzdata-2023d. Исправления №5399 .
    • [xry111] — Обновление до Linux-6.6.8. Исправления №5397 .
    • [xry111] - Обновление до meson-1.3.1. Исправления №5402 .
    • [xry111] — Обновление до grub-2.12. Исправления №5396 .
    • [xry111] — Обновление до inetutils-2.5. Исправления №5404 .
    • [xry111] — Обновление до setuptools-69.0.3. Исправления №5400 .
    • [xry111] — Обновление до xml-parser-2.47. Исправления №5403 .
    • [xry111] — Обновление до vim-9.0.2189. Адрес №4500 .
    • [xry111] — Обновление до autoconf-2.72. Исправления №5398 .

    2023-12-16

    • [xry111] — Обновление до systemd-255. Исправления №5390 .

    14 декабря 2023 г.

    • [bdubbs] — Обновление до util-linux v2.39.3. Исправления №5388 .
    • [bdubbs] — Обновление до python3-3.12.1. Исправления №5392 .
    • [bdubbs] — Обновление до Linux-6.6.7. Исправления №5387 .
    • [bdubbs] — Обновление до kbd-2.6.4. Исправления №5393 .
    • [bdubbs] — Обновление до bc-6.7.4. Исправления №5389 .
    • [bdubbs] — переформатировать параметры конфигурации util-linux. Исправления №5395 .

    2023-12-04

    • [thomas] — Измените команды для установки документации Python, чтобы избежать слишком строгих разрешений для файлов и каталогов.

    2023-11-30

    • [bdubbs] — Обновление до vim-9.0.2136. Адрес №4500 .
    • [bdubbs] — Обновление iana-etc-20231117. Адрес №5006 .
    • [bdubbs] — Обновление до bc-6.7.3. Исправления №5385 .
    • [bdubbs] — Обновление до Wheel-0.42.0 (модуль Python). Исправления №5384 .
    • [bdubbs] — Обновление до perl-5.38.2. Исправления №5383 .
    • [bdubbs] — Обновление до pkgconf-2.1.0. Исправления №5382 .
    • [bdubbs] — Обновление для исправлений Readline с 002 по 007. Исправления № 5381 .
    • [bdubbs] — Обновление до openssl-3.2.0. Исправления №5380 .
    • [bdubbs] — Обновление до setuptools-69.0.2. Исправления №5379 .
    • [bdubbs] — Обновление до Linux-6.6.3. Исправления №5378 .
    • [bdubbs] - Обновление до meson-1.3.0. Исправления №5377 .
    • [bdubbs] — Обновление до gettext-0.22.4. Исправления №5376 .

    2023-11-13

    • [xry111] — Обновление до elfutils-0.190. Исправления №5373 .
    • [xry111] — Обновление до vim-9.0.2103. Адрес №4500 .
    • [xry111] — Обновление до Linux-6.6.1. Исправления №5369 .
    • [xry111] — Обновление до xz-5.4.5. Исправления №5371 .
    • [xry111] — Обновление до iana-etc-20231107. Адрес №5006 .
    • [xry111] — Обновление до gawk-5.3.0. Исправления №5372 .
    • [xry111] — Обновление до bash-5.2.21. Исправления №5375 .
    • [xry111] — Обновление до iproute2-6.6.0. Исправления №5374 .

    01.11.2023

    • [bdubbs] — Обновление до iana-etc-20231019. Адрес №5006 .
    • [bdubbs] - Обновление до Wheel-0.41.3. Исправления №5370 .
    • [bdubbs] - Обновление до Shadow-4.14.2. Исправления №5368 .
    • [bdubbs] — Обновление до openssl-3.1.4. Исправления №5367 .
    • [bdubbs] — Обновление до texinfo-7.1. Исправления №5364 .
    • [bdubbs] - Обновление до мезон-1.2.3. Исправления №5366 .
    • [bdubbs] — Обновление до bc-6.7.2. Исправления №5363 .
    • [bdubbs] — Обновление до Linux-6.5.9. Исправления №5365 .
    • [bdubbs] — Обновление до Python-3.12.0. Исправления №5357 .
    • [bdubbs] — Добавить setuptools-68.2.2. Исправления №5358 .

    2023-10-15

    • [bdubbs] — Обновление до Linux-6.5.7. Исправления №5362 .
    • [bdubbs] - Обновление до Shadow-4.14.1. Исправления №5361 .
    • [bdubbs] — Обновление до gettext-0.22.3. Исправления №5359 .

    2023-10-03

    • [xry111] — обновите исправление исходной версии Glibc, чтобы исправить CVE-2023-4911.

    01.10.2023

    • [bdubbs] - Отключить сборку nscd в glibc. Исправления №5349 .
    • [bdubbs] — Обновление iana-etc-20230929. Адрес №5006 .
    • [bdubbs] — Обновление до vim-9.0.1968. Адрес №4500 .
    • [bdubbs] — Обновление до openssl-3.1.3. Исправления №5350 .
    • [bdubbs] - Обновление до мезон-1.2.2. Исправления №5356 .
    • [bdubbs] — Обновление до man-db-2.12.0. Исправления №5354 .
    • [bdubbs] — Обновление до Linux-6.5.5. Исправления №5352 .
    • [bdubbs] — Обновление до kmod-31. Исправления №5355 .
    • [bdubbs] — Обновление до kbd-2.6.3. Исправления №5361 .
    • [bdubbs] — Обновление до gettext-0.22.2. Исправления №5348 .
    • [bdubbs] — Обновление до bc-6.7.0. Исправления №5353 .

    2023-09-24

    • [xry111] — обновите исправление исходных исправлений Glibc, чтобы устранить утечку памяти, вызванную исправлением безопасности.

    2023-09-17

    • [xry111] — Обновление до Linux-6.5.3. Исправления №5343 .
    • [xry111] — Обновление до iana-etc-20230912. Адрес №5006 .
    • [xry111] — Обновление до iproute2-6.5.0. Исправления №5342 .

    2023-09-13

    • [xry111] — исправление CVE-2023-4806 для Glibc-2.38. Исправления №5347 .

    2023-09-12

    • [xry111] — исправление CVE-2023-4527 для Glibc-2.38. Исправления №5346 .

    07.09.2023

    • [xry111] — исправлена ​​проблема в pkgconf-2.0.3, из-за которой не удалось собрать пакеты BLFS. Исправления №5341 .

    05.09.2023

    • [xry111] — переместите pkgconf перед binutils, чтобы система сборки binutils правильно определяла zstd. Исправления №5340 .
    • [xry111] — Обновление до Linux-6.5.1. Исправления №5332 .
    • [xry111] — Обновление до pkgconf-2.0.3. Исправления №5339 .
    • [xry111] — Обновление до dbus-1.14.10. Исправления №5337 .

    2023-09-04

    • [bdubbs] — Будьте осторожны при сборке, смешивая разные версии LFS с Общими инструкциями по компиляции. Исправления №5338 .

    2023-09-02

    • [xry111] — Добавлен параметр –no-cache-dir для команд колеса pip3. Адреса BLFS №18466 .
    • [bdubbs] — Обновление до vim-9.0.1837. Адрес №4500 .
    • [bdubbs] — Обновление до zlib-1.3. Исправления №5324 .
    • [bdubbs] — Обновление до Wheel-0.41.2 (модуль Python). Исправления №5328 .
    • [bdubbs] — Обновление до util-linux-2.39.2. Исправления №5322 .
    • [bdubbs] — Обновление до Shadow-4.14.0. Исправления №5319 .
    • [bdubbs] — Обновление до Python-3.11.5. Исправления №5330 .
    • [bdubbs] — Обновление до procps-ng-4.0.4 (исправление безопасности для 32-битных систем). Исправления №5335 .
    • [bdubbs] — Обновление до pkgconf-2.0.2. Исправления №5323 .
    • [bdubbs] — Обновление до mpfr-4.2.1. Исправления №5326 .
    • [bdubbs] — Обновление до kbd-2.6.2. Исправления №5318 .
    • [bdubbs] — Обновление до gzip-1.13. Исправления №5325 .
    • [bdubbs] — Обновление до coreutils-9.4. Исправления №5334 .
    • [bdubbs] — укажите «nobody-group» для systemd. Исправления №5333 .
    • [bdubbs] - Удалить неиспользуемую группу USB. Исправления №5331 .

    01.09.2023

    • [bdubbs] — Выпущен LFS-12.0.

    1.4. Ресурсы

    1.4.1. Часто задаваемые вопросы

    Если во время создания системы LFS вы столкнетесь с какими-либо ошибками, у вас возникнут какие-либо вопросы или вам кажется, что в книге допущена опечатка, пожалуйста, для начала ознакомьтесь со списком часто задаваемых вопросов (FAQ), расположенным по адресу https://mirror.linuxfromscratch.ru/faq/.

    1.4.2. Списки рассылки

    На сервере linuxfromscratch.org размещен ряд списков рассылки, используемых для разработки проекта LFS. Эти списки включают, среди прочего, основные списки разработки и поддержки. Если вы не можете найти ответ на странице часто задаваемых вопросов, следующим шагом будет поиск решения в списках рассылки по адресу https://mirror.linuxfromscratch.ru/search.html.

    Для получения информации о списках рассылки, способах подписки, архивах и дополнительной информации посетите https://mirror.linuxfromscratch.ru/mail.html.

    1.4.3. IRC

    Некоторые члены сообщества LFS предлагают помощь в Internet Relay Chat (IRC). Прежде чем воспользоваться этим способом, убедитесь, что на ваш вопрос еще нет ответа в разделе часто задаваемых вопросов LFS или в архивах списков рассылки. Вы можете найти нас в irc.libera.chat. Канал поддержки называется #lfs-support.

    1.4.4. Зеркала проекта

    Проект LFS имеет несколько зеркал по всему миру, чтобы сделать доступ к веб-сайту и загрузку необходимых пакетов более удобными. Пожалуйста, посетите веб-сайт LFS по адресу https://mirror.linuxfromscratch.ru/mirrors.html для получения списка текущих зеркал.

    1.4.5. Контактная информация

    Пожалуйста, направляйте все свои вопросы и комментарии в один из списков рассылки LFS (см. выше).

    1.5. Помощь

    Примечание Если вы столкнулись с проблемой при сборки одного пакета с помощью инструкцией из LFS, мы настоятельно не рекомендуем публиковать проблему непосредственно в канале поддержки разработчиков пакета до обсуждения через канал поддержки LFS, указанный в Раздел 1.4, «Ресурсы». Часто это неэффективно, потому что разработчики редко знакомы с процедурой сборки LFS. Даже если вы действительно столкнулись с проблемой в пакете, сообщество LFS все равно может помочь выделить информацию, необходимую специалистам по поддержке пакета, и составить соответствующий отчет.

    Если вам нужно задать вопрос напрямую через канал поддержки пакета, вы должны, по крайней мере, понимать, что многие проекты имеют каналы поддержки, отделенные от системы отслеживания ошибок. Отчеты об «ошибках» при отправке вопросов считаются недействительными и могут раздражать разработчиков этих проектов.

    Если при работе с этой книгой у вас возникнут проблемы или вопросы, посетите страницу часто задаваемых вопросов по адресу https://mirror.linuxfromscratch.ru/faq/#generalfaq. Часто там уже есть ответы на большинство вопросов. Если на этой странице нет ответа на ваш вопрос, попробуйте самостоятельно найти источник проблемы. Следующий документ даст вам некоторые рекомендации по устранению неполадок: https://mirror.linuxfromscratch.ru/hints/downloads/files/errors.txt.

    Если вы не можете найти решение своей проблемы в разделе часто задаваемых вопросов, выполните поиск в списках рассылки по адресу https://mirror.linuxfromscratch.ru/search.html.

    У нас также есть замечательное сообщество LFS, которое готово предложить помощь через списки рассылки и IRC (см. Раздел 1.4, «Ресурсы» этой книги). Мы получаем много вопросов в службу поддержки каждый день, и на многие из них можно легко ответить, зайдя в раздел часто задаваемых вопросов и предварительно выполнив поиск в списках рассылки. Чтобы мы могли оказать помощь, вам необходимо сначала провести самостоятельное исследование. Это позволяет нам сосредоточиться на более сложных вопросах в поддержке. Если ваши поиски не привели к решению проблемы, включите всю необходимую информацию (упомянутую ниже) в свой запрос о помощи.

    1.5.1. Что следует упомянуть

    Помимо краткого объяснения возникшей проблемы, в любой запрос о помощи необходимо включить следующую важную информацию:

    • Используемая версия книги (в данном случае 12.1-systemd)
    • Информацию о дистрибутиве и его версия, используемые для сборки LFS
    • Вывод сценария Системные требования к хостовой машине
    • Пакет или раздел где возникла проблема
    • Точное сообщение об ошибке или четкое описание проблемы
    • Обратите внимание, отклонялись ли вы от книги

    Примечание Отклонение от этой книги не означает, что мы не поможем вам. В конце концов, LFS зависит от личных предпочтений. Заблаговременное информирование о любых изменениях в процессе сборки помогает нам оценить и определить возможные причины вашей проблемы

    1.5.2. Проблемы со скриптом configure

    Если что-то пойдет не так во время выполнения скрипта configure, просмотрите файл config.log. Этот файл может содержать ошибки, обнаруженные во время настройки, которые не были выведены на экран. Включите соответствующие строки, если вам нужно обратиться за помощью.

    1.5.3. Проблемы компиляции

    Как вывод на экран, так и содержимое различных файлов полезны для определения причины проблем компиляции. Вывод экрана из скрипта configure и запуска make может быть полезен. Необязательно включать весь вывод целиком, но обязательно включите всю необходимую информацию. Ниже приведен пример информации, которая должна быть включена в экранный вывод make:

    gcc -DALIASPATH=\"/mnt/lfs/usr/share/locale:.\"
    -DLOCALEDIR=\"/mnt/lfs/usr/share/locale\"
    -DLIBDIR=\"/mnt/lfs/usr/lib\"
    -DINCLUDEDIR=\"/mnt/lfs/usr/include\" -DHAVE_CONFIG_H -I. -I.
    -g -O2 -c getopt1.c
    gcc -g -O2 -static -o make ar.o arscan.o commands.o dir.o
    expand.o file.o function.o getopt.o implicit.o job.o main.o
    misc.o read.o remake.o rule.o signame.o variable.o vpath.o
    default.o remote-stub.o version.o opt1.o
    -lutil job.o: In function `load_too_high':
    /lfs/tmp/make-3.79.1/job.c:1565: undefined reference
    to `getloadavg'
    collect2: ld returned 1 exit status
    make[2]: *** [make] Error 1
    make[2]: Leaving directory `/lfs/tmp/make-3.79.1'
    make[1]: *** [all-recursive] Error 1
    make[1]: Leaving directory `/lfs/tmp/make-3.79.1'
    make: *** [all-recursive-am] Error 2

    В этом случае многие люди просто включили бы только нижнюю часть:

    make [2]: *** [make] Error 1

    Этой информации недостаточно, чтобы правильно диагностировать проблему, потому что она только указывает на то, что что-то пошло не так, а не на то, что пошло не так. Весь раздел, как в приведенном выше примере, должен быть сохранен, так как он включает в себя выполненную команду и все связанные с ней сообщения об ошибках.

    Отличная статья о том, как обращаться за помощью в Интернете, доступна по адресу http://catb.org/~esr/faqs/smart-questions.html. Прочтите этот документ и следуйте советам, чтобы повысить вероятность получения помощи в которой вы нуждаетесь.

    Только авторизованные участники могут оставлять комментарии.
    software/linux_server/lfs-example/chapter01.txt · Последнее изменение: 2024/07/18 17:21 — vladpolskiy