LXF79:LINUX FROM SCRATCH

Материал из Linuxformat.

Перейти к: навигация, поиск

Содержание

Linux from scratch

С детства любили разбирать игрушки, чтобы узнать, что внутри? Андрей Маркелов рассматривает дистрибутив для любознательных пользователей

Думаю, что если вы приступили к чтению статьи в названии которой присутствует фраза «Cобери свой Linux», то вам не нужно рассказывать, что такое операционная система Linux, свободное ПО и так далее. Скорее всего, вы уже используете один из вариантов этой ОС на работе или на своем домашнем компьютере.

Your distro, your rules!
Your distro, your rules!

И, в зависимости от целей и разнообразных причин, как объективных, так и субъективных, вы, скорее всего, уже выбрали для себя один из так называемых дистрибутивов Linux. Дистрибутивом обычно называют подготовленный для работы в качестве единого целого набор из программы установки, системных утилит и служб, прикладных программ и модифицированного в соответствии с представлениями создателей дистрибутива, ядра Linux. C каждым дистрибутивомможно также связать определенную политику лицензирования и порядок технической поддержки. Из объективных причин выбора того или иного дистрибутива можно, например, назвать потребность в круглосуточной технической поддержке, а из субъективных – «навороты» дистрибутива, разрекламированные знакомым системным администратором, или внешний привлекательный вид рабочего стола.

По данным сайта Distrowatch.com, на сегодняшний день существует более 300 различных вариантов Linux, как общего назначения, типа Fedora Core, Slackware или Gentoo, так и ориентированных на решение специфических задач, например, MoviX или Trustix. И, по моему мнению, нельзя говорить о том, какой дистрибутив лучше, а какой хуже, безотноситель но целей, квалификации пользователя, используемого оборудования и множества других факторов.

В этой статье я хотел бы поговорить о дистрибутиве Linux From Scratch (сокращенно LFS). Собственно, LFS – это даже не дистрибутив в классическом понимании этого слова. В LFS отсутствует одна важная деталь типичного дистрибутива Linux – программа установки.

Ее роль исполняет пользователь, вооруженный двухсотстраничной книгой – руководством к действию, которая как раз и называется Linux From Scratch. Собственно, помимо данной книги, написанной, кстати, Герардом Бикмансом (Gerard Beekmans) и доступной по адресу www.linuxfromscratch.org, «дистрибутив» состоит из архива исходных кодов плюс исправлений некоторых ошибок и, возможно, загрузочного LiveCD с заранее настроенной средой Linux, готовой для компиляции вашей собственной версии операционной системы из исходных текстов. Впрочем, доступный все на том же сайте www.linuxfromscratch.org загрузочный LiveCD вполне может быть заменен на уже установленный и соответствующим образом настроенный дистрибутив общего назначения. Требования и рекомендации к хост-системе (в которой пользователь собирает Linux From Scratch) также приведены в руководстве Linux From Scratch Бикманса (самое главное – ядро версии не ниже 2.6.2, скомпилированное GCC-3.0 или выше).

Хотя LFS вполне можно использовать и в качестве рабочего места разработчика или (после установки дополнительного программного обеспечения, не входящего в базовую систему LFS) сервера небольшого предприятия; возможно – даже рабочего места секретаря, все это не будет лучшим вариантом применения Linux From Scratch. Основная цель данного дистрибутива – познакомить пользователя с внутренним устройством операционной системы Linux. С помощью LFS мы можем по шагам пройти через весь процесс компиляции Linux, создания конфигурационных файлов, и наконец, спустя часы (или даже дни) работы, – загрузить операционную систему и увидеть на экране приглашение к вводу имени пользователя. Вдумчивое и внимательное выполнение инструкций, приведенных в руководстве Linux From Scratch, вместе с изучением документации по устанавливаемым в каждом шаге компонентам ОС позволит вам познакомиться с системой на уровне, не достижимом для пользователей и администраторов систем с закрытым исходным кодом. Сборка LFS может быть также весьма неплохой школой для технического специалиста или инженера, использующего коммерческие дистрибутивы Linux и поставившего себе цель понять процессы, происходящие в системе, на более глубоком уровне.

Еще одним применением LFS может стать задача оптимизации программного обеспечения операционной системы под конкретную начинку ПК на этапе компиляции и желание на все 100% использовать ресурсы оборудования. Кроме того, созданная «ручным» способом система получается очень компактной.

Ну и наконец, последняя, но вполне достаточная причина для установки LFS (хватило же некоторым ее для написания целого ядра операционной системы): «Just for Fun»!

Знакомство с LFS

Как рассказывает сам Герард Бикманс во введении, его знакомство с Linux состоялось в 1998 году. Перепробовав несколько дистрибутивов и не найдя ни одного, полностью отвечающего его требованиям, Герард решил собрать свой собственный вариант Linux из исходных текстов. Обобщив свой опыт в виде понятных и компактных инструкций и возглавив проект по поддержке этих знаний в актуальном состоянии, Герард вместе с единомышленниками создал Linux From Scratch в том виде, в котором этот проект существует и по сей день.

Помимо книги с инструкциями, в рамках проекта распространяется загрузочный LiveCD со средой разработчика и собранный в одном месте архив исходных текстов, протестированных на взаимную совместимость компонентов Linux-системы со всеми необходимыми исправлениями. Рассмотрим же компоненты LFS подробнее.

На момент написания статьи последней доступной автору версией LFS была 6.1.1.

Основная часть проекта – книга Linux From Scratch – содержит более 220 страниц и в семи главах описывает создание собственной Linux-системы, построенной на ядре 2.6.11 и включающей компилятор С/С++ gcc 3.4.3, язык программирования Perl 5.8.7, оболочку bash 3.0 и основные GNU утилиты работы с системой, сетью, а также утилиты обработки текстов. Инструкции не включают описание сборки оконной системы X Window System и серверных служб.

Исходные тексты компонентов системы и исправления к ним занимают около 150 Мбайт. Помимо возможности скачать с сайтов разработчиков каждый пакет в отдельности, имеется возможность загрузить весь архив в составе Official Linux From Scratch LiveCD.

Официальный LiveCD (рис. 1, 2) – это не только архив всех исходных текстов и сама книга LFS, но и полностью готовая для сборки вашей LFS-системы среда, включающая X Window System и Xfce. Если вы скачали этот диск, вам, по сути, больше ничего не потребуется. Кроме всего прочего, диск включает в себя скрипты и файлы с инструкциями автоматической установки LFS. Данные средства предназначены для опытных пользователей LFS, которые хотя бы раз устанавливали систему «вручную». Новичку эти средства использовать не рекомендуется. Общий объем ISO-образа диска – 390 Мбайт.

Ну, и, наконец, последним в списке ингредиентов (но не последним по важности) LFS-коктейля будет хорошо приготовленный Linux-пользователь. (Я сказал «приготовленный»? Конечно, «подготовленный»!) Во-первых, если вы хотите использовать самую «свежую», англоязычную версию, вам необходимы минимальные знания технического английского для следования инструкциям книги. Существуют переводы и на русский язык, но они появляются с некоторой задержкой. Кроме того, большинство вспомогательных информационных ресурсов, ссылки на которые приведены статье, представлены только на английском языке. «Building an LFS system is not a simple task», – пишет Герард Бикманс. Безусловно, для того, чтобы собрать работоспособную систему Linux из исходных текстов, вы должны уметь работать с командной строкой, решать проблемы с компиляцией и иметь общее представление о том, как работает Linux.

Помимо самой книги LFS, на сайте проекта (www.linuxfromscratch.org) существует раздел часто задаваемых вопросов, список рассылки, также доступный по протоколу NNTP, IRC-канал и ряд информационных материалов. Кроме того, у вас будет под рукой документация, входящая в состав компилируемых пакетов, man-страницы, и, безусловно, множество ресурсов сети Интернет.

Также необходимо упомянуть, что кроме LFS на сайте www.linuxfromscratch.org «живут» несколько сопутствующих проектов: Automated Linux From Scratch (ALFS) – автоматизированная сборка из исходных текстов, Beyond Linux From Scratch (BLFS) – вопросы установки на уже готовую LFS-систему дополнительного программного обеспечения (X Window System, KDE, Gnome...), и другие.

«Ключ на Старт!»

Полная сборка Linux From Scratch на ноутбуке Sharp Actius MC24 (Mobile AMD Athlon XP-M Processor 2400+/512 MB RAM) с небольшими перерывами на домашние дела заняла одни выходные (Пользуясь случаем, хочу поблагодарить мою жену за терпение и понимание!). Для оценки затрачиваемого на сборку пакетов время, Герард вводит специальную единицу измерения – Standard Build Unit (SBU). Один SBU равен промежутку времени, затрачиваемому вашим ПК на выполнение команд

./configure...
make
make install

выполняющих сборку и установку самого первого из упоминаемых в руководстве пакетов – Binutil-2.15.

Далее по ходу изложения материала по книге даются примерные оценки времени затрачиваемого на пакеты в единицах SBU. Самые затратные с точки зрения времени компиляции пакеты: glibc-2.3.4 (12.3 SBU), gcc-3.4.3 (11.7 SBU), ядро Linux-2.6.11.12 (4.2 SBU) и Perl-5.8.7 (4.1 SBU). К слову сказать, один SBU на моем ноутбуке равняется приблизительно 4 мин. 23 сек. Сборка на том же оборудовании, но в среде VMWare Workstation 5.0 под Windows XP Service Pack 2 увеличила SBU более чем в два раза. Поэтому, если вы планируете уложиться в одни выходные – не используйте виртуальные машины.

Помимо сборки пакетов (кстати, некоторые из них собираются не по одному разу) время расходуется на различные make check и make test. Также прибавьте сюда время, которое вы потратите непосредственно на чтение книги и ввод команд.

Для сравнения, на страничке www.linuxfromscratch.org/~bdubbs представлено более 150 конфигураций систем, предоставленных пользователями, собравшими LFS. Для каждой системы приведены значения SBU, так что вы всегда можете оценить время, необходимое для компиляции, исходя из данных для машин с аналогичной производительностью.

Этапы сборки собственной Linux-системы

Общий порядок сборки системы представлен в вводной главе и вкратце состоит из следующих действий.

Первым делом необходимо выделить для LFS собственный раздел на жестком диске, создать на нем файловую систему и подмонтировать к дереву файловой системы ОС, на которой будет производиться сборка. Далее, действуя из хост-системы (того же Official Linux From Scratch LiveCD), вы компилируете из исходных текстов среду разработчика, которую будете использовать для сборки LFS-системы. Затем, при помощи повторной пересборки GCC/Binutils и «песочницы» в виде chroot-окружения, LFS отделяется от хост-системы. После выполнения этого шага ваш LFS становится полностью самостоятельным, за исключением того, что он по-прежнему использует ядро хост-ситемы.

Далее, следуя подробным инструкциям, в «песочнице» компилируются все необходимые компоненты для нашей LFS-системы и по ходу сборки создаются необходимые конфигурационные файлы.

Наконец, в собранную систему добавляются стартовые скрипты, при необходимости, устанавливается и настраивается загрузчик, и, наконец, наступает долгожданный момент перезагрузки в систему, целиком собранную из исходных текстов.

Поскольку LFS Book во многом ориентируется на людей, изучающих Linux, в каждом параграфе, посвященном сборке конкретного пакета, помимо инструкций по компиляции приведено примерное время, затрачиваемое на сборку, требуемое дисковое пространство, зависимости от других пакетов, и, наконец содержимое пакета с кратким описанием устанавливаемых утилит и библиотек.

Что дальше?

Безусловно, готовая LFS-система, собранная в соответствии с рекомендациями книги Герарда Бикманса, разительно контрастирует с современными Linux-дистрибутивами. В таком виде она мало подходит для решения реальных задач и повседневной работы, и способна лишь выполнять роль учебной системы для базового курса по Unix-системам, да и то в части, не касающейся настройки X Window System, которая просто не в ходит в список описанных в LFS пакетов. Чтобы довести LFS «до ума», в первую очередь советую вам обратиться к руководству Beyond Linux From Scratch (BLFS) доступному по адресу www.linuxfromscratch.org/bLFS. Данная книга построена по принципам и с использованием той же структуры, что и Linux From Scratch, но по размерам – раз в пять больше. В двадцати одной главе рассматриваются вопросы самостоятельной сборки более трех сотен пакетов (X Window System, Gnome, KDE), а кроме того – расширенная конфигурация системы и сборка дополнительных библиотек, вопросы компиляции клиентского и серверного программного обеспечения для работы в сети, мультимедиа, ПО для работы со сканерами и принтерами и многое другое.

Напоследок – несколько советов. Проверяйте и перепроверяйте введенные в процессе установки команды – если возникли ошибки компиляции, воспользуйтесь историей bash. Возможно, вы просто ошиблись во вводе. Не путайте предупреждения с ошибками, и читайте документацию – не все ошибки при проверках после сборки пакетов критичны. Раздел 1.4 книги LFS содержит алгоритм поиска ответов на вопросы, связанные с возможными проблемами. Придерживайтесь рекомендаций относительно того, как правильно задать вопрос и куда его направить, чтобы можно было расчитывать на помощь. Обратите внимание на раздел «What about netiquette?» в списке часто задаваемых вопросов. Не игнорируйте и FAQ в целом, а также список рассылки проекта. Возможно, вы не первый столкнулись с такой проблемой, и ответ уже можно найти в архиве списка рассылки. Обратите внимание на раздел www.linuxfromscratch.org/hints/, где приведены советы на темы, не освещенные в книгах LFS и BLFS. Прежде чем адресовать вопрос сообществу LFS, убедитесь, что вы использовали все доступные вам источники информации. Не забывайте и про форум нашего журнала (http://www.unixforum.org), а также рубрику «Вопрос? Ответ!». Направляйте свои письма на адрес answers@linuxformat.ru. Удачи и успехов в освоении увлекательного мира Open Source!

Личные инструменты
  • Купить электронную версию
  • Подписаться на бумажную версию