Настройка сервера
Обновление системы
Обновим систему по статье: https://wiki.astralinux.ru/x/e410Ag
Проверим:
Update 1
Bulletin 20181229SE16
Включение удаленного доступа
Разрешим удаленный вход в систему:
Панель управления → Система → Вход в систему → Дополнительно - Разрешить удаленный вход в систему (Не забываем перезапустить fly-dm)
Настройка сети
Сеть настраиваем любым предпочтительным способом. Например, с помощью Network Manager. Первый интерфейс eth0 смотрит в интернет, настройки получает автоматически. Второму, eth1, прописываем статический адрес 192.168.56.100 с маской 24.
eth0 - DHCP
eth1 - static
ip: 192.168.56.100
mask: 255.255.255.0
При настройке сетевых подключений следует помнить, что имя домена, задаваемое в настройках службы DHCP и настройках подключения должно быть одно и тоже:
- В файле /etc/dhcp/dhcpd.conf:
...option domain-name "example.com"...
- /opt/ltsp/amd64/usr/local/bin/rdp.sh
.../d:example.com..
В настройках интерфейса eth1 в network-manager поле "DNS servers" должно оставаться либо пустым, либо его значение должно совпадать с вышеупомянутым именем домена. Если сетевые подключения настраиваются посредством /etc/network/interfaces, то там также либо указать такое же имя домена, либо не указывать никакое. При несовпадении имён подключение по XDMCP НЕВОЗМОЖНО.
Установка ПО
Для сервера терминалов необходимы следующие пакеты:
- isc-dhcp-server - DHCP сервер.;
- tftpd-hpa - сервер tftpd;
- ltsp-server - скрипты для создания сервера терминалов;
- xrdp - реализация протокола доступа к удалённому рабочему столу;
Установить эти пакеты можно командой:
Ошибки, выводимые при установке dhcp сервера, игнорируем: настройка dhcp будет осуществлена на следующем шаге.
Настройка DHCP сервера
В файле /etc/default/isc-dhcp-server в строке INTERFACECv4=""
указать интерфейс: eth1
INTERFACECv4="eth1"
Создадим конфигурацию для DHCP сервера:
# # Default LTSP dhcpd.conf config file. # authoritative; subnet 192.168.56.0 netmask 255.255.255.0 { range 192.168.56.20 192.168.56.250; option domain-name "example.com"; option broadcast-address 192.168.56.255; option routers 192.168.56.100; next-server 192.168.56.100; # get-lease-hostnames true; option subnet-mask 255.255.255.0; option root-path "/opt/ltsp/amd64"; if substring( option vendor-class-identifier, 0, 9 ) = "PXEClient" { filename "/ltsp/amd64/pxelinux.0"; } else { filename "/ltsp/amd64/nbi.img"; } }
Перезапустим dhcp:
Настройка tftpd сервера
В файле /etc/default/tftpd-hpa изменим путь к корню тфтп сервера:
TFTP_DIRECTORY="/var/lib/tftpboot"
Перезапустим:
Настройка LTSP
Скопируем конфигурацию Debian:
Поправим файл:
/usr/share/ltsp/plugins/ltsp-build-client/AstraLinuxSE/010-debootstrap
Строку
LC_ALL=C ${DEBOOTSTRAP:-"debootstrap"} $DEBOOTSTRAPOPTS --arch $ARCH $DIST $ROOT $MIRROR
меняем на
LC_ALL=C ${DEBOOTSTRAP:-"debootstrap"} --components "main, contrib, non-free" $DEBOOTSTRAPOPTS --arch $ARCH $DIST $ROOT $MIRROR
Настройка LTSP образа
Монтирование установочного диска
Для создания образа необходимо примонтировать установочный диск (или образ диска) Astra Linux Special Edition релиз "Смоленск" версии 1.6.
Например мы имеем установочный образ smolensk-1.6-20.06.2018_15.56.iso
Монтируем:
Сборка образа LTSP
Соберем образ командой:
Разберем опции:
--dist smolensk - собрать образ с системой "Смоленск"
--purge-chroot - очищать директорию с файлами образа
--security-mirror none и --updates-mirror none - говорим сборщику не использовать зеркала с обновлениями (если нужно, обновим систему после сборки образа)
--mirror "file:///media/cdrom" - указываем репозиторий, откуда ставить систему. В нашем случае это директория с примонтированным установочным диском.
--components "contrib, main, non-free" - используем все компоненты
--kernel-packages linux-image-generic - установить ядро generic по-умолчанию
--early-packages vim - установить редактор vim на стадии сборки
Все опции обязательны, иначе при сборки возникнут ошибки (хотя можно поправить сборочные скрипты, но это долго)
Образ системы появится в /opt/ltsp/images
Распакованная система в /opt/ltsp/amd64 - она то нам и нужна. Займемся ее настройкой.
Настройка образа системы
Для работы с образом будущей системы будем использовать команду ltsp-chroot.
Зададим пароль root:
Примонтируем репозитории:
sudo mount -o loop smolensk-1.6-20.06.2018_15.56.iso /opt/ltsp/amd64/opt/main
sudo mount -o loop devel-smolensk-1.6-20.06.2018_15.56.iso /opt/ltsp/amd64/opt/devel
deb file:///opt/main smolensk main contrib non-free deb file:///opt/devel smolensk main contrib non-free
Выполним
В /opt/ltsp/amd64/etc/ltsp/update-kernels.conf укажем тип загружаемого образа: NBD
# Supported booth methods BOOT_METHODS="NBD"
Выполним:
Строку
X_ARGS="$X_ARGS -query ${XDM_SERVER}"
изменим на
X_ARGS="$X_ARGS -query ${XDM_SERVER} -displayID 0:63:0x0:0x0"
Для rdp подключений:в файле /opt/ltsp/amd64/usr/share/ltsp/screen.d/xfreerdp приводим последнюю строку к виду
exec xinit /usr/share/ltsp/xinitrc /usr/local/bin/rdp.sh -- "$DISPLAY" "vt${TTY}" -nolisten tcp $X_ARGS >/dev/null
Редактируем файл /opt/ltsp/amd64/usr/local/bin/rdp.sh
#!/bin/bash userdata=$(zenity --forms --title="Вход на сервер" --text="Форма авторизации" --add-entry="Логин:" --add-password="Пароль:"); userlogin="`echo $userdata|cut -d '|' -f 1`"; userpassword="`echo $userdata|cut -d '|' -f 2`"; xfreerdp /v:192.168.56.100 /cert-ignore +sec-nla /d:example.com /u:$userlogin /p: $userpassword /f /drive:usb,/media /network:lan /printer
Сделаем его исполняемым:
sudo ltsp-chroot update-initramfs -uk all
Далее правим /var/lib/tftpboot/ltsp/amd64/lts.conf:
[default] LTSP_CONFIG=True #SOUND=False XSERVER=vesa LOCALDEV=True HOTPLUG=True DNS_SERVER=192.168.56.100 SOUND=True MIC_VOLUME=0 CAPTURE_VOLUME=100 CAPTURE_SWITCH=toggle TIMEZONE=Europe/Moscow TIMESERVER=192.168.56.100 SYSLOG_HOST=192.168.56.100 NBD_SWAP=False #NBD_SWAP_SERVER=192.168.56.100 #CONFIGURE_X=False SCREEN_07=xfreerdp PRINTER_O_DEVICE=/dev/usb/lp0 PRINTER_0_TYPE=U
SCREEN_07=xfreerdp
следует изменить на SCREEN_07=xdmcp.
Автомонтирование usb
Создадим /opt/ltsp/amd64/etc/udev/rules.d/udev.rules:
ACTION=="add", KERNEL=="sd[a-z][0-9]", TAG+="systemd", ENV{SYSTEMD_WANTS}="usbstick-handler@%k"
Далее создадим unit для запуска:
[Unit] Description=Mount USB BindsTo=dev-%i.device After=dev-%i.device [Service] Type=oneshot RemainAfterExit=yes ExecStart=/usr/local/bin/automount %I ExecStop=/usr/bin/pumount /dev/%I
И скрипт для монтирования:
#!/bin/bash PART=$1 FS_LABEL=`lsblk -o name,label | grep ${PART} | awk '{print $2}'` if [ -z ${FS_LABEL} ] then /usr/bin/mount -t auto /dev/${PART} /media/${PART} else /usr/bin/mount -t auto /dev/${PART} /media/$ {FS_LABEL}_${PART} fi
Загрузка образа
Включаем тонкий клиент и выбираем загрузку по сети