Linux с нуля - Linux From Scratch

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

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

Проекты под LFS

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

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

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

Проект Linux с нуля, например BitBake, также поддерживает кросс-компиляцию Linux для РУКА встроенные системы, такие как Raspberry Pi и BeagleBone.[6][7]

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

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

Требования и порядок действий

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

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

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

Список пакетов в LFS версии 10.0

КомпонентОписаниеЛицензияВерсия
AclСписок управления доступом (ACL) по отношению к файловой системе компьютера - это список разрешений, прикрепленных к объекту.GNU GPL2.2.53
AttrКоманды для управления расширенными атрибутами файловой системы.2.4.48
AutoconfИнструмент для производства настроить скрипты за C, C ++, Фортран, Фортран 77, Erlang, Цель-C программное обеспечение на Unix-подобный Компьютерные системы.2.69
AutomakeА инструмент программирования который производит портативные make-файлы для использования делать программа, используемая при компиляции программного обеспечения.1.16.1
БашА бесплатно программное обеспечение Оболочка Unix написано для Проект GNU5.0
до н.эдо н.э это базовый калькулятор (часто называемый стендовым калькулятором), это «язык калькулятора произвольной точности» с синтаксисом, аналогичным Язык программирования C.2.5.3
BinutilsКоллекция инструменты программирования для манипулирования объектный код в различных форматах объектных файлов.2.35
БизонА генератор парсеров это часть Проект GNU. Бизон преобразует грамматика описание для контекстно-свободная грамматика в исходный код для C, C ++ или Ява парсер.3.5.2
Bzip2А свободный и Открытый исходный код сжатие данных без потерь алгоритм и программа разработана Джулиан Сьюард.1.0.8
ПроверьтеФреймворк для модульного тестирования C.0.14.0
CoreutilsА пакет из GNU программного обеспечения содержащий множество основных инструментов, таких как Кот, ls, и rm, необходим для Unix-подобный операционные системы.8.31
DejaGNUФреймворк для тестирования других программ. У него есть основной сценарий runtest, который просматривает каталог, просматривая файлы конфигурации, а затем запускает несколько тестов с заданными критериями.1.6.2
DiffutilsА сравнение данных утилита, которая выводит различия между двумя файлами.3.7
E2fsprogse2fsprogs (иногда называемый программами e2fs) - это набор утилит для поддержки ext2, ext3 и ext4 файловые системы.1.45.5
ElfutilsНабор утилит и библиотек для чтения, создания и изменения двоичных файлов ELF.GNU GPL и GNU LGPL0.178
EudevВилка udev чтобы избежать зависимости от архитектуры systemd. Результирующая вилка называется eudev и делает функциональность udev доступной без systemd.GNU GPL3.2.9
ЭмигрантА транслировать ориентированный XML 1.0 парсер библиотека, написано в C.Лицензия MIT2.2.9
ОжидатьОжидание - это Unix инструмент автоматизации и тестирования как расширение Tcl язык сценариев, для интерактивного Приложения такие как телнет, ftp, пароль, fsck, rlogin, Подсказка, ssh, и другие.Всеобщее достояние5.45.4
файлКоманда file - это стандартная программа Unix для распознавания типа данных, содержащихся в компьютерном файле.BSD-подобная лицензия5.38
FindutilsУтилиты поиска GNU - это базовые утилиты поиска в каталогах операционной системы GNU.GNU GPL4.7.0
Flexflex (быстро лексический анализатор генератор) является бесплатно программное обеспечение Альтернативой lex.Лицензия BSD2.6.4
GawkГавк - это язык программирования который предназначен для обработки текстовых данных в файлах или потоках данныхGNU GPL5.0.1
GCCКоллекция компиляторов GNU (обычно сокращается до GCC) - это компилятор система, созданная Проект GNU поддержка различных языки программирования10.2.0
GDBMGDBM простой движки баз данных1.18.1
GettextGettext - это GNU интернационализация и локализация (i18n) библиотека.0.20.1
GlibcGNU C Библиотека, широко известная как glibc, - это Стандартная библиотека C выпущен Проект GNU.2.32
GMPБиблиотека множественной точности GNU, также известная как GMP, является свободный библиотека для арифметика произвольной точности, работающих по подписанным целые числа, рациональное число, и плавающая точка числа.6.2.0
GperfИдеальный генератор хеш-функций. Для заданного списка строк он создает хеш-функцию и хеш-таблицу в форме кода C или C ++ для поиска значения в зависимости от входной строки. Хеш-функция идеальна, что означает, что в хеш-таблице нет коллизий, а для поиска по хеш-таблице требуется только сравнение одной строки.3.1
Grepgrep это командная строка утилита текстового поиска, изначально написанная для Unix.3.4
ГроффГрофф - это GNU замена для Troff и nroff средства форматирования текста.1.22.4
GRUBGNU GRUB (сокращение от GNU GR и Unified Bootloader) - это загрузчик пакет из Проект GNU.2.04
GzipGzip - это программное приложение используется для сжатие файлов. gzip - это сокращение от GNU zip1.10
iana-и т. д.iana-etc. устанавливает сервисы и протоколы, используя данные из Управление по присвоению номеров в Интернете. Включены моментальные снимки данных из IANA, сценарии для преобразования этих данных в необходимые форматы и сценарии для получения самых последних данных.Открытая лицензия на программное обеспечение2.30
InetutilsНабор сетевых инструментов, включая ftp, telnet и rsh.GNU GPL1.9.4
IntltoolНабор инструментов для централизованного перевода множества различных форматов файлов с использованием файлов PO, совместимых с GNU gettext.0.51.0
IPRoute2Коллекция пространство пользователя утилиты для управления и мониторинга различных аспектов сеть в Ядро Linux, в том числе Маршрутизация, сетевые интерфейсы, туннели, контроль движения, и связанные с сетью драйверы устройств.5.5.0
КБДПакет содержит инструменты для управления консолью Linux (консоль Linux, виртуальные терминалы на ней, клавиатура и т. Д.). В основном они загружают консольные шрифты и раскладки клавиатуры. Также этот пакет содержит набор различных шрифтов и раскладок клавиатуры.2.2.0
KmodБинарный файл с несколькими вызовами, который реализует программы, используемые для управления модулями ядра Linux.26
меньшеменьше это терминальный пейджер программа на Unix, Windows и Unix-подобный системы, используемые для просмотра (но не изменения) содержимого текстовый файл по одному экрану за раз.Двойной: либо GPL или BSD-подобная лицензия551
LFS-загрузочные скриптыПакет LFS-Bootscripts содержит набор сценариев для запуска / остановки системы LFS при загрузке / завершении работы. Файлы конфигурации и процедуры, необходимые для настройки процесса загрузки, описаны в следующих разделах.Лицензии Creative Commons и Лицензия MIT9.0

