Документация по ОС FreeBSD Вторник, 17.06.2025, 15:41
Приветствую Вас Гость | RSS
Меню сайта

Категории каталога
Мои статьи [0]
Установка и настройка [281]
X Window [25]
Man pages [30]
Ports & Packages [26]
cvs [18]
Multimedia [20]
Нововсти в мире Unix [0]
RFC [4]
RFC (Request for Comments, Запрос на комментарии) - серия документов, публикуемая сообществом исследователей и разработчиков, руководствующихся практическими интересами, в которой описывается набор протоколов и обобщается опыт функционирования Интернет.
Безопасность [52]
Работа с железом [58]
Книги по FreeBSD [17]
Сеть [505]
Программирование [40]
FireWall [58]
Темы экзамена BSDA [14]
Официальные темы экзамена BSDA, включая подробноые описания и советы по обучению.

Главная » Статьи » Установка и настройка

FreeBSD Jumpstart руководство
Задача:

Организовать процесс полностью автоматической установки операционной системы FreeBSD на N-ное количество однотипных серверов.
При этом, в автоматическом режиме должна также производиться установка дополнительного програмного обеспечения (packages) и постинсталляционная конфигурация системы.

Версия ОС как клиента так и сервера в нашем случае FreeBSD 6.3

Решение:

PXE-загрузка + автоматизация работы installer-а с помошью конфигурационного файла install.cfg.

Предупреждение:

Эта процедура делает "Сервер" уязвимым с точки зрения безопасности и потенциально опасным для других компьютеров. Лучшим решением будет держать сервер в своем собственном вилане недоступном ни для каких других машин кроме "Клиентов".

Терминология:

Сервер - это компьютер обеспечивающий сервисы сетевой загрузки и инсталляции.

Клиент - это компьютер на котором должна быть установлена ОС FreeBSD.
Клиент должен поддерживать PXE загрузку.

Настройка сервера.

Сетевой интерфейс сервера, который входит в вилан с клиентами имеет такие настройки:

        # ifconfig lnc1
        lnc1: flags=108843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST,NEEDSGIANT> mtu 1500
                inet 10.0.1.1 netmask 0xffffff00 broadcast 10.0.1.255
                ether 00:0c:29:2f:f4:99

1. Для начала нужно установить сервер DHCP. Берем здесь /usr/ports/net/isc-dhcp3-server.

При установке порта можно либо оставить все опции по умолчанию либо снять все.

Пример конфигурационного файла /usr/local/etc/dhcpd.conf:

dhcpd.conf

        authoritative;
        option subnet-mask 255.255.255.0;
        filename "/boot/pxeboot";
        option root-path "10.0.1.1:/tftpboot";
        ddns-update-style none;
        option domain-name "test.com";
        server-name "DHCPserver";
        server-identifier 10.0.1.1;
        default-lease-time 7200;
        max-lease-time 7200;
        subnet 10.0.1.0 netmask 255.255.255.0 {
                next-server 10.0.1.1;
                range 10.0.1.29 10.0.1.200;
        }

Добавим в /etc/rc.conf строку

        dhcpd_enable="YES"

2. Настроим сервис tftp. Воспользуемся стандартным, обслуживающимся inetd.

Cоздадим директорию /tftpboot

Раскоментируем в /etc/inetd.conf строку

        tftp    dgram   udp     wait    root    /usr/libexec/tftpd      tftpd -l -s /tftpboot

Ну и добавим в /etc/rc.conf строку

        inetd_enable="YES"

3.Настроим сервис nfs.

В /etc/rc.conf:

        nfs_server_enable="YES"

И добавим в /etc/exports строку:

        /tftpboot  -maproot=root -network 10.0.1.0 -mask 255.255.255.0

Наши сервисы настроены но не запущены.
Стартуем ручками либо перезагружаем сервер.
  
Копиируем содержимое cdrom-а с дистрибутивом в /tftpboot.
Для этого лучше воспользоваться tar-ом:

        # mount /cdrom
        # cd /cdrom
        # ( tar --create --file=- * ) | ( cd /tftpboot ; tar --extract --file=- )

Это сбережет место на диске.

На этом этапе клиент уже может загружаться с сервера и инсталлироваться в диалоговом режиме.

Автоматизации процесса инсталляции мы добъемся с помощью написания файла сценария для installer-а, а именно install.cfg. Подробней с правилами и синтаксисом его заполнения можно ознакомиться в соответствующей странице мануала (sysinstall(8)).

Вот пример моего файла:

        # Turn on extra debugging.
        debug=YES

        # Ok, this ought to turn off ALL prompting, don't complain to me that you
        # lost a machine because you netbooted it on  the same subnet as this
        # box
        nonInteractive=YES
        noWarn=YES
        tryDHCP=YES

        ################################
        # My host specific data
        hostname=client
        domainname=test.com
        # DHCP does this for us
        #nameserver=10.0.0.1
        #defaultrouter=10.0.0.1
        #ipaddr=DHCP
        #netmask=255.255.255.0
        ################################

        ################################
        # Which installation device to use
        nfs=10.0.1.1:/tftpboot
        netDev=lnc0
        tryDHCP=YES
        mediaSetNFS
        ################################

        ################################
        # Select which distributions we want.
        #dists= base kernels dict doc man
        #distSetCustom
        distSetUser
        ################################

        ################################
        # Now set the parameters for the partition editor on sd0.
        disk=ad0
        partition=all
        bootManager=standard
        diskPartitionEditor
        #diskPartitionWrite
        ################################
        ################################
        # All sizes are expressed in 512 byte blocks!
        #
        # Size in Mb is calculated in that way: size_in_mb=size_in_blocks*1024*1024/512
        #
        ad0s1-1=ufs 524288 /
        ad0s1-2=swap 524288 none
        ad0s1-3=ufs 524288 /var 1
        ad0s1-4=ufs 524288 /tmp 1
        ad0s1-5=ufs 0 /usr 1
        # Let's do it!
        diskLabelEditor
        #diskLabelCommit

        # OK, everything is set.  Do it!
        installCommit

        #Here we can setup all required packages

        #Here is our special customized package installation
        package=custom_package
        packageAdd

Для того чтобы внедрить install.cfg в дистрибутив, чтобы он автоматически скармливался инсталлеру, проделаем следующее.

        # cd /tftpboot/boot
        # gunzip mfsroot.gz

Сассоциируем метаустройство с файлом и смонтируем:

        # mdconfig -a -t vnode -f mfsroot -u 0
        # mount /dev/md0 /mnt
        # cp $WORKDIR/install.cfg /mnt
        # umount /mnt
        # mdconfig -d -u 0
        # gzip mfsroot

Все пакеты, которые должны быть установлены инсталлером автоматически, то есть те, которые указаны в конце файла install.cfg, должны быть скопированы в /tftpboot/packages/All. Важно не забыть добавить строки описывающие эти пакеты в файл /tftpboot/packages/INDEX.

Это должна быть строка вида:

        package_name-1.0||/|Package Description||youremail@your.domain||||

Теперь рассмотрим такой замечательный механизм как пользовательский постинсталляционный пакет.

В моем файле install.cfg он упоминался, как custom_package.

Основная идея состоит в том, чтобы этот пакет устанавливал и настраивал все, чтомы захотим после инсталляции системы и пакетов приложений. Это могут быть системные файлы такие как rc.conf, master.passwd, подготовленные конфигурационные файлы установленных приложений. Кроме того при своей установке этот пакадж может выполнить системные комманды посредством применения преинсталляционного и постинсталляционного шелл-скриптов.

Функциональность этого механизма ограничена только вашей фантазией и перечнем задач.

Для облегчения и автоматизации процесса генерации пакета используем скрипт pkgmaker.sh. Вот его содержимое:

        #!/bin/sh

        # $Wintelcom: src/freebsd/pxe/doc/pkgmaker.sh,v 1.1 2000/07/14 12:42:05 bright Exp $
        # $FreeBSD: doc/en_US.ISO8859-1/articles/pxe/pkgmaker.sh,v 1.1 2003/06/17 08:21:40 alfred Exp $

        PKGNAME=${1}
        PKGDIR=`pwd`/${PKGNAME}/

        pkg_create -i ${PKGDIR}pre -I ${PKGDIR}post -f ${PKGDIR}PLIST  -s ${PKGDIR} -p / -d ${PKGDIR}DESCR -c ${PKGDIR}COMMENT ${PKGNAME}.tgz

Для более глубокого понимания сути процесса рекомендуется вдемчивое прочтение соответствующей страницы мануала (pkg_create(1)).

В рабочем директории создатим директорий для файлов пакета:

        # cd $WORKDIR
        # mkdir custom_package

Создаем там набор служебных файлов

        # ls cusom_package
        COMMENT DESCR   PLIST  post    pre

Названия COMMENT и DESCR говорят сам за себя - заполняем их по своему усмотрениюВ файл PLIST вносим список файлов которые должны устанавливаться в системе при установке пакета:

        # cat ./custom_package/PLIST
        etc/rc.conf
        etc/master.passwd

Создаем в директории пакета копию дерева файловой системы содержащей файлы, которые будут устанавливаться и копируем туда эти файлы:

        # mkdir ./custom_package/etc
        # cp /etc/rc.conf ./custom_package/etc
        # cp /etc/master.passwd ./custom_package/etc
        # ls custom_package/etc
        master.passwd   rc.conf

Ну а файлы  post и pre делаем исполняемыми и вносим туда сценарии, которые должны быть выполнены до и после установки пакета, например:

        # cat ./custom_package/post
        #/bin/sh
        /sbin/reboot

Теперь находясь в рабочем директории, содержащем директорий пакета запускаем скрипт pkgmaker.sh, с соответствующим имени директория пакета аргументом:

        # ./pkgmaker.sh custom_package


В рабочем директории получаем пает custom_package.tgz Поступаем с ним также, как со всеми другими пакетами.

Ну вот фактически все.
Подключаем клиент интерфейсом в вилан, где находится сервер.
В BIOS клиента выставляем опцию загрузки по сети.

Список Источников.

При написании данного материала использовались следующие материалы:

1. FreeBSD Jumpstart Guide. http://www.freebsd.org/doc/en_US.ISO8859-1/articles/pxe/article.html
2. Quick and Dirty PXE Boot Setup for FreeBSD 4.x and later. http://people.freebsd.org/~dwhite/pxeboot.html
3. Пример инсталляции FreeBSD c сетевого диска, через NFS (nfs freebsd install boot pxe). http://www.opennet.ru/base/sys/frebsd_inst_nfs.txt.html
4. Установка FreeBSD 6.0 по сети (freebsd remote dhcp boot install pxe diskless). http://www.opennet.ru/base/sys/freebsd_remote_install.txt.html
5. Примеры install.cfg для автономной установки FreeBSD. http://www.opennet.ru/base/sys/freebsd_install_cfg.txt.html


Источник: http://www.opennet.ru/base/sys/freebsd_jumpstart.txt.html
Категория: Установка и настройка | Добавил: oleg (15.02.2008) | Автор: Евгений Мерлинский
Просмотров: 952 | Комментарии: 1 | Рейтинг: 0.0/0 |
Всего комментариев: 1
1 n0name  
0
Хотелось бы добавить еще одну полезную ссылку по теме: _http://slapsh.livejournal.com/140408.html

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа

Beastie

Друзья сайта

Статистика

Онлайн всего: 4
Гостей: 4
Пользователей: 0
links

Copyright MyCorp © 2025