OpenBSD - заметки конечного пользователя

         

Линия BSD вообще


С точки зрения формальной системы линии BSD, как и Linux, определяются как многопользовательские и многозадачные Unix-подобные операционные системы (и прочая, и прочая, и прочая...). Однако, в отличие от Linux, представляющей собой функциональное воспроизведение Unix "с нуля", дериваты BSD исторически обнаруживают с "каноническим" (то есть сертифицированным правообладателем торговой марки) Unix множество точек соприкосновения.

Мне известно четыре ныне живущих представителя BSD чистой линии - BSD/OS, она же BSDi, FreeBSD, Net BSD, OpenBSD, вымерший штамм SunOS и пара-тройка микстов (включая MacOS X, о которой столько говорили еще недавно). Однако предметом для обсуждения могут быть только три - Free-, Net- и OpenBSD, как системы свободные и открытые. Прочие же должно отмести с негодованием ввиду их сугубо коммерческой природы.

Это я не к тому, что сами по себе они плохи - отнюдь. Просто цена коммерческих Unix-систем обычно столь высока, что Windows на их фоне выглядет просто как продукт благотворительности. Система же для конечного пользователя должна обеспечивать сохранность его кошелька вкупе с чистотой совести. Именно этим двум условиям и отвечают открытые и свободные системы типа Linux и *BSD. Впрочем, и этот вопрос уже обсуждался.

История открытых BSD-систем уходит в седую древность (начало 90-х годов прошлого столетия), когда на базе развивавшейся в университете Беркли версии Unix были созданы Free- и NetBSD. От последней в 1995 г. ответвилась OpenBSD. С тех про эти системы развивались параллельно, хотя и не вполне независимо. Тем не менее фамильное сходство они не утратили и по сей день.

Оно выражено в схожести (хотя, насколько я смог понять, и не идентичности) ядра, подобия файловой системы как физически (не зря во всех трех она имеет единое имя - ffs, Fast File System), так и логически (то есть с точки зрения структуры каталогов). Общими являются также многие системные утилиты, часто весьма отличающиеся от функциональных аналогов, используемых в Linux.


Однако каждая из систем характеризуется и только ей присущими особенностями. Так, FreeBSD оптимизирована для процессоров Intel и совместимых. NetBSD, напротив, ориентирована на поддержку максимально широкого круга аппаратных платформ. Что же касается OpenBSD, то она изначально разрабатывалась в расчете на максимальную защищенность как системы, так и пользовательских данных.

Я не собираюсь обсуждать сравнительные достоинства и недостатки как систем линии BSD, так и их всех по отношению к Linux. Во-первых, ввиду беспредметности этого сюжета: каждая из систем доказала свою жизнеспособность, и вопрос выбора между ними относится к категориям иррациональным. Или, напротив, определяется специфическими целями и задачами.

Во-вторых, не побоюсь высказать мысль, которая может показаться крамольной адептам какой-либо из упомянутых систем: с точки зрения пользователя, различия между BSD любого рода ничуть не больше, чем между различными дистрибутивами Linux. Более того, вариации внутри линии BSD - вполне в пределах внутривидовой изменчивости основных линий развития Linux, таких, как клоны Red Hat, Debian и Slackware, а подчас и меньше. И все они вполне правомерно могут рассматриваться в одном ряду.

Что же касается бытующего мнения о большей устойчивости FreeBSD сотоварищи по сравнению с Linux... Ни в коей мере не собираюсь оспаривать его (или, наоборот, подкреплять) по существу. Однако рискну заметить: в рамках очерченной темы это не имеет никакого значения. Поскольку устойчивость любой из этих систем более чем достаточна для настольного (подчеркну - не серверного, тут судить не берусь за некомпетентностью) применения. И неизмеримо превосходит устойчивость Windows 9x, если этот термин вообще применим к последней (опять же подчеркну, что о NT/2000 - речь не идет).

Традиционное представление о большем быстродействии BSD относительно Linux (как, впрочем, и относительно друг друга) также не должно приниматься во внимание. Так как избыточная (для 90% настольных приложений) мощность любой машины, которую можно ныне купить за разумные (не по цене антиквариата) деньги, нивелирует это различие (если оно есть) напрочь.

Так что рассуждая вообще, в качестве предмета исследования можно было бы выбрать любую BSD-систему. Однако в пользу моего выбора -


Немного актуализации (версия 3.0)


Систему OpenBSD я полюбил давно и платонически (согласно армянскому радио, - это когда ты любишь, а Платон... эээ... пользует) - года два назад прочитав замечательную статью Алексея Выскубова на эту тему (см. приложение к ). И даже немало с ней в версии 2.8 поковырялся.

Импонирует в OpenBSD многое:

и строгость программы инсталляции, когда, кроме базовых компонентов, принудительно не устанавливается абсолютно никаких излишеств;

и простота доустановки этих самых излишеств - что из пакетов, что через систему портов;

и очень продуманный набор этих самых пакетов - на одном дистрибутивном диске умещались практически все приложения необходимые в работе среднему пользователю (например, мне, любимому);

и простота устройства файловой системы, воплощенной в предельно плоском дереве каталогов;

и прозрачность ручных настроек, и многое, многое другое.



По настоящему мешало только одно - невозможность нормальной работы в консоли с русскими текстами. Напомню, что для набора символов кириллицы в PCVT-консоли OpenBSD требовалось держать нажатым Alt, причем, из изощренного садизма, именно правый... Что мешало здорово - и в итоге, погрязнув, волею судеб, в одном из очередных Linux'ов, я скрепя сердцем OpenBSD истребил. Тем более, что на нее не оставалось ни места (на диске), ни времени (в сутках), ни сил (в душе). И оставил эту тему до лучших времен.

Которые, разумеется, не заставили себя ждать. Для начала появилась версия 2.9, в которой был заменен консольный драйвер (pcvt на wscons). Что само по себе проблемы кириллицы не решало. Но вселяло надежду в благополучный исход процедуры кириллизации. Правда, посредством пересборки ядра и еще кое-каких дополнительных ухищрений. А затем появилась и следующая, третья, версия, в ядро которой, как было обещано, поддержка кириллицы уже встраивалась изначально. Вот ею я и занялся.

Комплектация дистрибутива была такая: базовые компоненты (1-й диск, base) и пакеты в алфавитном порядке (до r - 2-й диск, packages 1, остальные - 3-й диск, packages 2), с различием регистра. Диск base - загрузочный, именно с него осуществляется установка.


Сам по себе процесс установки не претерпел никаких изменений по сравнению с версией 2.8 - тот же текстовый режим "по черному", те же стадии - выбор диска для установки, разбиение его на разделы (partitions, аналог slices из FreeBSD), создание файловых систем на выбранном разделе, выбор и установка базовых компонентов системы (правда, распухших в сумме почти до ста мегабайт). Однако на этом пути меня подстерегали некоторые неожиданности.

Я устанавливал систему на машину с двумя винчестерами, причем второй был подключен как единственное устройство к первому RAID-каналу контроллера Promise. Именно его я и предполагал отдать на заклание OpenBSD.

В Linux'е он естественным образом определяется как устройство hde - ведь литеры от a до d зарезервированы за устройствами на основном IDE-контроллере. Подобного же поведения я ожидал и от OpenBSD. Каково же было мое изумление, когда на первой стадии установки, выбрав из двух доступных вариантов - wd0 и wd1, - второй, я при заходе в fdisk с удивлением обнаружил, что пытаюсь создать разделы на своем первом, рабочем, винте. Дальнейшее исследование показало, что так оно и есть, что ноги нет: в качестве нулевого накопителя система упорно рассматривала именно диск на RAID-контроллере. Так что при наличии дисков на разных контроллерах следует быть внимательным: легким движением руки (ответом yes на вопрос о режиме "entire disk") можно элегантно уничтожить разделы любого типа...

"А в остальном, прекрасная маркиза", инсталляция прошла хорошо. И наступило время перезагрузки. И тут на тоненьких ножках подкралась вторая неожиданность: мультизагрузчик OS Selector производства товарища Acronis'а, прекрасно справлявшийся с OpenBSD 2.8 (а равно всеми прочими ОС, с коими мне приходилось иметь дело, вплоть до QNX), третью версию ее обозвал грязным словом "Неизвестная система". Попытка настроить OSS вручную успехом не увенчалась - система как была неизвестна, так ею и осталась... Причем - вне зависимости от того, подключался ли диск с OpenBSD к основному IDE- или дополнительному RAID-контроллеру, устанавливалась ли она на один накопитель с OSS или на разные - короче, OSS не хотел грузить ее ни при каких доступных мне условиях.



