Linux brzo preuzimanje preko mreže. Ubuntu: mrežna instalacija. Instalacija OS-a preko mreže

Dugo mi je ostalo misterija zašto u Ubuntuu postoje samo dvije opcije instalacioni disk– Desktop i Alternate. U Debianu, pored uobičajenih diskova za potpunu instalaciju koji instaliraju cijeli GNOME ili KDE odjednom, postoji i NetInstall disk dizajniran za instalaciju sustava preko mreže.

CD za pokretanje u ovoj verziji je dizajniran za pokretanje instalacionog programa koji instalira minimalni potreban skup paketa. Sve ostalo se preuzima i instalira sa mreže ako je potrebno. Ova opcija zahtijeva veće kvalifikacije korisnika koji izvodi instalaciju, ali pruža fleksibilnost u instaliranju samo neophodnih komponenti sistema. Ovo takođe štedi prostor na disku.

Ispostavilo se da Ubuntu također ima opciju instalacionog diska dizajniranu za instalaciju preko mreže. Samo se link za preuzimanje ne nalazi na glavnoj stranici stranice. I skriveno je na sljedećoj adresi.

Zanimalo me je pitanje koje minimalne veličine možete dobiti instalirani Ubuntu bez izvođenja posebnih trikova. Za test je odlučeno da se Ubuntu instalira sa minimalnog diska u VirtualBoxu.

Minimalna veličina slike diska je 11 MB. Ovo nije mnogo i omogućava vam da ga ispumpate pri bilo kojoj, čak i najnižoj brzini.

Ali tokom instalacije, preporučljivo je imati brži internet kanal. Jer minimalni disk, osim samog instalatera, ne sadrži ništa. Stoga će se tokom procesa instalacije sve preuzeti. To je sve, zaista!

Prvi put sam pokušao da instaliram Ubuntu sa minimalnog diska povezujući se na Internet preko ADSL-a brzinom od 128 kbps. Instalacija (uglavnom preuzimanje paketa) trajala je nekoliko sati.

Za ponovljeni eksperiment uspjeli smo pronaći vezu na znatno većoj brzini.

Prilikom dizanja s minimalnog diska, prvo nas dočeka tekstualni prompt:

a zatim standardni grafički (!) Ubuntu meni za pokretanje sistema:

Postojeća stavka "Instalacija iz komandne linije" ne znači da će instalacija biti obavljena iz komandne linije. U svakom slučaju, instalater se pokreće u tekstualnom modu.

Stavka "Napredne opcije" sadrži dodatni meni:

omogućavajući vam da izvršite Expert instalaciju. Kada ga odaberete, pojavljuje se meni s radnjama instalacije, što vam omogućava da ih izvršite gotovo slučajnim redoslijedom:

Odaberem stavku “Instaliraj”.

Instalater teksta je normalan. Isto kao u alternativnom disku. Jedina razlika je u tome što se paketi ne preuzimaju sa diska, već se preuzimaju preko mreže.

Instalater tradicionalno traži jezik:

konfiguriše raspored tastature:

zatim vas traži da odaberete spremište:

koji se po defaultu nudi lokalno za odabranu zemlju:

Svako ko se makar i povremeno bavi administracijom morao je bar jednom da instalira operativni sistem na svom računaru. I često se sve događa ovako: slika se preuzima, upisuje na disk ili fleš disk, učitava i instalira. Ali može se ispostaviti da nemate fleš disk ili disk pri ruci, a instalaciju je potrebno završiti jučer... Tada možete pokrenuti sistem preko mreže, a s Linuxom nema posebnih problema u vezi s tim. Tipična konfiguracija je gomila DHCP, TFTP I NFS. Ali nisam ga imao pri ruci NFS, ali bilo je Samba. Tako da sam morao da smislim kako da koristim Samba umjesto NFS.

Činilo mi se kao ništa, promenio sam podešavanja i to je to, ali nešto prvo nije išlo, morao sam da petljam...