(20191031)

LibcapАльтернатива модели привилегий суперпользователя в Linux.2.31
ЛибффиПереносимая библиотека интерфейса чужих функций.Лицензия MIT3.3
LibpipelineLibpipeline - это библиотека C для гибкого и удобного управления конвейерами подпроцессов.GNU GPL1.5.2
LibtoolGNU Libtool - это GNU инструмент программирования от Система сборки GNU используется для создания переносимых скомпилированных библиотеки.2.4.6
LinuxЯдро Linux - это операционная система ядро используется Linux семья Unix-подобный операционные системы.5.8.3
GNU m4GNU m4 - это GNU версия м4 Макро-препроцессор.1.4.18
делатьСделать это полезность за автоматически строит исполняемые программы и библиотеки из исходный код.4.3
Человек-БДMan-DB - это реализация стандартной системы документации Unix, доступ к которой осуществляется с помощью команды man. Он использует базу данных Berkeley DB вместо традиционных баз данных whatis с неструктурированным текстом.2.9.0
Man-страницыСтраница руководства (сокращение от страницы руководства) - это форма онлайн-документации по программному обеспечению, которую обычно можно найти на Unix или Unix-подобный Операционная система.Множественные лицензии.[10]5.05
Мезонсистема сборки с открытым исходным кодом, которая должна быть одновременно чрезвычайно быстрой и, что еще более важно, максимально удобной для пользователя.Лицензия Apache0.53.1
ПДКБиблиотека C для арифметики комплексных чисел с произвольно высокая точностьGNU LGPL1.1.0
MPFRБиблиотека GNU C для вычислений с плавающей запятой множественной точности с правильным округлением.GNU LGPL и GNU GPL для специальной части исключения исходного кода4.0.2
НиндзяНебольшая система сборки с упором на скорость.Лицензия Apache1.10.0
ncursesБиблиотека программирования для написания текстовых пользовательских интерфейсов независимо от терминалаЛицензия X11[11]6.2
OpenSSLЛицензия Apache 1.0 и четыре предложения Лицензия BSD1.1.1d
ПластырьКомпьютерный инструмент для Unix программы который обновляет текстовые файлы в соответствии с инструкциями, содержащимися в отдельном файле, который называется файл патча.GNU GPL2.7.6
PerlДинамический интерпретируемый язык программированияХудожественная лицензия 1.0[12][13] или GNU GPL[14]5.30.1
Pkg-configКомпьютерная программа, предоставляющая единый интерфейс для запроса установленного библиотеки с целью составление программное обеспечение от его исходный код.GNU GPL0.29.2
ProcpsНабор командной строки и полноэкранных утилит, которые предоставляют информацию из псевдофайловой системы, обычно расположенной по адресу / proc. Эта файловая система обеспечивает простой интерфейс для структур данных ядра. Программы procps обычно концентрируются на структурах, описывающих процессы, выполняющиеся в системе.GNU GPL и GNU LGPL3.3.15
ПсмиискНабор небольших полезных утилит, использующих proc файловая система.GNU GPL23.2
PythonИнтерпретируемый язык высокого уровня с открытым исходным кодом для программирования общего назначения.Лицензия Python Software Foundation3.8.1
Документация PythonПакет содержит среду разработки Python.3.8.1
ReadlineСтрока чтения GNU - это библиотека программного обеспечения создан и поддерживается Проект GNU.GNU GPL8.0
sedsed (редактор потока) это Unix утилита, которая (а) анализирует текстовые файлы и (б) реализует язык программирования который может применять текстовые преобразования к таким файлам.4.8
ТеньИнструмент для большинства Unix и Unix-подобный операционные системы, используемые для изменения пользователя пароль. Пароль, введенный пользователем, проходит через ключевая деривационная функция создать хешированная версия нового пароля, который сохраняется. Сохраняется только хешированная версия; введенный пароль не сохраняется в целях безопасности.Художественная лицензия или BSD-подобная лицензия4.8.1
SysklogdЯдро и системный журнал демоны который предоставляет две системные утилиты, которые обеспечивают поддержку системного журнала и перехвата сообщений ядра. Поддержка сокетов домена в Интернете и unix позволяет этому пакету служебных программ поддерживать как локальное, так и удаленное ведение журнала.GNU GPL1.5.1
СысвинитПрограммы инициализации в стиле System V, управляющие загрузкой и завершением работы системы.2.96
деготьдеготь это программа, которая предоставляет возможность создавать tar-архивы, а также различные другие виды манипуляций.1.32
TclЯзык команд инструмента динамичный язык сценариев.BSD-подобная лицензия[15]8.6.10
TexinfoСинтаксис набора, используемый для создания документации как в интерактивной, так и в печатной форме, и в официальном формате документации проекта GNU.GNU GPL6.7
tzdataБаза данных часовых поясов общественного достояния содержит код и данные, которые представляют историю местного времени для многих репрезентативных мест по всему миру.Всеобщее достояние и BSD2019c
Удев Тарбол конфигурацииПакет Udev содержит программы для динамического создания узлов устройств. Разработка udev была объединена с systemd, но большая часть systemd несовместима с LFS. Здесь мы собираем и устанавливаем только необходимые файлы udev.Лицензии Creative Commons и Лицензия MITudev-lfs-20171102
утилита-LinuxПакет Util-linux содержит разные служебные программы. Среди них есть утилиты для работы с файловыми системами, консолями, разделами и сообщениями.GNU GPL2.35.1
Vim язык файлы (рекомендуется)Текстовый редактор, созданный для создания и изменения любого текста.Бесплатно программное обеспечение (Лицензия Vim ), благотворительная посуда8.2.0190
XML :: парсер2.46
XZ UtilsПрограмма сжатия данных общего назначения с высокой степенью сжатия. XZ Utils были написаны для систем, подобных POSIX, но также работают в некоторых системах, отличных от POSIX. XZ Utils является преемником LZMA Utils.GNU GPL и GNU LGPL5.2.4
ЗлибЗлиб - это библиотека программного обеспечения используется для Сжатие данных.лицензия zlib1.2.11
zstdzstd - быстрый алгоритм сжатия без потерь и инструмент сжатия данных. Сжимайте или распаковывайте файлы .zst.Двойная лицензия BSD + GPLv2.[16]1.4.4

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