Это я не в криминал кому-либо из фигурантов дела - текущая версия OSS старше третьей OpenBSD на полгода, а разработчики последней о существовании такого загрузчика, вероятно, и не догадываются. Все это сказано лишь к тому, что и с другими мультизагрузчиками возможны подобные проблемы.

Впрочем, изучение этого вопроса я прекратил, установив систему в режиме entire disk и переключив в BIOS загрузку на IDE-RAID. После этого система загрузилась благополучно. И я наконец оказался в wscons, о которой столько говорили большевики.

На первый взгляд, консоль как консоль. Но именно - на первый. Для начала включаю службу консольной мыши (это делается редактированием файла /etc/rc.conf, как - ясно из комментария в теле оного) - по умолчанию этот сервис, как, впрочем, и почти все прочие, при старте отключен. Должен заметить, что у меня - оптический Logitech-грызун с колесиком, включенный через переходник в PS/2-разъем (можно включить и в USB). Так вот, после этого мышь не только заработала, но даже начала скроллировать экран при прокрутке колесика - не совсем как в Windows, а просто эмулируя комбинацию Shift+PgU/PgDown (нажатие на колесико, как обычно, эквивалентно действию средней клавиши стандартной трехкнопочной мыши).

Это мне понравилось. И я попытался сконфигурировать X'ы - в комплекте шла версия 4.1 оных. К сему предназначалось две утилиты - текстовая xf86config и как бы графическая xf86cfg (имелся и стандартный XF86Setup, но он работает только с третьей версией X'ов). С первой я был знаком, посему попробовал второй. Что привело к мертвому зависанию машины, требовавшему воздействия сетевого выключателя (перезагрузка тремя пальцами в OpenBSD по умолчанию также запрещена, включаясь редактированием файла /etc/sysctl.conf).

Пришлось обратиться к xf86config. Каковой оказался на удивление хорошо сделанным (в Linux'е мне тогда давно уже не приходилось настраивать X'ы после инсталляции, и я не подозревал о прогрессе в средствах для этого). Помимо стандартных настроек мыши, клавиатуры, дисплея и видеокарты, он позволяет сразу же указать тип клавиатурной раскладки (например, Russian) и ее вариант (например, winkeys для получения стандартных Windows-клавиш для знаков препинания), а также выбрать переключатель (доступны все разумные варианты, от традиционного CapsLock до новомодных win-клавиш типа Menu). Впрочем, с тех пор все это стало обычным повсеместно...



Однако попытка запустить X'ы оказалась безуспешной - последовало сообщение об ошибке в устройстве /dev/wsmouse. Нужно сказать, что именно это устройство предписывается программой при использовании консольного драйвера wscons (а именно он и используется по умолчанию). Возвращаюсь к xf86config и пробую иные разумные варианты - от протокола PS/2 до Logitech MouseMan в совместимом с MS виде. Тщетно - загрузка X'ов обрывается тем же сообщением. Вчитываясь в его текст, обращаю внимание на фразу device (все тот же /dev/wsmouse) busy.

Начинаю задумываться, кто же мог так за'busy'ть это несчастное устройство. И прихожу к выводу, что не иначе чем служба консольной мыши. И действительно - после ее отключения X'ы запускаются благополучно.

Впрочем, благополучие это относительное. Ведь отныне приходится выбирать - либо мышь в консоли, либо X'ы вообще. Что, конечно, не есть хорошо - ведь мышь в консоли не столько указатель и координатор, сколько данно-обменник, да и консольного скроллирования жалко до слез. Но - делать нечего, ведь и X'ы нужны. Одним словом, как говаривал мой приятель, лучше синица в руках, чем (вариант для дам) гвоздь в ухе...

На этом первый этап знакомства с системой я счел законченным. Бегло пробежавшись лишь по дискам с пакетами и установив все жизненно необходимое. А так - выбор там богатый:

и весь потребный консольный инструментарий (bash и tcsh, Vim в разных вариантах, joe, любимый и т.д.);

и всякая консольная мультимедиа - от mpg123 до bladeenc и lame;

и KDE 2.2.1 in corpore, включая KOffice 1.1, вкупе с GNOME и кучей оконных менеджеров;

и Gimp сотоварищи по графике, типа Gqview (есть даже QCad);

и мультимедиа для X'ов, в частности, grip и xmms;

и все имеющее отношение к TeX'у, а также web-редакторы, браузеры и прочая, и прочая, и прочая.

В общем, из регулярно использовавшихся мной приложений я не обнаружил только Lyx'а. Кроме того, странным выглядит отсутствие mkisofs, хотя парная ей утилита cdrecord присутствует. Впрочем, коллекция пакетов OpenBSD обновляется регулярно, так что появления их следовало ожидать в скором времени. Важно также, что к пакету для кириллизации X'ов прибавился и русский ispell (конкурирующий aspell ограничился пока языками датчан и разных там прочих шведов).

Подводя итог, скажу, что мои симпатии к OpenBSD не уменьшились. Не уверен, что она стала пригодной к использованию в качестве единственной и универсальной настольной системы, но очередной шаг в этом направлении сделан. Конечно, велика обида на неуживчивость консольной (скроллирующей!) мыши с X'ами. Остается надеяться, что это - явление временное: ведь не так давно, в масштабах вечности, и Linux'овый gpm обладал подобным свойством...

Актуализированное примечание: На данный момент последняя версия OpenBSD - 3.2. Но я с ней не знаком, так что -

Пока конец


Необходимое вступление


Вспышка интереса к Linux бросила свой отсвет и на остальных представителей славного семейства открытых ОС. В первую очередь - на системы линии BSD. До недавнего времени они были широко известны в узких кругах и занимали вполне определенную нишу (в первую очередь - Интернет-серверов различного масштаба). Где чувствовали себя вполне уютно. И в качестве настольной платформы использовались только отдельными энтузиастами (некоторые несознательные граждане называют их мазохистами и прочими словами из медицинского лексикона). Однако ведь и Linux еще пару лет назад никто всерьез не рассматривал как основу настольной системы для конечного пользователя. Ныне же - это стало вполне реальным.

Возникает вопрос - почему в этом качестве не могут использоваться представители линии BSD? Ответ очевиден - в первую очередь потому, что никто не изучал их возможности как настольных систем. Что и побудило меня к попытке восполнить этот пробел в настоящем цикле заметок, первая из которых ныне предлагается вниманию читателей.

В этом цикле проблема настольного применения ОС линии BSD рассматривается на единичном примере - OpenBSD. Возникает вопрос - почему именно она? Ответить на него не сложно. Но предварительно следует сказать несколько слов о том, что такое



Обзор возможностей


Я уже упоминал, что при инсталляции системы устанавливается воистину спратанский набор приложений. Однако это - отнюдь не свидетельство убожества. Смонтировав инсталляционный CD ROM и внимательно изучив каталог /mnt/cdrom/2.8/packages/i386, можно обнаружить, что штатных приложений в OpenBSD вполне достаточно, как для консоли, так и для X Window. Правда, они свалены в единую кучу, и никакими комментариями не сопровождаются. Однако в этом и плюс - можно устанавливать только заведомо известное и нужное.

Среди консольных программ - традиционная подборка текстовых редакторов: упоминавшийся ранее joe, jed, pico, emacs, elvis - можно выбрать по вкусу и потребностям. Правда, le, знакомого по FreeBSD, нет. Отсутствует и mcedit - встроенный редактор из Midnight Commander. Впрочем, и самого этого файлового менеджера нет также, на горе любителей детей командира Нортона.

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

Действительно, сколько нажатий на клавиши нужно, чтобы в Norton-подобном файловом менеджере перейти из глубоко вложенного подкаталога каталога /home в столь же глубоко закопанный подкаталог каталога /usr, для примера? Предлагаю произвести этот подстчет читателю. А в командной строке для этого достаточно набрать

cd /usr/subdir1/../subdirN

- и дело в шляпе. Причем, если дело происходит в bash, набирать путь целиком нет необходимости - к нашим услугам волшебная клавиша табуляции. Экономия усилий и времени - налицо. А поскольку частое долбление по клавишам способствует всякого рода туннельным синдромам кисти - сократить его до минимума никак не вредно...

Предвижу возражение - использование чего-нибудь вроде Windows Explorer вообще нажатий на клавиши не требует. Однако тут-то проигрыш во времени, затрачиваемом на продирание сквозь баобабообразные древеса каталогов - вообще огромен. И вполне может довести до судорог в мышцах предплечия...


Однако я отвлекся. Следующее, что следует изучить - это набор оконных менеджеров и визуальных сред. Он победнее, чем в больших современных дистрибутивах Linux. Однако представляется достаточным и разумным.

Помимо классического FVWM, устанавливаемого с системой X Window по умолчанию, имеется его Win-подобный вариант FVWM95, многочисленные вариации на тему TVM, аскетичный Blackbox, сюрреалистичный Enlightenment, наследники NextStep - AfterStep и WindowMaker, предельно быстрый и компактный FLWM, замечательный также простотой настроек. Есть и еще несколько, доселе мне неизвестных.

В числе интегрированных сред обращает на себя внимание быстрая и нетребовательная к ресурсам среда XFce, основанная на библиотеке Gtk, подобно GNOME (который сам в штатный комплект не входит). Правда, назвать ее полностью функциональной нельзя - почему-то XFce собрана без собственного оконного менеджера и, соответственно, не позволяет манипулирования окнами.

Зато KDE имеется сразу в двух версиях - 1-й и 2-й. Первая - полностью функциональна и ничем не отличается от своих Linux-аналогов. Правда, KDE2 представлена только в базовом наборе, с konqueror и абсолютным минимумом приложений. Да и работает через пень-колоду...

Однако все же выбор визуальных сред достаточен. Я, правда, ограничился двумя - WindowMaker'ом из эстетических соображений и FLWM - из функциональных. Работа с XFce, который мне тоже очень нравится, была затруднительна еще и из-за шрифтов. На KDE 1-й версии после знакомства со второй и смотреть не хочется. Ну а прочие среды я или не знаю, или не люблю.

Интерактивных средств для смены оконной среды в OpenBSD, как будто, не предусмотрено (или я их не нашел). Однако процесс этот несложен. Так, можно просто запустить Иксы командой xinit, после чего грузить требуемую среду из командной строки эмулятора терминала. Правда, в этом случае будут проблемы с вводом русских букв (о чем - в соотвествтующей заметке).

А можно отредактировать вручную файл /usr/X11R6/lib/X11/xinit/xinitrc, описывающий конфигурацию при запуске сценария startx. Последние строки в нем по умолчанию имеют вид



xclock -geometry 50x50-1+1 &;

xconsole &;

xterm -geometry 80x24 &;

exec fvwm exec xterm

то есть предписывают загрузку FVWM при старте Иксов. Достаточно, закомментировав или стерев все, имеющее к нему отношение, вписать, например,

exec flwm

или

exec wmaker

- и по умолчанию в графическом режиме будет грузиться FLWM или, соответственно, WindowMaker.

Перейдем теперь к приложениям графического режима. В их числе обнаруживаются: NEdit из текстовых редакторов, Bluefish и Amaya из web-редакторов, GIMP и TGif из редакторов графических, xv для простотра графических файлов. В качестве текстового процессора выступает Lyx. Все эти приложения устанавливаются без всяких затруднений - pkg_add работает безотказно.

Так, параллельно с GIMP'ом и Bluefish установились все потребные библиотеки Gtk. А попутно с Lyx инсталлировались необхождимые для его функционирования комопненты TeX. И все - без единого вопроса, как само собой разумеющееся. Что обусловлено формой хранения пакетов.

Пакеты на диске представлены в бинарном виде в формате *.tgz, подобно FreeBSD. Сходный формат используется также в Linux Slackware и ряде других менее распространенных дистрибутивов. Это в сущности обычный tar-архив, компрессированный посредством gzip. Кроме собственно файлов пакета, в пакете tgz содержатся всякого рода управляющие скрипты для проверки зависимостей, запуска инсталляции, внесения сведений о пакете в базу данных и прочего.

В том числе - и для деинсталляции, которая осуществляется парной к pkg_add программой pkg_delete. Насколько мне удалось проверить, она удаляет пакеты достаточно чисто, не затрагивая, однако, разделяемые компоненты, необходимые для функционирования других программ. Поэтому кое-какие хвосты неизбежны. Ну и конечно служебные файлы и подкаталоги в пользовательских каталогах (которые так любят плодить, например, приложения KDE) придется удалять вручную.

Пока речь шла о том, что в OpenBSD есть. Пришла пора сказать и о том, чего в нем нет. А нет практически ни одного нормального файлового менеджера. Про отсутствие сына любимого народом командира Нортона - Midnight Commander, - я уже упоминал. Но и для X Window удалось обнаружить лишь убогий xfm.



Вызывает удивление отсутствие Netscape в любом виде и любой версии. В итоге при потребности в браузере придется воспользоваться konqueror или kfm. Если же нет желания (возможности) ставить KDE, остается только ограничиться текстовым lynx.

Конечно, отсутствие ряда привычных пакетов не фатально. Теоретически рассуждая, большинство доступных в исходниках программ, написанных для Linux или FreeBSD, должны успешно компилироваться и в OpenBSD. Программы же, распространяемые в бинарном виде (офисные пакеты, например, или тот же Netscape) могут быть запущены, как говорят, под OpenBSD в своих Linux-версиях.

Короче говоря, для своих потребностей я обнаружил все критически важные приложения - NEdit для сочинения текстов, Lyx для их оформления, GIMP для работы с растровой графикой. В качестве браузера я использовал lynx, что имеет свой плюс - ведь это самый строгий цензор соответствия спецификации языка HTML. Не допускающий, в отличие Netscape или, тем более, MS Explorer, ниакого либерализма.

Конечно, TGif - лишь бледное подобие настоящего векторного редактора. Однако и под Linux с ними не густо. Единственный инструмент такого рода, достойный звания векторного редактора - это рисовальный модуль из офисного комплекта StarOffice.

Для правки конфигурационных файлов в текстовом режиме я приспособил joe. В консоли PCVT он работает прекрасно. И не обнаруживает никаких аномалий в поведении клавиш, которые встречаются в некоторых Linux-консолях.

Неожиданно легко решилась и проблема взаимодействия с Linux, как на уровне их сосуществоания и запуска, так и обмена данными.

Подчеркну в заключение, что для всего этого мне не понадобилось ни лезть в Сеть, ни прибегать к системе портов (да и возможности такой не было), ни перекомпилировать ядро. Все требуемое обнаружилось в штатной поставке на инсталляционном CD. Что вдвойне удивительно: мало того, что дистрибутив OpenBSD включает всего один диск, так и тот заполнен чуть больше чем на половину. Поневоле задаешься вопросом: чем умудряются набить 2-4 диска составители Linux-дистрибутивов монстроидального плана?


OpenBSD - заметки конечного пользователя


, UNIX4all

Обновления материалов Алексея Федорчука публикуются на http://unix.ginras.ru/freebsd/



Особенности OpenBSD


Как уже говорилось, OpenBSD ответвилась от NetBSD в 1995 году. По причинам, насколько я смог понять, сугубо личным. Разрабатывается она ограниченным сообществом под главенством (если это слово уместно в данном контексте) основоположника проекта - Тео де Раадта, бывшего до этого одним из зачинателей проекта NetBSD.

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

OpenBSD распространяется открыто (то есть в исходниках) и бесплатно (безвозмездно, то есть даром), на основе лицензии BSD. Большая часть системы может быть свободно использована как в личных, так и в коммерческих целях. При этом софт, защищаемый более жесткими лицензиями, принципиально не может быть включен в состав дистрибутива OpenBSD, что гарантирует свободу ее распространения и впредь.

Впрочем, ничего своеобразного, по сравнению с FreeBSD и OpenBSD, текст предыдущего абзаца не содержит. Своеобразие это начинается дальше. Во-первых, хотя OpenBSD и ориентирована в значительной мере на Intel-совместимые машины, от NetBSD она унаследовала поддержку весьма широкого спектра аппаратных платформ: Alpha, Sparc, HP300, Motorolla 68xxx, PowerPC (плюс еще несколько, о которых я и не слыхивал).

Вторая своеобразная черта - это пресловутая ориентированность на безопасность. Декларируемой целью разработчиков OpenBSD является разработка лучшей в мире с точки зрения информационной безопастности системы. Не мне судить, насколько это соответствует действительности. Однако такое мнение разделяется не только приверженцами OpenBSD, но и сторонниками Linux.

Наконец, третья черта OpenBSD - это ее молодость. И. как следствие, она в минимальной степени обросла грузом традиций. Что имеет следствием компактность системы, Причем - отнюдь не в ущерб функциональности, в чем, надеюсь, можно будет убедиться в ходе дальнейшего изложения.

Конечно, все это - лишь общие рассуждения. Однако они приближают меня к ответу на вопрос из подзаголовка этой заметки -



Первые впечатления, первые настройки


И так, установка системы позади. Настало время знакомства с ней. Каковое и начинается перезагрузкой. В первый раз она у меня проходит не без приключений. Cистема эта вполне способна грузиться самыми различными способами - через такие загрузчики, как lilo или, скажем, grub. А также - и просто со второго жесткого диска, если в BIOS Setup есть соответствующая опция. Что и имело место быть в моем случае.

Загрузка происходит точно так же, как и перед исталляцией. Мелькают сообщения об обнаружении всяческого железа, дисках и прочем. И, наконец, появляется серия не очень понятных сообщений и предложение выбрать тип терминала, по умолчанию - pcvt (напомню, речь идет о версии 2.8; начинаяс 2.9, в качестве системной консоли используется wscons); поскольку не знаю, есть ли у меня на самом деле выбор (да и потому, что это - стандартная для OpenBSD система управления консолью), соглашаюсь. За что в награду получаю приглашение в виде решетки - авторизоваться. Что и проделываю - для первого раза назвавшись root'ом.

Я уже говорил, что инсталляция системы происходила фантастически быстро. И теперь становится понятно, почему: практически никаких привычных для Linux-пользователя приложений в базовом комплекте нет. После авторизации я оказываюсь один на один с системой, в окружении командной среды csh (которую практически не знаю), вооруженный лишь редактором vi (к коему так и не смог привыкнуть). Ни тебе Midnight Commander, ни человечьего редактора...

Попытке запустить X успех не сопуствует - ввиду отсутствия XF86Config. Разумеется, смешно ожидать каких бы то ни было русских букв. Однако на данном этапе это - из области роскошного. Поскольку самая нынче насущная задача - освоить базовые манипуляции и создать сколько-нибудь приемлемую обстановку для работы.

До знакомства с BSD-системами я как-то не осознавал того факта, что такие привычные действия, как пролистывание экрана или переключение на виртуальные консоли - не неотъемлемое свойство системы как таковой, а зависят от типа терминала. Здесь, в OpenBSD, как уже было сказано, он опять-таки свой - pcvt. И начать следует с изучения его особенностей.


Помнится, во FreeBSD я немало времени потратил на поиски способа пролистывать экраны (оказалось, что это делается при включенном ScrollLock). Здесь, правда, экран прокручивается привычным по Linux способом - с помощью комбинации Shift+PageUp/PageDown. Но зато попытка переключиться на другую виртуальную консоль клавишами Alt+F# ни к какому результату не приводит.

Методом научного тыка, однако, можно определить, что для этой цели служит комбинация Alt+Control+F#, как в X Window. С одной стороны, логично - и в графическом, и в текстовом режиме переключатель консолей одинаков. Но, с другой стороны, использовать такую комбинацию одной рукой (если это не лапа неандертальнца) несколько затруднительно. А ведь вторая рука задействована под мышь (для выделения и вставки текстовых блоков, скажем). Впрочем, переживать по этому поводу пока не приходится: мыши в текстовом режиме также нет.

Зато есть второй способ переключения между консолями, правда, только двумя: клавишами Shift+F1/F2. При этом задействуются 5-я и 6-я виртуальные консоли (dev/ttyC4 и dev/ttyC4, соответственно), Почему именно этими - становится ясно после установки X Window: под нее по умолчанию зарезервировано dev/ttyC4, и комбинацией Shift+F1 легко перейти в графическую консоль. Впрочем, из нее на консоли текстовые можно перейти только обычным образом - с помощью Alt+Control+F#, в ответ на нажатие Shift+F2 в X Window не происходит ничего.

Решив проблему виртуальных консолей, можно двигаться дальше: теперь есть возможность на одной консоли читать документацию, на другой просматривать файловую систему, на третьей - править конфигурационные файлы. Однако прежде, возможно, потребуется настроить привычную среду обитания.

Я не имею ничего против среды csh. Готов даже признать, что синтаксис ее более компактен и логичен, чем в bash (и прочих Shell-совместимых). Однако последняя - удобней в использовании - одно автодополнение команд и путей клвишей табуляции дорогого стоит. Да и привычней она, в конце концов. Кроме того, желательно иметь какой-никакой редактор, помимо vi.



Благо, установка пакетов в OpenBSD осуществляется очень просто. Даже если не прибегать к знаменитой системе портов (а я, за отсутствием сети, такой возможности не имел), а ограничиться инсталляционным CD.

Который вставляется в соответствующий привод и монтируется обычной командой

mount /dev/cd0a /mnt/cdrom/

На на диске находится каталог /mnt/cdrom/2.8/packages/i386. В нем сплошным списком, без разделения на подкаталоги, свалены многие множества приложений. Устанавливаются они той же командой pkg_add, что и во FreeBSD. Проделываю эту процедуру для bash и редактора joe. Как и во FreeBSD, команда pkg_add по умолчанию устанавливает пакеты в каталог /usr/local/.

Затем в дополнение к имеющимся в файле /etc/shells строкам

/bin/sh

/bin/csh

/bin/ksh

вписывается

/usr/local/bin/bash

Чтобы сменить командную среду, можно воспользоваться командой, например, chpass. Она вызывает системный редактор (по умолчанию - все тот же vi) и позволяет в нем напрямую редактировать учетные заиписи пользователей. Заменяем для root'а

/bin/csh

на

/usr/local/bin/bash

