The OpenNET Project / Index page

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

FreeBSD Jumpstart руководство. (freebsd jumpstart install boot pxe)


<< Предыдущая ИНДЕКС Исправить src / Печать Следующая >>
Ключевые слова: freebsd, jumpstart, install, boot, pxe,  (найти похожие документы)
From: Евгений Мерлинский <bleno@ukr.net.> Newsgroups: email Date: Mon, 8 Feb 2008 14:31:37 +0000 (UTC) Subject: FreeBSD Jumpstart руководство. Хочу отметить, что я считаю себя скорее не автором, а творческим переосмыслителем материалов, упоминающихся в конце данной статьи. Данная статья не претендует на первичность и безусловную правильность. Это просто попытка описать практическое решение задачи автоматизации проуесса установки FreeBSD. Задача: ------- Организовать процесс полностью автоматической установки операционной системы 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

<< Предыдущая ИНДЕКС Исправить src / Печать Следующая >>

Обсуждение [ RSS ]
  • 1.1, treblereel (?), 16:20, 08/02/2008 [ответить]  
  • +/
    спасибо
     
  • 1.2, Дмитрий Ю. Карпов (?), 17:43, 08/02/2008 [ответить]  
  • +/
    > Копиируем содержимое cdrom-а с дистрибутивом в /tftpboot.
    > Для этого лучше воспользоваться tar-ом:
    > ...
    > Это сбережет место на диске.

    В чём разница между копированием программами cp и tar?

     
     
  • 2.3, RedRat (ok), 17:53, 08/02/2008 [^] [^^] [^^^] [ответить]  
  • +/
    tar сохраняет симлинки.
     
     
  • 3.5, Аноним (-), 06:59, 09/02/2008 [^] [^^] [^^^] [ответить]  
  • +/
    не только, хардлинки, acl и еще много чего
    например, /rescue почти весь состоит из хардлинков
     

  • 1.4, Dorlas (??), 20:33, 08/02/2008 [ответить]  
  • +/
    А Dump вообще сохраняет все что можно :)

    Статья классная - спасибо - расширили кругозор :)

     
     
  • 2.6, Аноним (-), 07:01, 09/02/2008 [^] [^^] [^^^] [ответить]  
  • +/
    dump/restore не работают на всех ФС в отличие от tar'а. Яркий пример где dump не работает - zfs, у которой своя техника: send/receive
     

  • 1.7, logka (??), 12:07, 09/02/2008 [ответить]  
  • +/
    не ездил никогда на таком велосипеде - но все хотел попробывать.
    Спасибо за статью.
     

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




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

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