Стандартный блок сборки

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

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

Некоторые пакеты, созданные во время компиляции, собираются намного дольше, чем binutils, включая Библиотека GNU C (рейтинг 4.1 SBU) и Коллекция компиляторов GNU (рейтинг 8,4 SBU). Единицу следует интерпретировать как приблизительную; различные факторы влияют на фактическое время, необходимое для сборки пакета.

Прием

LWN.net рассмотрел LFS в 2004 г .:[18]

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

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

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

У Tux Machines также есть вторая часть обзора,[20] и третья часть.[21]

Смотрите также

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

Рекомендации

  1. ^ а б "Новости LFS". www.linuxfromscratch.org. Получено 3 сентября 2020.
  2. ^ Бикманс, Джерард (2020). Linux с нуля, версия 10.0 (PDF).
  3. ^ Предисловие: Целевые архитектуры LFS, Linux с нуля
  4. ^ Что такое Linux с нуля?, Домашняя страница проекта LFS
  5. ^ Джерард Бикманс: За пределами Linux с нуля, версия 6.3 (август 2008 г.)
  6. ^ «Кросс-скомпилированный Linux с нуля - встроенный».
  7. ^ Брендан Хоран.«Практичный Raspberry Pi».2013.p. 105.
  8. ^ а б "Домашняя страница проекта LFS LiveCD". www.linuxfromscratch.org. Получено 25 мая 2018.
  9. ^ "Индекс / ~ kb0iic / livecdupd". clfs.org. Получено 25 мая 2018.
  10. ^ «Лицензии для справочных страниц». www.kernel.org. Получено 25 мая 2018.
  11. ^ «NCURSES - Лицензирование». Получено 9 июля 2013.
  12. ^ «Художественная лицензия» - dev.perl.org ». dev.perl.org. Получено 25 мая 2018.
  13. ^ Художественный - файл в репозитории Perl 5 git
  14. ^ «Лицензирование Perl». dev.perl.org. Получено 8 января 2011.
  15. ^ «Условия лицензирования Tcl / Tk». Получено 8 января 2011.
  16. ^ «Новая лицензия», GitHub "facebook / zstd"
  17. ^ http://www.linuxfromscratch.org/lfs/downloads/stable/wget-list
  18. ^ "Изучение Linux с нуля [LWN.net]". lwn.net. Получено 28 марта 2020.
  19. ^ "Linux From Scratch 6.1 (часть 1?) | Tux Machines". www.tuxmachines.org. Получено 28 марта 2020.
  20. ^ "Linux From Scratch 6.1 - Часть 2 - BLFS | Tux Machines". www.tuxmachines.org. Получено 28 марта 2020.
  21. ^ "Beyond Beyond Linux с нуля (lfs - part3) | Tux Machines". www.tuxmachines.org. Получено 28 марта 2020.

внешняя ссылка