Меню Рубрики

Установка centos сети pxe

admin_d

Заметки сисадмина

В серверных всё чаще попадаются сервера без CD/DVD-приводов. Время от времени на них нужно ставить операционную систему, и в этом может сильно помочь установка по сети. Вы просто включаете сервер и начинаете установку. Сетевая карта должна поддерживать технологию PXE. PXE – Pre-Boot Execution Environment – позволяет осуществлять загрузку по сети.

Но PXE недостаточно для полного счастья, технология, которая позволит полностью автоматизировать установку – kickstart (разработчиком которой является компания Red Hat). Суть её проста – мы заранее составляем файл, содержащий значения всех опций, которые могут понадобиться в ходе установки. Более того, мы можем выполнять свои скрипты до установки и после, тем самым задавая настройки будущей ОС.

Установка с помощью kickstart типового комплекта Linux занимает 5-7 минут.

Для Install-сервера нужно 3 службы и 1 пакет.

  • DHCP предоставляет клиентам сетевые реквизиты
  • TFTP – простой способ предоставить доступ к файлам по сети
  • Syslinux содержит загрузчик pxelinux.0 и некоторые другие файлы
  • NFS предоставляет доступ к файловой системе по сети

Процесс установки можно разбить на этапы:

  1. pxe – прошивка pxe начинает свою работу, когда мы в BIOS выставляем установку по сети, или когда на HDD не найдена MBR.
  2. DHCP фаза 1 – клиент получает сетевые реквизиты и адрес tftp-сервера, а также название файла-загрузчика (pxelinux.0). По умолчанию TFTP-сервер – это DHCP-сервер.
  3. TFTP – загрузчик pxelinux.0 обращается к TFTP-серверу и запрашивает у него initrd.img (Initial RAM disk, временная файловая система), ядро Linux.
  4. Kernel – передача управления ядру Linux.
  5. DHCP фаза 2 – ядро Linux делает запрос к DHCP-серверу, чтобы получить сетевые реквизиты и в дальнейшем адрес NFS-сервера.
  6. NFS – этап, когда монтируется NFS-раздел
  7. init – происходит запуск /sbin/init, и управление передаётся ему. Init – это главный процесс в системе, другие процессы являются дочерними процессами init.

В свободном изложении:

DHCP-сервер ожидает bootp-запросы в своей сети; после того, как он получает запрос, он смотрит MAC-адрес источника, и если о таком MAC-адресе у него имеется соответствующая запись, он начинает с ним работать. DHCP-сервер выдаёт клиенту сетевые реквизиты (IP-адрес, gateway, DNS-сервера. ) и по протоколу TFTP, с помощью TFTP-сервера, отправляет загрузочный образ pxelinux.0. Этого образа хватает, чтобы вывести меню выбора ОС.

Выбрав ОС, мы начинаем загрузку ядра и начинаем инсталляцию, в процессе выбрав источник установки — NFS-сервер. На NFS-сервер нужно выложить подготовленный контент будущей операционной системы и убедиться, что соответствующие каталоги экспортированы.

Устанавливаем DHCPD и добавляем его в автозагрузку:
# yum -y install dhcp
# chkconfig dhcpd on

Файл /etc/dhcpd.conf делаем такой:

ddns-update-style interim;
ignore client-updates;
subnet 192.168.146.0 netmask 255.255.255.0 <
option routers 192.168.146.1;
option subnet-mask 255.255.255.0;
option domain-name «domain.local»;
option domain-name-servers 192.168.146.1;
default-lease-time 21600;
max-lease-time 43200;
Allow bootp;
Allow booting;
host unixbox <
hardware ethernet 00:0c:29:77:9c:9c;
fixed-address 192.168.146.128;
filename «pxelinux.0»;
option host-name «unixbox»;
next-server 192.168.146.1;
>
>

Запускаем DHCPD или перезагружаем, если он был запущен:
# service dhcpd restart

Отключаем файрвол, включённый по умолчанию (иначе на целевом компьютере при загрузке будет ошибка "ICMP Destination unreachable (Host administratively prohibited)"):
# service iptables stop
# chkconfig iptables off

Устанавливаем пакет tftp-server из репозитория:
# yum -y install tftp-server

Теперь необходимо включить tftp в конфигурацию xinetd, для этого в файле /etc/xinetd.d/tftp меняем “disable = yes” на “disable = no” и включаем xinetd:
# service xinetd start

Проверяем, что порт tftp-сервера прослушивается (tftp работает на порту 69):
# netstat -nlp | grep :69
udp 0 0 0.0.0.0:69 0.0.0.0:* 3105/xinetd

Syslinux

Пакет содержит набор файлов для загрузки по сети. Нам нужны pxelinux.0, который как загрузочный образ мы будем отдавать через DHCP, и menu.c32, с помощью которого будет рисоваться более привлекательное меню пользователя. (Для CentOS 4 обновлённый syslinux с зависимостями надо скачать с rpmfind.net.)

Читайте также:  Установка видеорегистратора скрытой установки

# cp $(rpm -ql syslinux | grep menu.c32) /tftpboot/
# cp $(rpm -ql syslinux | grep pxelinux.0) /tftpboot/

По умолчанию в системе, скорее всего, есть NFS, если нет, то поставьте с помощью yum.
# chkconfig nfs on

В файл /etc/exports добавляем запись:
echo “/var/install-server/ *(ro,no_root_squash)” >> /etc/exports

Запускаем nfs-сервер:
# service nfs start

Проверяем, что каталог экспортирован:
# exportfs
/var/install-server

Создаём структуру tftp-сервера, добавляем контент на сервер:
# mkdir -p /tftpboot/# mkdir -p /var/install-server/centos5_x86

Монтируем наш DVD с CentOS 5 и закачиваем содержимое в /var/install-server/centos5_x86:
# mount /dev/cdrom /mnt/
# cp -r /mnt/* /var/install-server/centos5_x86/
# cp /var/install-server/centos5_x86/images/p xeboot/* /tftpboot/centos5_x86/

В каталоге /tftpboot/pxelinux.cfg создаём файл default и заполняем его как показано ниже:
default menu.c32
menu title Linux Install Server. Please choose OS to install.
prompt 0
timeout 100
label CentOS 5 x86 Custom install
kernel /centos5_x86/vmlinuz
append initrd=/centos52_x86/initrd.img
label Quit
localboot 0

Устанавливаем ОС по сети

После всех манипуляций, описанных выше, можем приступить к установке ОС. Стартуем нашу машину с MAC-адресом 00:0c:29:77:9c:9c, включив в BIOS загрузку по сети. Когда начнётся установка, всё делаем стандартным образом, кроме того, что в списке, откуда ставить ОС, нужно выбрать NFS, и далее, когда попросят, указать:
NFS server name : 192.168.146.1
CentOS directory: /var/install-server/centos5_x86

Дальше устанавливаем ОС и пользуемся на здоровье.

Автоматизация установки с помощью Kickstart

Для автоматизации нужно создать файл, содержащий всю нужную информацию, которая может потребоваться в процессе установки. Такой файл создаётся программой system-config-kickstart (GUI tool) в любой CentOS с X Window:
# yum -y install system-config-kickstart
# system-config-kickstart

После того, как мы создали файл с помощью system-config-kickstart, его нужно перенести на Install-сервер и сделать доступным по одному из протоколов HTTP, NFS или FTP. Поскольку в работе Install-сервера активно используется NFS, то и будем использовать её.

В моём случае kickstart-файл лежит в /var/install-server/centos5_x86/centos5_ x86_ks.cfg.

В файл /tftpboot/pxelinux.cfg/default нужно всего лишь добавить директиву ks с указанием местоположения kickstart-файла. Пример с kickstart-файлом:
default menu.c32
menu title Linux Install Server. Please choose OS to install.
prompt 0
timeout 100
label CentOS 5 x86 Custom install
kernel /centos5_x86/vmlinuz
append initrd=/centos5_x86/initrd.img
label CentOS 5 x86 Kickstart Install
kernel /centos52_x86/vmlinuz
append initrd=/centos5_x86/initrd.img ks=nfs:192.168.146.1:/var/install-server/c entos5_x86/centos5_x86_ks.cfg
label Quit
localboot 0

Теперь, выбрав «CentOS 5 x86 Kickstart Install» в меню выбора ОС, нам останется только подождать сервера с установленной на нём ОС.

Ниже пример моего Kickstart-файла. Мне захотелось, чтобы в установленной ОС в настройках sshd была опция «PermitRootLogin yes». Kickstart-файл позволяет не только задавать параметры установки ОС, но и выполнять скрипты, до инсталляции (%pre) и после (%post). Таким образом можно написать массу скриптов по тюнингу и за 5-10 минут инсталляции получить полностью готовую ОС.

#platform=x86, AMD64, or Intel EM64T
# System authorization information
auth --useshadow --enablemd5
# System bootloader configuration
bootloader --location=mbr
# Clear the Master Boot Record
zerombr
# Partition clearing information
clearpart --all --initlabel
# Use text mode install
text
# Firewall configuration
firewall --disabled
# Run the Setup Agent on first boot
firstboot --disable
# System keyboard
keyboard us
# System language
lang en_US
# Installation logging level
logging --level=info
# Use NFS installation media
nfs --server=192.168.146.1 --dir=/var/install-server/centos5_x86
# Network information
network --bootproto=dhcp --device=eth0 --onboot=on
#Root password
rootpw --iscrypted $1$Bz09jb2I$hfzh2vApqMjG0sEPsAwNr/
# SELinux configuration
selinux --disabled
# Do not configure the X Window System
skipx
# System timezone
timezone Europe/Moscow
# Install OS instead of upgrade
install
# Disk partitioning information
part swap --bytes-per-inode=4096 --fstype=”swap” --size=512
part / --bytes-per-inode=4096 --fstype=”ext3” --grow --size=1

%post --interp /bin/bash
PATH=/somework
/bin/mkdir $PATH
/bin/sed -e ‘s/#PermitRootLogin yes/PermitRootLogin yes/g’ /etc/ssh/sshd_config > $PATH/sshd_config_edited
/bin/cp $PATH/sshd_config_edited /etc/ssh/sshd_config
/bin/rm -rf $PATH

Читайте также:  Установка гбо додж неон

источник

Configure PXE (Network Boot) installation Server on CentOS 7.x

by Pradeep Kumar · Updated August 3, 2017

PXE (Preboot eXecution Environment) Server allows unattended or automated OS installation over the Network.The main benefit of pxe is that we don’t need any bootable drive to boot OS(Operating system) and we do not need to to burn any ISO file into DVD or usb device.

Once the PXE server is configured we can install hundreds of System at the same time over the network.As it works on Client-Server architecture, to get the OS installation on clients, boot the clients via PXE option.

In this article i am going to setup PXE Server on CentOS 7.x and then will try to install OS on the client using pxe boot.

Below are details of my Setup :

  • Server IP = 172.168.1.11
  • Host name = pxe.example.com
  • OS = CentOS 7.x
  • SELinux = enabled
  • Firewall = enabled

Step:1 Install required packages for PXE Setup

To install and Configure pxe server on centos 7.x we need the following packages “dhcp, tftp-server, ftp server(vsftpd), xinted”. Open the terminal execute beneath command :

Step:2 Configure DHCP Server for PXE

When we install dhcp package then a sample configuration file of dhcp server is created at “/usr/share/doc/dhcp*/dhcpd.conf.example“, though the configuration file of dhcp is at ‘/etc/dhcp/dhcpd.conf’.

Copy the following lines into the file ‘/etc/dhcp/dhcpd.conf’, replace the ip subnet and other details as per your environment.

Step:3 Edit and Config tftp server (/etc/xinetd.d/tftp)

TFTP (Trivial File Transfer Protocol ) is used to transfer files from data server to its clients without any kind of authentication. In case of PXE server setup tftp is used for bootstrap loading. To config tftp server, edit its configuration file ‘ /etc/xinetd.d/tftp’, change the parameter ‘ disable = yes ‘ to ‘ disable = no’ and leave the other parameters as it is.

All the network boot related files are to be placed in tftp root directory “/var/lib/tftpboot

Run the following commands to copy required network boot files in ‘/var/lib/tftpboot/’

Step:4 Mount CentOS 7.x ISO file and copy its contents to local ftp server

In my case i have already downloaded CentOS 7.x iso file on my PXE Server. Run the beneath commands to mount iso file and then copy its contents in ftp server’s directory ‘/var/ftp/pub

Copy Kernel file (vmlimz) and initrd file from mounted iso file to ‘/var/lib/tftpboot/networkboot/

Now you can unmount the iso file using ‘umount’ command

Step:5 Create kickStart & PXE menu file.

Before creating kickstart file, let’s first create the root password in an encrypted string because we will using that encrypted password string in kickstart file.

System default kickstart file is placed under /root with name ‘anaconda-ks.cfg’. We will be creating a new kickstart under the folder /var/ftp/pub with the name ‘centos7.cfg

Copy the following content into the new kickstart file. Please modify the kickstart file as per your needs.

Create a PXE menu file (/var/lib/tftpboot/pxelinux.cfg/default), copy the following contents into the pxe menu file.

Step:6 Start and enable xinetd, dhcp and vsftpd service.

Use the beneath commands to start and enable xinetd, dhcp and vsftpd.

In Case SELinux is enabled, then set the following selinux rule for ftp server.

Open the ports in the OS firewall using following firewall-cmd commands

Читайте также:  Установка подложных номерных знаков статья

Up to this point, PXE server installation and configuration is completed now.

Step:7 Boot the clients with pxe boot option.

As can see above that installation has been started with any human interaction. I hope you enjoy the installation and configuration of PXE server. Please share your feedback and comments.

  • Next story How to Access Google Drive in Ubuntu 16.04 LTS
  • Previous story 11 Reason Why To Migrate From Windows Desktop To Linux Desktop

23 Responses

I was getting a Connection Timed Out when connecting to my PXE server. The instructions don’t specify to start and enable tftp. Doing that fixed that issue!

источник

Как установить загрузочный PXE сервер для установки Windows, Linux, ESXI 5.5-7 часть. Добавляем CentOS

Как установить загрузочный PXE сервер для установки Windows, Linux, ESXI 5.5-7 часть. Добавляем CentOS

Как установить загрузочный PXE сервер для установки Windows, Linux, ESXI 5.5-7 часть. Добавляем CentOS-01

Всем привет продолжаем настройку нашего PXE server, в 6 части мы рассмотрели как установить FreeBSD по сети, сегодня мы разберем как установить CentOS 6 и CentOS 7 через PXE сервер. Для выполнения поставленной задачи у вас должны быть скачаны нужные вам релизы CentOS.

Как и с другими ОС нужно создать отдельную папку в /srv/tftp, назовем ее centos.

Как установить загрузочный PXE сервер для установки Windows, Linux, ESXI 5.5-7 часть. Добавляем CentOS-02

В папке centos создадим несколько папок с именами 6 и 7, на будущее можно и 8.

Как установить загрузочный PXE сервер для установки Windows, Linux, ESXI 5.5-7 часть. Добавляем CentOS-03

Теперь нам нужно поместить в эти папки загрузочные файлы, найти которые можно на установочном диске, если его нет то скачать можно у меня с яндекс диска . Диски необходимые нам называются initrd.img и vmlinuz

Как установить загрузочный PXE сервер для установки Windows, Linux, ESXI 5.5-7 часть. Добавляем CentOS-05

копируем их на наш сервер PXE.

Как установить загрузочный PXE сервер для установки Windows, Linux, ESXI 5.5-7 часть. Добавляем CentOS-06

Далее нужно подправить конфиг /srv/tftp/pxelinux.cfg/linux и добавить в него вот такие вот строки

LABEL CentOS-7-x64
kernel centos/7/vmlinuz
append initrd=centos/7/initrd.img method=http://mirror.mirohost.net/centos/7/os/x86_64/ devfs=nomount ksdevice=link ramdisk_size=100000

LABEL CentOS-6-x64
kernel centos/6/vmlinuz
append initrd=centos/6/initrd.img method=http://mirror.mirohost.net/centos/6/os/x86_64/ devfs=nomount ksdevice=link ramdisk_size=100000

Как установить загрузочный PXE сервер для установки Windows, Linux, ESXI 5.5-7 часть. Добавляем CentOS-07

Пробуем с клиентской машины загрузить CentOS по PXE, выбираем для примера CentOS 7.

Как установить загрузочный PXE сервер для установки Windows, Linux, ESXI 5.5-7 часть. Добавляем CentOS-08

Пошла загрузка, но мы получили вот такую вот ошибку что mirror.mirohost.net не доступен открываем его на проксе.

Как установить загрузочный PXE сервер для установки Windows, Linux, ESXI 5.5-7 часть. Добавляем CentOS-09

После открытия видим, что начинается скачивание пакетов.

Как установить загрузочный PXE сервер для установки Windows, Linux, ESXI 5.5-7 часть. Добавляем CentOS-10

Появилось окно установки CentOS 7.

Как установить загрузочный PXE сервер для установки Windows, Linux, ESXI 5.5-7 часть. Добавляем CentOS-11

Проверяем CentOS 6, выбираем язык начнется докачивание пакетов.

Как установить загрузочный PXE сервер для установки Windows, Linux, ESXI 5.5-7 часть. Добавляем CentOS-12

Начинается установка CentOS 6.

Как установить загрузочный PXE сервер для установки Windows, Linux, ESXI 5.5-7 часть. Добавляем CentOS-13

В следующих статьях я расскажу как сделать свой локальный репозиторий CentOS. Вот так вот просто установить CentOS 6 и CentOS 7 по сети с помощью нашего PXE server. В 8 части я расскажу как добавить на ваш сервер утилиту проверки памяти Memtest86+.

источник

Добавить комментарий