Теперь остается только соотвествующим образом поправить файл .profile в корневом каталоге или в каталоге /root/.profile (первый являет собой символическую ссылку на второй. У меня он вызлядит примерно так:

EDITOR=joe

export EDITOR

PS1='w->>'

alias 'ls=ls -aF'

export LESSCHARSET=latin1

Как нетрудно догадаться, строка EDITOR определяет системный редактор, строка PS1 - вид приглашения командной строки

~/articles/sterra->>

Строка alias указывает, что команда ls по умолчанию должна вызываться с параметрами -aF (первый отвечает за вывод всех файлов, в том числе и скрытых, второй - за отметку каталогов знаком , исполнимых - символом *, и так далее). А последняя строка необходима для русификации программы less, о чем будет сказано в соответствующем разделе.

Если после этого завершить сеанс (командами logout или exit) и авторизоваться заново, то оказываешься в привычном окружении. Разумеется, все эти действия были доступны от лица суперпользователя. Теперь же самое время создать пользователя обычного. Помимо того, что практически работать в качестве root'а - занятие не очень здоровое с точки зрения безопасности, в OpenBSD это еще и не удобно. На консоль суперпользователя выводится большое количество сообщений. Они представляют интерес для администратора системы, но в практической работе только мешают. Конечно, от них можно избавиться (например, перенаправив сообщения в файл). Но лучше все-таки не входить в систему как root без большой на то необходимости. А прибегать для системных манипуляций к временному получению полномочий администратора (с помощью команды su).



Создание обычного пользователя выполняется командой adduser (хотя есть и другие способы). Запущенная от имени root'а первый раз, она для начала запросит подтверждения некоторых общих пользовательских установок по умолчанию, таких, как местоположение домашних каталогов (/home) или командной среды (на выбор - любой из перечисленных в файле /etc/shells).

Ответы на эти вопросы будут сохранены в файле /etc/adduser.conf, и при следующем запуске команды повторяться они не будут. Хотя, естественно, общие пользовательские параметры могут быть изменены прямым редактирование указанного файла.

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

Вслед за этим определяется командная среда для пользователя, его цифровой индетификатор (UID - user identification descriptor) и имя группы, включающей этого пользователя (по умолчанию - совпадает с пользовательским именем).

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

Дело в том, что в OpenBSD (как, впрочем, и во FreeBSD) далеко не каждый пользователь может получить права администратора (каковым наша же скромная персона и является в случае обычной настольной машины) с помощью команды su. Для этого пользователь должен быть явным образом включен в группу wheel, имеющую идентификатор (GID - group identification descriptor) 0. Так что в ответ на указанный вопрос следует вписать wheel.

После этого предлагается ввести пароль (о правилах выбора его распространяться не буду) и повторить его. И в завершение выводится список параметров пользователя в виде:

Name: exp

Password: ****

Fullname: al

Uid: 1002

Gid: 1002 (exp)



Groups: exp wheel

HOME: /home/exp

Shell: /usr/local/bin/bash

Если с ними согласиться, новый пользователь будет создан. И будет спрошено, следует ли создать еще одного пользователя. Что может иметь смысл, даже если машина находится в вашем безраздельном владении. Так, я обычно для себя, любимого, создаю двух пользователей. От имени одного занимаюсь практической работой, а второй предназначен для всякого рода нездоровых экспериментов.

Теперь можно авторизоваться в качестве обычного пользователя и настроить для него рабочую среду. Что делается редактированием файла ~/.profile, если для него была выбрана среда bash, или файла ~/.cshrc при использовании среды csh.

Однако на этом настройка среды обитания не заканчивается. И следующее действие опять потребует административных полномочий. Получив их (теперь уже нормально, командой su), отправляемся в каталог /etc и отыскиваем там файл конфигурации начальной загрузки rc.conf. Отвечающий, в частности, за запуск стартовых сервисов и демонов.

Рассмотрение его показывает, что по умолчанию в нем запрещено пркатически все, что может быть - одно из следствий ориентации OpenBSD на защищенность. Конечно, большинство перечисленных здесь демонов управляет всякого рода сетевым причинадалам. И меня пока не волнует. Кроме одного, поскольку без мыши жить скучно. Для обретения же ее в rc.conf следует найти строку

moused_flags="NO"

и заменить значение по умолчанию на рекомендуемое для мышей с разъемом PS/2

moused_flags="-p /dev/psm0"

или на

moused_flags="-p /dev/cua00"

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



Полноценное манипулирование мышью возможно только в графическом режиме. Для чего необходимо настроить систему X Window - как я уже говорил, на стадии инсталляции никаких настроек такого рода не было, хотя в базовом варианте X'ы и установились.

Для конфигурирования X Window (в версии 3.3.6) предусомтрено единственное средство - XF86Setup (если, конечно, нет большого желания созлавать файл /etc/X11/XF86Config вручную в текстовом редакторе). Каковой и запускаем, воспользовавшись полномочиями root'а.

Если вдруг XF86Setup откажется запускаться (а такая возможность по причинам, оставшимся для меня неясными, не исключена), следует обратиться к файлу /etc/ttys, описывающему конфигурацию виртуальных консолей. Нормальный вид его начальной части - нечто вроде следующего:

#

# $OpenBSD: ttys,v 1.13 1998/06/28 00:48:37 art Exp $

#

# name getty type status comments

#

console "/usr/libexec/getty Pc" vt220 off secure

ttyC0 "/usr/libexec/getty Pc" vt220 on secure

ttyC1 "/usr/libexec/getty Pc" vt220 on secure

ttyC2 "/usr/libexec/getty Pc" vt220 on secure

ttyC3 "/usr/libexec/getty Pc" vt220 on secure

ttyC4 "/usr/libexec/getty Pc" vt220 off secure

ttyC5 "/usr/libexec/getty Pc" vt220 on secure

ttyC6 "/usr/libexec/getty Pc" vt220 off secure

ttyC7 "/usr/libexec/getty Pc" vt220 off secure

Это показывает, что по умолчанию открыто восемь виратуальных консолей, то есть на каждой из них запущен процесс инициализации getty. В то же время активизировано только пять: консоли 5-я, 7-я и 8-я не задействованы для текстового режима и доступны для запуска режима графического, в котором функционирует программа XF86Setup.

Если же та отказалась запуститься - скорее всего, в файле /etc/ttys активизированы все открытые консоли. Что легко исправить, заменив on на off минимум в одной из строк (по умолчанию для графического режима задействована 5-я консоль, переключение на которую осуществляется клавишной комбинацией Shift+F1). Буде же возникнет желание запускать два или более сеансов X Window (иногда это полезно), следует озаботиться достаточным количеством свободных виртуальных консолей. Впрочем, конфигурация по умолчанию (как в приведенном выше фрагменте) мне представляется разумной.



Теперь, наконец, можно и заняться конфигурированием X Window. Проходит она без приключений. В моем случае она свелась к установке трехкнопочной мыши (устройство /dev/psm0, стандартное для Linux устройсвто /dev/mouse здесь не проходит), русскую 105-клавишную клавиатуру, видеокарту Riva TNT2 (у меня она, правда, в модификации M64, отсутствующей в списке, но по опыту - почти всегда работает, будучи названной TNT2 просто). Мой AcerView 76i я в таких случаях обзываю SVGA 1280x1024x60 Hz - в этом случае он при 1152x864 тянет 72 герца. Каковое разрешение при 32-битном цвете и устанавливаю - карты на всех чипах NVIDIA, насколько я знаю, 24-битного цвета не поддерживают, а при 16-битном мои любимые background'ы смотрятся хуже.

Теперь командой xinit можно запустить X Window просто (с единственным терминальным окном). А можно командой startx запустить и FVWM - единственный из оконных менеджеров, установленных по умолчанию. И на этом временно успокоиться. Перейдя к следующему вопросу - изучению доступных приложений. Ведь система для конечного пользователя ради приложений и устанавливается, не так ли?


Почему именно OpenBSD


была выбрана в качестве предмета рассмотрения.

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

Актуализированное примечание: повторяю, это было написано более вдуз лет назад. С тех пор скромность моя (никогда не входивашя в число моих многочисленных недостатков) существенно поубавилась.

С другой стороны, по NetBSD никакой русскоязычной информации я не обнаружил вообще. Что, конечно, будило здоровое (или нездоровое, в зависимости от точки зрения) любопытство. Однако и внушало опасения, что в нештатной ситуации помощи получить будет не откуда - мне неизвестно ни об одном пользователе этой системы на Руси.

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

Наличие русскоязычных источников информации я полагаю одним из необходимых условий для системы, претендующей на звание настольной. По крайней мере, для себя лично - "по ихнему я плохо читаю". Не то чтобы не понимаю вообще, немало и читал в свое время, и даже писал "по аглицки". Однако наедине с англоязычными man'ами и faq'ами чувствую себя несколько неуютно. Как, смею предположить, и многие другие пользователи, вне зависимости от степени владения языком как таковым. Почему я и позволил себе в приложении к этой заметке привести известную мне библиографию вопроса, как печатную, так и электронную.

Далее, в пользу OpenBSD склоняло и немалое число весьма благоприятных отзывов в печати. Причем - не от ее апологетов, а от пользователей Linux с многолетним стажем. За подробностями - отсылаю к помянутой выше библиографии.


Затем - пресловутая защищенность системы. Правда, сами по себе вопросы безопасности для меня практического значения не имеют: моя машина существует в масштабах одного отдельно взятого сельского дома, где вероятность взлома калитки на многие порядки первышает вероятность взлома компьютерного. Однако вопросы защиты как системы в целом, так и приватности пользовательских данных ныне приобретают интерес отнюдь не академический. И не только для профессиональных сисадминов.

К тому есть два показания: во-первых, т.н. электронная коммерция, каковая в незащищенном компьютерном пространстве просте не может существовать. А во-вторых, развитие домашних сетей с подключением к Интернету.

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

Представляете, какое раздолье открывается для юных пионеров, решивших попробовать свои силы в древнем ремесле хака и крэка? Так что в ближайшее время можно ожидать всплеска компьютерных взломов самого широкого масштаба. Поскольку многие, потренировавшись в дворовых играх, наверняка возжаждают олимпийских лавров.

Наконец, окончательный выбор OpenBSD был сделан при чтении подборок FAQ про FreeBSD. Одна из которых начиналась обсуждением вопроса, почему FreeBSD лучше Linux. Во-первых, как уже говорилось, саму постановку вопроса полагаю в корне неверной. Во-вторых, не могу согласиться с аргументацией. В числе коей - утверждение, что демон (daemon - символ FreeBSD) круче пингвина (на мой взгляд, крутыми бывают яйца, а пингвин - существо очень симпатичное). И в третьих, просто не приемлю никакой исключительности. И позиция разработчиков OpenBSD, отказывающихся обсуждать вопрос о превосходстве какой-либо из систем в принципе - мне ближе.

Однако непосредственным поводом для общения с OpenBSD был выход под занавес ушедшего тысячелетия ее новой версии - 2.8. Практически сразу ставшей, стараниями , доступной и у нас - с доставкой на дом и по вполне разумной цене (чуть больше ста рублей). Обзаведясь ею таким образом, я, "помолясь, как говорится, Аллаху", приступил к установке. О чем - .

Актуализированное примечание: кажется, именно с OpenBSD началось мое знакомство с Linux-Online и Linuxdhop'ом, превратившееся со временем с (надеюсь) плодотворное сотрудничество).


Почему OpenBSD?


Актуализированное примечание: цикл этот был написан довольно давно - около 2 лет назад и опубликован на сайте (где, впрочем, из-за хронического редизайна не всегда доступен). Однако с точки зрения конечного пользователя (я не говорю о внутреннем устройстве) OpenBSD за это время не очень изменилась. И потому полагаю, что актуальность данных заметок не вполне утрачена. Тем более, что более полных русскоязычных материалов по теме к настоящему времени так и не появилось. Ныне эти заметки подверглись лишь незначительной редактуре (в основном литературной правке). В некоторых случаях я чуть актуализировал материал, что отмечено явным образом как примечания (подобно этому абзацу) или просто вот так/

Сим начинается цикл заметок, посвященных OpenBSD - одному из ярких, но относительно малоизвестных в широких кругах представителю открытых ОС линии BSD. Это - попытка исследования проблемы: подходит ли OpenBSD как настольная система для конечного пользователя. И если да - как применить ее в этом качестве.



Пост-инсталляционное конфигурирование


Впрочем, этап этот - еще более скомкан, чем установочный. И, в сущности, сводится к выбору часового пояса. В наших условиях это (если, конечно, не остановиться на GMT), происходит в последовательности: Europe/, потом Moscow, в обоих случаях команда list дает список доступных вариантов.

А затем - предложение ввести команду halt и, по останову системы, any key для перезагрузки. Шустро извлекаем инсталляционный CD (об этом нас предупредить забыли) - и ждем, что же выйдет в итоге. Что вышло у меня - расскажу в следующий раз.

А пока вкратце подведу предварительные итоги. Можно заметить из всего разговора, что система инсталляции устроена, с одной стороны, просто и логично. И к тому же предполагает простой возврат к предыдущей стадии в случае ошибки - с помощью комбинации Control+C и перезапуска программы install.

Единственный по настоящему сложный момент - разметка диска. Не потому, что она осуществляется каким-либо особо запутанным образом. Отнюдь. Просто достаточно высока цена ошибки (и не очень мала вероятность ее совершить), если система устанавливается на диск с уже существующими разделами, содержащими иную ОС, программы или, самое страшное, данные.

И потому я по первому разу посоветовал бы поэкспериментировать с установкой OpenBSD на отдельный физический диск. В этом случае худшее, что может грозить при ошибке - принудительный выход из программы инсталляции и ее повторный запуск. Что, как я уже говорил, занимает весьма мало времени. А для общего образования совсем не вредно...

Установка OpenBSD на отдельный физический диск имеет еще и то преимущество, что позволяет наиболее простым (правда, на мой взгляд, кому-то такой путь может и не понравиться) и безопасным способом организовать совместное использование ее с Linux, например, или Windows. Но об этом - также как-нибудь в другой раз.

Еще один момент, на который можно было обратить внимание - в процессе установки не предусмотрено каких бы то ни было настроек системы X Window, даже если ответить положительно на вопрос о ее грядущем использовании. Это действительно так - работу в графическом режиме придется настраивать в дальнейшем, вручную или с помощью соответствующих утилит. Но и это будет темой специального разговора.



Разметка диска


Первое, что происходит после выбора инсталляции - запуск собственного варианта fdisk. Который существенно отличается от Linux'ового (не говоря уже о FDISK из MS DOS). Обнаруживая фамильное сходство с fdisk из FreeBSD, что и не удивительно из-за близости их файловых систем (даже именуемых одинаково - ffs, Fast File System). Хотя и здесь нет полного терминологического тождества. Потому остановлюсь на этой процедуре подробнее. В меру своего, пока очень ограниченного, понимания, разумеется.

В отличие от Linux, в OpenBSD (как, впрочем, и во Free), разбиение диска осуществляется в два этапа и двумя разными программами. Сначала посредством собственно fdisk создаются физические разделы, partitions (slices в терминологии FreeBSD, они же primary partitions в понимании DOS и Linux). Коих, по известным архитектурным ограничениям PC, не может быть более четырех на одном винчестере.

Затем физические разделы, с помощью Disk Label Editor, делятся на разделы логические, именуемые в русском переводе OpenBSD подразделами, хотя в оригинале и используется тот же термин partitions, что идентично FreeBSD. Это способствует окончательному запудриванию мозгов, хотя момент чрезвычайно серьезный и ответственный. Поскольку подразделы OpenBSD (буду использовать этот термина, как наиболее соответствующий ситу явления) объединяют в себе как понятие расширенного раздела DOS (extended partition), так и логического тома внутри него.

Актуализированное примечание: я не стал поправлять предыдущий абзац (и пару последующих) по существу - он отражает степень моего тогдашнего представления о дисковых разделах в BSD-разметке. Как-нибудь в ближайшее время соберусь и напишу статью на эту тему...

Действительно, и в DOS, и в Linux Extended Partition - не более чем контейнер для вложенных логических дисков (томов). В Open же BSD, как и во FreeBSD, создается впечатление, что каждый из физических разделов (назови их хоть partition, хоть slice), просто делится на логические части. Однако одна их этих частей присутствует перманентно и удалена быть не может (хотя и помечена как неиспользуемая, unused). Судя по всему, именно она-то и выполняет роль контейнера (=extended partition) для всех остальных.


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

Возвращаемся, однако, к нашим партициям. При наличии в системе более одного винчестера, OpenBSD'шный fdisk для начала предлагает определиться, который из них будет корневым. Приводя их список: в OpenBSD физические диски маркируются как wd0 (Master на первом IDE-канале), wd1 (Slave на нем же) и так далее. Излишне говорить, что я рассматриваю случай ATA-винчестеров - со SCSI все будет несколько иначе, но, за отсутствием личного опыта, вопрос этот замнем.

Затем вопрошает, хотим ли мы отвести под систему полный диск (entire disk) или нет, причем второй ответ отмечен по умолчанию. Если, однако, ответить положительно, стадия fdisk просто проскакивается. И это может показаться самым простым решением, если не стоит задача сохранить какие-либо из имеющихся разделов или создать не-ffs разделы. Хотя итогом может стать некоторые (правда, преодолимые) сложности при сосуществовании OpenBSD с Linux (вероятно, и с Windows - тоже, но за искоренением последнего я этот вопрос не изучал).

Я в конце концов так и остановился на положительном ответе на вопрос об entire disk. Но прежде вдоволь поэкспериментировал (с переменным успехом) и при отрицательном выборе.

В этом случае для начала в виде таблицы выводится информация о имеющихся разделах. Она включает их номера (начиная с 0), идентификатор id (то, что в Linux называется типом файловой системы - вернее, идентификатором типа) в шестнадцатиричном исчислении, начало и конец каждого раздела в цилиндрах, головках и секторах, размер в секторах, принадлежность операционной системе (скажем, BSD, Linux, DOS).

Следует отметить три обстоятельства. Во-первых, id совпадает с шестнадцатиричными номерами типов файловых систем, поддерживаемых Linux (в чем позднее можно будет убедиться воочию). Во-вторых, он отличен от нумерации таковых, принятой во FreeBSD (там используется десятичная нотация). Ну а в третьих - тип файловой системы, то есть id, - отнюдь не то же самое, что принадлежность системе операционной. Так, разделы и Free, и OpenBSD обозначаются как BSD-разделы. Однако id раздела OpenBSD - A6, тогда как раздел FreeBSD маркируется как A5 (то есть также, как в Linux).



Ниже таблицы разделов содержится указание, что посредством ввода help можно ознакомиться с доступными командами. Чем пренебрегать ни в коем случае не следует - тем более что вместо help можно (как и для всех остальных команд) ограничиться буковкой h. Потому как команды сильно отличаются от таковых в fdisk из Linux. Главное из них: если в Linux команда quit (q) означает выход из программы без сохранения изменений, то здесь, напротив, quit - это запись изменений с переходом к следующей стадии; для выхода же без записи предназначены команды exit (переход к следующей стадии) и abort (обрыв инсталляции с выпадением в командную среду).

Так что - внимание, внимание и еще раз внимание. Выход из fdisk через quit производит впечатление, что ничего не произошло. И даже ранее существовавшие разделы как бы не изменились (в чем легко убедиться, перезагрузившись в Linux и запустив евойный fdisk). Однако получить доступ к ним не удастся. По крайней мере, обычными подручными методами.

Так вот, на команду help нам выдается ряд вариантов. Во-первых, manual - вызов подробного руководства по fdisk (то есть соответствующего man'а). Во-вторых, reinit - реинициализация диска, чем-то напомнившая мне команду DOS FDISK /mbr; реально ее результат в том, что все разделы обнуляются, кроме одного, который распространяется на весь диск и приписывается системе BSD; впрочем, это еще следует подтвердить записью (write).

Далее следует команда disk - это переопределение геометрии диска, чего при LBA-режиме (а иного у современных дисков не бывает) лучше, думается, не делать.

Вслед за ней - главная команда, edit - изменение размера и характеристик разделов. В случае ее запуска сначала предлагается ввести его номер, затем указать id (по умолчанию стоит существующий) или, введя ноль, пометить как неиспользуемый (unused - понятия удаления раздела как такового тут нет).

При этом на ввод ? (вопросительного знака) выдается список доступных id; для тех позиций, которые я помню на память, он полностью совпадает со списком, выдаваемым Linux'овым fdisk на команду l: 04 - FAT16 меньше 32M, 5 - Extended Partition DOS, 0b - FAT32, 82 - Linux Swap, 83 - Linux native, a5 - FreeBSD, a6 - OpenBSD.



Определив тип файловой системы, можно указать его размер, задав начальный (offset) и конечный (size) сектора; можно, ответив положительно на предварительный вопрос, оперировать и в терминах CHS (цилиндр/головка/сектор). Однако указать размер в человеческих единицах (Мбайт, Гбайт) на этой стадии не удается.

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

Завершить которые можно записью (write), переходом к следующему этапу без записи своих манипуляций (exit), таковым же, но с предварительной записью (quit), или прекращение инсталляции без всяких изменений (abort). Последнее действие доступно и с помощью комбинации Control+C.

Если же мы посредством quit перейдем к следующему этапу (или просто отведем под OpenBSD весь диск), то окажемся в Disk Label Editor, каковой для начала предложит нам свою помощь через ввод вопросительного знака. Из нее мы тут же узнаем о возможности получить список имеющихся подразделов файловой системы (то есть логических разделов) командой print.

В самом простом случае, если был создан всего один физический раздел (или просто под OpenBSD отведен весь диск, посредством выбора entire disk на предыдущей стадии), подразделов у него окажется два: a, занимающий все доступное пространство, и некий мифический подраздел c (помеченный как неиспользуемый, unused). Который, как уже говорилось, уничтожен быть не может: он выполняет функцию extended partition в DOS (и Linux).

В списке же доступных действий далее следуют: a - добавление подраздела, c - изменение размера существующего, b - переопределение отведенного для OpenBSD дискового пространства, r - пересчет свободного пространства, n - определение точки монтирования подраздела, u - отмена последней операции, w - запись произведенных изменений, q - выход с предварительной записью, x - выход без записи изменений.

Очевидно, что не все это доступно сразу. Так, при выборе entire disk невозможно добавить подраздел, потому что весь диск занят единственным физическим разделом, включающим один же существующий подраздел - a. Наряду с которым присутствует и подраздел с, однако он не может быть использован - как я уже говорил, это своего рода аналог Extended Partition из DOS или Linux.



Однако для существующего раздела a можно переопределить размер его командой с (от change), а можно через команду b (от boundary) просто обнулить его, пометив как неиспользуемый.

Если после этого избрать добавление подраздела, то таковой под литерой a будет создан заново, ему будет приписана принадлежность к OpenBSD, а размер можно задать по своему усмотрению, в том числе в мегабайтах (###m, ###M) или гигабайтах (###g,###G) - здесь это будет воспринято нормально. Точку монтирования подраздела логично определить как /.

Второй добавленный подраздел автоматически маркируется буквой b и по умолчанию обретает статус раздела для своппинга (Swap). Рекомендуемый его размер - вдвое больше оперативной памяти. Как и FreeBSD, OpenBSD использует раздел подкачки иначе, чем Linux, скидывая туда содержимое ОЗУ не при его переполнении, а при первой же возможности. И потому большой объем swap-раздела никак не помешает.

Если есть место и желание - рекомендуется дополнительно создать подразделы /usr, /var, /usr/X11R6 (автоматом им присваиваются литеры d, e и т.д., литера c пропускается). Вообще, в руководстве для платформы Intel предложена следующая схема:

/ 35 Мбайт

/usr 229 Мбайт

/var 24 Мбайт

/usr/X11R6 72 Мбайт

Мне такая схема видится весьма спорной. Во-первых, очевидно, что отдельный подраздел /var на настольной машине не нужен (ныне я полагаю, что это не так - по причинам, в обсуждение которых здесь вдаваться неуместно). Во-вторых, /usr и /usr/X11R6 - все равно части единой файловой системы (что упомянуто и в руководстве). И к тому же логичнее тогда создать подраздел /usr/local, куда по умолчанию попадают программы, установленные из портов, дополнительные пакеты и продукты компиляции непортированных исходников. В третьих, на мой взгляд, создание подраздела /home - если и не обязательно, то крайне желательно: все же некоторая дополнительная гарантия целостности пользовательских данных.

Цифры же - сугубо условны. Правда, сказано, что их лучше бы утроить. Я попробовал последовать этому совету, создав (на диске 15 Гбайт) подраздел / в 100 Мбайт, /usr - в 1 Гбайт, swap 512 Мбайт (при RAM 256 Мбайт), отведя остальное пространство под /usr/local и /home. И в результате при установке пакетов получил сообщение о нехватке дискового пространства, естественным образом оборвавшее инсталляцию...



После чего, не пудря мозги. создал 3-гигабайтный корневой подраздел (/, заведомо с избытком, даже самый пухлый дистрибутив Linux на столько не потянет), 512-мегабайтный Swap, оставив остальное под /home. И все прошло нормально. Впрочем, были опробованы и иные варианты... Так что единого рецепта предложить не рискну.

Вероятно, отдельные подразделы (/, /usr, /home), если их не больше четырех, можно создать и на разных физических разделах, как это практикуется в Linux. Просто я, честно говоря, замучился считать сектора: простого калькулятора у меня нет, компьютерный, естественно, был недоступен, вычислять в столбик - скучно, а способность у устному счету я утратил, когда перестал играть в преферанс. Но с точки зрения сохранности данных это, исходя из общих соображений, было бы надежнее.

Завершив дискодробительные действия, следует записать их результаты (w) или выйти из Disk Label Editor с записью (q). У нас запросят подтверждения на запись (с сообщением о создании устройств - в моем случае wd0a, wd0b, wd0e) и на определение точек монтирования созданных подразделов в файловой системе в форме [/point, RET, none, or done].

Набрав RET, точки монтирования можно изменить. Если это не нужно, следует набрать done. Здесь, если винчестеров больше одного, последует предложение подвергнуть тому же мучительству другой диск. А после естественного отказа спросят: действительно ли мы готовы к процессу?

Хотя на самом деле спрашивать больше не о чем: все, что могло случится, уже случилось. Хотя полной ясности, когда и куда записываются действия разметки диска, у меня не осталось. Впечатление такое, что в значительной мере они остаются там же, гле и русские слова у японца - в ... оперативной памяти, так сказать. Однако там-то они безусловно присутствуют: если теперь выйти из программы инсталляции с помощью Control+C, при следующем ее запуске (даже после перезагрузки) следы всех ранее выполненных действий можно видеть воочию. Хотя, повторяю, с точки зрения некоего стороннего fdisk ранее существовавшие разделы сохранились в неприкосновенности...

Короче говоря, и на этом этапе следует покурить и подумать. Если же подтвердить готовность к дальнейшему процессу, происходит переход к следующему этапу, каковой можно озаглавить как


Установка


Предыдущая заметка завершилась тем, что я приобрел диск с дистрибутивом OpenBSD. Диск этот, довольно непритязательно оформленный, содержал, тем не менее, полный (за некоторыми исключениями) дистрибутив системы и краткий перечень отличий текущей версии от предыдущей. А главное, вполне позволял установить с него систему.

Конечно, для установки OpenBSD можно обойтись и без CD. Во-первых, дистрибутив доступен на ftp-сервере разработчиков (имеющем ряд зеркал), откуда его можно скачать даром (если не считать, конечно, платы за трафик). Правда, iso-образы в готовом виде отсутствуют. Так что для установки следовало бы скачать тарбаллы и образ загрузочной дискеты.

Более того, и вся система вообще может быть установлена по ftp-протоколу. Все, что для этого нужно - загрузочная дискета и постоянное подключение к Сети. Дальнейшие заботы берет на себя т.н. система портов, впервые появившаяся во FreeBSD. Ее посредством устанавливается соединение с сервером, скачивание исходников, их компиляция и установка компонентов в соответствующие места. Кроме того, система портов позволяет постоянно поддерживать OpenBSD в актуальном состоянии.

Тема эта очень интересная, и я надеюсь вернуться к ней со временем. Однако на данный момент для меня оба способа обойтись без CD были неприемлемы. Да и вообще они могут быть не лучшим выбором для конечного пользователя. Особенно если трафик придется оплачивать из собственного кармана. Так что уж проще раскошелиться на дистрибутивный диск...

Диск OpenBSD 2.8, как стало доброй традицией в последнее время, является загрузочным. То есть необходимости в инсталляционных дискетах нет (хотя при желании и необходимости - образы их на CD имеются). Вставляем его в соответствующий привод - и идем на перезагрузку, не забыв в процессе ее выставить соответствующую опцию в BIOS Setup.

Сообщения о ходе загрузки идут не в традиционных черно-белых тонах, а белым по синему. Среди них удается разобрать, что система определяет всякие устройства - в моем случае это были плата видеозахвата на чипе BT878, звуковая карта Ensoniq1371, CD-R/RW с IDE-интерфейсом, для которого предлагается эмуляция SCSI. Не говоря уже о таких тривиальных вещах, как винчестеры.


Правда, по завершении загрузки фон опять становится черным. И на нем высвечиваются варианты выбора: инсталляция (Install), обновление (Upgrade), выход в командную среду (Shell). Последняя опция заставляет предполагать (вполне обоснованно, как станет ясным из дальнейшего), что инсталляционный CD ROM может выполнять и функции спасательного в аварийных ситуациях.

Обновлять мне нечего, спасаться - не от чего, выбираю инсталляцию. Прочитав в комментарии, что я могу в любой момент прервать ее нажатием комбинации клавиш Control+C. И если после этого решу инсталляцию продолжить, большая часть моих ответов на вопросы системы ею припомнится. Что, забегая вперед, оказалось недалеко от истины.

Инсталляция проходит в текстовом режиме, при минимальной автоматизации процесса. каковой, в сущности, сводится к

разметке диска,

выбору пакетов, их распаковке и записи на диск,

минимальным пост-инсталляционным настройкам.

Именно в такой последовательности и рассмотрим этот процесс.


Установка программ


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

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

О системе портов у меня, за недоступностью Сети, впечателний нет. Поэтому остановлюсь на ней вкратце, в меру своего понимания (и на основе данных, приведенных в письме Павла Кайгородова, за которое выражаю ему свою признательность). Это - система сборки программ из исходных текстов, находящихся на ftp-серверах где угодно в Сети. Адреса этих серверов прописываются в т.н. коллекции портов.

Сама по себе коллекция портов - это архив ports.tar.gz, находящийся на дистрибутивном CD в каталоге ~/2.8 (для текущей версии). Архив этот должен быть переписан на диск (иначе он отказывается распаковываться) и развернут соответствующей командой, например

tar -xzf ports,tar,gz

После этого в каталоге /usr обнаруживается подкаталог ports, включающий, в свою очередь, многочисленные вложенные подкаталоги.

Дальнейшие действия, при наличии постоянного подключения к Сети, очень просты: выбирается нужная категория (например, editors), в ней - подкаталог, соответствующий требуемой программе, скажем, nedit, и после перехода в него дается команда

make install

Все дальнейшее - заботы системы. Она самостоятельно попробует скачать их, причем на каждый port имеется солидный список мест, где можно взять исходники. В частности, они обязательно есть на . Попутно будут скачаны нужные патчи и все остальное необходимое для сборки.

Затем обязательно будут проверены контрольные суммы для скачаных файлов, что позволит избежать всякого рода ошибок при передаче. Затем автоматически выполняется распаковка архивов, на них накладываются все нужные патчи, вызываются все требуемые скрипты конфигурации, команда make для сборки и все прочее, что потребуется. Далее - собственно инсталяция, приложение будет зарегистрировано в системе (в каталоге /var/db) как обычный пакет.


Если собираемый пакет зависит от других, отсутствующих в системе (например, библиотек), они также будут установлены автоматически (через тот же ports). По окончании процесса, можно избавиться от ненужных файлов (типа объектных модулей) командой make clean.

А в дальнейшем открывается неплохая возможность держать все существующие в системе приложения (а также прочие компоненты ее, например, ядро) всегда в актуальном состоянии.

Приведенное описание способно вызвать приступ черной зависти у пользователя Linux. Однако реализовать такую систему при отутствии постоянного подключения к Сети несколько затруднительно.

Конечно, исходники можно заблаговременно скачать (по указанным в ports адресам) и разместить в каталоге /usr/ports/distfiles, Однако, согласитесь, что это уже не совсем то: при неудовлетворенных зависимостях (а это может обнаружиться только в ходе установки) потребуется скачивать и дополнительные пакеты. Если же локализация машины и выхода в Сеть разнесены в пространстве (как это имеет место быть у меня), идея вообще почти теряет смысл.

Однако отчаиваться не стоит - есть выход в виде коллекции пакетов. Понятие пакета совпадает практически с принятым в Linux, особенно в таких дистрибутивах, как Slackware. Это - откомпилированные бинарные программы, собранные в виде компрессированных архивов tgz. Содержащих, кроме собственно файлов программ, также сценарии для их правильной (в соответствии со структурой каталогов OpenBSD) установки.

На инсталляционном диске пакеты расположены в каталоге /2.8/packages/i386. Правда, свалены они здесь в одну кучу, без всякой систематизации. И никак не аннотированы. Однако некую информацию о пакетах получить можно.

Для этого предназначена утилита pkg_info. Запушенная из этого каталога с аргументом в виде имени пакета (обязательно полного), она выдает краткую его (пакета) характеристику. А также, иногда, некоторые сведения о зависимости данного пакета от других. Правда, в очень общей форме, вроде того, что редактор NEdit требует библиотеки Motif.



Тем не менее, работает система пакетов весьма эффективно. Выбрав требуемый пакет, его можно установить командой

pkg_add имя_пакета

(опять же полное). При этом в случае, если устанавливаемый пакет требует наличия каких-либо других пакетов (библиотек, например), они будут инсталлированы автоматически.

По умолчанию пакеты из коллекции устанавливаются в подкаталоги каталога /usr/local (/usr/local/bin, usr/local/lib и т.д.). Что, соответственно, требует прав администратора. Однако пути инсталляции можно и изменить. Для этого команда pkg_add должна быть запущена с опцией -p (prefix - путь для инсталляции пакета). Правда, работосопосбность программы после этого, насколько я понял, не гарантируется...

Установленный с помощью pkg_add пакет фиксируется в базе данных (в каталоге /var/db/pkg. И информация о нем может быть получена той же утилитой pkg_info по полному имени в качестве аргумента, то есть чем-то вроде

pkg_info nedit-5.1.1

Если полное имя вспомнить затруднительно, его можно выудить из того же /var/db/pkg.

При необходимости пакет может быть удален посредством pkg_delete, для чего также следует указать полное имя. Делается это автоматически и довольно чисто, не затрагивая, однако, разделяемые компоненты, необходимые для функционирования других программ. Поэтому кое-какие хвосты неизбежны. Правда, от них можно избавиться запустив pkg_delete с соответствующими параметрами (каковые можно посмотреть в man pkg_delete).

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

Если и коллекции пакетов окажется недостаточно для полного счастья - всегда есть возможность прибегнуть к сборке необходимых приложений из исходников. Вероятно, в некоторых случаях это потребует каких-то правок текстов или Makefile. Однако у меня все обошлось малой кровью - те несколько приложений, которые я полагал для себя необходимыми (XNC, например, или fookb) скомпилировались без всяких проблем.

И последняя возможность пополнить свой арсенал - запуск бинарных программ для Linux. Что в принципе вполне возможно, так как по умолчанию OpenBSD устанавливается с поддержкой ее совместимости с Linux (и возможностью доступа к файловой системе ext2fs).


Выбор компонентов


Однако перед этим в темпе румбы происходит довольно много событий. В считанные минуты создаются файловые системы (то есть происходит собственно разбиение и форматирование), выдается сообщение о их объеме, предлагается сконфигурировать сеть (от чего я за отсутствием оной отказался), ввести пароль для root'а, спрашивается, предполагается ли использование системы X Window.

Наконец, предлагается определить источник инсталляции (ftp, http, стриммерная лента, CD ROM или локальный диск). А по выборе CD (именно этот случай я и рассматриваю) - указать относительную точку монтирования каталога с файлами для установки (по умолчанию - /2.8/i386, на CD такой и в самом деле есть). А затем - выбор компонентов, количество которых просто смешно:

base28.tgz

etc28.tgz

misc28.tgz

comp28.tgz

man28.tgz

xbase28.tgz

xshare28.tgz

xfont28.tgz

xserv28.tgz

bsd.tgz

Причем по умолчанию отмечены только два первых, последний и man. Можно, набрав done, с этим согласиться, можно отметить все (all), можно отмечать необходимые по одному:

list имя_файла

Компоненты, включенные ошибочно, можно изъять, набрав

list -имя_файла

Затем все же набирается done, отвергается предложение повторить выбор - и происходит установка.

Как можно было понять из списка файлов, компоненты для установки представляют собой простые архивы *.tgz, содержащие кроме собственно программных, библиотечных и прочих файлов, также инсталляционные скрипты, подобно тому, как это сделано в Linux Slackware. И потому установка сводится к распаковке архивов, их копированию на диск и размещению в соответствующие места.

Собственно установочная процедура осуществляется со страшной научно-фантастической силой. У меня, например, она заняла (при выборе всех компонентов, кроме игр) не более 2-3 минут, я даже время толком засечь не успел... Впрочем, как и все в этом мире, такая скорость имеет свою оборотную сторону, обнаруживаемую при первом же запуске системы. Но это - тема следующей заметки.

Вот почти и все. Инсталляционная стадия закончилась, наступает