Freebsd gnome desktop on qemu / kvm

FreeBSD с графическим окружением

По умолчанию FreeBSD не включает в себя какую-либо рабочую среду или графические инструменты. Это позволяет системе быть компактной и хорошо подходит для главной роли FreeBSD в качестве серверной операционной системы. Тем не менее, я хотел посмотреть, сколько усилий понадобится, чтобы заставить FreeBSD работать так же, как GhostBSD.

В справочнике проекта есть , посвященный установке программного обеспечения X display, включению экрана входа в систему и установке одной из трех сред рабочего стола: GNOME, KDE и Xfce. Я решил выбрать Xfce. Весь процесс прошел быстро, заняв всего несколько минут и потребовав редактирования трех файлов конфигурации.

Получившийся графический интерфейс пользователя был функциональным, хотя и не особо отточенным. Установка Xfce дала мне рабочий стол, панель по умолчанию и меню, виртуальный терминал и файловый менеджер Thunar, но мало что еще. По большей части, я бы не возражал против установки дополнительных приложений, таких как веб-браузер, LibreOffice и другие распространенные инструменты. Однако были проблемы, которые мне нужно было обойти. Например, мой обычный пользователь не мог перезагрузить или выключить систему из среды рабочего стола, я мог только выйти из системы. Отсутствовал регулятор громкости, и вскоре я обнаружил, что мультимедиа (потоковые и локальные файлы) не воспроизводятся. Например, видео YouTube не воспроизводилось ни в одном из моих веб-браузеров. VLC и MPV не могли воспроизводить видео или аудио файлы и просто зависали при открытии файла.

Эти проблемы сами по себе были незначительными, и есть обходные пути их решения, но они подчеркивают разницу между использованием ориентированного на десктоп члена семейства FreeBSD, такого как GhostBSD, и настройкой FreeBSD с нуля, следуя инструкциям в руководстве.

Ранее я упоминал, что система использует около 500 МБ диска после установки. Но каждая большая коллекция программного обеспечения, которую я добавлял, скачивала около гигабайта пакетов. После настройки Xfce, LibreOffice и веб-браузера было использовано более 3 ГБ. Когда я закончил установку своих обычных настольных программ, я использовал около 5 ГБ дискового пространства. Использование памяти при запуске Xfce 4.12 составляло около 140 Мб активной и 250 Мб связанной памяти, что примерно на 120 Мб больше, чем при работе в минимальной среде командной строки.

Изменение учетных записей: passwd(1), chpass(1) и другие

Управление пользователями заключается не только в создании и удалении учетных записей. Время от времени эти учетные записи необходимо изменять. Система FreeBSD включает в себя некоторые инструменты, предназначенные для редактирования учетных записей, самыми простыми из которых являются passwd(1), chpass(1), vipw(8) и pw(8). Все они работают с тесно взаимосвязанными файлами /etc/master.passwd, /etc/passwd, /etc/spwd.db и /etc/pwd.db. Для начала мы рассмотрим эти файлы, а затем перейдем к обзору указанных выше инструментов.

Файлы /etc/master.passwd, /etc/passwd, /etc/spwd.db и /etc/pwd.db хранят информацию об учетных записях пользователей. Каждый файл имеет свой формат и свое назначение. Файл /etc/master.passwd является источником информации для аутентификации и содержит пароли пользователей в зашифрованном виде. У обычных пользователей нет прав для просмотра содержимого файла /etc/master.passwd. Однако им должна быть доступна основная информация, хранящаяся в учетных записях, иначе как непривилегированные программы смогут идентифицировать пользователя? В файле /etc/passwd перечислены все учетные записи без привилегированной информации (например, без зашифрованных паролей). Содержимое этого файла доступно для чтения любому пользователю, оттуда он может извлекать основные сведения об учетной записи.

Информация из учетной записи требуется многим программам, а синтаксический анализ текстовых файлов, как известно, — процедура достаточно медленная. В наши дни мощных ноутбуков слово медленная теряет свой смысл, но это было насущной проблемой во времена, когда стиль диско шагал по Земле. По этой причине в системах BSD появились файлы базы данных, которые создаются на основе /etc/master.passwd и /etc/passwd. (Другие UNIX-подобные системы обладают похожей функциональностью, реализованной на основе других файлов.) Файл /etc/spwd.db создается непосредственно из /etc/master.passwd и содержит секретную информацию о пользователях, этот файл доступен для чтения только пользователю root. Файл /etc/pwd.db доступен для чтения всем пользователям, но содержит ограниченный набор сведений, содержащихся в файле /etc/passwd.

Всякий раз, когда какая-либо программа управления пользователями изменяет информацию об учетной записи, хранящейся в файле /etc/master.passwd, FreeBSD запускает pwd_mkdb(8) для обновления трех других файлов. Например, все три программы, passwd(1), chpass(1) и vipw(8), позволяют вносить изменения в основной файл с паролями и все три программы вызывают pwd_mkdb(8) для обновления информации во взаимосвязанных файлах.

Изменение пароля

Для изменения пароля используется программа passwd(1). Пользователи могут изменять свои собственные пароли, а пользователь root имеет право изменять пароли любых пользователей. Чтобы изменить свой собственный пароль, достаточно просто ввести в строке приглашения к вводу команду .

# passwd

Если вы изменяете свой собственный пароль, passwd(1) сначала потребует ввести текущий пароль. Сделано это для того, чтобы никто другой не смог изменить пароль без ведома самого пользователя. Вообще, когда вы покидаете терминал, было бы желательно всегда завершать сеанс работы с системой, но даже если вы этого не делаете, эта простая проверка, которую проводит passwd(1), обезопасит вас от проделок шутников. После этого нужно будет дважды ввести новый пароль и все. Если вы обладаете привилегиями суперпользователя и вам требуется изменить пароль другого пользователя, просто передайте программе passwd имя этого пользователя в виде аргумента.

# passwd mwlucas

Обратите внимание: пользователю root необязательно знать старый пароль другого пользователя — пользователь root может изменить учетную информацию любого пользователя в системе, как ему заблагорассудится

— Setting Up a Display Manager —

If you would like to have a login screen as well you can install one of the many X11 display managers (Note: If you installed GNOME then GDM will already be install & if you installed KDE then KDM will already be installed).

Display manager options:

  • XDM (x11/xdm): X Display Manager
  • GDM (x11/gdm): GNOME Display Manager
  • KDM (x11/kde4, requires installing KDE environment): KDE Display Manager
  • SLiM (x11/slim): Simple Login Manager

I will focus on setting up XDM as it is standalone & it’s dependencies should already by installed.

The X11 Display Manager (XDM)

xdm can be installed via pkg install xdm or compiled from the Ports Collection located in /usr/ports/x11/xdm.

After xdm is installed it should be configured to execute LXDE (or another desktop environment) upon login. This can be done for a single user with the file .xsession located in the user’s home directory or system-wide with the file Xsession located in the xdm configuration directory. On FreeBSD systems the xdm configurations are located in the directory /usr/local/lib/X11/xdm.

Single user: Create a file named .xsession in the user’s home directory & add the following to it:

If you created an .xinitrc file simply copy it with the command cp .xinitrc .xsession.

System-wide (Not recommended): Move the Xsession file so that the original is not overwritten:

Create a new Xsession file & put the same contents in as for a single user.

Again, it is recommended that you make these files executable:

If you want XDM to load at system startup edit the file /etc/ttys:

Find the following line:

Change “off” to “on” & save the file:

The next time you restart the system the X11 login manager should automatically appear.

Note: By default a console window will appear at the XDM login screen showing the text “Console log for…”. If you do not want this window to appear edit the file /usr/local/lib/X11/xdm/xdm-config & find the following lines:

Add a “!” to the beginning of each line to disable the setting:

Resources:

More information on setting up X display managers.

To be continued…

Advertisement

WIFI

If you want to use WiFi to connect to the Internet then its slightly more typing. On my system I have iwn0 wireless card so that is what I will use here. The SSID is the name of your WiFi network and PSK is password for that network.

# sysctl -n net.wlan.devices
iwn0
# ifconfig wlan0 create wlandev iwn0
# wpa_passphrase SSID PSK >> /etc/wpa_supplicant.conf
# wpa_supplicant -i wlan0 -c /etc/wpa_supplicant.conf
// wait for CONNECTED state and hit -
# bg
# dhclient wlan0

To make it permanent across reboots add these to /etc/rc.conf file. I assume that information about your network is already in the /etc/wpa_supplicant.conf file generated by the wpa_passphrase(8) command above.

wlans_iwn0=wlan0
ifconfig_wlan0="WPA SYNCDHCP"

Установка FreeBSD 13.0

2. После загрузки образа установщика FreeBSD запишите его на носитель (CD/DVD или USB) и загрузите систему со вставленным носителем. После загрузки системы с установочным носителем появится следующее меню.

