Линукс с нуля
Разработчик | Джерард Бикманс и др. |
---|---|
Семейство ОС | Unix-подобный |
Рабочее состояние | Текущий |
Исходная модель | Открытый исходный код |
Первоначальный выпуск | декабрь 1999 г |
Последний выпуск | 12.1 / 1 марта 2024 г [1] [2] |
Обновить метод | На основе источника |
Менеджер пакетов | Нет (на основе источника) |
Платформы | ИА-32 , x86-64 [3] |
ядра Тип | Монолитный |
По умолчанию пользовательский интерфейс | интерфейс командной строки |
Лицензия | Лицензии Creative Commons В основном CC BY-NC-SA [4] и лицензия MIT |
Официальный сайт | www |
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 , среды рабочего стола ( KDE , GNOME , Xfce , LXDE ), программное обеспечение для повышения производительности , веб-браузеры , языки и инструменты программирования, мультимедийное программное обеспечение, а также управления сетью и системного администрирования. инструменты . Начиная с версии 5.0, версия книги BLFS соответствует версии книги LFS. [6]
Книга Cross Linux From Scratch (CLFS) посвящена кросс-компиляции , включая компиляцию для автономных или встраиваемых систем, которые могут работать под управлением Linux, но не имеют ресурсов, необходимых для компиляции Linux. CLFS поддерживает широкий спектр процессоров и использует передовые методы, не включенные в книгу LFS, такие как цепочки инструментов 32- и 64-битные библиотеки для перекрестной сборки, поддержку нескольких библиотек ( параллельные ) и альтернативные архитектуры набора команд, такие как Itanium , SPARC. , MIPS и Альфа .
Проект Linux from Scratch, такой как BitBake , также поддерживает кросс-компиляцию Linux для встраиваемых систем ARM , таких как Raspberry Pi и BeagleBone . [7] [8]
В книге Hardened Linux From Scratch (HLFS) основное внимание уделяется усовершенствованиям безопасности, таким как усиленные исправления ядра, обязательного контроля доступа политики , защита от разрушения стека и рандомизация структуры адресного пространства . Помимо своей основной цели — создания операционной системы, ориентированной на безопасность , у HLFS была второстепенная цель — стать инструментом обучения безопасности. Не обновлялся с 2011 года.
Automated Linux From Scratch (ALFS) — проект, предназначенный для автоматизации процесса создания системы LFS. Он предназначен для пользователей, которые прочитали книги LFS и BLFS несколько раз и хотят сократить объем необходимой работы. Вторичная цель — выполнить функцию проверки книг LFS и BLFS путем прямого извлечения и выполнения инструкций из источников XML книг LFS и BLFS.
Требования и порядок действий
[ редактировать ]чистый раздел и работающая система Linux с компилятором и некоторыми необходимыми программными библиотеками Для сборки LFS необходимы . Вместо установки из существующей системы Linux можно также использовать Live CD для сборки системы LFS.
Ранее проект поддерживал Linux From Scratch Live CD. [9] LFS Live CD содержит все исходные пакеты (только в полной версии Live CD), книгу LFS, инструменты автоматической сборки и (за исключением минимальной версии Live CD) графическую среду Xfce для работы. Официальный 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 | Список управления доступом (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 |
Бинутилс | Коллекция инструментов программирования для манипулирования объектным кодом в различных форматах объектных файлов. | GNU GPL |
Бизон | Генератор парсера , входящий в состав проекта GNU Project . Bison преобразует описание грамматики для контекстно-свободной грамматики в исходный код для анализатора C , C++ или Java . | GNU GPL |
Bzip2 | алгоритм Бесплатный с открытым исходным кодом, и программа сжатия данных без потерь разработанные Джулианом Сьюардом . | BSD-подобная лицензия |
Проверять | Фреймворк модульного тестирования для C . | GNU GPL |
Coreutils | Пакет , программного GNU обеспечения содержащий множество основных инструментов, таких как cat , ls и rm , необходимых для Unix-подобных операционных систем . | GNU GPL |
ДежаГНУ | Фреймворк для тестирования других программ. У него есть основной сценарий под названием 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 |
Эмигрант | Потоко библиотека -ориентированная 1.0 XML анализатора написанная на 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 |
GCC | Коллекция компиляторов GNU (обычно сокращенно GCC) — это система компилятора, созданная проектом GNU Project, поддерживающая различные языки программирования. | |
ГДБМ | GDBM Простые механизмы баз данных | |
Получить текст | Gettext — это GNU библиотека интернационализации и локализации (i18n). | |
Глибк | Библиотека GNU C , широко известная как glibc, представляет собой стандартную библиотеку C, выпущенную проектом GNU Project . | |
GMP | Библиотека GNU Multiple-Precision, также известная как GMP, — это бесплатная библиотека для арифметики произвольной точности , работающая с целыми числами со знаком , рациональными числами и с плавающей запятой числами . | |
Гперф | Идеальный генератор хеш-функций. Для заданного списка строк он создает хэш-функцию и хеш-таблицу в форме кода C или C++ для поиска значения в зависимости от входной строки. Хэш-функция идеальна, а это означает, что хеш-таблица не имеет коллизий, а для поиска в хэш-таблице требуется только сравнение одной строки. | |
Схватить | grep — утилита текстового поиска в командной строке , изначально написанная для Unix . | |
Грофф | Groff — это GNU замена troff и nroff форматировщиков текста . | |
GRUB | GNU GRUB (сокращение от GNU GRand Unified Bootloader) — пакет загрузчика из проекта GNU Project . | |
Gzip | Gzip — это программное приложение, используемое для сжатия файлов . gzip — сокращение от GNU zip. | |
Яна-и т. д. | Яна-и т. д. устанавливает службы и протоколы, используя данные Управления по присвоению номеров Интернета . Включены снимки данных из IANA, сценарии для преобразования этих данных в необходимые форматы и сценарии для получения последних данных. | Открытая лицензия на программное обеспечение |
Инетутил | Коллекция сетевых инструментов, в том числе: telnet , ftp и rsh . | GNU GPL |
Международный инструмент | Набор инструментов для централизации перевода множества различных форматов файлов с использованием файлов PO, совместимых с GNU gettext. | |
IPRoute2 | Коллекция утилит пользовательского пространства для управления и мониторинга различных аспектов работы сети в ядре Linux , включая маршрутизацию , сетевые интерфейсы, туннели, управление трафиком сетевых и драйверы устройств . | |
Кбд | Пакет содержит инструменты для управления консолью Linux (консоль Linux, виртуальные терминалы на ней, клавиатура и т.п.). В основном они загружают консольные шрифты и раскладки клавиатуры. Также этот пакет содержит набор различных шрифтов и раскладок клавиатуры. | |
Кмод | Бинарный файл с несколькими вызовами, реализующий программы, используемые для управления модулями ядра Linux. | |
меньше | less — это терминальная пейджерная программа в Unix , Windows и Unix-подобных системах, используемая для просмотра (но не изменения) содержимого текстового файла по одному экрану за раз. | Двойная: либо лицензия GPL , либо лицензия типа BSD. |
Скрипты загрузки LFS | Пакет LFS-Bootscripts содержит набор сценариев для запуска/остановки системы LFS при загрузке/выключении. Файлы конфигурации и процедуры, необходимые для настройки процесса загрузки, описаны в следующих разделах. | Лицензии Creative Commons и лицензия MIT |
Либкап | Альтернатива модели привилегий суперпользователя в Linux. | |
Либфф | Портативная библиотека интерфейса внешних функций. | МОЯ лицензия |
Либпайплайн | Libpipeline — это библиотека C для гибкого и удобного управления конвейерами подпроцессов. | GNU GPL |
Libtool | GNU Libtool — GNU инструмент программирования из системы сборки GNU, используемый для создания переносимых скомпилированных библиотек . | |
Линукс | Ядро Linux — это ядро операционной системы , используемое семейством Linux Unix -подобных операционных систем . | |
ГНУ м4 | GNU m4 — это GNU- версия препроцессора макросов m4 . | |
делать | Make — утилита для автоматической сборки исполняемых программ и библиотек из исходного кода . | |
Человек-БД | Man-DB — это реализация стандартной системы документации Unix, доступ к которой осуществляется с помощью команды man. Вместо традиционных баз данных Whatis с плоским текстом используется база данных Berkeley DB. | |
Man-страницы | Страница руководства (сокращение от страницы руководства) — это форма онлайн-документации по программному обеспечению, обычно встречающаяся в Unix или Unix-подобных операционных системах. | Несколько лицензий. [11] |
Мезон | система сборки с открытым исходным кодом, призванная быть одновременно чрезвычайно быстрой и, что еще более важно, максимально удобной для пользователя. | Лицензия Апач |
ПДК | Библиотека AC для арифметики комплексных чисел сколь угодно высокой точности. | ГНУ ЛГПЛ |
МПФР | Библиотека GNU C для вычислений с плавающей запятой многократной точности и правильным округлением. | GNU LGPL и GNU GPL для особых исключений в исходном коде. |
ncurses | Библиотека программирования для написания текстовых пользовательских интерфейсов независимым от терминала способом. | Лицензия X11 [12] |
Ниндзя | Небольшая система сборки с упором на скорость. | Лицензия Апач |
OpenSSL | программного обеспечения Библиотека для приложений, которые обеспечивают безопасную связь по компьютерным сетям от прослушивания и идентифицируют сторону на другом конце. Он широко используется интернет -серверами , включая большинство HTTPS -сайтов . | Лицензия Apache из четырех пунктов 1.0 и лицензия BSD |
Пластырь | Компьютерный инструмент для Unix программ , который обновляет текстовые файлы в соответствии с инструкциями, содержащимися в отдельном файле, называемом файлом исправления . | GNU GPL |
Перл | Динамический интерпретируемый язык программирования. | Художественная лицензия 1.0 [13] [14] или GNU GPL [15] |
Pkg-конфигурация | Компьютерная программа, предоставляющая унифицированный интерфейс для запроса установленных библиотек с целью компиляции программного обеспечения из исходного кода . | GNU GPL |
реквизит | Набор командной строки и полноэкранных утилит, которые предоставляют информацию из псевдофайловой системы, чаще всего расположенной в /proc . Эта файловая система обеспечивает простой интерфейс для структур данных ядра. Программы procps обычно концентрируются на структурах, описывающих процессы, выполняемые в системе. | GNU GPL и GNU LGPL |
Псмиск | Набор небольших полезных утилит, использующих файловую систему proc . | GNU GPL |
Питон | Интерпретируемый язык высокого уровня с открытым исходным кодом для программирования общего назначения. | Лицензия Фонда программного обеспечения Python |
Документация Python | Пакет содержит среду разработки Python. | |
Читать линию | GNU readline — это программная библиотека, созданная и поддерживаемая проектом GNU . | GNU GPL |
но | sed ( редактор потока ) — это утилита Unix , которая (а) анализирует текстовые файлы и (б) реализует язык программирования , который может применять текстовые преобразования к таким файлам. | |
Тень | Инструмент в большинстве Unix и Unix-подобных пользователя операционных систем, используемый для изменения пароля . Пароль, введенный пользователем, проходит через функцию получения ключа для создания хешированной версии нового пароля, которая сохраняется. Сохраняется только хешированная версия; введенный пароль не сохраняется по соображениям безопасности. | Художественная лицензия или лицензия типа BSD |
Сисклогд | ведения журнала ядра и системы Демоны , которые предоставляют две системные утилиты, которые обеспечивают поддержку ведения журнала системы и перехвата сообщений ядра. Поддержка доменных сокетов Интернета и Unix позволяет этому пакету утилит поддерживать как локальное, так и удаленное ведение журнала. | GNU GPL |
Сисвинит | Программы инициализации в стиле System V, которые управляют загрузкой и завершением работы системы. | |
берет | tar — это программа, которая предоставляет возможность создавать tar-архивы, а также выполнять различные другие виды манипуляций. | |
Ткл | Язык команд инструментов — это динамический язык сценариев . | BSD-подобная лицензия [16] |
Техинфо | Синтаксис набора текста, используемый для создания документации как в онлайновой, так и в печатной форме, а также в официальном формате документации проекта GNU. | GNU GPL |
цдата | Общедоступная база данных часовых поясов содержит код и данные, которые представляют историю местного времени для многих репрезентативных мест по всему миру. | Общественное достояние и BSD |
Udev Архив конфигурации | Пакет Udev содержит программы для динамического создания узлов устройств. Разработка udev была объединена с systemd, но большая часть systemd несовместима с LFS. Здесь мы собираем и устанавливаем только необходимые файлы udev. | Лицензии Creative Commons и лицензия MIT |
утилита-Linux | Пакет Util-linux содержит различные служебные программы. Среди них — утилиты для работы с файловыми системами, консолями, разделами и сообщениями. | GNU GPL |
файлы Vim Языковые (рекомендуется) | Текстовый редактор, созданный для создания и изменения любого типа текста. | Бесплатное программное обеспечение ( лицензия Vim ), благотворительная программа. |
Колесо | Эта библиотека является эталонной реализацией стандарта упаковки колес Python, определенного в PEP 427. | С |
XML::Парсер | ||
XZ Утилиты | Универсальное программное обеспечение для сжатия данных с высокой степенью сжатия. 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, а также желанием многих пользователей заранее знать, сколько времени потребуется для сборки исходного архива.
Начиная с Linux From Scratch версии 10.1, первым пакетом, созданным пользователем, является GNU binutils. При его сборке пользователям рекомендуется измерить процесс сборки с помощью конструкций оболочки и на этот раз назвать «стандартную единицу сборки» системы. Как только это число станет известно, оценка времени, необходимого для сборки последующих пакетов, будет выражена относительно известного SBU.
Сборка некоторых пакетов, созданных во время компиляции, занимает гораздо больше времени, чем сборка binutils, включая библиотеку GNU C (оценка 4,2 SBU) и коллекцию компиляторов GNU (оценка 11 SBU). Единицу следует интерпретировать как приближение; На фактическое время, необходимое для сборки пакета, влияют различные факторы.
Прием
[ редактировать ]LWN.net рассмотрел LFS в 2004 году: [19]
Linux From Scratch — замечательный проект. Он должен стать обязательным материалом для чтения всех учебных курсов по Linux, и каждый энтузиаст Linux должен пройти его хотя бы один раз. Это также создало бы еще один интересный побочный эффект: люди, которые склонны быстро выражать недовольство в списках рассылки дистрибутивов и на форумах, вероятно, проявят гораздо больше уважения к разработчикам. Установка готового дистрибутива – тривиальная задача. Собрать комплект из четырех компакт-дисков, содержащих стабильную, безопасную и надежную операционную систему, а также тысячи приложений, определенно нет.
Tux Machines написала обзор Linux From Scratch 6.1 в 2005 году: [20]
Теперь перейдем к BLFS. К сожалению, Beyond Linux From Scratch, кажется, всегда стоит за книгой. Для меня это не настоящая установка, пока вы не сможете войти в оконный менеджер.
У Tux Machines также есть второй [21] и третья часть [22] обзора.
См. также
[ редактировать ]Другие дистрибутивы Linux на основе исходного кода:
Ссылки
[ редактировать ]- ^ Jump up to: а б «Новости ЛФС» . www.linuxfromscratch.org . Проверено 2 сентября 2023 г.
- ^ Бикманс, Джерард (2023). Linux с нуля, версия 12.0 (PDF) .
- ^ Предисловие: Целевые архитектуры LFS , Linux с нуля
- ^ «Приложение D. Лицензии LFS» . Проверено 9 августа 2023 г.
- ^ Что такое Linux с нуля? , Домашняя страница проекта LFS
- ^ Джерард Бикманс: За пределами Linux с нуля, версия 6.3 (август 2008 г.)
- ^ «Кросс-скомпилированный Linux с нуля — встроенный» .
- ^ Брендан Хоран. «Практический Raspberry Pi» .2013.п. 105.
- ^ Jump up to: а б «Домашняя страница проекта LFS LiveCD» . www.linuxfromscratch.org . Проверено 25 мая 2018 г.
- ^ «Индекс /~kb0iic/livecdupd» . clfs.org . Проверено 25 мая 2018 г.
- ^ «Лицензии на страницы руководства» . www.kernel.org . Проверено 25 мая 2018 г.
- ^ «НКУРСЕС – Лицензирование» . Проверено 9 июля 2013 г.
- ^ «Художественная лицензия» — dev.perl.org» . dev.perl.org . Проверено 25 мая 2018 г.
- ^ Художественный — файл в репозитории Perl 5 git.
- ^ «Лицензирование Perl» . dev.perl.org . Проверено 8 января 2011 г.
- ^ «Условия лицензирования Tcl/Tk» . Проверено 8 января 2011 г.
- ^ «Новая лицензия» , GitHub «facebook/zstd»
- ^ «СПИСОК: /lfs/downloads/stable/wget-list» (txt) .
- ^ «Изучение Linux с нуля [LWN.net]» . lwn.net . Проверено 28 марта 2020 г.
- ^ «Linux From Scratch 6.1 (часть 1?) | Tux Machines» . www.tuxmachines.org . Проверено 28 марта 2020 г.
- ^ «Linux From Scratch 6.1 — Часть 2 — BLFS | Tux Machines» . www.tuxmachines.org . Проверено 28 марта 2020 г.
- ^ «За гранью Linux с нуля (lfs — часть 3) | Tux Machines» . www.tuxmachines.org . Проверено 28 марта 2020 г.
- «Домашняя страница проекта LFS» . Линукс с нуля . Джерард Бикманс. 17 марта 2008 года . Проверено 17 марта 2008 г.