Ali ovdje ću početi od samog početka. Dakle, prvo morate nabaviti komplet za distribuciju. Pošto smo stavili Linux Mint Tražimo svježi imidž. Preuzmite distribuciju koja nam odgovara (ja sam instalirao onu sa MATE, ali ovo očigledno nije bitno). Nakon preuzimanja slike, morate dobiti pristup slikovnim datotekama. Neki vodiči preporučuju raspakivanje slike, ali ja ne vidim smisao u tome, pa podržavam mišljenje da se slika montira kao petlja. Da ne bismo ometali postojeći poredak, jednostavno kreiramo novi katalog, gdje montiramo sliku:

# mkdir /mnt/mint
# mount -o petlja /home/user/download/linuxmint-17-mate-64bit-v2.iso /mnt/mint

Zatim morate učiniti datoteke dostupnim preko mreže kako bi ih instalater mogao pročitati. Kao što sam rekao gore, koristim za ovo Samba. Stoga otvorite konfiguracijsku datoteku i dodajte novi dio dodavanjem sljedećeg odjeljka:


put = /mnt/mint
dostupno = da
moguće pretraživati ​​= da
javno = da
upisivo = ne

Trebalo bi raditi preko zadanih postavki Samba. Ako ne uspije, onda ste najvjerovatnije sami nešto promijenili, što znači da ćete pronaći način da riješite problem. Pa smo dodali loptu mint, preko koje možete dobiti datoteke za instalaciju sa mreže. Ne zaboravite ponovo pokrenuti Samba da prihvatite nove postavke.

Za Archlinux:

# systemctl restart smbd
# systemctl restart nmbd

Za Gentoo:

# /etc/init.d/samba restart

Zatim morate pripremiti mrežni bootloader. Program će nam pomoći u tome tftp-hpa. IN Archlinux i u Gentoo Tako se zove paket. Datoteke za učitavanje morate postaviti u radni direktorij ftp servera (u arch /srv/tftp). Kopirajte kernel i initrd iz montirane slike tamo:

# cp /mnt/mint/casper/(vmlinux,initrd.lz) /srv/http

# cp /usr/lib/syslinux/bios/(pxelinux.0,menu.c32,ldlinux.c32,libutil.c32) /srv/http

DEFAULT meni.c32
LABEL LinuxMint
KERNEL vmlinuz
APPEND showmounts toram root=/dev/cifs boot=casper netboot=cifs nfsroot=//192.168.0.1/mint NFSOPTS=-oguest,ro initrd=initrd.lz nosplash

Gdje 192.168.0.1 - našu IP adresu u odnosu na mašinu na kojoj ćemo instalirati. O da, i otprilike nfs tu - ovo nije greška u kucanju, u načinu rada sa cifs, morate proslijediti opcije tipa kao za nfs, Ne mogu reći zašto. Posebnu pažnju treba obratiti na toram opciju, jer bez nje sve pada na pola puta i ne možemo se pokrenuti (možda su to karakteristike sambe). Ali uz ovu opciju, morate zapamtiti da ciljna mašina mora imati dovoljno RAM-a da tamo kopira instalater. TFTP server se mora pokrenuti. Za Archlinux:

# systemctl tftpd.socket start

Za Gentoo:

# /etc/init.d/in.tftpd start

Sada BIOS ciljne mašine mora nekako reći odakle se učitava. Ovo će nam pomoći dnsmasq(iako nije neophodno, možete koristiti drugi DHCP server, ovdje opisujem šta je bilo pri ruci). Postavljanje IP distribucije (opcionalno dhcp-opseg) prema vlastitom nahođenju, za vlastitu „mrežu“ između mašina. Za ugradnju su nam važne samo tri opcije:

Dhcp-boot=/pxelinux.0
dhcp-option=vendor:PXEClient,6,2b
pxe-service=x86PC, "Instaliraj Linux", pxelinux

Treba ih dodati u konfiguraciju dnsmasq, i naravno pokrenite ga (ili ponovo pokrenite).

Za Archlinux:

# systemctl start dnsmasq

Za Gentoo:

# /etc/init.d/dnsmasq start

Zapamtite, da bi sve funkcioniralo, portovi moraju biti uključeni DHCP(UDP 67.68), TFTP(UDP 69), Samba(UDP 137.138, TCP 139.445) mora biti otvoren; Ako nema zaštitnog zida ili je sučelje potpuno otvoreno - dobro, trebalo bi da radi.

Napomena: Zbog činjenice da se sistemi stalno ažuriraju, date putanje datoteka mogu biti nevažeće, odnosno različite od onih na vašem sistemu. Stoga pažljivo pogledajte strukturu paketa vašeg sistema.

Davno sam napisao članak o mreži instaliranje Ubuntua, preko lokalne mreže, bez korištenja raznih medija, samo PXE boot i to je to. Ovaj put sam odlučio ažurirati članak i približiti ga modernoj stvarnosti, i što je najvažnije, proširiti funkcionalnost. Sve će se raditi koristeći Ubuntu 14.04 kao primjer!

Za različite zahtjeve moraju postojati različita rješenja, glavna kvaka je u tome što nam često nije potreban jedan operativni sistem, već nekoliko. Zato sam odlučio da napišem članak na ovu temu. Prethodni članak možete pronaći na linku.
Osnovna ideja je da ćemo imati mogućnost da izaberemo koji operativni sistem ćemo instalirati, kao i njegovu bitnu dubinu, u stvari ćemo imati boot meni nakon pokretanja sistema preko lokalne mreže;
Sve ovo ćemo implementirati na primjeru upravo objavljenog Ubuntu 14.04

Za one koji ne razumiju, sve se pokreće tako da se može birati koji će operativni sistem instalirati, kao i njegov bitni kapacitet, tj. Trebalo bi da se pojavi meni gde će biti predstavljeni svi operativni sistemi dostupni za instalaciju preko mreže, koji će izgledati ovako:

Ubuntu_14.04x86
Ubuntu_14.04amd64
Za rad će nam trebati:
Nužno!
1) Konfigurirani gateway, na primjer, koristite članak:
2) DHCP server, na primjer, možete koristiti članak:
3) Konfigurirani TFTP server koji učitava PXE bootloader, koristite članak:

Opciono!
3) Dodatna, ali ne obavezna tačka može se konfigurirati DNS server, postoji primjer u članku

Pretpostavlja se da ste konfigurisali gateway, DHCP, TFTP server i dodali meni za pokretanje PXE jer Neću se zadržavati na ovoj tački.

Pređimo na podešavanje sistema za instaliranje.
Prvo ćemo kreirati instalacijsku tačku za Ubuntu 14.04x86, za koju će nam trebati instalacioni disk odgovarajućeg kapaciteta. Moramo da ga preuzmemo i montiramo da bismo izdvojili fajlove pokretača i instalacionog sistema.
Jer Datoteka mrežnog pokretača nalazi se u direktoriju direktorija /var/lib/tftpboot/ odakle ih povlači TFTP server, onda u njemu trebamo kreirati Ubuntu direktorij kako bismo u njega stavili fajlove sa instalacionih diskova, uradimo ovo:
mkdir /var/lib/tftpboot/ubuntu
U Uubntu direktorijumu kreiramo dodatne direktorijume za datoteke učitavača OS instalatera za x86 bitne sisteme i ADM64, respektivno.
mkdir /var/lib/tftpboot/ubuntu/x86 mkdir /var/lib/tftpboot/ubuntu/amd64