Меню загрузки FreeBSD

3. По умолчанию меню будет ждать ввода данных пользователя в течение 10 секунд, прежде чем загрузиться установщик FreeBSD. Или мы можем нажать клавишу «Backspace«, чтобы продолжить установку, а затем нажать клавишу «Enter«, чтобы загрузиться в FreeBSD. После завершения загрузки появится приветственное меню со следующими опциями.


Выберите Пункт Установка FreeBSD

Нажмите Enter, чтобы выбрать опцию по умолчанию «Установить«. Или вы можете выбрать «Shell» для доступа к программам командной строки для подготовки дисков перед установкой. Так же можно выбрать опцию «Live CD«, чтобы попробовать FreeBSD перед ее установкой. Но здесь мы будем использовать опцию по умолчанию «Установить«, так как мы устанавливаем FreeBSD.

4. Далее отображается список ключевых раскладок, просто выберите опцию по умолчанию, чтобы продолжить.


Выбор раскладки клавиш FreeBSD

5. Далее укажите имя хоста для системы, я использовал freebsd.tecmintlocal.com как мое имя хоста.


Установить имя хоста

6. Выберите компоненты для установки для FreeBSD, по умолчанию каждый параметр предварительно выбран.


Выберите компоненты для установки на FreeBSD

7. На этом шаге нам нужно разбить диск на разделы для нашей установки. Здесь у вас будет четыре варианта:

  • Auto (ZFS) – Эта опция автоматически создает зашифрованную корневую систему на ZFS с использованием файловой системы ZFS с поддержкой загрузочных сред.
  • Auto (UFS) – Этот параметр автоматически создает разделы диска с использованием файловой системы ZFS.
  • Вручную – Этот параметр позволяет продвинутым пользователям создавать настраиваемые разделы из параметров меню.
  • Shell – Эта опция позволяет пользователям создавать настраиваемые разделы с помощью инструментов командной строки, таких как fdisk, gpart и т. Д.

Выберем опцию «Вручную» для создания разделов в соответствии с нашими потребностями.


Ручное разделение дисков FreeBSD

8. После выбора «Ручное секционирование‘ откроется редактор разделов с выделенным диском»ad0» и выберите Создать для создания допустимой схемы секционирования.


Выберите Раздел диска FreeBSD

9. Затем выберите GPT, чтобы создать таблицу разделов. GPT обычно является наиболее предпочтительным методом для компьютеров amd64. Старые компьютеры, которые не совместимы с GPT, должны использовать MBR.


Выберите раздел GPT
Созданный раздел GPT

Конфигурирование ядра

Здесь мы коротко затронем вопросы конфигурирования и компиляции ядра.

Наверно, многие содрагались, услышав устрашающую фразу — «компиляция ядра системы». Однако, если спокойно разобраться, ничего страшного здесь нет. С точки зрения обывателя ядро — это «прослойка» между прикладными программами и «железом».  Прикладные программы не взаимодействуют с «железом» и между собой напрямую, все взаимодействие осуществляется через ядро, и взаимодействие это осуществляется через стандартный интерфейс системных вызовов. Кроме интерфейса системных вызовов ядро содержит файловую подсистему, подсистему управления процессами, подсистему ввода-вывода, драйверы устройств (модули ядра)

Но нам пока важно лишь то, что ядро непосредственно взаимодействует с «железом», а FreeBSD  позволяет нам сконфигурировать ядро под конкретное «железо». Устанавливаемое по умолчанию ядро поддерживает много неиспользуемого в нашем случае оборудования и обеспечивает лишь базовую функциональность

Приступим к конфигурации ядра

Настройка ядра FreeBSD осуществляется путем редактирования в любом текстовом редакторе конфигурационного файла ядра. По умолчанию это /usr/src/sys/i386/conf/GENERIC . Но мы будем редактировать не его, а его копию/usr/src/sys/i386/conf/NEW_GENERIC.Для этого выполняем следующие команды:

# cd /usr/src 
# cp sys/i386/conf/GENERIC sys/i386/conf/NEW_GENERIC
# ee sys/i386/conf/NEW_GENERIC

В файле NEW_GENERIC удаляем поддержку оборудования, которого у нас нет, и функциональность, которая нам не нужна, просто комментируя или удаляя соответствующие строки. Если нет уверенности, то лучше ничего не удалять. Далее добавляем несколько параметров, чтобы включить NAT (трансляцию адресов — преобразование IP адресов локальной сети во внешний IP адрес), что даст возможность использовать в Интернете один внешний IP адрес всеми компьютерами локальной сети:

