Файловая система lfs. Единственный бумажный дистрибутив

1.1. Как собрать систему LFS

Система LFS будет собираться с использованием уже установленного дистрибутива Linux (например, Debian, Mandriva, Red Hat или SUSE). Существующая система Linux (хост система) будет использована в качестве стартовой системы, откуда для сборки новой системы будут взяты необходимые программы, в том числе компилятор, компоновщик, и интерпретатор командной оболочки. Чтобы иметь возможность использовать эти инструментальные средства, во время установки дистрибутива выберите вариант "development" (для разработки).

В качестве альтернативы установки отдельного дистрибутива на вашей машине, вы можете использовать "живой диск" LiveCD с системой Linux From Scratch или LiveCD коммерческого дистрибутива. LFS LiveCD хорошо работает в качестве хост-системы, предоставляет все инструментальные средства, необходимые для успешного выполнения инструкций этой книги. Использование LiveCD выходит за рамки текущей книги, но его, все же, можно использовать в качестве хоста при работе над этой книгой. Наиболее подходящими для создания текущей системы LFS являются LiveCD редакций "-nosrc" или "-min". Чтобы получить дополнительную информацию о LFS LiveCD или загрузить его копию, посетите страницу http://www.linuxfromscratch.org/livecd/ .

В главе 2 данной книги описывается создание нового раздела и файловой системы Linux. Это то самое место, где будет компилироваться и устанавливаться новая система LFS. В главе 3 объясняется, какие пакеты и патчи следует загрузить для сборки системы LFS и куда следует их поместить в новой файловой системе. В главе 4 обсуждается настройка соответствующей рабочей среды. Пожалуйста, прочитайте главу 4 внимательно, поскольку в ней объясняется ряд важных вопросов, которые вам нужно знать, прежде чем переходить к главе 5 и далее.

В главе 5 объясняется установка ряда пакетов, которые будут использоваться в качестве базового набора разработки (или набора инструментальных средств). Этот набор в главе 6 будет использован для сборки реальной системы. Некоторые из этих пакетов необходимы для разрешения циклических зависимостей, например, для компиляции компилятора вам требуется компилятор.

В главе 5 также показывается, как выполнить первый проход создания набора инструментов, к числу которых относятся Binutils и GCC (первый проход, в основном, состоит в переустановке этих двух важных пакетов). Следующим шагом будет сборка Glibc, библиотеки C. Glibc будет откомпилирован с помощью программ, входящих в набор инструментальных средств и собранных при первом проходе разработки. Затем нужно будет выполнить второй проход сборки набора инструментальных средств. В этот момент набор инструментов должен быть динамически слинкован со вновь собранной библиотекой Glibc. Пакеты оставшейся части главы 5 собираются с помощью набора инструментальных средств, созданного на втором проходе разработки. Когда это будет сделано, процесс установки LFS больше не будет зависеть от дистрибутива хостовой системы, за исключением работающего ядра.

Эти усилия по изоляции новой системы от дистрибутива хостовой системы могут показаться чрезмерными. Полное техническое объяснение причин, почему это делается, приведено в разделе 5.2 "Технические замечания, касающиеся набора инструментальных средств".

В главе 6 полностью собирается система LFS. Программа chroot (смена root) используется для входа в виртуальную среду и запуска новой командной оболочки, корневой директорий которой будет находиться в разделе LFS. Это очень смахивает на перезагрузку и на указание ядру смонтировать раздел LFS в качестве корневого раздела. Система, на самом деле, не перезагружается, но если не пользоваться командой chroot , то для того, чтобы создать загружаемую систему, потребуется выполнить дополнительную работу, которая пока не является необходимой. Основным преимуществом такой "смены root-а" является то, что вы можете продолжать пользоваться хост системой, пока система LFS еще собирается. Пока вы ждете завершения компиляции пакетов, вы можете продолжать пользоваться компьютером в обычном режиме.

Чтобы завершить установку, настройте LFS-Bootscripts так, как это описано в главе 7, а ядро и начальный загрузчик настройте так, как это описано в главе 8. В главе 9 приводятся сведения о том, как можно использовать систему LFS после того, как будет выполнено все, что описано в этой книге. После того, как будут выполнены все шаги, описанные в этой книге, проект будет завершен и компьютер будет готов к перезагрузке с новой системой LFS.

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

Если вставить в привод чистый CD-RW или DVD-RW диск, то проводник Windows 7 автоматически выдаст запрос на форматирование этого диска при попытке открыть этот диск::

LFS это ни что иное как UDF. Файловая система для пакетной записи на CD и DVD диски. Позволяет использовать лазерный диск точно так же как и обычный. То есть копировать и удалять файлы наипростейшим образом. Файловая система UDF в частности используется в DVD-Video.

Mastered это запись диска в файловой системе ISO9660 с расширением Joliet. Файловая система ISO9660 это традиционная файловая система для лазерных дисков. Аудио CD, MP3 диски, диски с компьютерными программами записываются в этой файловой системе.

Использование файловой системы UDF (LFS)

Файловая система UDF используется для пакетной записи на лазерные диски. В зависимости от версии поддерживается разными версиями Windows. Например, Windows XP поддерживает версии 1.50, 2.0, 2.01.

Файловая система UDF также используется в системах записи и воспроизведения видео и аудио, например в DVD плеерах (DVD-video диски изготавливаются с использованием UDF версии 1.50). Есть модели видеокамер, которые записывают снятый материал на DVD-RW диски. Для того, чтобы использовать такой диски вначале его нужно отформатировать.

Вставить в привод чистый CD-RW или DVD-RW диск, то проводник Windows 7 автоматически выдаст запрос на форматирование этого диска при попытке открыть этот диск:

Форматирование в файловой системе может занять прилично времени, например CD-RW 700 mb может форматироваться минут 10 - 12.

После завершения форматирования можно копировать файлы на этот диск прямо через проводник Windows:

Однако нужно помнить, что скорость копирования на UDF диск значительно ниже чем на обычный или на USB флеш-диск.

Сопутствующие статьи

С самого раннего детства я интересовался компьютерами. Интерес этот произрастал из игр под MS-DOS в детсадовском возрасте, заканчивая всевозможными олимпиадами по программированию к окончанию школы. Не удивительно, что после школы пошел учиться в технический институт на программиста. Самое странное, что все эти годы я был абсолютно далек от такой замечательной операционной системы, как GNU/Linux. Но полтора года назад, в самом начале первого семестра, я познакомился с парнем (он был незначительно старше меня и поступил в институт уже после техникума - имея опыт работы), который во время одного из разговоров сказал:
«Хочешь начать изучать GNU/Linux? Начни с Linux From Scratch.»

Единственный бумажный дистрибутив

LFS (здесь и далее аббревиатура от Linux From Scratch) – книга, написанная Герардом Бикмансом, описывающая процесс сборки минимального рабочего варианта GNU/Linux из исходных кодов. Почему бумажный? В свое время книгу можно было купить в твердом переплете, что делает «дистрибутив» несколько необычным, не правда-ли? Помимо самой книги, для сборки конечно-же понадобится интернет (или заранее загруженные исходные коды), свободный раздел на жестком диске, и любая операционная система на базе ядра Linux, имеющая компилятор. Лично я всегда использую либо уже собранный дистрибутив LFS, либо полную установку Slackware – в нем есть все необходимое, чего не скажешь про (например) Ubuntu. Конечно, всегда можно загрузить нехватающие пакеты, но ведь мы хотим только-только научиться линуксу? А Slackware даже в своей базовой установке и без конфигурирования предоставляет требуемый инструментарий.

Следует сказать сразу - дистрибутив собранный по книге LFS не умеет толком ничего. Вернее, ничего такого, что потребуется неискушенному пользователю. Он умеет включаться, выключаться, перезагружаться, использовать Ethernet подключение, но что самое главное - компилировать. Так существуют другие книги, теперь уже поддерживаемые сообществом - Beyond LFS позволяет собрать те самые, интересные пользователю, программы. От браузера и графической среды, до систем управления базами данных и DHCP сервера. Книга имеет свойство отставать в версии от базовой книги, но полученный от LFS опыт обычно достаточен, для самостоятельного разрешения конфликтов версий. Три другие книги - Automated LFS, Cross LFS и Hardened LFS полностью соответствуют названиям и выходят за пределы этой статьи. Впрочем, всегда можно почитать в интернете, правда?

Но почему начинать с него?

Все очень просто, если не сказать - до смешного. Помимо инструкций, в книге много теоретического (но крайне сжатого и как следствие - не заунывного) материала. Установите Ubuntu. Вы знаете что делает пакет Libtool? Или Gawk? После пары успешных сборок LFS, вы будете знать каждый пакет в своей системе и что самое главное - представлять, как они взаимодействуют. Да, состав системы минимальный, но это постоянно подогревает интерес к ее усовершенствованию. Приучит частенько обращаться за помощью к Google и читать англоязычную документацию. Поначалу вы не будете понимать и половины своих действий, внимательно перепечатывая или копируя блоки кода в консоль. Но в самом конце, осознание того, что эту неказистую, без поддержки графики и вашей мощной видеокарты, без новомодного Aero и сенсорных экранов, операционную систему вы собрали сами, придаст вам такой запас сил и гордость, что вы сами потянитесь за новыми знаниями и новыми победами. Я немного утрирую, но ощущения после первой перезагрузки в новую систему сложно забыть даже сейчас.

Цифры и суровая правда жизни

LFS вовсе не минимальный по своему весу дистрибутив. Для сборки потребуется порядка 3 свободный гигабайтов на диске (это помимо уже рабочей Linux-Based системы) - тем не менее, после определенных танцев, систему можно будет превратить в Live-CD. Если у меня будет такая возможность, я расскажу как это делается, в последствии. Компиляция всего и вся (с учетом необходимости создания конфигурационных файлов и прочего) занимает около двух дней. Это если с перерывами на сон, питание и отключение компьютера на ночь. С другой стороны, это зависит от производительности компьютера, на котором собирается система. Моей первой жертвой был ноутбук MSI X-340 - процессор Intel Core 2 Solo с тактовой частотой 1.2 гигагерца (вообще говоря, LFS рекомендуется собирать на одноядерной системе). Оперативная память - 2GB DDR2. Вполне достаточно даже более низких характеристик, а на быстром процессоре сборка пойдет значительно быстрее.

Кстати, приблизительное время сборки каждого из пакетов указано в учебнике. За единицу времени, принимается время сборки пакета Binutils - ассемблера, линкера и ряда других, более мелких утилит для работы с объектными файлами. На вышеуказанной системе это заняло три минуты.

Состав дистрибутива

Перечислять все входящие в LFS пакеты не имеет большого смысла. Список получится длинным, и практически ни о чем не говорящим новичку; избыточным для человека разбирающегося. В этом небольшом разделе я лишь хотел дать несколько общих советов. Во-первых, собирая пакет, не описанный в книге, загляните в репозиторий патчей - возможно его уже адаптировали для использования в LFS. Во-вторых, BLFS почти полностью состоит из опциональных пакетов - просто выбирайте те, которые вам нужны и смело добавляйте в свою сборку LFS. И третье: с самого начала используйте пакетный менеджер. В книге этому уделяется глава, но практические инструкции отсутствуют чуть менее, чем полностью. Я лишь могу порекомендовать Guarded Installation Tool – написанный на Bash"е скрипт, обеспечивающий минимальный набор команд, для управления пакетами, зависимостями и версиями. В LFS этого будет достаточно. В последствии вы можете скомпилировать из исходных кодов APT или DPKG - это неплохо освещено на форумах сообщества.

Вместо заключения

За прошедшие полтора года я сильно продвинулся в своем изучении. Продвинулся со стадии «Есть такая операционная система» до уровня «Подниму сервер под Gentoo за трое суток». Я еще очень далек от идеала и вряд ли могу даже называть себя настоящий линуксоидом - на домашнем компьютере уживаются старенькая Windows XP и Xubuntu 10.10, но знаете что я отвечаю, когда меня спрашивают с чего начать изучать линукс? Начните с Linux From Scratch.

P.S. Спасибо написавшим в личку. Поправил ошибки, немного подвинул хабракат.