Sada moramo preuzeti instalacioni disk, možete ga pogledati ovdje mirror.yandex.ru/ubuntu-releases/14.04/
Mi ćemo preuzeti x86 verziju za server jer... manje je teška
wget http://mirror.yandex.ru/ubuntu-releases/14.04/ubuntu-14.04-server-i386.iso
Nakon što je preuzimanje završeno ISO slika, moramo ga montirati kako bismo izdvojili datoteke koje su nam potrebne, a za to u direktorij /media kreirat ćemo direktorij iso, uradimo ovo:

Mkdir/media/iso
Montirajte sliku diska u ovaj direktorij:
sudo su
montirati ubuntu-14.04-server-i386.iso /media/iso/
Sistem će prikazati da je disk montiran u načinu čitanja:

mount: upozorenje: /media/iso/ izgleda da je montiran samo za čitanje.
Idemo pokupiti bootloader i kernel instalacionog programa:
cd /media/iso/install/netboot/ubuntu-installer/i386/

Zainteresovani smo za 2 fajla linux I initrd.gz, koji trebamo pokupiti i premjestiti u direktorij /var/lib/tftpboot/ubuntu/x86
kopirajmo ih:
cp linux /var/lib/tftpboot/ubuntu/x86 cp initrd.gz /var/lib/tftpboot/ubuntu/x86

sve, instalacijska slika Ne treba nam više, prvo ga demontirajmo iz iso direktorija:
umount /media/iso/

Nakon toga, ISO slika se može izbrisati.
Slične korake radimo za instalacioni disk imidž sa x64 bitnim kapacitetom, neću opisivati ​​šta i gde, daću samo spisak komandi, koraci su isti, samo se putanje malo razlikuju, piše tamo amd64

Wget http://mirror.yandex.ru/ubuntu-releases/14.04/ubuntu-14.04-server-amd64.iso

Montirajte ubuntu-14.04-server-amd64.iso /media/iso/

CD /media/iso/install/netboot/ubuntu-installer/amd64/

Cp linux /var/lib/tftpboot/ubuntu/amd64 cp initrd.gz /var/lib/tftpboot/ubuntu/amd64

Umount /media/iso/

Završili smo s instalacionim datotekama, sada konfigurirajmo PXE meni za pokretanje.

Konfigurisanje menija za pokretanje PXE
Prvo, dodajmo stavku menija sa imenom Linux Install, za ovo trebamo urediti fajl:
nano /var/lib/tftpboot/pxelinux.cfg/default

Dodajte unos na kraj fajla:
LABEL Linux Install MENU LABEL ^Linux Instaliraj KERNEL vesamenu.c32 DODAJ pxelinux.cfg/linux.menu

Kao što možete vidjeti iz unosa, imat ćemo još jednu stranicu sa izborom distribucija za instalaciju, napravimo je:

Nano /var/lib/tftpboot/pxelinux.cfg/linux.menu

Dodajmo mu nazive stavki za učitavanje s mogućnošću odabira operativni sistem instalirati dok traje Ubuntu 14.04 x86 I amd64 arhitektura:
LABEL Instaliraj Ubuntu 14.04x86 MENU label ^Ubuntu 14.04x86 KERNEL ubuntu/x86/linux APPEND initrd=ubuntu/x86/initrd.gz LABEL Instaliraj Ubuntu 14.04amd64 MENU label/ubuntu4. lin ux APPEND initrd=ubuntu/ amd64 /initrd.gz

U ovom trenutku, podešavanje je završeno, možete povezati klijentsku mašinu i pokušati da se pokrenete preko PXE, kao rezultat, nakon pokretanja sistema preko mreže, imaćemo meni poput ovog:

Odaberemo ono što želimo da instaliramo, instalacija će početi automatski, a zatim samo slijedimo upute instalatera sistema.
Drugi operativni sistemi se dodaju na sličan način.
Ovdje ću vjerovatno završiti za danas.
Pa, kao i uvijek, ako imate pitanja, ostavite komentar, ako nađete grešku, pišite mi ličnom porukom ili e-mailom.

Predgovor.

