Содержание
Настройка сервера
Обновление системы
Обновим систему по статье: 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 - реализация протокола доступа к удалённому рабочему столу;
Установить эти пакеты можно командой:
sudo apt install isc-dhcp-server ltsp-server tftpd-hpa xrdp
Ошибки, выводимые при установке dhcp сервера, игнорируем: настройка dhcp будет осуществлена на следующем шаге.
Настройка DHCP сервера
В файле /etc/default/isc-dhcp-server в строке INTERFACECv4=""
указать интерфейс: eth1
INTERFACECv4="eth1"
Создадим конфигурацию для DHCP сервера:
sudo ltsp-config --overwrite isc-dhcp-server
sudo mv /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.bak
sudo cp /etc/ltsp/dhcpd.conf /etc/dhcp/dhcpd.conf
Заменим адреса в dhcpd.conf на нужные:
# # 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:
sudo systemctl restart isc-dhcp-server
Настройка tftpd сервера
В файле /etc/default/tftpd-hpa изменим путь к корню тфтп сервера:
TFTP_DIRECTORY="/var/lib/tftpboot"
Перезапустим:
Настройка LTSP
Скопируем конфигурацию Debian:
Директория должна называться именно AstraLinuxSE
Поправим файл:
/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
Монтируем:
sudo mount -o loop smolensk-1.6-20.06.2018_15.56.iso /media/cdrom
Сборка образа LTSP
Соберем образ командой:
sudo ltsp-build-client --dist smolensk --purge-chroot --security-mirror none --updates-mirror none --mirror "file:///media/cdrom" --components "contrib, main, non-free" --kernel-packages linux-image-generic --early-packages vim
Разберем опции:
--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 ltsp-chroot passwd root
Примонтируем репозитории:
sudo mkdir /opt/ltsp/amd64/opt/{main,devel}
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
в /opt/ltsp/amd64/etc/apt/sources.list пропишем путь к репам:
deb file:///opt/main smolensk main contrib non-free deb file:///opt/devel smolensk main contrib non-free
Выполним
Установим нужное:
sudo ltsp-chroot apt install ltsp-client-core parsec linux-astra-modules-generic xorg-all-main fly-dm freerdp2-x11 zenity
sudo ltsp-chroot apt install -f
В /opt/ltsp/amd64/etc/ltsp/update-kernels.conf укажем тип загружаемого образа: NBD
# Supported booth methods BOOT_METHODS="NBD"
Выполним:
Для подключения по протоколу XDMCP поправим /opt/ltsp/amd64/usr/share/ltsp/screen.d/xdmcp
Строку
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
Сделаем его исполняемым:
chmod +x /opt/ltsp/amd64/usr/local/bin/rdp.sh
Выполним:
sudo ltsp-chroot systemctl disable fly-dm
sudo ltsp-chroot update-initramfs -uk all
sudo ltsp-config --overwrite lts.conf
Далее правим /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
chmod +x /opt/ltsp/amd64/usr/local/bin/automount
Пересоберем образ:
sudo ltsp-update-kernels && sudo ltsp-update-image
Загрузка образа
Включаем тонкий клиент и выбираем загрузку по сети