http://www.qbsd.ru/api.php?action=feedcontributions&user=172.16.0.1&feedformat=atomOpenBSD-Wiki - Вклад участника [ru]2024-03-29T11:14:41ZВклад участникаMediaWiki 1.35.2http://www.qbsd.ru/index.php?title=%D0%97%D0%B0%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0&diff=117Заглавная страница2013-05-26T16:53:41Z<p>172.16.0.1: /* OPENBSD.PW Wiki */</p>
<hr />
<div>== OPENBSD.PW Wiki ==<br />
<br />
Неофициальный Wiki портал русскоязычного сообщества [http://www.openbsd.org OpenBSD].<br />
<br />
Полезен в первую очередь системным администраторам как открытый сборник информации, how-to’шек, заметок о данной операционной системе.<br />
В силу возможностей wiki более живуч, чем отдельно существующие сайты.<br />
<br />
Разумеется, публикуемая информация распространяется по принципу «как есть» и не претендует на полноту и точность сведений.<br />
За последствия её применения никто не берёт на себя ответственность. Чтение [http://www.openbsd.org/cgi-bin/man.cgi официальной документации] никто не отменял.<br />
<br />
На данный момент осуществляется наполнение wiki. Что сделано отмечено в разделе [[OpenBSD-Wiki:Текущие события]]<br /><br />
Из завершённого пока располагаем только [http://openbsd.pw/files архивом сайтов] который викифицируем.<br />
<br />
Будем рады если окажете помощь написав статью или исправите неточность.</div>172.16.0.1http://www.qbsd.ru/index.php?title=%D0%97%D0%B0%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0&diff=116Заглавная страница2013-05-26T15:59:09Z<p>172.16.0.1: /* OPENBSD.PW Wiki */</p>
<hr />
<div>== OPENBSD.PW Wiki ==<br />
<br />
Неофициальный Wiki портал русскоязычного сообщества [http://www.openbsd.org OpenBSD].<br />
<br />
Полезен в первую очередь системным администраторам как открытый сборник информации, how-to’шек, заметок о данной операционной системе.<br />
В силу возможностей wiki более живуч, чем отдельно существующие сайты.<br />
<br />
Разумеется, публикуемая информация распространяется по принципу «как есть» и не претендует на полноту и точность сведений.<br />
За последствия её применения никто не берёт на себя ответственность. Чтение [http://www.openbsd.org/cgi-bin/man.cgi официальной документации] никто не отменял.<br />
<br />
На данный момент осуществляется наполнение wiki. Что сделано отмечено в разделе [[OpenBSD-Wiki:Текущие события]]<br /><br />
Из завершённого пока располагаем только [http://openbsd.pw:81/files архивом сайтов] который викифицируем.<br />
<br />
Будем рады если окажете помощь написав статью или исправите неточность.</div>172.16.0.1http://www.qbsd.ru/index.php?title=OpenBSD-Wiki:%D0%9F%D0%BE%D1%80%D1%82%D0%B0%D0%BB_%D1%81%D0%BE%D0%BE%D0%B1%D1%89%D0%B5%D1%81%D1%82%D0%B2%D0%B0&diff=115OpenBSD-Wiki:Портал сообщества2013-05-26T15:57:25Z<p>172.16.0.1: /* OPENBSD.PW Wiki */</p>
<hr />
<div>== OPENBSD.PW Wiki ==<br />
<br />
Wiki портал создан чтобы дать дополнительную помощь в освоении мультиплатформенной операционной системы [http://www.openbsd.org OpenBSD]. Несмотря на наличие объёмного [http://www.openbsd.org/index.html официального FAQ] в том числе [http://www.openbsd.org/faq/ru/index.html на русском], проработанных [http://www.openbsd.org/cgi-bin/man.cgi man страниц] и [http://www.openbsd.org/books.html книг] всегда остаётся интересен практический опыт и те «шпаргалки» которые системные администраторы пишут для себя чтобы не искать нужную информацию, а сразу же ею воспользоваться. Именно это является приоритетом OpenBSD-Wiki.<br />
<br />
Сообщество не преследует никакой цели получения прибыли от размещенной здесь информации и не запрещает её дальнейшее копирование / использование дома или на предприятиях. Также не оказывается финансовая помощь авторам, не выплачиваются гонорары. Любой вклад является добровольным. Надо понимать что труды становятся доступны неограниченной аудитории. Это может сказаться, если вы в последствии за ту же информацию планируете получить гонорар.<br />
<br />
Викификация имеющейся информации прежде всего направлена на надёжное систематизированное сохранение. К сожалению, в большинстве случаев не указан кто её автор. Если Вы являетесь автором имеете полное право внести отметку о себе. Вне зависимости работает ресурс с которого была получена информация ссылка на него должна присутствовать в wiki-cтатье.<br />
<br />
[[Категория:Общая информация]]</div>172.16.0.1http://www.qbsd.ru/index.php?title=%D0%A0%D0%B5%D0%B7%D0%B5%D1%80%D0%B2%D0%BD%D0%B0%D1%8F_%D0%BA%D0%BE%D0%BF%D0%B8%D1%8F_Wiki&diff=114Резервная копия Wiki2013-05-26T15:03:42Z<p>172.16.0.1: </p>
<hr />
<div>== Резервная копия Wiki ==<br />
<br />
=== Backup SQL базы ===<br />
<br />
$SQLUSER — пользователь SQL имеющий право доступа к базе данных Wiki<br /><br />
$DATABASE — имя базы данных<br />
<br />
/usr/bin/nice -n 19 /usr/local/bin/mysqldump -u $SQLUSER --password=$PASSWORD $DATABASE -c | /usr/bin/nice -n 19 \<br />
/usr/bin/gzip -9 > ~/backup/$DATABASE-wiki-$(date '+%Y%m%d').sql.gz<br />
<br />
=== Backup рабочей директории со скриптами ===<br />
В данном примере /var/www/htdocs/wiki:<br />
<br />
/usr/bin/nice -n 19 /bin/tar -zcpf ~/backup/wiki-$(date '+%Y%m%d').tgz /var/www/htdocs/wiki<br />
<br />
== Ссылки ==<br />
<br />
[http://www.mediawiki.org/wiki/Manual:Backing_up_a_wiki/ru http://www.mediawiki.org/wiki/Manual:Backing_up_a_wiki/ru]<br />
<br />
[[Категория:Howto]]</div>172.16.0.1http://www.qbsd.ru/index.php?title=%D0%98%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_Bluetooth_%D0%B2_OpenBSD&diff=113Использование Bluetooth в OpenBSD2013-05-26T15:03:14Z<p>172.16.0.1: </p>
<hr />
<div>Данная статья 100 % копипаст с [http://www.openbsd.ru www.openbsd.ru]<br />
<br />
Поскольку GENERIC ядро не включает в себя ни стек, ни драйверы устройств Bluetooth, необходимо собрать ядро, поддерживающее следующие устройства:<br />
# Контроллер Bluetooth<br />
ubt* at uhub?<br />
<br />
# Поддержка шины Bluetooth<br />
bthub* at ubt?<br />
<br />
# Поддержка HID устройств, работающих через Bluetooth<br />
bthidev* at bthub?<br />
btkbd* at bthidev?<br />
btms* at bthidev?<br />
wskbd* at btkbd? mux 1<br />
wsmouse* at btms? mux 0<br />
<br />
Для управления устройствами Bluetooth следует установить утилиты bluetooth-tools /usr/ports/net/bluetooth-tools.<br />
Базовая конфигурация<br />
<br />
Произведем предварительную настройку. Определим наличие контроллеров Bluetooth в системе и распечатаем их начальную конфигурацию:<br />
% btconfig -l<br />
ubt0<br />
% btconfig ubt0<br />
ubt0: bdaddr 00:00:00:00:00:00 flags=0<><br />
num_cmd = 0<br />
num_acl = 0, acl_mtu = 0<br />
num_sco = 0, sco_mtu = 0<br />
<br />
Зададим такие параметры как: имя узла, класс устройства узла (ноутбук), режим работы. После чего включим интерфейс:<br />
# btconfig ubt0 up name "Q45" pscan switch class 0x02010c<br />
% btconfig -v ubt0<br />
ubt0: bdaddr 00:1f:3a:ec:05:0f flags=3<br />
num_cmd = 1<br />
num_acl = 8, acl_mtu = 1017<br />
num_sco = 1, sco_mtu = 64<br />
HCI version: 2.0<br />
class: [0x02010c] Laptop Computer <br />
name: "Q45"<br />
voice: [0x0060]<br />
pin: variable<br />
options: pscan switch<br />
Использование HID устройств Bluetooth<br />
<br />
Произведем поиск устройств:<br />
<pre><br />
% btconfig ubt0 inquiry<br />
Device Discovery from device: ubt0 .... 1 response<br />
1: bdaddr 00:1e:dc:d8:94:0b<br />
: name "K530i"<br />
: class: [0x5a0204] Cellular Phone <br />
<br />
: page scan rep mode 0x01<br />
: clock offset 23944<br />
</pre><br />
Сохраняем имя и адрес устройства в локальном файле Bluetooth-хостов, генерируем PIN код и попытаемся использовать телефон как HID устройство:<br />
# echo "00:1e:dc:d8:94:0b k530i" >>/etc/bluetooth/hosts<br />
# bthcid<br />
# btpin -d ubt0 -a k530i -r -l 5<br />
PIN: 84921<br />
# btdevctl -d ubt0 -a k530i -s HID<br />
local bdaddr: 00:1f:3a:ec:05:0f<br />
remote bdaddr: 00:1e:dc:d8:94:0b<br />
link mode: encrypt<br />
device type: HID<br />
control psm: 0x0011<br />
interrupt psm: 0x0013<br />
Collection page=Generic_Desktop usage=Keyboard<br />
...<br />
End collection<br />
Collection page=Generic_Desktop usage=Mouse<br />
Collection page=Generic_Desktop usage=Pointer<br />
...<br />
End collection<br />
End collection<br />
# btdevctl -d ubt0 -a k530i -s HID -A<br />
<br />
Появятся сообщения ядра:<br />
bthub0 at ubt0 00:1f:3a:ec:05:0f<br />
bthidev0 at bthub0 00:1e:dc:d8:94:0b encrypt<br />
btkbd0 at bthidev0 reportid 1<br />
wskbd1 at btkbd0 mux 1<br />
wskbd1: connecting to wsdisplay0<br />
btms0 at bthidev0 reportid 2: 3 buttons.<br />
wsmouse2 at btms0 mux 0<br />
bthidev0: connected<br />
<br />
Телефон попросит ввести PIN, после чего предложит использовать себя как HID устройство, давая возможность выбрать из ряда приложений, созданных для проведения презентаций и т. п.<br />
<br />
Выход из приложения означает конец сессии. Этот факт регистрируется и ядром:<br />
bthidev0: disconnected<br />
<br />
Отцепим ненужные HID устройства:<br />
# btdevctl -d ubt0 -a k530i -s HID -D<br />
# dmesg | tail -6<br />
wsmouse2 detached<br />
btms0 detached<br />
wskbd1: disconnecting from wsdisplay0<br />
wskbd1 detached<br />
btkbd0 detached<br />
bthidev0 detached<br />
<br />
Для быстрой настройки устройства можно использовать следующий скрипт (величины задержек установлены экспериментально):<br />
<br />
<syntaxhighlight lang="bash">#!/bin/sh<br />
<br />
DEVICE="k530i"<br />
NAME="Q45"<br />
UBT=$(btconfig -l | head -1)<br />
<br />
if [ "${UBT}" = "" ]; then<br />
echo "No bluetooth controllers have been found!"<br />
exit 1<br />
fi<br />
<br />
if [ "${1}" = "-d" ]; then<br />
btdevctl -d ${UBT} -a ${DEVICE} -s HID -D<br />
pkill bthcid<br />
exit $?<br />
fi<br />
<br />
echo "configuring bluetooth: ${UBT}"<br />
btconfig ${UBT} up name "${NAME}" pscan switch class 0x02010c<br />
btconfig -v ${UBT}<br />
<br />
sleep 2<br />
<br />
echo -n "starting bthcid..."<br />
bthcid && echo " ok"<br />
<br />
sleep 5<br />
<br />
echo -n "generating pin code: "<br />
btpin -d ${UBT} -a ${DEVICE} -r -l 5<br />
<br />
sleep 3<br />
<br />
echo -n "attaching HID devices..."<br />
btdevctl -d ${UBT} -a ${DEVICE} -s HID >/tmp/hid.log 2>&1<br />
btdevctl -d ${UBT} -a ${DEVICE} -s HID -A && echo " done"</syntaxhighlight><br />
<br />
[[Категория:Howto]]</div>172.16.0.1http://www.qbsd.ru/index.php?title=%D0%A1%D0%B1%D0%BE%D1%80%D0%BD%D0%B8%D0%BA_%D1%81%D0%BE%D0%B2%D0%B5%D1%82%D0%BE%D0%B2_%D1%81_OpenBSD101.com&diff=112Сборник советов с OpenBSD101.com2013-05-26T14:59:21Z<p>172.16.0.1: </p>
<hr />
<div>== Ядро и применение патчей ==<br />
<br />
Данная статья 100 % копипаст с [http://www.openbsd101.ru www.openbsd101.ru]<br />
<br />
=== Введение ===<br />
<br />
Наложения патчей применимы к следующим двум вещам:<br />
<br />
* Программы<br />
* Ядро операционной системы<br />
<br />
В свою очередь процедуру наложения патчей можно разделить на две части:<br />
<br />
# Применения патча к исходному коду<br />
# Перекомпиляция и установка пропатченного ПО<br />
<br />
Патчи представляют из себя текстовые файлы, в начале которых обычно находится инструкция того, как наложить патч и переустановить ПО.<br />
Новые патчи объявляются в [http://www.openbsd.org/mail.html списке рассылки] [mailto: security-announce@OpenBSD.org security-announce@OpenBSD.org]. Список патчей также может быть найден на [http://www.openbsd.org/errata.html http://www.openbsd.org/errata.html].<br />
<br />
=== Скачивание исходного кода ===<br />
<br />
Прежде чем применять какие-либо патчи как к программам, так и к ядру системы, Вам необходим их исходный код.<br />
* Исходный код core системы OpenBSD 3.9 (99Мб): [ftp://ftp.openbsd.org/pub/OpenBSD/3.9/src.tar.gz ftp://ftp.openbsd.org/pub/OpenBSD/3.9/src.tar.gz]<br />
* Исходный код ядра OpenBSD 3.9 (16Мб): [ftp://ftp.openbsd.org/pub/OpenBSD/3.9/sys.tar.gz ftp://ftp.openbsd.org/pub/OpenBSD/3.9/sys.tar.gz]<br />
<br />
Теперь распаковываем исходный код core системы:<br />
<br />
# mv src.tar.gz /usr/src<br />
# cd /usr/src<br />
# tar -xvzf src.tar.gz<br />
<br />
и исходный код ядра:<br />
<br />
# mv sys.tar.gz /usr/src<br />
# cd /usr/src<br />
# tar -xvzf sys.tar.gz<br />
<br />
=== Скачивание патчей ===<br />
<br />
Идём дальше:<br />
* патчи для OpenBSD 3.9: [ftp://ftp.openbsd.org/pub/OpenBSD/patches/3.9.tar.gz ftp://ftp.openbsd.org/pub/OpenBSD/patches/3.9.tar.gz]<br />
<br />
Теперь создайте директорию /usr/src/patches, скопируйте туда 3.9.tar.gz и распакуйте:<br />
<br />
# mkdir /usr/src/patches<br />
# mv 3.9.tar.gz /usr/src/patches<br />
# cd /usr/src/patches<br />
# tar -xvzf 3.9.tar.gz<br />
<br />
Скопируйте все патчи из папок /usr/src/patches/3.9/i386 и /usr/src/patches/3.9/common в /usr/src. Весь процесс применения патчей происходит в папке /usr/src. Каталог i386 обычно не содержит патчей.<br />
<br />
=== Наложение патчей на программы ===<br />
<br />
Для начала мы должны определить, какой тип патчей мы имеем.<br />
Используем команду head, чтобы просмотреть заголовок патча:<br />
<pre><br />
# head 001_st.patch<br />
<br />
Apply by doing:<br />
cd /usr/src<br />
patch -p0 < 001_st.patch<br />
<br />
Rebuild your kernel.<br />
<br />
Index: sys/scsi/st.c<br />
=========================<br />
RCS file: /cvs/src/sys/scsi/st.c,v<br />
retrieving revision 1.41<br />
</pre><br />
<br />
По комментарию Rebuild your kernel определяем, что это патч для ядра.<br />
Далее представлен патч, исправляющий локальную уязвимость в Apache (для OpenBSD 3.6).<br />
Давайте взглянем на заголовок патча:<br />
<pre><br />
# head -n 17 009_httpd.patch<br />
<br />
Apply by doing:<br />
cd /usr/src<br />
patch -p0 < 009_httpd.patch<br />
<br />
And then rebuild and install httpd and its modules:<br />
cd usr.sbin/httpd<br />
make -f Makefile.bsd-wrapper obj<br />
make -f Makefile.bsd-wrapper cleandir<br />
make -f Makefile.bsd-wrapper depend<br />
make -f Makefile.bsd-wrapper<br />
make -f Makefile.bsd-wrapper install<br />
<br />
If httpd had been started, you might want to run<br />
apachectl stop<br />
before running "make install", and<br />
apachectl start<br />
<br />
afterwards.<br />
</pre><br />
В случае следования написанным в начале патча инструкциям у вас не должно возникнуть проблем с его применением и перекомпиляцией программы.<br />
<br />
=== Наложение патчей на ядро ===<br />
<br />
Применение патчей ядра несколько отличается от применения патчей на программы — сначала вы должны наложить все патчи на ядро и после его перекомпилировать.<br />
Посмотрим с помощью head заголовок патча:<br />
<pre><br />
# head 001_st.patch<br />
<br />
Apply by doing:<br />
cd /usr/src<br />
patch -p0 < 001_st.patch<br />
<br />
Rebuild your kernel.<br />
<br />
Index: sys/scsi/st.c<br />
=========================<br />
RCS file: /cvs/src/sys/scsi/st.c,v<br />
retrieving revision 1.41<br />
</pre><br />
Видим Rebuild your kernel, значит это то, что нам нужно.<br />
Применив последовательно все патчи, переходим к следующему пункту…<br />
<br />
=== Перекомпиляция ядра после наложения патчей ===<br />
<br />
Так, не торопимся и делаем резервную копию текущего ядра:<br />
<br />
# cp /bsd /bsd.old<br />
<br />
Конфигурируем ядро:<br />
<br />
# cd /usr/src/sys/arch/i386/conf/<br />
# config GENERIC<br />
Don't forget to run "make depend"<br />
<br />
Теперь компилируем и устанавливаем новое ядро:<br />
<br />
# cd /usr/src/sys/arch/i386/compile/GENERIC/<br />
# make clean && make depend && make && make install<br />
<br />
Просто перезагрузитесь, чтобы проверить новое ядро.<br />
<br />
=== Загрузка старого ядра ===<br />
<br />
Если у вас возникли проблемы при загрузке с новым ядром, тогда попробуйте загрузиться со старым ядром.<br />
Во время загрузки, когда на экране будет нечто подобное:<br />
<br />
Using drive 0, partition 3.<br />
Loading...<br />
probing : pc0 com0 apm mem[634K 319M a20=on]<br />
disk: fd0 hd0+<br />
>> OpenBSD/i386 BOOT 2.06<br />
boot><br />
<br />
наберите название вашего старого ядра:<br />
<br />
Using drive 0, partition 3.<br />
Loading...<br />
probing : pc0 com0 apm mem[634K 319M a20=on]<br />
disk: fd0 hd0+<br />
>> OpenBSD/i386 BOOT 2.06<br />
boot> bsd.old<br />
<br />
== Безопасность ==<br />
<br />
=== Уровни безопасности ===<br />
<br />
Уровни безопасности позволяют указать ядру требуемую степерь безопасности системы. Всего существует четыре уровня безопасности: −1, 0, 1, 2. Уровень 2 является высшем уровнем безопасности. Уровни безопасности указываются в файле /etc/rc.securelevel.<br />
Вкратце про каждый уровень:<br />
<br />
* '''Уровень −1''': Дополнительное обеспечение безопасности системы ядром отстутствует, многие обычные возможности. Такие, как права доступа, функционируют. Используйте этот уровень для не-production компьютеров.<br />
* '''Уровень 0''': Используется при начальной загрузке OpenBSD. После окончания загрузки система обычно переходит на уровень 1. Какие-либо специфичные вещи в систему этот уровень не добавляет.<br />
* '''Уровень 1''': Уровень безопасности по умолчанию в OpenBSD. Операции записи в /dev/mem и /dev/kmem запрещены. Устройства raw-disk доступны только на чтение. Флаги schg и sappnd не могут быть удалены. Модули ядра не могут быть загружены или выгружены «на лету».<br />
* '''Уровень 2''': Включает в себя всё из уровня 1, ограничивает изменение системного времени, pfctl не может менять правила PF или NAT, значения sysctl для отладчика ядра DDB не могут быть изменены.<br />
<br />
<br />
По окончании процесса загрузки системы вы можете узнать текущий уровень безопасности системы набрав в строке:<br />
<br />
# sysctl kern.securelevel<br />
<br />
Вы можете повысить уровень безопасности командой:<br />
<br />
# sysctl -w kern.securelevel=2<br />
<br />
И вы не сможете изменить уровень безопасности с более высокого на низкий,- только после перезагрузки.<br />
<br />
=== Использование флагов ядра ===<br />
<br />
Выставление флагов ядра похоже на выставление прав доступа файлам, но лишь с тем различием, что некоторые из них даже пользователь root может поменять лишь определённом(низком) уровне безопасности — или загрузившись в однопользовательском режиме.<br />
<br />
Наиболее используемые флаги:<br />
<br />
* '''sappnd''': Флаг может быть добавлен/удалён только пользователем root. Разрешается добавлять(append) данные в файл, но нельзя удалить или редактировать его. Неплохо использовать для лог-файлов. Этот флаг не может быть удалён при уровне безопасности 1 и выше.<br />
* '''schg''': Флаг может быть добавлен/удалён только пользователем root. Файлы с этим флагом не могут быть изменены, перемещены или заменеы. Этот флаг не может быть удалён при уровне безопасности 1 и выше.<br />
* '''uappnd''': Флаг может быть добавлен/удалён только пользователем root. Разрешается добавлять(append) данные в файл, но нельзя удалить или редактировать его рядовым пользователям. Пользователь root может модифицировать этот флаг в любое время.<br />
<br />
Будьте внимательны при использовании этих флагов,- неумелое использование может привести вашу систему в нерабочее состояние.<br />
Посмотрим, выставлен ли флаг у файла:<br />
<br />
#ls -lo /bsd<br />
-rw-r--r-- 1 root wheel schg 5358488 Mar 30 11:47 /bsd<br />
<br />
Как мы видим, выставлен флаг schg.<br />
Ниже представлено два популярных примера применения флагов:<br />
Запретим изменение ядра системы:<br />
<br />
# chflags schg /bsd<br />
<br />
Запретим изменение исполняемых файлов в /bin:<br />
<br />
# chflags -R schg /bin<br />
<br />
Можно поставить sappnd флаг на history файл пользователя root. Если злоумышленник проникнет в систему, то sappnd не позволит ему скрыть своих действий.<br />
Также выставление флага sappnd на history файл пользователя не позволит злоумышленникам использовать старый трюк с направлением history в устройство /dev/null с помощью мягкой ссылки.<br />
Флаги ядра для параноиков<br />
Вот такие рекомендации для OpenBSD сервера (только после окончательной настройки!):<br />
<br />
# chflags schg /bsd<br />
# chflags schg /etc/changelist<br />
# chflags schg /etc/daily<br />
# chflags schg /etc/inetd.conf<br />
# chflags schg /etc/netstart<br />
# chflags schg /etc/pf.conf<br />
# chflags schg /etc/rc<br />
# chflags schg /etc/rc.conf<br />
# chflags schg /etc/rc.local<br />
# chflags schg /etc/rc.securelevel<br />
# chflags schg /etc/rc.shutdown<br />
# chflags schg /etc/security<br />
# chflags schg /etc/mtree/special<br />
# chflags -R schg /bin<br />
# chflags -R schg /sbin<br />
# chflags -R schg /usr/bin<br />
# chflags -R schg /usr/libexec<br />
# chflags -R schg /usr/sbin<br />
<br />
=== Шифрование файла подкачки ===<br />
<br />
Шифрование файла подкачки может предотвратить опасность раскрытия важных данных(таких, как, например, ключи шифрования) локальными пользователями.<br />
По умолчанию OpenBSD 3.9 шифрует файл подкачки, для того же, чтобы включить эту функцию для более старых версий, необходимо:<br />
<br />
# Включить эту функцию без перезагрузки<br />
# Изменить конфигурационный файл sysctl, чтобы после перезагрузки системы шифрование файла подкачки было включено<br />
<br />
1. От ппользователем root измените значение sysctl переменной:<br />
# sysctl -w vm.swapencrypt.enable=1<br />
2. Измените файл /etc/sysctl.conf с:<br />
#vm.swapencrypt.enable=1<br />
на<br />
vm.swapencrypt.enable=1<br />
<br />
и проверьте после перезагрузки, изменилось ли значение sysctl переменной:<br />
sysctl vm.swapencrypt.enable<br />
<br />
=== Монтирование разделов ===<br />
<br />
Правильные параметры монтирования файловых систем способны весьма помочь в плане усиления общей безопасность системы. Файл /etc/fstab контролирует, как будут монтироваться файловые системы на этапе загрузки.<br />
Пара рекомендуемых конфигураций:<br />
<br />
Средне-параноидальная конфигурация:<br />
<br />
/dev/wd0a / ffs rw 1 1<br />
/dev/wd0h /home ffs rw,nodev,nosuid 1 2<br />
/dev/wd0d /tmp ffs rw,nodev,nosuid,noexec 1 2<br />
/dev/wd0g /usr ffs ro,nodev 1 2<br />
/dev/wd0e /var ffs rw,nodev,nosuid,noexec 1 2<br />
<br />
А тут ещё добавляем опцию read-only(ro) на корневой раздел(/) и опцию noexec на раздел /home:<br />
<br />
/dev/wd0a / ffs ro 1 1<br />
/dev/wd0h /home ffs rw,nodev,nosuid,noexec 1 2<br />
/dev/wd0d /tmp ffs rw,nodev,nosuid,noexec 1 2<br />
/dev/wd0g /usr ffs ro,nodev 1 2<br />
/dev/wd0e /var ffs rw,nodev,nosuid,noexec 1 2<br />
<br />
=== Использование rm с опцией -P ===<br />
При использовании команды rm с опцией -P содержимое файла перезаписывается 3 раза, прежде чем удалить его. В Linux подобный функционал обеспечивает команда shred.<br />
Использование:<br />
<br />
# rm -P filename<br />
<br />
Можно также создать псевдоним для команды rm -R в оболочке bash:<br />
<br />
# echo "alias rm='rm -P' " >> .bash_profile<br />
<br />
=== Увеличение минимальной длины пароля ===<br />
<br />
По умолчанию минимальная длина пароля в системе OpenBSD равна шести символам.<br />
Чтобы увеличить её до 10-ти символов, добавьте следующую строку под классом default в файле /etc/login.conf:<br />
<br />
:minpasswordlen=10:\<br />
<br />
В отличие от FreeBSD /etc/login.conf не должен быть сконвертирован после в файл БД с помощью cap_mkdb.<br />
<br />
<br />
== Обновление с помощью CVSup ==<br />
<br />
=== Введение ===<br />
<br />
Программа CVSup позволяет вам скачать и обновить файлы исходных кодов OpenBSD. Затем вы можете перекомпилировать ваше ядро, базовую систему и установленные в системе порты.<br />
Итак, вам потребуется:<br />
# On-line репозиторий<br />
# Программа CVSup<br />
# Конфигурационные файлы CVSup<br />
<br />
=== Установка CVSup ===<br />
<br />
Самый простой способ установки CVSup — это воспользоваться командой pkg_add следующим образом:<br />
<br />
# pkg_add -v ftp://ftp.openbsd.org/pub/OpenBSD/3.9/packages/i386/cvsup-16.1h-no_x11.tgz<br />
<br />
=== Конфигурационные файлы CVSup ===<br />
<br />
Создадим пару конфигурационных файлов для CVSup:<br />
<br />
cvsup-file-ports - для скачивания дерева портов<br />
cvsup-file-src - для скачивания исходных текстов системы(в т.ч. ядра)<br />
<br />
cvsup-file-port:<br />
<br />
<pre><br />
# Defaults that apply to all the collections<br />
*default release=cvs<br />
*default delete use-rel-suffix<br />
*default umask=002<br />
*default host=anoncvs3.usa.openbsd.org<br />
*default base=/usr<br />
*default prefix=/usr<br />
*default tag=OPENBSD_3_9<br />
<br />
# If your network link is a T1 or faster, comment out the following line.<br />
# *default compress<br />
<br />
OpenBSD-ports<br />
#OpenBSD-all<br />
#OpenBSD-src<br />
#OpenBSD-www<br />
#OpenBSD-x11<br />
#OpenBSD-xf4<br />
</pre><br />
<br />
Вместо anoncvs3.usa.openbsd.org укажите ближайший к Вам сервер.<br />
cvsup-file-src:<br />
<pre><br />
# Defaults that apply to all the collections<br />
*default release=cvs<br />
*default delete use-rel-suffix<br />
*default umask=002<br />
*default host=anoncvs3.usa.openbsd.org<br />
*default base=/usr<br />
*default prefix=/usr<br />
*default tag=OPENBSD_3_9<br />
<br />
# If your network link is a T1 or faster, comment out the following line.<br />
# *default compress<br />
<br />
#OpenBSD-ports<br />
#OpenBSD-all<br />
OpenBSD-src<br />
#OpenBSD-www<br />
#OpenBSD-x11<br />
#OpenBSD-xf4<br />
</pre><br />
<br />
Не забудьте также заменить anoncvs3.usa.openbsd.org.<br />
<br />
=== Запуск CVSup ===<br />
<br />
Запустим CVSup с использованием этих конфигурационных файлов,-<br />
Обновим дерево портов с cvsup-file-ports:<br />
<br />
# cvsup -g -L 2 cvsup-file-ports<br />
<br />
…тут вам скачается около 78Мб портов.<br />
Обновим дерево исходных текстов с cvsup-file-src:<br />
<br />
# cvsup -g -L 2 cvsup-file-src<br />
<br />
…на сей раз вам бухнется 570Мб.<br />
Проверка ваших портов(ports)<br />
После скачивания свежего дерева портов вам может быть необходимо узнать, требуется ли обновление уже установленных в системе портов.<br />
Это делается с помощью скрипта out-of-date, находящемся в каталоге /usr/ports/infrastructure/build.<br />
Так, приведённый ниже вывод работы скрипта указывает на отсутствие необходимости обновления каких-либо портов:<br />
<pre><br />
# cd /usr/ports/infrastructure/build/<br />
# ./out-of-date<br />
Collecting installed packages<br />
Collecting port versions: complete<br />
Collecting port signatures: complete<br />
Outdated ports:<br />
<br />
#<br />
</pre><br />
Противоположный пример:<br />
<pre><br />
# cd /usr/ports/infrastructure/build/<br />
# ./out-of-date<br />
Collecting installed packages<br />
Collecting port versions: complete<br />
Collecting port signatures: complete<br />
<br />
Outdated ports:<br />
<br />
www/mozilla-firefox # 1.5.0.1 -> 1.5.0.3<br />
#<br />
</pre><br />
Вывод указывает на необходимость обновления программы Firefox.<br />
<br />
=== Обновление портов ===<br />
<br />
Выше мы искали порты, требующие обновления с помощью специального скрипта, теперь же настала пора их собственно обновить. Вам потребуется наличие исходных файлов программы в папке /usr/ports/distfiles, либо соединение с Интернет. Далее необходимо:<br />
<br />
# Найти каталог порта в дереве портов<br />
# Скомпилировать и установить новый порт<br />
<br />
1. Находим каталог:<br />
<br />
# find /usr/ports/ -name mozilla-firefox<br />
/usr/ports/www/mozilla-firefox<br />
<br />
2. Компилируем и устанавливаем:<br />
<br />
# cd /usr/ports/www/mozilla-firefox/<br />
# make install<br />
<br />
=== Компиляция и установка ядра ===<br />
<br />
Порядок таков:<br />
<br />
# Создание резервной копии текущего ядра<br />
# Конфигурирование<br />
# Компиляция и установка нового ядра<br />
<br />
1. Делаем резервную копию ядра:<br />
# cp /bsd /bsd.old<br />
<br />
2. Конфигурируем ядро:<br />
# cd /usr/src/sys/arch/i386/conf/<br />
# config GENERIC<br />
<br />
3. Компилируем и устанавливаем новое ядро:<br />
# cd /usr/src/sys/arch/i386/compile/GENERIC/<br />
# make depend && make clean && make depend && make && make install<br />
<br />
Перезагружаемся, чтобы проверить новое ядро.<br />
<br />
=== Перекомпиляция системы ===<br />
<br />
После загрузки нового ядра можно приступить к обновлению/пересборке системы. Убедитесь, что у Вас существует директория /usr/obj, либо создайте её в случае отсутствия.<br />
Пересоберите систему:<br />
<br />
# cd /usr/src<br />
# find . -type l -name obj | xargs rm<br />
# make cleandir<br />
# rm -rf /usr/obj/*<br />
# make obj<br />
# cd /usr/src/etc<br />
# make DESTDIR=/ distrib-dirs<br />
# cd /usr/src<br />
# make build<br />
<br />
Выполнение make build занимает около часа на процессоре с частотой 2.6GHz, поэтому будьте терпеливы.<br />
<br />
[[Категория:Howto]]</div>172.16.0.1http://www.qbsd.ru/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B7%D0%B0%D0%B3%D1%80%D1%83%D0%B7%D0%BE%D1%87%D0%BD%D0%BE%D0%B9_%D1%84%D0%BB%D0%B5%D1%88%D0%BA%D0%B8&diff=111Создание загрузочной флешки2013-05-26T14:58:52Z<p>172.16.0.1: </p>
<hr />
<div>== Создание загрузочной флешки ==<br />
<br />
Данная статья 100 % копипаст с [http://www.openbsd.ru www.openbsd.ru]<br />
<br />
Пример дан для следующего устройства:<br />
<br />
sd2 at scsibus3 targ 1 lun 0: <SanDisk, SDDR-113, 9412> SCSI0 0/direct removable<br />
sd2: 3886MB, 512 bytes/sec, 7959552 sec total<br />
<br />
Вначале необходимо разметить файловую систему:<br />
<br />
# fdisk -iy sd2<br />
Writing MBR at offset 0.<br />
# disklabel -E sd2<br />
Label editor (enter '?' for help at any prompt)<br />
> a a<br />
offset: [64] <br />
size: [7952111] <br />
FS type: [4.2BSD] <br />
> w<br />
> q<br />
No label changes.<br />
# newfs /dev/rsd2a<br />
/dev/rsd2a: 3882.9MB in 7952096 sectors of 512 bytes<br />
20 cylinder groups of 202.47MB, 12958 blocks, 25984 inodes each<br />
super-block backups (for fsck -b #) at:<br />
32, 414688, 829344, 1244000, 1658656, 2073312, 2487968, 2902624, 3317280,<br />
3731936, 4146592, 4561248, 4975904, 5390560, 5805216, 6219872, 6634528,<br />
7049184, 7463840, 7878496,<br />
<br />
Затем примонтировать файловую систему к имеющейся и установить загрузчик:<br />
<br />
# mount /dev/sd2a /mnt<br />
# cp /usr/mdec/boot /mnt<br />
# /usr/mdec/installboot -v /mnt/boot /usr/mdec/biosboot sd2<br />
boot: /mnt/boot proto: /usr/mdec/biosboot device: /dev/rsd2c<br />
/mnt/boot is 3 blocks x 16384 bytes<br />
fs block shift 2; part offset 64; inode block 24, offset 936<br />
using MBR partition 3: type 0xA6 offset 64<br />
<br />
Далее необходимо записать необходимое содержимое и ядро (предпочтительно ramdisk) и настроить загрузчик на автоматическую загрузку выбранного ядра:<br />
<br />
# cp /bsd.rd /mnt<br />
# mkdir /mnt/etc<br />
# echo "set image /bsd.rd\nset timeout 10" >/mnt/etc/boot.conf<br />
<br />
После чего можно отмонтировать файловую систему и отсоединить устройство:<br />
<br />
# umount /mnt<br />
<br />
[[Категория:Howto]]</div>172.16.0.1http://www.qbsd.ru/index.php?title=%D0%A0%D1%83%D1%81%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D1%8F_%D0%BA%D0%BE%D0%BD%D1%81%D0%BE%D0%BB%D0%B8_OpenBSD&diff=110Русификация консоли OpenBSD2013-05-26T14:58:39Z<p>172.16.0.1: </p>
<hr />
<div>== Русификация консоли OpenBSD ==<br />
<br />
Данная статья 100 % копипаст с [http://www.obsd.ru www.obsd.ru]<br />
<br />
Автор: '''Игорь Грабин'''<br />
<br />
Подключение кириллической раскладки:<br />
добавляем ru в файл ''/etc/kbdtype'' (если файла не было, то он создается):<br />
# echo ru > /etc/kbdtype<br />
После чего добавляем в /etc/rc.local :<br />
wsfontload /usr/share/misc/pcvtfonts/koi8-r-8x16<br />
for cons in 1 2 3 4; do wsconscfg -dF $cons; wsconscfg -t 80x25bf $cons; done unset cons<br />
wsconsctl -w keyboard.map+ = "keycode 157=Mode_Lock"<br />
Вместо koi8-r-8x16 можно указать koi8-u-8x16<br />
В качестве переключателя раскладки используется ''правый CTRL''. Для использования ''правого Alt'' вместо ''правого Ctrl'':<br />
wsconsctl -w keyboard.map+ = "keycode 184=Mode_Lock"<br />
Замена «Mode_Lock» на «Mode_switch» приведет к необходимости удерживания указанной клавиши. Для других, собственных вариантов можно ознакомиться с содержанием файла /usr/include/dev/wscons /wsksymdef.h<br />
Замечание: Экран ttyC0 (который, как правило, «на F1») создаётся всегда и не может быть удалён, поэтому не может отображать кириллицу.<br />
Кириллица в ksh будет после выполнения:<br />
# set +o emacs-usemeta<br />
Для запоминания параметра добавить эту строку в $HOME/.profile<br />
Для bash в домашние каталоги пользователей надо добавить файл $HOME/.inputrc следующего содержания:<br />
set convert-meta off<br />
set input-meta on set output-meta on<br />
Русификация после перезагрузки системы будет работать также и в csh. Не будет лишним отредактировать/добавить нужные файлы в /etc/skel для того, чтобы вновь добавляемые пользователи уже имели кириллическую консоль.<br />
<br />
[[Категория:Howto]]</div>172.16.0.1http://www.qbsd.ru/index.php?title=%D0%A0%D1%83%D1%81%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D1%8F_OpenBSD&diff=109Русификация OpenBSD2013-05-26T14:58:27Z<p>172.16.0.1: </p>
<hr />
<div>== Русификация консоли ==<br />
<br />
Данная статья 100 % копипаст с [http://www.openbsd.ru www.openbsd.ru]<br />
<br />
Русификация консоли происходит в две стадии: смена раскладки клавиатуры и настройка русских шрифтов.<br />
<br />
== Раскладка клавиатуры ==<br />
<br />
Добавьте в файл /etc/wsconsctl.conf раскладку вашей клавиатуры. Если вы указали тип раскладки при установке системы, раскладка уже должна стоять правильно. Также укажите тип переключателя раскладки. В данном примере настраивается «sticky» переключение раскладок клавишей правый Ctrl.<br />
<pre><br />
keyboard.encoding=ru<br />
keyboard.map+="keycode 157 = Mode_Lock"<br />
</pre><br />
Текущую раскладку можно получить, выполнив следующую команду:<br />
<br />
# wsconsctl keyboard.map<br />
<br />
Для того чтобы поправить текущую раскладку клавиатуры, можно воспользоваться тем же приемом. Данный пример позволяет набирать букву «ё», нажимая комбинацию Shift+~ (раскладка Windows):<br />
<br />
keyboard.map+='keycode 41 = grave asciitilde Cyrillic_yo Cyrillic_YO'<br />
<br />
== Отображение кириллицы ==<br />
<br />
Для отображения кириллицы необходимо загрузить шрифт и настроить экраны (консоли).<br />
<br />
Экран ttyC0 создаётся ядром и не может быть удалён, поэтому на нем нельзя отобразить кириллицу.<br />
<br />
Исходя из количества экранов по умолчанию, добавим в /etc/rc.local следующие строки для создания шести дополнительных экранов с предварительно загруженным русским шрифтом. Не забудьте запустить на этих экранах процессы getty, см. ttys(5).<br />
<pre><br />
# загружаем русский koi8 шрифт<br />
wsfontload -h 16 /usr/share/misc/pcvtfonts/koi8-r-8x16<br />
# или украинский koi8 шрифт<br />
# wsfontload -h 16 /usr/share/misc/pcvtfonts/koi8-u-8x16<br />
<br />
# создаем консоли с поддержкой кириллицы<br />
for cons in 6 7 8 9 10 11; do<br />
wsconscfg -t 80x25bf $cons<br />
done<br />
</pre><br />
<br />
== Русификация X Window ==<br />
<br />
В файл конфигурации X Window /etc/X11/xorg.conf в раздел Section «Files» добавьте следующую строчку:<br />
<br />
FontPath "/usr/X11R6/lib/X11/fonts/cyrillic/"<br />
<br />
Также для управления шрифтами используется fontconfig, позволяющий использовать такие свойства TrueType шрифтов как антиалиасинг и хинтинг. Это средство широко используется в программах на основе тулкитов Gtk+ 2.x и Qt. Поэтому рекомендуется установить порт /usr/ports/x11/msttcorefonts, содержащий бесплатные шрифты от Microsoft или /usr/ports/x11/liberation-fonts.<br />
<br />
Для возможности ввода кириллицы следует настроить xkb.<br />
Настройка xkb<br />
<br />
Для того, чтобы настроить xkb:<br />
<br />
В Xorg необходимо добавить следующие строки в секцию InputDevice файла /etc/X11/xorg.conf:<br />
<pre><br />
Option "XkbModel" "pc105"<br />
Option "XkbLayout" "us,ru(winkeys)"<br />
Option "XkbOptions" "grp_led:scroll,grp:ctrl_shift_toggle"<br />
</pre><br />
В данном примере режим переключается комбинацией клавиш Ctrl+Shift. При переключении раскладки будет загораться Scroll Lock (если задан параметр grp_led).<br />
<br />
Также необходимо определить несколько переменных окружения. Этого можно достичь, добавив в файл ~/.xsession (если используется xdm) или ~/.xinitrc:<br />
<pre><br />
export LC_COLLATE=C LC_CTYPE=ru_RU.KOI8-R LC_MONETARY=C \<br />
LC_NUMERIC=C LC_TIME=C<br />
</pre><br />
Более подробную информацию по настройке xkb можно получить здесь.<br />
<br />
<br />
== Русификация программ ==<br />
<br />
<br />
=== Emacs ===<br />
<br />
Для того, чтобы заставить Emacs воспринимать 8-битные кодировки и в частности koi8-r, необходимо добавить следующие команды в ''~/.emacs'':<br />
<pre><br />
(set-language-environment "Cyrillic-KOI8")<br />
(set-keyboard-coding-system 'koi8-r)<br />
(set-terminal-coding-system 'koi8-r)<br />
</pre><br />
<br />
=== Fvwm (Fvwm2 и Fvwm95) ===<br />
<br />
Чтобы включить поддержку русских букв в менеджерах семейства fvwm, нужно указать шрифты «cronyx» в следующих строчках конфигурационного файла (''~/.fvwmrc'', ''~/.fvwm2rc'', ''~/.fvwm95rc''):<br />
<pre><br />
WindowFont -cronyx-helvetica-bold-r-*-*-12-*-*-*-*-*-*-*<br />
MenuFont -cronyx-helvetica-medium-r-*-*-12-*-*-*-*-*-*-*<br />
*FvwmPagerFont -cronyx-helvetica-bold-r-*-*-10-*-*-*-*-*-*-*<br />
*FvwmButtonsFont -cronyx-helvetica-bold-r-*-*-10-*-*-*-*-*-*-*<br />
*MiniButtonsFont -cronyx-helvetica-bold-r-*-*-10-*-*-*-*-*-*-*<br />
*FvwmIdentFont -cronyx-helvetica-medium-r-*-*-12-*-*-*-*-*-*-*<br />
*FvwmWinListFont -cronyx-helvetica-bold-r-*-*-10-*-*-*-*-*-*-*<br />
*FvwmTaskBarFont -cronyx-helvetica-medium-r-*-*-*-120-*-*-*-*-*-*<br />
*FvwmTaskBarSelFont -cronyx-helvetica-bold-r-*-*-*-120-*-*-*-*-*-*<br />
</pre><br />
<br />
=== Приложений на базе GTK+ 1.2 ===<br />
<br />
Все приложения на базе GTK+ версии 1.2 (GIMP, Sylpheed, X-Chat и другие) можно русифицировать, добавив в ''~/.gtkrc'' следующие строчки:<br />
<pre><br />
style "user-font"<br />
{<br />
font = "-cronyx-helvetica-*-r-normal-*-12-*-*-*-*-*-koi8-r"<br />
}<br />
<br />
widget_class "*" style "user-font"<br />
</pre><br />
<br />
=== ksh ===<br />
<br />
Для того, чтобы была возможность вводить кириллицу в ksh, необходимо добавить следующую команду в ~/.profile:<br />
<br />
set +o emacs-usemeta<br />
<br />
=== LaTeX ===<br />
<br />
Для того, чтобы документы могли содержать русские буквы, необходимо подключить пакет русификации и указать кодировку в преамбуле документа. Например:<br />
<pre><br />
\documentclass{article}<br />
\usepackage[koi8-r]{inputenc}<br />
\usepackage[russian]{babel}<br />
\begin{document}<br />
\LaTeX~--- макропакет, позволяющий авторам верстать и печатать их работы<br />
с высоким типографским качеством при помощи заранее определённых,<br />
профессиональных макетов.<br />
\end{document}<br />
</pre><br />
<br />
Для того, чтобы активизировать переносы в русских словах, запустите утилиту texconfig, выберите раздел hyphenation, далее latex и раскомментируйте строку:<br />
<br />
russian ruhyphen.tex<br />
<br />
mg — emacs-like text editor<br />
<br />
Чтобы заставить mg работать с русскими буквами, достаточно создать файл ~/.mg, содержащий строчку:<br />
<br />
meta-key-mode<br />
<br />
=== Readline приложений ===<br />
<br />
Приложения на базе readline (bash, mysql, psql, smbclient и т. д.) могут работать с русскими буквами. Для этого необходимо создать файл ~/.inputrc, содержащий следующие строки:<br />
<pre><br />
set convert-meta off<br />
set input-meta on<br />
set output-meta on<br />
</pre><br />
<br />
=== Samba ===<br />
<br />
Для того, чтобы Windows клиенты видели русские буквы, в файл /etc/samba/smb.conf в секцию [global] необходимо добавить следующие строки:<br />
<br />
Если используется samba 3.x:<br />
<pre><br />
dos charset = cp866<br />
unix charset = koi8-r<br />
</pre><br />
<br />
Если используется samba 2.x:<br />
<pre><br />
client code page = 866<br />
character set = koi8-r<br />
</pre><br />
<br />
Для того, чтобы в smbclient можно было вводить русские буквы, необходимо создать файл ~/.inputrc, как это описано в разделе, посвящённом русификации Readline приложений.<br />
Tab Window Manager<br />
<br />
Для того, чтобы Menu, Title и IconManager в TWM писали по-русски, необходимо изменить следующие строчки в ~/.twmrc (помимо остальной конфигурации TWM). Пример настройки TWM можно посмотреть тут.<br />
<pre><br />
TitleFont "-cronyx-helvetica-medium-r-normal-*-12-*-*-*-*-*-koi8-r"<br />
MenuFont "-cronyx-helvetica-medium-r-normal-*-12-*-*-*-*-*-koi8-r"<br />
IconManagerFont "-cronyx-helvetica-medium-r-normal-*-12-*-*-*-*-*-koi8-r"<br />
</pre><br />
<br />
=== xterm ===<br />
<br />
Начиная с версии OpenBSD 4.2 xterm поставляется из исходного кода xenocara. Для возможности ввода и вставки из буфера кириллицы необходимо при запуске xterm указывать опцию -k8:<br />
<br />
% xterm -k8<br />
<br />
Также можно установить данную настройку по умолчанию, добавив в файл ~/.Xdefaults следующую строчку:<br />
<br />
XTerm*allowC1Printable: true<br />
<br />
[[Категория:Howto]]</div>172.16.0.1http://www.qbsd.ru/index.php?title=%D0%A0%D1%83%D1%81%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D1%8F_OpenBSD_5.x&diff=108Русификация OpenBSD 5.x2013-05-26T14:58:00Z<p>172.16.0.1: </p>
<hr />
<div>== Русификация OpenBSD 5.x ==<br />
<br />
Данная статья 100 % копипаст с [http://www.openbsd.ru www.openbsd.ru]<br />
<br />
Начиная с OpenBSD 5.0, конфигурация X сервера слегка изменилась. Также в силу того, что теперь можно с большим удобством пользоваться Unicode локалью, предлагается следующий простой способ русификации: добавить определение LC_CTYPE и вызов setxkbmap(X11) в ~/.xsession (или ~/.xinitrc):<br />
<br />
export LC_CTYPE=en_US.UTF-8<br />
setxkbmap -layout 'us,ru(winkeys)' -option 'grp:caps_toggle,grp_led:scroll'<br />
<br />
Внимание: система предполагает, что конфигурационные файлы ~/.xsession и ~/.xinitrc являются shell-скриптами и последнее действие, совершаемое ими, должно быть запуском оконного менеджера или оконной среды, например: exec /usr/local/bin/fvwm2.<br />
<br />
После включения UTF-8 необходимо сконфигурировать XTerm через ~/.Xdefaults:<br />
<br />
XTerm*locale: utf8<br />
<br />
Проверить отображение UTF-8 символов можно распечаткой тестового файла на терминал.<br />
<br />
ksh по-прежнему необходимо отучать использовать старшие биты 8-битных кодировок как метасимволы:<br />
<br />
set +o emacs-usemeta<br />
<br />
Для VIM достаточно добавления таких опций:<br />
<br />
set encoding=utf-8<br />
set termencoding=utf-8<br />
<br />
Для указания использовать UTF-8 в TeX нужно подключить доп пакеты:<br />
<br />
\usepackage{ucs}<br />
\usepackage[utf8]{inputenc}<br />
<br />
Опции для irssi (подробнее):<br />
<br />
/set term_charset utf-8<br />
/set recode_out_default_charset utf-8<br />
/set recode_autodetect_utf8 ON<br />
/set recode_fallback utf-8<br />
/set recode_transliterate ON<br />
/set recode ON<br />
/save<br />
<br />
Mutt’у можно задать список кодировок:<br />
<br />
set assumed_charset="koi8-r:utf-8"<br />
<br />
Опции для music player daemon:<br />
<br />
mpd.conf<br />
# The encoding that ID3v1 tags should be converted from.<br />
#id3v1_encoding "UTF-8"<br />
<br />
Для конвертирования тегов mp3 файлов в кодировку UTF-8 можно использовать пакет py-mutagen:<br />
<br />
find ~/music/ -iname '*.mp3' -print0 | xargs -0 mid3iconv -e UTF-8 --remove-v1<br />
<br />
[[Категория:Howto]]</div>172.16.0.1http://www.qbsd.ru/index.php?title=%D0%9D%D0%BE%D0%B2%D0%BE%D0%B5_IPSec_howto&diff=107Новое IPSec howto2013-05-26T14:57:42Z<p>172.16.0.1: </p>
<hr />
<div>== IPsec и IKE ==<br />
<br />
Данная статья 100 % копипаст с [http://www.openbsd.ru www.openbsd.ru]<br />
<br />
=== ISAKMP/Oakley ===<br />
<br />
Страницы руководств: [http://www.openbsd.org/cgi-bin/man.cgi?query=ipsec.conf ipsec.conf] [http://www.openbsd.org/cgi-bin/man.cgi?query=ipsecctl ipsecctl] [http://www.openbsd.org/cgi-bin/man.cgi?query=isakmpd isakmpd]<br />
<br />
=== IKEv2 ===<br />
<br />
<br />
Поддержка протокола IKEv2, решающего ряд проблем ISAKMP/Oakley, реализована в [http://www.openbsd.org/cgi-bin/man.cgi?query=iked iked ] начиная с OpenBSD 5.1. Конфигурация сервера производится редактированием файла ''/etc/iked.conf''. Например, для того чтобы произвести доступ к частной сети 10.0.0.0/16 по IPsec с использованием PSK аутентификации необходимо сконфигурировать сервер (172.23.61.134) для доступа клиентов (172.23.61.0/24):<br />
<br />
<source lang=c><br />
ikev2 "test" esp from 10.0.0.0/16 to any \<br />
peer 172.23.61.0/24 local 172.23.61.134 \<br />
psk humppa<br />
</source><br />
<br />
и клиент (172.23.61.156):<br />
<source lang=c><br />
ikev2 "test" active esp from any to 10.0.0.0/16 \<br />
peer 172.23.61.134 local 172.23.61.156 \<br />
psk humppa<br />
</source><br />
<br />
Протестировать конфигурацию можно запустив [http://www.openbsd.org/cgi-bin/man.cgi?query=iked iked ] в режиме отладки:<br />
<br />
# iked -dv<br />
<br />
Дополнительную отладочную печать можно получить, указав два или три ключа ''-v''.<br />
<br />
Аутентификация по X.509 сертификатам также поддерживается. Сертификаты могут быть созданы программой [http://www.openbsd.org/cgi-bin/man.cgi?query=ikectl ikectl].<br />
<br />
[[Категория:Howto]]</div>172.16.0.1http://www.qbsd.ru/index.php?title=%D0%9D%D0%B0%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D0%B5_OpenBSD_Loadable_Kernel_Modules_(LKM)&diff=106Написание OpenBSD Loadable Kernel Modules (LKM)2013-05-26T14:57:29Z<p>172.16.0.1: </p>
<hr />
<div>== Написание OpenBSD Loadable Kernel Modules (LKM) ==<br />
<br />
Данная статья 100 % копипаст с [http://www.openbsd.ru www.openbsd.ru]<br />
<br />
Является вольным переводом статьи '''OpenBSD Loadable Kernel Modules By Peter Werner''' [mailto: peter_a_werner@yahoo.com peter_a_werner@yahoo.com]<br />
[http://freeworld.thc.org/root/docs/loadable_kernel_modules/openbsd-lkm.html оригинал]<br />
<br />
=== Введение ===<br />
<br />
LKM позволяют динамически добавлять или удалять функциональность рабочей системы. Это также позволяет разработчикам тестировать изменения частей ядра без перезагрузки системы.<br />
<br />
Недостаток LKM — потенциальная дыра в безопасности. Для загрузки модулей [http://www.openbsd.org/cgi-bin/man.cgi?query=securelevel securelevel]ядра должен быть меньше 0. Если требуется загрузить модуль, то необходимо указать это в [http://www.openbsd.org/cgi-bin/man.cgi?query=rc.securelevel rc.securelevel]. Если вы разрабатываете модуль, то необходимо установить ''securelevel = −1'', таким образом можно загружать и выгружать модуль в любое время.<br />
<br />
Взаимодействие с /dev/lkm выполняется через вызовы ioctl(2). В основном используется modload(8), modunload(8) и modstat(8) для загрузки, выгрузки и получения статистики.<br />
<br />
Интерфейс lkm определяет пять типов модулей:<br />
<br />
* System calls<br />
* Virtual File System<br />
* Device Driver<br />
* Execution Interpreter<br />
* Miscellaneous<br />
<br />
'''System calls''' — заменяет системные вызовы. Все системные вызовы могут быть заменены, но стоит обратить внимания на [http://www.openbsd.org/cgi-bin/man.cgi?query=ioctl ioctl], так как он используется для загрузки и выгрузки модуля. После выгрузки модуля замененный системный вызов возвращается на исходный.<br /><br />
'''Virtual File System''' — добавляет виртуальные файловые системы.<br /><br />
'''Device Driver''' — добавляет новые символьные или блочные устройства.<br /><br />
'''Execution Interpreter''' — добавляет код для загрузки и выполнения двоичных файлов, которые не поддерживаются системой, примером могут быть эмуляции выполнения двоичных файлов различных операционных систем.<br /><br />
'''Miscellaneous''' — в этот тип входит все что не описано выше, при этом следует учесть, что при замене системных вызовов, возвращение в исходное состояние должно осуществляться кодом модуля.<br /><br />
<br />
Обычно модуль состоит из трех частей:<br />
<br />
# Обработчик загрузки, выгрузки модуля<br />
# Внешняя точка входа, используемая modload<br />
# Функциональный код модуля<br />
<br />
=== Модуль System Call ===<br />
<br />
Здесь мы добавим новый системный вызов который будет выводить аргументы вызова. Прототип функции:<br />
<br />
<source lang=c><br />
int syscall(int, char *)<br />
</source><br />
<br />
Внутреннее описание lkm структуры выглядит так:<br />
<br />
<source lang=c><br />
struct lkm_syscall {<br />
MODTYPE lkm_type; /* тип модуля, в данном случае LM_SYSCALL */ <br />
int lkm_ver; /* версия lkm интерфейса */<br />
сhar *lkm_name; /* имя модуля */<br />
u_long lkm_offset; /* положение системного вызова в таблице */<br />
struct sysent *lkm_sysent; /* указатель на struct sysent системного вызова */<br />
struct sysent lkm_oldent; /* место для копии содержимого таблицы вызовов до загрузки */<br />
};<br />
</source><br />
<br />
Инициализация происходит используя макрос MOD_SYSCALL:<br />
<source lang=c><br />
MOD_SYSCALL("ourcall", -1, &newcallent); /* устанавливает имя "ourcall", положение в таблице системных вызовов,<br />
* в данном случае -1 т.е. не имеет значение, положение определяется автоматически,<br />
* newcallent - данные системного вызова<br />
*/<br />
</source><br />
Так же должны описать обработчик загрузки/выгрузки модуля. Обработчики устанавливают функции исполняемые при загрузке, выгрузке и получении статистики. Если обработчик не требуется просто указывается функция lkm_nofunc() для данного типа события.<br />
<br />
Внешняя точка входа модуля ourcall использует макрос DISPATCH:<br />
<source lang=c><br />
int<br />
ourcall(lkmtp, cmd, ver)<br />
struct lkm_table *lkmtp;<br />
int cmd;<br />
int ver;<br />
{<br />
DISPATCH(lkmtp, cmd, ver, ourcall_handler, ourcall_handler, lkm_nofunc); <br />
}<br />
</source><br />
где ourcall_handler — функция обработчик, а cmd — вид команды, который может принимать значение:<br />
* LKM_E_LOAD — загрузка<br />
* LKM_E_UNLOAD — выгрузка<br />
* LKM_E_STAT — получение статистики<br />
<br />
Собственно код модуля (ourcall.c):<br />
<source lang=c><br />
#include <sys/param.h><br />
#include <sys/systm.h><br />
#include <sys/ioctl.h><br />
#include <sys/cdefs.h><br />
#include <sys/conf.h><br />
#include <sys/mount.h><br />
#include <sys/exec.h><br />
#include <sys/lkm.h><br />
#include <sys/proc.h><br />
#include <sys/syscallargs.h><br />
<br />
<br />
/* прототип нашего системного вызова */<br />
int newcall (struct proc *, void *, int *); /* Все системные вызовы имеют три аргумента: Указатель на <br />
* struct proc - процесс который вызывает, указатель void на аргументы и <br />
* указатель на возвращаемое значение.<br />
*/<br />
/* аргументы системного вызова */<br />
struct newcall_args{<br />
syscallarg(int) value;<br />
syscallarg(char *) msg;<br />
};<br />
<br />
/* <br />
* Определяем наш системный вызов. Первый аргумент кол-во аргументов, второй - размер аргументов, <br />
* третий флаги - SY_NOLOCK или SY_MPSAFE, и четвертый - собственно функция системного вызова.<br />
*/<br />
<br />
static struct sysent newcallent = {2, sizeof(struct newcall_args), 0, newcall};<br />
<br />
/*<br />
* Инициализируем внутреннюю структуру нашего модуля <br />
*/ <br />
<br />
MOD_SYSCALL("ourcall", -1, &newcallent);<br />
<br />
/*<br />
* Обработчик загрузки/выгрузки модуля<br />
*/<br />
<br />
static int<br />
ourcall_handler(struct lkm_table *lkmtp, int cmd)<br />
{<br />
if (cmd == LKM_E_LOAD) <br />
printf("hi!\n");<br />
else if (cmd == LKM_E_UNLOAD)<br />
printf("bye!\n");<br />
<br />
return(0);<br />
}<br />
<br />
/* <br />
* Внешняя точка входа модуля, используется для загрузки, выгрузки и получения статистики через modload(8),<br />
* modunload(8) и modstat(8). Устанавливаем функцию обработчик ourcall_handler, вызываемую при загрузке и<br />
* выгрузке модуля. <br />
*/<br />
<br />
int<br />
ourcall(struct lkm_table *lkmtp, int cmd, int ver)<br />
{<br />
DISPATCH(lkmtp, cmd, ver, ourcall_handler, ourcall_handler, lkm_nofunc);<br />
}<br />
<br />
/* <br />
* Собственно сам код системного вызова<br />
*/<br />
<br />
int<br />
newcall(struct proc *p, void *v, int *retval)<br />
{<br />
struct newcall_args *uap = v;<br />
printf("newcall called with msg %s and value %d\n", SCARG(uap, msg), SCARG(uap, value));<br />
return(0);<br />
}<br />
</source><br />
<br />
Компиляция и установка:<br />
<source lang=bash><br />
# cc -D_KERNEL -I/sys -c ourcall.c -o syscall.o<br />
# modload -o ourcall.o -eourcall syscall.o<br />
Module loaded as ID 0<br />
<br />
# modtstat<br />
Type Id Off Loadaddr Size Info Rev Module Name<br />
SYSCALL 0 210 d76cd000 0001 d76cd1a0 2 ourcall<br />
<br />
# dmesg | tail -2<br />
hi!<br />
DDB symbols added: 372192 bytes<br />
</source><br />
<br />
Протестировать модуль можно при помощи следующей программы (testourcall.c):<br />
<source lang=c><br />
#include <stdio.h><br />
#include <stdlib.h><br />
<br />
static void usage(void);<br />
<br />
int<br />
main(int argc, char *argv[])<br />
{<br />
int err = 0;<br />
int syscall_num = 0;<br />
<br />
if (argc != 2)<br />
usage();<br />
<br />
if ((syscall_num = atoi(argv[1]))>0)<br />
if (err = syscall(syscall_num, 10, "testourcall"))<br />
errx(err,"syscall");<br />
}<br />
<br />
static void usage(void){<br />
extern char *__progname;<br />
(void)fprintf(stderr, "usage: %s value\n", __progname);<br />
exit(1);<br />
}<br />
</source><br />
<br />
Соберем программу:<br />
<source lang=bash><br />
# make testcall<br />
cc -O2 -pipe -o testourcall testourcall.c<br />
</source><br />
<br />
Запустим и получим результат(210 — значение offset, полученное через modstat(8)):<br />
<source lang=bash><br />
# ./testourcall 210<br />
# dmesg | tail -1<br />
newcall called with msg testourcall and value 10<br />
</source><br />
Чтобы выгрузить модуль:<br />
<source lang=bash><br />
# modunload -n ourcall<br />
</source><br />
Получим результат:<br />
<source lang=bash><br />
# dmesg | tail -1<br />
bye!<br />
</source><br />
<br />
=== Модуль Virtual File System ===<br />
<br />
Добавление виртуальной файловой системы очень простая задача. Необходимо лишь добавить точку входа.<br />
<br />
Структура vfs модуля выглядит так:<br />
<source lang=c><br />
struct lkm_vfs {<br />
MODTYPE lkm_type; /* тип модуля, в данном случае LM_VFS */<br />
int lkm_ver; /* версия lkm интерфейса */<br />
char *lkm_name; /* имя модуля */<br />
u_long lkm_offset; /* положение vfs */<br />
struct vfsconf *lkm_vfsconf; /* указатель на vfs операции */<br />
};<br />
</source><br />
<br />
В этом случае положение (offset) не используется.<br />
<br />
Структура инициализируется через макрос MOD_VFS:<br />
<source lang=c><br />
MOD_VFS("nullfs", -1, &nullfs_vfsconf)<br />
</source><br />
<br />
Первый аргумент это имя модуля, второй положение, в данном случае не имеет значения. Наконец инициализированная структура vfsconf файловой системы.<br />
<br />
Рассмотрим все вышеописанное на примере [http://www.openbsd.ru/cgi-bin/cvsweb/src/lkm/nullfs/lkm nullfs]<br />
<br />
код модуля (null_lkm.c):<br />
<source lang=c><br />
#include <sys/param.h><br />
#include <sys/ioctl.h><br />
#include <sys/systm.h><br />
#include <sys/conf.h><br />
#include <sys/mount.h><br />
#include <sys/exec.h><br />
#include <sys/lkm.h><br />
#include <sys/file.h><br />
#include <sys/errno.h><br />
<br />
extern struct vfsops null_vfsops;<br />
int nullfs_lkmentry(struct lkm_table *, int, int);<br />
<br />
/* Определяем вектор vfs операций */<br />
<br />
#define MOUNT_NULLFS "nullfs"<br />
#define FS_NULLFS 22<br />
<br />
struct vfsconf null_vfsconf = {<br />
&null_vfsops, MOUNT_NULLFS, FS_NULLFS, 0, 0, NULL<br />
};<br />
<br />
/*<br />
* Инициализируем внутреннюю структуру нашего модуля <br />
*/ <br />
MOD_VFS("nullfs", -1, &null_vfsconf)<br />
<br />
/* <br />
* Внешняя точка входа модуля, используется для загрузки, выгрузки и получения статистики через modload(8),<br />
* modunload(8) и modstat(8). Устанавливаем lkm_nofunc, т.к. vfs подсистема сама занимается инициализацией и т.д.<br />
*/<br />
<br />
int<br />
nullfs_lkmentry(struct lkm_table *lkmtp, int cmd, int ver)<br />
{<br />
DISPATCH(lkmtp, cmd, ver, lkm_nofunc, lkm_nofunc, lkm_nofunc);<br />
}<br />
</source><br />
<br />
Компиляция и загрузка:<br />
<source lang=bash><br />
# cd lkm/<br />
# make<br />
# make load<br />
# modstat<br />
Type Id Off Loadaddr Size Info Rev Module Name<br />
VFS 0 -1 d80b7000 0002 d80b85e4 2 nullfs<br />
</source><br />
Утилита монтирования nullfs системы находится bin/mount_nullfs Код модуля доступен через cvs, адрес: [http://www.openbsd.ru/cgi-bin/cvsweb/src/lkm/nullfs http://www.openbsd.ru/cgi-bin/cvsweb/src/lkm/nullfs]<br />
<br />
=== Модуль Device Driver ===<br />
<br />
Модуль драйвера устройств имеет схожий вид модулем системных вызовов. Описывается как:<br />
<source lang=c><br />
struct lkm_dev {<br />
MODTYPE lkm_type; /* тип модуля, в данном случае LM_SYSCALL */<br />
int lkm_ver; /* версия lkm интерфейса */ <br />
char *lkm_name; /* имя модуля */<br />
u_long lkm_offset; /* положение устройства в таблице cdevsw[] или bdevsw[] */<br />
DEVTYPE lkm_devtype; /* тип устройства: блочное или символьное, значения LM_DT_CHAR или LM_DT_BLOCK */<br />
union {<br />
void *anon;<br />
struct bdevsw *bdev; <br />
struct cdevsw *cdev;<br />
} lkm_dev; /* функции устройства */<br />
union<br />
{<br />
struct bdevsw bdev;<br />
struct cdevsw cdev;<br />
} lkm_olddev; /* функции заменяемого устройства, при загрузке */<br />
};<br />
</source><br />
<br />
Инициализация происходит через макрос MOD_DEV:<br />
<br />
<source lang=c><br />
MOD_DEV("ourdev", LM_DT_CHAR, -1, &cdev_ourdev); /* устанавливает имя символьного устройства с параметрами из cdev_ourdev */<br />
</source><br />
<br />
Наше устройство будет поддерживать четыре вида операций: open, close, read и ioctl. Функционально хранит строку и число которое может быть установлено через ioctl, поддерживает чтение строки через read. Внутренне описывается как:<br />
<source lang=c><br />
#define MAXMSGLEN 100<br />
<br />
struct ourdev_io {<br />
int value;<br />
char msg[MAXMSGLEN];<br />
};<br />
</source><br />
При загрузке модуля мы инициализируем value с значением 13 и msg — «hello world!» как строку. Так же определяем два ioctl получения и установления значений. Оба вызова принимают аргумент ourdev_io.<br />
<br />
Код устройства (chardev.c):<br />
<source lang=c><br />
#include <sys/param.h><br />
#include <sys/fcntl.h><br />
#include <sys/systm.h><br />
#include <sys/ioctl.h><br />
#include <sys/exec.h><br />
#include <sys/conf.h><br />
#include <sys/lkm.h><br />
<br />
<br />
/* <br />
* Прототипы поддерживаемых операций - open, close, read and ioctl <br />
*/<br />
<br />
int ourdevopen (dev_t, int, int, struct proc *);<br />
int ourdevclose (dev_t, int, int, struct proc *);<br />
int ourdevread (dev_t, struct uio *, int);<br />
int ourdevioctl (dev_t, u_long, caddr_t, int, struct proc *);<br />
int ourdev_handler (struct lkm_table *, int);<br />
<br />
/* <br />
* Объявляем внутреннюю структуру устройства<br />
*/<br />
<br />
#define MAXMSGLEN 100<br />
<br />
struct ourdev_io {<br />
int value;<br />
char msg[MAXMSGLEN];<br />
};<br />
<br />
static struct ourdev_io dio;<br />
<br />
/* <br />
* Здесь инициализируем вектор операций устройства. <br />
*/<br />
<br />
cdev_decl(ourdev);<br />
static struct cdevsw cdev_ourdev = cdev_ourdev_init(1, ourdev);<br />
<br />
<br />
/* <br />
* Инициализируем lkm интерфейс<br />
*/<br />
<br />
MOD_DEV("ourdev", LM_DT_CHAR, -1, &cdev_ourdev)<br />
<br />
/*<br />
* Действия при открытие<br />
*/<br />
<br />
int<br />
ourdevopen(dev_t dev, int oflags, int devtype, struct proc *p)<br />
{<br />
printf("device opened, hi!\n");<br />
return(0);<br />
}<br />
<br />
/*<br />
* Действия при закрытии<br />
*/<br />
int<br />
ourdevclose(dev_t dev, int oflags, int devtype, struct proc *p)<br />
{<br />
printf("device closed! bye!\n");<br />
return(0);<br />
}<br />
<br />
/*<br />
* Действия при чтении<br />
*/<br />
<br />
int<br />
ourdevread(dev_t dev, struct uio *uio, int ioflag)<br />
{<br />
int resid = MAXMSGLEN;<br />
int error = 0;<br />
do {<br />
if (uio->uio_resid < resid)<br />
resid = uio->uio_resid;<br />
<br />
error = uiomove(dio.msg, resid, uio); <br />
} while (resid > 0 && error == 0);<br />
<br />
return(error);<br />
}<br />
<br />
/*<br />
* Действия на ioctl вызовы <br />
*/<br />
<br />
int<br />
ourdevioctl(dev_t dev, u_long cmd, caddr_t data, int fflag, struct proc *p)<br />
{<br />
struct ourdev_io *d;<br />
int error = 0;<br />
<br />
switch(cmd) {<br />
case ODREAD: /* чтение параметрова */<br />
d = (struct ourdev_io *)data;<br />
d->value = dio.value;<br />
error = copyoutstr(&dio.msg, d->msg, MAXMSGLEN - 1, NULL);<br />
break;<br />
case ODWRITE: /* установка параметров */<br />
if ((fflag & FWRITE) == 0)<br />
return(EPERM);<br />
d = (struct ourdev_io *)data;<br />
dio.value = d->value;<br />
bzero(&dio.msg, MAXMSGLEN);<br />
error = copyinstr(d->msg, &dio.msg, MAXMSGLEN - 1, NULL);<br />
break;<br />
default: <br />
error = ENODEV; /* операция не поддерживается */<br />
break;<br />
}<br />
<br />
return(error);<br />
}<br />
<br />
/*<br />
* внешняя точка входя для загрузки/выгрузки и т.д.<br />
*/<br />
<br />
int<br />
ourdev(struct lkm_table *lkmtp, int cmd, int ver)<br />
{<br />
DISPATCH(lkmtp, cmd, ver, ourdev_handler, lkm_nofunc, lkm_nofunc)<br />
}<br />
<br />
/*<br />
* Обработчик загрузки/выгрузки <br />
*/<br />
<br />
int<br />
ourdev_handler(struct lkm_table *lkmtp, int cmd)<br />
{<br />
struct lkm_dev *args = lkmtp->private.lkm_dev;<br />
<br />
if (cmd == LKM_E_LOAD) {<br />
dio.value = 13;<br />
strncpy(dio.msg,"hello world!\n", MAXMSGLEN - 1);<br />
printf("loading module %s\n", args->lkm_name);<br />
}<br />
<br />
return 0;<br />
}<br />
</source><br />
<br />
== Модуль Execution Interpreter ==<br />
<br />
=== Модуль Miscellaneous ===<br />
<br />
Данный тип модулей используется для категорий которые не прдставлены выше.<br />
<br />
Описывается как:<br />
<br />
<source lang=c><br />
struct lkm_misc {<br />
MODTYPE lkm_type; /* тип модуля, в данном случае LM_MISC */<br />
int lkm_ver; /* версия lkm интерфейса */<br />
char *lkm_name; /* имя модуля */<br />
u_long lkm_offset;<br />
};<br />
</source><br />
Структура инициализируется через макрос MOD_MISC:<br />
<source lang=c><br />
MOD_MISC("ourmodule");<br />
</source><br />
Следует заметить, что при данном типе модулей используется только имя модуля.<br />
<br />
Рассмотрим все вышеописанное на примере [http://www.openbsd.ru/cgi-bin/cvsweb/src/lkm/rucd rucd]<br />
<br />
Код модуля (rucd.c):<br />
<source lang=c><br />
#include <sys/param.h><br />
#include <sys/conf.h><br />
#include <sys/exec.h><br />
#include <sys/systm.h><br />
#include <sys/lkm.h><br />
<br />
/* таблица перекодировки utf в koi8r */<br />
<br />
static u_int16_t utf2koi8r[256] = {<br />
0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,<br />
0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,<br />
0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,<br />
0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,<br />
0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,<br />
0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,<br />
0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,<br />
0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,<br />
0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,<br />
0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,<br />
0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,<br />
0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,<br />
0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,<br />
0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,<br />
0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,<br />
0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,<br />
0x2500, 0x2502, 0x250c, 0x2510, 0x2514, 0x2518, 0x251c, 0x2524,<br />
0x252c, 0x2534, 0x253c, 0x2580, 0x2584, 0x2588, 0x258c, 0x2590,<br />
0x2591, 0x2592, 0x2593, 0x2320, 0x25a0, 0x2219, 0x221a, 0x2248,<br />
0x2264, 0x2265, 0x00a0, 0x2321, 0x00b0, 0x00b2, 0x00b7, 0x00f7,<br />
0x2550, 0x2551, 0x2552, 0x0451, 0x2553, 0x2554, 0x2555, 0x2556,<br />
0x2557, 0x2558, 0x2559, 0x255a, 0x255b, 0x255c, 0x255d, 0x255e,<br />
0x255f, 0x2560, 0x2561, 0x0401, 0x2562, 0x2563, 0x2564, 0x2565,<br />
0x2566, 0x2567, 0x2568, 0x2569, 0x256a, 0x256b, 0x256c, 0x00a9,<br />
0x044e, 0x0430, 0x0431, 0x0446, 0x0434, 0x0435, 0x0444, 0x0433,<br />
0x0445, 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e,<br />
0x043f, 0x044f, 0x0440, 0x0441, 0x0442, 0x0443, 0x0436, 0x0432,<br />
0x044c, 0x044b, 0x0437, 0x0448, 0x044d, 0x0449, 0x0447, 0x044a,<br />
0x042e, 0x0410, 0x0411, 0x0426, 0x0414, 0x0415, 0x0424, 0x0413,<br />
0x0425, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e,<br />
0x041f, 0x042f, 0x0420, 0x0421, 0x0422, 0x0423, 0x0416, 0x0412,<br />
0x042c, 0x042b, 0x0417, 0x0428, 0x042d, 0x0429, 0x0427, 0x042a<br />
};<br />
<br />
<br />
extern u_char (*cd9660_wchar2char)(u_int32_t wchar);<br />
<br />
extern int lkmexists(struct lkm_table *);<br />
<br />
int rucd_lkmentry(struct lkm_table *, int, int);<br />
<br />
/* <br />
* Инициализируем lkm интерфейс<br />
*/<br />
<br />
MOD_MISC("rucd")<br />
<br />
/* Функция перекодирования с utf в koi8r */<br />
<br />
static u_char<br />
conv_utf2koi8r(u_int32_t wchar)<br />
{<br />
u_char schar;<br />
int i;<br />
<br />
schar = '?';<br />
for (i = 0; i < 256; i++) {<br />
if (utf2koi8r[i] == wchar) {<br />
schar = i;<br />
break;<br />
}<br />
}<br />
return (schar);<br />
}<br />
<br />
/*<br />
* внешняя точка входя для загрузки/выгрузки и т.д.<br />
*/<br />
<br />
static int<br />
rucd_handle(struct lkm_table *lkmtp, int cmd)<br />
{<br />
switch (cmd) {<br />
case LKM_E_LOAD:<br />
if (lkmexists(lkmtp))<br />
return (EEXIST);<br />
cd9660_wchar2char = conv_utf2koi8r;<br />
break;<br />
case LKM_E_UNLOAD:<br />
cd9660_wchar2char = NULL;<br />
break;<br />
default:<br />
return (EINVAL);<br />
}<br />
return (0);<br />
}<br />
/*<br />
* Обработчик загрузки/выгрузки <br />
*/<br />
<br />
int<br />
rucd_lkmentry(struct lkm_table *lkmtp, int cmd, int ver)<br />
{<br />
DISPATCH(lkmtp, cmd, ver, rucd_handle, rucd_handle, lkm_nofunc);<br />
}<br />
</source><br />
<br />
[[Категория:Howto]]</div>172.16.0.1http://www.qbsd.ru/index.php?title=%D0%98%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D1%84%D0%B0%D0%B9%D0%BB%D0%B0_mk.conf&diff=105Использование файла mk.conf2013-05-26T14:57:11Z<p>172.16.0.1: /* Примеры использования mk.conf */</p>
<hr />
<div>== Использование файла mk.conf ==<br />
<br />
Данная статья 100 % копипаст с [http://www.openbsd.ru www.openbsd.ru]<br />
<br />
=== Зачем это нужно? ===<br />
<br />
Многие администраторы OpenBSD предпочитают собирать систему самостоятельно, из исходных текстов, а также собирать и устанавливать packages из дерева портов. При этом часто используется файл /etc/mk.conf, позволяющий указать, какие именно возможности требуются от системы. Наиболее часто этот файл используется, чтобы отключить Kerberos и тому подобные возможности, которые нужны довольно редко. Но это далеко не единственная область, где возможно применение файла mk.conf.<br />
<br />
Часто нам хочется включить в систему некоторые возможности, которые не включены в системных компонентах, но поддерживаются этими компонентами (например SMTP Authentication в sendmail). Однако ставить для этого данные компоненты «вручную» из исходных кодов неудобно:<br />
<br />
То, что идёт с системой, лучше проверено именно с OpenBSD. После каждой пересборки системы нужно следить, чтобы установленное «вручную» ПО продолжало работать в новой системе.<br />
<br />
Очень часто мы бываем недовольны некоторыми особенностями программ, устанавливаемых из портов, или просто хотим немного подправить устанавливаемую программу под свои конкретные цели… Словом, иногда возникает ситуация, когда есть потребность сделать что-то, ради чего не стоит беспокоить народ из ports@openbsd.org :)<br />
<br />
И здесь нам снова поможет mk.conf.<br />
<br />
=== Примеры использования mk.conf ===<br />
<br />
Рассмотрим некоторые варианты использования mk.conf на примере набора для облегчения жизни site.tar.gz Данный набор состоит собственно из файла mk.conf и набора патчей, используемых им в своих целях. Данный набор можно установить в свою систему и дополнять по мере надобности. Для установки достаточно скачать файл site.tar.gz и выполнить следующие команды:<br />
<source lang=bash><br />
# cd /etc<br />
# tar xfz <путь-до-файла>/site.tar.gz<br />
# ln -sf site/mk.conf .<br />
</source><br />
После установки данного набора остается только отредактировать файл mk.conf и настроить его под свои нужды (рассматриваемые в данной статье настройки могут отличаться от настроек в текущей версии site.tar.gz):<br />
<source lang=c><br />
# Настройки собираемой системы.<br />
#<br />
SKEY?= Yes # Включать поддержку S/Key<br />
KERBEROS5?= Yes # Включать поддержку Kerberos V<br />
YP?= Yes # Включать поддержку NIS<br />
TCP_WRAPPERS?= Yes # Включать поддержку libwrap и tcpd<br />
AFS?= Yes # Включать поддержку AFS<br />
Данные настройки определяют, какие стандартные компоненты должны быть включены в собираемую из исходных текстов систему.<br />
NOPROFILE?= No # Не собирать profiled библиотеки<br />
Данные настройки определяют, нужно ли собирать profiled библиотеки.<br />
CRUNCH?= No # Собирать crunchgen и crunchide<br />
</source><br />
Данная настройка определяет, нужно ли собирать crunchgen и crunchide, необходимые для сборки дистрибутива OpenBSD.<br />
<source lang=c><br />
# Настройки suexec для хостинга<br />
#<br />
PATCH_SUEXEC?= Yes # Научить suexec понимать login.conf<br />
SUEXEC_DOCROOT?= /home/www # Корневой каталог серверов<br />
SETUID_SUEXEC?= Yes # Устанавливать как setuid<br />
</source><br />
Данные настройки определяют, требуется ли поддержка login классов в suexec, корневой каталог для документов с точки зрения suexec и следует ли его устанавливать как setuid программу (необходимо, если планируется использование suexec).<br />
<source lang=c><br />
SENDMAIL_SASL?= No # Включить поддержку SASL2<br />
#SENDMAIL_LIBMILTER?= No # Включить поддержку libmilter<br />
#INSTALL_LIBMILTER?= No # Устанавливать libmilter<br />
</source><br />
Данные настройки определяют, следует ли собирать sendmail с поддержкой SASL2 для использования возможности авторизации SMTP (в системе должен быть установлен порт secuity/cyrus-sasl2, а также следует ли включить поддержку Milter API и устанавливать библиотеку libmilter (обычно требуется для почтовых антивирусных программ и некоторых спам-фильтров). Начиная с OpenBSD 3.6, последние две настройки не нужны, так как libmilter всегда собирается и устанавливается.<br />
<source lang=c><br />
# Разрешение авторизации в ppp по PostgreSQL базе<br />
#<br />
# Авторизация по PostgreSQL включается в ppp.conf командой<br />
# set postgres ["conninfo"].<br />
#<br />
# В базе должна присутствовать таблица как минимум со следующими полями:<br />
#<br />
# CREATE TABLE ppp (<br />
# authname VARCHAR(32) NOT NULL UNIQUE,<br />
# authkey TEXT,<br />
# hisaddr TEXT,<br />
# label TEXT,<br />
# enabled BOOLEAN NOT NULL DEFAULT TRUE<br />
# );<br />
#<br />
# Типы TEXT/VARCHAR взаимозаменяемы.<br />
#<br />
PPP_PGSQL?= No # Разрешить авторизацию по PostgreSQL<br />
Данная настройка определяет, следует ли включать в ppp поддержку авторизации по PostgreSQL базе данных.<br />
# Разное<br />
#<br />
PATCH_MOUNT?= Yes # Патчить mount с целью слегка<br />
# # укоротить кое-какие надписи<br />
PATCH_MODLOAD?= Yes # Заставляет работать modload так,<br />
# # как он и должен работать :)<br />
PATCH_LOCALE?= Yes # Подпатчить libc на предмет LC_CTYPE,<br />
# # дабы подружить ru XKB и X программы<br />
</source><br />
Данные настройки определяют, следует ли патчить mount (на предмет укорачивания некоторых сообщений), modload (на предмет спасения системы от краха, если был загружен кернел не из /bsd) и libc (на предмет locale, чтобы подружить XKB и старые X программы).<br />
<source lang=c><br />
# Качать distfiles для портов сначала отсюда<br />
#<br />
MASTER_SITE_OVERRIDE?= ftp://pdp-11.org.ru/pub/OpenBSD/distfiles/${DIST_SUBDIR}/<br />
Данная настройка позволяет указать сервера, которые должны просматриваться в первую очередь в поисках distfiles для портов.<br />
PIPE?= -pipe # Использовать pipes вместо /tmp при<br />
# # компиляции<br />
Данная настройка заставляет gcc использовать unix pipes вместо временных файлов в /tmp.<br />
SUDO?= /usr/bin/sudo # sudo (для make build)<br />
Устанавливает переменную SUDO, которая используется при сборке от лица простого пользователя, входящего в группу wsrc.<br />
SITEDIR?= /etc/site # Где все это лежит<br />
BSDSRCDIR?= /usr/src # Где находится src<br />
BSDOBJDIR?= /usr/obj # Где находится obj<br />
PORTSDIR?= /usr/ports # Где находится ports<br />
</source><br />
Данный настройки указывают расположение исходных текстов системы, дерева портов и других каталогов, используемых при сборке.<br />
<source lang=c><br />
# Научка GQmpeg конвертировать windows-1251 заголовки в koi8-r<br />
#<br />
.if ${.CURDIR} == ${PORTSDIR}/audio/gqmpeg<br />
CONFIGURE_ARGS+= --enable-russian<br />
.endif<br />
</source><br />
Данный фрагмент включает автоматическую перекодировку заголовков MP3 файлов windows-1251 в koi8-r в программе GQMpeg, собираемой из порта audio/gqmpeg.<br />
<source lang=c><br />
# Установка IRC сервера по умолчанию для BitchX и IrcII на irc.pdp-11.org.ru<br />
#<br />
.if ${.CURDIR} == ${PORTSDIR}/net/ircII || ${.CURDIR} == ${PORTSDIR}/net/bitchx<br />
CONFIGURE_ARGS+= --with-default-server=irc.pdp-11.org.ru<br />
.endif<br />
</source><br />
Данный фрагмент устанавливает IRC сервер по умолчанию для ircII и BitchX, собираемых из портов net/ircII и net/bitchx соответственно.<br />
<source lang=c><br />
# Научка ipfm запускать несколько копий и создавать pidfile в виде<br />
# /var/run/ipfm-.pid<br />
#<br />
.if ${.CURDIR} == ${PORTSDIR}/net/ipfm<br />
post-patch:<br />
@${PATCH} ${PATCH_ARGS} < ${SITEDIR}/patches/ipfm.patch<br />
.endif<br />
</source><br />
Данный фрагмент исправляет порт net/ipfm, добавляя в него поддержку одновременной работы с несколькими сетевыми интерфейсами. При этом PID файл будет создаваться в виде /var/run/ipfm-<интерфейс>.pid<br />
<source lang=c><br />
# Отучка courier-imap писать IPv4->IPv6 mapped адреса в логе (и от IPv6 :)<br />
#<br />
.if ${.CURDIR} == ${PORTSDIR}/mail/courier-imap<br />
CONFIGURE_ARGS+= --without-ipv6<br />
.endif<br />
</source><br />
Данный фрагмент убирает из логов все, что похоже на IPv6 для порта mail/courier-imap.<br />
<source lang=c><br />
# Улучшение SPAM-protect feature в hypermail<br />
#<br />
.if ${.CURDIR} == ${PORTSDIR}/mail/hypermail<br />
post-patch:<br />
@${ECHO_MSG} "===> Applying SPAM-protect patch"<br />
@cd ${WRKSRC} && ${PATCH} -sp0 < ${SITEDIR}/patches/hypermail.patch<br />
.endif<br />
</source><br />
Данный фрагмент улучшает spamprotect feature для порта mail.hypermail. При этом вместо почтовых адресов в HTML документах будут фигурировать только имена пользователей без указания почтовых доменов.<br />
<source lang=c><br />
# Грязный хак для sylpheed, чтобы subject не поганил<br />
# (не нужен, если выше включена опция PATCH_LOCALE).<br />
#<br />
#.if ${.CURDIR} == ${PORTSDIR}/mail/sylpheed<br />
#post-patch:<br />
# @${ECHO_MSG} "===> Applying ugly charset hack"<br />
# @cd ${WRKSRC} && ${PATCH} -sp0 < \<br />
# ${SITEDIR}/patches/sylpheed-charset.patch<br />
#.endif<br />
</source><br />
Данный фрагмент с помощью грубой физической силы заставляет порт mail/sylpheed писать поле Subject по-русски. Криво, но на безлокальи сойдет. :) Данный хак не нужен, если используется настройка PATCH_LOCALE.<br />
<source lang=c><br />
# Включение поддержки SSL в postgresql. Начиная с OpenBSD 3.6, поддержка<br />
# уже включена в порте.<br />
#<br />
#.if ${.CURDIR} == ${PORTSDIR}/databases/postgresql<br />
#CONFIGURE_ARGS+= --with-openssl=/usr<br />
#.endif<br />
</source><br />
Данный фрагмент свключает поддержку SSL для порта databases/postgresql. Начиная с OpenBSD 3.6, поддержка SSL включена в порте сразу.<br />
<source lang=c><br />
# Запись IP адреса PPTP клиента в env PPTP_CLIENT для poptop.<br />
#<br />
.if ${.CURDIR} == ${PORTSDIR}/net/poptop<br />
post-patch:<br />
@${ECHO_MSG} "===> Applying PPTP_CLIENT env patch"<br />
@cd ${WRKSRC} && ${PATCH} -sp0 < ${SITEDIR}/patches/poptop.patch<br />
.endif<br />
</source><br />
Данный фрагмент заставляет порт net/poptop записывать адрес клиента в переменную PPTP_CLIENT. Данную переменную можно затем использовать в скриптах /etc/ppp/ppp.linkup и /etc/ppp/ppp.linkdown.<br />
<source lang=c><br />
.if ${.CURDIR} == ${BSDSRCDIR}/usr.sbin/httpd && defined(PATCH_SUEXEC) \<br />
&& ${PATCH_SUEXEC:U} == YES && ${.CURDIR} != ${.OBJDIR}<br />
prereq: ${.OBJDIR}/config.status<br />
@echo "Patching suexec..."<br />
@sh ${SITEDIR}/patches/suexec.sh ${SUEXEC_DOCROOT}<br />
.endif<br />
<br />
.if ${.CURDIR} == ${BSDSRCDIR}/usr.sbin && defined(SETUID_SUEXEC) && \<br />
${SETUID_SUEXEC:U} == YES<br />
afterinstall:<br />
@chmod u+s ${DESTDIR}/usr/sbin/suexec<br />
.endif<br />
</source><br />
Данный фрагмент занимается разборками с suexec на тему вышеописанных настроек.<br />
<source lang=c><br />
.if ${.CURDIR} == ${BSDSRCDIR}/gnu/usr.sbin/sendmail/sendmail && \<br />
exists(/usr/local/include/sasl/sasl.h) && \<br />
defined(SENDMAIL_SASL) && ${SENDMAIL_SASL:U} == YES<br />
ENVDEF+= -DSASL -I/usr/local/include/sasl<br />
LDADD+= -L/usr/local/lib -lsasl2<br />
.endif<br />
<br />
# Начиная с OpenBSD 3.6, libmilter автоматически собирается и<br />
# устанавливается.<br />
#.if ${.CURDIR} == ${BSDSRCDIR}/gnu/usr.sbin/sendmail && \<br />
# defined(SENDMAIL_LIBMILTER) && ${SENDMAIL_LIBMILTER:U} == YES<br />
#WANT_LIBMILTER= 1<br />
#.if !make(install)<br />
#SUBDIR:= libmilter ${SUBDIR}<br />
#.elif defined(INSTALL_LIBMILTER) && ${INSTALL_LIBMILTER:U} == YES<br />
#SUBDIR:= libsm libmilter ${SUBDIR} <br />
#<br />
#afterinstall:<br />
# install -o ${BINOWN} -g ${BINGRP} -m ${DIRMODE} -d \<br />
# ${DESTDIR}/usr/include/libmilter<br />
# install -o ${BINOWN} -g ${BINGRP} -m ${NONBINMODE} \<br />
# ${.CURDIR}/include/libmilter/*.h ${DESTDIR}/usr/include/libmilter<br />
#.endif<br />
#.endif<br />
#<br />
#.if (${.CURDIR} == ${BSDSRCDIR}/gnu/usr.sbin/sendmail/libmilter || \<br />
# ${.CURDIR} == ${BSDSRCDIR}/gnu/usr.sbin/sendmail/sendmail) && \<br />
# defined(SENDMAIL_LIBMILTER) && ${SENDMAIL_LIBMILTER:U} == YES<br />
#WANT_LIBMILTER= 1<br />
#.endif<br />
</source><br />
Разборки с sendmail на тему вышеописанных настроек.<br />
<source lang=c><br />
# Разборки с ppp<br />
#<br />
.if ${.CURDIR} == ${BSDSRCDIR}/usr.sbin/ppp/ppp && defined(PPP_PGSQL) && \<br />
${PPP_PGSQL:U} == YES && exists(/usr/local/lib/libpq.a) && \<br />
${.CURDIR} != ${.OBJDIR}<br />
CFLAGS+= -DPOSTGRES -I/usr/local/include/postgresql<br />
CFLAGS+= -I${.CURDIR}<br />
CLEANFILES+= auth.c auth.c.orig bundle.h bundle.h.orig<br />
CLEANFILES+= command.c command.c.orig<br />
<br />
DPADD+= /usr/local/lib/libpq.a ${LIBSSL} ${LIBCRYPTO}<br />
LDADD+= /usr/local/lib/libpq.a -lssl -lcrypto<br />
<br />
beforedepend: auth.c.orig bundle.h.orig command.c.orig<br />
<br />
auth.c.orig bundle.h.orig command.c.orig:<br />
.if !defined(SITE_REENTER)<br />
@echo "Applying PostgreSQL authentication patch..." && \<br />
cp ${.CURDIR}/auth.c ${.CURDIR}/bundle.h ${.CURDIR}/command.c \<br />
${.OBJDIR} && \<br />
patch -sp0 < ${SITEDIR}/patches/ppp-pgsql.patch && \<br />
cd ${.CURDIR} && ${MAKE} depend SITE_REENTER=Yes<br />
.endif<br />
.endif<br />
</source><br />
Разборки с PPP на предмет включения поддержки PostgreSQL авторизации.<br />
<source lang=c><br />
# Разборки с mount<br />
#<br />
.if ${.CURDIR} == ${BSDSRCDIR}/sbin/mount && defined(PATCH_MOUNT) && \<br />
${PATCH_MOUNT:U} == YES && ${.CURDIR} != ${.OBJDIR}<br />
CFLAGS+= -I${.CURDIR}<br />
CLEANFILES+= mount.c mount.c.orig<br />
<br />
beforedepend: mount.c.orig<br />
<br />
mount.c.orig:<br />
.if !defined(SITE_REENTER)<br />
@echo "Patching mount..." && \<br />
cp ${.CURDIR}/mount.c ${.OBJDIR} && cd ${.OBJDIR} && \<br />
patch -sp0 < ${SITEDIR}/patches/mount.patch && \<br />
cd ${.CURDIR} && ${MAKE} depend SITE_REENTER=Yes<br />
.endif<br />
.endif<br />
</source><br />
Разборки с mount на предмет укорачивания сообщений.<br />
<source lang=c><br />
# Разборки с modload<br />
#<br />
.if ${.CURDIR} == ${BSDSRCDIR}/sbin/modload && defined(PATCH_MODLOAD) && \<br />
${PATCH_MODLOAD:U} == YES && ${.CURDIR} != ${.OBJDIR}<br />
<br />
CFLAGS+= -I${.CURDIR}<br />
CLEANFILES+= modload.8 modload.8.orig modload.c modload.c.orig<br />
<br />
beforedepend: modload.8.orig modload.c.orig<br />
<br />
modload.8.orig modload.c.orig:<br />
.if !defined(SITE_REENTER)<br />
@echo "Patching modload..." && \<br />
cp ${.CURDIR}/modload.8 ${.CURDIR}/modload.c ${.OBJDIR} && \<br />
cd ${.OBJDIR} && patch -sp0 < ${SITEDIR}/patches/modload.patch && \<br />
cd ${.CURDIR} && ${MAKE} depend SITE_REENTER=Yes<br />
.endif<br />
.endif<br />
</source><br />
Разборки с modload на предмет использования /dev/ksyms вместо /bsd и предотвращения краха при использовании в системе, загруженной не из /bsd.<br />
<source lang=c><br />
# Разборки с локалью<br />
#<br />
.if ${.CURDIR} == ${BSDSRCDIR}/lib/libc && defined(PATCH_LOCALE) && \<br />
${PATCH_LOCALE:U} == YES && ${.CURDIR} != ${.OBJDIR}<br />
CLEANFILES+= setlocale.c setlocale.c.orig<br />
<br />
beforedepend: setlocale.c.orig<br />
<br />
setlocale.c.orig:<br />
.if !defined(SITE_REENTER)<br />
@echo "Patching locale..." && \<br />
cp ${.CURDIR}/locale/setlocale.c ${.OBJDIR} && cd ${.OBJDIR} && \<br />
patch -sp0 < ${SITEDIR}/patches/locale-hack.patch && \<br />
cd ${.CURDIR} && ${MAKE} depend SITE_REENTER=Yes<br />
.endif<br />
.endif<br />
</source><br />
Разборки с локалью с целью подружить XKB и старые X программы, не умеющие им пользоваться.<br />
<source lang=c><br />
# Разборки с игрушками<br />
#<br />
.if ${.CURDIR} == ${BSDSRCDIR} && defined(NO_GAMES) && ${NO_GAMES:U} == YES<br />
SKIPDIR+= games<br />
.endif<br />
<br />
# Разборки с библиотеками<br />
#<br />
.if defined(NO_PROFILE) && ${NO_PROFILE:U} == YES && \<br />
${.CURDIR:C/^${BSDSRCDIR}\/lib\///1} != ${.CURDIR}<br />
NOPROFILE=<br />
.endif<br />
<br />
Разборки с играми и profiled библиотеками на предмет надобности их собирать и устанавливать.<br />
<source lang=c><br />
# Разборки с crunch<br />
#<br />
.if ${.CURDIR} == ${BSDSRCDIR} && defined(CRUNCH) && ${CRUNCH:U} == YES && \<br />
!make(obj) && !make(clean) && !make(cleandir)<br />
SUBDIR+= distrib/crunch<br />
.endif<br />
</source><br />
Разборки с crunchgen и crunchide на предмет сборки и установки их.<br />
<br />
[[Категория:Howto]]</div>172.16.0.1http://www.qbsd.ru/index.php?title=IPsec_%D0%BC%D0%B5%D0%B6%D0%B4%D1%83_OpenBSD_%D0%B8_Linux_Ubuntu&diff=104IPsec между OpenBSD и Linux Ubuntu2013-05-26T14:56:03Z<p>172.16.0.1: </p>
<hr />
<div>== IPsec между OpenBSD и Linux Ubuntu ==<br />
<br />
Данная статья 100 % копипаст с [http://www.openbsd.ru www.openbsd.ru]<br />
<br />
=== Схема ===<br />
<br />
'''10.2.2.0/24(LAN1) <--> 192.168.1.253(OpenBSD) <--> 192.168.1.62(Ubuntu) <--> 10.1.1.0/24(LAN2)'''<br />
<br />
=== OpenBSD ===<br />
<br />
/etc/ipsec.conf<br />
<br />
<source lang=bash><br />
ike esp from 10.2.2.0/24 to 10.1.1.0/24 local 192.168.1.253 peer 192.168.1.62 \<br />
main auth hmac-sha1 enc 3des-cbc \<br />
quick auth hmac-sha1 enc 3des-cbc \<br />
group modp1024 psk laklaklak<br />
</source><br />
<br />
=== Ubuntu ===<br />
<br />
/etc/ipsec-tools.conf<br />
<br />
<source lang=bash><br />
#!/usr/sbin/setkey -f<br />
<br />
flush;<br />
spdflush;<br />
<br />
spdadd 10.1.1.0/24 10.2.2.0/24 any -P out ipsec<br />
esp/tunnel/192.168.1.62-192.168.1.253/require;<br />
spdadd 10.2.2.0/24 10.1.1.0/24 any -P in ipsec<br />
esp/tunnel/192.168.1.253-192.168.1.62/use;<br />
</source><br />
<br />
/etc/racoon/psk.txt<br />
<br />
<source lang=bash><br />
192.168.1.253 laklaklak<br />
</source><br />
<br />
/etc/racoon/racoon.conf<br />
<br />
<source lang=bash><br />
path pre_shared_key "/etc/racoon/psk.txt";<br />
<br />
remote 192.168.1.253 {<br />
exchange_mode main,aggressive;<br />
proposal {<br />
encryption_algorithm 3des;<br />
hash_algorithm sha1;<br />
authentication_method pre_shared_key;<br />
dh_group modp1024;<br />
}<br />
generate_policy off;<br />
}<br />
<br />
sainfo address 10.1.1.0/24[any] any address 10.2.2.0/24[any] any {<br />
pfs_group modp1024;<br />
encryption_algorithm 3des;<br />
authentication_algorithm hmac_sha1;<br />
compression_algorithm deflate;<br />
}<br />
</source><br />
<br />
[[Категория:Howto]]</div>172.16.0.1http://www.qbsd.ru/index.php?title=%D0%9A%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D1%8F:Howto&diff=103Категория:Howto2013-05-26T14:55:30Z<p>172.16.0.1: Новая страница: «''Темой данной категории является мини-руководства''»</p>
<hr />
<div>''Темой данной категории является мини-руководства''</div>172.16.0.1http://www.qbsd.ru/index.php?title=%D0%9E%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BF%D0%B5%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_sysctl&diff=102Описание переменных sysctl2013-05-26T14:50:43Z<p>172.16.0.1: </p>
<hr />
<div>== Описание переменных sysctl ==<br />
<br />
Данная статья 100 % копипаст с [http://www.openbsd.ru www.openbsd.ru]<br />
<br />
Значения некоторых параметров ядра, влияющих на работу его подсистем, можно изменять из контекста суперпользователя во время работы системы. Механизмом, реализующим доступ к переменным ядра в OpenBSD, является [http://www.openbsd.org/cgi-bin/man.cgi?query=sysctl&apropos=0&sektion=3&manpath=OpenBSD+Current&arch=i386 sysctl(3)]. Команда непосредственного управления — [http://www.openbsd.org/cgi-bin/man.cgi?query=sysctl&apropos=0&sektion=8&manpath=OpenBSD+Current&arch=i386&format=html sysctl(8)]. Она способна как распечатывать текущие значения параметров, так и выставлять их.<br />
<br />
== Работа с sysctl(8) ==<br />
<br />
Вывод на экран всех доступных переменных с их текущими значениями:<br />
# sysctl -a<br />
<br />
Чтобы узнать значение конкретной переменной:<br />
# sysctl переменная<br />
<br />
Для изменения значения переменной:<br />
# sysctl переменная=значение <br />
<br />
Типы значений переменных sysctl могут быть числовыми и строковыми. Изменять значения требуемых переменных следует в файле ''/etc/sysctl.conf'', чтение которого происходит при загрузке системы.<br />
<br />
== Лимиты на системные ресурсы ==<br />
<br />
* kern.maxfiles<br />
<br />
Переменная kern.maxfiles определяет максимальное число дескрипторов файлов. Каждый открытый файл, сокет или буфер использует дескриптор файла. Нагруженному серверу может понадобиться много тысяч дескрипторов файлов, в зависимости от количества программ, одновременно выполняемых на сервере. Количество дескрипторов, используемых в данный момент, содержится в переменной kern.nfiles.<br />
<br />
* kern.maxvnodes<br />
<br />
Максимальное число vnode, аллоцируемых для дисковых операций. Следует увеличить если kern.numvnodes превышает значение kern.maxvnodes в два раза. Поскольку система использует механизм повторного использования vnode, изменять это значение следует только в том случае, когда система испытывает нехватку ресурса (случается паника ядра и т. п.)<br />
<br />
* kern.maxproc<br />
<br />
Максимально допустимое число одновременно запущенных процессов. Текущее количество запущенных процессов можно узнать через kern.nprocs.<br />
<br />
== Параметры стека TCP/IP и другие сетевые настройки ==<br />
<br />
* kern.maxclusters<br />
<br />
Ограничивает количество доступных системе mbuf кластеров (буферов памяти, используемых сетевой подсистемой ядра). Посмотреть количество сетевых кластеров можно с помощью команды:<br />
<br />
# netstat -m<br />
<br />
Если пиковое значение близко к максимальному, его стоит увеличить.<br />
<br />
* net.inet.ip.ifq.maxlen<br />
<br />
Параметр задает значение максимальной длины очереди пакетов, принятых из устройства и ожидающих обработки IP стеком. Имеет смысл увеличить значение (до ~1000) если значение net.inet.ip.ifq.drops увеличивается.<br />
<br />
* net.inet.ip.forwarding<br />
<br />
Если необходимо выполнять перенаправление IPv4-пакетов между сетевыми интерфейсами, установите значение, равным 1. Применяйте только в том случае, когда система должна выступать в качестве маршрутизатора.<br />
<br />
* net.inet.ip.maxqueue<br />
<br />
Устанавливает размер очереди, используемой для хранения фрагментированных IP пакетов. Количество отброшенных фрагментов отражается параметром «fragment floods» в выводе команды netstat -s -p ip.<br />
<br />
* net.inet.tcp.baddynamic<br />
<br />
Список зарезервированных TCP портов. Порты с этими номерами не будут использованы ядром в качестве портов для исходящих соединений. Это может быть полезно, если используются непривилегированные процессы, прослушивающие определенные порты с номерами выше 1024. Для того, чтобы добавить номер порта в список, необходимо выполнить команду:<br />
<br />
# sysctl net.inet.tcp.baddynamic=+52000<br />
<br />
А чтобы удалить:<br />
<br />
# sysctl net.inet.tcp.baddynamic=-52000 <br />
<br />
== Лимиты средств межпроцессного взаимодействия в стиле UNIX System V ==<br />
<br />
Посмотреть информацию о используемых средствах System V IPC можно с помощью программы ipcs(1).<br />
<br />
* kern.shminfo<br />
<br />
Иерархия переменных, относящихся к разделяемой памяти.<br />
<br />
*: kern.shminfo.shmmax<br />
<br />
Наибольший допустимый размер сегмента разделяемой памяти (в байтах).<br />
<br />
*: kern.shminfo.shmmni<br />
<br />
Максимальное количество сегментов разделяемой памяти для системы.<br />
*: kern.shminfo.shmseg<br />
<br />
Максимальное количество сегментов разделяемой памяти на процесс.<br />
<br />
*: kern.shminfo.shmall<br />
<br />
Общее количество разделяемой памяти, которое может быть использовано (в страницах оперативной памяти).<br />
<br />
Настройки разделяемой памяти стоит изменять только в случае работы с прокси сервером Squid, который использует по одной области разделяемой памяти для каждой cachedir. Значение ''kern.shminfo.shmmni'' должно быть равно или больше значения cachedir, ''kern.shminfo.shmmax'' больше либо равно размеру cachedir и ''kern.shminfo.shmall'' должно быть не меньше ''kern.shminfo.shmmni'', умноженной на ''kern.shminfo.shmmax''.<br />
<br />
* kern.seminfo<br />
<br />
Иерархия переменных, относящихся к семафорам.<br />
*: kern.seminfo.semmni<br />
<br />
Число идентификаторов семафоров в системе. Определяет максимальное число семафоров.<br />
*: kern.seminfo.semmns<br />
<br />
Число семафоров в системе. Каждый серверный процесс требует один семафор.<br />
*: kern.seminfo.semmnu<br />
<br />
Число undo-структур, которые используются для восстановления структур данных семафоров при фатальном завершении процесса.<br /> Выставляется в максимальное число одновременных процессов в статусе runnable в системе.<br />
*: kern.seminfo.semmsl<br />
<br />
Максимальное число семафоров, разрешенное системой в пределах одного набора семафоров.<br />
<br />
[[Категория:Общая информация]]</div>172.16.0.1http://www.qbsd.ru/index.php?title=%D0%9F%D0%B5%D1%80%D0%B5%D1%87%D0%B5%D0%BD%D1%8C_%D0%98%D0%BD%D1%82%D0%B5%D1%80%D0%BD%D0%B5%D1%82_%D1%80%D0%B5%D1%81%D1%83%D1%80%D1%81%D0%BE%D0%B2_%D0%BE_OpenBSD&diff=101Перечень Интернет ресурсов о OpenBSD2013-05-26T14:50:08Z<p>172.16.0.1: </p>
<hr />
<div>== Перечень Интернет ресурсов о OpenBSD ==<br />
<br />
=== Действующие ===<br />
<br />
{| class="wikitable collapsible"<br />
!colspan="3" style="background:#FFCC00"|Перечень сайтов<br />
|-<br />
!Ресурс||Актуальность||Описание<br />
|-<br />
|[http://www.openbsd.org/faq/index.html www.openbsd.org]||ДА||'''FAQ. Строго обязательно к прочтению!''' [http://www.openbsd.org/faq/ru/ Русскоязычная версия].<br />
|-<br />
|[http://undeadly.org undeadly.org]||ДА||Live-журнал OpenBSD<br />
|-<br />
|[http://freshbsd.org freshbsd.org]||ДА||Все изменения в коде *BSD проектов, в портах отображаются здесь.<br />
|-<br />
|[http://openports.se openports.se]||ДА||Коллекция портов для OpenBSD<br />
|-<br />
|[https://stable.mtier.org stable.mtier.org]||ДА||Коллекция портов для OpenBSD для i386 и amd64<br />
|-<br />
|[http://distrowatch.com/table.php?distribution=openbsd distrowatch.com]||ДА||Информационно-новостной ресурс сообщающий о составе и релизах открытого ПО (Linux / BSD / др.).<br />
|-<br />
|[http://bsdtalk.blogspot.ru bsdtalk.blogspot.ru]||ДА||Аудиозаписи, интервью, размышления на тему *BSD. На английском.<br />
|-<br />
|[http://bsdmag.org bsdmag.org]||ДА||BSD magazine. Популярный журнал о BSD системах. Русские переводы выполненные командой энтузиастов [http://bsdmag.su находится здесь].<br />
|-<br />
|[http://home.nuug.no/~peter/pf/en/long-firewall.html home.nuug.no]||ДА||Firewalling with OpenBSD’s PF packet filter.<br />
Автор: Peter N. M. Hansteen. Основополагающая вещь, читать всем! [http://home.nuug.no/~peter/pf/eurobsdcon2012 Ещё eurobsdcon2012] от него же.<br />
|-<br />
|[http://rlworkman.net/howtos/OpenBSD_pf_guide.html rlworkman.net]||Нет||Устаревшая версия 2006 г. Firewalling with OpenBSD’s PF packet filter.<br />
Автор: Peter N. M. Hansteen.<br />
|-<br />
|[http://www.openbsdsupport.org www.openbsdsupport.org]||ДА||OpenBSD Users Documentation project<br />
|-<br />
|[http://www.opennet.ru/search.shtml?method=and&format=builtin-long&config=htdig&restrict=&exclude=&words=openbsd www.opennet.ru]||ДА||The OpenNet Project. Популярный портал посвященный открытому ПО. Содержит новости, советы. Имеется форум.<br />
|-<br />
|[http://www.synack.ru www.synack.ru]||ДА||Хороший blog по *BSD \ Linux \ VoIP и др.<br />
|-<br />
|[https://calomel.org calomel.org]||ДА||Богатый сборник how-to по OpenBSD. Актуализирован под OpenBSD 5.x!<br />
|-<br />
|[http://www.lissyara.su www.lissyara.su]||4.x||Личный сайт BSD’шника под ником '''lissyara''', богатый справочник по FreeBSD и OpenBSD.<br />Актуален для старых версий.<br />
|-<br />
|[http://habrahabr.ru/search/?q=openbsd habrahabr.ru]||Сомнительно||Сверхпопулярный IT-blog. Доступные на нем записи о OpenBSD.<br />
|-<br />
|[http://www.kernel-panic.it/openbsd.html www.kernel-panic.it]||Сомнительно||Сборник руководств по OpenBSD.<br />
|-<br />
|[https://www.dmoz.org www.dmoz.org]||Неизвестно||Сборник статей по OpenBSD.<br />
|-<br />
|[http://www.monkey.org/misc www.monkey.org]||Неизвестно||OpenBSD is for monkeys<br />
|-<br />
|[http://www.trumpetpower.com/OpenBSD/Meta-FAQ www.trumpetpower.com]||Неизвестно||OpenBSD Meta-FAQ<br />
|-<br />
|[http://www.infobsd.org/default.htm www.infobsd.org]||Неизвестно||InfoBSD<br />
|-<br />
|[http://tuxmobil.org/mobile_bsd.html tuxmobil.org]||Неизвестно||FreeBSD, NetBSD, OpenBSD, DragonFly and Mobile Computers (Laptops, Notebooks, PDAs, Mobile Phones)<br />
|}<br />
<br />
=== Отдельные информационные статьи, записки, заметки ===<br />
<br />
{| class="wikitable collapsible"<br />
!colspan="3" style="background:#FFCC00"|Перечень статей<br />
|-<br />
!Ресурс||Актуальность||Описание<br />
|-<br />
|[http://www.vpnc.org/InteropProfiles/OpenBSD.html www.vpnc.org]||-||OpenBSD Documentation Examples for IPsec Interoperability<br />
|-<br />
|[http://www.nomoa.com/bsd/index.html www.nomoa.com]||-||Установка и настройка OpenBSD сервера<br />
|-<br />
|[http://www.realo.ca/BSDinstall.html www.realo.ca]||-||A Step-by-Step Guide to Building an OpenBSD PPPoE Gateway, with Firewall<br />
|-<br />
|[http://pestilenz.org/~bauerm/tor-openbsd-howto.html pestilenz.org]||-||Установка Tor Wiki в Apache chroot<br />
|}<br />
<br />
== Недействующие ==<br />
<br />
Информацию можно просмотреть через [http://archive.org/web/web.php archive.org]<br />
<br />
{| class="wikitable collapsible"<br />
!colspan="2" style="background:#FFCC00"|Архив сайтов<br />
|-<br />
!Ресурс||Описание<br />
|-<br />
|[http://web.archive.org/web/*/http://openbsd.ru openbsd.ru]||Главный портал русскоязычного сообщества OpenBSD.<br />
|-<br />
|[http://web.archive.org/web/*/http://obsd.ru obsd.ru]||Портал русскоязычного сообщества OpenBSD. К сожалению, автора и его проекта нет с нами…<br />
|-<br />
|[http://web.archive.org/web/*/http://openbsd101.com openbsd101.com]||Сборник how-to для начинающих.<br />
|}<br />
<br />
[[Категория:Общая информация]]</div>172.16.0.1http://www.qbsd.ru/index.php?title=%D0%90%D0%BF%D0%BF%D0%B0%D1%80%D0%B0%D1%82%D0%BD%D0%BE%D0%B5_%D0%BE%D0%B1%D0%B5%D1%81%D0%BF%D0%B5%D1%87%D0%B5%D0%BD%D0%B8%D0%B5_%D0%B8_%D0%B2%D0%BE%D0%BF%D1%80%D0%BE%D1%81%D1%8B&diff=100Аппаратное обеспечение и вопросы2013-05-26T14:48:30Z<p>172.16.0.1: /* Некорректно работают устройства USB */</p>
<hr />
<div>== Аппаратное обеспечение и вопросы, зависящие от платформы ==<br />
<br />
Данная статья 100 % копипаст с [http://www.obsd.ru www.obsd.ru]<br />
<br />
=== Общие рекомендации по оборудованию ===<br />
<br />
==== Устройства PCI ====<br />
<br />
Устройства PCI почти всегда самоконфигурируемые — компьютер и ОС сами выделяют карте необходимые ресурсы.<br />
Прерывания можно использовать совместно на шине PCI. Не только можно, но и частенько система показывает лучшую производительность с совместно используемыми прерываниями, особенно, на i386.<br />
Есть несколько различных стандартов шин PCI. Можно случайно найти карту PCI2.2, которая просто не будет работать в системе с PCI2.1. Также многие карты со встроенными мостами (такие как многопортовые сетевые карты) не будут нормально работать на старых системах.<br />
Шины PCI поддерживают два уровня сигналов: 3.3 В и 5 В. Карты, работающие с сигналами 3.3 В имеют второй пропил в соединителе. Большинство PCI-карт используют 5-вольтовые сигналы, которые используются на большинстве компьютеров. Одноплатные компьютеры Soekris (Net45x1 and Net4801) часто упоминаются как компьютеры, поддерживающие сигналы только 3.3 В.<br />
<br />
==== Устройства ISA ====<br />
<br />
Устройства ISA не могут использовать ресурсы совместно и, в большинстве случаев, должны быть настроены вручную во избежание конфликтов с другими устройствами в системе.<br />
Некоторые ISA-устройства являются «Plug and Play» (isapnp(4)) — если возникают проблемы с этими устройствами, следует проверить их настройки, сообщённые dmesg(8), ISAPnP не всегда работает должным образом.<br />
Вообще, если есть выбор, многие предпочитают отказаться от ISA-карт в пользу PCI. ISA-карты намного сложнее настроить и они оказывают гораздо большее негативное воздействие на производительность системы.<br />
<br />
==== Моё устройство «опознано» но dmesg говорит, что оно не настроено («not configured») ====<br />
<br />
Вкратце, это означает, что устройство не поддерживается ядром и не может быть использовано.<br />
PCI и многие другие типы устройств предоставляют идентификационную информацию чтобы ОС смогла правильно распознать и поддерживать устройство. Распознавать устройство гораздо сложнее чем его поддерживать. Ниже приводится часть dmesg с двумя примерами «не настроенных» устройств:<br />
vendor "Intel", unknown product 0x5201 (class network subclass ethernet, rev 0x03) at pci2 dev 9 function 1 not configured<br />
"Intel EE Pro 100" rev 0x03 at pci2 dev 10 function 0 not configured<br />
Первое (сетевой адаптер) имеет распознанный код поставщика и общий тип карты, тогда как точная модель карты нераспознана. Второй пример — другой сетевой адаптер, известен разработчику и информация о нём была добавлена в файл, используемый для распознавания оборудования. Однако, в обоих случаях, карты будут нерабочими, так как обе указаны как «не настроенные» — это означает, что для них не нашлось драйвера.<br />
Что можно сделать с «не настроенным» устройством?<br />
Если устройство не используется непосредственно, на сообщение «not configured» можно просто не обращать внимания — вреда системе это не нанесёт. Некоторые устройства специального назначения сознательно помечаются как «не настроенные» чтобы их поддерживала BIOS системы.<br />
В некоторых случаях, это лишь разновидность поддерживаемого устройства и для разработчика может не составить большого труда добавить поддержку этой карты. В других случаях, это может быть совсем не поддерживаемый набор микросхем или его реализация (как в рассмотренных выше примерах). В этом случае, нужно написать новый драйвер, что может быть даже невозможно если устройство плохо документировано. Конечно, самостоятельное написание драйвера приветствуется.<br />
Если используется изначальное ядро, устройство может не поддерживаться использованным при установке носителем, но может поддерживаться при установке с другого диска. Это часто случается с пользователями некоторых популярных SCSI-карт, невнимательно прочитавшими рекомендации для платформы i386 и пробуют все загрузочные диски, которые не поддерживают их SCSI-карту вместо того чтобы использовать тот, который поддерживает.<br />
Если используется изменённое ядро, поддержка нужного теперь устройства могла быть удалена на этапе сборки. Вообще, удаление поддержки устройств ядром — плохая идея и это — один из примеров.<br />
Перед тем как сообщить о «не настроенном» устройстве, убедитесь, что был испробован последний срез (snapshot), так как поддержка могла быть уже добавлена и проверьте архивы списков рассылки на предмет рассмотрения этого вопроса ранее. Помните, что используя старую версию OpenBSD, вы можете столкнуться с необходимостью обновления для использованиялюбого нового драйвера.<br />
<br />
==== Моя карта есть в списке поддерживаемого оборудования, но она не работает! ====<br />
<br />
К сожалению, многие производители используют наименование модели для указания его рыночной позиции, а не технической сущности. Поэтому можно купить продукт с тем же самым названием и номером модели, что и продукт, отмеченный на страницах платформ, но совершенно неработоспособный под OpenBSD. Например, сначала, многие беспроводные адаптеры делались на базе микросхемы Prism2 и использовали драйвер wi(4), но позднее, когда появились более дешёвые микросхемы, многие приозводители стали использовать в тех же продуктах другие микросхемы, для которых нет драйверов с открытым кодом. Беспроводные сетевые адаптеры, к сожалению, далеко не единственный пример этого.<br />
<br />
==== Поддерживаются ли WinModem-ы? ====<br />
<br />
WinModem-ы — это дешевые модемы? использующие для обработки сигналов ресурсы процессора, в отличие от аппаратной обработки в случае «обычных» модемов. В связи с нестандартностью (неунифицированностью, большими отличиями от модели к модели) и обычно безобразно плохой документацией на конструктив WinModem-ов в OpenBSD нет и не будет поддержки данных устройств.<br />
<br />
==== Что случилось с поддержкой Adaptec RAID (aac)? ====<br />
<br />
Adaptec прекратил предоставлять документацию на FSA-based (aac(4)) RAID контроллеры. Эти RAID стали содержать большое количество ошибок, документация стала предоставляться в урезанном, недостаточном для написания драйверов варианте. В связи с этим мы удалили данный драйвер из стандартного ядра GENERIC.<br />
Но ведь я сам могу собрать ядро с поддержой aac(4), не правда ли?<br />
Конечно. Но вы сами понимаете, к чему может привести ненадёжность есть ненадёжный. Вы же не эксперименты будете проводить, испытывая «новые возможности»! Кто знает, может он заработает достаточно хорошо в какой-нибудь аппаратной конфигурации, но бы не рекомендовали доверять ему своих данных.<br />
<br />
==== Моя ami(4)-карта поддерживает только один логический диск! ====<br />
<br />
Есть известная ошибка ami(4), которая вызывает повреждение данных при использовании более чем одного тома на некоторых контроллерах. OpenBSD ограничит количество логических дисков до одного на<br />
контроллерах с такой проблемой. В результате, на выходе dmesg появится подобное сообщение:<br />
<pre><br />
ami0: FW A.04.03, BIOS vA.04.03, 4MB RAM ami0: 3 channels, 16 targets, 2 logical drives ami0: firmware buggy,<br />
limiting access to first logical disk scsibus0 at ami0: 1 targets<br />
</pre><br />
<br />
=== DEC Alpha ===<br />
<br />
Пока ничего<br />
<br />
=== AMD 64 ===<br />
<br />
==== Могу ли я запустить OpenBSD/amd64 на Intel P4 ====<br />
<br />
В случае большинства процессоров, выпущенных в последнее время — ответом будет «да». Ксожалению, определить какой именно из процессоров сможет запустить, а какой нет, достаточно сложно. Проще определить экспериментальным путем, будет работать или нет.<br />
<br />
==== Могу ли я запустить бинарный файл i386 на OpenBSD/amd64? ====<br />
Нет.<br /><br />
OpenBSD/amd64 совершенно другая платформа, некжели OpenBSD/i386, и, на данном этапе, бинарная совместимость не поддерживается. Как полагает OpenBSD, в мире открытых кодов нет большого интереса разработчиков к бинарной совместимости.<br />
Следует обратить внимание, OpenBSD/amd64 и OpenBSD/i386 boot loaders will (as of OpenBSD 4.2) load each other’s kernels, making it easier to reinstall a system with the «other» platform. Поэтому лучше выполнить полную «очистку и инсталляцию» — иначе оставшиеся от «предыдущей» инсталляции бинарники изрядно усложнят вам жизнь.<br />
<br />
==== Всегда ли лучше запускать OpenBSD/amd64 на соответствующих процессорах? ====<br />
<br />
Не всегда. <br /><br />
Вот несколько причин использовать OpenBSD/i386 на платформах OpenBSD/amd64, которые могут исполнять код amd64:<br />
* Необходимость запуска бинарников i386 (or other OS).<br />
* Необходимость запуска приложений, не являющихся нативно «64 битными».<br />
* Необходимость переноса дисков на машину не amd64<br />
* Для некоторых приложений и аппаратных платформ OpenBSD/i386 может превосходить по производительности OpenBSD/amd64. Относительно небольшая группа людей готовы работать над исправлением данной ситуации.<br />
<br />
=== ARM-based appliances ===<br />
<br />
Пока ничего<br />
<br />
=== HP300 ===<br />
<br />
Пока ничего<br />
<br />
=== HPPA ===<br />
<br />
Пока ничего<br />
<br />
=== i386 ===<br />
<br />
==== Сетевые интерфейсы ISA ====<br />
<br />
OpenBSD хорошо работает на устаревшем оборудовании и пользователи бывает используют даже сетевых карт ISA. Оборудование ISA требует гораздо большей настройки и понимания, чем PCI. Нельзя просто вставить карту в компьютер и ожидать, что она волшебным образом заработает. Во многих машинах, если ISA-устройство не в режиме «Plug 'n' Play» (PNP), ресурсы, используемые картой, должны быть назначены<br />
BIOS.<br />
3Com 3C509B ep(4)<br />
Это отлично зарекомендовавшая себя сетевая карта ISA, поддерживаемая драйвером ep(4). Версия «B» отличается от «не-B» маркировкой на карте и бОльшей главной микросхемой (со стороной, приблизительно, 2.5 см для версии «B» против 2 см для более старой версии) и показывает бОльшую производительность в нагруженных системах или системах с двумя сетевыми картами. Микросхема 3C509B поставляется настроенной на режим PNP, который, к сожалению, не соответствует стандартам и вызывает проблемы в поддержке isapnp(4) под OpenBSD. Сначала, карта распознаётся как не-PNP устройство, потом, когда включается поддержка PNP, dmesg отображает дополнительный интерфейс. Это может и не повредить, а может и привести к другим проблемам. Крайне рекомендуется отключать режим PNP в картах 3C509B и настраивать их вручную с использованием конфигурационных утилит 3Com под DOS перед использованием во избежание конфликтов<br />
Драйвер ep(4) подхватит карты в любой комбинации аппаратного обеспечения, не предусматривающей конфликтов устройств.<br />
Если в системе несколько карт 3C509, рекомендуется пометить их MAC-адресами, чтобы различать их в выводе dmesg.<br />
Заметим, что 3C509, 3C905 и 3C590 часто путают. 3C509 — это 10 Мб/с карта ISA, а 3C905 и 3C590 — карты PCI.<br />
NE2000<br />
Изначально, сетевая карта NE2000 была разработана в середине 1980-х компанией Novell. C тех пор, многие производители выпускали очень похожие карты, которые вообще-то назывались NE2000-совместимыми или клонами. Производительность этих клонов сильно отличалась. Тогда как некоторые старые представители показывали хорошие результаты, многие из доступных сейчас очень плохи. NE2000-совместимые карты в OpenBSD поддерживает драйвер ne(4).<br />
OpenBSD хорошо поддерживает некоторые умеющие ISAPNP NE2000-совместимые карты с включенным режимом ISAPNP. Другие карты должны быть настроены или перемычками, или DOSовской утилитой. К сожалению, настоящие NE2000 не имели программной настройки и поддержки ISAPNP. Так что для настройки карты может потребоваться именно та утилита, которая поставлялась с ней, получить которую бывает проблематично.<br />
Драйвер ne(4) поддерживает 3 конфигурации карт ISA NE2000 в ядре GENERIC системы OpenBSD<br />
ne0: port 0x240 irq 9<br />
nel: port 0x300 irq 10<br />
ne2: port 0x280 irq 9<br />
Если эти установки неприемлемы, можно настроить их через User Kernel Configuration (UKC) или сборкой своего ядра.<br />
Драйвер ne(4) ведёт себя честно «по-бестолковому» — просто проверяет порты ввода-вывода и если находит что-то из перечисленных адресов, то приписывает ему соответствующее прерывание. dmesg(8) не показывает действительного номера прерывания в случае использования драйвера ne(4) на ISA. И если действительное прерывание карты не установлено в это значение, работать она не будет.<br />
Бывают и не-ISA карты, использующие драйвер ne(4) — это PCI и PCMCIA, к ним это всё не относится, они настраиваются сами по себе.<br />
<br />
==== OpenBSD не работает на моей 80386/80386SX/80486SX! ====<br />
<br />
80386sx<br />
80386SX/DX<br />
Начина с OpenBSD 4.2 прекращена поддержка процессоров 80386DX и 80386SX. В дополнение к другим ограничениям чипа 80386, система работает очень медленно из-за ограниченного ОЗУ, FPU недостаточен для исполнения OpenBSD.<br />
80486SX<br />
Микросхема 80486SX — это «дешевая» версия 80486, у нее отсутствует аппаратная поддержка операций с плавающей точкой, необходимая для работы OpenBSD (как у 80386). К счастью, полная версия 80486DX достаточно распространена и большинство систем легко поддаётся усовершенствованию.<br />
80486DX и более новые поддерживают OpenBSD.<br />
<br />
==== dmesg показывает несколько устройств, использующих одно и то же прерывание (IRQ)! ====<br />
<br />
Это вполне нормально и даже желательно для устройств PCI. Конструкция шины PCI подразумевает такую возможность. Некоторые считают, что совместно использовать запросы на прерывание (interrupt requests,<br />
IRQs) не хорошо, однако, они либо путают ситуацию с шиной ISA (где совместное использование прерываний недопустимо) или это последствия негативного опыта использования битого железа или программного обеспечения.<br />
Устройства ISA не могут использовать прерывания совместно — если такое происходит, то конфликт необходимо устранить.<br />
<br />
==== Моя клавиатура/мышь не работает («зависает», сходит с ума)! ====<br />
<br />
Чаще всего такое случается при использовании «переключателя» (иногда называемого «KVM switch»), используемого для подключения нескольких компьютеров к одному комплекту клавиатура/мышь/монитор. Можно поэкспериментировать с разными марками переключателей, но OpenBSD требовательнее многих к переключению мыши. Проблема обычно в переключении мыши. Если мышь не используется, решение на поверхности — просто не нужно подключать её кабель к компьютеру. Если мышь таки используется, то простым решением будет подключить к каждому компьютеру по отдельной мыши и переключать только клавиатуру и монитор. Может выясниться, что использование мышиного переходника PS/2->USB решит эту проблему (OpenBSd будет работать с USB-мышью). Если нужен просто консольный доступ, то решением может быть использование последовательной консоли.<br />
<br />
=== Landisk ===<br />
<br />
Пока ничего<br />
<br />
=== Luna88k ===<br />
<br />
Пока ничего<br />
<br />
=== Mac68k ===<br />
<br />
Пока ничего<br />
<br />
=== MacPPC ===<br />
<br />
==== Почему сетевой адаптер bm(4) такой медленный? ====<br />
<br />
Драйвер bm, поддерживающий микросхему BMAC, используемую на некоторых системах MacPPC (включая ранние iMac) имеет проблемы при работе в режиме 100 Мб/с. Настоятельно рекомендуется заставить драйвер работать в режиме 10 Мб/с параметром «media 10baseT» в файле /etc/hostname.bm0 или на концентраторе/коммутаторе.<br />
<br />
=== MVME68k ===<br />
<br />
Пока ничего<br />
<br />
=== MVME88k ===<br />
<br />
Пока ничего<br />
<br />
=== SGI ===<br />
<br />
Пока ничего<br />
<br />
=== SPARC ===<br />
<br />
Пока ничего<br />
<br />
=== UltraSPARC (sparc64) ===<br />
<br />
==== Мой UltraSPARC не грузится с образа гибкого диска ====<br />
<br />
Только Ultra 1/1e и Ultra 2 могут загружать операционную систему с гибкого диска. Вместо этого, для установки нужно использовать CD-ROM, Miniroot или загрузку по сети.<br />
<br />
==== disklabel выдает сообщение «partition extends past end of unit» ====<br />
<br />
На системах sparc и sparc64, disklabel BSD не умеет описывать геометрию диска больше чем 8ГБ, тогда как отдельные записи disklabel могут быть и больше.<br />
Каждый раз при запуске disklabel(8), он выполняет проверку записей disklabel на предмет того, что он считает правильной геометрией диска и, увидев обрезанную геометрию, предупреждает, что не разрешит менять записи за пределами этой области в 8ГБ, пока ему не сообщат настоящую геометрию устройства. Этого можно добиться командой 'g' в интерактивном редакторе disklabel(8), дав указание использовать геометрию диска «[d]isk geometry»:<br />
<pre><br />
# disklabel -E wd0<br />
# Inside MBR partition 3: type A6 start 63 size 17912412<br />
[...]<br />
Initial label editor (enter '?' for help at any prompt)<br />
> g<br />
[d]isk, [ b ]ios, or [ u ]ser geometry: [d] d<br />
> w<br />
> q<br />
</pre><br />
Сообщения останутся, но появится возможность настраивать и использовать диск желаемым образом. Правильное решение должно быть совместимо с уже используемыми системами и с Solaris, работающими на дисках, больше чем 8ГБ, но пока такового нет.<br />
<br />
=== DEC VAX ===<br />
<br />
==== Можно использовать симулятор SIMH VAX? ====<br />
Да!<br />
Симулятор SIMH VAX можно использовать для эффективной эмуляции настоящей VAX. Инструкции можно найти здесь.<br />
<br />
=== Sharp Zaurus ===<br />
<br />
==== Некорректно работают устройства USB ====<br />
<br />
Очень мало устройств будут работать корректно, если вы подключите их непосредственно к порту USB Zaurus. Используйте активный USB hub (с внешним источником питания) для работы с этими устройствами.<br />
Перевод соответствует $OpenBSD: faq12.html, v 1.89 2008/01/26 06:29:50 saad Exp $<br />
<br />
[[Категория:Общая информация]]</div>172.16.0.1http://www.qbsd.ru/index.php?title=%D0%92%D0%B2%D0%B5%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5_%D0%B2_OpenBSD&diff=99Введение в OpenBSD2013-05-26T14:47:52Z<p>172.16.0.1: /* Почему та или иная программа включена/не включена в систему? */</p>
<hr />
<div>== Введение в OpenBSD ==<br />
<br />
Данная статья 100 % копипаст с [http://www.obsd.ru www.obsd.ru]<br />
<br />
=== Что такое OpenBSD? ===<br />
<br />
Проект OpenBSD работает над свободно распространяемой, многоплатформенной, UNIX-подобной, основанной<br />
на BSD 4.4 операционной системой. Нашими основными целями являются корректность, безопасность,<br />
стандартизация и портируемость. OpenBSD поддерживает эмуляцию на уровне двоичных кодов для<br />
большинства программ из SVR4 (Solaris), FreeBSD, Linux, BSDI, SunOS и HPUX.<br />
Настоящий FAQ описывает вопросы применительно к последнему релизу OpenBSD, версии 4.3.<br />
<br />
=== На каких платформах работает OpenBSD? ===<br />
<br />
OpenBSD 4.3 работает на следующих платформах:<br />
<br />
'''alpha''' — только на FTP<br /><br />
'''amd64''' — Доступно на CD<br /><br />
'''armish''' — только на FTP<br /><br />
'''hp300''' — только на FTP<br /><br />
'''hppa''' — только на FTP<br /><br />
'''i386''' — Доступно на CD<br /><br />
'''landisk''' — только на FTP<br /><br />
'''luna88k''' — только на FTP<br /><br />
'''luna68k''' — только на FTP<br /><br />
'''mac68k''' — только на FTP<br /><br />
'''macppc''' — Доступно на CD<br /><br />
'''mvme68k''' — только на FTP<br /><br />
'''mvme88k''' — только на FTP<br /><br />
'''sgi''' — только на FTP<br /><br />
'''sparc''' — загрузочный CD<br /><br />
'''sparc64''' — загрузочный CD<br /><br />
'''vax''' — только на FTP<br /><br />
'''zaurus''' — только на FTP<br /><br />
Надпись «Доступно на CD» означает, что официальный набор CD включает в себя эту платформу и определенное количество пакетов для данной платформы. Образ установочного диска самой системы доступен для скачивания и для некоторых других платформ.<br />
Больше информации о платформах Вы можете найти на странице платформ.<br />
Иногда нас спрашивают, зачем мы поддерживаем столько «странных» машин. Кратко можно ответить: «потому что мы так хотим». Если есть достаточное число опытных людей (иногда этим числом может быть один-единственный, но очень опытный человек!), которые хотят заниматься поддержкой этой платформы, то она будет поддерживаться. В переносимости OpenBSD есть также и практическая польза: когда выходит новая платформа, дерево исходников практически не содержит ошибок или архитектурных недостатков, препятствующих портированию. В число поддерживаемых OpenBSD платформ входят 32-х и 64-х разрядные процессоры, машины с прямым и обратным порядком байт и самые разные платы. Да, также поддержка «необычных» платформ уже помогала в создании кода лучшего качества для «обычных» платформ.<br />
<br />
=== Действительно ли OpenBSD свободна? ===<br />
<br />
OpenBSD полностью свободна. Свободны бинарники. Свободны исходники. Все части OpenBSD имеют разумную лицензию, разрешающую свободное распространение. Лицензия включает в себя право ИСПОЛЬЗОВАНИЯ большинства частей дерева исходников OpenBSD, как для личных, так и для коммерческих целей. OpenBSD НЕ включает в себя никаких других ограничений, кроме имеющихся в оригинальной лицензии BSD. Программное обеспечение, использующее более строгие условия лицензирования, не может быть включено в стандартный состав OpenBSD. Это необходимое условие защиты свободы использования OpenBSD. К примеру, OpenBSD может свободно использоваться в личных целях, образовательных целях, в правительственных учреждениях, некоммерческими и коммерческими организациями. Можно свободно включать OpenBSD целиком или частично в коммерческие продукты.<br />
Иногда нас спрашивают, не беспокоит ли нас использование нашего свободного кода в коммерческих продуктах. Мы можем ответить, что мы предпочитаем ''широкое использование'' нашего качественного кода, нежели создание производителями коммерческого ПО ужасных несовместимых альтернативных решений для давно решенных проблем. К примеру, очевидно, что широкое использование протокола SSH во многом обусловлено открытостью лицензии, если бы лицензия была более жесткой, использование данного протокола и кода OpenSSH было бы значительно меньше.<br />
Но это не означает, что мы будем возражать против помощи в виде денег или аппаратуры в качестве благодарности. На самом деле, нас поражает, насколько плохо нас поддерживают компании, строящие свои продукты на основе OpenBSD, но никаких требований о компенсациях не предъявляется.<br />
Подробнее другие популярные лицензии рассмотрены в OpenBSD Copyright Policy.<br />
Во многом разработчики OpenBSD поддерживают проект из собственного кармана. Это включает в себя время, проводимое в работе над проектом, оборудование, используемое для поддержки многих портов, подключение к Сети, используемое для распространения OpenBSD, и время, затрачиваемое на ответы на вопросы и изучение отчетов об ошибках, присылаемых пользователями. Разработчики OpenBSD не очень-то богаты и даже небольшая помощь в виде времени, оборудования и других ресурсов дает большой эффект.<br />
<br />
=== Зачем мне может понадобиться OpenBSD? ===<br />
<br />
Часто новички хотят знать, лучше ли OpenBSD других UNIX-подобных операционных систем. На этот вопрос практически невозможно ответить и он является предметом бесконечных (и бесполезных) религиозных войн. Никогда, ни при каких обстоятельствах, не задавайте таких вопросов в почтовых листах OpenBSD.<br />
Ниже приведены некоторые причины, по которым, как мы считаем, OpenBSD является полезной операционной системой. Подходит ли она вам — вопрос на который можете ответить только вы сами.<br />
* OpenBSD работает на многих различных аппаратных платформах.<br />
* Многие профессионалы в области безопасности считают, что OpenBSD самая безопасная UNIX-подобная операционная система, что является результатом непрекрающегося тщательного аудита исходных кодов на предмет уязвимостей.<br />
* OpenBSD — полнофункциональная UNIX-подобная операционная система, бесплатно доступная в исходниках.<br />
* В OpenBSD интегрированы передовые технологии в области безопасности, подходящие для работы в сетевых экранах и развертывания сервисов частных сетей в распределенных средах.<br />
* OpenBSD постоянно улучшается и непрерывно разрабатывается по многим направлениям, предлагая возможность поработать с новыми технологиями в международной команде программистов и пользователей.<br />
* OpenBSD требует минимума настроек и действий по оптимизации. Для большинства пользователей OpenBSD «просто работает» на их аппаратном обеспечении и для их приложений. Оптимизация в большинстве случев не только не требуется, но и не рекомендуется.<br />
<br />
=== Как я могу поддержать OpenBSD? ===<br />
<br />
Мы очень признательны всем людям и организациям, которые внесли свой вклад в развитие проекта OpenBSD. Их имена размещены на странице пожертвований сайта OpenBSD.<br />
OpenBSD постоянно нуждается в различной поддержке со стороны сообщества пользователей. Если вы считаете, что OpenBSD приносит вам пользу, найдите способ поддержать проект. Если ни один из приведенных ниже вариантов вам не удобен, присылайте свои на donations@openbsd.org.<br />
<br />
Приобретение OpenBSD CD. Комплект включает в себя полный релиз текущей версии OpenBSD и является загрузочным для ряда платформ. Продажа дисков приносит деньги, которые уходят на поддержку OpenBSD и разгружает наши сетевые ресурсы, используемые для распространения дистрибутивов через Интернет. В этот недорогой комплект из трех CD также входят исходные коды. Помните, вашим друзьям нужна своя копия!<br />
<br />
Денежные пожертвования. Проект постоянно нуждается в деньгах для оплаты оборудования, подключения к сети, расходов на тиражирование CD. Производство CD требует предоплаты, которая происходит из карманов разработчиков OpenBSD без гарантированной отдачи. Пишите на mailto: donations@openbsd.org для получения более подробной информации о пожертвованиях. Мы очень высоко ценим даже самые маленькие пожертвования.<br />
<br />
Пожертвования в виде оборудования и комплектующих. Проекту постоянно требуется как распространенная, так и специализированная аппаратура. Постоянно нужны IDE и SCSI диски, а также различные виды ОЗУ. Прежде чем пожертвовать другую аппаратуру: полноценные компьютеры или системные платы, узнайте, нужны ли нам они сейчас. Напишите письмо на mailto: donations@openbsd.org перед отправкой комплектующих.<br />
<br />
Пожертвование времени и усилий. Мы всегда рады видеть программистов, которым нравится работать над операционными системами, но есть и масса других задач, в которых вы можете быть полезны. Читайте листы рассылки и отвечайте на вопросы новых пользователей.<br />
<br />
Помощь в поддержке документации, предоставление новых материалов FAQ (присылайте на mailto: faq@openbsd.org). Сформируйте местную группу пользователей и привлекайте друзей в пользователи OpenBSD. Покажите, как можно использовать OpenBSD в вашей работе, начальнику. Вы студент? Посоветуйте вашему профессору использовать OpenBSD как инструмент обучения на курсах информатики и технических дисциплинах. Но стоит также отметить один из главных методов, которым не стоит «помогать» OpenBSD: не тратьте время на участие в «священных войнах» вокруг ОС. Это не только не помогает проекту найти новых пользователей, но даже может серьезно испортить отношения между разработчиками.<br />
<br />
=== Кто разрабатывает OpenBSD? ===<br />
<br />
OpenBSD разрабатывается командой программистов из [разных стран] . Проект координирует Тео да Раадт, из Канады.<br />
<br />
=== Когда будет следующий релиз OpenBSD? ===<br />
<br />
Команда разработчиков OpenBSD выпускает релизы раз в пол-года, даты релизов приходятся на май и ноябрь. Подробнее цикл разработки описан здесь.<br />
<br />
=== Что входит в состав OpenBSD? ===<br />
В состав OpenBSD входят некоторые приложения третьих сторон, такие как:<br />
* X.org 7.3, графическая среда X Window, с локальными патчами. Устанавливается из компонентов x*.tgz из установочного комплекта.<br />
* GCC версий 2.95.3 и 3.3.5. Компилятор GNU C. Группа разработчиков OpenBSD также добавила технологию защиты стека Propolice, включенную по умолчанию и используемую во всем пользовательском окружении OpenBSD, а также, по умолчанию, во всех компилирующихся в OpenBSD приложениях. Устанавливается как часть comp43.tgz.<br />
* Perl 5.8.8 с патчами и дополнениями группы разработчиков OpenBSD.<br />
* Специально подготовленную и безопасную версию веб-сервера Apache 1.3. Разработчики OpenBSD добавили запуск в chroot по умолчанию, понижение привилегий и другие улучшения в области безопасности. Также включена поддержка mod_ssl и DSO.<br />
* OpenSSL 0.9.7j, с патчами и улучшениями от команды разработчиков OpenBSD.<br />
* Текстовый процессор Groff 1.15.<br />
* Почтовый сервер Sendmail 8.14.1, с библиотекой libmilter.<br />
* DNS сервер BIND 9.4.2. Разработчики OpenBSD также значительно улучшили работу в окружении chroot и других моментах, связанных с безопасностью.<br />
* Текстовый браузер Lynx 2.8.5rel.4. С добавленной поддержкой HTTPS и другими патчами от разработчиков OpenBSD<br />
* Sudo v1.6.8p12, позволяющий пользователям запускать отдельные команды с привилегиями root-а.<br />
* Ncurses 5.2 KAME IPv6.<br />
* Heimdal 0.7.2 с патчами Arla 0.35.7<br />
* Binutils 2.15 с патчами OpenSSH 4.8 Binutils 2.15 с патчами gdb 6.3<br />
* OpenNTPD Secure and simple Network Time Protocol implementation.<br />
* OpenBGPD and OpenOSPFD routing applications<br />
Как вы уже заметили, разработчики OpenBSD часто вносят исправления в продукты сторонних разработчиков (как правило) для повышения безопасности или качества кода. В некоторых случаях пользователи не заметят никаких отличий в функционировании, в других случаях, отличия в функционировании ЕСТЬ и они могут быть значимыми для некоторых пользователей. Имейте ввиду эти изменения перед самостоятельным добавлением других версий тех же программ. Может статься так, что вы получите бОльшую цифру в версии, но менее безопасную систему.<br />
Дополнительные приложения, конечно же, могут быть установлены из пакетов или портов OpenBSD.<br />
<br />
=== Что нового в OpenBSD 4.3? ===<br />
<br />
Полный список изменений, внесенных в OpenBSD 4.3 относительно OpenBSD 4.2 можно увидеть здесь, и выделены на информационной странице OpenBSD 4.3. Ниже перечислены некоторые из изменений, которые могут потребовать особого внимания при обновлении или установке OpenBSD 4.3 теми, кто знаком с предыдущими версиями:<br />
* libexpat теперь включен в состав base43.tgz, а не xbase43.tgz (как в 4.2) или в пакеты (4.1 и ранее)<br />
Это должно упростить работу большинству пользователей. Подробнее в 4.3 Upgrade Guide.<br />
* hoststated(8) переименован в relayd(8).<br />
Подробности в 4.3 Upgrade Guide.<br />
* Новаое в поддержке SMP: в OpenBSD/sparc64 и OpenBSD/mvme88k теперь поддерживается многопроцессорность.<br />
* SNMP поддержка: осуществляет snmpd(8).<br />
<br />
=== Могу ли я использовать OpenBSD как настольную систему? ===<br />
Этот вопрос часто задается в такой манере — без пояснения что спрашивающий подразумевает под понятием «настольная система». Единственный человек который может ответить на этот вопрос — это вы, и этот ответ зависит от ваших нужд и ожиданий.<br />
Несмотря на то, что OpenBSD имеет хорошую репутацию как ОС для серверов, она может быть и используется как настольная система. Множество приложений для «настольных систем» доступны из пакетов и портов. Как и при выборе любой операционной системы реальный вопрос таков: может ли ОС выполнять нужную вам работу тем способом, которым вы хотите? Вы должны ответить на этот вопрос сами для себя.<br />
Также стоить отметить тот факт, что большое количество кода OpenBSD написано на ноутбуках.<br />
<br />
=== Почему та или иная программа включена/не включена в систему? ===<br />
Нас часто спрашивают, почему та или иная программа (не) включена в OpenBSD. Ответ основывается на двух моментах: желаниях разработчиков и совместимости с целями проекта. Ничто не будет включено в систему просто потому, что оно «хорошее» — по нашим стандартам программы также должны быть «свободны» для использования, распространения и изменения. Программа также должна быть стабильной и безопасной — бОльшая цифра в версии не всегда означает, что программа лучше.<br />
Зачастую самой большой проблемой становится лицензия: мы хотим, чтобы пользоваться OpenBSD мог любой человек в мире для любых целей.<br />
Еще один важный момент — пожелания разработчиков. Только разработчики OpenBSD могут принять окончательное решение, включать тот или иной продукт в состав проекта. Одного того, что программа «хороша», недостаточно для того, чтобы проект OpenBSD выделил ресурсы на ее поддержку и разработчики совсем необязательно разделяют энтузиазм других людей относительно ее включения в OpenBSD.<br />
Некоторые часто задаваемые вопросы относительно приложений третьих сторон:<br />
* Почему включен Sendmail, его «небезопасность известна»?!<br />
Sendmail был известен за многие пробелы в безопасности, однако авторы и разработчики, поддерживающие Sendmail, никогда не отказывались переделывать свой код для улучшения безопасности (а такая реакция, к сожалению, редка). В последнее время в Sendmail обнаруживается уязвимостей не больше, чем у «более безопасных» альтернатив.<br />
* Почему в систему не включен Postfix?<br />
У него несвободная лицензия и поэтому он даже не рассматривается.<br />
* Почему отсутствуют qmail или djbdns?<br />
Лицензия или ее отсутствие: невозможность распространять модифицированные версии не позволяет<br />
рассматривать эти приложения.<br />
* Зачем включен Apache? Он же не нужен многим пользователям!<br />
Потому что он нужен разработчикам.<br />
* Почему не включена новая версия Apache?<br />
Лицензия новых версий неприемлема.<br />
* Почему не включен bzip2 вместо gzip?<br />
Скорость ужасно низка, а толку не так много. На небыстрых платформах, таких как m68k или VAX его было бы просто невозможно использовать.<br />
* Почему отсутствут графический или curses(3)- инсталлятор?<br />
По целому ряду причин, включая цель сохранения установки загрузочный носитель в пределах одного гибкого диска, то, что один установщик может быть использован на всех платформах во всех конфигурациях, а также тот факт, что после второй или третьей установки OpenBSD большинство пользователей считают установщик OpenBSD быстрым и простым по сравнению с другии ОС. Большинство разработчиков и пользователей в значительной мере предпочитают скорость, легкость и простоту использования нынешней установки, чем более «красочные» или «красивые» инсталляторы других платформ.<br />
В большинстве случаев эти вопросы уже обсуждались до самых мелочей в почтовых рассылках, так что, если вы хотите знать подробности, поищите в архивах.<br />
Конечно, если вы хотите использовать какое-либо из указанного здесь ПО, и лицензия вас устраивает, никто не запретит вам это делать (иначе это было бы не очень свободная система, не так ли?). Однако, ваши потребности могут измениться — вряд ли вам захочется разработать «Приложение-убийцу», которое вы не сможете продавать, распространять или зарабатывать на нем из-за того, что вы включили в его состав несвободное ПО.<br />
<br />
Перевод соответствует $OpenBSD: faq1.html, v 1.102 2008/04/30 21:24:58 nick Exp $<br />
<br />
[[Категория:Общая информация]]</div>172.16.0.1http://www.qbsd.ru/index.php?title=OpenBSD-Wiki:%D0%9F%D0%BE%D1%80%D1%82%D0%B0%D0%BB_%D1%81%D0%BE%D0%BE%D0%B1%D1%89%D0%B5%D1%81%D1%82%D0%B2%D0%B0&diff=98OpenBSD-Wiki:Портал сообщества2013-05-26T14:47:02Z<p>172.16.0.1: /* OPENBSD.PW Wiki */</p>
<hr />
<div>== OPENBSD.PW Wiki ==<br />
<br />
Wiki портал создан чтобы дать дополнительную помощь в освоении мультиплатформенной операционной системы [http://www.openbsd.org OpenBSD]. Несмотря на наличие объёмного [http://www.openbsd.org/index.html официального FAQ] в том числе [http://www.openbsd.org/faq/ru/index.html на русском], проработанных [http://www.openbsd.org/cgi-bin/man.cgi man страниц] и [http://www.openbsd.org/books.html книг] всегда остаётся интересен практический опыт и те «шпаргалки» которые системные администраторы пишут для себя чтобы не искать нужную информацию, а сразу же ею воспользоваться. Именно это является приоритетом OpenBSD-Wiki.<br />
<br />
Сообщество не преследует никакой цели получения прибыли от размещенной здесь информации и не запрещает её дальнейшее копирование / использование дома или на предприятиях. Также не оказывается финансовая помощь авторам, не выплачиваются гонорары. Любой вклад является добровольным. Надо понимать что труды становятся доступны неограниченной аудитории. Это может сказаться, если вы в последствии за ту же информацию планируете получить гонорар.<br />
<br />
Викификация имеющейся информации прежде всего направлена на надёжное систематизированное сохранение. К сожалению, в большинстве случаев не указан кто её автор. Если Вы являетесь автором имеете полное право внести отметку о себе. Вне зависимости работает ресурс с которого была получена информация ссылка на него должна присутствовать в wiki-cтатье.<br />
<br />
Кто желает оказать посильную помощь головному проекту ознакомьтесь с [http://www.openbsd.org/donations.html этой страницей], принимайте участие в процессе разработки, помогайте с актуализацией перевода FAQ на русский, приобретайте [http://www.openbsd.org/orders.html майки / постеры / диски], помогайте составлять Wiki. :)<br />
<br />
[[Категория:Общая информация]]</div>172.16.0.1http://www.qbsd.ru/index.php?title=%D0%9A%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D1%8F:%D0%9E%D0%B1%D1%89%D0%B0%D1%8F_%D0%B8%D0%BD%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%86%D0%B8%D1%8F&diff=97Категория:Общая информация2013-05-26T14:46:38Z<p>172.16.0.1: </p>
<hr />
<div>Темой данной категории являются общие сведения о OpenBSD</div>172.16.0.1http://www.qbsd.ru/index.php?title=%D0%9A%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D1%8F:%D0%9E%D0%B1%D1%89%D0%B0%D1%8F_%D0%B8%D0%BD%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%86%D0%B8%D1%8F&diff=96Категория:Общая информация2013-05-26T14:46:14Z<p>172.16.0.1: Новая страница: «Темой данной категории являются общие сведения о OpenBSD Категория:Общая информация»</p>
<hr />
<div>Темой данной категории являются общие сведения о OpenBSD<br />
[[Категория:Общая информация]]</div>172.16.0.1http://www.qbsd.ru/index.php?title=%D0%A0%D1%83%D1%81%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D1%8F_%D0%BA%D0%BE%D0%BD%D1%81%D0%BE%D0%BB%D0%B8_OpenBSD&diff=95Русификация консоли OpenBSD2013-05-26T13:18:08Z<p>172.16.0.1: </p>
<hr />
<div>== Русификация консоли OpenBSD ==<br />
<br />
Данная статья 100 % копипаст с [http://www.obsd.ru www.obsd.ru]<br />
<br />
Автор: '''Игорь Грабин'''<br />
<br />
Подключение кириллической раскладки:<br />
добавляем ru в файл ''/etc/kbdtype'' (если файла не было, то он создается):<br />
# echo ru > /etc/kbdtype<br />
После чего добавляем в /etc/rc.local :<br />
wsfontload /usr/share/misc/pcvtfonts/koi8-r-8x16<br />
for cons in 1 2 3 4; do wsconscfg -dF $cons; wsconscfg -t 80x25bf $cons; done unset cons<br />
wsconsctl -w keyboard.map+ = "keycode 157=Mode_Lock"<br />
Вместо koi8-r-8x16 можно указать koi8-u-8x16<br />
В качестве переключателя раскладки используется ''правый CTRL''. Для использования ''правого Alt'' вместо ''правого Ctrl'':<br />
wsconsctl -w keyboard.map+ = "keycode 184=Mode_Lock"<br />
Замена «Mode_Lock» на «Mode_switch» приведет к необходимости удерживания указанной клавиши. Для других, собственных вариантов можно ознакомиться с содержанием файла /usr/include/dev/wscons /wsksymdef.h<br />
Замечание: Экран ttyC0 (который, как правило, «на F1») создаётся всегда и не может быть удалён, поэтому не может отображать кириллицу.<br />
Кириллица в ksh будет после выполнения:<br />
# set +o emacs-usemeta<br />
Для запоминания параметра добавить эту строку в $HOME/.profile<br />
Для bash в домашние каталоги пользователей надо добавить файл $HOME/.inputrc следующего содержания:<br />
set convert-meta off<br />
set input-meta on set output-meta on<br />
Русификация после перезагрузки системы будет работать также и в csh. Не будет лишним отредактировать/добавить нужные файлы в /etc/skel для того, чтобы вновь добавляемые пользователи уже имели кириллическую консоль.</div>172.16.0.1http://www.qbsd.ru/index.php?title=OpenBSD-Wiki:%D0%A2%D0%B5%D0%BA%D1%83%D1%89%D0%B8%D0%B5_%D1%81%D0%BE%D0%B1%D1%8B%D1%82%D0%B8%D1%8F&diff=94OpenBSD-Wiki:Текущие события2013-05-26T13:17:04Z<p>172.16.0.1: /* Актуальное */</p>
<hr />
<div>== Актуальное ==<br />
Собрано всё, что применимо к текущему релизу.<br />
<br />
* [[Введение в OpenBSD]]<br />
* [[Аппаратное обеспечение и вопросы]]<br />
* [[IPsec между OpenBSD и Linux Ubuntu]]<br />
* [[Использование файла mk.conf]]<br />
* [[Написание OpenBSD Loadable Kernel Modules (LKM)]]<br />
* [[Новое IPSec howto]]<br />
* [[Русификация OpenBSD 5.x]]<br />
* [[Русификация OpenBSD]]<br />
* [[Русификация консоли OpenBSD]]<br />
* [[Создание загрузочной флешки]]<br />
* [[Перечень Интернет ресурсов о OpenBSD]]<br />
* [[Описание переменных sysctl]]<br />
* [[Сборник советов с OpenBSD101.com]]<br />
<br />
== Устаревшее ==<br />
Данная информация сохранена для архивных версий.<br />
<br />
* [[Использование Bluetooth в OpenBSD]]<br />
<br />
== Прочее ==<br />
<br />
* [[Резервная копия Wiki]]</div>172.16.0.1http://www.qbsd.ru/index.php?title=%D0%A0%D1%83%D1%81%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D1%8F_%D0%BA%D0%BE%D0%BD%D1%81%D0%BE%D0%BB%D0%B8_OpenBSD&diff=93Русификация консоли OpenBSD2013-05-26T13:16:35Z<p>172.16.0.1: Новая страница: «== Русификация консоли OpenBSD == Данная статья 100 % копипаст с [http://www.obsd.ru www.obsd.ru] Автор: '''Игор…»</p>
<hr />
<div>== Русификация консоли OpenBSD ==<br />
<br />
Данная статья 100 % копипаст с [http://www.obsd.ru www.obsd.ru]<br />
<br />
Автор: '''Игорь Грабин'''<br />
<br />
Подключение кириллической раскладки:<br />
добавляем ru в файл ''/etc/kbdtype'' (если файла не было, то он создается):<br />
# echo ru > /etc/kbdtype<br />
После чего добавляем в /etc/rc.local :<br />
wsfontload /usr/share/misc/pcvtfonts/koi8-r-8x16<br />
for cons in 1 2 3 4; do wsconscfg -dF $cons; wsconscfg -t 80x25bf $cons; done unset cons<br />
wsconsctl -w keyboard.map+ = "keycode 157=Mode_Lock"<br />
Вместо koi8-r-8x16 можно указать koi8-u-8x16<br />
В качестве переключателя раскладки используется ''правый CTRL''. Для использования ''правого Alt'' вместо ''правого Ctrl'':<br />
wsconsctl -w keyboard.map+ = "keycode 184=Mode_Lock"<br />
Замена "Mode_Lock" на "Mode_switch" приведет к необходимости удерживания указанной клавиши. Для других, собственных вариантов можно ознакомиться с содержанием файла /usr/include/dev/wscons /wsksymdef.h<br />
Замечание: Экран ttyC0 (который, как правило, "на F1") создаётся всегда и не может быть удалён, поэтому не может отображать кириллицу.<br />
Кириллица в ksh будет после выполнения:<br />
# set +o emacs-usemeta<br />
Для запоминания параметра добавить эту строку в $HOME/.profile<br />
Для bash в домашние каталоги пользователей надо добавить файл $HOME/.inputrc следующего содержания:<br />
set convert-meta off<br />
set input-meta on set output-meta on<br />
Русификация после перезагрузки системы будет работать также и в csh. Не будет лишним отредактировать/добавить нужные файлы в /etc/skel для того, чтобы вновь добавляемые пользователи уже имели кириллическую консоль.</div>172.16.0.1http://www.qbsd.ru/index.php?title=%D0%A1%D0%B1%D0%BE%D1%80%D0%BD%D0%B8%D0%BA_%D1%81%D0%BE%D0%B2%D0%B5%D1%82%D0%BE%D0%B2_%D1%81_OpenBSD101.com&diff=92Сборник советов с OpenBSD101.com2013-05-26T12:53:46Z<p>172.16.0.1: /* Ядро и применение патчей */</p>
<hr />
<div>== Ядро и применение патчей ==<br />
<br />
Данная статья 100 % копипаст с [http://www.openbsd101.ru www.openbsd101.ru]<br />
<br />
=== Введение ===<br />
<br />
Наложения патчей применимы к следующим двум вещам:<br />
<br />
* Программы<br />
* Ядро операционной системы<br />
<br />
В свою очередь процедуру наложения патчей можно разделить на две части:<br />
<br />
# Применения патча к исходному коду<br />
# Перекомпиляция и установка пропатченного ПО<br />
<br />
Патчи представляют из себя текстовые файлы, в начале которых обычно находится инструкция того, как наложить патч и переустановить ПО.<br />
Новые патчи объявляются в [http://www.openbsd.org/mail.html списке рассылки] [mailto: security-announce@OpenBSD.org security-announce@OpenBSD.org]. Список патчей также может быть найден на [http://www.openbsd.org/errata.html http://www.openbsd.org/errata.html].<br />
<br />
=== Скачивание исходного кода ===<br />
<br />
Прежде чем применять какие-либо патчи как к программам, так и к ядру системы, Вам необходим их исходный код.<br />
* Исходный код core системы OpenBSD 3.9 (99Мб): [ftp://ftp.openbsd.org/pub/OpenBSD/3.9/src.tar.gz ftp://ftp.openbsd.org/pub/OpenBSD/3.9/src.tar.gz]<br />
* Исходный код ядра OpenBSD 3.9 (16Мб): [ftp://ftp.openbsd.org/pub/OpenBSD/3.9/sys.tar.gz ftp://ftp.openbsd.org/pub/OpenBSD/3.9/sys.tar.gz]<br />
<br />
Теперь распаковываем исходный код core системы:<br />
<br />
# mv src.tar.gz /usr/src<br />
# cd /usr/src<br />
# tar -xvzf src.tar.gz<br />
<br />
и исходный код ядра:<br />
<br />
# mv sys.tar.gz /usr/src<br />
# cd /usr/src<br />
# tar -xvzf sys.tar.gz<br />
<br />
=== Скачивание патчей ===<br />
<br />
Идём дальше:<br />
* патчи для OpenBSD 3.9: [ftp://ftp.openbsd.org/pub/OpenBSD/patches/3.9.tar.gz ftp://ftp.openbsd.org/pub/OpenBSD/patches/3.9.tar.gz]<br />
<br />
Теперь создайте директорию /usr/src/patches, скопируйте туда 3.9.tar.gz и распакуйте:<br />
<br />
# mkdir /usr/src/patches<br />
# mv 3.9.tar.gz /usr/src/patches<br />
# cd /usr/src/patches<br />
# tar -xvzf 3.9.tar.gz<br />
<br />
Скопируйте все патчи из папок /usr/src/patches/3.9/i386 и /usr/src/patches/3.9/common в /usr/src. Весь процесс применения патчей происходит в папке /usr/src. Каталог i386 обычно не содержит патчей.<br />
<br />
=== Наложение патчей на программы ===<br />
<br />
Для начала мы должны определить, какой тип патчей мы имеем.<br />
Используем команду head, чтобы просмотреть заголовок патча:<br />
<pre><br />
# head 001_st.patch<br />
<br />
Apply by doing:<br />
cd /usr/src<br />
patch -p0 < 001_st.patch<br />
<br />
Rebuild your kernel.<br />
<br />
Index: sys/scsi/st.c<br />
=========================<br />
RCS file: /cvs/src/sys/scsi/st.c,v<br />
retrieving revision 1.41<br />
</pre><br />
<br />
По комментарию Rebuild your kernel определяем, что это патч для ядра.<br />
Далее представлен патч, исправляющий локальную уязвимость в Apache (для OpenBSD 3.6).<br />
Давайте взглянем на заголовок патча:<br />
<pre><br />
# head -n 17 009_httpd.patch<br />
<br />
Apply by doing:<br />
cd /usr/src<br />
patch -p0 < 009_httpd.patch<br />
<br />
And then rebuild and install httpd and its modules:<br />
cd usr.sbin/httpd<br />
make -f Makefile.bsd-wrapper obj<br />
make -f Makefile.bsd-wrapper cleandir<br />
make -f Makefile.bsd-wrapper depend<br />
make -f Makefile.bsd-wrapper<br />
make -f Makefile.bsd-wrapper install<br />
<br />
If httpd had been started, you might want to run<br />
apachectl stop<br />
before running "make install", and<br />
apachectl start<br />
<br />
afterwards.<br />
</pre><br />
В случае следования написанным в начале патча инструкциям у вас не должно возникнуть проблем с его применением и перекомпиляцией программы.<br />
<br />
=== Наложение патчей на ядро ===<br />
<br />
Применение патчей ядра несколько отличается от применения патчей на программы — сначала вы должны наложить все патчи на ядро и после его перекомпилировать.<br />
Посмотрим с помощью head заголовок патча:<br />
<pre><br />
# head 001_st.patch<br />
<br />
Apply by doing:<br />
cd /usr/src<br />
patch -p0 < 001_st.patch<br />
<br />
Rebuild your kernel.<br />
<br />
Index: sys/scsi/st.c<br />
=========================<br />
RCS file: /cvs/src/sys/scsi/st.c,v<br />
retrieving revision 1.41<br />
</pre><br />
Видим Rebuild your kernel, значит это то, что нам нужно.<br />
Применив последовательно все патчи, переходим к следующему пункту…<br />
<br />
=== Перекомпиляция ядра после наложения патчей ===<br />
<br />
Так, не торопимся и делаем резервную копию текущего ядра:<br />
<br />
# cp /bsd /bsd.old<br />
<br />
Конфигурируем ядро:<br />
<br />
# cd /usr/src/sys/arch/i386/conf/<br />
# config GENERIC<br />
Don't forget to run "make depend"<br />
<br />
Теперь компилируем и устанавливаем новое ядро:<br />
<br />
# cd /usr/src/sys/arch/i386/compile/GENERIC/<br />
# make clean && make depend && make && make install<br />
<br />
Просто перезагрузитесь, чтобы проверить новое ядро.<br />
<br />
=== Загрузка старого ядра ===<br />
<br />
Если у вас возникли проблемы при загрузке с новым ядром, тогда попробуйте загрузиться со старым ядром.<br />
Во время загрузки, когда на экране будет нечто подобное:<br />
<br />
Using drive 0, partition 3.<br />
Loading...<br />
probing : pc0 com0 apm mem[634K 319M a20=on]<br />
disk: fd0 hd0+<br />
>> OpenBSD/i386 BOOT 2.06<br />
boot><br />
<br />
наберите название вашего старого ядра:<br />
<br />
Using drive 0, partition 3.<br />
Loading...<br />
probing : pc0 com0 apm mem[634K 319M a20=on]<br />
disk: fd0 hd0+<br />
>> OpenBSD/i386 BOOT 2.06<br />
boot> bsd.old<br />
<br />
== Безопасность ==<br />
<br />
=== Уровни безопасности ===<br />
<br />
Уровни безопасности позволяют указать ядру требуемую степерь безопасности системы. Всего существует четыре уровня безопасности: −1, 0, 1, 2. Уровень 2 является высшем уровнем безопасности. Уровни безопасности указываются в файле /etc/rc.securelevel.<br />
Вкратце про каждый уровень:<br />
<br />
* '''Уровень −1''': Дополнительное обеспечение безопасности системы ядром отстутствует, многие обычные возможности. Такие, как права доступа, функционируют. Используйте этот уровень для не-production компьютеров.<br />
* '''Уровень 0''': Используется при начальной загрузке OpenBSD. После окончания загрузки система обычно переходит на уровень 1. Какие-либо специфичные вещи в систему этот уровень не добавляет.<br />
* '''Уровень 1''': Уровень безопасности по умолчанию в OpenBSD. Операции записи в /dev/mem и /dev/kmem запрещены. Устройства raw-disk доступны только на чтение. Флаги schg и sappnd не могут быть удалены. Модули ядра не могут быть загружены или выгружены «на лету».<br />
* '''Уровень 2''': Включает в себя всё из уровня 1, ограничивает изменение системного времени, pfctl не может менять правила PF или NAT, значения sysctl для отладчика ядра DDB не могут быть изменены.<br />
<br />
<br />
По окончании процесса загрузки системы вы можете узнать текущий уровень безопасности системы набрав в строке:<br />
<br />
# sysctl kern.securelevel<br />
<br />
Вы можете повысить уровень безопасности командой:<br />
<br />
# sysctl -w kern.securelevel=2<br />
<br />
И вы не сможете изменить уровень безопасности с более высокого на низкий,- только после перезагрузки.<br />
<br />
=== Использование флагов ядра ===<br />
<br />
Выставление флагов ядра похоже на выставление прав доступа файлам, но лишь с тем различием, что некоторые из них даже пользователь root может поменять лишь определённом(низком) уровне безопасности — или загрузившись в однопользовательском режиме.<br />
<br />
Наиболее используемые флаги:<br />
<br />
* '''sappnd''': Флаг может быть добавлен/удалён только пользователем root. Разрешается добавлять(append) данные в файл, но нельзя удалить или редактировать его. Неплохо использовать для лог-файлов. Этот флаг не может быть удалён при уровне безопасности 1 и выше.<br />
* '''schg''': Флаг может быть добавлен/удалён только пользователем root. Файлы с этим флагом не могут быть изменены, перемещены или заменеы. Этот флаг не может быть удалён при уровне безопасности 1 и выше.<br />
* '''uappnd''': Флаг может быть добавлен/удалён только пользователем root. Разрешается добавлять(append) данные в файл, но нельзя удалить или редактировать его рядовым пользователям. Пользователь root может модифицировать этот флаг в любое время.<br />
<br />
Будьте внимательны при использовании этих флагов,- неумелое использование может привести вашу систему в нерабочее состояние.<br />
Посмотрим, выставлен ли флаг у файла:<br />
<br />
#ls -lo /bsd<br />
-rw-r--r-- 1 root wheel schg 5358488 Mar 30 11:47 /bsd<br />
<br />
Как мы видим, выставлен флаг schg.<br />
Ниже представлено два популярных примера применения флагов:<br />
Запретим изменение ядра системы:<br />
<br />
# chflags schg /bsd<br />
<br />
Запретим изменение исполняемых файлов в /bin:<br />
<br />
# chflags -R schg /bin<br />
<br />
Можно поставить sappnd флаг на history файл пользователя root. Если злоумышленник проникнет в систему, то sappnd не позволит ему скрыть своих действий.<br />
Также выставление флага sappnd на history файл пользователя не позволит злоумышленникам использовать старый трюк с направлением history в устройство /dev/null с помощью мягкой ссылки.<br />
Флаги ядра для параноиков<br />
Вот такие рекомендации для OpenBSD сервера (только после окончательной настройки!):<br />
<br />
# chflags schg /bsd<br />
# chflags schg /etc/changelist<br />
# chflags schg /etc/daily<br />
# chflags schg /etc/inetd.conf<br />
# chflags schg /etc/netstart<br />
# chflags schg /etc/pf.conf<br />
# chflags schg /etc/rc<br />
# chflags schg /etc/rc.conf<br />
# chflags schg /etc/rc.local<br />
# chflags schg /etc/rc.securelevel<br />
# chflags schg /etc/rc.shutdown<br />
# chflags schg /etc/security<br />
# chflags schg /etc/mtree/special<br />
# chflags -R schg /bin<br />
# chflags -R schg /sbin<br />
# chflags -R schg /usr/bin<br />
# chflags -R schg /usr/libexec<br />
# chflags -R schg /usr/sbin<br />
<br />
=== Шифрование файла подкачки ===<br />
<br />
Шифрование файла подкачки может предотвратить опасность раскрытия важных данных(таких, как, например, ключи шифрования) локальными пользователями.<br />
По умолчанию OpenBSD 3.9 шифрует файл подкачки, для того же, чтобы включить эту функцию для более старых версий, необходимо:<br />
<br />
# Включить эту функцию без перезагрузки<br />
# Изменить конфигурационный файл sysctl, чтобы после перезагрузки системы шифрование файла подкачки было включено<br />
<br />
1. От ппользователем root измените значение sysctl переменной:<br />
# sysctl -w vm.swapencrypt.enable=1<br />
2. Измените файл /etc/sysctl.conf с:<br />
#vm.swapencrypt.enable=1<br />
на<br />
vm.swapencrypt.enable=1<br />
<br />
и проверьте после перезагрузки, изменилось ли значение sysctl переменной:<br />
sysctl vm.swapencrypt.enable<br />
<br />
=== Монтирование разделов ===<br />
<br />
Правильные параметры монтирования файловых систем способны весьма помочь в плане усиления общей безопасность системы. Файл /etc/fstab контролирует, как будут монтироваться файловые системы на этапе загрузки.<br />
Пара рекомендуемых конфигураций:<br />
<br />
Средне-параноидальная конфигурация:<br />
<br />
/dev/wd0a / ffs rw 1 1<br />
/dev/wd0h /home ffs rw,nodev,nosuid 1 2<br />
/dev/wd0d /tmp ffs rw,nodev,nosuid,noexec 1 2<br />
/dev/wd0g /usr ffs ro,nodev 1 2<br />
/dev/wd0e /var ffs rw,nodev,nosuid,noexec 1 2<br />
<br />
А тут ещё добавляем опцию read-only(ro) на корневой раздел(/) и опцию noexec на раздел /home:<br />
<br />
/dev/wd0a / ffs ro 1 1<br />
/dev/wd0h /home ffs rw,nodev,nosuid,noexec 1 2<br />
/dev/wd0d /tmp ffs rw,nodev,nosuid,noexec 1 2<br />
/dev/wd0g /usr ffs ro,nodev 1 2<br />
/dev/wd0e /var ffs rw,nodev,nosuid,noexec 1 2<br />
<br />
=== Использование rm с опцией -P ===<br />
При использовании команды rm с опцией -P содержимое файла перезаписывается 3 раза, прежде чем удалить его. В Linux подобный функционал обеспечивает команда shred.<br />
Использование:<br />
<br />
# rm -P filename<br />
<br />
Можно также создать псевдоним для команды rm -R в оболочке bash:<br />
<br />
# echo "alias rm='rm -P' " >> .bash_profile<br />
<br />
=== Увеличение минимальной длины пароля ===<br />
<br />
По умолчанию минимальная длина пароля в системе OpenBSD равна шести символам.<br />
Чтобы увеличить её до 10-ти символов, добавьте следующую строку под классом default в файле /etc/login.conf:<br />
<br />
:minpasswordlen=10:\<br />
<br />
В отличие от FreeBSD /etc/login.conf не должен быть сконвертирован после в файл БД с помощью cap_mkdb.<br />
<br />
<br />
== Обновление с помощью CVSup ==<br />
<br />
=== Введение ===<br />
<br />
Программа CVSup позволяет вам скачать и обновить файлы исходных кодов OpenBSD. Затем вы можете перекомпилировать ваше ядро, базовую систему и установленные в системе порты.<br />
Итак, вам потребуется:<br />
# On-line репозиторий<br />
# Программа CVSup<br />
# Конфигурационные файлы CVSup<br />
<br />
=== Установка CVSup ===<br />
<br />
Самый простой способ установки CVSup — это воспользоваться командой pkg_add следующим образом:<br />
<br />
# pkg_add -v ftp://ftp.openbsd.org/pub/OpenBSD/3.9/packages/i386/cvsup-16.1h-no_x11.tgz<br />
<br />
=== Конфигурационные файлы CVSup ===<br />
<br />
Создадим пару конфигурационных файлов для CVSup:<br />
<br />
cvsup-file-ports - для скачивания дерева портов<br />
cvsup-file-src - для скачивания исходных текстов системы(в т.ч. ядра)<br />
<br />
cvsup-file-port:<br />
<br />
<pre><br />
# Defaults that apply to all the collections<br />
*default release=cvs<br />
*default delete use-rel-suffix<br />
*default umask=002<br />
*default host=anoncvs3.usa.openbsd.org<br />
*default base=/usr<br />
*default prefix=/usr<br />
*default tag=OPENBSD_3_9<br />
<br />
# If your network link is a T1 or faster, comment out the following line.<br />
# *default compress<br />
<br />
OpenBSD-ports<br />
#OpenBSD-all<br />
#OpenBSD-src<br />
#OpenBSD-www<br />
#OpenBSD-x11<br />
#OpenBSD-xf4<br />
</pre><br />
<br />
Вместо anoncvs3.usa.openbsd.org укажите ближайший к Вам сервер.<br />
cvsup-file-src:<br />
<pre><br />
# Defaults that apply to all the collections<br />
*default release=cvs<br />
*default delete use-rel-suffix<br />
*default umask=002<br />
*default host=anoncvs3.usa.openbsd.org<br />
*default base=/usr<br />
*default prefix=/usr<br />
*default tag=OPENBSD_3_9<br />
<br />
# If your network link is a T1 or faster, comment out the following line.<br />
# *default compress<br />
<br />
#OpenBSD-ports<br />
#OpenBSD-all<br />
OpenBSD-src<br />
#OpenBSD-www<br />
#OpenBSD-x11<br />
#OpenBSD-xf4<br />
</pre><br />
<br />
Не забудьте также заменить anoncvs3.usa.openbsd.org.<br />
<br />
=== Запуск CVSup ===<br />
<br />
Запустим CVSup с использованием этих конфигурационных файлов,-<br />
Обновим дерево портов с cvsup-file-ports:<br />
<br />
# cvsup -g -L 2 cvsup-file-ports<br />
<br />
…тут вам скачается около 78Мб портов.<br />
Обновим дерево исходных текстов с cvsup-file-src:<br />
<br />
# cvsup -g -L 2 cvsup-file-src<br />
<br />
…на сей раз вам бухнется 570Мб.<br />
Проверка ваших портов(ports)<br />
После скачивания свежего дерева портов вам может быть необходимо узнать, требуется ли обновление уже установленных в системе портов.<br />
Это делается с помощью скрипта out-of-date, находящемся в каталоге /usr/ports/infrastructure/build.<br />
Так, приведённый ниже вывод работы скрипта указывает на отсутствие необходимости обновления каких-либо портов:<br />
<pre><br />
# cd /usr/ports/infrastructure/build/<br />
# ./out-of-date<br />
Collecting installed packages<br />
Collecting port versions: complete<br />
Collecting port signatures: complete<br />
Outdated ports:<br />
<br />
#<br />
</pre><br />
Противоположный пример:<br />
<pre><br />
# cd /usr/ports/infrastructure/build/<br />
# ./out-of-date<br />
Collecting installed packages<br />
Collecting port versions: complete<br />
Collecting port signatures: complete<br />
<br />
Outdated ports:<br />
<br />
www/mozilla-firefox # 1.5.0.1 -> 1.5.0.3<br />
#<br />
</pre><br />
Вывод указывает на необходимость обновления программы Firefox.<br />
<br />
=== Обновление портов ===<br />
<br />
Выше мы искали порты, требующие обновления с помощью специального скрипта, теперь же настала пора их собственно обновить. Вам потребуется наличие исходных файлов программы в папке /usr/ports/distfiles, либо соединение с Интернет. Далее необходимо:<br />
<br />
# Найти каталог порта в дереве портов<br />
# Скомпилировать и установить новый порт<br />
<br />
1. Находим каталог:<br />
<br />
# find /usr/ports/ -name mozilla-firefox<br />
/usr/ports/www/mozilla-firefox<br />
<br />
2. Компилируем и устанавливаем:<br />
<br />
# cd /usr/ports/www/mozilla-firefox/<br />
# make install<br />
<br />
=== Компиляция и установка ядра ===<br />
<br />
Порядок таков:<br />
<br />
# Создание резервной копии текущего ядра<br />
# Конфигурирование<br />
# Компиляция и установка нового ядра<br />
<br />
1. Делаем резервную копию ядра:<br />
# cp /bsd /bsd.old<br />
<br />
2. Конфигурируем ядро:<br />
# cd /usr/src/sys/arch/i386/conf/<br />
# config GENERIC<br />
<br />
3. Компилируем и устанавливаем новое ядро:<br />
# cd /usr/src/sys/arch/i386/compile/GENERIC/<br />
# make depend && make clean && make depend && make && make install<br />
<br />
Перезагружаемся, чтобы проверить новое ядро.<br />
<br />
=== Перекомпиляция системы ===<br />
<br />
После загрузки нового ядра можно приступить к обновлению/пересборке системы. Убедитесь, что у Вас существует директория /usr/obj, либо создайте её в случае отсутствия.<br />
Пересоберите систему:<br />
<br />
# cd /usr/src<br />
# find . -type l -name obj | xargs rm<br />
# make cleandir<br />
# rm -rf /usr/obj/*<br />
# make obj<br />
# cd /usr/src/etc<br />
# make DESTDIR=/ distrib-dirs<br />
# cd /usr/src<br />
# make build<br />
<br />
Выполнение make build занимает около часа на процессоре с частотой 2.6GHz, поэтому будьте терпеливы.</div>172.16.0.1http://www.qbsd.ru/index.php?title=OpenBSD-Wiki:%D0%A2%D0%B5%D0%BA%D1%83%D1%89%D0%B8%D0%B5_%D1%81%D0%BE%D0%B1%D1%8B%D1%82%D0%B8%D1%8F&diff=91OpenBSD-Wiki:Текущие события2013-05-26T12:47:29Z<p>172.16.0.1: </p>
<hr />
<div>== Актуальное ==<br />
Собрано всё, что применимо к текущему релизу.<br />
<br />
* [[Введение в OpenBSD]]<br />
* [[Аппаратное обеспечение и вопросы]]<br />
* [[IPsec между OpenBSD и Linux Ubuntu]]<br />
* [[Использование файла mk.conf]]<br />
* [[Написание OpenBSD Loadable Kernel Modules (LKM)]]<br />
* [[Новое IPSec howto]]<br />
* [[Русификация OpenBSD 5.x]]<br />
* [[Русификация OpenBSD]]<br />
* [[Создание загрузочной флешки]]<br />
* [[Перечень Интернет ресурсов о OpenBSD]]<br />
* [[Описание переменных sysctl]]<br />
* [[Сборник советов с OpenBSD101.com]]<br />
<br />
== Устаревшее ==<br />
Данная информация сохранена для архивных версий.<br />
<br />
* [[Использование Bluetooth в OpenBSD]]<br />
<br />
== Прочее ==<br />
<br />
* [[Резервная копия Wiki]]</div>172.16.0.1http://www.qbsd.ru/index.php?title=%D0%A1%D0%B1%D0%BE%D1%80%D0%BD%D0%B8%D0%BA_%D1%81%D0%BE%D0%B2%D0%B5%D1%82%D0%BE%D0%B2_%D1%81_OpenBSD101.com&diff=90Сборник советов с OpenBSD101.com2013-05-26T12:46:37Z<p>172.16.0.1: </p>
<hr />
<div>== Ядро и применение патчей ==<br />
<br />
=== Введение ===<br />
<br />
Наложения патчей применимы к следующим двум вещам:<br />
<br />
* Программы<br />
* Ядро операционной системы<br />
<br />
В свою очередь процедуру наложения патчей можно разделить на две части:<br />
<br />
# Применения патча к исходному коду<br />
# Перекомпиляция и установка пропатченного ПО<br />
<br />
Патчи представляют из себя текстовые файлы, в начале которых обычно находится инструкция того, как наложить патч и переустановить ПО.<br />
Новые патчи объявляются в [http://www.openbsd.org/mail.html списке рассылки] [mailto: security-announce@OpenBSD.org security-announce@OpenBSD.org]. Список патчей также может быть найден на [http://www.openbsd.org/errata.html http://www.openbsd.org/errata.html].<br />
<br />
=== Скачивание исходного кода ===<br />
<br />
Прежде чем применять какие-либо патчи как к программам, так и к ядру системы, Вам необходим их исходный код.<br />
* Исходный код core системы OpenBSD 3.9 (99Мб): [ftp://ftp.openbsd.org/pub/OpenBSD/3.9/src.tar.gz ftp://ftp.openbsd.org/pub/OpenBSD/3.9/src.tar.gz]<br />
* Исходный код ядра OpenBSD 3.9 (16Мб): [ftp://ftp.openbsd.org/pub/OpenBSD/3.9/sys.tar.gz ftp://ftp.openbsd.org/pub/OpenBSD/3.9/sys.tar.gz]<br />
<br />
Теперь распаковываем исходный код core системы:<br />
<br />
# mv src.tar.gz /usr/src<br />
# cd /usr/src<br />
# tar -xvzf src.tar.gz<br />
<br />
и исходный код ядра:<br />
<br />
# mv sys.tar.gz /usr/src<br />
# cd /usr/src<br />
# tar -xvzf sys.tar.gz<br />
<br />
=== Скачивание патчей ===<br />
<br />
Идём дальше:<br />
* патчи для OpenBSD 3.9: [ftp://ftp.openbsd.org/pub/OpenBSD/patches/3.9.tar.gz ftp://ftp.openbsd.org/pub/OpenBSD/patches/3.9.tar.gz]<br />
<br />
Теперь создайте директорию /usr/src/patches, скопируйте туда 3.9.tar.gz и распакуйте:<br />
<br />
# mkdir /usr/src/patches<br />
# mv 3.9.tar.gz /usr/src/patches<br />
# cd /usr/src/patches<br />
# tar -xvzf 3.9.tar.gz<br />
<br />
Скопируйте все патчи из папок /usr/src/patches/3.9/i386 и /usr/src/patches/3.9/common в /usr/src. Весь процесс применения патчей происходит в папке /usr/src. Каталог i386 обычно не содержит патчей.<br />
<br />
=== Наложение патчей на программы ===<br />
<br />
Для начала мы должны определить, какой тип патчей мы имеем.<br />
Используем команду head, чтобы просмотреть заголовок патча:<br />
<pre><br />
# head 001_st.patch<br />
<br />
Apply by doing:<br />
cd /usr/src<br />
patch -p0 < 001_st.patch<br />
<br />
Rebuild your kernel.<br />
<br />
Index: sys/scsi/st.c<br />
=========================<br />
RCS file: /cvs/src/sys/scsi/st.c,v<br />
retrieving revision 1.41<br />
</pre><br />
<br />
По комментарию Rebuild your kernel определяем, что это патч для ядра.<br />
Далее представлен патч, исправляющий локальную уязвимость в Apache (для OpenBSD 3.6).<br />
Давайте взглянем на заголовок патча:<br />
<pre><br />
# head -n 17 009_httpd.patch<br />
<br />
Apply by doing:<br />
cd /usr/src<br />
patch -p0 < 009_httpd.patch<br />
<br />
And then rebuild and install httpd and its modules:<br />
cd usr.sbin/httpd<br />
make -f Makefile.bsd-wrapper obj<br />
make -f Makefile.bsd-wrapper cleandir<br />
make -f Makefile.bsd-wrapper depend<br />
make -f Makefile.bsd-wrapper<br />
make -f Makefile.bsd-wrapper install<br />
<br />
If httpd had been started, you might want to run<br />
apachectl stop<br />
before running "make install", and<br />
apachectl start<br />
<br />
afterwards.<br />
</pre><br />
В случае следования написанным в начале патча инструкциям у вас не должно возникнуть проблем с его применением и перекомпиляцией программы.<br />
<br />
=== Наложение патчей на ядро ===<br />
<br />
Применение патчей ядра несколько отличается от применения патчей на программы — сначала вы должны наложить все патчи на ядро и после его перекомпилировать.<br />
Посмотрим с помощью head заголовок патча:<br />
<pre><br />
# head 001_st.patch<br />
<br />
Apply by doing:<br />
cd /usr/src<br />
patch -p0 < 001_st.patch<br />
<br />
Rebuild your kernel.<br />
<br />
Index: sys/scsi/st.c<br />
=========================<br />
RCS file: /cvs/src/sys/scsi/st.c,v<br />
retrieving revision 1.41<br />
</pre><br />
Видим Rebuild your kernel, значит это то, что нам нужно.<br />
Применив последовательно все патчи, переходим к следующему пункту…<br />
<br />
=== Перекомпиляция ядра после наложения патчей ===<br />
<br />
Так, не торопимся и делаем резервную копию текущего ядра:<br />
<br />
# cp /bsd /bsd.old<br />
<br />
Конфигурируем ядро:<br />
<br />
# cd /usr/src/sys/arch/i386/conf/<br />
# config GENERIC<br />
Don't forget to run "make depend"<br />
<br />
Теперь компилируем и устанавливаем новое ядро:<br />
<br />
# cd /usr/src/sys/arch/i386/compile/GENERIC/<br />
# make clean && make depend && make && make install<br />
<br />
Просто перезагрузитесь, чтобы проверить новое ядро.<br />
<br />
=== Загрузка старого ядра ===<br />
<br />
Если у вас возникли проблемы при загрузке с новым ядром, тогда попробуйте загрузиться со старым ядром.<br />
Во время загрузки, когда на экране будет нечто подобное:<br />
<br />
Using drive 0, partition 3.<br />
Loading...<br />
probing : pc0 com0 apm mem[634K 319M a20=on]<br />
disk: fd0 hd0+<br />
>> OpenBSD/i386 BOOT 2.06<br />
boot><br />
<br />
наберите название вашего старого ядра:<br />
<br />
Using drive 0, partition 3.<br />
Loading...<br />
probing : pc0 com0 apm mem[634K 319M a20=on]<br />
disk: fd0 hd0+<br />
>> OpenBSD/i386 BOOT 2.06<br />
boot> bsd.old<br />
<br />
== Безопасность ==<br />
<br />
=== Уровни безопасности ===<br />
<br />
Уровни безопасности позволяют указать ядру требуемую степерь безопасности системы. Всего существует четыре уровня безопасности: −1, 0, 1, 2. Уровень 2 является высшем уровнем безопасности. Уровни безопасности указываются в файле /etc/rc.securelevel.<br />
Вкратце про каждый уровень:<br />
<br />
* '''Уровень −1''': Дополнительное обеспечение безопасности системы ядром отстутствует, многие обычные возможности. Такие, как права доступа, функционируют. Используйте этот уровень для не-production компьютеров.<br />
* '''Уровень 0''': Используется при начальной загрузке OpenBSD. После окончания загрузки система обычно переходит на уровень 1. Какие-либо специфичные вещи в систему этот уровень не добавляет.<br />
* '''Уровень 1''': Уровень безопасности по умолчанию в OpenBSD. Операции записи в /dev/mem и /dev/kmem запрещены. Устройства raw-disk доступны только на чтение. Флаги schg и sappnd не могут быть удалены. Модули ядра не могут быть загружены или выгружены «на лету».<br />
* '''Уровень 2''': Включает в себя всё из уровня 1, ограничивает изменение системного времени, pfctl не может менять правила PF или NAT, значения sysctl для отладчика ядра DDB не могут быть изменены.<br />
<br />
<br />
По окончании процесса загрузки системы вы можете узнать текущий уровень безопасности системы набрав в строке:<br />
<br />
# sysctl kern.securelevel<br />
<br />
Вы можете повысить уровень безопасности командой:<br />
<br />
# sysctl -w kern.securelevel=2<br />
<br />
И вы не сможете изменить уровень безопасности с более высокого на низкий,- только после перезагрузки.<br />
<br />
=== Использование флагов ядра ===<br />
<br />
Выставление флагов ядра похоже на выставление прав доступа файлам, но лишь с тем различием, что некоторые из них даже пользователь root может поменять лишь определённом(низком) уровне безопасности — или загрузившись в однопользовательском режиме.<br />
<br />
Наиболее используемые флаги:<br />
<br />
* '''sappnd''': Флаг может быть добавлен/удалён только пользователем root. Разрешается добавлять(append) данные в файл, но нельзя удалить или редактировать его. Неплохо использовать для лог-файлов. Этот флаг не может быть удалён при уровне безопасности 1 и выше.<br />
* '''schg''': Флаг может быть добавлен/удалён только пользователем root. Файлы с этим флагом не могут быть изменены, перемещены или заменеы. Этот флаг не может быть удалён при уровне безопасности 1 и выше.<br />
* '''uappnd''': Флаг может быть добавлен/удалён только пользователем root. Разрешается добавлять(append) данные в файл, но нельзя удалить или редактировать его рядовым пользователям. Пользователь root может модифицировать этот флаг в любое время.<br />
<br />
Будьте внимательны при использовании этих флагов,- неумелое использование может привести вашу систему в нерабочее состояние.<br />
Посмотрим, выставлен ли флаг у файла:<br />
<br />
#ls -lo /bsd<br />
-rw-r--r-- 1 root wheel schg 5358488 Mar 30 11:47 /bsd<br />
<br />
Как мы видим, выставлен флаг schg.<br />
Ниже представлено два популярных примера применения флагов:<br />
Запретим изменение ядра системы:<br />
<br />
# chflags schg /bsd<br />
<br />
Запретим изменение исполняемых файлов в /bin:<br />
<br />
# chflags -R schg /bin<br />
<br />
Можно поставить sappnd флаг на history файл пользователя root. Если злоумышленник проникнет в систему, то sappnd не позволит ему скрыть своих действий.<br />
Также выставление флага sappnd на history файл пользователя не позволит злоумышленникам использовать старый трюк с направлением history в устройство /dev/null с помощью мягкой ссылки.<br />
Флаги ядра для параноиков<br />
Вот такие рекомендации для OpenBSD сервера (только после окончательной настройки!):<br />
<br />
# chflags schg /bsd<br />
# chflags schg /etc/changelist<br />
# chflags schg /etc/daily<br />
# chflags schg /etc/inetd.conf<br />
# chflags schg /etc/netstart<br />
# chflags schg /etc/pf.conf<br />
# chflags schg /etc/rc<br />
# chflags schg /etc/rc.conf<br />
# chflags schg /etc/rc.local<br />
# chflags schg /etc/rc.securelevel<br />
# chflags schg /etc/rc.shutdown<br />
# chflags schg /etc/security<br />
# chflags schg /etc/mtree/special<br />
# chflags -R schg /bin<br />
# chflags -R schg /sbin<br />
# chflags -R schg /usr/bin<br />
# chflags -R schg /usr/libexec<br />
# chflags -R schg /usr/sbin<br />
<br />
=== Шифрование файла подкачки ===<br />
<br />
Шифрование файла подкачки может предотвратить опасность раскрытия важных данных(таких, как, например, ключи шифрования) локальными пользователями.<br />
По умолчанию OpenBSD 3.9 шифрует файл подкачки, для того же, чтобы включить эту функцию для более старых версий, необходимо:<br />
<br />
# Включить эту функцию без перезагрузки<br />
# Изменить конфигурационный файл sysctl, чтобы после перезагрузки системы шифрование файла подкачки было включено<br />
<br />
1. От ппользователем root измените значение sysctl переменной:<br />
# sysctl -w vm.swapencrypt.enable=1<br />
2. Измените файл /etc/sysctl.conf с:<br />
#vm.swapencrypt.enable=1<br />
на<br />
vm.swapencrypt.enable=1<br />
<br />
и проверьте после перезагрузки, изменилось ли значение sysctl переменной:<br />
sysctl vm.swapencrypt.enable<br />
<br />
=== Монтирование разделов ===<br />
<br />
Правильные параметры монтирования файловых систем способны весьма помочь в плане усиления общей безопасность системы. Файл /etc/fstab контролирует, как будут монтироваться файловые системы на этапе загрузки.<br />
Пара рекомендуемых конфигураций:<br />
<br />
Средне-параноидальная конфигурация:<br />
<br />
/dev/wd0a / ffs rw 1 1<br />
/dev/wd0h /home ffs rw,nodev,nosuid 1 2<br />
/dev/wd0d /tmp ffs rw,nodev,nosuid,noexec 1 2<br />
/dev/wd0g /usr ffs ro,nodev 1 2<br />
/dev/wd0e /var ffs rw,nodev,nosuid,noexec 1 2<br />
<br />
А тут ещё добавляем опцию read-only(ro) на корневой раздел(/) и опцию noexec на раздел /home:<br />
<br />
/dev/wd0a / ffs ro 1 1<br />
/dev/wd0h /home ffs rw,nodev,nosuid,noexec 1 2<br />
/dev/wd0d /tmp ffs rw,nodev,nosuid,noexec 1 2<br />
/dev/wd0g /usr ffs ro,nodev 1 2<br />
/dev/wd0e /var ffs rw,nodev,nosuid,noexec 1 2<br />
<br />
=== Использование rm с опцией -P ===<br />
При использовании команды rm с опцией -P содержимое файла перезаписывается 3 раза, прежде чем удалить его. В Linux подобный функционал обеспечивает команда shred.<br />
Использование:<br />
<br />
# rm -P filename<br />
<br />
Можно также создать псевдоним для команды rm -R в оболочке bash:<br />
<br />
# echo "alias rm='rm -P' " >> .bash_profile<br />
<br />
=== Увеличение минимальной длины пароля ===<br />
<br />
По умолчанию минимальная длина пароля в системе OpenBSD равна шести символам.<br />
Чтобы увеличить её до 10-ти символов, добавьте следующую строку под классом default в файле /etc/login.conf:<br />
<br />
:minpasswordlen=10:\<br />
<br />
В отличие от FreeBSD /etc/login.conf не должен быть сконвертирован после в файл БД с помощью cap_mkdb.<br />
<br />
<br />
== Обновление с помощью CVSup ==<br />
<br />
=== Введение ===<br />
<br />
Программа CVSup позволяет вам скачать и обновить файлы исходных кодов OpenBSD. Затем вы можете перекомпилировать ваше ядро, базовую систему и установленные в системе порты.<br />
Итак, вам потребуется:<br />
# On-line репозиторий<br />
# Программа CVSup<br />
# Конфигурационные файлы CVSup<br />
<br />
=== Установка CVSup ===<br />
<br />
Самый простой способ установки CVSup — это воспользоваться командой pkg_add следующим образом:<br />
<br />
# pkg_add -v ftp://ftp.openbsd.org/pub/OpenBSD/3.9/packages/i386/cvsup-16.1h-no_x11.tgz<br />
<br />
=== Конфигурационные файлы CVSup ===<br />
<br />
Создадим пару конфигурационных файлов для CVSup:<br />
<br />
cvsup-file-ports - для скачивания дерева портов<br />
cvsup-file-src - для скачивания исходных текстов системы(в т.ч. ядра)<br />
<br />
cvsup-file-port:<br />
<br />
<pre><br />
# Defaults that apply to all the collections<br />
*default release=cvs<br />
*default delete use-rel-suffix<br />
*default umask=002<br />
*default host=anoncvs3.usa.openbsd.org<br />
*default base=/usr<br />
*default prefix=/usr<br />
*default tag=OPENBSD_3_9<br />
<br />
# If your network link is a T1 or faster, comment out the following line.<br />
# *default compress<br />
<br />
OpenBSD-ports<br />
#OpenBSD-all<br />
#OpenBSD-src<br />
#OpenBSD-www<br />
#OpenBSD-x11<br />
#OpenBSD-xf4<br />
</pre><br />
<br />
Вместо anoncvs3.usa.openbsd.org укажите ближайший к Вам сервер.<br />
cvsup-file-src:<br />
<pre><br />
# Defaults that apply to all the collections<br />
*default release=cvs<br />
*default delete use-rel-suffix<br />
*default umask=002<br />
*default host=anoncvs3.usa.openbsd.org<br />
*default base=/usr<br />
*default prefix=/usr<br />
*default tag=OPENBSD_3_9<br />
<br />
# If your network link is a T1 or faster, comment out the following line.<br />
# *default compress<br />
<br />
#OpenBSD-ports<br />
#OpenBSD-all<br />
OpenBSD-src<br />
#OpenBSD-www<br />
#OpenBSD-x11<br />
#OpenBSD-xf4<br />
</pre><br />
<br />
Не забудьте также заменить anoncvs3.usa.openbsd.org.<br />
<br />
=== Запуск CVSup ===<br />
<br />
Запустим CVSup с использованием этих конфигурационных файлов,-<br />
Обновим дерево портов с cvsup-file-ports:<br />
<br />
# cvsup -g -L 2 cvsup-file-ports<br />
<br />
…тут вам скачается около 78Мб портов.<br />
Обновим дерево исходных текстов с cvsup-file-src:<br />
<br />
# cvsup -g -L 2 cvsup-file-src<br />
<br />
…на сей раз вам бухнется 570Мб.<br />
Проверка ваших портов(ports)<br />
После скачивания свежего дерева портов вам может быть необходимо узнать, требуется ли обновление уже установленных в системе портов.<br />
Это делается с помощью скрипта out-of-date, находящемся в каталоге /usr/ports/infrastructure/build.<br />
Так, приведённый ниже вывод работы скрипта указывает на отсутствие необходимости обновления каких-либо портов:<br />
<pre><br />
# cd /usr/ports/infrastructure/build/<br />
# ./out-of-date<br />
Collecting installed packages<br />
Collecting port versions: complete<br />
Collecting port signatures: complete<br />
Outdated ports:<br />
<br />
#<br />
</pre><br />
Противоположный пример:<br />
<pre><br />
# cd /usr/ports/infrastructure/build/<br />
# ./out-of-date<br />
Collecting installed packages<br />
Collecting port versions: complete<br />
Collecting port signatures: complete<br />
<br />
Outdated ports:<br />
<br />
www/mozilla-firefox # 1.5.0.1 -> 1.5.0.3<br />
#<br />
</pre><br />
Вывод указывает на необходимость обновления программы Firefox.<br />
<br />
=== Обновление портов ===<br />
<br />
Выше мы искали порты, требующие обновления с помощью специального скрипта, теперь же настала пора их собственно обновить. Вам потребуется наличие исходных файлов программы в папке /usr/ports/distfiles, либо соединение с Интернет. Далее необходимо:<br />
<br />
# Найти каталог порта в дереве портов<br />
# Скомпилировать и установить новый порт<br />
<br />
1. Находим каталог:<br />
<br />
# find /usr/ports/ -name mozilla-firefox<br />
/usr/ports/www/mozilla-firefox<br />
<br />
2. Компилируем и устанавливаем:<br />
<br />
# cd /usr/ports/www/mozilla-firefox/<br />
# make install<br />
<br />
=== Компиляция и установка ядра ===<br />
<br />
Порядок таков:<br />
<br />
# Создание резервной копии текущего ядра<br />
# Конфигурирование<br />
# Компиляция и установка нового ядра<br />
<br />
1. Делаем резервную копию ядра:<br />
# cp /bsd /bsd.old<br />
<br />
2. Конфигурируем ядро:<br />
# cd /usr/src/sys/arch/i386/conf/<br />
# config GENERIC<br />
<br />
3. Компилируем и устанавливаем новое ядро:<br />
# cd /usr/src/sys/arch/i386/compile/GENERIC/<br />
# make depend && make clean && make depend && make && make install<br />
<br />
Перезагружаемся, чтобы проверить новое ядро.<br />
<br />
=== Перекомпиляция системы ===<br />
<br />
После загрузки нового ядра можно приступить к обновлению/пересборке системы. Убедитесь, что у Вас существует директория /usr/obj, либо создайте её в случае отсутствия.<br />
Пересоберите систему:<br />
<br />
# cd /usr/src<br />
# find . -type l -name obj | xargs rm<br />
# make cleandir<br />
# rm -rf /usr/obj/*<br />
# make obj<br />
# cd /usr/src/etc<br />
# make DESTDIR=/ distrib-dirs<br />
# cd /usr/src<br />
# make build<br />
<br />
Выполнение make build занимает около часа на процессоре с частотой 2.6GHz, поэтому будьте терпеливы.</div>172.16.0.1http://www.qbsd.ru/index.php?title=%D0%A1%D0%B1%D0%BE%D1%80%D0%BD%D0%B8%D0%BA_%D1%81%D0%BE%D0%B2%D0%B5%D1%82%D0%BE%D0%B2_%D1%81_OpenBSD101.com&diff=89Сборник советов с OpenBSD101.com2013-05-26T12:45:22Z<p>172.16.0.1: Новая страница: «== Ядро и применение патчей == === Введение === Наложения патчей применимы к следующим двум …»</p>
<hr />
<div>== Ядро и применение патчей ==<br />
<br />
=== Введение ===<br />
<br />
Наложения патчей применимы к следующим двум вещам:<br />
<br />
* Программы<br />
* Ядро операционной системы<br />
<br />
В свою очередь процедуру наложения патчей можно разделить на две части:<br />
<br />
# Применения патча к исходному коду<br />
# Перекомпиляция и установка пропатченного ПО<br />
<br />
Патчи представляют из себя текстовые файлы, в начале которых обычно находится инструкция того, как наложить патч и переустановить ПО.<br />
Новые патчи объявляются в [http://www.openbsd.org/mail.html списке рассылки] [mailto: security-announce@OpenBSD.org security-announce@OpenBSD.org]. Список патчей также может быть найден на [http://www.openbsd.org/errata.html http://www.openbsd.org/errata.html].<br />
<br />
=== Скачивание исходного кода ===<br />
<br />
Прежде чем применять какие-либо патчи как к программам, так и к ядру системы, Вам необходим их исходный код.<br />
* Исходный код core системы OpenBSD 3.9 (99Мб): [ftp://ftp.openbsd.org/pub/OpenBSD/3.9/src.tar.gz ftp://ftp.openbsd.org/pub/OpenBSD/3.9/src.tar.gz]<br />
* Исходный код ядра OpenBSD 3.9 (16Мб): [ftp://ftp.openbsd.org/pub/OpenBSD/3.9/sys.tar.gz ftp://ftp.openbsd.org/pub/OpenBSD/3.9/sys.tar.gz]<br />
<br />
Теперь распаковываем исходный код core системы:<br />
<br />
# mv src.tar.gz /usr/src<br />
# cd /usr/src<br />
# tar -xvzf src.tar.gz<br />
<br />
и исходный код ядра:<br />
<br />
# mv sys.tar.gz /usr/src<br />
# cd /usr/src<br />
# tar -xvzf sys.tar.gz<br />
<br />
=== Скачивание патчей ===<br />
<br />
Идём дальше:<br />
* патчи для OpenBSD 3.9: [ftp://ftp.openbsd.org/pub/OpenBSD/patches/3.9.tar.gz ftp://ftp.openbsd.org/pub/OpenBSD/patches/3.9.tar.gz]<br />
<br />
Теперь создайте директорию /usr/src/patches, скопируйте туда 3.9.tar.gz и распакуйте:<br />
<br />
# mkdir /usr/src/patches<br />
# mv 3.9.tar.gz /usr/src/patches<br />
# cd /usr/src/patches<br />
# tar -xvzf 3.9.tar.gz<br />
<br />
Скопируйте все патчи из папок /usr/src/patches/3.9/i386 и /usr/src/patches/3.9/common в /usr/src. Весь процесс применения патчей происходит в папке /usr/src. Каталог i386 обычно не содержит патчей.<br />
<br />
=== Наложение патчей на программы ===<br />
<br />
Для начала мы должны определить, какой тип патчей мы имеем.<br />
Используем команду head, чтобы просмотреть заголовок патча:<br />
<pre><br />
# head 001_st.patch<br />
<br />
Apply by doing:<br />
cd /usr/src<br />
patch -p0 < 001_st.patch<br />
<br />
Rebuild your kernel.<br />
<br />
Index: sys/scsi/st.c<br />
=========================<br />
RCS file: /cvs/src/sys/scsi/st.c,v<br />
retrieving revision 1.41<br />
</pre><br />
<br />
По комментарию Rebuild your kernel определяем, что это патч для ядра.<br />
Далее представлен патч, исправляющий локальную уязвимость в Apache (для OpenBSD 3.6).<br />
Давайте взглянем на заголовок патча:<br />
<pre><br />
# head -n 17 009_httpd.patch<br />
<br />
Apply by doing:<br />
cd /usr/src<br />
patch -p0 < 009_httpd.patch<br />
<br />
And then rebuild and install httpd and its modules:<br />
cd usr.sbin/httpd<br />
make -f Makefile.bsd-wrapper obj<br />
make -f Makefile.bsd-wrapper cleandir<br />
make -f Makefile.bsd-wrapper depend<br />
make -f Makefile.bsd-wrapper<br />
make -f Makefile.bsd-wrapper install<br />
<br />
If httpd had been started, you might want to run<br />
apachectl stop<br />
before running "make install", and<br />
apachectl start<br />
<br />
afterwards.<br />
</pre><br />
В случае следования написанным в начале патча инструкциям у вас не должно возникнуть проблем с его применением и перекомпиляцией программы.<br />
<br />
=== Наложение патчей на ядро ===<br />
<br />
Применение патчей ядра несколько отличается от применения патчей на программы - сначала вы должны наложить все патчи на ядро и после его перекомпилировать.<br />
Посмотрим с помощью head заголовок патча:<br />
<pre><br />
# head 001_st.patch<br />
<br />
Apply by doing:<br />
cd /usr/src<br />
patch -p0 < 001_st.patch<br />
<br />
Rebuild your kernel.<br />
<br />
Index: sys/scsi/st.c<br />
=========================<br />
RCS file: /cvs/src/sys/scsi/st.c,v<br />
retrieving revision 1.41<br />
</pre><br />
Видим Rebuild your kernel, значит это то, что нам нужно.<br />
Применив последовательно все патчи, переходим к следующему пункту...<br />
<br />
=== Перекомпиляция ядра после наложения патчей ===<br />
<br />
Так, не торопимся и делаем резервную копию текущего ядра:<br />
<br />
# cp /bsd /bsd.old<br />
<br />
Конфигурируем ядро:<br />
<br />
# cd /usr/src/sys/arch/i386/conf/<br />
# config GENERIC<br />
Don't forget to run "make depend"<br />
<br />
Теперь компилируем и устанавливаем новое ядро:<br />
<br />
# cd /usr/src/sys/arch/i386/compile/GENERIC/<br />
# make clean && make depend && make && make install<br />
<br />
Просто перезагрузитесь, чтобы проверить новое ядро.<br />
<br />
=== Загрузка старого ядра ===<br />
<br />
Если у вас возникли проблемы при загрузке с новым ядром, тогда попробуйте загрузиться со старым ядром.<br />
Во время загрузки, когда на экране будет нечто подобное:<br />
<br />
Using drive 0, partition 3.<br />
Loading...<br />
probing : pc0 com0 apm mem[634K 319M a20=on]<br />
disk: fd0 hd0+<br />
>> OpenBSD/i386 BOOT 2.06<br />
boot><br />
<br />
наберите название вашего старого ядра:<br />
<br />
Using drive 0, partition 3.<br />
Loading...<br />
probing : pc0 com0 apm mem[634K 319M a20=on]<br />
disk: fd0 hd0+<br />
>> OpenBSD/i386 BOOT 2.06<br />
boot> bsd.old<br />
<br />
== Безопасность ==<br />
<br />
=== Уровни безопасности ===<br />
<br />
Уровни безопасности позволяют указать ядру требуемую степерь безопасности системы. Всего существует четыре уровня безопасности: -1, 0, 1, 2. Уровень 2 является высшем уровнем безопасности. Уровни безопасности указываются в файле /etc/rc.securelevel.<br />
Вкратце про каждый уровень:<br />
<br />
* '''Уровень -1''': Дополнительное обеспечение безопасности системы ядром отстутствует, многие обычные возможности. Такие, как права доступа, функционируют. Используйте этот уровень для не-production компьютеров.<br />
* '''Уровень 0''': Используется при начальной загрузке OpenBSD. После окончания загрузки система обычно переходит на уровень 1. Какие-либо специфичные вещи в систему этот уровень не добавляет.<br />
* '''Уровень 1''': Уровень безопасности по умолчанию в OpenBSD. Операции записи в /dev/mem и /dev/kmem запрещены. Устройства raw-disk доступны только на чтение. Флаги schg и sappnd не могут быть удалены. Модули ядра не могут быть загружены или выгружены "на лету".<br />
* '''Уровень 2''': Включает в себя всё из уровня 1, ограничивает изменение системного времени, pfctl не может менять правила PF или NAT, значения sysctl для отладчика ядра DDB не могут быть изменены.<br />
<br />
<br />
По окончании процесса загрузки системы вы можете узнать текущий уровень безопасности системы набрав в строке:<br />
<br />
# sysctl kern.securelevel<br />
<br />
Вы можете повысить уровень безопасности командой:<br />
<br />
# sysctl -w kern.securelevel=2<br />
<br />
И вы не сможете изменить уровень безопасности с более высокого на низкий,- только после перезагрузки.<br />
<br />
=== Использование флагов ядра ===<br />
<br />
Выставление флагов ядра похоже на выставление прав доступа файлам, но лишь с тем различием, что некоторые из них даже пользователь root может поменять лишь определённом(низком) уровне безопасности - или загрузившись в однопользовательском режиме.<br />
<br />
Наиболее используемые флаги:<br />
<br />
* '''sappnd''': Флаг может быть добавлен/удалён только пользователем root. Разрешается добавлять(append) данные в файл, но нельзя удалить или редактировать его. Неплохо использовать для лог-файлов. Этот флаг не может быть удалён при уровне безопасности 1 и выше.<br />
* '''schg''': Флаг может быть добавлен/удалён только пользователем root. Файлы с этим флагом не могут быть изменены, перемещены или заменеы. Этот флаг не может быть удалён при уровне безопасности 1 и выше.<br />
* '''uappnd''': Флаг может быть добавлен/удалён только пользователем root. Разрешается добавлять(append) данные в файл, но нельзя удалить или редактировать его рядовым пользователям. Пользователь root может модифицировать этот флаг в любое время.<br />
<br />
Будьте внимательны при использовании этих флагов,- неумелое использование может привести вашу систему в нерабочее состояние.<br />
Посмотрим, выставлен ли флаг у файла:<br />
<br />
#ls -lo /bsd<br />
-rw-r--r-- 1 root wheel schg 5358488 Mar 30 11:47 /bsd<br />
<br />
Как мы видим, выставлен флаг schg.<br />
Ниже представлено два популярных примера применения флагов:<br />
Запретим изменение ядра системы:<br />
<br />
# chflags schg /bsd<br />
<br />
Запретим изменение исполняемых файлов в /bin:<br />
<br />
# chflags -R schg /bin<br />
<br />
Можно поставить sappnd флаг на history файл пользователя root. Если злоумышленник проникнет в систему, то sappnd не позволит ему скрыть своих действий.<br />
Также выставление флага sappnd на history файл пользователя не позволит злоумышленникам использовать старый трюк с направлением history в устройство /dev/null с помощью мягкой ссылки.<br />
Флаги ядра для параноиков<br />
Вот такие рекомендации для OpenBSD сервера (только после окончательной настройки!):<br />
<br />
# chflags schg /bsd<br />
# chflags schg /etc/changelist<br />
# chflags schg /etc/daily<br />
# chflags schg /etc/inetd.conf<br />
# chflags schg /etc/netstart<br />
# chflags schg /etc/pf.conf<br />
# chflags schg /etc/rc<br />
# chflags schg /etc/rc.conf<br />
# chflags schg /etc/rc.local<br />
# chflags schg /etc/rc.securelevel<br />
# chflags schg /etc/rc.shutdown<br />
# chflags schg /etc/security<br />
# chflags schg /etc/mtree/special<br />
# chflags -R schg /bin<br />
# chflags -R schg /sbin<br />
# chflags -R schg /usr/bin<br />
# chflags -R schg /usr/libexec<br />
# chflags -R schg /usr/sbin<br />
<br />
=== Шифрование файла подкачки ===<br />
<br />
Шифрование файла подкачки может предотвратить опасность раскрытия важных данных(таких, как, например, ключи шифрования) локальными пользователями.<br />
По умолчанию OpenBSD 3.9 шифрует файл подкачки, для того же, чтобы включить эту функцию для более старых версий, необходимо:<br />
<br />
# Включить эту функцию без перезагрузки<br />
# Изменить конфигурационный файл sysctl, чтобы после перезагрузки системы шифрование файла подкачки было включено<br />
<br />
1. От ппользователем root измените значение sysctl переменной:<br />
# sysctl -w vm.swapencrypt.enable=1<br />
2. Измените файл /etc/sysctl.conf с:<br />
#vm.swapencrypt.enable=1<br />
на<br />
vm.swapencrypt.enable=1<br />
<br />
и проверьте после перезагрузки, изменилось ли значение sysctl переменной:<br />
sysctl vm.swapencrypt.enable<br />
<br />
=== Монтирование разделов ===<br />
<br />
Правильные параметры монтирования файловых систем способны весьма помочь в плане усиления общей безопасность системы. Файл /etc/fstab контролирует, как будут монтироваться файловые системы на этапе загрузки.<br />
Пара рекомендуемых конфигураций:<br />
<br />
Средне-параноидальная конфигурация:<br />
<br />
/dev/wd0a / ffs rw 1 1<br />
/dev/wd0h /home ffs rw,nodev,nosuid 1 2<br />
/dev/wd0d /tmp ffs rw,nodev,nosuid,noexec 1 2<br />
/dev/wd0g /usr ffs ro,nodev 1 2<br />
/dev/wd0e /var ffs rw,nodev,nosuid,noexec 1 2<br />
<br />
А тут ещё добавляем опцию read-only(ro) на корневой раздел(/) и опцию noexec на раздел /home:<br />
<br />
/dev/wd0a / ffs ro 1 1<br />
/dev/wd0h /home ffs rw,nodev,nosuid,noexec 1 2<br />
/dev/wd0d /tmp ffs rw,nodev,nosuid,noexec 1 2<br />
/dev/wd0g /usr ffs ro,nodev 1 2<br />
/dev/wd0e /var ffs rw,nodev,nosuid,noexec 1 2<br />
<br />
=== Использование rm с опцией -P ===<br />
При использовании команды rm с опцией -P содержимое файла перезаписывается 3 раза, прежде чем удалить его. В Linux подобный функционал обеспечивает команда shred.<br />
Использование:<br />
<br />
# rm -P filename<br />
<br />
Можно также создать псевдоним для команды rm -R в оболочке bash:<br />
<br />
# echo "alias rm='rm -P' " >> .bash_profile<br />
<br />
=== Увеличение минимальной длины пароля ===<br />
<br />
По умолчанию минимальная длина пароля в системе OpenBSD равна шести символам.<br />
Чтобы увеличить её до 10-ти символов, добавьте следующую строку под классом default в файле /etc/login.conf:<br />
<br />
:minpasswordlen=10:\<br />
<br />
В отличие от FreeBSD /etc/login.conf не должен быть сконвертирован после в файл БД с помощью cap_mkdb.<br />
<br />
<br />
== Обновление с помощью CVSup ==<br />
<br />
=== Введение ===<br />
<br />
Программа CVSup позволяет вам скачать и обновить файлы исходных кодов OpenBSD. Затем вы можете перекомпилировать ваше ядро, базовую систему и установленные в системе порты.<br />
Итак, вам потребуется:<br />
# On-line репозиторий<br />
# Программа CVSup<br />
# Конфигурационные файлы CVSup<br />
<br />
=== Установка CVSup ===<br />
<br />
Самый простой способ установки CVSup - это воспользоваться командой pkg_add следующим образом:<br />
<br />
# pkg_add -v ftp://ftp.openbsd.org/pub/OpenBSD/3.9/packages/i386/cvsup-16.1h-no_x11.tgz<br />
<br />
=== Конфигурационные файлы CVSup ===<br />
<br />
Создадим пару конфигурационных файлов для CVSup:<br />
<br />
cvsup-file-ports - для скачивания дерева портов<br />
cvsup-file-src - для скачивания исходных текстов системы(в т.ч. ядра)<br />
<br />
cvsup-file-port:<br />
<br />
<pre><br />
# Defaults that apply to all the collections<br />
*default release=cvs<br />
*default delete use-rel-suffix<br />
*default umask=002<br />
*default host=anoncvs3.usa.openbsd.org<br />
*default base=/usr<br />
*default prefix=/usr<br />
*default tag=OPENBSD_3_9<br />
<br />
# If your network link is a T1 or faster, comment out the following line.<br />
# *default compress<br />
<br />
OpenBSD-ports<br />
#OpenBSD-all<br />
#OpenBSD-src<br />
#OpenBSD-www<br />
#OpenBSD-x11<br />
#OpenBSD-xf4<br />
</pre><br />
<br />
Вместо anoncvs3.usa.openbsd.org укажите ближайший к Вам сервер.<br />
cvsup-file-src:<br />
<pre><br />
# Defaults that apply to all the collections<br />
*default release=cvs<br />
*default delete use-rel-suffix<br />
*default umask=002<br />
*default host=anoncvs3.usa.openbsd.org<br />
*default base=/usr<br />
*default prefix=/usr<br />
*default tag=OPENBSD_3_9<br />
<br />
# If your network link is a T1 or faster, comment out the following line.<br />
# *default compress<br />
<br />
#OpenBSD-ports<br />
#OpenBSD-all<br />
OpenBSD-src<br />
#OpenBSD-www<br />
#OpenBSD-x11<br />
#OpenBSD-xf4<br />
</pre><br />
<br />
Не забудьте также заменить anoncvs3.usa.openbsd.org.<br />
<br />
=== Запуск CVSup ===<br />
<br />
Запустим CVSup с использованием этих конфигурационных файлов,-<br />
Обновим дерево портов с cvsup-file-ports:<br />
<br />
# cvsup -g -L 2 cvsup-file-ports<br />
<br />
...тут вам скачается около 78Мб портов.<br />
Обновим дерево исходных текстов с cvsup-file-src:<br />
<br />
# cvsup -g -L 2 cvsup-file-src<br />
<br />
...на сей раз вам бухнется 570Мб.<br />
Проверка ваших портов(ports)<br />
После скачивания свежего дерева портов вам может быть необходимо узнать, требуется ли обновление уже установленных в системе портов.<br />
Это делается с помощью скрипта out-of-date, находящемся в каталоге /usr/ports/infrastructure/build.<br />
Так, приведённый ниже вывод работы скрипта указывает на отсутствие необходимости обновления каких-либо портов:<br />
<pre><br />
# cd /usr/ports/infrastructure/build/<br />
# ./out-of-date<br />
Collecting installed packages<br />
Collecting port versions: complete<br />
Collecting port signatures: complete<br />
Outdated ports:<br />
<br />
#<br />
</pre><br />
Противоположный пример:<br />
<pre><br />
# cd /usr/ports/infrastructure/build/<br />
# ./out-of-date<br />
Collecting installed packages<br />
Collecting port versions: complete<br />
Collecting port signatures: complete<br />
<br />
Outdated ports:<br />
<br />
www/mozilla-firefox # 1.5.0.1 -> 1.5.0.3<br />
#<br />
</pre><br />
Вывод указывает на необходимость обновления программы Firefox.<br />
<br />
=== Обновление портов ===<br />
<br />
Выше мы искали порты, требующие обновления с помощью специального скрипта, теперь же настала пора их собственно обновить. Вам потребуется наличие исходных файлов программы в папке /usr/ports/distfiles, либо соединение с Интернет. Далее необходимо:<br />
<br />
#Найти каталог порта в дереве портов<br />
#Скомпилировать и установить новый порт<br />
<br />
1. Находим каталог:<br />
<br />
# find /usr/ports/ -name mozilla-firefox<br />
/usr/ports/www/mozilla-firefox<br />
<br />
2. Компилируем и устанавливаем:<br />
<br />
# cd /usr/ports/www/mozilla-firefox/<br />
# make install<br />
<br />
=== Компиляция и установка ядра ===<br />
<br />
Порядок таков:<br />
<br />
# Создание резервной копии текущего ядра<br />
# Конфигурирование<br />
# Компиляция и установка нового ядра<br />
<br />
1. Делаем резервную копию ядра:<br />
# cp /bsd /bsd.old<br />
<br />
2. Конфигурируем ядро:<br />
# cd /usr/src/sys/arch/i386/conf/<br />
# config GENERIC<br />
<br />
3. Компилируем и устанавливаем новое ядро:<br />
# cd /usr/src/sys/arch/i386/compile/GENERIC/<br />
# make depend && make clean && make depend && make && make install<br />
<br />
Перезагружаемся, чтобы проверить новое ядро.<br />
<br />
=== Перекомпиляция системы ===<br />
<br />
После загрузки нового ядра можно приступить к обновлению/пересборке системы. Убедитесь, что у Вас существует директория /usr/obj, либо создайте её в случае отсутствия.<br />
Пересоберите систему:<br />
<br />
# cd /usr/src<br />
# find . -type l -name obj | xargs rm<br />
# make cleandir<br />
# rm -rf /usr/obj/*<br />
# make obj<br />
# cd /usr/src/etc<br />
# make DESTDIR=/ distrib-dirs<br />
# cd /usr/src<br />
# make build<br />
<br />
Выполнение make build занимает около часа на процессоре с частотой 2.6GHz, поэтому будьте терпеливы.</div>172.16.0.1http://www.qbsd.ru/index.php?title=OpenBSD-Wiki:%D0%A2%D0%B5%D0%BA%D1%83%D1%89%D0%B8%D0%B5_%D1%81%D0%BE%D0%B1%D1%8B%D1%82%D0%B8%D1%8F&diff=88OpenBSD-Wiki:Текущие события2013-05-26T08:10:04Z<p>172.16.0.1: /* Актуальное */</p>
<hr />
<div>== Актуальное ==<br />
Собрано всё, что применимо к текущему релизу.<br />
<br />
* [[Введение в OpenBSD]]<br />
* [[Аппаратное обеспечение и вопросы]]<br />
* [[IPsec между OpenBSD и Linux Ubuntu]]<br />
* [[Использование файла mk.conf]]<br />
* [[Написание OpenBSD Loadable Kernel Modules (LKM)]]<br />
* [[Новое IPSec howto]]<br />
* [[Русификация OpenBSD 5.x]]<br />
* [[Русификация OpenBSD]]<br />
* [[Создание загрузочной флешки]]<br />
* [[Перечень Интернет ресурсов о OpenBSD]]<br />
* [[Описание переменных sysctl]]<br />
<br />
== Устаревшее ==<br />
Данная информация сохранена для архивных версий.<br />
<br />
* [[Использование Bluetooth в OpenBSD]]<br />
<br />
== Прочее ==<br />
<br />
* [[Резервная копия Wiki]]</div>172.16.0.1http://www.qbsd.ru/index.php?title=%D0%90%D0%BF%D0%BF%D0%B0%D1%80%D0%B0%D1%82%D0%BD%D0%BE%D0%B5_%D0%BE%D0%B1%D0%B5%D1%81%D0%BF%D0%B5%D1%87%D0%B5%D0%BD%D0%B8%D0%B5_%D0%B8_%D0%B2%D0%BE%D0%BF%D1%80%D0%BE%D1%81%D1%8B&diff=87Аппаратное обеспечение и вопросы2013-05-26T08:09:26Z<p>172.16.0.1: </p>
<hr />
<div>== Аппаратное обеспечение и вопросы, зависящие от платформы ==<br />
<br />
Данная статья 100 % копипаст с [http://www.obsd.ru www.obsd.ru]<br />
<br />
=== Общие рекомендации по оборудованию ===<br />
<br />
==== Устройства PCI ====<br />
<br />
Устройства PCI почти всегда самоконфигурируемые — компьютер и ОС сами выделяют карте необходимые ресурсы.<br />
Прерывания можно использовать совместно на шине PCI. Не только можно, но и частенько система показывает лучшую производительность с совместно используемыми прерываниями, особенно, на i386.<br />
Есть несколько различных стандартов шин PCI. Можно случайно найти карту PCI2.2, которая просто не будет работать в системе с PCI2.1. Также многие карты со встроенными мостами (такие как многопортовые сетевые карты) не будут нормально работать на старых системах.<br />
Шины PCI поддерживают два уровня сигналов: 3.3 В и 5 В. Карты, работающие с сигналами 3.3 В имеют второй пропил в соединителе. Большинство PCI-карт используют 5-вольтовые сигналы, которые используются на большинстве компьютеров. Одноплатные компьютеры Soekris (Net45x1 and Net4801) часто упоминаются как компьютеры, поддерживающие сигналы только 3.3 В.<br />
<br />
==== Устройства ISA ====<br />
<br />
Устройства ISA не могут использовать ресурсы совместно и, в большинстве случаев, должны быть настроены вручную во избежание конфликтов с другими устройствами в системе.<br />
Некоторые ISA-устройства являются «Plug and Play» (isapnp(4)) — если возникают проблемы с этими устройствами, следует проверить их настройки, сообщённые dmesg(8), ISAPnP не всегда работает должным образом.<br />
Вообще, если есть выбор, многие предпочитают отказаться от ISA-карт в пользу PCI. ISA-карты намного сложнее настроить и они оказывают гораздо большее негативное воздействие на производительность системы.<br />
<br />
==== Моё устройство «опознано» но dmesg говорит, что оно не настроено («not configured») ====<br />
<br />
Вкратце, это означает, что устройство не поддерживается ядром и не может быть использовано.<br />
PCI и многие другие типы устройств предоставляют идентификационную информацию чтобы ОС смогла правильно распознать и поддерживать устройство. Распознавать устройство гораздо сложнее чем его поддерживать. Ниже приводится часть dmesg с двумя примерами «не настроенных» устройств:<br />
vendor "Intel", unknown product 0x5201 (class network subclass ethernet, rev 0x03) at pci2 dev 9 function 1 not configured<br />
"Intel EE Pro 100" rev 0x03 at pci2 dev 10 function 0 not configured<br />
Первое (сетевой адаптер) имеет распознанный код поставщика и общий тип карты, тогда как точная модель карты нераспознана. Второй пример — другой сетевой адаптер, известен разработчику и информация о нём была добавлена в файл, используемый для распознавания оборудования. Однако, в обоих случаях, карты будут нерабочими, так как обе указаны как «не настроенные» — это означает, что для них не нашлось драйвера.<br />
Что можно сделать с «не настроенным» устройством?<br />
Если устройство не используется непосредственно, на сообщение «not configured» можно просто не обращать внимания — вреда системе это не нанесёт. Некоторые устройства специального назначения сознательно помечаются как «не настроенные» чтобы их поддерживала BIOS системы.<br />
В некоторых случаях, это лишь разновидность поддерживаемого устройства и для разработчика может не составить большого труда добавить поддержку этой карты. В других случаях, это может быть совсем не поддерживаемый набор микросхем или его реализация (как в рассмотренных выше примерах). В этом случае, нужно написать новый драйвер, что может быть даже невозможно если устройство плохо документировано. Конечно, самостоятельное написание драйвера приветствуется.<br />
Если используется изначальное ядро, устройство может не поддерживаться использованным при установке носителем, но может поддерживаться при установке с другого диска. Это часто случается с пользователями некоторых популярных SCSI-карт, невнимательно прочитавшими рекомендации для платформы i386 и пробуют все загрузочные диски, которые не поддерживают их SCSI-карту вместо того чтобы использовать тот, который поддерживает.<br />
Если используется изменённое ядро, поддержка нужного теперь устройства могла быть удалена на этапе сборки. Вообще, удаление поддержки устройств ядром — плохая идея и это — один из примеров.<br />
Перед тем как сообщить о «не настроенном» устройстве, убедитесь, что был испробован последний срез (snapshot), так как поддержка могла быть уже добавлена и проверьте архивы списков рассылки на предмет рассмотрения этого вопроса ранее. Помните, что используя старую версию OpenBSD, вы можете столкнуться с необходимостью обновления для использованиялюбого нового драйвера.<br />
<br />
==== Моя карта есть в списке поддерживаемого оборудования, но она не работает! ====<br />
<br />
К сожалению, многие производители используют наименование модели для указания его рыночной позиции, а не технической сущности. Поэтому можно купить продукт с тем же самым названием и номером модели, что и продукт, отмеченный на страницах платформ, но совершенно неработоспособный под OpenBSD. Например, сначала, многие беспроводные адаптеры делались на базе микросхемы Prism2 и использовали драйвер wi(4), но позднее, когда появились более дешёвые микросхемы, многие приозводители стали использовать в тех же продуктах другие микросхемы, для которых нет драйверов с открытым кодом. Беспроводные сетевые адаптеры, к сожалению, далеко не единственный пример этого.<br />
<br />
==== Поддерживаются ли WinModem-ы? ====<br />
<br />
WinModem-ы — это дешевые модемы? использующие для обработки сигналов ресурсы процессора, в отличие от аппаратной обработки в случае «обычных» модемов. В связи с нестандартностью (неунифицированностью, большими отличиями от модели к модели) и обычно безобразно плохой документацией на конструктив WinModem-ов в OpenBSD нет и не будет поддержки данных устройств.<br />
<br />
==== Что случилось с поддержкой Adaptec RAID (aac)? ====<br />
<br />
Adaptec прекратил предоставлять документацию на FSA-based (aac(4)) RAID контроллеры. Эти RAID стали содержать большое количество ошибок, документация стала предоставляться в урезанном, недостаточном для написания драйверов варианте. В связи с этим мы удалили данный драйвер из стандартного ядра GENERIC.<br />
Но ведь я сам могу собрать ядро с поддержой aac(4), не правда ли?<br />
Конечно. Но вы сами понимаете, к чему может привести ненадёжность есть ненадёжный. Вы же не эксперименты будете проводить, испытывая «новые возможности»! Кто знает, может он заработает достаточно хорошо в какой-нибудь аппаратной конфигурации, но бы не рекомендовали доверять ему своих данных.<br />
<br />
==== Моя ami(4)-карта поддерживает только один логический диск! ====<br />
<br />
Есть известная ошибка ami(4), которая вызывает повреждение данных при использовании более чем одного тома на некоторых контроллерах. OpenBSD ограничит количество логических дисков до одного на<br />
контроллерах с такой проблемой. В результате, на выходе dmesg появится подобное сообщение:<br />
<pre><br />
ami0: FW A.04.03, BIOS vA.04.03, 4MB RAM ami0: 3 channels, 16 targets, 2 logical drives ami0: firmware buggy,<br />
limiting access to first logical disk scsibus0 at ami0: 1 targets<br />
</pre><br />
<br />
=== DEC Alpha ===<br />
<br />
Пока ничего<br />
<br />
=== AMD 64 ===<br />
<br />
==== Могу ли я запустить OpenBSD/amd64 на Intel P4 ====<br />
<br />
В случае большинства процессоров, выпущенных в последнее время — ответом будет «да». Ксожалению, определить какой именно из процессоров сможет запустить, а какой нет, достаточно сложно. Проще определить экспериментальным путем, будет работать или нет.<br />
<br />
==== Могу ли я запустить бинарный файл i386 на OpenBSD/amd64? ====<br />
Нет.<br /><br />
OpenBSD/amd64 совершенно другая платформа, некжели OpenBSD/i386, и, на данном этапе, бинарная совместимость не поддерживается. Как полагает OpenBSD, в мире открытых кодов нет большого интереса разработчиков к бинарной совместимости.<br />
Следует обратить внимание, OpenBSD/amd64 и OpenBSD/i386 boot loaders will (as of OpenBSD 4.2) load each other’s kernels, making it easier to reinstall a system with the «other» platform. Поэтому лучше выполнить полную «очистку и инсталляцию» — иначе оставшиеся от «предыдущей» инсталляции бинарники изрядно усложнят вам жизнь.<br />
<br />
==== Всегда ли лучше запускать OpenBSD/amd64 на соответствующих процессорах? ====<br />
<br />
Не всегда. <br /><br />
Вот несколько причин использовать OpenBSD/i386 на платформах OpenBSD/amd64, которые могут исполнять код amd64:<br />
* Необходимость запуска бинарников i386 (or other OS).<br />
* Необходимость запуска приложений, не являющихся нативно «64 битными».<br />
* Необходимость переноса дисков на машину не amd64<br />
* Для некоторых приложений и аппаратных платформ OpenBSD/i386 может превосходить по производительности OpenBSD/amd64. Относительно небольшая группа людей готовы работать над исправлением данной ситуации.<br />
<br />
=== ARM-based appliances ===<br />
<br />
Пока ничего<br />
<br />
=== HP300 ===<br />
<br />
Пока ничего<br />
<br />
=== HPPA ===<br />
<br />
Пока ничего<br />
<br />
=== i386 ===<br />
<br />
==== Сетевые интерфейсы ISA ====<br />
<br />
OpenBSD хорошо работает на устаревшем оборудовании и пользователи бывает используют даже сетевых карт ISA. Оборудование ISA требует гораздо большей настройки и понимания, чем PCI. Нельзя просто вставить карту в компьютер и ожидать, что она волшебным образом заработает. Во многих машинах, если ISA-устройство не в режиме «Plug 'n' Play» (PNP), ресурсы, используемые картой, должны быть назначены<br />
BIOS.<br />
3Com 3C509B ep(4)<br />
Это отлично зарекомендовавшая себя сетевая карта ISA, поддерживаемая драйвером ep(4). Версия «B» отличается от «не-B» маркировкой на карте и бОльшей главной микросхемой (со стороной, приблизительно, 2.5 см для версии «B» против 2 см для более старой версии) и показывает бОльшую производительность в нагруженных системах или системах с двумя сетевыми картами. Микросхема 3C509B поставляется настроенной на режим PNP, который, к сожалению, не соответствует стандартам и вызывает проблемы в поддержке isapnp(4) под OpenBSD. Сначала, карта распознаётся как не-PNP устройство, потом, когда включается поддержка PNP, dmesg отображает дополнительный интерфейс. Это может и не повредить, а может и привести к другим проблемам. Крайне рекомендуется отключать режим PNP в картах 3C509B и настраивать их вручную с использованием конфигурационных утилит 3Com под DOS перед использованием во избежание конфликтов<br />
Драйвер ep(4) подхватит карты в любой комбинации аппаратного обеспечения, не предусматривающей конфликтов устройств.<br />
Если в системе несколько карт 3C509, рекомендуется пометить их MAC-адресами, чтобы различать их в выводе dmesg.<br />
Заметим, что 3C509, 3C905 и 3C590 часто путают. 3C509 — это 10 Мб/с карта ISA, а 3C905 и 3C590 — карты PCI.<br />
NE2000<br />
Изначально, сетевая карта NE2000 была разработана в середине 1980-х компанией Novell. C тех пор, многие производители выпускали очень похожие карты, которые вообще-то назывались NE2000-совместимыми или клонами. Производительность этих клонов сильно отличалась. Тогда как некоторые старые представители показывали хорошие результаты, многие из доступных сейчас очень плохи. NE2000-совместимые карты в OpenBSD поддерживает драйвер ne(4).<br />
OpenBSD хорошо поддерживает некоторые умеющие ISAPNP NE2000-совместимые карты с включенным режимом ISAPNP. Другие карты должны быть настроены или перемычками, или DOSовской утилитой. К сожалению, настоящие NE2000 не имели программной настройки и поддержки ISAPNP. Так что для настройки карты может потребоваться именно та утилита, которая поставлялась с ней, получить которую бывает проблематично.<br />
Драйвер ne(4) поддерживает 3 конфигурации карт ISA NE2000 в ядре GENERIC системы OpenBSD<br />
ne0: port 0x240 irq 9<br />
nel: port 0x300 irq 10<br />
ne2: port 0x280 irq 9<br />
Если эти установки неприемлемы, можно настроить их через User Kernel Configuration (UKC) или сборкой своего ядра.<br />
Драйвер ne(4) ведёт себя честно «по-бестолковому» — просто проверяет порты ввода-вывода и если находит что-то из перечисленных адресов, то приписывает ему соответствующее прерывание. dmesg(8) не показывает действительного номера прерывания в случае использования драйвера ne(4) на ISA. И если действительное прерывание карты не установлено в это значение, работать она не будет.<br />
Бывают и не-ISA карты, использующие драйвер ne(4) — это PCI и PCMCIA, к ним это всё не относится, они настраиваются сами по себе.<br />
<br />
==== OpenBSD не работает на моей 80386/80386SX/80486SX! ====<br />
<br />
80386sx<br />
80386SX/DX<br />
Начина с OpenBSD 4.2 прекращена поддержка процессоров 80386DX и 80386SX. В дополнение к другим ограничениям чипа 80386, система работает очень медленно из-за ограниченного ОЗУ, FPU недостаточен для исполнения OpenBSD.<br />
80486SX<br />
Микросхема 80486SX — это «дешевая» версия 80486, у нее отсутствует аппаратная поддержка операций с плавающей точкой, необходимая для работы OpenBSD (как у 80386). К счастью, полная версия 80486DX достаточно распространена и большинство систем легко поддаётся усовершенствованию.<br />
80486DX и более новые поддерживают OpenBSD.<br />
<br />
==== dmesg показывает несколько устройств, использующих одно и то же прерывание (IRQ)! ====<br />
<br />
Это вполне нормально и даже желательно для устройств PCI. Конструкция шины PCI подразумевает такую возможность. Некоторые считают, что совместно использовать запросы на прерывание (interrupt requests,<br />
IRQs) не хорошо, однако, они либо путают ситуацию с шиной ISA (где совместное использование прерываний недопустимо) или это последствия негативного опыта использования битого железа или программного обеспечения.<br />
Устройства ISA не могут использовать прерывания совместно — если такое происходит, то конфликт необходимо устранить.<br />
<br />
==== Моя клавиатура/мышь не работает («зависает», сходит с ума)! ====<br />
<br />
Чаще всего такое случается при использовании «переключателя» (иногда называемого «KVM switch»), используемого для подключения нескольких компьютеров к одному комплекту клавиатура/мышь/монитор. Можно поэкспериментировать с разными марками переключателей, но OpenBSD требовательнее многих к переключению мыши. Проблема обычно в переключении мыши. Если мышь не используется, решение на поверхности — просто не нужно подключать её кабель к компьютеру. Если мышь таки используется, то простым решением будет подключить к каждому компьютеру по отдельной мыши и переключать только клавиатуру и монитор. Может выясниться, что использование мышиного переходника PS/2->USB решит эту проблему (OpenBSd будет работать с USB-мышью). Если нужен просто консольный доступ, то решением может быть использование последовательной консоли.<br />
<br />
=== Landisk ===<br />
<br />
Пока ничего<br />
<br />
=== Luna88k ===<br />
<br />
Пока ничего<br />
<br />
=== Mac68k ===<br />
<br />
Пока ничего<br />
<br />
=== MacPPC ===<br />
<br />
==== Почему сетевой адаптер bm(4) такой медленный? ====<br />
<br />
Драйвер bm, поддерживающий микросхему BMAC, используемую на некоторых системах MacPPC (включая ранние iMac) имеет проблемы при работе в режиме 100 Мб/с. Настоятельно рекомендуется заставить драйвер работать в режиме 10 Мб/с параметром «media 10baseT» в файле /etc/hostname.bm0 или на концентраторе/коммутаторе.<br />
<br />
=== MVME68k ===<br />
<br />
Пока ничего<br />
<br />
=== MVME88k ===<br />
<br />
Пока ничего<br />
<br />
=== SGI ===<br />
<br />
Пока ничего<br />
<br />
=== SPARC ===<br />
<br />
Пока ничего<br />
<br />
=== UltraSPARC (sparc64) ===<br />
<br />
==== Мой UltraSPARC не грузится с образа гибкого диска ====<br />
<br />
Только Ultra 1/1e и Ultra 2 могут загружать операционную систему с гибкого диска. Вместо этого, для установки нужно использовать CD-ROM, Miniroot или загрузку по сети.<br />
<br />
==== disklabel выдает сообщение «partition extends past end of unit» ====<br />
<br />
На системах sparc и sparc64, disklabel BSD не умеет описывать геометрию диска больше чем 8ГБ, тогда как отдельные записи disklabel могут быть и больше.<br />
Каждый раз при запуске disklabel(8), он выполняет проверку записей disklabel на предмет того, что он считает правильной геометрией диска и, увидев обрезанную геометрию, предупреждает, что не разрешит менять записи за пределами этой области в 8ГБ, пока ему не сообщат настоящую геометрию устройства. Этого можно добиться командой 'g' в интерактивном редакторе disklabel(8), дав указание использовать геометрию диска «[d]isk geometry»:<br />
<pre><br />
# disklabel -E wd0<br />
# Inside MBR partition 3: type A6 start 63 size 17912412<br />
[...]<br />
Initial label editor (enter '?' for help at any prompt)<br />
> g<br />
[d]isk, [ b ]ios, or [ u ]ser geometry: [d] d<br />
> w<br />
> q<br />
</pre><br />
Сообщения останутся, но появится возможность настраивать и использовать диск желаемым образом. Правильное решение должно быть совместимо с уже используемыми системами и с Solaris, работающими на дисках, больше чем 8ГБ, но пока такового нет.<br />
<br />
=== DEC VAX ===<br />
<br />
==== Можно использовать симулятор SIMH VAX? ====<br />
Да!<br />
Симулятор SIMH VAX можно использовать для эффективной эмуляции настоящей VAX. Инструкции можно найти здесь.<br />
<br />
=== Sharp Zaurus ===<br />
<br />
==== Некорректно работают устройства USB ====<br />
<br />
Очень мало устройств будут работать корректно, если вы подключите их непосредственно к порту USB Zaurus. Используйте активный USB hub (с внешним источником питания) для работы с этими устройствами.<br />
Перевод соответствует $OpenBSD: faq12.html, v 1.89 2008/01/26 06:29:50 saad Exp $</div>172.16.0.1http://www.qbsd.ru/index.php?title=%D0%90%D0%BF%D0%BF%D0%B0%D1%80%D0%B0%D1%82%D0%BD%D0%BE%D0%B5_%D0%BE%D0%B1%D0%B5%D1%81%D0%BF%D0%B5%D1%87%D0%B5%D0%BD%D0%B8%D0%B5_%D0%B8_%D0%B2%D0%BE%D0%BF%D1%80%D0%BE%D1%81%D1%8B&diff=86Аппаратное обеспечение и вопросы2013-05-26T08:08:10Z<p>172.16.0.1: Новая страница: «== Аппаратное обеспечение и вопросы, зависящие от платформы == Данная статья 100 % копипаст …»</p>
<hr />
<div>== Аппаратное обеспечение и вопросы, зависящие от платформы ==<br />
<br />
Данная статья 100 % копипаст с [http://www.obsd.ru www.obsd.ru]<br />
<br />
=== Общие рекомендации по оборудованию ===<br />
<br />
==== Устройства PCI ====<br />
<br />
Устройства PCI почти всегда самоконфигурируемые -- компьютер и ОС сами выделяют карте необходимые ресурсы.<br />
Прерывания можно использовать совместно на шине PCI. Не только можно, но и частенько система показывает лучшую производительность с совместно используемыми прерываниями, особенно, на i386.<br />
Есть несколько различных стандартов шин PCI. Можно случайно найти карту PCI2.2, которая просто не будет работать в системе с PCI2.1. Также многие карты со встроенными мостами (такие как многопортовые сетевые карты) не будут нормально работать на старых системах.<br />
Шины PCI поддерживают два уровня сигналов: 3.3 В и 5 В. Карты, работающие с сигналами 3.3 В имеют второй пропил в соединителе. Большинство PCI-карт используют 5-вольтовые сигналы, которые используются на большинстве компьютеров. Одноплатные компьютеры Soekris (Net45x1 and Net4801) часто упоминаются как компьютеры, поддерживающие сигналы только 3.3 В.<br />
<br />
==== Устройства ISA ====<br />
<br />
Устройства ISA не могут использовать ресурсы совместно и, в большинстве случаев, должны быть настроены вручную во избежание конфликтов с другими устройствами в системе.<br />
Некоторые ISA-устройства являются "Plug and Play" (isapnp(4)) -- если возникают проблемы с этими устройствами, следует проверить их настройки, сообщённые dmesg(8), ISAPnP не всегда работает должным образом.<br />
Вообще, если есть выбор, многие предпочитают отказаться от ISA-карт в пользу PCI. ISA-карты намного сложнее настроить и они оказывают гораздо большее негативное воздействие на производительность системы.<br />
<br />
==== Моё устройство "опознано" но dmesg говорит, что оно не настроено ("not configured") ====<br />
<br />
Вкратце, это означает, что устройство не поддерживается ядром и не может быть использовано.<br />
PCI и многие другие типы устройств предоставляют идентификационную информацию чтобы ОС смогла правильно распознать и поддерживать устройство. Распознавать устройство гораздо сложнее чем его поддерживать. Ниже приводится часть dmesg с двумя примерами "не настроенных" устройств:<br />
vendor "Intel", unknown product 0x5201 (class network subclass ethernet, rev 0x03) at pci2 dev 9 function 1 not configured<br />
"Intel EE Pro 100" rev 0x03 at pci2 dev 10 function 0 not configured<br />
Первое (сетевой адаптер) имеет распознанный код поставщика и общий тип карты, тогда как точная модель карты нераспознана. Второй пример - другой сетевой адаптер, известен разработчику и информация о нём была добавлена в файл, используемый для распознавания оборудования. Однако, в обоих случаях, карты будут нерабочими, так как обе указаны как "не настроенные" - это означает, что для них не нашлось драйвера.<br />
Что можно сделать с "не настроенным" устройством?<br />
Если устройство не используется непосредственно, на сообщение "not configured" можно просто не обращать внимания - вреда системе это не нанесёт. Некоторые устройства специального назначения сознательно помечаются как "не настроенные" чтобы их поддерживала BIOS системы.<br />
В некоторых случаях, это лишь разновидность поддерживаемого устройства и для разработчика может не составить большого труда добавить поддержку этой карты. В других случаях, это может быть совсем не поддерживаемый набор микросхем или его реализация (как в рассмотренных выше примерах). В этом случае, нужно написать новый драйвер, что может быть даже невозможно если устройство плохо документировано. Конечно, самостоятельное написание драйвера приветствуется.<br />
Если используется изначальное ядро, устройство может не поддерживаться использованным при установке носителем, но может поддерживаться при установке с другого диска. Это часто случается с пользователями некоторых популярных SCSI-карт, невнимательно прочитавшими рекомендации для платформы i386 и пробуют все загрузочные диски, которые не поддерживают их SCSI-карту вместо того чтобы использовать тот, который поддерживает.<br />
Если используется изменённое ядро, поддержка нужного теперь устройства могла быть удалена на этапе сборки. Вообще, удаление поддержки устройств ядром - плохая идея и это - один из примеров.<br />
Перед тем как сообщить о "не настроенном" устройстве, убедитесь, что был испробован последний срез (snapshot), так как поддержка могла быть уже добавлена и проверьте архивы списков рассылки на предмет рассмотрения этого вопроса ранее. Помните, что используя старую версию OpenBSD, вы можете столкнуться с необходимостью обновления для использованиялюбого нового драйвера.<br />
<br />
==== Моя карта есть в списке поддерживаемого оборудования, но она не работает! ====<br />
<br />
К сожалению, многие производители используют наименование модели для указания его рыночной позиции, а не технической сущности. Поэтому можно купить продукт с тем же самым названием и номером модели, что и продукт, отмеченный на страницах платформ, но совершенно неработоспособный под OpenBSD. Например, сначала, многие беспроводные адаптеры делались на базе микросхемы Prism2 и использовали драйвер wi(4), но позднее, когда появились более дешёвые микросхемы, многие приозводители стали использовать в тех же продуктах другие микросхемы, для которых нет драйверов с открытым кодом. Беспроводные сетевые адаптеры, к сожалению, далеко не единственный пример этого.<br />
<br />
==== Поддерживаются ли WinModem-ы? ====<br />
<br />
WinModem-ы - это дешевые модемы? использующие для обработки сигналов ресурсы процессора, в отличие от аппаратной обработки в случае "обычных" модемов. В связи с нестандартностью (неунифицированностью, большими отличиями от модели к модели) и обычно безобразно плохой документацией на конструктив WinModem-ов в OpenBSD нет и не будет поддержки данных устройств.<br />
<br />
==== Что случилось с поддержкой Adaptec RAID (aac)? ====<br />
<br />
Adaptec прекратил предоставлять документацию на FSA-based (aac(4)) RAID контроллеры. Эти RAID стали содержать большое количество ошибок, документация стала предоставляться в урезанном, недостаточном для написания драйверов варианте. В связи с этим мы удалили данный драйвер из стандартного ядра GENERIC.<br />
Но ведь я сам могу собрать ядро с поддержой aac(4), не правда ли?<br />
Конечно. Но вы сами понимаете, к чему может привести ненадёжность есть ненадёжный. Вы же не эксперименты будете проводить, испытывая "новые возможности"! Кто знает, может он заработает достаточно хорошо в какой-нибудь аппаратной конфигурации, но бы не рекомендовали доверять ему своих данных.<br />
<br />
==== Моя ami(4)-карта поддерживает только один логический диск! ====<br />
<br />
Есть известная ошибка ami(4), которая вызывает повреждение данных при использовании более чем одного тома на некоторых контроллерах. OpenBSD ограничит количество логических дисков до одного на<br />
контроллерах с такой проблемой. В результате, на выходе dmesg появится подобное сообщение:<br />
<pre><br />
ami0: FW A.04.03, BIOS vA.04.03, 4MB RAM ami0: 3 channels, 16 targets, 2 logical drives ami0: firmware buggy,<br />
limiting access to first logical disk scsibus0 at ami0: 1 targets<br />
</pre><br />
<br />
=== DEC Alpha ===<br />
<br />
Пока ничего<br />
<br />
=== AMD 64 ===<br />
<br />
==== Могу ли я запустить OpenBSD/amd64 на Intel P4 ====<br />
<br />
В случае большинства процессоров, выпущенных в последнее время - ответом будет "да". Ксожалению, определить какой именно из процессоров сможет запустить, а какой нет, достаточно сложно. Проще определить экспериментальным путем, будет работать или нет.<br />
<br />
==== Могу ли я запустить бинарный файл i386 на OpenBSD/amd64? ====<br />
Нет.<br /><br />
OpenBSD/amd64 совершенно другая платформа, некжели OpenBSD/i386, и, на данном этапе, бинарная совместимость не поддерживается. Как полагает OpenBSD, в мире открытых кодов нет большого интереса разработчиков к бинарной совместимости.<br />
Следует обратить внимание, OpenBSD/amd64 и OpenBSD/i386 boot loaders will (as of OpenBSD 4.2) load each other's kernels, making it easier to reinstall a system with the "other" platform. Поэтому лучше выполнить полную "очистку и инсталляцию" -- иначе оставшиеся от "предыдущей" инсталляции бинарники изрядно усложнят вам жизнь.<br />
<br />
==== Всегда ли лучше запускать OpenBSD/amd64 на соответствующих процессорах? ====<br />
<br />
Не всегда. <br /><br />
Вот несколько причин использовать OpenBSD/i386 на платформах OpenBSD/amd64, которые могут исполнять код amd64:<br />
* Необходимость запуска бинарников i386 (or other OS).<br />
* Необходимость запуска приложений, не являющихся нативно "64 битными".<br />
* Необходимость переноса дисков на машину не amd64<br />
* Для некоторых приложений и аппаратных платформ OpenBSD/i386 может превосходить по производительности OpenBSD/amd64. Относительно небольшая группа людей готовы работать над исправлением данной ситуации.<br />
<br />
=== ARM-based appliances ===<br />
<br />
Пока ничего<br />
<br />
=== HP300 ===<br />
<br />
Пока ничего<br />
<br />
=== HPPA ===<br />
<br />
Пока ничего<br />
<br />
=== i386 ===<br />
<br />
==== Сетевые интерфейсы ISA ====<br />
<br />
OpenBSD хорошо работает на устаревшем оборудовании и пользователи бывает используют даже сетевых карт ISA. Оборудование ISA требует гораздо большей настройки и понимания, чем PCI. Нельзя просто вставить карту в компьютер и ожидать, что она волшебным образом заработает. Во многих машинах, если ISA-устройство не в режиме "Plug 'n' Play" (PNP), ресурсы, используемые картой, должны быть назначены<br />
BIOS.<br />
3Com 3C509B ep(4)<br />
Это отлично зарекомендовавшая себя сетевая карта ISA, поддерживаемая драйвером ep(4). Версия "B" отличается от "не-B" маркировкой на карте и бОльшей главной микросхемой (со стороной, приблизительно, 2.5 см для версии "B" против 2 см для более старой версии) и показывает бОльшую производительность в нагруженных системах или системах с двумя сетевыми картами. Микросхема 3C509B поставляется настроенной на режим PNP, который, к сожалению, не соответствует стандартам и вызывает проблемы в поддержке isapnp(4) под OpenBSD. Сначала, карта распознаётся как не-PNP устройство, потом, когда включается поддержка PNP, dmesg отображает дополнительный интерфейс. Это может и не повредить, а может и привести к другим проблемам. Крайне рекомендуется отключать режим PNP в картах 3C509B и настраивать их вручную с использованием конфигурационных утилит 3Com под DOS перед использованием во избежание конфликтов<br />
Драйвер ep(4) подхватит карты в любой комбинации аппаратного обеспечения, не предусматривающей конфликтов устройств.<br />
Если в системе несколько карт 3C509, рекомендуется пометить их MAC-адресами, чтобы различать их в выводе dmesg.<br />
Заметим, что 3C509, 3C905 и 3C590 часто путают. 3C509 - это 10 Мб/с карта ISA, а 3C905 и 3C590 - карты PCI.<br />
NE2000<br />
Изначально, сетевая карта NE2000 была разработана в середине 1980-х компанией Novell. C тех пор, многие производители выпускали очень похожие карты, которые вообще-то назывались NE2000-совместимыми или клонами. Производительность этих клонов сильно отличалась. Тогда как некоторые старые представители показывали хорошие результаты, многие из доступных сейчас очень плохи. NE2000-совместимые карты в OpenBSD поддерживает драйвер ne(4).<br />
OpenBSD хорошо поддерживает некоторые умеющие ISAPNP NE2000-совместимые карты с включенным режимом ISAPNP. Другие карты должны быть настроены или перемычками, или DOSовской утилитой. К сожалению, настоящие NE2000 не имели программной настройки и поддержки ISAPNP. Так что для настройки карты может потребоваться именно та утилита, которая поставлялась с ней, получить которую бывает проблематично.<br />
Драйвер ne(4) поддерживает 3 конфигурации карт ISA NE2000 в ядре GENERIC системы OpenBSD<br />
ne0: port 0x240 irq 9<br />
nel: port 0x300 irq 10<br />
ne2: port 0x280 irq 9<br />
Если эти установки неприемлемы, можно настроить их через User Kernel Configuration (UKC) или сборкой своего ядра.<br />
Драйвер ne(4) ведёт себя честно "по-бестолковому" -- просто проверяет порты ввода-вывода и если находит что-то из перечисленных адресов, то приписывает ему соответствующее прерывание. dmesg(8) не показывает действительного номера прерывания в случае использования драйвера ne(4) на ISA. И если действительное прерывание карты не установлено в это значение, работать она не будет.<br />
Бывают и не-ISA карты, использующие драйвер ne(4) -- это PCI и PCMCIA, к ним это всё не относится, они настраиваются сами по себе.<br />
<br />
==== OpenBSD не работает на моей 80386/80386SX/80486SX! ====<br />
<br />
80386sx<br />
80386SX/DX<br />
Начина с OpenBSD 4.2 прекращена поддержка процессоров 80386DX и 80386SX. В дополнение к другим ограничениям чипа 80386, система работает очень медленно из-за ограниченного ОЗУ, FPU недостаточен для исполнения OpenBSD.<br />
80486SX<br />
Микросхема 80486SX - это "дешевая" версия 80486, у нее отсутствует аппаратная поддержка операций с плавающей точкой, необходимая для работы OpenBSD (как у 80386). К счастью, полная версия 80486DX достаточно распространена и большинство систем легко поддаётся усовершенствованию.<br />
80486DX и более новые поддерживают OpenBSD.<br />
<br />
==== dmesg показывает несколько устройств, использующих одно и то же прерывание (IRQ)! ====<br />
<br />
Это вполне нормально и даже желательно для устройств PCI. Конструкция шины PCI подразумевает такую возможность. Некоторые считают, что совместно использовать запросы на прерывание (interrupt requests,<br />
IRQs) не хорошо, однако, они либо путают ситуацию с шиной ISA (где совместное использование прерываний недопустимо) или это последствия негативного опыта использования битого железа или программного обеспечения.<br />
Устройства ISA не могут использовать прерывания совместно - если такое происходит, то конфликт необходимо устранить.<br />
<br />
==== Моя клавиатура/мышь не работает ("зависает", сходит с ума)! ====<br />
<br />
Чаще всего такое случается при использовании "переключателя" (иногда называемого "KVM switch"), используемого для подключения нескольких компьютеров к одному комплекту клавиатура/мышь/монитор. Можно поэкспериментировать с разными марками переключателей, но OpenBSD требовательнее многих к переключению мыши. Проблема обычно в переключении мыши. Если мышь не используется, решение на поверхности - просто не нужно подключать её кабель к компьютеру. Если мышь таки используется, то простым решением будет подключить к каждому компьютеру по отдельной мыши и переключать только клавиатуру и монитор. Может выясниться, что использование мышиного переходника PS/2->USB решит эту проблему (OpenBSd будет работать с USB-мышью). Если нужен просто консольный доступ, то решением может быть использование последовательной консоли.<br />
<br />
=== Landisk ===<br />
<br />
Пока ничего<br />
<br />
=== Luna88k ===<br />
<br />
Пока ничего<br />
<br />
=== Mac68k ===<br />
<br />
Пока ничего<br />
<br />
=== MacPPC ===<br />
<br />
==== Почему сетевой адаптер bm(4) такой медленный? ====<br />
<br />
Драйвер bm, поддерживающий микросхему BMAC, используемую на некоторых системах MacPPC (включая ранние iMac) имеет проблемы при работе в режиме 100 Мб/с. Настоятельно рекомендуется заставить драйвер работать в режиме 10 Мб/с параметром "media 10baseT" в файле /etc/hostname.bm0 или на концентраторе/коммутаторе.<br />
<br />
=== MVME68k ===<br />
<br />
Пока ничего<br />
<br />
=== MVME88k ===<br />
<br />
Пока ничего<br />
<br />
=== SGI ===<br />
<br />
Пока ничего<br />
<br />
=== SPARC ===<br />
<br />
Пока ничего<br />
<br />
=== UltraSPARC (sparc64) ===<br />
<br />
==== Мой UltraSPARC не грузится с образа гибкого диска ====<br />
<br />
Только Ultra 1/1e и Ultra 2 могут загружать операционную систему с гибкого диска. Вместо этого, для установки нужно использовать CD-ROM, Miniroot или загрузку по сети.<br />
<br />
==== disklabel выдает сообщение "partition extends past end of unit" ====<br />
<br />
На системах sparc и sparc64, disklabel BSD не умеет описывать геометрию диска больше чем 8ГБ, тогда как отдельные записи disklabel могут быть и больше.<br />
Каждый раз при запуске disklabel(8), он выполняет проверку записей disklabel на предмет того, что он считает правильной геометрией диска и, увидев обрезанную геометрию, предупреждает, что не разрешит менять записи за пределами этой области в 8ГБ, пока ему не сообщат настоящую геометрию устройства. Этого можно добиться командой 'g' в интерактивном редакторе disklabel(8), дав указание использовать геометрию диска "[d]isk geometry":<br />
<pre><br />
# disklabel -E wd0<br />
# Inside MBR partition 3: type A6 start 63 size 17912412<br />
[...]<br />
Initial label editor (enter '?' for help at any prompt)<br />
> g<br />
[d]isk, [ b ]ios, or [ u ]ser geometry: [d] d<br />
> w<br />
> q<br />
</pre><br />
Сообщения останутся, но появится возможность настраивать и использовать диск желаемым образом. Правильное решение должно быть совместимо с уже используемыми системами и с Solaris, работающими на дисках, больше чем 8ГБ, но пока такового нет.<br />
<br />
=== DEC VAX ===<br />
<br />
==== Можно использовать симулятор SIMH VAX? ====<br />
Да!<br />
Симулятор SIMH VAX можно использовать для эффективной эмуляции настоящей VAX. Инструкции можно найти здесь.<br />
<br />
=== Sharp Zaurus ===<br />
<br />
==== Некорректно работают устройства USB ====<br />
<br />
Очень мало устройств будут работать корректно, если вы подключите их непосредственно к порту USB Zaurus. Используйте активный USB hub (с внешним источником питания) для работы с этими устройствами.<br />
Перевод соответствует $OpenBSD: faq12.html,v 1.89 2008/01/26 06:29:50 saad Exp $</div>172.16.0.1http://www.qbsd.ru/index.php?title=OpenBSD-Wiki:%D0%A2%D0%B5%D0%BA%D1%83%D1%89%D0%B8%D0%B5_%D1%81%D0%BE%D0%B1%D1%8B%D1%82%D0%B8%D1%8F&diff=85OpenBSD-Wiki:Текущие события2013-05-26T07:03:59Z<p>172.16.0.1: </p>
<hr />
<div>== Актуальное ==<br />
Собрано всё, что применимо к текущему релизу.<br />
<br />
* [[Введение в OpenBSD]]<br />
* [[IPsec между OpenBSD и Linux Ubuntu]]<br />
* [[Использование файла mk.conf]]<br />
* [[Написание OpenBSD Loadable Kernel Modules (LKM)]]<br />
* [[Новое IPSec howto]]<br />
* [[Русификация OpenBSD 5.x]]<br />
* [[Русификация OpenBSD]]<br />
* [[Создание загрузочной флешки]]<br />
* [[Перечень Интернет ресурсов о OpenBSD]]<br />
* [[Описание переменных sysctl]]<br />
<br />
== Устаревшее ==<br />
Данная информация сохранена для архивных версий.<br />
<br />
* [[Использование Bluetooth в OpenBSD]]<br />
<br />
== Прочее ==<br />
<br />
* [[Резервная копия Wiki]]</div>172.16.0.1http://www.qbsd.ru/index.php?title=%D0%97%D0%B0%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0&diff=84Заглавная страница2013-05-26T07:03:41Z<p>172.16.0.1: </p>
<hr />
<div>== OPENBSD.PW Wiki ==<br />
<br />
Неофициальный Wiki портал русскоязычного сообщества [http://www.openbsd.org OpenBSD].<br />
<br />
Полезен в первую очередь системным администраторам как открытый сборник информации, how-to’шек, заметок о данной операционной системе.<br />
В силу возможностей wiki более живуч, чем отдельно существующие сайты.<br />
Чтобы более не терять информацию в дальнейшем планируется выкладывать дампы MySQL.<br />
<br />
Разумеется, публикуемая информация распространяется по принципу «как есть» и не претендует на полноту и точность сведений.<br />
За последствия её применения никто не берёт на себя ответственность. Чтение [http://www.openbsd.org/cgi-bin/man.cgi официальной документации] никто не отменял.<br />
<br />
На данный момент осуществляется наполнение wiki. Что сделано отмечено в разделе [[OpenBSD-Wiki:Текущие события]]<br /><br />
Из завершённого пока располагаем только [http://openbsd.pw:81/files архивом сайтов] который викифицируем.<br />
<br />
Будем рады если окажете помощь написав статью или исправите неточность.</div>172.16.0.1http://www.qbsd.ru/index.php?title=%D0%98%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_Bluetooth_%D0%B2_OpenBSD&diff=83Использование Bluetooth в OpenBSD2013-05-26T07:03:10Z<p>172.16.0.1: </p>
<hr />
<div>Данная статья 100 % копипаст с [http://www.openbsd.ru www.openbsd.ru]<br />
<br />
Поскольку GENERIC ядро не включает в себя ни стек, ни драйверы устройств Bluetooth, необходимо собрать ядро, поддерживающее следующие устройства:<br />
# Контроллер Bluetooth<br />
ubt* at uhub?<br />
<br />
# Поддержка шины Bluetooth<br />
bthub* at ubt?<br />
<br />
# Поддержка HID устройств, работающих через Bluetooth<br />
bthidev* at bthub?<br />
btkbd* at bthidev?<br />
btms* at bthidev?<br />
wskbd* at btkbd? mux 1<br />
wsmouse* at btms? mux 0<br />
<br />
Для управления устройствами Bluetooth следует установить утилиты bluetooth-tools /usr/ports/net/bluetooth-tools.<br />
Базовая конфигурация<br />
<br />
Произведем предварительную настройку. Определим наличие контроллеров Bluetooth в системе и распечатаем их начальную конфигурацию:<br />
% btconfig -l<br />
ubt0<br />
% btconfig ubt0<br />
ubt0: bdaddr 00:00:00:00:00:00 flags=0<><br />
num_cmd = 0<br />
num_acl = 0, acl_mtu = 0<br />
num_sco = 0, sco_mtu = 0<br />
<br />
Зададим такие параметры как: имя узла, класс устройства узла (ноутбук), режим работы. После чего включим интерфейс:<br />
# btconfig ubt0 up name "Q45" pscan switch class 0x02010c<br />
% btconfig -v ubt0<br />
ubt0: bdaddr 00:1f:3a:ec:05:0f flags=3<br />
num_cmd = 1<br />
num_acl = 8, acl_mtu = 1017<br />
num_sco = 1, sco_mtu = 64<br />
HCI version: 2.0<br />
class: [0x02010c] Laptop Computer <br />
name: "Q45"<br />
voice: [0x0060]<br />
pin: variable<br />
options: pscan switch<br />
Использование HID устройств Bluetooth<br />
<br />
Произведем поиск устройств:<br />
<pre><br />
% btconfig ubt0 inquiry<br />
Device Discovery from device: ubt0 .... 1 response<br />
1: bdaddr 00:1e:dc:d8:94:0b<br />
: name "K530i"<br />
: class: [0x5a0204] Cellular Phone <br />
<br />
: page scan rep mode 0x01<br />
: clock offset 23944<br />
</pre><br />
Сохраняем имя и адрес устройства в локальном файле Bluetooth-хостов, генерируем PIN код и попытаемся использовать телефон как HID устройство:<br />
# echo "00:1e:dc:d8:94:0b k530i" >>/etc/bluetooth/hosts<br />
# bthcid<br />
# btpin -d ubt0 -a k530i -r -l 5<br />
PIN: 84921<br />
# btdevctl -d ubt0 -a k530i -s HID<br />
local bdaddr: 00:1f:3a:ec:05:0f<br />
remote bdaddr: 00:1e:dc:d8:94:0b<br />
link mode: encrypt<br />
device type: HID<br />
control psm: 0x0011<br />
interrupt psm: 0x0013<br />
Collection page=Generic_Desktop usage=Keyboard<br />
...<br />
End collection<br />
Collection page=Generic_Desktop usage=Mouse<br />
Collection page=Generic_Desktop usage=Pointer<br />
...<br />
End collection<br />
End collection<br />
# btdevctl -d ubt0 -a k530i -s HID -A<br />
<br />
Появятся сообщения ядра:<br />
bthub0 at ubt0 00:1f:3a:ec:05:0f<br />
bthidev0 at bthub0 00:1e:dc:d8:94:0b encrypt<br />
btkbd0 at bthidev0 reportid 1<br />
wskbd1 at btkbd0 mux 1<br />
wskbd1: connecting to wsdisplay0<br />
btms0 at bthidev0 reportid 2: 3 buttons.<br />
wsmouse2 at btms0 mux 0<br />
bthidev0: connected<br />
<br />
Телефон попросит ввести PIN, после чего предложит использовать себя как HID устройство, давая возможность выбрать из ряда приложений, созданных для проведения презентаций и т. п.<br />
<br />
Выход из приложения означает конец сессии. Этот факт регистрируется и ядром:<br />
bthidev0: disconnected<br />
<br />
Отцепим ненужные HID устройства:<br />
# btdevctl -d ubt0 -a k530i -s HID -D<br />
# dmesg | tail -6<br />
wsmouse2 detached<br />
btms0 detached<br />
wskbd1: disconnecting from wsdisplay0<br />
wskbd1 detached<br />
btkbd0 detached<br />
bthidev0 detached<br />
<br />
Для быстрой настройки устройства можно использовать следующий скрипт (величины задержек установлены экспериментально):<br />
<br />
<syntaxhighlight lang="bash">#!/bin/sh<br />
<br />
DEVICE="k530i"<br />
NAME="Q45"<br />
UBT=$(btconfig -l | head -1)<br />
<br />
if [ "${UBT}" = "" ]; then<br />
echo "No bluetooth controllers have been found!"<br />
exit 1<br />
fi<br />
<br />
if [ "${1}" = "-d" ]; then<br />
btdevctl -d ${UBT} -a ${DEVICE} -s HID -D<br />
pkill bthcid<br />
exit $?<br />
fi<br />
<br />
echo "configuring bluetooth: ${UBT}"<br />
btconfig ${UBT} up name "${NAME}" pscan switch class 0x02010c<br />
btconfig -v ${UBT}<br />
<br />
sleep 2<br />
<br />
echo -n "starting bthcid..."<br />
bthcid && echo " ok"<br />
<br />
sleep 5<br />
<br />
echo -n "generating pin code: "<br />
btpin -d ${UBT} -a ${DEVICE} -r -l 5<br />
<br />
sleep 3<br />
<br />
echo -n "attaching HID devices..."<br />
btdevctl -d ${UBT} -a ${DEVICE} -s HID >/tmp/hid.log 2>&1<br />
btdevctl -d ${UBT} -a ${DEVICE} -s HID -A && echo " done"</syntaxhighlight></div>172.16.0.1http://www.qbsd.ru/index.php?title=%D0%9E%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BF%D0%B5%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_sysctl&diff=82Описание переменных sysctl2013-05-26T07:02:21Z<p>172.16.0.1: </p>
<hr />
<div>== Описание переменных sysctl ==<br />
<br />
Данная статья 100 % копипаст с [http://www.openbsd.ru www.openbsd.ru]<br />
<br />
Значения некоторых параметров ядра, влияющих на работу его подсистем, можно изменять из контекста суперпользователя во время работы системы. Механизмом, реализующим доступ к переменным ядра в OpenBSD, является [http://www.openbsd.org/cgi-bin/man.cgi?query=sysctl&apropos=0&sektion=3&manpath=OpenBSD+Current&arch=i386 sysctl(3)]. Команда непосредственного управления — [http://www.openbsd.org/cgi-bin/man.cgi?query=sysctl&apropos=0&sektion=8&manpath=OpenBSD+Current&arch=i386&format=html sysctl(8)]. Она способна как распечатывать текущие значения параметров, так и выставлять их.<br />
<br />
== Работа с sysctl(8) ==<br />
<br />
Вывод на экран всех доступных переменных с их текущими значениями:<br />
# sysctl -a<br />
<br />
Чтобы узнать значение конкретной переменной:<br />
# sysctl переменная<br />
<br />
Для изменения значения переменной:<br />
# sysctl переменная=значение <br />
<br />
Типы значений переменных sysctl могут быть числовыми и строковыми. Изменять значения требуемых переменных следует в файле ''/etc/sysctl.conf'', чтение которого происходит при загрузке системы.<br />
<br />
== Лимиты на системные ресурсы ==<br />
<br />
* kern.maxfiles<br />
<br />
Переменная kern.maxfiles определяет максимальное число дескрипторов файлов. Каждый открытый файл, сокет или буфер использует дескриптор файла. Нагруженному серверу может понадобиться много тысяч дескрипторов файлов, в зависимости от количества программ, одновременно выполняемых на сервере. Количество дескрипторов, используемых в данный момент, содержится в переменной kern.nfiles.<br />
<br />
* kern.maxvnodes<br />
<br />
Максимальное число vnode, аллоцируемых для дисковых операций. Следует увеличить если kern.numvnodes превышает значение kern.maxvnodes в два раза. Поскольку система использует механизм повторного использования vnode, изменять это значение следует только в том случае, когда система испытывает нехватку ресурса (случается паника ядра и т. п.)<br />
<br />
* kern.maxproc<br />
<br />
Максимально допустимое число одновременно запущенных процессов. Текущее количество запущенных процессов можно узнать через kern.nprocs.<br />
<br />
== Параметры стека TCP/IP и другие сетевые настройки ==<br />
<br />
* kern.maxclusters<br />
<br />
Ограничивает количество доступных системе mbuf кластеров (буферов памяти, используемых сетевой подсистемой ядра). Посмотреть количество сетевых кластеров можно с помощью команды:<br />
<br />
# netstat -m<br />
<br />
Если пиковое значение близко к максимальному, его стоит увеличить.<br />
<br />
* net.inet.ip.ifq.maxlen<br />
<br />
Параметр задает значение максимальной длины очереди пакетов, принятых из устройства и ожидающих обработки IP стеком. Имеет смысл увеличить значение (до ~1000) если значение net.inet.ip.ifq.drops увеличивается.<br />
<br />
* net.inet.ip.forwarding<br />
<br />
Если необходимо выполнять перенаправление IPv4-пакетов между сетевыми интерфейсами, установите значение, равным 1. Применяйте только в том случае, когда система должна выступать в качестве маршрутизатора.<br />
<br />
* net.inet.ip.maxqueue<br />
<br />
Устанавливает размер очереди, используемой для хранения фрагментированных IP пакетов. Количество отброшенных фрагментов отражается параметром «fragment floods» в выводе команды netstat -s -p ip.<br />
<br />
* net.inet.tcp.baddynamic<br />
<br />
Список зарезервированных TCP портов. Порты с этими номерами не будут использованы ядром в качестве портов для исходящих соединений. Это может быть полезно, если используются непривилегированные процессы, прослушивающие определенные порты с номерами выше 1024. Для того, чтобы добавить номер порта в список, необходимо выполнить команду:<br />
<br />
# sysctl net.inet.tcp.baddynamic=+52000<br />
<br />
А чтобы удалить:<br />
<br />
# sysctl net.inet.tcp.baddynamic=-52000 <br />
<br />
== Лимиты средств межпроцессного взаимодействия в стиле UNIX System V ==<br />
<br />
Посмотреть информацию о используемых средствах System V IPC можно с помощью программы ipcs(1).<br />
<br />
* kern.shminfo<br />
<br />
Иерархия переменных, относящихся к разделяемой памяти.<br />
<br />
*: kern.shminfo.shmmax<br />
<br />
Наибольший допустимый размер сегмента разделяемой памяти (в байтах).<br />
<br />
*: kern.shminfo.shmmni<br />
<br />
Максимальное количество сегментов разделяемой памяти для системы.<br />
*: kern.shminfo.shmseg<br />
<br />
Максимальное количество сегментов разделяемой памяти на процесс.<br />
<br />
*: kern.shminfo.shmall<br />
<br />
Общее количество разделяемой памяти, которое может быть использовано (в страницах оперативной памяти).<br />
<br />
Настройки разделяемой памяти стоит изменять только в случае работы с прокси сервером Squid, который использует по одной области разделяемой памяти для каждой cachedir. Значение ''kern.shminfo.shmmni'' должно быть равно или больше значения cachedir, ''kern.shminfo.shmmax'' больше либо равно размеру cachedir и ''kern.shminfo.shmall'' должно быть не меньше ''kern.shminfo.shmmni'', умноженной на ''kern.shminfo.shmmax''.<br />
<br />
* kern.seminfo<br />
<br />
Иерархия переменных, относящихся к семафорам.<br />
*: kern.seminfo.semmni<br />
<br />
Число идентификаторов семафоров в системе. Определяет максимальное число семафоров.<br />
*: kern.seminfo.semmns<br />
<br />
Число семафоров в системе. Каждый серверный процесс требует один семафор.<br />
*: kern.seminfo.semmnu<br />
<br />
Число undo-структур, которые используются для восстановления структур данных семафоров при фатальном завершении процесса.<br /> Выставляется в максимальное число одновременных процессов в статусе runnable в системе.<br />
*: kern.seminfo.semmsl<br />
<br />
Максимальное число семафоров, разрешенное системой в пределах одного набора семафоров.</div>172.16.0.1http://www.qbsd.ru/index.php?title=%D0%9F%D0%B5%D1%80%D0%B5%D1%87%D0%B5%D0%BD%D1%8C_%D0%98%D0%BD%D1%82%D0%B5%D1%80%D0%BD%D0%B5%D1%82_%D1%80%D0%B5%D1%81%D1%83%D1%80%D1%81%D0%BE%D0%B2_%D0%BE_OpenBSD&diff=81Перечень Интернет ресурсов о OpenBSD2013-05-26T07:01:46Z<p>172.16.0.1: </p>
<hr />
<div>== Перечень Интернет ресурсов о OpenBSD ==<br />
<br />
=== Действующие ===<br />
<br />
{| class="wikitable collapsible"<br />
!colspan="3" style="background:#FFCC00"|Перечень сайтов<br />
|-<br />
!Ресурс||Актуальность||Описание<br />
|-<br />
|[http://www.openbsd.org/faq/index.html www.openbsd.org]||ДА||'''FAQ. Строго обязательно к прочтению!''' [http://www.openbsd.org/faq/ru/ Русскоязычная версия].<br />
|-<br />
|[http://undeadly.org undeadly.org]||ДА||Live-журнал OpenBSD<br />
|-<br />
|[http://freshbsd.org freshbsd.org]||ДА||Все изменения в коде *BSD проектов, в портах отображаются здесь.<br />
|-<br />
|[http://openports.se openports.se]||ДА||Коллекция портов для OpenBSD<br />
|-<br />
|[https://stable.mtier.org stable.mtier.org]||ДА||Коллекция портов для OpenBSD для i386 и amd64<br />
|-<br />
|[http://distrowatch.com/table.php?distribution=openbsd distrowatch.com]||ДА||Информационно-новостной ресурс сообщающий о составе и релизах открытого ПО (Linux / BSD / др.).<br />
|-<br />
|[http://bsdtalk.blogspot.ru bsdtalk.blogspot.ru]||ДА||Аудиозаписи, интервью, размышления на тему *BSD. На английском.<br />
|-<br />
|[http://bsdmag.org bsdmag.org]||ДА||BSD magazine. Популярный журнал о BSD системах. Русские переводы выполненные командой энтузиастов [http://bsdmag.su находится здесь].<br />
|-<br />
|[http://home.nuug.no/~peter/pf/en/long-firewall.html home.nuug.no]||ДА||Firewalling with OpenBSD’s PF packet filter.<br />
Автор: Peter N. M. Hansteen. Основополагающая вещь, читать всем! [http://home.nuug.no/~peter/pf/eurobsdcon2012 Ещё eurobsdcon2012] от него же.<br />
|-<br />
|[http://rlworkman.net/howtos/OpenBSD_pf_guide.html rlworkman.net]||Нет||Устаревшая версия 2006 г. Firewalling with OpenBSD’s PF packet filter.<br />
Автор: Peter N. M. Hansteen.<br />
|-<br />
|[http://www.openbsdsupport.org www.openbsdsupport.org]||ДА||OpenBSD Users Documentation project<br />
|-<br />
|[http://www.opennet.ru/search.shtml?method=and&format=builtin-long&config=htdig&restrict=&exclude=&words=openbsd www.opennet.ru]||ДА||The OpenNet Project. Популярный портал посвященный открытому ПО. Содержит новости, советы. Имеется форум.<br />
|-<br />
|[http://www.synack.ru www.synack.ru]||ДА||Хороший blog по *BSD \ Linux \ VoIP и др.<br />
|-<br />
|[https://calomel.org calomel.org]||ДА||Богатый сборник how-to по OpenBSD. Актуализирован под OpenBSD 5.x!<br />
|-<br />
|[http://www.lissyara.su www.lissyara.su]||4.x||Личный сайт BSD’шника под ником '''lissyara''', богатый справочник по FreeBSD и OpenBSD.<br />Актуален для старых версий.<br />
|-<br />
|[http://habrahabr.ru/search/?q=openbsd habrahabr.ru]||Сомнительно||Сверхпопулярный IT-blog. Доступные на нем записи о OpenBSD.<br />
|-<br />
|[http://www.kernel-panic.it/openbsd.html www.kernel-panic.it]||Сомнительно||Сборник руководств по OpenBSD.<br />
|-<br />
|[https://www.dmoz.org www.dmoz.org]||Неизвестно||Сборник статей по OpenBSD.<br />
|-<br />
|[http://www.monkey.org/misc www.monkey.org]||Неизвестно||OpenBSD is for monkeys<br />
|-<br />
|[http://www.trumpetpower.com/OpenBSD/Meta-FAQ www.trumpetpower.com]||Неизвестно||OpenBSD Meta-FAQ<br />
|-<br />
|[http://www.infobsd.org/default.htm www.infobsd.org]||Неизвестно||InfoBSD<br />
|-<br />
|[http://tuxmobil.org/mobile_bsd.html tuxmobil.org]||Неизвестно||FreeBSD, NetBSD, OpenBSD, DragonFly and Mobile Computers (Laptops, Notebooks, PDAs, Mobile Phones)<br />
|}<br />
<br />
=== Отдельные информационные статьи, записки, заметки ===<br />
<br />
{| class="wikitable collapsible"<br />
!colspan="3" style="background:#FFCC00"|Перечень статей<br />
|-<br />
!Ресурс||Актуальность||Описание<br />
|-<br />
|[http://www.vpnc.org/InteropProfiles/OpenBSD.html www.vpnc.org]||-||OpenBSD Documentation Examples for IPsec Interoperability<br />
|-<br />
|[http://www.nomoa.com/bsd/index.html www.nomoa.com]||-||Установка и настройка OpenBSD сервера<br />
|-<br />
|[http://www.realo.ca/BSDinstall.html www.realo.ca]||-||A Step-by-Step Guide to Building an OpenBSD PPPoE Gateway, with Firewall<br />
|-<br />
|[http://pestilenz.org/~bauerm/tor-openbsd-howto.html pestilenz.org]||-||Установка Tor Wiki в Apache chroot<br />
|}<br />
<br />
== Недействующие ==<br />
<br />
Информацию можно просмотреть через [http://archive.org/web/web.php archive.org]<br />
<br />
{| class="wikitable collapsible"<br />
!colspan="2" style="background:#FFCC00"|Архив сайтов<br />
|-<br />
!Ресурс||Описание<br />
|-<br />
|[http://web.archive.org/web/*/http://openbsd.ru openbsd.ru]||Главный портал русскоязычного сообщества OpenBSD.<br />
|-<br />
|[http://web.archive.org/web/*/http://obsd.ru obsd.ru]||Портал русскоязычного сообщества OpenBSD. К сожалению, автора и его проекта нет с нами…<br />
|-<br />
|[http://web.archive.org/web/*/http://openbsd101.com openbsd101.com]||Сборник how-to для начинающих.<br />
|}</div>172.16.0.1http://www.qbsd.ru/index.php?title=%D0%A0%D1%83%D1%81%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D1%8F_OpenBSD&diff=80Русификация OpenBSD2013-05-26T07:01:06Z<p>172.16.0.1: </p>
<hr />
<div>== Русификация консоли ==<br />
<br />
Данная статья 100 % копипаст с [http://www.openbsd.ru www.openbsd.ru]<br />
<br />
Русификация консоли происходит в две стадии: смена раскладки клавиатуры и настройка русских шрифтов.<br />
<br />
== Раскладка клавиатуры ==<br />
<br />
Добавьте в файл /etc/wsconsctl.conf раскладку вашей клавиатуры. Если вы указали тип раскладки при установке системы, раскладка уже должна стоять правильно. Также укажите тип переключателя раскладки. В данном примере настраивается «sticky» переключение раскладок клавишей правый Ctrl.<br />
<pre><br />
keyboard.encoding=ru<br />
keyboard.map+="keycode 157 = Mode_Lock"<br />
</pre><br />
Текущую раскладку можно получить, выполнив следующую команду:<br />
<br />
# wsconsctl keyboard.map<br />
<br />
Для того чтобы поправить текущую раскладку клавиатуры, можно воспользоваться тем же приемом. Данный пример позволяет набирать букву «ё», нажимая комбинацию Shift+~ (раскладка Windows):<br />
<br />
keyboard.map+='keycode 41 = grave asciitilde Cyrillic_yo Cyrillic_YO'<br />
<br />
== Отображение кириллицы ==<br />
<br />
Для отображения кириллицы необходимо загрузить шрифт и настроить экраны (консоли).<br />
<br />
Экран ttyC0 создаётся ядром и не может быть удалён, поэтому на нем нельзя отобразить кириллицу.<br />
<br />
Исходя из количества экранов по умолчанию, добавим в /etc/rc.local следующие строки для создания шести дополнительных экранов с предварительно загруженным русским шрифтом. Не забудьте запустить на этих экранах процессы getty, см. ttys(5).<br />
<pre><br />
# загружаем русский koi8 шрифт<br />
wsfontload -h 16 /usr/share/misc/pcvtfonts/koi8-r-8x16<br />
# или украинский koi8 шрифт<br />
# wsfontload -h 16 /usr/share/misc/pcvtfonts/koi8-u-8x16<br />
<br />
# создаем консоли с поддержкой кириллицы<br />
for cons in 6 7 8 9 10 11; do<br />
wsconscfg -t 80x25bf $cons<br />
done<br />
</pre><br />
<br />
== Русификация X Window ==<br />
<br />
В файл конфигурации X Window /etc/X11/xorg.conf в раздел Section «Files» добавьте следующую строчку:<br />
<br />
FontPath "/usr/X11R6/lib/X11/fonts/cyrillic/"<br />
<br />
Также для управления шрифтами используется fontconfig, позволяющий использовать такие свойства TrueType шрифтов как антиалиасинг и хинтинг. Это средство широко используется в программах на основе тулкитов Gtk+ 2.x и Qt. Поэтому рекомендуется установить порт /usr/ports/x11/msttcorefonts, содержащий бесплатные шрифты от Microsoft или /usr/ports/x11/liberation-fonts.<br />
<br />
Для возможности ввода кириллицы следует настроить xkb.<br />
Настройка xkb<br />
<br />
Для того, чтобы настроить xkb:<br />
<br />
В Xorg необходимо добавить следующие строки в секцию InputDevice файла /etc/X11/xorg.conf:<br />
<pre><br />
Option "XkbModel" "pc105"<br />
Option "XkbLayout" "us,ru(winkeys)"<br />
Option "XkbOptions" "grp_led:scroll,grp:ctrl_shift_toggle"<br />
</pre><br />
В данном примере режим переключается комбинацией клавиш Ctrl+Shift. При переключении раскладки будет загораться Scroll Lock (если задан параметр grp_led).<br />
<br />
Также необходимо определить несколько переменных окружения. Этого можно достичь, добавив в файл ~/.xsession (если используется xdm) или ~/.xinitrc:<br />
<pre><br />
export LC_COLLATE=C LC_CTYPE=ru_RU.KOI8-R LC_MONETARY=C \<br />
LC_NUMERIC=C LC_TIME=C<br />
</pre><br />
Более подробную информацию по настройке xkb можно получить здесь.<br />
<br />
<br />
== Русификация программ ==<br />
<br />
<br />
=== Emacs ===<br />
<br />
Для того, чтобы заставить Emacs воспринимать 8-битные кодировки и в частности koi8-r, необходимо добавить следующие команды в ''~/.emacs'':<br />
<pre><br />
(set-language-environment "Cyrillic-KOI8")<br />
(set-keyboard-coding-system 'koi8-r)<br />
(set-terminal-coding-system 'koi8-r)<br />
</pre><br />
<br />
=== Fvwm (Fvwm2 и Fvwm95) ===<br />
<br />
Чтобы включить поддержку русских букв в менеджерах семейства fvwm, нужно указать шрифты «cronyx» в следующих строчках конфигурационного файла (''~/.fvwmrc'', ''~/.fvwm2rc'', ''~/.fvwm95rc''):<br />
<pre><br />
WindowFont -cronyx-helvetica-bold-r-*-*-12-*-*-*-*-*-*-*<br />
MenuFont -cronyx-helvetica-medium-r-*-*-12-*-*-*-*-*-*-*<br />
*FvwmPagerFont -cronyx-helvetica-bold-r-*-*-10-*-*-*-*-*-*-*<br />
*FvwmButtonsFont -cronyx-helvetica-bold-r-*-*-10-*-*-*-*-*-*-*<br />
*MiniButtonsFont -cronyx-helvetica-bold-r-*-*-10-*-*-*-*-*-*-*<br />
*FvwmIdentFont -cronyx-helvetica-medium-r-*-*-12-*-*-*-*-*-*-*<br />
*FvwmWinListFont -cronyx-helvetica-bold-r-*-*-10-*-*-*-*-*-*-*<br />
*FvwmTaskBarFont -cronyx-helvetica-medium-r-*-*-*-120-*-*-*-*-*-*<br />
*FvwmTaskBarSelFont -cronyx-helvetica-bold-r-*-*-*-120-*-*-*-*-*-*<br />
</pre><br />
<br />
=== Приложений на базе GTK+ 1.2 ===<br />
<br />
Все приложения на базе GTK+ версии 1.2 (GIMP, Sylpheed, X-Chat и другие) можно русифицировать, добавив в ''~/.gtkrc'' следующие строчки:<br />
<pre><br />
style "user-font"<br />
{<br />
font = "-cronyx-helvetica-*-r-normal-*-12-*-*-*-*-*-koi8-r"<br />
}<br />
<br />
widget_class "*" style "user-font"<br />
</pre><br />
<br />
=== ksh ===<br />
<br />
Для того, чтобы была возможность вводить кириллицу в ksh, необходимо добавить следующую команду в ~/.profile:<br />
<br />
set +o emacs-usemeta<br />
<br />
=== LaTeX ===<br />
<br />
Для того, чтобы документы могли содержать русские буквы, необходимо подключить пакет русификации и указать кодировку в преамбуле документа. Например:<br />
<pre><br />
\documentclass{article}<br />
\usepackage[koi8-r]{inputenc}<br />
\usepackage[russian]{babel}<br />
\begin{document}<br />
\LaTeX~--- макропакет, позволяющий авторам верстать и печатать их работы<br />
с высоким типографским качеством при помощи заранее определённых,<br />
профессиональных макетов.<br />
\end{document}<br />
</pre><br />
<br />
Для того, чтобы активизировать переносы в русских словах, запустите утилиту texconfig, выберите раздел hyphenation, далее latex и раскомментируйте строку:<br />
<br />
russian ruhyphen.tex<br />
<br />
mg — emacs-like text editor<br />
<br />
Чтобы заставить mg работать с русскими буквами, достаточно создать файл ~/.mg, содержащий строчку:<br />
<br />
meta-key-mode<br />
<br />
=== Readline приложений ===<br />
<br />
Приложения на базе readline (bash, mysql, psql, smbclient и т. д.) могут работать с русскими буквами. Для этого необходимо создать файл ~/.inputrc, содержащий следующие строки:<br />
<pre><br />
set convert-meta off<br />
set input-meta on<br />
set output-meta on<br />
</pre><br />
<br />
=== Samba ===<br />
<br />
Для того, чтобы Windows клиенты видели русские буквы, в файл /etc/samba/smb.conf в секцию [global] необходимо добавить следующие строки:<br />
<br />
Если используется samba 3.x:<br />
<pre><br />
dos charset = cp866<br />
unix charset = koi8-r<br />
</pre><br />
<br />
Если используется samba 2.x:<br />
<pre><br />
client code page = 866<br />
character set = koi8-r<br />
</pre><br />
<br />
Для того, чтобы в smbclient можно было вводить русские буквы, необходимо создать файл ~/.inputrc, как это описано в разделе, посвящённом русификации Readline приложений.<br />
Tab Window Manager<br />
<br />
Для того, чтобы Menu, Title и IconManager в TWM писали по-русски, необходимо изменить следующие строчки в ~/.twmrc (помимо остальной конфигурации TWM). Пример настройки TWM можно посмотреть тут.<br />
<pre><br />
TitleFont "-cronyx-helvetica-medium-r-normal-*-12-*-*-*-*-*-koi8-r"<br />
MenuFont "-cronyx-helvetica-medium-r-normal-*-12-*-*-*-*-*-koi8-r"<br />
IconManagerFont "-cronyx-helvetica-medium-r-normal-*-12-*-*-*-*-*-koi8-r"<br />
</pre><br />
<br />
=== xterm ===<br />
<br />
Начиная с версии OpenBSD 4.2 xterm поставляется из исходного кода xenocara. Для возможности ввода и вставки из буфера кириллицы необходимо при запуске xterm указывать опцию -k8:<br />
<br />
% xterm -k8<br />
<br />
Также можно установить данную настройку по умолчанию, добавив в файл ~/.Xdefaults следующую строчку:<br />
<br />
XTerm*allowC1Printable: true</div>172.16.0.1http://www.qbsd.ru/index.php?title=%D0%A0%D1%83%D1%81%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D1%8F_OpenBSD_5.x&diff=79Русификация OpenBSD 5.x2013-05-26T07:00:07Z<p>172.16.0.1: </p>
<hr />
<div>== Русификация OpenBSD 5.x ==<br />
<br />
Данная статья 100 % копипаст с [http://www.openbsd.ru www.openbsd.ru]<br />
<br />
Начиная с OpenBSD 5.0, конфигурация X сервера слегка изменилась. Также в силу того, что теперь можно с большим удобством пользоваться Unicode локалью, предлагается следующий простой способ русификации: добавить определение LC_CTYPE и вызов setxkbmap(X11) в ~/.xsession (или ~/.xinitrc):<br />
<br />
export LC_CTYPE=en_US.UTF-8<br />
setxkbmap -layout 'us,ru(winkeys)' -option 'grp:caps_toggle,grp_led:scroll'<br />
<br />
Внимание: система предполагает, что конфигурационные файлы ~/.xsession и ~/.xinitrc являются shell-скриптами и последнее действие, совершаемое ими, должно быть запуском оконного менеджера или оконной среды, например: exec /usr/local/bin/fvwm2.<br />
<br />
После включения UTF-8 необходимо сконфигурировать XTerm через ~/.Xdefaults:<br />
<br />
XTerm*locale: utf8<br />
<br />
Проверить отображение UTF-8 символов можно распечаткой тестового файла на терминал.<br />
<br />
ksh по-прежнему необходимо отучать использовать старшие биты 8-битных кодировок как метасимволы:<br />
<br />
set +o emacs-usemeta<br />
<br />
Для VIM достаточно добавления таких опций:<br />
<br />
set encoding=utf-8<br />
set termencoding=utf-8<br />
<br />
Для указания использовать UTF-8 в TeX нужно подключить доп пакеты:<br />
<br />
\usepackage{ucs}<br />
\usepackage[utf8]{inputenc}<br />
<br />
Опции для irssi (подробнее):<br />
<br />
/set term_charset utf-8<br />
/set recode_out_default_charset utf-8<br />
/set recode_autodetect_utf8 ON<br />
/set recode_fallback utf-8<br />
/set recode_transliterate ON<br />
/set recode ON<br />
/save<br />
<br />
Mutt’у можно задать список кодировок:<br />
<br />
set assumed_charset="koi8-r:utf-8"<br />
<br />
Опции для music player daemon:<br />
<br />
mpd.conf<br />
# The encoding that ID3v1 tags should be converted from.<br />
#id3v1_encoding "UTF-8"<br />
<br />
Для конвертирования тегов mp3 файлов в кодировку UTF-8 можно использовать пакет py-mutagen:<br />
<br />
find ~/music/ -iname '*.mp3' -print0 | xargs -0 mid3iconv -e UTF-8 --remove-v1</div>172.16.0.1http://www.qbsd.ru/index.php?title=%D0%9D%D0%BE%D0%B2%D0%BE%D0%B5_IPSec_howto&diff=78Новое IPSec howto2013-05-26T06:59:52Z<p>172.16.0.1: </p>
<hr />
<div>== IPsec и IKE ==<br />
<br />
Данная статья 100 % копипаст с [http://www.openbsd.ru www.openbsd.ru]<br />
<br />
=== ISAKMP/Oakley ===<br />
<br />
Страницы руководств: [http://www.openbsd.org/cgi-bin/man.cgi?query=ipsec.conf ipsec.conf] [http://www.openbsd.org/cgi-bin/man.cgi?query=ipsecctl ipsecctl] [http://www.openbsd.org/cgi-bin/man.cgi?query=isakmpd isakmpd]<br />
<br />
=== IKEv2 ===<br />
<br />
<br />
Поддержка протокола IKEv2, решающего ряд проблем ISAKMP/Oakley, реализована в [http://www.openbsd.org/cgi-bin/man.cgi?query=iked iked ] начиная с OpenBSD 5.1. Конфигурация сервера производится редактированием файла ''/etc/iked.conf''. Например, для того чтобы произвести доступ к частной сети 10.0.0.0/16 по IPsec с использованием PSK аутентификации необходимо сконфигурировать сервер (172.23.61.134) для доступа клиентов (172.23.61.0/24):<br />
<br />
<source lang=c><br />
ikev2 "test" esp from 10.0.0.0/16 to any \<br />
peer 172.23.61.0/24 local 172.23.61.134 \<br />
psk humppa<br />
</source><br />
<br />
и клиент (172.23.61.156):<br />
<source lang=c><br />
ikev2 "test" active esp from any to 10.0.0.0/16 \<br />
peer 172.23.61.134 local 172.23.61.156 \<br />
psk humppa<br />
</source><br />
<br />
Протестировать конфигурацию можно запустив [http://www.openbsd.org/cgi-bin/man.cgi?query=iked iked ] в режиме отладки:<br />
<br />
# iked -dv<br />
<br />
Дополнительную отладочную печать можно получить, указав два или три ключа ''-v''.<br />
<br />
Аутентификация по X.509 сертификатам также поддерживается. Сертификаты могут быть созданы программой [http://www.openbsd.org/cgi-bin/man.cgi?query=ikectl ikectl].</div>172.16.0.1http://www.qbsd.ru/index.php?title=%D0%9D%D0%B0%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D0%B5_OpenBSD_Loadable_Kernel_Modules_(LKM)&diff=77Написание OpenBSD Loadable Kernel Modules (LKM)2013-05-26T06:59:20Z<p>172.16.0.1: </p>
<hr />
<div>== Написание OpenBSD Loadable Kernel Modules (LKM) ==<br />
<br />
Данная статья 100 % копипаст с [http://www.openbsd.ru www.openbsd.ru]<br />
<br />
Является вольным переводом статьи '''OpenBSD Loadable Kernel Modules By Peter Werner''' [mailto: peter_a_werner@yahoo.com peter_a_werner@yahoo.com]<br />
[http://freeworld.thc.org/root/docs/loadable_kernel_modules/openbsd-lkm.html оригинал]<br />
<br />
=== Введение ===<br />
<br />
LKM позволяют динамически добавлять или удалять функциональность рабочей системы. Это также позволяет разработчикам тестировать изменения частей ядра без перезагрузки системы.<br />
<br />
Недостаток LKM — потенциальная дыра в безопасности. Для загрузки модулей [http://www.openbsd.org/cgi-bin/man.cgi?query=securelevel securelevel]ядра должен быть меньше 0. Если требуется загрузить модуль, то необходимо указать это в [http://www.openbsd.org/cgi-bin/man.cgi?query=rc.securelevel rc.securelevel]. Если вы разрабатываете модуль, то необходимо установить ''securelevel = −1'', таким образом можно загружать и выгружать модуль в любое время.<br />
<br />
Взаимодействие с /dev/lkm выполняется через вызовы ioctl(2). В основном используется modload(8), modunload(8) и modstat(8) для загрузки, выгрузки и получения статистики.<br />
<br />
Интерфейс lkm определяет пять типов модулей:<br />
<br />
* System calls<br />
* Virtual File System<br />
* Device Driver<br />
* Execution Interpreter<br />
* Miscellaneous<br />
<br />
'''System calls''' — заменяет системные вызовы. Все системные вызовы могут быть заменены, но стоит обратить внимания на [http://www.openbsd.org/cgi-bin/man.cgi?query=ioctl ioctl], так как он используется для загрузки и выгрузки модуля. После выгрузки модуля замененный системный вызов возвращается на исходный.<br /><br />
'''Virtual File System''' — добавляет виртуальные файловые системы.<br /><br />
'''Device Driver''' — добавляет новые символьные или блочные устройства.<br /><br />
'''Execution Interpreter''' — добавляет код для загрузки и выполнения двоичных файлов, которые не поддерживаются системой, примером могут быть эмуляции выполнения двоичных файлов различных операционных систем.<br /><br />
'''Miscellaneous''' — в этот тип входит все что не описано выше, при этом следует учесть, что при замене системных вызовов, возвращение в исходное состояние должно осуществляться кодом модуля.<br /><br />
<br />
Обычно модуль состоит из трех частей:<br />
<br />
# Обработчик загрузки, выгрузки модуля<br />
# Внешняя точка входа, используемая modload<br />
# Функциональный код модуля<br />
<br />
=== Модуль System Call ===<br />
<br />
Здесь мы добавим новый системный вызов который будет выводить аргументы вызова. Прототип функции:<br />
<br />
<source lang=c><br />
int syscall(int, char *)<br />
</source><br />
<br />
Внутреннее описание lkm структуры выглядит так:<br />
<br />
<source lang=c><br />
struct lkm_syscall {<br />
MODTYPE lkm_type; /* тип модуля, в данном случае LM_SYSCALL */ <br />
int lkm_ver; /* версия lkm интерфейса */<br />
сhar *lkm_name; /* имя модуля */<br />
u_long lkm_offset; /* положение системного вызова в таблице */<br />
struct sysent *lkm_sysent; /* указатель на struct sysent системного вызова */<br />
struct sysent lkm_oldent; /* место для копии содержимого таблицы вызовов до загрузки */<br />
};<br />
</source><br />
<br />
Инициализация происходит используя макрос MOD_SYSCALL:<br />
<source lang=c><br />
MOD_SYSCALL("ourcall", -1, &newcallent); /* устанавливает имя "ourcall", положение в таблице системных вызовов,<br />
* в данном случае -1 т.е. не имеет значение, положение определяется автоматически,<br />
* newcallent - данные системного вызова<br />
*/<br />
</source><br />
Так же должны описать обработчик загрузки/выгрузки модуля. Обработчики устанавливают функции исполняемые при загрузке, выгрузке и получении статистики. Если обработчик не требуется просто указывается функция lkm_nofunc() для данного типа события.<br />
<br />
Внешняя точка входа модуля ourcall использует макрос DISPATCH:<br />
<source lang=c><br />
int<br />
ourcall(lkmtp, cmd, ver)<br />
struct lkm_table *lkmtp;<br />
int cmd;<br />
int ver;<br />
{<br />
DISPATCH(lkmtp, cmd, ver, ourcall_handler, ourcall_handler, lkm_nofunc); <br />
}<br />
</source><br />
где ourcall_handler — функция обработчик, а cmd — вид команды, который может принимать значение:<br />
* LKM_E_LOAD — загрузка<br />
* LKM_E_UNLOAD — выгрузка<br />
* LKM_E_STAT — получение статистики<br />
<br />
Собственно код модуля (ourcall.c):<br />
<source lang=c><br />
#include <sys/param.h><br />
#include <sys/systm.h><br />
#include <sys/ioctl.h><br />
#include <sys/cdefs.h><br />
#include <sys/conf.h><br />
#include <sys/mount.h><br />
#include <sys/exec.h><br />
#include <sys/lkm.h><br />
#include <sys/proc.h><br />
#include <sys/syscallargs.h><br />
<br />
<br />
/* прототип нашего системного вызова */<br />
int newcall (struct proc *, void *, int *); /* Все системные вызовы имеют три аргумента: Указатель на <br />
* struct proc - процесс который вызывает, указатель void на аргументы и <br />
* указатель на возвращаемое значение.<br />
*/<br />
/* аргументы системного вызова */<br />
struct newcall_args{<br />
syscallarg(int) value;<br />
syscallarg(char *) msg;<br />
};<br />
<br />
/* <br />
* Определяем наш системный вызов. Первый аргумент кол-во аргументов, второй - размер аргументов, <br />
* третий флаги - SY_NOLOCK или SY_MPSAFE, и четвертый - собственно функция системного вызова.<br />
*/<br />
<br />
static struct sysent newcallent = {2, sizeof(struct newcall_args), 0, newcall};<br />
<br />
/*<br />
* Инициализируем внутреннюю структуру нашего модуля <br />
*/ <br />
<br />
MOD_SYSCALL("ourcall", -1, &newcallent);<br />
<br />
/*<br />
* Обработчик загрузки/выгрузки модуля<br />
*/<br />
<br />
static int<br />
ourcall_handler(struct lkm_table *lkmtp, int cmd)<br />
{<br />
if (cmd == LKM_E_LOAD) <br />
printf("hi!\n");<br />
else if (cmd == LKM_E_UNLOAD)<br />
printf("bye!\n");<br />
<br />
return(0);<br />
}<br />
<br />
/* <br />
* Внешняя точка входа модуля, используется для загрузки, выгрузки и получения статистики через modload(8),<br />
* modunload(8) и modstat(8). Устанавливаем функцию обработчик ourcall_handler, вызываемую при загрузке и<br />
* выгрузке модуля. <br />
*/<br />
<br />
int<br />
ourcall(struct lkm_table *lkmtp, int cmd, int ver)<br />
{<br />
DISPATCH(lkmtp, cmd, ver, ourcall_handler, ourcall_handler, lkm_nofunc);<br />
}<br />
<br />
/* <br />
* Собственно сам код системного вызова<br />
*/<br />
<br />
int<br />
newcall(struct proc *p, void *v, int *retval)<br />
{<br />
struct newcall_args *uap = v;<br />
printf("newcall called with msg %s and value %d\n", SCARG(uap, msg), SCARG(uap, value));<br />
return(0);<br />
}<br />
</source><br />
<br />
Компиляция и установка:<br />
<source lang=bash><br />
# cc -D_KERNEL -I/sys -c ourcall.c -o syscall.o<br />
# modload -o ourcall.o -eourcall syscall.o<br />
Module loaded as ID 0<br />
<br />
# modtstat<br />
Type Id Off Loadaddr Size Info Rev Module Name<br />
SYSCALL 0 210 d76cd000 0001 d76cd1a0 2 ourcall<br />
<br />
# dmesg | tail -2<br />
hi!<br />
DDB symbols added: 372192 bytes<br />
</source><br />
<br />
Протестировать модуль можно при помощи следующей программы (testourcall.c):<br />
<source lang=c><br />
#include <stdio.h><br />
#include <stdlib.h><br />
<br />
static void usage(void);<br />
<br />
int<br />
main(int argc, char *argv[])<br />
{<br />
int err = 0;<br />
int syscall_num = 0;<br />
<br />
if (argc != 2)<br />
usage();<br />
<br />
if ((syscall_num = atoi(argv[1]))>0)<br />
if (err = syscall(syscall_num, 10, "testourcall"))<br />
errx(err,"syscall");<br />
}<br />
<br />
static void usage(void){<br />
extern char *__progname;<br />
(void)fprintf(stderr, "usage: %s value\n", __progname);<br />
exit(1);<br />
}<br />
</source><br />
<br />
Соберем программу:<br />
<source lang=bash><br />
# make testcall<br />
cc -O2 -pipe -o testourcall testourcall.c<br />
</source><br />
<br />
Запустим и получим результат(210 — значение offset, полученное через modstat(8)):<br />
<source lang=bash><br />
# ./testourcall 210<br />
# dmesg | tail -1<br />
newcall called with msg testourcall and value 10<br />
</source><br />
Чтобы выгрузить модуль:<br />
<source lang=bash><br />
# modunload -n ourcall<br />
</source><br />
Получим результат:<br />
<source lang=bash><br />
# dmesg | tail -1<br />
bye!<br />
</source><br />
<br />
=== Модуль Virtual File System ===<br />
<br />
Добавление виртуальной файловой системы очень простая задача. Необходимо лишь добавить точку входа.<br />
<br />
Структура vfs модуля выглядит так:<br />
<source lang=c><br />
struct lkm_vfs {<br />
MODTYPE lkm_type; /* тип модуля, в данном случае LM_VFS */<br />
int lkm_ver; /* версия lkm интерфейса */<br />
char *lkm_name; /* имя модуля */<br />
u_long lkm_offset; /* положение vfs */<br />
struct vfsconf *lkm_vfsconf; /* указатель на vfs операции */<br />
};<br />
</source><br />
<br />
В этом случае положение (offset) не используется.<br />
<br />
Структура инициализируется через макрос MOD_VFS:<br />
<source lang=c><br />
MOD_VFS("nullfs", -1, &nullfs_vfsconf)<br />
</source><br />
<br />
Первый аргумент это имя модуля, второй положение, в данном случае не имеет значения. Наконец инициализированная структура vfsconf файловой системы.<br />
<br />
Рассмотрим все вышеописанное на примере [http://www.openbsd.ru/cgi-bin/cvsweb/src/lkm/nullfs/lkm nullfs]<br />
<br />
код модуля (null_lkm.c):<br />
<source lang=c><br />
#include <sys/param.h><br />
#include <sys/ioctl.h><br />
#include <sys/systm.h><br />
#include <sys/conf.h><br />
#include <sys/mount.h><br />
#include <sys/exec.h><br />
#include <sys/lkm.h><br />
#include <sys/file.h><br />
#include <sys/errno.h><br />
<br />
extern struct vfsops null_vfsops;<br />
int nullfs_lkmentry(struct lkm_table *, int, int);<br />
<br />
/* Определяем вектор vfs операций */<br />
<br />
#define MOUNT_NULLFS "nullfs"<br />
#define FS_NULLFS 22<br />
<br />
struct vfsconf null_vfsconf = {<br />
&null_vfsops, MOUNT_NULLFS, FS_NULLFS, 0, 0, NULL<br />
};<br />
<br />
/*<br />
* Инициализируем внутреннюю структуру нашего модуля <br />
*/ <br />
MOD_VFS("nullfs", -1, &null_vfsconf)<br />
<br />
/* <br />
* Внешняя точка входа модуля, используется для загрузки, выгрузки и получения статистики через modload(8),<br />
* modunload(8) и modstat(8). Устанавливаем lkm_nofunc, т.к. vfs подсистема сама занимается инициализацией и т.д.<br />
*/<br />
<br />
int<br />
nullfs_lkmentry(struct lkm_table *lkmtp, int cmd, int ver)<br />
{<br />
DISPATCH(lkmtp, cmd, ver, lkm_nofunc, lkm_nofunc, lkm_nofunc);<br />
}<br />
</source><br />
<br />
Компиляция и загрузка:<br />
<source lang=bash><br />
# cd lkm/<br />
# make<br />
# make load<br />
# modstat<br />
Type Id Off Loadaddr Size Info Rev Module Name<br />
VFS 0 -1 d80b7000 0002 d80b85e4 2 nullfs<br />
</source><br />
Утилита монтирования nullfs системы находится bin/mount_nullfs Код модуля доступен через cvs, адрес: [http://www.openbsd.ru/cgi-bin/cvsweb/src/lkm/nullfs http://www.openbsd.ru/cgi-bin/cvsweb/src/lkm/nullfs]<br />
<br />
=== Модуль Device Driver ===<br />
<br />
Модуль драйвера устройств имеет схожий вид модулем системных вызовов. Описывается как:<br />
<source lang=c><br />
struct lkm_dev {<br />
MODTYPE lkm_type; /* тип модуля, в данном случае LM_SYSCALL */<br />
int lkm_ver; /* версия lkm интерфейса */ <br />
char *lkm_name; /* имя модуля */<br />
u_long lkm_offset; /* положение устройства в таблице cdevsw[] или bdevsw[] */<br />
DEVTYPE lkm_devtype; /* тип устройства: блочное или символьное, значения LM_DT_CHAR или LM_DT_BLOCK */<br />
union {<br />
void *anon;<br />
struct bdevsw *bdev; <br />
struct cdevsw *cdev;<br />
} lkm_dev; /* функции устройства */<br />
union<br />
{<br />
struct bdevsw bdev;<br />
struct cdevsw cdev;<br />
} lkm_olddev; /* функции заменяемого устройства, при загрузке */<br />
};<br />
</source><br />
<br />
Инициализация происходит через макрос MOD_DEV:<br />
<br />
<source lang=c><br />
MOD_DEV("ourdev", LM_DT_CHAR, -1, &cdev_ourdev); /* устанавливает имя символьного устройства с параметрами из cdev_ourdev */<br />
</source><br />
<br />
Наше устройство будет поддерживать четыре вида операций: open, close, read и ioctl. Функционально хранит строку и число которое может быть установлено через ioctl, поддерживает чтение строки через read. Внутренне описывается как:<br />
<source lang=c><br />
#define MAXMSGLEN 100<br />
<br />
struct ourdev_io {<br />
int value;<br />
char msg[MAXMSGLEN];<br />
};<br />
</source><br />
При загрузке модуля мы инициализируем value с значением 13 и msg — «hello world!» как строку. Так же определяем два ioctl получения и установления значений. Оба вызова принимают аргумент ourdev_io.<br />
<br />
Код устройства (chardev.c):<br />
<source lang=c><br />
#include <sys/param.h><br />
#include <sys/fcntl.h><br />
#include <sys/systm.h><br />
#include <sys/ioctl.h><br />
#include <sys/exec.h><br />
#include <sys/conf.h><br />
#include <sys/lkm.h><br />
<br />
<br />
/* <br />
* Прототипы поддерживаемых операций - open, close, read and ioctl <br />
*/<br />
<br />
int ourdevopen (dev_t, int, int, struct proc *);<br />
int ourdevclose (dev_t, int, int, struct proc *);<br />
int ourdevread (dev_t, struct uio *, int);<br />
int ourdevioctl (dev_t, u_long, caddr_t, int, struct proc *);<br />
int ourdev_handler (struct lkm_table *, int);<br />
<br />
/* <br />
* Объявляем внутреннюю структуру устройства<br />
*/<br />
<br />
#define MAXMSGLEN 100<br />
<br />
struct ourdev_io {<br />
int value;<br />
char msg[MAXMSGLEN];<br />
};<br />
<br />
static struct ourdev_io dio;<br />
<br />
/* <br />
* Здесь инициализируем вектор операций устройства. <br />
*/<br />
<br />
cdev_decl(ourdev);<br />
static struct cdevsw cdev_ourdev = cdev_ourdev_init(1, ourdev);<br />
<br />
<br />
/* <br />
* Инициализируем lkm интерфейс<br />
*/<br />
<br />
MOD_DEV("ourdev", LM_DT_CHAR, -1, &cdev_ourdev)<br />
<br />
/*<br />
* Действия при открытие<br />
*/<br />
<br />
int<br />
ourdevopen(dev_t dev, int oflags, int devtype, struct proc *p)<br />
{<br />
printf("device opened, hi!\n");<br />
return(0);<br />
}<br />
<br />
/*<br />
* Действия при закрытии<br />
*/<br />
int<br />
ourdevclose(dev_t dev, int oflags, int devtype, struct proc *p)<br />
{<br />
printf("device closed! bye!\n");<br />
return(0);<br />
}<br />
<br />
/*<br />
* Действия при чтении<br />
*/<br />
<br />
int<br />
ourdevread(dev_t dev, struct uio *uio, int ioflag)<br />
{<br />
int resid = MAXMSGLEN;<br />
int error = 0;<br />
do {<br />
if (uio->uio_resid < resid)<br />
resid = uio->uio_resid;<br />
<br />
error = uiomove(dio.msg, resid, uio); <br />
} while (resid > 0 && error == 0);<br />
<br />
return(error);<br />
}<br />
<br />
/*<br />
* Действия на ioctl вызовы <br />
*/<br />
<br />
int<br />
ourdevioctl(dev_t dev, u_long cmd, caddr_t data, int fflag, struct proc *p)<br />
{<br />
struct ourdev_io *d;<br />
int error = 0;<br />
<br />
switch(cmd) {<br />
case ODREAD: /* чтение параметрова */<br />
d = (struct ourdev_io *)data;<br />
d->value = dio.value;<br />
error = copyoutstr(&dio.msg, d->msg, MAXMSGLEN - 1, NULL);<br />
break;<br />
case ODWRITE: /* установка параметров */<br />
if ((fflag & FWRITE) == 0)<br />
return(EPERM);<br />
d = (struct ourdev_io *)data;<br />
dio.value = d->value;<br />
bzero(&dio.msg, MAXMSGLEN);<br />
error = copyinstr(d->msg, &dio.msg, MAXMSGLEN - 1, NULL);<br />
break;<br />
default: <br />
error = ENODEV; /* операция не поддерживается */<br />
break;<br />
}<br />
<br />
return(error);<br />
}<br />
<br />
/*<br />
* внешняя точка входя для загрузки/выгрузки и т.д.<br />
*/<br />
<br />
int<br />
ourdev(struct lkm_table *lkmtp, int cmd, int ver)<br />
{<br />
DISPATCH(lkmtp, cmd, ver, ourdev_handler, lkm_nofunc, lkm_nofunc)<br />
}<br />
<br />
/*<br />
* Обработчик загрузки/выгрузки <br />
*/<br />
<br />
int<br />
ourdev_handler(struct lkm_table *lkmtp, int cmd)<br />
{<br />
struct lkm_dev *args = lkmtp->private.lkm_dev;<br />
<br />
if (cmd == LKM_E_LOAD) {<br />
dio.value = 13;<br />
strncpy(dio.msg,"hello world!\n", MAXMSGLEN - 1);<br />
printf("loading module %s\n", args->lkm_name);<br />
}<br />
<br />
return 0;<br />
}<br />
</source><br />
<br />
== Модуль Execution Interpreter ==<br />
<br />
=== Модуль Miscellaneous ===<br />
<br />
Данный тип модулей используется для категорий которые не прдставлены выше.<br />
<br />
Описывается как:<br />
<br />
<source lang=c><br />
struct lkm_misc {<br />
MODTYPE lkm_type; /* тип модуля, в данном случае LM_MISC */<br />
int lkm_ver; /* версия lkm интерфейса */<br />
char *lkm_name; /* имя модуля */<br />
u_long lkm_offset;<br />
};<br />
</source><br />
Структура инициализируется через макрос MOD_MISC:<br />
<source lang=c><br />
MOD_MISC("ourmodule");<br />
</source><br />
Следует заметить, что при данном типе модулей используется только имя модуля.<br />
<br />
Рассмотрим все вышеописанное на примере [http://www.openbsd.ru/cgi-bin/cvsweb/src/lkm/rucd rucd]<br />
<br />
Код модуля (rucd.c):<br />
<source lang=c><br />
#include <sys/param.h><br />
#include <sys/conf.h><br />
#include <sys/exec.h><br />
#include <sys/systm.h><br />
#include <sys/lkm.h><br />
<br />
/* таблица перекодировки utf в koi8r */<br />
<br />
static u_int16_t utf2koi8r[256] = {<br />
0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,<br />
0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,<br />
0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,<br />
0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,<br />
0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,<br />
0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,<br />
0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,<br />
0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,<br />
0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,<br />
0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,<br />
0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,<br />
0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,<br />
0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,<br />
0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,<br />
0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,<br />
0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,<br />
0x2500, 0x2502, 0x250c, 0x2510, 0x2514, 0x2518, 0x251c, 0x2524,<br />
0x252c, 0x2534, 0x253c, 0x2580, 0x2584, 0x2588, 0x258c, 0x2590,<br />
0x2591, 0x2592, 0x2593, 0x2320, 0x25a0, 0x2219, 0x221a, 0x2248,<br />
0x2264, 0x2265, 0x00a0, 0x2321, 0x00b0, 0x00b2, 0x00b7, 0x00f7,<br />
0x2550, 0x2551, 0x2552, 0x0451, 0x2553, 0x2554, 0x2555, 0x2556,<br />
0x2557, 0x2558, 0x2559, 0x255a, 0x255b, 0x255c, 0x255d, 0x255e,<br />
0x255f, 0x2560, 0x2561, 0x0401, 0x2562, 0x2563, 0x2564, 0x2565,<br />
0x2566, 0x2567, 0x2568, 0x2569, 0x256a, 0x256b, 0x256c, 0x00a9,<br />
0x044e, 0x0430, 0x0431, 0x0446, 0x0434, 0x0435, 0x0444, 0x0433,<br />
0x0445, 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e,<br />
0x043f, 0x044f, 0x0440, 0x0441, 0x0442, 0x0443, 0x0436, 0x0432,<br />
0x044c, 0x044b, 0x0437, 0x0448, 0x044d, 0x0449, 0x0447, 0x044a,<br />
0x042e, 0x0410, 0x0411, 0x0426, 0x0414, 0x0415, 0x0424, 0x0413,<br />
0x0425, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e,<br />
0x041f, 0x042f, 0x0420, 0x0421, 0x0422, 0x0423, 0x0416, 0x0412,<br />
0x042c, 0x042b, 0x0417, 0x0428, 0x042d, 0x0429, 0x0427, 0x042a<br />
};<br />
<br />
<br />
extern u_char (*cd9660_wchar2char)(u_int32_t wchar);<br />
<br />
extern int lkmexists(struct lkm_table *);<br />
<br />
int rucd_lkmentry(struct lkm_table *, int, int);<br />
<br />
/* <br />
* Инициализируем lkm интерфейс<br />
*/<br />
<br />
MOD_MISC("rucd")<br />
<br />
/* Функция перекодирования с utf в koi8r */<br />
<br />
static u_char<br />
conv_utf2koi8r(u_int32_t wchar)<br />
{<br />
u_char schar;<br />
int i;<br />
<br />
schar = '?';<br />
for (i = 0; i < 256; i++) {<br />
if (utf2koi8r[i] == wchar) {<br />
schar = i;<br />
break;<br />
}<br />
}<br />
return (schar);<br />
}<br />
<br />
/*<br />
* внешняя точка входя для загрузки/выгрузки и т.д.<br />
*/<br />
<br />
static int<br />
rucd_handle(struct lkm_table *lkmtp, int cmd)<br />
{<br />
switch (cmd) {<br />
case LKM_E_LOAD:<br />
if (lkmexists(lkmtp))<br />
return (EEXIST);<br />
cd9660_wchar2char = conv_utf2koi8r;<br />
break;<br />
case LKM_E_UNLOAD:<br />
cd9660_wchar2char = NULL;<br />
break;<br />
default:<br />
return (EINVAL);<br />
}<br />
return (0);<br />
}<br />
/*<br />
* Обработчик загрузки/выгрузки <br />
*/<br />
<br />
int<br />
rucd_lkmentry(struct lkm_table *lkmtp, int cmd, int ver)<br />
{<br />
DISPATCH(lkmtp, cmd, ver, rucd_handle, rucd_handle, lkm_nofunc);<br />
}<br />
</source></div>172.16.0.1http://www.qbsd.ru/index.php?title=%D0%98%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D1%84%D0%B0%D0%B9%D0%BB%D0%B0_mk.conf&diff=76Использование файла mk.conf2013-05-26T06:55:31Z<p>172.16.0.1: </p>
<hr />
<div>== Использование файла mk.conf ==<br />
<br />
Данная статья 100 % копипаст с [http://www.openbsd.ru www.openbsd.ru]<br />
<br />
=== Зачем это нужно? ===<br />
<br />
Многие администраторы OpenBSD предпочитают собирать систему самостоятельно, из исходных текстов, а также собирать и устанавливать packages из дерева портов. При этом часто используется файл /etc/mk.conf, позволяющий указать, какие именно возможности требуются от системы. Наиболее часто этот файл используется, чтобы отключить Kerberos и тому подобные возможности, которые нужны довольно редко. Но это далеко не единственная область, где возможно применение файла mk.conf.<br />
<br />
Часто нам хочется включить в систему некоторые возможности, которые не включены в системных компонентах, но поддерживаются этими компонентами (например SMTP Authentication в sendmail). Однако ставить для этого данные компоненты «вручную» из исходных кодов неудобно:<br />
<br />
То, что идёт с системой, лучше проверено именно с OpenBSD. После каждой пересборки системы нужно следить, чтобы установленное «вручную» ПО продолжало работать в новой системе.<br />
<br />
Очень часто мы бываем недовольны некоторыми особенностями программ, устанавливаемых из портов, или просто хотим немного подправить устанавливаемую программу под свои конкретные цели… Словом, иногда возникает ситуация, когда есть потребность сделать что-то, ради чего не стоит беспокоить народ из ports@openbsd.org :)<br />
<br />
И здесь нам снова поможет mk.conf.<br />
<br />
=== Примеры использования mk.conf ===<br />
<br />
Рассмотрим некоторые варианты использования mk.conf на примере набора для облегчения жизни site.tar.gz Данный набор состоит собственно из файла mk.conf и набора патчей, используемых им в своих целях. Данный набор можно установить в свою систему и дополнять по мере надобности. Для установки достаточно скачать файл site.tar.gz и выполнить следующие команды:<br />
<source lang=bash><br />
# cd /etc<br />
# tar xfz <путь-до-файла>/site.tar.gz<br />
# ln -sf site/mk.conf .<br />
</source><br />
После установки данного набора остается только отредактировать файл mk.conf и настроить его под свои нужды (рассматриваемые в данной статье настройки могут отличаться от настроек в текущей версии site.tar.gz):<br />
<source lang=c><br />
# Настройки собираемой системы.<br />
#<br />
SKEY?= Yes # Включать поддержку S/Key<br />
KERBEROS5?= Yes # Включать поддержку Kerberos V<br />
YP?= Yes # Включать поддержку NIS<br />
TCP_WRAPPERS?= Yes # Включать поддержку libwrap и tcpd<br />
AFS?= Yes # Включать поддержку AFS<br />
Данные настройки определяют, какие стандартные компоненты должны быть включены в собираемую из исходных текстов систему.<br />
NOPROFILE?= No # Не собирать profiled библиотеки<br />
Данные настройки определяют, нужно ли собирать profiled библиотеки.<br />
CRUNCH?= No # Собирать crunchgen и crunchide<br />
</source><br />
Данная настройка определяет, нужно ли собирать crunchgen и crunchide, необходимые для сборки дистрибутива OpenBSD.<br />
<source lang=c><br />
# Настройки suexec для хостинга<br />
#<br />
PATCH_SUEXEC?= Yes # Научить suexec понимать login.conf<br />
SUEXEC_DOCROOT?= /home/www # Корневой каталог серверов<br />
SETUID_SUEXEC?= Yes # Устанавливать как setuid<br />
</source><br />
Данные настройки определяют, требуется ли поддержка login классов в suexec, корневой каталог для документов с точки зрения suexec и следует ли его устанавливать как setuid программу (необходимо, если планируется использование suexec).<br />
<source lang=c><br />
SENDMAIL_SASL?= No # Включить поддержку SASL2<br />
#SENDMAIL_LIBMILTER?= No # Включить поддержку libmilter<br />
#INSTALL_LIBMILTER?= No # Устанавливать libmilter<br />
</source><br />
Данные настройки определяют, следует ли собирать sendmail с поддержкой SASL2 для использования возможности авторизации SMTP (в системе должен быть установлен порт secuity/cyrus-sasl2, а также следует ли включить поддержку Milter API и устанавливать библиотеку libmilter (обычно требуется для почтовых антивирусных программ и некоторых спам-фильтров). Начиная с OpenBSD 3.6, последние две настройки не нужны, так как libmilter всегда собирается и устанавливается.<br />
<source lang=c><br />
# Разрешение авторизации в ppp по PostgreSQL базе<br />
#<br />
# Авторизация по PostgreSQL включается в ppp.conf командой<br />
# set postgres ["conninfo"].<br />
#<br />
# В базе должна присутствовать таблица как минимум со следующими полями:<br />
#<br />
# CREATE TABLE ppp (<br />
# authname VARCHAR(32) NOT NULL UNIQUE,<br />
# authkey TEXT,<br />
# hisaddr TEXT,<br />
# label TEXT,<br />
# enabled BOOLEAN NOT NULL DEFAULT TRUE<br />
# );<br />
#<br />
# Типы TEXT/VARCHAR взаимозаменяемы.<br />
#<br />
PPP_PGSQL?= No # Разрешить авторизацию по PostgreSQL<br />
Данная настройка определяет, следует ли включать в ppp поддержку авторизации по PostgreSQL базе данных.<br />
# Разное<br />
#<br />
PATCH_MOUNT?= Yes # Патчить mount с целью слегка<br />
# # укоротить кое-какие надписи<br />
PATCH_MODLOAD?= Yes # Заставляет работать modload так,<br />
# # как он и должен работать :)<br />
PATCH_LOCALE?= Yes # Подпатчить libc на предмет LC_CTYPE,<br />
# # дабы подружить ru XKB и X программы<br />
</source><br />
Данные настройки определяют, следует ли патчить mount (на предмет укорачивания некоторых сообщений), modload (на предмет спасения системы от краха, если был загружен кернел не из /bsd) и libc (на предмет locale, чтобы подружить XKB и старые X программы).<br />
<source lang=c><br />
# Качать distfiles для портов сначала отсюда<br />
#<br />
MASTER_SITE_OVERRIDE?= ftp://pdp-11.org.ru/pub/OpenBSD/distfiles/${DIST_SUBDIR}/<br />
Данная настройка позволяет указать сервера, которые должны просматриваться в первую очередь в поисках distfiles для портов.<br />
PIPE?= -pipe # Использовать pipes вместо /tmp при<br />
# # компиляции<br />
Данная настройка заставляет gcc использовать unix pipes вместо временных файлов в /tmp.<br />
SUDO?= /usr/bin/sudo # sudo (для make build)<br />
Устанавливает переменную SUDO, которая используется при сборке от лица простого пользователя, входящего в группу wsrc.<br />
SITEDIR?= /etc/site # Где все это лежит<br />
BSDSRCDIR?= /usr/src # Где находится src<br />
BSDOBJDIR?= /usr/obj # Где находится obj<br />
PORTSDIR?= /usr/ports # Где находится ports<br />
</source><br />
Данный настройки указывают расположение исходных текстов системы, дерева портов и других каталогов, используемых при сборке.<br />
<source lang=c><br />
# Научка GQmpeg конвертировать windows-1251 заголовки в koi8-r<br />
#<br />
.if ${.CURDIR} == ${PORTSDIR}/audio/gqmpeg<br />
CONFIGURE_ARGS+= --enable-russian<br />
.endif<br />
</source><br />
Данный фрагмент включает автоматическую перекодировку заголовков MP3 файлов windows-1251 в koi8-r в программе GQMpeg, собираемой из порта audio/gqmpeg.<br />
<source lang=c><br />
# Установка IRC сервера по умолчанию для BitchX и IrcII на irc.pdp-11.org.ru<br />
#<br />
.if ${.CURDIR} == ${PORTSDIR}/net/ircII || ${.CURDIR} == ${PORTSDIR}/net/bitchx<br />
CONFIGURE_ARGS+= --with-default-server=irc.pdp-11.org.ru<br />
.endif<br />
</source><br />
Данный фрагмент устанавливает IRC сервер по умолчанию для ircII и BitchX, собираемых из портов net/ircII и net/bitchx соответственно.<br />
<source lang=c><br />
# Научка ipfm запускать несколько копий и создавать pidfile в виде<br />
# /var/run/ipfm-.pid<br />
#<br />
.if ${.CURDIR} == ${PORTSDIR}/net/ipfm<br />
post-patch:<br />
@${PATCH} ${PATCH_ARGS} < ${SITEDIR}/patches/ipfm.patch<br />
.endif<br />
</source><br />
Данный фрагмент исправляет порт net/ipfm, добавляя в него поддержку одновременной работы с несколькими сетевыми интерфейсами. При этом PID файл будет создаваться в виде /var/run/ipfm-<интерфейс>.pid<br />
<source lang=c><br />
# Отучка courier-imap писать IPv4->IPv6 mapped адреса в логе (и от IPv6 :)<br />
#<br />
.if ${.CURDIR} == ${PORTSDIR}/mail/courier-imap<br />
CONFIGURE_ARGS+= --without-ipv6<br />
.endif<br />
</source><br />
Данный фрагмент убирает из логов все, что похоже на IPv6 для порта mail/courier-imap.<br />
<source lang=c><br />
# Улучшение SPAM-protect feature в hypermail<br />
#<br />
.if ${.CURDIR} == ${PORTSDIR}/mail/hypermail<br />
post-patch:<br />
@${ECHO_MSG} "===> Applying SPAM-protect patch"<br />
@cd ${WRKSRC} && ${PATCH} -sp0 < ${SITEDIR}/patches/hypermail.patch<br />
.endif<br />
</source><br />
Данный фрагмент улучшает spamprotect feature для порта mail.hypermail. При этом вместо почтовых адресов в HTML документах будут фигурировать только имена пользователей без указания почтовых доменов.<br />
<source lang=c><br />
# Грязный хак для sylpheed, чтобы subject не поганил<br />
# (не нужен, если выше включена опция PATCH_LOCALE).<br />
#<br />
#.if ${.CURDIR} == ${PORTSDIR}/mail/sylpheed<br />
#post-patch:<br />
# @${ECHO_MSG} "===> Applying ugly charset hack"<br />
# @cd ${WRKSRC} && ${PATCH} -sp0 < \<br />
# ${SITEDIR}/patches/sylpheed-charset.patch<br />
#.endif<br />
</source><br />
Данный фрагмент с помощью грубой физической силы заставляет порт mail/sylpheed писать поле Subject по-русски. Криво, но на безлокальи сойдет. :) Данный хак не нужен, если используется настройка PATCH_LOCALE.<br />
<source lang=c><br />
# Включение поддержки SSL в postgresql. Начиная с OpenBSD 3.6, поддержка<br />
# уже включена в порте.<br />
#<br />
#.if ${.CURDIR} == ${PORTSDIR}/databases/postgresql<br />
#CONFIGURE_ARGS+= --with-openssl=/usr<br />
#.endif<br />
</source><br />
Данный фрагмент свключает поддержку SSL для порта databases/postgresql. Начиная с OpenBSD 3.6, поддержка SSL включена в порте сразу.<br />
<source lang=c><br />
# Запись IP адреса PPTP клиента в env PPTP_CLIENT для poptop.<br />
#<br />
.if ${.CURDIR} == ${PORTSDIR}/net/poptop<br />
post-patch:<br />
@${ECHO_MSG} "===> Applying PPTP_CLIENT env patch"<br />
@cd ${WRKSRC} && ${PATCH} -sp0 < ${SITEDIR}/patches/poptop.patch<br />
.endif<br />
</source><br />
Данный фрагмент заставляет порт net/poptop записывать адрес клиента в переменную PPTP_CLIENT. Данную переменную можно затем использовать в скриптах /etc/ppp/ppp.linkup и /etc/ppp/ppp.linkdown.<br />
<source lang=c><br />
.if ${.CURDIR} == ${BSDSRCDIR}/usr.sbin/httpd && defined(PATCH_SUEXEC) \<br />
&& ${PATCH_SUEXEC:U} == YES && ${.CURDIR} != ${.OBJDIR}<br />
prereq: ${.OBJDIR}/config.status<br />
@echo "Patching suexec..."<br />
@sh ${SITEDIR}/patches/suexec.sh ${SUEXEC_DOCROOT}<br />
.endif<br />
<br />
.if ${.CURDIR} == ${BSDSRCDIR}/usr.sbin && defined(SETUID_SUEXEC) && \<br />
${SETUID_SUEXEC:U} == YES<br />
afterinstall:<br />
@chmod u+s ${DESTDIR}/usr/sbin/suexec<br />
.endif<br />
</source><br />
Данный фрагмент занимается разборками с suexec на тему вышеописанных настроек.<br />
<source lang=c><br />
.if ${.CURDIR} == ${BSDSRCDIR}/gnu/usr.sbin/sendmail/sendmail && \<br />
exists(/usr/local/include/sasl/sasl.h) && \<br />
defined(SENDMAIL_SASL) && ${SENDMAIL_SASL:U} == YES<br />
ENVDEF+= -DSASL -I/usr/local/include/sasl<br />
LDADD+= -L/usr/local/lib -lsasl2<br />
.endif<br />
<br />
# Начиная с OpenBSD 3.6, libmilter автоматически собирается и<br />
# устанавливается.<br />
#.if ${.CURDIR} == ${BSDSRCDIR}/gnu/usr.sbin/sendmail && \<br />
# defined(SENDMAIL_LIBMILTER) && ${SENDMAIL_LIBMILTER:U} == YES<br />
#WANT_LIBMILTER= 1<br />
#.if !make(install)<br />
#SUBDIR:= libmilter ${SUBDIR}<br />
#.elif defined(INSTALL_LIBMILTER) && ${INSTALL_LIBMILTER:U} == YES<br />
#SUBDIR:= libsm libmilter ${SUBDIR} <br />
#<br />
#afterinstall:<br />
# install -o ${BINOWN} -g ${BINGRP} -m ${DIRMODE} -d \<br />
# ${DESTDIR}/usr/include/libmilter<br />
# install -o ${BINOWN} -g ${BINGRP} -m ${NONBINMODE} \<br />
# ${.CURDIR}/include/libmilter/*.h ${DESTDIR}/usr/include/libmilter<br />
#.endif<br />
#.endif<br />
#<br />
#.if (${.CURDIR} == ${BSDSRCDIR}/gnu/usr.sbin/sendmail/libmilter || \<br />
# ${.CURDIR} == ${BSDSRCDIR}/gnu/usr.sbin/sendmail/sendmail) && \<br />
# defined(SENDMAIL_LIBMILTER) && ${SENDMAIL_LIBMILTER:U} == YES<br />
#WANT_LIBMILTER= 1<br />
#.endif<br />
</source><br />
Разборки с sendmail на тему вышеописанных настроек.<br />
<source lang=c><br />
# Разборки с ppp<br />
#<br />
.if ${.CURDIR} == ${BSDSRCDIR}/usr.sbin/ppp/ppp && defined(PPP_PGSQL) && \<br />
${PPP_PGSQL:U} == YES && exists(/usr/local/lib/libpq.a) && \<br />
${.CURDIR} != ${.OBJDIR}<br />
CFLAGS+= -DPOSTGRES -I/usr/local/include/postgresql<br />
CFLAGS+= -I${.CURDIR}<br />
CLEANFILES+= auth.c auth.c.orig bundle.h bundle.h.orig<br />
CLEANFILES+= command.c command.c.orig<br />
<br />
DPADD+= /usr/local/lib/libpq.a ${LIBSSL} ${LIBCRYPTO}<br />
LDADD+= /usr/local/lib/libpq.a -lssl -lcrypto<br />
<br />
beforedepend: auth.c.orig bundle.h.orig command.c.orig<br />
<br />
auth.c.orig bundle.h.orig command.c.orig:<br />
.if !defined(SITE_REENTER)<br />
@echo "Applying PostgreSQL authentication patch..." && \<br />
cp ${.CURDIR}/auth.c ${.CURDIR}/bundle.h ${.CURDIR}/command.c \<br />
${.OBJDIR} && \<br />
patch -sp0 < ${SITEDIR}/patches/ppp-pgsql.patch && \<br />
cd ${.CURDIR} && ${MAKE} depend SITE_REENTER=Yes<br />
.endif<br />
.endif<br />
</source><br />
Разборки с PPP на предмет включения поддержки PostgreSQL авторизации.<br />
<source lang=c><br />
# Разборки с mount<br />
#<br />
.if ${.CURDIR} == ${BSDSRCDIR}/sbin/mount && defined(PATCH_MOUNT) && \<br />
${PATCH_MOUNT:U} == YES && ${.CURDIR} != ${.OBJDIR}<br />
CFLAGS+= -I${.CURDIR}<br />
CLEANFILES+= mount.c mount.c.orig<br />
<br />
beforedepend: mount.c.orig<br />
<br />
mount.c.orig:<br />
.if !defined(SITE_REENTER)<br />
@echo "Patching mount..." && \<br />
cp ${.CURDIR}/mount.c ${.OBJDIR} && cd ${.OBJDIR} && \<br />
patch -sp0 < ${SITEDIR}/patches/mount.patch && \<br />
cd ${.CURDIR} && ${MAKE} depend SITE_REENTER=Yes<br />
.endif<br />
.endif<br />
</source><br />
Разборки с mount на предмет укорачивания сообщений.<br />
<source lang=c><br />
# Разборки с modload<br />
#<br />
.if ${.CURDIR} == ${BSDSRCDIR}/sbin/modload && defined(PATCH_MODLOAD) && \<br />
${PATCH_MODLOAD:U} == YES && ${.CURDIR} != ${.OBJDIR}<br />
<br />
CFLAGS+= -I${.CURDIR}<br />
CLEANFILES+= modload.8 modload.8.orig modload.c modload.c.orig<br />
<br />
beforedepend: modload.8.orig modload.c.orig<br />
<br />
modload.8.orig modload.c.orig:<br />
.if !defined(SITE_REENTER)<br />
@echo "Patching modload..." && \<br />
cp ${.CURDIR}/modload.8 ${.CURDIR}/modload.c ${.OBJDIR} && \<br />
cd ${.OBJDIR} && patch -sp0 < ${SITEDIR}/patches/modload.patch && \<br />
cd ${.CURDIR} && ${MAKE} depend SITE_REENTER=Yes<br />
.endif<br />
.endif<br />
</source><br />
Разборки с modload на предмет использования /dev/ksyms вместо /bsd и предотвращения краха при использовании в системе, загруженной не из /bsd.<br />
<source lang=c><br />
# Разборки с локалью<br />
#<br />
.if ${.CURDIR} == ${BSDSRCDIR}/lib/libc && defined(PATCH_LOCALE) && \<br />
${PATCH_LOCALE:U} == YES && ${.CURDIR} != ${.OBJDIR}<br />
CLEANFILES+= setlocale.c setlocale.c.orig<br />
<br />
beforedepend: setlocale.c.orig<br />
<br />
setlocale.c.orig:<br />
.if !defined(SITE_REENTER)<br />
@echo "Patching locale..." && \<br />
cp ${.CURDIR}/locale/setlocale.c ${.OBJDIR} && cd ${.OBJDIR} && \<br />
patch -sp0 < ${SITEDIR}/patches/locale-hack.patch && \<br />
cd ${.CURDIR} && ${MAKE} depend SITE_REENTER=Yes<br />
.endif<br />
.endif<br />
</source><br />
Разборки с локалью с целью подружить XKB и старые X программы, не умеющие им пользоваться.<br />
<source lang=c><br />
# Разборки с игрушками<br />
#<br />
.if ${.CURDIR} == ${BSDSRCDIR} && defined(NO_GAMES) && ${NO_GAMES:U} == YES<br />
SKIPDIR+= games<br />
.endif<br />
<br />
# Разборки с библиотеками<br />
#<br />
.if defined(NO_PROFILE) && ${NO_PROFILE:U} == YES && \<br />
${.CURDIR:C/^${BSDSRCDIR}\/lib\///1} != ${.CURDIR}<br />
NOPROFILE=<br />
.endif<br />
<br />
Разборки с играми и profiled библиотеками на предмет надобности их собирать и устанавливать.<br />
<source lang=c><br />
# Разборки с crunch<br />
#<br />
.if ${.CURDIR} == ${BSDSRCDIR} && defined(CRUNCH) && ${CRUNCH:U} == YES && \<br />
!make(obj) && !make(clean) && !make(cleandir)<br />
SUBDIR+= distrib/crunch<br />
.endif<br />
</source><br />
Разборки с crunchgen и crunchide на предмет сборки и установки их.</div>172.16.0.1http://www.qbsd.ru/index.php?title=IPsec_%D0%BC%D0%B5%D0%B6%D0%B4%D1%83_OpenBSD_%D0%B8_Linux_Ubuntu&diff=75IPsec между OpenBSD и Linux Ubuntu2013-05-26T06:54:51Z<p>172.16.0.1: </p>
<hr />
<div>== IPsec между OpenBSD и Linux Ubuntu ==<br />
<br />
Данная статья 100 % копипаст с [http://www.openbsd.ru www.openbsd.ru]<br />
<br />
=== Схема ===<br />
<br />
'''10.2.2.0/24(LAN1) <--> 192.168.1.253(OpenBSD) <--> 192.168.1.62(Ubuntu) <--> 10.1.1.0/24(LAN2)'''<br />
<br />
=== OpenBSD ===<br />
<br />
/etc/ipsec.conf<br />
<br />
<source lang=bash><br />
ike esp from 10.2.2.0/24 to 10.1.1.0/24 local 192.168.1.253 peer 192.168.1.62 \<br />
main auth hmac-sha1 enc 3des-cbc \<br />
quick auth hmac-sha1 enc 3des-cbc \<br />
group modp1024 psk laklaklak<br />
</source><br />
<br />
=== Ubuntu ===<br />
<br />
/etc/ipsec-tools.conf<br />
<br />
<source lang=bash><br />
#!/usr/sbin/setkey -f<br />
<br />
flush;<br />
spdflush;<br />
<br />
spdadd 10.1.1.0/24 10.2.2.0/24 any -P out ipsec<br />
esp/tunnel/192.168.1.62-192.168.1.253/require;<br />
spdadd 10.2.2.0/24 10.1.1.0/24 any -P in ipsec<br />
esp/tunnel/192.168.1.253-192.168.1.62/use;<br />
</source><br />
<br />
/etc/racoon/psk.txt<br />
<br />
<source lang=bash><br />
192.168.1.253 laklaklak<br />
</source><br />
<br />
/etc/racoon/racoon.conf<br />
<br />
<source lang=bash><br />
path pre_shared_key "/etc/racoon/psk.txt";<br />
<br />
remote 192.168.1.253 {<br />
exchange_mode main,aggressive;<br />
proposal {<br />
encryption_algorithm 3des;<br />
hash_algorithm sha1;<br />
authentication_method pre_shared_key;<br />
dh_group modp1024;<br />
}<br />
generate_policy off;<br />
}<br />
<br />
sainfo address 10.1.1.0/24[any] any address 10.2.2.0/24[any] any {<br />
pfs_group modp1024;<br />
encryption_algorithm 3des;<br />
authentication_algorithm hmac_sha1;<br />
compression_algorithm deflate;<br />
}<br />
</source></div>172.16.0.1http://www.qbsd.ru/index.php?title=%D0%92%D0%B2%D0%B5%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5_%D0%B2_OpenBSD&diff=74Введение в OpenBSD2013-05-26T06:54:25Z<p>172.16.0.1: </p>
<hr />
<div>== Введение в OpenBSD ==<br />
<br />
Данная статья 100 % копипаст с [http://www.obsd.ru www.obsd.ru]<br />
<br />
=== Что такое OpenBSD? ===<br />
<br />
Проект OpenBSD работает над свободно распространяемой, многоплатформенной, UNIX-подобной, основанной<br />
на BSD 4.4 операционной системой. Нашими основными целями являются корректность, безопасность,<br />
стандартизация и портируемость. OpenBSD поддерживает эмуляцию на уровне двоичных кодов для<br />
большинства программ из SVR4 (Solaris), FreeBSD, Linux, BSDI, SunOS и HPUX.<br />
Настоящий FAQ описывает вопросы применительно к последнему релизу OpenBSD, версии 4.3.<br />
<br />
=== На каких платформах работает OpenBSD? ===<br />
<br />
OpenBSD 4.3 работает на следующих платформах:<br />
<br />
'''alpha''' — только на FTP<br /><br />
'''amd64''' — Доступно на CD<br /><br />
'''armish''' — только на FTP<br /><br />
'''hp300''' — только на FTP<br /><br />
'''hppa''' — только на FTP<br /><br />
'''i386''' — Доступно на CD<br /><br />
'''landisk''' — только на FTP<br /><br />
'''luna88k''' — только на FTP<br /><br />
'''luna68k''' — только на FTP<br /><br />
'''mac68k''' — только на FTP<br /><br />
'''macppc''' — Доступно на CD<br /><br />
'''mvme68k''' — только на FTP<br /><br />
'''mvme88k''' — только на FTP<br /><br />
'''sgi''' — только на FTP<br /><br />
'''sparc''' — загрузочный CD<br /><br />
'''sparc64''' — загрузочный CD<br /><br />
'''vax''' — только на FTP<br /><br />
'''zaurus''' — только на FTP<br /><br />
Надпись «Доступно на CD» означает, что официальный набор CD включает в себя эту платформу и определенное количество пакетов для данной платформы. Образ установочного диска самой системы доступен для скачивания и для некоторых других платформ.<br />
Больше информации о платформах Вы можете найти на странице платформ.<br />
Иногда нас спрашивают, зачем мы поддерживаем столько «странных» машин. Кратко можно ответить: «потому что мы так хотим». Если есть достаточное число опытных людей (иногда этим числом может быть один-единственный, но очень опытный человек!), которые хотят заниматься поддержкой этой платформы, то она будет поддерживаться. В переносимости OpenBSD есть также и практическая польза: когда выходит новая платформа, дерево исходников практически не содержит ошибок или архитектурных недостатков, препятствующих портированию. В число поддерживаемых OpenBSD платформ входят 32-х и 64-х разрядные процессоры, машины с прямым и обратным порядком байт и самые разные платы. Да, также поддержка «необычных» платформ уже помогала в создании кода лучшего качества для «обычных» платформ.<br />
<br />
=== Действительно ли OpenBSD свободна? ===<br />
<br />
OpenBSD полностью свободна. Свободны бинарники. Свободны исходники. Все части OpenBSD имеют разумную лицензию, разрешающую свободное распространение. Лицензия включает в себя право ИСПОЛЬЗОВАНИЯ большинства частей дерева исходников OpenBSD, как для личных, так и для коммерческих целей. OpenBSD НЕ включает в себя никаких других ограничений, кроме имеющихся в оригинальной лицензии BSD. Программное обеспечение, использующее более строгие условия лицензирования, не может быть включено в стандартный состав OpenBSD. Это необходимое условие защиты свободы использования OpenBSD. К примеру, OpenBSD может свободно использоваться в личных целях, образовательных целях, в правительственных учреждениях, некоммерческими и коммерческими организациями. Можно свободно включать OpenBSD целиком или частично в коммерческие продукты.<br />
Иногда нас спрашивают, не беспокоит ли нас использование нашего свободного кода в коммерческих продуктах. Мы можем ответить, что мы предпочитаем ''широкое использование'' нашего качественного кода, нежели создание производителями коммерческого ПО ужасных несовместимых альтернативных решений для давно решенных проблем. К примеру, очевидно, что широкое использование протокола SSH во многом обусловлено открытостью лицензии, если бы лицензия была более жесткой, использование данного протокола и кода OpenSSH было бы значительно меньше.<br />
Но это не означает, что мы будем возражать против помощи в виде денег или аппаратуры в качестве благодарности. На самом деле, нас поражает, насколько плохо нас поддерживают компании, строящие свои продукты на основе OpenBSD, но никаких требований о компенсациях не предъявляется.<br />
Подробнее другие популярные лицензии рассмотрены в OpenBSD Copyright Policy.<br />
Во многом разработчики OpenBSD поддерживают проект из собственного кармана. Это включает в себя время, проводимое в работе над проектом, оборудование, используемое для поддержки многих портов, подключение к Сети, используемое для распространения OpenBSD, и время, затрачиваемое на ответы на вопросы и изучение отчетов об ошибках, присылаемых пользователями. Разработчики OpenBSD не очень-то богаты и даже небольшая помощь в виде времени, оборудования и других ресурсов дает большой эффект.<br />
<br />
=== Зачем мне может понадобиться OpenBSD? ===<br />
<br />
Часто новички хотят знать, лучше ли OpenBSD других UNIX-подобных операционных систем. На этот вопрос практически невозможно ответить и он является предметом бесконечных (и бесполезных) религиозных войн. Никогда, ни при каких обстоятельствах, не задавайте таких вопросов в почтовых листах OpenBSD.<br />
Ниже приведены некоторые причины, по которым, как мы считаем, OpenBSD является полезной операционной системой. Подходит ли она вам — вопрос на который можете ответить только вы сами.<br />
* OpenBSD работает на многих различных аппаратных платформах.<br />
* Многие профессионалы в области безопасности считают, что OpenBSD самая безопасная UNIX-подобная операционная система, что является результатом непрекрающегося тщательного аудита исходных кодов на предмет уязвимостей.<br />
* OpenBSD — полнофункциональная UNIX-подобная операционная система, бесплатно доступная в исходниках.<br />
* В OpenBSD интегрированы передовые технологии в области безопасности, подходящие для работы в сетевых экранах и развертывания сервисов частных сетей в распределенных средах.<br />
* OpenBSD постоянно улучшается и непрерывно разрабатывается по многим направлениям, предлагая возможность поработать с новыми технологиями в международной команде программистов и пользователей.<br />
* OpenBSD требует минимума настроек и действий по оптимизации. Для большинства пользователей OpenBSD «просто работает» на их аппаратном обеспечении и для их приложений. Оптимизация в большинстве случев не только не требуется, но и не рекомендуется.<br />
<br />
=== Как я могу поддержать OpenBSD? ===<br />
<br />
Мы очень признательны всем людям и организациям, которые внесли свой вклад в развитие проекта OpenBSD. Их имена размещены на странице пожертвований сайта OpenBSD.<br />
OpenBSD постоянно нуждается в различной поддержке со стороны сообщества пользователей. Если вы считаете, что OpenBSD приносит вам пользу, найдите способ поддержать проект. Если ни один из приведенных ниже вариантов вам не удобен, присылайте свои на donations@openbsd.org.<br />
<br />
Приобретение OpenBSD CD. Комплект включает в себя полный релиз текущей версии OpenBSD и является загрузочным для ряда платформ. Продажа дисков приносит деньги, которые уходят на поддержку OpenBSD и разгружает наши сетевые ресурсы, используемые для распространения дистрибутивов через Интернет. В этот недорогой комплект из трех CD также входят исходные коды. Помните, вашим друзьям нужна своя копия!<br />
<br />
Денежные пожертвования. Проект постоянно нуждается в деньгах для оплаты оборудования, подключения к сети, расходов на тиражирование CD. Производство CD требует предоплаты, которая происходит из карманов разработчиков OpenBSD без гарантированной отдачи. Пишите на mailto: donations@openbsd.org для получения более подробной информации о пожертвованиях. Мы очень высоко ценим даже самые маленькие пожертвования.<br />
<br />
Пожертвования в виде оборудования и комплектующих. Проекту постоянно требуется как распространенная, так и специализированная аппаратура. Постоянно нужны IDE и SCSI диски, а также различные виды ОЗУ. Прежде чем пожертвовать другую аппаратуру: полноценные компьютеры или системные платы, узнайте, нужны ли нам они сейчас. Напишите письмо на mailto: donations@openbsd.org перед отправкой комплектующих.<br />
<br />
Пожертвование времени и усилий. Мы всегда рады видеть программистов, которым нравится работать над операционными системами, но есть и масса других задач, в которых вы можете быть полезны. Читайте листы рассылки и отвечайте на вопросы новых пользователей.<br />
<br />
Помощь в поддержке документации, предоставление новых материалов FAQ (присылайте на mailto: faq@openbsd.org). Сформируйте местную группу пользователей и привлекайте друзей в пользователи OpenBSD. Покажите, как можно использовать OpenBSD в вашей работе, начальнику. Вы студент? Посоветуйте вашему профессору использовать OpenBSD как инструмент обучения на курсах информатики и технических дисциплинах. Но стоит также отметить один из главных методов, которым не стоит «помогать» OpenBSD: не тратьте время на участие в «священных войнах» вокруг ОС. Это не только не помогает проекту найти новых пользователей, но даже может серьезно испортить отношения между разработчиками.<br />
<br />
=== Кто разрабатывает OpenBSD? ===<br />
<br />
OpenBSD разрабатывается командой программистов из [разных стран] . Проект координирует Тео да Раадт, из Канады.<br />
<br />
=== Когда будет следующий релиз OpenBSD? ===<br />
<br />
Команда разработчиков OpenBSD выпускает релизы раз в пол-года, даты релизов приходятся на май и ноябрь. Подробнее цикл разработки описан здесь.<br />
<br />
=== Что входит в состав OpenBSD? ===<br />
В состав OpenBSD входят некоторые приложения третьих сторон, такие как:<br />
* X.org 7.3, графическая среда X Window, с локальными патчами. Устанавливается из компонентов x*.tgz из установочного комплекта.<br />
* GCC версий 2.95.3 и 3.3.5. Компилятор GNU C. Группа разработчиков OpenBSD также добавила технологию защиты стека Propolice, включенную по умолчанию и используемую во всем пользовательском окружении OpenBSD, а также, по умолчанию, во всех компилирующихся в OpenBSD приложениях. Устанавливается как часть comp43.tgz.<br />
* Perl 5.8.8 с патчами и дополнениями группы разработчиков OpenBSD.<br />
* Специально подготовленную и безопасную версию веб-сервера Apache 1.3. Разработчики OpenBSD добавили запуск в chroot по умолчанию, понижение привилегий и другие улучшения в области безопасности. Также включена поддержка mod_ssl и DSO.<br />
* OpenSSL 0.9.7j, с патчами и улучшениями от команды разработчиков OpenBSD.<br />
* Текстовый процессор Groff 1.15.<br />
* Почтовый сервер Sendmail 8.14.1, с библиотекой libmilter.<br />
* DNS сервер BIND 9.4.2. Разработчики OpenBSD также значительно улучшили работу в окружении chroot и других моментах, связанных с безопасностью.<br />
* Текстовый браузер Lynx 2.8.5rel.4. С добавленной поддержкой HTTPS и другими патчами от разработчиков OpenBSD<br />
* Sudo v1.6.8p12, позволяющий пользователям запускать отдельные команды с привилегиями root-а.<br />
* Ncurses 5.2 KAME IPv6.<br />
* Heimdal 0.7.2 с патчами Arla 0.35.7<br />
* Binutils 2.15 с патчами OpenSSH 4.8 Binutils 2.15 с патчами gdb 6.3<br />
* OpenNTPD Secure and simple Network Time Protocol implementation.<br />
* OpenBGPD and OpenOSPFD routing applications<br />
Как вы уже заметили, разработчики OpenBSD часто вносят исправления в продукты сторонних разработчиков (как правило) для повышения безопасности или качества кода. В некоторых случаях пользователи не заметят никаких отличий в функционировании, в других случаях, отличия в функционировании ЕСТЬ и они могут быть значимыми для некоторых пользователей. Имейте ввиду эти изменения перед самостоятельным добавлением других версий тех же программ. Может статься так, что вы получите бОльшую цифру в версии, но менее безопасную систему.<br />
Дополнительные приложения, конечно же, могут быть установлены из пакетов или портов OpenBSD.<br />
<br />
=== Что нового в OpenBSD 4.3? ===<br />
<br />
Полный список изменений, внесенных в OpenBSD 4.3 относительно OpenBSD 4.2 можно увидеть здесь, и выделены на информационной странице OpenBSD 4.3. Ниже перечислены некоторые из изменений, которые могут потребовать особого внимания при обновлении или установке OpenBSD 4.3 теми, кто знаком с предыдущими версиями:<br />
* libexpat теперь включен в состав base43.tgz, а не xbase43.tgz (как в 4.2) или в пакеты (4.1 и ранее)<br />
Это должно упростить работу большинству пользователей. Подробнее в 4.3 Upgrade Guide.<br />
* hoststated(8) переименован в relayd(8).<br />
Подробности в 4.3 Upgrade Guide.<br />
* Новаое в поддержке SMP: в OpenBSD/sparc64 и OpenBSD/mvme88k теперь поддерживается многопроцессорность.<br />
* SNMP поддержка: осуществляет snmpd(8).<br />
<br />
=== Могу ли я использовать OpenBSD как настольную систему? ===<br />
Этот вопрос часто задается в такой манере — без пояснения что спрашивающий подразумевает под понятием «настольная система». Единственный человек который может ответить на этот вопрос — это вы, и этот ответ зависит от ваших нужд и ожиданий.<br />
Несмотря на то, что OpenBSD имеет хорошую репутацию как ОС для серверов, она может быть и используется как настольная система. Множество приложений для «настольных систем» доступны из пакетов и портов. Как и при выборе любой операционной системы реальный вопрос таков: может ли ОС выполнять нужную вам работу тем способом, которым вы хотите? Вы должны ответить на этот вопрос сами для себя.<br />
Также стоить отметить тот факт, что большое количество кода OpenBSD написано на ноутбуках.<br />
<br />
=== Почему та или иная программа включена/не включена в систему? ===<br />
Нас часто спрашивают, почему та или иная программа (не) включена в OpenBSD. Ответ основывается на двух моментах: желаниях разработчиков и совместимости с целями проекта. Ничто не будет включено в систему просто потому, что оно «хорошее» — по нашим стандартам программы также должны быть «свободны» для использования, распространения и изменения. Программа также должна быть стабильной и безопасной — бОльшая цифра в версии не всегда означает, что программа лучше.<br />
Зачастую самой большой проблемой становится лицензия: мы хотим, чтобы пользоваться OpenBSD мог любой человек в мире для любых целей.<br />
Еще один важный момент — пожелания разработчиков. Только разработчики OpenBSD могут принять окончательное решение, включать тот или иной продукт в состав проекта. Одного того, что программа «хороша», недостаточно для того, чтобы проект OpenBSD выделил ресурсы на ее поддержку и разработчики совсем необязательно разделяют энтузиазм других людей относительно ее включения в OpenBSD.<br />
Некоторые часто задаваемые вопросы относительно приложений третьих сторон:<br />
* Почему включен Sendmail, его «небезопасность известна»?!<br />
Sendmail был известен за многие пробелы в безопасности, однако авторы и разработчики, поддерживающие Sendmail, никогда не отказывались переделывать свой код для улучшения безопасности (а такая реакция, к сожалению, редка). В последнее время в Sendmail обнаруживается уязвимостей не больше, чем у «более безопасных» альтернатив.<br />
* Почему в систему не включен Postfix?<br />
У него несвободная лицензия и поэтому он даже не рассматривается.<br />
* Почему отсутствуют qmail или djbdns?<br />
Лицензия или ее отсутствие: невозможность распространять модифицированные версии не позволяет<br />
рассматривать эти приложения.<br />
* Зачем включен Apache? Он же не нужен многим пользователям!<br />
Потому что он нужен разработчикам.<br />
* Почему не включена новая версия Apache?<br />
Лицензия новых версий неприемлема.<br />
* Почему не включен bzip2 вместо gzip?<br />
Скорость ужасно низка, а толку не так много. На небыстрых платформах, таких как m68k или VAX его было бы просто невозможно использовать.<br />
* Почему отсутствут графический или curses(3)- инсталлятор?<br />
По целому ряду причин, включая цель сохранения установки загрузочный носитель в пределах одного гибкого диска, то, что один установщик может быть использован на всех платформах во всех конфигурациях, а также тот факт, что после второй или третьей установки OpenBSD большинство пользователей считают установщик OpenBSD быстрым и простым по сравнению с другии ОС. Большинство разработчиков и пользователей в значительной мере предпочитают скорость, легкость и простоту использования нынешней установки, чем более «красочные» или «красивые» инсталляторы других платформ.<br />
В большинстве случаев эти вопросы уже обсуждались до самых мелочей в почтовых рассылках, так что, если вы хотите знать подробности, поищите в архивах.<br />
Конечно, если вы хотите использовать какое-либо из указанного здесь ПО, и лицензия вас устраивает, никто не запретит вам это делать (иначе это было бы не очень свободная система, не так ли?). Однако, ваши потребности могут измениться — вряд ли вам захочется разработать «Приложение-убийцу», которое вы не сможете продавать, распространять или зарабатывать на нем из-за того, что вы включили в его состав несвободное ПО.<br />
<br />
Перевод соответствует $OpenBSD: faq1.html, v 1.102 2008/04/30 21:24:58 nick Exp $</div>172.16.0.1http://www.qbsd.ru/index.php?title=%D0%A0%D0%B5%D0%B7%D0%B5%D1%80%D0%B2%D0%BD%D0%B0%D1%8F_%D0%BA%D0%BE%D0%BF%D0%B8%D1%8F_Wiki&diff=73Резервная копия Wiki2013-05-26T06:52:41Z<p>172.16.0.1: </p>
<hr />
<div>== Резервная копия Wiki ==<br />
<br />
=== Backup SQL базы ===<br />
<br />
$SQLUSER — пользователь SQL имеющий право доступа к базе данных Wiki<br /><br />
$DATABASE — имя базы данных<br />
<br />
/usr/bin/nice -n 19 /usr/local/bin/mysqldump -u $SQLUSER --password=$PASSWORD $DATABASE -c | /usr/bin/nice -n 19 \<br />
/usr/bin/gzip -9 > ~/backup/$DATABASE-wiki-$(date '+%Y%m%d').sql.gz<br />
<br />
=== Backup рабочей директории со скриптами ===<br />
В данном примере /var/www/htdocs/wiki:<br />
<br />
/usr/bin/nice -n 19 /bin/tar -zcpf ~/backup/wiki-$(date '+%Y%m%d').tgz /var/www/htdocs/wiki<br />
<br />
== Ссылки ==<br />
<br />
[http://www.mediawiki.org/wiki/Manual:Backing_up_a_wiki/ru http://www.mediawiki.org/wiki/Manual:Backing_up_a_wiki/ru]</div>172.16.0.1http://www.qbsd.ru/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B7%D0%B0%D0%B3%D1%80%D1%83%D0%B7%D0%BE%D1%87%D0%BD%D0%BE%D0%B9_%D1%84%D0%BB%D0%B5%D1%88%D0%BA%D0%B8&diff=72Создание загрузочной флешки2013-05-26T06:52:19Z<p>172.16.0.1: </p>
<hr />
<div>== Создание загрузочной флешки ==<br />
<br />
Данная статья 100 % копипаст с [http://www.openbsd.ru www.openbsd.ru]<br />
<br />
Пример дан для следующего устройства:<br />
<br />
sd2 at scsibus3 targ 1 lun 0: <SanDisk, SDDR-113, 9412> SCSI0 0/direct removable<br />
sd2: 3886MB, 512 bytes/sec, 7959552 sec total<br />
<br />
Вначале необходимо разметить файловую систему:<br />
<br />
# fdisk -iy sd2<br />
Writing MBR at offset 0.<br />
# disklabel -E sd2<br />
Label editor (enter '?' for help at any prompt)<br />
> a a<br />
offset: [64] <br />
size: [7952111] <br />
FS type: [4.2BSD] <br />
> w<br />
> q<br />
No label changes.<br />
# newfs /dev/rsd2a<br />
/dev/rsd2a: 3882.9MB in 7952096 sectors of 512 bytes<br />
20 cylinder groups of 202.47MB, 12958 blocks, 25984 inodes each<br />
super-block backups (for fsck -b #) at:<br />
32, 414688, 829344, 1244000, 1658656, 2073312, 2487968, 2902624, 3317280,<br />
3731936, 4146592, 4561248, 4975904, 5390560, 5805216, 6219872, 6634528,<br />
7049184, 7463840, 7878496,<br />
<br />
Затем примонтировать файловую систему к имеющейся и установить загрузчик:<br />
<br />
# mount /dev/sd2a /mnt<br />
# cp /usr/mdec/boot /mnt<br />
# /usr/mdec/installboot -v /mnt/boot /usr/mdec/biosboot sd2<br />
boot: /mnt/boot proto: /usr/mdec/biosboot device: /dev/rsd2c<br />
/mnt/boot is 3 blocks x 16384 bytes<br />
fs block shift 2; part offset 64; inode block 24, offset 936<br />
using MBR partition 3: type 0xA6 offset 64<br />
<br />
Далее необходимо записать необходимое содержимое и ядро (предпочтительно ramdisk) и настроить загрузчик на автоматическую загрузку выбранного ядра:<br />
<br />
# cp /bsd.rd /mnt<br />
# mkdir /mnt/etc<br />
# echo "set image /bsd.rd\nset timeout 10" >/mnt/etc/boot.conf<br />
<br />
После чего можно отмонтировать файловую систему и отсоединить устройство:<br />
<br />
# umount /mnt</div>172.16.0.1http://www.qbsd.ru/index.php?title=OpenBSD-Wiki:%D0%9F%D0%BE%D1%80%D1%82%D0%B0%D0%BB_%D1%81%D0%BE%D0%BE%D0%B1%D1%89%D0%B5%D1%81%D1%82%D0%B2%D0%B0&diff=71OpenBSD-Wiki:Портал сообщества2013-05-26T06:51:28Z<p>172.16.0.1: </p>
<hr />
<div>== OPENBSD.PW Wiki ==<br />
<br />
Wiki портал создан чтобы дать дополнительную помощь в освоении мультиплатформенной операционной системы [http://www.openbsd.org OpenBSD]. Несмотря на наличие объёмного [http://www.openbsd.org/index.html официального FAQ] в том числе [http://www.openbsd.org/faq/ru/index.html на русском], проработанных [http://www.openbsd.org/cgi-bin/man.cgi man страниц] и [http://www.openbsd.org/books.html книг] всегда остаётся интересен практический опыт и те «шпаргалки» которые системные администраторы пишут для себя чтобы не искать нужную информацию, а сразу же ею воспользоваться. Именно это является приоритетом OpenBSD-Wiki.<br />
<br />
Сообщество не преследует никакой цели получения прибыли от размещенной здесь информации и не запрещает её дальнейшее копирование / использование дома или на предприятиях. Также не оказывается финансовая помощь авторам, не выплачиваются гонорары. Любой вклад является добровольным. Надо понимать что труды становятся доступны неограниченной аудитории. Это может сказаться, если вы в последствии за ту же информацию планируете получить гонорар.<br />
<br />
Викификация имеющейся информации прежде всего направлена на надёжное систематизированное сохранение. К сожалению, в большинстве случаев не указан кто её автор. Если Вы являетесь автором имеете полное право внести отметку о себе. Вне зависимости работает ресурс с которого была получена информация ссылка на него должна присутствовать в wiki-cтатье.<br />
<br />
Кто желает оказать посильную помощь головному проекту ознакомьтесь с [http://www.openbsd.org/donations.html этой страницей], принимайте участие в процессе разработки, помогайте с актуализацией перевода FAQ на русский, приобретайте [http://www.openbsd.org/orders.html майки / постеры / диски], помогайте составлять Wiki. :)</div>172.16.0.1http://www.qbsd.ru/index.php?title=%D0%9E%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BF%D0%B5%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_sysctl&diff=68Описание переменных sysctl2013-05-26T06:35:30Z<p>172.16.0.1: /* Лимиты средств межпроцессного взаимодействия в стиле UNIX System V */</p>
<hr />
<div><br />
== Описание переменных sysctl ==<br />
<br />
Данная статья 100% копипаст с [http://www.openbsd.ru www.openbsd.ru]<br />
<br />
Значения некоторых параметров ядра, влияющих на работу его подсистем, можно изменять из контекста суперпользователя во время работы системы. Механизмом, реализующим доступ к переменным ядра в OpenBSD, является [http://www.openbsd.org/cgi-bin/man.cgi?query=sysctl&apropos=0&sektion=3&manpath=OpenBSD+Current&arch=i386 sysctl(3)]. Команда непосредственного управления - [http://www.openbsd.org/cgi-bin/man.cgi?query=sysctl&apropos=0&sektion=8&manpath=OpenBSD+Current&arch=i386&format=html sysctl(8)]. Она способна как распечатывать текущие значения параметров, так и выставлять их.<br />
<br />
== Работа с sysctl(8) ==<br />
<br />
Вывод на экран всех доступных переменных с их текущими значениями:<br />
# sysctl -a<br />
<br />
Чтобы узнать значение конкретной переменной:<br />
# sysctl переменная<br />
<br />
Для изменения значения переменной:<br />
# sysctl переменная=значение <br />
<br />
Типы значений переменных sysctl могут быть числовыми и строковыми. Изменять значения требуемых переменных следует в файле ''/etc/sysctl.conf'', чтение которого происходит при загрузке системы.<br />
<br />
== Лимиты на системные ресурсы ==<br />
<br />
*kern.maxfiles<br />
<br />
Переменная kern.maxfiles определяет максимальное число дескрипторов файлов. Каждый открытый файл, сокет или буфер использует дескриптор файла. Нагруженному серверу может понадобиться много тысяч дескрипторов файлов, в зависимости от количества программ, одновременно выполняемых на сервере. Количество дескрипторов, используемых в данный момент, содержится в переменной kern.nfiles.<br />
<br />
*kern.maxvnodes<br />
<br />
Максимальное число vnode, аллоцируемых для дисковых операций. Следует увеличить если kern.numvnodes превышает значение kern.maxvnodes в два раза. Поскольку система использует механизм повторного использования vnode, изменять это значение следует только в том случае, когда система испытывает нехватку ресурса (случается паника ядра и т.п.)<br />
<br />
*kern.maxproc<br />
<br />
Максимально допустимое число одновременно запущенных процессов. Текущее количество запущенных процессов можно узнать через kern.nprocs. <br />
<br />
== Параметры стека TCP/IP и другие сетевые настройки ==<br />
<br />
*kern.maxclusters<br />
<br />
Ограничивает количество доступных системе mbuf кластеров (буферов памяти, используемых сетевой подсистемой ядра). Посмотреть количество сетевых кластеров можно с помощью команды:<br />
<br />
# netstat -m<br />
<br />
Если пиковое значение близко к максимальному, его стоит увеличить.<br />
<br />
*net.inet.ip.ifq.maxlen<br />
<br />
Параметр задает значение максимальной длины очереди пакетов, принятых из устройства и ожидающих обработки IP стеком. Имеет смысл увеличить значение (до ~1000) если значение net.inet.ip.ifq.drops увеличивается.<br />
<br />
*net.inet.ip.forwarding<br />
<br />
Если необходимо выполнять перенаправление IPv4-пакетов между сетевыми интерфейсами, установите значение, равным 1. Применяйте только в том случае, когда система должна выступать в качестве маршрутизатора.<br />
<br />
*net.inet.ip.maxqueue<br />
<br />
Устанавливает размер очереди, используемой для хранения фрагментированных IP пакетов. Количество отброшенных фрагментов отражается параметром "fragment floods" в выводе команды netstat -s -p ip.<br />
<br />
*net.inet.tcp.baddynamic<br />
<br />
Список зарезервированных TCP портов. Порты с этими номерами не будут использованы ядром в качестве портов для исходящих соединений. Это может быть полезно, если используются непривилегированные процессы, прослушивающие определенные порты с номерами выше 1024. Для того, чтобы добавить номер порта в список, необходимо выполнить команду:<br />
<br />
# sysctl net.inet.tcp.baddynamic=+52000<br />
<br />
А чтобы удалить:<br />
<br />
# sysctl net.inet.tcp.baddynamic=-52000 <br />
<br />
== Лимиты средств межпроцессного взаимодействия в стиле UNIX System V ==<br />
<br />
Посмотреть информацию о используемых средствах System V IPC можно с помощью программы ipcs(1).<br />
<br />
*kern.shminfo<br />
<br />
Иерархия переменных, относящихся к разделяемой памяти.<br />
<br />
*: kern.shminfo.shmmax<br />
<br />
Наибольший допустимый размер сегмента разделяемой памяти (в байтах).<br />
<br />
*: kern.shminfo.shmmni<br />
<br />
Максимальное количество сегментов разделяемой памяти для системы.<br />
*: kern.shminfo.shmseg<br />
<br />
Максимальное количество сегментов разделяемой памяти на процесс.<br />
<br />
*: kern.shminfo.shmall<br />
<br />
Общее количество разделяемой памяти, которое может быть использовано (в страницах оперативной памяти). <br />
<br />
Настройки разделяемой памяти стоит изменять только в случае работы с прокси сервером Squid, который использует по одной области разделяемой памяти для каждой cachedir. Значение ''kern.shminfo.shmmni'' должно быть равно или больше значения cachedir, ''kern.shminfo.shmmax'' больше либо равно размеру cachedir и ''kern.shminfo.shmall'' должно быть не меньше ''kern.shminfo.shmmni'', умноженной на ''kern.shminfo.shmmax''.<br />
<br />
*kern.seminfo<br />
<br />
Иерархия переменных, относящихся к семафорам.<br />
*: kern.seminfo.semmni<br />
<br />
Число идентификаторов семафоров в системе. Определяет максимальное число семафоров.<br />
*: kern.seminfo.semmns<br />
<br />
Число семафоров в системе. Каждый серверный процесс требует один семафор.<br />
*: kern.seminfo.semmnu<br />
<br />
Число undo-структур, которые используются для восстановления структур данных семафоров при фатальном завершении процесса.<br /> Выставляется в максимальное число одновременных процессов в статусе runnable в системе.<br />
*: kern.seminfo.semmsl<br />
<br />
Максимальное число семафоров, разрешенное системой в пределах одного набора семафоров.</div>172.16.0.1http://www.qbsd.ru/index.php?title=OpenBSD-Wiki:%D0%A2%D0%B5%D0%BA%D1%83%D1%89%D0%B8%D0%B5_%D1%81%D0%BE%D0%B1%D1%8B%D1%82%D0%B8%D1%8F&diff=67OpenBSD-Wiki:Текущие события2013-05-26T06:15:31Z<p>172.16.0.1: /* Актуальное */</p>
<hr />
<div><br />
== Актуальное ==<br />
Собрано всё, что применимо к текущему релизу.<br />
<br />
*[[Введение в OpenBSD]]<br />
*[[IPsec между OpenBSD и Linux Ubuntu]]<br />
*[[Использование файла mk.conf]]<br />
*[[Написание OpenBSD Loadable Kernel Modules (LKM)]]<br />
*[[Новое IPSec howto]]<br />
*[[Русификация OpenBSD 5.x]]<br />
*[[Русификация OpenBSD]]<br />
*[[Создание загрузочной флешки]]<br />
*[[Перечень Интернет ресурсов о OpenBSD]]<br />
*[[Описание переменных sysctl]]<br />
<br />
== Устаревшее ==<br />
Данная информация сохранена для архивных версий.<br />
<br />
*[[Использование Bluetooth в OpenBSD]]<br />
<br />
== Прочее ==<br />
<br />
*[[Резервная копия Wiki]]</div>172.16.0.1http://www.qbsd.ru/index.php?title=%D0%9E%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BF%D0%B5%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_sysctl&diff=66Описание переменных sysctl2013-05-26T06:15:13Z<p>172.16.0.1: Новая страница: « == Описание переменных sysctl == Данная статья 100% копипаст с [http://www.openbsd.ru www.openbsd.ru] Значения …»</p>
<hr />
<div><br />
== Описание переменных sysctl ==<br />
<br />
Данная статья 100% копипаст с [http://www.openbsd.ru www.openbsd.ru]<br />
<br />
Значения некоторых параметров ядра, влияющих на работу его подсистем, можно изменять из контекста суперпользователя во время работы системы. Механизмом, реализующим доступ к переменным ядра в OpenBSD, является [http://www.openbsd.org/cgi-bin/man.cgi?query=sysctl&apropos=0&sektion=3&manpath=OpenBSD+Current&arch=i386 sysctl(3)]. Команда непосредственного управления - [http://www.openbsd.org/cgi-bin/man.cgi?query=sysctl&apropos=0&sektion=8&manpath=OpenBSD+Current&arch=i386&format=html sysctl(8)]. Она способна как распечатывать текущие значения параметров, так и выставлять их.<br />
<br />
== Работа с sysctl(8) ==<br />
<br />
Вывод на экран всех доступных переменных с их текущими значениями:<br />
# sysctl -a<br />
<br />
Чтобы узнать значение конкретной переменной:<br />
# sysctl переменная<br />
<br />
Для изменения значения переменной:<br />
# sysctl переменная=значение <br />
<br />
Типы значений переменных sysctl могут быть числовыми и строковыми. Изменять значения требуемых переменных следует в файле ''/etc/sysctl.conf'', чтение которого происходит при загрузке системы.<br />
<br />
== Лимиты на системные ресурсы ==<br />
<br />
*kern.maxfiles<br />
<br />
Переменная kern.maxfiles определяет максимальное число дескрипторов файлов. Каждый открытый файл, сокет или буфер использует дескриптор файла. Нагруженному серверу может понадобиться много тысяч дескрипторов файлов, в зависимости от количества программ, одновременно выполняемых на сервере. Количество дескрипторов, используемых в данный момент, содержится в переменной kern.nfiles.<br />
<br />
*kern.maxvnodes<br />
<br />
Максимальное число vnode, аллоцируемых для дисковых операций. Следует увеличить если kern.numvnodes превышает значение kern.maxvnodes в два раза. Поскольку система использует механизм повторного использования vnode, изменять это значение следует только в том случае, когда система испытывает нехватку ресурса (случается паника ядра и т.п.)<br />
<br />
*kern.maxproc<br />
<br />
Максимально допустимое число одновременно запущенных процессов. Текущее количество запущенных процессов можно узнать через kern.nprocs. <br />
<br />
== Параметры стека TCP/IP и другие сетевые настройки ==<br />
<br />
*kern.maxclusters<br />
<br />
Ограничивает количество доступных системе mbuf кластеров (буферов памяти, используемых сетевой подсистемой ядра). Посмотреть количество сетевых кластеров можно с помощью команды:<br />
<br />
# netstat -m<br />
<br />
Если пиковое значение близко к максимальному, его стоит увеличить.<br />
<br />
*net.inet.ip.ifq.maxlen<br />
<br />
Параметр задает значение максимальной длины очереди пакетов, принятых из устройства и ожидающих обработки IP стеком. Имеет смысл увеличить значение (до ~1000) если значение net.inet.ip.ifq.drops увеличивается.<br />
<br />
*net.inet.ip.forwarding<br />
<br />
Если необходимо выполнять перенаправление IPv4-пакетов между сетевыми интерфейсами, установите значение, равным 1. Применяйте только в том случае, когда система должна выступать в качестве маршрутизатора.<br />
<br />
*net.inet.ip.maxqueue<br />
<br />
Устанавливает размер очереди, используемой для хранения фрагментированных IP пакетов. Количество отброшенных фрагментов отражается параметром "fragment floods" в выводе команды netstat -s -p ip.<br />
<br />
*net.inet.tcp.baddynamic<br />
<br />
Список зарезервированных TCP портов. Порты с этими номерами не будут использованы ядром в качестве портов для исходящих соединений. Это может быть полезно, если используются непривилегированные процессы, прослушивающие определенные порты с номерами выше 1024. Для того, чтобы добавить номер порта в список, необходимо выполнить команду:<br />
<br />
# sysctl net.inet.tcp.baddynamic=+52000<br />
<br />
А чтобы удалить:<br />
<br />
# sysctl net.inet.tcp.baddynamic=-52000 <br />
<br />
== Лимиты средств межпроцессного взаимодействия в стиле UNIX System V ==<br />
<br />
Посмотреть информацию о используемых средствах System V IPC можно с помощью программы ipcs(1).<br />
<br />
*kern.shminfo<br />
<br />
Иерархия переменных, относящихся к разделяемой памяти.<br />
<br />
*kern.shminfo.shmmax<br />
<br />
Наибольший допустимый размер сегмента разделяемой памяти (в байтах).<br />
<br />
*kern.shminfo.shmmni<br />
<br />
Максимальное количество сегментов разделяемой памяти для системы.<br />
*kern.shminfo.shmseg<br />
<br />
Максимальное количество сегментов разделяемой памяти на процесс.<br />
<br />
*kern.shminfo.shmall<br />
<br />
Общее количество разделяемой памяти, которое может быть использовано (в страницах оперативной памяти). <br />
<br />
Настройки разделяемой памяти стоит изменять только в случае работы с прокси сервером Squid, который использует по одной области разделяемой памяти для каждой cachedir. Значение ''kern.shminfo.shmmni'' должно быть равно или больше значения cachedir, ''kern.shminfo.shmmax'' больше либо равно размеру cachedir и ''kern.shminfo.shmall'' должно быть не меньше ''kern.shminfo.shmmni'', умноженной на ''kern.shminfo.shmmax''.<br />
<br />
*kern.seminfo<br />
<br />
Иерархия переменных, относящихся к семафорам.<br />
*kern.seminfo.semmni<br />
<br />
Число идентификаторов семафоров в системе. Определяет максимальное число семафоров.<br />
*kern.seminfo.semmns<br />
<br />
Число семафоров в системе. Каждый серверный процесс требует один семафор.<br />
*kern.seminfo.semmnu<br />
<br />
Число undo-структур, которые используются для восстановления структур данных семафоров при фатальном завершении процесса.<br /> Выставляется в максимальное число одновременных процессов в статусе runnable в системе.<br />
*kern.seminfo.semmsl<br />
<br />
Максимальное число семафоров, разрешенное системой в пределах одного набора семафоров.</div>172.16.0.1