Установка[1]:
# pkg install net/samba410
Стандартно, из портов. Возможно во время установки зависимостей, какие-то пакеты(например llvm80) ругнутся на отсутствие Python 3.6(хотя он и стоит, но по-умолчанию видит версию 2.7), тогда помогло установка этих пакетов отдельно(также из портов).
Если не самоподписаный сертификат, то добавим ключи сначала наши и туда же Цепочку сертификатов
cat private.key >> im.pem cat certificate.pem >> im.pem cat chain-1.pem >> im.pem cat chain-2.pem >> im.pem
Обращайте внимание на отступы в файле yml играют роль. Табуляцией не пользоваться.
В файле конфигурации yml в секции сертификата, прописываем наш:
certfiles:
  - "/usr/local/etc/ejabberd/certs/im.pem"
Метод аутентификации пользователей
В том же файле конфигурации с расширением “.yml” или “.yaml” прописываем метод проверки пользователей. Примеры:
example.net использует внутреннюю аутетентификацию, while домен example.com использует LDAP сервер localhost для проверки пользователей:
host_config:
  "example.net":
    auth_method: internal
  "example.com":
    auth_method: ldap
    ldap_servers:
      - "localhost"
    ldap_uids:
      - "uid"
    ldap_rootdn: "dc=localdomain"
    ldap_rootdn: "dc=example,dc=com"
    ldap_password: ""
localhost и второй otherhost:host_config:
  "example.net":
    auth_method: sql
    sql_type: odbc
    sql_server: "DSN=ejabberd;UID=ejabberd;PWD=ejabberd"
  "example.com":
    auth_method: ldap
    ldap_servers:
      - "localhost"
      - "otherhost"
    ldap_uids:
      - "uid"
    ldap_rootdn: "dc=localdomain"
    ldap_rootdn: "dc=example,dc=com"
    ldap_password: ""
Что такое CN, OU, DC?
Из RFC2253 (UTF-8 строковое представление отличительных имен):
String X.500 AttributeType ------------------------------ CN commonName L localityName ST stateOrProvinceName O organizationName OU organizationalUnitName C countryName STREET streetAddress DC domainComponent UID userid
Также необходимо создать учетку в AD которая имеет права на чтение LDAP базы домена my.domain.local, в моем случае это — CN=for_jabber,OU=it,DC=my,DC=domain,DC=local
ejabberdctl live
Источники:
https://habr.com/ru/post/192446/
https://www.freebsd.org/doc/ru/books/handbook/openssl.html
https://docs.ejabberd.im/admin/configuration/?kp=1&k1=-1
http://vladimir-stupin.blogspot.com/2017/09/ssl-ejabberd.html
How do I install MariaDB 10.3 on FreeBSD 12?, How to Install MariaDB 10.3 Database Server on FreeBSD 12?. MariaDB 10.3 is a multi-user, multi-threaded SQL database server. It is a community-developed fork of the MySQL relational database management system.
In my last article, I covered:
How to Install PHP 7.2 on FreeBSD 12
Below are the steps to install and configure MariaDB 10.3 on FreeBSD 12.
Start by updating your FreeBSD server Ports tree using the portsnap command:
$ jmutai@freebsd:~ % su - Password: root@freebsd:~# portsnap fetch update Looking up portsnap.FreeBSD.org mirrors… 5 mirrors found. Fetching public key from ec2-ap-southeast-2.portsnap.freebsd.org… done. Fetching snapshot tag from ec2-ap-southeast-2.portsnap.freebsd.org… done. Fetching snapshot metadata… done. Fetching snapshot generated at Sun Dec 9 00:19:28 UTC 2018: Extracting snapshot… done. Verifying snapshot integrity… done. Fetching snapshot tag from ec2-ap-southeast-2.portsnap.freebsd.org… done. Fetching snapshot metadata… done. Updating from Sun Dec 9 00:19:28 UTC 2018 to Sun Dec 9 19:15:19 UTC 2018. Fetching 5 metadata patches… done. Applying metadata patches… done. Fetching 0 metadata files… done. Fetching 78 patches. (78/78) 100.00% done. done. Applying patches… done. Fetching 3 new ports or files… done. /usr/ports was not created by portsnap. You must run 'portsnap extract' before running 'portsnap update'.
When running Portsnap for the first time, you need to extract the snapshot into /usr/ports:
sudo portsnap extract
You should get the message below at the end of the output.
Building new INDEX files... done.
Confirm that everything is up to date.
sudo portsnap fetch update
MariaDB 10.3 can be installed using binary or ports method. This installation is from the binary package using the pkgpackage manager.
Check if MariaDB 10.3 is available from your package cache:
$ pkg search mariadb | grep 10.3 mariadb103-client-10.3.11 Multithreaded SQL database (client) mariadb103-server-10.3.11 Multithreaded SQL database (server)
From the output, we can see there is version 10.3.11 available. Install both the server and client using the command below:
$ sudo pkg install mariadb103-server mariadb103-client
 Updating FreeBSD repository catalogue…
 FreeBSD repository is up to date.
 All repositories are up to date.
 The following 6 package(s) will be affected (of 0 checked):
 New packages to be INSTALLED:
     mariadb103-server: 10.3.11
     mariadb103-client: 10.3.11
     libedit: 3.1.20170329_2,1
     unixODBC: 2.3.7
     galera: 25.3.24
     boost-libs: 1.68.0_1
 Number of packages to be installed: 6
 The process will require 406 MiB more space.
 44 MiB to be downloaded.
 Proceed with this action? [y/N]: y
 [1/6] Fetching mariadb103-server-10.3.11.txz: 100%   29 MiB 159.5kB/s    03:11    
 [2/6] Fetching mariadb103-client-10.3.11.txz: 100%    2 MiB 101.4kB/s    00:17    
 [3/6] Fetching libedit-3.1.20170329_2,1.txz: 100%  123 KiB 125.6kB/s    00:01    
 [4/6] Fetching unixODBC-2.3.7.txz: 100%  456 KiB  93.5kB/s    00:05    
 [5/6] Fetching galera-25.3.24.txz: 100%  802 KiB 117.3kB/s    00:07    
 [6/6] Fetching boost-libs-1.68.0_1.txz: 100%   12 MiB 134.6kB/s    01:32    
 Checking integrity… done (0 conflicting)
 [1/6] Installing libedit-3.1.20170329_2,1…
 [1/6] Extracting libedit-3.1.20170329_2,1: 100%
 [2/6] Installing boost-libs-1.68.0_1…
 [2/6] Extracting boost-libs-1.68.0_1: 100%
 [3/6] Installing mariadb103-client-10.3.11…
 [3/6] Extracting mariadb103-client-10.3.11: 100%
 [4/6] Installing unixODBC-2.3.7…
 [4/6] Extracting unixODBC-2.3.7: 100%
 [5/6] Installing galera-25.3.24…
 [5/6] Extracting galera-25.3.24: 100%
 [6/6] Installing mariadb103-server-10.3.11…
 ===> Creating groups.
 Creating group 'mysql' with gid '88'.
 ===> Creating users
 Creating user 'mysql' with uid '88'.
 [6/6] Extracting mariadb103-server-10.3.11: 100%
 Message from boost-libs-1.68.0_1:
 You have built the Boost library with thread support.
 Don't forget to add -pthread to your linker options when
 linking your code.
 Message from mariadb103-client-10.3.11:
After installing MariaDB Database server on FreeBSD 12 server, you’ll need to start the service before you can configure it.
Run the following command in your terminal to enable  themysql-server service to start on system boot.
$ sudo sysrc mysql_enable="YES" mysql_enable: -> YES
Then start the service.
sudo service mysql-server start
Run the command mysql_secure_installation to harden MariaDB database server.
$ mysql_secure_installation
 NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
       SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!
 In order to log into MariaDB to secure it, we'll need the current
 password for the root user.  If you've just installed MariaDB, and
 you haven't set the root password yet, the password will be blank,
 so you should just press enter here.
 Enter current password for root (enter for none): 
 OK, successfully used password, moving on…
 Setting the root password ensures that nobody can log into the MariaDB
 root user without the proper authorisation.
 Set root password? [Y/n] y
 New password: 
 Re-enter new password: 
 Password updated successfully!
 Reloading privilege tables..
  … Success!
 By default, a MariaDB installation has an anonymous user, allowing anyone
 to log into MariaDB without having to have a user account created for
 them.  This is intended only for testing, and to make the installation
 go a bit smoother.  You should remove them before moving into a
 production environment.
 Remove anonymous users? [Y/n] Y
  … Success!
 Normally, root should only be allowed to connect from 'localhost'.  This
 ensures that someone cannot guess at the root password from the network.
 Disallow root login remotely? [Y/n] Y
  … Success!
 By default, MariaDB comes with a database named 'test' that anyone can
 access.  This is also intended only for testing, and should be removed
 before moving into a production environment.
 Remove test database and access to it? [Y/n] Y
 Dropping test database…
 … Success!
 Removing privileges on test database…
 … Success! 
 Reloading the privilege tables will ensure that all changes made so far
 will take effect immediately.
 Reload privilege tables now? [Y/n] Y
  … Success!
 Cleaning up…
 All done!  If you've completed all of the above steps, your MariaDB
 installation should now be secure.
 Thanks for using MariaDB!
Ensure you:
When done, test access using the root user
$ mysql -u root -p Enter password: <Enter password> Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 17 Server version: 10.3.11-MariaDB FreeBSD Ports Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]> SELECT VERSION(); +-----------------+ | VERSION() | +-----------------+ | 10.3.11-MariaDB | +-----------------+ 1 row in set (0.001 sec) MariaDB [(none)]> QUIT Bye
By default, MariaDB service binds to all available network interfaces as can be seen from:
$ sockstat -4 -6 | grep 3306 mysql mysqld 1350 21 tcp46 *:3306 *:*
If you don’t have services connecting to your database server from the network, you can limit this to localhost.
# sysrc mysql_args="--bind-address=127.0.0.1" mysql_args: -> --bind-address=127.0.0.1
You need to restart mysql-server after making this change
# service mysql-server restart Stopping mysql. Waiting for PIDS: 1350, 1350. Starting mysql.
Verify the change:
# sockstat -4 -6 | grep mysql mysql mysqld 1614 21 tcp4 127.0.0.1:3306 *:*
Your installation of MariaDB 10.3 on FreeBSD 12 has been successful. We went ahead and enabled the service to start on boot and hardened the server. Until next time, thanks for visiting our website. Follow us on our social media pages for instant updates.
Источник: https://computingforgeeks.com/how-to-install-mariadb-10-3-on-freebsd-12/
#список юзверей
grep -v "^#" /etc/passwd|awk -F : '{print $1}'|sort
#шелы и юзвери
grep -v "^#" /etc/passwd|awk -F : '{print $7"\t"$1}'|sort
cd /usr/ports/net-p2p/transmission-daemon
make clean && make install clean
 | 
Добавляем в /etc/rc.conf параметры запуска:
transmission_enable="YES" # Где лежат конфиги transmission_conf_dir="/usr/local/etc/transmission/" # Куда складывается скаченное transmission_download_dir="/usr/home/transmission/downloads" # Пользователь под которым работает демон. # Если задан пустой, то пускается под root'ом, что не рекомендуется. # Если параметр не задан, то запускается под transmission transmission_user="transmission" # Дополнительные флаги запуска transmission_flags=""  | 
Не забываем создать нужные папки и выдать на них разрешения.
 mkdir /usr/local/etc/transmission chown -R transmission:transmission /usr/local/etc/transmission mkdir -p /usr/home/transmission/downloads chown -R transmission:transmission /usr/home/transmission  | 
— Все директории кроме той, что указана в директиве transmission_conf_dir, нужно создать до первого запуска
— У пользователя, под которым будет работать transmission, должен быть 
доступ на чтение и запись во все указанные в rc.conf директории
— Пользователь transmission создается при установке программы, если 
хотите использовать другого пользователя, то создавайте ручками.
Теперь нам нужен конфигурационный файл. Для его создания запускаем и выключаем transmission:
# /usr/local/etc/rc.d/transmission start
# /usr/local/etc/rc.d/transmission stop
Файл создан! /home/media/torrents/.transmission/settings.json
Что там есть интересного для нас?
"bind-address-ipv4": "0.0.0.0",
На каких ip-адресах работает transmission. 0.0.0.0 означает, что используются все доступные ip-адреса. Если необходимо, то можно указать только конкретный ip-адрес.
"peer-port": 51413,
"peer-port-random-high": 65535,
"peer-port-random-low": 49152,
На каких портах идет работа. Я решил, что такой диапазон по умолчанию между значениями peer-port-random-low и peer-port-random-high — это слишком жирно и указал
"peer-port-random-high": 55560,
"peer-port-random-low": 55556,
Внимание! Указанные выше (а также ещё некоторые) порты необходимо разрешить в брандмауэре! Вот образец для стартового скрипта ipfw:
# torrent incoming
$fw add allow ip from me 55556-55560 to any out
$fw add allow ip from any to me 55556-55560 in
$fw add allow ip from me 6881-6889 to any out
$fw add allow ip from any to me 6881-6889 in
# transmission web-interface
$fw add allow ip from me 9090 to any out
$fw add allow ip from any to me 9090 in
# transmission incoming listen $fw add allow ip from me 51413 to any out
$fw add allow ip from any to me 51413 in
Далее. Настройки управления через web-интерфейс.
"rpc-authentication-required": false,
"rpc-bind-address": "0.0.0.0",
"rpc-enabled": true,
"rpc-password": "{0bad0a49bd171d9d225da4e435a91ff6052605723MoqUS1K",
"rpc-port": 9091,
"rpc-url": "/transmission/",
"rpc-username": "",
"rpc-whitelist": "127.0.0.1",
"rpc-whitelist-enabled": true,
rpc-authentication-required — обязательна ли аутентификация того, кто пытается подключиться? Да, поэтому ставим true
rpc-bind-address — на каком ip поднимать интерфейс. Значение 0.0.0.0 — на всех
rpc-enabled — web-интерфейс включен или выключен
rpc-password — пароль для доступа. Запишите его простым текстом вместо существующего, при запуске transmission сам его зашифрует
rpc-port — порт, на котором работает web-интерфейс. Настоятельно 
рекомендуется поменять на другой, например 9090 и не забыть его 
разрешить в брандмауере!
rpc-url — пусть останется так как есть
rpc-username — имя пользователя для доступа, имя придумайте сами
rpc-whitelist — с каких ip можно подключаться. Пустая строка у меня не 
прокатила (0.0.0.0 не пробовал, может прокатит), поэтому я оставил этот 
параметр в покое
rpc-whitelist-enabled — использовать или нет rpc-whitelist. Я хотел соединяться с любых адресов, поэтому задал false. 
Используем
Запускаем
# /usr/local/etc/rc.d/transmission start
Заходим в web-морду. Открываем браузер и в адресной строке пишем
http:///transmission/web/
У нас спрашивают имя пользователя и пароль (которые мы задали в настройках), после чего допускают к управлению.
Добавление торрентов возможно двумя способами
— через web-интерфейс (папка со стрелкой вверх)
— добавлением торрент-файла в директорию, заданную в директиве 
transmission_watch_dir файла /etc/rc.conf. После успешного добавления, к
 имени торрент-файла будет приписано .added, такой файл можно удалить.
Полезности
Чем хорош transmission, так это тем, что на всяческие события можно приделать собственный внешний скрипт-обработчик.
Например, я хотел, чтобы по окончанию скачивания файла, ссылка на него 
выкладывалась в директорию /home/media/torrents/.finished а также на 
определенный email приходило письмо о том, что файл скачался. Нет ничего
 проще.
Создаем файл /home/media/torrents/.transmission/torrent_done.sh со следующим содержимым:
#!/bin/sh
# create link
ln -s /home/media/torrents/$TR_TORRENT_NAME /home/media/torrents/.finished/$TR_TORRENT_NAME
# send email echo $TR_TIME_LOCALTIME - $TR_TORRENT_NAME Downloaded | mail -s "Torrent Done" root@server exit 0;
Переменные, которые можно использовать в скрипте:
$TR_APP_VERSION — версия transmission
$TR_TORRENT_ID — id торрента, как оно показывается в remote-GUI
$TR_TORRENT_NAME — имя торрента как оно отображается в интерфейсе
$TR_TORRENT_DIR — директория торрента
$TR_TORRENT_HASH — хэш торрента
$TR_TIME_LOCALTIME — дата и время запуска стрипта
Выключаем transmission и редактируем его конфигурационый файл /home/media/torrents/.transmission/settings.json
"script-torrent-done-enabled": true,
"script-torrent-done-filename": "/home/media/torrents/.transmission/torrent_done.sh",
Запускаем transmission
Источник: 
https://www.site-motor.ru/docs/freebsd/net-p2p_transmission.html
http://www.lissyara.su/articles/freebsd/programms/transmission/
ntfs-3g -o permissions /dev/ada1p2 /mnt
Настройка Vsftpd passive ports
Стали жаловаться пользователи, что их не устраивает как работает ftp, в тот момент
был установлен распространенный фтп сервер vsftpd. В стандартном конфиге не нашел ничего полезного, но выловил в другом месте. Сделать нужно следующее:
в /etc/vsftpd.conf прописываем:
| 1 2  | pasv_min_port=49152 pasv_max_port=65535  | 
Диапазон или порт, разумеется можно выбрать по вкусу.
В файрволе открываем порты:
| 1 | iptables -A INPUT -p tcp —dport 49152:65535 -j ACCEPT | 
Запись опубликована 3 июня 2010 автором admin в рубрике Linux. Источник: http://www.qinet.ru/2010/06/264/
В продолжении моей статьи как установить openfire пришло время обновить его тем более уже прошло более 5 обновлений, моя версия Openfire 3.10.0 на данный момент, а сейчас уже можно скачать Openfire 4.0.1 Так что давайте перейдем к вопросу как и с чего начать обновление openfire сервера.
Для обновления Openfire делаем следующие (напомню что данная инструкция описывает обновление сервера Openfire под Ubuntu):
Вот таким простым способом мы обновили сервер Openfire (на самом деле на все это у меня ушло не более 10 минут, так что ни чего не бойтесь и делайте по инструкции)
PS кстати еще может кому понадобиться может пригодиться статья как восстановить пароль администратора в openfire
Источник: https://www.nibbl.ru/ubuntu/obnovlenie-openfire-servera.html
Автор: Воронов Глеб | 08-05-2013 Нет комментариев
WebMin — крайне полезная вещь для начинающих администраторов. 
Консоль Unix — неоспоримо мощная штука. Но не всем так просто сразу её 
освоить. Кнопочки, подсказки и описания, ещё и на русском — то, от чего 
вряд ли откажется молодой красноглазик.
Когда я узнал об этом продукте, то установил, как и многое — чисто 
потестить. Особо ничем она мне не помогла, так как сервер уже был 
настроен и отлажен, но все же иногда устанавливаю…
Установка как обычно проще простого:
cd /usr/ports/sysutils/webmin/ make && make install && make clean
После сборки и установки вылезла кратенькая инструкция. Как я заметил от версии к версии она не меняется:
After installing Webmin for the first time you should perform the following
steps as root:* Configure Webmin by running /usr/local/lib/webmin/setup.sh
* Add webmin_enable=»YES» to your /etc/rc.conf
* Start Webmin for the first time by running /usr/local/etc/rc.d/webmin start
The parameters requested by setup.sh may then be changed from within Webmin
itself.
Порт намекает, что надо сперва его настроить, потом добавить сервис в автозагрузку и потом запустить.
В установке я все оставляю по умолчанию кроме логина и пароля. Даже порт не меняю. После конфигурации запускаем по инструкции.
/usr/local/etc/rc.d/webmin start Starting webmin. Pre-loaded WebminCore
Все, работает.
можно заходить на вебморду (не забываем порт, который указали в 
настройках. По умолчанию 10000)и пользоваться. Первым делом я меняю тему
 и язык ставлю русским(благо, выбор есть)
Забыть пароль может кто угодно. Вот так случилось и со мной. Необходимо было что то посмотреть в webmin-е на сервере, который когда то давно администрировал. И как водится — пароль не помню. Разработчики подумали о таких как я (за что им отдельный респект) и создали скрипт смены пароля.
/usr/local/lib/webmin/changepass.pl /usr/local/etc/webmin user password
Источник: https://tradenark.com.ua/centos/freebsd-webmin-installing-change-password/
Локализация — I18N/L10N использование и настройка
необходим только в случае работы за локальной консолью.
Данный пункт локализации не требуется и не влияет на работу удаленных text-mode эмуляторов терминалов, таких как putty или openssh.
Итак, начиная с релиза FreeBSD 10.1 в системе для Russian UTF-8, в консольном драйвере vt (4) имеются:
— клавиатурные мапперы/переключатели:
# ls -la /usr/share/vt/keymaps/ | grep ru
-r--r--r--  1 root  wheel  16228 Nov 12 06:04 ru.kbd
-r--r--r--  1 root  wheel  16234 Nov 12 06:04 ru.shift.kbd
-r--r--r--  1 root  wheel  16232 Nov 12 06:04 ru.win.kbd
BashCopy
— фонты:
# ls -la /usr/share/vt/fonts/
-r--r--r--  1 root  wheel  8452 Nov 12 06:04 gallant.fnt
-r--r--r--  1 root  wheel  8742 Nov 12 06:04 vgarom-8x14.fnt
-r--r--r--  1 root  wheel  9864 Nov 12 06:04 vgarom-8x16.fnt
-r--r--r--  1 root  wheel  5384 Nov 12 06:04 vgarom-8x8.fnt
-r--r--r--  1 root  wheel  5400 Nov 12 06:04 vgarom-thin-8x16.fnt
-r--r--r--  1 root  wheel  2704 Nov 12 06:04 vgarom-thin-8x8.fnt
BashCopy
Шрифт gallant.fnt – красивый но не поддерживает кириллические символы.
Консольный драйвер vt (4) по умолчанию использует для работы режим VGA разрешением 640×480×16 (vt_vga).
Для использования UTF-8, необходимо произвести следующие действия:
— добавить в /boot/loader.conf строку:
kern.vty=vt
означает использование консольного драйвера vt вместо syscons
Согласно информации на https://wiki.freebsd.org/Newcons VT не поддерживает экранные заставки и выключение монитора в частности.
Поэтому все вопросы, касающиеся этой темы, можно считать решенными. Ответ на вопрос, как сделать включение заставки в VT, ответ – НИКАК
Если потребуется собрать собственное ядро, только с новым драйвером консоли, необходимо в ядро добавить:
#-- закомментарить *vga*, *sc* и оставить только *vt*
#device        vga             # VGA video card driver                 
#device        sc                                                      
device         vt                                                              
device         vt_vga
BashCopy
ps. ядро GENERIC 10.1 уже собрано с поддержкой vt (4) (man vt).
— добавить в /etc/rc.conf
#-- Russians keymap, uncomment that you preffer
# CAPS switch to russian
keymap="ru"
# SHIFT switch to russian, top keyboard raw as number
#keymap="ru.shift"
# CTRL+SHIFT switch to russian
#keymap="ru.win"
#-- font load
font8x16="vgarom-8x16"
BashCopy
Шрифт vgarom используется системой по умолчанию, можно не задавать, указан как пример задания фонта, когда появится выбор. верхнее означает что на данный момент можно использовать, как это было и ранее, три варианта клавиатурного маппинга, любой который Вам удобнее, раскомментарьте один, который Вам предпочтительней (выше это keymap=«ru»):
— keymap="ru" – переключение на русский клавишей CAPS Lock
— keymap="ru.shift" – переключение на русский клавишей CAPS Lock, но верхний ряд на клавиатуре по умолчанию будет цифровой
— keymap="ru.win" – переключение на русский клавишами CTRL+SHIFT
выбор фонтов пока отсутствует, по умолчанию в наличии пока лишь следующие:
gallant.fnt – красивый, но не поддерживает русский
vgarom-8×8.fnt – матрица 8×8 с поддержкой русских символов
vgarom-8×14.fnt – матрица 8×14 с поддержкой русских символов
vgarom-8×16.fnt – матрица 8×16 с поддержкой русских символов
vgarom-thin-8×8.fnt
vgarom-thin-8×16.fnt
Консольные фонты Terminus, можно скачать:
фонт 8×16: ter-u16.fnt
чуть другой фонт 8×16: ter-u8x16.fnt
фонт 16×32: ter-u32.fnt
загрузить вручную, например:
# vidcontrol -f ter-u32.fnt
BashCopy
или положить в /usr/share/vt/fonts/ и настроить /etc/rc.conf, например:
font8x16="ter-u8x16.fnt"
BashCopy
Шрифты 16×32 нужны(удобны) для широкоформатных мониторов, для загрузки фонта ter-u32.fnt (16×32), нужно изменить скрипт /etc/rc.d/syscons или использовать /etc/rc.local и /etc/rc.conf.local для загрузки 16×32 фонтов.
Тип эмулируемого терминала для UTF-8 консоли: xterm
Начиная с 9.0, для syscons (4) драйвера и очень важно – для vt (4) драйвера, в /etc/ttys необходимо использовать тип эмулируемого терминала xterm:
ttyv0   "/usr/libexec/getty Pc"         xterm   on  secure
# Virtual terminals
ttyv1   "/usr/libexec/getty Pc"         xterm   on  secure
ttyv2   "/usr/libexec/getty Pc"         xterm   on  secure
ttyv3   "/usr/libexec/getty Pc"         xterm   on  secure
ttyv4   "/usr/libexec/getty Pc"         xterm   on  secure
ttyv5   "/usr/libexec/getty Pc"         xterm   on  secure
ttyv6   "/usr/libexec/getty Pc"         xterm   on  secure
ttyv7   "/usr/libexec/getty Pc"         xterm   on  secure
(чтобы перечитался /etc/ttys)
/etc/rc.d/syscons restart
BashCopy
Ранее, syscons (4), для KOI8-R тип эмулируемого терминала cons25r, для KOI8-U – cons25u. Для CP437 (VGA default) – cons25, US-ASCII – cons25w.
При использовании KMS драйверов: i915kms или radeonkms в /boot/loader.conf добавить:
kern.vt.fb.default_mode="1024x768"
BashCopy
Для использования vt (4) драйвера в text-mode, /boot/loader.conf:
hw.vga.textmode=1
BashCopy
Если ядро собрано с поддержкой обоих драйверов: *sc*(4) и *vt*(4), старый драйвер можно вернуть, задав в /boot/loader.conf:
kern.vty=sc
BashCopy
Описан в FreeBSD HandBook и выполняется как обычно, локализация login shell’ов и может быть использована совместно с настройкой login class через описание его в /etc/login.conf
Локализация представляет из себя следующую конструкцию:
LanguageCode_CountryCode.Encoding
BashCopy
где: LanguageCode_Country Code Description можно выбрать одно из значений:
en_US English, United States ru_RU Russian, Russia
команда покажет все присутствующие в системе locale:
# locale -a | more
BashCopy
Работа с charater set (charset) для языков, например:
– ISO8859-1, ISO8859-15, KOI8-R, CP1251, CP437 и тд и тп описана в multibyte (3), а список charsets для языков можно найти в IANA Registry
FreeBSD использует Xorg-compatible locale encodings.
1) использование login класса
— можно отредактировать /etc/login.conf и изменить настройки класса «russian» или создать отдельный класс russianu
a) изменяем класс russian в /etc/login.conf
russian|Russian Users Accounts:
        :charset=KOI8-R:
        :lang=ru_RU.KOI8-R:
        :tc=default:
BashCopy
на
russian|Russian Users Accounts:
        :charset=UTF-8:
        :lang=ru_RU.UTF-8:
        :tc=default:
BashCopy
или
b) создаем в дополнение к классу «russian», новый класс «russianu»
russianu|Russian Users Accounts UTF-8:
        :charset=UTF-8:
        :lang=ru_RU.UTF-8:
        :tc=default:
BashCopy
По завершении перестраиваем хеш-базу:
# cap_mkdb /etc/login.conf
BashCopy
Все, осталось перевести пользователей которым нужен UTF-8 на новый класс используя на выбор: passwd (1), pw (8), chpass (1), vipw (8)
Пример:
# pw user mod alex -L russianu
BashCopy
2) настройка locale в shell/bash/csh/tcsh
для настройки локализации в шелах, необходимо соответствующим образом настроить тот или иной shell, см. соответствующий man
Настройка локализации в login shell’ах сводится как минимум к заданию переменных:
LANG
MM_CHARSET
BashCopy
в пользовательских файлах: ~/.login_conf и/или пользовательских стартап
shell файлах: ~/.profile, ~/.bashrc, или ~/.cshrc.
BashCopy
sh/bash:
export LANG=ru_RU.UTF-8
export MM_CHARSET=UTF-8
BashCopy
csh/tsch:
setenv LANG ru_RU.UTF-8
setenv MM_CHARSET UTF-8
BashCopy
Или в системных стартап shell файлах: /etc/profile и /etc/csh.login
Для bash необходимо создать в домашней директории файл
.inputrc
set convert-meta Off
set input-meta On
set output-meta On
BashCopy
# pkg install converters/convmv
# make -C /usr/ports/converters/convmv install clean
# man convmv
BashCopy
пример использования:
# convmv -f koi8-r -t utf-8 *
# convmv -f koi8-r -t utf-8 --notest *
# convmv -r -f koi8-r -t utf-8 --notest *
BashCopy
При использовании утилиты convmv, возможны проблемы с перекодированием отдельных символов.
Можно воспользоваться утилитами iconv и recode:
— iconv (интегрирована в FreeBSD 10.x)
— /usr/ports/converters/libiconv в более ранних версиях
примеры использования:
iconv:
# man iconv
# iconv -c -f koi8-r -t utf-8 inputfile
# iconv -c -f koi8-r -t utf-8 inputfile > outputfile
# iconv -c -f koi8-r -t utf-8 < inputfile > outputfile
BashCopy
recode:
# make -C /usr/ports/converters/recode install clean
# man recode
# recode koi8-r..utf-8 inputfile
# recode koi8-r..utf-8 < inputfile > outputfile
BashCopy
При использовании утилиты iconv, возможны проблемы с перекодированием отдельных символов, утилита recode, работает более адекватно.
Для удаленного терминального доступа из системы с UTF-8 локализацией к системам с locale отличной от UTF-8, можно воспользоваться утилитой luit:
пример использования luit (man luit):
# luit -encoding "KOI8-R" slogin username@host.domain
BashCopy
в качестве encoding использовать charset соответствующие удаленному locale, в данном примере KOI8-R
Удаленный терминальный доступ из Windows в Unix-like OS с locale UTF-8:
— использование утилиты putty, настройка:
Putty -> Window -> Translation -> Remote character set: UTF-8
осталась неизменной, так как основная масса DE, WM и X-Apps в настоящее время ориентирована на работу с UTF-8, больше не нужно использовать shell-wrapper’ы или переопределять переменную LANG для их запуска.
фонты в Xorg:
— при использовании locale == ru_RU.UTF-8, необходимо использовать фонты с поддержкой iso10646
— misc содержат исправленные фонты iso10646, но по умолчанию не прописаны в fonts.aliases, если есть привычка использования алиасов, придется прописать их самостоятельно.
Например, как советует Markus Kuhn Unicode fonts and tools for X11.
— фонты misc с iso10646 и остальные фонты с iso10646, необходимо указывать первыми в xorg.conf
например так:
FontPath     "/usr/local/lib/X11/fonts/misc/"
        FontPath     "/usr/local/lib/X11/fonts/100dpi/"
        FontPath     "/usr/local/lib/X11/fonts/75dpi/"
        FontPath     "/usr/local/lib/X11/fonts/terminus-font/"
        FontPath     "/usr/local/lib/X11/fonts/bitstream-vera/"
        FontPath     "/usr/local/lib/X11/fonts/dejavu/"
        FontPath     "/usr/local/lib/X11/fonts/freefont/"
        FontPath     "/usr/local/lib/X11/fonts/unifont/"
        FontPath     "/usr/local/lib/X11/fonts/local/"
        FontPath     "/usr/local/lib/X11/fonts/webfonts/"
        FontPath     "/usr/local/lib/X11/fonts/urw/"
        FontPath     "/usr/local/lib/X11/fonts/cyrillic/"
        FontPath     "/usr/local/lib/X11/fonts/artwiz-ru/"
        FontPath     "/usr/local/lib/X11/fonts/freefont-ttf/"
        FontPath     "/usr/local/lib/X11/fonts/urwfonts-ttf/"
        FontPath     "/usr/local/lib/X11/fonts/TTF/"
        FontPath     "/usr/local/lib/X11/fonts/OTF/"
        FontPath     "/usr/local/lib/X11/fonts/Type1/"
BashCopy
Вы можете установить собственные предпочтения.
посмотреть установленные фонты:
# fc-list
# ls -laR /usr/local/etc/fonts/
BashCopy
— посмотреть фонты iso10646
# xlsfonts | grep iso10646
# xlsfonts | grep "-misc-fixed-medium" | grep iso10646 
# xlsfonts | grep "-misc-fixed-medium-r-semicondensed" | grep 10646
BashCopy
графические эмуляторы терминала с encoding, примеры с KOI8-R:
— mate-terminal, gnome-terminal:
# sh -c "export LANG=ru_RU.KOI8-R CHARSET=KOI8-R; gnome-terminal --geometry 80x35 --disable-factory"
# sh -c "export LANG=ru_RU.KOI8-R CHARSET=KOI8-R; mate-terminal --geometry 80x35 --disable-factory"
# sh -c "export LANG=ru_RU.KOI8-R CHARSET=KOI8-R; xfce4-terminal"
BashCopy
переменные среды LANG,CHARSET в соответствии с использованием locale, например на удаленной стороне, или для локальной работы с файлами в KOI8-R – xterm с encoding
# xterm -en [koi8-r|cp1251|...]
BashCopy
Зависит исключительно от написания приложения в соответствии со стандартом i18n и работой с базами termcap в случае xBSD или terminfo в случае Linux или SYSV-based для эмулируемого терминала TERM.
К сожалению, консольных фонтов пока, очень мало, не говоря уже о хороших и красивых фонтах.
Некоторые фонты и клавиатурный маппинг от Александра Рыбалко, можно найти:
https://people.freebsd.org/~ray/newcons/fonts/
https://people.freebsd.org/~ray/newcons/newcons_kbd/
https://people.freebsd.org/~emaste/newcons/
Пример конвертации bdf фонта в fnt используя vtfontcvt и его загрузку используя vidcontrol, см: https://wiki.freebsd.org/Newcons
Минимум позволяющий работать в консоли с UTF-8:
— отображение – /usr/bin/less (использовать в качестве PAGER)
— редактирование – /usr/bin/vi , редактор Vi в 10.1 собран с поддержкой wide-char
— псевдографика в mc выглядит красиво, встроенный редактор поддерживает utf-8
— любимый многими, простой редактор /usr/bin/ee не поддерживает utf-8, отображает криво, но позволяет набирать текст «вслепую».
— настройку chrasets и работу samba3x, samba4x – не проверял
Все вышенаписанное проверено на реальном железе с FreeBSD 10.1 и в гостевой FreeBSD 10.1 под VirtualBox, включая Xorg и несколько DE и WM.
Практика:
— используем syscons (4) для работы в консоли с KOI8-R, CP1251, CP866
— используем vt (4) для работы в консоли только с UTF-8
Вывод: наконец можно постепенно избавиться от разнообразия: CP866,CP1251,KOI8-R и тд и тп и использовать одну универсальную кодировку UTF-8.
источник: http://unix1.jinr.ru/~lavr/vt/vtcons.html, https://blognode.ru/freebsd-utf-8-v-konsoli-i-terminale