Разработчик | Джерард Бикманс и др. |
---|---|
Семейство ОС | Unix-подобный |
Рабочее состояние | Текущий |
Исходная модель | С открытым исходным кодом |
Первоначальный выпуск | Декабрь 1999 г (1999-12) |
Последний релиз | 12.2 / 1 сентября 2024 г. [1] [2] |
Метод обновления | На основе источника |
Менеджер пакетов | Нет (на основе источника) |
Платформы | IA-32 , x86-64 [3] |
Тип ядра | Монолитный |
Пользовательский интерфейс по умолчанию | CLI |
Лицензия | Лицензии Creative Commons В основном CC BY-NC-SA [4] и MIT License |
Официальный сайт | www.linuxfromscratch.org |
Linux From Scratch ( LFS ) — тип установки Linux и название книги, написанной Джерардом Бикмансом, и по состоянию на май 2021 года в основном поддерживаемой Брюсом Даббсом. Книга дает читателям инструкции о том, как собрать систему Linux из исходного кода . Книга доступна бесплатно на сайте Linux From Scratch. [1]
Linux From Scratch — это способ установки работающей системы Linux путем сборки всех ее компонентов вручную. Это, естественно, более длительный процесс, чем установка предварительно скомпилированного дистрибутива Linux . Согласно сайту Linux From Scratch , преимущества этого метода — компактная, гибкая и безопасная система, а также более глубокое понимание внутренней работы операционных систем на базе Linux. [5]
Чтобы LFS оставался небольшим и целенаправленным, была создана книга Beyond Linux From Scratch (BLFS), в которой представлены инструкции по дальнейшей разработке базовой системы Linux, созданной в LFS. Она знакомит читателя с дополнениями к системе, включая X Window System , среды рабочего стола ( KDE , GNOME , Xfce , LXDE ), программное обеспечение для повышения производительности , веб-браузеры , языки и инструменты программирования, мультимедийное программное обеспечение, а также инструменты управления сетями и системного администрирования . Начиная с версии 5.0, версия книги BLFS совпадает с версией книги LFS. [6]
Книга 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 . [7] [8]
Книга Hardened Linux From Scratch (HLFS) фокусируется на улучшениях безопасности, таких как исправления ядра Hardened , политики обязательного контроля доступа , защита от сокрушения стека и рандомизация макета адресного пространства . Помимо своей основной цели — создания операционной системы, ориентированной на безопасность , 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. [9] LFS Live CD содержит все исходные пакеты (только в полной версии Live CD), книгу LFS, автоматизированные инструменты сборки и (за исключением минимальной версии Live CD) среду Xfce GUI для работы. Официальный LFS Live CD больше не поддерживается и не может быть использован для сборки LFS версии 7 или более поздней. [9] Однако существуют две неофициальные сборки, которые можно использовать для сборки 32-битного или 64-битного ядра и пользовательского пространства соответственно для LFS 7.x. [10]
Сначала необходимо скомпилировать цепочку инструментов , состоящую из инструментов, используемых для компиляции LFS, таких как GCC , glibc , binutils и других необходимых утилит. Затем корневой каталог необходимо изменить (используя chroot ) на раздел цепочки инструментов, чтобы начать сборку окончательной системы. Одним из первых пакетов для компиляции является glibc; после этого компоновщик цепочки инструментов должен быть настроен для компоновки с недавно собранным glibc, чтобы все остальные пакеты, которые составят готовую систему, также могли быть с ним связаны. Во время фазы chroot функция хеширования bash отключается, а временный каталог bin цепочки инструментов перемещается в конец PATH. Таким образом, недавно скомпилированные программы идут первыми в PATH, а новая система строится на собственных новых компонентах.
Компонент | Описание | Лицензия |
---|---|---|
Акл | Список контроля доступа (ACL) применительно к файловой системе компьютера представляет собой список разрешений, прикрепленных к объекту. | GNU GPL |
Атр | Команды для управления расширенными атрибутами файловой системы. | GNU GPL |
Автоконф | Инструмент для создания сценариев конфигурации для программного обеспечения на языках C , C++ , Fortran , Fortran 77, Erlang , Objective-C на Unix-подобных компьютерных системах. | GNU GPL |
Автопроизводитель | Инструмент программирования , создающий переносимые make-файлы для использования программой make , применяемой при компиляции программного обеспечения. | GNU GPL |
Баш | Свободная программная оболочка Unix, написанная для проекта GNU. | GNU GPL |
до нашей эры | bc — базовый калькулятор (часто называемый настольным калькулятором), «язык вычислений произвольной точности» с синтаксисом, похожим на язык программирования C. | GNU GPL |
Binutils | Набор инструментов программирования для манипулирования объектным кодом в различных форматах объектных файлов. | GNU GPL |
Бизон | Генератор парсеров, являющийся частью проекта GNU . Bison преобразует описание грамматики для контекстно-свободной грамматики в исходный код для парсера C , C++ или Java . | GNU GPL |
Bzip2 | Бесплатный алгоритм и программа сжатия данных без потерь с открытым исходным кодом, разработанные Джулианом Сьюардом . | Лицензия типа BSD |
Проверять | Фреймворк модульного тестирования для C. | GNU GPL |
Coreutils | Пакет программного обеспечения GNU , содержащий многие из основных инструментов, таких как cat , ls и rm , необходимых для Unix-подобных операционных систем . | GNU GPL |
DejaGNU | Фреймворк для тестирования других программ. Он имеет основной скрипт, называемый runtest, который проходит по каталогу, просматривая файлы конфигурации, а затем запускает некоторые тесты с заданными критериями. | GNU GPL |
Диффутилс | Утилита сравнения данных , которая выводит различия между двумя файлами. | GNU GPL |
E2fsprogs | e2fsprogs (иногда называемые программами e2fs) — это набор утилит для обслуживания файловых систем ext2 , ext3 и ext4 . | GNU GPL |
Элфутилс | Коллекция утилит и библиотек для чтения, создания и изменения двоичных файлов ELF. | GNU GPL и GNU LGPL |
Эудев | Форк udev , чтобы избежать зависимости от архитектуры systemd. Полученный форк называется eudev и делает функционал udev доступным без systemd . | GNU GPL |
Экспат | Поточно - ориентированная библиотека парсера XML 1.0 , написанная на языке C. | Лицензия Массачусетского технологического института |
Ожидать | Expect — это инструмент автоматизации и тестирования Unix , являющийся расширением языка сценариев Tcl для интерактивных приложений , таких как telnet , ftp , passwd , fsck , rlogin , tip , ssh и других. | Общественное достояние |
Файл | Команда file — стандартная программа Unix для распознавания типа данных, содержащихся в компьютерном файле. | Лицензия типа BSD |
Findutils | Утилиты поиска GNU — это основные утилиты поиска в каталогах операционной системы GNU. | GNU GPL |
Флекс | flex (генератор быстрых лексических анализаторов ) — это бесплатная программная альтернатива lex . | BSD-лицензия |
Гавк | Gawk — это язык программирования , предназначенный для обработки текстовых данных в файлах или потоках данных. | GNU GPL |
ССЗ | GNU Compiler Collection (обычно сокращается до GCC) — это система компиляторов, созданная в рамках проекта GNU, поддерживающая различные языки программирования. | |
ГДБМ | Простые движки баз данных GDBM | |
Gettext | Gettext — это библиотека интернационализации и локализации GNU (i18n). | |
Глибк | Библиотека GNU C , широко известная как glibc, — это стандартная библиотека языка C, выпущенная проектом GNU . | |
НМП | Библиотека GNU Multiple-Precision Library, также известная как GMP, — это бесплатная библиотека для арифметики произвольной точности , работающая с целыми числами со знаком , рациональными числами и числами с плавающей точкой . | |
Gperf | Идеальный генератор хэш-функции. Для заданного списка строк он создает хэш-функцию и хэш-таблицу в виде кода C или C++ для поиска значения в зависимости от входной строки. Хэш-функция идеальна, что означает, что хэш-таблица не имеет коллизий, а для поиска в хэш-таблице требуется только одно сравнение строк. | |
Греп | grep — утилита командной строки для текстового поиска, изначально написанная для Unix . | |
Грофф | Groff — это GNU -заменитель текстовых форматировщиков troff и nroff . | |
GRUB | GNU GRUB (сокращение от GNU GRand Unified Bootloader) — пакет загрузчика из проекта GNU . | |
Gzip | Gzip — это программное приложение, используемое для сжатия файлов . gzip — это сокращение от GNU zip. | |
iana-и т.д. | iana-etc. устанавливает службы и протоколы, используя данные из Internet Assigned Numbers Authority . Включены моментальные снимки данных из IANA, скрипты для преобразования этих данных в необходимые форматы и скрипты для извлечения последних данных. | Открытая лицензия на программное обеспечение |
Inetutils | Набор сетевых инструментов, включая: telnet , ftp и rsh . | GNU GPL |
Intltool | Набор инструментов для централизации перевода множества различных форматов файлов с использованием PO-файлов, совместимых с GNU gettext. | |
IP-маршрут2 | Набор утилит пользовательского пространства для управления и мониторинга различных аспектов работы сети в ядре Linux , включая маршрутизацию , сетевые интерфейсы, туннели, управление трафиком и драйверы сетевых устройств . | |
Кбд | Пакет содержит инструменты для управления консолью Linux (консоль Linux, виртуальные терминалы на ней, клавиатура и т.д.). В основном, они загружают шрифты консоли и раскладки клавиатуры. Также этот пакет содержит набор различных шрифтов и раскладок клавиатуры. | |
Кмод | Многовызовной двоичный файл, реализующий программы, используемые для управления модулями ядра Linux. | |
меньше | less — это программа -пейджер терминала в системах Unix , Windows и Unix-подобных системах, используемая для просмотра (но не изменения) содержимого текстового файла по одному экрану за раз. | Двойная: либо GPL , либо BSD-подобная лицензия |
LFS-Bootscripts | Пакет LFS-Bootscripts содержит набор скриптов для запуска/остановки системы LFS при загрузке/выключении. Файлы конфигурации и процедуры, необходимые для настройки процесса загрузки, описаны в следующих разделах. | Лицензии Creative Commons и лицензия MIT |
Либкап | Альтернатива модели привилегий суперпользователя в Linux. | |
Либффи | Переносимая библиотека интерфейса внешних функций. | Лицензия Массачусетского технологического института |
Libpipeline | Libpipeline — это библиотека языка C для гибкого и удобного управления конвейерами подпроцессов. | GNU GPL |
Libtool | GNU Libtool — это инструмент программирования GNU из системы сборки GNU, используемый для создания переносимых скомпилированных библиотек . | |
Линукс | Ядро Linux — ядро операционной системы , используемое семейством Linux Unix -подобных операционных систем . | |
ГНУ м4 | GNU m4 — это GNU- версия макропрепроцессора m4 . | |
делать | Make — утилита для автоматической сборки исполняемых программ и библиотек из исходного кода . | |
Человек-БД | Man-DB — это реализация стандартной системы документации Unix, доступ к которой осуществляется с помощью команды man. Она использует базу данных Berkeley DB вместо традиционных текстовых баз данных whatis. | |
Man-страницы | Страница руководства (сокращение от manual page) — это форма онлайн-документации по программному обеспечению, обычно встречающаяся в операционных системах Unix или Unix-подобных системах. | Множественные лицензии. [11] |
Мезон | система сборки с открытым исходным кодом, призванная быть как чрезвычайно быстрой, так и, что еще важнее, максимально удобной для пользователя. | Лицензия Apache |
ПДК | Библиотека AC для арифметики комплексных чисел с произвольно высокой точностью | GNU LGPL |
МПФР | Библиотека GNU C для вычислений с плавающей точкой высокой точности с правильным округлением. | GNU LGPL и GNU GPL для особой части исходного кода |
ncurses | Библиотека программирования для написания текстовых пользовательских интерфейсов в терминально-независимой манере. | Лицензия X11 [12] |
Ниндзя | Небольшая система сборки с упором на скорость. | Лицензия Apache |
OpenSSL | Библиотека программного обеспечения для приложений, которые обеспечивают безопасную связь по компьютерным сетям от подслушивания и идентифицируют сторону на другом конце. Она широко используется интернет- серверами , включая большинство веб-сайтов HTTPS . | Лицензия Apache 1.0 и четырехпунктная лицензия BSD |
Пластырь | Компьютерный инструмент для программ Unix , который обновляет текстовые файлы в соответствии с инструкциями, содержащимися в отдельном файле, называемом файлом исправления . | GNU GPL |
Перл | Динамически интерпретируемый язык программирования | Художественная лицензия 1.0 [13] [14] или GNU GPL [15] |
Pkg-config | Компьютерная программа, предоставляющая унифицированный интерфейс для запроса установленных библиотек с целью компиляции программного обеспечения из его исходного кода . | GNU GPL |
Процпс | Набор командной строки и полноэкранных утилит, которые предоставляют информацию из псевдофайловой системы, чаще всего расположенной в /proc . Эта файловая система предоставляет простой интерфейс к структурам данных ядра. Программы procps обычно концентрируются на структурах, описывающих процессы, запущенные в системе. | GNU GPL и GNU LGPL |
Psmisc | Набор небольших полезных утилит, использующих файловую систему proc . | GNU GPL |
Питон | Интерпретируемый высокоуровневый язык программирования с открытым исходным кодом для программирования общего назначения. | Лицензия Python Software Foundation |
Документация по Python | Пакет содержит среду разработки Python. | |
Читаемая строка | GNU Readline — это программная библиотека, созданная и поддерживаемая проектом GNU . | GNU GPL |
сед | sed ( потоковый редактор ) — это утилита Unix , которая (а) анализирует текстовые файлы и (б) реализует язык программирования , который может применять текстовые преобразования к таким файлам. | |
Тень | Инструмент в большинстве операционных систем Unix и Unix-подобных , используемый для изменения пароля пользователя . Пароль, введенный пользователем, проходит через функцию деривации ключа для создания хэшированной версии нового пароля, которая сохраняется. Сохраняется только хэшированная версия; введенный пароль не сохраняется из соображений безопасности. | Художественная лицензия или лицензия типа BSD |
Sysklogd | Демоны ведения журнала ядра и системы , которые предоставляют две системные утилиты, которые обеспечивают поддержку ведения журнала системы и перехвата сообщений ядра. Поддержка интернет-сокетов и сокетов домена unix позволяет этому пакету утилит поддерживать как локальное, так и удаленное ведение журнала. | GNU GPL |
Сисвинит | Программы инициализации в стиле System V, управляющие загрузкой и завершением работы системы. | |
смола | tar — программа, которая предоставляет возможность создания tar-архивов, а также различных других видов манипуляций. | |
Тсл | Язык команд инструментов — это динамический язык сценариев . | Лицензия типа BSD [16] |
Texinfo | Синтаксис набора текста, используемый для создания документации как в электронном виде, так и в печатном виде, а также в формате официальной документации проекта GNU. | GNU GPL |
tzdata | База данных часовых поясов, находящаяся в открытом доступе, содержит код и данные, которые представляют историю местного времени для многих репрезентативных мест по всему миру. | Общественное достояние и BSD |
Конфигурационный архив Udev | Пакет Udev содержит программы для динамического создания узлов устройств. Разработка udev была объединена с systemd, но большая часть systemd несовместима с LFS. Здесь мы собираем и устанавливаем только необходимые файлы udev. | Лицензии Creative Commons и лицензия MIT |
util-linux | Пакет Util-linux содержит различные утилиты. Среди них утилиты для работы с файловыми системами, консолями, разделами и сообщениями. | GNU GPL |
Языковые файлы Vim (рекомендуется) | Текстовый редактор, предназначенный для создания и изменения любого типа текста. | Бесплатное программное обеспечение (лицензия Vim), благотворительное программное обеспечение |
Колесо | Эта библиотека представляет собой эталонную реализацию стандарта упаковки Python wheel, определенного в PEP 427. | Массачусетский технологический институт |
XML::Парсер | ||
XZ Utils | Универсальное программное обеспечение для сжатия данных с высокой степенью сжатия. XZ Utils были написаны для систем, подобных POSIX, но также работают на некоторых системах, не совсем соответствующих POSIX. XZ Utils являются преемниками LZMA Utils. | GNU GPL и GNU LGPL |
Злиб | Zlib — программная библиотека, используемая для сжатия данных . | лицензия zlib |
зстд | zstd — быстрый алгоритм сжатия без потерь и инструмент сжатия данных. Сжимайте или распаковывайте файлы .zst. | Двойная лицензия BSD + GPLv2. [17] |
[18] Это список пакетов, включенных в CLFS версии 1.1.0. Если не указано иное, этот список применим ко всем поддерживаемым архитектурам.
|
|
|
«Стандартная единица сборки» («SBU») — это термин, используемый во время начальной загрузки системы, и представляет собой количество времени, необходимое для сборки первого пакета в LFS на данном компьютере. Его создание было вызвано длительным временем, необходимым для сборки системы LFS, и желанием многих пользователей заранее знать, сколько времени займет сборка исходного tarball.
Начиная с Linux From Scratch версии 10.1, первым пакетом, собранным пользователем, является GNU binutils. При его сборке пользователям рекомендуется измерять процесс сборки с помощью конструкций оболочки и дублировать это время как «стандартную единицу сборки» системы. Как только это число становится известным, оценка времени, необходимого для сборки последующих пакетов, выражается относительно известного SBU.
Несколько пакетов, собранных во время компиляции, требуют гораздо больше времени для сборки, чем binutils, включая GNU C Library (оценено в 4,2 SBU) и GNU Compiler Collection (оценено в 11 SBU). Единицу следует интерпретировать как приближенную; на фактическое время, необходимое для сборки пакета, влияют различные факторы.
LWN.net сделал обзор LFS в 2004 году: [19]
Linux From Scratch — замечательный проект. Он должен стать обязательным материалом для чтения на всех курсах обучения Linux, и его должен пройти хотя бы один раз каждый энтузиаст Linux. Это также создало бы еще один интересный побочный эффект: люди, которые склонны быстро выражать недовольство в почтовых рассылках и форумах дистрибутивов, вероятно, проявили бы гораздо больше уважения к разработчикам. Установка готового дистрибутива — тривиальная задача. Создание набора из 4 компакт-дисков, содержащих стабильную, безопасную и надежную операционную систему, а также тысячи приложений, определенно не является таковой.
Tux Machines написал обзор Linux From Scratch 6.1 в 2005 году: [20]
Теперь о BLFS. К сожалению, Beyond Linux From Scratch всегда отстает от книги, как мне кажется. Для меня это не настоящая установка, пока не получится войти в оконный менеджер.
Tux Machines также имеет вторую [21] и третью [22] части обзора.
Другие дистрибутивы Linux на основе исходного кода: