Стартовая страница Russian NetBSD team wiki. Сюда подшиваем все свои находки и решения.
Введение
Нижеследущий текст описывает процесс подключения к интернету используя Novatel Wireless HSDPA модем и NetBSD версии 4.99.32 или выше.
Novatel Wireless делает возможным подключиться к 3G провайдеру либо к Интернету.
Модем предоставляет надежную беспроводную связь со средней скоростью 1.8Mbps и легкой инсталяцией устройства в любой мини PCI Express слот.
Фактически это те же самые карточки Dell продаваемые в их лэптопах, которые я использую.
Требования
Вам будет необходима NetBSD версии 4.99.32 или выше, с вкомпилированной поддержкой USB generic serial port
(например данные, поверх сотовых сетей) в ядре.
Выполните следующую команду для проверки поддерживает ли ваше ядро устройство ugensa (не найдено означает что
устройство ugensa не вкомпилировано в ядро):
# ident /netbsd|grep ugensa
И добавьте эти опции в ваше ядро если оно не поддерживает устройство:
ugensa* at uhub? port ?
ucom* at ugensa?
Опции должны быть включены в GENERIC ядре по умолчанию. Причина по которой нам необходима эта версия
NetBSD а не другая заключается в том, что в исходном коде NetBSD версии 4.99.32 есть ID производителя и устройства для этой карты и драйвер поддерживает это экзотическое устройство.
Вы также можете пропатчить исходники NetBSD версии 4.0. и добавить необходимые фрагменты кода сами.
Отредактируйте фай sys/dev/usb/usbdevs.h и добавьте в него определения модема (около линии 914).
#define USB_PRODUCT_DELL_HSDPA 0x8137 /* Dell/Novatel Wireless HSDPA Modem */
Отредактируйте файл sys/dev/usb/usbdevs и добавьте следующее определение (около линии 908).
product DELL HSDPA 0x8137 Dell/Novatel Wireless HSDPA Modem
Данные выше шестнадцатеричные значения определяются командой usbdevs -v:
port 2 addr 3: full speed, self powered, config 1, Novatel Wireless HSDPA Modem(0x8137), Novatel Wireless(0x413c), rev 0.00,
serial Novatel Wireless HSDPA Modem
Здесь вы можете увидеть ID продукта 0x8137 и ID производителя - 0x413c.
Карта определяет себя как Novatel Wireless хотя имеет ID фирмы Dell.
Когда все настроено и карта работает соответствующим вы должны увидеть ее в выводе dmesg | grep -i hsdpa:
ugensa0: Novatel Wireless Novatel Wireless HSDPA Modem, rev 1.10/0.00, addr 3
Реализация
Все что вам будет нужно так это использование утилит ppp идущих в поставку с NetBSD. Перейдите в директорию etc/ppp и создайте файл chatscript со следующими строками:
# строка "abort"
ABORT BUSY ABORT 'NO CARRIER' ABORT VOICE ABORT 'NO DIALTONE' ABORT 'NO DIAL TONE' ABORT 'NO
ANSWER' ABORT DELAYED
# инициализация модема
ATZ
# номер провайдера
OK-AT-OK "ATDT*99***1#"
# соединение с провайдером
CONNECT \d\c
Ваш номер дозвона к провайдеру будет отличаться от приведенного в этом примере. Информацию о номере дозвона можно получить у вашего профайдера.
Далее создадим файл options со следующими сроками:
/dev/ttyU0
921600
noauth
crtscts
debug
persist
defaultroute
usepeerdns
novj
nobsdcomp
user 1122334455
lcp-echo-interval 30
lcp-echo-failure 10
mtu 1500
mru 1500
connect 'chat -v -f /etc/ppp/chatscript'
Опция "user" устанавливается в соответствии с номером вашего телефона.
Соединение
Теперь можно запустить демон ppp:
/usr/sbin/pppd call options
После выполнения этой команды, ваш сетевой интерфейс ppp0 должен быть поднят. Проверьте это утилитой ifconfig.
В файле options включен дебагинг и вы можете увидеть логи pppd в файле /var/log/messages.
Этот простой shell скрипт предназначен для быстрого подключения к провайдеру.
#!/bin/sh
# Script to connect to 3G
# By yazzy[at]yazzy[dot]org
# Date: Dec 10 2007
#
#
# Some variables:
SUDO=${SUDO:-`which sudo`} # Where to find sudo
PPPD=${PPPD:-`which pppd`} # Where to find pppd
showchoices() {
echo ""
echo "Please type in one of the arguments: (c)onnect or (d)isconnect.\n"
}
startpppd() {
echo "Dialing ..."
${SUDO} ${PPPD} call options
if [ $? != 0 ]; then
echo
echo
echo "Connection failed."
echo
else
echo
echo
echo "Connection created."
echo
fi
}
connect() {
# Is ttyUSB0 device there?
if [ -c ${DEV} ]; then
startpppd
else
echo "Modem device not found."
fi
}
disconnect() {
if [ -f /var/run/ppp0.pid ]; then
echo -n Disconnecting ...
${SUDO} kill `cat /var/run/ppp0.pid`
if [ $? != 0 ]; then
echo Something went wrong. The connection is probably still up.
else
echo Done
fi
else
echo Connection already is down 1>&2
fi
}
# Chose an option to start this script with
case $1 in
"") ### Show the message when no arguments are given.
showchoices ;;
[Cc]|[Cc][Oo][Nn][Nn][Ee][Cc][Tt])
connect ;;
[Dd]|[Dd][Ii][Ss][Cc][Oo][Nn][Nn][Ee][Cc][Tt])
disconnect ;;
*) ### Show the message for every other option.
showchoices ;;
esac
Заключительные мысли
Все доступные опции файла options могут быть найдены в ман файле pppd(8).
Вы так же можете использовать kppp для конфигурации соединения, но у меня уже был с ним проблемный опыт.
И помня, что серфинг, используя 3G мобильные сети очень дорог, я не рекомендую скачивать большие файлы не имея анлима...
Я также обнаружил несколько HSDPA устройств, которым необходимо как минимум 1.16 версия драйвера ugensa из-за несоответствий ID производителей и ID устройств.
Автор YazzY
Оригинал "http://www.ezunix.org/index.php?title=HSDPA-UMTS-EDGE-GPRS"
Перевод rmx
Введение
Adobe не предоставляет родного NetBSD флэш проигрывателя, но к счастью возможно использовать Flash с родным браузером Firefox 3 в NetBSD.
Программное обеспечение
NetBSD 4.99.70
Firefox3-3.0.1
libflashsupport-1.0.2098nb1
ns-flash-9.0.124
nspluginwrapper-1.0.0
Установка
Устанавливаем Firefox 3 из pkgsrc:
# cd /usr/pkgsrc/www/firefox3
# make install clean
Далее устанавливаем ns-flash-9.0.124:
# cd /usr/pkgsrc/multimedia/ns-flash
# make install clean
Конфигурируем nspluginwrapper:
# nspluginwrapper -a
Заметка: Я выполнил команду nspluginwrapper -a как пользователь root и потом вручную скопировал root/.mozilla/plugins/npwrapper.libflashplayer.so в мою директорию ~/.mozilla/plugins и поменял права доступа на это файл.
Определим максимальный размер разделяемой памяти (как пользователь root):
# systctl -w kern.ipc.shmmaxpgs=262144
Добавим переменную kern.ipc.shmmaxpgs=262144 в файл /etc/sysctl.conf что бы это значение сохранялось при последующих загрузках.
И в конце отредактируйте файл /etc/fstab и добавьте следующую строку:
procfs /emul/linux/proc procfs rw,linux 0 0
Тестирование
Теперь запустите Firefox и в строке адресса напишите about: plugins. Shockwave Flash должен запуститься.
Автор YazzY
Оригинал "http://www.ezunix.org/index.php?title=Macromedia_Flash_in_Firefox_3"
Перевод rmx
Предлагаю написать развернутое руководство по настройке и использованию NetBSD на ноутбуке. Необходимо рассмотреть как общие вопросы, так и частные, касающиеся отдельных линеек и моделей, например, Thinkpad, LifeBook и так далее.
Кое какие материалы есть в сети, ссылки на них на страничке .
Пока все. К редактированию приглашаются все желающие.
Автор: Евгений А. Симоненко (EvAn) evan dot bsd at mail dot ru
У Dell есть две основные линейки ноутбуков: Latitude (профессиональные) и Inspiron (домашние). Часть моделей построены на общей платформе независимо от линейки, часть являются оригинальными моделями, разработанными и изготовленными на заказ у других компаний, например, у Samsung'а. Большинство моделей базируются на мобильных платформах Intel.
Данное описание базируется на информации полученной из Сети.
Эта модель имеет типовую конфигурацию для ноутбуков на платформе Centrino первого (Banias) и второго (Dothan) поколений.
Внимание! Конфигурация требует уточнения и может отличаться от указанной ниже.
Автор: Евгений А. Симоненко (EvAn) evan dot bsd at mail dot ru
Большинство как старых так и современных LifeBook построены на процессорах и чипсетах Intel. Хотя встречаются модели и на процессорах AMD и Transmeta и, соответственно, на чипсетах ATI и ALI.
Также большинство LifeBook имеют такие оригинальные устройства как TouchStick (устройство указания аналогичное TrackPoint Thinkpad'а) и Application Panel (дополнительная кнопочная панель). Поддержка первого появилась в ядре Linux 2.6 последних выпусков (кажется с 2.6.16), а для второго существует дополнительный драйвер для ядра Linux и FreeBSD (!): и .
Эта модель имеет типовую конфигурацию для ноутбуков на платформе Centrino первого (Banias) и второго (Dothan) поколений.
mount -t msdos /dev/sd0d /floppy;mount -t msdos /dev/sd1e /mnt;Анализ сообщений ядра также показал, что ядро версии 3.0 распознает, но не конфигурирует шину SMBus, что может повлечь за собой невозможность написания и использования драйвера для кнопочной панели.
Автор: Евгений А. Симоненко (EvAn) evan dot bsd at mail dot ru
В подавляющем большинстве ноутбуков Samsung используются процессоры и чипсеты Intel.
Из оригинального оборудования следует отметить прежде всего кнопочную панель, присутствующую в некоторых моделях. В остальном ноутбуки Samsung - типичные ноутбуки с мобильными процессорами Intel.
Эта модель имеет типовую конфигурацию для ноутбуков на платформе Pentium M первого (Banias) и второго (Dothan) поколений.
mount -t msdos /dev/sd1e /mnt;Автор: Евгений А. Симоненко (EvAn) evan dot bsd at mail dot ru
Большинство как старых так и современных Toshiba построены на процессорах и чипсетах Intel. Хотя встречаются модели и на процессорах AMD и Transmeta и, соответственно, на чипсетах ATI и ALI.
Данное описание базируется на информации полученной из Сети.
Эта модель имеет типовую конфигурацию для ноутбуков на платформе Intel Pentium II и III.
Эта статья описывает процесс установки NetBSD на flash карту. Я взял много информации касающейся разбиения на разделы
Я нашел ее очень полезной!
Оборудование которое я использовал
Компьютер на котором запускается NetBSD (если возможно - то стабильная версия, я использовал 4.0)
1Gb USB флэшку
Создание flash карты с NetBSD
Очистка карты памяти
Для начала необходимо удалить все существующие на flash карте разделы.
# disklabel -i -I sd0
Все существующие на данный момент разделы могут быть отображены в терминале командой:
partition>P (RETURN)
Каждый раздел может затем быть удален как следущий (раздел a удален в этом примере):
partition>a (RETURN)
Filesystem type [?] [MSDOS]:unused (RETURN)
Start offset ('x' to start after partition 'x') [0c, 0s, 0M]:0 (RETURN)
Partition size ('$' for all remaining) [973.999c, 997375s, 487M]:0 (RETURN)
Когда с удалением каждого раздела покончено выполняйте следущий шаг:
partition>W (RETURN)
Label disk [n]:y (RETURN)
partition>Q (RETURN)
Запись загрузочного кода в Master Boot Record (MBR):
# fdisk -i /dev/rsd0d
Update the bootcode from /usr/mdec/mbr? [n]y (RETURN)
Should we write new partition table? [n]y (RETURN)
Создание слайса для NetBSD:
# fdisk -u /dev/rsd0d
Do you want to change our idea of what BIOS thinks? [n]n (RETURN)
Удаление существующих слайсов.
Для каждого слайса делаем следущее:
Which partition do you want to change?: [none]0 (RETURN)
The data for partition 0 is:
Primary DOS with 32 bit FAT (sysid 11)
start 8, size 997367 (487 MB, Cyls 0-973/127/8)
sysid: [0..255 default: 11]0 (RETURN)
Создаем необходимые BSD слайсы:
Which partition do you want to change?: [none]0 (RETURN)
sysid: [0..255 default: 11]169 (RETURN)
start: [0..125cyl default: 63, 0cyl, 0MB](RETURN)
size: [0..125cyl default: 2015169, 125cyl, 984MB](RETURN)
bootmenu: [](RETURN)
Bootselector disabled.
Which partition do you want to change?: [none](RETURN)
We haven't written the MBR back to disk yet. This is your last chance.
Partition table:
0: NetBSD (sysid 169)
[..]
Bootselector disabled.
Should we write new partition table? [n]y (RETURN)
Выбираем активный NetBSD слайс (слайс номер 0)
# fdisk -a /dev/rsd0d
Do you want to change the active partition? [n]y (RETURN)
Choosing 4 will make no partition active.
active partition: [0..4 default: 4]0 (RETURN)
Are you happy with this choice? [n]y (RETURN)
Should we write new partition table? [n]y (RETURN)
Создадим метку диска с NetBSD разделом "a"
# disklabel -i -I sd0
partition>a (RETURN)
Filesystem type [?] [unused]:4.2BSD (RETURN)
Start offset ('x' to start after partition 'x') [0.0078125c, 8s, 0.00390625M]:(RETURN)
Partition size ('$' for all remaining) [973.991c, 997367s, 486.996M]:$ (RETURN)
partition>W (RETURN)
Label disk [n]?y (RETURN)
Утилита disklabel подскажет вам, что это последняя возможность оставить MBR "в покое":
We haven't written the MBR back to disk yet. This is your last chance.
Should we write new partition table? [n]y (RETURN)
Покончим с этим:
partition>Q (RETURN)
Создадим новую файловую систему в разделе sd0a
# newfs /dev/rsd0a
Сделаем корневой раздел загрузочным
# mount /dev/sd0a /mnt
# cp /usr/mdec/boot /mnt
# installboot -v -o timeout=5 /dev/rsd0a /usr/mdec/bootxx_ffsv1
Сборка ядра
Ядру NetBSD будет нужно знать, где ему найти корневое устройство (sd0). Вам необходимо создать новый config-файл. Закоментируйте в нем следущую строчку:
config netbsd root on ? type ?
И расскоментируйте следущую:
config netbsd root on sd0a type ffs
Заметка: Вам нужно собрать легковесное ядро (Если вы не обладатель доисторического компьютера, то вас это не касается - Прим. пер.).
Далее, вы собираете новое ядро, сжимаете его архиватором и копируете на карту памяти. Полезной информацией касающейся сборки ядра будет эта глава руководства пользователя NetBSD
Установочные наборы
Теперь вам надо разахирвировать установочные наборы. Загрузите их с FTP сервера проекта, скопируйте с ISO образа или соберите их, используя скрипт /usr/src/build.sh
Минимальные наборы которые нам необходимы это base.tgz и etc.tgz
# tar xfzp base.tgz -C /mnt
# tar xfzp etc.tgz -C /mnt
Конфигурация
Отредактируйте /etc/fstab и добавьте строчку о sd0a:
/dev/sd0a / ffs rw 1 1
Отредактируйте /etc/rc.conf и измеите rc_configured с 'NO' на 'YES'
Загрузка с карты памяти
На BIOS-е моего лэптопа я могу выбрать "USB HARD DISK" в настройках очередности загрузки или нажать F9 во время загрузки для отображения меню доступных устройств.
Оригинал "http://wiki.netbsd.se/index.php/How_to_install_NetBSD_from_an_USB_Memory_Stick"
Перевод rmx
Автор: .
Оригинал:.
0. Преамбула.
Нелюбители моих разглагольствований могут спокойно проскипать этот раздел и переходить к пункту 1. :)
Я админю корпоративную сетку из 15 компьютеров под управлением Windows XP (из них 3 - ноутбуки под Home, остальные - Professional). Сеть подключена к интернету посредством шлюза на Slackware 9.1 (iptables, Exim, Squid + SARG + rejik3, локальный dns-сервер, локальный ftp). Также в сети находится терминальный сервер для 1C на Windows 2003 Server. Как вы понимаете, в сети не было Primary Domain Controller (PDC), что превращало её администрирование в тихий ад. Особенно много проблем было с shared-папками, которые сами-собою исчезали, затем снова появлялись, вдруг cтановились недоступными для некоторых пользователей и так далее, и тому подобное... Плюс ко всему, для терминального сервера понадобилась машина, на которую можно было бы скидывать ежедневную "горячую копию" БД. Все это привело к принятию решения о покупке еще одного сервера для доменного контроллера и backup'a для win2003. К сожалению, оборудование выбирал и покупал не я, что привело к некоторым последствиям...
Купленный сервер имел следующие характеристики: P4 3GHz, 1GB RAM, 4IDE 160GB + материнская плата от MSI с on-board LAN (RealTek 8169) на чипсете i915(P/G). С этой-то платой и начались все проблемы. На неё ничего не хотело вставать. Linux 2.6.11.6 пропатченный до 2.6.12 (на тот момент самый свежий) вставал, если в конфигурации PCI в ядре прописать PCI=Direct. И все бы хорошо, но только после этого шина PCI вообще отказывалась работать. Симптоматика следующая: например сетевая карта(как встроенная, так и любая другая) поднималась ifconfig'om, но пакеты через неё не шли. Аналогичная ситуация происходила и с другими устройствами (flash-диск: видим устройство, но примонтировать не можем). Активное googl'енье и раскопки форумов не помогли, а время на установку было ограничено и не позволяло как следует разобраться с этой проблемой. Я попробовал FreeBSD: 4.11 висла при загрузке ядра, 5.3 не видела ide-контроллеров. Ситуация складывалась, скажем так, пренеприятнейшая ;).
В последней надежде, уже отчаившись, я вставил в этот злосчастный сервер дискету g4u (дистрибутив для клонирования дисков, основанный на NetBSD). И... оно загрузилось, обнаружило диски и подняло сеть! Времени было совсем мало и я полез на сайт NetBSD. Приятно удивил размер дистрибутива(170Mb) - траффик-то у нас не резиновый. Рискну...
Я около двух лет серьезно занимаюсь Linux'ом (у меня дома Gentoo) и немного знаком с FreeBSD, но NetBSD увидел в первый раз. :) Все что написано ниже - результат активного наступания на множество граблей. Ни в коем случае не утверждается, что это руководство во всем правильное и _оптимальное_. Это - всего лишь попытка заполнить ту пустоту руководств по NetBSD на русском языке и предназначно для таких как я - чтобы не лишний раз не ошибаться при решении подобной задачи.
Я вам уже надоел, не так ли? Что ж, теперь можно приступать собственно к солюшену:
"Let the game begins!" <Blind Guardian>
1. Я скачал свежую версию NetBSD 2.0.2 отсюда:
. Я не буду описывать процесс установки, он очень хорошо изложен в официальном руководстве к NetBSD (можно найти на , есть перевод от ruNetBSD). Будем считать, что вы уже поставили саму систему. Маленькое замечание: при
установке я все делал по доке (только немного изменил размеры предлагаемых разделов соответсвенно моим подребностям: swap сделал 1Gb, /var - 2Gb, /home - 140GB). Устанавливал я через ftp. Ставил все пакеты, кроме x-вых. Время выбрал - UTC, регион Europe/Moscow.
2. Сразу после установки отредактировал /etc/fstab:
...
/dev/wd0g /home ffs rw,userquota,softdep 1 2
...
Опция usrquota означает включение дисковых квот для пользователей (я
ограничил доступное дисковое пространство для пользоватльских
сетевых дисков и профайлов). softdep - включение Soft-Dependences, что
позволяет ускорить работу с диском. Собственный опыт показал,
что разница по скорости с softdep и без них огромная.
3. Следующим шагом, я изменил /etc/rc.conf следующим образом:
if [ -r /etc/defaults/rc.conf ]; then
. /etc/defaults/rc.conf
fi# If this is not set to YES, the system will drop into single-user mode.
#
rc_configured=YES
sshd=YES
hostname=shaman.my-domain.ru# Network Configuration
#auto_ifconfig=yes
ifconfig_re0="inet 192.168.0.7 netmask 255.255.255.0"
defaultroute=192.168.0.1# Add local overrides below
#
wscons=YES
sshd=YES включает автоматическую загрузку SSH при старте системы, hostname
задает имя хоста, строчки после комментария
'Network Configuration' задают автоматическре поднятие сетевого интерфейса
при загрузке. Сетевые интерфейся можно просмотреть
через `ifconfig -a`. (называются они не как в linux'e eth0 eth1 ..., а
согласно имени карты, для RealTek'a это re0, re1 и.т.д.)
4. После этого я отредактировал файл /etc/hosts:
::1 localhost localhost.
127.0.0.1 localhost localhost.
192.168.0.7 shaman.my-domain.ru shaman
5. Сделав все это, я решил, что для нормальной работы мне все-таки не
хватает некоторых полезных приложений и скачал с
следующие пакеты:
bash-3.0pl16.tgz
jed-0.99.16nb1.tgz (glib2-2.6.3.tgz, libslang-1.4.9nb3.tgz)
links-2.1.0.17.tgz
perl-5.8.6nb3.tgz
setquota-0.1.tgz
Я поставил их с помощью pkg_add *.tgz. При установке позникали Warning'и,
что версия пакета несоовествует версии системы (2.0.0 вместо 2.0.2), но
это никоим образом не повлияло на дальнейшую работу. С помощью chsh
перевел root'a на /usr/pkg/bin/bash, а также добавил в /etc/profile
строчку: export PS1='\u@\h:\w\$', но это кому как нравится...
6. После всего вышеперечисленного я добавил пользователя:
useradd -G users,wheel -m -s /usr/pkg/bin/bash key
wheel - группа, пользователи которой могут становится суперюзерами
(выполнять команду su).
7. Собственно на этом настройка NetBSD закончилась, и начинается настройка
Samb'ы. Необходимо скачать последнюю самбу с официального сайта (на тот момент это была samba 3.14a), распоковать в отдельную папку и собрать следующим образом (из под пользователя):
$./configure --prefix=/usr --with-datadir=/usr/share --with-sys-quotas \
--with-configdir=/etc/samba --with-lockdir=/var/run/samba
$make
$su -c 'make install'
8. Для samb'ы я использую следующий конфиг (поместите его в
/etc/samba/smb.conf и _внимательно_ изучите комментарии, если вы ранее не
сталкивались с samb'ой или не ставили её под BSD-системы):
[global]
# Рабочая группа.
workgroup = WORKGROUP
# Имя сервера
netbios name = SHAMAN
interfaces = re0, lo
bind interfaces only = Yes
passdb backend = tdbsam
pam password change = Yes
passwd chat = *New*Password* %n\n
*Re-enter*new*password*%n\n*Password*changed*
username map = /etc/samba/smbusers
unix password sync = No
log level = 1
syslog = 0
log file = /var/log/samba/%m
max log size = 50
smb ports = 139 445
# У меня в локальном DNS-сервере не прописаны имена для компьютеров
пользователей
name resolve order = hosts wins bcast
time server = Yes
add user script = /usr/sbin/useradd -m '%u'
delete user script = /usr/sbin/userdel -r '%u'
add group script = /usr/sbin/groupadd '%g'
delete group script = /usr/sbin/groupdel '%g'
add user to group script = /usr/sbin/usermod -G '%g' '%u'
# Следующая строчка для автоматичесого добавления машины прекрасно
работает в linux,
# но не работает в *BSD т.к. имя пользователя в команде useradd не должно
# содержать знака '$'. Поэтому вручную добавляем каждую машину с помощью
# команды `useradd -s /bin/false -d /tmp имя_машины`, а затем используя
# vipw добавляем к имени '$'. Криво, но работает.
# add machine script = /usr/sbin/useradd -s /bin/false -d /tmp '%u'
# Тажке можно использовать патч на useradd отсюда:
#
# , но я не стал мучиться с пересборкой, т.к. компьютеров у меня в сети
мало и
# прописывать вручную их нетрудно.
shutdown script = /home/samba/scripts/shutdown.sh
abort shutdown script = /sbin/shutdown -c
# в logon.bat происходит синхронизация часов.
logon script = scripts\logon.bat
logon path = \\%L\profiles\%U
logon drive = X:
logon home = \\%L\%U
domain logons = Yes
preferred master = Yes
wins support = Yes
utmp = Yes
map acl inherit = Yes# IPC необходимо для нормальной работы Windows-домена:
# browse network, browse folder и прочее.
[IPC$]
path = /tmp
hosts allow = 192.168.0.0/24, 127.0.0.1
hosts deny = 0.0.0.0/0# Это - диски X: пользователей.
[homes]
comment = Home Directories
valid users = %S
create mask = 0711
directory mask = 0755
read only = No
browseable = No# здесь лежит logon.bat и другие нужные скрипты.
[netlogon]
comment = Network Logon Service
path = /home/samba/netlogon
guest ok = Yes
locking = No# Это - место для профайлов (C:\Documents And Settings\имя_пользователя)
[profiles]
comment = Profile Share
path = /home/samba/profiles
create mask = 0711
directory mask = 0755
read only = No
profile acls = Yes# Это - общая папка пользователей, куда они могут сваливать все, что хотят.
[common]
comment = Common Share
path = /home/common
read only = No
guest ok = Yes# Это - "грубая эмуляция" обычных shared-папок. Криво, зато в одном месте и
# с ноутбуков (не включенных в домен) доступно.
[shares]
comment = Shares folder
path = /home/shares
create mask = 0777
directory mask = 0777
read only = No
guest ok = Yes
# Для доступа с ноутбуков, создаем пользователя (например) mobile, даем ему квоту
# побольше (edquota -u mobile), задаем пароль (smbpasswd mobile; passwd mobile)
# и даем пользователям login/пароль. Подключаем сетевой диск:
# \\ip_вашего_сервера\shares, вводим логин/пароль, ставим галочку "подключать при
# загрузке"
Вдогонку к этому файлу, необходимо создать еще файл /etc/samba/smbusers,
который содержит следующее:
####
# User mapping file
####
# File Format
# -----------
# Unix_ID = Windows_IDroot = Administrator
####
# End of File
####
Что переопределит пользователя root как windows'кого Administrator.
9. Установим samba-пароль для root'a:
#smbpasswd -a root
New SMB password:
Retype new SMB password:
#
10. Для автоматического запуска samb'ы пр загрузке, надо добавить
следующие строчки в /etc/rc.local:
...
echo "Starting Samba..."
/usr/sbin/smbd -D
/usr/sbin/nmbd -D
...
11. Теперь необходимо создать все директории, которые указаны в smb.conf и
задать для них правильные права ;). Я сделал это с помощью следующего
скрипта (/etc/samba/mkdirs.sh):
#!/bin/sh
#mkdirs.shmkdir -p /home/common
mkdir -p /home/shares
chgrp -R wrkusers /home/common
chgrp -R wrkusers /home/shares
chmod -R 777 /home/common /home/shares
mkdir -p /home/samba
mkdir -p /home/samba/{netlogon/scripts,profiles}
chown -R root.wheel /var/spool/samba
chown -R root.wheel /home/samba
chgrp -R wrkusers /home/samba/profiles
chmod a+rwxt /var/spool/samba
#cd /etc/samba/
#chmod +x mkdirs.sh
#./mkdirs.sh
12. Попробуем запустить samb'y:
#/usr/sbin/smbd -D
#/usr/sbin/nmbd -D
13. С помощью с следующего скрипта (/etc/samba/initgroups.sh) я создал и переопределил unix-группы пользователей как windows-группы пользователей. Здесь также создается отдельная группа пользователей для работы с доменом, т.к. включать пользователей домена в группу users не рекомендуется.
#!/bin/sh
# initgroups.sh# По многочисленным советам разных doc, рекомедуется
# все же создавать отдельную группу для всех пользователей
# дмена...
groupadd wrkusersnet groupmap modify ntgroup="Domain Admins" unixgroup=wheel
net groupmap modify ntgroup="Domain Users" unixgroup=users
net groupmap modify ntgroup="Domain Guests" unixgroup=nobodynet groupmap add ntgroup="WRK Users" unixgroup=wrkusers type=d
#cd /etc/samba
#chmod +x initgroups.sh
#./initgroups.sh
Updated mapping entry for Domain Admins
Updated mapping entry for Domain Users
Updated mapping entry for Domain Guests
No rid or sid specified, choosing algorithmic mapping
Successfully added group WRK Users to the mapping db
14. На этом шаге, необходимо перезагрузиться для включения квот, softdeps
и проверки: запустились ли samba и ssh, поднялись ли сетевые интерфейсы.
#reboot
Проверка квот - довольно-таки длительное дело на большом (~140GB как у
меня) разделе. Наберитесь терпения.
15. Для автоматизации добавления пользователя в домен я использую
следующий скрипт (/etc/samba/adduser.sh):
#!/bin/sh
# adduser.sh
# Используйте:
# adduser.sh имя_пользователя# добавим пользователя
useradd -m -G accounts -c "$1" "$1"
# зададим ему unix- и samba- пароли
passwd $1
smbpasswd -a $1
# создадим необходимы директории - для shared-папок и профайлов
mkdir /home/samba/profiles/$1
mkdir /home/shares/$1
chgrp wrkusers /home/shares/$1
chmod u+rw,g+rw,o+rw /home/shares/$1
chown $1.wrkusers /home/samba/profiles/$1
chmod ug+wrx,o+rx,o-w /home/samba/profiles/$1
# задаем квоты для пользователя.
# вместо jed - ваш любимый редактор
export EDITOR=jed
edquota -u $1
#chmod +x /etc/samba/adduser.sh
Теперь, для добавления нового пользователя в домен, достаточно вызвать:
#/etc/samba/adduser.sh имя_пользователя
16. Добавляем машины в домен:
#useradd -s /bin/false -d /tmp имя_машины
А затем, с помощью vipw изменяем их имена, добавляя в конец имени символ '$'.
17. Для синхронизации по времениw windows-машин и сервера, я создаю файл
logon.bat (/home/samba/netlogon/logon.bat):
rem LOGON.BAT
echo off
net time \\shaman /set /yes
С помощью утиллиты todos (её легко найти в интернете, в т.ч., если мне не
изменяет память, на сайте opennet.ru или
здесь: ) преобразую
logon.bat к формату dos:
#todos /home/samba/netlogon/logon.bat
18. Все! Сделаем несложную проверку:
#ps ax | grep mbd
root 349 0.0 0.0 2432 4 ?? IW Fri05PM 0:00.00
/usr/sbin/smbd
root 539 0.0 0.1 2468 1012 ?? Ss Fri05PM 0:00.46
/usr/sbin/smbd
root 574 0.0 0.0 912 4 ?? IW Fri05PM 0:00.00
/usr/sbin/nmbd
#smbclient -L shaman -U%
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.0.14a]Sharename Type Comment
--------- ---- -------
IPC$ IPC IPC Service (Samba 3.0.14a)
netlogon Disk Network Logon Service
profiles Disk Profile Share
common Disk Common Share
shares Disk Shares folder
ADMIN$ IPC IPC Service (Samba 3.0.14a)
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.0.14a]Server Comment
--------- -------
SHAMAN Samba 3.0.14aWorkgroup Master
--------- -------
WORKGROUP SHAMAN#
Если все так, то ура! - PDC на Samba 3.14a и NetBSD 2.0.2 работает!
18. Проблемы и решения.
П: В linux'e есть команда killall. А в NetBSD такой, к сожалению, нет.
Р: Этот простой скрипт заменяет killall -9:
#!/bin/sh
ps -aux | grep $1 | grep -v grep | awk '{print$2}' | xargs kill -9
19. Заключение.
Все оказалось значительно проще чем я ожидал :). Сейчас uptime этого сервера - 121 день. Его скоро от пыли надо чистить, а отключать жалко ;). Это единственный сервер, к которому я подхожу только для того, чтобы добавить нового пользователя.
Все комментарии, баги и предложения - прошу !
Это HOWTO описывает процесс создание и использование swap раздела на NFS серевере. В виду того, что флэш карты имею ограниченный срок службы (в случае флэш карт от фирмы Kingston, срок службы составляет 300 000 циклов записи) создание на них раздела swap не самая лучшая идея. По этому, есть смысл монтировать его через NFS и когда он нам будет не нужен (например после компиляции программ из pkgsrc) мы его всегда сможем отмонтировать.
В файл /etc/rc.conf добавим следущие строки:
rpcbind=YES nfs_server=YES mountd=YES
далее в каталоге пользователя создадим файл swap размером 129MB:
# cd /home/user/
# mkdir jornada
# cd jornada
# dd if=/dev/zero of=/home/user/jornada/swap bs=4k count=32k
Следущим нашим шагом будет создание файла exports в каталоге /etc и добавление в него следущих строк:
# vi /etc/exports /home/user/jornada/swap -maproot=root: 192.168.0.4
где:
192.168.0.4 - адрес хоста Jornada в локальной сети.
Теперь, добавим в файл /etc/hosts следущие строки:
192.168.0.2 server.domain.pl server 192.168.0.4 jornada.domain.pl jornada 192.168.0.2 nfsserver.domain.pl nfsserver
Напоследок осталось присвоить соответствующие права файлу /home/user/jornada/swap:
# chmod 600 /home/user/jornada/swap
Конфигурация Jornada происходит следущим образом. В файл /etc/rc.conf дописываем строку:
nfs_client=YES
И еще в файл /etc/fstab:
nfsserver:/home/user/jornada/swap none swap sw,-T,nfsmntpt=/swap
Создадим каталог /swap:
# mkdir /swap
И это все. Теперь, после рестарта сервера и Jornada, мы должны иметь наш смонтированный swap.
Что бы проверить доступен ли наш swap, выполните следущую команду:
$ swapctl -l
когда swap нам будет не нужен (например после компиляции программ из pkgsrc) выполните команду:
# swapctl -U
Если нам снова нужно смонтировать swap то выполним:
# swapctl -A
Автор: Karol "MaRCHeW" Marchewka
перевод: RMX
Инсталируем ccache.
# pkgfind ccache devel/ccache: Cache for C/C++ compilers # cd /usr/pkgsrc/devel/ccache # make fetch-list | sh # make # make install # make clean # make clean-depends
Инсталируем distcc.
# pkgfind distcc devel/distcc: Tool for distributed C/C++ compiling # cd /usr/pkgsrc/devel/distcc # make fetch-list | sh # make # make install # make clean # make clean-depends
Опционально можем еще инсталировать программу watch.
# pkgfind watch misc/watch: Watch a program with update intervals # cd /usr/pkgsrc/misc/watch # make fetch-list | sh # make # make install # make clean # make clean-depends
Конфигурация.
После инсталяции программ приступим к их конфигурации. Сначала необходимо инсталировать инструментарий, необходимый для корректной компиляции. Для этой цели нам необходимы исходники системы. Переходим в каталог /usr/src и компилируем необходимый нам инструментарий.
# cd /usr/src # ./build.sh -O /usr/obj -T /usr/tools tools
Когда наш инструментарий будет готов, в каталоге /usr/local/bin создаем скрипт distccd.sh, в
который дописываем следущие строки:
#!/bin/sh
export PATH=/usr/tools/i386--netbsdelf/bin/:$PATH export DISTCC_VERBOSE=1 distccd --daemon --listen 192.168.1.1 --allow 192.168.1.0/24
где:
192.168.1.1 - IP адрес, на котором запущен демон distccd.
192.168.1.0/24 - IP адреса машин в сети, котрым разрешенно работать с демоном distccd.
Сделаем скрипт исполняемым:
# chmod 755 distccd.sh
После создания скрипта, к файлу /etc/profile добавляем переменную DISTCC_HOSTS:
DISTCC_HOSTS="localhost 192.168.1.2" export DISTCC_HOSTSгде:
192.168.1.2 - это адрес другой машины в сети на которой также запущен демон distccd.
В случае, когда машин в сети больше и на них также запущены distccd, мы можем добавить их адреса к переменной DISTCC_HOSTS. Пришло время занятся переменной PKGSRC_COMPILER в файле /etc/mk.conf. Редактируем его и
добавляем к нему строчку:
PKGSRC_COMPILER=distcc ccache gcc
После установки значений переменных следует заново залогинится на консоли, что бы активировать
изменения переменной DISTCC_HOSTS.
Компиляция программ из pkgsrc протекает следущим образом (в качетсве примера возьмем mc).
Запустим скрипт distcc.sh на всех доступных машинах:
# /usr/local/bin/distcc.sh
Перейдем в каталог с программой:
# cd /usr/pkgsrc/sysutils/mc
Выполним команду компиляции:
# make -j2 CC=distcc update
где:
-j2 - число доступных процессоров.
Внимание!!! Инсталяция программ, а также их обновление, может быть выполненно только командой make -j2 CC=distcc update
В случае компиляции ядра NetBSD при помощи команды make -j2 CC=distcc update у Вас не должно возникнуть никаких проблем. Исходники же самой системы мне не удалось коректно скомпилировать. Сама компиляция пользовательского окружения при помощи команды make -j CC=distcc build прошла без проблем, однако попытка его инсталяции закончилась с ошибками. Такая же попытка компиляции при помощи скрипта
build.sh с опцией -j2 не принесла желаемого результата.
Проверяем, все ли коректно работает. Если Вы установили программу watch, то выполните следущую команду:
# watch ccache -s
для того, что бы проверить работает ли distcc, а также для уверенности того, что компиляция прошла на машинах, на которую указывает переменная DISTCC_HOSTS, выполните следущую команду:
# watch distccmon-text
Вы не обязаны инсталировать watch. В случае отсутствия программы watch в системе, используйте команды
# ccache -s
а также
# distccmon-text 1
Если Вы хотите узнать, насколько использование ccache и distcc ускоряет процесс компиляции, выполните команду time, например:
# time make -j2 CC=distcc update
В конце этого HowTo хотел бы предупредить читателя. Не все программы компилируемые из pkgsrc корректно собираются в системе. Если программа не собирается, попробуйте скомпилировать ее без использования флага -j2 и переменной CC=distcc.
Управление пакетами в песочнице с помощью...
pkgtools/pkglint: Верификатор для пакетов NetBSD и дерева pkgsrc
pkgtools/pkgdepgraph:Наглядное представление установленных NetBSD пакетов
pkgtools/pkg_tarup: Генерирует бинарные пакеты из установленных.
wip/pkg_rmleaves: Скрипт для удаления 'leaf' пакетов.
mk/bulk/mksandbox: скритп для построения песочницы.
Данный метод обновления пакетов в NetBSD использует песочницу для сборки
всех пакетов, которые надо обновить. Как только вы убедились в том,
что в чрутнутой песочнице все в порядке, вы просто создаете бинарные пакеты,
которые вам нужны и используете их для обновления в настоящей среде.
Давайте посмотрим как это делается.
1) Обновите дерево pkgsrc (/usr/pkgsrc и /usr/pkgsrc/wip).
2) Вы можете удалить ненужные 'leaf' пакеты, для этого спользуйте утилиту
pkg_rmleaves. Пересборка пакетов занимает много времени, поэтому небудем
тратить время на пакеты, которые нам больше не нужны.
3) Теперь вам надо построить песочницу. Сделать это очень просто используя
утилиту /usr/pkgsrc/mk/bulk/mksandbox. Если вы используете xorg вместо
Xfree86, исправьте cтроку "need_xsrc=yes" на "need_xsrc=no".
Затем запустите скрипт чтобы создать песочницу в директории на ваше
усмотрение:
root@YOURbox [root]# cd /usr/pkgsrc/mk/bulk/
root@YOURbox [bulk]# ./mksandbox /usr/sandbox/
Все, песочница готова. Наберите df. Посмотрите как скрипт подмонтировал
все нужные чруту директории в read-only и директории, в котых он будет
работать в read-write:
/bin /bin ro
/sbin /sbin ro
/lib /lib ro
/libexec /libexec ro
/usr/X11R6 /usr/X11R6 ro
/usr/bin /usr/bin ro
/usr/games /usr/games ro
/usr/include /usr/include ro
/usr/lib /usr/lib ro
/usr/libdata /usr/libdata ro
/usr/libexec /usr/libexec ro
/usr/lkm /usr/lkm ro
/usr/share /usr/share ro
/usr/sbin /usr/sbin ro
/var/mail /var/mail ro
/usr/src /usr/src ro
/usr/pkgsrc /usr/pkgsrc rw
/usr/pkgsrc/packages /usr/pkgsrc/packages rw
/usr/pkg_distfiles /usr/pkg_distfiles rw
Заметьте, у меня в системе distfiles сохранены в /usr/pkg_distfiles,
чтобы избежать их переписывания во время обновления деревьев моими
скриптами.
Скрипт, контролирующий все монтирования - /usr/sandbox/sandbox. Он
вызывается только во время первого создания песочницы,
в следующий раз это надо делать руками:
root@YOURbox [root] #/usr/sandbox/sandbox mount
для монтирования директорий
root@YOURbox [root] #/usr/sandbox/sandbix umount
для отмонтирования.
Теперь давайте соберем пару необходимых пакетов для работы в нашей
песочнице:
root@YOURbox [root]# chroot /usr/sandbox /bin/sh
root@SANDbox [/]# cd /usr/pkgsrc/shells/bash && make install
root@SANDbox [bash]# cd /usr/pkgsrc/pkgtools/pkg_tarup &&
make install
Вот и все, теперь выйдите из песочницы по Ctrl+D
root@SANDbox [pkg_tarup]# exit
4) Теперь подготовим песочницу к работе:
root@YOURbox [root] # cd /usr/sandbox/tmp
root@YOURbox [tmp]# lintpkgsrc -i > out_of_date
Эта команда создаст список устаревших пакетов,
root@YOURbox [tmp]# pkgdepgraph -D out_of_date > to_delete
Эта создаст список пакетов, которые надо удалить до обновления,
root@YOURbox [tmp]# pkgdepgraph -R out_of_date > rebuild.sh
Наконец, последняя команда создаст скрипт, который будет использоваться
для сборки пакетов.
5) Настало время чрутиться и приступать к сборке:
root@YOURbox [tmp]# chroot /usr/sandbox/ /usr/pkg/bin/bash
root@SANDbox [/]# cd /tmp
root@SANDbox [tmp]# pkg_delete -r `cat to_delete`
root@SANDbox [tmp]# sh rebuild.sh
Если процесс сборки завершился ошибкой, вы можете посмотреть какой
пакет вызвал аварийную остановку и исправить ситуацию руками. Затем
запустите rebuild.sh заново. Скрипт не станет пересобирать уже
собранные пакеты.
Заметьте, процесс сборки в голом чруте может затянуться, так как может
понадобиться сборка тех пакетов, которые уже установлены в настоящем
окружении, но со временем ваша песочница станет один в один как ваша
система и это перестанет приносить неудобства. Я думаю это разумная
цена за безмятежность, обеспечиваемую тем фактом, что вам ненадо больше
беспокоиться о поломке системы, если во время сборки важных пакетов
произошла ошибка.
6) После того как все закончится вы должны создать бинарные пакеты для
дальнейшего их использования в настоящем окружении. Сделаем это для
каждого пакета, установленного в песочнице:
root@SANDbox [tmp]# pkg_tarup `pkg_info | cut -d ' ' -f 1 -s`
Эта команда создаст все бинарные пакеты в /tmp (/usr/sandbox/tmp
настоящего окружения). После этого выйдите из чрута.
root@SANDbox [tmp]# exit
7) Теперь вы в своей системе и вам нехочется наводить здесь беспорядок.
root@YOURbox [tmp]# cd /usr/sandbox/tmp
root@YOURbox [tmp]# pkg_add -uu `cut -d "'" -f 2 -s out_of_date`
Это должно все установить. Вы можете проверить обновлена ли ваша
система полностью, воспользовавшись командой lintpkgsrc -i и убедившись
в отсутствии несовпадающих пакетов.
8) Время чистки:
root@YOURbox [tmp]# rm -rf /usr/sandbox/tmp/*
root@YOURbox [tmp]# /usr/sandbox/sandbox umount
Все.
Давайте просмотрим все необходимые команды, учитывая то, что песочница
уже создана:
root@YOURbox [root]# cd /usr/sandbox/tmp
root@YOURbox [tmp]# lintpkgsrc -i > out_of_date
root@YOURbox [tmp]# pkgdepgraph -D out_of_date > to_delete
root@YOURbox [tmp]# pkgdepgraph -R out_of_date > rebuild.sh
root@YOURbox [tmp]# /usr/sandbox/sandbox mount
root@YOURbox [tmp]# chroot /usr/sandbox/ /usr/pkg/bin/bash
root@SANDbox [/]# cd /tmp
root@SANDbox [tmp]# pkg_delete -r `cat to_delete`
root@SANDbox [tmp]# sh rebuild.sh
root@SANDbox [tmp]# pkg_tarup `pkg_info | cut -d ' ' -f 1 -s`
root@SANDbox [tmp]# exit
root@YOURbox [tmp]# pkg_add -uu `cut -d "'" -f 2 -s out_of_date`
root@YOURbox [tmp]# rm -rf /usr/sandbox/tmp/*
root@YOURbox [tmp]# /usr/sandbox/sandbox umount
Надеюсь вам понравится мой способ обновленя пакетов;)
Не стесняйтесь коментировать если у вас есть идеи по его улучшению.
ССЫЛКА НА ОРИГИНАЛ:
http://diwp.blogspot.com/2006/09/manage-your-packages-in-sandbox-with.html
Version 0.0.0
qnub[lost][Russian NetBSD team][]
Случаются ситуации когда дистрибутив NetBSD на CD (в моем случае
) немного не подходит к системе. В моем случае система
отказалась загружаться с CD выдавая следующее:
ioapic0:conflicting map entries for pin 5
ioapic0:conflicting map entries for pin 0
ioapic0:conflicting map entries for pin 0
panic:unknown MPS interrupt polarity 2
Ну я и подумал: "Кривовато ядрышко." и озадачился проблемой замены ядра в
загрузочном образе для CD.
Примечание: ссылки приведены на момент написания статьи, для версииNetBSD 3.0.
mkisofs и утилиты прожига дисков.
# cd <папка с архивами исходников> # cp *src.tgz / # tar -zxvf syssrc.tgzпри кросплатформенной сборке к предыдущей троке через пробел добавьте:
&& tar -zxvf src.tgz && tar -zxvf gnusrc.tgz && tar -zxvf sharesrc.tgz
# cd /usr/src/
# chmod a+x ./build.sh
# ./build.sh tools
# cd /usr/src/sys/arch/<архитектура>/conf/
# cp INSTALL MY_BOOT # vi MY_BOOT
# cd /usr/src/
# ./build.sh -m <архитектура> tools kernel=MY_BOOTПосле сборки будет выведен отчет где в строке
"Kernels built from MY_BOOT:"будет указано месторасположение скомпилированного ядра.
# config MY_BOOT && cd ../compile/MY_BOOT/ && make depend && makeСкомпилированное ядро будет лежать в директории в которой Вы находитесь и будет называться "netbsd", а точнее:
/usr/src/syc/arc/<>/compile/MY_BOOT/netbsdПримечание: ядро можно также собирать утилитой
build.sh как и при кросплатформенной сборке :)
# cd /usr/src/ # ./build.sh kernel=MY_BOOT
Ядро готово.
# cp <ядро> ~
/boot.amd64 (с которого собственно и происходит загрузка) /amd64/installation/floppy/boot-big.fs
# cd ~ # dd if=/dev/zero of=boot-my count=5760
# vnconfig -t floppy288 -v /dev/vnd0 boot-myПримечание: если на этом этапе возникли ошибки, то скорее всего у Вас неполный файл
/etc/disktab. Дополнить его можно содержимым
из /usr/share/examples/disktab например командой:
# cat /usr/share/examples/disktab >> /etc/disktab
# disklabel -rw /dev/vnd0d floppy288
# newfs -B le -m 0 -o space -i 204800 /dev/rvnd0a floppy288
Образ дискеты готов. Осталось сделать ее загрузочной и разместить на ней необходимое нам ядро.
#mount /dev/rvnd0a /mnt
# gzip -9 netbsd
# cp /usr/mdec/boot /mnt # cp netbsd.gz /mnt
# umount /mnt # installboot -v /dev/rvdoa /usr/mdec/bootxx_usatfs
# vnconfig -u /dev/vnd0
Дискета полностью готова к употреблению. Осталось либо записать полученный образ на дискету, либо, как в нашем случае, поместить ее в образ диска.
# vnconfig -v /dev/vnd0 <образ_CD> # mount -r -t cd9660 /dev/vnd0c /mnt
# mkdir iso # cp -R /mnt ./iso
# cp boot-my ./iso/
# mkisofs -flrTv -b ./iso/boot-my -o my_NetBSD.iso ./iso/
Вам теперь остается только залить образ на болванку насладиться
работоспособностью вашего ядра :)
Поставленной цели - замены загрузочного ядра на установочном CD мы добились.
Но я лично результата не достиг - NetBSD так и не захотела устанавливаться
на ноутбук (Acer Aspire 5024WLMi) :) видимо нужно патчить исходники. Надеюсь Вам повезет больше.
Дополнительную информацию по сборке полных билдов и релизов системы можно
почитать здесь
посборке и компиляции ядер здесь:
Также не стесняйтесь обращаться к соответствующим man страницам.
В данном разделе размещаются матералы, преимущественно посвящённые идеям, мыслям, аналитике и обсуждению функциональности программ, а также нерешённым проблемам в программном обеспечении.
P.S.: вначале был UNIX - потом стал Linux, был more - стал less, ... были "заметки конечного пользователя" - стали "заметки бесконечного пользователя"....
Введение
В данной статье рассказано о том, как изменить умолчальные настройки терминала в NetBSD или OpenBSD, чтобы сделать собственную раскраску страниц руководства man, а также включить подцветку отображения тех консольных программ (например, mutt, vim, centericq и др.), которые это в принципе поддерживают.
Включение подцветки в консольных приложениях
В OpenBSD для включения подцветки консольных приложений достаточно прописать тип терминала в командной строке:
$ export TERM=wsvt25m --- проверка возможности правки страниц wiki непривилегированным пользователем
Для сохранения настроек указанный тип терминала можно указать в /etc/ttys вместо vt220 или vt100 по умолчанию.
В NetBSD есть баг, который не позволяет выводить цвета приложениям при использовании терминала wsvt25m. Данная проблема решена в current-ветке. В случае же stable-ветки 3.0 проблема решается следующим образом: требуется исправить системный файл /usr/share/misc/termcap. К этому файлу нужно применить следующий патч:
$ diff -ubB /mnt/fat/share/misc/termcap /usr/share/misc/termcap
--- /mnt/fat/share/misc/termcap 2005-07-05 19:37:51.000000000 +0400
+++ /usr/share/misc/termcap 2006-07-19 17:58:48.000000000 +0400
@@ -932,7 +932,7 @@
# These are micro-minimal and probably need to be redone for real
# after the manner of the pcvt entries.
wsvt25|NetBSD wscons in 25 line DEC VT220 mode:\
- :Co#16:NC#32:pa#256:it#8:ms:ut:\
+ :Co#8:pa#64:it#8:ms:ut:\
:@7=\E[8~:is=\E[r\E[25;1H:\
:k1=\E[11~:k2=\E[12~:k3=\E[13~:k4=\E[14~:k5=\E[15~:k6=\E[17~:\
:k7=\E[18~:k8=\E[19~:k9=\E[20~:k;=\E[21~:kh=\E[7~:F1=\E[23~:F2=\E[24~:\
После исправления (c правами root) делаем рекриэйт базы:
# rm /usr/share/misc/termcap.db # cap_mkdb -f /usr/share/misc/termcap /usr/share/misc/termcap
Аналогично случаю с OpenBSD, прописывая тип терминала в /etc/ttys как wsvt25m, получаем цветность консольных приложений.
Замечу, что можно было бы воспользоваться и другим типом терминала для включения цветности приложений:
$ export TERM=ansi
(для которого) не требуется баг-фикс в случае NetBSD, однако это может привести к проблемам в распознавании клавиш (например, в centericq). Соответственно, не рекомендуется пользоваться ansi.
Изменение цветовой схемы руководства man
Раскраска man pages как в OpenBSD, так и NetBSD на уровне пользователся происходит так: создаётся файл ~/.termcap следущего содержания:
$ cat ~/.termcap
wsvt25mc|NetBSD wscons in 25 line DEC VT220 mode with Meta and colored attributes:\
:md=\E[32m:us=\E[1;36m:ue=\E[m:tc=wsvt25m:
wsvt25mc-bgbc|NetBSD wscons in 25 line DEC VT220 mode with Meta and colored attributes, bright
green, bright cyan:\
:md=\E[1;32m:us=\E[1;36m:ue=\E[m:tc=wsvt25m:
wsvt25mc-bgbr|NetBSD wscons in 25 line DEC VT220 mode with Meta and colored attributes, bright
green, bright red:\
:md=\E[1;32m:us=\E[1;31m:ue=\E[m:tc=wsvt25m:
( В случае OpenBSD всё равно пишется "NetBSD" ). После этого, для просмотра страниц man, где
$ TERM=wsvt25mc man man
$ TERM=wsvt25mc=bcbg man man
$ TERM=wsvt25mc=bgbr man man
Указанные типы терминалов (wsvt25mc, wsvt25mc-bcbg и wsvt25mc-bgbr) не рекомендуется использовать для других целей, кроме как для просмотра man-страниц, вследствие ряда проблем с цветностью других приложений (у меня, например, mutt стал показывать другую гамму цветов) и, возможно, клавишными комбинациями. Для использования данных типов терминалов (рекомендуется выбрать по желанию) только для просмотра man-страниц можно создать алиас для команды man. В моём случае (у меня в качестве шелла zsh) я поступил так:
$ echo "alias man='TERM=wsvt25mc-bgbc man'" >> ~/.zshrc
Итак, теперь в обычном терминале для всех приложений тип терминала - wsvt25m (берётся из /etc/ttys), для cтраниц же man - wsvt25mc-bgbc (берётся из переменной TERM, которая прописана в алиасе).
Попутно замечу, что указанная расцветка ман-страниц теперь работает и в X-терминалах, так как после каждого запуска графического терминала запускается zsh, который содержит алиас на команду man.
Информация и патч были предоставлены Зборовским Вадимом с использованием информации из NetBSD.
Данный отзыв был опубликован на и адресован автору книги, по которой я изучал BSD-системы. Ниже приведён оригинальный тект отзыва с некоторыми не существенными изменениями, обычно носящими характер исправления замеченных опечаток. Сноски указывают на места в отзыве, к которым в настоящее время появились интересные замечания, приведённые в конце текста.
Здравствуйте!
Пишет Вам spinore, более известный в юникс-кругах как "spinore с linux.org.ru" или просто Олег Пилявец. Сейчас я аспирант ФИАН, закончил небезызвестный Физтех.
Я ещё давно Вам хотел написать, но всё не доходили как-то руки.
Два года назад решил освоить по-хорошему операционную систему. У моего знакомого, жившего в общежитии со мной в комнате, одно время на старом компьютере стояла FreeBSD 4-й ветки, что, так сказать, и запало в душу мне и ещё одному нашему соседу (впоследствии тот поставил FreeBSD и до сих пор она у него является десктопной системой). В итоге в качестве целевой системы для изучения была выбрана именно FreeBSD. К этому моенту я практически ничего не умел делать в *nix'ах и пользовался Windows 2000. К счастью, мне попалась Ваша книга "FreeBSD: установка, настройка, использование", которая и была тщательно прочитана втечение свободного времени за несколько месяцев. Я выражаю вам искреннюю благодарность за Ваш труд, что Вы привнесли в мир open source, и много поспособствовали для адаптации новичков в мире UNIX/Linux. Благодаря вашей книге я и сам благополучно перешёл сразу с Windows на FreeBSD, и даже, можно сказать, OpenBSD (хотя мне помогали несколько).
На самом деле развитие шло приблизительно так: я благополучно поставил себе FreeBSD 5.2.1 (на тот момент самую новую версию), но возникли проблемы с видеокартой, благодаря чему иксы могли идти только в VGA-режиме. Поразбиравшись с xf86config вместе с напарником мы решили попробовать поставить OpenBSD. В итоге я сразу получил нормально работающие иксы в OpenBSD и, де-факто, "перешёл с windows сразу на OpenBSD" (квалификации после прочтения Вашей вышеупомянутой книги для этого хватило, ещё раз Вам спасибо).
Используя втечение половины года OpenBSD, я пользовался тем, что рекомендовал сосед (на тот момент - аськой, kde и т. п.). Нормальных "user-friendly" клиентов icq типа licq или sim под OpenBSD тогда не было, и мы пытались их с соседом "портировать", что не получилось (сейчас есть предположение, что этого не получилось из-за слишком староой версии gcc, которрая на тот момент в OpenBSD была умолчальной). Промучавшись с очень неудобной интерфейсной аськой (про джаббер я тогда не знал) я вконец опечалился (к тому времени уже пол года использовал OpenBSD и у меня даже был работающий матлаб 6.5) и снова вернулся на FreeBSD, для которой теперь уже была новая версия - 5.3 - она без проблем устанавливалась, и иксы с моей видеокартой работали корректно. После, используя FreeBSD 5.3 в течении полутора лет я постепенно ушел от user-frienfy-программ в сторону консольных приложений (предпочитая true консольные приложения даже интерфейсу на curces) и легковесных менеджеров. Параллельно я начал осозновать, что мне будет одинаково комфортно теперь в любой юникс-системе и решил начать использовать что-то более "профессиональное" и как бы "лучшее" (более надёжное). Изначально тогда я хотел вернуться на OpenBSD, но меня сразил некий интерес к неизведанному и загадочному, а также система cgd в NetBSD. В итоге ныне я уже около двух месяцев использую NetBSD 3.0, хотя изначально ставил эту систему только для того, чтобы посмотреть. В целом меня NetBSD устраивает на данный момент, но, когда-нибудь, возможно, всё же я вернусь на OpenBSD (Соответствующие заметки того времени были оставлены . О некоторых проблемах и их решении я ещё писал ). Cерьёзного cмысла перехода на Linux на десктопе, окромя как любопытства, пока не вижу. Среди тех дистрибутивов, которые видел со стороны, больше всего нравится Gentoo (мне оно напоминает bsd-like Linux), благо интернет траффик у меня бесплатный уже 3 года.
Пройдя указанный путь от обычного пользователя до BSD-юзера, хотел бы поделиться с Вами некоторыми замечаниями по поводу указанной книги и вообще идеологии (надеюсь, Вам это будет интересно).
В книге было хорошо сказано про преимущества оконных менеджеров по сравнению с интегрированными графическими средами стиля kde, gnome и xfce. Очень понравился blackbox. Долго время его использовал (с тех времён даже остался). В рамках описания blackbox, по моему мению, Вам следовало бы сказать, что не следует загромождать десктоп таками искусственными программами как bbrun. Всё что нужно, пользователь запускать должен с хоткейсов, которые прописаны в ~/.bbkeysrc (его новейшая версия поддерживает даже keychain'ы, что очень удобно, и чего нет в fluxbox (хотя можно использовать bbkeys и c fluxbox)). В случае же потребности запустить что-то особенное, всегда можно открыть терминал и написать "nohup нечто &". Такие впечатления остались у меня от примерно годовой работы в blackbox.
Позже я случано встретил фразу стиля "настоящие хакеры используют ... OpenBSD, BadWM, ratpoison, ion...". Ради интереса я поставил себе ratpoison чтобы посмотреть на него, а вышло так, что и по сей день им пользуюсь. Возвращаясь иногда к blackbox, я чувствую как мне становится крайне неудобно. Дело же здесь вот в чём. kde является "реконструкцией" windows-подобного интерфейса. Blackbox же, в свою очередь, не так далеко ушёл от этого самого интерфейса, если его рассмотреть очень внимательно. Кто нам сказал, что "все приложения должны иметь отдельные окна, которые могут перкрываться, у каждого окна должна быть декорация из 3-х квадратиков, щёлкая мышкой по которым можно что-то делать"(?). И уж тем более, кто сказал, что это "самая правильная идеология организации интерфейса, и самая удобная"? (К слову сказать, именно под такую идеологию создавались "великие" и "могучие" иксы). Неоптимальность оконного интерфейса прявляется при возрастанрии числа окон (когда их число начинает превышать 10-15). Я придумывал разные ухищрения, как побороть эту неоптимальность. Поясню более конкретно, о чём идёт речь.
Итак, будем реалистичными. У меня запущено 13 разных окон одновременно (консольный curces-based icq-клиент и jabber через centericq (2 окна), vim (1 окно), links (1 окно), opera (1 окно)), обычный терминал для выполнения команд (1 окно), рутовый терминал (1 окно), терминал с запущенным в нём MatLab'ом (1 окно) а также ещё несколько терминалов, в которых происходит редактирование в vim'е чего-нибудь, или браузеры типа firefox. Для удобной работы нужно иметь открытыми сразу все указанные приложения, чтобы в случае чего (а это нужно делать часто) время тратилось только на переключение между окнами, а не на открытие приложений. Итак, мне приходится постоянно и часто переключаться между указанными окнами. Если бы использовался только один рабочий стол, я бы устал по 10 раз нажимать Alt-Tab и Alt-Shift-Tab (например) в blackbox. Естественным кажется желание упростить переключение: разбить эти окна на классы - сиречь "рабочие столы". Это всё так, но метод "раскидывания окон по столам" приводит только к кажущемуся решению проблемы. Почему? - Потому, что в нагрузку к хоткеям переключения между окнами добавляются хоткеи для переключения между столами. А на каком столе у нас что находится? Нужно помнить? Да. А можно воспользоваться пейджером - загрмоздить часть стола маленькими скриншотиками всех существущих столов (представляю снизу мысленно 13 микроскриншотов, на котрые я смотрю в надежде понять что же и где у меня открыто). Сам я никогда пейджерами не пользовался, а делал по-другому: на каждый рабочий стол помещал только одно окно, в итоге у меня обычно использовался только хоткей на переключение рабочего стола для того, чтобы сделать активным некоторое приложение. А куда переключаться? Чтобы не мучиться с этим, я старался располагать каждое приложение каждый раз на одном и том же, своём, уникальном столе. Однако, это не работало очень гладко, так как приложений много, и рано или поздно часть из них всё равно начинает находиться неизвестно где. Как следствие, приходится периодически вызывать из меню список всех окон и просматривать все рабочие столы со всеми окнами на них (очень времязатратная операция). Учту (упомяну) ещё 2 очень важных момента в работе с так организованными системами:
Теперь о том, как легко и свободно решаются все указанные проблемы в frame-ориентированных менеджерах (рассмотрю для примера ratpoison). Рабочих столов здесь нет в обычном понимании этого слова. Переключаться между фреймами и окнами можно только с помощью хоткеев (я использую keychain'ы, благо ratpoison это позволяет). Сначала я задал геометрию фреймов: разбил окно на непересекающиеся прямоугольники - фреймы. По душе мне пришлось всего 2 геометрии фреймов:
Если я пользуюсь 2-й геометрией фреймов - у меня всегда активен левый фрейм и окна появляются только в нём при их активации в ratpoison. Если я пользуюсь 1-й геометрией фреймов - fullscreen, то все окна всегда полностью максимизированы. Мне не нужно поочерёдно переключаться между активациями окон в текущем фрейме для получения нужного мне окна: посмотрев в список справа на номер окна я набираю, например, альт-8 и я уже на 8-м окне(!). Конечно, забирая все лучшие наработки с blackbox, я и здесь теперь стараюсь держать номера окон различных приложений уникальными (для этого достаточно запускать после логина приложения в нужном порядке или назначать вручную номер вновь открывшемуся окну, что делается легко с клавиатуры средставми ratpoison)2. Также, мне не нужно помнить теперь что выбирать: "аль-таб" или "альт-шифт-таб" для переключения на какое-то окно с номером, далёким от номера текущего (активного в данном фрейме) окна: один взгляд на список... и это становится сразу ясным. Также, ratpoison позволяет легко ресайзить фреймы, пользуясь только хоткейсами. Таким образом, я получаю нужную мне масштабируемость при возрастании числа открытых окон: порописав верхний ряд клавиш (1,2,...=,\) для переключения окон (активации соответствующих окон по их номерам) я, нажимая только 2 клавиши (аль+нужная_клавиша_с_верхнего_ряда), получаю моментальный доступ к любому из 13(!) окон. В крайнем случае, я могу воспользоваться и обращением к окнам по встроенным хоткеям ratpoison или обращением к окнам по первым именам заголовков (что также встроено в ratpoison). Пользуясь систематически ratpoison'ом, и установкой окнам нужных номеров после их старта3 можно, в действительности, заглядывать в список всех открытых приложений справа очень редко. Подчеркну, что список я делаю собственными руками, заставляя стороннюю программу (например, torsmo, периодически обращаться к ratpoison и запрашивать этот список4 (в действительности, это вывод команды ratpoison -c windows)).
Ответ на возможные трудности работы с ratpoison:
Для большинства возможных работ в каждый момент времени достаточно иметь активным только одно окно, и почти на full-screen (судя по собственному опыту). Необходимость в привязке системы фреймов к активным на данный момент приложениям возникает только, когда нужно постоянно (фактически, ежесекундно) смотреть в оба окна одновременно. Такое бывает. Для реализации данной возможности можно директивно менять геометрию, потом активный фрейм, и хатем активировать в нём нужное окно (аналогично, для остальных фреймов). Изменение геометрии имеющихся фреймов "налету" можно привязать опять же к хоткеям (у меня сделано именно так). Должен признать, что в ratpoison первична именно геометрия фреймов, а не сами окна, котрые в этих фреймах активируются. Можно спорить с данной идеологией. По моему мнению, она более подходит для одних задач и менее для других. При прочих равных мне не кажется этот вопрос очень принципиальным. К слову сказать, появился в данный момент скрипт, позволяющий делать привязку геометрии фреймов к приложениям более явно в ratpoison, но он написан на bash и работает медленно, в связи с чем я его не использую5.
Они не нужны, если у меня есть список окон с номерами и их заголовками, всегда висящий справа (если только не используется full-screen-геометрия фреймов). Хочу также заметить, что при прочих равных восприятие приложения лучше, если оно занимает весь экран, а не его маленький клочок6. Жертвовать размером окна имеет смысл, только если действительно нужно одновременно видеть несколько окон на одном и том же экране - только в этом случае разбитие экрана на большое число фреймов оказывается оправданным.
Поддержка мыши отсутствует, дабы не поощрять пользователя пользоваться неудобными инструментами для решения задач при работе с ratpoison. Мышь должна использоваться в тех приложениях и только тех, где она жизненно необходима. Идея в минимализме: "если я могу спокойно управлять системой с клавиатуры, то зачем мне "пятая нога" в виде дополнительной убогой поддержки управления с помощью неудобных и неэффективных инструментов? Это оправдано для новичков, обживающихся в мире юникса, но не оправдано для людей, разбирающихся в приложениях, и уже успевших не по одному разу прочитать документацию на тот же ratpoison от начала и до конца".
О других фрейм-ориентированных менеджерах: самым популярным, пожалуй, является из них ion. Лично меня, как стремящемуся к оптимуму между минимализмом и функциональностью, оттолкнула поддержка мыши, жёстко добавленная в ion и наличие декорации окон по умолчанию7. Я не считаю это хорошим признаком. Хотя в целом, по рассказам, ion предоставляет большую гибкость и возможности, чем ratpoison. К тому же, лично мне для моих целей в данный момент хватает ratpoison'а (использование интернета, просмотр аудио-, видео- и графических файлов, работа в vim с TeX-файлами, программирование в MatLab и т. п.). Также, меня можно спросить про удобство работы с gimp в ratpoison, на что я могу ответить двояко:
Закончив рассмотрение оконных менеджеров, расскажу о других впечатлениях.
Считаю очень удачным то, что Вы порекомендовали использовать возможнсти командной строки вместо оболочек-визуализаторов напободие mc. Прошло 2 года моего пребывания в юникс-системах, и я не пользовался mc никогда для своих нужд, причём считаю это идеологически правильным8. Также, использование kde, blackbox и т. п. "мышовых" интерфейсных программ хорошо для первого освоения но не для постоянного использования.
Меня очень порадовал акцент в сторону использования zsh, а не bash. Наше общество пока не знает о zsh и живёт вчерашним днём, извиняюсь за грубость (я не вижу никаких премуществ bash перед zsh на данный момент окромя большей распространённости первого)9.
К слову о редакторах: для человека, разобравшегося с vim'ом (emacs'ом) никакие другие редактры не нужны (nedit, kwrite, gedit и т. п.). Возможно, Вам бы следовало столь же явно, как для mc и kde подчеркнуть, что использование альтернативных vim'у и emacs'у редакторов может быть обосновано только большими трудозатратами быстрого изучения первых.
Для конечного пользователя не последнюю роль играет возможность шифрования информации, работа с gpg, OpenSSL, а также работа к ключами и сертификатами в различных приложениях (например, в почтовой программе и джаббере). Почему-то считается правилом хорошего тона ничего не упоминать о таких возможностях в стандартных книгах по юниксу. У меня на полке лежит 3 книги по FreeBSD и ни в одной из этих книг ничего не сказано о шифровании диска10. Возможно, этому следовало бы уделить некоторое внимание.
Общепризнанно лучшей почтовой программой признан mutt11 (смотрим официальную документацию на Gentoo Linux или NetBSD). В книгах не любят, тем не менее, описывать тонкости работы fetchmail/procmail/msmtp/mutt и, думаю, очень даже зря: ведь почтой пользуются все. Жалко, что во всех известных мне книгах нет нормальной документации по указанным программам за исключением слов "это выходит за рамки данной книги"12.
Есть такая полезная программа - screen, и многие пользователи уже сейчас не представляют себе работу без использования этой программы. ratpoison написан по мотивам именно screen. Однако, о существовании таких хороших программ можно узнать только случайно с некоторых форумов. То же самое следует сказать и о программах tor и privoxy.
Существут браузеры наподобие w3m с чудесными возможностями: истиная графика в исках в консоли! Но о таких программах также можно узнать только случайно. Хорошо было бы упомянуть о w3m в Вашей книге.
С удовольствием я читал Ваши заметки и по другим BSD-системам. У меня возникал вопрос: почему до сих пор все отмалчиваются, и никто из профессионалов не решается написать разгромную статью по сравнению хотя бы Linux/Solaris/FreeBSD/OpenBSD/NetBSD? Это никому не выгодно, может быть, ибо покажет пользователям массу слабых сторон и кучу костылей и ошибок в дизайне этих систем (а это есть!)?13
Обычно не описывают никогда процедуру make world со списокм всех возможных нюансов и неожиданных аварийных ситуаций в книгах по BSD. На данный момент, насколько мне известно, нет других гибких способов устранить ошибки в базовой системе.
Принято не писать о плохих сторонах BSD и Linux. Может быть, где-то официально нужно написать о кривости portupgrade?14 И это система, рекомендуемая самими разработчиками для управления системой портов. Gentoo Linux команда - молодцы - они сделали хорошую систему работы с портами, опираясь на ошибки предшественников.
Удобно использовать centericq15 и mpd+mpc для работы, соответственно, с джаббером и аськой. Я могу запустить centericq в бэкграунде, после чего, давая определённые команды в любом(!) терминале принимать и отправлять сообщения. Аналогично, работа протекает и с музыкой16. Также, активно используются хоткейсы для работы с mpd+mpc под иксами. Это хорошая идея, почему же тогда на каждом углу пропогандируют именно xmms? centericq и mpd работают по клиент-серверному механизму, что является очень удобным. Даже зайдя по ssh через некоторое время на свою домашнюю машину удалённо я могу продолжать как ни в чём не бывало управлять музыкой и джаббером (icq). Хотел бы очень услышать Ваше мнение на этот счёт. Я привёл в качестве системы управления музыкой mpd (music player daemon), так как мне не известны другие программы с клиент-серверной реализацией, работающие с музыкой. Также, я привёл в пример centericq как единственную (по моим данным) консольную программу, которая после некоторой доводки начинает работать в клиент-серверном режиме и при этом поддерживает шифрование на основе персональных ключей (gpg)17.
Мне кажется, что следует упомянуть, что при прочих равных лучше отказаться от использования samba вообще в пользу других систем, ибо это очень не безопасно.
Насколько я понимаю, любой пользователь вскоре после установки BSD сталкивается со следующими проблемами:
Обычно в книгах не упоминается об объёме проблем и ошибок того или иного ПО (операционной системы). А ведь можно было бы очень подробно описать с чем обычно приходится сталкиваться в реальной жизни и как это исправляется (это было бы антирекламой всего open-source и я бы мог по этому поводу написать ещё одно такое "письмо", подробно описывая всё, начиная от coredump'ов иксов и мёртвого зависания системы из-за софтварных ошибок, и кончая вечными падениями оконных менеджеров18 - всё что было за последние 2 года в моей практике, вплоть до ссылок на багрепорты).
Теперь напишу о грустном. К сожалению, консольные программы, хоть и консольные, потребляют зачастую огромную долю ресурсов, сколько не потребляют даже графические user-friendly-программы. Cвязано это, если не кривить душой, с тем, что многие программы, портированные в BSD- и Linux-системы, пишутся обычными энтузиастами, являющимися низкоквалифицированными программистами. В действительности, человек только думает, что знание одного синтаксиса языка си делает его квалифицированным программистом, способным написать что-то очень хорошее. Рассмотрим пресловутую centericq19. На слабых компьютерах (в данный момент у меня, например, 233МГц) видно, как она подвисает в момент прихода сообщений20. Видна задержка невооружённым глазом. Об этом же свидетельствует и top. Вопрос: что же потребляет ресурсы?? У меня centericq, запущенная в консоли, использует 8 мегабайт памяти(!) и заметную долю CPU. Бегло сделанный моим напарником анализ исходника centericq даёт ответ: эта программа циклически опрашивает оборудование: в итоге, время тратится на холостые циклы. Уже давно стало ясно, что программируют эти циклы не в самой программе (если по уму), а поручают данную функцию ядру системы: оно умное и догадывается вызвать centericq только тогда, когда прийдёт новое сообщение, пока же не пришло - centericq будет мирно покоиться оставив ресурсы системы другим программам20. Я не удивлюсь, что доводка до ума centericq может привести к тому, что эта программа будет использовать в 10 раз меньше cpu и много менньший объём оперативной памяти. Аналогично, могу сказать и про mpd: он открывает массу локальных портов, которые потом долго не закрываются (вывод netstat), возможно, это происходит из-за того, что mpd слишком жёстко рвёт локальные соединения21. Как итог, также потребляется большая часть памяти и cpu. В связи с упомянутыми проблемами мне всегда было интересно: что же используют сами разработчики для прослушивания музыки, для jabber'а22 и т. д.?
В виду всего вышесказанного добавлю, что я почти отказался от всех gtk и qt приложений: из тех приложений, которые всё же используют qtk или qt на моей машине могу назвать только gimp, оперу и w3m. Со временем, предполагается, что и эти qt и gtk-based программы будут удалены.
Как видите, начав с чтения Вашей книги, я несколько удалился от исходной стези во всевозможные дебри и тонкости, но начало и основы идеологии были положены именно Вами (получается, являюсь Вашим учеником, таким образом). Было бы интересно услышать Ваше мнение по поводу того что я здесь напсал в этом "открытом письме".
spinore
P.S.: по специальности занимаюсь квантовой механикой, более конкретно - квантовой томографией. Будучи уже под BSD-системами на , написал 2 научных статьи23, магистерскую диссертацию (с использованием ТеХ, vim, ratpoison и NetBSD) и выполнил ряд расчётов на MatLab (maxima и octave являются достойной альтернативной - собираюсь их изучить). Ещё раз спасибо Вам за Вашу ценную книгу!
2В данном случае явно видны недоделки оконного менеджера. Все необходимые действия по сортировке окон по номерам или автосохранение сессии приходится реализовывать через сторонние скрипты, котрые работают существенно медленнее, чем нативный код менеджера. Скрипт для автосохранения сессии в ratpoison я так и не смог написать из-за того, что нет инструментов определения того, открылось ли уже физически окно на экране. В противном случае номера окон перепутываются. Данную проблему можно решить установкой длительных пауз перед стартом каждого нового приложения, однако это не практично медленно. В крайнем случае можно сделать процедуру детекта уже открытых окон и присвоения им номерам согласно некоторому правилу, но это всё равно работает довольно медленно - для 4-х - 5-ти окон проще и быстрее назначать номера вручную либо запускать их в нужном порядке.
3Подробно описано в примечании 2 (см. "автосохранение сессии").
4Кривой метод, использующий много ресурсов CPU, что делает его неприемлемым при использовании на слабых машинах. Согласно документации на системные мониторы типа conky или torsmo использование их возможностей по частому запуску шелл-команд настоятельно не рекомендуется по вышеоговоренным причинам. Стоит заметить, что параметры состояния процессора и памяти и т. д. встраиваются жёстко в си-код монитора, хотя и могут быть получены из скриптов.
5Методы решения проблемы, основанные на таких скриптах, по праву называются "костылями". (См. более подробно в примечании 5).
6При разрешении 600x800 на моём последнем видно, сколько места занимает только один список окон.
7Стоит заметить, что wmii-3, упомянутая в примечании 1, также содержит декорацию окон и поддержку мыши, однако его преимущества мне показались более существенными чем недостатки. Однако, в противовес ratpoison и screen, wmii-3 не содержит встроенных механизмов активации последнего бывшего активным окна. При желании данный механизм можно релизовать через костыль, написав свой скрипт.
8Вопросы премущества zsh, а также его связь с mc, обсуждались .
9Говорят, что долгое время zsh не поддерживал utf (в отличие от bash), однако на данный момент эта проблема уже решена.
10К счастью, этот вопрос исчерпывающе освещён в интернете, включая вопрос установки NetBSD на полностью зашифрованные cgd-разделы.
11В данный момент я не доволен mutt, как и всей идеологией, основанной на интерфейсах. Проще и удобнее работать с интерактивными программами. Например, такая простая задача, как вывод списка последних 10-ти сообщений, пришедших в мутт, или их распечатка на экран после пропуска через sed (grep) уже не решаема встроенными средствами. Такими недостатками не обладает nmh, однако я не достаточно с ним разбирался чтобы дать его комплексную оценку по сравнению с mutt.
12Строго говоря, в одной из мох книг ("FreeBSD: platinum edition", Эбен, Тайман) всё же имеется некоторое описание fetchmail.
13Тщательный анализ систем довольно сложен. Сравнительно большое количество известных ошибок в операционной системе может быть связано как с большими объёмом добавляемого в неё кода и новых возможностей, так и с тем, что ею пользуется большее количество людей. Последние новости о local-root уязвимости в OpenBSD и множественные уязвимости FireFox являются дополнительным аргументом в пользу ревнителей, считающих кажущуюся безопасность указанных программных продуктов только следствием их малой распространённости. В идеале оценка качества кода должна делаться с учётом объёма вносимых в код изменений в единицу времени, а также с учётом того, что ошибки в распространённых системах ищут чаще и код анализируют большее число заинтересованных лиц. Что касается моего личного мнения, я не исключаю вероятность того, что качество кода как Linux, так и всех BSD с учётом данных поправок будет примерно одинаковой, а OpenBSD де-факто содержит не более безопасный код (хотя в данном случае "неуловимый джо" всё же не становится менее неуловимым при попытке взлома системы).
14Имеются в виду кривые флаги дефолтных зависимостей в портах, а также внутренняя противоречивость с синтаксисом BSD-make'а (возможно, более детальный анализ будет впоследствии опубликован в следующей заметке).
15В настоящее время интерфейс mcabber мне кажется более разумным и я использую его.
16Существует кроме mpd ещё один клиент-серверный консольный плеер, однако mpd более популярен.
17Последняя версия centericq фактически не работает с gpg под Free и NetBSD, постоянно уходя в оффлайн.
18Это касается всех оконных менеджеров, с которыми я работал (blackbox, fluxbox, wmii и ratpoison).
19Общественный резонанс от данного отзыва был столь силён, что сам разработчик centericq - господин Клягин - не поленился написать в оригинальном форуме всё что он думает по этому поводу. В свою очередь, мне было довольно тяжело говорить о программе, самому не будучи программистом.
20В меру моего понимания здесь криво реализовано взаимодействие между процессами. Поясню на примере: предположим, что одной программе нужно передавать данные в другую. Данную задачу можно реализовать следующим способом: как первая программа получает данные, она их пишет в файл. В свою очередь, вторая программа каждую минуту заглядывает в файл и смотрит: а не появилось ли что нового :))). Именно такого рода алгоритмы используются в centericq, что приводит порой к катастрофическому падению производительности, и, в частности, при отправке сообщений в centericq непосредственно с терминала задержку видно всегда невооружённым глазом. В настоящее время указанный подход к программированию настоятельно не рекомендуется и все отказываются от него. В то же время, говорят, такого рода алгоритмы до сих пор существуют даже в BSD-ядрах. Существуют 2 метода грамотной быстрой реализации взаимодействия между процессами, о которых, возможно, будет более подробно сказано в дальнейших заметках, равно как и о том, как именно это сделано в centericq.
21В NetBSD каждое обращение к mpd (например, mpc volume +1) открывает дополнительный локальный порт, который быстро закрывается по прошествии нескольких секунд. В то же время, согласно рассказам Linux'оидов, ничего подобного в Linux не наблюдается.
22Протокол jabber (XMPP) считается довольно новым ещё. Разработчики используют irc, а шифрование траффика для них не критично.
23В данный момент их уже 4 :)
Будем собирать из сорсов, так как pkgsrc тянет кучу зависимостей.
1. Ставим пакеты и .
2. Берём последний стабильный релиз и какого-нибудь клиента .
3. Собираем MusicPD с поддержкой libao.
./configure --enable-ao; make; make install
4. Правим /etc/mpd.conf так, чтобы он воспринимал libao.
cp /usr/local/share/doc/mpd/mpdconf.example /etc/mpd.conf patch /etc/mpd.conf <
5. Правим конфиг под себя, собраем клиента и наслаждаемся музыкой.
Использовать pkgsrc
Что такое pkgsrc.
Pkgsrc (в разговорном: коллекция пакетов) - это главная система управления пакетов для системы NetBSD. С pkgsrc вы можете легко добавлять, удалять и управлять программным обеспечением в вашей системе. Pkgsrc базово представляет из себя набор файлов, сгруппированных по категориям, которые содержат информацию для установки выбранного вами программного обеспечения. Все эти файлы вместе чаще всего ссылаются на дерево пакетов. Это дерево управляется управляется разработчики pkgsrc, которые вносят в него изменения каждый день. Вследствии чего необходимо обновлять дерево пакетов регулярно.
Требования
Дерево исходников , которые содержат все эти файлы, занимает как минимум 200 MB дискового пространства.
Подготовка pkgsrc
Создадим директорию для pkgsrc
Это конечно дело вкуса, но большинство пользователей предпочитают создавать директорию в /usr/pkgsrc/:
# mkdir /usr/pkgsrc
Поменяем владельца директории /usr/pkgsrc на пользователя так, что бы потом обновлять pkgsrc с правами обычного пользователя.
# chown john pkgsrc
Получение текущего дерева исходников.
Существует большое кол-во способ получить дерево исходных текстов. Например посредством ftp, cvs, sup или cvsup. Мы рекомендуем способ csup, легковесный cvsup протокольный клиент, написаный на языке C. Но до того как вы можете использовать csup, сперав вы должны установить его. Therefore мы будем использовать для сsup бинарный прекомпилированный пакет, вместо того что-бы делать одну и туже работу дважды.
# ftp ftp://ftp.netbsd.org/pub/pkgsrc/packages/NetBSD/i386/4.0/All/csup-20070216.tgz
и далее устанавливаем его командой
# pkg_add csup-20070216.tgz
csup нужен один конфигурационный файл, supfile, который содержит информацию to sync what from which server to where. Пожалуйста создайте файл с именем pkgsrc-supfile в вашей домашне директории со следущим содержанием:
*default tag=.
*default release=cvs
*default delete use-rel-suffix
*default umask=002
*default host=cvsup.se.netbsd.org
*default base=/home/john
*default prefix=/usr
netbsd-pkgsrc
Base указывает на домашнюю директорию, а prefix - где лежит сам репозитарий.
Взять и держать Ваше дерево pkgsrc в синхронизации достаточно выполнить команду:
$ csup pkgsrc-supfile
Для регулярного обновления, скажем раз в день, используйте утилиту cron.
Создание WRKOBJDIR
Держать дерево pkgsrc чистым и Ваши рабочие директории out of it, определите переменную WRKOBJDIR в файле /etc/mk.conf и добавьте в него строку:
WRKOBJDIR=/usr/work
и тогда создайте эту директорию.
# mkdir /usr/work
Создание DISTDIR
Мы также хотим что бы наши distfiles были сохранены, за пределами pkgsrc директории. Поэтому мы добавим переменную DISTDIR в файл /etc/mk.conf
DISTDIR=/usr/distfiles
и создадим директорию:
# mkdir /usr/distfiles
Установка пакетов
Для установки пакетов мы станем пользователем root.
$ su
далее мы перейдем в директорию(категорию) соответствующую пакету, который мы хотим установить.
# cd /usr/pkgsrc/misc/figlet
для его установки выполним следующую команду:
# make install
после чего удалим объектные файлы, созданные во время выполнения предыдущей команды
# make clean
если этот пакет имел зависимости также удалим и другие объектные файлы
# make clean-depends
Вы также можете выполнить все перечисленные выше команды за один раз.
# make install clean clean-depends
Если Вы желаете удалить все distfiles, файлы которые были загружены с сервера выполните следущую команду
# make distclean
Вот и все. Наслаждайтесь..
Система pkgsrc обладает очень большим количеством возможностей, поэтому в ней есть миллионы других опций.
On-line help
Кроме того имеет место также встроенная on-line справочная система.
# make help
Эта команда даст Вам информацию по использованию утилиты make. Правда требует знать заранее имена переменных информация по которым Вам необходима. Большинство target-имен и имен переменных задокументированы, но не все.
Смотреть также
Содержание
1 Что такое tmpfs?
2 Как она работает?
3 Зачем мне это нужно?
4 Как я это использую?
5 Тестирование tmpfs
6 Редактирование файла fstab
7 Важные замечания
8 Смотреть также…
9 Исходный код
Что такое tmpfs?
Tmpfs это эффективная memory файловая система, разработанная Julio Merino Vidal во время проведения Summer of Code Project в 2005 году. Она была добавлена в дерево исходного кода NetBSD 10 сентября 2005 года. Tmpfs была выведена из статуса экспериментальной 11 ноября 2006 года и сейчас включена по умолчанию во все generic ядра системы.
Как она работает?
В отличие от mfs, tmpfs использует свои собственные структуры данных в управлении сохраненными файлами. Она использует корректное количество памяти для корректной и эффективной работы что означает, возможность увеличения и уменьшения размеров файловой системы.
Зачем мне она нужна?
В обычной ситуации в tmpfs нет необходимости. Вы можете сохранять ваши данные на жестком диске. Но Вы можете использовать tmpfs для уменьшения активности обращения к жесткому диску, если будете сохранять временные данные в tmpfs разделе, что будет работать быстрее, чем в случае сохранения этих данных на жесткий диск. Лично я предпочитаю tmpfs для файлов которые сохраняются в директорию /tmp и использую ее на всех своих серверах.
Как я ее использую?
Прежде чем Вы сможете использовать tmpfs, Вы должны пересобрать Ваше ядро. Для включения поддержки tmpfs в ядро убедитесь что строка
file-system TMPFS
присутствует и разкоментирована в вашем конфигурационном файле ядра. Теперь пересоберите ядро и перезагрузите систему.
Тестирование tmpfs
До того, как мы внесем изменения в файл /etc/fstab, требуется убедиться, что tmpfs корректно работает. Иначе яро не сможет загрузиться.
Для проверки работоспособности tmpfs, смонтируем ее вручную:
# mount_tmpfs tmpfs /tmp
и проверим, смонтировалась ли она
# mount
на экране Вы должны увидеть что-то вроде "tmpfs on /tmp type tmpfs (local)"
Редактирование fstab
Теперь Вы можете редактировать файл /etc/fstab , что бы tmpfs автоматически монтировалась во время загрузки системы.
Добавьте в Ваш файл /etc/fstab точно такую же строчку "tmpfs /tmp tmpfs rw".
Все готово. Наслаждайтесь!
Важные замечания
К сожалению, tmpfs пока еще не поддерживает whiteouts (объекты специального типа). Поэтому файловая система не может использоваться вместе с вызовами union-mount`s.
Смотреть также
Использование шифрованого swap раздела через nfs
Содержание
1 Введение
2 Что потребуется
3 Создание
3.1 Создание swap-раздела
3.2 Конфигурация swap-раздела в первый раз
4 Использование swap раздела при каждой перезагрузке
5 Некоторые вопросы и замечания
6 Дополнительная иформация
Введение
Становится все более и более популярным использование swap раздела с поддержкой шифрования. Однако, это не тривиальная задача для swap разделов подмонтированных с NFS сервера. Поддержка swap раздела подмонтиованного с удаленного NFS сервера может быть включена следующей строчкой в вашем файле etc/fstab:
server:/usr/swapfile none swap sw,-w=8192,nfsmntpt=/swap 0 0
Но содержимое этого swap раздела не будет шифроваться. Однако, мы прибегнем к небольшой хитрости и воспользуемся vnd(4) интерфейсом.
Описанный ниже метод я использую на моей Jornada 680 с ядром 3.99.15
Что нам потребуется
Ядро с поддержкой vnd(4) и cgd(4)
Создание
Создание swap-раздела
Сначала нам нужно создать swap-раздел что бы мы могли его использовать в дальнейшем. Важно, что-бы swap-раздел находился в директории, которая подмонтирована когда запущен скрипт /etc/rc.d/swap2. Также Вы можете определить значение переменной $critical_filesystems_remote.
Теперь выполните команду:
# dd if=/dev/zero of=/usr/swapfile bs=1m count=64
Будет создан 64Мб swap-раздел. Будьте уверены, что он имеет корректные права доступа и атрибуты владельца.
# chown root:wheel /usr/swapfile
# chmod 600 /usr/swapfile
Конфигурация swap раздела в первый раз.
Сейчас мы должны сконфигурировать наш раздел что бы операционная система могла использовать его.
Сконфигурируйте paramsfile для cgd(4).
# cgdconfig -g -o /etc/cgd/swapfile -V none -k randomkey blowfish-cbc
Теперь мы можем сконфигурировать устройство.
# vnconfig vnd0 /usr/swapfile
# cgdconfig cgd0 /dev/vnd0c /etc/cgd/swapfile
Замените имя устройства с /dev/vnd0c на /dev/vnd0d если это необходимо. Разметьте устройство cgd0 при помощи команды
disklabel -I -e cgd0
и на экране терминала Вы увидите примерно следущее:
# /dev/rcgd0c:
type: cgd
disk: cgd
label: default label
flags:
bytes/sector: 512
sectors/track: 2048
tracks/cylinder: 1
sectors/cylinder: 2048
cylinders: 64
total sectors: 131072
rpm: 3600
interleave: 1
trackskew: 0
cylinderskew: 0
headswitch: 0 # microseconds
track-to-track seek: 0 # microseconds
drivedata: 0
3 partitions:
# size offset fstype [fsize bsize cpg/sgs]
c: 131072 0 swap # (Cyl. 0 - 63)
Замечание: В зависимости от архитектуры, которую Вы используете, Вам может потребоваться другая схема разбивки раздела.
Например на архитектуре i386 она выглядит так:
a: 131072 0 swap # (Cyl. 0 - 63)
d: 131072 0 unused 0 0 # (Cyl. 0 - 63)
В зависимости от того на каком разделе ваша архитектура использует raw раздел. Получить эту информацию можно следущей командой:
# sysctl kern.rawpartition
kern.rawpartion=3
Создайте бэкап разбивки так, что бы вы смогли его использовать позже.
# disklabel cgd0 > /etc/cgd/swapfile.disklabel
Теперь Вы можете его использовать.
# swapctl -a /dev/cgd0c
Теперь, Вы можете работать с шифруюмым swap разделом через nfs сервер. Для проверки работоспособности выполните следущую команду:
# swapctl -l
Device 512-blocks Used Avail Capacity Priority
/dev/cgd0c 131072 9696 121376 7% 0
Использование swap раздел во время каждой загрузки.
Использование swap раздлела автоматически, во время загрузки немного затруднительно, так как данные о точке монтирования, так как и другая информация не могут быть прописаны в файле /etc/fstab. Но мы можем сделать это подругому. И я уже сделал эту работу для Вас. ;-) Проверьте, что соответствующие переменные в системе установлены правильно. Например, наличие файлов устройств в директории /dev cgd0 и vnd0 ? и значение RAW_PART корректно для вашей архитектуры. Создайте файл /etc/rc.conf.d/swap содержащий следущее.
# Инициилизация cgd через vnd swap.
#
#Замечание Мы НЕ можем вставить данные о swap разделе в файл /etc/fstab
#
# Если это единственный swap раздел который Вы сконфигурировали Вы можете установить
#переменную no_swap=YES в файле rc.conf, с другой стороны система будет "ругаться" при каждой загрузке.
#
#ВАЖНО:
# Файл на который указывает переменная $swapfile должен быть в директории на которую указывает переменная $critical_filesystems_remote. Директория /usr используется по умолчанию.
#
vnd_device="vnd0"
cgd_device="cgd0"
swapfile="/usr/swapfile"
paramsfile="/etc/cgd/swapfile"
swap_disklabel="/etc/cgd/swapfile.disklabel"
RAW_PART="c" # <- измените для вашей архитектуры
SWAP_PART="c" # <- измените на тот раздел который использует disklabel
start_postcmd="cryptovnd_swap"
stop_cmd="cryptovnd_stop" # Заметка: We have to override stop_cmd
cryptovnd_swap()
{
# С момента когда есть только одна swap переменная в файле rc.conf мы должны
# проверить что мы были вызваны из скрипта с именем swap2.
if [ $name = "swap1" ]; then
return
fi
if [ -f $swapfile ]; then
echo "Configuring cgd over vnd swap."
eval `stat -L -s $swapfile`
if [ `echo $st_uid+$st_gid|bc` != 0 ]; then
echo "$swapfile MUST be owned by root and group wheel"
echo "$swapfile not used as swap."
return 1
else
if [ ! -f $swap_disklabel ]; then
echo "No $swap_disklabel."
echo "$swapfile can not be used as swap."
return 1
fi
if [ $st_mode != "0100600" ]; then
echo "$swapfile MUST have permission 600"
echo "$swapfile not used as swap."
return 1
fi
fi
vnconfig $vnd_device $swapfile
cgdconfig $cgd_device /dev/${vnd_device}$RAW_PART $paramsfile
disklabel -R -r $cgd_device $swap_disklabel
swapctl -a /dev/${cgd_device}$SWAP_PART
fi
}
cryptovnd_stop()
{
if [ $name = "swap2" ]; then
swapctl -d /dev/${cgd_device}$SWAP_PART
cgdconfig -u $cgd_device
vnconfig -u $vnd_device
swapctl -U -t noblk
else
swap1_stop
fi
}
Некоторый вопросы и заметки
Не включайте данные об параметрах использованного в примере cgd в файле /etc/cgd/cgd.conf
Может случиться так, что в ядре хватит энтропии для того, что бы инициилизировать swap раздел. Если так происходит, Вы можете добавить пул энтропии вашей NIC карты в файл /etc/rc.conf с /sbin/rndctl -ced ne0, если у вас имеется такая сетевая карты (ne(4) NIC). Если это единственный сконфигурированный swap раздел, то установите переменную no_swap=YES в файле /etc/rc.conf или система будет "ругаться" во время каждой загрузки.
Дополнительная иформация
vnconfig(8) Manpage
cgdconfig(8) Manpage
swapctl(8) Manpage
disklabel(8) Manpage
Франкэнштейн в процессе сборки.
Известно, что используя смекалку и пару how-to можно в два такта настроить что угодно. А если еще учесть, что интерфейс RS-232 давно устарел и вот-вот уйдет в небытие, то возникает закономерный вопрос - зачем нужен этот мануал? Во-первых, не все еще перешли на домовые сети или ADSL и оставшимся диал-апщиком не помешает кое-какая информация про их пищащих друзей. Во-вторых, NetBSD выглядит так, как будто кто-то специально всё запутывал. В действительности же это следы былых реалий. В том числе связанных прямо или косвенно с последовательными линиями. Некоторые изложеные в статье исторические факты могут пригодится для дальнейших разборок с современными вопросами.
Может показаться, что статья помимо воды содержит слишком много не относящихся непосредственно к NetBSD подробностей. Всё нормально, так и есть!
С ростом компьютерной индустрии в начале 60-х годов прошлого века назрела необходимость введения единого стандарта на интерфейс последовательного порта. В 1962 году несколько американских промышленных корпораций разрабатывают и скрепляют печатью EIA (Electronic Industries Association) Rекомендованный Sтандарт RS-232. Рекомедованный стандарт отличается от настоятельно рекомендованного тем, что в случае несоблюдения последнего вы сядете в зону, а в случае игнорирования первого - в лужу.
Ужасы про то, что кабель RS232<->RS232 по канонам EIA должен быть 15 метров - это расхожий способ сделать лицо умнее. Берите пример с меня - я придумал лучший: в действительности, стандарт предусматривает не длину, а максимальную ёмкость кабеля (2500 пкФ). В зависимости от технологии приготовления длина кабелюги может значительно возрастать. Скажем, погонная емкость скрученной пары 5 категории 30 пкФ X 1 метр. С другой стороны, существуют (по мнению рунета) удовлетворяющие стандарту кабели длиной порядка 500 метров.
В стакане идут ожесточенные споры, как правильно: RS-232 или EIA-232? Правильно, товарищи, ГОСТ 18145-81. В крайнем случае говорите EIA-232-C, а если хотите, чтобы вас поняли - есть слово "компорт". Даже если вы ярый противник MS-DOS, то произносите "Comm port", поскольку именно такое обозначение применялось в руководствах к самым лучшим друзьям BSD UNIX и самым правильным терминалам серии VT от Digital Equipment.
Я предпочитаю в дальнейшем рассматривать рекомендации не американские (EIA), а международные, которые штампует ITU (подразделение ООН, до 1992 года - CCITT) под кодовыми номерами V.24 и V.28. Почему? Потому что достать первые мне не удалось, а вот вторые - да (с некоторыми затруднениями)
В 24-ой рекомендации группы V (передача данные через телефонные линии) описываются цепи обмена DCE/DTE, а в 28-ой - электрический интерфейс. Однако стандарт EIA-232 более конкретен и помимо этих двух аспектов объясняет конструкцию разъемов и ряд других вопросов.
По стандарту RS-232 предпологалось использовать более 50 цепей обмена. По V.28 в ком-портах должно быть 37 линий. Но чаще всего штырей 25. А еще чаще 9. Микросхемы ком-портов применяющиеся в большистве компьютеров требуют задействовать 7 линий, но самое забавное, что впринципе хватает и трех проводков правда придется выбрать управление потоком XON/XOFF.
В RS-232 различают (изо)синхронный и асинхронный режим передачи данных. Это очень легко – ком-порты PC, большинство терминалов и почти все модемы могут работать только в асинхронном режиме. А то, что постоянно в инструкциях мелькает «Syncro mode» - это так, для «совместимости». В конце абзаца они всегда сознаются, что эта опция «not available».
Поговариvaют, что разъемы последовательных портов иногда могут представлять из себя гнезда и вилки RJ45. Они места меньше занимают, а обжимать кабель обычно легче чем паять.
На заре компьютерной эры, когда ЭВМ повылезали из нор пакетной обработки и обзавелись системами разделения времени, ушлые личности спроектировали коммутируемую сеть данных на основе готовенького телефонного хозяйства. Доступ к такой забавной сети данных по замыслу разработчиков должен был осуществлятся через Аппаратуру Терминалов Данных, или как они еще её называли, Data Terminal Equipment (DTE).
Позже они записали свои планы в рекомендацию CCITT X.25. По этой замечательной рекомендации выходило что цепь электрическая, образованная между двумя абонентами коммутацией телефонных каналов, приравнивается к цепи информационной. Цепь данных или информационная цепь на международном языке звучит как Data Circuit.
Но по причинам, подробно рассмотреным в соответствующей литературе, слаботочный дискретный сигнал используемый в цифровой электронике никак не может пробратся по телефонной паре. Ситуацию осложняет нехорошая привычка телефонистов выделять вам узкую частотную полосу обрубая её на отметке 300 Гц снизу и 3400 Гц сверху. Таким образом они здорово экономят на кабеле.

Обратите внимание – над головой Д. Ритчи неопознанный летатательный аппарат. Девушка за клавиатурой VT-100. Рядом – обычный модем. Снизу акустический модем (куплер) и строчный принтер (и по совместительству терминал). Справа два терминала Teletype-33, за ними мини-ЭВМ Digital Equipment PDP-11.
С учетом этих и других обстоятельств проектировщики будущего X.25 решили, что в схему обязательно нужно добавить Оконечную Аппаратуру Цепи Данных - Data Circuit-Terminating Equipment (DCE), через которую DTE мог бы цеплятся к телефонной паре (или к двум). На роль такой аппаратуры очень хорошо подходили тогдашние акустические модемы "куплеры". Эти умилительные устройства обеспечивали между двумя DTE информационный поток 300 бит на секунду. Помимо этого существовали нормальные варианты модемов. Раньше модемы любили называть Data-Set. Да так сильно, что одну из цепей RS-232 окрестили «Data Set Ready». Но об этом потом.
Да, терминалы данных могли вести обмен через коммутируемую телефонную сеть общего пользования (PSTN) или выделенную телефонную линию (Dedicated/Leased Circuit/Line), однако не менее важным методом был прямой обмен по линии цифровой. Что это такое. Всё просто, берете модемный кабель DTE-DCE, как следует его раскурочиваете, перепаиваете проводники по хитрой схеме и цепляете полученое чудо прямо в порты первого и второго терминала данных, после чего наслаждаетесь информационным обменом. Поскольку число модемов, участвующих в обмене равняется нулю, то такое соединение называли нулевым, а кабель нуль-модемным/нуль-модемом.
Науке известно два вида сигнала: непрерывный и прерывный. При непрерывном сигнале аппаратуре «важно» значение изменяющейся во времени физической величины в любой точке волны на графике. Например, напряжения. Если вы говорите что-то в трубку телефона, то в телефонной паре возникает электромагнитное колебание с формой волны аналогичной той, что давит на перепонку микрофона (помехи +заморочки телефонистов с обрубанием частот опустим). Поэтому непрерывный сигнал часто называют аналоговым.
Сигнал может воспринимать и «умное» цифровое устройство – микросхема или чипсет. Микросхеме важно лишь несколько уровней из всего бесконечного многообразия значений несущего параметра волны. В настоящее время электроника построена на двоичной логике, т.е. важны лишь два уровня сигнала. Например, микросхемы com-портов «рассматривают» приходящую волну и решают, какое значение она несет. Если в течение некоторого (строго определенного) времени напряжение составляет свыше +3В – микросхема снимает нуль, если же напряжение ниже -3В – то единицу.
Так как подобное соответствие дано не небесами, а разработчиками электронной логики конкретной модели микросхемы, то единицу в данном случае называют логической единицей, а нуль – логическим нулем. Когда лог.1 или лог.0 принимается по такой линии RS232, которая относится к группе цепей информации (данных), то логический нуль называют пробелом (SPACE), а логическую единицу – меткой(MARK). Когда лог.1/лог.0 снимается с одной из цепей группы контроля (управления), то лог.1 называют Включено (ON), а лог.0 – Выключено (OFF).
Перекурите и подумайте, если в течении одной секунды напряжение входящего тока составляет более +3В, то сколько логических единиц «сгенерирует» микросхема com-порта? Ответ зависит от скорости «взятия показаний». Если для com-порта установлена (например через getty) скорость 9600 бит/с, то легко догадатся, что микросхема передаст в компьютер 9600 единиц. Конечно, это чуть-чуть не так. Далее вы сами увидите изъян этого примера, но идея всё равно верна.
Процесс интерпретации волны в серию единиц или нулей называется стробированием. Вместо того, чтобы говорить «микросхема снимает показания напряжения тока и записывает в буфер бит 1 или 0», говорят «происходит стробирование сигнала».
При скорости порта в те же самые 9600 бит/с, всё время разбивается микросхемой на равные интервалы длиной 1/9600 секунды с помощью своей подсистемы называемой таймингом. Когда начинается поток (синхронный режим) или пакет данных (асинхронный режим) чип запускает тайминг и начинает стробировать сигнал, заполняя внутренний буфер серией битов, которые постепенно поступают в ядро, а затем в процесс работающий с портом. Таким образом, говоря о скорости порта мы подразумеваем скорость тайминга и, одновременно, скорость стробирования.
Всякие часы, даже атомные постепенно накапливают ошибку. А что говорить про микросхемы стоимостью несколько рублей? Проблему подгонки времени в приемнике и передатчике решают через ввод в схему единого источника синхронизации. Посмотрите - даже если сихрогенератор отклоняется от нормы, то устройства всё равно работают в одно и то же время, синхронно. Для синхронизации в интерейсе RS232/V.24 отведено несколько специализированных цепей обмена.
В синхронном режиме обмена стробирование идет для всего информационного потока сразу. Это значит, что в синхронном режиме не существует понятия «пакет», вместо этого есть единственный битовый поток для каждой из цепей обмена. Пакетом в этом случае можно считать весь поток с начала до конца соединения.
Асинхронный режим точно также как и синхронный требует, чтобы скорости стробирования двух сторон, участвующих в обмене совпадали. Но если в синхронном режиме синхронизация двух сторон происходит для каждого бита всего соединения сразу, то в асинхронном режиме синхронизация длится лишь на протяжении максимум 12 битного пакета – т.н. символа. Поскольку число бит ничтожно мало, то ошибка в тайминге приемника и передатчика не успевает нарости настолько, чтобы бит «выстреливаемый» во время А из передатчика не попал в интервал времени стробирования приемника.
Сумбурно? Возможно, я попытаюсь пояснить на примере.
Допустим, что две стороны информационного обмена это модем и компьютер. Пользователь соединил порт компьютера и порт модема прямым кабелем, включил питание модема и запустил эмулятор терминала на том последовательном порте, на котором «висит» модем. Эмулятор терминала открыл порт на скорости 9600 бит/с. Таким образом для микросхемы COM-порта установилась скорость стробирования 9600 строб/с и интервал тайминга 1/9600 с. Модем был настроен так, чтобы хитрым методом определять скорость «на той стороне» и подгонять под неё скорость своего локального COM-порта. Таким образом COM-порт скорость стробирования и интервал тайминга COM-порта модема стал равен таковым у порта компьютера.
Порты модема и компьютера асинхронные, и, таким образом, единый источник синхронизации отсутствует.
В свободном состоянии по всем линиям данных течет ток. Значение его напряжения менее -3В, что означает логическую единицу, метку.
Пользователь нажимает клавишу «A», что программное обеспечение эмулятора терминала записывает на линию TD (Transmitted Data) микросхемы порта компьютера число 65 (дес). Микросхема порта настроена на режим 8-N-1, что подразумевает прием/посылку пакета (символа) из 8 бит данных, нуля битов паритета, 1 стартового и 1 стопового бита. Вот в каком виде символ отсылается модему:

Обратите внимание, хоть я и указал в таблице столбец для бита паритета, в режиме нашего примера контроль паритета (четности) не используется. Таким образом, длина символа составит 10 битов.
Микросхеме COM-порта компьютера предстоит отправить этот cимвол по линии TD другой стороне. В данное время на линии удерживается логическая единица. Микросхема модема и компьютера стробирует сигнал в разное время, доля отклонения которого хоть и ничтожно мала для человека, но критична для правильной передачи информации. Одним словом, два порты рассинхронизированы.
В момент начала посылки символа COM-порт компьютера начинает тайминг. На время 1/9600 секунды поднимает напряжение на линии TD до +3В. Через ничтожно малое время прохождения тока через поперечное сечение проводника микросхема модема «понимает», что ей пришел сигнал старта. Она тоже запускает тайминг. Таким образом запуск тайминга на приемнике и на передатчике стартует практически сихронно. Конечно, дальше будет накапливаться расхождение. Что делать?
В следующие 8 * 1/9600 секунд в буфере приема COM-порта модема раз-за-разом оказывается 7 бит данных. Тайминг микросхемы COM-порта модема «щелкает» последний раз и последний бит данных успешно стробируется. В буфере модема лежит число 01000001 (2).
Счетчик тайминга наверняка уже накопил хоть и небольшую, но ошибку. Теперь микросхеме COM-порта модема следует сбросить счетчик тайминга и подготовится к приему следующего символа. Что она и делает.
Зачем же нужен стоп-бит? Ведь, казалось бы, всё равно микросхема уже знает, что данные приняты. Неужели стоп-бит нужен лишь для того, чтобы она успела сбросить тайминг перед приемом следующего символа?
Размышления о стоп-бите (:-
Я нигде не нашел явного ответа на этот вопрос. Вероятно авторы подразумевают, что читатель и так догадался, либо что он давно прошел подготовку в техническом ВУЗе и просто освежает свою память.
Ну что же, мне кажется, что стоп-бит нужен для 3 основных целей:
1) за время стоп-бита должен сбросится счетчик тайминга и опорожнится возможно уже переполненный буфер микросхемы.
2) если вместо положенного значения стоп-бита будет другое значение, этот факт можно рассматривать как нарушение формата символа, а следовательно, как сбой передачи.
3) везде пишут, что прием символа начинается не из-за того, что на входе микросхемы зафиксирован логический нуль (старт-бит), а из-за того произошел перепад напряжения. Т.е. из-за того, что на входе зафиксировано напряжение уровня противоположного последнему. Если я все правильно понял, то вывод #3 можно сформулировать так:
Cтоп-бит нужен для того, чтобы сработал старт-бит и его значение должно отличатся от значения стоп-бита.
Cледствием (возможно неверным) из этого (возможно неверного утверждения) является то, что в свободном состоянии на линии может удерживаться как логическая единица, так и логический нуль. Лишь бы старт-бит отличался от значения свободного состояния. Т.е., если в свободном состоянии (когда нету данных) в цепи существует напряжения тока +3В, то старт-бит должен быть выражен напряжением -3В, и наоборот.
Ну что ж, мы рассмотрели чуть ли не под микроскопом асинхронный режим обмена данными, и даже затронули одну из цепей RS-232/V.24 – TD, ответственную за передачу сигнала от DTE к DCE. Теперь вы не будете паниковать при появлении в man-ах просьб установить скорость порта, количество бит данных в символе, бит четности и т.д.
В предыдущем разделе автор как сумел раскрыл тему асинхронного обмена и даже затронул одну из цепей, а именно – TD – передаваемые данные. Напомню, что TD – это сокращение от Transmitted Data и по ней идет поток данных от компьютера (и любого другого DTE) к модему (или какому-то другому DCE).

Аналогичная функция возложена на цепь RD – Received Data – принимаемые данные. Если TD используется для потока данных от DTE к DCE, то цепь RD наоборот. Через ней данные «текут» от модема к компьютеру.
На этом цепи группы данных в стандартном асинхронном порте PC заканчиваются. Взгляните на таблицу. В ней два последних столбца (данные и управление) достаточно четко сие утверждение иллюстрируют. Перечень оставшихся цепей состоит из цепей группы управления (control) и земли.
Цепь V.24/102 «Signal Ground or Common Return» используется как общая земля для всех цепей группы управления и всех цепей группы информации асинхронного com-порта. Мои скромнейшие познания в электронике дают мне моральное право сообщить лишь о том, что эта цепь необходима. Что случится если эту цепь исключить из схемы проверяйте сами.
Цепи 105, 106, 107, 108/2, 109 и 125 составляют группу цепей управления.
Цепь 125 – Calling Indicator – индикатор вызова. Свободное состояние этой цепи - «Выключено». Когда с АТС поступает сигнал вызова, то модем переводит цепь CI в состояние «Включено». Стандарт V.24 ничего не сообщает по поводу того, когда CI должна быть переведена обратно в «Выключено», но другие источники сообщают, что цепь 125 работает «в соответствии с током звонка, переходя в положение ON на время звонка». Проведем эксперимент. Запустим эмулятор терминала, подключив его к порту, на котором висит модем. Модем не должен находится в состоянии автоответа (для чистоты эксперимента). Наберем с мобильника городской номер. Через пару секунд зазвенит телефонный аппарат, а на экране эмулятора терминала появится сообщение RING. Если мы не будем сбрасывать звонок, то заметим, что сообщение появляется синхронно со звонком на телефоне. Посмотрите – в данном случае видно, что эта цепь просто индикатор для человека, модема или программы на компьютере о том, что необходимо снять трубку. Если модем не в режиме автоответа, если человек не снял телефонную трубку и если программа не дала модему команду ATA – то цепь 125 будет периодически переводится из состояние «Включено» в состояние «Выключено» до тех пор, пока вызывные сигналы с АТС не прекратятся. В практическом плане - становится ясно, почему для успешного использования программы типа getty неоходимо, чтобы модем находился в режиме автоответа. Если бы за снятие трубки отвечал не модем, а программа – то getty кушала бы слишком много ресурсов на периодический опрос цепи индикатора звонка.
Цепь 109 – Data Channel Received Line Signal Detector – Канала данных приема сигнала с линии детектор. Сие громоздкое название необходимо для соблюдения святого принципа «солидный документ должен запутывать». В стандарте RS-232 эта цепь носит название «Carrier Detect» - несущая обнаружена. Простые умозаключения позволяют сделать вывод о том, что «несущая» и «канала данных сигнал с линии» - это одно и то же.
Возникает смутное ощущение, что мы не знаем каких-то тайных схем, послуживших источником входновения для официального имени 109 цепи. Я попробовал порассуждать над этим и раскусил их коварный план. Вероятно разработчики V.24 делили сигналы телефонной линии на несколько разновидностей. Очевидно, это были:
- сигнал вызова с АТС
- сигнал набора номера
- прочие служебные сигналы АТС
- речевой сигнал
- модемный сигнал
Казалось бы, в этом списке определены все возможные виды сигналов. Тем не менее, опыт подсказывает, что лампа Carrier Detect на внешнем модеме загорается отнюдь не моментально, а лишь после какого-то времени с момента ответа удаленного модема. Посему я разбил бы последний пункт списка на два:
- модемный сигнал служебного канала
- модемный сигнал канала данных
Короче говоря, когда модемы (DCE) разговариют друг с дружкой втайне от компьютеров (DTE) – то говорят что в телефонной линии существует сигнал служебного канала. Но если модем детектирует (т.е. демодулирует) сигнал предназначенный для передачи в DTE – то этот сигнал называется канала данных сигналом линии связи или сигналом несущим данные. Или несущей волной. Или просто несущей.
Последовательность действий, необходимая для начала детектирования несущей представлена ниже. Условия просты DTE<->DCE---[телефонная сеть]---DCE<->DTE:
1.модем шлет на АТС сигналы набора номера
2.АТС посылает вызывные сигналы удаленному модему
3.удаленный модем снимает трубку, АТС перестает слать вызывные сигналы и телофонная сеть предоставляет двум абонентам линию связи.
4.модемы «снюхиваются» и выбирают самый подходящий протокол соединения – на этой стадии в телефонной линии существует сигнал служебного канала
5.модемы договариваются о параметрах, после чего каждый из них посылает своему DTE сообщение об успешном соединении: CONNECT
6.после этого оба модема переводятся из режима командного в режим данных, а на телефонной линии появляется сигнал канала данных
При достижении пункта 6 – цепь 109 переводится в состояние «Включено», на модеме загорается светодиод «CD», а контролирующая COM-порт программа (допустим ядро NetBSD) узнает об этом.
Цепь 108/2 Data Terminal Ready – терминал данных готов.
Некоторые особенности последовательного порта PC
4.4BSD/NetBSD схема работы с устройствами на портах Rs232/V.24
Пишем и пробуем простую терминалку
Стандартные терминалки cu и tip
chat – Неинтерактивные команды модему
Модель «Паразит/Хозяин»
getty – Определяем точки проникновения в хост
| Прикрепленный файл | Размер |
|---|---|
| 061130_175000.jpg | 39.93 кб |
| 061205_2022034.jpg | 45.03 кб |
Статья обновлена и перенесена в NetBSD wiki: , здесь старый вариант.
sys/arch/i386/stand/mbr/mbr.S/usr/mdec/mbr_*sys/arch/i386/stand/bootxx/pbr.S, /usr/mdec/bootxx_*sys/arch/i386/stand/bootxx/bootxx.S/boot):
* from the start of MBR partition; orВведение
Исходники NetBSD могут быть обновлены с помощью разнообразных средств.
Одно из них есть cvsup, которое по своей представляет из себя "FreeBSD стайл" для обновлений исходников системы.
CVSup - это CVS оптимизированной сетевой дистрибутивной файловой системой общего назначения.
Требования к дисковому пространству
Вам потребуется около 900 MB для полного дерева исходных текстов системы.
Сборка требуемых приложений
Сборка cvsup также легка, как запуск этих двух команд:
# cd /usr/pkgsrc/devel/cvsup ;
# make install clean
Также в дереве pkgsrc имеются прекомпилированные бинарники так что вы можете их вместо сборки cvsup
непосредственно.
Если вы не имеете начальных пакетов вы всегда можете загрузить tarball архив с
ftp://ftp.netbsd.org:/pub/NetBSD/packages/pkgsrc.tar.gz или с вашего локального ftp зеркала.
Список с доступными зеркалами доступен здесь http://www.netbsd.org/mirrors/
Переместите pkgsrc.tar.gz в директорию /usr и распакуйте его:
# tar zxf pkgsrc.tar.gz
Теперь создадим конфигурационный файл для cvsup:
Отредактируем файл /etc/supfile, добавив в него следущие строки:
### Tags: ###
*default release=cvs tag=. # NetBSD CURRENT
#*defaultrelease=cvs tag=netbsd-3.0-PATCH001
#*default release=cvs tag=netbsd-3-0
#*default release=cvs tag=netbsd-3
### CVSup sites: ###
#*default host=cvsup.se.netbsd.org
*default host=cvsup.no.netbsd.org
#*default host=cvsup.jp.NetBSD.org
#*default host=cvsup2.jp.NetBSD.org
#*default host=cvsup.uk.NetBSD.org
#*default host=cvsup.us.NetBSD.org
*default delete use-rel-suffix
*default umask=002
*default base=/usr # Локализация помещения репозитария
*default prefix=/usr # Где положить sup подкаталоги
*default compress # Используйте эту опцию если вы подкючены к Интернету по медленному кагналу связи
netbsd-src
netbsd-pkgsrc # Packages
#netbsd-htdocs # WWW pages
#netbsd-othersrc # Other Sources
#netbsd-xsrc # The X11 distribution
#netbsd-basesrc # The base distribution
#netbsd-syssrc # The kernel distribution
#netbsd-crypto # Crypto sources
#netbsd-sharesrc # The /usr/share distribution
#netbsd-gnusrc # GNU Sources
#netbsd-doc # Documentation
Далее создадим shell скрипт для легкого запуска новой сессии обновления.
Я его разместил в директории /usr/local/sbin/cvsrun, как и переменная LOCALBASE указывает на каталог /usr/local
(переменная LOCALBASE устанавливается в файле etc/mk.conf).
Вы же можете разместить этот скрипт где угодно , например в директорию /usr/pkg/sbin
Скрипт выглядит следущим образом:
#!/bin/sh
export PATH="/usr/local/bin:/usr/local/sbin:/usr/pkg/bin:/usr/pkg/sbin:${PATH}"
CVSUP=${CVSUP:-`which cvsup`}
echo Subject: `hostname` cvsup run output
${CVSUP} -g -L 2 /etc/supfile
Смените права доступа к скрипту так, что бы он мог исполняться только пользователем root
# chmod 700 /usr/local/sbin/cvsrun
Запуск cvsup
Теперь мы просто должны запустить команду cvsrun:
# cvsrun
И ваши исходники будут автоматически обновлены используя ваши описания из файла /etc/supfile.
Вывод команды будеть выглядеть следущим образом:
# cvsrun
Subject: xyz.yazzy.net cvsup run output
Parsing supfile "/etc/supfile"
Connecting to cvsup.no.netbsd.org
Connected to cvsup.no.netbsd.org
Server software version: SNAP_16_1h
Negotiating file attribute support
Exchanging collection information
Establishing multiplexed-mode data connection
Running
Updating collection netbsd-src/cvs
Edit src/bin/date/netdate.c
Add delta 1.25 2006.06.14.16.35.16 ginsbach
Edit src/crypto/dist/ssh/sshconnect.c
Add delta 1.35 2006.06.14.15.36.00 ginsbach
Это все чуваки.
Автор YazzY
Перевод rmx
редакция от 28.11.11
ver. 1.02 fix wip
Чтобы обновить src до current надо заменить (-r netbsd-5-1) на (-A)
Также если хотим обновлять pkgsrc current вместо (-Pd) делаем (-PAd)
А также если мы хотим привести в актуальное состояние rpkgsrc
вместо (-Pd) указываем (-rpkgsrc-2011Q3), на момент написания руководства
2011Q3 является самой свежей.
порядок такой:
приводим в актуальное состояние
cvs -q -z3 update -rpkgsrc-2011Q3
теперь можно выполнять
cvs -q -z3 update -Pd
тем самым поддерживая в актуальном состояние 2011Q3
Не рекомендую использовать для обновления установленных пакетов утилиту pkg_chk
разве что для проверки на свежатину после обновления с cvs.
-------------------------------------------------------------------------------
Состояния файлов после выполнения update или checkout
* Updated
* Patched
* Conflict
* Modified (locally)
* Added
* Removed
* ? (not under CVS control)
+++++++++++++++++++++++++++++++++++++++++++++++++++++++ CVS GET
#!/bin/sh
export CVS_RSH="ssh"
export CVSROOT="anoncvs@anoncvs.se.NetBSD.org:/cvsroot"
cd /usr/
cvs -q -z3 checkout -r netbsd-5-1 -P src
cd /usr/
cvs -q -z3 checkout -r netbsd-5-1 -P pkgsrc
++++++++++++++++++++++++++++++++++++++++++++++++++++++ CVS GET
++++++++++++++++++++++++++++++++++++++++++++++++++++++ CVS UPDATE
#!/bin/sh
export CVS_RSH="ssh"
export CVSROOT="anoncvs@anoncvsNetBSD.org:/cvsroot"
base="pkgsrc-2011Q3"
file="/usr/pkgsrc/doc/$base"
logfilePKG="/scripts/update/LOGUPDATEpkgsrc"
logfileSRC="/scripts/update/LOGUPDATEsrc"
arch=`uname -p'`
cern=`uname -a | awk '{print $6}' | sed 's/(//;s/)//'`
cerndir="/usr/src/sys/arch/$arch/compile/$cern"
if [ -d $cerndir ]
then
cd $cerndir
make clean
fi
cd /usr/pkgsrc
if [ -e $file ]
then
cvs -q update -Pd >$logfilePKG
cd /usr/src
cvs -q update -rnetbsd-5-1 -Pd >$logfileSRC
else
cvs -q update -r$base >$logfilePKG
cvs -q update -Pd >$logfileSRC
cd /usr/src
cvs -q update -rnetbsd-5-1 -Pd >$logfileSRC
fi
++++++++++++++++++++++++++++++++++++++++++++++++++++++ CVS UPDATE
++++++++++++++++++++++++++++++++++++++++++++++++++++++ CVS wip GET
#!/bin/sh
export CVS_RSH="ssh"
export CVSROOT="anoncvs@anoncvs.netbsd.se:/cvsroot"
#SSH RSAv2 fingerprint: b6:6b:fc:a6:24:a0:2a:32:d0:d3:25:83:ca:33:64:08
mkdir -p /usr/pkgsrc/wip
cd /usr/pkgsrc/wip
cvs -q -z9 checkout -P wip
mv /usr/pkgsrc/wip/wip/* /usr/pkgsrc/wip
rm -d /usr/pkgsrc/wip/wip
++++++++++++++++++++++++++++++++++++++++++++++++++++++ CVS wip GET
++++++++++++++++++++++++++++++++++++++++++++++++++++++ CVS wip UPDATE
#!/bin/sh
#SSH RSAv2 fingerprint: b6:6b:fc:a6:24:a0:2a:32:d0:d3:25:83:ca:33:64:08
export CVS_RSH="ssh"
export CVSROOT="anoncvs@anoncvs.netbsd.se:/cvsroot"
logfileWIP="/scripts/update/LOGUPDATEwip"
cd /usr/pkgsrc/wip
cvs -q -z3 update -Pd >$logfileWIP
++++++++++++++++++++++++++++++++++++++++++++++++++++++ CVS wip UPDATE
++++++++++++++++++++++++++++++++++++++++++++++++++++++ CVS wip ALL
#!/bin/sh
export CVS_RSH="ssh"
export CVSROOT="anoncvs@anoncvs.netbsd.se:/cvsroot"
logfileWIP="/scripts/update/LOGUPDATEwip"
cd /usr/pkgsrc/wip
cvs -q -z3 checkout -P wip
cd /usr/pkgsrc/wip
cvs -q -z3 update -Pd >$logfileWIP
++++++++++++++++++++++++++++++++++++++++++++++++++++++ CVS wip ALL
ну и
если ставим
make install clean clean-depends
если обновлять
make update clean clean-depends
если заменить
make replace clean clean-depends
Будьте осторожны при выполнение make update так как может похезать засимости, процесс обновления make update проходит так, обновляемый объект прежде удаляется и его зависимости которые можно обновить, потом ставиться новый, и если у вас в /usr/pkgsrc/mk/defaults/mk.conf не стоит ALLOW_VULNERABLE_PACKAGES=yes то процесс может прерваться если попадется пакет который имеет проблемы с безопасностью, и придется ставить все в ручную что похезалось.
Обязательно делаем Чистку (clean clean-depends)! чтобы потом обновления были корректны.
Благодаря системе автоматической сборки , в NetBSD, вы можете легко собрать новый релиз из текущих CVS исходников. Я покажу вам шаг за шагом, как собрать загрузочный, установочный CD-ROM для платформы i386. Вы должны иметь рабочую NetBSD систему и подкючение к интернету.
Содержание этого howto.
Требования к пространству диска.
Получение исходников из CVS репозитария.
Сборка рабочего инструментария.
Сборка релиза.
Создание ISO образа.
Запись образа.
Дополнительная информация.
Требования к дисковому пространству.
Вам потребуется минимум 5.1 Gb дискового пространства для сборки полного релиза. Временно, вам необходимо 1.6 Gb для исходников src и xsrc. Также 2.4 Gb объектных файлов будут перемещены в директорию obj после сборки релиза.
Получение исходников из CVS репозитария.
Создайте поддиректории src, xsrc и objdir, как пользователь root, в директории /usr
# cd /usr
# mkdir src xsrc objdir
Также, мы создадим следующие поддиректории в /usr: tooldir, releasedir, destdir потому что мы хотим иметь чистую сборку и выделить эти директории из директории src, в которой обычно собираются релизы.
# mkdir tooldir releasedir destdir
Сменим владельца этих директорий:
# chown jens src/ xsrc/ objdir/ tooldir/ releasedir/ destdir/
Следущие шаги могут быть выполнены обычным пользователем:
# logout
$
Устанавливаем переменные среды CVSROOT: (Для этого, пожалуйста, выберете зеркало ближайшее к вам)
В случае если вы пользуетесь csh:
% setenv CVSROOT anoncvs@anoncvs3.de.NetBSD.org:/cvsroot
Если же вы пользуетесь Борн совместимыми оболочками (sh, ksh, zsh, bash...):
$ export CVSROOT=anoncvs@anoncvs3.de.NetBSD.org:/cvsroot
Устанавливаем переменную окружения CVS_RSH:
$ export CVS_RSH=ssh
Для src директории необходимо 1500 Mb дискового пространства и 579 MB для директории xsrc.
Теперь проверим исходники current ветки.
$ cvs checkout -PA src
$ cvs checkout -PA xsrc
Или вы можете проверить конкретный релиз
$ cvs checkout -rnetbsd-3-0 -PA src
$ cvs checkout -rnetbsd-3-0 -PA xsrc
Построение рабочего инструментария.
Инструментарий содержит программное обеспечение которое необходимо для сборки NetBSD, такой как GNU C-компилятор и другие средства. Это дает нам уверенность в том, что NetBSD может быть построена на большинстве Unix™ систем. Вы можете опустить этот шаг, если вы хотите построить новый релиз, потому что релиз всегда включает средства для сборки.
$ cd /usr/src
$ ./build.sh -T ../tooldir -D ../destdir -R ../releasedir -O ../objdir -U tools
build.sh started: Sat Jan 22 21:34:56 CET 2005
No /usr/tools/bin/nbmake, needs building.
Bootstrapping nbmake
MACHINE: i386
MACHINE_ARCH: i386
TOOLDIR path: /usr/tooldir
DESTDIR path: /usr/destdir
RELEASEDIR path: /usr/releasedir
Created /usr/tools/bin/nbmake
makewrapper: /usr/tools/bin/nbmake-i386
Updated /usr/src/obj/tooldir/bin/nbmake-i386
Tools built to /usr/src/obj/tooldir
build.sh started: Sat Jan 22 21:34:56 CET 2005
build.sh ended: Sat Jan 22 21:41:26 CET 2005
Сборка релиза
Аргументы обрабатываемые скриптом build.sh могут буть найдены в файле
В этом примере:
Мы собираем релиз, как обычный пользователь (не root): -U
Мы собираем исходники X11R6 (Xservers): -x
Мы используем раздельные директории: -T, -D, -R, -O, -X
Мы перемещаем содержимое директорий tooldir и destdir до сборки: -r
Мы собираем релиз: release
$ ./build.sh -T ../tooldir -D ../destdir -R ../releasedir -O ../objdir -X ../xsrc -U -x -r release
Сам процесс занимает как минимум два часа на сервере класса high-end, а обычно намного больше, в зависимости от вычислительной мощности вашего компьютера.
build.sh started: Sat Jan 22 21:50:47 CET 2005
No nonexistent/bin/nbmake, needs building.
Bootstrapping nbmake
MACHINE: i386
MACHINE_ARCH: i386
TOOLDIR path: /usr/src/tooldir
DESTDIR path: /usr/src/destdir
RELEASEDIR path: /usr/src/releasedir
Created /usr/src/tooldir/bin/nbmake
makewrapper: /usr/src/tooldir/bin/nbmake-i386
Updated /usr/src/tooldir/bin/nbmake-i386
Successful make release
build.sh started: Sat Jan 22 21:50:47 CET 2005
build.sh ended: Sun Jan 23 01:20:43 CET 2005
Если сборка завершится неудачно, в связи с нехваткой места на установочных дискетах, вам будет полезно прочесть: Сборка установочных наборов, когда вы не можете собрать установочные дискеты.
Создание ISO-образа
Для создания ISO-образа только добавьте соответствующую опцию iso-image
$ ./build.sh
Результирующий ISO-образа будет создан в директории relasedir/platform/installation/cdrom/
При помощи этой опции будет создан ISO-образ только на платформах которые могут загружаться с этого типа носителя .
Прожиг образа
# cdrecord -dev=/dev/rcd0d -data -pad -v NetBSD-install.iso
Дополнительная информация
Автор Zafer
Перевод rmx
В этой статье я опишу, шаг за шагом, как установить ОС NetBSD на корневой раздел типа LFS.
Содержание
1 Введение
2 Что такое LFS
3 Преимущества использования
4 Минусы
5 Достижение поставленной цели
6 Что нам потребуется
7 Загрузка с LiveCD
8 fdisk
9 disklabel
10 newfs_lfs
11 Монтирование
12 Распаковка установочных наборов
13 Конфигурация новой системы
14 Загрузочный код
15 Создание файлов устройств
16 Перезагрузка
17 Дисковые возможности
18 Удаленная установка
Введение
Описанные действия в статье могут привести к потери информации на вашей компьютере. Поэтому крайне желательно тестировать описанные ниже действия на виртуальной машине. В этом примере система NetBSD будет установлена на LFS раздел без использования FFS разделов. Существует большое количество способов как это сделать. В этой же статье я опишу, как это делаю я.
Что такое LFS
LFS это экспериментальная (на момент написания статьи) реализация Файловой системы структурированных логов. Например, файловая система ZFS от компании SUN также является таковой.
Преимущества использования
Файловая система LFS может быстро восстановиться после аварии, потому что ее использование не требует запуска утилиты fsck для целого диска. Операции же записи/чтения выполняются в LFS быстрее чем файловой системе FFS.
Минусы
LFS не работает на ядрах с поддержкой мультипроцессорных архитектур (на момент написания статьи).
Размер раздела LFS лимитирован 2-мя терабайтами.
LFS не подходит для компьютеров, на которых постоянно выполняются операции с высокой дисковой активностью (ftp сервера и др.).
Файловая система не может корректно выполнять операции чтения/записи, когда диск полностью заполнен. Поврежденная файловая система это обычное явление в таких ситуациях.
Достижение поставленной цели
Нам необходимо установить ОС NetBSD с нуля без использования утилиты sysinst, так как в sysinst отсутствует поддержка LFS (на момент написания статьи). Возможно в будущем эта ситуация будет исправлена.
Что нам потребуется
Физический доступ к серверу.
Нам необходим NetBSD LiveCD для доступа к жестким дискам. В нашем примере подойдут только LiveCD с поддержкой файловой системы LFS. Следовательно загрузите Jibbed LiveCD отсюда
Нам также необходимы установочные наборы NetBSD (base.tgz, comp.tgz, etc.tgz, man.tgz, misc.tgz, text.tgz ...).
Рекомендую скачать их все.
Вы также можете скачать последние наборы из NetBSD autobuild кластера (ftp://ftp.netbsd.org/pub/NetBSD-daily/HEAD/) или Вы можете собрать Ваш собственный релиз и использовать Ваши собственные установочные наборы.
Руководство о том как собрать текущий релиз может быть взят здесь: Как собрать NetBSD-current.
Установочные наборы могут быть получены из LiveCD несколькими способами. Например посредством протокола http, ftp или scp.
Загрузка с LiveCD.
Загрузитесь с Вашего LiveCD дистрибутива NetBSD на сервере, на который Вы хотите устанавливать систему. Смените текущего пользователя на пользователя root (su -).
fdisk
Теперь создайте, при помощи утилиты fdisk активный NetBSD (ID 169) слайс.
# fdisk -iu wd0
disklabel
Используйте утилиту disklabel для того что бы подготовить Ваш жесткий диск. Эта часть руководства не рассказывает о тонкостях работы с программой disklabel. За подробной информацией по disklabel обратитесь к соответствующей главе
руководства The NetBSD Guide. Введите
# disklabel -i -I wd0
в командной строке для перевода утилиты disklabel в интерактивный режим. Я предполагаю что в качестве устройства, на который вы будете устанавливать систему – есть Ваш жесткий диск wd0. С другой стороны Вы можете использовать устройства типа flash накопителей и другие (например, sd0, ld0...)
Мы создадим один большой раздел "a" в нашем примере. Но Вы свободно можете потренироваться с альтернативной схемой разбивки во время второй попытки инсталляции.
Используйте 4.4LFS как тип корневой файловой системы.
Раздел "b" будет использоваться как swap раздел. Начиная с конца раздела "a" и до самого конца диска ($).
Разделы "c" и"d" не используются.
Удалите все остальные разделы (e-p).
Когда Вы закончите, Ваш NetBSD слайс будет разбит следующим образом:
# size offset fstype [fsize bsize cpg/sgs]
a: 73400320 63 4.4LFS 0 0 0 # (Cyl. 0*- 72817*)
b: 2097152 73400383 swap # (Cyl. 72817*- 77504*)
c: 78124937 63 unused 0 0 # (Cyl. 0*- 77504*)
d: 78125000 0 unused 0 0 # (Cyl. 0 - 77504*)
newfs_lfs
Теперь Вы можете создать lfs раздел на диске который был только что размечен.
# newfs_lfs wd0a
Существует множество опций, которые принимает утилита newfs_lfs различного типа и размеров фрагментов файла. Но я рекомендую использовать размер сегмента в 1 Мб, так как другие значения этого параметра могут сделать работу вашей файловой системы нестабильной.
Монтирование
Окончание нашей инсталляции тривиально. Мы монтируем файловую систему и распаковываем наши установочные наборы.
# mkdir /tmp/targetroot
# mount /dev/wd0a /tmp/targetroot
Создаем другую директорию, в которой сохраним наши установочные наборы
# mkdir /tmp/sets
Перейдем в нее.
# cd /tmp/sets
И загрузим наборы, например по протоколу ftp. Еще раз повторюсь, что этими установочными наборами могут быть наборы создаными Вами лично заранее и размещеными на локальном сервере либо загружены с официального серевера проекта NetBSD.
# ftp 192.168.0.200
...
Распаковка установочных наборов
Распакуем наборы, используя дополнительную опцию -p (это важно).
# cd /tmp/sets
# tar xvzpf base.tgz -C /tmp/targetroot
повторим это действие для всех наборов, но распокавать нужно только одно GENERIC ядро с именем kern-GENERIC.tgz
Конфигурация новой системы
Перейдем в директорию /tmp/targetroot и выполним базовую конфигурацию. Редактируем файл etc/fstab
/dev/wd0a / lfs rw 1 1
/dev/wd0b none swap sw 0 0
ptyfs /dev/pts ptyfs rw 0 0
tmpfs /tmp tmpfs rw
ptyfs и tmpfs могут использоваться опционально, но их использование рекомендовано.
Редактируем файл etc/rc.conf
rc_configured=yes
Процесс загрузки ядра
Скопируем вторичный загрузчик в директорию /tmp/targetroot.
# cp /tmp/targetroot/usr/mdec/boot /tmp/targetroot
а также первичный загрузочный код
# /usr/sbin/installboot -v -m i386 -o timeout=5,console=pc /dev/rwd0a /tmp/targetroot/usr/mdec/bootxx_lfsv2
Создание файлов устройств
Не забудьте создать все файлы устройств,
# cd /tmp/targetroot/dev
# ./MAKEDEV all
что займет некоторое время.
Перезагрузка
Выполним синхронизацию и перезагрузим систему
# sync
# sync
# sync
# reboot
Если все шаги установки были выполнены корректно, то Ваша система должна загрузиться. Загрузившись, вы можете дальше настраивать систему под свои нужды.
Дисковые возможности файловой системы
Не рекомендую заполнять ваш LFS раздел более чем на 75%, так как это может привести к его повреждению (справедливо на момент написания статьи).
Удаленная установка
Если Вы желаете установить LFS корневую файловую систему на Ваш сервер удаленно, Вам потребуется доступ к консоли. Хотя это требование не является критичным. Минимум что Вам потребуется это rescue консоль. В большинстве случаев она представляет собой linux ramdisk. Один путь для этого это сборка загрузочных дискет с поддержкой LFS и наличием утилиты newfs_lfs, но из-за небольшого размера дискеты вам потребуется удалить с нее другие ненужные утилиты.
Далее напишите маленький shell скрипт, который будет выполняться каждый раз когда ваш сервер будет грузиться с дискеты. В этом скрипте должны выполняться все шаги из этого руководства, а также операция добавления нового пользовательского аккаунта и настройка сетевых параметров (конфигурация resolv.conf и др.), если Вы хотите иметь возможность регистрироваться в системе позже. Создайте бэкап первых 5 Мб, которые Вы перезапишите с помощью
утилиты dd. Теперь, с помощью команды dd, перезапишите дискету на жесткий диск сервера и перезагрузитесь. Удачи!
Перевод: rmx
Авторы:
перевод оригинала: untitled;
авторская переработка и форматирование: EvAn <evan dot bsd at mail dot ru>.
В этой статье рассматривается управление пакетами программного обеспечения с помощью:
В основе статьи лежит заметка .
pkgmanager - это wip-утилита по управлению коллекцией пакетов из pkgsrc. Домашняя страничка проекта: . Рассмотрим метод управления установкой, удалением и обновлением пакетов.
Для начала нам потребуется дерево pkgsrc. Если у Вас его еще нет, можете скачать и распаковать его:
#wget -c -P /tmp ftp://ftp.netbsd.org/pub/pkgsrc/current/pkgsrc.tar.bz2 или #wget -c -P /tmp http://ftp.netbsd.org/pub/pkgsrc/current/pkgsrc.tar.bz2 #tar xfz /tmp/pkgsrc.tar.bz2 -C /usr
Вы можете также загрузить тарбол с pkgsrc сжатый gzip (tar.gz), но тогда Вам придется потратить лишних 9 Мб трафика. Кроме того вместо current можно загрузить последний стабильный слепок, например, на момент написания статьи это pkgsrc-2006Q3. Хотя, думаю, если Вы пользователь NetBSD, то дерево pkgsrc у Вас уже есть. ;-)
Загрузите также и wip-дерево:
#wget -c -P /tmp http://pkgsrc-wip.sourceforge.net/snapshots/pkgsrc-wip-$(date+%Y%m%d)-snapshot.tar.gz #tar xfz /tmp/pkgsrc-wip-$(date +%Y%m%d)-snapshot.tar.gz -C /usr/pkgsrc
Теперь установим pkgmanager:
#cd /usr/pkgsrc/wip/pkgmanager #make install clean clean-depends
Посмотрим как это работает.
Например, нам необходимо установить pkgfind:
#pkgmanager install pkgtools/pkgfind
pkgtools/pkgfind будет добавлен в want-list, скомпилирован и установлен, со всеми зависимостями, естественно.
Удалим пакет pkgfind:
#pkgmanager uninstall pkgtools/pkgfind
pkgtools/pkgfind будет вычеркнут из want-list и удален из системы, так же как и все ненужные пакеты собранные во время его установки.
Сначала обновим дерево pkgsrc:
#cd /usr/pksrc/ #cvs update #cd /usr/pkgsrc/wip #cvs update
После обновления деревьев просто наберите:
#pkgmanager sync
Вот и все!
Если Вы хотите немного пооптимизировать, то можно использовать devel/cpuflags. Установите его и добавьте следующие строки в начало вашего /etc/make.conf:
.ifdef BSD_PKG_MK .sinclude "/usr/pkg/share/mk/cpuflags.mk" .endif
Ссылка на оригинал: .
pkgsrc-wip:
Это короткое howto о том как сконфигурировать мультимедийные клавиши нашей клавиатуры в NetBSD. Сразу переходим к делу.
Ищем интересующий нас пакет в pkgsrc (xbindkeys)
$ pkgfind xbindkeys
x11/xbindkeys: Launches shell commands with your keyboard or your mouse
Переходим в вышеуказанную директорию и выполняем команду
# make && make install && make clean && make clean-depends
Окей. Нужный нам пакет (xbindkeys.) у нас уже установлен в системе. Самое время для его конфигурации. Переходим в наш домашний каталог и создаем файл .xbindkeysrc
#cd ~/ && touch .xbindkeysrc
Теперь запускаем другой виртуальный терминал и в одном из них запустим наш любимый текстовый редактор а в другом будем определять мультимедийные клавиши.
Ближе к делу.
$ xbindkeys -k
И нажимаем клавиши которые мы хотим определить. А это выглядит вот так:
$ xbindkeys -k
[...]
"NoCommand"
m:0x0 + c:223
NoSymbol
Нам же нужна только часть
"NoCommand"
m:0x0 + c:223
Копируем ее в в файл ~/.xbindkeysrc и редактируем текст между апострофами на то, какую команду мы хотим выполнить
после нажатия этой мультимедийной клавиши.
Для остальных клавиш поступим аналогично. Ниже следует парочка команд, которые мы можем вписать в поле "NoCommand":
xmms -r # вернутся в xmms-e к предыдужей mp3шке
xmms -p # на следущую mp3шку
xmms -u # пауза xmms-а
aumix -v +5 # увеличить громкость в миксере на 5 единиц
aterm -e irssi # запуск irssi в aterm-e
Теперь у нас полность готовый конфигурационный файл. Но если xbindkeys не запустится при старте системы, наши мультимедийные клавиши не будут работать.
Нам следует добавить еще одну строчку в файл ~/.xinitrc перед строкой где у нас запускается наш wm.
#exec xbindkeys & exec xfce4-session
Вот и все!
Обходим firewall/proxy вашей компании с помощью...
net/corkscrew: утилита для тунелинга ssh через http прокси.
net/tsocks: Библиотека прозрачных SOCKS прокси.
www/tinyproxy: Легкая http/ssl прокся
Большинство компаний ограничивают своим юзерам доступ в интернет, заставляя
использовать HTTP прокси. Если вам этого не хватает для полноценного
(псевдо) рабочего дня, вы хотите посещать любые сайты, слушать любое
интернет радио, играть в покет онлаин, знайте, решение есть.
1) Настройте openSSH сервер на своем домашнем компьютере и поставьте его на
443 порт.
Если на вашем офисном компьютере стоит windows:
2) Вы должны установить HTTP прокси на ваш домашний компьютер, так как вы
несможете использовать openssh и все прелести socks proxy -D,
например tinyproxy - легко конфигурируется и хорошо работает.
# pkgmanager install www/tinyproxy
# cp /usr/pkg/share/examples/rc.d/tinyproxy /etc/rc.d/
# echo 'tinyproxy=YES' >> /etc/rc.conf
# cp /usr/pkg/share/examples/tinyproxy/tinyproxy.conf.default /usr/pkg/etc/ti nyproxy/tinyproxy.conf
# vi /usr/pkg/etc/tinyproxy/tinyproxy.conf
Откройте фаил tinyproxy.conf и убедитесь в наличии строк
Port 8888
Bind 127.0.0.1
ConnectPort 443
Таким образом наш http proxy будет слушать только localhost на 8888 порту
и позволит заходить на https сайты.
3) Для коннекта будем использовать putty. Откройте меню Connection/Proxy
и введите туда настройки http прокси. Затем откройте меню
Connection/SSH/Tunnels, включите port forwarding для редиректа локального
порта 8888 на localhost:8888 (на удаленной машине, у вас дома).
Затем откройте меню Connection и включите посылание null пакетов каждые
10 секунд для поддержания соединения. Как тольно закончите, перейдите в
меню Session, введите адрес вашего домашнего компьютера, порт 443, SSH
и попробуйте законектиться.
4) Когда вы подключитесь к вашему серверу, необходимо проверить,
работает ли редирект. Запустите cmd.exe, выполните netstat -an и
посмотрите, слушает ли сервер 8888 порт. Запустите веб броузер и настройте
его на работу через http proxy на localhost:8888. Теперь вы можете
заходить на любые сайты, наслаждайтесь.
Если на офисном компьютере стоит unix, например NetBSD:
2) Установите corkscrew. Это позволит вам использовать ssh через http прокси.
# pkgmanager install net/corkscrew
3) Создайте фаил под названием auth_proxy, например. Запишите туда логин и
пароль для коннекта на http прокси, если надо.
# echo 'login:pass' >> ~/.ssh/auth_proxy
4) Создайте фаил под названием config_out, например. (192.168.3.10 - адрес
прокси, которую я вынужден использовать)
# echo 'ProxyCommand /usr/pkg/bin/corkscrew 192.168.3.10 80 %h %p ~/.ssh/auth_proxy' >> ~/.ssh/config_out
5) Добавьте алиас в .bashrc
alias ssh_out='ssh -F ~/.ssh/config_out'
6) Можно конектиться к домашней машине с опцией -D.
# ssh_out -D 8080 yourcomputer.hostname.org -p 443
Теперь вы имеете SOCK4/5 прокси, слушающий 8080 порт.
8) Все что нам надо, это редирект всех TCP запросов на этот socks proxy.
Для этого мы будем использовать замечательную утилиту tsocks.
# pkgmanager install net/tsocks
# echo 'local = 192.168.0.0/255.255.255.0' >> /usr/pkg/etc/tsocks.conf
# echo 'server = 127.0.0.1' >> /usr/pkg/etc/tsocks.conf
# echo 'server_port = 8080' >> /usr/pkg/etc/tsocks.conf
192.168.0.0/255.255.255.0 - моя локальная сеть, используйте свою!
9) Для активации tsocks надо определить переменную LD_PRELOAD:
# export LD_PRELOAD=/usr/pkg/lib/libtsocks.so
Все, теперь все программы, запущеные через этот шел, будут использовать
прокси, тоесть все будет проходить через ssh тунель в ваш домашний
компьютер, который в свою очередь будет перенаправлять все это в нужные
места. Все будет обсолютно так, как-будто вы сидите дома.
Заметьте, suid программы и программы, запущенные через sudo не будут
использовать tsocks, для этого вам придется логиниться рутом.
ССЫЛКА НА ОРИГИНАЛ: http://diwp.blogspot.com/
NetBSD 2.0, 2.0.x
Version 2.4.1 qnub[lost][Russian NetBSD team]
Содержание.
Предыстория.
Вступление в ряды.
SVN клиент и его Настройка.
Правила перевода.
Отправка перевода в репозиторий.
Обновление локального репозитория.
Проверка изменений в версиях.
Линки.
Предыстория. Ни для кого не секрет, что ОС NetBSD в России не может похвастаться огромной популярностью, в силу чего не может она и похвастаться наличием необходимого количества документации на русском языке. Ежели заинтересовала данная ОС и есть желание исправить положение дел на фронте документации то будет не безынтересно узнать, что существует проект перевода документации по NetBSD на русский язык. На странице сайта NetBSD указано, что официально занимается переводом Mike M. Volokhov mishka@apk.od.ua, язык русский. У проекта есть свой лист рассылки, архив которой можно посмотреть по адресу , а подписаться . Так вот этот человек предоставил желающим возможность составить ему компанию в этом не легком деле посредством соучастия в переводе. Синхронизация действий участников перевода осуществляется средствами репозитория svn, для доступа к которому достаточно зарегистрироваться. Получить письмо с подтверждением права доступа к svn репозиторию документации. в начало
Вступление в ряды. Как я уже говорил, чтобы попасть в команду нужно всего лишь отправить письмо, только вот письмо не простое, а... оформленное по определенному шаблону. Чтобы соблюсти все требования нам понадобится программа PuTTYgen (puttygen.exe), которую можно скачать по адресу: . Для регистрации в проекте и дальнейшем подключении к репозиторию необходимо сгенерировать RSA или DSA ключ. Генерируется он программой PuTTYgen следующим образом:
RuNetBSD (Subversion)runetbsd".Real Name: Vadim N. Lopatyuk
Login: qnub
E-mail: qnub@mail.ru
Projects: runetbsd
SSH DSA key: ssh-dss AAAAB3NzaC1kc3MAAACBAKsZU2RJORqscxMtieA9sjxp/
<вырезано>
wPD6KgW6U8X2BTACZ5sKH7ufrbo73CEx2K769w== RuNetBSD (Subversion)
в начало
SVN клиент и его настройка.
Для подключения к репозиторию нам понадобится TortoiseSVN, последнюю версию которого можно скачать по адресу:
С установкой программы есть один нюанс - глюк Microsoft Installer'а. Если при попытке установки ничего не вышло - скопируйте инсталляционный файл в корень диска c:\ и запустите установку снова.
Следующим шагом будет настройка соединения TortoiseSVN с репозиторием сервера документации svn.runetbsd.ru. Так как доступ к репозиторию осуществляется через протокол ssh2. Снова кликаем правой кнопкой на папке с локальным репозиторием и выбираем "TortiseSVN/Settings". В открывшемся окне переходим на вкладку "Network" и в поле "SSH client:" прописываем путь к файлу "tortoiseplink.exe", это поставляемый в комплекте клиент ssh. Если установка происходила по умолчанию, то это:
C:\Program Files\TortoiseSVN\bin\TortoisePlink.exe
В этой же строке необходимо дописать ключи, с которыми будет запускаться ssh клиент:
| обязательные: | |
| -ssh | использовать SSH; |
| -l | имя пользователя для соединения; |
| -i | полный путь к файлу ПРИВАТНОГО сегенерированного ключа; |
| -pw | пароль, использованный при генерации ключа. |
| необязательный: | |
| -С | использовать сжатие SSH. |
У меня выглядит так:
C:\Program Files\TortoiseSVN\bin\TortoisePlink.exe -ssh -l qnub -C -i D:\private\DevNetSVN.ppk -pw MySuperMegaPassword!
Жмем "ОК".
Сначала необходимо создать локальную папку, где будет лежать репозиторий. Далее, кликнув на ней правой кнопкой, выбрать "Export...".
В поле "URL of repository:" вводим следующее:
svn+ssh://svn.runetbsd.ru/tnp/runetbsd/svnroot
Жмем "ОК", появится информационное окно и программа начнет загружать весь репозиторий с сервера в нашу папку.
В принципе репозиторий довольно обширный и многие вещи могут не понадобитья. По этому желающие могут скачть только необходимое или воспользоваться SVN Exloplorer'ом и выбрать нужное.
Основные пункты:
svn+ssh://svn.runetbsd.ru/tnp/runetbsd/svnroot/htdocs содержит все документы находящиеся на сайте .svn+ssh://svn.runetbsd.ru/tnp/runetbsd/svnroot/htdocs/guide содержит только "The NetBSD guide", но на всех языках офисиально зарегистрированных на NetBSD (в т.ч. и наш проект перевода).svn+ssh://svn.runetbsd.ru/tnp/runetbsd/svnroot/extradocs содержит любую информацию, которой нет на сайте , но которая относится к NetBSD.svn+ssh://svn.runetbsd.ru/tnp/runetbsd/svnroot/extradocs/driverguide содержит файлы проекта перевода документации по написанию дорайверов для NetBSD.svn+ssh://svn.runetbsd.ru/tnp/runetbsd/svnroot/extradocs/reference_book содержит файлы проекта по созданию справочника NetBSD.Правила перевода. Выбрав себе документ для перевода, сообщите об этом в листе рассылки netbsd-docs-ru@netbsd.org Чтобы другие не переводили уже переводимое в данный момент. Правила перевода разберем на примере перевода главы "Система rc.d". В репозитории в папке с переведенными документами находится файл "PROGRESS". В него нужно добавить название выбранного для перевода файла и заполнить поля. Если файла не существовало его необходимо создать и добавить+настроить как обычный документ, что будет описано далее. Вид файла следующий:
$Id: PROGRESS 134 2005-05-12 09:01:13Z mishka $+---------------------+---------------+-------------------+
| Chapter | Translator | Condition |
+---------------------+---------------+-------------------+==========содержание документа================
Note: Condition - condition of work, e.g.: done;
in progress;
planning;
left.
chap-boot.xml msgibnev planing
chap-rc.xml qnub done
chap-pack.xml qnub in progress
htdocs/guide/en/chap-rc.xml. Копируем его во временную папку, не находящуюся в пределах локальной копии репозитория. (Рекомендую для любых операций над файлами и папками использовать какой-нибудь консольный файл менеджер, иначе войдя в стандартных окнах в папку с репозиторием вы будете ожидать пока TortoiseSVN проверит все его содержимое, дабы выдать вам корректную иконку папки, т.к. они меняются в зависимости от состояния содержимого.) Редактируем обычным текстовым редактором, поддерживающим сохранение документов в формате Unix (перевод строки не CRLF как в windows, а просто LF) и в кодировке koi8-r. Я использую GridinSoft Notepad for Windows 9x/NT4/2000/XP Version LITE, т.к. он бесплатен и довольно комфортен в использовании (имеет кучу подсветок синтаксисов), имеет русский интерфейс, плюс полностью соответствует нашим требованиям. Скачать программу можно с<chapter id="chap-rc">
<title>rc.d System</title><para>As of &os; 1.5, the startup of the system changed
to using rc-scripts for controlling services, similar to the
init-system System V and Linux use, but without runlevels.
This chapter is an overview of the rc-system and its
configuration on &os;.</para>
<chapter id="chap-rc">
<title>Система rc.d System</title><para>Начиная с версии &os; 1.5 загрузка системы изменена для
использования rc-сценариев (скриптов), для контроля за сервисами,
используемых в некоторых системах инициализации (init-system) System
V и Linux, но без уровней запуска (runlevels). Эта глава - обзор rc-
системы и ее конфигурации в &os;.</para><para>As of &os; 1.5, the startup of the system changed
to using rc-scripts for controlling services, similar to the
init-system System V and Linux use, but without runlevels.
This chapter is an overview of the rc-system and its
configuration on &os;.</para>
<chapter id="chap-rc">
<title>Система rc.d</title><para>Начиная с версии &os; 1.5 загрузка системы изменена для
использования rc-сценариев (скриптов), для контроля за сервисами,
используемых в некоторых системах инициализации (init-system) System
V и Linux, но без уровней запуска (runlevels). Эта глава - обзор rc-
системы и ее конфигурации в &os;.</para>
<!--
$NetBSD$
OrigDoc: <RCS ID тег оригинального документа>
OrigPath: <путь к оригинальному документу, включая htdocs>
ruNetBSD Responsible: <имя и адрес автора перевода>
ruNetBSD $LastChangedBy$
ruNetBSD $LastChangedDate$
ruNetBSD $LastChangedRevision$
-->
<!-- $NetBSD: chap-rc.xml,v 1.9 2004/12/14 14:09:02 wiz Exp $ --> я оставляю только NetBSD: chap-rc.xml,v 1.9 2004/12/14 14:09:02 wiz Exp . По остальным двум строкам все станет понятно из примера. Вот что у меня вышло:<!--
$NetBSD$
OrigDoc: NetBSD: chap-rc.xml,v 1.9 2004/12/14 14:09:02 wiz Exp
OrigPath: htdocs/guide/en/
ruNetBSD Responsible: Vadim N. Lopatyuk <qnub@mail.ru>
ruNetBSD $LastChangedBy$
ruNetBSD $LastChangedDate$
ruNetBSD $LastChangedRevision$
-->
htdocs/guide/ru/chap-rc.xml.Отправка перевода в репозиторий. Ну вот и закончен перевод. Можно перекурить и погордится собой любимым, сотворившим такое доброе дело :) Но об этом пока никто не знает, и не узнает если оставить плоды трудов в черном ящике своего винчестера. Нужно отправлять перевод в репозиторий. Но для начала нужно устроить так, чтобы сервер SVN заполнил три последних поля комментария. Для этого нужно указать ему какие ключевые слова имеются в тексте для замены. Для этого:
htdocs/guide/ru/chap-rc.xml, жмем на нем правую кнопку и жмем "SVN add". В открывшемся окне отмечаем новый файл и жмем "хорошо".LastChangedBy LastChangedDate LastChangedRevision
Чтобы отправить результат в репозиторий кликаем правой кнопкой на папке локальной его копии и выбираем "SVN Commit...". Поставим галочку в чекбоксе "Show unversioned files" и подождем пока проанализируется содержимое папки. Далее ставим галку на нашем появившемся сверху списка в нижнем окошке файле. В верхнем окошке необходимо обязательно написать комментарий. Что и зачем
изменяется в репозитории. Вот мой первый комментарий, прописанный к файлу перевода:
translate (full):
htdocs/guide/en/chap-rc.xml
to:
htdocs/guide/ru/chap-rc.xml
А вот это уже почти "в яблочко". по моему скромному мнению,
этот текст смотрелся бы чуть лучше, если бы был написан более вольным
стилем. Например:Import complete Russian translation of "rc.d System" chapter.
Другими словами, в отчете изменений НЕ нужно помещать информацию,
которую можно получить другими способами (и которая тем более ведется
автоматически). Хороший вопрос, который стоит задать себе при написании
комментариев: "Почему я сделал эти изменения?" В данном случае ответ
прост - потому что закончена работа над главой "Система rc.d".
Обновление локального репозитория. Если вам пришло письмо от сервера с уведомлением, что кто-то что-то изменил в репозитории, то вам необходимо обновить его локальную копию. Делается это очень просто, нужно лишь кликнуть правой кнопкой мыши на папке с репозиторием, выбрать "SVN Update" и подождать пока не завершится обновление. Дальнейшее изучение способов использования TortoiseSVN целиком и полностью возлагаю на плечи энтузиастов. в начало
Проверка изменений в версиях. Часто необходимо узнать какие конкретные изменения произошли в файле оригинала чтобы не сохранять у себя все старые версии и затем выискивать разночтения. TortoiseSVN позволяет это сделать встроенными в него средствами. Чтобы провести эту операцию необходимо кликнуть правой кнопкой мыши по интересующему файлу и выбрать "SVN Show log". Дождавшись загрузки лога с сервера найти в нижнем окошке свой файл, кликнуть по нему правой кнопкой мыши и выбрать "Show Differences". Опять же дожидаемся загрузки старой и новой версий файла. В результате октроется новое окно с двумя областями с текстом разделенными вертикальной чертой. В левой половине будет отображаться более старая версия файла, в правой соответственно наоборот. Строки с разночтения выделены цветом, При наведении на них курсора, в нижней области окна появляются конкретизированные, расцвеченные подсказки "что конкретно не совпадает". Левая узкая область представляет собой "карту разночтений", на которой красными полосками выдлены несовпадения, что позволяет быстро перемещаться от одного несовпадения к другому одним кликом мыши. в начало
Info.
Online.
Soft.
и да пребудет с тобой великий Джа!
2005.12.15 6:36 (GMT+5)
Данное руководство является переработанной версией предыдущего для адаптации к NetBSD 3.0.
1. Для реализации фиксированного переключателя между русской и латинской раскладками, понадобится пересобрать ядро с некоторыми изменениями. Скачайте и распакуйте файлы ядра. Затем в файле "/usr/src/sys/dev/wscons/wskbd.c" находим следующие строчки:
case KS_Mode_switch: update_modifier(id, type, 0, MOD_MODESHIFT);
и заменяем 0 на 1. Пересобираем и устанавливаем ядро. Пересборка ядра описана в документации и вопросов, надеюсь, не вызовет.
2. Далее нам нужны консольные шрифты (в комплекте с системой не идут). Следовательно, нужно их загрузить, подойдут шрифты от OpenBSD или от FreeBSD (c некоторыми изменениями). Готовые можно взять здесь fonts.tar.gz.
3. В случае zsh добавляем следующие строчки в ~/.zshrc (или /usr/pkg/etc/zshrc для вступления изменений в силу для всех пользователей):
export LC_CTYPE=ru_RU.KOI8-R export LANG=ru_RU.KOI8-RДля других шеллов при надобности также экспортируем соответствующие переменные в их конфигурационных файлах.
4. Создаём файл ~/.inputrc", содержащий следующие строки:
set convert-meta off set input-meta on set output-meta on
5. Теперь можно сразу до перезагрузки протестить наличие русификации. Для этого нужно
# wsfontload -N mynew /usr/share/wscons/fonts/koi8.816 # wsconsctl -f /dev/ttyE1 -dw font=mynew font -> "mynew" #Теперь в ttyE1 должна работать русская раскладка, доступная по CapsLock.
6. Для закрепления сделанных изменений, чтобы те не сбрасывались перезагрузкой, редактируем конфигурационный файл /etc/wscons.conf:
font koi8 - - - /usr/share/wscons/fonts/koi8.816 mapfile /usr/share/wscons/keymaps/pckbd.ru.koi8-rencoding ruscreen 0 - vt100wsfontload -N russian /usr/share/wscons/fonts/koi8.816 wsconsctl -f /dev/ttyE0 -dw font=russian > /dev/null wsconsctl -f /dev/ttyE1 -dw font=russian > /dev/null wsconsctl -f /dev/ttyE2 -dw font=russian > /dev/null wsconsctl -f /dev/ttyE3 -dw font=russian > /dev/null wsconsctl -f /dev/ttyE4 -dw font=russian > /dev/null
Примечание:
Позлено для ознакомления предыдущее руководство. Хотелось бы обратить внимание на следующие детали:
screen 0 - vt100.
Также, в силу того, что шрифт теперь один, принудительная активация его в стиле (как было указано в предыдущем руководстве) Для этого нужно просто добавить несколько строк в файл "/etc/rc.local":
/sbin/wsconsctl -f /dev/ttyE1 -dw font=koi8 >/dev/null
/sbin/wsconsctl -f /dev/ttyE2 -dw font=koi8 >/dev/null
/sbin/wsconsctl -f /dev/ttyE3 -dw font=koi8
# /etc/rc.d/wscons restart
setvar repeat.del1=300
setvar repeat.deln=40
в файл /etc/wscons.confwsconsctl -dw msg.kernel.attrs=color msg.kernel.bg=black msg.kernel.fg=brown
в конце файла /etc/rc.local
Все опыты проводились на свежеустановленной NetBSD 2.0 с wscons драйвером консоли.
Ок, начнем.
Русификация консоли сводится: к обеспечению ввода русских букв с клавиатуры, выводе их на экран и установке системной локали. Сначала обеспечим ввод русских букв с клавиатуры, добавив русскую раскладку. Для этого, в файле "/etc/wscons.conf" добавим или раскомментируем следующую строку:
encoding=ru
"/usr/src/sys/dev/wscons/wskbd.c" находим следующие строчки:
case KS_Mode_swith:
update_modifier(id, type, 0, MOD_MODESHIFT);
и заменяем 0 на 1. Пересобираем и устанавливаем ядро. Пересборка ядра описана в документации и вопросов, надеюсь, не вызовет.
Далее нам нужны консольные шрифты (в комплекте с системой не идут). Следовательно, нужно их загрузить, подойдут шрифты от OpenBSD или от FreeBSD (c некоторыми изменениями). Готовые можно взять здесь [inline:1].
Если вы решили использовать шрифты от FreeBSD, то Вам надо выполнить команду:uudecode -p </путь/к/koi8-r-8x16.fnt>
/usr/share/wscons/fonts/koi8.816
Далее добавляем в файл "/etc/wscons.conf" следующие строки:
font koi8 - - iso /usr/share/wscons/fonts/koi8.816
mapfile /usr/share/wscons/keymaps/pckbd.ru.koi8-r
Перезагружаемся для того, чтобы изменения в wscons вступили в силу. После перезагрузки нужно активизировать шрифт на каком-нибудь терминале, вводим:
wsconsctl -f /dev/ttyE* -dw font=koi8,
"/etc/rc.local":
/sbin/wsconsctl -f /dev/ttyE1 -dw font=koi8 >/dev/null
/sbin/wsconsctl -f /dev/ttyE2 -dw font=koi8 >/dev/null
/sbin/wsconsctl -f /dev/ttyE3 -dw font=koi8
Эти команды активизируют русский шрифт в 1,2 и 3 консоли, в последней строке я специально не убирал вывод сообщения об активизации шрифта, чтобы его было видно при загрузке системы.
Последний штрих. Добавляем системную локаль, в файле
"~/.login" добавляем следующие строки:
setenv LC_CTYPE ru_RU.KOI8-R #для C shell (csh, tcsh) setenv LANG ru_RU.KOI8-R
export LC_CTYPE ru_RU.KOI8-R #для bash
export LANG ru_RU.KOI8-R
Перезагружаемся и наслаждаемся русским языком в консоли.
Для корректного отображения русских символов в некоторых readline приложениях
(bash, mysql, psql, smbclient и т.д.) создадим файл "~/.inputrc", содержащий следующие строки:
set convert-meta off
set input-meta on
set output-meta on
Чуть не забыл про Samba, в файл "/etc/samba/smb.conf"
добавляем следующие строки:
[global]
...
client code page = 866
character set = koi8-r
...
Все. Спасибо всем, кто помогал.
| Прикрепленный файл | Размер |
|---|---|
| fonts.tar.gz | 3.14 кб |
Автор: qnub[lost][Russian NetBSD team]
Содержание:
Мы (наша команда [lost]) разворачиваем в своем поселке Wi-Fi сеть. На несчастной лошадке:
Ставить будем следующее:
Софт будем ставить по разному :) по нижеследующим причинам:
Зависимостей пакаджей не скажу, потому как сам не знаю, ибо уже много всего
было на машине, когда начал инсталлить IRC.
Линки:
Я расскажу вам, коллеги, как это дело заставить работать. Тонкие настройки оставляю вам.
Ну, понеслась...
# cd <в папку со скачанным софтом>
# pkg_add openssl-0.9.7f.tgz
# tar -jxvf Ultimate3.0.1.tar.bz2
# cd Ultimate3.0.1
# ./configure --prefix=/usr/pkg --enable-openssl=/usr/pkg --build=i386
несколько замечаний:
/usr/pkg - отсюда и --prefix=/usr/pkg;--enable-openssl=/usr/pkg - включаем поддержку ssl;--build=i386 - без этого собираться не захотело.# ./configure --help
# make && make install
# pkg_add ircservices-5.0.49.tgz
Самые эротичные моменты пережиты именно в этот период. Сначала нам нужно поднять ircd, которому для запуска нужны корректные конфиги и сертификат ssl.
Создаем сертификат (если конечно его еще нет):
создается он скриптом, идущим в наборе с Ultimate
# /usr/pkg/bin/ssl-sert.sh
Следующим шагом идут конфиги. Лежат они в /usr/pkg/etc.
Основных конфига всего 2. Это ircd.conf и ircd.ini.
В общем буду объяснять на своих рабочих конфах.
ircd.conf:
ver^1.1.2
#
# UltimateIRCd Configuration file - ircd.ini
# $Id: ircd.ini 847 2005-01-28 05:14:27Z shadowmaster $
#
# Follow the instructions here.
#
# change the filename to what network header file you use
# relative to DPATH
#
# 1 = Вкл 0 = Выкл
## Set this to the Network settings file you wish to use.
# В этом файле находятся дополнительные настройки сервера под конкретную
# сеть
Include ........................: networks/lost.network# Set this if you want your server to act as a HUB.
# ie, function as the connection point of many servers.
# This should only be set if the server is actually going to be functioning as a HUB.# Включает возможность объединения нескольких серверов в кластер
Set hub ........................: 0# This controls the number of bytes the server will allow a client to send to the server
# without processing before disconnecting the client for flooding.
# Values greater than 8000 makes no difference to the server.
# The default and recomended setting is 2560.# После скольки знаков сообщение начинает считаться флудом
Set client_flood ...............: 2560# This determines how many channels the users on your server will be able to reside
# in simultaniously.
# The number of channels a user is in directly influences memory and bandwith usage
# of your server.
# Acceptable values are 1 to 30 and the default is 10.# На скольки каналах одновременно может сидеть юзер
Set max_channels_per_user ......: 10# Set this to the geographical location of your server.
# Example: in Salt Lake City, Utah# Информационное поле, типа регион, город, etc
Set geo_location ...............: Urengoy, YaNAO# Set this to the email address that will be displayed to clients
# who are klined or zlined from your server.# кому будут жаловаться если выкинуло
Set server_kline_address .......: qnub@lost-urengoy.ru# Set this if you want to send out a notice to connecting client that you have
# a Proxy/Wingate scanner running. If you do not run such a bot yourself consult
# your network administrator and see if the network runs a bot that checks all
# connecting clients.# не понял че такое, оставил как было
Set wingate_notice .............: 0# Set this to the host of the Proxy/Wingate scanner.
# This setting will be ignored if WINGATE_NOTICE is set to 0.# явно зависит от предыдущего
Set monitor_host ...............: 127.0.0.1# Set this to an URL where users can obtain info about Proxy/Wingate.
# Preferably this should be an URL where they can learn or get info on
# how to secure their proxy and why they are being scanned for one.
# This setting will be ignored if WINGATE_NOTICE is set to 0.# видимо народ тут прочитает объяснения того, чего я не понял :)
Set monitor_url ................: http://lost-urengoy.ru/proxy.html# Do you want users to get +i upon connecting?
# +i will provide your users with greater privacy as they will
# not show up in /NAMES and /WHO unless you are in the same
# channel as them.# давать юзерам +i при соединении
Set def_mode_i .................: 1# Do you want to use a SHORT MOTD asking people to read the /MOTD?
# No point in forcing MOTD with non RFC RAW numbers upon user since
# there are scipts out there that ignore those aswell.# использовать короткое сообщение дня из ircd.smotd
Set short_motd .................: 0
Следующий:
ircd.conf в нем среди прочего задаются основные пароли доступа. В конфигурацию они заносятся в зашифрованном виде (если что-то не так с паролями поменяйте необходимые пароли на зашифрованные/незашифрованные, пароль оператора гарантированно находится в зашифрованном виде, пароль сервера сервисов в незашифрованном). Создается зашифрованный пароль утилитой /usr/pkg/bin/mkpasswd
#=========================# UltimateIRCd #=========================#
#
# UltimateIRCd conf/ircd.conf.dist
# $Id: ircd.conf.dist 876 2005-02-09 19:39:30Z shadowmaster $
#
# This is the configuration file for UltimateIRCd3.0.0 and later.
# For detailed explanation please consult the example.conf file
#
#=================================================================##=========================# Server Info #=========================#
#
# M:hostname:IP:Description Of Your Server:7000
#
# Example (ipv4):
#
# M:WhiteRose.No.Eu.Shadow-Realm.org:195.159.32.103:Whiterose Internet Services:7000
#
# Example (ipv6):
#
# M:WhiteRose.No.Eu.Shadow-Realm.org:[::ffff:195.159.32.103}:Whiterose Internet Services:7000
# M:WhiteRose.No.Eu.Shadow-Realm.org:[ffff:ab46::1}:Whiterose Internet Services:7000
#
# Note (ipv6): If you want to link to ipv4 servers use an ipv4 as primary address.
# (bind the ipv6 via P lines)# Определяет основные настройки сервера, можно использовать маски
# M:имя хоста:IP:описание сервера:7000M:qnub-server.lost-urengoy.ru:*:[lost]net IRC server:6667
#=========================# Admin Info #=========================#
#
# A:info field:info field:info field
#
# Example:
#
# A:WhiteRose Administration:Lazy Admin:<LazyAdmin@Badly.Configured.Servers.net># данные администратора сервера
# A:описание админа:описание админа:описание админаA:[lost] administration:qnub:<qnub@lost-urengoy.ru>
#=========================# Y-Lines #=========================#
#
# Y:Class Number:Ping Frequency:Connect Frequency:Max Links:SendQ
#
# The following Y Line sets can safely be used by default.
#
# 50 ===== Hub <--> Hub
# 51 ===== Hub <--> Hub, AutoConnect
# 60 ===== Hub <--> US Leaf
# 61 ===== Hub <--> EU Leaf
# 62 ===== Hub <-> AU leaf
# 40 ===== US leaf <--> Hub, AutoConnect
# 41 ===== EU leaf <--> Hub, AutoConnect
# 42 ===== AU leaf <--> Hub, AutoConnect
# 30 ===== US leaf <--> Hub
# 31 ===== EU leaf <--> Hub
# 32 ===== AU leaf <--> Hub
#
# 10 ===== Administrators
# 5 ===== IRC Operators
# 1 ===== Default Client Class# описание классов соединений, оставил как было
Y:50:90:60:0:4000000
Y:51:90:60:1:4000000Y:60:90:0:0:3500000
Y:61:180:0:0:3500000
Y:62:300:0:0:3500000Y:40:90:90:1:3500000
Y:41:180:90:1:3500000
Y:42:300:120:1:3500000Y:30:90:90:0:3500000
Y:31:180:90:0:3500000
Y:32:300:120:0:3500000Y:10:90:0:20:400000
Y:5:90:0:20:400000
Y:1:90:0:1000:100000#=========================# I/Access Lines #=========================#
#
# I:IP-Adress-Mask:optional password:domain-mask::connection class (opt)
#
# This ILine will allow anyone to connect to your server and will put all
# connecting clients in connection class 1# пускаем всех
I:*::*@*::1
#=========================# O-Lines #=========================#
#
# o = Local oper
# O = Global operator
#
# a = Services operator
# P = Services administrator
# Z = Services root administrator
#
# j = Guest administrator
# J = Server co administrator
# A = Server administrator
# t = Technical Co Administrator
# T = Technical Administrator
# n = Network co administrator
# N = Network administrator
#
# Remember that administrators also need a J line on all
# servers they want to issue remote commands to.
# (Not yet in use)
#
# b = Access to do /kline and /unkline
# c = Access to do local /connects and /squits
# C = Access to do remote /connects and /squits
# k = Access to do local /kills
# K = Access to do global /kills
# r = Access to do /rehash server
# R = Access to do /restart
# D = Access to do /die
#
# p = Oper can set +p (Protected IRC Operator)
# h = Oper can set +h (Help Operator)
#
# w = oper can send /wallops
# l = Oper can send local server notices (/notice $servername message)
# g = Oper can send global notices (/notice $*.network.net message)
#
# E = Oper can use /add and /del commands from IRC if enabled by the admin.
#
# O:hostname (ident "@" permitted):password:Login:Access Flags:class
#
# Examples (ipv4):
#
# O:*:GooFeR:serveradministrator:OAbcCkKrRDphwlgE:10
#
# O:*:INsaNIty:localop:obckl:5
#
# Examples (ipv6):
#
# O:*:GooFeR:serveradministrator:OAbcCkKrRDphwlgE:10
# O:[*]:INsaNIty:localop:obckl:5
# O:[*@::ffff:127.0.0.1]:again:evilguy:DARK:5
# O:[*@adab:a447:234a::5467]:bastard:niceguy:NbcCdrRDhwlgE:5# вооот. тут определается с какого хоста, под каким ником и под каким
# паролем будет логинится оператор, и что он сможет делать
# O:хост:зашифрованный пароль:имя пользователя:права доступа:класс соединенияO:10.4.16.3:зашифрованный пароль:qnub:OAbcCkKrRDphwlgE:10
O:127.0.0.1:зашифрованный пароль:qnub:OAbcCkKrRDphwlgE:10#=========================# J-Lines #=========================#
#
# J:*::OperNick::
#
# Example:
#
# J:*::ShadowMaster::
# J:*::Againaway::# как я понял устанавливает каким опам позволять логинится удаленно
J:*::qnub::
#=========================# X-Line #=========================#
#
# X:Die Password:Restart Password# зашифрованные пароли на отключение и перезагрузку сервера
X:kill_pass:reboot_pass
#=========================# U-Lines #=========================#
#
# U:Server Name:*:*::
#
# Example:
#
# U:services.shadow-realm.org:*:*::# указывает на каком хосте находятся наши ircservices, как я понял должен
# отличаться от хоста самого ircdU:localhost:*:*::
U:services.lost-urengoy.ru:*:*::#=========================# Connect Lines #=========================#
#
# 50 ===== Hub <--> Hub
# 51 ===== Hub <--> Hub, AutoConnect
# 60 ===== Hub <--> US Leaf
# 61 ===== Hub <--> EU Leaf
# 62 ===== Hub <-> AU leaf
# 40 ===== US leaf <--> Hub, AutoConnect
# 41 ===== EU leaf <<--> Hub, AutoConnect
# 42 ===== AU leaf <--> Hub, AutoConnect
# 30 ===== US leaf <--> Hub
# 31 ===== EU leaf <--> Hub
# 32 ===== AU leaf <--> Hub
#
# Link Flags:
# E == Encrypted links (Requires encryption to be enabled during ./configure)
# Z == Compressed links
#
# C:remote server's hostname:password:remote server's name:port:conn class
# N:remote server's hostname:password:remote server's name:link flags:conn class
#
# Examples (ipv4):
#
#
# C:231.156.34.213:broken!sword:Hub2.Shadow-Realm.org:7000:51
# N:231.156.34.213:broken!sword:Hub2.Shadow-Realm.org:ZE:51
#
# Examples (ipv6):
#
# C:[::ffff:231.156.12.103]:Services!goof:Services.Shadow-Realm.org:*:50
# N:[::ffff:231.156.12.103]:Services!goof:Services.Shadow-Realm.org::50
#
# C:[ffff:ad46::1]:broken!sword:Hub2.Shadow-Realm.org:7000:51
# N:[ffff:ad46::1]:broken!sword:Hub2.Shadow-Realm.org:ZE:51# строки настроек подключения ircservices или других IRC серверов
# C:удаленный хост:пароль:имя удаленного хоста:порт:класс соединения
# N:удаленный хост:пароль:имя удаленного хоста:порт:класс соединенияC:127.0.0.1:plain_text_pass:services.lost-urengoy.ru:*:50
N:127.0.0.1:plain_text_pass:services.lost-urengoy.ru:*:50#=========================# Hub Lines #=========================#
#
# H:servers which are permitted entry::hub server::
#
# Examples:
#
# H:*::Services.Shadow-Realm.org::
#
# H:*.Shadow-Realm.org::Hub2.Shadow-Realm.org::
##=========================# Leaf Lines #=========================#
#
# L:disallow connections to this hostmask::server name:depth
#
# L:*.uk::*.au:
#
# L:*::Wintermute.Shadow-Realm.org:1
##=========================# Port Lines #=========================#
#
# P:Allowed address mask:IP to bind to::port to listen on
#
# Examples (ipv4):
#
# P:*:195.159.32.103::6660
#
# P:195.159.*:195.159.32.103::8888
#
# Examples (ipv6):
#
# P:[*]:[::ffff:195.159.32.103]::6660
#
# P:[facd:3dab:adfe:*]:[facd:3dab::687a]::6668
#
# Examples (SSL):
#
# P:195.159.*:195.159.32.103:SSL:6660
# P:[facd:3dab:adfe:*]:[facd:3dab::687a]:SSL:6668
#
#P:*:127.0.0.1::8888#=========================# Quarantine Nick Lines #=========================#
#
# Q:*:reason why quarantine is in place:nickname# запрещенные ники
# Q:*:объяснение запрета:запрещенное_имяQ:*:Reserved for real IRC Operators:*IRCop*
Q:*:Reserved for services:*C*h*a*n*S*e*r*v*
Q:*:Reserved for services:*N*i*c*k*S*e*r*v*
Q:*:Reserved for services:*M*e*m*o*S*e*r*v*
Q:*:Reserved for services:*O*p*e*r*S*e*r*v*
Q:*:Reserved for services:*H*e*l*p*S*e*r*v*#=========================# Kill Lines #=========================#
#
# K:hostmask:reason:username
#
# Examples:
#
# K:*lamuhz.hackerinc.net:Causing all sorts of problems:*
#
# K:*:Dont IRC as root:root
##=========================# Zap Lines #=========================#
#
# Z:IP mask:reason for zapping:*
#
# Example (ipv4):
#
# Z:199.234.13.*:Insecure shell box responsible for massive clone attacks:*
#
# Example (ipv6):
#
# Z:[::ffff:199.234.13.*]:Insecure shell box responsible for massive clone attacks:*
# Z:[3ffe:1337:1337:1337:*]:for abuseing our services:*
##=========================# Exempt Lines #=========================#
#
# E:hostmask::username
#
# Please note it would be very smart to keep the list of E lines as
# short as possible.
#
# Example:
#
# E:Tsunami.Shadow-Realm.org::darkshadow
##=========================# Super Exempt Lines #=========================#
#
# F:hostname::username
#
# Example:
#
# F:Arcadia.Shadow-Realm.org::shadow
#
В ircd.ini есть строка:
Include ........................: networks/lost.network
Смотрим /usr/pkg/etc/networks/lost.network:
ver^2.1.6
#
# Template Network Configuration File
# --------------------------------------------
# Added-at: <day> <month> <year>
# Author: <nick> (<real name>)
# E-Mail: <email>
# ----------------------------------------------------------------------------------------------------------------
# This is a template so you can create your own network configuration files
# Just follow the instructions and it should work fine.
#
# Email your networks settings file and any updates to Ultimate-Devel@Shadow-Realm.org
# for it to be included in future releases.
#
# IMPORTANT:
# Do not comment out any settings or leave any settings empty, it can lead to crashes when the IRCd
# tries to access the settings.
#
# 0 = Выкл 1 = Вкл unless stated otherwise for specific settings.
# ----------------------------------------------------------------------------------------------------------------
#
# $Id: template.network 739 2004-01-17 22:26:10Z shadowmaster $# 0 = Выкл 1 = Вкл
# This specify the short name of the IRC network.
# Examples: DALnet, Undernet, VillageIRC, UltimateIRC, ShadowFire# название сети
Set ircnetwork .................: [lost]net# This will be used to display your Networks Name upon connect etc.
# Set this to: The yournetwork IRC Network# название IRC сети
Set ircnetwork_name ............: [lost]net IRC Network# This is where your DNS pool is (like irc.dal.net)
# This server is what will be displayed if a server is full.# сервер IRC по умолчанию
Set defserv ....................: irc.lost-urengoy.ru# This is the Web Page of your Network.
# Use the form http://www.irc.net/# сайт сети
Set website ....................: http://www.lost-urengoy.ru/# This is the Web Page containing the rules/policies of your Network.
# Use the form http://www.irc.net/somepage.html# страница с правилами сети
Set rules_page .................: http://www.lost-urengoy.ru/# This is the KLine/Akill address of your Network.
# кому будут писать если их выбрасывает
Set network_kline_address ......: qnub@lost-urengoy.ru# Set this to 0 if you do not wish your users to have hiddenhosts set
# upon connecting.# поставьте 0 если хотите чтоб юзера коннектились скрытыми
Set mode_x .....................: 1# Set this to 1 if you do not wish users to be able to set +x if mode_x is set to 0,
# or if you wish users to be unable to set -x if mode_x is set to 1.# позволить юзерам устанавливать режим +x
Set mode_x_lock ................: 1# Set this to 1 if you wish rudimentary clone protection for your network.
# Please note there is no excempts for clone protection at this time.
# This feature is intended as a backup, and its recomended that you make use
# of services bases session limiting.# защита от клонов
Set clone_protection ...........: 0# This will determine the maximum number of allowed clones on the network.
# This must be a value between 2 and 10.# ограничение на количество клонов
Set clone_limit ................: 10# Set this to allow IRC Operators to clone as much as they want.
# (Discouraged)# разрешает опам клонироваться сколько им угодно
Set oper_clone_limit_bypass ....: 1# Do you want to hide U lined servers from /LIST's for non Opers?
# Generally a good idea and required on many Networks.# скрывать серверы из U-строк в ircd.conf в команде /list для не опов
Set hideulinedservs ............: 1# Set this if you want to have the servers on your network broadcast
# global connect notices to usermode +F.
# Please note that this feature will easilly waste bandwith on larger networks.# разрешает глобальные широковещательные соединения серверов
Set global_connects ............: 0# Set this if you want your operators to be automatically set +p if they have
# the proper OLine flag.
# (Discouraged)# автоматом устанавливать +p опам для которых существует O-строка в ircd.conf
Set oper_autoprotect ...........: 0# Currently not used, ignore
# не работает
Set oper_mode_override .........: 3# Currently not used, ignore
# не работает
Set oper_mode_override_notice ..: 0# Allows you to have users auto join channels when they connect to the network.
# Channels MUST be listed separated by commas ',' and with no spaces.
#
# Ex: #ShadowRealm,#Citadel,#OffOurMeds
#
# Set to 0 to disable.# автоматом заджоинвать юзеров на эти каналы при коннекте
Set users_auto_join ............: #lost# Allows you to have opers auto join channels when they /OPER.
# Channels MUST be listed separated by commas ',' and with no spaces.
#
# Ex: #Help,#OperHelp,#Staff
#
# Set to 0 to disable.# автоматом заджоинвать опов на эти каналы при коннекте
Set opers_auto_join ............: #lost# Should the NickServ/NS secure forwarding alias be availible?
# включает форвардинг псевдонима для NickServ/NS
Set enable_nickserv_alias ......: 1# Should the ChanServ/CS secure forwarding alias be availible?
# включает форвардинг псевдонима для ChanServ/CS
Set enable_chanserv_alias ......: 1# Should the MemoServ/MS secure forwarding alias be availible?
# включает форвардинг псевдонима для MemoServ/MS
Set enable_memoserv_alias ......: 1# Should the BotServ/BS secure forwarding alias be availible?
# включает форвардинг псевдонима для BotServ/BS
Set enable_botserv_alias .......: 1# Should the RootServ/RS secure forwarding alias be availible?
# включает форвардинг псевдонима для RootServ/RS
Set enable_rootserv_alias ......: 0# Should the OperServ/OS secure forwarding alias be availible?
# включает форвардинг псевдонима для OperServ/OS
Set enable_operserv_alias ......: 1# Should the StatServ/SS secure forwarding alias be availible?
# включает форвардинг псевдонима для StatServ/SS
Set enable_statserv_alias ......: 1# Should the HostServ/HS secure forwarding alias be availible?
# включает форвардинг псевдонима для HostServ/HS
Set enable_hostserv_alias ......: 0# This is the name of your Services Server
# имя сервера сервисов
Set services_server ............: services.lost-urengoy.ru# This is the name of your Statistical Server
# имя сервера статистики
Set statserv_server ............: services.lost-urengoy.ru# This is the name of your HostServ Server
# имя сервера HostServ
Set hostserv_server ............: services.lost-urengoy.ru# This is the clientname of your NickServ client
# имя NickServ клиента
Set nickserv_name ..............: NickServ# This is the clientname of your ChanServ client
# имя ChanServ клиента
Set chanserv_name ..............: ChanServ# This is the clientname of your MemoServ client
# имя NickServ клиента
Set memoserv_name ..............: MemoServ# This is the clientname of your BotServ client
# имя BotServ клиента
Set botserv_name ...............: BotServ# This is the clientname of your RootServ client
# имя RootServ клиента
Set rootserv_name ..............: RootServ# This is the clientname of your OperServ client
# имя OperServ клиента
Set operserv_name ..............: OperServ# This is the clientname of your StatServ client
# имя StatServ клиента
Set statserv_name ..............: StatServ# This is the clientname of your HostServ client
# имя HostServ клиента
Set hostserv_name ..............: HostServ# скрытые хосты для разных нужд
# This is the Hidden Hosts Local Opers will get upon Oper Up.
#
Set locop_host .................: qnub-server.lost-urengoy.ru# This is the Hidden Hosts Global Opers will get upon Oper Up.
#
Set oper_host ..................: qnub-server.lost-urengoy.ru# This is the Hidden Hosts Guest Admins will get upon Oper Up.
#
Set guestadmin_host ............: qnub-server.lost-urengoy.ru# This is the Hidden Hosts Server Co-Admins will get upon Oper Up.
#
Set servcoadmin_host ...........: qnub-server.lost-urengoy.ru# This is the Hidden Hosts Server Admins will get upon Oper Up.
#
Set servadmin_host .............: qnub-server.lost-urengoy.ru# This is the Hidden Hosts Tech Co-Admins will get upon Oper Up.
#
Set techcoadmin_host ...........: qnub-server.lost-urengoy.ru# This is the Hidden Hosts Tech Admins will get upon Oper Up.
#
Set techadmin_host .............: qnub-server.lost-urengoy.ru# This is the Hidden Hosts Network Co-Admins will get upon Oper Up.
#
Set netcoadmin_host ............: qnub-server.lost-urengoy.ru# This is the Hidden Hosts Network Admins will get upon Oper Up.
#
Set netadmin_host ..............: qnub-server.lost-urengoy.ru
# This is the channel where people can go for help
# It will be shown in /info aswell as /ircdhelp and /help# канал помощи
Set helpchan ...................: #help#-------------------------
# End Of Network Settings
#-------------------------
Теперь можно запускать ircd. Делается это скриптом:
# /usr/pkg/ircd
Конфигурационные файлы ircservices лежат в /usr/pkg/lib/services и зовуться
ircservices.conf и modules.conf
Смотрим ircservices.conf (описываю только то в чем уверен,
остальное по умолчанию)
# Example configuration file for Services. After making the appropriate
# changes to this file, place it in the Services data directory (as
# specified in the "configure" script, default /usr/pkg/lib/ircservices)
# under the name "ircservices.conf".
#
# The format of this file is fairly simple: a line beginning with a # is a
# comment, and any other non-blank line is expected to be a directive and
# parameters, separated by spaces or tabs. For example:
#
# Directive Parameter-1 Parameter-2 ...
#
# Directives are case-insensitive. Note that some directives do not take
# any parameters; these are typically "on-off" directives, for which simply
# including the directive in this file (or removing it) has an effect on
# Services' functionality.
#
# If a parameter's value is a string which includes spaces, enclose the
# string in double quotation marks, like the example below. Quotes may be
# used around any string at all for clarity.
#
# "This is a parameter string with spaces in it"
#
# If you need to include a double quote inside a quoted string, precede it
# by a backslash:
#
# "This string has \"double quotes\" in it"
#
# A backslash can likewise be included by preceding it with another
# backslash.
#
# Time parameters can be specified either as an integer representing a
# number of seconds (e.g. "3600" = 1 hour), or as an integer with a unit
# specifier: "s" = seconds, "m" = minutes, "h" = hours, "d" = days.
# Combinations (such as "1h30m") are also permitted. Examples (all of which
# represent the same length of time, one day):
#
# "86400", "86400s", "1440m", "24h", "1d", "23h60m", "23h59m60s"
#
# In the documentation for each directive, one of the following will be
# included to indicate whether an option is required:
#
# [REQUIRED]
# Indicates a directive which must be given. Without it, Services will
# not start.
#
# [RECOMMENDED]
# Indicates a directive which may be omitted, but omitting it may cause
# undesirable side effects.
#
# [OPTIONAL]
# Indicates a directive which is optional. If not given, the feature
# will typically be disabled. If this is not the case, more
# information will be given in the documentation.
#
# [DISCOURAGED]
# Indicates a directive which may cause undesirable side effects if
# specified.
#
# [DEPRECATED]
# Indicates a directive which will disappear in a future version of
# Services, usually because its functionality has been either
# superseded by that of other directives or incorporated into the main
# program.###########################################################################
#
# Remote server configuration
#
############################################################################ RemoteServer <hostname> <port> <password> [REQUIRED]
# Specifies the remote server hostname and port. The hostname may
# either be a standard Internet hostname or dotted-quad numeric
# address; the port number must be an integer between 1 and 65535
# inclusive. The password is a string which should be enclosed in
# double quotes if it contains any spaces (or just for clarity).
# Make sure to uncomment the directive (remove the leading "#") before
# running Services.
#
# The remote server and port may be overridden at runtime with the
# -remote command-line option. The password may not be set at runtime.# информация для подключения к irc серверу
# RemoteServer <адрес> <порт> <"нешифрованный пароль">RemoteServer 127.0.0.1 6667 "plain_text_pass"
# LocalAddress <hostname> [<port>] [OPTIONAL]
# Specifies the local address to bind to before connecting to the
# remote server. This may be useful on multihomed hosts. The hostname
# and port number are specified the same way as with the RemoteServer
# directive. If this is not specified, Services will let the operating
# system choose the local address. If only a hostname is specified,
# Services will bind to that address but let the operating system
# choose the local port number.
#
# If you don't know what this means or don't need to use it, just leave
# the directive commented out.# информация на какой адрес и порт вешать сервер сервисов
LocalAddress localhost
#LocalAddress host.name.here 6677###########################################################################
#
# Services identification
#
############################################################################ ServerName <name> [REQUIRED]
# Specifies the IRC server name which Services should use when it
# connects to the network.# имя сервера
ServerName "services.lost-urengoy.ru"
# ServerDesc <text> [REQUIRED]
# Specifies the text which should appear as the server's information in
# /whois and similar queries.# описание сревера
ServerDesc "Services [lost]net IRC Network"
# ServiceUser <usermask> [REQUIRED]
# Specifies the user@host mask which should be used by the Services
# pseudoclients.# каким пользователем будут представляться сервисы
ServiceUser "services@services.lost-urengoy.ru"
###########################################################################
#
# Unix group and umask to use
#
############################################################################ RunGroup <group> [OPTIONAL]
# Specify the group which Services should run as. <group> can be
# either a group name or an equals sign ("=") followed by a group ID.
# If not specified, Services will use the group ID it is started with.
# Note that Unix setgid permission on the executable file will do the
# same thing, but the setgid permission bit is cleared whenever the
# file is modified, while this setting will always be used (if the
# system permits it) when Services is started.# под каким пользователем запускать сервер сервисов
RunGroup irc
#RunGroup =65534 # A common value for the "nogroup" group# Umask <umask> [RECOMMENDED]
# Sets the umask (file creation mask) for Services. This mask is
# applied to all data files created by Services, including database
# files (which are recreated on every database update) and the process
# ID file (PIDFilename, below), and indicates which file permission
# bits are NOT to be set on those files as an octal value. Common
# values are given in the examples below. If not specified, the umask
# in place when Services is started will be used.# маска на создаваемые файлы
#Umask 077 # Disallows access to all but file owner
# (recommended when RunGroup is not set)
Umask 007 # Allows access to members of file group as well
# (recommended when RunGroup is set)###########################################################################
#
# Services data filenames
#
############################################################################ NOTE: All filenames are relative to the Services data directory.
# LogFilename <filename> [REQUIRED]
# Specifies the name of the file into which Services will log data.
# May be overridden by the -log command-line option. If this name
# contains "%y", "%m", or "%d", they will be replaced by the current
# year, month, or day, respectively, and the logfile will be
# automatically rotated as needed when the date changes.# файл логов
LogFilename /var/log/ircservices.log
# PIDFilename <filename> [REQUIRED]
# Specifies the name of the file containing Services' process ID.
# Note that if you change this filename, and you are using the
# "ircservices-chk" crontab script provided with Services, you will
# need to change the filename in that file as well.# файл с номером процесса сервера сервисов
PIDFilename /var/run/ircservices.pid
# MOTDFilename <filename> [REQUIRED]
# Specifies the name of the Message of the Day file.# файл с сообщением дня, отображаемым при подключении
MOTDFilename ircservices.motd
# LockFilename <filename> [REQUIRED]
# Specifies the name of the data directory lock file. This file is
# created in the data directory when Services begins updating
# databases, and is removed after the databases are updated. If the
# file already exists when Services tries to update the databases,
# Services sends a warning (via wallops) and does not write any data.# имя файла блокирующего доступ к фалам базы данных во время работы
LockFilename .lock
###########################################################################
#
# Basic functionality
#
############################################################################ NoBouncyModes [OPTIONAL]
# Normally, Services will check for the remote IRC server reversing its
# mode changes, and issue a warning (and stop changing modes) if it
# detects such a problem. However, the detection will sometimes
# trigger even when there is no problem, thus preventing channel
# mode-locks and other features from working. If you specify this
# directive, Services will not check for mode bouncing, which can avoid
# this problem if you know your servers are set up correctly.
#
# WARNING: setting this option when your servers are incorrectly
# configured can result in flooding!#NoBouncyModes
# NoSplitRecovery [OPTIONAL]
# Disables Services' recognition of users returning from netsplits.
# Normally (on networks with some sort of timestamp support in the IRC
# server), Services will check via the timestamp field whether a user
# is the same as the last user who identified for the nick, and allow
# the user access to that nick without requiring identification again
# if the timestamps match. Enabling this directive will force all
# users to re-identify after a netsplit.
#
# It's generally easier on users to leave this disabled, but if you
# suspect one of your servers has been hacked to send false timestamps
# (or you suspect a bug in Services itself) enabling this directive
# will eliminate the possibility of one user "stealing" another's nick
# by pretending to have the same timestamp.
#
# You may also want to uncomment this directive if your servers' clocks
# are very far apart; the less synchronized the servers' clocks are,
# the greater the possibility of someone "taking over" another person's
# nick when a server with a fast clock splits.
#
# NOTE: On DALnet 4.4.15+, Dreamforge, Bahamut, Unreal, and compatible
# networks, Services takes advantage of an IRC server feature to assign
# each user a permanent ID number, which significantly enhances the
# security of this check. On such networks, you should almost always
# leave this directive commented out. See section 3-1-2 of the manual
# for details.#NoSplitRecovery
# StrictPasswords [RECOMMENDED]
# When enabled, causes Services to perform more stringent checks on
# passwords. If this is disabled, Services will only disallow a
# password if it is the same as the entity (nickname or channel name)
# with which it is associated. When enabled, however, Services will
# also check that the password is at least five characters long, and
# in the future will probably check other things as well.# строгие пароли (пока не разобрался)
StrictPasswords
# BadPassLimit <count> [RECOMMENDED]
# Sets the number of invalid password tries before Services removes a
# user from the network. If a user enters <count> invalid passwords
# for any Services function or combination of functions during a
# single IRC session (subject to BadPassTimeout, below), Services will
# issue a /KILL for the user. If not given, Services will ignore
# failed password attempts (though they will be logged in any case).
# Note that entering a correct password will _not_ reset this count.# количество ппоыток воода пароля и параметры наказания
BadPassLimit 10
# BadPassTimeout <time> [OPTIONAL]
# Sets the time after which invalid passwords are forgotten about. If
# a user does not enter any incorrect passwords in this amount of time,
# the incorrect password count will reset to zero. If not given, the
# timeout will be disabled, and the incorrect password count will never
# be reset until the user disconnects.BadPassTimeout 1h
# BadPassWarning <count> [RECOMMENDED]
# Sets the number of bad passwords _for a single nick or channel_ that
# will be accepted before a warning is sent using WALLOPS/GLOBOPS. If
# not given, no warnings will be sent.BadPassWarning 5
# UpdateTimeout <time> [REQUIRED]
# Sets the delay between automatic database updates. This timer is
# reset by the OperServ UPDATE command.UpdateTimeout 5m
# ExpireTimeout <time> [DEPRECATED]
# Formerly used to set the delay between checks for expired nicknames
# and channels. As expiration is now checked for whenever a nickname
# or channel is accessed, this directive now serves no function, and
# is therefore deprecated; it will be removed in the next version of
# Services.#ExpireTimeout 30m
# WarningTimeout <time> [REQUIRED]
# Sets the interval between sending warning messages for program
# errors via WALLOPS/GLOBOPS.WarningTimeout 4h
# ReadTimeout <seconds> [REQUIRED]
# Sets the timeout period for reading from the network; this is the
# length of time Services will wait to receive data from an external
# source if none is available before proceeding with other actions,
# such as timeout checking. Note that the parameter is a number of
# seconds, not a "time"; it may also include a fractional part, such as
# "0.5".
#
# This value also influences the period between timeout checks; see the
# TimeoutCheck directive below.ReadTimeout 3
# TimeoutCheck <seconds> [REQUIRED]
# Sets the (maximum) frequency at which the timeout list is checked.
# This, combined with ReadTimeout above, determine how accurately timed
# events, such as nick kills, occur; it also determines how much CPU
# time Services will use doing this. Higher values will cause less
# accurate timing but less CPU usage. Note that the parameter is a
# number of seconds, not a "time", and may include a fractional part.
#
# This shouldn't be set any higher than 10 seconds, and 1 second or
# less is best if your system is powerful enough (or your network small
# enough) to handle it. 0 will cause the timeout list to be checked
# every time through the main loop, which provides the most accurate
# timeout response but may require too much processing on large
# networks.
#
# Note that if this value is smaller than ReadTimeout (above), then the
# delay between checks of the timeout list may exceed the value given
# here during periods of little or no network activity.TimeoutCheck 1.0
# PingFrequency <time> [OPTIONAL]
# Sets the time after which Services sends a PING message to its uplink
# if no other network activity has occurred. This can be useful if you
# have a low-activity network and your server keeps dropping Services'
# connection with "Ping timeout". If not set, Services will not send
# PING messages.#PingFrequency 30s
# MergeChannelModes <seconds> [OPTIONAL]
# WARNING: This directive can have security implications; read
# carefully before enabling.
#
# If this directive is given, it causes Services to not send out
# channel mode changes immediately, but to wait for the given number of
# seconds (which may be fractional) and collect all channel modes to
# send in a single command. For example, if two users enter a channel
# at nearly the same time and both of them are to be opped, instead of
# sending two MODE +o commands, Services will send a single MODE +oo
# command. This option can help with large channels in reducing mode
# floods, particularly when Services first connects or a server
# reconnects after a split; however, the sending of the mode command
# will be slightly delayed, so that the users will have to wait a short
# time before getting chanop privileges. Furthermore, since this
# increases the time before deops, etc. occur, users can take advantage
# of netsplits to "steal ops" for a short time before Services responds.
#
# Services will never send out more than six parameters with each MODE
# command (this limit is part of the IRC protocol specification). If
# more than six +o, +v, etc. modes are to be sent, Services will send
# them out six at a time without waiting for the timeout given with
# this directive. Also, if more than MERGE_CHANMODE_SLOTS (defined in
# config.h; default 3) channels receive modes before the timeout
# expires, those modes will similarly be sent out at that time.
#
# Note that the actual sending of the MODE command may be delayed by as
# much as the TimeoutCheck value; if you use this option, then in
# general you should set TimeoutCheck to the same (or a smaller) value.
# Also, on networks with little traffic there may be an additional
# delay up to the value of ReadTimeout before the modes are sent.
#
# If this option is not set, Services will still collect all mode changes
# resulting from a single event (such as a user joining a channel) and
# send them in a single message as soon as the event processing finishes.#MergeChannelModes 0.5
# NetBufferSize <total-size> [<per-connection-size>] [RECOMMENDED]
# Sets the maximum amount of memory used by network connection buffers.
# If a second parameter is given, it sets the maximum amount of memory
# used by a single connection; if not given, this defaults to the same
# as the total limit.NetBufferSize 4194304 1048576 # 4MB and 1MB
# NetBufferLimit <inactive-limit> [<ignore-limit>] [RECOMMENDED]
# Sets the threshold at which Services sends a "busy" reply to PRIVMSGs
# (<inactive-limit>) and at which Services ignores PRIVMSGs entirely
# (<ignore-limit>). Both thresholds apply to non-operator users only;
# PRIVMSGs from IRC operators will always be processed normally. A
# WALLOPS/GLOBOPS message will be sent when Services exceeds or drops
# below either of the thresholds. If the thresholds are set to the
# same value, "busy" messages will never be sent.
#
# The thresholds are expressed as percentages of the value(s) given for
# NetBufferSize above. If both a total size limit and a per-connection
# size limit are specified, the higher of the two percentages is
# checked against these thresholds.
#
# If NetBufferSize is not specified, NetBufferLimit has no effect.NetBufferLimit 80 95
###########################################################################
#
# Miscellaneous settings
#
############################################################################ These are settings which don't belong anywhere else, or which would
# be module settings but apply to multiple modules.# GuestNickPrefix <value> [REQUIRED]
# Sets the nickname prefix used when Services changes a user's
# nickname (for example, from the "NSForceNickChange" NickServ option).
# A unique series of digits will be appended to this string to form the
# new nickname. This option is ignored for IRC servers which do not
# allow remote clients' nicknames to be forcibly changed, but it must
# be set to something anyway.GuestNickPrefix "Guest"
# DefTimeZone <time-zone> [OPTIONAL]
# Sets the time zone to be used for displaying the time of day with
# certain commands, such as NickServ INFO. If not given, the system's
# default time zone (the value of the TZ environment variable) is used.
# <time-zone> is the name of the time zone to be used; consult your
# system manual for how time zone names are specified on your system.
# Note that users can set time zones for their own nicknames
# independently; this setting is only used as a default. The
# following example will cause Services to use United States Pacific
# time on most systems:#DefTimeZone PST8PDT
# LogMaxUsers [OPTIONAL]
# Causes Services to write a message to the log every time a new
# user maximum is reached.# логирование при каждом достижении максимума пользователей
LogMaxUsers
# EnableGetpass [OPTIONAL]
# Allows use of the NickServ and ChanServ GETPASS commands.EnableGetpass
# WallGetpass [OPTIONAL]
# Causes Services to send a WALLOPS/GLOBOPS on use of the NickServ
# or ChanServ GETPASS command.WallGetpass
# WallSetpass [OPTIONAL]
# Causes Services to send a WALLOPS/GLOBOPS whenever a Services
# admin sets a password for a nickname or channel s/he does not
# normally have privileges to set.WallSetpass
###########################################################################
#
# Modules to load# далеее идут модули
############################################################################ The remainder of this file lists which modules should be loaded by
# Services at startup. Note that modules are loaded in the order they are
# listed in this file; some modules depend on others, and if they are given
# in the wrong order, Services may not be able to start!
#
# Modules are loaded using the LoadModule directive, which has the format:
# LoadModule <module name>
# Available module names are listed below.###########################################################################
# Base IRC protocol module [REQUIRED]
# These modules provide the base functionality for communicating with
# the remote IRC server, and MUST be loaded before any other module.
# Select the module which matches the IRC server you are using:
# protocol/bahamut DALnet Bahamut server, versions 1.4.25+
# protocol/dalnet DALnet server, version 4.4.13 and earlier
# protocol/dreamforge DALnet Dreamforge server, versions 4.4.15+
# [*]protocol/hybrid Hybrid server, version 7.0
# protocol/monkey Chunky Monkey IRCD, version 1.0 and later
# [*]protocol/ptlink PTlink IRC server, version 6.0 and later
# protocol/rfc1459 RFC1459-compliant servers
# protocol/trircd Trircd server, version 4.0 and later
# protocol/ts8 RFC1459 with TS8 extensions
# protocol/undernet-p9 Undernet server, version 2.9.x only
# protocol/unreal Unreal server, version 3.1.0 and later
# Modules marked with [*] are still in an experimental stage and may
# not be stable.# в Ultimate используется протокол bahamut
LoadModule protocol/bahamut
###########################################################################
# Encryption module [OPTIONAL]
# These modules enable encryption of passwords used in Services.
# Encryption provides a measure of safety against having passwords
# stolen even if someone gains access to the Services databases.
# Encryption modules MUST be loaded before database modules (below).
# If you do not load an encryption module, passwords will not be
# encrypted.
#
# WARNING: Depending on the encryption module used, you may not be able
# to recover the original passwords once they are encrypted! Modules
# with this behavior are marked "(ONE-WAY)" below.
#
# Encryption modules available:
# encryption/md5 Encryption using the MD5 message-digest
# algorithm (ONE-WAY)#LoadModule encryption/md5
###########################################################################
# Database access module [REQUIRED]
# These modules provide access to permanent storage for data used by
# various Services modules, and MUST be loaded before any other module
# (except protocol and encryption modules). Select the module
# corresponding to the type of database you want to use:
# database/version4 Database files compatible with version
# 4.5.x of ServicesLoadModule database/version4
###########################################################################
# Mail-sending modules [OPTIONAL]
# This set of modules allows Services to send E-mail. This feature is
# currently used to forward memos via E-mail and implement E-mail
# address confirmation. Two modules must be loaded to use mail, the
# main module (mail/main) and one of the following low-level modules:
# mail/smtp [RECOMMENDED]
# Sends mail via the SMTP protocol.
# mail/sendmail [DISCOURAGED]
# Sends mail via a "sendmail" program. This module should
# not be used unless you cannot send mail via SMTP.LoadModule mail/main
LoadModule mail/smtp
#LoadModule mail/sendmail###########################################################################
# OperServ modules [RECOMMENDED]
# These modules provide functionality for IRC operators, and allow
# overall management of Services and the IRC network. The base module,
# "operserv/main", contains basic functions, such as channel mode
# changing via Services, juping (banning from the network) of servers,
# management of Services operator/administrator lists, and control of
# Services itself (settings and shutdown/restart). Additionally, the
# following add-on modules are available:
#
# operserv/akill [RECOMMENDED]
# Allows the use of autokills, which prevent users matching
# certain masks from connecting to the network.
#
# operserv/news [OPTIONAL]
# Adds a "news" system, which can be used to send automated
# messages to users when they log onto the network, or to IRC
# operators when they gain operator privileges.
#
# operserv/sessions [OPTIONAL]
# Monitors connections to the network, and sends a warning when
# a large number of connections (often a sign of "cloning") are
# initiated from the same host, optionally killing the users as
# well. However, this module consumes a good deal of CPU time,
# and may slow down Services too much to be usable on large
# networks.
#
# operserv/sline [OPTIONAL]
# Allows the use of S-lines, alternative types of autokills
# which can be used to match against users' nicknames, "real
# names" or IP addresses. (Note that matching against IP
# addresses will not work unless your IRC server supports this
# feature; currently, only the Bahamut server is known to
# support this.)LoadModule operserv/main
LoadModule operserv/akill
LoadModule operserv/news
LoadModule operserv/sessions
LoadModule operserv/sline###########################################################################
# NickServ modules [RECOMMENDED]
# These modules provide for the registration of nicknames and
# associated functions. The base module, "nickserv/main", provides the
# core registration functionality, as well as commands to set nickname
# options and maintain the nickname's access list. Additionally, the
# following add-on modules are available:
#
# nickserv/access [OPTIONAL]
# Allows users to be recognized for their nickname based on an
# access list of user@host masks. Note that if the SECURE
# option is set for the nick (which is the default), users will
# still need to identify for their nicks, but if their address
# is on the access list, Services will not issue nick kills or
# change their nick.
#
# nickserv/autojoin [OPTIONAL]
# Allows users to request that Services automatically make
# them join certain channels upon identifying. This module
# requires an IRC server which supports the SVSJOIN command;
# currently, Unreal and trircd are known to support this.
#
# nickserv/link [OPTIONAL]
# Allows users to create and remove links (aliases) to their
# nickname using the LINK and UNLINK commands, and provides a
# LISTLINKS command to list all links in a group of linked
# nicks.
# NOTE: This module cannot be used at the same time as the
# "nickserv/oldlink" module.
#
# nickserv/mail-auth [OPTIONAL; RECOMMENDED for large networks]
# Allows verification of E-mail addresses for nicknames by
# sending an authentication code to the address given in the
# REGISTER or SET EMAIL command and disallowing identification
# for the nick until the user sends the authentication code to
# NickServ with the AUTH command.
#
# nickserv/oldlink [DEPRECATED]
# Provides LINK, UNLINK, and LISTLINK commands that mimic the
# the behavior of links in version 4.x of Services. This
# module is intended to ease the transition to version 5.x,
# and will likely be removed in a future version.
# NOTE: This module cannot be used at the same time as the
# "nickserv/link" module.
#
# nickserv/sendpass [OPTIONAL]
# Provides a SENDPASS command which allows users to have
# NickServ send their nickname password to the E-mail address
# they have registered for the nickname.
# NOTE: This module requires the "nickserv/mail-auth" module.
#
# The "operserv/main" module is REQUIRED for all NickServ modules.LoadModule nickserv/main
LoadModule nickserv/access
#LoadModule nickserv/autojoin
LoadModule nickserv/link
LoadModule nickserv/mail-auth
#LoadModule nickserv/oldlink
LoadModule nickserv/sendpass###########################################################################
# ChanServ modules [RECOMMENDED]
# These modules provide for the registration of channels and associated
# functions. The base module, "chanserv/main", provides the core
# registration functionality, as well as commands to set channel
# options and maintain access and autokick lists for the channel.
# Additionally, the following add-on modules are also available:
#
# chanserv/access-levels [OPTIONAL]
# Allows modification of channels' access lists using the
# ACCESS command, as well as modification of channel feature
# access levels (such as auto-op or auto-voice) with the LEVELS
# command.
#
# chanserv/access-xop [OPTIONAL]
# Allows modification of channels' access lists using the SOP,
# AOP, and VOP (as well as HOP on servers supporting halfops)
# commands. This module may be used along with the
# "chanserv/access-levels" module, but use of the LEVELS
# command may cause unexpected behavior with respect to these
# commands.
#
# chanserv/sendpass [OPTIONAL]
# Provides a SENDPASS command which allows channel founders to
# have ChanServ send the password for a channel to the E-mail
# address they have registered for their nickname.
# NOTE: This module requires the "nickserv/mail-auth" module.
#
# The "operserv/main" and "nickserv/main" modules are REQUIRED for all
# ChanServ modules.LoadModule chanserv/main
LoadModule chanserv/access-levels
#LoadModule chanserv/access-xop
LoadModule chanserv/sendpass###########################################################################
# MemoServ modules [RECOMMENDED]
# These modules provide the ability to send "memos" (short messages) to
# users who are offline, which the user can then read at a later time.
# Memos may be sent to channels as well, and will be readable by anyone
# who has the proper access in the channel. The base module,
# "memoserv/main", provides this functionality. The following add-on
# modules are also available:
#
# memoserv/forward [OPTIONAL]
# Allows users to have their memos mailed to them instead of
# storing them in Services' databases.
# NOTE: This module requires the "nickserv/mail-auth" module.
#
# memoserv/ignore [RECOMMENDED]
# Allows users to create a list of other users (by nickname or
# user@host mask) who are not permitted to send them memos.
#
# The "operserv/main" and "nickserv/main" modules are REQUIRED for all
# MemoServ modules.LoadModule memoserv/main
LoadModule memoserv/forward
LoadModule memoserv/ignore###########################################################################
# StatServ modules [OPTIONAL]
# These modules provide a system to keep track of detailed network
# statistics. Services normally tracks the highest number of users
# seen on the network, but StatServ can report on number of servers
# online, number of users per server, and other information. The base
# module is "statserv/main"; no add-on modules are currently available.LoadModule statserv/main
###########################################################################
# HelpServ module [OPTIONAL]
# This module provides an online help system that can serve user-
# configurable data. This is separate from the help messages used by
# NickServ, ChanServ, and so on, and simply displays text files from a
# directory (specified in modules.conf). This can be used, for example,
# to provide network policy information, contact addresses and the like
# in a central location.LoadModule misc/helpserv
###########################################################################
# DevNull module [OPTIONAL]
# This module creates a pseudoclient which, like its Unix namesake
# /dev/null, simply discards all messages sent to it. This module
# serves little purpose other than being a toy of sorts, but the author
# has found it occasionally useful as a /query target in ircII to avoid
# sending /msg's to the wrong person.LoadModule misc/devnull
###########################################################################
# HTTP server modules [OPTIONAL]
# These modules add an HTTP server to Services, which can be used to
# report on Services status, perform nickname and channel queries and
# maintenance, and so on. The main module ("httpd/main") provides the
# core server functionality; queries and such are handled by
# sub-modules, as listed below:
#
# httpd/dbaccess [OPTIONAL]
# Allows access to the Services database (nickname and channel
# information, autokill list, ec.) via a web browser.
#
# httpd/debug [OPTIONAL]
# Displays a "debug page" showing the data for the request
# received by the server. Enabling this module does not allow
# access to any internal Services data or otherwise cause
# security problems, but as it does take up memory and have a
# minor impact on performance, it should generally not be
# enabled on production systems.
#
# httpd/redirect [OPTIONAL]
# Redirects browsers to URLs associated with nicknames and
# channels. For example, if a nick "SomeNick" had the URL
# "http://somenick.org/" registered with NickServ, then
# "http://services.example.net/~SomeNick/" would be redirected
# to "http://somenick.org/".
#
# http/top-page [OPTIONAL]
# Allows a file or redirect to be served for access to the top
# page of the server (http://servername/).
#
# In addition, "authorization modules" are available to limit access
# to certain resources. The following authorization modules are
# available:
#
# httpd/auth-ip [OPTIONAL]
# Restricts access to resources based on the client's IP
# address.
#
# httpd/auth-password [OPTIONAL]
# Restricts access to resources based on a username and
# password.
#
# NOTE: Authorization modules are checked in the order in which they
# are loaded, as are ordinary (request handler) modules.#LoadModule httpd/main
#LoadModule httpd/auth-ip
#LoadModule httpd/auth-password
#LoadModule httpd/dbaccess
#LoadModule httpd/debug
#LoadModule httpd/redirect
#LoadModule httpd/top-page###########################################################################
# Miscellaneous modules [OPTIONAL]
# These are modules which do not fit easily into any other category:
#
# misc/xml-export
# Provides the ability to export the Services database in XML
# format. If this module is loaded, the httpd/dbaccess module
# will use it to provide an XML download link.
#
# misc/xml-import
# Provides the ability to import data in XML format (such as
# another Services database). If this module is loaded, the
# httpd/dbaccess module will use it to provide an XML
# download link; note that XML importing via this link may
# require the httpd/main RequestBufferSize setting in
# modules.conf to be increased. This module requires the
# chanserv/main module to be loaded.LoadModule misc/xml-export
LoadModule misc/xml-import###########################################################################
# End of example-ircservices.conf
И напоследок modules.conf в котором настраиваются загружаемые
в ircservices.conf модули. К этому файл я вообще не прикасался
так что смотрим и анализируем:
# Example module configuration file for Services. After making the
# appropriate changes to this file, place it in the Services data directory
# (as specified in the "configure" script, default /usr/pkg/lib/services)
# under the name "modules.conf".###########################################################################
#
# Protocol module settings
#
############################################################################ Enter the protocol name here, then uncomment the appropriate directives.
Module protocol/(insert protocol name here)
# NetworkDomain domain [RECOMMENDED]
# Protocols: bahamut, dalnet, dreamforge, monkey, ptlink, rfc1459,
# trircd, ts8, undernet-p9
#
# Specifies the common domain, if any, shared by all servers on
# your IRC network; this is required for global notices to function
# properly. Make sure you do not include a "." before the domain
# name. If you do not specify this, some or all users may not
# receive global notices.#NetworkDomain "example.net"
# CSSetChannelTime [OPTIONAL]
# Protocols: bahamut, monkey, trircd, unreal
#
# When enabled, causes Services to set the "creation time" (the
# time at which the first user joined the channel) of a registered
# channel to the time at which the channel was registered. This
# can help prevent spurious mode changes and "op hacking" when a
# split server reconnects to the network. When using Unreal,
# however, the first user to join the channel when it is empty gets
# set -o and +o in quick succession due to limitations of the IRC
# server; if this bothers you, do not enable this option. Also, some
# servers (such as Bahamut) generate server notices each time a
# channel's timestamp is changed, which can be safely ignored.CSSetChannelTime
# ServerNumeric <numeric> [RECOMMENDED]
# Protocols: unreal
#
# Makes Services send a numeric to the remote server on connect.
# This must be a value between 1 and 254, and must not be in use by
# any other IRC server on the network. If you do not want to use a
# numeric for Services, comment the directive out.#ServerNumeric 1
# SetServerTimes [<time>] [RECOMMENDED]
# Protocols: unreal
#
# Causes Services to synchronize all servers' internal clocks with
# its own; this can help avoid potential problems with users
# improperly gaining chanops, particularly during netsplits. If a
# time parameter is given, Services will repeatedly synchronize the
# servers clocks at that interval, otherwise synchronization will
# only be performed at startup.#SetServerTimes
#SetServerTimes 12hEndModule
###########################################################################
#
# Mail module configuration
#
###########################################################################Module mail/main
# FromAddress <email> [REQUIRED]
# Specifies the E-mail address to be used on outgoing mail. Make
# sure you enter the correct address here before uncommenting the
# directive.FromAddress irc@lost-urengoy.ru
# FromName <name> [OPTIONAL]
# Specifies the "real name" to be used on outgoing mail. Make sure
# to include quotes if this is a multi-word string.FromName "[lost]net IRC Service"
EndModule
################################ Sendmail-based low-level module
Module mail/sendmail
# SendmailPath <path> [REQUIRED]
# Specifies the full path to the "sendmail" program to be used to
# send mail. This program must accept a command-line option "-t"
# to extract recipient addresses from a mail message given on
# standard input (the standard "sendmail" program does this).
# The program will be executed with the same environment as
# Services itself is run with.SendmailPath /usr/sbin/sendmail
EndModule
################################ SMTP-based low-level module
Module mail/smtp
# RelayHost <hostname> [REQUIRED]
# Specifies the host to which all mail will be sent, e.g. your
# local mail server. This directive may be given multiple times to
# specify backup servers; the servers will be tried in the order
# listed.RelayHost qnub-server.lost-urengoy.ru
# SMTPName <hostname> [REQUIRED]
# Specifies the hostname Services will use in the HELO command to
# the remote server. Normally, this should be set to the same as
# the hostname of the machine Services runs on.SMTPName qnub-server.lost-urengoy.ru
# MaxSockets <count> [REQUIRED]
# Specifies the maximum number of sockets to the mail server which
# can be open at once.MaxSockets 100
EndModule
###########################################################################
#
# OperServ configuration
#
###########################################################################Module operserv/main
# OperServName <nick> <string> [REQUIRED]
# Specifies the nickname (first parameter) and "real" name (second
# parameter) used by the OperServ pseudoclient.OperServName "OperServ" "Operator Server"
# GlobalName <nick> <string> [REQUIRED]
# Specifies the nickname (first parameter) and "real" name (second
# parameter) used by the global-noticer pseudoclient. This client
# is used to send messages from the OperServ GLOBAL command and
# news messages.GlobalName "Global" "Global Noticer"
# OperServDB <name> [REQUIRED]
# Specifies the name of the OperServ database. When using the
# standard database module, this is the name of the file in which
# the data is stored.OperServDB "oper.db"
# ServicesRoot <nick> [REQUIRED]
# Specifies the Services "super-user". The super-user, or "root" as
# in Unix terminology, is the only user who can add or delete
# Services admins.
#
# This is commented out by default; make sure you insert the correct
# nick before uncommenting it.ServicesRoot qnub
# KillClonesAutokill <expiry-time> [RECOMMENDED]
# Causes Services to add an autokill for hosts killed using the
# KILLCLONES command, to prevent the clients from immediately
# reconnecting. The expiry-time parameter sets the expiry time for
# the autokill.
#
# If the autokill module (operserv/akill) is not loaded, this
# directive has no effect.KillClonesAutokill 30m
# AllowRaw [DISCOURAGED]
# Enables use of the OperServ RAW command. This command can be
# used for testing IRC server features and other limited uses, but
# can also wreak havoc on a network if used improperly; use with
# extreme caution.#AllowRaw
# WallOper [OPTIONAL]
# Causes Services to send a WALLOPS/GLOBOPS when a user becomes an
# IRC operator. Note that this can cause WALLOPS floods when
# Services first connects to the network.WallOper
# WallBadOS [OPTIONAL]
# Causes Services to send a WALLOPS/GLOBOPS if a non-IRC-operator
# tries to use OperServ.WallBadOS
# WallOSChannel [OPTIONAL]
# Cause Services to send a WALLOPS/GLOBOPS on use of any of the
# MODE, KICK, CLEARMODES, and CLEARCHAN commands.WallOSChannel
# WallSU [OPTIONAL]
# Causes Services to send a WALLOPS/GLOBOPS whenever a Services
# admin successfully obtains Services super-user privileges with
# the SU command. Note that Services will always send a
# WALLOPS/GLOBOPS when an incorrect password is given to the SU
# command or a user without Services admin privileges attempts to
# use the SU command.WallSU
EndModule
################################ Autokill module settings
Module operserv/akill
# AutokillDB <name> [REQUIRED]
# Specifies the name of the autokill database. When using the
# standard database module, this is the name of the file in which
# the data is stored.AutokillDB "akill.db"
# AutokillReason <reason> [REQUIRED]
# The reason to use when sending out KILLs for autokills and with
# the actual AKILL/GLINE commands. Some servers show this reason
# to users if their connection is rejected because they match an
# autokill. If you include a "%s" in the reason, it will be
# replaced by the reason given with the autokill itself.AutokillReason "You are banned from this network"
#AutokillReason "Autokilled: %s"# AutokillExpiry <time> [RECOMMENDED]
# Sets the default expiry time for autokills. If not defined,
# autokills will not expire by default.AutokillExpiry 30d
# AkillChanExpiry <time> [REQUIRED]
# Sets the default expiry time for autokills added by an AKILLCHAN
# command.AkillChanExpiry 7d
# OperMaxExpiry <time> [OPTIONAL]
# Sets the maximum expiry time usable by Services operators. If
# not defined, Services operators can set any expiry time, just as
# Services administrators can. If this is set to a value lower
# than AutokillExpiry or AkillChanExpiry, autokills entered without
# an expiry time will use this setting instead of the relevant
# default.#OperMaxExpiry 7d
# EnableExclude [OPTIONAL]
# Causes autokill exclusions to be usable. If not given, the
# EXCLUDE command will be unavailable, and any autokill
# exclusions previously added will be ignored.
#
# NOTICE: On IRC servers without autokill exclusion functionality
# (such as that in trircd version 5), this will cause autokills to
# not be sent to the server; instead, Services will issue a KILL
# for each user that matches an autokill and does not match any
# autokill exclusions. This is necessary to allow Services to
# apply exclusions to users before they are disconnected.EnableExclude
# ExcludeReason <reason> [REQUIRED if EnableExclude set]
# The reason to use when sending out EXCLUDE commands on servers
# which support them. If you include a "%s" in the reason, it will
# be replaced by the reason given with the exclusion itself.ExcludeReason "IRC operator host"
#ExcludeReason "Excluded from autokills: %s"# ExcludeExpiry <time> [OPTIONAL]
# Sets the default expiry time for autokill exclusions. If not
# defined, autokill exclusions will not expire by default.ExcludeExpiry 30d
# ImmediatelySendAutokill [OPTIONAL]
# Causes OperServ to inform all servers of a new autokill the
# moment it is added, rather than waiting for someone to match it
# first. (Note that autokill exclusions are always sent to the
# server immediately; this is to avoid an autokill being triggered
# by a non-excluded match before the exclusion has been sent,
# resulting in the excluded users being autokilled as well.)#ImmediatelySendAutokill
# WallOSAkill [OPTIONAL]
# Cause Services to send a WALLOPS/GLOBOPS on use of the AKILL or
# EXCLUDE command to add or delete autokills or exclusions.WallOSAkill
# WallAutokillExpire [OPTIONAL]
# Causes Services to send a WALLOPS/GLOBOPS whenever an autokill
# or autokill exclusion expires.WallAutokillExpire
EndModule
################################ News module settings
Module operserv/news
# NewsDB <name> [REQUIRED]
# Specifies the name of the news database. When using the standard
# database module, this is the name of the file in which the data
# is stored.NewsDB "news.db"
EndModule
################################ Sessions module settings
Module operserv/sessions
# ExceptionDB <name> [REQUIRED]
# Specifies the name of the exception database. When using the
# standard database module, this is the name of the file in which
# the data is stored.ExceptionDB "exception.db"
# DefSessionLimit <limit> [RECOMMENDED]
# Default session limit per host. Once a host reaches its session
# limit, all clients attempting to connect from that host will be
# killed. A value of zero (or omitting the option entirely) means
# an unlimited session limit.DefSessionLimit 3
# MaxSessionLimit <limit> [OPTIONAL]
# The maximum session limit that may be set for a host in an
# exception.MaxSessionLimit 100
# ExceptionExpiry <time> [RECOMMENDED]
# Sets the default expiry time for exceptions. If not set,
# exceptions will not expire by default.ExceptionExpiry 1d
# SessionLimitExceeded <message> [OPTIONAL]
# The message that will be NOTICE'd to a user just before they are
# removed from the network because their host's session limit has
# been exceeded. It may be used to give a slightly more
# descriptive reason for the impending kill as opposed to simply
# "Session limit exceeded". If this is commented out, nothing will
# be sent.SessionLimitExceeded "The session limit for your host %s has been exceeded."
# SessionLimitDetailsLoc <message> [OPTIONAL]
# Same as above, but should be used to provide a website address
# where users can find out more about session limits and how to go
# about applying for an exception. If this is commented out,
# nothing will be sent.
#
# This option has been intentionally commented out in an effort to
# remind you to change the URL it contains. It is recommended that
# you supply an address/URL where people can get help regarding
# session limits.#SessionLimitDetailsLoc "Please visit http://your.website.url/ for more information about session limits."
# SessionLimitAutokill <max-kill-interval> <num-kills> <expiry> <reason> [OPTIONAL]
# With this option, Services will add an automatic autokill when
# the same host's session limit is exceeded repeatedly in a short
# period of time. If not given, autokills will not be
# automatically added (Services will just keep killing users from
# the host as they come on). Note that the autokill module
# (operserv/akill) must be loaded for this to work.
#
# <max-kill-interval> sets the maximum interval which can elapse
# between kills before the kill counter is reset.
#
# <num-kills> sets the number of kills before an autokill is added.
#
# <expiry> sets the expiration time for the autokill.
#
# <reason> sets the reason for the autokill.#SessionLimitAutokill 10s 5 30m "Exceeding session limit"
# WallOSException [OPTIONAL]
# Cause Services to send a WALLOPS/GLOBOPS on use of the EXCEPTION
# command to add or delete a session exception.#WallOSException
# WallExceptionExpire [OPTIONAL]
# Causes Services to send a WALLOPS/GLOBOPS whenever a session
# limit exception expires.#WallExceptionExpire
EndModule
################################ S-line module settings
Module operserv/sline
# SlineDB <name> [REQUIRED]
# Specifies the name of the S-line database. When using the
# standard database module, this is the name of the file in which
# the data is stored.SlineDB "sline.db"
# SGlineReason <reason> [REQUIRED]
# The reason to use when sending out KILLs and SGLINE commands.
# Some servers show this reason to users if their connection is
# rejected because they match an SGline. If you include a "%s"
# in the reason, it will be replaced by the reason given with the
# SGline entry itself.SGlineReason "Invalid real name"
#SGlineReason "Invalid real name: %s"# SQlineReason <reason> [REQUIRED]
# The reason to use when sending out KILLs and SQLINE commands.
# Some servers show this reason to users if their connection is
# rejected because they match an SQline. If you include a "%s"
# in the reason, it will be replaced by the reason given with the
# SQline entry itself.SQlineReason "Reserved nickname"
#SQlineReason "Reserved nickname: %s"# SZlineReason <reason> [REQUIRED]
# The reason to use when sending out KILLs and SZLINE commands.
# Some servers show this reason to users if their connection is
# rejected because they match an SZline. If you include a "%s"
# in the reason, it will be replaced by the reason given with the
# SZline entry itself.SZlineReason "You are banned from this network"
#SZlineReason "Z-lined: %s"# ImmediatelySendSline [OPTIONAL]
# Causes OperServ to inform all servers of a new S-line the moment
# it is added, rather than waiting for someone to match it first.#ImmediatelySendSline
# SGlineExpiry <time> [OPTIONAL]
# Sets the default expiry time for SGlines. If not defined,
# SGlines of that type will not expire by default.#SGlineExpiry 30d
# SQlineExpiry <time> [OPTIONAL]
# Sets the default expiry time for SQlines. If not defined,
# SQlines of that type will not expire by default.#SQlineExpiry 30d
# SZlineExpiry <time> [OPTIONAL]
# Sets the default expiry time for SZlines. If not defined,
# SZlines of that type will not expire by default.SZlineExpiry 30d
# WallOSSline [OPTIONAL]
# Cause Services to send a WALLOPS/GLOBOPS on use of the SGLINE,
# SQLINE, or SZLINE commands to add or delete S-lines.#WallOSSline
# WallSlineExpire [OPTIONAL]
# Causes Services to send a WALLOPS/GLOBOPS whenever an autokill
# expires.#WallSlineExpire
# SQlineIgnoreOpers [OPTIONAL]
# Allows IRC operators to use nicknames that match an SQline.
# (Note that this may not function properly if the IRC server does
# not allow IRC operators to use such nicknames.)SQlineIgnoreOpers
# SQlineKill [OPTIONAL]
# Normally, users whose nickname matches an SQline will have their
# nickname changed (on servers which support forced nickname
# changing) instead of being killed. Setting this option causes
# such users to be killed even on such servers, which may be
# helpful for dealing with clone attacks.
#
# Note that if this option is set, Services will not send SQlines
# to the IRC network; if it did, the IRC servers would step in and
# send the user an "invalid nickname" message before Services had a
# chance to kill the user.#SQlineKill
EndModule
###########################################################################
#
# NickServ configuration
#
###########################################################################Module nickserv/main
# NickServName <nick> <string> [REQUIRED]
# Specifies the nickname (first parameter) and "real" name (second
# parameter) used by the NickServ pseudoclient.NickServName "NickServ" "Nickname Server"
# NickServDB <name> [REQUIRED]
# Specifies the name of the nickname database. When using the
# standard database module, this is the name of the file in which
# the data is stored.NickServDB "nick.db"
# NSEnableRegister [OPTIONAL]
# Allows the REGISTER command to be used. This is usually a good
# thing, but if you don't want your users to be able to register
# nicknames, remove (or comment out) this directive. Note that you
# will need to at least enable this to register the Services
# super-user nick (defined in the operserv/main ServicesRoot
# directive), or you will not be able to use any privileged
# OperServ functions!NSEnableRegister
# NSRegEmailMax <count> [OPTIONAL]
# Sets the maximum number of nicknames that can be registered to a
# single E-mail address; this affects both ordinary registration as
# well as changing the address using SET EMAIL, and also nickname
# linking (if the appropriate module module is loaded). If not
# given, there is no limit.
#
# This option is most useful in combination with NSRequireEmail,
# below.NSRegEmailMax 5
# NSRequireEmail [OPTIONAL]
# Makes an E-mail address required at registration time. Users
# also will not be able to clear the address once registered,
# though they can change it. If not set, an E-mail address is not
# required (but may still be given), and the address may be cleared
# later on.NSRequireEmail
# NSRegDelay <time> [RECOMMENDED]
# Sets the minimum length of time between consecutive uses of the
# REGISTER command. If not given, this restriction is disabled.
#
# WARNING: Not setting NSRegDelay, or setting it too low, will not
# only allow "registration flooding", but, if the
# mail-auth module is also loaded, will also allow users
# to abuse this command to send large quantities of mail
# (mailbombs) to arbitrary users!NSRegDelay 5m
# NSInitialRegDelay <time> [OPTIONAL]
# Sets the minimum length of time the user must be connected before
# using the REGISTER command for the first time. If not given,
# this restriction is disabled. This option can be helpful in
# preventing malicious bots from flooding your network with
# registrations.#NSInitialRegDelay 30s
# NSDef... [OPTIONAL]
# Sets the default options for newly registered nicks. Note that
# changing these options will have no effect on nicks which are
# already registered. Options not listed here will be unset on new
# nicks.
#
# If both NSDefKill and NSDefKillQuick are given, NSDefKillQuick
# takes precedence. KILL IMMED cannot be specified as a default.#NSDefKill
#NSDefKillQuick
NSDefSecure
#NSDefPrivate
NSDefHideEmail
NSDefHideUsermask
#NSDefHideQuit
NSDefMemoSignon
NSDefMemoReceive# NSExpire <time> [RECOMMENDED]
# Sets the length of time before a nick registration expires. If
# not set, nicknames will not expire.NSExpire 30d
# NSExpireWarning <time> [OPTIONAL]
# Sets the length of time before nick expiration during which
# warnings are sent to the user when the user is online (and not
# identified). If not set, no warnings will be sent; however, a
# message will still be sent when the nickname actually expires.NSExpireWarning 3d
# NSSuspendExpire <time> <grace-period> [RECOMMENDED]
# Sets the default expiry time and recovery grace period for
# nickname suspensions. (The expiry time can be set individually
# for each suspension; the grace period cannot.)
#
# The recovery grace period is the length of time a nick must exist
# for, after being unsuspended, before it is allowed to expire.
# This gives the owner a chance to reclaim the nick. It is
# enforced, if necessary, by adjusting the "last seen time" value,
# as well as the AUTH timeout when the mail-auth module is in use,
# when the nick is unsuspended. If set to zero, nicknames that are
# suspended for longer than "NSExpire" will be expired (dropped)
# during the next check for nickname expiration, giving the owners
# very little time to identify for their nicknames and prevent
# their expiry.
#
# If not specified, nickname suspensions will not expire by
# default, and there will be no grace period for recovering the nick.NSSuspendExpire 25d 5d
# NSShowPassword [OPTIONAL]
# Causes the user's password to be sent back to them in a NOTICE at
# registration time, as a reminder.NSShowPassword
# NSEnforcerUser <user>[@<host>] [REQUIRED]
# Sets the username (and possibly hostname) used for the fake user
# created when NickServ collides a user. Should be in user@host
# format. If the host is not given, the one from ServicesUser is
# used.NSEnforcerUser enforcer
#NSEnforcerUser enforcer@localhost.net# NSForceNickChange [OPTIONAL]
# When enabled, makes NickServ change a user's nick to a
# "Guest######" nick instead of killing them when enforcing a
# "nick kill". (The actual nickname used is determined by the
# GuestNickPrefix setting in ircservices.conf.)
#
# This setting has no effect with IRC servers that do not support
# forcibly changing a client's nickname, and a warning will be
# written to the log file if this option is used in such a case.NSForceNickChange
# NSReleaseTimeout <time> [REQUIRED]
# Sets the delay before a NickServ-collided nick is released.NSReleaseTimeout 1m
# NSAllowKillImmed [OPTIONAL]
# When given, allows the use of the IMMED option with the NickServ
# SET KILL command.#NSAllowKillImmed
# NSListOpersOnly [OPTIONAL]
# When enabled, limits use of the NickServ LIST and LISTEMAIL
# commands to IRC operators.#NSListOpersOnly
# NSListMax <count> [REQUIRED]
# Specifies the maximum number of nicks to be returned for a
# NickServ LIST or LISTEMAIL command.NSListMax 50
# NSSecureAdmins [RECOMMENDED]
# When enabled, prevents the use of the DROP, GETPASS, and SET
# PASSWORD commands by Services admins on other Services admins or
# the Services root.NSSecureAdmins
# NSEnableDropEmail [OPTIONAL]
# Allows the DROPEMAIL command to be used. This command can help
# recover from mass-registration attacks, but can also destroy your
# database if used improperly.#NSEnableDropEmail
# NSDropEmailExpire [REQUIRED]
# Sets the maximum length of time allowed between a DROPEMAIL
# command and the corresponding DROPEMAIL-CONFIRM command.NSDropEmailExpire 10m
# NSHelpWarning <time> [OPTIONAL]
# When enabled, displays a "do not abuse NickServ" warning at the
# end of the NickServ HELP output similar to previous versions of
# Services. Otherwise, the warning is not displayed.#NSHelpWarning
EndModule
################################ Access list module
Module nickserv/access
# NSAccessMax <count> [REQUIRED]
# Sets the maximum number of entries allowed on a nickname access
# list.NSAccessMax 32
# NSFirstAccessEnable [OPTIONAL]
# When enabled, causes an access entry based on the registering
# user's username and hostname to be automatically added to the
# access list of a newly-registered nickname. When disabled,
# newly-registered nicknames will have an empty access list.NSFirstAccessEnable
# NSFirstAccessWild [OPTIONAL]
# When enabled, causes the first access list entry added to a newly
# registered nickname to use a wildcard in the hostname when
# appropriate. When disabled, the first access list entry consists
# of the registering user's username and hostname as-is, without
# wildcards. This directive has no effect if NSFirstAccessEnable
# is disabled.NSFirstAccessWild
EndModule
################################ Autojoin module
Module nickserv/autojoin
# NSAutojoinMax <count> [REQUIRED]
# Sets the maximum number of entries allowed on an autojoin list.
# There is little point in setting this higher than the maximum
# number of channels a client is allowed to join by the server
# (usually 10).NSAutojoinMax 10
EndModule
################################ Link module
Module nickserv/link
# NSLinkMax <count> [REQUIRED]
# Sets the maximum number of links allowed for a single nickname
# group.NSLinkMax 20
EndModule
################################ Authentication module
Module nickserv/mail-auth
# NSNoAuthExpire <time> [OPTIONAL]
# Sets the period of time after which a newly registered nickname
# will expire if it is not authenticated. If not specified, the
# standard nickname expiration time (NSExpire) is used.#NSNoAuthExpire 12h
# NSSendauthDelay <time> [RECOMMENDED]
# Sets the minimum length of time between consecutive uses of the
# SENDAUTH command for the same nick group. If not specified, this
# restriction is disabled.
#
# WARNING: Not setting NSSendauthDelay, or setting it too low, will
# allow users to abuse this command to send large
# quantities of mail (mailbombs) to arbitrary users!NSSendauthDelay 1d
EndModule
################################ SENDPASS module
Module nickserv/sendpass
# NSSendpassDelay <time> [RECOMMENDED]
# Sets the minimum length of time between consecutive uses of the
# SENDPASS command for the same nick group. If not specified, this
# restriction is disabled.
#
# WARNING: Not setting NSSendpassDelay, or setting it too low, will
# allow users to abuse this command to send large
# quantities of mail (mailbombs) to arbitrary users!NSSendpassDelay 1d
EndModule
###########################################################################
#
# ChanServ configuration
#
###########################################################################Module chanserv/main
# ChanServName <nick> <string> [REQUIRED]
# Specifies the nickname (first parameter) and "real" name (second
# parameter) used by the ChanServ pseudoclient.ChanServName "ChanServ" "Channel Server"
# ChanServDB <name> [REQUIRED]
# Specifies the name of the channel database. When using the
# standard database module, this is the name of the file in which
# the data is stored.ChanServDB "chan.db"
# CSEnableRegister [OPTIONAL]
# Allows the REGISTER command to be used. This is usually a good
# thing, but if you don't want your users to be able to register
# channels, remove (or comment out) this directive. Note, however,
# that Services administrators and the Services super-user will
# still be able to use the REGISTER command even if this directive
# is not given.CSEnableRegister
# CSRegisteredOnly [OPTIONAL]
# Treats unregistered channels as if they were forbidden,
# disallowing access by ordinary users to any channels not
# explicitly registered with ChanServ. IRC operators will be
# allowed to enter such channels, as they are for ordinary
# forbidden channels. Note that this directive operates
# independently from the CSEnableRegister directive; if
# CSEnableRegister is commented out, non-Services-admin IRC
# operators will be able to join unregistered channels but will
# not be permitted to register them.#CSRegisteredOnly
# CSMaxReg <count> [RECOMMENDED]
# Limits the number of channels which may be registered to a single
# nickname. In the case of linked nicks, this limit applies to the
# entire set of linked nicks.CSMaxReg 20
# CSDef... [OPTIONAL]
# Sets the default options for newly registered channels. Note
# that changing these options will have no effect on channels which
# are already registered. Options not listed here will be unset on
# new channels.CSDefKeepTopic
#CSDefSecureOps
#CSDefPrivate
#CSDefTopicLock
#CSDefLeaveOps
CSDefSecure
#CSDefOpNotice
#CSDefEnforce
#CSDefHideEmail
#CSDefHideTopic
#CSDefHideMlock# CSExpire <time> [RECOMMENDED]
# Sets the length of time before a channel expires. If not set,
# channels will not expire.CSExpire 365d
# CSSuspendExpire <time> [RECOMMENDED]
# Sets the default expiry time and recovery grace period for channel
# suspensions. If not set, channel suspensions will not expire by
# default and there will be no recovery grace period.#CSSuspendExpire 12d 2d
# CSShowPassword [OPTIONAL]
# If specified, causes the user's password to be sent back to them
# in a NOTICE at registration time, as a reminder.#CSShowPassword
# CSAccessMax <count> [REQUIRED]
# Sets the maximum number of entries on a channel's access list.
# Channel access lists may contain only registered nicknames;
# therefore, checking each entry on the list requires only a single
# scalar comparison instead of a wildcard match, and this limit may be
# safely set much higher than (for example) the nickname access list
# size limit without impacting performance significantly.CSAccessMax 1024
# CSAutokickMax <count> [REQUIRED]
# Sets the maximum number of entries on a channel's autokick list.CSAutokickMax 32
# CSAutokickReason <text> [REQUIRED]
# Sets the default reason for an autokick if none is given.CSAutokickReason "User has been banned from the channel"
# CSInhabit <time> [REQUIRED]
# Sets the length of time ChanServ stays in a channel after kicking
# a user from a channel s/he is not permitted to be in. This only
# occurs when the user is the only one in the channel.CSInhabit 15s
# CSRestrictDelay <time> [OPTIONAL]
# When enabled, causes ChanServ to permit users to join channels
# with the RESTRICTED option set if they would be permitted to join
# after identifying for their nick, and to not remove mode +o (ops)
# from users who would be auto-opped if identified for their nick,
# for the given period of time after Services starts up. This gives
# such users time to identify to NickServ before being kicked out of
# restricted channels or getting deopped.CSRestrictDelay 15s
# CSListOpersOnly [OPTIONAL]
# When enabled, limits use of the ChanServ LIST command to IRC
# operators.#CSListOpersOnly
# CSListMax <count> [REQUIRED]
# Specifies the maximum number of channels to be returned for a
# ChanServ LIST command.CSListMax 50
# CSForbidShortChannel [OPTIONAL]
# When enabled, treats the channel "#" as a forbidden channel, not
# allowing any users to join it. When not enabled, the channel "#"
# can be used normally, although ChanServ functions cannot be used
# with it. If CSRegisteredOnly is enabled, this directive has no
# effect (the "#" channel will be treated as forbidden along with
# all other unregistered channel).#CSForbidShortChannel
EndModule
################################ SENDPASS module
Module chanserv/sendpass
# CSSendpassDelay <time> [RECOMMENDED]
# Sets the period of time which must elapse between SENDPASS
# commands for the same channel. If not specified, the SENDPASS
# command may be used at any time.
#
# NOTE: Since users can only send passwords to nicks they have
# identified for, the potential for E-mail attacks via this
# command is minimal; however, setting this limit too low (or
# not setting it at all) can allow users to slow down
# Services through frequent SENDPASS requests.CSSendpassDelay 1h
EndModule
###########################################################################
#
# MemoServ configuration
#
###########################################################################Module memoserv/main
# MemoServName <nick> <string> [REQUIRED]
# Specifies the nickname (first parameter) and "real" name (second
# parameter) used by the MemoServ pseudoclient.MemoServName "MemoServ" "Memo Server"
# MSMaxMemos <count> [RECOMMENDED]
# Sets the maximum number of memos a user is allowed to keep by
# default. Normal users may set the limit anywhere between zero
# and this value; Services admins can change it to any value or
# disable it. If not given, the limit is disabled by default, and
# normal users can set any limit they want.MSMaxMemos 20
# MSExpire <time> [OPTIONAL]
# Sets the length of time after a memo is sent until it expires and
# is automatically deleted. If not set, memos will not expire.
# Note that memos sent while MSExpire is disabled will not expire
# even if MSExpire is later enabled.#MSExpire 3d
# MSExpireUnread [OPTIONAL]
# If specified, unread memos will be expired after the delay given
# in the MSExpire directive just like other memos; normally, unread
# memos do not expire. If MSExpire is not set, this directive is
# ignored.#MSExpireUnread
# MSSendDelay <time> [RECOMMENDED]
# Sets the delay between consecutive uses of the MemoServ SEND
# command. This can help prevent spam as well as denial-of-service
# attacks from sending large numbers of memos and filling up disk
# space (and memory). A 3-second wait means a maximum average of
# 150 bytes of memo per second per user under the current IRC
# protocol.MSSendDelay 3s
# MSNotifyAll [OPTIONAL]
# Should we notify all appropriate users of a new memo? This
# applies in cases where a memo is sent to a nick which has other
# nicks linked to it and multiple users are using two or more of
# the linked nicks. Enabling this option will cause MemoServ to
# check all users who are currently online to see whether any have
# nicks which are linked to the target of the memo, and if so,
# notify all of them. This can take a good deal of CPU time on
# larger networks, so you may want to disable it.MSNotifyAll
EndModule
################################ FORWARD module
Module memoserv/forward
# MSAllowForward [OPTIONAL]
# If given, allows the FORWARD command to be used (the SET FORWARD
# command is always available). While the FORWARD command can be
# useful particularly for users first setting the FORWARD option
# on, a large number of users using the FORWARD ALL command can
# place a significant load on Services.MSAllowForward
# MSForwardDelay <time> [RECOMMENDED if MSAllowForward is set]
# Sets the minimum length of time between consecutive uses of the
# FORWARD command. If not given, this restriction is disabled.
# (Note that this can allow users to place a significant load on
# Services and/or your mail server!)
#
# If MSAllowForward is not set, this directive is ignored.MSForwardDelay 10s
EndModule
################################ IGNORE module
Module memoserv/ignore
# MSIgnoreMax [REQUIRED]
# Sets the maximum number of entries a user can have for their
# nickname group's memo ignore list.MSIgnoreMax 32
EndModule
###########################################################################
#
# StatServ configuration
#
###########################################################################Module statserv/main
# StatServName <nick> <string> [REQUIRED]
# Specifies the nickname (first parameter) and "real" name (second
# parameter) used by the StatServ pseudoclient.StatServName "StatServ" "Statistics Server"
# StatServDB <name> [REQUIRED]
# Specifies the name of the StatServ database. When using the
# standard database module, this is the name of the file in which
# the data is stored.StatServDB "stats.db"
# SSOpersOnly [OPTIONAL]
# Limits the use of StatServ to IRC operators only.#SSOpersOnly
EndModule
###########################################################################
#
# HTTP server modules
#
###########################################################################Module httpd/main
# ListenTo <address>:<port> [REQUIRED]
# Specifies the address and port number on which the HTTP server
# will listen for incoming requests. <address> may be specified as
# an IP address (first example below), a hostname (second example),
# or the special string "*", which means "any IP address" (third
# example).
#
# When a hostname is given, as in the second example below,
# Services will look up the address(es) associated with the
# hostname at startup time, and bind to every IP address found.
# This can be useful, for example, with dynamic DNS, in which
# the server's IP address changes periodically; however, the
# hostname lookup can take time--especially if there is no DNS
# server on the local network--and is susceptible to network or
# DNS server outages, so IP addresses or "*" should be used
# whenever possible.
#
# Note that many systems restrict low port numbers to the system
# administrator; in particular, Unix-like systems allow only the
# root user (UID 0) to use ports less than 1024.#ListenTo 127.0.0.1:12701
#ListenTo services.example.net:8080
#ListenTo *:80# ListenBacklog [REQUIRED]
# Specifies the maximum number of connections that can be received
# by the operating system without being accepted by Services (the
# second parameter, `backlog', to the listen() system call). If
# you start seeing refused or delayed connections on a busy server,
# try increasing this value.
#
# If you don't understand the above, leave this setting alone.ListenBacklog 5
# RequestBufferSize <bytes> [REQUIRED]
# Specifies the size of the buffer allocated for each HTTP request.
# Note that this buffer is allocated for every connection, and an
# additional amount of memory will be allocated for header pointers
# (in the pathological case this extra amount could reach 4/3 of
# the value given for this directive). If a client sends a request
# (including POST data) exceeding this value, an error will be
# returned and the connection terminated.
#
# If you don't understand the above, leave this setting alone.RequestBufferSize 4096
# MaxConnections <count> [RECOMMENDED]
# Specifies the maximum number of simultaneous connections allowed.
# If not given, no limit is placed on the number of connections;
# however, the operating system may impose its own limits, which
# are not under the control of Services.MaxConnections 10
# MaxRequests <count> [RECOMMENDED]
# Specifies the maximum number of requests that can be made over a
# single connection before the server disconnects it. If not
# given, no limit is placed on the number of requests per
# connection; note that this may allow malicious users to interfere
# with Services' normal operations by sending large numbers of
# requests over a single connection.MaxRequests 20
# IdleTimeout <time> [RECOMMENDED]
# Specifies the length of time a connection can be idle (not
# sending data) before it will be automatically closed. If not
# given, connections will never be closed automatically.IdleTimeout 30s
# LogConnections [OPTIONAL]
# If given, a log message will be written for each connection to
# the server.LogConnections
EndModule
################################ IP address authorization module
Module httpd/auth-ip
# AllowHost <path> <address> [OPTIONAL]
# DenyHost <path> <address> [OPTIONAL]
# Specifies which hosts will be allowed (or not allowed) to access
# resources provided by the HTTP server. The <path> parameter is a
# URL path (not including the "http://host.name"), and matches any
# URL which begins with the same string; for example, "/dir"
# matches both "/dir/file" and "/dirty". The <address> can be an
# IP address, a hostname (as with ListenTo in the main server
# module, all addresses associated with the hostname will be
# allowed or denied), the string "*" (which means all addresses),
# or the special format "<IP-address>/<mask>", where <mask> is an
# integer from 1 to 31 giving the number of bits in the subnet
# address, which indicates that the entire subnet of addressess
# specified should be allowed or denied; for example,
# "192.168.1.64/26" represents the range of addresses from
# 192.168.1.64 to 192.168.1.127.
#
# Examples:
# AllowHost /debug 127.0.0.1 # Allow all requests from localhost
# # to the debug page
# AllowHost / 192.168.0.0/24 # Allow any host in the 192.168.0.*
# # network access to the entire server
# DenyHost / shell.example.org # Deny connections from any address
# # associated with shell.example.org
#
# Multiple AllowHost or DenyHost directives for the same path may
# be used to specify multiple addresses to allow or deny. Each
# condition will be checked in the order they are listed here, and
# the first matching one will be used. For example, these lines:
# AllowHost / 192.168.0.1
# DenyHost / 192.168.0.0/24
# deny access to all hosts in the 192.168.0.* network _except_
# 192.168.0.1. However, the reverse:
# DenyHost / 192.168.0.0/24
# AllowHost / 192.168.0.1
# simply blocks all hosts in the 192.168.0.* network, since the
# first rule matches 192.168.0.1 and the second is never checked.
#
# Access to the entire server can be allowed or denied by using the
# path "/", which matches every URL (since all URLs begin with a
# slash). It is good practice to include such a rule after all
# others to explicitly indicate what should be done with requests
# that do not match any other rule. (If a request does not match
# any rules at all, it is implicitly allowed, but this behavior may
# change in the future and should not be relied on.) For example:
# AllowHost / *
# or:
# DenyHost / *
#
# WARNING: Hostnames are resolved only once at startup; any changes
# in a host's IP address will not be seen by Services.
#
# Note: These directives are listed as "optional" only because the
# module will still load even if no directives are listed;
# however, unless AllowHost/DenyHost directives are given,
# the module will not have any effect.AllowHost / *
EndModule
################################ Password authorization module
Module httpd/auth-password
# AuthName <name> [REQUIRED]
# Specifies the name to be used by the user's browser when asking
# for a password (as in "Enter username and password for <name>:").AuthName "IRC Services"
# Protect <path> <user>:<pass> [OPTIONAL]
# Sets the URLs (paths) which will be protected by password
# authorization, and the username and password for each path. The
# username and password can be different for each path. The path
# given will match any URL beginning with that string, as with the
# auth-ip module.
#
# Examples:
# Protect /debug "debug:debug"
# Protect /~ "nickuser:nickpass"
#
# Note: This directive is listed as "optional" only because the
# module will still load even if no directives are listed;
# however, unless Protect directives are given, the module
# will not have any effect. Use a path of "/" to apply
# password protection to the entire server.EndModule
################################ Database access module
Module httpd/dbaccess
# NOTICE: This module allows complete access to all Services data;
# be certain to protect it from unauthorized access using
# authorization modules or other means.# Prefix <path> [REQUIRED]
# Sets the URL (path) at which database access will be accessible.
# If this does not end with a slash, one will be appended
# automatically. Access is provided using the following directory
# tree:
#
# <path>/ Main menu
# <path>/operserv/ OperServ data and menu
# <path>/operserv/akill/ Autokill list
# <path>/operserv/news/ News item list
# <path>/operserv/sessions/ Session and exception lists
# <path>/operserv/sline/ S-line lists
# <path>/nickserv/ Nickname list and information
# <path>/chanserv/ Channel list and information
# <path>/statserv/ Network statistics
# <path>/xml-export/ XML-format database download
#
# Categories for which the relevant module is not loaded will not
# be accessible.
#
# WARNING: These functions, particularly the XML export function,
# can cause Services to stop for a significant period of
# time while they are processed!
#
# This is commented out by default; make sure you implement proper
# access protection (see above) before uncommenting it.#Prefix "/dbaccess"
EndModule
################################ Debug page module
Module httpd/debug
# DebugURL <path> [REQUIRED]
# Sets the URL (path) at which the debug page will be accessible.
# This must begin with a slash.DebugURL "/debug"
EndModule
################################ Nick/channel redirect module
Module httpd/redirect
# NicknamePrefix <path> [OPTIONAL]
# Sets the URL (path) at which nickname redirects will be
# accessible; all characters after this prefix, up to the next
# slash, will be taken as the nickname. This must begin with a
# slash. The default value, "/~", emulates the traditional home
# page URL of "http://www.example.net/~username/". If you use a
# directory name instead, it must end with a slash, for example:
# "/nickname/". See also ChannelPrefix, below.
#
# If not set, nickname redirects will not be done.NicknamePrefix "/~"
# ChannelPrefix <path> [OPTIONAL]
# Sets the URL (path) at which channel redirects will be
# accessible; all characters after this prefix, up to the next
# slash, will be taken as the channel name (without the leading
# "#", which cannot be used in URLs). The path must begin with
# a slash. The default value, "/channel/", gives URLs like
# "http://services.example.net/channels/channelname/" for channel
# "#channelname".
#
# If not set, channel redirects will not be done.
#
# Note: If a URL could be interpreted as both a nickname URL and a
# channel URL, the nickname will take precedence, even if it
# is not registered or does not have a URL associated with it.ChannelPrefix "/channel/"
EndModule
################################ Top page module
Module httpd/top-page
# Filename <path> [<content-type>] [OPTIONAL]
# Sets the name of a file to be delivered as the server's top page.
# If this does not begin with a slash, then it is taken as relative
# to the Services data directory. The second parameter specifies
# the MIME content type of the file; if not given, it defaults to
# text/html.#Filename "Top Page.txt" text/plain
#Filename /var/www/html/ircservices/top-page.html# Redirect <URL> [OPTIONAL]
# Sets a URL to be provided as a redirect to a client accessing the
# top page. This must be a full URL, beginning with "http://" (or
# some other protocol specifier). If both Filename and Redirect
# are given, Redirect takes precedence.#Redirect http://www.example.net/ircservices/
EndModule
###########################################################################
#
# Miscellaneous modules
#
########################################################################################################### DevNull settings
Module misc/devnull
# DevNullName <nick> <string> [REQUIRED]
# Specifies the nickname (first parameter) and "real" name (second
# parameter) used by the DevNull pseudoclient.DevNullName "DevNull" "/dev/null -- message sink"
EndModule
################################ HelpServ settings
Module misc/helpserv
# HelpServName <nick> <string> [REQUIRED]
# Specifies the nickname (first parameter) and "real" name (second
# parameter) used by the HelpServ pseudoclient.HelpServName "HelpServ" "Help Server"
# HelpDir <dirname> [REQUIRED]
# Specifies the name of the subdirectory containing help files for
# HelpServ.HelpDir helpfiles
EndModule
################################ XML export settings
Module misc/xml-export
# This module has no configurable settings.
EndModule
################################ XML import settings
Module misc/xml-import
# OnNicknameCollision <action> [OPTIONAL]
# Specifies the action to be taken when a nickname in the data to
# import is already registered. The string must be one of either
# "skipgroup" (skip over the nickname group containing the nickname
# in the imported data), "skipnick" (skip only the colliding
# nickname), "overwrite" (drop the existing nickname), or "abort"
# (do not import any data). Note that when "abort" is selected,
# the entire XML input is still checked for errors, but Services
# will abort before actually merging any data.
#
# When using "overwrite", if a nickname group has only one nickname
# and that nickname is overwritten, the nickname group will be
# dropped as well. As a consequence, any channels owned by such a
# nickname will be dropped (or shifted to their successors) as
# well. All nicknames and channels overwritten or droppde in this
# manner will be displayed on standard error.
#
# If not specified, defaults to "skipgroup".#OnNicknameCollision skipgroup
# OnChannelCollision <action> [OPTIONAL]
# Specifies the action to be taken when a channel in the data to
# import is already registered. The string must be one of either
# "skip" (skip over the channel in the imported data), "overwrite"
# (drop the existing channel), or "abort" (do not import any data).
# Note that when "abort" is selected, the entire XML input is still
# checked for errors, but Services will abort before actually
# merging any data. If not specified, defaults to "skip".#OnChannelCollision skip
# VerboseImport [OPTIONAL]
# Causes a detailed list of imported nicknames, channels, and other
# data to be printed to standard output.VerboseImport
EndModule
Первый запуск ircservices рекомендую делать с ключем
-debug и проверить лог /var/log/ircservices.log
на предмет ошибок. Если ошибка типа тип_модуля/модуль - знать
править настройки ircservices и скорее всего в
ircserveces.conf, если ошибка содежит слово
line или lines значит нужно править данный
тип строки в конфигурации ircd.conf.
Как у Ultimate так и у ircservices есть средства автоподнятия сервиса в
случае падения.
Для Ultimate это
/usr/pkg/bin/ircdshk
/usr/pkg/bin/ircservices-chk
# crontab -e
#ircservices check
0,5,10,15,20,25,30,35,40,45,50,55 * * * * /usr/pkg/sbin/ircservices-chk
#ircd check
0,5,10,15,20,25,30,35,40,45,50,55 * * * * /usr/pkg/bin/ircdchk
Удаляй фаилы с помощью...
sysutils/wipe: секурное удаление данных
wip/neb-wipe: секурное удаление партиций (только NetBSD)
sysutils/fatback: восстанавливание удаленных фаилов с FAT.
Некоторые люди становятся параноиками, когда речь заходит о безопасности
их информации, даже удаленной. Думаю это мой случай...По этому я использую
wipe для удаления данных.
Интерфейс wipe очень похож на rm:
-i interactive - prompt whether to remove each file explicitly checks file pe rmissions
-f forces file wiping and suppresses permission warnings
-r or -R recursion - traverse subdirectories
Вы можете просто сделать алиас в фаил .bashrc, или любого другого шела, для
замены rm на wipe:
alias rm='wipe -i'
neb-wipe позволяет удалять с диска целые партиции NetBSD, перед тем как вы
продадите диск вашему злейшему врагу.
Если вы оказались в противоположной ситуации, вы хотите исследовать диск,
который продал вам ваш злейший враг, и так случилось, что он использовал
фаиловую систему fat32, вы можете воспользоваться программой fatback.
Она восстанавливает удаленную информацию с fat32 разделов, и делает это
очень хорошо ;).
Авторы: untitled и EvAn.
NetBSD предоставляет своим пользователям развитые средства по управлению пакетами программного обеспечения. Вы можете устанавливать ПО как из готовых пакетов, так и собирая их из исходных текстов с помощью pkgsrc. Вы также можете удалять и обновлять ПО. При этом учитываются так называемые зависимости и конфликты.
pkg_add пакет
pkg_del пакет
pkg_add -u пакет
После распаковки архива pkgsrc перейдите в каталог нужного Вам пакета:
cd /usr/pkgsrc/группа/пакет
Для установки:
make install
Для обновления:
make update
Автор: Karol "MaRCHeW" Marchewka.
Перевод: RMX.
Это HOWTO предназначено для того, что бы помочь Вам установить операционную систему NetBSD на Jornada 680. Установка NetBSD на это устройство проходит не стандартно. Инсталятор для этого порта (hpcsh) отсутствует и все требуется cделать вручную. Хотя благодаря этому, Вы можете научиться некоторым вещам.
Устройства, которые Вам потребуются, чтобы инсталировать полнофункциональную систему NetBSD это:
Описаная мною установка ОС NetBSD осуществлялась на следущем устройстве:
Первое действие, которое мы должны выполнить, это подключить WinCE Jornada-ы к Windows. Для этой цели служит программа Microsoft ActiveSync, которую можно взять . После установки Microsoft ActiveSync, нам нужны файлы для установки самой NetBSD. В описанном примере инсталируем версию NetBSD-current. Эта версия стабильна настолько, что мы можем ее инсталировать на Jornada, а вместе с тем, содержит последние функциональные возможности системы. Если у Вас нет желания инсталировать версию current, то конечно, Вы можете инсталировать версию 3.0 либо 2.1. Скачиваем необходимые нам файлы с ftp сервера (в момент написания этого HOWTO последней версией current была версия 3.99.8 доступная на сервере
ftp://ftp.netbsd.org/pub/NetBSD-daily/HEAD/200509090000Z/hpcsh/installation/
где:200509090000Z -версия NetBSD-current скомпилированная в данным числом.
Также нам нужны следущие три файла:
После того, как мы скачали необходимые файлы , распакуем файл miniroot.fs.gz в ближайшем каталоге. Перед началом копирования файлов на CF карту измените в WinCE в "Панеле Управления" скорость пересылки данных с 19200 на 115Kb. Это существенно ускорит копирование файлов. Далее подключим кабель RS232 к Jornada и PC. С помощью Microsoft ActiveSync скопируем файлы на CF карту.
Подготовительный этап уже позади. Настало время начать установку NetBSD !!!. Запустим программу hpcboot-sh3.exe. Эта программа поделена на три закладки. В первой выбираем место откуда будет загружено ядро и miniroot.fs.

В другой закладке выберем пункт "Load Deubug Info", что бы иметь возможность видеть процесс загрузки системы в память.

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

Кликните по "Boot". Должна начаться загрузка системы в память.
Далее создадим разделы диска (или CF карты) и disklabel. В случае с Jornada не будем создавать раздел для NetBSD. Единственный раздел который требуется это раздел MSDOS, с которого будем стартовать NetBSD.
Выполним следущую команду:
# fdisk -u wd0
На вопрос:
Do you want to change our idea of what BIOS thinks? [n]
Ответим n и приступим к разбиению диска.
Конфигурируем раздел 0:
Which partition do you want to change?: [none] 0
Присвоим разделу идентификатор 4:
sysid: 4
Начало раздела должно начинаться с 63 цилиндра.
start: 63
Определяем величину раздела MSDOS равную 15MB:
size: 30657
Во время следущего вопроса:
Which partition do you want to change?: [none]
Нажмем Enter и запишем результат конфигурации:
Should we write new partition table? y
Мы уже создали раздел MSDOS. Настало время для disklabel. Запустим программу disklabel:
# disklabel -i wd0
Проверим какие disklabel-ы уже имеем по дефолту.
partition> P
d обозвачает целый диск, а с это disklabel предназначенный для NetBSD. Удалим все disklabel-ы , чтобы смочь создать новые:
partition> d Filesystem type: unused Start offset: 0 Partition size: 0
Поступите так со всеми disklabe-амиl.
Когда мы уже удалили все disklabel-ы мы должны создать их снова. Начнем с disklabel-а d (целого диска):
partition> d Filesystem type: unused Start offset: 0M Partition size: $
Сейчас создаем disklabel e (MSDOS). Disklabel e должен иметь тот же самый размер что и ранее созданый раздел MSDOS:
partition> e Filesystem type: MSDOS Start offset: 63s Partition size: 30657s
Самое время заняться disklabel-ом c. Этот disklabel определяет размер диска отведенного для NetBSD:
partition> c Filesystem type: unused Start offset: 30720s Partition size: $
Последний созданный нами disklabel будет a. Это disklabel, на котором мы заинсталируем NetBSD.
partition> a Filesystem type: 4.2BSD Start offset: 30720s Partition size: $
После того как мы создали все необходимые disklabel -ы, записываем их и выходим из программы:
partition> W partition> Q
Следующим нашим шагом будет создание файловой системы для disklabel a:
# newfs wd0a
Монтируем устройство wd0a в каталог /mnt:
# mount -o softdep /dev/wd0a /mnt
Далее конфигурируем доступ к интернету через локальную сеть. В этом пункте не буду описывать, как это сделать. Вы можешь узнать это "The NetBSD Guide" либо из других источников. Когда мы уже имеем доступ в интернет, перейдем в каталог /mnt и скачаем с ftp сервера бинарные пакеты. Пакеты сможем найти в каталоге ../hpcsh/binary/sets а также ../hpcsh/binary/kernel. Версия ядра для Jornada 680/690 - netbsd-GENERIC.gz.
Пакеты NetBSD находятся уже на диске. Распакуем их:
# tar xvzfp base.tgz
И так далее по порядку все остальные файлы .tgz.
После распаковки всех файлов .tgz меняем root каталог на /mnt:
# cd / # chroot /mnt
И создаем все необходимые устройства:
# cd /dev # sh MAKEDEV all
Cоздадим файловую систему MSDOS на disklabel e и смонтируем её:
# newfs_msdos /dev/wd0e # mount -o -l /dev/wd0e /mnt
Далее скопируем с сревера ftp файл hpcboot-sh3.exe и переместим его в каталог /mnt:
# mv hpcboot-sh3.exe /mnt/hpcboot.exe
также поступаем с ядром, которое для начала необходимо распаковать:
# gzip -d netbsd-GENERIC.gz # cp netbsd-GENERIC /mnt/netbsd
Некоторые программы ожидают от нас, что ядро будет также находиться в корневой директории / . Для этого скопируем его туда:
# cp netbsd-GENERIC /netbsd
Почти все действия по установке NetBSD уже позади. Настало время для конфигурирования системы:
Отредактируем файл /etc/rc.conf и допишим в него следущие строчки:
rc_configured=YES no_swap=YES savecore=NO hostname="jornada" rtclocaltime=YES
Далее установим часовую зону:
# ln /usr/share/zoneinfo/Europe/Warsaw /etc/localtime
Следующим нашим шагом будет добавление в файл /etc/fstab следующих строк:
/dev/wd0a / ffs rw,softdep,nocoredump,noatime,nodevmtime 1 1 /dev/wd0e /mnt msdos rw 0 0
Теперь осталось только добавить консоли. Допишем в файл /etc/ttys следущие строчки:
ttyE0 "/usr/libexec/getty std.9600" vt100 on secure ttyE1 "/usr/libexec/getty std.9600" vt100 on secure ttyE2 "/usr/libexec/getty std.9600" vt100 on secure ttyE3 "/usr/libexec/getty std.9600" vt100 on secure
Вот и все. Отмонтируйте устройства и перегрузите систему:
# umount /mnt # exit # umount /mnt # reboot
После рестарта системы и загрузки WinCE переходим на CF карту и запускаем hpcboot.exe и так, как показывает следующий скриншот, загружаем NetBSD выбирая в качестве "root file system" опцию "wd". В случае, если будут какие нибудь проблемы при загрузке системы, можно попробовать загрузиться с опцией рамдиска "md" но для этого необходим файл miniroot.fs. В другой закладке выберем пункт "Load Deubug Info", что бы иметь возможность видеть процесс загрузки системы в память.