Существует множество сфер деятельности, где требуется обеспечить выполнение однотипных задач на множестве рабочих станций. Например, отдел каталогов или компьютерный читальный зал библиотеки, где требуется запуск браузера для поиска в онлайн-каталоге библиотеки и чтения библиотечных онлайн-изданий. Или другой пример, компьютерный класс в школе, где требуется запуск какой-либо одной среды разработки для обучения школьников программированию. Ещё один пример, информационная система крупного медицинского учреждения, где на каждой рабочей станции требуется только доступ к информационной системе учреждения на интранет-сервере, подготовка документов в офисном пакете, а также печать документов на сетевых или локальных принтерах и сканирование документов на сетевых или локальных сканерах. Список подобных примеров можно ещё долго продолжать. Для решения таких задач в качестве рабочих мест пользователей удобно использовать бездисковые рабочие станции, на которых будет загружаться и функционировать предварительно настроенная операционная среда с ограниченным набором приложений и возможностей. В качестве такой операционной среды можно использовать Ульяновск.BSD. Рассмотрим процесс настройки загрузки и функционирования бездисковых рабочих станций на примере следующей задачи.
Допустим, требуется обеспечить загрузку и функционирование нескольких бездисковых рабочих станций в сегменте сети, специально выделенном для подключения таких станций. На всех рабочих местах требуется только предустановленное в Ульяновск.BSD программное обеспечение: браузер Firefox и офисный пакет LibreOffice. В процессе настройки будем использовать следующие сетевые параметры:
Сеть бездисковых рабочих станций 192.168.200.0/24;
Шлюз в Интернет - 192.168.200.100;
Сервер имён - 192.168.200.100;
Сервер бездисковых рабочих станций - 192.168.200.1;
Сервер DHCP - 192.168.200.1;
Диапазон адресов DHCP - 192.168.200.101-192.168.200.200.
Для сервера бездисковых рабочих станций можно использовать как Ульяновск.BSD, так и чистую операционную систему FreeBSD. Для начала устанавливаем на сервере сетевые параметры. Не забываем, что сервер должен иметь статический адрес 192.168.200.1. Проверяем, что сеть работает и есть доступ в Интернет.
Устанавливаем на сервере бездисковых рабочих станций сервер DHCP, добавляем параметры загрузки в /etc/rc.conf (на всякий случай будем запускать сервер DHCP только на том интерфейсе, который смотрит в сеть бездисковых рабочих станций, пусть это будет интерфейс re0):
pkg install -r latest dhcpd
sysrc dhcpd_enable="YES"
sysrc dhcpd_flags="re0"
Далее предположим, что готовый шаблон операционной среды для бездисковых рабочих станций будет находится на сервере в каталоге /diskless, все MAC-адреса бездисковых рабочих станций нам известны. Будем раздавать адреса бездисковым рабочим станциям по их MAC-адресам. Редактируем файл /usr/local/etc/dhcpd.conf до следующего состояния:
default-lease-time 7200;
max-lease-time 7200;
authoritative;
subnet 192.168.200.0 netmask 255.255.255.0 {
range 192.168.200.101 192.168.200.200;
option subnet-mask 255.255.255.0;
option routers 192.168.200.100;
option domain-name-servers 192.168.200.100;
next-server 192.168.200.1;
option root-path "192.168.200.1:/diskless";
filename "/boot/pxeboot";
}
host diskless101 {
hardware ethernet b7:97:4a:3e:7c:c3;
fixed-address 192.168.200.101;
}
host diskless102 {
hardware ethernet b7:97:4a:3e:7c:c4;
fixed-address 192.168.200.102;
}
Запускаем сервер DHCP и проверяем его работу:
service dhcpd start
Если всё нормально, то переходим к установке и настройке запуска сервера TFTP:
pkg install -r latest tftp-hpa
sysrc tftpd_enable="YES"
sysrc tftpd_flags="-s /diskless"
Запускаем сервер TFTP и проверяем его работу:
service tftpd start
Если всё нормально, то создаём каталог для шаблона операционной среды для бездисковых рабочих станций и настраиваем его экспорт, затем настраиваем запуск сервера NFS (на всякий случай будем запускать его только на том адресе, который смотрит в сеть бездисковых рабочих станций):
mkdir /diskless
echo '/diskless -network 192.168.200.0/24 -alldirs,ro -maproot=root' >> /etc/exports
sysrc nfs_server_enable="YES"
sysrc nfs_server_flags="-u -t -n 4 -h 192.168.200.1"
Запускаем сервер NFS и проверяем его работу:
service nfsd start
showmount -e
Если всё нормально, то можно переходить к созданию шаблона операционной среды для бездисковых рабочих станций. Шаблон операционной среды для бездисковых рабочих станций можно создать разными способами. В нашем случае достаточно просто подмонтировать накопитель с дистрибутивом Ульяновск.BSD, переписать файл дампа Ульяновск.BSD, например, в каталог /root и распаковать файл дампа в каталог /diskless. Файл дампа находится в дистрибутиве в каталоге /dist/ulbsd. Допустим имя файла дампа ulbsd-12.2-p4-amd64.img.7z и он уже скопирован в каталог /root, тогда команды для распаковки будут такие:
cd /diskless
7zz x -so /root/ulbsd-12.2-p4-amd64.img.7z | restore -vrf -
Далее в шаблоне операционной среды для бездисковых рабочих станций необходимо отключить загрузку модуля geom_mirror и произвести некоторые манипуляции с файлом /etc/rc.conf:
chroot /diskless
sysrc -f /boot/loader.conf geom_mirror_load="NO"
sysrc entropy_boot_file="NO"
sysrc ftpd_enable="NO"
sysrc smartd_enable="NO"
sysrc plasma_backup_enable="NO"
sysrc hostname="diskless"
exit
Если по какой-то причине требуется установка уникального hostname на каждой бездисковой рабочей станции, например, с привязкой к последнему байту IP-адреса (diskless101, diskless102 и т.д.), то можно сделать следующее:
chroot /diskless
echo '/sbin/hostname diskless`/sbin/ifconfig | /usr/bin/grep 192.168.200 | /usr/bin/cut -w -f3 | /usr/bin/cut -d "." -f4`' >> /etc/rc.local
exit
Затем в шаблон операционной среды для бездисковых рабочих станций необходимо добавить пользователя. Сделать это можно следующим образом:
chroot /diskless
bsdconfig usermgmt
exit
Далее в шаблоне операционной среды для бездисковых рабочих станций необходимо отключить возможность пользователю root логиниться в графическое окружение. Для этого необходимо выполнить следующие команды:
chroot /diskless
sed -i '' -e 's/MinimumUid=0/MinimumUid=1000/I' /usr/local/etc/sddm.conf
sed -i '' -e 's/MinimumUid=0/MinimumUid=1000/I' /usr/local/share/ulbsd/compile/cfgs/usr/local/etc/sddm.conf
exit
Затем в шаблоне операционной среды для бездисковых рабочих станций необходимо отредактировать файл /etc/fstab до следующего состояния:
192.168.200.1:/diskless / nfs ro 0 0
procfs /proc procfs rw 0 0
fdescfs /dev/fd fdescfs rw 0 0
linprocfs /compat/linux/proc linprocfs rw 0 0
linsysfs /compat/linux/sys linsysfs rw 0 0
tmpfs /compat/linux/dev/shm tmpfs rw,mode=1777 0 0
# The following lines are required for automatic graphics driver detection to work
/var/unionfs/ldconfig /usr/local/libdata/ldconfig nullfs rw,late 0 0
/var/unionfs/vdpau /usr/local/lib/vdpau nullfs rw,late 0 0
/var/unionfs/xorg.conf.d /usr/local/etc/X11/xorg.conf.d nullfs rw,late 0 0
/var/unionfs/libmap.d /usr/local/etc/libmap.d nullfs rw,late 0 0
В завершении в шаблоне операционной среды для бездисковых рабочих станций необходимо произвести настройки, подробнее о которых можно узнать из файла /etc/rc.initdiskless:
chroot /diskless
mkdir -p /var/unionfs
mkdir -p /usr/local/libdata/ldconfig
mkdir -p /usr/local/lib/vdpau
mkdir -p /usr/local/etc/X11/xorg.conf.d
mkdir -p /usr/local/etc/libmap.d
cp -R /usr/local/libdata/ldconfig /var/unionfs/
cp -R /usr/local/lib/vdpau /var/unionfs/
cp -R /usr/local/etc/X11/xorg.conf.d /var/unionfs/
cp -R /usr/local/etc/libmap.d /var/unionfs/
mkdir -p /conf/base/etc
mkdir -p /conf/base/home
mkdir -p /conf/base/media
mkdir -p /conf/base/mnt
mkdir -p /conf/base/var
echo 20480 > /conf/base/etc/md_size
echo 522240 > /conf/base/home/md_size
echo 614400 > /conf/base/var/md_size
tar -cvf /conf/base/etc.cpio.gz --format cpio --gzip /etc
tar -cvf /conf/base/home.cpio.gz --format cpio --gzip /home
tar -cvf /conf/base/var.cpio.gz --format cpio --gzip /var
exit
На этом процесс настройки сервера бездисковых рабочих станций завершен. Перед тестированием работы бездисковых рабочих станций убедитесь, что на них включена возможность загрузки по сети с использованием PXE BOOT ROM (Onboard LAN Option ROM).
Примечание 1:
На бездисковых рабочих станциях не предполагается наличия SWAP. Поэтому объем оперативной памяти, установленной на них, должен быть достаточен для выполнения требуемых задач. Рекомендуется устанавливать от 8ГБ и более.
Примечание 2:
Если во время загрузки бездисковых рабочих станций будут происходить зависания, то можно попробовать на сервере бездисковых рабочих станций добавить в файл /etc/hosts записи о соответствующих бездисковых рабочих станциях, например:
echo '192.168.200.101 diskless101' >> /etc/hosts
echo '192.168.200.102 diskless102' >> /etc/hosts
Примечание 3:
Более сложные шаблоны операционной среды для бездисковых рабочих станций можно подготовить, установив Ульяновск.BSD на физическую или виртуальную машину. На этой машине можно произвести все необходимые настройки, установить дополнительное программное обеспечение, произвести настройку рабочего стола пользователя и т.д. Затем сделать дамп системы, который распаковать в качестве шаблона операционной среды на сервере бездисковых рабочих станций.
Примечание 4:
На одном сервере бездисковых рабочих станций может быть несколько шаблонов операционной среды. Управлять выбором шаблона операционной среды можно через настройки сервера DHCP. Также одна и та же операционная среда может быть настроена так, чтобы загружаться с разными настройками для разных бездисковых рабочих станций. Подробнее об этом можно узнать из файла /etc/rc.initdiskless.