Нас интересует вариант загрузки по сети PXE.Тонкий клиент (англ. thin client) в компьютерных технологиях — компьютер или программа-клиент в сетях с клиент-серверной или терминальной архитектурой, который переносит все или большую часть задач по обработке информации на сервер.
Тонкий клиент в большинстве случаев обладает минимальной аппаратной конфигурацией, и отсутствием жёсткого диска для загрузки локальной специализированной ОС. В некоторых конфигурациях системы тонкий клиент загружает операционную систему по сети с сервера, используя протоколы PXE, BOOTP, DHCP, TFTP и Remote Installation Services (RIS).
Теперь нам известно, что, для его реализации необходимоPXE (англ. Preboot eXecution Environment, произносится пикси) — среда для загрузки компьютеров с помощью сетевой карты без использования жёстких дисков, компакт-дисков и других устройств, применяемых при загрузке операционной системы. Для организации загрузки системы в PXE используются протоколы IP, UDP, BOOTP и TFTP.
PXE-код, обычно находящийся в ПЗУ сетевой карты, получает из сети по протоколу TFTP (получив адрес TFTP-сервера по BOOTP) исполняемый файл, после чего передаёт ему управление.
Спецификация PXE ограничивает размер загрузчика 32 килобайтами, поэтому иногда используется двухстадийная загрузка, когда первый загрузчик получает и запускает вторичный, который уже получает и запускает образ операционной системы.
Одна из реализаций загружаемого по PXE файла — pxelinux из комплекта программ syslinux. pxelinux умеет показывать пользователю меню, похожее на меню syslinux и загружать по сети и передавать управление ядру Linux и программам, имеющим идентичный формат загрузки (например, Memtest86).
1.DHCP сервер
2.TFTP сервер
DHCP сервер в нашей инфраструктуре на FreeBSD должен присутствовать, нам нужно будет немного поправить конфиг. Находим секция subnet и прописываем 2 следующие строки
Код: Выделить всё
next-server 192.168.XX.2;
filename "pxelinux.0";
в итоге эта секция у нас должна выглядеть вот так
Код: Выделить всё
subnet 192.168.XX.0 netmask 255.255.252.0 {
range 192.168.XX.40 192.168.XX.255;
option domain-name-servers 192.168.XX.2, 192.168.1.7, 192.168.1.1;
option routers 192.168.XX.1;
option domain-name "XXX.ru";
next-server 192.168.XX.2;
filename "pxelinux.0";
}
Код: Выделить всё
inet# /usr/local/etc/rc.d/isc-dhcpd restart
Stopping dhcpd.
Waiting for PIDS: 1321.
Starting dhcpd.
inet# /usr/local/etc/rc.d/isc-dhcpd status
dhcpd is running as pid 92159.
inet#
Код: Выделить всё
inet# cat /etc/inetd.conf | grep tftp
#tftp dgram udp wait root /usr/libexec/tftpd tftpd -l -s /tftpboot
#tftp dgram udp6 wait root /usr/libexec/tftpd tftpd -l -s /tftpboot
inet#
Код: Выделить всё
inet# cat /etc/inetd.conf | grep tftp
tftp dgram udp wait root /usr/libexec/tftpd tftpd -l -s /usr/home/tftpboot
#tftp dgram udp6 wait root /usr/libexec/tftpd tftpd -l -s /usr/home/tftpboot
inet#
Код: Выделить всё
inet# cd /usr/home
inet# ls -l | grep tftpboot
inet#
Код: Выделить всё
inet# mkdir /usr/home/tftpboot
inet# ls -l | grep tftpboot
drwxr-xr-x 2 root wheel 512 Nov 6 15:40 tftpboot
inet#
Теперь сделаем чтобы inetd запускалось при старте
Код: Выделить всё
inet# echo inetd_enable=\"YES\" >> /etc/rc.conf
inet# cat /etc/rc.conf | grep inet
inetd_enable="YES"
inet#
inet# /etc/rc.d/inetd start
Starting inetd.
inet# /etc/rc.d/inetd status
inetd is running as pid 93446.
В принципе можно использовать любую ОС для тонких клиентов, их куча, есть различные конфигурации, мы на текущий момент используем PONIX, скачать можно все с их официального сайта, я возьму с сервера где все уже есть и расскажу о тех файлах - которые менял. В дальнейшем хотелось бы пользоваться свой ОС, но об этом позже, как появится время, напишу об опыте сборки
Код: Выделить всё
files# cd /
files# scp tftpboot.tar.gz asorochenkov@192.168.XX.2:~
The authenticity of host '192.168.XX.2 (192.168.XX.2)' can't be established.
DSA key fingerprint is 00:00:00:00:--:--:--:--:--:69:b0:35:d4:7b:a9:f5.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.XX.2' (DSA) to the list of known hosts.
Password:
tftpboot.tar.gz 100% 52MB 49.9KB/s 17:40
Код: Выделить всё
inet# tar zxf tftpboot.tar.gz
inet# mv tftpboot /usr/home/
inet# cd /
inet# ls -l | grep tftp
drwxrwxrwx 8 root wheel 1024 Oct 29 17:32 tftpboot
inet# cd /usr/home/tftpboot/
inet# ls -l
total 26842
-rw-rw-r-- 1 root wheel 5977 Nov 10 2011 README
-rw-rw-r-- 1 root wheel 911 Dec 22 2011 README.ltsp
-rw-rw-r-- 1 root wheel 1830 Dec 3 2010 README.standalone
drwxrwxrwx 2 root wheel 512 Oct 22 11:28 asound
drwxr-xr-x 2 root wheel 512 Jan 29 2010 boot
-rw-r--r-- 1 root wheel 1612224 Feb 21 2012 bzImage
-rw-r--r-- 1 root wheel 9670656 Feb 21 2012 initrd
drwxrwxr-x 2 root wheel 512 Apr 2 2012 pkg
-rw-rw-r-- 1 root wheel 79 Nov 23 2010 ponix.group-1024x768@60
-rw-rw-r-- 1 root wheel 79 Nov 23 2010 ponix.group-1024x768@85
-rw-rw-r-- 1 root wheel 87 Dec 7 2010 ponix.group-1280x1024@60
-rw-rw-r-- 1 root wheel 88 Dec 7 2010 ponix.group-1280x720@60
-rw-rw-r-- 1 root wheel 88 Dec 7 2010 ponix.group-1280x800@60
-rw-rw-r-- 1 root wheel 88 Dec 7 2010 ponix.group-1366x768@60
-rw-rw-r-- 1 root wheel 87 Nov 23 2010 ponix.group-1440x900@60
-rw-rw-r-- 1 root wheel 89 Dec 7 2010 ponix.group-1680x1050@60
-rw-rw-r-- 1 root wheel 89 Dec 7 2010 ponix.group-1920x1080@60
-rw-rw-r-- 1 root wheel 89 Dec 7 2010 ponix.group-1920x1200@60
-rw-rw-r-- 1 root wheel 24 Nov 23 2010 ponix.group-24bpp
-rw-rw-r-- 1 root wheel 77 Dec 7 2010 ponix.group-800x600@60
-rw-rw-r-- 1 root wheel 77 Nov 23 2010 ponix.group-800x600@85
-rw-rw-r-- 1 root wheel 53 Nov 23 2010 ponix.group-prompt
-rw-rw-r-- 1 root wheel 19 Nov 23 2010 ponix.group-vesa
-rw-rw-r-- 1 root wheel 149 Oct 29 17:32 ponix.hosts
-rw-rw-r-- 1 root wheel 932 Sep 24 11:23 ponix.network
-rw-rw-r-- 1 root wheel 6839 Nov 10 2011 ponix.network.example
drwxr-xr-x 7 root wheel 512 Jan 29 2010 pxe
-rw-rw-r-- 1 root wheel 15710 Aug 28 11:58 pxelinux.0
drwxrwxr-x 2 root wheel 512 Oct 29 16:55 pxelinux.cfg
drwxrwxrwx 2 root wheel 512 Apr 2 2012 upload
-rw-rw-r-- 1 root wheel 8 Feb 21 2012 version
inet#
Код: Выделить всё
inet# cat ponix.network
#####################################
#дКЪ НОХЯЮМХЪ ОЮПЮЛЕРПНБ ЯЛНРПХРЕ #
#ponix.network.example #
#####################################
SESSION_0_TITLE="Terminal Server"
SESSION_0_TYPE=freerdp
SESSION_0_FREERDP_SERVER="192.168.4.178"
FREERDP_SOUND=On
FREERDP_USB=On
Продолжение следует....