PXE boot

From EIK wiki

Sissejuhatus

Selles juhendis seadistame PXE boot serveri koos vajalike komponentidega, mis võimaldab meil kiiresti ilma bootivat füüsilist meediat omamata, linux operatsioonisüsteemi üle võrgu paigaldada või käivitada. Eesmärk on luua menüüga PXE kus oleks võimalik bootida erinevaid linuxi ditributsiooni installatsioone. Loomulikult siit edasi minna võib panna bootima veel, thinmanageri (terminali softi) kõvakettata lauaarvutis, memtest või VmWare “Hyperviisori”

Toon näiteid teenuse ülesseseadmiseks paraleelselt nii Fedora Core 14-s kui ka Ubuntu Server 10.10-s.

PXE-st

PXE ehk Pre-Execution Environment, on keskkond arvutite ülesslaadmiseks (bootimiseks) kasutades võrgukaarti. PXE on välja töötatud Inteli poolt ning tema spetsifikatsioon veriooniga 2.1 on avaldatud Inteli ja Systemsoft poolt 20 septembril 1999 (andmed 2011 märts) ning asub aaderssil: http://www.intel.com/design/archives/wfm/downloads/pxespec.htm

Kuidas toimib?

Arvuti käivitamise algfaasis küsib võrgukaart DHCP ga omale Ip aadressi ning informatsiooni sellekohta (DHCP parameeter) millisel IP-l PXE käivitusserver asub. Peale vastuse saamist küsitakse serverilt network bootstrap program (NBP[1]) faili asukoht, mis laetakse arvuti muut mällu (RAM) kasutatdes TFTP-d, ning lõpuks käivitatakse.

Vajalikud komponendid.

Toimimise alt on näha, et asja käitamiseks on kindlasti vaja järgmiseit kahte põhiteenust: DHCP ja TFTP - Trivial File Transfer Protocol Network bootstrap programmi: PXELINUX - Linuxi algkäivitamiseks võrguserverist kasutades võrgukaatri mis vastab Intel PXE standardile Hilisemaks installimiseks (ei ole hetkel selle juhendi osa): NFS, FTP, HTTP


Tähelepanek:

Selleks et oleks võimalik kasutada kopeerimist ja asetamist näidetest, tuleb Serveri installi käigus anda masinale staatiline IP aadress 192.168.100.2 võrgust 192.168.100.0/24,

Põhikomponentide paigaldamine ja nende seadistamine.

>> Kõik järgmised tegevused tuleb juur (root) kasutajaõigustes teha. <<


DHCP

Kõige aluseks on meil automaatne IP-aadressite ja vajalike parameetrite andmine PXE seadmele, mida annb meil DHCP server. Täpsem juhis wikis DHCP kohta asub aadressil (https://wiki.itcollege.ee/index.php/DHCP)

Install

Fedora:

yum install dhcp

Ubuntu server: https://wiki.itcollege.ee/index.php/Apt

 apt-get install dhcp3-server

Seadistamine

Seadistame DHCP serveri võrgus 192.168.100.0/24 (255.255.255.0) jagama IP aadresse 192.168.100.100 kuni 192.168.100.110.

Fedora:

nano /etc/dhcp/dhcpd.conf

Ubuntu server:

nano /etc/dhcp3/dhcpd.conf

dhcpd.conf

 allow booting;
 allow bootp;

 subnet 192.168.100.0 netmask 255.255.255.0 {

   # IP aadressite piirkond mida server jagab The range of IP addresses the server
   # DHCP klientidele k2ivitusel
   range 192.168.100.100 192.168.100.110;

   # M22rame aja kui kaua klient oma IP aadressi v6ib hoida
   default-lease-time 86400;
   max-lease-time 86400;

   # Vaikelyys (gateway)
   option routers 192.168.100.1;

   # Don't forward DHCP requests from this
   # NIC interface to any other NIC interfaces
   option ip-forwarding off;

   # broadcast address ja subnet mask
   option broadcast-address 192.168.100.255;
   option subnet-mask 255.255.255.0;

   # Set the NTP ajaserver DHCP klientidele
   # option ntp-servers 192.168.100.1;

    # Set the DNS server to be used by the DHCP clients
   option domain-name-servers 192.168.100.1;

   # PXE-seadistuse osa
   # serveri ip kus jookseb TFTP ehk on meie PXE server
   next-server 192.168.100.2;
   filename "pxelinux.0"; #  see on parameeter kus nimetame et millist NBP-d kasutatakse
   option bootfile-name "pxelinux.0";
 }
 # subneti l6pp

Lisa DHCP options-ite kohta saab lugeda manualist.

man dhcp-options

Taaskäivitame DHCP serveri, et tuleks uus seadistus peale.

Ubuntu

service dhcp3-server restart

Fedora

service dhcpd restart

Et asjad toimiksid, on vaja lubada tulemüüril teatud TFTP ja DHCP võrguliiklus. (dhcp - UDP port 67 ja 68, tftp - UDP port 69) Ehk on vaja iptablesisse teha vajalikud augud või lihtsam kuid samas ebaturvalisem variant on iptables valja lülitada.

Täpsem juhis IPtabelsi muutmiseks Iptables

TFTP

Selleks, et võrgukaart saaks kätte pxelinux.0 (NBP programmi) ja seadistuse on meil vaja paigaldada ja seadistada TFTP teenus. Selleks kasutame H. Peter Anvin tftp (tftpd-hpa) tarkvara.

Paigaldamine

Fedora:

yum install tftp-server

Ubuntu server:

apt-get install tftpd-hpa


Seadistamine

Kõigepealt tuleks alustada kausta tegemisega kus hakatakse pxe jaoks vajalike boot faile ja NBP-d hoidma. (fedora installis tehakse vastav kaust juba tftpd installil ajal asukohaga /var/lib/tftpboot ära) näiteks: (asukoha võib vabalt valida samas tuleb seda tähele panna kui hakkate tftpd seadistama)


Fedora:

Et tftpd server käima läheks, on vaja xinetd teenuses lubada omakorda tftp teenus. Selleks aga tuleb xinet.d confi failis asendada disabled=yes, disabled=no.

nano /etc/xinetd.d/tftpd

tftpd

 service tftp
 {
       socket_type             = dgram
       protocol                = udp
       wait                    = yes
       user                    = root
       server                  = /usr/sbin/in.tftpd
       server_args             = -s /var/lib/tftpboot
       disable                 = yes <---- muuda no
       per_source              = 11
       cps                     = 100 2
       flags                   = IPv4
 }

Restardime xinetd teenuse.

service xinetd restart

Ubuntu

Vaatame korra vaikekonfiguratsiooni, sealt näeme millisest kaustast annab tftp boot failid (vaikeseadistuse peask olema auskoht /var/lib/tftpboot)

cat /etc/default/tftpd-hpa

Kontrollime kas teenus juba ei käi.

status tftpd-hpa

Kui teenus ei käi käivitame tftp-hpa teenuse.

service tftpd-hpa start

PXE “paigaldamine”

Eelnevalt oleks mõistlik tutvuda probleemse riistavaraga, millega võib tekkida pxelinuxil probleeme. http://syslinux.zytor.com/wiki/index.php/Hardware_Compatibility

pxelinux.0

1. Esmalt tuleb paigaldada tftpd confis määratud kausta pxelinux.0 ehk NBP programmi fail, mille saame laadida kernel.org-ist: http://www.kernel.org/pub/linux/utils/boot/syslinux/ Selle juurkaustas on syslinuxi viimane versioon ning vanemaid versioone võib leida vastavalt alamkaustadest mis on nimedega 1.xx või 2.xx jne.

Antud juhend on tehtud syslinux versioon 4.03-ga, vajadusel võib laadida ka uuema versiooni kui see on olemas.

Laeme syslinuxi verioon 4.03 tmp kausta.

cd /tmp
wget http://www.kernel.org/pub/linux/utils/boot/syslinux/4.xx/syslinux-4.03.tar.bz2

Kui wget peaks systeemist puuduma, saab selle paigaldada järgmiselt.

Fedora:

yum install wget

Ubuntu server:

apt-get install wget


Pakime allalaetud faili lahti:

tar -jxvf syslinux-4.03.tar.bz2

Ning kopeerimie pxelinux.0 faili /var/lib/tftpboot kausta:

cp /tmp/syslinux-4.03/core/pxelinux.0 /var/lib/tftpboot/

Nüüdseks oleme saanud suure põhitüki paika. Järgmisena loome vajaliku seade failide kausta, ja teeme menüüd, ning paneme erinevate linux-i pakkide bootimiseks vajalikud komponendid paika.

Tekitame kausta /var/lib/tftpboot omakorda alamkausta pxelinux.cfg, mis hakab hoidma meil konfiguratsooni faile.

mkdir /var/lib/tftpboot/pxelinux.cfg

PXELINUX (pxelinux.0) otsib pxelinux.cfg kaustast järgmiselt conf faile.

  • ARP tüübi ja oma mac aadressijärgi n2it. (ARP type 1) aadressiga 88:99:AA:BB:CC:DD otsib faili nimega 01-88-99-aa-bb-cc-dd.
  • oma IP hex koodi järgi näit. 192.0.2.91 -> C000025B
  • Ja lõpuks otsib default faili. (mis kehtib siis k2igile)

Meie kasutame selles juhendis default faili mida otsitakse kõige viimasena. Selline otsimine võimaldab erinevale riistvarale erinevaid seadistusi jagada.


Kopeerime eelnevalt allalaetud ja lahtipakitud syslinuxi kaustast menüü käivituseks vajaliku faili ning seadistame esmase menüü.

cp /tmp/syslinux-4.03/com32/menu/menu.c32 /var/lib/tftpboot/

Seadistamine Ubuntu serveri ja Fedora 14 core installikad menüüs. Selleks loome endajaoks arusaadav kataloogistruktuuri tftpboot kausta.

./menu/ <-- eelkõige menyy komponentide hoidmise jaoks
./ubuntu/
./ubuntu/server/10_10/64
./ubuntu/server/10_10/x86
./fedora/
./fedora/14/64
./fedora/14/x86
cd /var/lib/tftpboot
mkdir -p ./menu/ ./ubuntu/server/10_10/64 ./ubuntu/server/10_10/x86 ./fedora/14/64 ./fedora/14/x86

Kopeerime ISOdest PXE jaoks vmlinuz ja initrd.img failid vastavatesse kaustadesse.


T2HELEPANEK: Peab kasutama nende distro (paketide) versiooni vmlinuz ja initrd.img faile mida on plaanis juurutama hakata.


Alustame Ubuntu Serveri failide kopeerimisega. Kõigepealt ühendame (moundime) allalaetud iso järgmise käsuga: ISO mountimine

mount -o loop disk1.iso /mnt/ISO

disk1.iso on allalaetud faili nimi. kopeerime vajalikud failid eelnevalt valmistatud kaustadesse.

cp install/netboot/ubuntu-installer/amd64/* /var/lib/tftpboot/ubuntu/server/10_10/64/

Nyyd kopeerime Feodra Image ja vmlinuzi failid sarnaselt Ubuntu omadega.

Menüü

Järgmisena seadistame menüü sarnase struktuuriga nagu seda on kaustade struktuur.

Loome conf faili ilusa menyy milles on lihtne navigeerida struktuur mille loome menüüdega on järgmine:

Ubuntu
-- Server
---- 10.10
Fedora
--Fedora Core 14

Menüüle on võimalik määrata ka välimus. Seadistame välimuse

nano menu/graphics.conf

graphics.conf

 menu color tabmsg 37;40      #80ffffff #00000000
 menu color hotsel 30;47      #40000000 #20ffffff
 menu color sel 30;47      #40000000 #20ffffff
 menu color scrollbar 30;47      #40000000 #20ffffff
 MENU MASTER PASSWD jalgratas
 MENU PASSWORDMARGIN 26
 MENU ROWS 6
 MENU TABMSGROW 15
 MENU CMDLINEROW 15
 MENU ENDROW 24
 MENU PASSWORDROW 12
 MENU TIMEOUTROW 13
 MENU VSHIFT 6
 MENU PASSPROMPT Sisesta parool:
 NOESCAPE 1
 ALLOWOPTIONS 0


1. Kõigepealt seadistame ära peamenyy, mis asub pxelinux.cfg/default failis.

Peamenyy
nano ./pxelinux.cfg/default

default

 default menu.c32
 prompt 0

 menu title PXE menyy
 menu INCLUDE menu/graphics.conf
 MENU AUTOBOOT K2ivitame systeemi lokaalselt kettalt # sekundi p2rast

 label bootlocal
 menu label ^K2ivita Kettalt
 menu default
 localboot 0
 timeout 80
 TOTALTIMEOUT 9000

 LABEL Ubuntu
  MENU LABEL ^Ubuntu
  KERNEL menu.c32
  APPEND menu/graphics.conf menu/ubuntu.menu

 LABEL Fedora
  MENU LABEL ^Fedora
  KERNEL menu.c32
  APPEND menu/graphics.conf menu/fedora.menu


2. Loome alamenüüd Fedorale ja Ubuntule failidesse fedora.menu ja ubuntu.menu

Ubuntule

Ubuntu Valikud
nano ./menu/ubuntu.menu

ubuntu.menu

 MENU TITLE Ubuntu
  LABEL Tagasi
    MENU LABEL <-- ^Tagasi
    KERNEL menu.c32
    APPEND pxelinux.cfg/default
  LABEL Ubuntu Server
    MENU LABEL ^Ubuntu Server
    KERNEL menu.c32
    APPEND menu/graphics.conf menu/ubuntu_server.menu

Fedorale

Fedora Valik
nano menu/fedora.menu

fedora.menu

MENU TITLE Fedora   
 LABEL Tagasi
   MENU LABEL <-- ^Tagasi
   KERNEL menu.c32
   APPEND pxelinux.cfg/default
 LABEL Ubuntu Core 14
   MENU LABEL ^Fedora Core 14
   KERNEL menu.c32
   APPEND menu/graphics.conf menu/fedora_14.menu


3. Nendele omakorda veel alammenüüd (kuna Ubuntul on olemas nii Server kui Desktop siis ubuntul saab olema omakorda veel versiooni alammenüü erinevalt fedorast)

Ubuntu Server
nano menu/ubuntu_server.menu

ubuntu_server.menu

MENU TITLE Ubuntu Server
 LABEL Tagasi   
   MENU LABEL <-- ^Tagasi
   KERNEL menu.c32
   APPEND menu/ubuntu.menu
 LABEL Ubuntu Server 10.10
   MENU LABEL ^Ubuntu Server 10.10
   KERNEL menu.c32
   APPEND menu/graphics.conf menu/ubuntu_server_10_10.menu
Fedora Valik
nano menu/fedora_14.menu

fedora_14.menu

 MENU TITLE Fedora 14
  LABEL Tagasi
    MENU LABEL <-- ^Tagasi
    KERNEL menu.c32
    APPEND menu/fedora.menu
 LABEL Fedora Core 14 64bit
    MENU LABEL ^Fedora Core 14 64bit
    KERNEL fedora/14/64/vmlinuz
    APPEND initrd=fedora/14/64/initrd.img


4. Viimaseks Ubuntu erinevate versioonide osa

Fedora Valik
nano ubuntu_server_10_10.menu

ubuntu_server_10_10.menu

 MENU TITLE Ubuntu Server 10.10 Install
  LABEL Tagasi   
    MENU LABEL <-- ^Tagasi
    KERNEL menu.c32
    APPEND menu/ubuntu_server.menu
 LABEL Ubuntu Server 10.10 64bit
   MENU label ^Ubuntu Server 10.10 64bit
   KERNEL ubuntu/server/10_10/64/linux
   APPEND vga=788 initrd=ubuntu/server/10_10/64/initrd.gz --
 LABEL Ubuntu Server 10.10 64bit cli
   MENU label ^Ubuntu Server 10.10 64bit cli
   KERNEL ubuntu/server/10_10/64/linux
   APPEND tasks=standard pkgsel/language-pack-patterns= pkgsel/install-language-support=false vga=788 initrd=ubuntu/server/10_10/64/initrd.gz
 LABEL Ubuntu Server 10.10 64 EXPERT
   MENU LABEL ^Ubuntu Server 10.10 64bit EXPERT
   KERNEL ubuntu/server/10_10/64/linux
   APPEND priority=low vga=788 initrd=ubuntu/server/10_10/64/initrd.gz --
 LABEL Ubuntu Server 10.10 64 cli EXPERT
   MENU LABEL ^Ubuntu Server 10.10 64bit cli EXPERT
   KERNEL ubuntu/server/10_10/64/linux
   APPEND tasks=standard pkgsel/language-pack-patterns= pkgsel/install-language-support=false priority=low vga=788 initrd=ubuntu/server/10_10/64/initrd.gz --
 LABEL Ubuntu Server 10.10 x86
  MENU LABEL ^Ubuntu Server 10.10 32bit (suunab tagasi)
  KERNEL menu.c32
  APPEND menu/graphics.conf menu/ubuntu_server.menu

Valmis! käivitamisel (bootimisel) peaks tulema ilus ja arusaadavate valikutega menüü kuskohast on siis võimalik lihtsalt sobiv valik teha.

Varundamine

Varundamisek on vaja teha kõigist olulistest seadistusfailidest ja kaustadest tagavarakoopiad.

Koopia tuleb teha tervest /var/lib/tftpboot kaustast. Mis sisaldab menyy elemente ja pxelinuxi osi Samuti tuleb teha koopia /etc/xinetd.d/tftpd ja siis vastavlt Fedoras /etc/dhcp/dhcpd.conf ja Ubuntus /etc/dhcp3/dhcpd.conf failidest.

Taastamine

Taastamine toimub vastupidi varundamisele.

Kõigepealt tuleb paigaldada vajalikud komponendid (vaata juhendi algustest peatükki "Põhikomponentide paigaldamine ja nende seadistamine"), ning kopeerida varundamisel tehtud failid ja kaustada järgmiselt:

/var/lib/ kausta tftpboot kaust

/etc/xinetd.d/ kausta tftpd fail

Ja viimaseks dhcpd.conf fail astavalt Fedoras /etc/dhcp/ ja Ubuntus /etc/dhcp3/ kausta

Viited

Autor

Karel Niine

AK22

Ver 0.9