Установка FreeBSD 13.1 (x64) на VMWare 16.2.3 на минималках :: Cетевой уголок Majestio

Установка FreeBSD 13.1 (x64) на VMWare 16.2.3 на минималках


Новая редакция когда-то написанной мною заметки по установке FreeBSD 9.1 на антикварный комп с 96Мб памяти. Здесь попробую воспроизвести те же действия, чтобы получить легковесную среду с иксами. За одним исключением - будет ставится 64-разрядная версия FreeBSD 13.1.

  1. Первоначальная установка
  2. Обновление портов и пакетов
  3. Установка Bash и Midnight Commander
  4. Монтирование procfs и правка .bashrc
  5. Заменяем для рута и пользователя редактор по-умолчанию с vi на mcediror
  6. Заменяем шелл на bash для пользователя
  7. Правка авторизации по SSH
  8. Правка локали и шрифтов системной консоли
  9. Пересборка ядра
  10. Настройка файервола
  11. Установка и настройка XOrg и софта для VMWare
  12. Производим настройки по всем собранным сообщениям
  13. Установка и настройка OpenBox, Feh, Bmpanel2
  14. Установка VNC сервера и настройка
  15. Итоги

1. Первоначальная установка

Как обычно выкачиваем iso-образ, производим настройки - ZFS (авто), статический IP, пользователь majestio с добавлением в группу wheel.

2. Обновление портов и пакетов

su
pkg upgrade
portsnap fetch extract

3. Установка Bash и Midnight Commander

pkg install shells/bash
pkg install shells/bash-completion
pkg install misc/mc

Message from bash-completion-2.11_1,2:

--
To enable the bash completion library, add the following to
your .bashrc file:

[[ $PS1 && -f /usr/local/share/bash-completion/bash_completion.sh ]] && \
        source /usr/local/share/bash-completion/bash_completion.sh

See /usr/local/share/doc/bash-completion/README.md for more information.
=====
Message from libsigsegv-2.14:

--
Note that the stackoverflow handling functions of this library need
procfs mounted on /proc.
=====
Message from python39-3.9.13:

--
Note that some standard Python modules are provided as separate ports
as they require additional dependencies. They are available as:

py39-gdbm       databases/py-gdbm@py39
py39-sqlite3    databases/py-sqlite3@py39
py39-tkinter    x11-toolkits/py-tkinter@py39
=====
Message from mc-4.8.28:

--
Midnight Commander was built with subshell support, which works with most
popular shells, e.g. bash(1), dash(1), tcsh(1), zsh(1), but not sh(1) due
to its lack of "precmd" or equivalent hooks which mc(1) needs to read the
subshell's current directory.

  $ env SHELL=/bin/sh mc
  common.c: unimplemented subshell type 1
  read (subshell_pty...): No such file or directory (2)

Please either use more advanced interactive shell, or start mc(1) with -u
(--nosubshell) switch if you're confined to /bin/sh for some reason.

4. Монтирование procfs и правка .bashrc

Согласно предыдущим замечаниям к установкам смонтируем procfs, а также добавим в /etc/fstab

mount -t procfs proc /proc
mcedit /etc/fstab

/etc/fstab:

proc /proc procfs rw 0 0

5. Заменяем для рута и пользователя редактор по-умолчанию с vi на mcediror

Правим /root/.profile и /home/majestio/.profile

mcedit /root/.profile
mcedit /home/majestio/.profile
...
EDITOR=mcedit; export EDITOR
...

Правим /root/.cshrc /home/majestio/.cshrc

mcedit /root/.cshrc
mcedit /home/majestio/.cshrc
...
setenv EDITOR mcedit
...

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

6. Заменяем шелл на bash для пользователя

Bash ставим по причине отсутствия сабшелла у пользователей, пользующих sh, в Midnight Commander'е

chsh majestio

Путь к bash'у - /usr/local/bin/bash

А в /home/majestio/.profile добавляем:

[[ $PS1 && -f /usr/local/share/bash-completion/bash_completion.sh ]] && \
        source /usr/local/share/bash-completion/bash_completion.sh

7. Правка авторизации по SSH

В файле /etc/ssh/sshd_config раскомментируем строчку:

AuthorizedKeysFile .ssh/authorized_keys .ssh/authorized_keys2

В домашнем каталоге пользователя majestio создаем файл ключей:

mkdir -p /home/majestio/.ssh
touch /home/majestio/.ssh/authorized_keys
chmod 0744 /home/majestio/.ssh
chmod 0644 /home/majestio/.ssh/authorized_keys

8. Правка локали и шрифтов системной консоли

Сперва добавим в /etc/login.conf следующие строки:

utf8|UTF-8 Users Accounts:\
  :charset=UTF-8:\
  :lang=en_US.UTF-8:\
  :tc=default:
utf8r|Russian UTF-8 Users Accounts:\
  :charset=UTF-8:\
  :lang=ru_RU.UTF-8:\
  :tc=default:
postgres:\
  :lang=en_US.UTF-8:\
  :setenv=LC_COLLATE=C:\
  :tc=default:

Далее, для пользователя root и majestio (тут и далее - выбираете своего) прописываем:

cap_mkdb /etc/login.conf
pw usermod -n root -L utf8
pw usermod -n majestio -L utf8r

Выкачиваем шрифты terminus на выбор в каталог /usr/share/vt/fonts/:

Ссылки:

cd /usr/share/vt/fonts/
fetch http://majestio.info/assets/stuff/ter-u16.fnt

Прописываем нужный в /etc/rc.conf, и за одно переключение Рус/Лат по Ctrl-Shift:

font8x16="ter-u16.fnt"
keymap="ru.win"

А в /boot/loader.conf прописываем:

hw.vga.textmode=0
kern.vty=vt
kern.maxfiles=65535

9. Пересборка ядра

Пересобираем ядро согласно Хэндбуку. На этапе редактирования конфигурации ядра надо проверить наличие следующих параметров (согласно /usr/local/share/doc/postgresql/README-server), при необходимости добавить/изменить:

# PostgreSQL
options         SYSVSHM  # как правило 
options         SYSVSEM  # сейчас эти опции
options         SYSVMSG  # в ядре по умолчанию
options         SHMMAXPGS=65536
options         SEMMNI=40
options         SEMMNS=240
options         SEMUME=40
options         SEMMNU=120
# Firewall
options         IPFIREWALL
options         IPFIREWALL_VERBOSE
options         IPFIREWALL_VERBOSE_LIMIT=5
options         DEVICE_POLLING
options         TEKEN_UTF8

Собственно процесс пересборки (исходное работоспособное ядро положим в /boot/kernel.good):

cp -R /boot/kernel /boot/kernel.good
cd /usr/src/sys/amd64/conf
cp GENERIC MYKERNEL
mcedit MYKERNEL
cd /usr/src
make buildkernel KERNCONF=MYKERNEL
make installkernel KERNCONF=MYKERNEL

Не перегружаемся!!!

10. Настройка файервола

Добавляем в /etc/rc.conf

firewall_enable="YES"
firewall_type="closed"
firewall_script="/etc/ipfw.rules"

Создаем файл правил файервола /etc/ipfw.rules следующего содержания:

#!/bin/sh
 

################ Начало файла с правилами IPFW ##################
# Сброс всех правил перед началом работы скрипта.
 
ipfw -q -f flush
 
# Префикс для создания правил
 
cmd="ipfw -q add"       # команда добавления правил
eth="em0"               # название интерфейса
gw="192.168.1.1"        # адрес шлюза
 
#################################################################
# Нет ограничений на внутреннем интерфейсе локальной сети
# Нет необходимости в этом, если у вас нет локальной сети.
# Замените xl0 на название интерфейса вашей локальной сети
#################################################################
$cmd 00005 allow all from any to any via $eth
 
#################################################################
# Нет ограничений на интерфейсе Loopback
#################################################################
$cmd 00010 allow all from any to any via lo0
 
#################################################################
# Разрешить пакет, если он был ранее добавлен в "динамическую"
# таблицу при помощи выражения allow keep-state
#################################################################
$cmd 00015 check-state
 
#################################################################
# Раздел правил для исходящего трафика на внешнем интерфейсе
#################################################################
 
# Разрешить исходящий трафик к DNS серверу (DNS-на шлюзе)
$cmd 00110 allow tcp from any to $gw 53 out via $eth setup keep-state
$cmd 00111 allow udp from any to $gw 53 out via $eth keep-state
 
# Разрешить исходящий трафик для незащищенного www соединения
$cmd 00200 allow tcp from any to any 80 out via $eth setup keep-state
 
# Разрешить исходящий трафик для защищенного www соединения
# https с поддержкой TLS и SSL
$cmd 00220 allow tcp from any to any 443 out via $eth setup keep-state
 
# Разрешить исходящий POP/SMTP
$cmd 00230 allow tcp from any to any 25 out via $eth setup keep-state
$cmd 00231 allow tcp from any to any 110 out via $eth setup keep-state
 
# Разрешить исходящий трафик для FreeBSD (make install & CVSUP)
# По сути назначаем пользователю root полные привилегии.
$cmd 00240 allow tcp from me to any out via $eth setup keep-state uid root
 
# Разрешаем исходящий icmp ping
$cmd 00250 allow icmp from any to any out via $eth keep-state
 
# Разрешаем исходящий трафик Time
$cmd 00260 allow tcp from any to any 37 out via $eth setup keep-state
 
# Разрешаем исходящий трафик nntp news
$cmd 00270 allow tcp from any to any 119 out via $eth setup keep-state
 
# Разрешаем исходящий защищённый трафик FTP, Telnet и SCP
# Эта функция использует SSH (secure shell)
$cmd 00280 allow tcp from any to any 22 out via $eth setup keep-state
 
# Разрешаем исходящий трафик whois
$cmd 00290 allow tcp from any to any 43 out via $eth setup keep-state
 
# Запрещаем и заносим в журнал остальной исходящий трафик.
# Обеспечивает политику межсетевого экрана закрытого типа
$cmd 00299 deny log all from any to any out via $eth
 
#################################################################
# Раздел правил для входящего трафика на внешнем интерфейсе
#################################################################
 
# Запрещаем весь входящий трафик с немаршрутизируемых сетей
$cmd 00300 deny all from 192.168.0.0/16 to any in via $eth   # RFC 1918 private IP
$cmd 00301 deny all from 172.16.0.0/12 to any in via $eth    # RFC 1918 private IP
$cmd 00302 deny all from 10.0.0.0/8 to any in via $eth       # RFC 1918 private IP
$cmd 00303 deny all from 127.0.0.0/8 to any in via $eth      # loopback
$cmd 00304 deny all from 0.0.0.0/8 to any in via $eth        # loopback
$cmd 00305 deny all from 169.254.0.0/16 to any in via $eth   # DHCP auto-config
$cmd 00306 deny all from 192.0.2.0/24 to any in via $eth     # reserved for docs
$cmd 00307 deny all from 204.152.64.0/23 to any in via $eth  # Sun cluster interconnect
$cmd 00308 deny all from 224.0.0.0/3 to any in via $eth      # Class D & E multicast
 
# Запрещаем пинг извне
$cmd 00310 deny icmp from any to any in via $eth
 
# Запрещаем ident
$cmd 00315 deny tcp from any to any 113 in via $eth
 
# Запрещаем все Netbios службы. 137=name, 138=datagram, 139=session
# Netbios это MS/Windows сервис обмена.
# Блокируем MS/Windows hosts2 запросы сервера имен на порту 81
$cmd 00320 deny tcp from any to any 137 in via $eth
$cmd 00321 deny tcp from any to any 138 in via $eth
$cmd 00322 deny tcp from any to any 139 in via $eth
$cmd 00323 deny tcp from any to any 81 in via $eth
 
# Запрещаем любые опоздавшие пакеты
$cmd 00330 deny all from any to any frag in via $eth
 
# Запрещаем ACK пакеты, которые не соответствуют динамической таблице правил.
$cmd 00332 deny tcp from any to any established in via $eth
 
# Разрешить входящий трафик для www, так как я использую сервер apache
$cmd 00400 allow tcp from any to me 80 in via $eth setup limit src-addr 2
 
# Разрешить входящий трафик безопасных FTP, Telnet и SCP из глобальной сети
$cmd 00410 allow tcp from any to me 22 in via $eth setup limit src-addr 2
 
# Разрешить входящий трафик PostgreSQL & MySQL & VNC
$cmd 00430 allow tcp from any to me 5432 in via $eth setup limit src-addr 2
$cmd 00431 allow tcp from any to me 3306 in via $eth setup limit src-addr 2
$cmd 00432 allow tcp from any to me 5900 in via $eth setup limit src-addr 2
 
# Отбрасываем и заносим в журнал все входящие соединения снаружи
$cmd 00499 deny log all from any to any in via $eth
 
# Всё остальное запрещено по умолчанию
# Запрещаем и заносим в журнал все пакеты для дальнейшего анализа
$cmd 00999 deny log all from any to any
################ Конец файла правил IPFW ########################

Теперь можно перегружаться.

reboot

11. Установка и настройка XOrg и софта для VMWare

pkg install x11/xorg
pkg install x11-drivers/xf86-video-vmware
pkg install xf86-input-synaptics
pkg install open-vm-tools

Message from wayland-1.21.0:

--
Wayland requires XDG_RUNTIME_DIR to be defined to a path that will
contain "wayland-%d" unix(4) sockets. This is usually handled by
consolekit2 (via ck-launch-session) or pam_xdg (via login).
=====
Message from freetype2-2.12.1:

--
The 2.7.x series now uses the new subpixel hinting mode (V40 port's option) as
the default, emulating a modern version of ClearType. This change inevitably
leads to different rendering results, and you might change port's options to
adapt it to your taste (or use the new "FREETYPE_PROPERTIES" environment
variable).

The environment variable "FREETYPE_PROPERTIES" can be used to control the
driver properties. Example:

FREETYPE_PROPERTIES=truetype:interpreter-version=35 \
        cff:no-stem-darkening=1 \
        autofitter:warping=1

This allows to select, say, the subpixel hinting mode at runtime for a given
application.

If LONG_PCF_NAMES port's option was enabled, the PCF family names may include
the foundry and information whether they contain wide characters. For example,
"Sony Fixed" or "Misc Fixed Wide", instead of "Fixed". This can be disabled at
run time with using pcf:no-long-family-names property, if needed. Example:

FREETYPE_PROPERTIES=pcf:no-long-family-names=1

How to recreate fontconfig cache with using such environment variable,
if needed:
# env FREETYPE_PROPERTIES=pcf:no-long-family-names=1 fc-cache -fsv

The controllable properties are listed in the section "Controlling FreeType
Modules" in the reference's table of contents
(/usr/local/share/doc/freetype2/reference/index.html, if documentation was installed).
=====
Message from xorg-server-1.20.14,1:

--
Xorg-server has been installed.

If your kernel is compiled with the EVDEV_SUPPORT option enabled
(default starting from FreeBSD 12.1) it is recommended to enable evdev mode in
pointer device drivers like ums(4) and psm(4). This will give improvements like
better tilt wheel support for mice and centralized gesture support via
xf86-input-synaptics or libinput drivers for touchpads.

This is also needed for PS/2 devices to be properly detected by Xorg when
moused service is disabled in /etc/rc.conf and kernel is compiled with
EVDEV_SUPPORT.

To enable evdev in such a device, run the following:

# sysctl kern.evdev.rcpt_mask=6

To make it persistent across reboots, add the following to /etc/sysctl.conf:

kern.evdev.rcpt_mask=6

In case you're using a serial mouse or any other mouse that *only* works over
sysmouse(4) and moused(8) on an evdev enabled kernel, please run this:

# sysctl kern.evdev.rcpt_mask=3

To make it persistent across reboots, add to this /etc/sysctl.conf:

kern.evdev.rcpt_mask=3
=====
Message from dejavu-2.37_1:

--
Make sure that the freetype module is loaded.  If it is not, add the following
line to the "Modules" section of your X Windows configuration file:

        Load "freetype"

Add the following line to the "Files" section of X Windows configuration file:

        FontPath "/usr/local/share/fonts/dejavu/"

Note: your X Windows configuration file is typically /etc/X11/XF86Config
if you are using XFree86, and /etc/X11/xorg.conf if you are using X.Org.
=====
Message from xterm-372:

--
You installed xterm with wide chars support. This introduces some limitations
comparing to the plain single chars version: this version of xterm will use
UTF-8 charset for selection buffers, breaking 8-bit copy/paste support unless
you are using UTF-8 or ISO8859-1 locale. If you want 8-bit charset selections to
work as before, use "eightBitSelectTypes" XTerm resource setting.

For further information refer to the SELECT/PASTE section of xterm(1) manual
page.
=====
Message from ca_root_nss-3.78:

--
FreeBSD does not, and can not warrant that the certification authorities
whose certificates are included in this package have in any way been
audited for trustworthiness or RFC 3647 compliance.

Assessment and verification of trust is the complete responsibility of the
system administrator.


This package installs symlinks to support root certificates discovery by
default for software that uses OpenSSL.

This enables SSL Certificate Verification by client software without manual
intervention.

If you prefer to do this manually, replace the following symlinks with
either an empty file or your site-local certificate bundle.

  * /etc/ssl/cert.pem
  * /usr/local/etc/ssl/cert.pem
  * /usr/local/openssl/cert.pem
=====
Message from libxkbcommon-1.4.1:

--
If arrow keys don't work under X11 switch to legacy rules e.g.,

For sh/bash/ksh/zsh run and (optionally) add into ~/.profile:
  export XKB_DEFAULT_RULES=xorg

For csh/tcsh run and (optionally) add into ~/.login:
  setenv XKB_DEFAULT_RULES xorg
=====
Message from fusefs-libs-2.9.9_2:

--
Install the FUSE kernel module (kldload fusefs) to use this port.

Создаем конфиг XOrg (в системной консоли):

cd /root
Xorg -configure
cp xorg.conf.new /etc/X11/xorg.conf

Дальше можно опять править в SSH-клиенте

mcedit /etc/X11/xorg.conf

Должно получится примерно следующее содержание:

Section "ServerLayout"
    Identifier     "XFree86 Configured"
    Screen      0  "Screen0" 0 0
    InputDevice    "Mouse0" "CorePointer"
    InputDevice    "Keyboard0" "CoreKeyboard"
EndSection

Section "Files"
    ModulePath   "/usr/local/lib/xorg/modules"
    FontPath     "/usr/local/share/fonts/programmer/"
    FontPath     "/usr/local/share/fonts/cyrillic/"
    FontPath     "/usr/local/share/fonts/misc/"
    FontPath     "/usr/local/share/fonts/OTF/"
    FontPath     "/usr/local/share/fonts/TTF/"
    FontPath     "/usr/local/share/fonts/Type1/"
    FontPath     "/usr/local/share/fonts/75dpi/"
    FontPath     "/usr/local/share/fonts/100dpi/"
    FontPath     "/usr/local/share/fonts/dejavu/"
EndSection

Section "Module"
    Load  "dbe"
    Load  "dri"
    Load  "dri2"
    Load  "extmod"
    Load  "glx"
    Load  "record"
    Load  "freetype"
EndSection

Section "InputDevice"
    Identifier   "Keyboard0"
    Driver       "evdev"
    Option       "XkbModel" "pc105"
    Option       "XkbLayout" "us,ru"
    Option       "XkbOptions" "compose:lwin,grp:lctrl_lshift_toggle,numpad:microsoft,ctrl:nocaps"
EndSection

Section "InputDevice"
    Identifier   "Mouse0"
    Driver       "vmmouse"
    Option       "Protocol" "auto"
    Option       "Device" "/dev/sysmouse"
    Option       "ZAxisMapping" "4 5 6 7"
EndSection

Section "Monitor"
    Identifier   "vmware"
    VendorName   "VMware, Inc"
    HorizSync    30-100
    VertRefresh  56-120
EndSection

Section "Device"
   Identifier  "VMware SVGA"
   Driver      "vmware"
   BusID       "PCI:0:15:0"
EndSection

Section "Screen"
    Identifier     "Screen0"
    Device         "VMware SVGA"
    Monitor        "vmware"
EndSection

12.Производим настройки по всем собранным сообщениям

Для пользователя добавляем в ~/.profile

export XKB_DEFAULT_RULES=xorg

в ~/.login добавляем

setenv XKB_DEFAULT_RULES xorg

в /etc/devfs.conf добавляем

perm devstat 0444

Выполняем

pkg upgrade -f libexo

Создаем файл /usr/local/etc/polkit-1/rules.d/60-reboot.rules

polkit.addRule(function (action, subject) {
  if ((action.id == "org.freedesktop.consolekit.system.restart" ||
      action.id == "org.freedesktop.consolekit.system.stop")
      && subject.isInGroup("wheel")) {
    return polkit.Result.YES;
  }
});

Создаем файл /usr/local/etc/polkit-1/rules.d/70-suspend.rules

polkit.addRule(function (action, subject) {
  if ((action.id == "org.freedesktop.consolekit.system.restart" ||
      action.id == "org.freedesktop.consolekit.system.stop")
      && subject.isInGroup("wheel")) {
    return polkit.Result.YES;
  }
});

В файл /boot/loader.conf добавляем

fusefs_load="YES"

Небольшие косметические правки для лучшего отображения шрифтов на LCD-экране:

cd /usr/ports/print/freetype
make -DWITH_LCD_FILTERING deinstall reinstall

Тут в меню конфигурации порта выбираем все опции:

Последний этап потребует компиляции множества либ, поэтому стоит попробовать так:

cd /usr/ports/print/freetype2
make deinstall
make config
make install BATCH=YES

Тут произошла заминочка с устаревшим портом py39-setuptools ... Делаем

cd /usr/ports/devel/py-setuptools
make reinstall

И возвращаемся к предыдущему шагу.

Далее экспериментируем с рендерингом шрифтов с помощью переменной окружения FREETYPE_PROPERTIES (выбираем Infinality):

FREETYPE_PROPERTIES=truetype:interpreter-version=38 \
                    cff:no-stem-darkening=1 \
                    autofitter:warping=1 \
                    pcf:no-long-family-names=1

(в файл .profile вставлять в одну строчку и в двойных кавычках!), где interpreter-version:

Копируем нужные шрифты в каталог /usr/local/share/fonts/programmer

Правим ~/.Xresources, приводим к виду:

Xft.dpi: 96
Xft.antialias: true
Xft.hinting: true
Xft.rgba: rgb
Xft.autohint: false
Xft.hintstyle: hintslight
Xft.lcdfilter: lcddefault

//FIXME: советуют еще сделать в домашнем каталоге файл а-ля ~/.fonts

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>

    <!--
        install ==> print/freetype2 [WITH_LCD_FILTERING=yes and assumes BCI not disabled]
        install ==> x11-fonts/dejavu
        install ==> x11-fonts/webfonts
        install ==> x11-fonts/terminus-font
    -->

    <!-- reject all bitmap fonts, with the exception of 'terminus' -->
    <selectfont>
        <acceptfont>
            <pattern>
                <patelt name="family"> <string>Terminus</string> </patelt>
            </pattern>
        </acceptfont>
        <rejectfont>
            <pattern>
                <patelt name="scalable"> <bool>false</bool> </patelt>
            </pattern>
        </rejectfont>
    </selectfont>

    <!-- preferred aliases -->
    <alias> <family>serif</family>
        <prefer>
            <family>DejaVu Serif</family>
        </prefer>
    </alias>

    <!-- preferred aliases -->
    <alias> <family>sans-serif</family>
        <prefer>
            <family>DejaVu Sans</family>
        </prefer>
    </alias>

    <!-- preferred aliases -->
    <alias> <family>monospace</family>
        <prefer>
            <family>DejaVu Sans Mono</family>
            <family>Terminus</family>
        </prefer>
    </alias>

    <!-- default quality settings -->
    <match target="font">
        <edit mode="assign" name="rgba">      <const>none</const>     </edit>
        <edit mode="assign" name="antialias"> <bool>true</bool>       </edit>
        <edit mode="assign" name="autohint">  <bool>true</bool>       </edit>
        <edit mode="assign" name="hinting">   <bool>true</bool>       </edit>
        <edit mode="assign" name="hintstyle"> <const>hintfull</const> </edit>
    </match>

    <!-- reduce ringing ==> requires freetype2 'WITH_LCD_FILTERING=yes' -->
    <match target="font">
        <edit mode="assign" name="lcdfilter"> <const>lcdlight</const> </edit>
    </match>

    <!-- disable autohinting for bold fonts -->
    <match target="font">
        <test compare="more" name="weight">   <const>medium</const> </test>
        <edit mode="assign"  name="autohint"> <bool>false</bool>    </edit>
    </match>

    <!-- disable autohinting for fonts that don't need it -->
    <match target="pattern" name="family">
        <test qual="any" name="family">
          <string>Andale Mono</string>
          <string>Arial</string>
          <string>Arial Black</string>
          <string>Comic Sans MS</string>
          <string>Courier New</string>
          <string>Georgia</string>
          <string>Impact</string>
          <string>Trebuchet MS</string>
          <string>Tahoma</string>
          <string>Times New Roman</string>
          <string>Verdana</string>
          <string>Webdings</string>
       </test>
       <edit mode="assign" name="hinting">  <bool>true</bool>  </edit>
       <edit mode="assign" name="autohint"> <bool>false</bool> </edit>
    </match>

</fontconfig>

Можно попробовать перезагрузиться и стартануть иксы, должны отобразиться обычные "голые".

13. Установка и настройка OpenBox, Feh, Bmpanel2

pkg install openbox
pkg install obconf
pkg install feh
pkg install bmpanel2

Правим ~/.xinitrc

exec openbox-session

Настраиваем нижнюю панельку Bmpanel2 из под пользователя!!

mkdir -p ~/.config/bmpanel2 ~/.config/openbox ~/.local/share/bmpanel2/themes
cp -R /usr/local/share/bmpanel2/themes/ ~/.local/share/bmpanel2/themes/
echo "theme auriel-blue-smooth" > ~/.config/bmpanel2/bmpanel2rc
echo "feh --bg-scale ~/.config/picture.jpg && set &" > ~/.config/openbox/autostart
echo "background image &" >> ~/.config/openbox/autostart
echo "bmpanel2 &" >> ~/.config/openbox/autostart
cp /usr/local/etc/xdg/openbox/menu.xml ~/.config/openbox/menu.xml
cp /usr/local/etc/xdg/openbox/rc.xml ~/.config/openbox/rc.xml
$ mcedit ~/.config/openbox/menu.xml
$ mcedit ~/.config/openbox/rc.xml

Устанавливаем индикатор раскладки клавиатуры:

pkg install xxkb
echo "xxkb &" >> /home/majestio/.config/openbox/autostart
echo "setxkbmap -layout us,ru -option grp:lctrl_lshift_toggle,grp_led:scroll -variant winkeys &" >> /home/majestio/.config/openbox/autostart

создаем файл конфигурации ~/.xxkbrc следующего содержания:

XXkb.image.path: /usr/local/share/xxkb
XXkb.mainwindow.type: tray
XXkb.group.base: 1
XXkb.group.alt: 2
XXkb.mainwindow.enable: yes
XXkb.mainwindow.image.1: en15.xpm
XXkb.mainwindow.image.2: ru15.xpm
XXkb.mainwindow.image.3:
XXkb.mainwindow.image.4:
XXkb.mainwindow.appicon: yes
XXkb.mainwindow.geometry: 16x16+0+0
XXkb.mainwindow.in_tray: GNOME2
XXkb.button.enable: no
XXkb.app_list.wm_class_name.start_alt: skype
XXkb.controls.add_when_start: yes
XXkb.controls.add_when_create: yes
XXkb.controls.add_when_change: no
XXkb.controls.focusout: no
XXkb.mainwindow.xpm.1: en15.xpm
XXkb.mainwindow.xpm.2: ru15.xpm
XXkb.mainwindow.label.enable: no

14. Установка VNC сервера и настройка

pkg install devel/py-xdg
pkg install net/x11vnc
su majestio
x11vnc -storepasswd
su root
touch /var/log/x11vnc.log
chown majestio:whell /var/log/x11vnc.log
su majestio

В файл ~/.config/openbox/autostart дописываем:

x11vnc -rfbauth /home/majestio/.vnc/passwd -forever -bg -dontdisconnect -noxfixes -shared -o /var/log/x11vnc.log &

15. Итоги

В результате проведенных работ получилась вполне себе система, требующая минимальных ресурсов, и чрезвычайно шустрая!

кликни для увеличения

Выводы

  1. Графическая подсистема получилась чрезвычайно легкой и быстрой, но совершенно не гибкой в плане оперативной настройки. Практически большая часть делается путем правки текстовых конфигов, отсутствует нормальная работа с клипбордом, с репозитарием. В качестве полноценной десктопной системы не пойдет;
  2. Такая настройка графического окружения X11 вполне может быть использована на компьютерах, выполняющих функции сервера. Особенно полезно будет использовать пакет Conky. Там возможностей просто море.

Послесловие

В данной заметке не производился полный тюнинг, некоторые настройки были и вовсе пропущены. Цель данной заметки - просто знакомство с последним на август 2022 года релизом замечательной системы FreeBSD, и попытка сборки максимально легковесного GUI.

Рейтинг: 5/5 - 3 голосов