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

 

Введение

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

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

 

Начало начал, или установка на жесткий диск

Как и все другие ОС, OpenBSD распространяется в виде ISO-образов и даже образов флоппи-дисков, которые можно использовать для установки системы на совсем старое железо. ISO-образов при этом предлагается два: для установки по сети (имя cdXX.iso, где XX — номер версии ОС) и полная система (файл installXX.iso), которая включает в себя все, кроме сторонних пакетов. Получить образы можно с любого из доступных FTP-серверов, например mirror.corbina.net/pub/OpenBSD. Следует перейти в каталог с номером версии ОС (например, 5.1), а далее — в каталог с именем нужной архитектуры (i386 или amd64 для стандартных ПК) и скачать подходящий образ, в моем случае install51.iso.

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

Первый вопрос инсталлятора касается режима работы LiveCD:

(I)nstall, (U)pgrade or (S)hell?

Нас интересует первый пункт, поэтому вводим символ ‘i’. Далее — раскладка клавиатуры:

Choose your keyboard layout ('?' or 'L' for list)

Жмем Enter, чтобы выбрать стандартную QWERTY-раскладку. После этого необходимо ввести имя хоста:

System hostname? (short form, e.g. 'foo')

Набираем любое понравившееся имя и жмем Enter. Далее инсталлятор выведет список доступных сетевых интерфейсов и предложит сконфигурировать один из них:

Available network interfaces are: em0 vlan0.
Which one do you wish to configure? (or 'done') [em0]

Сетевая установка OpenBSD с помощью минимального образа диска (cd51.iso) — распространенная практика, поэтому данный вопрос появляется одним из первых. Жмем Enter и видим на экране запрос IP-адреса интерфейса em0 (естественно, в твоем случае имя интерфейса может быть и другим, в BSD-системах имя интерфейса зависит от производителя сетевухи):

IPv4 address for em0? (or 'dhcp' or 'none') [dhcp]

Жмем Enter, чтобы IP-адрес и все остальное было получено от DHCP-сервера. В противном случае вводим айпишник и отвечаем на еще несколько вопросов об адресах DHCP-сервера, дефолтовом шлюзе и так далее. Затем нам предложат назначить IPv6-адрес, жмем Enter, чтобы не делать этого:

IPv6 address for fxp0? (or 'rtsol' or 'none') [none]

Далее будет выдан запрос относительно настройки конфигурации других интерфейсов:

Available network interfaces are: em0 vlan0.
Which one do you wish to configure? (or 'done') [done]

Как видно, кроме em0 остался только vlan0, то есть виртуальный сетевой интерфейс, поэтому инсталлятор предлагает нажать , чтобы перейти к следующему этапу установки. Так и делаем и видим на экране следующее:

Using DNS domainname my.domain
Using DNS nameservers at 192.168.0.1
Do you want to do any manual network configuration? [no]

Жмем Enter, чтобы отказаться от последующего ручного конфигурирования сети. Теперь мы должны дважды ввести пароль root’а:

Password for root account? (will not echo)
Password for root account? (again)

После чего нам предложат прописать sshd и ntpd в автозагрузку:

Start sshd(8) by default? [yes]
Start ntpd(8) by default? [no]

Нажимаем два раза , чтобы sshd запускался, а ntpd — нет. Далее инсталлятор спросит нас о том, будет ли на этой машине работать X Window. Единственное, на что он влияет, — это помещение в конфиг /etc/sysctl.conf строки machdep.allowaperture=1, без которой запуск иксов невозможен:

Do you expect to run the X Window System? [yes]

Жмем Enter, чтобы согласиться. Далее нас спросят о запуске xdm по умолчанию, то есть запуске иксов сразу после загрузки системы:

Do you want the X Window System to be started by xdm(1)? [no]

Жмем Enter, чтобы отказаться, так как вместо убогого XDM мы будем использовать более современный менеджер входа (хотя эстеты могут ввести здесь «yes», чтобы наслаждаться XDM). Далее нам предложат добавить в систему пользователя:

Setup a user? (enter a lower-case loginname, or 'no') [no]

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

What timezone are you in? ('?' for list) [Canada/Mountain]

Вводим, например, Europe/Moscow. Найти нужную зону можно здесь: en.wikipedia.org/wiki/List_of_IANA_time_zones. На следующем шаге установщик спросит о жестком диске, на который будет устанавливаться система, и использовании уникальных номеров DUID в /etc/fstab вместо путей к файлам устройств:

Available disks are: wd0.
Which one is the root disk? (or 'done') [wd0]
Use DUIDs rather then device names in fstab? [yes]

В домашней машине обычно только один диск, поэтому смело жмем Enter два раза. Далее мы должны ответить, хотим ли мы, чтобы OpenBSD использовала весь диск:

Use (W)hole disk or (E)dit the MBR? [whole]

В случае установки OpenBSD внутри виртуальной машины просто жмем Enter, чтобы отдать весь диск под систему и не мучиться с разбивкой. Если же речь идет о реальной машине, на которой уже установлена одна или несколько операционных систем, то следует ввести ‘e’, а затем создать дополнительный раздел для OpenBSD с помощью fdisk.

После нажатия инсталлятор произведет предварительную разбивку раздела/диска на OpenBSD-партиции (все BSD-системы используют собственную схему разметки диска, которая несовместима с другими ОС и создается внутри обычного раздела) и выведет их список на экран, предоставляя выбор — откорректировать либо согласиться с предложенной схемой:

Use (A)uto layout, (E)dit auto layout, or create (C)ustom layout? [a]

Схема разметки раздела, предложенная инсталлятором, не всегда бывает правильной
Схема разметки раздела, предложенная инсталлятором, не всегда бывает правильной

На данном этапе лезть в дебри утилиты disklabel, с помощью которой происходит разметка, смысла нет, поэтому просто жмем Enter, соглашаясь на то, что предложил инсталлятор (тем, кто не терпит автоматический режим, предложу ссылку на пошаговое руководство по ручной разметке: goo.gl/eNBta). После непродолжительной процедуры разбивки следует выбрать источник установки системы:

Location of sets? (cd disk ftp http or 'done') [cd]

Опять же жмем Enter, соглашаясь на установку с CD. На следующий вопрос о выборе дисковода также отвечаем нажатием клавиши «Ввод» (у тебя ведь только один дисковод?). Далее выбор пути, по которому располагаются пакеты на диске:

Pathname to the sets? (or 'done') [5.1/i386]

Здесь вообще без вариантов: . Далее система выведет на экран список «сетов», то есть наборов ПО, и предложит выбрать нужные:

Set name(s)? (or 'abort' or 'done') [done]

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

Location of sets? (cd disk ftp http or 'done') [done]

Жмем Enter. На этом все, вводим reboot, чтобы перезагрузиться.

Окончание установки системы
Окончание установки системы

 

INFO

Кроме ISO-образов, команда OpenBSD распространяет набор фирменных компакт-дисков, на которых помимо основной системы содержатся также набор дополнительных пакетов, постеры с символикой OpenBSD и музыкальная композиция, подготавливаемая к каждому релизу.

В базовую поставку OpenBSD входит два веб-сервера: nginx и Apache с набором патчей для повышения безопасности и бэкпортами функциональности из второй версии.

OpenBSD имеет самой большой набор качественных драйверов для беспроводного оборудования среди всех BSD-систем.

OpenBSD поставляется с собственным звуковым сервером aucat, который можно использовать для смешивания аудиопотоков из разных источников без необходимости установки pulseaudio или jack.

 

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

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

Для начала войдем в систему, добавим нового бесправного пользователя и назначим ему пароль. Как и в других никсах, сделать это можно с помощью команд useradd и passwd:

# uaseradd -m -G wheel имя_юзера
# passwd имя_юзера

Обрати внимание, что passwd из OpenBSD не допустит применения коротких и простых паролей, так что придется придумать что-то изысканное. Теперь добавим в конфиг sudo строку, которая позволит созданному пользователю выполнять любые команды от имени root

# echo 'имя_юзера ALL=(ALL) SETENV: ALL' >> /etc/sudoers

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

Управлять пакетами можно с помощью стандартных для BSD команд pkg_add, pkg_delete, pkg_info и нескольких других, однако, чтобы они заработали, необходимо указать источник установки пакетов, прописав его адрес в переменную окружения PKG_PATH:

$ export PKG_PATH=ftp://ftp.corbina.ru/pub/OpenBSD/$(uname -r)/packages/$(uname -m)/

Теперь можно установить bash, vim и другие инструменты, которые могут тебе понадобиться:

$ sudo pkg_add -v bash vim screen elinks

Обрати внимание, что короткие имена пакетов сработают, только если в репозитории пакет с таким именем лишь один. В противном случае pkg_add выведет список пакетов с одинаковым именем и попросит тебя установить один из них, указав полное имя. После того как команда pkg_add будет выполнена, меняем свой шелл на bash и прописываем vim в качестве редактора по умолчанию (все это опционально, и ты можешь остаться на стандартных для OpenBSD ksh и vi):

$ sudo usermod -s /usr/local/bin/bash
$ echo 'export EDITOR=vim' >> ~/.bashrc
$ echo 'export PKG_PATH=ftp://ftp.corbina.ru/pub/OpenBSD/$(uname -r)/packages/$(uname -m)/' >> ~/.bashrc
$ bash

Теперь можно установить графическую среду. Я предлагаю использовать Xfce как легкую среду для легкой ОС. В OpenBSD Xfce разбита на множество пакетов, большинство из которых никак не зависят друг от друга, поэтому их придется устанавливать по отдельности. Чтобы инсталлировать базу, достаточно набрать следующую команду:

$ sudo pkg_add -v xfce4-session xfdesktop xfwm4

Так по умолчанию выглядит рабочий стол OpenBSD
Так по умолчанию выглядит рабочий стол OpenBSD

Пакет вытянет вместе с собой GTK, Glib, cairo, d-bus, некоторые компоненты среды и все необходимое для их работы (кроме X.Org, он идет в комплекте базовой системы). После того как среда будет установлена, можно запустить иксы, добавив Xfce в автозагрузку:

$ echo 'LC_CTYPE="ru_RU.UTF-8"' > ~/.xinitrc
$ echo 'setxkbmap "us,ru" ",winkeys" "grp:caps_toggle" &' \
>> ~/.xinitrc
$ echo 'exec xfce4-session' >> ~/.xinitrc
$ ln -s ~/.xinitrc ~/.xsession
$ startx

Первая команда здесь нужна, чтобы установить правильную локаль, позволив приложениям корректно выводить текст на русском; вторая — чтобы настроить переключение языков между русским и английским по клавише CAPSLOCK; третья запускает Xfce; четвертая нужна, чтобы Xfce также попала в автозагрузку графического менеджера логина, который мы установим позже. Чтобы инсталлировать весь Xfce целиком, установи следующие пакеты:

gtk-xfce-engine libxfce4mcs libxfcegui4 xfce-mcs-manager xfce-mcs-plugins xfce-utils xfce4-* xfdesktop xfwm4 xfwm4-themes

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

$ sudo pkg_add -v $(cat файл)

Чтобы настроить графический логин в систему, мы должны установить менеджер входа, такой как GDM, KDM, или воспользоваться стандартным XDM. К сожалению, первые два тянут за собой большое количество ненужных зависимостей, а третий выглядит скверно, поэтому мы установим простой и стильный менеджер SLIM:

$ sudo pkg_add -v slim

Чтобы он запускался автоматически после старта системы, добавь в /etc/rc.local следующую строку:

# vi /etc/rc.local

[ -x /etc/rc.d/slim ] && /etc/rc.d/slim start

Если же нужен автологин, достаточно добавить в /etc/slim.conf две строки:

# vi /etc/slim.conf

default_user имя_юзера
auto_login yes

Теперь после перезагрузки машины будет сразу стартовать графическое окружение.

Рабочий стол Xfce в OpenBSD
Рабочий стол Xfce в OpenBSD
 

Пакеты и порты

Мы научились устанавливать пакеты, но что делать, если приложение необходимо удалить из системы? Для этого служит команда pkg_delete, просто запусти ее с именем нужного пакета, и ты его больше не увидишь:

$ sudo pkg_delete xfdesktop

Удалять пакет со всеми зависимостями pkg_delete не умеет, но утилита принимает флаг ‘-a’, с помощью которого можно подчистить систему от осиротевших зависимостей. Кроме того, если сам пакет является зависимостью, команда выведет на экран список его «родительских» пакетов, так что ты легко разберешься в веренице взаимных зависимостей.

Чтобы просмотреть список пакетов, можно использовать команду pkg_info, которая просто выводит на экран имена всех пакетов с версией и кратким описанием. Также тебе будут доступны команды pkg_create и pkg_check для создания и проверки целостности пакетов, а из репозитория можно установить pkg_find, с помощью которой легко найти нужное приложение. Всего в репозитории OpenBSD доступно около 5000 пакетов, среди которых есть все необходимое, начиная от Firefox и заканчивая различными мелкими инструментами вроде iotop.

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

$ sudo mkdir /usr/ports
$ ftp ftp://ftp.corbina.ru/pub/OpenBSD/5.1/ports.tar.gz
$ sudo tar -C /usr/ports -zxvpf ~/ports.tar.gz

Далее можно перейти в каталог /usr/ports, найти нужный порт и собрать его. Например:

# cd /usr/ports/sysutils/nut
# env FLAVOR=no_cgi make install clean

Система портов во всех BSD почти идентичная, поэтому если ты когда-либо работал с FreeBSD, то легко разберешься.

Постер, посвященный выходу OpenBSD 5.1
Постер, посвященный выходу OpenBSD 5.1
 

Автомонтирование

В OpenBSD нет udev, sysfs или динамической файловой системы devfs, поэтому стандартные механизмы автомонтирования не сработают. У пользователя остается выбор: либо настроить архаичный amd для автомонтирования, либо сделать так, чтобы монтирование можно было выполнить с помощью одной простой команды. Мы пойдем по второму пути, и позже я объясню почему.

Чтобы сделать монтирование удобным, мы должны, во-первых, сделать так, чтобы диски и флешки мог монтировать любой пользователь; во-вторых, добавить необходимые записи в /etc/fstab. Первая операция выполняется с помощью пяти команд:

$ sudo mkdir /mnt/usb /mnt/cdrom
$ sudo chown имя_пользователя /mnt/usb /mnt/cdrom
$ sudo chmod 660 /dev/sd0i /dev/cd0a
$ sudo sysctl kern.usermount=1
$ sudo sh -c "echo 'kern.usermount=1' >> /etc/sysctl.conf"

Вторая — двух:

# echo "/dev/sd0i /mnt/usb msdos rw,nodev,noexec,nosuid,noauto,-Lru_RU.UTF-8,-DCP866 0 0" >> /etc/fstab
# echo "/dev/cd0a /mnt/cdrom cd9660 rw,nodev,noexec,nosuid,noauto 0 0" >> /etc/fstab

Обрати внимание на имена файлов устройств. USB-накопители в OpenBSD всегда монтируются как SCSI-диски с именем sd0, sd1 и так далее и буквой, означающей раздел. Разделы со сторонними ФС (включая FAT и NTFS) получают имена, начиная с символа i, поэтому «sd0i» — это первый раздел (а он обычно единственный) первой воткнутой флешки. Имя «cd0a» — это загрузочный сектор диска в первом дисководе. Теперь монтировать флешки и диски можно с помощью таких команд:

$ mount /mnt/usb
$ mount /mnt/cdrom

При этом графические среды, такие как Xfce и GNOME, будут делать это автоматически при нажатии на ярлык устройства. Именно по этой причине мы отказались от использования amd, он бы внес дополнительную сложность, не дав никаких преимуществ.

Распределение долей BSD-систем среди пользователей
Распределение долей BSD-систем среди пользователей
 

Сеть

Благодаря инсталлятору твоя сеть уже настроена, однако на случай, если возникнут какие-либо проблемы, ты должен знать, как изменить конфигурацию. Настройка любого сетевого интерфейса во всех ОС включает в себя три шага: (1) назначение IP-адреса, маски подсети и так далее сетевому интерфейсу, (2) указание шлюза по умолчанию и (3) настройку DNS. Первый шаг в OpenBSD выполняется с помощью записи строки в файл /etc/hostname.XXX, где XXX — имя сетевого интерфейса (в нашем случае em0). Все, что нужно сделать, — это просто записать в файл строку примерно такого вида:

inet 10.0.0.38 255.255.255.0 NONE

где inet — семейство протоколов (IPv4), 10.0.0.38 — IP-адрес, 255.255.255.0 — маска подсети, а NONE — широковещательный адрес (будет выбран автоматически). Чтобы интерфейс конфигурировался с помощью DHCP, достаточно поместить в файл строку dhcp. Для указания шлюза по умолчанию достаточно записать его адрес в файл /etc/mygate, например:

$ sudo sh -c "echo '10.0.0.1' > /etc/mygate"

Адреса DNS-серверов прописываются точно так же, как в других никсах, в файл /etc/resolv.conf. Например:

nameserver 8.8.8.8
nameserver 8.8.4.4

Всего этого достаточно, чтобы при следующей загрузке сеть была полностью работоспособной, хотя изменения можно применить сразу, выполнив скрипт netstart:

$ sudo sh /etc/netstart

С беспроводными сетями все не намного сложнее. Поддержка механизма WPA, который сегодня используют по умолчанию почти все беспроводные роутеры, в OpenBSD встроена прямо в ядро, а не реализована в виде внешнего приложения wpa_supplicant, как в других юниксах, поэтому wicd и NetworkManager работать не будут, зато сеть легко настроить на уровне системы. Итак, выясняем имя сетевого интерфейса с помощью чтения dmesg. Допустим, мы нашли имя ral0, теперь создаем файл /etc/hostname.ral0 и пишем в него следующее:

nwid SSID-сети wpa wpapsk `wpa-psk ssid ПАРОЛЬ`
dhcp

Сохраняемся и заставляем систему перечитать настройки:

$ sudo sh /etc/netstart ral0

И это все. Действительно все. Если же необходимо получить список доступных сетей, то это легко сделать с помощью следующей команды:

$ ifconfig -M ral0

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

Устанавливаем Xfce
Устанавливаем Xfce
 

Что дальше?

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

 

Список инсталляционных сэтов

  • bsd — ядро системы (обязателен для установки)
  • bsd.mp — ядро для многопроцессорных систем
  • bsd.rd — ядро с поддержкой RAM-диска (для восстановления системы)
  • base51.tgz — содержит базовые компоненты (обязателен для установки)
  • etc51.tgz — содержит файлы каталога /etc (обязателен для установки)
  • comp51.tgz — компилятор, заголовочные файлы и библиотеки
  • man51.tgz — справочные страницы
  • game51.tgz — набор простеньких текстовых игрушек
  • xbase51.tgz — библиотеки и утилиты для X11
  • xetc51.tgz — конфиги X11
  • xfont51.tgz — набор шрифтов X11
  • xserv51.tgz — X-сервер
  • xshare51.tgz — справочные страницы, настройки локали, заголовочные файлы и прочее для X Window

 

1 комментарий

  1. deepforest

    03.10.2017 at 03:13

    Спасибо большое, очень интересно! Вдохновляет на освоение!

Оставить мнение

Check Also

Цифровой паноптикум. Настоящее и будущее тотальной слежки за пользователями

Даже если ты тщательно заботишься о защите своих данных, это не даст тебе желаемой приватн…