Ovo je izmišljeno davno. U svakom slučaju, u članku napisanom krajem prošlog stoljeća (1998.), ideja mrežno pokretanje autor to naziva starim. I to nije iznenađujuće učitavanje operativnog sistema preko mreže san je svakog administratora. Na kraju krajeva, operativni sistem učitan sa servera uvijek će biti „bijel i pahuljast“, a promjene i ažuriranja će se morati izvršiti samo na boot image na serveru, umjesto da jurcate okolo sa fleš diskom po cijeloj floti kompjutera.

Zašto tako dobra ideja nije široko prihvaćena? Zbog složenosti? Ne! Serveri za mrežno pokretanje su konfigurisani prilično jednostavno, obično sa jednom konfiguracijom tekstualnu datoteku, i, gledajući unaprijed, reći ću da se u lanboot_serveru kreiranje konfiguracijskih datoteka vrši automatski. U praksi, ovo se svodi na „uključite ga i gotovi ste“.

Šta će biti potrebno?

    Ako lokalna mreža nije konfigurisano - konfigurišite ga. Nakon toga, slobodno komandujte lanboot start i klijenti se mogu pokrenuti.

    Za zaustavljanje, odnosno zaustavljanje lanboot-a. U ALTLinuxu i Ubuntuu morat ćete raditi svojim rukama, instalirati ono što vam treba i konfigurirati.

Međutim, nije sve tako strašno. Skripta za pokretanje lanboot (/usr/sbin/lanboot) bi također trebala raditi u drugim Linux sistemima, na primjer u Simply Linuxu (ALT) skripta je kreirana ispravne datoteke konfiguracija i server je pokrenut, samo što nije bilo datoteka za preuzimanje u „TFTP direktorijumu“ (/var/lib/tftpboot), i to nije iznenađujuće, jer odakle PuppyRus fajlovi dolaze u ALTLinuxu.

Hajde da nastavimo.

Od čega se prikuplja?

Da pokrenemo Linux preko mreže, potreban nam je tftp server (koristi se tftp-hpa-5.0), bootp ili dhcp (ja sam izabrao dhcp-4.1.1, iako sam prvo koristio bootp) i inetd ili xinetd (ja sam izabrao inetd, to je jednostavnije).

Kako konfigurisati.

1.Boot

    Najjednostavniji.

    Pruža IP povezanu sa MAC adresom klijenta.

    Stoga se može koristiti samo u mrežama sa stalnom flotom mašina.

Primjer /etc/bootptab

Korišteni parametri:

Td -- TFTP direktorij (datoteke će biti preuzete odavde) - rp -- root putanja (puta do root servera) - bf -- bootfile (datoteka za preuzimanje) - sa -- adresa servera za pokretanje (IP servera TFTP) - sm - - maska ​​podmreže (maska ​​podmreže) - gw -- pristupnici (gateway) - to -- vremenski pomak (sekunde) - ha -- hardverska adresa (hardver, poznata i kao MAC adresa) # Možete pisati ili u kolonu ili u jednu linija. # Postavke zajedničke za sve klijente: .default:td=/var/lib/tftpboot:rp=/var/lib/tftpboot:bf=pxelinux.0:sa=192.168.1.2:sm=255.255.255.0:gw=192.168 . 1.1:to=auto: #ili tako.default:\ td=/var/lib/tftpboot:\ rp=/var/lib/tftpboot:\ bf=pxelinux.0:\ sa=192.168.1.2:\ sm= 255.255 .255.0:\ gw=192.168.1.1:\ to=auto: # Postavke za klijente u drugim podmrežama: #.subnet1:sm=255.255.255.0:gw=192.168.0.1:tc=.default: # Individualne postavke za svakog klijenta (primjeri): #notick:tc=.default:ha=00140B016592:ip=192.168.1.4: #sharick:tc=.default:ha=0123456789ab:ip=192.168.1.2 #bobacka:tc:168.1.4 :ip=192.168.1.5 # itd.

2. Dhcpd

Punopravni dhcp server.

Primjer /etc/dhcpd.conf

# dhcpd.conf # # Koristite ovo da omogućite/onemogućite dinamičko ažuriranje DNS-a na globalnom nivou. ddns-update-style nema; podmreža 192.168.1.0 mrežna maska ​​255.255.255.0 (opcijski ruteri 192.168.1.1; opcija podmrežna maska ​​255.255.255.0; opcija emitiranja-adresa 192.168.1.255.192.168.1.255.19.168.1.255.1.19.19.12p 00 zadano vrijeme zakupa 21600; vrijeme zakupa 43200 naziv datoteke "pxelinux.0";

3.TFTP

Datotečni server sa pojednostavljenim protokolom.

Primjer /etc/exports

#Direktoriji dozvoljeni za tftp boot i nfs montiranje (no_root_squash - root korisnik je dozvoljen) /var/lib/tftpboot 192.168.1.0/255.255.255.0(ro,no_root_squash,sync)

4. Inetd

Koristimo ga za pokretanje tftp servera i bootp servera. Ali može pokrenuti i druge usluge. Konfiguracijski fajl /etc/inetd.conf. Fajl je dugačak, "za sve prilike". Stoga se navode samo potrebni redovi.

Primjer /etc/inetd.conf.

# Ova linija pokreće tftp server tftp dgram udp wait root /usr/sbin/in.tftpd in.tftpd -s /var/tftpboot # Ova linija pokreće bootp server bootps dgram udp wait root /usr/sbin/bootpd bootpd -i

5. Xinetd

Funkcije su iste kao inetd, ali su podešavanja komplikovanija. Instaliran u Altlinux-u.

Primjer /etc/xinetd.conf

# # Jednostavna konfiguraciona datoteka za xinetd # # Neke zadane postavke i uključuju /etc/xinetd.d/ defaultne (log_type = SYSLOG authpriv info; log_on_success = PID TRAJANJE HOST-a; log_on_failure = HOST; instance = 100; per_source = 5; only_from = 127. .0.1; ) includedir /etc/xinetd.d Za svaki pokrenut program zaseban fajl konfiguracija se nalazi u /etc/xinetd.d Primjer /etc/xinetd.d/tftp # default: off # opis: tftp server opslužuje datoteke koristeći trivijalne prijenos datoteka\#protocol. tftp protokol se često koristi za pokretanje radnih stanica bez diska, preuzimanje konfiguracijskih datoteka na mrežne pisače, \ # i za pokretanje procesa instalacije za neke operativne sisteme. usluga tftp (onemogući = ne; tip_socketa = dgram; protokol = udp; čekaj = da; korisnik = root; server = /usr/sbin/in.tftpd; server_args = -u tftp -s /var/lib/tftpboot; per_source = 11 cps = 100 2 zastavice = samo IPv4_od = 192.168.1.0 )

Automatsko podešavanje.

Za automatsku konfiguraciju, varijable se uzimaju iz izlaza standardnih Linux ifconfig i route komandi. Stoga se mogu nabaviti na bilo kojem Linuxu.

Serv=$(ifconfig | grep inet | grep -v 127.0.0.1 | cut -f 2 -d ":" | cut -f 1 -d " ") mask=$(ifconfig | grep inet | grep -v 127.0.0.1 |. cut -f 4 -d ":") gate=$(route | grep UG | cut -f 10 -d " ") subnet=$(route | grep "U" | cut -f1 -d "")

Ove varijable se upisuju na odgovarajuća mjesta u predlošcima konfiguracijske datoteke sadržane u lanboot skripti. Kada se skripta izvrši, vrijednosti varijable se zamjenjuju u šablonu i tako generirana konfiguracijska datoteka se šalje „na svoje odredište“. Time se štedite od rutinskog rada i ljudskih grešaka. Jedini neophodan uslov: mreža mora biti konfigurisana, inače odakle će doći vrednosti varijabli?

Lanboot skripta također kopira PuppyRus datoteke u TFTP direktorij: vmlinuz, initrd.gz i pup*-200.sfs, koje su neophodne za pokretanje. Fajlovi se preuzimaju iz operativnog sistema na kojem server radi, a ako ovaj sistem nije PuppyRus, onda ih nema odakle uzeti. Stoga, na drugim Linux sistemima, gore navedene datoteke moraju biti smještene u /var/lib/tftpboot ručno (kopiranjem).

0. Uvod
Preuzimanje preko mreže je vrlo zgodna, a često čak i jednostavno nezamjenjiva stvar. Ne morate da otvarate kućište računara (ponekad ovo nije nimalo lako kao kod običnih PC jedinica), ne treba vam cdrom, ne treba vam besplatni ide kabl, ne treba vam floppy drajv, ne treba vam USB.
Sistem učitavanja se lako mijenja - ne morate ga nigdje "učitavati" ili zapisivati. To je samo imenik.
Iz nekog razloga, mnogi ljudi se plaše i izbjegavaju ovu temu. Čini se da je ovo nešto složeno, problematično i teško za implementaciju. U stvari, sve je, kao i sve drugo genijalno, jednostavno.

1. Šta je potrebno da se Linux pokrene na mašini preko mreže?

  • Mašina mora imati mrežnu karticu koja podržava Intelov PXE Postoji nekoliko drugih implementacija mrežnih protokola za pokretanje, ali PXE je najčešći i praktično je podrazumevani protokol za mrežno pokretanje.
  • Konfigurisani Linux sistem (nazovimo ga host mašina), koji će izdati IP adresu i sadržati kernel za pokretanje i samu sliku sistema. Ovo, u stvari, ne mora nužno biti Linux sistem, ali u ovom uputstvu to će se podrazumijevati.
  • Ethernet mreža. Mašina domaćin i mašina žrtve mogu se povezati pomoću jednostavnog crossover kabla ili korišćenjem konvencionalnih metoda. :)
  • Poznavanje MAC adrese mašine žrtve. Možete ga pregledati ili iz logova DHCP servera, ili ga prepisati direktno sa ekrana u trenutku pokretanja putem PXE-a, ili možete bez njega i konfigurirati DHCP server tako da svima neselektivno izdaje traženu IP adresu i sliku . Ali ovo je sasvim druga priča (dobro opisana na Google-u) i prevazilazi okvire ovog uputstva.

2. Kako funkcionira proces mrežnog preuzimanja?
Brzi odgovor: Mreža se automatski konfiguriše preko dhcp-a, bootloader se učitava preko tftp-a, koji učitava kernel preko tftp-a, koji učitava ostatak root sistema preko nfs-a.
Detaljan odgovor: Prva stvar koju mašina s instaliranim PXE boot-om radi prilikom pokretanja je da pošalje DHCP zahtjev za emitiranje mreži u potrazi za serverom. Host mašina, na kojoj DHCP demon mirno spava, daje adresu i putanju do datoteke za pokretač. PXE Boot ROM na osnovu primljenih informacija, konfiguriše mrežni adapter. Ako sve prođe kako treba, bootloader se učitava preko TFTP protokola i preuzima dalji tok događaja. IN opšta šema događaji se dalje razvijaju ovako - Linux kernel posebno pripremljen za učitavanje preko mreže se učitava koristeći isti TFTP protokol. U ovom slučaju, pokretač prosljeđuje potrebne parametre kernelu za učitavanje putem NFS protokola. Kernel, nakon učitavanja, montira nfs particiju na host mašinu i odatle pokreće sistem.

3. Kako sve to postaviti i izgraditi od nule?
Vruće pitanje :)
Na kraju krajeva, potrebno nam je:
a) instalirani, konfigurisani i pokrenuti dhcp, tftp i nfs serveri
b) bootloader i gotova slika root sistema u koju možete chroot i konfigurisati po potrebi, instalirati/dodavati pakete itd.
c) kernel pripremljen za učitavanje preko mreže.
Dakle, tačku po točku, pod pretpostavkom da je naš sistem Debian (i radujući se što smo to jednom učinili pravi izbor distribucija), i da ćemo sve relevantne datoteke smjestiti u /tftpboot direktorij:

0. Kreiranje direktorija i instaliranje pxelinux pokretačkog programa.
Prvo, kreirajmo i definiramo direktorije.
Neka naš "glavni" direktorij bude /tftpboot.
Imat će dva poddirektorijuma: boot/ (sa korijenskim sistemom) i pxelinux.cfg/ (sa postavkama pokretača)

# mkdir /tftpboot # mkdir /tftpboot/boot # mkdir /tftpboot/pxelinux.cfg

# apt-get install syslinux # cp /usr/lib/syslinux/pxelinux.0 /tftpboot/ #

Serial 0 prompt 1 timeout 99 default pxeboot label pxeboot kernel bzImage append ip=dhcp nfsroot=192.168.150.126:/tftpboot/boot root=/dev/nfs init=/sbin/init

Njegova sintaksa je slična onoj u lilo.conf. Čini se da ni komentari nisu potrebni.
Ako trebate kreirati različite konfiguracije za različite mašine, možete kreirati datoteke za svaku MAC adresu zasebno umjesto zadane. Više o tome možete pročitati na pxelinux stranici.

1. Kreiranje korijenskog sistema datoteka
Ovo je najzanimljivije pitanje. Ovdje je vrijedno formulirati jasnu izjavu o problemu - za šta će sistem biti potreban? Koji softver treba da postoji, na kom hardveru će raditi itd.
U principu, dovoljno je za najjednostavnije preuzimanje minimalni sistem par megabajta. U Google-u postoji more slika i vodiča za njihovo kreiranje.
To može biti sistem za spašavanje, može biti instalater za nešto, ili može biti punopravni desktop sistem.
U mom slučaju, potrebno mi je da se sistem pokrene na skoro svakom hardveru i pokrene svoj instalater. Pošto mi ne smeta prostor, odlučio sam jednostavno instalirati zadani minimalni debian sistem. Drago mi je da sam jednom odabrao pravu distribuciju, pokazalo se da je to vrlo jednostavno za napraviti:

# apt-get install debootstrap ... # debootstrap sarge /tftpboot/boot

Kada se završi, direktorij /tftpboot/boot će sadržavati potpuno funkcionalan sistem koji se može pokrenuti, težak otprilike 140MB. Možete chrootirati u ovaj direktorij, instalirati i ukloniti pakete, mijenjati rc skripte i općenito raditi što god želite. To je kao Linux unutar Linuxa.

2. Kreiranje kernela.
Da bi se kernel mogao učitati preko mreže potrebno je nekoliko uslova prilikom njegovog sklapanja:
a) omogućite opciju "Opcije mreže -> IP: autokonfiguracija -> dhcp" (za svestranost, bolje je omogućiti i sve opcije)
b) omogući podršku za NFS sistem datoteka
c) omogućite "FS->Network Filesystems->Root Over NFS".
Ovo je obavezan dio specifičnosti. Ostalo je po Vašem nahođenju. Šta je potrebno u ovom kernelu, šta nije potrebno. Bolje je ne štedjeti na veličini i kompajlirati više drajvera u nju, potpuno onemogućavajući module, kako biste se riješili potrebe za dvofaznim učitavanjem i initrd datotekom.

3. DHCP podešavanje.
Instalirajte server:

# apt-get install dhcpd

Uređujemo njegovu konfiguracijsku datoteku (/etc/dhcpd.conf) za našu mrežu i dodajemo joj unos za našu žrtvu:

Host pxeboot ( hardverski ethernet 08:00:0e:aa:bb:cc; fiksna adresa 192.168.150.127; naziv datoteke "/tftpboot/pxelinux.0"; )

Pregled