Главная.
Новости.
Программы.
Файлы.
Контакты.
Чат "Пиво".
Форум.
Статьи.
Ссылки.
Гостевая.
|
Cоздание бездисковых терминалов в FreeBSD.
Открытая спецификация PXE (Preboot Execution Environment), созданная корпорацией Intel позволяет осуществлять загрузку операционной системы по сети. Для использования этой возможности на бездисковой станции нужно установить сетевую карту c поддержкой PXE. На данный момент практически у любого производителя сетевого оборудования в линейке продуктов можно найти сетевой адаптер с поддержкой PXE. Здесь будет рассматриваться сетевая карта 3Com 3C905C-TX-М. В качестве сервера удаленной загрузки использовался компьютер Celeron 1.2Ghz, OЗУ 256М, диск 20G 7200rpm, ОС FreeBSD 4.7-STABLE, в качестве бездисковых терминалов P100, ОЗУ 32Mb, 3Com 3C905C-TX-М, Matrox MGA 1024SG и PII266, ОЗУ 128Mb, 3Com 3C905C-TX-М, Matrox MGA 1024SG. Тесты проводились на 10 и 100 мегабитной сети.
Настройка бездисковой станции сводится к установке сетевой карты с поддержкой PXE, выбора метода загрузки в BIOS'е и установке параметров в программе конфигурирования сетевой карты.
После того, как вы установили сетевую карту, зайдите в BIOS и в качестве устройства загрузки выберите Network, если у вас в BIOS'е нет такой функции, то просто оставьте все как есть. После перезагрузки у вас должна появиться строка, предлагающая сконфигурировать сетевой адаптер:
Initializing MBA. Press Ctrl+Alt+B to configure...
Нажмите Ctrl+Alt+B для того, чтобы попасть в меню конфигурирования сетевой карты и поставьте следующие параметры:
Boot Method: PXE
Default Boot: Network
Local Boot: Disabled
Config Message: Enabled
Message Timeout: 3 Seconds
Boot Failure Prompt: Wait for timeout
Для сохранения настроек и выхода из меню нажмите F10, после этого ваша машина попытается загрузиться по сети:
Managed PC Boot Agent (MBA) v4.00
(C)Copyright 1999 Lanworks Technologies Co. a subsidiary of 3Com Corporation
All right reserved
Pre-boot eXecution Environment (PXE) v2.00
(C)Copyright 1999 Intel Corporation.
(C)Copyright 1999 Lanworks Technologies Co. a subsidiary of 3Com Corporation
All right reserved
DHCP MAC ADDR: 00 01 02 F9 E2 C1
DHCP...
Запомните MAC адрес своей сетевой карты, который отобразится на второй строчке с низу (DHCP MAC ADDR: 00 01 02 F9 E2 C1), он пригодится в дальнейшем при настройке сервера. На этом конфигурирование бездисковой станции можно считать завершенным.
Обратите внимание: в данном примере использовалась сетевая карта 3Com 3C905C-TX-М, если вы используете карту другого производителя - настройки могут отличаться.
Для реализации возможности загрузки по сети нам потребуется на сервере запустить демон tftpd(8), он является частью базовой системы и запускается при помощи inetd(8). Протокол tftp (Trivial File Transfer Protocol - простой протокол пересылки файлов) необходим для получения начального загрузчика бездисковым клиентом.
Для запуска tftpd(8), необходимо добавить в файл /etc/inetd.conf следующую строку:
tftp dgram udp wait root /usr/libexec/tftpd tftpd -s /tftpboot
После этого нужно создать каталог /tftpboot, затем переписать в него начальный загрузчик FreeBSD для загрузки по протоколу PXE /boot/pxeboot и перезапустить inetd(8).
# mkdir /tftpboot
# cp /boot/pxeboot /tftpboot/
# kill -HUP `cat /var/run/inetd.pid`
Если у вас не запущен демон inetd(8), вы должны добавить строку inetd_enable="YES" в файл /etc/rc.conf и при следующей загрузке он запустится автоматически, либо запустить его вручную командой inetd -wW от пользователя root.
Необходимо собрать специальное ядро для бездисковых станций, чтобы они могли загружаться по сети. Перейдите в каталог /usr/src/sys/i386/conf, создайте файл конфигурации DISKLESS и добавьте в него следующие опции:
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 MFS #Memory Filesystem
options NFS #Network Filesystem
options NFS_ROOT #NFS usable as root device, NFS required
options NULLFS # nullfs
Если вы хотите использовать firewall на бездисковой станции, не забудьте включить в ядро опцию IPFIREWALL_DEFAULT_TO_ACCEPT, в противном случае машина не сможет загрузиться по сети. Возможно вам придется убрать из ядра строку "device plip #TCP/IP over parallel", так как она может помешать загрузке ядра, перехватив на себя функции сетевого интерфейса.
Для бездисковых клиентов необходимо создать корневую файловую систему и основные файлы конфигурации. В каталоге /usr/share/examples/diskless есть скрипт clone_root, который автоматически создает корневую файловую систему для бездисковых станций. Обязательно загляните в этот скрипт, там достаточно подробно описана процедура создания файловой системы и файлов конфигурации. Он достаточно простой, и при необходимости вы можете внести в него свои изменения для ваших конкретных нужд.
Для простоты здесь будет описано использование стандартного скрипта /usr/share/examples/diskless/clone_root без каких либо изменений.
Перед тем, как запускать скрипт clone_root, нужно создать каталог /conf/default/etc и создать в нем основные файлы конфигурации системы rc.conf, fstab, ttys, hosts, а также по вашему желанию любые другие файлы из каталога /etc которые вы хотите переопределить. В противном случае clone_root перенесет файлы конфигурации вашей системы, что может создать определенные проблемы. Необходимо внести некоторые изменения в файл rc.conf, в первую очередь стоит определить пути для запуска локальных скриптов во время загрузки системы local_startup="/etc/rc.d", соответственно необходимо создать каталог /conf/default/etc/rc.d. Так как IP адрес, адрес шлюза по умолчанию и имя хоста будут выдаваться DHCP сервером автоматически, нужно удалить соответствующие строки из файла конфигурации. Все остальное остается как обычно. Ниже приведен примерный файл конфигурации:
local_startup="/etc/rc.d"
sendmail_enable="NONE"
sshd_enable="YES"
keymap=ru.koi8-r
keychange="61 ^["
scrnmap=koi8-r2cp866
font8x16=cp866b-8x16
font8x14=cp866-8x14
font8x8=cp866-8x8
keyrate="fast"
Файл fstab будет выглядеть примерно так:
192.168.4.1:/usr /usr nfs ro 0 0
192.168.4.1:/diskless_root / nfs rw 0 0
proc /proc procfs rw 0 0
Подробнее об экспорте файловых систем будет рассказано ниже. Теперь можно создать файлы конфигурации для конкретных бездисковых машин. Для этого нужно создать каталог с именем машины, или с IP адресом, например /conf/192.168.4.10/etc, и создать в нем необходимые конфигурационные файлы. После того, как были созданы базовые конфигурационные файлы, можно запустить скрипт для создания корневой файловой системы:
#sh /usr/share/example/diskless/clone_root all
Если каталог /diskless_root существует, скрипт clone_root перед тем, как копировать в него файлы, удаляет старое содержимое каталога. Будьте внимательны.
Скрипт создаст каталог /diskless_root, в котором будет находится корневая файловая система для бездисковых клиентов, ядро он скопирует из каталога /usr/src/sys/compile/DISKLESS. Oбщие файлы конфигурации, и файлы для конкретных бездисковых машин будут скопированы в каталог /diskless_root/conf.
По умолчанию скрипт clone_root создает дерево каталогов /diskless_root в корневой файловой системе. Общий размер создаваемых файлов составляет примерно 35Mb, это может привести к переполнению корневой файловой системы, что черевато системными сбоями. Прежде чем запускать этот скрипт, убедитесь, что у вас достаточно свободного места на диске. Хорошим решением будет вынести /diskless_root на отдельный раздел винчестера.
Если на ваших бездисковых станциях установлено мало оперативной памяти, потребуется создать для них файлы подкачки на сервере. Для этого нужно создать каталог, например /home/swap, и для каждой станции создать свой файл подкачки. Ниже приведен пример по созданию swap файла для бездискового клиента с IP адресом 192.168.4.10 размером 64Мб:
mkdir /home/swap
#dd if=/dev/zero bs=1024 count=64000 of=/home/swap/swap.192.168.4.10
#chmod 0600 /home/swap/swap.192.168.4.10
Если у вас несколько бездисковых терминалов, проделайте тоже самое для каждого из них. Размер файла зависит от ваших потребностей.
Демон nfsd(8) потребуется для экспорта файловых систем для бездисковых станций. Для автоматического запуска nfsd(8) во время загрузки ОС добавьте следующие строки в /etc/rc.conf:
portmap_enable="YES"
nfs_server_enable="YES"
Если вы хотите запустить nfsd(8) без перезагрузки системы, то введите следующие команды:
# portmap
# nfsd -u -t -n 4
# mountd -r
Создайте файл /etc/exports и добавьте в него описание файловых систем, которые вы хотите экспортировать. В данном случае это будет выглядеть так:
/diskless_root -alldirs -maproot=0 192.168.4.10
/usr -alldirs -ro 192.168.4.10
/home/swap -maproot=0:10 192.168.4.10
Если вы хотите экспортировать каталоги, находящиеся на одном разделе, то в /etc/exports нужно указать их в одной строке друг за другом, например: /home/diskless /home/swap -maproot=0 192.168.4.10. В противном случае экспорт пройдет неправильно.
Для того, чтобы изменения вступили в силу, необходимо перезапустить демон mountd(8)
# kill -HUP `cat /var/run/mountd.pid`
После этого нужно проверить, правильно ли экспортировались файловые системы командой:
% showmount -e
Exports list on localhost:
/usr 192.168.4.10
/home/swap 192.168.4.10
/diskless_root 192.168.4.10
Демон isc-dhcp доступен в портах. Для его установки необходимо обновить коллекцию портов и выполнить команду:
# cd /usr/ports/net/isc-dhcp3/ && make install clean
Теперь нам необходимо создать файл конфигурации /usr/local/etc/dhcpd.conf и добавить в него следующие строки:
default-lease-time 600;
max-lease-time 7200;
authoritative;
ddns-update-style none;
option domain-name "your.domain";
option domain-name-servers 192.168.4.1;
option routers 192.168.4.1;
option swap-path code 128 = string;
option swap-size code 129 = integer 32;
subnet 192.168.4.0 netmask 255.255.255.0 {
range 192.168.4.10 192.168.4.11;
use-host-decl-names on;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.4.255;
host test1 {
hardware ethernet 00:01:02:f9:e2:c1;
fixed-address 192.168.4.10;
next-server 192.168.4.1;
filename "pxeboot";
option root-path "192.168.4.1:/diskless_root";
option swap-path "192.168.4.1:/home/swap";
option swap-size 64000;
}
host test2 {
hardware ethernet 00:01:02:f9:e2:ce;
fixed-address 192.168.4.11;
next-server 192.168.4.1;
filename "pxeboot";
option root-path "192.168.4.1:/diskless_root";
option swap-path "192.168.4.1:/home/swap";
option swap-size 128000;
}
}
Секция "subnet 192.168.4.0 netmask 255.255.255.0" описывает общие настройки для бездисковых терминалов:
"range" задает количество IP адресов доступных клиентам;
"option domain-name-servers" задает серверы DNS;
"server-name" имя сервера удаленной загрузки;
"option routers" задает шлюз по умолчанию для бездискового терминала.
Секция "host test1" задает настройки для конкретной бездисковой станции:
"hardware ethernet" MAC адрес сетевой карты бездисковой станции, вам необходимо вписать сюда адрес сетевой карты бездискового терминала;
"fixed-address" задает фиксированный IP адрес для бездисковой станции;
"filename" имя файла начального загрузчика, передаваемого бездисковому клиенту по протоколу tftp;
"option root-path" месторасположение корневой файловой системы для бездискового клиента;
"option swap-path" каталог, в котором располагаются файлы подкачки.
Теперь нужно запустить демон dhcpd(8):
# /usr/local/etc/rc.d/isc-dhcpd.sh start
Internet Software Consortium DHCP Server V3.0.1rc9
Copyright 1995-2001 Internet Software Consortium.
All rights reserved.
For info, please visit http://www.isc.org/products/DHCP
Wrote 0 deleted host decls to leases file.
Wrote 0 new dynamic host decls to leases file.
Wrote 1 leases to leases file.
Listening on BPF/rl0/00:c0:26:ac:1d:7a/192.168.4.0/24
Sending on BPF/rl0/00:c0:26:ac:1d:7a/192.168.4.0/24
Sending on Socket/fallback/fallback-net
Если сервер не запустился, проверьте конфигурационный файл. Если сервер запустился успешно, самое время опробовать бездисковый терминал.
Демоны, используемые для организации сервера удаленной загрузки, несут потенциальную угрозу безопасности вашей системе. Если к вашей машине есть доступ из других сетей, или в вашей сети есть "враждебно" настроенные пользователи, необходимо настроить систему безопасности должным образом.
>>
|