Linux PXE + NFS 1. daļa
Sveiks. Blogā jau rakstīju par to, kā ar Windows servera palīdzību var samērā vienkārši instalēt operētājsistēmu izmantojot lokālo datortīklu. Tā kā sirdī esmu Linux un atvērtā koda piekritējs, būtu tikai godīgi šo pašu lietu apskatīt uz atvērtā koda un Linux bāzes. Pirmkārt, ne visi var atļauties Windows Server licenci, otrkārt, Linux ir daudz pieejamāks un resurstaupīgāks risinājums.
Kā vienmēr, visu darīšu Virtualbox vidē. Lai viss darbotos bez problēmām, nepieciešama virtualbox 6.0.4 versija. Būs nepieciešams virtuāls/fizisks Mikrotik maršrutētājs. Diemžēl “Gamer edišan” maršrutētājs un “TPlinki” šo funkcionalitāti nenodrošina. Protams, var vienmēr pāršūt uz kādu Linux bāzētu OS (tēma kādam no rakstiem?). Un viens servera dators un viens klienta dators. Servera datora virtuālajam HDD ieteicams būt vismaz 20 GB.
Tātad sāksim. Vispirms ir jānokonfigurē Mikrotik maršrutētājs. DHCP serverī ir jānorāda mūsu PXE servera IP adrese, ir jānorāda iestatījumi, boot file atrašanās.
Mikrotik iestatījumi pie IP>DHCP Server> Networks:
next server: 192.168.5.250
bootfile : pxelinux.0
Next server jānorāda sava Debian servera IP. Manā gadījumā tā būs 192.168.5.250 .Tikai atcerieties, turpmākajos soļos Debian serverim būs jāiestata statiska (nemainīga) IP adrese, un tad adresei ir jābūt tai pašai, kas ir norādīta Mikrotik next server sadaļā.
Iestatījumi pie options:
Option Name: boot-file
Option Code: 67
Option Value: "pxelinux.0"
Instalējam Debian minimālo instalāciju. ISO šeit.
Iestatam statisku IP
nano /etc/network/interfaces
Atvērtajā failā meklējam rindu #The primary network interface Mums būs jālabo šī interfeisa IP iestatījumi. Manā gadījumā interfeisa nosaukums ir enp0s3. Vispirms šim interfeisam iestatījumi izskatās šādi:
# The primary network interface
allow-hotplug enp0s3
iface enp0s3 inet dhcp
Tos izlaboju, lai ir šādi
# The primary network interface
allow-hotplug enp0s3
iface enp0s3 inet static
address 192.168.5.250
netmask 255.255.255.0
gateway 192.168.5.254
dns 8.8.8.8
Saglabājam failu un restartējam serveri.
sudo reboot
Pēc restarta pārbaudām, vai ir pareiza IP adrese serverim.
ip a
Ja viss ir kārtībā, tad instalējam TFTP servisu. Komandas:
sudo apt update
sudo apt upgrade
sudo apt install tftpd-hpa
Mainam TFTP konfigu
sudo nano /etc/default/tftpd-hpa
Šajā konfiguracijā atrodam vietu 0.0.0.0:69 un izalbojam uz sava Debian servera IP. Piemēram 192.168.5.250:69
Lejupielādējam syslinux arhīvus. Būs nepieciešama 6.03 un 5.1 versija. 5.1 versija nepieciešama, lai būtu iespējams ielādēt ISO failus datora RAM atmiņā. Lejupielādējam Debian serverī, izmantojot zemāk esošās komandas:
cd /tmp
wget https://mirrors.edge.kernel.org/pub/linux/utils/boot/syslinux/syslinux-6.03.zip
wget https://mirrors.edge.kernel.org/pub/linux/utils/boot/syslinux/syslinux-5.10.zip
Atarhivējam zip arhīvus
sudo apt install zip unzip
unzip syslinux-6.03.zip -d syslinux-6.03/
unzip syslinux-5.10.zip -d syslinux-5.10/
No atarhivētajām datnēm nepieciešams kopēt pāris failus uz /srv/tftp / mapi. Faili nepieciešami, lai varētu izveidot palaišanas izvēlni (boot menu) ar syslinux palīdzību un startēt Linux bāzētās instalācijas un citus ISO failus. Zemāk komandas:
sudo cp syslinux-6.03/bios/core/pxelinux.0 /srv/tftp/
sudo cp syslinux-6.03/bios/com32/menu/vesamenu.c32 /srv/tftp/
sudo cp syslinux-6.03/bios/com32/chain/chain.c32 /srv/tftp/
sudo cp syslinux-6.03/bios/com32/elflink/ldlinux/ldlinux.c32 /srv/tftp/
sudo cp syslinux-6.03/bios/com32/lib/libcom32.c32 /srv/tftp/
sudo cp syslinux-6.03/bios/com32/libutil/libutil.c32 /srv/tftp/
sudo cp syslinux-5.10/memdisk/memdisk /srv/tftp/
Jāizveido mūsu BOOT izvēlne. Tam nepieciešams izveidot tftp mapē pxelinux.cfg mapi.
cd /srv/tftp/
sudo mkdir pxelinux.cfg
Nākamais solis. pxelinux.cfg mapē ir jāizveido konfigurācijas fails ar nosaukumu default
sudo nano /srv/tftp/pxelinux.cfg/default
Faila saturam jābūt šādam:
DEFAULT vesamenu.c32
PROMPT 0
NOESCAPE 0
ALLOWOPTIONS 0
# Timeout in units of 1/10 s
TIMEOUT 600
MENU MARGIN 10
MENU ROWS 16
MENU TABMSGROW 21
MENU TIMEOUTROW 26
MENU COLOR BORDER 30;44 #fff400 #00000000 none
MENU COLOR SCROLLBAR 30;44 #4cf409 #00000000 none
MENU COLOR TITLE 0 #07ccf6 #00000000 none
MENU COLOR SEL 30;47 #4cf409 #00000000 none
MENU BACKGROUND linux/splash.png
MENU TITLE PXE Boot Menu
#---
LABEL local
MENU DEFAULT
MENU LABEL Boot from Harddisk
LOCALBOOT 0
Type 0x80
#---
LABEL Linux
MENU LABEL Deploy Ubuntu netinstx64
KERNEL memdisk
INITRD /Linux/ubuntu/netinst/mini.iso
APPEND iso
#---
LABEL Linux
MENU LABEL Memtest x86
KERNEL memdisk
INITRD /Linux/memtest/memtest.iso
APPEND iso
Tagad nepieciešams /srv/tftp mapē izveidot attiecīgās apakšmapes, kuras pieminētas konfigurācijas faila default, lai viss darbotos.
sudo mkdir -p /srv/tftp/Linux/ubuntu/netinst
sudo mkdir -p /srv/tftp/Linux/memtest
Komandā mkdir -p nozīmē, ka tiks izveidotas visas nepieciešamās mapes, lai ceļš līdz mapei būtu patiess.
Tagad lejupielādēsim attiecīgos ISO failus. Sāksim ar Ubuntu instalāciju. Ar zemāk parādītajām komandām mēs nomainīsim darba direktoriju uz /srv/tftp/Lnux/ubuntu un tad ar wget komandu lejupielādēsim ubuntu mini.iso.
cd /srv/tftp/Linux/ubuntu/netinst/
sudo wget http://archive.ubuntu.com/ubuntu/dists/bionic/main/installer-amd64/current/images/netboot/mini.iso
Līdzīga procedūra notiks ar memtest ISO. Šeit process tieši tāds pats. Vienīgi memtest ISO fails tiek lejupielādēts ZIP arhīvā un tas ir jāatarhivē.
cd /srv/tftp/Linux/memtest/
sudo wget https://www.memtest.org/download/5.01/memtest86+-5.01.iso.zip
sudo unzip memtest86+-5.01.iso.zip
sudo rm *.zip
sudo mv memtest86+-5.01.iso memtest.iso
Kad visi faili ir iegūti, ir jāpārstartē tftp serviss.
sudo systemctl restart tftpd-hpa
Apsveicu! Ir veiksmīgi konfigurēts Debian serveris, ar kura palīdzību tīklā var pārbaudīt datora operatīvo atmiņu un instalēt Ubuntu. Protams, iespējas ir daudz plašākas. Bet par tām uzrakstīšu nākošajos rakstos.
Turpinājums sekos…
P.S.- es ļoti naivi ceru, ka visam šim rakstam kādreiz taps arī video, kuru šeit pievienošu.
Mēs izmantojam ipxe risinājumu, un velkam image izmantojot http protokolu, bet ipxe prot arī daudz citus dažādus protokolus. Mēs būtojam ~900 ierīces dažādās pasaules malās un ipxe risinājums šim ir daudz piemērotāks, + API serveris kas nosaka kuram serverim kas jābūto (mums ir diskless iekārtas kas būtojas iekš RAM)
Paldies par informāciju. Būs jāpaskatās. Šis raksts vairāk domāts jauniešiem, iesācējiem.
Piekrītu Atomam par risinājumu!