Linux — самая бесплатная из систем, если ваше время ничего не стоит.
Любимая шутка Microsoft

 

В Сети, да и вообще в курилках, не прекращаются дебаты между линуксоидами: кто что юзает, какие патчи прописывает, как часто ядро компилит. Но есть один дистро, пользователи которого "вне досягаемости" простых умов, поскольку все пакеты в свою инсталляцию они собирали вручную. Имя этому дистрибутиву — LFS, то есть Linux From Scratch.


Идея собирать Linux своими руками пришла в голову сначала Линусу Торвальдсу, а потом еще нескольким не менее беспокойным типам. Однако продавать этот "конструктор" как продукт (в виде книжки + CD) первым додумался француз Жерар Бикманс. Затевалось все это шесть лет назад — я в это время только-только начал делать первые вылазки в интернет :). А к настоящему времени Жерар накатал уже шестую версию своего фолианта (собственно, о ней-то и пойдет речь). Для тех, кто не умеет пользоваться Googl’ом, сообщаем: эту книжицу можно найти по адресу
http://lfs.icx.fr/lfs/view/6.0.


Идея такова: проделать всю компиляцию всех пакетов и написать все скрипты запуска Linux с самого начала. В результате вы получите систему, каждый пакет которой собран и установлен собственноручно, а потому вы (вероятно) точно знаете, зачем он вам нужен. Еще в большем результате ваш дистрибутив не будет захламлен множеством ненужных пакетов, многие из которых запускаются и сконфигурированы для работы в режиме демонов — а значит, потенциально потребляют ваши ресурсы и представляют угрозу безопасности.


Конечно, если говорить откровенно, то человек, первый раз собирающий Linux, скорее допустит ошибки, которые сделают его систему более уязвимой, чем наоборот. По крайней мере, у нас нет оснований подозревать составителей известных дистрибутивов в недобросовестности. Так что ваш LFS, может, и не будет таким же защищенным, как тот же Red Hat Enterprise Edition. Но уж зато можно ручаться, что вы научитесь делать некоторые вещи, которые наверняка пригодятся в дальнейшем.


То есть: можно на лоб человеку ставить штамп "собрал LFS с нуля" — и это будет о чем-то говорить. К тому же, естественно, вы не будете включать многие действительно ненужные вам приложения — и ваш Linux будет очень "стройным" и, отчасти, быстрым (хотя скорость зависит, в основном, от аппаратной части, а не от компиляции ядра, как думают некоторые, не при детях будет сказано, админы).


Краткое вступление в LFS человеческим языком


Сама книжица, как все французское, сочетает железный здравый смысл с гламурной пургой. К пятой главе вы не получаете практически никакой важной информации. Точнее, все можно было бы записать в несколько строк. Поэтому я сэкономлю вам пару часов жизни и перескажу это вступление по-народному.


Для начала поставьте нормальную установку Linux на ядре 2.6, скомпилированную gcc 3.0 или выше. Почему это надо, объяснять не буду — просто надо (в частности, по причине Udev и прочих новшеств). Проверить ядро и его компайлер можно, сделав cat/proc/version.


Желательно поставить отдельную инсталляцию в самом простом виде: на двух разделах HDD, fs2 root и swap (чтобы не париться с расширенными разделами). Создайте также отдельный раздел для LFS и отформатируйте как fs2. В результате у вас получится, например, hda1,2,3 -> fs2,swap,fs2. Форматирование, если вы его не сделали сразу, можно произвести позже с помощью mke2fs/dev/hda3. Форматировать swap не нужно: поскольку вы будете "крутить" только одну систему из двух, то они без особых проблем смогут по очереди использовать один swap.

 

Физические разделы
   Кое-кто выражается примерно таким способом: "Я никогда не доверяю разбивку диска инсталлятору!" или "Без точной настройки разделов ничего не будет работать как надо". Полноте, зайцы! По статистике (
http://counter.li.org/reports/machines.php) только одна установка из трех будет использована как сервер, а у около 50% машин вообще всего один пользователь. У 90% линуксов будет от одного до девяти пользователей — и в такой группе все тоже, как правило, решается полюбовно. В результате только примерно один из десяти компьютеров под Linux потенциально будет испытывать те напряги, при которых разбиение на разделы имеет смысл. Кстати, пока и квоты никто не отменял, и другие умные механизмы слежения за дисковым пространством и работой серверов.

   А разделы нужны, конечно,— но не так часто, как рассказывают некоторые мини-перцы. Если вы дочитали "Секреты Линукс" только до раздела "Создание файловой системы", то продолжайте читать дальше, там еще много интересного.

 

Теперь пора забуячить пару каталогов и кое-чего еще (под рутом):

 

export LFS=/mnt/lfs
mount /dev/hda3 $LFS
cd $LFS
mkdir sources
mkdir tools
ln -s $LFS/tools /

 

Последняя команда устанавливает эквивалентность (линк) между каталогами $LFS/tools и /tools. Зачем — понятно: сначала мы будем использовать проги в /tools, а потом зарутимся в $LFS и будем продолжать использовать те же проги по тому же адресу.


Дальше создаете пользователя и группу lfs, якобы для полной независимости от хост-системы. Польза и вправду есть: логон под этим юзером автоматически настраивает "стерильную" среду. Ход французской мысли после создания юзера таков:

 

chown lfs $LFS/tools
chown lfs $LFS/sources
su — lfs

cat >~/.bash_profile««EOF»
   exec env -i HOME=$HOME TERM=$TERM PS1=‘\u:\w\$‘ /bin/bash
EOF

cat >~/.bashrc««EOF»
   set +h
   umask +022
   LFS=/mnt/lfs
   LC_ALL=POSIX
   PATH=/tools/bin:/usr/bin
   export LFS LC_ALL PATH
EOF

 

Два башенных файла в конфигурации пользователя lfs обозначают настройки bash. Первый баш — ложовый (то есть запускается для пользователя во время логона). Второй, обычный, вызывается уже из первого, как там и написано. Первый сбрасывает все переменные среды (может быть, кое-что еще выполняется в /etc/profile для всех пользователей) и оставляет только три переменные окружения. Так что, когда позже вы прочитаете предупреждения о переменных компиляции и т.п.,— то это у Жерара просто башня перегрелась, этого не может быть никогда после такого облома.


Второй баш заходит в видит то, что ему нужно видеть, а именно: пару переменных, нужных для компиляции.


Короче, вот и закончились пять разделов LFS :). Пропуская всякую лабуду о настройке вашей системы, скорости компиляции, тестах пакетов и статической линковке, можете сразу переходить к пункту 5.4, где собственно и начинается компиляция первого реального пакета — Binutils.

 

Где взять LFS?
   Пару слов об еще одной французской шутке. Когда вы дойдете до раздела, где описываются пакеты, предназначенные для загрузки, вам посоветуют закачать их с FreshMeat.net. Там вы попадете в небольшой квест из пяти нажатий мыши — причем не все там и есть. При этом рядом же, на сайте, лежат и скрипты wget (
http://lfs.icx.fr/lfs/wget/), которые закачают вам все в лучшем виде.
   Там же можно и вломиться на ftp-сервер LFS (например, сюда:
ftp://ftp.linuxfromscratch.org/pub/lfs/lfs-packages/6.0/) и скачать все в пару кликов. Зачем тогда начинать закачку с самого скучного FreshMeat — непонятно. Разве что для накрутки посещений.
   Наконец, все для LFS 6 выложено на наш CD — это уже просто подарок лично от меня, поскольку закачивал я дома через помегабитную сетку :).


Инсталляция пакетов


Вообще-то сборка и установка для обычного пакета настолько же проста, насколько несложно набрать строку:

 

./configure ––prefix=/tools && make && make install

 

Обратите внимание: поскольку вы в этом время находитесь под пользователем lfs и устанавливаете пакеты в /tools, то для установки вам не придется переходить в режим суперпользователя. Конечно, не все пакеты устанавливаются настолько одинаково — многие ставятся "через плечо", то есть не из каталога с исходниками, а из папки по соседству. Поэтому команда configure вызывается что-то вроде:

 

../gcc-3.4.1/configure ...

 

Две точки в начале — это перейти на каталог выше, а три в конце — это типа "и так далее", поскольку кроме префикса часто устанавливаются и другие параметры. Кроме того, спасибо Жерару — он точно дозирует компиляцию, так что, когда вам не нужно компилировать что-то из пакета, то он указывает только те файлы, которые нам нужны. Забота, однако. В остальном процесс туп до невозможности, так что, когда вы дойдете до конца, неплохо бы иметь под руками охлажденные средства для устранения природной жажды.

 


Комбинируя графический, ncurses и консольный интерфейсы, можно добиться оптимальной производительности работы в Linux


У меня не хватает ума внести какие-то коррективы по сути самой сборки, зато могу дать полезные советы, которые помогут завершить весь процесс в течение одного дня (или ночи). Итак:

  • Если вы с трудом набираете текст на клавиатуре, то вас не должен волновать Linux, а особенно From Scratch. Сконцентрируйтесь лучше на программах вроде "Cоло на клавиатуре" — потом быстро наверстаете все остальные компьютерные науки.
  • В главе 6 вы перейдете в новый "корень" по chroot, где и будет происходить вторая (она же — основная) фаза компиляции. В этой среде до поры до времени не будет такой полезной программки, как Midnight Commander. И как бы круто вы ни набирали в консоли, вы все равно часто не знаете, как называется файл и т.д. — то есть операции с файлами все-таки часто удобнее делать в mc. Так вот, вы легко можете это делать, просто зайдите под root’ом в /mnt/lfs/sources и творите там свои дела. Но, конечно, таким образом вы можете только раскрывать архивы и после компиляции удалять исходники. Сама компиляция, в целях правильной привязки к каталогам (вот еще глупости исторические!), должна будет происходить только в chroot’овском мире. Распараллеливая распаковку-и-зачистку с компиляцией, вы можете значительно ускорить свою работу.
  • Комментарий по распаковке: если вы не ограничены в дисковом пространстве, то не жадничайте и дайте своему LFS достаточно пространства (5 Гб, например). Тогда вы можете не играться с зачистками и распаковать все пакеты одной командой. Однако следите и, когда нужно, удаляйте старые "отработанные" версии и распаковывайте снова. Хотя для пакетов, компилирующихся в "другом" каталоге (*-build), очищать нужно только этот каталог — сами исходники можно не тревожить, они не пострадают.
  • Современные консоли под X-Windows, кстати, очень хорошо воспринимают вставку текста. Правда, так же как и в MS Windows, в Linux нет общего мнения, какими клавишами при этом пользоваться. Поэтому в браузере Firefox вы будете копировать по Ctrl+C, а в консоль (например, Konsole) вставлять по Shift+Ins. В результате вашей любимой комбинацией клавиш станет ьакая последовательность: выделить — Ctrl+C — Alt+Tab — Shift+Ins — Enter. Причем копировать и вставлять вы можете и многострочный текст — в том числе с переводами строки и переносами косой чертой, что особенно важно при вводе файлов конфигурации и длинных команд chroot.
  • Коль уж зашла речь о многострочных файлах (да и вообще во избежание ошибок), следите за пробелами при вводе. Например, перед знаком переноса / или в конструкции "find -exec strip" перед \; обязательно ставьте пробел.
  • А если уж вспоминать о "стриптизе" отладочной информации, то есть тут небольшая накладочка: после второго цикла сборки, то есть когда собраны уже все пакеты LFS, в пункте Strip Again (или как его там) мы вызываем find и strip из каталога tools. А недавно перед этим, как только мы собрали bash, мы тут же, не сходя с места, переключились на свежесобранный командник. Неконсистентно получается — уж тогда правильней было бы "чисто из принципа" воспользоваться новыми утилитами из /sbin.
  • Но это так, не ошибка, а просто непоследовательность. Реальная ошибка вот в чем: если вы используете в качестве "хоста" новый дистрибутив вроде FC3, то в нем утилиты e2fsprogs уже далеко не 1.35. А есть такой загон: пакет ставит марку версии — и если не совпадает, то e2fsck будет вылетать с ошибкой, типа "не мое, гав-гав". Все бы хорошо, если бы проверка не была включена в загрузку. Хорошо, что fs3 проверять не надо: журнал прописал и считай готов — а так не загрузите вы свой расчудесный LFS.

Проблема фиксится двумя способами.

 

Простой и грязный предполагает просто скопировать e2fsck из хостового sbin’а на ваш LFS. Это, конечно, херит все великие идеи, зато всегда работает.

 

Второй вариант: просто в том месте (или позже), где речь идет о 1.35, собрать последние утилиты (на сегодня — 1.37). Я их тоже включил на диск, чтобы вы не шарились по Сети в самый неподходящий момент. Вообще, "предупреждения" не включать в LFS последние пакеты — французское жлобство чистой воды. Кстати, и mc тоже можно бы в LFS включить, а то, получается, это не средство первой необходимости.

  • Еще такая небольшая маза с окультуриванием работы есть. В X-Windows вообще, и в KDE в частности, есть различие между окном переднего плана и фокусом ввода. Поэтому вы можете проделать такой трюк: на переднем плане консоль, на заднем — тот же Firefox. Переводите мышку на браузер и, не нажимая клавиш, вращаете колесиком. Браузер становится активным на заднем плане, текст в нем начинает прокручиваться — то есть вы читаете и следите за процессами в консоли, дабы не прозевать и подкинуть новых дровишек. Однако, как и было сказано в книге, параллельно собирать по два пакета не рекомендуется. В винде такой номер с прокруткой на заднем плане не проходит ни при каких условиях, даже если проги написаны на том же Qt. Можно, конечно, сделать консоль "наверху", но она тогда мешается не по делу.
  • Насчет текстирования: здесь вам поможет здравый смысл, что считать сбоем или ошибкой. У меня в одном-двух "критических" тестах, типа glibc, валились некоторые проверки, но в конце концов общая сборка, в том числе и ядра, прошла успешно. Возможно, это проблема не моя или системы — а тех, кто придумывает эти тесты? Короче, можете тесты вообще не запускать, а запуская — не особо волноваться, если одна-две ошибки вылезут, это нормально.

Как инсталлировать MC


К большому моему удивлению, васи из линукца проявляют невиданный снобизм и делают вид, что набирать на клаве лучше, чем пользоваться полуночным командиром. Это, конечно, загон первой степени — и нужно что-то делать. Ниже приведены инструкции, как поставить mc на LFS.


Для начала необходимы два вспомогательных пакета — pkg-config и glib (оба есть на КП-диске). Установка без всяких понтов — ./configure && make && make install.


После установки pkg-config попадет в /usr/local/bin — достаньте его оттуда в нужное место. Например, так: ln -s /usr/local/bin/pkg-config /usr/bin. Главное чтобы после этого он искался по путям, а то glib ./configure будет плакать.


После установки glib выполните ldconfig, чтобы либы "засосало" в индекс. Вообще-то, техника козлячая — можно было бы вставлять эту операцию в сам инсталлятор — но, как вы знаете, линухоиды народ принципиальный и обидчивый, никаких других умных людей кроме себя не признает и не понимает.


Все, финиш — ставьте Midnight Commander. Если вы вкомпилировали русский язык в ядро и проколдовали его в консоль, то даже немедленно получите русский интерфейс. (А люди до сих пор мучают сетку по поводу русификации mc. Ну и народец! Да просто не трогай ничего — и все будет как надо :) )


И чё дальше?


Дальше у вас на руках система, в общем-то, рабочая. Хотя до рабочей ей — как до неба. Это как если бы вы своего ребенка не делали привычным путем, доверяя его создание природе, а решили, как папа Карло, сострогать его из бревна. Метод и результат весьма похожи. Впрочем, если вы сломаетесь, поставите тот же RPM и станете "таскать" пакетики как обычно, то дела у вас пойдут спорее. Но коль уж вы — папа Карло на всю сдачу, то вам прямой путь на сайт Beyond LFS (
http://lfs.icx.fr/blfs/news.html). Там вам расскажут и покажут, как скомпилировать почти любое из известных приложений — общим числом 257. Как только закончите, сообщите — я галочку поставлю в журнале героев. Впрочем, это продолжение LFS я признаю полезным и приятным, я там почерпнул (впрочем, и без BLFS почерпнул бы), как ставить EXIM+Courier.


Есть еще два сиквела. Один называется Automated LFS. Его цель — помочь вам пройти все операции в автоматическом режиме. Лично я никакого смысла в этом не вижу, но это якобы хорошо при "частом построении LFS". Вместо данных богом нам скриптов там используются XML-документы и прочая чушь. Я не могу придумать ни одного повода, чтобы часто собирать LFS, а уж чтобы использовать для этого XML — и подавно. Кстати, где-то там же есть и версия на Perl, но и в ней я тоже никакого смысла не вижу :).


Третья "продолжалка" называется Hardened LFS. Это помесь LFS+BLFS, предназначенная для более сложной настройки системы безопасности. Некоторые фрагменты заменены на более строгие: изменены скрипты запуска, добавлены спецсредства, патчи безопасности, вроде защиты стека, и т.д. Для создания серверов рекомендуется использовать именно эту версию.


Короче


Если вы уже изучили команды ls и mkdir, то ради профилактики можете собрать и LFS. Много нового не обещаю — но вот понимание того, то с Linux вы можете делать все, что угодно,— это да. Правда для этого придется пройти еще не одну сотню таких "LFS" — но чем бы мы еще занимались?

2005.06.24
19.03.2009
В IV квартале 2008 г. украинский рынок серверов по сравнению с аналогичным периодом прошлого года сократился в денежном выражении на 34% – до $30 млн (в ценах для конечных пользователей), а за весь календарный год – более чем на 5%, до 132 млн долл.


12.03.2009
4 марта в Киеве компания Telco провела конференцию "Инновационные телекоммуникации", посвященную новым эффективным телекоммуникационным технологиям для решения задач современного бизнеса.


05.03.2009
25 февраля в Киеве компания IBM, при информационной поддержке "1С" и Canonical, провела конференцию "Как сохранить деньги в условиях кризиса?"


26.02.2009
18-19 февраля в Киеве прошел юбилейный съезд ИТ-директоров Украины. Участниками данного мероприятия стали ИТ-директора, ИТ-менеджеры, поставщики ИТ-решений из Киева, Николаева, Днепропетровска, Чернигова и других городов Украины...


19.02.2009
10 февраля в Киеве состоялась пресс-конференция, посвященная итогам деятельности компании "DiaWest – Комп’ютерний світ" в 2008 году.


12.02.2009
С 5 февраля 2009 г. в Киеве начали работу учебные курсы по использованию услуг "электронного предприятия/ учреждения" на базе сети информационно-маркетинговых центров (ИМЦ).


04.02.2009
29 января 2009 года в редакции еженедельника "Computer World/Украина" состоялось награждение победителей акции "Оформи подписку – получи приз!".


29.01.2009
22 января в Киеве компания "МУК" и представительство компании Cisco в Украине провели семинар для партнеров "Обзор продуктов и решений Cisco Small Business"

 

 
 
Copyright © 1997-2008 ИД "Комиздат".