Первым делом после установки обновляем систему до актуального состояния:
- apt update && apt upgrade
По требованиям Citrix (ссылки на используемые документы будут в конце статьи), HWE ядра, используемые в Ubuntu Desktop по-умолчанию, не подходят для нашей цели и нам придётся сделать downgrade с HWE/OEM до GA версии:
- apt install --install-recommends linux-generic
- Reboot, interrupt grub, in advanced options elect to boot 5.4 based kernel, complete boot. Check that everything works as expected.
- apt remove --purge linux-generic-hwe-20.04 linux-oem-20.04 linux-hwe-* linux-oem-* linux-modules-5.1* linux-modules-5.8.0-* linux-modules-5.6.0-*
Далее, устанавливаем .NET Core Runtime 3.1:
- wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb
- dpkg -i packages-microsoft-prod.deb
- apt update
- apt install apt-transport-https
- apt install dotnet-runtime-3.1
- dotnet --list-runtimes
Последней командой проверяем, не стоит ли что-то лишнее и если да, то оставляем только одну версию.
Пожалуйста, прочтите все требования к дистрибутиву по второй ссылке, там есть специфичные для версий и дистрибутивов и конечно же, что-то обязательно добавится с течением времени.
Далее подготавливаем VM к установке Linux Virtual Delivery Agent. Для этого внесём изменения в некоторые конфигурационные файлы:
В /etc/hosts оставляем только одну строку:
- 127.0.0.1 hostname-fqdn hostname localhost
Например: 127.0.0.1 ubuntu.xenlab.local xenlab localhost
Проверяем:
В файле /etc/resolv.conf указываем IP нашего DNS сервера и имя используемого домена, например:
- nameserver 192.168.100.254
- search xenlab.local
Для отключения использования mDNS в файле /etc/nsswitch.conf меняем содержимое строки:
- hosts: files mdns_minimal [NOTFOUND=return] dns
на
Проверяем:
Ставим chrony в качестве NTP клиента:
и редактируем файл /etc/chrony.conf так, чтобы он смотрел в сторону нашего NTP сервера, убрав все остальные сервера, указанные в конфиге на момент установки:
- pool ntp.xenlab.local iburst maxsources 1
Добавляем и включаем запуск в systemd и проверяем:
- systemctl enable chrony
- systemctl start chrony
- chronyc activity
Тут, коллеги, нам необходимо установить Oracle JDK 11 и я очень рекомендую пару статей из ссылок ниже, для того, чтобы понять, что уже имеется в системе, как удалить не нужное и как определить, какую именно из версий, система считает дефолтной.
По версии Citrix нам просто нужно:
- apt install -y openjdk-11-jdk
Но повторюсь, что не факт, что эта версия будет именно 11й. Проверьте командой:
и в случае необходимости поправьте с помощью статей.
Устанавливаем PostgreSQL:
- apt install -y postgresql
- apt install -y libpostgresql-jdbc-java
Устанавливаем Motif:
Устанавливаем прочие зависимости:
- apt install -y imagemagick gtk3-nocsd libmspack0 libgoogle-perftools4 libpython2.7 libsasl2-2 libsasl2-modules-gssapi-mit libldap-2.4-2 krb5-user libgtk2.0-0
Следующий шаг – редактирование конфигурационного файла /etc/krb5.conf:
- [libdefaults]
- default_realm = XENLAB.LOCAL
- dns_lookup_kdc = false
-
- [realms]
- XENLAB.LOCAL = {
- admin_server = DC.XENLAB.LOCAL
- kdc = DC.XENLAB.LOCAL
- }
-
- [domain_realm]
- xenlab.local = XENLAB.LOCAL
- .xenlab.local = XENLAB.LOCAL
Там, где CAPS, должен быть CAPS. Всегда пишите realm заглавными буквами.
проверяем:
В инструкции Citrix по 4й ссылке вы можете найти 5 вариантов подключения VM к AD, мы использовали SSSD, поэтому:
Редактируем (при необходимости создаём) /etc/sssd/sssd.conf:
- [sssd]
-
- services = nss, pam
-
- config_file_version = 2
-
- domains = xenlab.local
-
- [domain/xenlab.local]
-
- id_provider = ad
-
- access_provider = ad
-
- auth_provider = krb5
-
- krb5_realm = XENLAB.LOCAL
-
- # Set krb5_renewable_lifetime higher if TGT renew lifetime is longer than 14 days
-
- krb5_renewable_lifetime = 14d
-
- # Set krb5_renew_interval to lower value if TGT ticket lifetime is shorter than 2 hours
-
- krb5_renew_interval = 1h
-
- krb5_ccachedir = /tmp
-
- krb5_ccname_template = FILE:%d/krb5cc_%U
-
- # This ldap_id_mapping setting is also the default value
-
- ldap_id_mapping = true
-
- override_homedir = /home/%d/%u
-
- default_shell = /bin/bash
-
- ad_gpo_map_remote_interactive = +ctxhdx
-
Определяем права на файл и запускаем его:
- chmod 0600 /etc/sssd/sssd.conf
- systemctl start sssd
- systemctl enable sssd
Устанавливаем adcli:
Удаляем keytab файл и подключаемся к домену:
- rm -rf /etc/krb5.keytab
- adcli join domain-dns-name -U user -H hostname-fqdn
Проверяем:
- adcli testjoin
- adcli info domain-dns-name
Для того, чтобы при подключении пользователей создавались домашние папки, запускаем:
и выбираем соответствующую опцию.
Теперь можно приступать к инсталляции Linux VDA. Копируем файл инсталлятора и устанавливаем его командой:
- dpkg -i xendesktopvda_<version>.ubuntu20.04_amd64.deb
Если не все зависимости были установлены, после установки пакета можно доставить их командой:
Далее, необходимо зайти в каталог /opt/Citrix/VDA/sbin/ , запустить ctxsetup.sh и после ответа на ряд вопросов, получить работающий Linux VDA.
Логи инсталляции находятся в файле /tmp/xdl.configure.log
Итогом всей нашей работы должны служить две запущенные:
- systemctl start ctxhdx
- systemctl start ctxvda
и работающие службы
- systemctl status ctxvda
- systemctl status ctxhdx
которые, после проверки, сделайте enable.
В любом случае рекомендую ознакомиться с официальной документацией, приведённой по 4й ссылке, там процесс разобран более подробно и содержит всю необходимую вам информацию, которую я мог не учесть или которая мне просто не пригодилась в процессе установке. В случае обнаружения ошибок в статье буду ра вашим замечаниям.
Ссылки, использованные в статье:
- Kernel/LTSEnablementStack - Ubuntu Wiki
- System requirements (citrix.com)
- Install .NET on Linux Distributions | Microsoft Docs
- https://docs.citrix.com/en-us/linux-virtual-delivery-agent/current-release/installation-overview/ubuntu.html
- How To Install Java with Apt on Ubuntu 20.04 | DigitalOcean
- How To Uninstall JDK From Linux ? – Novice Stuffs (wordpress.com)