блог-форум о программировании

Вы не вошли.

#1 2017-11-21 02:17:19

Majestio
Администратор
Здесь с 2017-11-17
Сообщений: 74
Windows 10Firefox 57.0

FreeBSD = Установка FreeBSD 10.3 (x64) на VMWare 11


FreeBSD = Установка FreeBSD 10.3 (x64) на VMWare 11

И так, разворачиваю FreeBSD 10.3 в качестве площадки для разработок.

Этапы
  1. Первоначальная установка из img-образа

  2. Правка /etc/make.conf

  3. Обновление дерева портов и установка Midnight Commander

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

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

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

  7. Прописка правил фаервола

  8. Установка и настройка XOrg & xfce4

  9. Установка и настройка PostgreSQL 9.3

  10. Установка и настройка MySQL 5.6

  11. Установка и настройка Qt 5.5.1

  12. Установка MXE

1. Первоначальная установка из iso-образа

"Нарезаем" загрузочную флешку. Изначально - все по сценарию, клавиатура koi8-r, файловая система ZFS автоматом, два HDD (в режиме ACHI) в stripped, игры исключаем, автозапуск sshd обязательно. Сетевые настройки, настройки пользователя (включить в группу wheel обязательно). Запуск ssh-клиента (putty), подключение пользователем, запуск команды su. Здесь и далее - пользуемся редактором ee.

2. Правка /etc/make.conf

Небольшой тюнинг процессов сборки:

ee /etc/make.conf
CPUTYPE?=core-avx-i
MAKE_JOBS_NUMBER?=3
WITH=ICONV
WITHOUT_DEBUG=YES
3. Обновление дерева портов и установка Midnight Commander
portsnap fetch extract
pkg install misc/mc
4. Правка авторизации по SSH

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

AuthorizedKeysFile .ssh/authorized_keys .ssh/authorized_keys2

В домашнем каталоге создаем файл ключей:

mkdir -p ~/.ssh
touch ~/.ssh/authorized_keys
chmod 0744 ~/.ssh
chmod 0644 ~/.ssh/authorized_keys
5. Правка локали и шрифтов системной консоли

Сперва добавим в /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/:

sys-fonts.png

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

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

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

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

kern.vty=vt
6. Пересборка ядра

Пересобираем ядро согласно Хэндбуку. На этапе редактирования конфигурации ядра надо проверить наличие следующих параметров (согласно /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
ee MYKERNEL
cd /usr/src
make buildkernel KERNCONF=MYKERNEL
make installkernel KERNCONF=MYKERNEL
7. Прописка правил фаервола

Не перегружаясь, настраиваем фаервол. Для этого добавим строки в /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="re0"               # название интерфейса
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
$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 00499 deny log all from any to any in via $eth
#
# Всё остальное запрещено по умолчанию
# Запрещаем и заносим в журнал все пакеты для дальнейшего анализа
$cmd 00999 deny log all from any to any
################ Конец файла правил IPFW ########################

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

reboot
8. Установка и настройка XOrg & xfce4

Лень все собирать, будем ставить из пакетов:

pkg install x11/xorg
pkg install x11-drivers/xf86-video-vmware # для работы под VMWare
pkg install open-vm-tools                       # для работы под VMWare  
pkg install x11-wm/xfce4
pkg install x11/xfce4-quicklauncher-plugin
pkg install x11/xfce4-taskmanager
pkg install x11/xfce4-clipman-plugin
pkg install x11/xfce4-dashboard
pkg install x11/xfce4-embed-plugin
pkg install x11/xfce4-screenshooter-plugin
pkg install x11/xfce4-verve-plugin
pkg install x11/xfce4-whiskermenu-plugin
pkg install x11/xfce4-wmdock-plugin
pkg install mail/xfce4-mailwatch-plugin
pkg install misc/xfce4-weather-plugin
pkg install misc/xfce4-wm-themes
pkg install sysutils/xfce4-mount-plugin
pkg install x11-clocks/xfce4-datetime-plugin

Создаем конфигурационный файл X11 /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/TrueType/"
    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/"
    FontPath     "/usr/local/share/fonts/util/"
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

И добавляем в /etc/rc.conf:

moused_enable="YES"
dbus_enable="YES"
hald_enable="YES"
# kdm4_enable="YES" <-- по желанию сразу логин в иксах, но лучче не надо
vmware_guest_vmblock_enable="YES"
vmware_guest_vmhgfs_enable="YES"
vmware_guest_vmmemctl_enable="YES"
vmware_guest_vmxnet_enable="YES"
vmware_guestd_enable="YES"

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

cd /usr/ports/print/freetype
make -DWITH_LCD_FILTERING deinstall reinstall
# тут в меню конфигурации порта выбираем все опции
cd /usr/ports/print/freetype2
make -DWITH_LCD_FILTERING deinstall reinstall

Копируем свои шрифты в /usr/local/share/fonts/programmer и индексируем:

cd /usr/local/share/fonts/programmer
ttmkfdir -o fonts.dir
mkfontdir /usr/local/share/fonts/programmer
fc-cache -f
xset fp+ /usr/local/share/fonts/programmer
xset fp rehash
9. Установка и настройка PostgreSQL 9.3
pkg install databases/postgresql93-server
pkg install databases/postgresql93-contrib
pkg install databases/postgresql93-plperl
mkdir -p /mnt/tree/pgsql/data
cd /mnt/tree
chown -R pgsql:pgsql pgsql

В файл /etc/rc.conf дописываем

postgresql_enable="YES"
postgresql_data="/mnt/tree/pgsql/data"
postgresql_flags="-w -s -m fast"
postgresql_initdb_flags="--encoding=utf-8 --lc-collate=C --locale=ru_RU.UTF-8"
postrgesql_class="russian-koi8r"
postgresql_class="postgres"

Выполняем инициализацию базы

/usr/local/etc/rc.d/postgresql initdb
service postgresql start

В файл /mnt/tree/pgsql/data/pg_hba.conf дописываем строчку - разрешения доступа по сети 192.168.1.0:

host  all all 192.168.1.0/24 trust

В файле /mnt/tree/pgsql/data/postgresql.conf находим и изменяем строчки:

listen_addresses='*'    # принимать соединения на любом интерфейсе
lc_messages='C'         # вывод сообщений с английской локалью
10. Установка и настройка MySQL 5.6
pkg install databases/mysql56-server

Создаем хранилище для БД:

cd /mnt/tree
mkdir -p /mnt/tree/mysql/data
chmod -R 750 mysql
chown -R mysql:mysql mysql
cd /mnt/tree/mysql/data
mysql_install_db --user=mysql --basedir=/usr/local

Добавляем автозапуск сервера в /etc/rc.conf:

mysql_enable="YES"
mysql_dbdir="/mnt/tree/mysql/data"

Правим конфигурационный файл /mnt/tree/mysql/data/my.cnf:

# For advice on how to change settings please see
# [url]http://dev.mysql.com/doc/refman/5.6/en/server-configuration-defaults.html[/url]
#
[mysqld]
#
basedir = /usr/local
datadir = /mnt/tree/mysql/data
port = 3306
socket = /tmp/mysql.sock
pid_file = /var/run/mysql/mysqld.pid
#
general_log_file = /var/log/mysql.log
slow_query_log_file = /var/log/mysql-slow-query.log
log_error = /var/log/mysql-error.log
#
lc_messages = ru_RU
lc_messages_dir =  /usr/local/share/mysql
#
explicit_defaults_for_timestamp = ON
innodb_data_file_path = ibdata1:12M:autoextend
character-set-server=utf8
init-connect="SET NAMES utf8"
long_query_time=5
skip-external-locking
key_buffer_size = 16M
query_cache_size=64M
max_allowed_packet = 128M
table_open_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
innodb_flush_log_at_trx_commit=2
skip-innodb_doublewrite
server-id = 1
slow_query_log=1
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES 
#
[client]
character_set_client=utf8
password = gfhjkm1
port = 3306
socket = /tmp/mysql.sock

Добавляем строчку в /etc/newsyslog.conf

/var/log/mysql.log         600  2     500  *     ZC

Делаем окончательные правки и запускаем сервер:

touch /var/log/mysql.log
touch /var/log/mysql-slow-query.log
touch /var/log/mysql-error.log
chown mysql:mysql /var/log/mysql.log
chown mysql:mysql /var/log/mysql-slow-query.log
chown mysql:mysql /var/log/mysql-error.log
service mysql-server start
mysql_secure_installation
11. Установка и настройка Qt 5.5.1
pkg install devel/qt5
12. Установка MXE

Устанавливаем необходимый софт:

pkg install \
    automake autoconf bash bison coreutils flex \
    gcc gdk-pixbuf2 gettext git glib gmake gperf gsed intltool libffi \
    libtool openssl p5-XML-Parser p7zip patch perl5 \
    pkgconf python ruby scons unzip wget git

Переключаемся с root'а на пользователя, потом выполняем:

mkdir -p $HOME/Dev/{cross,projests,src,stuff,tools}
cd $HOME/Dev/cross
git clone https://github.com/mxe/mxe.git
cd mxe

В файле makefile найти и удалить "unzip" в секции REQUIREMENTS.

gmake MXE_TARGETS='x86_64-w64-mingw32.shared '`
                  'x86_64-w64-mingw32.static '`
                  'i686-w64-mingw32.shared '`
                  'i686-w64-mingw32.static '`
                  'x86_64-w64-mingw32.shared.posix '`
                  'x86_64-w64-mingw32.static.posix '`
                  'i686-w64-mingw32.shared.posix '`
                  'i686-w64-mingw32.static.posix' gcc

... продолжение не следует)

Вне форума

Сейчас в этой теме пользователей: 0, гостей: 1
[Bot] CCBot

Подвал форума

Под управлением FluxBB
Модифицировал Visman

[ Сгенерировано за 0.324 сек, 7 запросов выполнено - Использовано памяти: 2.21 Мбайт (Пик: 2.63 Мбайт) ]

000webhost logo