4.5. Tiedostojen valmistelu verkosta käynnistämiseen TFTP:llä

Jos tietokone on kytketty paikallisverkkoon, se voidaan ehkä käynnistää verkosta toisella koneella olevista tiedostoista TFTP:tä käyttäen. Jos asennusjärjestelmä käynnistetään toiselta koneelta, on käynnistystiedostot tallennettava toisella koneella tiettyihin paikkoihin, ja sen asetukset tehtävä siten, että asennettavan koneen käynnistämistä tuetaan.

On asennettava TFTP-palvelin, ja useille koneille tarvitaan DHCP-palvelin tai BOOTP-palvelin.

BOOTP on IP-protokolla, joka kertoo tietokoneelle sen IP-osoitteen ja verkosta löytyvän käynnistysotoksen sijainnin. DHCP (Dynamic Host Configuration Protocol) on joustavampi alaspäin yhteensopiva BOOTP:n laajennus. Joissakin järjestelmissä verkkoasetukset voidaan tehdä vain DHCP:llä.

Trivial File Transfer Protocol (TFTP) siirtää käynnistyslevyn otoksen asiakaskoneelle. Periaatteessa voidaan käyttää mitä tahansa nämä protokollat toteuttavaa palvelinta millä tahansa laitealustalla. Tämän luvun esimerkeissä näytetään käyttöjärjestelmissä SunOS 4.x, SunOS 5.x (eli Solaris) ja GNU/Linux käytettävät komennot.

Huomaa

Debian GNU/Linux-palvelimelle suositellaan sovellusta tftpd-hpa. Siinä on tekijä sama kuin käynnistyslataimella syslinux, joten todennäköisesti yhteistoiminnan kanssa on vähiten vaikeuksia. Hyvä vaihtoehto on atftpd.

4.5.1. DHCP-palvelimen asetukset

Eräs vapaa DHCP-palvelinohjelmisto on ISC dhcpd. Debian GNU/Linuxille suositellaan pakettia dhcp3-server. Tässä on esimerkki sen asetustiedostosta (katso /etc/dhcp3/dhcpd.conf):

option domain-name "example.com";
option domain-name-servers ns1.example.com;
option subnet-mask 255.255.255.0;
default-lease-time 600;
max-lease-time 7200;
server-name "servername";

subnet 192.168.1.0 netmask 255.255.255.0 {
  range 192.168.1.200 192.168.1.253;
  option routers 192.168.1.1;
}

host clientname {
  filename "/tftpboot.img";
  server-name "servername";
  next-server servername;
  hardware ethernet 01:23:45:67:89:AB;
  fixed-address 192.168.1.90;
}

Tässä esimerkissa on yksi palvelin, servername, joka tekee kaikki DHCP-palvelimen, TFTP-palvelimen ja verkon yhdyskäytävän työt. Asetuksen domain-name arvoa joudut lähes varmasti muuttamaan, samoin kuin palvelimen nimen ja asiakaskoneen MAC-osoitteen. Asetuksen filename on oltava TFTP:llä noudettavan tiedoston nimi.

Kun dhcpd:n asetustiedosto on muokattu, käynnistetään se uudestaan komennolla /etc/init.d/dhcp3-server restart.

4.5.1.1. PXE-käynnistyksen käyttöönotto DHCP-asetuksissa

Tässä on toinen esimerkki tiedostosta dhcp.conf. Tässä käytetään TFTP:n käynnistystapaa Pre-boot Execution Environment (PXE).

option domain-name "example.com";

default-lease-time 600;
max-lease-time 7200;

allow booting;
allow bootp;

# The next paragraph needs to be modified to fit your case
subnet 192.168.1.0 netmask 255.255.255.0 {
  range 192.168.1.200 192.168.1.253;
  option broadcast-address 192.168.1.255;
# the gateway address which can be different
# (access to the internet for instance)
  option routers 192.168.1.1;
# indicate the dns you want to use
  option domain-name-servers 192.168.1.3;
}

group {
  next-server 192.168.1.3;
  host tftpclient {
# tftp client hardware address
  hardware ethernet  00:10:DC:27:6C:15;
  filename "pxelinux.0";
 }
}

Huomaa, että PXE-käynnistyksessä asiakkaan tiedostonimi pxelinux.0 on käynnistyslatain eikä ytimen ohjelmatiedosto (katso Kohta 4.5.4, ”Siirretään TFTP-otokset paikalleen” tuonnempana).

4.5.2. BOOTP-palvelimen käyttöönotto

GNU/Linuxille on saatavilla kaksi BOOTP-palvelinta. Ensimmäinen on CMU bootpd. Toinen on itse asiassa DHCP-palvelin: ISC dhcpd. Debian GNU/Linuxissa ne sisältyvät paketteihin bootp ja dhcp3-server.

To use CMU bootpd, you must first uncomment (or add) the relevant line in /etc/inetd.conf. On Debian GNU/Linux, you can run update-inetd --enable bootps, then /etc/init.d/inetd reload to do so. Just in case your BOOTP server does not run Debian, the line in question should look like:

bootps  dgram  udp  wait  root  /usr/sbin/bootpd  bootpd -i -t 120

Now, you must create an /etc/bootptab file. This has the same sort of familiar and cryptic format as the good old BSD printcap, termcap, and disktab files. See the bootptab manual page for more information. For CMU bootpd, you will need to know the hardware (MAC) address of the client. Here is an example /etc/bootptab:

client:\
  hd=/tftpboot:\
  bf=tftpboot.img:\
  ip=192.168.1.90:\
  sm=255.255.255.0:\
  sa=192.168.1.1:\
  ha=0123456789AB:

You will need to change at least the ha option, which specifies the hardware address of the client. The bf option specifies the file a client should retrieve via TFTP; see Kohta 4.5.4, ”Siirretään TFTP-otokset paikalleen” for more details.

Tähän verrattuna BOOTP:n asetusten tekeminen ISC dhcpd:llä on todella helppoa, koska se käsittelee BOOTP-asiakkaat DHCP-asiakkaiden erikoistapauksena. Joissakin suoritinperheissä on käytettävä monimutkaisia asetuksia asiakkaiden käynnistämiseen BOOTP:llä. Jos koneesi on joku niistä, lue Kohta 4.5.1, ”DHCP-palvelimen asetukset”. Muussa tapauksessa luultavasti riittää direktiivin allow bootp lisääminen asiakaskoneen aliverkon asetusten lohkoon tiedostossa /etc/dhcp3/dhcpd.conf ja dhcpd:n käynnistäminen uudelleen komennolla /etc/init.d/dhcp3-server restart.

4.5.3. TFTP-palvelimen käyttöönotto

Valmisteltaessa TFTP-palvelimen käyttöönottoa tulisi ensin tarkistaa komennon tftpd olevan käytettävissä.

Palvelua tftpd-hpa voidaan käyttää kahdella tavalla. Järjestelmän taustaprosessi inetd voi käynnistää sen tarvittaessa tai se voidaan käynnistää omana taustaprosessinaan. Käyttötapa valitaan pakettia asennettaessa ja sitä voidaan vaihtaan tekemällä paketin asetukset uudestaan.

Huomaa

Perinteisesti TFTP-palvelimet ovat jakaneet hakemiston /tftpboot tiedostoja. Debian GNU/Linuxin paketit voivat kuitenkin käyttää muita hakemistoja, jotta ne noudattaisivat Filesystem Hierarchy Standard-määrittelyä. Esimerkiksi tftpd-hpa käyttää oletusarvona hakemistoa /var/lib/tftpboot. Saatat joutua säätämään tämän luvun asetusesimerkkejä vastaavasti.

Kaikissa komennon in.tftpd vaihtoehdoissa Debianissa on vakiona asetus lokin kirjoittamisesta järjestelmälokiin. Jotkin niistä tukevat tarkenninta -v jolla lokiin kirjoitetaan yksityiskohtaisempaa tietoa. Näiden lokitietojen lukemista suositellaan mikäli käynnistyksessä on pulmia, lokitiedoilla pääsee hyvään alkuun virheiden syytä etsittäessä.

4.5.4. Siirretään TFTP-otokset paikalleen

Seuraavaksi on tarvittava TFTP-käynnistysotos (kohdasta Kohta 4.2.1, ”Mistä asennusotokset löytyvät?”) tallennettava tftpd:n käynnistysotosten hakemistoon. Tuosta tiedostosta on ehkä tehtävä linkki tiedostoon jota tftpd käyttää tietyn asiakkaan käynnistämiseen. Harmittavasti tiedoston nimen määrää TFTP-asiakas, eikä nimeämiskäytännölle ole kunnollisia standardeja.

Käytettäessä PXE-käynnistystä on kaikki mitä pitäisi tarvittaman tar-arkistossa netboot/netboot.tar.gz. Pura vaan tämä arkisto tftpd:n käynnistysotosten hakemistoon. Varmista, että dhcp-palvelimen asetuksissa on tftpd:lle välitettävän käynnistettävän tiedoston nimenä pxelinux.0.