ident NEW_GENERIC
options IPFIREWALL
options IPDIVERT
options IPFIREWALL_VERBOSE
options IPFIREWALL_VERBOSE_LIMIT=1000

Здесь ident NEW_GENERIC определяет имя нового ядра (можно любое задать).options IPFIREWALL — включает FIREWALL.options IPFIREWALL_VERBOSE — включает логи файрвола.options IPDIVERT — разрешает перенаправлять пакеты с одного сетевого интерфейса на другой, опция необходима для трансляции адресов, для «расшаривания» Интернета.

Списки поддерживаемых устройств и опций можно найти в файлах:/usr/src/sys/i386/conf/NOTES и  /usr/src/sys/conf/NOTES.

Следующими командами выполняем компиляцию ядра:

# make buildkernel KERNCONF=NEW_GENERIC
# make installkernel KERNCONF=NEW_GENERIC

Перезагружаем компьютер. Все. Старое ядро автоматически будет сохранено в каталоге /boot/kernel.old.

Не PnP устройства можно настроить, отредактировав файл /boot/device.hints. Требуемому устройству (по аналогии с другими) можно задать номера прерываний, портов и пр. Тамже можно запретить использование какого-либо устройства. Например, у меня в «маме» была «криво» реализованна поддержка acpi, из-за чего глючила мышь, а перепрошивать bios не хотелось. Поэтому я просто отключил поддержку acpi в ядре, добавив в файл /boot/device.hints следующую строку:

hint.acpi.0.disabled="1"

Но это просто  пример. Надеюсь у вас все заработает нормально и без этого.

Еще один момент. Все определившиеся ядром устройства имеют буквенно-цифровые обозначения, например pcm0 — звуковая плата. Какие устройства, под какими именами и насколько удачно ядро смогло определить их и сконфигурировать, можно увидеть при загрузке системы или по команде dmesg.

Загрузочные среды

Одним из инструментов, который полезно иметь под рукой при выполнении обновлений, являются загрузочные среды. Когда FreeBSD установлена на томе ZFS, она автоматически включает поддержку загрузки из снимков операционной системы ZFS. Это означает, что мы можем использовать такой инструмент, как beadm, чтобы сделать снимок операционной системы перед внесением каких-либо значительных изменений. Затем, если что-то пойдет не так, например, обновление нарушит работу системы, мы можем перезагрузить компьютер и выбрать более старую среду в меню загрузки. Я тестировал загрузочные среды пару раз за неделю с FreeBSD и обнаружил, что они работают должным образом, и мне нравится, что beadm может мгновенно создавать и удалять снимки.

Одним из приятных преимуществ работы с загрузочными средами является то, что операционная система хранится отдельно от данных в домашних каталогах пользователей. Это означает, что если администратору необходимо откатить изменение, наши файлы данных и личные настройки не будут затронуты. Можно также создавать снимки пользовательских файлов для целей восстановления, но эти снимки отделены от загрузочных сред.

5.7.4 XFce

5.7.4.1 About
XFce

XFce is a desktop environment based on the GTK toolkit used
by GNOME, but is much more lightweight and meant for those who
want a simple, efficient desktop which is nevertheless easy to use and configure.
Visually, it looks very much like CDE, found on commercial
UNIX systems. Some of XFce‘s
features are:

  • A simple, easy-to-handle desktop

  • Fully configurable via mouse, with drag and drop, etc

  • Main panel similar to CDE, with menus, applets and
    applications launchers

  • Integrated window manager, file manager, sound manager, GNOME compliance module, and other things

  • Themeable (since it uses GTK)

  • Fast, light and efficient: ideal for older/slower machines or machines with memory
    limitations

More information on XFce can be found on the XFce website.

5.7.4.2
Installing XFce

A binary package for XFce exists (at the time of writing).
To install, simply type:

# pkg_add -r xfce

Alternatively, to build from source, use the ports collection:

# cd /usr/ports/x11-wm/xfce
# make install clean

Now, tell the X server to launch XFce the next time X is
started. Simply type this:

% echo "/usr/X11R6/bin/startxfce" > ~/.xinitrc

The next time X is started, XFce will be the desktop. As
before, if a display manager like xdm is being used, create an
.xsession, as described in the section on , but with the /usr/X11R6/bin/startxfce command; or, configure the display manager
to allow choosing a desktop at login time, as explained in the section on .

5.7.2. KDE

5.7.2.1. О KDE

KDE является простой в использовании
современной графической оболочкой. Вот лишь некоторое из того, что
даёт пользователю KDE:

  • Прекрасный современный рабочий стол

  • Рабочий стол, полностью прозрачный для работы в сети

  • Интегрированная система помощи, обеспечивающая удобный и
    согласованный доступ к системе помощи по использованию рабочего
    стола KDE и его приложений

  • Единообразный внешний вид и управление во всех приложениях
    KDE

  • Стандартизированные меню и панели инструментов, комбинации
    клавиш, цветовые схемы и так далее.

  • Интернационализация: в KDE
    поддерживается более 40 языков

  • Централизованное единообразное конфигурирование рабочего
    стола в диалоговом режиме

  • Большое количество полезных приложений для
    KDE

Для KDE существует пакет офисных
приложений, который выполнен по технологии «KParts» из
KDE, состоящий из программы для работы с
электронными таблицами, презентационной программы, органайзера,
клиента для чтения телеконференций и других программ. С
KDE также поставляется веб-браузер под
названием Konqueror, который
является серьезным соперником другим браузерам для Unix-систем.
Дополнительную информацию о KDE можно
найти на веб-сайте
KDE. Для получения информации и информационных ресурсов,
специфичных для KDE во FreeBSD, обратитесь
к сайту команды FreeBSD-KDE
team.

Вариант четвертый. Радикальный

Четвертый и последний вариант довольно радикальный и издевательский по своей задумке. Он применим в тех случаях, когда необходимо обеспечить Linux-программе доступ к корневой файловой системе (например, если программа должна обращаться к «настоящей» версии каталога /etc). Chroot-окружение, в которое помещается любой процесс Linux, не предоставляет такой возможности (в этом и заключается смысл песочницы). Но есть выход: можно просто создать ссылку /compat/linux, указывающую на корень (rm -rf /compat/linux && ln -s / /compat/linux), и тогда chroot-окружение станет идентичным корню. Проблема только в том, что Linux-программы не смогут работать с библиотеками FreeBSD, им нужны их нативные версии. Просто скопировать эти библиотеки в корень не удастся по причине пересечения имен, поэтому следует переименовать их по определенной схеме (например, libc.so.6 в libc-linux.so.6). После этого в файл /etc/libmap.conf можно добавить такие строки:

# vi /etc/libmap.conf

[/home/username/linux]

libc.so.6 libc-linux.so.6

libdl.so.2 libdl-linux.so.2

И так для всех библиотек, требуемых программе. Сами же Linux-программы следует положить в каталог /home/username/linux, именно для него будет действовать приведенное переназначение имен. Описанный способ может показаться слишком грубым, но он действительно работает и может помочь в определенных обстоятельствах.

5.7.1. GNOME

5.7.1.1. О
GNOME

GNOME является дружественной к пользователю графической
оболочкой, позволяющей пользователям легко использовать и настраивать свои компьютеры. В
GNOME имеется панель (для запуска приложений и отображения их
состояния), рабочий стол (где могут быть размещены данные и приложения), набор
стандартных инструментов и приложений для рабочего стола, а также набор соглашений,
облегчающих совместную работу и согласованность приложений. Пользователи других
операционных систем или оболочек при использовании такой мощной графической оболочки,
какую обеспечивает GNOME, должны чувствовать себя в родной
среде. Дополнительную информацию относительно GNOME во FreeBSD
можно найти на сайте FreeBSD GNOME
Project. Web сайт также содержит достаточно исчерпывающие FAQ’и, касающиеся
установки, конфигурирования и управления GNOME.

5.7.1.2.
Установка GNOME

Легче всего установить GNOME через меню »Desktop
Configuration» в ходе процесса установки FreeBSD, как описано в Главы 2. Её также легко
установить из пакета или Коллекции Портов:

Для установки пакета GNOME из сети, просто наберите:

# pkg_add -r gnome2

Для построения GNOME из исходных текстов используйте дерево
портов:

# cd /usr/ports/x11/gnome2
# make install clean

После установки GNOME нужно указать X-серверу на запуск GNOME вместо стандартного оконного менеджера.

Самый простой путь запустить GNOME — это использовать GDM (GNOME Display Manager). GDM,
который устанавливается, как часть GNOME (но отключен по
умолчанию), может быть включён путём добавления gdm_enable="YES"
в /etc/rc.conf. После перезагрузки, GNOME запустится автоматически после того, как вы
зарегистрируйтесь в системе. Никакой дополнительной конфигурации не требуется.

GNOME может также быть запущен из командной строки с
помощью конфигурирования файла .xinitrc. Если файл .xinitrc уже откорректирован, то просто замените строку, в которой
запускается используемый менеджер окон, на ту, что вызовет /usr/X11R6/bin/gnome-session. Если в конфигурационном файле нет
ничего особенного, то будет достаточно просто набрать:

% echo "/usr/X11R6/bin/gnome-session" > ~/.xinitrc

Теперь наберите startx, и будет запущена графическая оболочка
GNOME.

% echo "#!/bin/sh" > ~/.xsession
% echo "/usr/X11R6/bin/gnome-session" >> ~/.xsession
% chmod +x ~/.xsession

Ещё одним вариантом является настройка менеджера дисплеев таким образом, чтобы он
позволял выбирать оконный менеджер во время входа в систему; в разделе о описывается, как сделать
это для kdm, менеджера дисплеев из KDE.

2. Настройка сети

Если во время установки сеть не настроилась то лучше сделать это сейчас и перейти уже к настройке по SSH.

ifconfig

1 ifconfig

lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
options=680003<RXCSUM,TXCSUM,LINKSTATE,RXCSUM_IPV6,TXCSUM_IPV6>
inet6 ::1 prefixlen 128
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x1
inet 127.0.0.1 netmask 0xff000000
groups: lo
nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>
hn0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=8051b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,TSO4,LRO,LINKSTATE>
ether 00:15:5d:00:65:25
inet 192.168.0.151 netmask 0xffffff00 broadcast 192.168.0.255
media: Ethernet autoselect (10Gbase-T <full-duplex>)
status: active
nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>

1
2
3
4
5
6
7
8
9
10
11
12
13
14

lo0flags=8049<UP,LOOPBACK,RUNNING,MULTICAST>metricmtu16384

options=680003<RXCSUM,TXCSUM,LINKSTATE,RXCSUM_IPV6,TXCSUM_IPV6>

inet6::1prefixlen128

inet6 fe80::1%lo0 prefixlen64scopeid0x1

inet127.0.0.1netmask0xff000000

groupslo

nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>

hn0flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST>metricmtu1500

options=8051b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,TSO4,LRO,LINKSTATE>

ether00155d006525

inet192.168.0.151netmask0xffffff00broadcast192.168.0.255

mediaEthernet autoselect(10Gbase-T<full-duplex>)

statusactive

nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>

У меня определилась сетевая карта hn0 и с настроенным адресом. Но в случае отсутствия адреса приступаем к настройке.

ee /etc/rc.conf

1 eeetcrc.conf

И добавляем в файл следующие строки, не забываем что сетевая карта hn0

ifconfig_hn0=»inet 192.168.1.30 netmask 255.255.255.0″
defaultrouter=»192.168.1.1″

1
2

ifconfig_hn0=»inet 192.168.1.30 netmask 255.255.255.0″

defaultrouter=»192.168.1.1″

Настраиваем DNS

ee /etc/resolv.conf

1 eeetcresolv.conf

nameserver 192.168.1.1

1 nameserver192.168.1.1

После внесения изменений нужно перезапустить сервак (так офф документация советует).

Настройка сети

Теперь можно приступить к настройке нашего сервера как шлюза в Интернет.
Итак наш сервер имеет две сетевых платы: одна "смотрит" в Интернет, а вторая - в нашу локальную сеть. В сетевых настройках первой сетевой платы нам надо прописать IP адрес, шлюз, маску подсети и IP-адреса DNS-серверов, которые нам предоставил Интернет-провайдер. Пусть в нашем примере  нам провайдер предоставил:
внешний IP 195.34.10.134, 
шлюз провайдера 195.32.10.1,
DNS серверы: 195.34.32.116 и 87.240.1.2).

В настройках второй сетевой платы надо прописать IP адрес 192.168.20.1, который принадлежит нашей локальной сети (см. «Простая офисная локальная сеть с подключением к Интернет»).

Настройку сетевых интерфейсов можно произвести с помощью уже известной вам утилиты sysconfig  (см. пункт 9 базовой установки выше) или путем прямого редактирования файла /etc/rc.conf.

Так или иначе для нашего примера файл  /etc/rc.conf должен содержать следующие строки (сетевые настройки):

ifconfig_rl0="inet 195.34.10.134 netmask 255.255.255.0" # внешний IP и маска подсети, предоставленные провайдером
ifconfig_rl1="inet 192.168.20.1 netmask 255.255.255.0"   # внутренний IP, который будет шлюзом по умолчанию для нашей локальной сети
gateway_enable="YES" # режим маршрутизатора, позволяет пересылать пакеты между сетевыми интерфейсами
natd_enable="YES"  #  включаем NATD демон, который  занимается трансляцией адресов: внутренних во внешние и наоборот 
natd_interface="rl0"   # natd демон работает на внешнем интерфейсе
defaultrouter="195.34.10.1" # шлюз по умолчанию, который предоставил провайдер
firewall_enable="YES" # включаем firewall
firewall_type="OPEN" # пока ограничимся либеральным вариантом файрволла
hostname="myoffice.ru" # имя этого сервера
sshd_enable="YES" # для удаленного доступа к серверу

rl0 и rl1 — это имена сетевых интерфейсов в нашем примере (на чипе Realtek). Имена своих сетевых интерфейсов можете посмотреть командой ifconfig или через интерактивную утилиту настройки syscinstall. 

Если у вас есть еще какие либо удаленные локальные сети, например 192.168.40.0/24 и 192.168.50.0/24, доступ к которым из нашей локальной сети осуществляется через шлюзы 192.168.20.101 и  192.168.20.102 соответственно, то статические маршруты маршруты к этим сетям при необходимости можно задать следующим образом (в файле /etc/rc.conf):

static_routes="net1 net2"
routes_net1="192.168.40.0/24 192.168.20.101" # пакеты в подсетку 192.168.40.0/24 пойдут через шлюз 192.168.20.101
routes_net2="192.168.50.0/24 192.168.20.102" # пакеты в подсетку 192.168.50.0/24 пойдут через шлюз 192.168.20.102

Далее в файле /etc/resolv.conf прописываем адреса DNS серверов, которые нам предоставил провайдер:

domain myoffice.ru
nameserver 195.34.32.116
nameserver 87.240.1.2

Теперь чтобы изменения  вступили в силу, выполним команду /etc/netstart или перезагрузим сервер.

Проверяем работу сети.Сначала пингуем до шлюза провайдера:

# ping 195.34.10.1

Потом до сервера DNS:

# ping  195.34.32.116

А потом до любых интернет-узлов:

# ping yandex.ru

Пингуем машины в своей локальной сети, например:

# ping  192.168.20.4

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

Вариант второй. Грязный

Второй вариант настройки среды исполнения заключается в ручном копировании необходимых файлов в каталог /compat/linux, без использования коллекции портов или пакетов. Достоинство подхода в том, что он не требует выкачивания из сети сотен мегабайт данных и позволяет использовать уже имеющееся дерево файлов Linux (например, взятое с дистрибутивного диска). Описывать способ нет смысла, потому что подробности совершаемых операций зависят от дистрибутива Linux и не универсальны.

В общем случае все, что требуется сделать, — это скопировать базовый комплект дистрибутивных пакетов и распаковать их в каталог /compat/linux. Это не так трудно, как кажется на первый взгляд. Следует установить FreeBSD-версию пакетного менеджера подопытного дистрибутива (например, archivers/rpm4 или archivers/dpkg) и с его помощью накатить нужные пакеты. Впоследствии недостающие пакеты можно добавить, используя уже родные Linux-версии этих программ:

FreeBSD Desktop — Result & Conclusion

It works !!

FreeBSD (GNOME) Desktop on QEMU / KVM

Was it worth it …

FreeBSD provides a robust and reliable server machine, but if you want a «Unix GNOME» desktop, then I would recommend Ubuntu for Linux. The other option is MacOS for Unix with slickness and commercial applications.

Finally with introduction of udev X11 input discovery this is now much easier than before.

Update: Sept 2021 — I have verified that this all work as per notes, in combination with upstream source build of xf86-video-qxl driver (see below), but expect it will likely break again shortly…

Reference & Links:

FreeBSD 11.3 / 12.X and SCSI, VirtIO & Networking Bug with QEMU Q35 VM —  when you find a bug in an Open Source reporting it and helping with diagnosis is a key way of helping to contribute. The work around for this bug is to build a custom kernel with /usr/src/sys/amd64/config/GENERIC update to disable «dev netmap» disabled.

TianoCore — the Open Source UEFI project kick started by Intel and basis of QEMU OVMF (Open VM Firmware) implementation

FreeBSD / QEMU / KVM Q35 USB Tablet (EVTouch) input device not captured by evdev — reporting bugs in Open Source can also lead to helpful tips, such as advise by Vladimir Kondratyev on using misc/utouch

FreeBSD Handbook — «The X Window System» has useful tips but does not cover QEMU / KVM setup

utouch — FreeBSD driver for absolute USB HID mouses — thanks to Vladimir Kondratyev

udev commit — X11 input discovery that greatly simplifies configuration and allows removal of hald and dbus daemons when running FreeBSD desktop

qxl video driver — deprecated and removed from distribution, another step backwards on this and discussion thread on same.

qxl build issue — «xf86Opts.h» Bool conflict with <stdbool.h> being included in qxl_drmmode.c. Workaround is to move the: #include » qxl_drmmode.h» to end of include section…

Выводы

По большей части в связи с проблемами установки программ от сторонних производителей, с которыми я столкнулся, мои впечатления от FreeBSD нужно разделить на две части. Во-первых, FreeBSD, то есть утилиты командной строки, ядро, файловая система ZFS и инсталлятор — это прекрасная операционная система. В двух различных окружениях она была быстрой, стабильной и отзывчивой. Меня действительно впечатлила большая работа по совершенствованию системного инсталлятора для этого релиза, и мне нравится простота использования ZFS. FreeBSD включает детальную и полезную документацию. Новый менеджер пакетов более быстрый и дружелюбный по сравнению со своими предшественниками. Все это означает, что FreeBSD довольно легко установить и изучить, понять как все работает, и администратор вряд ли столкнется с рухнувшей системой.

С другой стороны, у меня сложилось впечатление, что коллекция портов FreeBSD не обеспечивает такого же уровня безопасности, как базовая операционная система. Некоторые из доступных портов очевидно не были проверены на установку всех требуемых зависимостей. Состояние порта X, мягко говоря, неудовлетворительное. Этот разрыв между качеством базовой операционной системы FreeBSD теперь, с появлением отличного менеджера пакетов pkg, стал еще более очевиден. Сейчас проще, чем когда-либо, найти и установить новую программу, но дальнейшая охота на потерянные зависимости и настройка ключевых портов требуют слишком больших усилий. В результате отличная операционная система страдает, как только мы пытаемся расширить ее функциональность сторонними приложениями.

Еще одна вещь, на которую я обратил внимание, была возможность, которой мне очень не хватало. В FreeBSD имеется удивительно полезная функция, под названием Jails, предназначенная для изоляции процессов, которая по существу представляет собой среду виртуализации с очень низким потреблением системных ресурсов

Есть несколько полезных утилит, работающих с jails, которые позволяют повысить уровень безопасности работающих сервисов, таких как веб-сервер. Jails позволяет также запускать программы, не затрагивая остальную часть операционной системы. Чего не хватает, так это предварительно настроенных jails в официальном репозитории. В экосистеме Linux есть проект под названием Turnkey Linux, который предлагает готовые образы Linux, настроенные для различных задач, таких как обслуживание веб-сайта, форума, системы отслеживания ошибок в программном обеспечении и хостинга программы для мгновенного обмена сообщениями.

Необходимо предусмотреть возможность создания и распространения шаблонов jails во FreeBSD. Два проекта — FreeNAS и PC-BSD, оба основанные на FreeBSD, поддерживают несколько шаблонов jail для людей, которые хотят поэкспериментировать с портами, или создать контейнер для сервиса. Однако ни один из этих проектов, ни FreeBSD, не предлагают коллекции jails в стиле Turnkey, предназначенных для специфичных задач, таких как хостинг сайта на WordPress, запуск медиасервера или хоста TorrentFlux. Эта мощная технология, включенная в FreeBSD, вместе со стабильностью и низким потреблением ресурсов операционной системы, идеально подходит для создания таких предварительно настроенных контейнеров. Надеюсь, что эта идея будет воплощена в жизнь. Было бы прекрасно набрать в командной строке что-то типа «pkg install-jail amp_server» и получить соответствующий контейнер.

Общая оценка

Продвинутые файловые системы (Btrfs/ZFS): 4Документация: 5Простота установки: 4Простота поддержки/обновлений: 3Длина цикла поддержки для каждого релиза: 3Производительность: 5Стабильность: 5Простота запуска сервисов: 1

Ссылки по теме

Рейтинг
( Пока оценок нет )
Editor
Editor/ автор статьи

Давно интересуюсь темой. Мне нравится писать о том, в чём разбираюсь.

Понравилась статья? Поделиться с друзьями:
Работатека
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: