The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Создание бездисковых терминалов Windows RDP (Citrix ICA) на базе FreeBSD 5.0 (freebsd x xterm)


<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>
Ключевые слова: freebsd, x, xterm,  (найти похожие документы)
From: Харун Даниил <kdl@chirt.ru> Subject: Создание бездисковых терминалов Windows RDP (Citrix ICA) на базе FreeBSD 5.0 Создание бездисковых терминалов Windows RDP (Citrix ICA) на базе FreeBSD 5.0 Харун Даниил kdl@chirt.ru 28 апреля 2003 г. Не секрет, что для любой организации, где используется большое количество персональных компьютеров с операционной системой Microsoft Windows, головной болью является поддержка программного обеспечения на персональных компьютерах, восстановление после сбоев, вызванных вирусами или неумелыми действиями пользователей, резервное копирование пользовательских документов. Также высоки расходы на постоянную модернизацию компьютеров под возростающие требования новых операционных систем. В моем случае - это учебное заведение с компьютерными классами и "дырявой" операционной системой Windows 95. Выходом из создавшейся ситуации может стать перевод персональных компьютеров в режим графических терминалов - тонкие клиенты. В системе с использованием тонкого клиента по сети на сервер передаются сигналы, отражающие нажатие на ту или иную клавишу либо то или иное движение мыши. А сервер отображает соответствующие изменения на дисплее. В роли клиента может выступать любой ПК, но, поскольку на нем почти не выполняются операции по обработке данных, в качестве тонких клиентов можно применять и недорогие терминалы, не содержащие компоненты с движущимися частями (жесткие диски), оснащенные, как правило, устройствами с весьма ограниченным объемом памяти (ОЗУ). А если каждый клиент представляет собой обычный терминал, все данные и параметры настройки - и даже прикладные программы - хранятся на сервере, т. е. для того, чтобы скопировать все данные, имеющие отношение к пользователям, достаточно сделать резервную копию содержимого сервера. При восстановлении потерянных данных в такой среде легче выполнять сеансы резервного копирования и управлять ими централизованно. Некоторые прикладные программы плохо приспособлены для типичной среды клиент-сервер, но обычно это не самые важные для бизнеса и образования программы, скажем потоковое видео и игры. В общем следует избегать приложений, предполагающих интенсивные операции по перерисовке экрана, таких, как Adobe Photoshop. То же можно сказать и о прикладных программах с интенсивным использованием памяти и процессора. Как правило, они снижают производительность системы до неприемлемого уровня, ибо претендуют на те же ресурсы ЦП и памяти, что и другие выполняемые на сервере приложения. Существует немало готовых терминальных решений. Главенствующее положение на рынке средств для платформы тонких клиентов по-прежнему занимают фирмы Citrix (http://www.citrix.com/) и Microsoft - их совокупная доля составляет 90% от общего объема продаж. Особенно сильны позиции этих поставщиков в сегменте изделий для Microsoft Windows 2000. В качестве терминалов можно применять оборудование Wyse (http://www.wyse.com/) или Acer. (~350 $ без дисплея). В Массачусетсском Технологическом Институте разработана клиент-серверная многооконная система X Window System (часто именуемую X), работаюшая в UNIX-подобных системах. Компания Sun Microsystems (http://www.sun.ru/) предлагает свое решение - Sun Ray (http://ru.sun.com/win/products/sunray/). Но надо исходить из реалей. Благодаря Министерству Образования, Министерству Путей Сообщения и российским "пиратам", повсюду засилье Microsoft и смысл использования Sun Ray или X Window пропадает. Стоимость лицензирования Citrix Metframe XP составляет 14 500 $ за 50 пользовательских лицензий. Причем приобретение лицензий не отменяет необходимость приобретения лицензий Microsoft Windows CAL и Terminal Service CAL. Приемлемый вариант - использование терминального сервиса Microsoft Windows 2000 Server по протоколу RDP 5. Стоимость лицензирования составит примерно 1 200$ за 30 Open License CAL and terminal service CAL. Но Microsoft предлагает только 32-х и 16-ти разрядные клиенты для Windows, что увеличивает стоимость лицензирования. Существует бесплатный неоффициальный клиент с открытыми исходниками для Unix-систем - rdesktop (http://www.rdesktop.org/). В моем случае уже были в наличии классы с устаревшими компьютерами, и я остановился на ПК с сервером FreeBSD 5.0 и Windows 2000 Server. В принципе, есть красивое решение на базе Linux - LTSP (http://www.ltsp.org/). Но у меня уже был сервер с FreeBSD 5.0 и FreeBSD я знаю лучше, чем Linux. В этой статье я не предендую на полноту и правильность изложения, возможны ошибки. В работе я опирался на статью Олега Мухутдинова (http://www.freebsd.org.ru/how-to/diskless/diskless.html) на сайте http://www.freebsd.org.ru/ . Все описанное ниже касается операционной системы FreeBSD версии 5.0. Итак, начнем с клиентского оборудования. Если используем старые персоналки - то это компьютеры с процессором не ниже i486 и с оперативной памятью не ниже 16Мб. Все оборудование должно быть в списке совместимости (файл HARDWARE.TXT на диске с дистрибутивом FreeBSD). Сетевые адаптеры должны поддерживать спецификацию PXE. FreeBSD поддерживает громадный список оборудования, поэтому я понадеялся на "авось" и список совместимости даже не смотрел (это неправильный подход). Также необходимо удостовериться, что X Server будет работать с установленной видеоплатой. В моем распоряжении были классы с компьютерами двух типов конфигурации: * Intel Pentium 150 МГц, ОЗУ 16 Мб, интегрированная видеоплата SiS 5598 (видеопамять адресует из системной), сетевая плата CNet Pro 200 (на чипе Davicom DM9102). * Вторая конфигурация - персоналка на базе материнской платы VIA EPIA mini-ITX с процессором VIA Eden≥ ESP 5000, интегрированный сетевой адаптер VIA 10/100 Ethernet LAN, интегрированная AGP2X графика с 2D/3D акселерацией (как оказалось, на чипе Trident Blade 3d). Плата устанавливалась в миниатюрный корпус VIA Cubic с внешним импульсным источником питания. Этот компьютер абсолютно бесшумен, так как в нем отсутсвуют вентиляторы и жесткий диск. Встроенный сетевой адаптер поддерживает спецификацию PXE. На компьютере было установлено 32 Мб оперативной памяти. Настройка бездисковой станции Сетевые адаптеры должны поддерживать спецификацию PXE. С VIA EPIA проблем не возникло, т.к. адапер уже имеет поддержку PXE. Практически любая сетевая плата имеет DIP-панельку для установки ПЗУ, на котором прошивается программа для поддержки сетевой загрузки и программу можно получить у саппорта производителя. В моем случае я просто приобрел микросхемы ППЗУ с электрическим стиранием Winbond 27512 (емкостью 512 кбит) и прошил их на программаторе. Подробнее о бездисковой загрузке можно прочитать на сайте http://remoteboot.narod.ru . Настройка бездисковой станции сводится к установке сетевой карты с поддержкой PXE, выбора метода загрузки в BIOS'е и установке параметров в программе конфигурирования сетевой карты. В зависимости от реализации тип загрузки можно выбирать либо из меню очередности загрузки BIOS (выбирать LAN первой), либо в меню конфигурирования сетевой платы (для CNet Pro 200 необходимо было в момент работы POST нажать две клавиши shift одновременно). В любом случае тип загрузки запоминается в КМОП памяти компьютера. Желательно MAC-адрес адаптера записать, он затем понадобиться при конфигурировании сервиса DHCP. Построение ядра для бездисковых терминалов Необходимо собрать специальное ядро. Перейдем в каталог /usr/src/sys/i386/conf, скопируем файл GENERIC в DISKLESS. Для экономии памяти можно убрать поддержку неиспользуемых устройств и ненужные опции. Уберем поддержку протокола IPV6, поддержку NFSSERVER, MSDOSFS,CD9660. FFS необходимо оставить для работы виртуального диска в ОЗУ. Добавим опции: options BOOTP #Use BOOTP to obtain IP address/hostname options BOOTP_NFSROOT #NFS mount root filesystem using BOOTP info options BOOTP_NFSV3 #Use NFS v3 to NFS mount rootoptions options BOOTP_COMPAT #Workaround for broken bootp daemons. options NULLFS #nullfs Т. к. терминалы бездисковые, то уберем поддержку ATA, SCSI, RAID-контроллеров, флоппи-дисководов. Также можно убрать поддержку PCMCIA-устройств, ISA сетевых адаптеров, беспроводных адаптеров, шины USB. Пример конфигурации ядра FreeBSD 5.0 для бездисковых станций: machine i386 cpu I486_CPU cpu I586_CPU cpu I686_CPU ident DISKLESS maxusers 0 options INET #InterNETworking options FFS #Berkeley Fast Filesystem options SOFTUPDATES #Enable FFS soft updates support options UFS_ACL #Support for access control lists options UFS_DIRHASH options MD_ROOT #MD is a potential root device options NFSCLIENT #Network Filesystem Client options NFS_ROOT #NFS usable as root device options PROCFS #Process filesystem options PSEUDOFS #Pseudo-filesystem framework options COMPAT_43 #Compatible with BSD 4.3 options COMPAT_FREEBSD4 #Compatible with FreeBSD4 options KTRACE #ktrace(1) support options SYSVSHM #SYSV-style shared memory options SYSVMSG #SYSV-style message queues options SYSVSEM #SYSV-style semaphores options _KPOSIX_PRIORITY_SCHEDULING options KBD_INSTALL_CDEV # install a CDEV entry in /dev options AHC_REG_PRETTY_PRINT # Print register bitfields in debug # output. Adds ~128k to driver. options AHD_REG_PRETTY_PRINT # Print register bitfields in debug # output. Adds ~215k to driver. options BOOTP #Use BOOTP to obtain IP address/hostname options BOOTP_NFSROOT #NFS mount root filesystem using BOOTP info options BOOTP_NFSV3 #Use NFS v3 to NFS mount rootoptions options BOOTP_COMPAT #Workaround for broken bootp daemons. options NULLFS #nullfs options INVARIANT_SUPPORT device isa device eisa device pci device atkbdc # AT keyboard controller device atkbd # AT keyboard device psm # PS/2 mouse device vga # VGA video card driver device splash device sc device agp # support several AGP chipsets device npx device pmtimer device sio # 8250, 16[45]50 based serial ports device ppc device ppbus # Parallel port bus (required) device lpt # Printer device plip # TCP/IP over parallel device ppi # Parallel port interface device device de # DEC/Intel DC21x4x (``Tulip'') device em # Intel PRO/1000 adapter Gigabit Ethernet Card device txp # 3Com 3cR990 (``Typhoon'') device vx # 3Com 3c590, 3c595 (``Vortex'') device miibus # MII bus support device dc # DEC/Intel 21143 and various workalikes device fxp # Intel EtherExpress PRO/100B (82557, 82558) device pcn # AMD Am79C97x PCI 10/100 (precedence over 'lnc ') device rl # RealTek 8129/8139 device sf # Adaptec AIC-6915 (``Starfire'') device sis # Silicon Integrated Systems SiS 900/SiS 7016 device ste # Sundance ST201 (D-Link DFE-550TX) device tl # Texas Instruments ThunderLAN device tx # SMC EtherPower II (83c170 ``EPIC'') device vr # VIA Rhine, Rhine II device wb # Winbond W89C840F device xl # 3Com 3c90x (``Boomerang'', ``Cyclone'') device bge # Broadcom BCM570xx Gigabit Ethernet device random # Entropy device device loop # Network loopback device ether # Ethernet support device tun # Packet tunnel. device pty # Pseudo-ttys (telnet etc) device md # Memory "disks" device gif # IPv6 and IPv4 tunneling device faith # IPv6-to-IPv4 relaying (translation) device bpf # Berkeley packet filter Создание файловой системы Создадим файловую систему и файлы конфигурации бездисковых станций. Размещать все будем в каталоге /usr/diskless . Скопируем в /usr/diskless каталоги /bin /boot /sbin /stand /usr/bin /usr/sbin /usr/lib /usr/libdata /usr/libexec /usr/sbin В каталок /boot поместим новое ядро. Создадим пустые каталоги в /usr/diskless: ./conf ./conf/default ./dev ./etc ./mnt ./proc ./usr/X11R6 ./usr/compat ./usr/home ./usr/share ./usr/local Создадим мягкие ссылки #ln -s /usr/home /usr/diskless/home #ln -s usr/compat /usr/diskless/home #ln -s /etc/tmp /usr/diskless/tmp #ln -s /etc/tmp/var /usr/diskless/var В каталог /usr/diskless/etc скопируем из /etc следующие файлы -rw-r--r-- 1 root wheel disktab -rw-r--r-- 1 root wheel hosts -rw-r--r-- 1 root wheel inetd.conf -rw-r--r-- 1 root wheel pwd.db -rw-r--r-- 1 root wheel rc -rw-r--r-- 1 root wheel rc.diskless1 -rw------- 1 root wheel spwd.db lrwxr-xr-x 1 root wheel termcap -> /usr/share/misc/termcap -rw-r--r-- 1 root wheel ttys Файл intetd.conf сделаем пустым. Монифицируем файл rc.diskless1. В этом файле содержится скрипт, создающий RAM диск емкостью 4 Мб и монтирующий его в /etc. Также скрипт копирует содержимое каталога /conf/default/etc в /etc, а затем содержимое каталога /conf/x.x.x.x/etc в /etc, где x.x.x.x - IP адрес текущей бездисковой станции (например, /conf/10.242.82.10/etc). То есть специфичные настройки конкретной рабочей станции отменяют настройки по умолчанию (естественно, мы должны сделать закрепление IP адресов за конкретными бездисковыми компьютерами в натройках сервиса DHCP). Таким образом мы можем поддерживать разнородное оборудование и настройки для бездисковых станций. Ищем в rc.diskless1 следующие стороки и меняем их: mount_md() { /sbin/mdconfig -a -t malloc -s $1 -u $3 /sbin/disklabel -r -w md$3 auto /sbin/newfs -i 2048 /dev/md$3c /sbin/mount /dev/md$3c $2 } Теперь скрипт будет выделять 2 Мб под /etc . Создадим каталоги в /usr/diskless/conf/default ./etc ./etc/X11 ./etc/defaults ./etc/mtree ./etc/pam.d ./etc/rc.d ./etc/tmp ./etc/tmp/var Скопируем следующие файлы из каталога /etc соответственно. Содержание каталога /usr/diskless/conf/default/etc/defaults : -rw-r--r-- 1 root wheel pccard.conf -rw-r--r-- 1 root wheel periodic.conf -rw-r--r-- 1 root wheel rc.conf Содержание каталога /usr/diskless/conf/default/etc/mtree : -r--r--r-- 1 root wheel BSD.include.dist -r--r--r-- 1 root wheel BSD.local.dist -r--r--r-- 1 root wheel BSD.root.dist -r--r--r-- 1 root wheel BSD.sendmail.dist -r--r--r-- 1 root wheel BSD.usr.dist -r--r--r-- 1 root wheel BSD.var.dist -r--r--r-- 1 root wheel BSD.x11-4.dist -r--r--r-- 1 root wheel BSD.x11.dist Содержание каталога /usr/diskless/conf/default/etc/pam.d : -rw-r--r-- 1 root wheel ftp -rw-r--r-- 1 root wheel ftpd -rw-r--r-- 1 root wheel gdm -rw-r--r-- 1 root wheel imap -rw-r--r-- 1 root wheel kde -rw-r--r-- 1 root wheel login -rw-r--r-- 1 root wheel other -rw-r--r-- 1 root wheel passwd -rw-r--r-- 1 root wheel pop3 -rw-r--r-- 1 root wheel rexecd -rw-r--r-- 1 root wheel rsh -rw-r--r-- 1 root wheel sshd -rw-r--r-- 1 root wheel su -rw-r--r-- 1 root wheel telnetd -rw-r--r-- 1 root wheel xdm -rw-r--r-- 1 root wheel xserver Содержание каталога /usr/diskless/conf/default/etc/rc.d: -r-xr-xr-x 1 root wheel accounting -r-xr-xr-x 1 root wheel addswap -r-xr-xr-x 1 root wheel adjkerntz -r-xr-xr-x 1 root wheel amd -r-xr-xr-x 1 root wheel archdep -r-xr-xr-x 1 root wheel bootparams -r-xr-xr-x 1 root wheel ccd -r-xr-xr-x 1 root wheel cleanvar -r-xr-xr-x 1 root wheel cleartmp -r-xr-xr-x 1 root wheel devd -r-xr-xr-x 1 root wheel devdb -r-xr-xr-x 1 root wheel devfs -r-xr-xr-x 1 root wheel diskless -r-xr-xr-x 1 root wheel dmesg -r-xr-xr-x 1 root wheel dumpon -r-xr-xr-x 1 root wheel inetd -r-xr-xr-x 1 root wheel initdiskless -r-xr-xr-x 1 root wheel initrandom -r-xr-xr-x 1 root wheel kadmind -r-xr-xr-x 1 root wheel kerberos -r-xr-xr-x 1 root wheel keyserv -r-xr-xr-x 1 root wheel ldconfig -r-xr-xr-x 1 root wheel local -r-xr-xr-x 1 root wheel localdaemons -r-xr-xr-x 1 root wheel lomac -r-xr-xr-x 1 root wheel lpd -r-xr-xr-x 1 root wheel motd -r-xr-xr-x 1 root wheel mountcritlocal -r-xr-xr-x 1 root wheel mountcritremote -r-xr-xr-x 1 root wheel mountd -r-xr-xr-x 1 root wheel moused -r-xr-xr-x 1 root wheel msgs -r-xr-xr-x 1 root wheel nfsclient -r-xr-xr-x 1 root wheel nfsd -r-xr-xr-x 1 root wheel nfslocking -r-xr-xr-x 1 root wheel ntpdate -r-xr-xr-x 1 root wheel othermta -r-xr-xr-x 1 root wheel pcvt -r-xr-xr-x 1 root wheel pwcheck -r-xr-xr-x 1 root wheel random -r-xr-xr-x 1 root wheel rarpd -r-xr-xr-x 1 root wheel root -r-xr-xr-x 1 root wheel 1rtadvd -r-xr-xr-x 1 root wheel rwho -r-xr-xr-x 1 root wheel savecore -r-xr-xr-x 1 root wheel securelevel -r-xr-xr-x 1 root wheel swap1 -r-xr-xr-x 1 root wheel syscons -r-xr-xr-x 1 root wheel sysctl -r-xr-xr-x 1 root wheel 1syslogd -r-xr-xr-x 1 root wheel timed -r-xr-xr-x 1 root wheel ttys -r-xr-xr-x 1 root wheel vinum Содержание каталога /usr/diskless/conf/default/etc : drwxr-xr-x 2 root wheel X11 -rw-r--r-- 1 root wheel auth.conf -rw-r--r-- 1 root wheel csh.login drwxr-xr-x 2 root wheel defaults -rw-r--r-- 1 root wheel devd.conf -rw-r--r-- 1 root wheel disktab -rw-rw-r-- 1 root operator dumpdates -rw-r--r-- 1 root wheel fstab -rw-r--r-- 1 root wheel ftpusers -rw-r--r-- 1 root wheel gettytab -rw-r--r-- 1 root wheel group -rw-r--r-- 1 root wheel hosts -r--r--r-- 1 root wheel localtime -rw-r--r-- 1 root wheel login.conf -rw-r--r-- 1 root wheel mac.conf -rw-r--r-- 1 root wheel make.conf -rw-r--r-- 1 root wheel manpath.config -rw------- 1 root wheel master.passwd -rw-r--r-- 1 root wheel motd drwxr-xr-x 2 root wheel mtree -rw-r--r-- 1 root wheel netconfig -rwxr-xr-x 1 root wheel netstart -rw-r--r-- 1 root wheel networks -rw-r--r-- 1 root wheel newsyslog.conf drwxr-xr-x 2 root wheel pam.d -rw-r--r-- 1 root wheel passwd -rw-r--r-- 1 root wheel profile -rw-r--r-- 1 root wheel protocols -rw-r--r-- 1 root wheel pwd.db -rw-r--r-- 1 root wheel rc -rw-r--r-- 1 root wheel rc.conf drwxr-xr-x 2 root wheel rc.d -rw-r--r-- 1 root wheel rc.devfs -rw-r--r-- 1 root wheel rc.diskless2 -rw-r--r-- 1 root wheel rc.i386 -rw-r--r-- 1 root wheel rc.network -rwxr-xr-x 1 root wheel rc.resume -rw-r--r-- 1 root wheel rc.shutdown -rw-r--r-- 1 root wheel rc.subr -rwxr-xr-x 1 root wheel rc.suspend -rw-r--r-- 1 root wheel rc.syscons -rw-r--r-- 1 root wheel rc.sysctl -rw-r--r-- 1 root wheel remote -rw-r--r-- 1 root wheel resolv.conf lrwxr-xr-x 1 root wheel rmt -> /usr/sbin/rmt -rw-r--r-- 1 root wheel rpc -rw-r--r-- 1 root wheel services -rw-r--r-- 1 root wheel shells -rw------- 1 root wheel spwd.db -rw-r--r-- 1 root wheel sysctl.conf -rw-r--r-- 1 root wheel syslog.conf lrwxr-xr-x 1 root wheel termcap -> /usr/share/misc/termcap drwxr-xr-x 3 root wheel tmp -rw-r--r-- 1 root wheel ttys В каталоге /usr/diskless/conf/default/etc находятся общие файлы конфигурации для всех бездисковых станций. Модифицируем файл /usr/diskless/conf/default/etc/rc.diskless2 . По умолчанию этот скрипт создает RAM диски емкостью 32 Мб для /var и 64 Мб для /tmp . Конечно, это для нас непозволительная роскошь и эти каталоги мы размещаем в /etc/tmp и /etc/tmp/var , куда ссылаются созданные нами ссылки. Модифицируем этот скрипт, закоментировав строки и ветвления, где встречается использование функии mount_md(). Теперь этот скрипт будет создавать подкаталоги в /tmp без создания дополнительных RAM дисков. Примерное содержимое файла fstab (freebsd - имя хоста, которое должно резольвиться через DNS либо прописано в файле host): # Device Mountpoint FStype Options Dump Pass# freebsd:/usr/diskless / nfs rw 0 0 freebsd:/usr/X11R6 /usr/X11R6 nfs ro 0 0 freebsd:/usr/local /usr/local nfs ro 0 0 freebsd:/usr/share /usr/share nfs ro 0 0 freebsd:/usr/compat /ust/compar nfs ro 0 0 proc /proc procfs rw 0 0 Примерное содержание файла rc.conf: backgrounf_fsck="NO" syslogd_enable="NO" cron_enable="NO" local_startup="/etc/rc.d.local" inetd_enable="NO" kern_securelevel_enable="NO" linux_enable="NO" sendmail_enable="NO" sshd_enable="NO" usbd_enable="NO" keymap="ru.koi8-r" keychange="61 ^[[K" scrnmap="koi8-r2cp866" font8x16="cp866b-8x16" font8x14="cp866-8x14" font8x8="cp866-8x8" Создадим файлы подкачки для бездисковых станций в каталоге /usr/swap . # mkdir /usr/swap # dd if=/dev/zero bs=1024 count=16384 of=/home/swap/swap.10.242.82.10 # chmod 0600 /usr/swap/swap.10.242.82.10 Настройка экспорта файловой системы NFS (сетевая файловая система) Добавим в файл /etc/rc.conf следующие строки: rpcbind_enable="YES" nfs_server_enable="YES" nfs_server_flags="-u -t -n 40 -h 10.242.82.4 -h 10.242.85.4" Ключ -n определяет количество подключений, ключ -h определяет, какие интерфейсы демон nfsd будет обслуживать, ключ -t включает поддержку TCP соединений. Создадим файл /etc/exports и добавим в него описания экспорта файловой системы: /usr/diskless /usr/swap -maproot=0 -network 10.242.0.0 -mask 255.255.0. 0 /usr/local /usr/share /usr/compat /usr/X11R6 -ro -network 10.0.0.0 -mask 255.0. 0.0 После этого (необходимо перезагрузить сервер) нужно проверить, правильно ли экспортировались файловые системы: # showmount -e Exports list on localhost: /usr/swap 10.242.0.0 /usr/share 10.0.0.0 /usr/local 10.0.0.0 /usr/diskless 10.242.0.0 /usr/compat 10.0.0.0 /usr/X11R6 10.0.0.0 Настройка сервиса DHCP DHCP сервер будет использовать реализацию isc-dhcp для FreeBSD. В принципе, можно использовать любой другой сервер DHCP, но у меня почему-то не получилось заставить понимать бездисковую станцию опции на сервере Microsoft DHCP, указывающие на каталог начальной загрузки. Для установки isc-dhcp обновим порты и сделаем установку порта /usr/ports/net/isc-dhcp3 . Создадим файл конфигурации /usr/local/etc/dhcpd.conf : default-lease-time 600; max-lease-time 7200; option swap-path code 128 = string; option swap-size code 129 = integer 32; authoritative; #ddns-update-style ad-hoc; ddns-update-style none; subnet 10.242.82.0 netmask 255.255.255.0 { option domain-name "terminals.company.ru"; option routers 10.242.82.1; range 10.242.82.100 10.242.82.254; option subnet-mask 255.255.255.0; option broadcast-address 10.242.82.255; option domain-name-servers 10.242.82.2; option netbios-name-servers 10.242.82.2; next-server 10.242.82.4; filename "pxeboot"; option root-path "10.242.82.4:/usr/diskless"; option swap-path "10.242.82.4:/usr/swap"; option swap-size 16384; host term00.terminals.company.ru { hardware ethernet 00:80:AD:00:0B:0A; fixed-address 10.242.82.10; option host-name "term00.terminals.company.ru"; } host term01.terminals.company.ru { hardware ethernet 00:80:ad:00:11:d7; fixed-address 10.242.82.11; option host-name "term01.terminals.company.ru"; } host term02.terminals.company.ru { hardware ethernet 00:80:ad:00:07:a0; fixed-address 10.242.82.12; option host-name "term02.terminals.company.ru"; } } Запустим демон dhcpd : #/usr/local/etc/rc.d/isc-dhcpd.sh start Также желательно для каждой бездисковой станции создать запись A в соответствующей зоне DNS и запись PTR в обратной зоне. Настроим также сервер TFTP. По протоколу TFTP бездисковая станция получит загрузчик pxeboot . Добавим в /etc/inetd следующую строку: tftp dgram udp wait root /usr/libexec/tftpd tftpd -s /tftpboot Создадим каталог в корне /tftpboot и скопируем туда файл /boot/pxeboot . Пошлем процессу inetd сигнал HUP. Конфигурирование пользователей Теперь, если нет никаких ошибок, запустим бездисковую станцию. Дальнейшее конфигурироване продолжим с консоли бездисковой станции. Войдем под именем root и изменим пароль. Теперь пароль суперпользователя на сервере и на бездисковых станциях будет разный, так как для бездисковой станции используются файлы passwd,master.passwd, spwd.db и pwd.db, отличные от серверных. Создадим пользователя терминалов коммандой adduser : # adduser Username: tuser Full name: Terminal User Uid (Leave empty for default):1015 Login group [tuser]: Login group is tuser. Invite tuser into other groups? []: Login class [default]: Shell (sh csh tcsh) [sh]: Home directory [/home/tuser]: Use password-based authentication? [yes]: Use an empty password? (yes/no) [no]: yes Lock out the account after creation? [no]: Username : tuser Password : Full Name : Terminal User Uid : 1005 Class : Groups : tuser Home : /home/tuser Shell : /bin/sh Locked : no OK? (yes/no): yes adduser: INFO: Successfully added (tuser) to the user database. Необходимо использовать uid отличный от пользователей сервера. Новый пользователь имеет пустой пароль и домашний каталог. Теперь настроим автоматический логин, чтобы при включении бездискового компьютера выполнялся автоматический вход пользователя tuser . Создадим тип терминалла getty, добавив следующие строки в файл /etc/gettytab : # # autologin - automatically log in as Terminal user # tuserlogin|tu.9600:\ :al=tuser:tc=std.9600: Теперь отредактируем файл /etc/ttys, задав вход на нулевой консоли и отключим лишиние консоли для экономии памяти: ttyv0 "/usr/libexec/getty tuserlogin" cons25r on secure #ttyv0 "/usr/libexec/getty Pc " cons25r on secure # Virtual terminals ttyv1 "/usr/libexec/getty Pc" cons25r on secure ttyv2 "/usr/libexec/getty Pc" cons25r off secure ttyv3 "/usr/libexec/getty Pc" cons25r off secure ttyv4 "/usr/libexec/getty Pc" cons25r off secure ttyv5 "/usr/libexec/getty Pc" cons25r off secure ttyv6 "/usr/libexec/getty Pc" cons25r off secure ttyv7 "/usr/libexec/getty Pc" cons25r off secure ttyv8 "/usr/X11R6/bin/xdm -nodaemon" xterm off secure Не забываем, что все настройки в /etc после перезагрузки забудутся так как файловая система /etc размещается в оперативной памяти, поэтому необходимо содержимое каталога скопировать в /conf/default/etc . Настройка X Window После перезагрузки зайдем на консоль ttyv1 под именем root. На сервере система X Window уже должна быть установлена. Настройку X Window делаем обычным способом (можно воспользоваться командой xf86cfg, xf86cfg -textmode, xf86config). Желательно использовать 16-битный цветовой режим. Так как файловая система /etc размещается в оперативной памяти, после настройки и проверки командой XFree86 скопируем файл /etc/X11/XF86Config в каталог/conf/default/etc/X11/ или /conf/10.242.82.10/etc/X11/ для того, чтобы он не был утерян при следующей загрузке. В качестве терминального клиента Microsoft Windows RDP будем использовать программу rdesktop (http://www.rdesktop.org/). На текущий момент стабильная версия - 1.2.0. Установим ее на сервере из обновленных портов /usr/ports/net/rdesktop. Снова пересядем на консоль бездисковой станции, зайдем в каталог /home/tuser и создадим там скрипт .xinitrc, не забыв сделать его исполняемым: while true do rdesktop -f server.company.ru done exit0 , где server.company.ru - имя терминальнго сервера Windows. Затем командой vipw изменим шелл пользователя tuser на /usr/X11R6/bin/startx. Снова не забываем, что все настройки в /etc после перезагрузки забудутся так как файловая система /etc размещается в оперативной памяти. Перезагружаем бездисковую станцию. Если ошибок нет, то вместо шелла пользователя загрузится X Windows и автоматически запустится rdesktop . Также можно использовать клиент Citrix ICA для Linux. Его можно установить из портов на сервере. Для его работы нужно включить поддержку бинарного кода Linux, изменить файл .xinitrc и создать необходимые настройки клиента Citrix ICA.

<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>

Обсуждение [ RSS ]
  • 1, Алмаз (?), 09:48, 09/03/2005 [ответить]  
  • +/
    можно создать бездисковых терминалов на Red Hat
     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру