Linux с нуля

Тип установки Linux

Operating system
Linux с нуля
РазработчикДжерард Бикманс и др.
Семейство ОСUnix-подобный
Рабочее состояниеТекущий
Исходная модельС открытым исходным кодом
Первоначальный выпускДекабрь 1999 г .; 24 года назад (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]

Проекты в рамках LFS

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, а новая система строится на собственных новых компонентах.

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

КомпонентОписаниеЛицензия
АклСписок контроля доступа (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
E2fsprogse2fsprogs (иногда называемые программами 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
GettextGettext — это библиотека интернационализации и локализации GNU (i18n).
ГлибкБиблиотека GNU C , широко известная как glibc, — это стандартная библиотека языка C, выпущенная проектом GNU .
НМПБиблиотека GNU Multiple-Precision Library, также известная как GMP, — это бесплатная библиотека для арифметики произвольной точности , работающая с целыми числами со знаком , рациональными числами и числами с плавающей точкой .
GperfИдеальный генератор хэш-функции. Для заданного списка строк он создает хэш-функцию и хэш-таблицу в виде кода C или C++ для поиска значения в зависимости от входной строки. Хэш-функция идеальна, что означает, что хэш-таблица не имеет коллизий, а для поиска в хэш-таблице требуется только одно сравнение строк.
Грепgrep— утилита командной строки для текстового поиска, изначально написанная для Unix .
ГроффGroff — это GNU -заменитель текстовых форматировщиков troff и nroff .
GRUBGNU GRUB (сокращение от GNU GRand Unified Bootloader) — пакет загрузчика из проекта GNU .
GzipGzip — это программное приложение, используемое для сжатия файлов . 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.
ЛибффиПереносимая библиотека интерфейса внешних функций.Лицензия Массачусетского технологического института
LibpipelineLibpipeline — это библиотека языка C для гибкого и удобного управления конвейерами подпроцессов.GNU GPL
LibtoolGNU Libtool — это инструмент программирования GNU из системы сборки GNU, используемый для создания переносимых скомпилированных библиотек .
ЛинуксЯдро Linux — ядро ​​операционной системы , используемое семейством Linux Unix -подобных операционных систем .
ГНУ м4GNU 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 на основе исходного кода:

Ссылки

  1. ^ ab "LFS News". www.linuxfromscratch.org . Получено 2 сентября 2023 г. .
  2. ^ Бикманс, Джерард (2023). Linux From Scratch, версия 12.0 (PDF) .
  3. ^ Предисловие: Целевые архитектуры LFS, Linux From Scratch
  4. ^ "Приложение D. Лицензии LFS" . Получено 9 августа 2023 г.
  5. ^ Что такое Linux From Scratch?, Домашняя страница проекта LFS
  6. ^ Джерард Бикманс: Beyond Linux From Scratch, версия 6.3 (август 2008 г.)
  7. ^ «Кросс-скомпилированный Linux с нуля — встраиваемый».
  8. ^ Брендан Хоран. «Практический Raspberry Pi». 2013. С. 105.
  9. ^ ab "LFS LiveCD Project Homepage". www.linuxfromscratch.org . Получено 25 мая 2018 г. .
  10. ^ "Индекс /~kb0iic/livecdupd". clfs.org . Получено 25 мая 2018 г. .
  11. ^ "Лицензии для страниц руководства". www.kernel.org . Получено 25 мая 2018 г. .
  12. ^ "NCURSES – Лицензирование" . Получено 9 июля 2013 г.
  13. ^ ""Художественная лицензия" - dev.perl.org". dev.perl.org . Получено 25 мая 2018 г. .
  14. ^ Художественный - файл в репозитории Perl 5 git
  15. ^ "Лицензирование Perl". dev.perl.org . Получено 8 января 2011 г. .
  16. ^ "Условия лицензирования Tcl/Tk" . Получено 8 января 2011 г.
  17. ^ "Новая лицензия", GitHub "facebook/zstd"
  18. ^ "СПИСОК: /lfs/downloads/stable/wget-list" (txt) .
  19. ^ "Изучение Linux From Scratch [LWN.net]". lwn.net . Получено 28 марта 2020 г. .
  20. ^ "Linux From Scratch 6.1 (часть 1?) | Tux Machines". www.tuxmachines.org . Получено 28 марта 2020 г. .
  21. ^ "Linux From Scratch 6.1 - Часть 2 - BLFS | Tux Machines". www.tuxmachines.org . Получено 28 марта 2020 г. .
  22. ^ "Beyond Beyond Linux from Scratch (lfs - part3) | Tux Machines". www.tuxmachines.org . Получено 28 марта 2020 г. .
  • "LFS Project Homepage". Linux From Scratch . Gerard Beekmans. 17 марта 2008 г. Получено 17 марта 2008 г.
  • Официальный сайт
  • Linux с нуля на DistroWatch
  • Интервью с Джерардом Бикмансом
  • Еще одно интервью с Джерардом Бикмансом
Retrieved from "https://en.wikipedia.org/w/index.php?title=Linux_From_Scratch&oldid=1245346250"