FreeBSD? А почему не Linux?

     "Пока общественное внимание приковано к Linux, BSD-клоны не производят большого шума. Но они, представители совершенных технологий, выполняют громадную работу во всем мире, хотя большинство людей даже не подозревают об их существовании".
     Дэн Кузнецки (Dan Kusnetzky),
     аналитик International Data Corp.

     

     Немного статистики
     и малоизвестных фактов

     Мы привыкли пользоваться самыми разными вещами, совершенно не интересуясь их устройством или, не приведи Господь, принципами, обеспечивающими их нормальное функционирование. Да оно и понятно — разобраться во всем невозможно. Но когда речь заходит о чем-то, относящемся к кругу профессиональных интересов, подобная "ленивость мозга" непростительна.

     Многие из нас ежедневно по нескольку раз набирают в строке броузера www.yahoo.com — и Yahoo всегда в состоянии on-line. Но если задуматься, сколько человек проделывают это действие во всем мире в тот же день? Сколько страдающих синдромом Герострата крэкеров маниакально пытаются "поставить на колени" серверы Yahoo? То же самое можно сказать и о сверхпопулярной бесплатной почтовой службе корпорации Microsoft Hotmail. Какова должна быть надежность программных систем одного из самых респектабельных мировых изданий — "The Wall Street Journal", ведь любой сбой в онлайновой версии этого журнала буквально непростителен? Какими аппаратными и программными средствами популярнейший ftp-сервер ftp.cdrom.com регулярно побивает свои же абсолютные рекорды по объемам переданных файлов (например, последний рекорд составляет 1,39 ТВ в день)?

     Все эти разные вопросы подразумевают, несомненно, и разные ответы. Но есть в них и нечто общее: когда речь идет о ТАКИХ уровнях надежности и производительности, обязательно будет упомянуто название бесплатной операционной системы из клонов BSD. Именно под управлением FreeBSD работают серверы и Yahoo, и Hotmail, и "Wall Street Journal", и, наконец, — ftp.cdrom.com. Если попытаться отыскать статистику по используемым в Сети операционным системам, то результаты покажут, что смелость этого утверждения достаточно обоснована: BSD-клонами оснащены 15,6% всех серверов европейских доменов, а в доменах .ua (Украина), .ru (Россия), .uk (Великобритания), .nl (Нидерланды) на долю BSD-систем приходится от 52 до 24% (ежемесячно обновляемые данные такого "тонкого" анализа серверов можно найти на сайте http://www.leb.net/hzo/ioscount/).
     

     Теория непонятностей…
     "Любой вопрос — любой ответ".
     Народная мудрость

     Так уж сложилось, что популярность Linux вызвала чуть ли не массовое невосприятие множества "не-Linux" операционных систем. BSD-клоны не являются исключением: многие считают, например, FreeBSD "клоном" Linux, более "продвинутые" линуксоиды говорят о якобы недостаточной поддержке BSD-клонов прикладным программным обеспечением и непреодолимых трудностях в администрировании BSD-систем, самые горячие головы объявляют всю идеологию BSD тупиковой, а конкретных представителей — наследников BSD Unix — "мертворожденными". На последнее "поползновение", надеюсь, убедительный ответ содержится в приведенных выше фактах, зато остальные "нескладушки" заслуживают более детального обсуждения.

     Итак, существует ли скрытое "родство" между Linux и BSD-клонами (FreeBSD/NetBSD/OpenBSD)? Ответов здесь может быть два — и нет, и да. С одной стороны, Linux — система, созданная "с нуля": с элемента ядра POSIX-совместимой операционной системы, разработанного Линусом Торвальдсом (за отправную точку в этом студенческом проекте была принята учебная ОС Minix Эндрю Танненбаума, давно ставшая классикой в курсах вычислительной техники большинства университетов). Быстрому развитию Linux сильно способствовали и талант Торвальдса, и затянувшаяся разработка открытой альтернативной ОС GNU, и огромное количество качественного ПО, созданного в ходе этой разработки, и, наконец… существование BSD-систем. По крайней мере, сам Торвальдс вспоминал, что если бы берклеевская Unix для процессоров i386 "получила свободу" на несколько лет раньше, то созданием Linux не было бы смысла заниматься.

     С другой стороны, BSD-системы, несмотря на молодость основных клонов, основаны на очень хорошо проверенном и популярном ядре берклеевской версии ОС Unix, разработку которого в течение 15 лет вплоть до 1994 г. финансировало Министерство обороны США.

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

     Еще одно распространенное заблуждение, связанное с "обилием" BSD-клонов, заключается в акцентировании внимания на "разрозненности" реализаций. Действительно, на первый взгляд, существует четыре клоновые BSD-системы: FreeBSD, NetBSD, OpenBSD и BSDI. Однако фактически эти системы почти идентичны, различаются же они на уровне задач, которые ставили перед собой их разработчики. FreeBSD и BSDI — свободно распространяемый и коммерческий (соответственно) клоны BSD Unix, ориентированные на эффективное использование возможностей платформы x86. Разработчики NetBSD преследовали абсолютно противоположную цель: NetBSD должна работать на всех существующих платформах, и девиз сообщества NetBSD — мобильность. OpenBSD — концентрат всех улучшений Unix-систем, направленных на высокую безопасность и устойчивость ко "взломам". Подобная фрагментация на самом деле дает уникальную возможность выбора соответствующей практически любым требованиям операционной системы: вы можете использовать FreeBSD для разработки программного обеспечения (на дешевой "персоналке") для супердорогого сервера под управлением, например, Open- или NetBSD.

     Настоящим недоразумением следует считать бытующее мнение о нехватке программ для BSD-систем. На самом деле их тысячи — но об этом дальше, а для большей убедительности просто приведу "скриншот" своего компьютера под управлением FreeBSD версии 3.2 (рис. 1). Как видите, особенного недостатка в чем-либо не наблюдается…

     Трудности администрирования BSD-клонов — главный аргумент противников BSD-систем. Если стараться быть объективным, то разумнее было бы говорить о строгости, предъявляемой BSD-клонами к системным администраторам. Более ориентированные на серверные приложения, консервативные и надежные BSD-системы требуют ЗНАНИЙ! С одной стороны, подобное "ограничение" сдерживает массовое распространение BSD-клонов, с другой — поддерживает высокий уровень квалификации пользователей *BSD (этот факт уже давно признали даже в не отличающемся лояльностью по отношению ко всем "не своим" стане ярых "линуксоидов"). Более того, у этой "медали" постберклеевских систем есть еще и третья сторона: невысокая популярность их в качестве настольных ОС вызвала некоторую "однобокость" в неформальной информационной поддержке — здесь намного легче получить информацию или консультацию по серверной тематике, чем, например, о доступных современных инструментальных средствах для программиста или хороших библиотеках подпрограмм/классов.
     

     FreeBSD глазами "не-администратора"

     FreeBSD — один из самых популярных BSD-клонов, да это и понятно: дешевое, массовое аппаратное обеспечение, хорошая динамика развития системы, предсказуемость процесса разработки, либеральная лицензия. Однако, в отличие от Linux, желающие установить на свой компьютер эту ОС, вероятнее всего, сразу столкнутся с проблемой: приобрести CD-ROM с FreeBSD достаточно непросто… Естественно, счастливые обладатели неограниченного доступа к Internet по хорошей выделенной линии могут установить систему прямо с ftp.freebsd.org, тем не менее большинству желающих более экономным покажется именно приобретение CD-ROM. Увы, печальный опыт закупки и тестирования базарных "золотых" дисков показал, что… это выброшенные деньги: ни один из трех "компактов" не позволил установить работающую систему. Способов решения этой проблемы есть два: либо допроситься у знакомых провайдеров Internet записать "болванку" CD-R, либо приобрести требуемый диск у фирмы CheapBytes, успешно работающей методами Internet-коммерции в Украине (http://cheapb.unity.net) — это будет и дешевле, и менее обременительно.

     Следующий очевидный этап на пути освоения FreeBSD — инсталляция системы. Здесь важно не спешить, особенно в том случае, если ваш опыт работы с Unix невелик. Сначала целесообразно посетить сайт www.freebsd.org и почитать разделы, посвященные инсталляции ОС в on-line-книге, к которой вам придется еще не раз обращаться: FreeBSD Handbook. Для абсолютных новичков в Unix вообще и FreeBSD в частности есть замечательное руководство "с картинками" по установке системы на сайте http://www.vmunix.com/fbsd-book/install.phtml (страница размером около 300 KB, так что лучше сохраните ее на диске). Кроме того, инсталляционная программа FreeBSD оснащена работающей на всех этапах системой помощи и достаточно развитыми средствами автоматизации процесса установки. С какими-либо особенными сложностями на инсталляционном этапе столкнуться трудно, но ряд "подводных" камней все же существует.

     Очень важно еще до начала этапа установки системы понять, что любая Unix — мощная многопользовательская ОС, в "сценарии" которой есть персонаж, облеченный практически неограниченной властью, — суперпользователь. Поэтому, даже если речь идет о вашей личной машине, правами суперпользователя злоупотреблять не следует! Вреда окружающим в этом случае не будет, но головную боль себе лично обеспечить можно. Так что в дальнейшем подразумевается, что все действия, связанные с доступом к "внешнему" миру (Internet, локальная сеть), и повседневную работу вы производите как обычный, непривилегированный пользователь, а установку/удаление системы, программных пакетов и административные процедуры — в суперпользовательском режиме.

     Если в вашей машине присутствует ISA-карта расширения (например, сетевая плата) из удивительной для ISA-шины категории Plug-and-Play, весьма вероятна ситуация, что с ней возникнут сложности. Поэтому на самом первом этапе инсталляции воспользуйтесь возможностью предварительно отконфигурировать ядро ОС (для этого предусмотрен особый диалоговый режим, действия в котором достаточно очевидны при общении с "живой" системой и в дополнительных комментариях не нуждаются), указав для устройств ISA Plug-and-Play точные требуемые параметры (например, номера прерываний IRQ и адреса). Очень внимательно следует отнестись и к процедуре разбиения диска на именуемые в соответствии с Unix-терминологией "слайсы" (slice, более известные как разделы из мира MS-DOS, записи о которых хранятся в пресловутой Partitions Table). Здесь необходимо правильно выбрать размер слайса подкачки/сохранения страниц виртуальной памяти (swap). О рекомендациях из книг по Linux следует забыть: размер swap-слайса, равный удвоенному объему оперативной памяти, может не соответствовать вашим потребностям, особенно при интенсивном использовании графических приложений X-Window. Так что не пожалейте 96—128 MB дискового пространства под swap. Кстати, с этой цифрой связан еще один популярный миф о якобы страшной "swap-прожорливости" FreeBSD по сравнению с Linux. Не бойтесь — это совершенно не так, просто разработчики FreeBSD применяют иную стратегию механизма управления сохранением/подкачкой страниц виртуальной памяти, ориентированную на максимальное высвобождение физического ОЗУ для загрузки/запуска задач.

     Когда программа инсталляции предложит вам установить Ports Collection, не отказывайтесь! Порт (port) в терминологии FreeBSD — набор правил, сводящих иногда очень сложную задачу по установке/удалению программного обеспечения к минимальному и абсолютно тривиальному перечню действий. Ports Collection представляет собой множество вложенных каталогов, группирующих порты для около трех тысяч доступных в FreeBSD программных пакетов.

     Следующий шаг, фактически обязательный для непрофессиональных пользователей, — установка чего-либо программного, облегчающего настройку системы и позволяющего достаточно быстро освоиться в малознакомой среде Unix. Монстроидальные комплексы типа KDE/Gnome на первых порах и, тем более, для пользователей маломощных ПК не годятся (уж слишком много вычислительных ресурсов платится за "красотищу").

     И вот здесь самое время сделать маленькое, но крайне важное отступление. FreeBSD, как и все остальные BSD-клоны, представляет собой, в отличие от Linux, единую систему. Что под этим понимается? Если Linux — больше идея и ядро ОС, то FreeBSD и есть ОС, включающая кроме ядра все минимально необходимые Unix-системе библиотеки и утилиты. С одной стороны — это очень хорошо: пользователи Linux уже знакомы с проблемами несовместимости, например, конкретных бинарных программ с версией стандартной библиотеки языков C/C++ в их системе; в FreeBSD подобной проблемы не существует. С другой стороны — "свежеустановленная" FreeBSD предоставляет минимальный набор удобств (с пользовательской точки зрения). И правильный выбор проверенных временем и надежных программ, создающих необходимый в повседневной работе комфорт, — занятие совсем не из простых: обилие портированного ПО и заслуженная серверная популярность его существенно усложняют. Хотя и FreeBSD располагает уникальным ПО, доводящим удобство решения задач обслуживания/администрирования рабочей станции (или небольшого сервера) до аналогичного в коммерческих системах.

     Итак, вам понадобится установка TCL/Tk (интерпретатор языка Tool Command Language и библиотека графических примитивов-виджетов для X-Window), и желательно с процедурой установки/инсталляции ПО разобраться самостоятельно раз и навсегда. Затем с сайта homepage.esoterica.pt/~jardim/ загрузите программу SAM-2.0 (System Administration Manager, весьма схожая с имеющей созвучное название в Unix "от Hewlett-Packard" система администрирования) и прочтите инструкции по ее установке (она отличается от стандартного механизма инсталляции ПО FreeBSD, но крайне проста). Выберите подходящий вам "по вкусу" оконный менеджер из потенциально перспективных: легковесных, удобных и простых (о разных оконных менеджерах X-Window можно узнать на сайте www.plig.org/xwinman/, из не попавших в поле зрения организаторов сайта программ, по мнению автора, наибольшего внимания заслуживает flwm, сайт www.fltk.org). Если вам не по душе сводящий с ума серый "в крапинку" фон корневого окна X-Window, установите программу xli, позволяющую украсить его любой понравившейся картинкой из файлов почти всех возможных графических форматов (xli есть в портах FreeBSD).

     После этих "подготовительных" процедур вы, во-первых, уже должны знать, как устанавливать программы в FreeBSD, во-вторых, на вашей машине уже есть почти все, что нужно для "облегчения" жизни… Осталась мелочь: модифицировать файл /usr/X11R6/lib/X11/xinit/xinitrc, добавив вызовы требуемых программ с соответствующими опциями, например установки фона экрана (xsetbg из состава пакета xli), системы администрирования (/usr/sbin/sam) и, наконец — оконного менеджера (exec имя_менеджера). После этого просто наберите startx — и рабочее окружение "неадминистрирующего администратора" готово (рис. 2). Дальнейшие успехи в освоении администрирования рабочей станции теперь зависят только от вашей трудоспособности, любознательности и настойчивости.
     

     Программы, всякие и разные

     Установка Unix-подобной ОС, в том числе и FreeBSD, преследующая цель "просто научиться", — занятие бессмысленное. Если вы не знаете точно, чему именно собрались учиться, больших успехов в этом начинании и не ждите. Unix — система не маленькая и очень многогранная: можно проработать программистом десяток лет за Unix-станцией и, например, не представлять, как конфигурируется "самая-самая" почтовая система sendmail, или, наоборот — десять лет администрировать sendmail, но понятия не иметь о разработке Ada-программ. В этом нет ничего постыдного, а чтобы не мучить участников конференций простенькими вопросами, целесообразно сразу определиться, чего вы хотите от своей FreeBSD/Unix-станции. Вариантов здесь немного: программирование, изучение администрирования Unix и конкретных программных продуктов, по ряду причин недоступных легально на других платформах. Использование "бесплатной" Unix-системы в качестве альтернативы офисной MS Windows — занятие неблагодарное, по крайней мере, при попытке "лобовой" реализации (ставим вместо Windows Linux/FreeBSD, вместо MS Office — StarOffice), по очевидной причине безрассудства массированных обстрелов мест гнездования воробьев тяжелой артиллерией и оперативно-тактическими ракетами.

     Начинающим программистам можно посоветовать не "зацикливаться" на особенностях выбранной реализации Unix и меньше уделять внимания непрекращающимся дебатам по поводу превосходства того или иного инструментального средства (в кровопролитной битве под лозунгом "За EMACS!" можно непродуктивно потратить ну очень много времени). Обратитесь к классическому редактору Nedit — он предельно прост и удобен в использовании, а по возможностям расширения с помощью C-подобного макроязыка ни в чем не уступает "самым-самым" редакторам. Сам Nedit доступен посредством портов FreeBSD, а приличная коллекция удобных макрорасширений находится на сайте www.mailnet.co.uk/~marc/msl.html. Непременно воспользуйтесь графической "надстройкой" над де-факто стандартным отладчиком gdb под названием DDD — это продукт высочайшего класса, превосходящий почти по всем показателям лучшие коммерческие аналоги (DDD также есть в портах FreeBSD, а его "домашняя" страничка в Сети www.cs.tu-bs.de/softech/ddd/). Не пожалейте времени на изучение одних из самых важных программистских средств: систем управления версиями RCS и CVS, подробная документация по которым обязательно присутствует в установленной вами FreeBSD (существенную помощь начинающим окажет графическая надстройка над CVS — tkCVS, найти которую в Сети можно по адресу www.NeoSoft.com/tcl/ftparchive/sorted/apps/tkcvs-6.0/). Если вы интересуетесь современными методологиями проектирования ПО, воспользуйтесь замечательным кросс-платформенным продуктом ArgoUML (www.ics.uci.edu/pub/arch/uml/) — его ближайшие коммерческие аналоги способны подорвать бюджет даже весьма благополучной отечественной программистской фирмы.

     В результате такого "напичкивания" ваша станция будет выглядеть приблизительно так, как на рис. 3 (приведены все перечисленные выше программы), — согласитесь, весьма неплохо для легально бесплатного ПО. Но главное не это — абсолютно безвозмездно вам доступны инструменты и технологии совершенно немыслимого даже в мире shareware качества. Остальное, естественно, зависит от вас…

     Если же вы хотите изучить администрирование Unix-систем, то, увы, в домашних условиях на изолированной от всего мира машине это сделать в полноценном объеме трудно, а некоторые вещи — просто невозможно. Попытайтесь найти способ подключения своего "сервера" в маленькую, но все же сеть, запаситесь парой дешевеньких сетевых карт, модемом (какими именно — справьтесь в том же самом FreeBSD Handbook). Остальное — дело головы и усидчивости, благо, книг по Unix-тематике сейчас не печатают только издательства садово-огородной направленности.

     Для изучения конкретного (имеется в виду — коммерческого) ПО FreeBSD подходит не слишком хорошо. К сожалению, практически не существует версий именно для этой системы СУБД Oracle, Informix и прочих "облегченных тяжеловесов". Но FreeBSD умеет выполнять бинарные программы для Linux, SCO Unix и делает это в некоторых случаях лучше, чем "родные" платформы.

     Как вы уже догадались, о серверных применениях FreeBSD речь в этой статье не идет — 50% украинских Web-серверов и так работают под ее управлением, а вот тому, как сделать на основе FreeBSD intranet-сервер и чего от него можно добиться, будет посвящена отдельная статья.
     

     Так почему все же FreeBSD?

     Действительно, почему? Linux тоже весьма надежная операционная система, да и приложений для нее побольше, существует еще бесплатная Solaris с ограниченными возможностями… Сколько есть отвечающих на этот вопрос, столько и вариантов ответов. Лишить эти ответы эмоциональной окраски — значит, лишить содержательности и смысла вообще. Есть, правда, ряд соображений, условно принимаемых за бесспорные: процесс проектирования FreeBSD и во всем BSD-сообществе более упорядоченный и строгий, а системы, созданные в ходе этого процесса, — более консервативные и менее удалившиеся от Unix. Разночтения и принципиальные различия в лицензиях GNU и BSD, на взгляд автора, абсолютно не важны, хотя… если вы предполагаете зарабатывать деньги продажей своих программ, больше для этой цели подходит BSD-лицензия (кто сказал, что программы не могут быть платными?). Ну и, наконец, эмоциональный ответ — у консервативных *BSD есть, так сказать, "вкус конфет детства" (а вкуснее их не бывает вообще), но это скорее касается категории "тех, кому за тридцать".
     

     Для решившихся — Internet-ресурсы

     www.freebsd.org — так сказать, колыбель проекта FreeBSD;
     www.freebsd.org.ru — русскоязычный сервер, руководство по кириллизации;
     flag.blackened.net/freebsd/ — "вопросы и ответы для лентяев и потерявших надежду";
     www.freebsdrocks.com — новости, форумы, чат, обзоры ПО;
     www.freebsdzine.org — электронный ежемесячный журнал, посвященный FreeBSD;
     www.vmunix.com/mark/FreeBSD/ — здесь есть отличная on-line-книга о FreeBSD;
     www.stokely.com/unix.sysadm.resources/index.html — портал, посвященный администрированию Unix-систем;
     wks.uts.ohio-state.edu/sysadm_course/sysadm.html — бесплатная книга "Администрирование Unix-систем" в формате .pdf.