czwartek, 26 marca 2015

Sieciowa instalacja dystrybucji Linuks i Windows za pomocą PXE Network Boot Server [RHEL/CentOS7] cz.1

Od kliku dni przeszukiwałem sieć poszukując instrukcji dla poprawnej konfiguracji serwera PXE tak abym mógł za pomocą jednego serwera, udostępniać w firmie do instalacji, różne dystrybucje Linuksa jak i również systemy z rodziny Windows.
Na wielu zagranicznych portalach znalazłem informacje na owy temat, ale na naszej rodzimej scenie niestety o tym cicho, wobec tego poczułem się zobowiązany do wypełnienia tej luki i poczyniłem ten oto poradnik ;)


Zacznijmy od tego co to jest ten cały PXE Server:
Preboot eXecution Envioronment – umożliwia zainstalowanie lub uruchomienie systemu operacyjnego za pomocą sieci komputerowej, co eliminuje konieczność korzystania z nośników CD/DVD lub USB, za pomocą tego rozwiązania możesz uruchomić wiele instalacji tego samego systemu w jednym czasie.

Co będzie potrzebne?
  • Minimalna instalacja CentOS 7
  • Znajomość podstawowych komend z systemów Linux/Unix
  • Około godziny wolnego czasu

Krok 1: Instalacja i konfiguracja DNSMASQ Server


1. Dla profesjonalnych rozwiązań, maszyna na której chcesz uruchomić serwer PXE, powinna mieć ustawiony statyczny adres ip, ale dla tego ćwiczenia, teoretycznie nie potrzebujesz takowego.

Dla wszystkich operacji zakładam że jesteś na koncie z uprawnianiami roota.
Jak się na nie zalogować?

sudo su

Na samym początku konfiguracji powinieneś zainstalować demona DNSMASQ

yum install dnsmasq


Instalacja dnsmasq

2. Plik konfiguracji DNSMASQ jest umieszczony w katalogu /etc, jego składnia dla początkujących może być nieco ciężka dlatego stworzysz nowy plik konfiguracji.

Zanim stworzysz nowy plik, upewnij się że zabezpieczyłeś stary plik dopiero później zabieraj się za stworzenie nowego pliku ;)

mv /etc/dnsmasq.conf /etc/dnsmasq.conf.backup
nano /etc/dnsmasq.conf

3. Poniżej udostępniłem plik konfiguracyjny dnsmasq.conf z mojego serwera, wklej poniższą zawartość do pliku który właśnie stworzyłeś i zmień zawartość tego pliku tak aby była możliwe podobna konfiguracji Twojej sieci.

interface=eno16777736
#bind-interfaces
#domain=
# DHCP range-leases
dhcp-range = eno16777736, 192.168.0.1,192.168.0.253,255.255.255.0
# PXE
dhcp-boot=192.168.0.128
# Geteway
dhcp-option=3,192.168.0.1
# DNS
dhcp-option=6,195.50.140.114
#server=
# Broadcast Addres
dhcp-option=28,192.168.0.255
# NTP Server
#dhcp-option=42,

pxe-prompt="Press F8 for menu.", 60
pxe-service=x86PC, "Install Linux and Windows from network server", pxelinux
enable-tftp
tftp-root=/var/lib/tftpboot


Zawartość pliku dnsmasq.conf

Poniżej wyjaśnię co jest czym w pliku:

interface – nazwa interfejsu sieciowego na którym serwer powinien udostępniać usługę
bind-interfaces – domyślnie opcja jest wyłączona, usuń znak # aby „przypiąć usługę tylko do podanego powyjże interfejsu.
domain – nazwa Twojej domeny.
dhcp-range – podmień obecne adresy na adresację obecną w Twojej sieci.
dhcp-boot – obecny tu adres podmień na adres Twojego serwera.
dhcp-option=3,192.168.0.1 – podmień adres na adres Twojej bramy sieciowej
dhcp-option=6,195.50.140.114 – podmień adres na adres Twojego serwera dhcp
pxe-prompt – zostaw tak jets chyba że chcesz zmieć treść komunikatu
pxe=service – Uzywaj opcji x86PC dla architektur 32 i 64 bitowych, zalecam pozostawienie tego pola tak jak jest.
enable-tftp – uruchamia wbudowany serwer TFTP
tftp-root – lokalizacja plików umożliwiających sieciowe uruchamianie systemów

Krok 2: Instalacja bootloaderów SYSLINUX


4. Wydaj poniższe polecenie aby zainstalować pakiet syslinux niezbędny do sieciowego uruchamiania instalacji.

yum install syslinux

Instalacja pakietu syslinux
 
5. Bootloadery PXE znajdują się w lokalizacji /usr/share/syslinux, zanim skopiujesz je do miejsca gdzie powinny się znajdować, upewnij się że pliki faktycznie znajdują się na serwerze.

ls /usr/share/syslinux

Zawartość katalogu /usr/share/syslinux

Krok 3: Instalacja serwera TFTP


6. Ok, teraz możemy zainstalować serwer TFTP i przenieść bootloadery do katalogu /var/lib/tftpboot dokonując tego poniższymi komendami:

yum install tftp-server
cp -r /usr/share/syslinux/* /var/lib/tftpboot

Instralacja pakietu tftp-server

Krok 4: Konfiguracja ustawień serwera PXE


7. Podstawowa konfiguracja serwera PXE przechowywana jest w pliku default w folderze o nazwie pxelinux.cfg który musi znajdować się w głównym katalogu tftp (określiliśmy jego położenie w pliku konfiguracyjnym dnsmasq.conf, pamiętasz?)
Aby stworzyć plik default musimy na samym początku stworzyć folder, o nazwie pxelinux.cfg, dopiero później tworzymy plik default

mkdir /var/lib/tftpboot/pxelinux.cfg
nano /var/libtftpboot/pxelinux.cfg/default

8. Jeśli wydałeś powyższe komendy wklej do pliku default poniższą treść (to konfiguracja mojego serwera):

default menu
prompt 0
timeout 300
ONTIMEOUT local

menu title ########## PXE Boot Menu ##########

label 1
menu label ^1) Install CentOS 7 x64 with Local Repo
kernel centos7/vmlinuz
append initrd=centos7/initrd.img method=ftp://192.168.0.134/pub/ centos/7/x64 devfs=nomount

label 2
menu label ^2) Install CentOS 7 x64 with http://mirror.centos.org Repo
kernel centos7/vmlinuz
append initrd=centos7/initrd.img method=http://mirror.centos.org/centos/7/os/x86_64/ devfs=nomount ip=dhcp

label 3
menu label ^3) Install CentOS 7 x64 with Local Repo using VNC
kernel centos7/vmlinuz
append  initrd=centos7/initrd.img method=ftp://192.168.0.134/pub/centos/7/x64 devfs=nomount inst.vnc inst.vncpassword=password

label 4
menu label ^4) Installl Windows 7 x32
linux /memdisk
append iso
initrd winpe_x86.iso

label 5
menu label ^5) Install Windows 8 x64
linux /memdisk
append iso
initrd Win8PE_amd64.iso

label 6
menu label ^6) Boot from local drive

Zawartość pliku default

Jak już zapewne zauważyłeś (wierzę że tak ;)) pliki bootujące CentOS 7 znajdują się w katalogu centos7 który znajduje się w głównym katalogu tftp czyli /var/lib/tftpboot/centos7 a repozytorium instalacji CentOS 7 znajduję się na lokalnym serwerze pod adresem ftp://192.168.0.134/pub, natomiast druga opcja z menu pozwala na instalację systemu z oficjalnego repozytorium.
Jeśli chodzi o systemy Windows, sytuacja wygada podobnie, z tym że nie podajemy teraz adresu do miejsca gdzie znajdują się pliki instalacyjne, w tym momencie podajemy jedynie miejsce położenia obrazu WinPE który pełni rolę bootloader dla Windows który musi koniecznie mieścić się w katalogu głównym tftp ( to jak stworzyć obrazy WinPE w drugiej części poradnika )

Krok 5: Dodanie obrazów bootloader do serwera PXE


9. W tym kroku musimy skopiować bootloader z DVD CentOS 7 na serwer, aby tego dokonać musisz zamontować pobrany obraz lub nośnik w systemie, dokonasz tego poniższą komendami:

mount -o loop /dev/cdrom /mnt

Jeśli natomiast nie posiadasz DVD możesz pobrać obraz z sieci i zamontować go w systemie:

wget http://mirrors.xservers.ro/centos/7.0.1406/isos/x86_64/CentOS-7.0-1406-x86_64-DVD.iso
mount -o loop /ścieżka/do/centos-dvd.iso /mnt

10. Zaraz po tym gdy zamontujesz nośnik którąś z powyższych metod, powinniśmy skopiować wcześniej wspomniane już bootloadery:

mkdir /var/lib/tftpboot/centos7
cp /mnt/images/pxeboot/vmlinuz  /var/lib/tftpboot/centos7
cp /mnt/images/pxeboot/initrd.img  /var/lib/tftpboot/centos7

11. Czas na stworzenie lokalnego repozytorium dla instalacji CentOS 7, aby tego dokonać musisz zainstalować serwer ftp, skopiować całą zawartość DVD lub obrazu na dysk i zmienić uprawniena do katalogu w którym będzie znajdować się zawartość nośnika instalacyjnego

yum install vsftpd
mkdir  /var/ftp/pub/centos
mkdir /var/ftp/pub/centos/7
mkdir /var/ftp/pub/centos/7/x64
cp -r /mnt/* /var/ftp/pub/centos/7/x64/
chmod -R 755 /var/ftp/pub

Krok 7: Uruchomienie usług serwera PXE


12. Jeśli z powodzeniem przebrnąłeś przez wszystkie w/w czas na uruchomienie usług niezbędnych do prawidłowego działania serwera PXE, wydaj poniższe polecenia aby uruchomić to co skonfigurowałeś:

systemctl start dnsmasq
systemctl status dnsmasq
systemctl start vsftpd
systemctl status vsftpd
systemctl enable dnsmasq
systemctl enable vsftpd

Uruchamianie usług serwera PXE

Dwa ostatnie polecenia powoduj że przy każdym uruchomieniu serwera usługi uruchamiają sięsayg automatycznie.

Krok 8: Konfiguracja Firewalla i test serwera ftp


13. Aby inne maszyny w Twojej sieci mogły się komunikować z serwerem PXE powinieneś otworzyć kilka portów na serwerze, w tym celu wydaj kilka poniższych poleceń:

firewall-cmd --add-service=ftp --permanent      ## Port 21
firewall-cmd --add-service=dns --permanent      ## Port 53
firewall-cmd --add-service=dhcp --permanent     ## Port 67
firewall-cmd --add-port=69/udp --permanent      ## Port dla TFTP
firewall-cmd --add-port=4011/udp --permanent  ## Port dla ProxyDHCP
firewall-cmd --reload  ## Aby zatwierdzić zmiany

Dodanie wyjątków do zapory sieciowej

14. Aby przetesować serwer ftp, uruchom na komputerze podłączonym do sieci przeglądarkę www i wpisz adres serwera PXE. Podmień adres ip na na adres Twojego serwera.

ftp://192.168.0.128/pub

Zawartość serwera ftp

15. Ostatni krok do zakończenia konfiguracji serwera PXE to odmontowanie zamonotwanego wcześniej nośnika z plikami instalacyjnymi CentOS 7:

umount /mnt

Krok 9: Konfiguracja klienta do bootowania sieciowego.


17. Teraz możesz zająć się konfiguracją klienta na którym chciałbyś przeterstować skonfigurowany serwer PXE, aby tego dokonać, na komputerze fizycznym podłączonym do sieci w której jest serwer PXE, zmień opcje bootowania w biosie tak aby na pierwszym miejscu znajdowała się Toja karta sieciowa.

Poprawność konfigurację możesz również sprawdzić za pomoca maszyny wirtualnej która będzie miała zmostkowane połączone z Twoją siecią, poniżej masz przykład przykładowo skonfigurowanej w VirtualBox, gotowej do rozruchu sieciowego

Konfiguracja VirtualBox 1

Konfiguracja VirtualBox 2

Konfigurację połączenia zmodyfikuj tak aby połączenie było zmostkowane z kartą sieciową która jest podłączona do sieci gdzie dostępny jest serwer PXE.

18. Jeśli już uruchomisz menu serwera PXE, będziesz miał do wybory kilka opcji, jak na tą chwile nie działają jeszcze opcje dla Windows, ale wszystko na ten temat dokładnie opisane jest w drugiej części poradnika.

Rozruch sieciowy za pomocą serwera PXE
Menu serwera PXE

Brawo właśnie skonfigurowałeś serwer PXE pozwalający na sieciową instalację CentOS 7

Dodanie innych dystrybucji jest równie proste jak dodanie CentOS, jeśli masz z czymś kłopot, napisz w komentarzu.

--> Sieciowa instalacja dystrybucji Linuks i Windows za pomocą PXE Network Boot Server [RHEL/CentOS7] cz.2

Brak komentarzy:

Prześlij komentarz