Linux с нуля

редактировать

Linux с нуля
Разработчик Джерард Бикманс и др.
Семейство ОСUnix-подобных
Рабочее состояниеТекущая
Исходная модельОткрытый исходный код
Первоначальный выпускдекабрь 1999 г.; 20 лет назад (1999-12)
Последний выпуск 10.0 / 1 сентября 2020 г.; 57 дней назад (2020-09-01)
Метод обновленияНа основе исходного кода
Диспетчер пакетов Нет (на основе исходного кода)
ПлатформыIA-32, x86-64
Ядро типМонолитное
По умолчанию пользовательский интерфейс CLI
Лицензия лицензии Creative Commons и Лицензия MIT
Официальный сайтwww.linuxfromscratch.org

Linux From Scratch (LFS ) является разновидностью Linux инсталляция и название книги, написанной Джерардом Бикмансом и в настоящее время по состоянию на сентябрь 2020 года в основном поддерживаемой Брюсом Даббсом. Книга дает читателям инструкции по созданию системы Linux из исходного кода. Книга доступна бесплатно на сайте Linux From Scratch.

Содержание
  • 1 Проекты в LFS
  • 2 Требования и процедура
  • 3 Список пакетов в LFS версии 10.0
  • 4 Стандартный модуль сборки
  • 5 Прием
  • 6 См. Также
  • 7 Ссылки
  • 8 Внешние ссылки
Проекты под LFS

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

Чтобы LFS оставалась небольшой и сфокусированной, была создана книга Beyond Linux From Scratch (BLFS), в которой представлены инструкции по дальнейшему развитию базовой системы Linux, созданной в LFS. Он знакомит читателя с дополнениями к системе, включая поддержку сети, X, звука, принтера и сканера, и направляет его. Начиная с выпуска 5.0, книжная версия BLFS соответствует книжной версии LFS.

Книга Cross Linux From Scratch (CLFS) фокусируется на кросс-компиляции, включая компиляцию для headless или встроенные системы, которые могут работать под Linux, но не имеют ресурсов, необходимых для компиляции Linux. CLFS поддерживает широкий спектр процессоров и обращается к передовым методам, не включенным в книгу LFS, таким как кросс-сборка инструментальных цепочек, поддержка нескольких библиотек (32- и 64-битные библиотеки параллельно) и альтернативные архитектуры набора команд, такие как Itanium, SPARC, MIPS и Alpha..

Проект Linux from Scratch, как и BitBake, также поддерживает кросс-компиляцию Linux для ARM встроенных систем, таких как Raspberry Pi и BeagleBone..

Книга Защищенный Linux с нуля (HLFS) посвящена улучшениям безопасности, таким как усиленные исправления ядра, обязательные политики контроля доступа, стек- защита от разрушения и рандомизация размещения адресного пространства. Помимо своей основной цели создания ориентированной на безопасность операционной системы, у HLFS была вторичная цель - стать инструментом обучения безопасности. Он не обновлялся с 2011 года.

Automated Linux From Scratch (ALFS) - это проект, предназначенный для автоматизации процесса создания системы LFS. Он предназначен для пользователей, которые несколько раз просмотрели книги LFS и BLFS и желают сократить объем работы. Вторичная цель состоит в том, чтобы действовать как тест книг LFS и BLFS, напрямую извлекая и выполняя инструкции из источников XML книг LFS и BLFS.

Требования и процедура

Для построения LFS требуются чистый раздел и работающая система Linux с компилятором и некоторые важные программные библиотеки. Вместо установки из существующей системы Linux можно также использовать Live CD для создания системы LFS.

Ранее проект поддерживал Linux From Scratch Live CD. LFS Live CD содержит все исходные пакеты (только в полной версии Live CD), книгу LFS, автоматизированные инструменты сборки и (за исключением минимальной версии Live CD) среду графического интерфейса Xfce для работы в Официальный LFS Live CD больше не поддерживается и не может быть использован для сборки LFS версии 7 или более поздней. Однако есть две неофициальные сборки, которые можно использовать для сборки 32-битного или 64-битного ядра и пользовательского пространства соответственно для LFS 7.x.

Во-первых, набор инструментов должен быть скомпилированный, состоящий из инструментов, используемых для компиляции LFS, таких как GCC, glibc, binutils и других необходимых утилит. Затем корневой каталог должен быть изменен (с использованием chroot ) на раздел инструментальной цепочки, чтобы начать сборку окончательной системы. Один из первых компилируемых пакетов - это glibc; после этого, компоновщик инструментальной цепочки должен быть настроен на link с недавно созданной glibc, чтобы все другие пакеты, составляющие законченную систему, также могли быть связаны с ней. Во время фазы chroot функция хеширования bash отключается, а каталог bin временной инструментальной цепочки перемещается в конец PATH. Таким образом, недавно скомпилированные программы попадают в PATH первыми, а новая система строится на собственных новых компонентах.

Список пакетов в LFS версии 10.0
КомпонентОписаниеЛицензияВерсия
Acl Список управления доступом ( ACL) по отношению к файловой системе компьютера - это список разрешений, прикрепленных к объекту.GNU GPL 2.2.53
AttrКоманды для управления расширенными атрибутами файловой системы.2.4.48
Autoconf Инструмент для создания скриптов конфигурации для C, C ++, Fortran, Fortran 77, Программное обеспечение Erlang, Objective-C в Unix-подобных компьютерных системах.2.69
Инструмент программирования Automake A , который создает переносимые make-файлы для использования программой make, используемой при компиляции программного обеспечения.1.16.1
Bash A бесплатное программное обеспечение оболочка Unix, написанная для GNU Project 5.0
bc bc- это базовый калькулятор (часто называемый стендовым калькулятором), является «языком калькулятора произвольной точности» с синтаксисом, аналогичным языку программирования C.2.5.3
Binutils Набор инструментов программирования для работы с кодом объекта в различных форматах объектных файлов.2.35
Генератор синтаксического анализатора Bison A , который является частью проекта GNU. Bison преобразует описание грамматики для контекстно-свободной грамматики в исходный код для парсера C, C ++ или Java.3.5.2
Bzip2 A бесплатно и с открытым исходным кодом сжатие данных без потерь алгоритм и программа, разработанная Джулиан Сьюард.1.0.8
Среда модульного тестирования для C.0.14.0
Coreutils A пакета из GNU программного обеспечения содержащий множество основных инструментов, таких как cat, ls и rm, необходимых для Unix-подобных операционных систем.8.31
DejaGNU Фреймворк для тестирования других программ. У него есть основной сценарий runtest, который просматривает каталог, просматривая файлы конфигурации, а затем запускает несколько тестов с заданными критериями.1.6.2
Diffutils A сравнение данных утилита, которая выводит различия между двумя файлами.3.7
E2fsprogs e2fsprogs (иногда называемый программами e2fs) - это набор утилит для поддержки ext2, ext3 и ext4 файловые системы.1.45.5
Elfutils Набор утилит и библиотек для чтения, создания и изменения двоичных файлов ELF.GNU GPL и GNU LGPL 0.178
Eudev Форк udev, чтобы избежать зависимости от архитектуры systemd. Результирующая вилка называется eudev и делает доступной функциональность udev без парсера systemd.GNU GPL 3.2.9
Expat A stream, ориентированного на XML 1.0 библиотека, написанная на C.лицензии MIT 2.2.9
Expect Expect - это инструмент автоматизации и тестирования Unix как расширение Tcl язык сценариев, для интерактивных приложений, таких как telnet, ftp, passwd, fsck, rlogin, tip, ssh и другие.Общественное достояние 5.45.4
Файл команда file - это стандартная программа Unix для распознавания типа данных, содержащихся в компьютерном файле.Лицензия типа BSD 5.38
Findutils Утилиты поиска GNU - это базовые утилиты поиска в каталогах операционной системы GNU.GNU GPL 4.7.0
Flex flex (быстрый лексический анализатор генератор) является бесплатным программным обеспечением альтернативой lex.Лицензия BSD 2.6.4
Gawk Gawk - это язык программирования, предназначенный для обработки текстовых данных в файлах или потоках данныхGNU GPL 5.0.1
GCC Коллекция компиляторов GNU (обычно сокращается до GCC) - это система компилятора, созданная GNU Project, поддерживающая различные языки программирования 10.2.0
GDBM GDBM simple СУБД 1.18.1
Gettext Gettext - это GNU интернационализация и локализация (i18n) библиотека.0.20.1
Glibc Библиотека GNU C, широко известная как glibc, является стандартной библиотекой C, выпущенной GNU Проект.2.32
GMP Библиотека GNU Multiple-Precision, также известная как GMP, является бесплатной библиотекой для арифметики произвольной точности, работающей со знаком целые числа, рациональные числа и числа с плавающей запятой.6.2.0
GperfИдеальный генератор хеш-функции. Для заданного списка строк он создает хеш-функцию и хеш-таблицу в форме кода C или C ++ для поиска значения в зависимости от входной строки. Хеш-функция идеальна, что означает, что в хеш-таблице нет коллизий, а для поиска по хеш-таблице требуется только сравнение одной строки.3.1
Grep grep- это командная строка утилита текстового поиска, изначально написанная для Unix.3.4
Groff Groff является GNU заменой программам форматирования текста troff и nroff .1.22.4
GRUB GNU GRUB (сокращение от GNU GRand Unified Bootloader) - это пакет загрузчика из GNU Project.2.04
Gzip Gzip - это программное приложение, используемое для сжатие файла. gzip - это сокращение от GNU zip1.10
iana-etc.Иана и т. Д. устанавливает службы и протоколы с использованием данных из Internet Assigned Numbers Authority. Включены моментальные снимки данных из IANA, сценарии для преобразования этих данных в необходимые форматы и сценарии для получения самых последних данных.Открытая лицензия на программное обеспечение 2.30
Inetutils Набор сетевых инструментов, включая ftp, telnet и rsh.GNU GPL 1.9.4
IntltoolНабор инструментов для централизованного перевода множества различных файловых форматов с использованием GNU gettext-совместимых файлов PO.0.51.0
IPRoute2 Набор утилит пользовательского пространства для управления и мониторинга различных аспектов сети в ядре Linux, включая маршрутизацию, сетевые интерфейсы, туннели, управление трафиком и связанные с сетью драйверы устройств.5.5.0
КБДПакет содержит инструменты для управления консолью Linux (консоль Linux, виртуальные терминалы на ней, клавиатура и т. Д.). В основном они загружают консольные шрифты и раскладки клавиатуры. Также этот пакет содержит набор различных шрифтов и раскладок клавиатуры.2.2.0
Kmod Бинарный файл с несколькими вызовами, который реализует программы, используемые для управления модулями ядра Linux.26
меньше меньше- это терминальный пейджер программа в Unix, Windows и Unix-подобные системы, используемые для просмотра (но не изменения) содержимого текстового файла по одному экрану за раз.Dual: либо GPL, либо BSD-подобная лицензия 551
LFS-BootscriptsПакет LFS-Bootscripts содержит набор скриптов для запуска / остановки системы LFS при загрузке / завершении работы. Файлы конфигурации и процедуры, необходимые для настройки процесса загрузки, описаны в следующих разделах.Лицензии Creative Commons и Лицензия MIT 9.0

(20191031)

LibcapАльтернатива модели привилегий суперпользователя в Linux.2.31
Libffi Портативная библиотека интерфейса сторонних функций.Лицензия MIT 3.3
LibpipelineLibpipeline - это библиотека C для гибкого и удобного управления конвейерами подпроцессов.GNU GPL 1.5.2
Libtool GNU Libtool - это GNU инструмент программирования из системы сборки GNU, используемый для создание переносимых скомпилированных библиотек .2.4.6
Linux Ядро Linux - это операционная система ядро ​​, используемая семейством Linux Unix -подобные операционные системы.5.8.3
GNU m4 GNU m4 - это GNU версия препроцессора макросов m4.1.4.18
make Make - это утилита для автоматической сборки исполняемых программ и библиотек из исходного кода.4.3
Man-DBMan-DB - это реализация стандартной системы документации Unix, доступ к которой осуществляется с помощью команды man. Он использует базу данных Berkeley DB вместо традиционных баз данных whatis с неструктурированным текстом.2.9.0
Справочные страницы Справочная страница (сокращение от справочной страницы) - это форма онлайн-документации по программному обеспечению, которая обычно находится в Unix или Unix -подобная операционная система.Несколько лицензий.5.05
Meson система сборки с открытым исходным кодом, которая должна быть одновременно чрезвычайно быстрой и, что еще более важно, максимально удобной для пользователя.Лицензия Apache 0.53.1
MPCБиблиотека AC для арифметики комплексных чисел с произвольно высокой точностью GNU LGPL 1.1.0
MPFR Библиотека GNU C для вычислений с плавающей запятой множественной точности с правильным округлением.GNU LGPL и GNU GPL для части исходного кода с особыми исключениями4.0.2
Ninja Небольшая система сборки с упором на скорость.Лицензия Apache 1.10.0
ncurses Программная библиотека для написания текстовых пользовательских интерфейсов независимо от терминалаЛицензия X11 6.2
OpenSSL Лицензия Apache 1.0 и четыре пункта Лицензия BSD 1.1.1d
Патч Компьютерный инструмент для Unix программ, который обновляет текстовые файлы в соответствии с инструкции содержатся в отдельном файле, называемом файлом исправления.GNU GPL 2.7.6
Perl Язык программирования с динамической интерпретациейArtistic License 1.0 или GNU GPL 5.30.1
Pkg-config Компьютерная программа, которая предоставляет унифицированный интерфейс для запроса установленных библиотек с целью компиляции программного обеспечения из его исходного кода.GNU GPL 0.29. 2
ProcpsНабор утилит командной строки и полноэкранного режима, которые предоставляют информацию из псевдофайловой системы, которая обычно находится в / proc. Эта файловая система обеспечивает простой интерфейс для структур данных ядра. Программы procps обычно концентрируются на структурах, описывающих процессы, выполняющиеся в системе.GNU GPL и GNU LGPL 3.3.15
PsmiscНабор небольших полезных утилит, использующих файловую систему proc.GNU GPL 23.2
Python Интерпретируемый язык программирования высокого уровня с открытым исходным кодом для программирования общего назначенияPython Software Foundation License 3.8.1
Документация PythonПакет содержит среду разработки Python.3.8.1
Readline GNU readline - это программная библиотека, созданная и поддерживаемая GNU Project.GNU GPL 8.0
sed sed(редактор потока) - это утилита Unix, которая (а) анализирует текстовые файлы и (б) реализует язык программирования , который может применять текстовые преобразования к таким файлы.4.8
Shadow Инструмент в большинстве Unix и Unix-подобных операционных систем, используемый для изменения пароля пользователя. Пароль, введенный пользователем, обрабатывается функцией создания ключа для создания хешированной версии нового пароля, которая сохраняется. Сохраняется только хешированная версия; введенный пароль не сохраняется в целях безопасности.Artistic License или BSD-подобная лицензия 4.8.1
SysklogdЯдро и ведение системного журнала демоны, которые предоставляют две системные утилиты, которые обеспечить поддержку системного журнала и перехвата сообщений ядра. Поддержка сокетов домена в Интернете и unix позволяет этому пакету служебных программ поддерживать как локальное, так и удаленное ведение журнала.GNU GPL 1.5.1
Sysvinit Программы инициализации в стиле System V, которые управляют загрузкой и завершением работы системы.2.96
tar tar- это программа, которая предоставляет возможность создавать архивы tar, а также различные другие виды манипуляций.1.32
Tcl Tool Command Language - это динамический язык сценариев.BSD-подобная лицензия 8.6.10
Texinfo Синтаксис набора, используемый для создание документации как в интерактивном, так и в печатном виде и в официальном формате документации проекта GNU.GNU GPL 6.7
tzdata База данных часовых поясов общего пользования содержит код и данные, которые представляют историю местного времени для многих репрезентативных мест по всему миру.Public domain и BSD 2019c
Udev Configuration TarballПакет Udev содержит программы для динамического создания узлов устройств. Разработка udev была объединена с systemd, но большая часть systemd несовместима с LFS. Здесь мы собираем и устанавливаем только необходимые файлы udev.Лицензии Creative Commons и Лицензия MIT udev-lfs-20171102
util-linux Пакет Util-linux содержит разные служебные программы. Среди них есть утилиты для работы с файловыми системами, консолями, разделами и сообщениями.GNU GPL 2.35.1
язык файлы (рекомендуется)Текстовый редактор, созданный для создания и изменения любого текста.Бесплатное программное обеспечение (Лицензия Vim ), благотворительное ПО 8.2.0190
XML :: Parser2.46
XZ Utils Общее -программное обеспечение сжатия данных с высокой степенью сжатия. XZ Utils были написаны для систем, подобных POSIX, но также работают в некоторых системах, отличных от POSIX. XZ Utils является преемником LZMA Utils.GNU GPL и GNU LGPL 5.2.4
Zlib Zlib - это программная библиотека, используемая для сжатия данных.лицензии zlib 1.2.11
zstd zstd - быстрый алгоритм сжатия без потерь и инструмент сжатия данных. Сжимайте или распаковывайте файлы.zst.Двойная лицензия BSD + GPLv2.1.4.4

Это список пакетов, включенных в CLFS версии 1.1.0. Если не указано иное, этот список применим ко всем поддерживаемым архитектурам.

Стандартная единица сборки

«Стандартная единица сборки» («SBU») - это термин, используемый во время начальной сапоги перехват системы и представляет количество времени, необходимое для сборки первого пакета в LFS на данном компьютере. Его создание было вызвано долгим временем, необходимым для создания системы LFS, и желанием многих пользователей заранее знать, сколько времени потребуется для сборки архива с исходным кодом.

Начиная с Linux From Scratch версии 6.3, первым пакетом, созданным пользователем, является GNU binutils. При его создании пользователям предлагается измерять процесс сборки с помощью конструкций оболочки и дублировать это время как «стандартную единицу сборки». Как только это число известно, оценка времени, необходимого для создания более поздних пакетов, выражается относительно известного SBU.

Для сборки нескольких пакетов, собранных во время компиляции, требуется гораздо больше времени, чем для binutils, включая GNU C Library (рейтинг 4.1 SBU) и GNU Compiler Collection (рейтинг 8.4 СБУ). Единицу следует интерпретировать как приблизительную; различные факторы влияют на фактическое время, необходимое для сборки пакета.

Reception

LWN.net рассмотрел LFS в 2004 году:

Linux From Scratch - замечательный проект. Он должен стать обязательным материалом для чтения для всех учебных курсов по Linux, и каждый энтузиаст Linux должен пройти хотя бы один раз. Это также создало бы еще один интересный побочный эффект: люди, которые, как правило, быстро выражают недовольство в списках рассылки и на форумах дистрибутивов, вероятно, будут проявлять гораздо больше уважения к разработчикам. Установить готовый дистрибутив - задача нетривиальная. Создание набора из 4 компакт-дисков, содержащих стабильную, безопасную и надежную операционную систему, плюс тысячи приложений, определенно не годится.

Tux Machines написал обзор Linux From Scratch 6.1 в 2005 году:

Теперь о BLFS. К сожалению, «За пределами Linux с нуля», кажется, всегда стоит книга. Для меня это ненастоящая установка, пока вы не сможете войти в оконный менеджер.

Tux Machines также имеют вторую часть обзора и третью часть.

См. Также
  • Портал бесплатного программного обеспечения с открытым исходным кодом

Другие дистрибутивы Linux на основе исходного кода:

Ссылки
Внешние ссылки
Последняя правка сделана 2021-05-27 10:47:49
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте