The OpenNET Project / Index page

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

Каталог документации / Раздел "Руководства по FreeBSD на русском" (Архив | Для печати)

Создание бездисковых терминалов

Руководство по настройке


Оригинал:
http://www.freebsd.org.ru/how-to/diskless/

Олег Мухутдинов

     mor@FreeBSD.org.ru
  

http://www.freebsd.org.ru/how-to/diskless/diskless.html

30 октября 2002 г.

Данное руководство описывает настройку сервера удаленной загрузки и создание бездисковых клиентов, на которых можно запускать Х-сервер. На сервере удаленной загрузки будет использоваться пакет isc-dhcp, который имеет поддержку протокола bootp, на клиентских машинах сетевая карта с поддержкой PXE.

Этот документ не является полным описанием процесса создания и конфигурирования бездисковых терминалов и серверов загрузки, а также технологий, которые используются для этого. Он содержит начальные сведения по созданию бездисковых терминалов для того, чтобы столкнувшийся в первые с этой проблемой человек смог быстро войти в курс дела, а затем самостоятельно под свои задачи конфигурировать сервер и клиентские станции. При написании этого руководства активно использовалось содержимое каталога /usr/share/examples/diskless, файлы /etc/rc.diskless1, /etc/rc.diskless2 и соответствующий раздел handbook (ru).

В этом руководстве не рассматривается пакет программ для сетевой загрузки etherboot.



1. Общие сведения

Открытая спецификация 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 мегабитной сети.


2. Настройка бездисковой станции

Настройка бездисковой станции сводится к установке сетевой карты с поддержкой 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), он пригодится в дальнейшем при настройке сервера. На этом конфигурирование бездисковой станции можно считать завершенным.

Note: В данном примере использовалась сетевая карта 3Com 3C905C-TX-М, если вы используете карту другого производителя - настройки могут отличаться.




3. Настройка сервера удаленной загрузки

3.1. Запуск сервера tftp (Trivial File Transfer Protocol)

Для реализации возможности загрузки по сети нам потребуется на сервере запустить демон 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` 
         

Note: Если у вас не запущен демон inetd(8), вы должны добавить строку inetd_enable="YES" в файл /etc/rc.conf и при следующей загрузке он запустится автоматически, либо запустить его вручную командой inetd -wW от пользователя root.


3.2. Построение специального ядра для бездисковых станций

Необходимо собрать специальное ядро для бездисковых станций, чтобы они могли загружаться по сети. Перейдите в каталог /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
     

Подробнее о конфигурировании ядра читайте в handbook (ru).

Note: Если вы хотите использовать firewall на бездисковой станции, не забудьте включить в ядро опцию IPFIREWALL_DEFAULT_TO_ACCEPT, в противном случае машина не сможет загрузиться по сети. Возможно вам придется убрать из ядра строку "device plip #TCP/IP over parallel", так как она может помешать загрузке ядра, перехватив на себя функции сетевого интерфейса.


3.3. Создание корневой файловой системы

Для бездисковых клиентов необходимо создать корневую файловую систему и основные файлы конфигурации. В каталоге /usr/share/examples/diskless есть скрипт clone_root, который автоматически создает корневую файловую систему для бездисковых станций. Обязательно загляните в этот скрипт, там достаточно подробно описана процедура создания файловой системы и файлов конфигурации. Он достаточно простой, и при необходимости вы можете внести в него свои изменения для ваших конкретных нужд.

Note: Для простоты здесь будет описано использование стандартного скрипта /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

Warning Если каталог /diskless_root существует, скрипт clone_root перед тем, как копировать в него файлы, удаляет старое содержимое каталога. Будьте внимательны.

Скрипт создаст каталог /diskless_root, в котором будет находится корневая файловая система для бездисковых клиентов, ядро он скопирует из каталога /usr/src/sys/compile/DISKLESS. Oбщие файлы конфигурации, и файлы для конкретных бездисковых машин будут скопированы в каталог /diskless_root/conf.

Note: По умолчанию скрипт clone_root создает дерево каталогов /diskless_root в корневой файловой системе. Общий размер создаваемых файлов составляет примерно 35Mb, это может привести к переполнению корневой файловой системы, что черевато системными сбоями. Прежде чем запускать этот скрипт, убедитесь, что у вас достаточно свободного места на диске. Хорошим решением будет вынести /diskless_root на отдельный раздел винчестера.


3.4. Создание файлов подкачки для бездисковых станций

Если на ваших бездисковых станциях установлено мало оперативной памяти, потребуется создать для них файлы подкачки на сервере. Для этого нужно создать каталог, например /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

Если у вас несколько бездисковых терминалов, проделайте тоже самое для каждого из них. Размер файла зависит от ваших потребностей.


3.5. Экспорт файловых систем (демон nfsd)

Демон 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 
       

Note: Если вы хотите экспортировать каталоги, находящиеся на одном разделе, то в /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 
       

Дополнительную информацию по настройке nfsd(8) вы найдете в handbook (ru).


3.6. Инсталляция и настройка пакета isc-dhcp

Демон isc-dhcp доступен в портах. Для его установки необходимо обновить коллекцию портов и выполнить команду:

    # cd /usr/ports/net/isc-dhcp3/ && make install clean

Подробнее об использовании портов читайте в handbook (ru).

Теперь нам необходимо создать файл конфигурации /usr/local/etc/dhcpd.conf и добавить в него следующие строки:

Note: В вашем случае настройки могут немного отличаться, рассмотрим их ниже.

    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
       

Если сервер не запустился, проверьте конфигурационный файл. Если сервер запустился успешно, самое время опробовать бездисковый терминал.


4. Настройка X - Window System

Х - сервер на бездисковой станции настраивается обычным способом. Вы можете воспользоваться для этого программой xf86cfg(1). Конфигурационный файл сохраните в каталоге /etc/X11. Подробнее о настройке X Window System читайте в handbook (ru).

Note: Так как файловая система /etc размещается в оперативной памяти (MFS), перепишите конфигурационный файл /etc/X11/XF86Config в каталог, где хранится конфигурация бездисковой станции /conf/192.168.4.10/etc/X11, для того, чтобы он не был утерян при следующей загрузке.

Если у вас в качестве бездискового терминала используется достаточно мощная машина, вы можете пользоваться ей как обычной станцией. Создайте файл ~/.xinitrc, добавьте в него ваш любимый оконный менеджер, X - сервер можете запускать командой startx(1).

Если у вас есть старая машина, которая уже давно морально устарела, ее можно успешно использовать в качестве Х - терминала. Для этого на сервере загрузки (или на любой другой машине, включая различные платформы и ОС) нужно настроить xdm(1) для использования протокола XDMCP и запускать Х - сервер командой X -query 192.168.4.1 либо IP адрес другого сервера. Подробнее о настройке X Display Manager читайте в handbook (ru).


5. Вопросы безопасности

Демоны, используемые для организации сервера удаленной загрузки, несут потенциальную угрозу безопасности вашей системе. Если к вашей машине есть доступ из других сетей, или в вашей сети есть "враждебно" настроенные пользователи, необходимо настроить систему безопасности должным образом. Подробнее о настройке безопасности можно почитать в handbook (ru).

Note: Неправильная настройка системы безопасности на сервере загрузки может привести к блокированию или неправильной работе бездисковых терминалов.





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

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